Máquina Paralela Reconfigurável Baseada em Fluxo de Dados Aplicada a Cálculo Numérico

Tamanho: px
Começar a partir da página:

Download "Máquina Paralela Reconfigurável Baseada em Fluxo de Dados Aplicada a Cálculo Numérico"

Transcrição

1 Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas e Tecnológicas NCET Engenharia da Computação Maurício Vitor Brodzinski Máquina Paralela Reconfigurável Baseada em Fluxo de Dados Aplicada a Cálculo Numérico Curitiba 2006

2 Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas e Tecnológicas NCET Engenharia da Computação Maurício Vitor Brodzinski Máquina Paralela Reconfigurável Baseada em Fluxo de Dados Aplicada a Cálculo Numérico Monografia apresentada à disciplina de Projeto Final, como requisito parcial à conclusão do Curso de Engenharia da Computação. Orientador: Prof. Edson Pedro Ferlin Curitiba 2006

3 Termo de Aprovação Maurício Vitor Brodzinski Máquina Paralela Reconfigurável Baseada em Fluxo de Dados aplicada a Cálculo Numérico Monografia aprovada como requisito parcial à conclusão do curso de Engenharia da Computação do Centro Universitário Positivo, pela seguinte banca examinadora: Prof. Edson Pedro Ferlin (Orientador) Prof. Mauricio Perretto Prof. Marcelo Mikosz Gonçalves

4 Sumário Lista de Figuras... iv Lista de Tabelas... vi Lista de Siglas e Abreviaturas... vii Resumo... viii Abstract... ix 1 Introdução Estudo Teórico Processamento Paralelo O Modelo de Fluxo de Dados Computação Reconfigurável PLD CPLD FPGA Linguagem VHDL Descrição do Projeto da Máquina Paralela Elemento Processador Unidade de Memória de Template Unidade de Despacho Unidade de Armazenamento Descrição do Hardware O computador (host) Altera DE Cabo de comunicação Descrição do Software Montagem de Templates Comunicação Diagrama de Classe Viabilidade Técnico-Econômica Especificação da Validação e Testes Cronograma Resultados...53 ii

5 10 Conclusão e Trabalhos Futuros Referências Bibliográficas...60 Anexo I Artigo...61 Anexo II Manual do Usuário...67 Anexo III Manual Técnico...73 iii

6 Lista de Figuras Figura 2.1: (a) Sistema multiprocessador com 16 processadores e uma única memória. (b) Sistema multicomputador com 16 processadores...15 Figura 2.2: Caminho de dados no modelo de Von Neumann...16 Figura 2.3: Grafo de Fluxo de Dados da Equação y +2xy +2 y = Figura 2.4: Posicionamento da Computação Reconfigurável...19 Figura 2.5: Estrutura interna de uma CPLD...21 Figura 2.6: Estrutura interna de um FPGA Figura 2.7: Circuito lógico do comparador. Saída O=1 para A=B e O=0 para A?B...24 Figura 3.1: Grafo para cálculo da equação f(x) = 2x 2 + 4x Figura 3.2: Visão geral da máquina paralela...27 Figura 3.3: Detalhamento da máquina paralela...28 Figura 3.4: Detalalhamento do EP e as ligações com as unidades de Despacho e Armazenamento...30 Figura 3.5: (a) Sinais de E/S da memória de opcode/destinos. (b) Sinais de E/S das memórias de operandos e checks: Porta A para leitura e Porta B para escrita...34 Figura 4.1: Placa Altera DE2 utilizada no projeto...42 Figura 4.2: Cabo de comunicação: cabo da porta paralela integrado ao cabo FLAT Figura 5.1: Tela principal do Montador de Templates...44 Figura 5.2: Tela de seleção de pasta para gerar arquivos MIF...46 Figura 5.3: Tela de comunicação e execução da máquina paralela Figura 5.4 Diagrama de classe do software Montador...49 Figura 9.1: Simulação do recebimento dos templates no FPGA. São mostrados 2 dos 256 templates e o sinal de início de processamento ao final da transmissão...53 Figura 9.2: Simulação do envio dos operandos ao host. São mostrados o envio dos operandos de dois templates. O envio ocorre depois do sinal de FIM Figura 9.3: Simulação da execução da máquina paralela no cálculo de (4+10)- (3+2)+(6+5-3). (a) Início e execução dos primeiros templates. (b) Execução dos dois templates seguintes. (b) Execução do último template e finalização...54 Figura 9.4: Desempenho com 32 instruções independentes da arquitetura com 4 EPs Figura 9.5: Desempenho com 32 instruções independentes da arquitetura com 16 EPs iv

7 Figura 9.6: Speedup da arquitetura com 4 EPs...56 Figura 9.6: Speedup da arquitetura com 16 EPs...57 v

8 Lista de Tabelas Tabela 3.1: Templates para cálculo da equação f(x) = 2x 2 + 4x Tabela 3.2: Instruções suportadas pelo EP e OPCODE correspondente...31 Tabela 3.3: Formato do template e bits utilizados para cada campo...33 Tabela 3.4: Divisão de memória para 16 EPs com o endereçamento de cada uma. Cada seção possui cinco divisões para os campos do template...35 Tabela 4.1 Função dos pinos da porta paralela. Os nomes com barra indicam sinais negados Tabela 4.2: Pinos da porta paralela utilizados no projeto...40 Tabela 4.3: Correspondência entre os sinais da porta paralela e placa DE Tabela 8.1: Cronograma do desenvolvimento do projeto...52 Tabela 9.1: Desempenho com 32 instruções independentes e relação entre tempo ideal e medido...56 vi

9 Lista de Siglas e Abreviaturas ASIC Application-Specific Integrated Circuits CPLD Complex Programmable Logic Device EEPROM Electrically Erasable Programmable Read-Only Memory EP Elemento Processador EPROM Erasable Programmable Read-Only Memory FIFO First In First Out FPGA Field Programmable Gate Arrays GAL Generic Array Logic HDL Hardware Description Language JTAG Join Test Action Group MIF Memory Initialization File PAL Programmable Array Logic PLA Programmable Logic Array PLD Programmable Logic Device PROM Programmable Read-Only Memory RAM Read Only Memory VHDL VHSIC Hardware Description Language VHSIC Very High Speed Integrated Circuit vii

10 Resumo Com a crescente demanda por capacidade de processamento nas mais diversas áreas, pesquisas na área de processamento paralelo são cada vez mais intensas. O processamento paralelo existe em sistemas com vários processadores operando simultaneamente sobre as mesmas tarefas. A máquina paralela deste projeto é desenvolvida por meio da computação reconfigurável, utilizando-se FPGA (Field Programmable Gate Array), que é um dos tipos de dispositivos lógico programáveis, os quais permitem que o projeto seja implementado sem a necessidade de construção física dos componentes, aumentando a produtividade e a flexibilidade no desenvolvimento do projeto. A arquitetura do projeto é desenvolvida baseada no modelo de fluxo de dados, que permite aproveitar o paralelismo entre as operações da aplicação, que neste caso é a resolução de métodos numéricos. O projeto visa obter um ganho crescente de desempenho de acordo com o número de elementos processadores. A entrada e saída de dados é feita por um computador (PC), o qual possui um software para gerar as operações a serem processadas na máquina paralela; e software de comunicação, para enviar as operações do PC à máquina paralela e apresentar ao usuário os resultados do processamento. viii

11 Abstract With the increasing demand for capacity of processing in the most several areas, research in the parallel processing area is getting more intense. Parallel processing is related to computers with several processors operating in cooperative mode. The parallel machine of this project is developed by reconfigurable computing, by using FPGA (Field Programmable Gate Array), which is one type of programmable logic device, which allow that the project be build without need of physical construction of the components, increasing the productivity and flexibility of the project development. The parallel architecture of this project is constructed based in the data flow model, which allows using parallelism between the operations of the application; witch in this case is the resolution of numerical methods. The project s architecture is developed in basis of data flow model, which allow using the parallelism between the operations of the application, that in this case it s the resolution of numerical methods. The project aims to get increasing gain of performance according by the number of processor elements. The data in/out is made by a computer (PC), which has a software to generate the operations that will be processed in the parallel machine; and communication software, to send the operations from PC to parallel machine and to show the results of processing to the user. ix

12 1 Introdução Embora os computadores estejam cada vez mais velozes (TANENBAUM, 2001), as exigências sobre eles crescem mais rapidamente do que a sua capacidade de processamento. Apesar da grande potência computacional disponível nos computadores utilizados nos mais diferentes ramos de atividade, ela não é suficiente para muitas aplicações, especialmente na ciência, na engenharia e na indústria. A velocidade de operação dos processadores está sempre crescendo, mas não podem continuar assim indefinidamente, pois existem limitações físicas que em algum momento impedirão a evolução dos processadores como é feito atualmente. Em razão disso, os projetistas de computadores estão se voltando cada vez mais para os computadores paralelos, em busca de arquiteturas de computadores que utilizam vários processadores operando em paralelo para obter ganho de desempenho em relação a computadores que operam por meio de um único processador. O objetivo do projeto é o desenvolvimento de uma arquitetura de computador com vários elementos processadores operando em paralelo a fim de obter um ganho crescente de desempenho em relação a computadores seqüenciais (computadores com apenas um processador, cujo processamento é feito de forma seqüencial). Este estudo foi realizado com base no projeto de uma arquitetura de máquina paralela desenvolvida em 2005 e apresentada em (FERLIN, 2005). O desenvolvimento da máquina paralela é feito utilizando-se a computação reconfigurável, onde se utilizam circuitos integrados programáveis, que podem ser programados com a lógica desejada, por meio de um software que permite fazer o projeto de lógica digital. Os circuitos integrados programáveis são chamados de PLDs (Programmable Logic Devices, ou Dispositivos Lógicos Programáveis). Utilizando-se a ferramenta de desenvolvimento de lógica digital, o projeto é feito na forma de blocos lógicos e linguagem VHDL, que é um dos tipos de HDL (Hardware Description Language, ou Linguagem de Descrição de Hardware), e posteriormente é feita a programação no PLD. Uma das vantagens da utilização dessa tecnologia é a reconfiguração, que permite adaptar a máquina paralela à aplicação. Outras vantagens são a redução de tempo de desenvolvimento e de custos, pois dispensa a construção física do hardware da máquina paralela utilizando componentes discretos. A máquina paralela é x

13 implementada em FPGA (Field Programmable Gate Array), que é um dos tipos de PLDs. A máquina paralela foi desenvolvida baseada no modelo de Fluxo de Dados. Esse modelo visa explorar o paralelismo entre as operações de um programa. Para conseguir isso, as operações são organizadas na forma de pacotes, que são distribuídos aos processadores, assim não existem variáveis, pois todos os dados do processamento estão nos pacotes. Os resultados dos pacotes processados são usados como valores de entrada a outros pacotes, portanto, todo o processamento pode ser representado por um grafo, e assim é possível visualizar o paralelismo possível de ser obtido, de acordo com as limitações impostas pelas dependências entre as operações. A máquina paralela consiste em um determinado número de EPs (Elementos Processadores), unidade de memória RAM ou memória de templates (pacotes), unidades de despacho (leitura na memória e gravação nos EPs) e armazenamento (leitura nos EPs e gravação na memória). Pode-se dar início ao processamento quando os templates estiverem armazenados na memória. A primeira operação é feita pela unidade de despacho, que busca os templates na memória e verifica quais deles estão prontos para serem processados, em seguida faz a gravação nos EPs disponíveis, e assim sucessivamente enquanto houver templates a serem processados, e aguardando quando não houver EPs disponíveis. A unidade de armazenamento busca resultados prontos nos EPs e faz a gravação dos resultados na memória, obtendo assim dados de entrada para outros templates e os resultados finais. A máquina paralela realiza operações aritméticas com números inteiros (soma, subtração, multiplicação e divisão), lógicas, relacionais e condicionais. A máquina paralela pode ser aplicada à resolução de equações e cálculo numérico, com notação de ponto fixo. A entrada e saída de dados são feitas por meio de um computador, que possui software montador de templates e de comunicação com a máquina paralela. O usuário pode programar as operações da máquina paralela por meio do software montador e envia-los à máquina por meio de software comunicador, que ativa o processamento e posteriormente recebe os resultados. A interface entre o computador e a máquina paralela é feita pela porta paralela do computador, por meio de um protocolo desenvolvido em linguagem C++ no computador e em VHDL no FPGA. 11

14 Existe uma entrada na máquina paralela que permite selecionar o número de EPs a serem utilizados no processamento, para permitir testes e observar o ganho de desempenho de acordo com o número de EPs. Para esse teste, existem duas versões do projeto, uma com quatro e outra com dezesseis EPs. A primeira, permite fazer o processamento com um, dois, três ou quatro EPs; a outra permite que sejam utilizados quatro, oito, doze ou dezesseis EPs. 12

15 2 Estudo Teórico Neste capítulo apresenta-se o estudo teórico dos conceitos e tecnologias utilizados no projeto. Os conceitos abordados são: processamento paralelo, modelo de fluxo de dados, computação reconfigurável e linguagem VHDL (VHSIC Hardware Description Language). 2.1 Processamento Paralelo Apesar do grande avanço na velocidade dos computadores obtida nas últimas décadas, a demanda por poder de computação é sempre crescente. Os cientistas desejam fazer simulações de fenômenos físicos, a meteorologia necessita de simulações do tempo para obter precisão nas previsões. Os engenheiros desejam fazer simulações dos seus projetos em computador ao invés de construir protótipos e testa-los fisicamente, a crescente utilização da Internet e sistemas distribuídos necessita de servidores poderosos, a indústria do entretenimento deseja produzir jogos e aplicações multimídia cada vez mais realistas. Para atender a essa demanda por computação, a velocidade de operação dos processadores é sempre crescente, mas não pode continuar assim indefinidamente, pois existem limitações físicas que impedem o aumento contínuo da velocidade dos processadores, como a velocidade dos sinais elétricos, e a dissipação do calor, um problema que se agrava com o aumento de velocidade de operação dos processadores. Em razão disso, é cada vez mais intenso o desenvolvimento de computadores paralelos. Para ilustrar a utilização de sistemas paralelos, uma aplicação necessita de um poder de computação 100 vezes maior em relação a um processador típico no mercado, por exemplo, de 1.000MHz. Seria impossível obter um processador de MHz, mas perfeitamente possível construir um computador com 100 processadores de 1.000MHz, que em tese, teria um desempenho igual ou próximo a um computador com freqüência 100 vezes maior. A arquitetura de um computador paralelo é muito mais complexa que um computador monoprocessado, e precisa ser desenvolvido tendo em vista a sua aplicação. Uma aplicação onde as tarefas nada têm a ver umas com as outras, por 13

16 exemplo, um grande servidor de rede, deve ter uma arquitetura muito diferente de uma aplicação onde todos os processadores são dedicados à mesma tarefa. Esses dois tipos de aplicação diferem no que chama-se de granularidade (TANENBAUM, 2001). Em sistemas com pouca ou nenhuma comunicação entre os programas que rodam em paralelo, dizemos que possui granularidade alta. No lado oposto, sistemas onde os processadores são dedicados a resolver o mesmo problema em paralelo, diz-se que possui granularidade baixa (ou fina). Com relação ao hardware, pode-se classificar os sistemas paralelos em dois grupos (TANENBAUM, 2001). Em sistemas que possuem uma pequena quantidade de processadores poderosos e com pouca conectividade entre si, chama-se de sistemas fracamente acoplados. Em sistema com uma grande quantidade de processadores de pouca capacidade e com muita interação entre eles, chama-se de sistemas fortemente acoplados. Pode-se supor que para aplicações de granularidade alta seja mais eficiente um sistema fracamente acoplado, e para aplicações de granularidade baixa, sistemas fortemente acoplados. Na verdade, devido à grande diversidade de aplicações, algoritmos e hardware, o assunto merece atenção especial em cada caso. Em qualquer tipo de sistema de processamento paralelo (TANENBAUM, 2001), os processadores que estiverem trabalhando nas diferentes partes de uma mesma tarefa precisam se comunicar entre si para poder trocar informações. Existem duas filosofias de projeto, os sistemas multiprocessadores e os sistemas multicomputadores. A Figura 2.1 mostra os dois sistemas.??multiprocessadores: também conhecido por sistema de memória compartilhada, onde os processadores compartilham uma mesma memória física. Todos os processos que trabalham juntos podem compartilhar um único espaço de endereçamento virtual mapeado na memória física comum a eles. Dois processos podem se comunicar escrevendo/lendo dados na memória compartilhada. O modelo é simples, e pode ser entendido com facilidade por programadores.??multicomputadores: também conhecido por sistema de memória distribuída, onde cada processador tem sua própria memória, acessível somente pelo processador proprietário e nunca diretamente por qualquer outro processador do sistema. Os multicomputadores são freqüentemente fracamente acoplados. Nesse sistema, a comunicação entre processos se faz por troca de mensagem, implementada por software, e faz com que a divisão de instruções entre os processadores se torne uma tarefa complexa, portanto, sistemas multicomputadores são mais difíceis de 14

17 programar. Entretanto, a sua construção é mais simples e barata, já que a implementação de compartilhamento de memória em um número grande de processadores é uma tarefa difícil. Figura 2.1: (a) Sistema multiprocessador com 16 processadores e uma única memória. (b) Sistema multicomputador com 16 processadores. (Fonte: TANENBAUM, 2001) Sobre esses dois sistemas, pode-se concluir o seguinte: multiprocessadores são difíceis de construir e fáceis de programar, enquanto os multicomputadores são fáceis de construir e difíceis de programar. Por isso há muitas pesquisas voltadas para sistemas híbridos, relativamente fáceis de construir e programar. Uma das dificuldades no desenvolvimento de máquinas paralelas é a necessidade de linguagens de programação e compiladores voltados especificamente para a máquina. Até pouco tempo atrás, os sistemas computadorizados seguiam exclusivamente o modelo de arquitetura Von Neumann. O modelo de Von Neumann surgiu na década de 50 como uma arquitetura de processamento seqüencial de instruções, como pode ser visto na Figura 2.2, e têm grande influência nos projetos de computadores atuais. O processamento é feito segundo uma seqüência de passos conhecida como ciclo da busca-decodificação-execução. Ao todo, são oito passos definidos por Von Neumann para execução de uma instrução: 1 Busca da instrução na memória; 2 Atualização do contador de programa; 3 Determinação do tipo de instrução; 4 Se precisar de uma palavra na memória, determinar onde está armazenada; 15

