COMPUTAÇÃO RECONFIGURÁVEL: conceitos, tendências e aplicações

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

Download "COMPUTAÇÃO RECONFIGURÁVEL: conceitos, tendências e aplicações"

Transcrição

1 COMPUTAÇÃO RECONFIGURÁVEL: conceitos, tendências e aplicações Carlos Augusto Paiva da Silva Martins 1,2,3, Edward David Moreno Ordonez 4, João Batista Torres Corrêa 1,2, Milene Barbosa Carvalho 1,2 1 Laboratório de Sistemas Digitais e Computacionais (LSDC) 2 Instituto de Informática 3 Programa de Pós Graduação em Engenharia Elétrica (PPGEE) Pontifícia Universidade Católica de Minas Gerais (PUC Minas) [capsm@pucminas.br] 4 Faculdade de Informática Fundação de Ensino Eurípides Soares da Rocha (FEESR) 1 Introdução Neste minicurso utilizamos uma abordagem diferente no processo de ensino/estudo/aprendizado, que é baseada na proposição de perguntas e problemas e na indicação de alguns possíveis caminhos para a obtenção das respostas e/ou soluções como instrumento ou método de aprendizado. Acreditamos e sugerimos que os leitores tentem responder as perguntas e resolver os problemas propostos antes de prosseguir na leitura do texto, para possibilitar a aplicação e o exercício da criatividade com o propósito de desenvolver novas idéias e construir novos conhecimentos. O nosso objetivo inicial é incentivar e motivar as pessoas a considerar a computação reconfigurável como uma possível solução de problemas reais e nosso objetivo final é iniciar a divulgação, otimizando o processo de aprendizado e a formação de recursos humanos numa área recente e ainda pouco explorada como a computação reconfigurável. Esperamos que após o término do minicurso as pessoas prossigam no estudo, aprendizado, pesquisa e aplicação prática da computação reconfigurável. Neste capítulo, apresentamos inicialmente uma visão geral do contexto da computação nos últimos anos, considerando e analisando o surgimento de novos modelos e paradigmas computacionais como a computação reconfigurável. A seguir

2 fazemos uma análise dos principais problemas e desafios técnicos que motivaram o surgimento e posterior desenvolvimento da computação reconfigurável e suas aplicações práticas. Posteriormente apresentamos os nossos principais objetivos e metas com a proposição e realização desse minicurso, e finalizamos indicando a estrutura do texto, capítulo a capítulo. 1.1 Contexto Nos últimos anos temos observado um crescente aumento no uso da computação em quase todas as atividades e áreas do conhecimento. E atualmente em quase todas essas áreas do conhecimento, principalmente nas relacionadas às ciências exatas e engenharias, observamos a existência de uma grande quantidade de problemas complexos. As soluções normalmente usadas para resolver estes problemas geram uma grande demanda de recursos computacionais necessários para armazenamento, recuperação, transmissão e processamento de informações. Além disso, em muitos desses problemas, as soluções precisam ser obtidas em pequenos intervalos de tempo, cada vez menores, ou até em tempo real. Para uma grande parte destes problemas complexos, as soluções implementadas em software seqüencial executado em hardware monoprocessador de propósito geral não atendem as necessidades de tempo de resposta e/ou de desempenho de modo geral. Deste modo, novas soluções devem e estão sendo desenvolvidas e utilizadas com o objetivo de melhorar o tempo de resposta, a vazão, o desempenho geral e a qualidade dos resultados. Entre as quais, podemos destacar as que são baseadas no uso de: software paralelo e arquiteturas paralelas de propósito geral [Hwang 1998] [Lewis 1998] [Pfister 1998] [Buyya 1999a] [Buyya 1999b]; software distribuído e arquiteturas de propósito geral [Tanenbaum 1995] [Mullender 1996]; software seqüencial ou paralelo e arquiteturas dedicadas [Almasi 1994] [Decegama 1989]; hardware dedicado e fixo para aplicações específicas [Wolf 1994]; e principalmente computação e arquiteturas reconfiguráveis [Sanchez 1999] [Sipper 2000] [Turley 1998] [Villasenor 1997] [CORE 2000] [SCR 2001]. Algumas soluções de computação de alto desempenho tem sido desenvolvidas em pesquisas realizadas e divulgadas no Brasil [SBAC-PAD 2000] [WSCAD 2000] [SBAC-PAD 2001] [WSCAD 2001]. Deste modo, em função de problemas de desempenho, como tempo de resposta e/ou vazão, ou outros fatores como eficiência, disponibilidade, tolerância à falhas, etc. temos observado o surgimento de novos modelos, estilos ou tipos de computação e computadores. 2

3 Algumas das muitas perguntas interessantes, dentro desse contexto, que poderiam auxiliar no entendimento e aprendizado de novas abordagens (modelos, paradigmas, estilos) computacionais, como a computação reconfigurável, são: i) o que é a computação?; ii) o que caracteriza a computação?; iii) quais são os tipos e modelos de computação?; iv) o que é um computador?; v) o que caracteriza um computador?; vi) quais são os tipos e modelos de computadores? Nas possíveis respostas dessas perguntas devemos considerar que um computador é ou pode ser composto de hardware e software, que o comportamento e a estrutura do computador podem ser constantes e/ou variáveis e que nos computadores existem aspectos relacionados com a arquitetura e a tecnologia. 1.2 Problemas Uma questão muito importante nesse momento é tentar determinar quais foram os problemas que motivaram o surgimento da computação reconfigurável. Analisando o contexto geral do uso da computação e dos sistemas computacionais (computadores) observamos que as soluções podem ser classificadas ou divididas em soluções implementadas em Hardware Fixo (HF) ou Hardwired e em soluções implementadas em Hardware Programável (HP) através de Software (SW). Sendo que esses tipos de implementações de soluções geralmente são denominadas soluções em hardware e soluções em software. Além disso, observamos que as desvantagens relacionadas com desempenho, flexibilidade, custo, etc. de cada um desses tipos de implementações de soluções são os principais problemas que deram origem ou motivaram o surgimento da computação reconfigurável. Novamente a análise e resposta de algumas perguntas podem nos auxiliar a entender e futuramente utilizar a computação reconfigurável: i) quais são as principais vantagens e desvantagens dos modelos e tipos de computação (sistemas computacionais) existentes atualmente? No contexto desse minicurso, principalmente das soluções implementadas em hardware fixo (HF) ou em hardware programável e software (HP+SW); ii) existe necessidade de desenvolver-se novos modelos e tipos de computação, sistemas computacionais e implementações? Onde devemos considerar quais são as características desejáveis desses novos modelos. Considerando as perguntas anteriores observamos que as principais deficiências do paradigma de hardware fixo (HF) são a falta de flexibilidade e a sua sub-utilização quando se trata de aplicações diversas. Isto pelo fato de ser um 3

4 dispositivo fixo, não podendo ser alterado após a sua fabricação e não se conseguir adapta-lo a certas situações que ocorrem durante as execuções de diversas tarefas computacionais. Já no caso do paradigma de software (hardware programável) (HP+SW), a principal deficiência está relacionada com o desempenho, às vezes insatisfatório na execução de aplicações ou computações. Apesar da grande flexibilidade para a execução de qualquer tipo de trabalho que envolva processamento computacional, existem deficiências e perdas no tempo necessário para executar alguns tipos de tarefas ou operações. Caso essas operações fossem executadas em um dispositivo de hardware fixo levariam um menor tempo, pois não necessitam buscar as instruções na memória, decodificá-las, buscar dados e executar a operação requerida. Sendo assim, quando o número de operações mais críticas (tempo de execução mais demorado, crítico ou significativo) aumenta, o desempenho que se consegue utilizando dispositivos de hardware programável (HP+SW) pode se tornar insatisfatório ou não ideal. Em função disso, muitas vezes utilizamos dispositivos de hardware fixo (HF) para acelerar algumas operações ou aplicações que demandam uma grande quantidade de recursos de um computador que utiliza um hardware programável, como um Processador de Propósito Geral (PPG). Contudo, apesar de suas deficiências, cada um destes dois paradigmas possuem as aplicações mais indicadas e recomendadas, sendo que a escolha vai depender das características de cada projeto, como dos dispositivos de hardware fixo e/ou de hardware programável. Deste modo, concluímos que existe necessidade de desenvolver-se novos modelos e tipos de implementações de soluções computacionais. Entre os quais, podemos destacar um novo tipo de implementação (modelo ou paradigma) intermediária, entre as tradicionais soluções em hardware (hardware fixo - HF) e software (hardware programável - HP + SW). Usando esse tipo de implementação computacional pretendemos alcançar ou nos aproximar do desempenho das soluções implementadas em hardware fixo e da flexibilidade das soluções implementadas em hardware programável e software. Como veremos nesse minicurso esse tipo de implementação de soluções intermediária é a computação reconfigurável. 1.3 Objetivos principais Dentro do contexto apresentado pretendemos atingir cinco objetivos principais com a proposição e realização deste minicurso: 4

5 (i) Apresentar e difundir os conhecimentos relacionados à computação reconfigurável, que é uma área relativamente recente e que ainda não faz parte dos currículos de graduação e pós graduação no Brasil. Considerando-se a situação mundial, observamos que a difusão desses conhecimentos em cursos de graduação e pós graduação é recente, pequena e crescente; (ii) Produzir e disponibilizar literatura em português sobre computação reconfigurável, pois ainda não existem livros sobre o assunto no idioma português e considerando-se também outros tipos de bibliografia, como artigos por exemplo, a quantidade ainda é muito pequena. Destacamos que a versão inicial desse material já foi usada em um minicurso de mesmo nome apresentado durante o evento CORE'2000 realizado na cidade de Marília em agosto de 2000, posteriormente em uma palestra sobre "Computação Reconfigurável" realizada na PUC-MINAS em novembro de 2000 e num minicurso durante o Seminário de Computação Reconfigurável (SCR'2001) realizado na PUC-Minas em Considerando-se a situação mundial, também não encontramos livros inteiramente dedicados à computação reconfigurável; (iii) Apresentar os principais conceitos e técnicas relacionadas com a computação reconfigurável como: dispositivos reconfiguráveis; arquiteturas reconfiguráveis; sistemas computacionais reconfiguráveis acadêmicos e comerciais; ambientes e ferramentas de projeto, desenvolvimento e programação de aplicações em sistemas reconfiguráveis. Discutir as necessidades de desenvolvimento de aplicações usando conceitos e sistemas computacionais reconfiguráveis e os aspectos mais importantes para a melhoria de desempenho e otimização das aplicações usando-se conceitos de reconfigurabilidade; (iv) Mostrar e analisar o uso prático das técnicas e métodos apresentados usando-se problemas práticos encontrados em aplicações reais relacionadas as áreas de ciência e engenharia. Como manipulação e processamento de imagens; (v) Incentivar o estudo, o aprendizado e a pesquisa em computação reconfigurável, promovendo um aumento no número de pessoas envolvidas na geração de conhecimentos e na publicação de artigos nessa área. 1.4 Estrutura do texto O restante do texto está estruturado em oito capítulos. No capítulo 2 apresentamos e discutimos alguns dos principais conceitos da computação reconfigurável. Posteriormente nos capítulos 3 e 4 apresentamos as arquiteturas e 5

6 os dispositivos reconfiguráveis. O capítulo 5 é relacionado com o desenvolvimento de soluções em sistemas computacionais reconfiguráveis. No capítulo 6 indicamos alguns sistemas computacionais reconfiguráveis acadêmicos e comerciais. O capítulo 7 é dedicado à análise de aplicações computacionais implementadas usando-se computação reconfigurável. No capítulo 8 apresentamos as principais conclusões do nosso minicurso. E finalmente no capítulo 9 indicamos as nossas referências bibliográficas, bibliografias adicionais e algumas fontes para a obtenção de material e informação adicional sobre a computação reconfigurável, seus principais tópicos e alguns sistemas computacionais reconfiguráveis. 6

