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, /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. maubrod@yahoo.com 2 Professor Orientador do Projeto Final do Curso de Engenharia da Computação UnicenP. ferlin@unicenp.edu.br 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

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

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

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

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

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

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

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

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

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

ULA Sinais de Controle enviados pela UC

ULA Sinais de Controle enviados pela UC Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento

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

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

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

3. Arquitetura Básica do Computador

3. Arquitetura Básica do Computador 3. Arquitetura Básica do Computador 3.1. Modelo de Von Neumann Dar-me-eis um grão de trigo pela primeira casa do tabuleiro; dois pela segunda, quatro pela terceira, oito pela quarta, e assim dobrando sucessivamente,

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

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

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema. O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema. Unidade aritmética e lógica - Executa operações aritméticas (cálculos);

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

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

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA 8 CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA A porta paralela, também conhecida por printer port ou Centronics e a porta serial (RS-232) são interfaces bastante comuns que, apesar de estarem praticamente

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

Unidade 13: Paralelismo:

Unidade 13: Paralelismo: Arquitetura e Organização de Computadores 1 Unidade 13: Paralelismo: SMP e Processamento Vetorial Prof. Daniel Caetano Objetivo: Apresentar os conceitos fundamentais da arquitetura SMP e alguns detalhes

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

3. O NIVEL DA LINGUAGEM DE MONTAGEM

3. O NIVEL DA LINGUAGEM DE MONTAGEM 3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 Índice 1. A Organização do Computador - Continuação...3 1.1. Processadores - II... 3 1.1.1. Princípios de projeto para computadores modernos... 3 1.1.2. Paralelismo...

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

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

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 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

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 Computadores. Tipos de Instruções

Arquitetura de Computadores. Tipos de Instruções Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada

Leia mais

Memórias Prof. Galvez Gonçalves

Memórias Prof. Galvez Gonçalves Arquitetura e Organização de Computadores 1 s Prof. Galvez Gonçalves Objetivo: Compreender os tipos de memória e como elas são acionadas nos sistemas computacionais modernos. INTRODUÇÃO Nas aulas anteriores

Leia mais

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br Conceito de Computador Um computador digital é

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

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

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

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

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

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

Organização Básica do Computador

Organização Básica do Computador Organização Básica do Computador Modelo de Von Neumann MEMÓRIA ENTRADA ARITMÉTICA LÓGICA SAÍDA CONTROLE Modelo de Von Neumann Introduziu o conceito do computador controlado por programa armazenado. Todo

Leia mais

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. 7.3.1.2 Registradores: São pequenas unidades de memória, implementadas na CPU, com as seguintes características:

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

Leia mais

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

28/9/2010. Paralelismo no nível de instruções Processadores superescalares Arquitetura de Computadores Paralelismo no nível de instruções Processadores superescalares Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Processadores superescalares A partir dos resultados

Leia mais

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1 Conteúdo Página Operações Lógicas Binárias: AND, OR...2 Operações Lógicas Binárias: OR Exclusivo (XOR)...3 Contatos Normalmente Abertos e Normalmente Fechados. Sensores e Símbolos... 4 Exercício...5 Resultado

Leia mais

Sistema de Computação

Sistema de Computação Sistema de Computação Máquinas multinível Nível 0 verdadeiro hardware da máquina, executando os programas em linguagem de máquina de nível 1 (portas lógicas); Nível 1 Composto por registrados e pela ALU

Leia mais

Memória Cache. Prof. Leonardo Barreto Campos 1

Memória Cache. Prof. Leonardo Barreto Campos 1 Memória Cache Prof. Leonardo Barreto Campos 1 Sumário Introdução; Projeto de Memórias Cache; Tamanho; Função de Mapeamento; Política de Escrita; Tamanho da Linha; Número de Memórias Cache; Bibliografia.

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

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

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Caminho de Dados Slide 1 Sumário Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados O Controle da ULA Projeto da Unidade de Controle Principal

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

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann Universidade Federal de Santa Maria NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann O modelo (ou arquitetura) de von

Leia mais

Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto

Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto Prof. Walter Cunha falecomigo@waltercunha.com http://waltercunha.com PMBoK Organização do Projeto Os projetos e o gerenciamento

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

Tecnologia PCI express. Introdução. Tecnologia PCI Express