18 5 Busca da palavra e armazenar em um registrador; 6 Execução da instrução; 7 Armazena o(s) resultado(s); 8 Retorno ao passo para executar a instrução seguinte. Figura 2.2: Caminho de dados no modelo de Von Neumann. (Fonte: TANENBAUM, 2001) Por isto, linguagens de programação atualmente em uso sofreram forte influência dos conceitos definidos por Von Neumann, devido a sua forte orientação para o hardware do computador (FERLIN, 2005). Uma possibilidade adotada para a programação dos computadores paralelos, é o desenvolvimento das linguagens com extensão ou mesmo linguagens paralelas. 2.2 O Modelo de Fluxo de Dados As arquiteturas Fluxo de Dados (Data Flow) surgiram no final da década de 70 para explorar o paralelismo entre as instruções de um programa (SILC et al, 2005). Estas máquinas possuem uma única memória para os dados e para as instruções e não possuem um apontador de instruções como no modelo Von Neumann. Os sistemas Fluxo de Dados não possuem variáveis, pois os valores são representados por pacotes que são transmitidos entre os processadores. Cada processador possui a tarefa de executar alguma operação com sua entrada e produzir uma saída contendo o 16

19 resultado. Neste caso cada operação depende somente de suas entradas. Desta forma, não há variáveis globais ou qualquer outra informação externa. Com isto, cada processador pode iniciar a execução assim que seus dados de entrada estejam disponíveis. A seqüência das operações é implícita à aplicação, e depende exclusivamente da disponibilidade dos dados de entrada. Para cada processador disponível, associa-se um template (pacote) que contém informações a respeito da operação a ser realizada, os dados de entrada, operação, sinais de controle e uma lista dos destinos de saída. Um ciclo de execução consiste em buscar e despachar todos os templates prontos para execução, executá-los, e então armazenar os resultados nos destinos apropriados, tornando assim disponíveis templates que utilizam como entrada o resultado do processamento de outro template. Sob estas condições, se o processamento for iniciado com um único processador e posteriormente forem adicionados mais processadores, o desempenho do computador crescerá até que todo paralelismo implícito tenha sido explorado, aproveitando a escalabilidade do sistema. O fluxo de controle sobre as operações é dado pela disponibilidade dos dados de entrada para a execução de uma instrução dataflow, num processo chamado data driven (dirigido pelos dados). Um programa dataflow é organizado como um grafo. Neste grafo, os nós representam as instruções e os arcos representam o fluxo de dados entre os nós. No modelo data driven no instante que um nó do grafo referente a uma instrução detectar que todos os seus arcos de entrada estão habilitados, ele executa a instrução e fornece um resultado de saída, que pode vir a habilitar outros nós do programa dataflow. Desta forma, o paralelismo entre as instruções acontece de forma natural, na medida que a disponibilidade dos dados para um nó esteja satisfeita. Este modelo pode explorar o paralelismo existente nas as operações envolvidas no cálculo numérico de equações diferenciais como y +2xy +2 y = 0, onde várias operações podem ser executadas simultaneamente usando o modelo do grafo de fluxo de dados do problema. Na Figura 2.3 pode-se constatar que esta equação possui 16 operações elementares: 6 (multiplicação), 2 (adição), 2 (subtração), 3 (duplicação d ), 1 (condicional se ), 1 (condicional < ) e 1 (parada P ). Como mostrado na figura 2.2, inicialmente têm-se 5 nós independentes que podem ser executados simultaneamente, depois outros 5 e assim sucessivamente, seguindo o grafo de fluxo de dados. Contudo 17

20 esta suposição não é obrigatória, pois na medida em que os nós estejam com os valores disponíveis nos arcos, eles podem ser executados pela arquitetura. Figura 2.3: Grafo de Fluxo de Dados da Equação y +2xy +2 y = 0. (Fonte: FERLIN, 2005) 2.3 Computação Reconfigurável A Computação Reconfigurável tem por objetivo a utilização de dispositivos lógicos programáveis (PLD Programmable Logic Devices) para dispensar a construção de circuitos digitais específicos à aplicação, ou dispensar a utilização de processadores, geralmente não otimizados para a aplicação desejada. A computação reconfigurável pode ser entendida como uma solução intermediária entre ASIC (Application-Specific Integrated Circuits) e microprocessadores, combinando vantagens das duas áreas, como mostrado na Figura

21 Figura 2.4: Posicionamento da Computação Reconfigurável. (Fonte: FERLIN, 2005) As arquiteturas reconfiguráveis ou arquiteturas de sistemas computacionais reconfiguráveis são aquelas onde se utilizam os conceitos de reconfigurabilidade e se implementam as técnicas de reconfiguração. Ou seja, são as arquiteturas onde os blocos lógicos podem ser reconfigurados, na sua lógica e funcionalidade interna, e os blocos de interconexão, responsáveis pela interligação destes blocos lógicos, também podem ser reconfigurados. Estes blocos lógicos normalmente implementam ou são as unidades funcionais de processamento, armazenamento, comunicação ou entrada e saída de dados (FERLIN, 2005). A história da computação reconfigurável começou com as memórias PROM (Programmable Read Only Memory), e posteriormente com dispositivos PAL (Programmable Array Logic) e PLA (Programmable Logic Array). Na década de 80 foram lançados os primeiros PLDs, que deram origem às tecnologias CPLD (Complex Programmable Array Logic) e FPGA (Field Programmable Gate Array). Atualmente no mercado podemos encontrar três tipos de FPGAs quanto à sua tecnologia de construção, onde cada um terá melhor desempenho dependendo da aplicação para a qual o mesmo será utilizado. Os três tipos são:?? RAM Estática: PLD na qual suas conexões entre as portas são feitas entre blocos lógicos por meio de portas de transmissão ou multiplexadores controladas por células SRAM. Tem como vantagem a possibilidade de ser rapidamente configurada, porém exige hardware externo auxiliar que deve ser montado junto com os blocos lógicos.?? Transistores de Passagem: Essa é uma opção mais barata que a opção de RAM estática, composta por uma grande concentração de transistores que são configurados em modo de corte ou modo de condução. 19

22 ?? EPROM/EEPROM: Baseada na tecnologia de criação de memórias EPROM/EEPROM. Sua principal vantagem é permitir a reprogramação sem que se precise armazenar a configuração externa PLD Programmable Logic Device (também referenciados por Programmable Logic Array (PLA), Programmable Array Logic (PAL), e Generic Array Logic (GAL)) são dispositivos que possuem em seu interior diversas portas lógicas, flip-flops e registradores, que oferecem uma forma flexível de arranjo destes componentes em nível de hardware. Nisso existem muitas vantagens, como um menor consumo, uma menor área utilizada na placa e a eliminação de interconexões entre componentes. Além disso, o fato de ser reconfigurável permite alterar o circuito lógico sem mudanças na placa. Dentro de uma cada PLD existe um conjunto de macrocélulas conectadas entre si. Estas macrocélulas tipicamente compreendem alguma quantidade de portas lógicas (AND e OR, por exemplo) e flip-flop. Em outras palavras, uma pequena equação lógica Booleana pode ser feita em cada macrocélula. Esta equação combina o estado de algumas entradas, produzindo uma saída que, se necessário, fica disponível em portas lógicas e flip-flops até a próxima borda de clock. A idéia em geral é essa, apesar das particularidades envolvendo fabricantes e família de produtos CPLD Com a densidade dos chips aumentando a cada dia os fabricantes passaram também a produzir componentes com características semelhantes às PLDs mas cada vez com maior quantidade de portas lógicas. A estes componentes foi dado o nome de CPLD (Complex Programmable Logic Devices). Basicamente uma CPLD é um conjunto de múltiplas PLDs e um barramento configurável de interconexão em um único chip. A densidade destes componentes permite o desenvolvimento de circuitos muito mais complexos que o PLD. 20

23 Logic Control Logic Control Switch Control Logic Control Logic Control Figura 2.5: Estrutura interna de uma CPLD. (Fonte: BARR, 1999) A Figura 2.5 contém um diagrama de blocos de uma CPLD. Cada um dos quatro blocos lógicos mostra o equivalente a uma PLD. No entanto, os atuais CPLDs podem possuir mais (ou menos) blocos lógicos. Estes blocos possuem as suas macrocélulas e conexões, exatamente como uma PLD. Diferente das interconexões configuráveis de uma PLD, a matriz de conexões de uma CPLD pode não ser totalmente conectável. Em outras palavras, algumas das teoricamente possíveis conexões entre a saída de blocos lógicos e a entrada de outros, podem não ser suportados na CPLD. O efeito prático disto é que o uso de 100% das macrocélulas é difícil de ser atingido (BARR, 1999). Devido ao fato das CPLDs serem mais robustas que as PLDs, o seu potencial de uso é muito mais variável. É possível utilizá-las para simples aplicações como decodificação de endereços, mas também é possível fazer uso das mesmas em lógicas de controle de alta performance ou complexas máquinas de estado finito. Nas aplicações que exigem lógica de alto desempenho, tradicionalmente as CPLDs são escolhidas ao invés dos FPGAs pois, por serem menos flexíveis internamente, possuem um atraso (delay) interno usualmente menor (medido em nanosegundos) FPGA Field Programmable Gate Arrays (FPGAs) podem ser utilizados para a implementação de praticamente qualquer projeto de hardware. Um dos usos mais comuns é o seu uso para a prototipação de componentes que virão no futuro a transformar-se em ASIC (componentes prontos, em pastilhas de silício). No entanto, 21

24 não existem problemas em distribuirmos FPGAs em produtos finais. Esta decisão requer basicamente uma análise de custo, uma vez que o desenvolvimento de um ASIC é um processo bastante caro e inflexível, mas que gera componentes de custos bastante reduzidos se produzidos em larga escala. Já os FPGAs possuem flexibilidade e custo baixo de prototipação, mas preços finais pouco competitivos se comparados à ASIC com alta escala de produção. Bloco lógico Interconexão programável Bloco de E/S Figura 2.6: Estrutura interna de um FPGA. (Fonte: BARR, 1999) O desenvolvimento de um FPGA é fruto de uma evolução do conceito das PLD/CPLD, mas a sua arquitetura é um tanto distinta destes. Como mostrado na Figura 2.6, a arquitetura de um FPGA é composta de 3 estruturas básicas: blocos de entrada e saída (IOB), blocos lógicos configuráveis (CLB) e chaves de interconexão (Switch Matrix). Os blocos lógicos são dispostos de forma bidimensional, as chaves de interconexão são dispostas em formas de trilhas verticais e horizontais entre as linhas e as colunas dos blocos lógicos.?? CLB (Configuration Logical Blocks): Circuitos idênticos, construídos pela reunião de flip-flops (entre 2 e 4) e a utilização de lógica combinacional. Utilizando os CLBs, um usuário pode construir elementos funcionais lógicos.?? IOB (Input/Output Block): São circuitos responsáveis pelo interfaceamento das saídas provenientes das saídas das combinações de CLBs. São basicamente buffers, que funcionarão como um pino bidirecional entrada e saída do FPGA.?? Switch Matrix (chaves de interconexões): Trilhas utilizadas para conectar os CLBs e IOBs. O terceiro grupo é composto pelas interconexões. Os recursos 22

25 de interconexões possuem trilhas para conectar as entradas e saídas dos CLBs e IOBs para as redes apropriadas. Geralmente, a configuração é estabelecida por programação interna das células de memória estática, que determinam funções lógicas e conexões internas implementadas no FPGA entre os CLBs e os IOBs. O processo de escolha das interconexões é chamado de roteamento. 2.4 Linguagem VHDL Como a tecnologia de circuitos integrados tem sido melhorada para permitir mais e mais componentes em um chip, sistemas digitais continuam a aumentar a complexidade. Os sistemas digitais se tornaram mais complexos, e o projeto detalhado dos sistemas no nível de portas e flip-flops se tornou monótono e consome muito tempo. Uma linguagem de descrição de hardwa re permite a um sistema digital ser desenvolvido e depurado em um nível mais alto antes da conversão para o nível de portas e flip-flop. As mais populares linguagens de descrição de hardware são VHDL (PEDRONI, 2004) e Verilog (ROTH, 1998). O seu desenvolvimento foi patrocinado pelo Departamento de Defesa dos Estados Unidos, e a primeira versão foi lançada em 1985 (YALAMANCHILI, 1998). Desde então, a indústria de automatização de projetos expandiu o uso de VHDL de concepção inicial da documentação, para implementação e verificação funcional (PERRY, 2002). Projetos em VHDL possuem duas seções principais: ENTITY, que define as portas de entrada e saída, e ARCHITECTURE, que define o funcionamento do projeto. Uma architecture pode ser desenvolvida em três modos: fluxo de dados, funcional e estrutural. A Figura 2.7 mostra o circuito lógico de um comparador, e abaixo uma descrição dos três modos da linguagem com um exemplo para implementar o comparador. 23

26 Figura 2.7: Circuito lógico do comparador. Saída O=1 para A=B e O=0 para A?B. Declaração da entity para o comparador, à qual pode-se utilizar qualquer uma das architectures apresentadas a seguir: library ieee; use ieee.std_logic_1164.all; entity comparador is port ( A, B: in std_logic_vector (1 downto 0); O: out std_logic ); end comparador; A declaração entity do comparador define A e B como entradas de dois bits e O como saída de um bit. As duas primeiras linhas definem a biblioteca necessária para o tipo de dados das entradas e saídas: std_logic e std_logic_vector. A funcionalidade do comparador pode ser implementada em qualquer um dos três modos, descritos a seguir:??fluxo de dados: Define as relações entre as entradas e saídas. As instruções não são executadas de forma seqüencial como em linguagens de programação de software. Cada saída tem seu valor alterado após um evento (mudança de valor) em um sinal de entrada da qual seja dependente (ou sensitivo). architecture fluxo_de_dados of comparador is begin O <= '1' when (A = B) else '0'; end fluxo_de_dados; 24

27 ??Funcional: Nesse modo, é feita a descrição da funcionalidade da entity por meio de uma representação algorítmica, semelhante a uma linguagem de programação de software. A descrição funcional é definida por uma instrução process, que possui uma lista das entradas pelas quais o process é sensitivo, ou seja, as entradas que iniciam a execução após uma mudança no seu valor (evento). architecture funcional of comparador is begin process (A,B) begin if A = B then C <= '1'; else C <= '0'; end if; end process; end funcional;??estrutural: Nesse modo, o projeto é implementado pela declaração das portas lógicas e componentes do projeto, e as suas interligações. A declaração dos componentes está na linha use work.comportas.all, e indica que xnor2 e and2 estão no mesmo local do projeto. Por meio da declaração signal definem-se as ligações entre os componentes. use work.comportas.all; architecture estrutural of comp is signal x: std_logic_vector (0 to 1); begin U0: xnor2 port map (a(0), b(0), x(0)); U1: xnor2 port map (a(1), b(1), x(1)); U2: and2 port map (x(0), x(1), c); end estrutural; 25

28 3 Descrição do Projeto da Máquina Paralela A máquina paralela consiste em uma arquitetura com vários Elementos Processadores (EPs) que operam de forma paralela, desenvolvido com a linguagem VHDL e implementados em um FPGA. Faz parte do projeto um software em um computador PC, para fazer a interface com o usuário. O processamento é feito segundo o modelo de Fluxo de Dados, o qual permite obter o máximo paralelismo existente na aplicação. Conforme visto na Seção 2.2, nesse modelo as operações podem ser representadas por um grafo. Para exemplificar a execução da máquina paralela, pode-se utilizar o cálculo de uma equação, por exemplo, f(x) = 2x 2 + 4x 5. A Figura 3.1 mostra o grafo do cálculo da equação. 2 X X 4 5 * 1 * 2 * Figura 3.1: Grafo para cálculo da equação f(x) = 2x 2 + 4x 5. Pode-se observar que para o cálculo dessa equação são necessárias cinco operações. Em um computador monoprocessado, o cálculo seria feito calculando-se as cinco operações, uma de cada vez. Na máquina paralela, com dois EPs, o cálculo poderia ser feito em três passos, pois as instruções 1 e 2 podem ser executadas em paralelo, posteriormente as operações 3 e 4 e, em seguida, a operação 5. A operação 3 é dependente da operação 1, pois um dos seus operandos é gerado por esta operação, assim como a 4 depende de 2 e a 5 depende de 3 e 4. Fica claro dessa forma a limitação ao paralelismo imposta pelas dependências entre as operações. O maior desempenho teoricamente seria obtido com 2 EPs, com mais EPs 26

29 não haveria ganho, ao passo que se todas as operações fossem independentes, com 5 EPs seria possível executá-las em apenas 1 passo. Cada uma das operações corresponde a um template na máquina paralela. O template possui as seguintes informações: operação, operandos, endereços de destino e sinais de controle, que serão discutidos nas próximas seções. Por exemplo, a instrução 2 possui como operandos X e 4, a operação multiplicação e como destino o endereço de memória do template 4. A Tabela 3.1 mostra como seriam os templates referentes ao cálculo da Figura 3.1. Tabela 3.1: Templates para cálculo da equação f(x) = 2x 2 + 4x 5. Template Operação Operando1 Operando2 Destino 1 Multiplicação X X 3 2 Multiplicação X Multiplicação Subtração Soma O funcionamento da máquina paralela depende de outras ações além da execução dos templates, assim, parte da operação é feita por outras duas unidades da arquitetura além dos EPs, que são chamadas de Unidade de Despacho e Unidade de Armazenamento. Essas unidades são responsáveis pelo fluxo de dados e instruções da memória para os EPs e dos EPs para a memória, que é chamada de Unidade de Memória RAM, onde estão armazenados os templates. A Figura 3.2 apresenta uma visão geral da máquina paralela e do fluxo de dados entre as unidades, a máquina paralela é mostrada com mais detalhes na Figura 3.3. Interface com host Memória RAM Unidades de Despacho Unidades de EP1 EP2 Armazenamento EPn Figura 3.2: Visão geral da máquina paralela. A entrada e saída da máquina paralela são feitas por um computador (denominado de host), que possui software para montagem de templates, que o 27