7 2 Conceitos de Computação Reconfigurável Neste capítulo apresentamos alguns dos principais conceitos relacionados com a computação reconfigurável e a sua terminologia básica. Como essa é uma área relativamente recente ainda existem problemas e dificuldades para se indicar e definir os principais conceitos básicos. Além disso, ainda não existe consenso sobre a maioria dos conceitos, definições e termos básicos, pois ainda estamos nas fases iniciais de pesquisa e definições. Deste modo, esperamos que a apresentação desses conceitos possa auxiliar o estudo e entendimento da computação reconfigurável e não temos a pretensão de apresentar ou criar definições ou conceitos padronizados e definitivos. Entretanto, existem algumas referências complementares muito interessantes entre as quais destacamos o artigo survey publicado na revista ACM Computing Survey [Compton 2002]. Considerando as informações apresentadas anteriormente, acreditamos que algumas questões importantes para o entendimento da computação reconfigurável são: i) o que é a computação reconfigurável ou qual é a definição de computação reconfigurável?; ii) qual é o comportamento da computação reconfigurável?; iii) quais são os principais conceitos básicos da computação reconfigurável?; iv) quais foram as principais motivações para o surgimento, desenvolvimento e o uso da computação reconfigurável?; v) Porque começar a estudar computação reconfigurável? Nas possíveis respostas devemos considerar a computação reconfigurável como uma solução intermediária entre as soluções em HW e SW, com objetivos, metas e motivações relacionados com a melhoria de desempenho, flexibilidade, generalidade, eficiência, custo e outros. E entre os motivos para o seu estudo devemos considerar e analisar a demanda computacional de algumas importantes aplicações atuais e futuras, a inadequação de alguns modelos e estilos de computação atuais em termos de desempenho e flexibilidade, a posição e interesse das principais empresas e universidades do mundo e também a evolução dos dispositivos computacionais em termos de arquitetura e tecnologia. Apresentamos a seguir algumas dentre as muitas definições de computação reconfigurável existentes, e decidimos não criar mais uma nova definição, pois acreditamos que o mais importante seja inicialmente consolidar os conceitos básicos sobre o assunto e não aceitar ou decorar uma ou todas as definições existentes. Algumas definições de computação reconfigurável são: 7

8 "Dispositivo que realiza computação usando conexão espacial "pós fabricação" de elementos de computação" [Dehon 2000]. Enquanto os computadores tradicionais realizam computação fazendo conexões no tempo. "Computação reconfigurável representa uma nova idéia em filosofia de computação, na qual algum agente de hardware de propósito geral é configurado para realizar uma tarefa específica, mas pode ser reconfigurado sob demanda para realizar outras tarefas específicas." ( "Um novo paradigma de computação no qual circuitos integrados programáveis são usados em conjunto com software para reconfigurar circuitos integrados FPGA dinamicamente e produzir arquiteturas de computador sob demanda." ( Considerando simultaneamente todos os aspectos e fatores apresentados anteriormente, observamos que a computação reconfigurável foi proposta (ou talvez não tenha sido proposta explicitamente) como uma solução (modelo, paradigma) intermediária que tenta reduzir ou eliminar as deficiências das soluções usando paradigma de hardware (hardware fixo - HF) e das soluções usando paradigma de software (hardware programável - HP+SW), que pode ser um processador programável através de um software codificado no seu nível de conjunto de instruções (Instruction Set Architecture - ISA). Isso possibilita a obtenção de um maior desempenho em relação ao paradigma de software (HP+SW) e uma maior flexibilidade em relação ao paradigma de hardware fixo (HF). Além do desempenho e da flexibilidade podemos destacar outros fatores de motivação importantes como: eficiência, custo, generalidade, tolerância à falhas, e outras. Deste modo, concluímos que a computação reconfigurável pode ser considerada um tipo de implementação (modelo ou paradigma) de solução intermediária, entre as tradicionais soluções em hardware (hardware fixo - HF) e em software (hardware programável - HP+SW). Usando esse tipo de computação pretendemos alcançar ou nos aproximar do desempenho das soluções implementadas em hardware fixo e da flexibilidade das soluções implementadas em software e hardware programável. Como indicado anteriormente, um sistema computacional e os dispositivos (módulos) lógicos utilizados como blocos construtivos podem ter estrutura e/ou comportamento fixos, programáveis, configuráveis ou reconfiguráveis. E na análise da estrutura e do comportamento desse tipo de sistema computacional devemos 8

9 considerar aspectos de diversos níveis de abstração como programação ou configuração, sistema, arquitetura, dispositivos e microarquitetura do dispositivo. Especificamente nos tópicos relacionados com a reconfiguração dos sistemas e dispositivos reconfiguráveis devemos considerar (definindo e diferenciando) alguns importantes conceitos básicos e os aspectos relacionados como: i) programação ou configuração; ii) configuração ou reconfiguração; iii) reconfiguração estática ou dinâmica; iv) reconfiguração parcial ou total; v) contexto de reconfiguração único ou múltiplo; vi) reconfiguração em tempo de compilação ou em tempo de execução; vii). reconfiguração local ou remota; vii) reconfiguração normal ou rápida; viii) cache de reconfiguração. Entre os conceitos indicados no parágrafo anterior vamos analisar mais detalhadamente os conceitos de programação e/ou configuração. Como resultado da análise podemos destacar alguns pontos importantes: i) Entre algumas definições relacionadas com o termo configuração destacamos que configuração é a forma exterior de um corpo, ou conformação. e configurar é dar a forma ou figura de, é representar. Neste caso, a configuração está mais relacionada com a estrutura ou a forma de um objeto ou sistema; ii) Entre as definições relacionadas com o termo programação destacamos que programa é um conjunto de instruções a serem executadas por uma máquina capaz de interpretá-las e programar é fazer o programa de, é planejar. Neste caso, a programação está mais relacionada com o comportamento sistêmico do objeto. Em função dessas definições consideramos que: i) Nós podemos programar, através de um processo denominado programação, usando um objeto denominado programa. No caso de um microprocessador o programa executável é composto de instruções do conjunto de instruções do nível ISA, que são um conjunto de operações (comportamentos) primitivas dos elementos de processamento (EP); ii) Nós podemos configurar, através de um processo denominado configuração, usando um objeto denominado padrão de configuração (conjunto de padrões de configuração). No caso de um dispositivo reconfigurável, que pode ser um FPGA, o padrão de configuração é composto de bits de programação de configuração dos blocos lógicos reconfiguráveis e dos elementos de interconexão e/ou roteamento reconfiguráveis. Além disso, devemos considerar a camada ou nível arquitetural do sistema computacional onde realizamos a programação e/ou a configuração, se utilizaremos análise interna ou externa e com modelo caixa preta ou caixa branca. 9

10 Deste modo, concluímos que é possível definir e controlar o comportamento global de um objeto ou sistema usando programação (indicação do comportamento geral do objeto) ou usando configuração, onde definimos (indicamos) a estrutura (forma) interna do objeto que é formada pela interligação dos seus elementos construtivos básicos e também definimos a lógica de funcionamento desses elementos básicos, definindo o comportamento ou funcionamento dos seus elementos internos e indiretamente o comportamento global do objeto ou sistema. Considerando os demais conceitos indicados anteriormente podemos afirmar que: os conceitos de configuração ou reconfiguração estão relacionados com o número de configurações que podemos realizar no dispositivo, ou seja, com a possibilidade de se definir ou alterar a configuração do dispositivo somente uma única vez ou então diversas vezes, sendo neste último caso possível reconfigurar-se o dispositivo muitas vezes ou constantemente se necessário; os conceitos de reconfiguração estática ou dinâmica estão relacionados com a possibilidade de se reconfigurar o dispositivo no estado inativo (parado) ou durante o seu funcionamento normal; os conceitos de reconfiguração parcial ou total estão relacionados com a necessidade de se reconfigurar todos os recursos reconfiguráveis do dispositivo ou se poder reconfigurar somente uma ou algumas partes do dispositivo; os conceitos de contexto de reconfiguração único ou múltiplo estão relacionados com a existência de um ou mais padrões de configuração (bits de (re)configuração) armazenados no dispositivo; os conceitos de reconfiguração em tempo de compilação ou em tempo de execução estão relacionados com a possibilidade de se reconfigurar o dispositivo durante a fase de execução ou processamento (operação do dispositivo) ou somente antes do início da fase de execução ou processamento, que pode ser ou normalmente é durante a fase de compilação; os conceitos de reconfiguração local ou remota estão relacionados com a localização física (proximidade ou não) do padrão de configuração do dispositivo; os conceitos de reconfiguração normal ou rápida estão relacionados com o tempo necessário para se realizar a reconfiguração, que pode utilizar técnicas como pré-busca de padrão de configuração, compressão de configuração e/ou realocação ou defragmentação de configuração; o conceito de cache de reconfiguração está relacionado com o uso ou aplicação dos conceitos e técnicas de memória cache para se armazenar os bits que formam os padrões de configuração que podem ser utilizados para se reconfigurar os dispositivos reconfiguráveis. 10

11 Considerando os principais conceitos apresentados podemos indicar as principais características e atributos desejáveis das aplicações mais indicadas para implementação usando computação reconfigurável, ou em sistemas computacionais reconfiguráveis, entre as quais podemos destacar: regularidade de comportamento, estrutura pipeline, paralelismo de dados, largura de bits variável, aritmética modesta e controle simples. Entretanto, com a evolução da computação reconfigurável, principalmente dos dispositivos reconfiguráveis e dos ambientes de auxílio ao projeto, as aplicações com características distintas também podem ser implementadas em sistemas reconfiguráveis com ganhos bastante significativos. Um aspecto muito importante é não desconsiderar que os conceitos relacionados com a computação reconfigurável, apresentados neste tópico, como a reconfigurabilidade comportamental e/ou estrutural podem ser aplicados em qualquer objeto ou bloco construtivo pertencente a qualquer um dos níveis arquiteturais (abstração) de um sistema computacional, e não somente nos dispositivos de hardware que realmente são usados para implementar fisicamente as operações básicas de computação. Analisando historicamente o surgimento do conceito de computação (re)configurável podemos observar que o início ocorreu com o uso de dispositivos de hardware programáveis ou configuráveis. Isso em parte explica a razão para a limitação atual da aplicação dos conceitos de computação reconfigurável principalmente, senão unicamente ou exclusivamente, no nível dos dispositivos de hardware e não em todos os níveis arquiteturais existentes nos sistemas computacionais. Deste modo, devemos pensar e tentar aplicar os conceitos de computação reconfigurável em todos os possíveis níveis arquiteturais dos sistemas computacionais, propondo e criando sistemas computacionais reconfiguráveis com reconfigurabilidade multinível hierárquica. Atualmente, uma das novas linhas de pesquisa no nosso grupo de pesquisa ( é justamente analisar a aplicação ou utilização dos conceitos de reconfiguração em outros níveis arquiteturais, onde o primeiro nível a ser considerado é o nível de sistema operacional, principalmente em ambientes distribuídos e/ou paralelos como aglomerados de computadores. 11

12 3 Arquiteturas Reconfiguráveis Neste capítulo apresentamos somente uma síntese dos principais conceitos e tópicos relacionados com as arquiteturas reconfiguráveis, principalmente devido ao número limitado de páginas deste material. Na análise das arquiteturas reconfiguráveis devemos considerar os ambientes computacionais reconfiguráveis, os componentes de hardware e os componentes de software. Algumas das muitas perguntas ou questões relevantes são: i) o que é uma arquitetura reconfigurável ou o que são as arquiteturas reconfiguráveis?; ii) o que caracteriza uma arquitetura reconfigurável?; iii) o que diferencia uma arquitetura reconfigurável de uma arquitetura tradicional de sistemas computacionais?; iv) os principais conceitos de arquitetura de computadores continuam válidos, totalmente ou parcialmente, na área de arquiteturas reconfiguráveis?; v) quais são os principais novos conceitos de arquiteturas reconfiguráveis que não existiam ou não existem em arquiteturas computacionais tradicionais não (re)configuráveis?; vi) quais são os ambientes de auxílio ao projeto e uso das arquiteturas reconfiguráveis? Com relação às definições de arquiteturas reconfiguráveis destacamos que ainda não existe um consenso geral, em função dos motivos já citados no capítulo anterior. Deste modo, optamos por apresentar algumas idéias e conceitos sem uma grande preocupação com o formalismo e padronização. As arquiteturas reconfiguráveis ou arquiteturas de sistemas computacionais reconfiguráveis são aquelas onde podemos aplicar ou utilizar os conceitos de reconfigurabilidade e implementar as técnicas de reconfiguração já apresentadas e definidas no capítulo 2. Ou seja, são as arquiteturas onde os blocos (módulos) lógicos construtivos básicos podem ser reconfigurados, na sua lógica ou funcionalidade interna, e os blocos de interconexão responsáveis pela interligação desses blocos lógicos construtivos e pela definição da estrutura da arquitetura também podem ser reconfigurados. Esses blocos lógicos construtivos normalmente implementam ou são as unidades funcionais de processamento, armazenamento, comunicação ou entrada e saída de dados. Podemos encontrar ou projetar arquiteturas reconfiguráveis em diversos níveis hierárquicos como: sistemas, equipamentos, placas, dispositivos e microarquitetura dos dispositivos. E normalmente podemos utilizar arquiteturas reconfiguráveis com reconfiguração em múltiplos níveis simultaneamente. As arquiteturas reconfiguráveis podem ser puramente reconfiguráveis ou então híbridas (mistas), com utilização dos modelos de hardware fixo e/ou hardware 12