Tecnologia PCI express. Introdução. Tecnologia PCI Express Tecnologia PCI express Introdução O desenvolvimento de computadores cada vez mais rápidos e eficientes é uma necessidade constante. No que se refere ao segmento de computadores pessoais, essa necessidade

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

Um Driver NDIS Para Interceptação de Datagramas IP

Um Driver NDIS Para Interceptação de Datagramas IP Um Driver NDIS Para Interceptação de Datagramas IP Paulo Fernando da Silva psilva@senior.com.br Sérgio Stringari stringari@furb.br Resumo. Este artigo apresenta o desenvolvimento de um driver NDIS 1 para

Leia mais

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO 10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE

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

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

28/9/2010. Unidade de Controle Funcionamento e Implementação

28/9/2010. Unidade de Controle Funcionamento e Implementação Arquitetura de Computadores Unidade de Controle Funcionamento e Implementação Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Operação da Unidade de Controle Unidade de controle: parte do

Leia mais

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto: Processadores BIP A família de processadores BIP foi desenvolvida por pesquisadores do Laboratório de Sistemas Embarcados e Distribuídos (LSED) da Universidade do Vale do Itajaí UNIVALI com o objetivo

Leia mais

Projeto de Máquinas de Estado

Projeto de Máquinas de Estado Projeto de Máquinas de Estado Organizado por Rodrigo Hausen. Original de Thomas L. Floyd. Versão 0: 15 de março de 2013 http://compscinet.org/circuitos Resumo Grande parte deste texto, exemplos e estrutura

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

Projeto de Circuitos. Introdução ao Computador 2008/01 Bernardo Gonçalves

Projeto de Circuitos. Introdução ao Computador 2008/01 Bernardo Gonçalves Projeto de Circuitos Lógicos Introdução ao Computador 2008/01 Bernardo Gonçalves Sumário Da Álgebra de Boole ao projeto de circuitos digitais; Portas lógicas; Equivalência de circuitos; Construindo circuitos

Leia mais

Há dois tipos de configurações bidirecionais usados na comunicação em uma rede Ethernet:

Há dois tipos de configurações bidirecionais usados na comunicação em uma rede Ethernet: Comunicação em uma rede Ethernet A comunicação em uma rede local comutada ocorre de três formas: unicast, broadcast e multicast: -Unicast: Comunicação na qual um quadro é enviado de um host e endereçado

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

1. NÍVEL CONVENCIONAL DE MÁQUINA

1. NÍVEL CONVENCIONAL DE MÁQUINA 1. NÍVEL CONVENCIONAL DE MÁQUINA Relembrando a nossa matéria de Arquitetura de Computadores, a arquitetura de Computadores se divide em vários níveis como já estudamos anteriormente. Ou seja: o Nível 0

Leia mais

Sistemas Computacionais II Professor Frederico Sauer

Sistemas Computacionais II Professor Frederico Sauer Sistemas Computacionais II Professor Frederico Sauer Livro-texto: Introdução à Organização de Computadores 4ª edição Mário A. Monteiro Livros Técnicos e Científicos Editora. Atenção: Este material não

Leia mais

Profª Danielle Casillo

Profª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Automação e Controle Aula 07 Linguagem Ladder Profª Danielle Casillo A LINGUAGEM LADDER Foi a primeira que surgiu para programação

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

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 1 ARQUITETURA DE COMPUTADORES U C P Prof. Leandro Coelho Plano de Aula 2 Aula Passada Definição Evolução dos Computadores Histórico Modelo de Von-Neumann Básico CPU Mémoria E/S Barramentos Plano de Aula

Leia mais

CISC RISC Introdução A CISC (em inglês: Complex Instruction Set Computing, Computador com um Conjunto Complexo de Instruções), usada em processadores Intel e AMD; suporta mais instruções no entanto, com

Leia mais

Disciplina: Introdução à Informática Profª Érica Barcelos

Disciplina: Introdução à Informática Profª Érica Barcelos Disciplina: Introdução à Informática Profª Érica Barcelos CAPÍTULO 4 1. ARQUITETURA DO COMPUTADOR- HARDWARE Todos os componentes físicos constituídos de circuitos eletrônicos interligados são chamados

Leia mais

Aula 26: Arquiteturas RISC vs. CISC

Aula 26: Arquiteturas RISC vs. CISC Aula 26: Arquiteturas RISC vs CISC Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Arquiteturas RISC vs CISC FAC 1 / 33 Revisão Diego Passos

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário

Leia mais

MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2

MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2 MEMÓRIA CONCEITO Bit- 0 1 Essência de um sistema chamado BIESTÁVEL Ex: Lâmpada 0 apagada 1 acesa 0 e 1 únicos elementos do sistema de numeração de base 2 A que se destina a memória: Armazenamento das instruções

Leia mais

Sistemas Operacionais Introdução. Professora: Michelle Nery

Sistemas Operacionais Introdução. Professora: Michelle Nery Sistemas Operacionais Introdução Professora: Michelle Nery Área de Atuação do Sistema Operacional Composto de dois ou mais níveis: Tipo de Sistemas Operacionais Sistemas Operacionais Monotarefas Sistemas

Leia mais

4 Estrutura do Sistema Operacional. 4.1 - Kernel

4 Estrutura do Sistema Operacional. 4.1 - Kernel 1 4 Estrutura do Sistema Operacional 4.1 - Kernel O kernel é o núcleo do sistema operacional, sendo responsável direto por controlar tudo ao seu redor. Desde os dispositivos usuais, como unidades de disco,

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

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

Infra-Estrutura de Hardware

Infra-Estrutura de Hardware Infra-Estrutura de Hardware P r o f. W i l t o n O. F e r r e i r a U n i v e r s i d a d e F e d e r a l R u r a l d e P e r n a m b u c o U F R P E 1 º S e m e s t r e / 2 0 1 2 Conteúdo da aula Hardware

Leia mais

Guilherme Pina Cardim. Relatório de Sistemas Operacionais I

Guilherme Pina Cardim. Relatório de Sistemas Operacionais I Guilherme Pina Cardim Relatório de Sistemas Operacionais I Presidente Prudente - SP, Brasil 30 de junho de 2010 Guilherme Pina Cardim Relatório de Sistemas Operacionais I Pesquisa para descobrir as diferenças

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

INTRODUÇÃO BARRAMENTO PCI EXPRESS.

INTRODUÇÃO BARRAMENTO PCI EXPRESS. INTRODUÇÃO BARRAMENTO EXPRESS. O processador se comunica com os outros periféricos do micro através de um caminho de dados chamado barramento. Desde o lançamento do primeiro PC em 1981 até os dias de hoje,

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

RISC X CISC - Pipeline

RISC X CISC - Pipeline RISC X CISC - Pipeline IFBA Instituto Federal de Educ. Ciencia e Tec Bahia Curso de Analise e Desenvolvimento de Sistemas Arquitetura de Computadores 25 e 26/30 Prof. Msc. Antonio Carlos Souza Referências

Leia mais

Centro Tecnológico de Eletroeletrônica César Rodrigues. Atividade Avaliativa

Centro Tecnológico de Eletroeletrônica César Rodrigues. Atividade Avaliativa 1ª Exercícios - REDES LAN/WAN INSTRUTOR: MODALIDADE: TÉCNICO APRENDIZAGEM DATA: Turma: VALOR (em pontos): NOTA: ALUNO (A): 1. Utilize 1 para assinalar os protocolos que são da CAMADA DE REDE e 2 para os

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

Funções de Posicionamento para Controle de Eixos

Funções de Posicionamento para Controle de Eixos Funções de Posicionamento para Controle de Eixos Resumo Atualmente muitos Controladores Programáveis (CPs) classificados como de pequeno porte possuem, integrados em um único invólucro, uma densidade significativa

Leia mais

4 Arquitetura básica de um analisador de elementos de redes

4 Arquitetura básica de um analisador de elementos de redes 4 Arquitetura básica de um analisador de elementos de redes Neste capítulo é apresentado o desenvolvimento de um dispositivo analisador de redes e de elementos de redes, utilizando tecnologia FPGA. Conforme

Leia mais

TRABALHO COM GRANDES MONTAGENS

TRABALHO COM GRANDES MONTAGENS Texto Técnico 005/2013 TRABALHO COM GRANDES MONTAGENS Parte 05 0 Vamos finalizar o tema Trabalho com Grandes Montagens apresentando os melhores recursos e configurações de hardware para otimizar a abertura

Leia mais

Quadro de consulta (solicitação do mestre)

Quadro de consulta (solicitação do mestre) Introdução ao protocolo MODBUS padrão RTU O Protocolo MODBUS foi criado no final dos anos 70 para comunicação entre controladores da MODICON. Por ser um dos primeiros protocolos com especificação aberta

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

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