30 usuário do sistema utiliza para fazer a programação do software a ser executado pela máquina paralela. O software faz a comunicação com a máquina paralela, enviando os templates e recebendo as respostas do processamento. Interface com HOST endereço check_op Unidade de Despacho template wr_ep EP1 EP2 dados... Unidade de resultados memória RAM EPn rd_ep endereço1 + dado1 endereço2 + dado2 wr_ram Unidade de Armazenamento 1 empty1 wr_ram Unidade de Armazenamento 2 empty2 Figura 3.3: Detalhamento da máquina paralela. O funcionamento da máquina paralela ocorre basicamente da seguinte forma: a Unidade de Despacho faz a leitura da memória em busca de templates prontos, ou seja, templates com os seus operandos disponíveis; a cada template pronto encontrado, é gravado no próximo EP disponível. Templates que não estejam prontos serão verificados novamente no próximo ciclo de busca da Unidade de Despacho. Os EPs possuem uma fila de entrada, onde ficam armazenados os templates enviados pela Unidade de Despacho. O EP faz a leitura do próximo template na fila, a decodificação, execução e armazena o resultado e endereço de destino em uma das duas filas de saída. A Unidade de Armazenamento busca EPs cujas filas de saída possuem dados prontos, faz a leitura das dessas filas e gravação na memória, tornando assim outros templates prontos para o despacho e armazenando as respostas finais do processamento. 28

31 Essa arquitetura permite obter ganho de desempenho para até quatro EPs. O motivo é a limitação de portas de escrita e leitura na RAM, que cria um gargalo no fluxo de dados e impede que mais EPs sejam alimentados com novas instruções. Isso ocorre porque o ciclo de máquina do EP é de quatro ciclos de clock (pode variar, mas são quatro ciclos na maioria dos casos) e a Unidade de Despacho faz um despacho por ciclo de clock, assim, se houverem cinco EPs, a cada ciclo de clock, um EP ficará desocupado e o desempenho geral da máquina ficará constante. Para minimizar essa limitação, a memória RAM foi dividida em seções e a arquitetura ficou da seguinte forma: para cada quatro EPs há uma Unidade de Memória RAM, uma Unidade de Despacho e duas Unidades de Armazenamento. As seções de memória possuem endereçamento intercalado, por exemplo, se houverem duas seções (portanto oito EPs), a primeira terá os endereços 0, 2, 4, 6 até 254; a segunda seção terá os endereços 1, 3, 5, 7 até 255. O projeto foi implementado em duas versões, uma com quatro EPs e outra com dezesseis, possibilitando assim testes com 1, 2, 3 ou 4 EPs com a primeira e testes com 4, 8, 12 ou 16 com a segunda versão, esta, portanto, com quatro Unidades de Memória, quatro Unidades de Despacho e oito Unidades de Armazenamento. A arquitetura opera com freqüência de 50MHz, ou ciclo de clock de 20ns. Como cada instrução consome cerca de 100ns para a execução, a máquina pode executar cerca de 10 milhões de instruções por segundo com apenas um EP. 3.1 Elemento Processador O Elemento Processador faz o processamento dos templates. É, dividido nas seguintes unidades: núcleo, fila FIFO (First In First Out) de entrada, registradores de saída e divisor. Um ciclo de operação do EP segue os seguintes passos: 1 Busca de instrução / Decodificação do template; 2 Execução da instrução; 3 Armazenamento do resultado e endereço de destino no primeiro registrador de saída; 4 Se houver segundo destino, armazenar resultado e endereço de destino no segundo registrador de saída. A Figura 3.4 mostra uma visão geral do funcionamento do EP. Os sinais op1 e op2 correspondem a operando 1 e operando 2. São mostrados na figura os sinais de 29

32 leitura (rd_fifo e rd_ep), escrita (wr_ep e wr_fifo) e as transferências de templates, dados e endereços. O template possui um bit de informação de porta de destino para cada um dos destinos. Se o bit porta1 for igual a 0, destino 1 será armazenado no registrador de saída 1, se porta1 for igual a 1, será armazenado no registrador de saída 2. O mesmo ocorre para destino 2 do template, se porta2 for 0, destino2 vai para registrador 1, se porta2 for 1, destino2 vai para registrador 2. Os dois destinos podem ser armazenados no mesmo registrador de saída, neste caso, o EP aguarda a leitura do leitura do registrador (pela Unidade de Armazenamento) para gravar o segundo destino. wr_ep Unidade de Despacho template FIFO template rd_fifo Busca de instrução / Decodificação de template endereços opcode op1 op2 Execução da instrução dado wr_fifo Verificação de endereço destinos Reg 1 Reg 2 rd_ep1 endereço+dado empty1 rd_ep2 endereço+dado empty2 Unidade de Armazenamento Figura 3.4: Detalalhamento do EP e as ligações com as unidades de Despacho e Armazenamento. O número de registradores de saída varia de acordo com o número de seções de memória na arquitetura, já que cada registrador corresponde a um dos operandos dos templates de cada seção. Por exemplo, na arquitetura com 16 EPs, há quatro seções de memória, portanto, cada EP possui oito registradores de saída. O tempo necessário para execução de 1 ciclo de máquina no EP ocorre da seguinte forma: O passo 1 consome 1 ciclo de clock; o passo 2, execução da instrução, 30

33 consome 2 ciclos de clock, mas pode variar; os passos 3 e 4, consistem no armazenamento nas filas de saída, consomem 1 ciclo de clock cada. O ciclo de máquina do EP é de no mínimo quatro ciclos de clock, mas pode ser cinco caso haja dois destino, ou ainda mais se a instrução demorar mais para ser executada, o que pode acontecer com mais freqüência com a divisão ou multiplicação. As instruções suportadas pelo EP são apresentadas na Tabela 3.2, com o nome e o opcode (código da operação) em hexadecimal. Tabela 3.2: Instruções suportadas pelo EP e OPCODE correspondente. Instrução Aritméticas Soma Subtração Multiplicação Divisão Lógicas AND OR NOT XOR NOR Relacionais Igual Não igual Maior ou igual Menor Outras Condicional Duplica OPCODE 0h 1h 2h 3h 4h 5h 6h 7h 8h 9h Ah Bh Ch Dh Eh Algumas considerações sobre as instruções:?? A instrução de divisão é a única que não é executada no núcleo do EP, mas em um módulo divisor separado. A sua utilização não muda em relação às outras instruções.?? As instruções relacionais geram como resposta 0 para falso ou 1 para verdadeiro, que pode ser utilizado como entrada na instrução condicional, 31

34 que por sua vez armazena um valor no destino caso a entrada seja verdadeira, ou escolhe um entre dois destinos dependendo do valor de entrada.?? A instrução Duplica tem a função de duplicar um valor para 1 ou 2 endereços. Como a máquina paralela possui dois endereços de destino em cada template, essa instrução é utilizada quando é necessário armazenar o mesmo valor em mais do que 2 destinos.?? Existe uma instrução de parada, ou instrução STOP, que pára o funcionamento da máquina. Essa instrução afeta a Unidade de Despacho, que pára de enviar dados quando essa instrução estiver habilitada (seu operando estiver com valor 1). O opcode dessa instrução é Fh. A fila de entrada tem capacidade para 8 dados de 40 bits, que é o tamanho do template. Os registradores de saída têm capacidade para dados de 16 bits, que é o tamanho do endereço (8 bits) mais o tamanho do dado (8 bits). 3.2 Unidade de Memória de Template A Unidade de Memória de Template tem a armazena os templates a serem processados, de acordo com o formato do template apresentado na Tabela 3.3. A unidade de memória é composta por cinco memórias RAM: operando1, check_op1, operando2, check_op2 e opcode/destinos. O motivo da divisão é a redução no gasto de tempo na gravação de dados. Operando1, operando2 e checks são os únicos dados do template que têm seus valores alterados durante o processamento, portanto, se o template estivesse em apenas uma memória, seriam necessários 2 ciclos de clock para realizar uma gravação: leitura do template completo e gravação do template com os operandos modificados. Com o operando em uma memória separada, a gravação é feita em apenas 1 ciclo de clock. 32

35 Tabela 3.3: Formato do template e bits utilizados para cada campo. Campo Bits do template (dados de 8 bits) Operando1 39 a 32 Operando2 31 a 24 Check op1 23 Check op2 22 Port dest1 21 Port dest2 20 Opcode 19 a 16 Destino 1 15 a 8 Destino 2 7 a 0 Como cada operando é armazenado em uma memória, o armazenamento destes é feito em paralelo, por isso são utilizadas duas unidades de armazenamento. Os sinais de check indicam se o operando está pronto, ou seja, se não está aguardando o processamento de outro template, portanto, há dois sinais de check: check_op1 para Operando1 e check_op2 para Operando2. As memórias de operando e check são utilizadas para leitura e escrita durante o processamento, ao passo que a memória de opcode/destinos é utilizada apenas para leitura. Para permitir a leitura de templates ao simultaneamente à gravação de operandos, as memórias de operandos utilizam duas portas, uma das portas faz leitura para despacho e acesso externo (entrada e saída de dados pelo host); a outra faz a escrita para as Unidades de Armazenamento. A Figura 3.5 mostra os sinais de entrada e saída utilizados em cada memória. Não há sinal de read na porta de leitura, apenas com o endereço os dados são disponibilizados na saída. A máquina paralela atinge o maior desempenho com quatro EPs, para poder utilizar um número maior destes, é preciso utilizar uma Unidade de Memória para cada quatro EPs, dividindo assim a memória em seções. Para otimizar a utilização paralela das seções de memória, o endereçamento é intercalado entre elas, como mostrado na Tabela

36 Dados externos (8 bits) Endereço(8 bits) Dados(8 bits) Write externo (1 bit) (a) Porta A Dados externos (8 bits) Endereço(8 bits) Dados(8 bits) Write externo (1 bit) Porta B Dados(8 bits) Endereço(8 bits) Write(1 bit) Figura 3.5: (a) Sinais de E/S da memória de opcode/destinos. (b) Sinais de E/S das memórias de operandos e checks: Porta A para leitura e Porta B para escrita. (b) A Unidade de Memória possui ainda um controle para atender às dependências entre os templates. Esse controle é feito para evitar que templates já executados sejam processados novamente, e também para otimizar a busca de templates que aguardam execução. O controle é feito por três memórias RAM do tipo FIFO (First In First Out) e uma unidade desenvolvida em VHDL. As memórias armazenam os endereços dos templates que aguardam processamento, a unidade que controla as memórias faz a leitura de uma delas a cada sinal de read enviado pela Unidade de Despacho, e assim obtém o endereço de leitura da memória de templates. Existe um controle como este para cada seção de memória. Os Templates que aguardam processamento são aqueles vindos de gravação externa (host) ou que receberam dados de Unidades de Armazenamento. Mesmo assim, a Unidade de Despacho faz a verificação antes de fazer a gravação nos EPs. A primeira FIFO recebe dados externos, a segunda FIFO da primeira Unidade de Armazenamento e a terceira FIFO, da segunda Unidade de Armazenamento. 34

37 Tabela 3.4: Divisão de memória para 16 EPs com o endereçamento de cada uma. Cada seção possui cinco divisões para os campos do template. Seção 1 Endereços Operando1 Operando2 Check1 Check2 Opcode/Destinos ram_op1 ram_op2 ram_check1 ram_check2 ram_opdest Seção 2 Endereços Operando1 Operando2 Check1 Check2 Opcode/Destinos ram_op1 ram_op2 ram_check1 ram_check2 ram_opdest Seção 3 Endereços Operando1 Operando2 Check1 Check2 Opcode/Destinos ram_op1 ram_op2 ram_check1 ram_check2 ram_opdest Seção 4 Endereços Operando1 Operando2 Check1 Check2 Opcode/Destinos ram_op1 ram_op2 ram_check1 ram_check2 ram_opdest 3.3 Unidade de Despacho A Unidade de Despacho tem como função a leitura de templates na memória e a gravação na fila de entrada dos EPs. É responsável também por iniciar e finalizar a operação da máquina. Para fazer a busca na memória, a unidade de despacho envia um sinal de read à memória RAM, que ativa a unidade de controle da memória, e faz a leitura de uma das memórias FIFO que armazenam endereços de templates prontos, assim, o endereço de leitura da RAM é gerado por uma leitura na memória FIFO. A Unidade de Despacho possui uma entrada para iniciar o processamento, que pode ser ativada após a gravação externa dos templates. Ao ocorrer o sinal de início, a Unidade de Despacho armazena a quantia de EPs que serão utilizados, dados por switchs na placa do FPGA. As entradas de início e número de EPs são comuns a todas 35

38 as Unidades de Despacho, portanto, esse é o motivo que limita a máquina com dezesseis EPs a operar com quatro, oito, doze ou dezesseis EPs. Recebido o sinal de início, a unidade envia à memória um sinal de read, faz a verificação do template (para determinar se os operandos estão disponíveis, por meio dos campos check1 e check2), e faz a gravação nos EPs, ou seja, o template é armazenado na fila de entrada do primeiro EP disponível. O EP está disponível quando a sua fila de entrada não está cheia. Se o EP não está disponível, o contador de EP é incrementado e no próximo ciclo de clock o template é armazenado no EP seguinte. A operação da máquina é finalizada quando a unidade de despacho acessa o template com opcode Fh (instrução STOP), e o operando1 desse template tem valor 1, que indica que a parada está habilitada. O processamento continua nos EPs e na unidade de armazenamento, para os templates enviados antes da instrução de parada. A Unidade de Despacho consome um ciclo de clock para a leitura da memória e um ciclo para verificação do template e gravação no EP, porém as duas operações são feitas em paralelo, pois durante a leitura na memória é feita a gravação no EP do template lido no ciclo anterior, assim, a unidade faz um despacho por ciclo de clock. A unidade de despacho é desenvolvida em VHDL e segue a seguinte lógica: início (borda de subida de clock) Se inicio habilitado e fim desabilitado inicia execução no próximo ciclo de clock armazena número de EPs Senão se instrução FIM set no sinal de FIM reset em todos wr_ep Senão se check_op1 = 1 e check_op2 = 1 e fila não cheia verifica se template não é igual ao anterior set em wr_ep de índice cont_ep incremento de cont_ep Senão reset em todos os sinais wr_ep Fim se incremento de cont_ep Fim se Fim 36

39 O sinal de saída wr_ep é um vetor de tamanho igual ao número de EPs. Para fazer a escrita em apenas um EP, utiliza-se como índice a variável cont_ep (contador de EP). 3.4 Unidade de Armazenamento A unidade de armazenamento tem a função de fazer a leitura dos registradores de saída dos EPs e armazenar os resultados na memória RAM. Existem duas unidades de armazenamento para cada quatro EPs, uma para operando1 e outra para operando2, assim, o armazenamento nas duas memórias de operando é feito em paralelo, assim como a leitura nos dois registradores de saída dos EPs. Os EPs possuem registradores de saída de 16 bits. O EP armazena no registrador o endereço de 8 bits e o resultado do processamento do template, também de 8 bits. A unidade de armazenamento utiliza essas informações para armazenar na memória o dado no endereço correspondente, assim como a gravação do endereço na memória FIFO, para atender às dependências entre as instruções. A unidade de armazenamento é desenvolvida em VHDL e segue a seguinte lógica: inicio (borda de subida de clock) Processo de gravação na RAM: se fila do EP de índice cont_ep não vazia habilita leitura no EP de índice cont_ep senão desabilita leitura nos EPs desabilita gravação na RAM fim se fim Processo de busca de EP: repita i de 1 a número de EPs se registrador do ep não vazio cont_ep = próximo EP com dados na saída; fim se habilita gravação na RAM fim repita 37

40 fim A variável cont_ep significa contador de EP e é utilizada como índice para fazer a verificação de fila vazia e a leitura do EP correspondente. A unidade de armazenamento consome 1 ciclo de clock para cada ciclo de leitura de EP e armazenamento na RAM. A busca de EP também consome 1 ciclo de clock, porém as duas operações são executadas em paralelo. 38

41 4 Descrição do Hardware O hardware do projeto é composto por um computador PC, chamado de host, placa de desenvolvimento de lógica programável Altera DE2 e cabo de comunicação. 4.1 O computador (host) O computador é utilizado no projeto como interface com o usuário. Por meio deste é realizada entrada e saída de dados da máquina paralela, no FPGA. Deve ter como sistema operacional Windows 2000 ou XP e a porta paralela disponível (porta LPT1). O computador possui software de montagem de templates, pelo qual o usuário utiliza para implementar o software e os dados a serem executados pela máquina paralela, bem como para enviar os templates e visualizar os resultados do processamento, conforme a descrição do software no capítulo 5. Para visualização dos resultados são apresentados ao usuário os operandos de todos os templates. Para a comunicação com a máquina paralela, é utilizada a porta paralela do computador. A porta paralela possui oito pinos de dados (saída no modo SPP, bidirecional no modo EPP), cinco pinos de status (entrada) e quatro pinos de controle (bidirecional), além de oito pinos de aterramento, conforme a Tabela 4.1. Como os pinos de dados são utilizados para enviar e receber dados do FPGA, a porta paralela deve ser configurada no modo EPP, no setup do computador. Tabela 4.1 Função dos pinos da porta paralela. Os nomes com barra indicam sinais negados. Função Nomes Pinos Endereço Direção Dados D0 a D7 2 a 9 378h Entrada/Saída Controle /C0, /C1, C2, /C3 1, 14, 16, h Entrada/Saída Status S3, S4, S5, S6, /S7 15, 13, 12, 10, 11 37Ah Entrada Terra - 18 a Para fazer a comunicação e ativar o funcionamento da máquina paralela no FPGA, o host precisa controlar os seguintes sinais da máquina paralela (a pinagem é apresentada na Tabela 4.2): 39