13 programável em conjunto com o modelo de hardware reconfigurável. Isto se considerarmos somente a reconfiguração em hardware, pois também podemos usar a reconfiguração em software, onde os objetos definidos como hardware podem ser redefinidos como blocos ou módulos construtivos. Sendo este último, o nosso ponto de vista geral ou global sobre arquiteturas reconfiguráveis. Podemos estar interessados na arquitetura de um sistema computacional reconfigurável, que pode ser pura ou híbrida, e/ou também na arquitetura interna (microarquitetura) dos próprios blocos ou módulos construtivos, que no contexto restrito são os dispositivos reconfiguráveis. Estes últimos serão apresentados e analisados no próximo capítulo. Nesse tipo de sistema (arquitetura) configuramos espacialmente ou topologicamente a estrutura (diagrama de blocos funcionais) que implementa o comportamento desejado, e não utilizamos uma única estrutura fixa (diagrama fixo único de blocos padrão), que pode ser um caminho de dados de um processador, durante vários ciclos. No caso dos processadores, os programas executáveis podem alterar o comportamento dessa estrutura fixa por intermédio de um conjunto de instruções (operações) definidas na fase de projeto e fixas após a fabricação do hardware (processador com nível ISA único e fixo). Entre as principais características das arquiteturas reconfiguráveis podemos destacar: blocos lógicos reconfiguráveis básicos (arquitetura interna, complexidade, granularidade), granularidade (fina, média, grossa), multigranularidade, estrutura ou topologia dos blocos construtivos reconfiguráveis (arranjo unidimensional, arranjo bidimensional, pipeline, crossbar), programabilidade (única, múltipla), reconfiguração (estática, dinâmica, parcial, total, local, remota, normal, rápida), blocos de interligação reconfiguráveis (arquitetura interna, topologia interligação, tipo de rota, roteabilidade), modelo de computação (monoprocessador, multiprocessador, SIMD, MIMD, pipeline, VLIW), propósito (geral, específico), modelo de implementação de solução (reconfigurável, mista, fixa, programável),. Os tópicos estudados em arquiteturas reconfiguráveis estão relacionados com arquitetura de computadores convencionais e não convencionais, arquitetura de circuitos integrados, arquitetura de processadores e também com os conceitos e teorias relacionadas com a reconfigurabilidade e outros conceitos apresentados no capítulo 2. Deste modo, o que diferencia as arquiteturas tradicionais (não reconfiguráveis) e as reconfiguráveis são principalmente os aspectos e conceitos de reconfiguração. Entretanto, devemos lembrar que arquitetura de computadores não 13

14 é somente hardware, estando relacionada com hardware e com software. Assim, concluímos que as arquiteturas reconfiguráveis podem apresentar qualquer combinação possível de arquitetura (hardware e/ou software) (re)configuráveis ou não (re)configuráveis. Devemos nos lembrar que nas arquiteturas dos sistemas computacionais reconfiguráveis muitos ou quase todos os conceitos e níveis de abstração arquiteturais tradicionais (não reconfiguráveis) como algoritmos, linguagens, compiladores, sistemas operacionais, arquiteturas, microarquiteturas continuam ou podem continuar existindo. Deste modo, os conceitos e conhecimentos de arquitetura de computadores tradicionais também são muito importantes. Entre os diversos conceitos comuns vamos analisar o paralelismo existente nas arquiteturas reconfiguráveis, onde podemos destacar os seguintes tipos de paralelismo: paralelismo no nível de bits; paralelismo no nível de instruções (Instruction Level Parallelism - ILP) como o pipeline; paralelismo no nível de processadores (Processor Level Parallelism - PLP) como (Single Instruction Stream Multiple Data Stream - SIMD) muito utilizado nos laços de repetição e (Multiple Instruction Stream Multiple Data Stream - MIMD) muito usado dentro da e/ou entre as aplicações ou processos. O paralelismo é atualmente muito utilizado em arquiteturas computacionais tradicionais e em arquiteturas reconfiguráveis. Os sistemas tradicionais, como os multiprocessadores ou multicomputadores, normalmente usam apenas um ou poucos níveis de paralelismo, enquanto os sistemas reconfiguráveis normalmente usam ou podem usar paralelismo em vários níveis simultaneamente. Sendo que o paralelismo pode ser usado em tempo de compilação e/ou de execução. Uma arquitetura reconfigurável pode compartilhar todas essas características de uma "arquitetura tradicional", mas organiza e implementa a computação de maneira muito diferente. Ao invés de processar uma função através de um conjunto de instruções executadas seqüencialmente ao longo do tempo, como em um processador, as arquiteturas reconfiguráveis geralmente processam a função através de unidades funcionais configuradas no espaço (unidades lógicas mapeadas em diferentes blocos construtivos básicos dentro dos dispositivos reconfiguráveis, como os FPGA's). Temos portanto, computação paralela envolvendo diferentes unidades funcionais que geram e consomem resultados intermediários. A diferença portanto está na computação temporal/seqüencial das operações ou tarefas versos computação espacial/paralela das operações ou tarefas. 14

15 O espectro atual de sistemas computacionais reconfiguráveis e também das suas arquiteturas é muito amplo e diversificado, com destaque para os seguintes tipos: coprocessadores reconfiguráveis, processadores reconfiguráveis, computadores reconfiguráveis, sistemas embutidos reconfiguráveis e sistemas híbridos (compostos de módulos reconfiguráveis e módulos não reconfiguráveis, que podem ser implementados com hardware fixo ou hardware programável usando software). Uma análise da utilização e da evolução desses sistemas nos indica uma tendência de crescimento na amplitude e na complexidade desse espectro de sistemas computacionais reconfiguráveis e de arquiteturas reconfiguráveis. Entre os projetos relacionados com arquiteturas reconfiguráveis (sistemas computacionais reconfiguráveis) podemos citar alguns projetos de pesquisa acadêmicos e alguns projetos de pesquisa comerciais. Entre as arquiteturas reconfiguráveis acadêmicas podemos destacar algumas como: Garp (UC Berkeley); Mojave (UCLA); PipeRench (Carnegie Mellon University), Splash 2 (); SLAAC (ISI, BYU, UCLA, Sandia); Riley-2 (Imperial College, HP); SAT (ETH Zurich); Sonic (Imperial College, Sony Broadcast); SPACE2 (Universidade do Sul da Austrália UNISA) e SPARCS (Cincinnati University). Enquanto entre as arquiteturas reconfiguráveis comerciais destacamos: DECPerLe 1 (DEC Paris); Champ (Lookheed Sanders); Wildcard, Wildforce, Wildstar (Annapolis Micro Systems) ( Palladium, Cobalt (Sistemas de verificação de hardware) (Quickturn, a Cadence Company) ( H.O.T. Development Systems e VW-300 (Virtual Computer Corporation) ( Os tópicos relacionados com os ambientes (métodos, técnicas e ferramentas) de auxílio ao projeto e uso das arquiteturas e dos sistemas computacionais reconfiguráveis serão apresentados e analisados no capítulo 5 deste minicurso. Dentro da área de arquiteturas reconfiguráveis existem alguns importantes possíveis problemas que podemos indicar e tentar analisar futuramente. Estes problemas estão relacionados principalmente com gargalos de desempenho, modos e métodos de programação das aplicações, modos de reconfiguração, complexidade e tempo de reconfiguração, desempenho das arquiteturas, flexibilidade das arquiteturas, adequação ou inadequação das arquiteturas aos problemas e principalmente com os modos eficientes de implementação dos conceitos de arquiteturas e computação reconfiguráveis. 15

16 Como atualmente os principais elementos construtivos das arquiteturas reconfiguráveis são os dispositivos (hardware) reconfiguráveis, vamos apresentar e analisar mais detalhadamente no próximo capítulo esses tipos de dispositivos, suas arquiteturas e suas características técnicas. 16

17 4 Dispositivos Reconfiguráveis Neste capítulo apresentamos os principais conceitos relacionados com os dispositivos reconfiguráveis, destacando as principais características técnicas, as arquiteturas internas dos dispositivos, tipos e técnicas de configuração ou reconfiguração. Entre as muitas referências para um estudo mais detalhado dos dispositivos reconfiguráveis destacamos a grande quantidade de material disponível nos sites WEB dos principais fabricantes de dispositivos reconfiguráveis. Entre as muitas perguntas importantes relacionadas com os dispositivos reconfiguráveis podemos destacar algumas, como: i) o que é um dispositivo reconfigurável; ii) quais são as principais características dos dispositivos reconfiguráveis?; iii) quais são as principais diferenças entre os dispositivos fixos, programáveis e reconfiguráveis? iv) podemos ter dispositivos híbridos, que combinam os diferentes tipos de dispositivos?; v) o que caracteriza a arquitetura interna dos dispositivos reconfiguráveis? vi) quais são ou seriam as características técnicas ideais ou desejáveis dos dispositivos reconfiguráveis?; vii) quais são os ambientes de auxílio ao projeto e uso dos dispositivos reconfiguráveis? Algumas das principais características dos dispositivos reconfiguráveis estão relacionadas com a sua reconfigurabilidade, como as implementações dos principais conceitos básicos apresentados no capítulo 2. Enquanto as principais diferenças entre os dispositivos fixos, programáveis e reconfiguráveis são baseadas nos conceitos de computação reconfigurável e arquiteturas reconfiguráveis que foram apresentados nos capítulos dois e três. Os ambientes de auxílio ao projeto e uso dos dispositivos reconfiguráveis serão apresentados e analisados no capítulo cinco. Programas de CAD (Computer Aided Design) podem auxiliar o projetista na criação de aplicações com FPGAs, assim como outros dispositivos lógicos programáveis Existem diversos tipos e classes de dispositivos programáveis (configuráveis) com capacidade de implementar funções lógicas como: EPROM (Erasable Programmable Read Only Memory), PLA (Programmable Logic Array), PAL (Programmable Array Logic), etc. Devido à necessidade de implementar funções mais complexas, surgiram os dispositivos conhecidos como CPLD's (Complex Programmable Logic Devices) e outros tipos de dispositivos programáveis como o MPGA (Mask Programmable Gate Array) e o FPGA (Field Programmable Gate Array). Nos MPGAs a especificação das funções lógicas deve ser feita antes da finalização do processo de fabricação do circuito integrado, isso introduz um alto custo que só é compensado pela produção em alta escala e também causa um 17

18 longo ciclo de desenvolvimento e fabricação. As FPGAs são dispositivos programáveis em campo, ou seja, podem ter sua configuração alterada sem que ele seja retirado do circuito ou equipamento. A capacidade atual destes dispositivos está na faixa dos milhões de portas lógicas. Entretanto, neste minicurso estamos interessados somente nos dispositivos que apresentam a capacidade de reconfiguração, ou seja, poder ser configurado diversas vezes após a sua fabricação. Entres os quais destacamos os FPGA's. Os dispositivos que são utilizados para implementar os sistemas computacionais reconfiguráveis (modelo ou paradigma reconfigurável), incluindo os FPGA s (Field-Programmable Gate Arrays) enfocados neste trabalho, são normalmente compostos de uma matriz de elementos reconfiguráveis. Cada elemento deve ser primeiro configurado antes de ser utilizado para realizar alguma computação (operação). Para tal, existem os bits de configuração (bitstreams) dos dispositivos, que configuram e reconfiguram o dispositivo determinando a função que o mesmo irá desempenhar a partir do momento em que é configurado ou reconfigurado. No momento da configuração, são especificadas (configuradas) além da função que cada elemento reconfigurável irá desempenhar, as portas que serão de entrada ou de saída de cada elemento reconfigurável da matriz. Desta forma, esta configuração das portas gera um outro tipo de configuração que é a configuração do roteamento dos dados. Este roteamento é de grande importância para o desempenho e utilização do dispositivo reconfigurável, pois quanto melhor o roteamento, melhor a utilização da área do dispositivo reconfigurável e melhor o desempenho conseguido na execução das funções configuradas no dispositivo. É essa configuração do roteamento que vai influenciar no tempo que o dispositivo vai levar para responder a um sinal numa entrada e gerar uma saída. É nessa fase do roteamento onde também se deve preocupar com questões como interferência de sinais (quando a integridade de, por exemplo, um barramento pode ser comprometida devido a freqüência que o dispositivo esteja utilizando ser alta e interferir nos valores dos bits que trafegam por esse caminho). 18

19 Fig Arquitetura interna de um FPGA Um FPGA típico possui uma arquitetura interna composta de uma matriz de blocos lógicos configuráveis (CLB - Configurable Logic Block) cercados por uma rede de interconexão programável, formada de blocos de interconexão. Circundando todo o circuito, existem os blocos de entrada e saída (IOB - Input Output Block), que também são programáveis, e que servem como interface entre o mundo exterior e a lógica interna. A arquitetura de um CLB varia de família para família e de fabricante para fabricante, mas basicamente são compostos de pontos de entrada, que se conectam a blocos que implementam funções puramente combinacionais, (LUT - Lookup table), multiplexadores que direcionam o fluxo dos sinais internamente ao CLB; e de registradores (tipicamente flip-flops) que estão ligados às saídas e também podem realimentar as entradas dos geradores de funções combinacionais. Todos os elementos são configuráveis e propiciam uma grande flexibilidade para implementação de funções. A rede de interconexão programável é composta por diferentes tipos de segmentos de conexão, capazes de interligar a maioria das entradas e saídas dos CLB s entre si e aos IOB s. Isso tudo permite que circuitos complexos, máquinas de estado, e algoritmos sejam implementados nos FPGA s. Como podemos observar existem recursos disponíveis para a implementação de paralelismo na arquitetura interna dos dispositivos reconfiguráveis. Além disso, existem os recursos de configuração ou reconfiguração do dispositivo (re)configurável, apresentados nos capítulos dois e três, como conceitos e características arquiteturais, que podem apresentar as seguintes características: capacidade de realizar uma única configuração ou muitas reconfigurações, a reconfiguração pode ser estática ou dinâmica, pode ser realizada em tempo de 19

20 compilação ou em tempo de execução, pode ser parcial ou total, modo de configuração único ou múltiplo, quantidade de configurações armazenadas simultaneamente no dispositivo, e o tempo gasto com a configuração ou a reconfiguração. Na reconfiguração estática, o dispositivo é configurado antes de começar a fazer a computação (processamento) dos dados. Neste tipo de configuração, o dispositivo é primeiramente configurado e mantêm o seu estado e funcionalidades enquanto se necessite destas características. Caso se necessite reconfigurar para que se tenha outra funcionalidade, o dispositivo para de executar as operações e reconfigura-se o dispositivo para depois voltar a executar novamente as operações de computação. Já na reconfiguração dinâmica, o dispositivo é configurado e começa a processar os dados de entrada. Quando o dispositivo necessita de alguma nova funcionalidade, reconfigura-se uma área que não esteja processando nenhum dado e a reconfiguração ocorre paralelamente à execução das respectivas operações de computação. Nem todos os dispositivos possuem reconfiguração dinâmica. Dessa forma, os dispositivos que não possuem esta característica, dependendo da aplicação, perdem em desempenho. Passada a etapa de configuração, os dispositivos reconfiguráveis estão prontos para serem usados. Normalmente, os sistemas reconfiguráveis híbridos usam um hardware reconfigurável junto a um processador de propósito geral (GPP general purpose processor) que o auxilia nos processos. O dispositivo reconfigurável, geralmente é um FPGA. Este dispositivo serve para acelerar a execução de algoritmos mapeando as partes que requerem uma demanda computacional grande para o substrato reconfigurável. Já o GPP, serve para executar o algoritmo que não pode ser eficientemente acelerado pelo dispositivo reconfigurável. Assim sendo, os sistemas reconfiguráveis híbridos utilizam, nesses casos, os dispositivos reconfiguráveis como sendo um co-processador para o GPP. Cada elemento reconfigurável pode variar de uma simples lookup table (LUT) de 3 bits até uma complexa unidade lógica aritmética (ALU aritmetic logic unit) de 4 bits ou mais bits. Esta diferença em termos (nível) de simplicidade / complexidade é chamada granularidade do dispositivo reconfigurável. Dispositivos mais simples (de grão fino) são indicados para aplicações de manipulação no nível dos bits, enquanto os mais complexos (dispositivos de grão grosso) são indicados para aplicações que envolvem computações mais complexas como manipulações de imagens e outras 20