42 ?? Reset: É enviado ao FPGA para iniciar todo o processo, para restaurar a configuração original da máquina paralela, e assim evitar a interferência de dados e configurações resultantes de processamentos anteriores.?? Templates de entrada: São os dados de entrada na máquina paralela. São utilizados quatro pinos de dados da porta paralela. Como os templates são compostos por quarenta bits, cada um é enviado em dez grupos de quatro bits.?? Dados de saída: Correspondem aos operandos dos templates, após o término do processamento. São utilizados quatro pinos de dados da porta paralela. Cada template possui dois operandos de oito bits, portanto são enviados quatro grupos de quatro bits por template.?? Fim: É enviado do FPGA ao host ao término do processamento. Indica que o FPGA vai iniciar a transferência dos resultados.?? Write: Sinal que indica gravação na máquina paralela. É ativado juntamente com cada grupo de quatro bits enviados à máquina paralela.?? Write host: Sinal utilizado após o término do processamento, quando a máquina paralela está enviando ao host os resultados. O host aguarda este sinal após receber o sinal de FIM. É enviado juntamente com cada grupo de quatro bits enviados pelo FPGA. O host aguarda este sinal até atingir um tempo limite, caso o sinal não ocorra é apresentada uma mensagem de erro de comunicação ao usuário.?? Acknowledgement (ack): Quando o sinal de Write Host é enviado ao computador, este envia o ack para indicar ao FPGA que o dado foi devidamente lido e armazenado. Tabela 4.2: Pinos da porta paralela utilizados no projeto. Sinal da máquina Sinal da porta Pino da porta Reset C2 16 Templates de entrada D0 a D3 2 a 5 Dados de saída D4 a D7 6 a 9 Fim S6 10 Write /C0 1 Write host S3 15 Acknowledgement /C1 14 Terra

43 4.2 Altera DE2 A placa de desenvolvimento de lógica programável Altera DE2 contém o FPGA que opera de acordo com o projeto da máquina paralela. O FPGA da placa DE2 possui as seguintes características:?? FPGA EP2C35F672C6 da família Cyclone II;?? Elementos lógicos: ;?? Bit de memória: ;?? Pinos de entrada e saída: 475;?? Freqüência de operação (clock): 50 MHz. A placa DE2 possui diversos recursos para comunicação com periféricos externos, como se pode visualizar na Figura 4.1. Os seguintes recursos são utilizados no projeto:?? Comunicação JTAG USB-Blaster: o JTAG (Join Test Action Group) é o protocolo utilizado entre o software Quartus II e a placa DE2 para a programação do FPGA. Para a transferência de dados é utilizado o cabo de comunicação USB- Blaster.?? A placa possui dois grupos de 40 pinos de expansão, ligados diretamente aos pinos do FPGA, cada grupo possui o formato de conectores IDE do computador. No projeto, são utilizados 14 desses pinos, conectados à porta paralela do computador.?? A placa possui 18 switches. No projeto são utilizados apenas dois, para fazer a seleção do número de EPs a serem utilizados no processamento (com os switches desligados, é utilizado um EP, com os dois ligados, são utilizados quatro EPs). Além desses recursos, a placa possui os seguintes:?? SDRAM 8-MBytes, SRAM 512K, Flash 4-MBytes?? Slot de cartão de memória SD;?? Display de LCD 16x2;?? Conector 10/100 Ethernet;?? Comunicação serial RS232;?? Saída de vídeo (VGA 10-bit DAC); 41