21 típicas aplicações de caminho de dados, com manipulação de dados com largura (codificação) de vários bits. A seguir apresentamos e analisamos alguns dispositivos reconfiguráveis acadêmicos e/ou comerciais, considerando as principais características técnicas, vantagens e desvantagens. Entre os dispositivos comerciais (fabricantes e famílias) destacamos os mais utilizados no Brasil, fabricados pelas empresas Altera ( e Xilinx ( e também os fabricados pelas empresas Actel ( e Atmel ( Enquanto entre os dispositivos acadêmicos destacamos alguns indicados na tabela 6.1 apresentada no capítulo seis. Na análise destes dispositivos um aspecto muito importante é o estudo e a análise da arquitetura interna dos dispositivos reconfiguráveis, considerando os blocos lógicos e os blocos de interconexão. Pretendemos incluir esta análise detalhada numa versão futura deste minicurso. Os dispositivos mais utilizados atualmente para computação reconfigurável são os FPGA. Este tipo de dispositivo foi projetado inicialmente para prototipação de circuitos. Apesar de não serem inicialmente projetados e recomendados para computação reconfigurável, devido ao seu custo e fácil acesso, foi e está sendo amplamente utilizado para implementar o paradigma de computação reconfigurável. Dentre os principais fabricantes de FPGA destacam-se a Altera, Xilinx, Actel, Atmel e cada fabricante possui várias famílias de dispositivos, cada qual voltado para tipos diferentes de aplicações. A Altera possui as famílias (FPGAs) Stratix, Apex (Apex II, Apex 20k), Excalibur, Flex (Flex 10k, Flex 8000, Flex 6000), Mercury, Acex 1k e as famílias (CPLD) Max 7000, Max 3000A dentre outras. A família Stratix possui como características principais a disponibilidade de dispositivos de grão grosso com até elementos lógicos, 110Mbits de memória integrada, blocos DSP otimizados e E/S de alto desempenho com interfaces de alta velocidade. Já a família Apex é composta por dispositivos de grão grosso que são feitos para servir como soluções SoPC (System on a programmable chip) complexas. Os dispositivos da família Flex são compostos de portas lógicas onde a capacidade (o número de portas lógicas) dos dispositivos varia de 10 mil a 250 mil portas lógicas, PLL e atraso programável e são os dispositivos da Altera que possuem o melhor custo / benefício. Além disso, podemos utilizar o NIOS soft embedded processor com as famílias Stratix e 21

22 Excalibur. E com todos os dispositivos da Altera quando usamos o ambiente de projeto Quartus II. A Xilinx possui as famílias (FPGAs) Virtex (Virtex, Virtex II, Virtex II Pro), Spartan (Spartan XL, Spartan II, Spartan IIE) e as famílias (CPLDs) CoolRunner, CoolRunner II, XC 9500 como principais. Cada uma destas famílias possui suas características próprias e suas aplicações. A família Virtex (Fig. 4.2) foi introduzida em 1998 e foi a primeira linha de FPGAs a oferecer 1 milhão de portas lógicas. Esta família redefiniu a lógica programável expandindo as capacidades tradicionais do FPGA para incluir um poderoso conjunto de características que endereçam problemas no nível da placa para projeto de sistemas de alto desempenho. Hoje a família Virtex possui dispositivos com mais de três milhões de portas lógicas e oferecem um chip de memória adicional para aplicações de roteamento de redes (network switch applications). Já a família Spartan, é ideal para aplicações em que se necessita uma relação custo / benefício e pode substituir dispositivos com portas lógicas fixas, produtos de aplicação específica em geral e produtos como chip sets de interface com barramento. Esta família oferece algumas das características mais avançadas atualmente em termos de FPGA, o que inclui suporte programável para até 19 padrões de E/S (incluindo diferentes tipos de E/S como LVDS, ou low voltage differential signalling); grande quantidade de IP (o que inclui cores de processador e de DSP avançados), memória RAM integrada no dispositivo e delay lock-loops para o gerenciamento a nível do dispositivo (chip) e da placa. Os dispositivos da família Spartan provêm uma integração de funções como as de DSP, tradução LVDS, processamento secundário, PLLs, FIFOs e drivers de barramento de sistema que no passado eram necessários para completar um projeto de sistema computacional. Fig Dispositivo da série Xilinx Virtex 22

23 A Actel possui as famílias de FPGAs de propósito geral, de dispositivos Embedded Programmable Gate Array (EPGA ) que são dispositivos com núcleo FPGA embutido (EPGA ) e de FPGAs Antifuse. As técnicas ou tecnologias de programação ou configuração podem ser Antifuse, Flash e SRAM Um dispositivo FPGA Antifuse é um dispositivo programável (configurável) que utiliza a tecnologia Antifuse, que é não volátil, conserva ou retém a sua configuração indefinidamente e permite apenas uma única configuração. Os dispositivos que utilizam esse tipo de técnica (tecnologia) de configuração (programação) não podem suportar o processo ou operação de reconfiguração que é essencial para implementar os sistemas computacionais reconfiguráveis. Deste modo, não podemos implementar sistemas computacionais reconfiguráveis com esse tipo de dispositivo configurável ou programável. A Atmel possui três principais famílias de dispositivos programáveis, Field Programmable Gate Array (FPGA), que são as famílias AT6000, AT40K e AT40KAL. A família AT6000 (FPGAs) foi projetada para acelerar o desempenho de sistemas baseados em processador enquanto reduz consumo de potência, número de componentes e custo. O grande número de registradores (1,024-6,400) a tornam ideal para uso como coprocessador DSP reconfigurável. As famílias (séries) AT40K e AT40KAL, são FPGAs com densidades que variam de 5K a 50 K portas utilizáveis e são projetadas para alta densidade, computação DSP intensiva e outros projetos de lógica rápida. A família AT40KAL soluciona os problemas de compromisso entre lógica e SRAM provendo memória FreeRAM (independente de células lógicas) rápida de 10 ns, flexível e distribuída. As famílias AT6000, AT40K e AT40KAL são FPGAs com a habilidade de implementar projetos de cache lógico, onde parte do FPGA pode ser reprogramado sem a perda dos dados armazenados nos registradores, enquanto o restante do FPGA continua a operar (funcionar) sem ruptura (parada). Além dessas famílias de FPGAs a Atmel possui a família FPSLIC, Field Programmable System Level Integrated Circuits (FPSLIC) que combinam de 5K a 50K portas das FPGAs AT40KAL com até 36K de SRAM e uma MCU AVR de 25 MHz. Além dos próprios dispositivos reconfiguráveis um outro aspecto muito importante no projeto e desenvolvimento de sistemas computacionais reconfiguráveis e suas aplicações são os métodos, ambientes e ferramentas de 23

24 projeto disponíveis. Existem ferramentas, ambientes e métodos de projeto de sistemas eletrônicos usando dispositivos reconfiguráveis que são proprietários e específicos para determinados fabricantes e/ou famílias de dispositivos reconfiguráveis e outros que são padrão e independentes de fabricantes e famílias de dispositivos. Uma análise destes conceitos e tipos de ferramentas será apresentada no capítulo cinco intitulado "Desenvolvimento de aplicações em sistemas reconfiguráveis", enquanto os detalhes específicos dos ambientes e ferramentas para cada fabricante e família de dispositivos podem ser encontrados nas documentações específicas e nos sites WEB dos fabricantes desses dispositivos. Existem alguns dispositivos reconfiguráveis que foram projetados e otimizados especialmente para a implementação de computação reconfigurável ou seja de sistemas computacionais reconfiguráveis. Na análise dos principais problemas para se implementar sistemas computacionais reconfiguráveis com os dispositivos disponíveis (comercialmente) podemos destacar os problema relacionados com: desempenho, configuração do dispositivo, flexibilidade do dispositivo, adequação da arquitetura interna do dispositivo e modo (forma) de especificação e programação da funcionalidade desejada. E também podemos indicar as principais características técnicas desejáveis nos dispositivos reconfiguráveis. As principais conclusões desse capítulo são que a maioria dos dispositivos reconfiguráveis comerciais disponíveis atualmente, principalmente os FPGA, ainda não são os dispositivos ideais para a implementação de sistemas computacionais reconfiguráveis. Pois são orientados para implementar lógica de cola (glue logic) de sistemas digitais, implementar sistemas digitais fixos, emulação de lógica digital e implementação de protótipos de sistemas digitais. Mas esta situação têm e está sendo alterada nos últimos anos. Geralmente os tempos de reconfiguração são longos e não compatíveis com a idéia de reconfiguração em tempo de execução. Deste modo, acreditamos que ainda seja necessário o desenvolvimento (surgimento) de novos tipos e famílias de dispositivos reconfiguráveis orientados e otimizados para utilização em sistemas computacionais reconfiguráveis. Além disso, normalmente são configurados usando métodos, ambientes e ferramentas típicas de projeto (e profissionais) de hardware e não de computação. Considerando o uso dos dispositivos reconfiguráveis em sistemas computacionais reconfiguráveis, principalmente com reconfiguração em tempo de execução, esperamos ambientes 24

25 de projeto baseados em modelos computacionais e linguagens de programação de alto nível. 25

26 5 Desenvolvimento de soluções em sistemas computacionais reconfiguráveis Existem diversos métodos e técnicas para o desenvolvimento de aplicações/soluções em sistemas computacionais. Neste momento, considerando principalmente o contexto da computação reconfigurável, a apresentação e possível resposta de algumas perguntas podem nos auxiliar no estudo e aprendizado desse tópico, entre as quais destacamos algumas: i) quais são os métodos e técnicas usadas para desenvolver soluções implementadas em, ou usando, sistemas computacionais reconfiguráveis?; ii) quais são as principais diferenças em relação aos métodos e técnicas usadas com computação tradicional?; iii) existem métodos, técnicas e ferramentas específicas para o desenvolvimento de soluções em sistemas computacionais reconfiguráveis? Neste capítulo apresentamos alguns métodos e técnicas usadas atualmente para o desenvolvimento de soluções de problemas, aplicações computacionais ou programas, em sistemas computacionais tradicionais e reconfiguráveis. Além disso, apresentamos alguns possíveis modos de criação ou desenvolvimento de programas fonte (soluções) para implementação em sistemas computacionais reconfiguráveis. Apresentamos e analisamos algumas ferramentas de auxílio ao projeto e programação de sistemas computacionais reconfiguráveis como: ambientes de projeto e desenvolvimento, linguagens de programação, compiladores, depuradores e simuladores. Os leitores interessados podem encontrar material adicional e mais avançado em [Compton 2002]. 5.1 Sistemas Computacionais Tradicionais O desenvolvimento de soluções usando sistemas computacionais tradicionais pode ser dividido em dois tipos de implementação: software e hardware. A escolha do tipo de implementação é feita com base, principalmente, no tipo de problema, a tecnologia disponível, os custos e no tempo de execução exigido pela aplicação. O desenvolvimento de um software está, ou deveria estar, baseado nas técnicas de engenharia de software [Pressman 2001]. De maneira simplificada, o desenvolvedor inicia, ou deveria iniciar, com a descrição do problema e a análise do mesmo. Depois de feita a análise, o desenvolvedor deve fazer o projeto da solução. É importante observar que ao final dessa etapa, o desenvolvedor tem a solução para o problema e deve saber quais os paradigmas de programação e computação que melhor se adequam à solução proposta. Muitas vezes os diversos paradigmas (exemplo: procedural, lógico) não são avaliados diminuindo assim o 26

27 desempenho e até mesmo a capacidade de resolução de problema da solução proposta. Depois disso, a solução é representada através de um algoritmo. A partir da codificação desse algoritmo em uma determinada linguagem obtém-se o programa fonte. Após compilar o programa fonte é gerado um programa executável para um determinado nível arquitetural, que pode ser o sistema operacional (nível híbrido), que é composto por instruções do nível sistema operacional e também do nível ISA (Instruction Set Architecture). O programa executável é composto de uma série de instruções entendidas pelo sistema operacional e/ou pertencentes ao conjunto de instruções do processador. Quando o programa é executado, suas instruções são lidas, decodificadas e executadas pelo processador. Pode-se dizer que a execução de um software é a utilização de um hardware programável com sua funcionalidade definida ou controlada usando-se apenas as instruções do nível ISA desse hardware programável. A utilização de software garante flexibilidade ao sistema. Isso significa que várias soluções (funcionalidades) podem ser implementadas nesse sistema. Pode-se então dizer que o processador e, desse modo, o sistema computacional, possui funcionalidade programável (variável), isto é, a funcionalidade do processador é modificada de acordo com o software que está sendo executado. O desenvolvimento de soluções em hardware é feito utilizando as técnicas de engenharia eletrônica ou engenharia de hardware. Novamente tem-se a definição do problema e sua análise, no entanto, apesar de existir uma etapa de projeto de solução, nem sempre existe uma representação da solução através de um algoritmo, podendo ser implementado somente um circuito eletrônico. Depois do projeto da solução, é feita a síntese do circuito. A funcionalidade de uma implementação pode ser vista de duas maneiras diferentes: uma externa e uma interna. A externa se refere as funcionalidades de uma implementação do ponto de vista de quem a utiliza. Nessa visão, uma ULA (Unidade Lógica Aritmética) é programável, já que algumas vezes ela faz soma, outras subtração, dependendo dos parâmetros que são passados para ela. No entanto, usando uma visão interna, devemos considerar que foi previsto e definido no momento do projeto da implementação. Nessa visão, a ULA é não programável, porque ela só realiza as operações que foram previstas e definidas em seu projeto e implementação. Considerando a visão (estrutura e funcionalidade) interna, uma implementação em hardware fixo possui uma funcionalidade (fixa) não programável, 27

28 gerando perda de flexibilidade. Mas é importante considerar uma das vantagens da implementação em hardware, que é o desempenho. Comparando-se tecnologias semelhantes, uma implementação em hardware possui desempenho melhor que uma implementação em software porque, entre outras coisas, não é necessário ler e decodificar instruções, o hardware já sabe o que fazer. Assim, a escolha do tipo de implementação é feita com base nos fatores anteriormente citados. No entanto, muitas vezes, esses dois tipos de implementação não são totalmente satisfatórios. Como citado anteriormente, pode existir um desejo de unir flexibilidade e desempenho. Nesse contexto surgiram os sistemas computacionais reconfiguráveis [Villasenor 1997] [Ordonez 2000] [SCR 2001]. 5.2 Sistemas Computacionais Reconfiguráveis Os sistemas computacionais reconfiguráveis surgiram como uma implementação intermediária, entre os tradicionais hardware e software. Esses sistemas pretendem alcançar, ou se aproximar do desempenho das soluções implementadas em hardware e da flexibilidade das soluções implementadas em software. O desenvolvimento de soluções implementadas em sistemas computacionais reconfiguráveis inicia com a descrição e análise do problema [Coelho 1998]. A solução é um pouco diferente das tradicionais. Como os sistemas reconfiguráveis podem combinar hardware reconfigurável (solução em hardware reconfigurável) com hardware programável (solução em software), a solução pode ser dividida em duas partes. Essa fase, em que a solução é dividida é conhecida como particionamento [Albuquerque 1999]. Depois dessa fase, o desenvolvimento do software é feito de maneira semelhante à tradicional. Os sistemas reconfiguráveis podem ser híbridos, implementando parte da solução em hardware reconfigurável e a parte de software em hardware programável (por exemplo, processadores). No entanto eles podem implementar a solução somente em hardware reconfigurável. A implementação da solução, ou de parte dela, em hardware reconfigurável acontece da mesma maneira. Além de sistemas que utilizam somente hardware reconfigurável e os que utilizam também hardware programável, podem existir sistemas em que parte da solução é implementada em software e hardware programável, parte em hardware reconfigurável e uma outra parte em hardware fixo. 28

29 Inicialmente, o desenvolvimento de soluções de sistemas reconfiguráveis implementadas em hardware reconfigurável era feito através das técnicas de engenharia eletrônica ou engenharia de hardware, semelhante ao desenvolvimento de soluções de sistemas tradicionais implementadas em hardware fixo. Com o aperfeiçoamento dos dispositivos reconfiguráveis, como os FPGAs, e dos ambientes de auxílio ao projeto entre outros fatores, o desenvolvimento da parte da solução implementada em hardware reconfigurável mudou um pouco. Essa mudança ocorreu pelo desejo de aproximar o desenvolvimento de soluções em sistemas reconfiguráveis ao desenvolvimento de software, desejando-se como resultado um programa e não um circuito, como ocorre no desenvolvimento de hardware fixo. Surge então o conceito de programa fonte que será transformado, gerando os bits de configuração dos dispositivos reconfiguráveis, independentemente do método de criação e desenvolvimento utilizado. 5.3 Modos de desenvolvimento de soluções em sistemas reconfiguráveis Inicialmente, o desenvolvedor de soluções para sistemas computacionais reconfiguráveis fazia o particionamento, quando necessário, e depois configurava o hardware reconfigurável diretamente, considerando os blocos lógicos e de conexão que o compõe. Como essa técnica exige grande conhecimento do hardware alvo por parte do desenvolvedor, foram criados modos de desenvolvimento, ambientes, ferramentas e linguagens para facilitar esse trabalho [Compton 2002]. Algumas dessas abordagens que surgiram e que servem para abstrair a arquitetura do sistema alvo serão descritas a seguir. A primeira abordagem é a utilização de diagramas esquemáticos. Nessa solução, o particionamento, se houver, é feito manualmente. A parte da solução implementada em hardware reconfigurável é desenvolvida utilizando ferramentas que a partir da captura do esquemático geram os bits de configuração de um determinado dispositivo reconfigurável. Há necessidade de conhecimento de componentes lógicos e desenvolvimento de hardware por parte do desenvolvedor. O esquemático é uma representação visual de portas e componentes lógicos combinacionais e seqüenciais do hardware que faz parte da solução implementada no sistema reconfigurável. Geralmente nesse tipo de ferramenta é possível usar componentes mais complexos já prontos, como somadores, ULAs (Unidade Lógica Aritmética) e memórias, por exemplo. Essa abordagem geralmente não é aplicada a projetos grandes por causa da dificuldade que existe em se fazer uma 29

30 representação gráfica de muitos componentes. Além disso, o desenvolvedor ainda precisa ter um bom conhecimento de projeto de sistemas lógicos. Outra abordagem é a utilização de linguagens de descrição de hardware como VHDL [Ashenden 1990] ou Verilog para a parte da solução que é implementada em hardware. Programas escritos nessas linguagens são compilados usando-se uma ferramenta que podem gerar os bits de configuração para um dispositivo específico. VHDL é uma linguagem estruturada que oferece a possibilidade de descrever o hardware e este ser simulado antes de sua síntese, facilitando a validação ou verificação, tanto em termos de funcionamento quanto em termos de tempos de atraso dos componentes e desempenho, sem a necessidade da prototipação do sistema. Além disso, um programa em VHDL pode ser particionado e uma parte dele ser implementada em software (hardware programável) e a outra parte em hardware reconfigurável. Um programa em VHDL pode ser escrito basicamente usando dois tipos (modelos) de descrição: estrutural e comportamental. Na descrição estrutural, a organização física e topológica do sistema é descrita. Isso quer dizer que são especificadas as entradas e/ou saídas, os componentes lógicos, a interligação deles e os sinais que compõem o sistema. Existem bibliotecas em VHDL que contêm entidades que podem ser usadas nos projetos, como somadores, contadores, multiplicadores. No entanto, na abordagem usando VHDL estrutural é necessário conhecimento de projeto de hardware. Na descrição comportamental, não é necessário descrever a organização física e topológica do sistema, somente o comportamento. Nessa abordagem, são descritas as funções (comportamento) do sistema. Um programa que utiliza esse tipo de descrição possui o mesmo formato de um programa fonte escrito em uma linguagem de programação de alto nível, como C++. Essa abordagem diminui a necessidade de conhecimento em projeto de hardware, aumentando a facilidade de desenvolvimento do sistema. No entanto, os sistemas gerados a partir desse tipo de descrição podem não ser tão otimizado em questões de desempenho e área de dispositivo ocupada quanto os descritos em VHDL estrutural. Além disso, é necessário conhecer a linguagem e ela ainda é mais parecida com uma descrição de hardware do que de software. A última abordagem é a descrição do sistema através de uma linguagem de programação de alto nível. Nessa abordagem, o desenvolvedor não precisa saber como é feito o projeto de hardware ou conhecer linguagens específicas de descrição 30

31 de hardware. Além disso, o desenvolvimento do software e do hardware pode ser feito em conjunto. Apesar do possível desenvolvimento em conjunto, alguns compiladores não conseguem fazer o particionamento automático. Nesses casos, se existir particionamento, o desenvolvedor deve indicar para o compilador quais as partes do sistema serão implementadas em hardware reconfigurável e quais serão implementadas em software através de algumas instruções ou diretivas de compilação. Quando o compilador é capaz de fazer o particionamento sozinho, o programa fonte de um sistema computacional tradicional pode ser compilado pela ferramenta, que faz o particionamento da solução, se necessário, e utilizado em um sistema computacional reconfigurável. Essa abordagem garante enorme flexibilidade e facilidade de programação do sistema. No entanto, as soluções geradas podem não ter um desempenho tão bom quanto se a arquitetura do sistema fosse descrita manualmente. Além disso, otimizações baseadas em largura de bits de operandos geralmente não são realizadas já que os tipos usados são os de tamanho fixo das linguagens de programação. Esse problema pode ser resolvido através do uso de comandos especiais ou diretivas de compilação, no entanto a programação será diferente da tradicional. Todos os problemas relatados para essa abordagem dependem da ferramenta utilizada, podendo ser reduzidos consideravelmente. 5.4 Ferramentas e linguagens de auxílio a projeto e programação Nessa seção, são dados alguns exemplos de ferramentas e linguagens (descrição de hardware e alto nível) de auxílio ao projeto e programação de sistemas reconfiguráveis que se encaixam nas abordagens anteriormente citadas. A ferramenta analisada para o projeto através de esquemático e linguagem de descrição de hardware é o Project Manager do ambiente Xilinx Foundation versão 4 [Foundation 2002]. Sua interface principal pode ser visualizada na Figura 5.1. Essa ferramenta permite, para projeto, a utilização de VHDL, Verilog e módulos de esquemático. Depois da descrição da solução implementada em hardware, a ferramenta faz a verificação da sintaxe do projeto e é capaz de fazer simulações funcionais a nível de portas lógicas e comportamentais para linguagens de descrição de alto nível. A parte da ferramenta que faz simulações lógicas é o Logic Simulator e pode ser vista na Figura 5.2. O Project Manager também é capaz de gerar os bits de configuração para diversos dispositivos da Xilinx. Para isso, a ferramenta faz o 31

32 mapeamento da solução no dispositivo, e gera os bits de configuração que podem ser enviados para o dispositivo reconfigurável. 5.1 Ambiente Project Manager da Xilinx 5.2 Logic Simulator do Project Manager da Xilinx A Figura 5.3 apresenta um esquemático de um meio somador implementado em um dos subsistemas do Project Manager, o Schematic Editor. Nesse esquemático estão representadas as entradas A e B e as saídas SUM e CARRY. Um meio somador realiza a soma de dois bits e possui como resultado a soma (SUM) e um sinal de vai-um (CARRY). As portas lógicas necessárias e as ligações entre elas, as entradas e saídas são representadas. O mesmo meio somador é descrito em VHDL nas Figuras 5.4, 5.5, 5.6. Existem diversas maneiras de se descrever esse bloco lógico e essa é apenas uma delas. Em VHDL, as entradas e saídas (interface) são definidas em um bloco conhecido como entidade, que é indicado pela palavra chave entity. Cada entrada ou saída possui um dos tipos pré-definidos pela linguagem ou definidos pelo programador. O bloco iniciado pela palavra reservada architecture indica a arquitetura da solução, isto é, a funcionalidade do bloco. Essa funcionalidade pode ser indicada através da descrição da organização física e topológica (estrutura) da solução ou através da descrição do comportamento da mesma. 32

33 5.3 Diagrama esquemático de um meio somador feito na ferramenta Schematic Editor do Project Manager da Xilinx Nesse exemplo, como pode ser visto na Figura 5.4, é criada uma entidade HALFADD com os bits A e B como entrada e os bits SUM e CARRY como saída. É possível criar diversas arquiteturas para uma mesma entidade e isso foi feito nesse exemplo, nas Figuras 5.5 e 5.6. Entity HALFADD is Port (A, B : in bit; SUM, CARRY : out bit); End HALFADD; 5.4 Representação da entidade meio somador em VHDL A primeira arquitetura (Figura 5.5) foi descrita utilizando VHDL comportamental. Nesse modo de descrição, é utilizado o conceito de processo. Um processo é um corpo de código seqüencial que pode ser ativado através de uma mudança no estado da lista de sinais ou portas sensíveis [Ashenden 1990]. Essa lista é indicada logo após a palavra reservada process nesse exemplo. Dessa maneira, uma mudança no bit A ou no bit B faz com que o processo seja ativado. Nesse processo é descrito o comportamento do meio somador comparando-se os valores de A e B e transmitindo os valores através de sinais a SUM e CARRY. Se uma arquitetura tiver mais de um processo ativado simultaneamente, eles executarão concorrentemente. 33

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar - Aula 1 - O NÍVEL DA LÓGICA DIGITAL 1. INTRODUÇÃO Na parte inferior da hierarquia da figura abaixo encontramos o nível da lógica digital, o verdadeiro hardware do computador. Este nível situa-se na fronteira

Leia mais

Dispositivo Lógico Programável(PLD)

Dispositivo Lógico Programável(PLD) Dispositivo Lógico Programável(PLD) Para reduzir o número de CI's(Circuitos Integrados) a serem usados num projeto digital, é necessário colocar mais funções em um mesmo chip. Isso tem sido feito com evolução

Leia mais

FPGA - Field Programmable Gate Array

FPGA - Field Programmable Gate Array FPGA - Field Programmable Gate Array 1985/86: Xilinx introduz nova família de PLDs FPGA - Field Programmable Gate Array agregados regulares de blocos lógicos configuráveis (CLB para XILINX) ligações programáveis

Leia mais

Introdução à Computação

Introdução à Computação Universidade Federal de Campina Grande Departamento de Sistemas e Computação Introdução à Computação Conceitos Básicos de Eletrônica Digital (Parte IV) Prof. a Joseana Macêdo Fechine Régis de Araújo joseana@computacao.ufcg.edu.br

Leia mais

Hardware Reconfigurável

Hardware Reconfigurável Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Hardware Reconfigurável DCA0119 Sistemas Digitais Heitor Medeiros Florencio Tópicos Alternativas de projeto

Leia mais

Profa. Luiza Maria Romeiro Codá Profa. Dra Maria Stela Veludo de Paiva

Profa. Luiza Maria Romeiro Codá Profa. Dra Maria Stela Veludo de Paiva Profa. Luiza Maria Romeiro Codá Profa. Dra Maria Stela Veludo de Paiva são circuitos integrados programáveis pelo usuário, Não apresentam uma função lógica definida, até que sejam configurados. pssuem

Leia mais

Dispositivos de Lógica Programável

Dispositivos de Lógica Programável Dispositivos de Lógica Programável Evolução Válvula no início de 1940 Transistor em 1947 Não aquece como as válvulas Fisicamente menor 1961 primeiro integrado TTL 74LSXX Década de 1970 surge SPLD Simple

Leia mais

ELD - Eletrônica Digital Aula 11 Introdução à Lógica Programável. Prof. Antonio Heronaldo de Sousa

ELD - Eletrônica Digital Aula 11 Introdução à Lógica Programável. Prof. Antonio Heronaldo de Sousa ELD - Eletrônica Digital Aula 11 Introdução à Lógica Programável Prof. Antonio Heronaldo de Sousa Agenda - Introdução - Lógica Programável - Dispositivos de Lógica Programável - Arranjos Lógicos Programáveis

Leia mais

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL INTRODUÇÃO À TECNOLOGIA DA ORGANIZAÇÃO COMPUTACIONAL PROFESSOR CARLOS MUNIZ ORGANIZAÇÃO DE UM COMPUTADOR TÍPICO Memória: Armazena dados e programas Processador (CPU - Central Processing Unit): Executa

Leia mais

FPGA & VHDL. Tutorial

FPGA & VHDL. Tutorial FPGA & VHDL Tutorial 2009-2 FPGA FieldProgrammableGateArray Dispositivo lógico contendo uma matriz de: Células lógicas genéricas Configuráveis ( programadas ) para desempenhar uma função simples Chaves

Leia mais

Dispositivos Lógicos Programáveis (PLDs) Leandro Schwarz

Dispositivos Lógicos Programáveis (PLDs) Leandro Schwarz Dispositivos Lógicos Programáveis (PLDs) Leandro Schwarz Conceito PLD - Programmable Logic Device; Circuito integrado com grande número de portas lógicas configuráveis, flip-flops e registradores; Permite

Leia mais

Arquitetura de Computadores. Processamento Paralelo

Arquitetura de Computadores. Processamento Paralelo Arquitetura de Computadores Processamento Paralelo 1 Multiprogramação e Multiprocessamento Múltiplas organizações de computadores Single instruction, single data stream - SISD Single instruction, multiple

Leia mais

Computadores dedicados

Computadores dedicados Computadores dedicados CPU processador de usos gerais produção em larga escala, baixo custo ASIP processador para uma área de aplicação desenvolvimento ASIC circuito dedicado para uma aplicação circuito

Leia mais

FPGA & VHDL. Tutorial Aula 1. Computação Digital

FPGA & VHDL. Tutorial Aula 1. Computação Digital FPGA & VHDL Tutorial Aula 1 Computação Digital FPGA Field Programmable Gate Array Dispositivo lógico contendo uma matriz de: Células lógicas genéricas Configuráveis ( programáveis ) para desempenhar uma

Leia mais

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização Hardware: Componentes Básicos Arquitetura dos Computadores Dispositivos de Entrada Processamento Dispositivos de Saída Armazenamento Marco Antonio Montebello Júnior marco.antonio@aes.edu.br Sistema de

Leia mais

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS DLP. 15/8/2013 Prof. Joselito ELP1DLP1 / npee / DEE 1

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS DLP. 15/8/2013 Prof. Joselito ELP1DLP1 / npee / DEE 1 DISPOSITIVOS LÓGICOS PROGRAMÁVEIS DLP 15/8/2013 Prof. Joselito ELP1DLP1 / npee / DEE 1 1. FAMILIAS DE CIRCUITOS LÓGICOS DIGITAIS 1.1. Família Lógica TTL 1.2. Família Lógica MOS/CMOS 15/8/2013 Prof. Joselito

Leia mais

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS. SEL Sistemas Digitais Prof. Homero Schiabel

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS. SEL Sistemas Digitais Prof. Homero Schiabel DISPOSITIVOS LÓGICOS PROGRAMÁVEIS SEL 414 - Sistemas Digitais Prof. Homero Schiabel 1. Introdução Operação do circuito lógico pode ser descrita por: Tabela da Verdade Expressão booleana Dispositivo de

Leia mais

Arquitetura e organização de computadores Uma visão geral

Arquitetura e organização de computadores Uma visão geral Arquitetura e organização de computadores Uma visão geral MAC 344 - Arquitetura de Computadores Prof. Siang Wun Song Baseado em W. Stallings - Computer Organization and Architecture Objetivo do disciplina

Leia mais

Capítulo13 Arquiteturas de Dispositivos Lógicos Programáveis Pearson. Todos os direitos reservados.

Capítulo13 Arquiteturas de Dispositivos Lógicos Programáveis Pearson. Todos os direitos reservados. Capítulo13 Arquiteturas de Dispositivos Lógicos Programáveis slide 1 Temas abordados nesse capítulo: - Descrever as diferentes categorias de dispositivos de sistemas digitais. - Descrever os diferentes

Leia mais

Arranjo de Processadores

Arranjo de Processadores Um arranjo síncrono de processadores paralelos é chamado arranjo de processadores, consistindo de múltiplos elementos processadores (EPs) sob a supervisão de uma unidade de controle (UC) Arranjo de processadores

Leia mais

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores Ciência da Computação Arq. e Org. de Computadores Processadores Prof. Sergio Ribeiro Composição básica de um computador eletrônico digital: Processador Memória Memória Principal Memória Secundária Dispositivos

Leia mais

Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP. Memórias de Dados e de Programa

Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP. Memórias de Dados e de Programa 4. Memórias de Dados e de Programa Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP 4.1 Memórias Semicondutoras Algumas definições Célula: Dispositivo de armazenamento de 1 bit. Palavra:

Leia mais

LISTA DE EXERCÍCIOS #2 (BASEADO NO ENADE COMPUTAÇÃO)

LISTA DE EXERCÍCIOS #2 (BASEADO NO ENADE COMPUTAÇÃO) LISTA DE EXERCÍCIOS #2 (BASEADO NO ENADE 2005- COMPUTAÇÃO) 1) Apesar de todo o desenvolvimento, a construção de computadores e processadores continua, basicamente, seguindo a arquitetura clássica de von

Leia mais

Computadores e Programação (DCC/UFRJ)

Computadores e Programação (DCC/UFRJ) Computadores e Programação (DCC/UFRJ) Aula 3: 1 2 3 Abstrações do Sistema Operacional Memória virtual Abstração que dá a cada processo a ilusão de que ele possui uso exclusivo da memória principal Todo

Leia mais

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação MULTIPROCESSADORES

Leia mais

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 03: FUNCIONAMENTO DE UM COMPUTADOR Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE É UM COMPUTADOR?

Leia mais

Sistemas Operacionais. Conceitos de Hardware

Sistemas Operacionais. Conceitos de Hardware Sistemas Operacionais Conceitos de Hardware Sumário 1. Introdução 7. RISC e CISC 2. Processador 1. Operações de Processamento 2. Unidade de Controle 3. Ciclos de uma Instrução 3. Memória 1. Memória Principal

Leia mais

Infraestrutura de Hardware. Funcionamento de um Computador

Infraestrutura de Hardware. Funcionamento de um Computador Infraestrutura de Hardware Funcionamento de um Computador Computador: Hardware + Software Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é

Leia mais

Aula 11. Dispositivos Lógicos Programáveis. SEL Sistemas Digitais. Prof. Dr. Marcelo Andrade da Costa Vieira

Aula 11. Dispositivos Lógicos Programáveis. SEL Sistemas Digitais. Prof. Dr. Marcelo Andrade da Costa Vieira Aula 11 Dispositivos Lógicos Programáveis SEL 0414 - Sistemas Digitais Prof. Dr. Marcelo Andrade da Costa Vieira 1. Características Gerais l PLD Programmable Logical Device; l Agrupa um grande número de

Leia mais

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Versão 2013 RESUMO Nesta experiência será desenvolvido um projeto de sistema digital em um dispositivo programável (FPGA) com a

Leia mais

UMA HIERARQUIA DE MEMÓRIA PARA UM MODELO RTL DO PROCESSADOR RISC-V SINTETISÁVEL EM FPGA

UMA HIERARQUIA DE MEMÓRIA PARA UM MODELO RTL DO PROCESSADOR RISC-V SINTETISÁVEL EM FPGA UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE INFORMÁTICA GRADUAÇÃO EM ENGENHARIA DA COMPUTAÇÃO UMA HIERARQUIA DE MEMÓRIA PARA UM MODELO RTL DO PROCESSADOR RISC-V SINTETISÁVEL EM FPGA PROPOSTA DE TRABALHO

Leia mais

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES Adão de Melo Neto 1 INTRODUÇÃO Desde 1950, houveram poucas inovações significativas nas áreas de arquitetura e organização de computadores. As principais

Leia mais

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór Bacharelado em Sistemas de Informação Sistemas Operacionais Prof. Filipo Mór WWW.FILIPOMOR.COM - REVISÃO ARQUITETURAS PARALELAS Evolução das Arquiteturas Evolução das Arquiteturas Entrada CPU Saída von

Leia mais

Estendendo o Conjunto de Instruções de um PPC para Uso de Transformadas do H.264

Estendendo o Conjunto de Instruções de um PPC para Uso de Transformadas do H.264 Estendendo o Conjunto de Instruções de um PPC para Uso de Transformadas do H.264 Marcelo Schiavon Porto Roger E. C. Porto {msporto, recporto}@inf.ufrgs.br Introdução 2 O padrão H.264/AVC é o mais novo

Leia mais

Arquitetura e Organização de Computadores. Processador Registrador Memória. Professor Airton Ribeiro

Arquitetura e Organização de Computadores. Processador Registrador Memória. Professor Airton Ribeiro Arquitetura e Organização de Computadores Processador Registrador Memória Professor Airton Ribeiro airton.ribeiros@gmail.com Processador A função de um computador é executar tarefas com a finalidade de

Leia mais

Field Programmable Gate Array - FPGA / Mini-curso de Computação Híbrida Reconfigurável

Field Programmable Gate Array - FPGA / Mini-curso de Computação Híbrida Reconfigurável Field Programmable Gate Array - FPGA Mini-curso de Computação Híbrida Reconfigurável Vitor C. F. Gomes, Andrea S. Charão, Haroldo F. C. Velho Última atualização: 19 de setembro de 2009 Universidade Federal

Leia mais

Uma Arquitetura Reconfigurável para Prototipagem de Sistemas de Hardware e Software

Uma Arquitetura Reconfigurável para Prototipagem de Sistemas de Hardware e Software Uma Arquitetura Reconfigurável para Prototipagem de Sistemas de Hardware e Software Aluno: Rodrigo César de Moraes Tavares 1 Orientador: Claudionor José Nunes Coelho Jr. Co-orientador: Arnaldo de Albuquerque

Leia mais

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis E.T.M./2011 (adaptação) RESUMO Nesta experiência será apresentada uma metodologia estruturada para projeto de sistemas digitais

Leia mais

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Versão 2012 RESUMO Nesta experiência será apresentada uma metodologia estruturada para projeto de sistemas digitais utilizando FPGAs

Leia mais

Projetos de Circuitos Digitais em VHDL e FPGA

Projetos de Circuitos Digitais em VHDL e FPGA Projetos de Circuitos Digitais em VHDL e FPGA Cap. 1 - Dispositivos Lógicos Programáveis Prof. Erivelton Geraldo Nepomuceno Engenharia Elétrica UFSJ - Universidade Federal de São João del-rei 19 de fevereiro

Leia mais

MEMÓRIAS SEMICONDUTORAS

MEMÓRIAS SEMICONDUTORAS MEMÓRIAS SEMICONDUTORAS Em um sistema computacional subentende-se memória como qualquer dispositivo capaz de armazenar dados, mesmo temporariamente. Atualmente, os métodos de armazenamento de informação

Leia mais

Arquiteturas RISC e CISC. Adão de Melo Neto

Arquiteturas RISC e CISC. Adão de Melo Neto Arquiteturas RISC e CISC Adão de Melo Neto 1 Arquitetura RISC Arquitetura RISC. É um das inovações mais importantes e interessantes. RISC significa uma arquitetura com um conjunto reduzido de instruções

Leia mais

Adriano J. Holanda FAFRAM. 4 e 11 de maio de 2012

Adriano J. Holanda FAFRAM. 4 e 11 de maio de 2012 Memória Adriano J. Holanda FAFRAM 4 e 11 de maio de 2012 Trilha Introdução Hierarquia da memória Memórias RAM Memória ROM Introdução Arquitetura de Von Neumann Memória Aritmética Controle E/S Unidade central

Leia mais

Arquitetura e Organização de Computadores. Processador Registrador Memória. Professor Airton Ribeiro

Arquitetura e Organização de Computadores. Processador Registrador Memória. Professor Airton Ribeiro Arquitetura e Organização de Computadores Processador Registrador Memória Professor Airton Ribeiro Processador A função de um computador é executar tarefas com a finalidade de resolver problemas. Uma tarefa

Leia mais

Tecnologias Digitais

Tecnologias Digitais Tecnologias Digitais MicroControlador Portas Lógicas PAL Processado r ARM CPLD FPGA Sinais analógicos e Digitais Sinais analógicos e Digitais Os sinais são analógicos quando as tensões medidas ao longo

Leia mais

Microarquiteturas Avançadas

Microarquiteturas Avançadas Universidade Federal do Rio de Janeiro Arquitetura de Computadores I Microarquiteturas Avançadas Gabriel P. Silva Introdução As arquiteturas dos processadores têm evoluído ao longo dos anos, e junto com

Leia mais

Field Programmable Gate Array - FPGA / Minicurso teórico-prático em Computação Híbrida

Field Programmable Gate Array - FPGA / Minicurso teórico-prático em Computação Híbrida Field Programmable Gate Array - FPGA Minicurso teórico-prático em Computação Híbrida Vitor C. F. Gomes, Andrea S. Charão, Haroldo F. C. Velho Última atualização: 9 de junho de 2014 Instituto de Estudos

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de

Leia mais

Desenvolvendo aplicações com LabVIEW FPGA. Rogério Rodrigues Engenheiro de Marketing Técnico Marcos Cardoso Engenheiro de Vendas

Desenvolvendo aplicações com LabVIEW FPGA. Rogério Rodrigues Engenheiro de Marketing Técnico Marcos Cardoso Engenheiro de Vendas Desenvolvendo aplicações com LabVIEW FPGA Rogério Rodrigues Engenheiro de Marketing Técnico Marcos Cardoso Engenheiro de Vendas Agenda O que são FPGAs e por que eles são úteis? Programando FPGAs Hardware

Leia mais

Prof. André Rabelo LÓGICA DIGITAL INTRODUÇÃO

Prof. André Rabelo LÓGICA DIGITAL INTRODUÇÃO Prof. André Rabelo LÓGICA DIGITAL INTRODUÇÃO INTRODUÇÃO Um sistema pode ser definido como sendo um conjunto de elementos que são interligados de alguma maneira para compor um todo e assim realizar funcionalidade

Leia mais

Conceitos e Gerenciamento de Memória

Conceitos e Gerenciamento de Memória Conceitos e Gerenciamento de Memória Introdução Num sistema computacional, temos diferentes tipos de memórias, para diferentes finalidades, que se interligam de forma estruturada e que formam o subsistema

Leia mais

Escola Politécnica da Universidade de São Paulo Departamento de Engenharia de Sistemas Eletrônicos - PSI

Escola Politécnica da Universidade de São Paulo Departamento de Engenharia de Sistemas Eletrônicos - PSI Escola Politécnica da Universidade de São Paulo Departamento de Engenharia de Sistemas Eletrônicos - PSI PSI-3451- Projeto de Circuitos Lógicos Integrados Pequeno Manual da Família Cyclone II (2017) Conteúdo:

Leia mais

ORGANIZAÇÃO DE COMPUTADORES

ORGANIZAÇÃO DE COMPUTADORES Organização de Computadores ORGANIZAÇÃO DE COMPUTADORES Curso: Tecnologia em Gestão da Tecnologia da Informação Ano: 2011 Conhecida como Processador ou é o cerebro do computador Unifica todo sistema e

Leia mais

ENGENHARIA DE SISTEMAS MICROPROCESSADOS

ENGENHARIA DE SISTEMAS MICROPROCESSADOS ENGENHARIA DE SISTEMAS MICROPROCESSADOS Prof. Pierre Vilar Dantas Turma: 0040-A Horário: 4N Aula 01-26/07/2017 Plano de ensino Professor www.linkedin.com/in/pierredantas/ TÓPICOS Conceitos gerais. Evolução

Leia mais

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática. Introdução. Gabriel P. Silva. Gabriel P. Silva

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática. Introdução. Gabriel P. Silva. Gabriel P. Silva Universidade Federal do Rio de Janeiro Pós-Graduação em Informática Microarquiteturas de Alto Desempenho Introdução Introdução Bibliografia: Computer Architecture: A Quantitative Approach. John L. Hennesy,

Leia mais

Circuitos Digitais Representação Numérica. Sistema Digital. Circuitos Digitais. Conversão A/D e D/A. Circuitos Digitais

Circuitos Digitais Representação Numérica. Sistema Digital. Circuitos Digitais. Conversão A/D e D/A. Circuitos Digitais 2 Sistemas Digitais Aula 2 Introdução à Sistemas Embarcados Prof. Abel Guilhermino Centro de Informática Universidade Federal de Pernambuco Circuitos Digitais Representação Numérica Analógica As entradas

Leia mais

Projeto e Implementação de um Fatorial em Hardware para Dispositivos Reconfiguráveis

Projeto e Implementação de um Fatorial em Hardware para Dispositivos Reconfiguráveis Projeto e Implementação de um Fatorial em Hardware para Dispositivos Reconfiguráveis Álamo G. Silva, Leonardo A. Casillo Departamento de Ciências Exatas e Naturais Universidade Federal Rural do Semi- Árido

Leia mais

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02 Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação POR QUE APRENDER CONCEITOS

Leia mais

Organização de Computadores

Organização de Computadores Organização de Computadores Aula 29 Controle Microprogramado Rodrigo Hausen 24 de novembro de 2011 http://cuco.pro.br/ach2034 1/32 Apresentação 1. Bases Teóricas 2. Organização de computadores... 2.6.

Leia mais

Modelo de Von Neumann

Modelo de Von Neumann 1 Modelo de Von Neumann Memória UC ALU Entrada Saída ACC 2 Arquitetura de Von Neumann 3 O Computador 4 Processador Microprocessadores São processadores contidos em um único encapsulamento (CI). Microcontroladores

Leia mais

Circuitos sequenciais Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture

Circuitos sequenciais Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture Capítulo 3 Circuitos sequenciais Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture Objectivos Conhecer alguns dos principais circuitos digitais sequenciais

Leia mais

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06 Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação COMO UM PROGRAMA ESCRITO

Leia mais

Modelo de Von Neumann: conceito do programa armazenado

Modelo de Von Neumann: conceito do programa armazenado Arquitetura de computador Modelo de Von Neumann: conceito do programa armazenado Arquitetura de Von Neuman A arquitetura de computador proposta por Von Neumann é composta basicamente por: Computadores

Leia mais

AULA 01: APRESENTAÇÃO

AULA 01: APRESENTAÇÃO ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 01: APRESENTAÇÃO Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação QUAIS OS OBJETIVOS DESSA DISCIPLINA?

Leia mais

Arquitetura de Computadores

Arquitetura de Computadores Arquitetura de Computadores Prof. Eduardo Simões de Albuquerque Instituto de Informática UFG 1o. Semestre / 2006 Adaptado do material do prof. Fábio Moreira Costa Programa e Introdução Assunto do curso

Leia mais

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2) Tecnólogo em Análise e Desenvolvimento de Sistemas Sistemas Operacionais (SOP A2) Conceitos de Hardware e Software Referências: Arquitetura de Sistemas Operacionais. F. B. Machado, L. P. Maia. Editora