44 ?? Entrada de vídeo (NTSC/PAL/Multi-format);?? USB 2.0;?? Porta PS/2 de teclado ou mouse;?? Line In/Out, Microphone In (24-bit Audio CODEC);?? 4 push buttons;?? 8 displays de 7 segmentos;?? 18 LEDs vermelhos e 9 LEDs verdes;?? Porta infravermelha;?? Oscilador de 50 MHz para o FPGA, oscilador de 27 MHz para aplicações de vídeo e entrada de clock externo. FPGA Conectores de expansão Figura 4.1: Placa Altera DE2 utilizada no projeto. (Fonte: No projeto com quatro EPs, são utilizados elementos lógicos e bits de memória. No projeto com dezesseis EPs, são utilizados elementos lógicos e bits de memória. Os dados de consumo de recursos do FPGA mostram que este suportaria a máquina paralela com mais EPs, possivelmente em número maior que

45 4.3 Cabo de comunicação O cabo de comunicação integra o host com a máquina paralela, permitindo a transferência de dados entre eles de acordo com o protocolo desenvolvido em C++ no computador e em VHDL no FPGA, para que o usuário utilize o computador como interface de entrada e saída da máquina paralela. Em uma das extremidades, o cabo possui conector DB-25 macho para conectar à porta paralela do computador. Na outra extremidade, o conector do FPGA é igual ao conector IDE do computador, portanto, utilizou-se um cabo FLAT, com um conector para integrar ao cabo da paralela, conforme mostra a Figura 4.2. Figura 4.2: Cabo de comunicação: cabo da porta paralela integrado ao cabo FLAT. A Tabela 4.3 mostra a correspondência entre os pinos da porta paralela e os pinos de entrada e saída da placa DE2. Tabela 4.3: Correspondência entre os sinais da porta paralela e placa DE2. Sinal Pino da Paralela Pino do FPGA Reset Write 1 0 Write host Ack 14 9 Fim Dados entrada 2 a 5 1 a 4 Dados saída 6 a 9 5 a 8 43

46 5 Descrição do Software O software chama-se Montador de Templates e tem duas finalidades: permitir ao usuário a implementação do software a ser executado pela máquina paralela e fazer a comunicação com o FPGA, enviando os templates como entrada de dados e fazendo a leitura dos operandos ao final do processamento. Foi desenvolvido em linguagem C++ com a ferramenta Borland C++ Builder para sistema operacional Windows 2000 ou XP. 5.1 Montagem de Templates O software montador possui uma interface para o usuário digitar os campos dos templates e a opção de incluir ou excluir templates, que são listados na tela e permitem ao usuário visualizar todos em ordem de endereço. A interface do montador está na Figura 5.1. Figura 5.1: Tela principal do Montador de Templates. 44

47 O Montador permite que os templates sejam armazenados em arquivo, que possui a extensão MNT e possui o formato de arquivo texto. O software possui os recursos típicos de programas do Windows para manipulação de arquivos: Novo, Abrir, Salvar, Salvar Como. O usuário pode, portanto, criar vários arquivos com templates. A seguir é mostrado o conteúdo do arquivo MNT correspondente ao da Figura 4.1, as linhas não utilizadas são preenchidas com zeros, até a linha 256: F A F Os campos são separados por espaços e na seguinte ordem: opcode, operando1, check_op1, operando2, check_op2, destino1, port1, destino2, port2. Outro recurso do software Montador é a geração de arquivos MIF (Memory Initialization File), que são arquivos utilizados como dados iniciais de memória na simulação do Quartus II. O Montador gera cinco arquivos MIF, de acordo com a divisão de memória apresentada na seção 3.2. Os arquivos possuem nome padrão, pois os nomes dos arquivos MIF são definidos durante o projeto no Quartus II, e assim o usuário pode escolher apenas o locar onde os arquivos serão armazenados, como mostrado na Figura 5.2. Os nomes são os seguintes: ram_op1, ram_op2, ram_check1, ram_check2 e ram_opdest, todos com extensão mif. Como esse recurso é utilizado apenas durante o desenvolvimento do projeto, os arquivos são gerados para a arquitetura com quatro EPs, ou seja, apenas uma seção de memória. 45

48 Figura 5.2: Tela de seleção de pasta para gerar arquivos MIF. Os recursos do Montador são implementados através da classe cmont. A classe possui todos os dados dos templates armazenados em vetores na memória, os seguintes métodos têm as funções de manipulação dos templates e arquivos:?? Incluir: Faz a inclusão de novo template. Recebe como parâmetros todos os campos do template e o endereço.?? Excluir: Faz a exclusão de um template. Recebe como parâmetro apenas o endereço.?? Salvar: Armazena em um arquivo no disco os dados em arquivo MNT. Recebe como parâmetro o nome do arquivo.?? Abrir: Abre um arquivo MNT e põe os dados do arquivo na memória. Recebe como parâmetro o nome do arquivo.?? Gerar MIF: Gera os arquivos MIF no local escolhido pelo usuário e com os nomes padrão, para utilizar esse recurso o arquivo MNT deve estar salvo. Não há parâmetros.?? Acesso aos dados: Para permitir à classe de interface com o usuário acessar os dados armazenados na classe cmont, há um método para cada campo dos templates que recebe como parâmetro o endereço e retorna no modo caractere o campo do template. 46

49 5.2 Comunicação A comunicação entre o host e o FPGA é feita por um protocolo desenvolvido em VHDL no FPGA e em C++, no software Montador. A ativação da comunicação e da execução é feita pelo usuário no botão Executar, na tela principal do software (Figura 5.1), ao pressionar esse botão, a tela da Figura 5.3 é apresentada ao usuário. Figura 5.3: Tela de comunicação e execução da máquina paralela. O protocolo de comunicação foi implementado na classe ccom, com os seguintes métodos:??executa: Esse método tem a função de executar os métodos de comunicação. Executa primeiramente o método Envia templates, ao término do envio, executa o método Aguarda, que possui um contador que incrementa o seu valor até o recebimento do sinal de FIM. Recebido este sinal, é executado o método Recebe templates. No final do processo, é retornado o valor do contador do método Aguarda, ou seja, o tempo de processamento.??envia templates: Esse método ativa o sinal de Reset à máquina paralela, em seguida envia os templates por meio de um loop de 256 iterações, uma para cada template. Neste loop, os dados são acessados da classe cmont (no formato caractere), 47

50 convertidos para o tipo inteiro, e em grupos de quatro bits são enviados à porta paralela juntamente com o sinal de write.??aguarda: Possui um laçoque incrementa um contador até o recebimento do sinal de FIM, em seguida retorna o contador, que corresponde ao tempo de processamento. Caso o sinal de FIM não ocorra, o contador atinge um valor limite e ativa o flag de erro.??recebe templates: Para o recebimento de templates também há um laço de 256 iterações. Dentro desse laço, há outro de quatro iterações, um para cada grupo de quatro bits, pois são dois operandos de oito bits. Para o recebimento de cada quatro bits, o método aguarda o sinal de Write host, enviado pelo FPGA, até um tempo limite, que se for atingido, ativa o flag de erro, caso contrário, o método armazena o valor e envia o sinal de ack, para ativar o envio do próximo valor.??acesso a dados: A classe possui os métodos que permitem à classe de interface acessar os dados e apresenta-los ao usuário, além da classe para acessar o flag de erro, que se estiver ativo, apresentará ao usuário uma mensagem de erro de comunicação. Os métodos de retorno de dados recebem como parâmetro o endereço e retornam os dados convertidos para hexadecimal com o formato caractere. 48

51 5.3 Diagrama de Classe A Figura 5.4 apresenta o Diagrama de Classe do software, com as classes de interface com o usuário (frmmain, frmsalvar, frmexec e frmpasta), montagem de templates (cmont), comunicação (ccom) e acesso à porta paralela (TPorta). frmsalvar -salva : char -btncancelarclick() -btnsimclick () -btnnaoclick() -FormCreate() +getsalva() : char frmexec -com -mont : cmont -btnfecharclick() -btnexecclick () -FormCreate() -FormClose() -FormShow() +set_mont() frmmain -mont : cmont -nomearq : char -arqsalvo : bool -FormCreate() -arqabrirexecute() -arqsalvarexecute() -arqsalvarcomoexecute() -arqnovoexecute() -actsairexecute() -tmpincluirexecute() -tmpexcluirexecute () -arqverificaexecute () -tmpgeramifexecute() -FormClose() -tmpexecutaexecute () +tmpgeramif() +tmpexecuta() frmpasta -pasta : char -btnokclick () -btncancelarclick() +get_pasta() : char ccom -porta : TPorta -mont : cmont -op1e : long -op2e : int -op1r : int -op2r : int -hex : char -errocom: bool -envia_templates() -recebe_templates () -verificacom() -aguarda() -hexa() +ccom(entrada mont : cmont) +~ccom() +executa() : double +get_op1(entrada end : int) : char +get_op2(entrada end : int) : char +get_erro() : bool TPorta +TPorta() +~TPorta() +Recebe(entrada iendporta : int, entrada ibyte : char) +Envia() : char cmont -op1 -op2 -opcode -ckop1 -ckop2 -dest 1 -dest 2 -port1 -port2 -hexa(entrada num : int) : char +cmont() +~cmont() +incluir (entrada end : int, entrada template : char) +excluir (entrada end : int) +salvar (entrada nomearq : char) +abrir(entrada nomearq : char) +geramif() +get_op1(entrada end : int) : char +get_ckop1(entrada end : int) : char +get_op2(entrada end : int) : char +get_ckop2(entrada end : int) : char +get_opcode(entrada end : int) : char +get_dest1(entrada end : int) : char +get_port1(entrada end : int) : char +get_dest2(entrada end : int) : char +get_oprt2(entrada end : int) : char +get_opcode_num(entrada end : int) : int Figura 5.4 Diagrama de classe do software Montador. 49

52 6 Viabilidade Técnico-Econômica A análise de custo do projeto depende da quantia de EPs que se deseja utilizar, considerando-se uma das limitações da máquina: o número de EPs deve ser uma potência de 2, portanto, para utilizar mais que 16 EPs, deve-se utilizar 32, 64 e assim por diante. O projeto com 16 EPs consome 27% dos elementos lógicos do FPGA EP2CF672C6. Outra ponto que deve-se observar é que o consumo de recursos com 32 EPs é maior que o dobro do consumo com 16 EPs, portanto, esse FPGA suportaria no máximo 32 EPs. Outra questão é a utilização de uma placa original da Altera, com diversos recursos não utilizados, ou a implementação de uma placa apenas com o FPGA e os recursos necessários, que deve reduzir os custos, mas aumenta significativamente o tempo de desenvolvimento. A placa DE2 adquirida diretamente com a Altera custaria U$ 270,00 na versão educacional ou U$ 495,00 na versão comercial, ou respectivamente R$ 578,00 e R$ 1.059,30 mais as despesas de importação. O FPGA avulso custa U$ 149,00 diretamente com a Altera, ou R$ 318,00. O único custo além do FPGA e placa é o cabo de comunicação, em torno de R$ 15,00. Não estão contabilizados os preços de outros recursos necessários ao desenvolvimento do projeto, que seriam o computador PC e as licenças dos softwares utilizados para o desenvolvimento: Quartus II e Borland C++ Builder. O tempo de desenvolvimento também não foi contabilizado, em torno de horas. A produção em grande quantidade poderia reduzir os custos do projeto para maior número de EPs, talvez na forma de ASIC, pois apesar de o uso de FPGA s reduzir muito o custo de desenvolvimento, na produção em larga escala a utilização de ASIC pode ter custo menor. Essa não é a maior preocupação do projeto, o objetivo é conseguir o maior ganho de desempenho em relação a máquinas seqüenciais. Ao obter resultados satisfatórios, abrem-se possibilidades para o desenvolvimento de dispositivos para o mercado. 50

53 7 Especificação da Validação e Testes Para a validação do projeto, são necessários os seguintes testes:?? Teste com 1 EP: Esse teste é necessário para avaliar o desempenho da máquina paralela com 1 EP, para obter os dados necessários para observar o ganho de desempenho com mais EPs. Deve ser feito por meio de simulações no Quartus II.?? Teste com vários EPs em simulação: Com esse teste é possível avaliar se a máquina paralela possui desempenho crescente com o aumento do número de EPs, e assim obter o speedup. Realizado também por simulações.?? Teste em FPGA: Esse teste deve ser feito com a máquina paralela em FPGA, e não por meio de simulações no computador. Pode ser utilizado um grande número de operações, ao contrário dos testes em simulação.?? Testes de desempenho: Os testes de desempenho devem ser realizados de várias formas: com instruções independentes, para testar o desempenho máximo da arquitetura; com dependências entre as instruções e com aplicações reais. Os testes devem ser feitos com número variável de EPs, para verificar o ganho de desempenho. Para a validação do projeto, deve-se levar em conta os seus diferenciais em relação a outras arquiteturas multiprocessadas. Muitas arquiteturas são construídas com processadores disponíveis no mercado, portanto, com o seu funcionamento adaptado para o processamento paralelo. Nos casos onde o processador é projetado para a máquina paralela, deve ser feito visando à aplicação e o máximo paralelismo, assim o funcionamento geral da máquina pode ser otimizado. Neste projeto, os elementos processadores são projetados especificamente para a arquitetura, assim pode-se conseguir melhor desempenho para a aplicação desejada em relação ao uso de processadores comerciais. 51

54 8 Cronograma O desenvolvimento do projeto seguiu os seguintes passos:?? Implementação da máquina paralela no Quartus II e simulações;?? Implementação do software Montador;?? Implementação da comunicação, incluindo cabo, software e componente VHDL no Quartus;?? Testes de desempenho e otimizações do sistema;?? Documentação A Tabela 8.1 apresenta o cronograma de desenvolvimento do projeto. Os passos descritos anteriormente são executados de forma intercalada ao longo da implementação do projeto. Tabela 8.1: Cronograma do desenvolvimento do projeto. mar abr mai jun jul ago set out nov Proposta do projeto Desenvolvimento arquitetura básica Especificação do projeto Incremento de recursos Desenvolvimento software montador Simulações e testes Elaboração da monografia Otimizações Gravação e testes em FPGA Sofware e hardware interface Testes Documentação Preparação para apresentação final dez 52

55 9 Resultados Esta arquitetura foi implementada em um FPGA EP2C35F672C6 da família Cyclone II da Altera, operando em uma freqüência de clock de 50MHz, ou período de 20ns. Os teste foram realizados tendo em vista a realização de cálculos numéricos com ganho crescente de desempenho de acordo com o número de EPs. O tempo de ciclo de execução de um template consome 100ns na maioria dos casos, portanto, esta arquitetura pode executar aproximadamente 10 milhões de operações em um segundo utilizando apenas um EP. Como a arquitetura possui vários EPs operando em paralelo, a taxa de execução aumenta de acordo com o número de EPs que se pode integrar no FPGA. Com o FPGA utilizado, foi possível integrar 16 EPs consumindo apenas 27% dos elementos lógicos, portanto, a arquitetura deve suportar até 32 EPs. O funcionamento da máquina paralela é melhor visualizado por meio de simulações no Quartus II. Foram feitas várias simulações, inclusive do recebimento dos templates (Figura 9.1), da execução da máquina (Figura 9.3) e do envio dos resultados (Figura 9.2). Figura 9.1: Simulação do recebimento dos templates no FPGA. São mostrados 2 dos 256 templates e o sinal de início de processamento ao final da transmissão. Figura 9.2: Simulação do envio dos operandos ao host. São mostrados o envio dos operandos de dois templates. O envio ocorre depois do sinal de FIM. 53

56 (a) (b) (c) Figura 9.3: Simulação da execução da máquina paralela no cálculo de (4+10)-(3+2)+(6+5-3). (a) Início e execução dos primeiros templates. (b) Execução dos dois templates seguintes. (b) Execução do último template e finalização. Foram realizados testes de desempenho da máquina paralela com 1, 2, 3 e 4 EPs na arquitetura com 4 EPs, e com 4, 8, 12 e 16 EPs na arquitetura com 16 EPs, observando o tempo de processamento em cada caso. O teste de desempenho foi realizado com 32 instruções, todas independentes entre si. Esse teste foi feito com todas as instruções da máquina paralela (aritméticas, lógicas, relacionais, condicional, duplica e fim), todas com 1 destino, ou seja, todas as instruções consomem 4 ciclos de clock no EP, ou 6 ciclos de clock para cada ciclo de máquina total. O resultado apresenta-se no gráfico da Figura 9.4 para 1, 2, 3 e 4 EPs e na Figura 9.5 para 4, 8, 12 e 16 EPs. Os teste realizados correspondem a operações aritméticas de números com ponto fixo com resolução de 32bits. 54

57 Tempo em us 3 2,5 2 1,5 1 0,5 0 Tempo Medido Ideal Número de EPs Figura 9.4: Desempenho com 32 instruções independentes da arquitetura com 4 EPs. Tempo em us 3 2,5 2 1,5 1 0,5 0 Tempo Medido Ideal Número de EPs (b) Figura 9.5: Desempenho com 32 instruções independentes da arquitetura com 16 EPs. A Tabela 9.1 apresenta os dados dos gráficos numericamente, bem como a relação entre o tempo de processamento medido e o tempo ideal. Se mais do que quatro EPs forem testados na arquitetura da Figura 9.4 ou mais que dezesseis na arquitetura da Figura 9.5 o desempenho ficará constante. Isso se deve ao fato de que a Unidade de Despacho e a Unidade de Armazenamento consomem um ciclo de clock cada. Portanto se houverem mais EPs, a cada ciclo de clock um ou mais EPs ficará aguardando uma instrução, portanto, para utilizar mais EPs, deve-se criar novas seções de memória, com mais Unidades de Despacho e Armazenamento e mais registradores de saída nos EPs. 55

58 Tabela 9.1: Desempenho com 32 instruções independentes e relação entre tempo ideal e medido. Número EPs Tempo Medido Tempo Ideal Ideal / Medido (%) 2 1,36 1, ,01 0, ,83 0, ,55 0, ,46 0, ,42 0,16 39 Para aumentar o número de EPs com poucas alterações na arquitetura, deve-se utilizar potências de 2 como número de EPs, por exemplo 4, 8, 16, 32 ou 64 EPs, pois com múltiplos de 2 a codificação do endereçamento é mais simples, por se tratar de uma divisão (endereço original dividido pelo número de seções de memória). Por exemplo, na divisão por 2 apenas retira-se o bit menos significativo e o utiliza para selecionar a seção de memória (2 seções de memória). Na arquitetura com 16 EPs, a codificação do endereço é feita com a divisão por 4, a qual apenas retira-se os dois bits menos significativos e os utiliza para selecionar entre as 4 seções de memória. Outro dado importante é a speedup, que é a razão entre o tempo de execução com um EP e o tempo de execução com vários EPs. As Figuras 9.5 e 9.6 apresentam o speedup em relação ao número de EPs. Speedup com 4 EPs Número de EPs Figura 9.6: Speedup da arquitetura com 4 EPs. 56

59 Speedup com 15 EPs Número de EPs Figura 9.6: Speedup da arquitetura com 16 EPs. 57

60 10 Conclusão e Trabalhos Futuros Este projeto mostra o potencial da computação reconfigurável e de linguagens de descrição de hardware no desenvolvimento de arquiteturas de computadores. Projetos que seriam inviáveis tornam-se possíveis com a utilização de ferramentas que exploram o potencial dessa tecnologia. No desenvolvimento deste projeto, utilizou-se o software Quartus II, da Altera. Por meio dessa ferramenta, as unidades principais do projeto foram desenvolvidas em VHDL e integradas interligando graficamente seus blocos lógicos. Essa ferramenta permite a simulação do funcionamento e a visualização de possíveis erros de projeto, antes da implementação física. O ganho de produtividade gera flexibilidade no desenvolvimento, permitindo a implementação rápida de soluções e verificação dos resultados, que se não forem satisfatórios, podem ser modificadas ou descartadas sem grandes prejuízos no desenvolvimento do projeto. A arquitetura desenvolvida visa o ganho de desempenho computacional aproveitando-se do paralelismo existente em certas aplicações. A aplicação em vista é a resolução de métodos numérico, cujo processamento pode ser otimizado por meio do modelo de fluxo de dados. O modelo de fluxo de dados permite obter o máximo paralelismo da aplicação, dentro dos limites impostos pelas dependências entre as instruções. Os resultados obtidos mostram o potencial da arquitetura para executar instruções em paralelo. Obteve-se um bom ganho de desempenho em relação ao número de EPs, mas dependendo da aplicação podem ocorrer gargalos que prejudicam o ganho. Muitas soluções ainda podem ser implementadas à arquitetura para eliminar ou reduzir os gargalos. Durante o desenvolvimento da arquitetura, verificou-se que o paralelismo entre vários elementos processadores era limitado pelo acesso à memória RAM. Originalmente era feito um acesso à memória por ciclo de clock e um armazenamento a cada dois ciclos. O maior gargalo nesse caso era o armazenamento, portanto foi criada uma memória para cada campo dos templates e duas Unidades de Armazenamento, permitindo assim dois armazenamentos simultâneos a cada ciclo de clock, pois apenas uma unidade não era suficiente para solucionar esse gargalo. 58

61 Após essa alteração, verificou-se que a arquitetura não ganhava desempenho com mais que quatro EPs. Isso ocorria porque um EP era alimentado com dados a cada ciclo, portanto, quando havia mais que quatro EPs, alguns ficavam inativos em períodos de tempo por falta de dados. Por isso, concluiu-se que o desempenho máximo era obtido quando o número de EPs era igual à quantia de ciclos de clock no seu ciclo de máquina, como os EPs consomem quatro ciclos de clock, o desempenho máximo era obtido utilizando-se quatro EPs. Para resolver o problema, a memória foi dividida em seções, para permitir despachos e armazenamentos simultâneos. Os dois tipos de divisão de memória permitiram à arquitetura obter ganho de desempenho com número indeterminado de EPs. A arquitetura foi testada com até 16 EPs, e neste caso, a Unidade de Memória possui 20 módulos de memórias RAM, que são quatro seções com cinco memórias cada. Com a memória implementada dessa forma, disponibilizou-se um número grande de portas de escrita e leitura, permitindo que o fluxo de dados ocorra com o mínimo de gargalos. Como citado anteriormente, os gargalos podem aparecer dependendo da aplicação. Diversas outras soluções poderiam ser implementadas para aumentar o desempenho dessa arquitetura e assim aproximar-se do ideal, principalmente no que se refere às dependências entre as instruções de certas aplicações. Entretanto, em processamento paralelo não existe solução definitiva para conseguir o paralelismo ideal. Outros recursos poderiam ser implementados nessa arquitetura, por exemplo, o processamento de dados de 32 bits e ponto flutuante. Poderiam ser incluídas novas instruções, para atender a outras aplicações com potencial para se beneficiar do modelo de fluxo de dados. 59

62 11 Referências Bibliográficas Altera's DE2 Development & Education Board, - 06/11/2006. BARR, M. Programmable Logic: What's it to Ya?. Embedded Systems Programming, CULLER, D. E.; Singh, J, P. Parallel Computer Architecture. San Francisco, Morgan Kaufmenn Publisher, FERLIN, E. P. Proposta de uma Arquitetura Paralela de Alto Desempenho Aplicada a Métodos Numéricos. Curitiba, MESSIAS, A. R. Introdução à Porta Paralela /11/2006. PEDRONI, V.A., Circuit design with VHDL. MIT Press: Massachusetts, PERRY, D. L. VHDL Programming by Example. New York: McGraw-Hill, ROTH, C. H. Digital Systems design using VHDL. Boston, PWS Publishing, TANENBAUM, A. S. Organização Estruturada de Computadores. Rio de Janeiro, LTC, YALAMANCHILI, S. VHDL starter's guide. Upper Saddle River, New Jersey, Prentice Hall,

63 Anexo I Artigo MÁQUINA PARALELA RECONFIGURÁVEL BASEADA EM FLUXO DE DADOS Maurício Vitor Brodzinski 1, Edson Pedro Ferlin 2 (Orientador) 2 Resumo. Com a crescente demanda por capacidade de processamento nas mais diversas áreas, pesquisas na área de processamento paralelo são cada vez mais intensas. O processamento paralelo existe em sistemas com vários processadores operando simultaneamente sobre as mesmas tarefas. A máquina paralela deste projeto é desenvolvida por meio da computação reconfigurável, utilizando-se FPGA, que é um dos tipos de dispositivos lógico programáveis, os quais permitem que o projeto seja implementado sem a necessidade de construção física dos componentes, aumentando a produtividade e a flexibilidade no desenvolvimento do projeto. A arquitetura do projeto é desenvolvida baseada no modelo de fluxo de dados, que permite aproveitar o paralelismo entre as operações da aplicação, que neste caso é a resolução de métodos numéricos. O projeto visa obter um ganho crescente de desempenho de acordo com o número de elementos processadores. A entrada e saída de dados é feita por um computador (host), o qual possui um software para gerar as operações a serem processadas na máquina paralela; e software de comunicação, para enviar as operações do host à máquina paralela e apresentar ao usuário os resultados do processamento. Abstract. With the increasing demand for capacity of processing in the most several areas, research in the parallel processing area is getting more intense. Parallel processing is related to computers with several processors operating in cooperative mode. The parallel machine of this project is developed by reconfigurable computing, by using FPGA, which is one type of programmable logic device, which allow that the project be build without need of physical construction of the components, increasing the productivity and flexibility of the project development. The parallel architecture of this project is constructed based in the data flow model, which allows using parallelism between the operations of the application; witch in this case is the resolution of numerical methods. The project s architecture is developed in basis of data flow model, which allow using the parallelism between the operations of the application, that in this case it s the resolution of numerical methods. The project aims to get increasing gain of performance according by the number of processor elements. The data in/out is made by a computer (host), which has a software to generate the operations that will be processed in the parallel machine; and communication software, to send the operations from host to parallel machine and to show the results of processing to the user. 1. INTRODUÇÃO Embora os computadores estejam cada vez mais velozes (TANENBAUM, 2001), as exigências sobre eles crescem mais rapidamente do que a sua capacidade de processamento. Apesar da grande potência computacional disponível nos computadores utilizados nos mais diferentes ramos de atividade, ela não é suficiente para muitas aplicações, especialmente na ciência, na engenharia e na indústria. A velocidade de operação dos processadores está sempre crescendo, mas não podem continuar assim indefinidamente, pois existem limitações físicas que em algum momento impedirão a evolução dos processadores como é feito atualmente. Em razão disso, os projetistas de computadores estão se voltando cada vez mais para os computadores paralelos, em busca de arquiteturas de computadores que utilizam vários processadores operando em paralelo para obter ganho de desempenho em relação a computadores que operam por meio de um único processador. O objetivo do projeto é o desenvolvimento de uma arquitetura de computador com vários elementos processadores operando em paralelo a fim de obter um ganho crescente de desempenho em relação a computadores seqüenciais (computadores com apenas um processador, cujo processamento é feito de forma seqüencial). Este 1 Concluinte do Curso de Engenharia da Computação UnicenP Rua Prof. Pedro V. P. de Souza, 5300 CEP Curitiba Pr. 2 Professor Orientador do Projeto Final do Curso de Engenharia da Computação UnicenP. 61

64 estudo foi realizado com base no projeto de uma arquitetura de máquina paralela desenvolvida em 2005 e apresentada em FERLIN (2005). O desenvolvimento da máquina paralela é feito utilizando-se a computação reconfigurável, onde se utilizam circuitos integrados programáveis, que podem ser programados com a lógica desejada, por meio de um software que permite fazer o projeto de lógica digital. Os circuitos integrados programáveis são chamados de PLDs (Programmable Logic Devices, ou Dispositivos Lógicos Programáveis). O projeto é feito com a linguagem VHDL, que é um dos tipos de HDL (Hardware Description Language, ou Linguagem de Descrição de Hardware), e posteriormente é feita a programação no FPGA (Field Prigrammable Gate Array), que é um dos tipos de PLDs. A máquina paralela é desenvolvida baseada no modelo de Fluxo de Dados. Esse modelo visa explorar o paralelismo entre as operações de um programa. Para conseguir isso, as operações são organizadas na forma de pacotes, que são distribuídos aos processadores, assim não existem variáveis, pois todos os dados do processamento estão nos pacotes. Os resultados dos pacotes processados são usados como valores de entrada a outros pacotes, portanto, todo o processamento pode ser representado por um grafo, e assim é possível visualizar o paralelismo possível de ser obtido, de acordo com as limitações impostas pelas dependências entre as operações. A máquina paralela consiste em um número variável de EPs (Elementos Processadores), unidade de memória RAM ou memória de templates (pacotes), unidades de despacho (leitura na memória e gravação nos EPs) e armazenamento (leitura nos EPs e gravação na memória). Os Elementos Processadores são assim chamados por não se tratar de processadores completos, pois parte da operação é feita pelas unidades de despacho e armazenamento. A máquina paralela realiza operações aritméticas (soma, subtração, multiplicação e divisão), lógicas, relacionais e condicionais. A máquina paralela pode ser aplicada à resolução de equações e cálculo numérico. A entrada e saída de dados são feitas por meio de um computador, que possui software montador de templates e de comunicação com a máquina paralela. O usuário pode programar as operações da máquina paralela por meio do software montador e envia-los à máquina por meio de software comunicador, que ativa o processamento e posteriormente recebe os resultados. A interface entre o computador e a máquina paralela é feita pela porta paralela do computador, por meio de um protocolo desenvolvido em linguagem C++ no computador e em VHDL no FPGA. 2. ESTUDO TEÓRICO 2.1. Processamento Paralelo Apesar do grande avanço na velocidade dos computadores obtida nas últimas décadas, a demanda por poder de computação é sempre crescente. Os cientistas desejam fazer simulações de fenômenos físicos, a meteorologia necessita de simulações do tempo para obter precisão nas previsões. Os engenheiros desejam fazer simulações dos seus projetos em computador ao invés de construir protótipos e testa-los fisicamente, a crescente utilização da Internet e sistemas distribuídos necessita de servidores poderosos, a indústria do entretenimento deseja produzir jogos e aplicações multimídia cada vez mais realistas. Para atender a essa demanda por computação, a velocidade de operação dos processadores é sempre crescente, mas não pode continuar assim indefinidamente, pois existem limitações físicas que impedem o aumento contínuo da velocidade dos processadores, como a velocidade dos sinais elétricos, e a dissipação do calor, um problema que se agrava com o aumento de velocidade de operação dos processadores. Em razão disso, é cada vez mais intenso o desenvolvimento de computadores paralelos. Para ilustrar a utilização de sistemas paralelos, uma aplicação necessita de um poder de computação 100 vezes maior em relação a um processador típico no mercado, por exemplo, de 1.000MHz. Seria impossível obter um processador de MHz, mas perfeitamente possível construir um computador com 100 processadores de 1.000MHz, que em tese, teria um desempenho igual ou próximo a um computador com freqüência 100 vezes maior. A arquitetura de um computador paralelo é muito mais complexa que um computador monoprocessado, e precisa ser desenvolvido tendo em vista a sua aplicação. Uma aplicação onde as tarefas nada têm a ver umas com as outras, por exemplo, um grande servidor de rede, deve ter uma arquitetura muito diferente de uma aplicação onde todos os processadores são dedicados à mesma tarefa. Esses dois tipos de aplicação diferem no que chama-se de granularidade (TANENBAUM, 2001). Em sistemas com pouca ou nenhuma comunicação entre os programas que rodam em paralelo, dizemos que possui granularidade alta. No lado oposto, sistemas onde os processadores são dedicados a resolver o mesmo problema em paralelo, diz-se que possui granularidade baixa (ou fina). Com relação ao hardware, pode-se classificar os sistemas paralelos em dois grupos (TANENBAUM, 2001). Em sistemas que possuem uma pequena quantidade de processadores poderosos e com pouca conectividade entre si, chama-se de sistemas fracamente acoplados. Em sistema com uma grande quantidade de processadores de pouca capacidade e com muita interação entre eles, chama-se de sistemas fortemente acoplados. Poderíamos supor que para aplicações de granularidade alta seja mais eficiente um sistema fracamente acoplado, e para aplicações de granularidade baixa, sistemas fortemente acoplados. Na verdade, devido à grande diversidade de aplicações, algoritmos e hardware, o assunto merece atenção especial em cada caso. Em qualquer tipo de sistema de processamento paralelo (TANENBAUM, 2001), os processadores que estiverem trabalhando nas diferentes partes de uma mesma tarefa precisam se comunicar entre si para poder trocar 62

65 informações. Existem duas filosofias de projeto, os sistemas multiprocessadores e os sistemas multicomputadores. A Figura 2.1 mostra os dois sistemas.?? Multiprocessadores: também conhecido por sistema de memória compartilhada, onde os processadores compartilham uma mesma memória física. Todos os processos que trabalham juntos podem compartilhar um único espaço de endereçamento virtual mapeado na memória física comum a eles. Dois processos podem se comunicar escrevendo/lendo dados na memória compartilhada. O modelo é simples, e pode ser entendido com facilidade por programadores.?? Multicomputadores: também conhecido por sistema de memória distribuída, onde cada processador tem sua própria memória, acessível somente pelo processador proprietário e nunca diretamente por qualquer outro processador do sistema. Os multicomputadores são freqüentemente fracamente acoplados. Nesse sistema, a comunicação entre processos se faz por troca de mensagem, implementada por software, e faz com que a divisão de instruções entre os processadores se torne uma tarefa complexa, portanto, sistemas multicomputadores são mais difíceis de programar. Entretanto, a sua construção é mais simples e barata, já que a implementação de compartilhamento de memória em um número grande de processadores é uma tarefa difícil Computação Reconfigurável A Computação Reconfigurável tem por objetivo a utilização de dispositivos lógicos programáveis (PLD Programmable Logic Devices) para dispensar a construção de circuitos digitais específicos à aplicação, ou dispensar a utilização de processadores, geralmente não otimizados para a aplicação desejada. A computação reconfigurável pode ser entendida como uma solução intermediária entre ASIC (Application-Specific Integrated Circuits) e microprocessadores, combinando vantagens das duas áreas. As arquiteturas reconfiguráveis ou arquiteturas de sistemas computacionais reconfiguráveis são aquelas onde se utilizam os conceitos de reconfigurabilidade e se implementam as técnicas de reconfiguração. Ou seja, são as arquiteturas onde os blocos lógicos podem ser reconfigurados, na sua lógica e funcionalidade interna, e os blocos de interconexão, responsáveis pela interligação destes blocos lógicos, também podem ser reconfigurados. Estes blocos lógicos normalmente implementam ou são as unidades funcionais de processamento, armazenamento, comunicação ou entrada e saída de dados (FERLIN, 2005). A história da computação reconfigurável começou com as memórias PROM (Programmable Read Only Memory), e posteriormente com dispositivos PAL (Programmable Array Logic) e PLA (Programmable Logic Array). Na década de 80 foram lançados os primeiros PLDs, que deram origem às tecnologias CPLD (Complex Programmable Array Logic) e FPGA (Field Programmable Gate Array). Atualmente no mercado podemos encontrar três tipos de FPGAs quanto à sua tecnologia de construção, onde cada um terá melhor desempenho dependendo da aplicação para a qual o mesmo será utilizado. Os três tipos são:?? RAM Estática: PLD na qual suas conexões entre as portas são feitas entre blocos lógicos por meio de portas de transmissão ou multiplexadores controladas por células SRAM. Tem como vantagem a possibilidade de ser rapidamente configurada, porém exige hardware externo auxiliar que deve ser montado junto com os blocos lógicos.?? Transistores de Passagem: Essa é uma opção mais barata que a opção de RAM estática, composta por uma grande concentração de transistores que são configurados em modo de corte ou modo de condução.??eprom/eeprom: Baseada na tecnologia de criação de memórias EPROM/EEPROM. Sua principal vantagem é permitir a reprogramação sem que se precise armazenar a configuração externa. 3. DESCRIÇÃO DO PROJETO O projeto consiste em uma arquitetura de computador multiprocessador, implementada em VHDL e executada em FPGA. O projeto inclui um computador, que se comunica com o FPGA pela porta paralela, dessa forma, o computador faz a interface com o usuário e a entrada e saída de dados. A máquina paralela é construída no baseada no modelo de fluxo de dados, que possibilita aproveitar o máximo paralelismo existente em certas aplicações. Nesse modelo, as instruções são organizadas na forma de templates (pacotes), que possuem campos como operandos e endereços de destino. Os templates não são executados necessariamente na ordem em que se encontram na memória, basta que tenham os operandos disponíveis, podem ser enviados para processamento. A máquina paralela é implementada no FPGA, pois este dispensa a sua construção física com componentes discretos. Os templates são recebidos pelo computador, e enviados novamente ao término do processamento. A máquina é implementada com diversos EPs e unidades que controlam o fluxo de dados, como mostra a Figura 1. A memória RAM armazena os templates e os resultados do processamento. A Unidade de Despacho faz a leitura da memória e a gravação nos EPs. A Unidade de Armazenamento faz a busca de EPs com dados prontos e o armazenamento dos resultados na memória. Os elementos processadores executam as quatro operações aritméticas, lógicas, relacionais, condicionais, duplica dados e parada (finaliza o processamento). 63

66 Host RAM Despacho Armazena mento EP1 EP2 EPn Figura 1: Visão geral da máquina paralela. O funcionamento da máquina paralela ocorre basicamente da seguinte forma: a Unidade de Despacho faz a leitura da memória em busca de templates prontos, ou seja, templates com os seus operandos disponíveis; a cada template pronto encontrado, é gravado no próximo EP disponível. Templates que não estejam prontos serão verificados novamente no próximo ciclo de busca da Unidade de Despacho. Os EPs possuem uma fila de entrada, onde ficam armazenados os templates enviados pela Unidade de Despacho. O EP faz a leitura do próximo template na fila, a decodificação, execução e armazena o resultado e endereço de destino em uma das duas filas de saída. A Unidade de Armazenamento busca EPs cujas filas de saída possuem dados prontos, faz a leitura das dessas filas e gravação na memória, tornando assim outros templates prontos para o despacho e armazenando as respostas finais do processamento. A arquitetura aumenta o desempenho para até quatro EPs e se mantém constante a partir disso. Para obter ganho de desempenho com mais EPs, é preciso criar seções de memória, para aumentar o número de portas de escrita e leitura e assim alimentar todos os EPs com dados, sem que fiquem desocupados. Portanto, para cada quatro EPs, existe uma memória RAM, uma Unidade de Despacho e duas Unidades de Armazenamento. Existem duas versões do projeto: uma com quatro e outra com dezesseis EPs. A primeira permite fazer testes com 1, 2, 3 ou 4 EPs. A segunda versão permite testes com 4, 8, 12 ou 16 EPs. O computador possui o software montador de templates, o qual o usuário utiliza para gerar as instruções que serão executadas pela máquina paralela. Com os templates prontos no software montador, o usuário aciona a execução, que se inicia pela transferência dos templates do computador (host) ao FPGA pela porta paralela, por meio de um protocolo desenvolvido em C++ no computador e em VHDL no FPGA. Terminada a transferência, o processamento é executado na máquina paralela e o computador aguarda o fim. Ao término do processamento, o FPGA envia o sinal de início de transferência, em seguida são enviados os operandos de todos os templates. 3. RESULTADOS Esta arquitetura foi implementada em um FPGA EP2C35F672C6 da família Cyclone II da Altera, operando em uma freqüência de clock de 50MHz, ou período de 20ns. Os teste foram realizados tendo em vista a realização de cálculos numéricos com ganho crescente de desempenho de acordo com o número de EPs. O tempo de ciclo de execução de um template consome 100ns na maioria dos casos, portanto, esta arquitetura pode executar aproximadamente 10 milhões de operações em um segundo utilizando apenas um EP. Como a arquitetura possui vários EPs operando em paralelo, a taxa de execução aumenta de acordo com o número de EPs que se pode integrar no FPGA. Com o FPGA utilizado, foi possível integrar 16 EPs consumindo apenas 27% dos elementos lógicos, portanto, a arquitetura deve suportar até 32 EPs, pois esta ocuparia mais que o dobro do consumo com 16, pela necessidade de dobrar a quantia de registradores de saída em cada um dos EPs. Foram realizados testes de desempenho da máquina paralela com 1, 2, 3 e 4 EPs na arquitetura com 4 EPs, e com 4, 8, 12 e 16 EPs na arquitetura com 16 EPs, observando o tempo de processamento em cada caso. O teste de desempenho foi realizado com 32 instruções, todas independentes entre si. Esse teste foi feito com todas as instruções com 1 destino, ou seja, todas as instruções consomem 4 ciclos de clock no EP, ou 6 ciclos de clock para cada ciclo de máquina total da máquina paralela. O resultado apresenta-se nos gráficos das Figuras 2 e 3. O speedup (razão entre tempo de processamento com 1 processador e com vários processadores) apresenta-se nas Figuras 4 e 5. Para aumentar o número de EPs com poucas alterações na arquitetura, deve-se utilizar potências de 2 como número de EPs, por exemplo 4, 8, 16, 32 ou 64 EPs, pois com múltiplos de 2 a codificação do endereçamento é mais simples, por se tratar de uma divisão (endereço original dividido pelo número de seções de memória). Por exemplo, na arquitetura com 16 EPs, a codificação do endereço é feita com a divisão por 4, a qual apenas retira-se os dois bits menos significativos e os utiliza para selecionar entre as 4 seções de memória. 64

67 Tempo Medido Ideal Número de EPs Figura 2: Desempenho com 32 instruções independentes da arquitetura com 4 EPs. Tempo Tempo em us 3 2,5 2 1,5 1 0,5 0 Medido Ideal Número de EPs Figura 3: Desempenho com 32 instruções independentes da arquitetura com 16 EPs. Speedup Número de EPs Figura 4: Speedup da arquitetura com 4 EPs Speedup Número de EPs Figura 5: Speedup da arquitetura com 16 EPs 65

68 4. CONCLUSÃO Este projeto mostra o potencial da computação reconfigurável e de linguagens de descrição de hardware no desenvolvimento de arquiteturas de computadores. Projetos que seriam inviáveis tornam-se possíveis com a utilização de ferramentas que exploram o potencial dessa tecnologia. No desenvolvimento deste projeto, utilizou-se o software Quartus II, da Altera. Por meio dessa ferramenta, as unidades principais do projeto foram desenvolvidas em VHDL e integradas interligando graficamente seus blocos lógicos. Essa ferramenta permite a simulação do funcionamento e a visualização de possíveis erros de projeto, antes da implementação física. O ganho de produtividade gera flexibilidade no desenvolvimento, permitindo a implementação rápida de soluções e verificação dos resultados, que se não forem satisfatórios, podem ser modificadas ou descartadas sem grandes prejuízos no desenvolvimento do projeto. Os resultados obtidos mostram o potencial da arquitetura para executar instruções em paralelo. Obteve-se um bom ganho de desempenho em relação ao número de EPs, mas dependendo da aplicação podem ocorrer gargalos que prejudicam o ganho. Muitas soluções ainda podem ser implementadas à arquitetura para eliminar ou reduzir os gargalos. Durante o desenvolvimento da arquitetura, verificou-se que o paralelismo entre vários elementos processadores era limitado pelo acesso à memória RAM. Originalmente era feito um acesso à memória por ciclo de clock e um armazenamento a cada dois ciclos. O maior gargalo nesse caso era o armazenamento, portanto foi criada uma memória para cada campo dos templates e duas Unidades de Armazenamento, permitindo assim dois armazenamentos simultâneos a cada ciclo de clock, pois apenas uma unidade não era suficiente para solucionar esse gargalo. Após essa alteração, verificou-se que a arquitetura não ganhava desempenho com mais que quatro EPs. Isso ocorria porque um EP era alimentado com dados a cada ciclo, portanto, quando havia mais que quatro EPs, alguns ficavam inativos em períodos de tempo por falta de dados. Por isso, concluiu-se que o desempenho máximo era obtido quando o número de EPs era igual à quantidade de ciclos de clock no seu ciclo de máquina, com os EPs possuem consomem quatro ciclos de clock, o desempenho máximo era obtido utilizando-se quatro EPs. Para resolver o problema, a memória foi dividida em seções, para permitir despachos simultâneos. Com a memória implementada dessa forma, disponibilizou-se um número grande de portas de escrita e leitura, permitindo que o fluxo de dados ocorra com o mínimo de gargalos. Como citado anteriormente, os gargalos podem aparecer dependendo da aplicação. Diversas outras soluções poderiam ser implementadas para aumentar o desempenho dessa arquitetura e assim aproximar-se do ideal, principalmente no que se refere às dependências entre as instruções de certas aplicações. Entretanto, em processamento paralelo não existe solução definitiva para conseguir o paralelismo ideal. Outros recursos poderiam ser implementados nessa arquitetura, por exemplo, o processamento de dados de 32 bits e ponto flutuante. Poderiam ser incluídas novas instruções, para atender a outras aplicações com potencial para se beneficiar do modelo de fluxo de dados. 5. REFERÊNCIAS BARR, M. Programmable Logic: What's it to Ya?. Embedded Systems Programming, CULLER, D. E.; Singh, J, P. Parallel Computer Architecture. San Francisco, Morgan Kaufmenn Publisher, FERLIN, E. P. Proposta de uma Arquitetura Paralela de Alto Desempenho Aplicada a Métodos Numéricos. Curitiba, PEDRONI, V.A., Circuit design with VHDL. MIT Press: Massachusetts, PERRY, D. L. VHDL Programming by Example. New York: McGraw-Hill, ROTH, C. H. Digital Systems design using VHDL. Boston, PWS Publishing, TANENBAUM, A. S. Organização Estruturada de Computadores. Rio de Janeiro, LTC, YALAMANCHILI, S. VHDL starter's guide. Upper Saddle River, New Jersey, Prentice Hall,

69 Anexo II Manual do Usuário 1. INTRODUÇÃO O Manual do Usuário destina-se a apresentar a instalação, configuração e utilização do sistema, assim como os requisitos de software e hardware e os componentes do sistema. 2. REQUISITOS E COMPONENTES Requisitos de hardware:?? Placa de desenvolvimento Altera DE2;?? Computador PC com interface USB e porta paralela;?? Cabo de comunicação da porta paralela, com uma extremidade com o conector DB-25 macho e na outra extremidade um cabo flat. Requisitos de software:?? Sistema operacional Windows 2000 ou XP;?? Quartus II 5.1 ou superior;?? Driver do cabo USB-Blaster. Componentes do sistema:?? Software Montador de Templates;?? Arquivos das duas versões do projeto da máquina paralela (versão com 4 EPs e versão com 16) a serem utilizados no Quartus II. 3. INSTALAÇÃO E CONFIGURAÇÃO?? Instalação A instalação do sistema é feita apenas pela cópia dos arquivos no disco rígido. Para a utilização do software Montador, é necessário apenas o arquivo executável, que pode ser executado de qualquer mídia, como disco rígido ou CD. Os arquivos do projeto da máquina paralela devem estar armazenados no disco rígido em pastas com permissões para leitura e gravação, pois estes serão utilizados no Quartus II, que faz alterações em alguns arquivos durante a utilização. 67

70 ?? Porta Paralela: A porta paralela deve estar configurada no modo EPP. Essa configuração pode ser acessada no setup do computador.?? Número de EPs: O número de EPs que será utilizado na execução da máquina paralela pode ser selecionado nos switches 0 e 1 da placa DE2. Se os dois estiverem desativados, será utilizado 1 EP para cada seção de memória, se os dois estiverem ativados, serão utilizados os 4 EPs de cada seção de memória.?? Quartus II: As configurações de dispositivo e pinagem são feitas automaticamente pelo software ao abrir o projeto. Uma configuração do Quartus II que pode ser necessária é a alteração do hardware JTAG (interface por onde será feita a programação do FPGA) na tela de programação, que deve ser USB-Blaster. A opção Program/Configure deve estar habilitada e o arquivo de extensão sof deve estar aparecendo no campo File. 3. UTILIZAÇÃO DO SISTEMA usuário: Para a utilização do sistema, os seguintes passos devem ser seguidos pelo 3.1. Execução do software Primeiramente o usuário deve executar o Software Montador de Templates pelo arquivo Montador.exe. Em seguida o usuário deve abrir um arquivo do tipo mnt existente ou criar um novo. Para criar um arquivo novo, basta digitar os campos dos templates e clicar no botão Incluir, o template será incluído no endereço indicado na caixa Endereço. Pode-se incluir um template em um endereço que não esteja vazio, nesse caso este será substituído. Para excluir um template, deve-se indicar o endereço que se deseja excluir na caixa Endereço e clicar no botão Excluir. 68

71 Figura 1: Tela principal do software Montador. Para iniciar a utilização do sistema, o usuário pode também abrir um arquivo existente, no botão Abrir Montagem do hardware Para a execução no FPGA, a placa Altera DE2 deve estar ligada e conectada com o computador pelo cabo USB-Blaster. O cabo da porta paralela deve estar conectado aos pinos de expansão da placa e na porta LPT1 do computador Programação do FPGA O usuário deve escolher qual versão do projeto deseja executar: a versão com 4 EPs ou com 16. O projeto deve ser aberto no Quartus II, em seguida, deve-se clicar no botão de programação do FPGA, ou no menu Tools -> Programmer. 69

72 Figura 2: Botão de programação do FPGA com o projeto aberto no Quartus II. Na tela de programação, mostrada na Figura 3, se o campo Hardware Setup estiver No hardware como na figura, alterar para USB-blaster. Clicar em Start, o FPGA será programado com o projeto. Figura 3: Tela de programação do FPGA no Quartus II. 70

73 3.4. Execução na máquina paralela Para executar o arquivo mnt na máquina paralela, voltar ao software Montador e pressionar o botão Executar. Será apresentada a janela de execução. Figura 4: Janela de execução dos templates na máquina paralela. Se o arquivo mnt aberto não estiver salvo, será apresentada uma mensagem avisando que deve-se salvar o arquivo antes de executa-lo. Clicar no botão Executar da janela de execução. Os templates serão enviados, executados e os operandos lidos da máquina paralela após o processamento serão exibidos na caixa de texto Outros recursos O software possui as funcionalidades básicas para manipulação de arquivos: Novo, Abrir, Salvar e Salvar Como. Isso permite que vários arquivos de templates sejam criados e armazenados em disco. Existe o recurso de gerar arquivos mif. Esses arquivos são utilizados pelo Quartus II como valores iniciais de memórias RAM inseridas no projeto. Esse recurso é utilizado apenas no desenvolvimento do projeto, para fazer testes por meio de simulações no Quartus II. Na versão final do projeto, os dados das memórias são inicializados com zeros, pois os dados vêm do computador (host). Ao clicar no botão 71

74 Gerar MIF, será apresentada uma janela onde o usuário pode escolher o local em que os arquivos serão armazenados. São gerados cinco arquivos com nome padrão, um para cada divisão de memória correspondente aos campos dos templates. Figura 5: Janela exibida ao pressionar o botão Gerar MIF para o usuário escolher o local dos arquivos. 72

INTERFACE RECONFIGURÁVEL PARA ARQUITETURA PARALELA BASEADA EM PROCESSADOR EMBARCADO NIOS II

INTERFACE RECONFIGURÁVEL PARA ARQUITETURA PARALELA BASEADA EM PROCESSADOR EMBARCADO NIOS II CENTRO UNIVERSITÁRIO POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS ENGENHARIA DA COMPUTAÇÃO INTERFACE RECONFIGURÁVEL PARA ARQUITETURA PARALELA BASEADA EM PROCESSADOR EMBARCADO NIOS II UNICENP / NCET

Leia mais

Dispositivos Lógicos Programáveis

Dispositivos Lógicos Programáveis PARTE 1 - TEORIA Dispositivos Lógicos Programáveis Os dispositivos lógicos programáveis (PLD Programmable Logic Device) são circuitos integrados programáveis, que possuem um grande número de portas lógicas,

Leia mais

Dispositivos Lógicos Programáveis

Dispositivos Lógicos Programáveis Dispositivos Lógicos Programáveis Circuitos Lógicos DCC-IM/UFRJ Prof. 2009 1 Família de Sistemas Digitais 2 Comparação: Velocidade e Consumo VLSI Personalizado ASIC Célula-Padrão ASIC Estruturado CPLD

Leia mais

Disciplina: Processamento Digital de Sinais (ENG577) Aula 05 Parte 2: Dispositivos de Hardware Programável Prof.: Eduardo Simas eduardo.simas@ufba.

Disciplina: Processamento Digital de Sinais (ENG577) Aula 05 Parte 2: Dispositivos de Hardware Programável Prof.: Eduardo Simas eduardo.simas@ufba. Universidade Federal da Bahia Escola Politécnica Programa de Pós Graduação em Engenharia Elétrica Disciplina: Processamento Digital de Sinais (ENG577) Aula 05 Parte 2: Dispositivos de Hardware Programável

Leia mais

FPGA Field Programmable Gate Array

FPGA Field Programmable Gate Array Arquitetura de Computadores FPGA Field Programmable Gate Array Alex Vidigal Bastos Sumário Dispositivos Reconfiguráveis Field Programmable Gate Arrays Funcionamento Desenvolvimento Ferramentas Dispositivos

Leia mais

INTERFACE RECONFIGURÁVEL PARA ARQUITETURA PARALELA BASEADA EM PROCESSADOR EMBARCADO NIOS II

INTERFACE RECONFIGURÁVEL PARA ARQUITETURA PARALELA BASEADA EM PROCESSADOR EMBARCADO NIOS II INTERFACE RECONFIGURÁVEL PARA ARQUITETURA PARALELA BASEADA EM PROCESSADOR EMBARCADO NIOS II Antonio Edson Ceccon Concluinte - Engenharia da Computação - UnicenP/Centro Universitário Positivo cecconae@ig.com.br

Leia mais

Sistemas Digitais. Módulo 15 Prof. Celso PLD - DISPOSITIVOS LÓGICOS PROGRAMÁVEIS

Sistemas Digitais. Módulo 15 Prof. Celso PLD - DISPOSITIVOS LÓGICOS PROGRAMÁVEIS 1 PLD - DISPOSITIVOS LÓGICOS PROGRAMÁVEIS Os projetos com circuitos digitais mais complexos podem se tornar inviáveis devido a vários problemas, tais como: - Elevado número de C.I. (circuitos integrados)

Leia mais

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Curso Superior de Sistemas de Telecomunicações Unidade São José Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Bases tecnológicas Dispositivos Lógicos Programáveis. Introdução à Tecnologia

Leia mais

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Curso Superior de Sistemas de Telecomunicações Unidade São José Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Bases tecnológicas Dispositivos Lógicos Programáveis. Introdução à Tecnologia

Leia mais

Eletrônica Digital para Instrumentação. Prof: Herman Lima Jr hlima@cbpf.br

Eletrônica Digital para Instrumentação. Prof: Herman Lima Jr hlima@cbpf.br G03 Eletrônica Digital para Instrumentação Prof: hlima@cbpf.br Centro Brasileiro de Pesquisas Físicas Ministério da Ciência, Tecnologia e Inovação (MCTI) Eletrônica Digital para Instrumentação Objetivo

Leia mais

Os dispositivos lógicos programáveis (PLD Programmable Logic Device) são circuitos integrados programáveis pelo usuário, que

Os dispositivos lógicos programáveis (PLD Programmable Logic Device) são circuitos integrados programáveis pelo usuário, que Dispositivos Lógicos Programáveis (PLD) Os dispositivos lógicos programáveis (PLD Programmable Logic Device) são circuitos integrados programáveis pelo usuário, que possui um grande número de portas lógicas

Leia mais

IMPLEMENTAÇÃO DE CONTROLADOR LÓGICO BASEADO EM LÓGICA PROGRAMÁVEL ESTRUTURADA ( FPGA) Resumo

IMPLEMENTAÇÃO DE CONTROLADOR LÓGICO BASEADO EM LÓGICA PROGRAMÁVEL ESTRUTURADA ( FPGA) Resumo IMPLEMENTAÇÃO DE CONTROLADOR LÓGICO BASEADO EM LÓGICA PROGRAMÁVEL ESTRUTURADA ( FPGA) Cesar da Costa Cost036@attglobal.net UNITAU Universidade de Taubaté Departamento de Engenharia Mecânica Pós-Graduação

Leia mais

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui. 3 Tecnologia FPGA Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui. 3.1. FPGA: Histórico, linguagens e blocos Muitos dos

Leia mais

Arquitetura de Computadores Circuitos Combinacionais, Circuitos Sequênciais e Organização de Memória

Arquitetura de Computadores Circuitos Combinacionais, Circuitos Sequênciais e Organização de Memória Introdução Arquitetura de Computadores Circuitos Combinacionais, Circuitos Sequênciais e O Nível de lógica digital é o nível mais baixo da Arquitetura. Responsável pela interpretação de instruções do nível

Leia mais

Capítulo 8 Arquitetura de Computadores Paralelos

Capítulo 8 Arquitetura de Computadores Paralelos Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Fernando Fonseca Ramos Faculdade de Ciência e Tecnologia de Montes Claros Fundação Educacional Montes Claros 1 Índice 1- Introdução 3- Memórias 4- Dispositivos

Leia mais

Arquitetura de Computadores. Arquitetura de Computadores 1

Arquitetura de Computadores. Arquitetura de Computadores 1 Computadores Computadores 1 Introdução Componentes: Processador; UC; Registradores; ALU s, FPU s, etc. Memória (Sistema de armazenamento de informações; Dispositivo de entrada e saída. Computadores 2 Introdução

Leia mais

Circuitos Lógicos. Profa. Grace S. Deaecto. Faculdade de Engenharia Mecânica / UNICAMP 13083-860, Campinas, SP, Brasil. grace@fem.unicamp.

Circuitos Lógicos. Profa. Grace S. Deaecto. Faculdade de Engenharia Mecânica / UNICAMP 13083-860, Campinas, SP, Brasil. grace@fem.unicamp. Circuitos Lógicos Profa. Grace S. Deaecto Faculdade de Engenharia Mecânica / UNICAMP 13083-860, Campinas, SP, Brasil. grace@fem.unicamp.br Segundo Semestre de 2013 Profa. Grace S. Deaecto ES572 DMC / FEM

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 6 - ARQUITETURAS AVANÇADAS DE COMPUTADORES 1. INTRODUÇÃO As arquiteturas dos processadores têm evoluído ao longo dos anos, e junto com ela o conceito de arquitetura avançada tem se modificado. Nos

Leia mais

SIS17 - Arquitetura de Computadores

SIS17 - Arquitetura de Computadores SIS17 - Arquitetura de Computadores Organização Básica B de Computadores (Parte I) Organização Básica B de Computadores Composição básica b de um Computador eletrônico digital Processador Memória Memória

Leia mais

1 MEMÓRIAS 07/08. como armazenar mais do que um bit? Até ao momento... MEMÓRIA =FLIP- FLOP

1 MEMÓRIAS 07/08. como armazenar mais do que um bit? Até ao momento... MEMÓRIA =FLIP- FLOP Memórias.PLD.PLA.FPGA. Até ao momento... MEMÓRIA =FLIP- FLOP 1 MEMÓRIAS como armazenar mais do que um bit? Coelho, J.P. @ Sistemas Digitais : Y20 Memórias.PLD.PLA.FPGA. 2 como armazenar mais do que uma

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Aula 01 Tecnologias e Perspectiva Histórica Edgar Noda Pré-história Em 1642, Blaise Pascal (1633-1662) construiu uma máquina de calcular mecânica que podia somar

Leia mais

4.a Aula Prática Projeto de um Somador de 16 bits com a Linguagem VHDL

4.a Aula Prática Projeto de um Somador de 16 bits com a Linguagem VHDL 4.a Aula Prática Projeto de um Somador de 16 bits com a Linguagem VHDL Prof. Cesar da Costa VHDL é uma linguagem para descrever sistemas digitais utilizada universalmente. VHDL é proveniente de VHSIC Hardware

Leia mais

Microelectrónica (ME)

Microelectrónica (ME) Microelectrónica (ME) LEEC (opção) Lic. Lic. Engª. AeroEspacial (Aviónica) Tipos de projecto de CIs Marcelino Santos (marcelino.santos@ist.utl.pt) 2004/05 Tipos de projecto de CIs ASIC - Application Specific

Leia mais

GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO

GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO Agosto/2004 V2 INTRODUÇÃO Este guia foi preparado para auxilio às aulas de laboratório para o curso de Engenharia

Leia mais

MEMÓRIAS. Sistemas Digitais II Prof. Marcelo Wendling Set/10

MEMÓRIAS. Sistemas Digitais II Prof. Marcelo Wendling Set/10 MEMÓRIAS Sistemas Digitais II Prof. Marcelo Wendling Set/10 1 Definição São blocos que armazenam informações codificadas digitalmente números, letras, caracteres quaisquer, comandos de operações, endereços

Leia mais

Organização e Arquitetura de Computadores II

Organização e Arquitetura de Computadores II Organização e Arquitetura de Computadores II Rômulo Calado Pantaleão Camara Romulo.camara@univasf.edu.br www.univasf.edu.br/~romulo.camara 60h/02h Disciplinas Correlacionadas Programação Org. e Arq. de

Leia mais

XI Encontro de Iniciação à Docência

XI Encontro de Iniciação à Docência 8CCENDIPET01 SISTEMA DE CONVERSÃO ANALÓGICO DIGITAL DE 12 BITS Yuri Gonzaga Gonçalves da Costa (1), Eduardo Paz Serafim (2), André Ricardo Ciraulo de Souza (2), José Antônio Gomes de Lima (3). Centro de

Leia mais

Dispositivos Lógicos Programáveis (PLD) A. Mariano - 2012 1

Dispositivos Lógicos Programáveis (PLD) A. Mariano - 2012 1 Dispositivos Lógicos Programáveis (PLD) A. Mariano - 2012 1 Agenda Introdução Visão Geral PLD Evolução Arquiteturas Chaves de Programação FPGA vs ASIC Fundamentos FPGA Fluxo de projeto A. Mariano - 2012

Leia mais

O diagrama ASM contém dois elementos básicos: o bloco de estado e o bloco de decisão.

O diagrama ASM contém dois elementos básicos: o bloco de estado e o bloco de decisão. 14 3.2 Projeto da Unidade de Controle (VHDL) 3.2.1 Diagrama ASM (Algorithmic State Machine) ASM é um fluxograma através do qual se representa a seqüência de ações que a unidade de controle de um sistema

Leia mais

- Arquitetura de sistemas digitais- Cap 1 - Introdução

- Arquitetura de sistemas digitais- Cap 1 - Introdução - Arquitetura de sistemas digitais- Cap 1 - Introdução Prof. Alan Petrônio - www.ufsj.edu.br/alan - 2012 Conteúdos/propósitos deste capítulo: 1.1 - Relembrando conceitos 1.2 - Arquitetura de computadores

Leia mais

R S Q 0 0 1 0 1 0 1 0 0 1 1 0 Tabela 17 - Tabela verdade NOR

R S Q 0 0 1 0 1 0 1 0 0 1 1 0 Tabela 17 - Tabela verdade NOR 19 Aula 4 Flip-Flop Flip-flops são circuitos que possuem a característica de manter os bits de saída independente de energia, podem ser considerados os princípios das memórias. Um dos circuitos sequenciais

Leia mais

VHDL Lógica Síncrona. Sinais de Saída. Sinais de Entrada. barreira. carg. VHDL -Lógica Síncrona

VHDL Lógica Síncrona. Sinais de Saída. Sinais de Entrada. barreira. carg. VHDL -Lógica Síncrona VHDL Lógica Síncrona Circuitos combinacionais respondem a estímulos com um atraso que depende de sua implementação Para sincronizar subsistemas em lógica combinacional utiliza-se barreiras temporais, que

Leia mais

Simplifique a complexidade do sistema

Simplifique a complexidade do sistema 1 2 Simplifique a complexidade do sistema Com o novo controlador de alto desempenho CompactRIO Rodrigo Schneiater Engenheiro de Vendas National Instruments Leonardo Lemes Engenheiro de Sistemas National

Leia mais

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados Organização de um Computador Típico Memória: Armazena dados e programas. Processador (CPU - Central Processing

Leia mais

ARQUITETURA DE COMPUTADORES Prof. João Inácio

ARQUITETURA DE COMPUTADORES Prof. João Inácio ARQUITETURA DE COMPUTADORES Prof. João Inácio Memórias Memória: é o componente de um sistema de computação cuja função é armazenar informações que são, foram ou serão manipuladas pelo sistema. Em outras

Leia mais

Prototipação de Sistemas Digitais. Metodologia de Projetos Cristiano Araújo

Prototipação de Sistemas Digitais. Metodologia de Projetos Cristiano Araújo Prototipação de Sistemas Digitais Metodologia de Projetos Cristiano Araújo Fluxo de projeto Emulação/Implementação do componente de harwdare VHDL/Verilog Simulação FPGAs, CPLDs Síntese p/emulação ASICs

Leia mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição. retrospectiva. 2010 Pearson Prentice Hall. Todos os direitos reservados.

William Stallings Arquitetura e Organização de Computadores 8 a Edição. retrospectiva. 2010 Pearson Prentice Hall. Todos os direitos reservados. William Stallings Arquitetura e Organização de Computadores 8 a Edição retrospectiva slide 1 Organização e arquitetura Arquitetura são os atributos visíveis ao programador. Conjunto de instruções, número

Leia mais

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas: Computadores de alto-desempenho são utilizados em diversas áreas: - análise estrutural; - previsão de tempo; - exploração de petróleo; - pesquisa em fusão de energia; - diagnóstico médico; - simulações

Leia mais

Eletrônica Digital para Instrumentação

Eletrônica Digital para Instrumentação G4 Eletrônica Digital para Instrumentação Prof. Márcio Portes de Albuquerque (mpa@cbpf.br) Prof. Herman P. Lima Jr (hlima@cbpf.br) Centro Brasileiro de Pesquisas Físicas Ministério da Ciência e Tecnologia

Leia mais

1. CAPÍTULO COMPUTADORES

1. CAPÍTULO COMPUTADORES 1. CAPÍTULO COMPUTADORES 1.1. Computadores Denomina-se computador uma máquina capaz de executar variados tipos de tratamento automático de informações ou processamento de dados. Os primeiros eram capazes

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 1 Introdução: Um computador é uma máquina (conjunto de partes eletrônicas e eletromecânicas) capaz de sistematicamente coletar, manipular e fornecer resultados da manipulação de dados para um ou mais objetivos.

Leia mais

Introdução a Ciência da Computação Conceitos Básicos de Sistema PROFESSORA CINTIA CAETANO

Introdução a Ciência da Computação Conceitos Básicos de Sistema PROFESSORA CINTIA CAETANO Introdução a Ciência da Computação Conceitos Básicos de Sistema PROFESSORA CINTIA CAETANO Introdução A informática é uma área que atualmente vem evoluindo muito rapidamente. A cada dia se torna mais importante

Leia mais

Portas lógicas e circuitos digitais. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Portas lógicas e circuitos digitais. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Portas lógicas e circuitos digitais Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Tópicos Portas Circuito somador Circuito subtrator flip-flops (registradores)

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 SISTEMA DE INTERCONEXÃO (BARRAMENTOS) Prof. Luiz Gustavo A. Martins Arquitetura de von Newmann Componentes estruturais: Memória Principal Unidade de Processamento Central

Leia mais

IE-344B - Tópicos em Comunicações Leitura Complementar Aula 5: FPGA e Fluxo de Projeto

IE-344B - Tópicos em Comunicações Leitura Complementar Aula 5: FPGA e Fluxo de Projeto IE-344B - Tópicos em Comunicações Leitura Complementar Aula 5: FPGA e Fluxo de Projeto 2º Semestre/2007 Fabbryccio A. C. M. Cardoso Marcelo Augusto Costa Fernandes Prof. Responsável: Dalton S. Arantes

Leia mais

Circuitos Seqüenciais

Circuitos Seqüenciais Circuitos Seqüenciais Circuitos Lógicos DCC-IM/UFRJ Prof. Gabriel P. Silva Circuitos Seqüenciais Um circuito seqüencial síncrono consiste de um circuito combinacional e uma rede de memória formada por

Leia mais

Componentes do Computador e. aula 3. Profa. Débora Matos

Componentes do Computador e. aula 3. Profa. Débora Matos Componentes do Computador e modelo de Von Neumann aula 3 Profa. Débora Matos O que difere nos componentes que constituem um computador? Princípios básicos Cada computador tem um conjunto de operações e

Leia mais

Curso de Engenharia de Computação DESENVOLVIMENTO DE UM PROCESSADOR RISC EM VHDL

Curso de Engenharia de Computação DESENVOLVIMENTO DE UM PROCESSADOR RISC EM VHDL Curso de Engenharia de Computação DESENVOLVIMENTO DE UM PROCESSADOR RISC EM VHDL José Carlos Pereira Itatiba São Paulo Brasil Dezembro de 2006 ii Curso de Engenharia de Computação DESENVOLVIMENTO DE UM

Leia mais

Circuitos de Memória: Tipos e Funcionamento. Fabrício Noveletto

Circuitos de Memória: Tipos e Funcionamento. Fabrício Noveletto Circuitos de Memória: Tipos e Funcionamento Fabrício Noveletto Memória de semicondutores São dispositivos capazes de armazenar informações digitais. A menor unidade de informação que pode ser armazenada

Leia mais

Modelagem de Sistemas com VHDL

Modelagem de Sistemas com VHDL Modelagem de Sistemas com VHDL A abstração empregada por projetistas de sistemas digitais pode ser expressa em dois domínios: No domínio estrutural, um componente é descrito em termos de um conjunto de

Leia mais

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1 Introdução à Organização e Arquitetura de Computadores Prof. Leonardo Barreto Campos 1 Sumário Introdução; Evolução dos Computadores; Considerações da Arquitetura de von Neumann; Execução de uma instrução

Leia mais

ÁREA: CV ( ) CHSA ( ) ECET ( )

ÁREA: CV ( ) CHSA ( ) ECET ( ) ADAPTAÇÃO E INTEGRAÇÃO DO PROCESSADOR RISCO A UMA ARQUITETURA MULTI-CORE PARA SISTEMAS EMBARCADOS DE PROPOSITO GERAL Laysson Oliveira Luz (Bolsista PIBIC/CNPq), Ivan Saraiva Silva (Orientador, Departamento

Leia mais

Microprocessadores e Microcontroladores Prof. Edilson R. R. Kato Simulação do computador SAP-1

Microprocessadores e Microcontroladores Prof. Edilson R. R. Kato Simulação do computador SAP-1 UNIVERSIDADE FEDERAL DE SÃO CARLOS CENTRO DE CIÊNCIAS EXATAS E TECNOLOGIA (CCET) DEPARTAMENTO DE COMPUTAÇÃO Microprocessadores e Microcontroladores Prof. Edilson R. R. Kato Simulação do computador SAP-1

Leia mais

Microprocessadores. Prof. Leonardo Barreto Campos 1

Microprocessadores. Prof. Leonardo Barreto Campos 1 Microprocessadores Prof. Leonardo Barreto Campos 1 Sumário Introdução; Arquitetura de Microprocessadores; Unidade de Controle UC; Unidade Lógica Aritméticas ULA; Arquitetura de von Neumann; Execução de

Leia mais

Arquitetura de Computadores. Ivan Saraiva Silva

Arquitetura de Computadores. Ivan Saraiva Silva Arquitetura de Computadores Introdução Ivan Saraiva Silva Sumário Introdução Bibliografia Recomendada O que é um computador Organização de um Computador Modelo de Von Neumann IAS Máquina de Von Neuman

Leia mais

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP.

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP. A ARQUITETURA DE UM COMPUTADOR A arquitetura básica de um computador moderno segue ainda de forma geral os conceitos estabelecidos pelo Professor da Universidade de Princeton, John Von Neumann (1903-1957),

Leia mais

- Aula 1 - ARQUITETURA DE COMPUTADORES

- Aula 1 - ARQUITETURA DE COMPUTADORES - Aula 1 - ARQUITETURA DE COMPUTADORES Em arquitetura de computadores serão estudados aspectos da estrutura e do funcionamento dos computadores. O objetivo é apresentar de forma clara e abrangente a natureza

Leia mais

Arquitetura e Organização de Computadores I

Arquitetura e Organização de Computadores I Arquitetura e Organização de Computadores I Interrupções e Estrutura de Interconexão Prof. Material adaptado e traduzido de: STALLINGS, William. Arquitetura e Organização de Computadores. 5ª edição Interrupções

Leia mais

Dispositivos Lógicos Programáveis

Dispositivos Lógicos Programáveis unesp UNIVERSIDADE ESTADUAL PAULISTA Campus de Guaratinguetá Colégio Técnico Industrial de Guaratinguetá Professor Carlos Augusto Patrício Amorim Dispositivos Lógicos Programáveis Autores Caio Augusto

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de I Organização Básica B de (Parte V, Complementar)

Leia mais

CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO

CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO O seguinte artigo apresenta uma UCP hipotética construída no software simulador DEMOWARE Digital Works 3.04.39. A UCP (Unidade Central de Processamento)

Leia mais

Computador, transistores, registradores e circuitos integrados

Computador, transistores, registradores e circuitos integrados Computador, transistores, registradores e circuitos integrados 1 Filosofia da disciplina EA869...1 2 Portas lógicas...3 3 Lógica seqüencial...5 4 Flip-flops: um sumário...6 5 Registradores e o computador...8

Leia mais

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de

Leia mais

DISCIPLINA: Sistemas Digitais

DISCIPLINA: Sistemas Digitais DISCIPLINA: Sistemas Digitais Vigência: a partir de 2007/1 Período Letivo: 4º semestre Carga Horária Total: 45h Código: EE.212 Ementa: Implementação Física. Tecnologia de CIs programáveis. FPGA. Atraso

Leia mais

Memórias. O que são Memórias de Semicondutores? São componentes capazes de armazenar informações Binárias (0s e 1s)

Memórias. O que são Memórias de Semicondutores? São componentes capazes de armazenar informações Binárias (0s e 1s) Memórias O que são Memórias de Semicondutores? São componentes capazes de armazenar informações Binárias (0s e 1s) Essas informações são guardadas eletricamente em células individuais. Chamamos cada elemento

Leia mais

Organização de Computadores

Organização de Computadores Organização de Computadores SUMÁRIO Arquitetura e organização de computadores Hardware Software SUMÁRIO Arquitetura e organização de computadores Terminologia básica Hardware Software Arquitetura e organização

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA DISCIPLINAS: CIRCUITOS E SISTEMAS DIGITAIS GUIA PRÁTICO MAX-PLUS II VERSÃO 7.

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA DISCIPLINAS: CIRCUITOS E SISTEMAS DIGITAIS GUIA PRÁTICO MAX-PLUS II VERSÃO 7. UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA DISCIPLINAS: CIRCUITOS E SISTEMAS DIGITAIS GUIA PRÁTICO MAX-PLUS II VERSÃO 7.21 - ESTUDANTE Prof. Dr. José Renes Pinheiro Prof. Dr. Hélio Leães

Leia mais

Arquitetura Genérica

Arquitetura Genérica Arquitetura Genérica Antes de tudo, vamos revisar o Modelo Simplificado do Funcionamento de um Computador. Modelo Simplificado do Funcionamento de um Computador O funcionamento de um computador pode ser

Leia mais

Instituto Tecnológico de Aeronáutica - ITA Divisão de Engenharia Eletrônica Departamento de Eletrônica Aplicada Laboratório de EEA-21

Instituto Tecnológico de Aeronáutica - ITA Divisão de Engenharia Eletrônica Departamento de Eletrônica Aplicada Laboratório de EEA-21 Instituto Tecnológico de Aeronáutica - ITA Divisão de Engenharia Eletrônica Departamento de Eletrônica Aplicada Laboratório de EEA-21 7ª Experiência Síntese de Circuitos Sequenciais Síncronos 1. Objetivos

Leia mais

PROJETO DE CIRCUITOS INTEGRADOS VLSI

PROJETO DE CIRCUITOS INTEGRADOS VLSI Universidade Federal do Piauí Centro de Tecnologia Curso de Engenharia Elétrica PROJETO DE CIRCUITOS INTEGRADOS VLSI Sistemas VLSI Digitais e Dispositivos de Lógica Programável Prof. Marcos Zurita zurita@ufpi.edu.br

Leia mais

Arquitetura de Computadores. Professor: Vilson Heck Junior

Arquitetura de Computadores. Professor: Vilson Heck Junior Arquitetura de Computadores Professor: Vilson Heck Junior Agenda Conceitos Estrutura Funcionamento Arquitetura Tipos Atividades Barramentos Conceitos Como já discutimos, os principais componentes de um

Leia mais

Implementação de um Sistema Digital em VHDL Cronômetro para Jogos de Basquete

Implementação de um Sistema Digital em VHDL Cronômetro para Jogos de Basquete - 1 - V 1.0 - De: 02/maio/2012 por Ney Calazans Laboratório de Organização de Computadores-EC V 3.2 - De: 21/abril/2013 por Fernando Gehm Moraes e Ney Calazans Implementação de um Sistema Digital em VHDL

Leia mais

Processador Aritmético com Arquitetura a Fluxo de Dados RAFAEL GASPERETTI

Processador Aritmético com Arquitetura a Fluxo de Dados RAFAEL GASPERETTI FUNDAÇÃO DE ENSINO "EURÍPIDES SOARES DA ROCHA" CENTRO UNIVERSITÁRIO EURÍPIDES DE MARÍLIA - UNIVEM CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Processador Aritmético com Arquitetura a Fluxo de Dados RAFAEL

Leia mais

Universidade Federal do Piauí Centro de Tecnologia Curso de Engenharia Elétrica. Prof. Marcos Zurita zurita@ufpi.edu.br www.ufpi.

Universidade Federal do Piauí Centro de Tecnologia Curso de Engenharia Elétrica. Prof. Marcos Zurita zurita@ufpi.edu.br www.ufpi. Universidade Federal do Piauí Centro de Tecnologia Curso de Engenharia Elétrica Arquiteturas de Computadores Prof. Marcos Zurita zurita@ufpi.edu.br www.ufpi.br/zurita Teresina - 2012 1. Arquiteturas de

Leia mais

Unidade Central de Processamento

Unidade Central de Processamento Unidade Central de Processamento heloar.alves@gmail.com Site: heloina.com.br 1 CPU A Unidade Central de Processamento (UCP) ou CPU (Central Processing Unit), também conhecida como processador, é responsável

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um

Leia mais

Estrutura de um Computador

Estrutura de um Computador SEL-0415 Introdução à Organização de Computadores Estrutura de um Computador Aula 7 Prof. Dr. Marcelo Andrade da Costa Vieira MODELO DE VON NEUMANN PRINCÍPIOS A arquitetura de um computador consiste de

Leia mais

Edeyson Andrade Gomes

Edeyson Andrade Gomes Sistemas Operacionais Conceitos de Arquitetura Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Máquinas de Níveis Revisão de Conceitos de Arquitetura 2 Máquina de Níveis Máquina de níveis Computador

Leia mais

Arquitetura de Von Neumann e os Computadores Modernos

Arquitetura de Von Neumann e os Computadores Modernos Arquitetura de Von Neumann e os Computadores Modernos Arquitetura de Computadores e Software Básico Aula 5 Flávia Maristela (flaviamsn@ifba.edu.br) Arquitetura de Von Neumann e as máquinas modernas Onde

Leia mais

Estrutura de um Computador. Linguagem de Programação Rone Ilídio UFSJ - CAP

Estrutura de um Computador. Linguagem de Programação Rone Ilídio UFSJ - CAP Estrutura de um Computador Linguagem de Programação Rone Ilídio UFSJ - CAP Hardware e Software HARDWARE: Objetos Físicos que compões o computador Circuitos Integrados, placas, cabos, memórias, dispositivos

Leia mais

DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH

DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH UNIVERSIDADE FEDERAL DO PARANÁ DEPARTAMENTO DE ENGENHARIA ELÉTRICA DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH Projeto para a matéria TE130 Projeto de Circuitos Integrados Digitais, ministrada pelo

Leia mais

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01 Unidade Central de Processamento (CPU) Processador Renan Manola Introdução ao Computador 2010/01 Componentes de um Computador (1) Computador Eletrônico Digital É um sistema composto por: Memória Principal

Leia mais

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Introdução à Organização de Computadores Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 CPU (Central Processing Unit) é o coordenador de todas as atividades

Leia mais

Conceitos de Linguagens de Descrição de Hardware (Verilog, VHDL) Alex Vidigal Bastos alexvbh@gmail.com

Conceitos de Linguagens de Descrição de Hardware (Verilog, VHDL) Alex Vidigal Bastos alexvbh@gmail.com Conceitos de Linguagens de Descrição de Hardware (Verilog, VHDL) 1 Alex Vidigal Bastos alexvbh@gmail.com Objetivos da Aula Apresentar o conceito gerais de Linguagens de Descrição de Hardware (Verilog /

Leia mais

EE610 Eletrônica Digital I

EE610 Eletrônica Digital I EE61 Eletrônica Digital I Prof. Fabiano Fruett Email: fabiano@dsif.fee.unicamp.br 3_b Memórias Semicondutoras 2. Semestre de 27 Memórias 1 Circuitos Integrados Digitais Memórias Semicondutoras Classificação

Leia mais

Aula 1 Introdução a Arquitetura de Computadores

Aula 1 Introdução a Arquitetura de Computadores Aula 1 Introdução a Arquitetura de Computadores Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm Anderson Moreira Arquitetura de Computadores 1 O que fazer com essa

Leia mais

CONHECIMENTOS ESPECÍFICOS

CONHECIMENTOS ESPECÍFICOS CONHECIMENTOS ESPECÍFICOS» CONTROLES E PROCESSOS INDUSTRIAIS (PERFIL 5) «21. Um transistor NMOS, para operar na região de saturação, deve obedecer às seguintes condições: I. A diferença entre a tensão

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 2 - O NÍVEL DA MICROARQUITETURA 1. INTRODUÇÃO Este é o nível cuja função é implementar a camada ISA (Instruction Set Architeture). O seu projeto depende da arquitetura do conjunto das instruções

Leia mais

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas RISC. (Reduced Instructions Set Computers) Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina

Leia mais

EA075 Processadores Dedicados

EA075 Processadores Dedicados EA075 Processadores Dedicados Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato Introdução Processador: circuito digital projetado para

Leia mais

Máquinas Multiníveis

Máquinas Multiníveis Infra-Estrutura de Hardware Máquinas Multiníveis Prof. Edilberto Silva www.edilms.eti.br edilms@yahoo.com Sumário Conceitos básicos Classificação de arquiteturas Tendências da tecnologia Família Pentium

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 3 ARQUITETURA DE VON NEUMANN E DESEMPENHO DE COMPUTADORES Prof. Luiz Gustavo A. Martins Tipos de Arquitetura Arquitetura de von Neumann: Conceito de programa armazenado; Dados

Leia mais

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos Capítulo 8 Sistemas com Múltiplos Processadores 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos 1 Sistemas Multiprocessadores Necessidade contínua de computadores mais rápidos modelo

Leia mais

Aula 24. Circuitos Lógicos Programáveis

Aula 24. Circuitos Lógicos Programáveis Aula 24 Circuitos Lógicos Programáveis 1) Introdução Impulsionado pelo desenvolvimento de novos tipos de sofisticados dispositivos programáveis por campo elétrico (FPDs), o processo de projeto digital

Leia mais

Organização e Arquitetura de Computadores

Organização e Arquitetura de Computadores Organização e Arquitetura de Computadores Entrada e saída Alexandre Amory Edson Moreno Nas Aulas Anteriores Foco na Arquitetura e Organização internas da Cleo Modelo Von Neuman Circuito combinacional Circuito

Leia mais

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação Disciplina A Disciplina B Código Disciplina C/H Curso Disciplina C/H Código Curso Ano do Currículo 66303 ESTRUTURA DE DADOS I 68/0 ENG. DE

Leia mais

4. Controlador Lógico Programável

4. Controlador Lógico Programável 4. Controlador Lógico Programável INTRODUÇÃO O Controlador Lógico Programável, ou simplesmente PLC (Programmiable Logic Controller), pode ser definido como um dispositivo de estado sólido - um Computador

Leia mais

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 03 Conceitos de Hardware e Software parte 02. Cursos de Computação

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 03 Conceitos de Hardware e Software parte 02. Cursos de Computação Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 03 Conceitos de Hardware e Software parte 02 Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed.

Leia mais