Leia mais

Organização de Sistemas de Computadores

Organização de Sistemas de Computadores Organização de Sistemas de Computadores Cap. 2 (Tanenbaum), Cap. 3 (Weber) 2.1 Processadores 1 CPU UC = buscar instruções na memória principal e determinar o seu tipo ULA = adição e AND Registradores =

Leia mais

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register PROCESSADORES Um computador digital consiste em um sistema interconectado de processadores, memória e dispositivos de entrada e saída. A CPU é o cérebro do computador. Sua função é executar programas armazenados

Leia mais

Multiprogramação leve em arquiteturas multi-core

Multiprogramação leve em arquiteturas multi-core Multiprogramação leve em arquiteturas multi-core Prof. Dr. Departamento de Informática Universidade Federal de Pelotas Sumário Arquiteturas multi-core Programação multithread Ferramentas de programação

Leia mais

Ciclo de Seminários Técnicos

Ciclo de Seminários Técnicos A Computação Reconfigurável no Desenvolvimento de um Sistema Digital Delano Oliveira (delano@dsc.ufcg.edu.br) DSC/CEEI/UFCG Agenda Motivação Objetivo Conceitos Fluxo de Projeto Considerações Finais 2 Motivação

Leia mais

Projeto de Sistemas Embarcados

Projeto de Sistemas Embarcados Projeto de Sistemas Embarcados Pós-Graduação em Engenharia Elétrica Prof. Dr. Joselito A. Heerdt Joselito.heerdt@.udesc.br PLANEJAMENTO 1. Introdução 2. O projeto de sistemas 3. Projeto de hardware 4.

Leia mais

Universidade de São Paulo

Universidade de São Paulo Universidade de São Paulo Organização de Computadores Dr. Jorge Luiz e Silva Cap 2 Memória Secundária Memória Principal Memória Secundária - Armazenam informações que precisam ser transferidas para a Memória

Leia mais

10/27/14 ASIC ASSP SOC FPGA. Prototipação de Circuitos integrados (Plataformas) O que significam? Application Specific Integrated Circuit (ASIC)

10/27/14 ASIC ASSP SOC FPGA. Prototipação de Circuitos integrados (Plataformas) O que significam? Application Specific Integrated Circuit (ASIC) 10/27/14 O que significam? ASIC Prototipação de Circuitos integrados (Plataformas) Manoel Eusebio de Lima (mel@cin.ufpe.br) Centro de Informática UFPE Application Specific Integrated Circuit (ASIC) ASIC

Leia mais

Circuitos Lógicos. Prof. Odilson Tadeu Valle

Circuitos Lógicos. Prof. Odilson Tadeu Valle Introdução Circuitos Lógicos Prof. Odilson Tadeu Valle Instituto Federal de Santa Catarina IFSC Campus São José odilson@ifsc.edu.br 1/44 Sumário 1 Introdução 2 Analógico Versus Digital 3 Bits, Bytes e

Leia mais

PARALELISMO NO NÍVEL DO PROCESSADOR

PARALELISMO NO NÍVEL DO PROCESSADOR UNIP Universidade Paulista. Campus Brasília. PARALELISMO NO NÍVEL DO PROCESSADOR ALUNO: Lucas da Silva Dias ALUNO: Gleidson Rosa da Silva ALUNO: Gustavo da Silva Martins ALUNO: Marcelo Nery Lima RA: C633EB-1

Leia mais

Memórias RAM e ROM. Adriano J. Holanda 9/5/2017. [Introdução à Organização de Computadores]

Memórias RAM e ROM. Adriano J. Holanda 9/5/2017. [Introdução à Organização de Computadores] Memórias RAM e ROM [Introdução à Organização de Computadores] Adriano J Holanda 9/5/2017 Memória de acesso aleatório RAM Random Access Memory Armazenamento temporário de programas em execução e dados;

Leia mais

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES PROF. DEJAIR PRIEBE

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES PROF. DEJAIR PRIEBE ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES PROF. DEJAIR PRIEBE PROCESSADOR A função de um computador é executar tarefas com a finalidade de resolver problemas. Uma tarefa pode ser executada por meio de

Leia mais

Arquiteturas de Computadores. Fundamentos de Projetos de Computadores

Arquiteturas de Computadores. Fundamentos de Projetos de Computadores Arquiteturas de Computadores Fundamentos de Projetos de Computadores Tecnologia Melhorias no desempenho: Melhorias na tecnologia dos semicondutores Menor tamanho, velocidade do relógio Melhorias nas arquiteturas

Leia mais

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro Sistemas MIMD Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Arquiteturas Paralelas (SISD) Single Instruction Stream, Single Data Stream: Monoprocessador

Leia mais

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura Introdução Organização e Arquitetura INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES Eduardo Max Amaro Amaral Arquitetura são os atributos visíveis ao programador. Conjunto de instruções, número

Leia mais

Sistemas Digitais: Introdução

Sistemas Digitais: Introdução Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Sistemas Digitais: Introdução DCA0119 Sistemas Digitais Heitor Medeiros Florencio 1 Objetivo: Projetar Sistemas

Leia mais

Aula 17: Organização de Computadores

Aula 17: Organização de Computadores Aula 17: Organização de Computadores Introdução à Organização de Computadores Rodrigo Hausen hausen@usp.br 07 de outubro de 2011 http://cuco.pro.br/ach2034 Rodrigo Hausen (hausen@usp.br) Aula 17: Organização

Leia mais

COMPUTADOR. Adão de Melo Neto

COMPUTADOR. Adão de Melo Neto COMPUTADOR Adão de Melo Neto 1 COMPUTADOR COMPUTADOR Barramento de Endereços: Determina qual a posição de memória que irá ser lida ou escrita (unidirecional). Barramento de Endereços: Transporta o dados

Leia mais

Estudo do impacto de consumo de potência e desempenho na inserção de um Array Reconfigurável na arquitetura Femtojava Multiciclo

Estudo do impacto de consumo de potência e desempenho na inserção de um Array Reconfigurável na arquitetura Femtojava Multiciclo Estudo do impacto de consumo de potência e desempenho na inserção de um Array Reconfigurável na arquitetura Femtojava Mateus Beck Rutzig mbrutzig@inf.ufrgs.br OUTLINE 1. Conceitos 1.1.Sistemas Embarcados

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I BARRAMENTO Slide 1 Sumário Introdução Componentes de Computador Funções dos Computadores Estruturas de Interconexão Interconexão de Barramentos Slide 2 Introdução

Leia mais

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD Universidade Federal do Rio de Janeiro Informática DCC/IM Arquitetura de Computadores II Arquiteturas MIMD Arquiteturas MIMD As arquiteturas MIMD dividem-se em dois grandes modelos: Arquiteturas MIMD de

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de

Leia mais

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações Arquitetura de Computadores Introdução ao Pipeline PIPELINE Linha de Montagem A produção é dividida em várias etapas Produtos em etapas distintas podem ser desenvolvidos separadamente Pode ser Aplicado

Leia mais

Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação

Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação Relatório do Trabalho da Disciplina de Arquitetura e Organização de Processadores CMP- 237 Marcelo

Leia mais

SSC512 Elementos de Lógica Digital. Memórias. GE4 Bio

SSC512 Elementos de Lógica Digital. Memórias. GE4 Bio Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação Elementos de Memórias GE4 Bio GE4Bio Grupo de Estudos em Sinais Biológicos Prof.Dr. Danilo

Leia mais

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 02: INTRODUÇÃO

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 02: INTRODUÇÃO ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 02: INTRODUÇÃO Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação DO QUE É COMPOSTO UM SISTEMA COMPUTACIONAL?

Leia mais

Algoritmos e Lógica de Programação Componentes e Arquitetura

Algoritmos e Lógica de Programação Componentes e Arquitetura Algoritmos e Lógica de Programação Componentes e Arquitetura Agostinho Brito Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte 21 de fevereiro de 2017 Noções

Leia mais

PCS 3115 Sistemas Digitais I

PCS 3115 Sistemas Digitais I PCS 35 Sistemas Digitais I Módulo 7 Introdução às Memórias Edison versão:. (maio de 28). Conceituação Dispositivos que armazenam dados em grandes quantidades. Flip-Flop s e registradores também têm esta

Leia mais

Organização de Computadores I

Organização de Computadores I Organização de Computadores I Aula 2 Material: Diego Passos http://www.ic.uff.br/~debora/orgcomp/pdf/parte2.pdf Organização de Computadores I Aula 2 1/29 Tópicos de Computação. de um Sistema de Computação..

Leia mais

Sistemas Operacionais. Adão de Melo Neto

Sistemas Operacionais. Adão de Melo Neto Sistemas Operacionais Adão de Melo Neto 1 Computador Digital (Hardware) 2 Computador Digital Constituído por um conjunto de componentes interligados (hardware): processadores, memórias, registradores,

Leia mais

Aula 1: Apresentação do Curso

Aula 1: Apresentação do Curso Aula 1: Apresentação do Curso Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Apresentação do Curso FAC 1 / 30 Estrutura da Disciplina Diego

Leia mais

Algoritmos Computacionais

Algoritmos Computacionais UNIDADE 1 Processador e instruções Memórias Dispositivos de Entrada e Saída Software ARQUITETURA BÁSICA UCP Unidade central de processamento MEM Memória E/S Dispositivos de entrada e saída UCP UNIDADE

Leia mais

AULA1 Introdução a Microprocessadores gerais. Disciplina: Aplicações Avançadas de Microprocessadores (AAM)

AULA1 Introdução a Microprocessadores gerais. Disciplina: Aplicações Avançadas de Microprocessadores (AAM) AULA1 Introdução a Microprocessadores gerais Disciplina: Aplicações Avançadas de Microprocessadores (AAM) Tópicos: Conceitos gerais Evolução dos Microprocessadores Arquiteturas Principais características

Leia mais

Projeto Lógico Automatizado de Sistemas Digitais Seqüenciais 1 - Introdução

Projeto Lógico Automatizado de Sistemas Digitais Seqüenciais 1 - Introdução Pontifícia Universidade Católica do Rio Grande do Sul Instituto de Informática (II-PUCRS) Grupo de Apoio ao Projeto de Hardware - GAPH Projeto Lógico Automatizado de Sistemas Digitais Seqüenciais - Introdução

Leia mais

Revisão: Projeto e síntese de Circuitos Digitais em FPGA

Revisão: Projeto e síntese de Circuitos Digitais em FPGA Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Revisão: Projeto e síntese de Circuitos Digitais em FPGA DCA0119 Sistemas Digitais Heitor Medeiros Florencio

Leia mais