1.1 – Introdução aos microprocessadores digitais. ● O que é um computador? Reportando-se ao Stalling: “Um computador pode ser visto como um sistema formado por um conjunto estruturado de componentes, e sua função pode ser compreendida em termos das funções desses componentes”. ● Quais então as funções básicas de um computador? ● ● ● ● Processamento de dados Armazenamento de dados Transferência de dados Controle das operações internas e de acesso a informação 1 1.1 – Introdução aos microprocessadores digitais. ● Visão funcional de um computador: Barramentos externos Fontes e destinos dos dados Periféricos ou linhas de comunicação Unidade Central de processamento Mecanismos de transferência de dados Unidades de memória Recursos de armazenamento de dados Mecanismos de controle Unidades de E/S Barramentos Internos Recursos de processamento de dados Computador 2 1.1 – Introdução aos microprocessadores digitais. ● Visão estrutural de um computador: Barramentos externos Periféricos e linhas de comunicação Unidades de memória Computador Barramentos Unidades internos de E/S UCP 3 1.1 – Introdução aos microprocessadores digitais. ● Transferências de dados possíveis em um computador Acesso Direto a Memória - DMA Periféricos e linhas de comunicação Unidades de memória Unidades de E/S UCP 4 1.1 – Introdução aos microprocessadores digitais. ● O que estamos mostrando afinal: a arquitetura ou a organização de um computador? ● Reportando-se novamente ao Stalling: ● O termo “arquitetura de um computador” refere-se aos atributos de um sistema que são visíveis para o programador ou, em outras palavras, aos atributos que têm impacto direto sobre a execução lógica de um programa. ● Exemplos de atributos de arquitetura incluem o conjunto de instruções, o número de bits usados para representar os vários tipos de dados, os mecanismos de E/S e as técnicas de endereçamento de memória. ● Definir se um computador deve ou não ter uma instrução de multiplicação, por exemplo, constitui uma decisão do projeto da sua arquitetura. 5 1.1 – Introdução aos microprocessadores digitais. ● O que estamos mostrando a final: a arquitetura ou a organização de um computador? ● O termo “ organização de um computador” refere-se às unidades operacionais e suas interconexões que implementam as especificações da sua arquitetura. ● Atributos de organização incluem detalhes de hardware transparentes ao programador, tais como os sinais de controle, as interfaces entre o computador e os periféricos e a tecnologia de memória utilizada. ● Voltando ao exemplo anterior, definir se uma instrução de multiplicação será implementada por uma unidade de multiplicação especial ou por um mecanismo que utiliza repetidamente sua unidade de soma constituí uma decisão do projeto da sua organização. 6 1.1 – Introdução aos microprocessadores digitais. ● O que estamos mostrando a final: a arquitetura ou a organização de um computador? ● Estes termos no entanto tendem a se confundir e a sua relação a se estreitar a medida que miniaturam-se os computadores. ● Mudanças na tecnologia, por exemplo, não apenas influenciam a organização, mas também resultam na introdução de arquiteturas mais ricas e poderosas. ● Para estruturas de elevado grau de miniaturização, normalmente não existe um forte requisito de compatibilidade de uma geração para outra o que flexibiliza e aumenta a relação das tomadas de decisão relativas à sua arquitetura e à sua organização. 7 1.1 - Introdução aos microprocessadores digitais. ● Como são definidas as arquiteturas dos computadores? ● Primeiro, pela escolha do conjunto de instruções que lhes serão atribuídas e; ● Segundo, pela escolha do modelo que será usado para acesso a dados e programas. ● Pela escolha do seu conjunto de instruções podemos ter: ● Arquiteturas CISC ● quando apresentam um conjunto muito grande e complexo de instruções ● Arquiteturas RISC ● quando apresentam um conjunto reduzido de instruções ● Arquiteturas SISC ● quando apresentam um conjunto específico de instruções 8 1.1 - Introdução aos microprocessadores digitais. ● Como são definidas as arquiteturas dos computadores? ● As máquinas CISC apresentam um conjunto muito grande de instruções (acima de 100 por exemplo) e algumas delas, dado sua complexidade, apresentam formatos diferenciados e são executadas em múltiplos ciclos de relógio. ● Já as instruções constantes de uma máquina RISC apresentam-se de mesmo tamanho e são normalmente processadas em um único ciclo. ● Uma máquina SISC difere das anteriores por apresentar um conjunto de instruções especialmente prototipado para a aplicação préestabelecida. ● A medida que se aumenta a miniaturização dos processadores digitais acrescenta-se também uma nítida tendência em se mesclar características CISC e RISC numa mesma unidade. 9 1.1 - Introdução aos microprocessadores digitais. ● Como são definidas as arquiteturas dos computadores? ● Pela escolha do modelo que será usado para acesso a dados e programas podemos ter: ● Computadores com arquitetura segundo o modelo proposto pelo Instituto de Estudos Avançados de Princeton (atribuído a Von Neumann) – máquina de Von Neumann ● Computadores com arquitetura segundo o modelo proposto pela universidade de Harvard – máquina de harvard. ● Beneficiados pelos avanços da tecnologia de fabricação e pelo elevado grau de miniaturização dos chips, muitas inclusões foram feitas aos modelos de Von Neumann e de Harvard no entanto, a essência de suas proposições estão mantidas até os dias de hoje. 10 1.1 – Introdução aos microprocessadores digitais. ● Alguns conceitos gerais: ● Microcomputador? ● É qualquer sistema computacional que possua como CPU um microprocessador. ● Microprocessador? ● É qualquer componente que implemente “on chip” as funções de uma unidade central de processamento. ● Microcontrolador? ● É qualquer componente que incorpore “on chip” a maioria das unidades de um microcomputador ou seja: CPU, memória, portas e periféricos de E/S. ● DSP? ● É qualquer microcontrolador que adicione funções avançadas para condicionamento e processamento digital de sinais. O têrmo DSP é usado também para designar o Processamento Digital de Sinais. 11 1.1 – Introdução aos microprocessadores digitais. ● Alguns conceitos gerais: ● Hardware e software? ● "hardware" é o conjunto de dispositivos elétricos/eletrônicos que englobam a CPU, a memória e os dispositivos de E/S ou seja, é composto de objetos tangíveis - circuitos integrados, placas de circuito impresso, cabos, fontes de alimentação, memórias, impressoras, terminais de vídeo, teclados, etc. ● O "software", ao contrário, consiste em algoritmos (instruções detalhadas que dizem como fazer algo) e suas representações para o computador ou seja, os programas. ● Firmware? ● programa ou conjunto de programas (constituintes do "software" básico de um computador) que orientam: a sua partida, a sua inicialização ("bootstraps programs") e a sua operação. Por esta razão são softwares permanentemente residentes em ROM. 12 1.1 – Introdução aos microprocessadores digitais. ● Alguns conceitos gerais: ● Memória principal? ● bloco de memória interno do microcomputador responsável pelo armazenamento de programas e de dados que podem ser imediatamente acessados pela CPU. ● Fisicamente é implementada através do uso de pastilhas semicondutoras de memória ROM ("read only memory"), não voláteis e RAM ("random access memory"), voláteis. ● Memória secundária ou de massa? ● memória auxiliar, externa, onde possam ser armazenados maior quantidade de dados e programas os quais, não sejam imediatamente necessários a CPU. ● Embora de acesso mais lento, este tipo de memória é relativamente mais econômico para o sistema do que a memória principal. Exemplos deste tipo de memória são os discos magnéticos e os ópticos. 13 1.1 – Introdução aos microprocessadores digitais. ● Tipos de microprocessadores por principais áreas de atuação Microprocessadores Sistemas computacionais de propósito geral Microcontroladores Sistemas embarcados DSPs Sistemas p/ Processamento Digital de Sinais* * Os sistemas de Processamento Digital de Sinais são na verdade uma grande sub-área dos sistemas embarcados. Na realidade os limites de aplicabilidade destes três componentes não são tão bem definidas como mostra o quadro acima. Por exemplo: ● O projeto de um sistema embarcado que exija um complexo tratamento matemático, mesmo que não envolva o processamento digital de sinais, pode ser melhor resolvido com um DSP do que com um microcontrolador. ● Em contrapartida, o projeto de um sistema de controle digital, mesmo envolvendo o processamento digital de sinais, sem grandes exigências de cálculo, pode ser melhor resolvido, com custos bem mais reduzidos, com um microcontrolador do que com um DSP. 14 1.1 - Introdução aos microprocessadores digitais. ● Arquitetura dos microcontroladores e DSPs ● Quanto a arquitetura interna uma unidade microprocessadora pode se apresentar segundo o modelo de Von Neumann (usado pela maioria dos microprocessadores tradicionais) ou, segundo o modelo de Harvard (usado pela grande maioria dos microcontroladores e DSPs). ● Com os avanços da tecnologia de fabricação e com o alto grau de miniaturização dos chips, muitas inclusões foram feitas aos modelos de Von Neumann e de Harvard entretanto a essência de suas proposições estão mantidas até hoje. ● A Analog Devices por exemplo, denominou de Super Arquitetura de Harvard (SHARC®) ao projeto de um DSP no qual incorporou uma unidade de controle de E/S e uma unidade caché de instruções à CPU. ● Já a Texas Instruments, na sua família TMS320C270x, usa uma arquitetura de Harvard modificada. As modificações consistem em incluir no seu modelo, fatores típicos da arquitetura de Von Neumann, tais como a capacidade de tratar dados na memória de programa. 15 1.1 - Introdução aos microprocessadores digitais. ● Super Arquitetura de Harvard proposta pela Analog Devices Bus de Endereços da MD Bus de Endereços da MP Bus de Dados da MP CPU Cache de instruções MEMÓRIA DE PROGRAMA MEMÓRIA Bus de Dado da MD Bus de Controle UNIDADE DE CONTROLE DE E/S DE DADOS UNIDADES DE E/S 16 1.1 - Introdução aos microprocessadores digitais. ● Arquitetura modificada de Harvard proposta pela Texas Instruments 17 1.1 - Introdução aos microprocessadores digitais. ● Contexto histórico: ● O desenvolvimento do microprocessador na década de 1970 representou o maior marco na história dos sistemas eletrônicos e de computação. Ele permitiu o desenvolvimento de computadores pessoais de baixo custo e gerou o campo dos sistemas embarcados, nos quais o microprocessador é usado para controlar um sistema ou um subsistema eletrônico em especial. ● A paternidade do microprocessador é ainda debatida até hoje. Em 1971 a Intel introduziu o 4004, que incluía todos os elementos de uma CPU de 4 bits. Neste mesmo ano a Texas lançou o TMS1802NC. ● Estes dois microprocessadores foram originalmente orientados para suportar as funções de uma calculadora eletrônica. O TMS1802NC da Texas mostrou-se no entanto pouco flexível já que sua programação era armazenada em uma memória interna, só de leitura (o que significava que a mudança no programa exigia um novo processo de mascaramento do chip). 18 1.1 - Introdução aos microprocessadores digitais. ● Contexto histórico: ● A Intel continuou seus esforços no desenvolvimento de µprocessadores produzindo em 1972 o 8008 e em 1972 o 8080 (reconhecidamente o primeiro µprocessador desenvolvido para aplicações de uso geral). ● Várias companhias seguiram os passos da Intel. Como por exemplo: a Motorola com o 6800, a Rockwell com o 6502 e a Zilog com o Z80. Para competir com estes novos processadores a Intel lançou, em 1975, uma versão melhorada do 8080, o 8085. ● Como características marcantes destes µprocessadores destacam-se: ● Bus de dados de 8 bits; ● Bus de endereços de 16 bits – capacidade de endereçamento de 216; ● Um numeroso e diversificado conjunto de instruções; ● Estrutura seqüencial de busca, decodificação e execução das instruções 19 1.1 - Introdução aos microprocessadores digitais. ● Contexto histórico: ● Nessa mesma época começaram a ser desenvolvidos os µprocessadores de 16 bits. No entanto, apenas em 1978 surgiu o primeiro deles, o 8086 da Intel. A ele sucederam o 8088 e o 286 da Intel (usados nas linhas de µcomputadores PC, XT e AT da IBM), o 68000 e o 68010 da Motorola (usados na linha de µcomputadores da Apple) e o Z8000 da Zilog. ● Estes microprocessadores se caracterizam por apresentar: ● barramento de dados de 16 bits (com exceção do 8088 de 8 bits); ● barramento de endereços de 20 e de 24 bits – capacidade de endereçamento de 220 e 224; ● Maior e mais complexo conjunto de instruções; ● capacidade de endereçamento de 1Mbyte e de 16 Mbytes de memória; ● capacidade de executar um ciclo de barramento em menos de 200ns; ● estrutura "pipelined" (canalizada) para as tarefas de busca, decodificação e execução de uma instrução. 20 1.1 - Introdução aos microprocessadores digitais. ● Contexto histórico: ● A geração de µprocessadores de 32 bits é iniciada em 1984, pela Motorola, com o lançamento do 68020, num ambiente já notadamente multi-usuário. ● Pós o 68020 vieram o 68030 da Motorola e o 80386DX da Intel (usado como unidade central da linha de computadores 386DX) ● Como principais características destes microprocessadores destacam-se: ● "bus" de dados de 32 bits; ● "bus" de endereços de 32 bits; ● Aumento no número de instruções; ● capacidade de executar um ciclo de barramento em menos de 100ns; ● capacidade de endereçamento de 4 Gigabytes (232) de memória física; ● estrutura "pipelined" melhorada. ● possibilidade de inclusão de memória cache externa; ● capacidade com a inclusão do cache de executar instruções de acesso a memória com 0 (zero) estados de espera. 21 1.1 - Introdução aos microprocessadores digitais. ● Contexto histórico: ● Aos microprocessadores 68030 e 80386DX sucederam os, também de 32 bits, 68040 e o 80486DX. ● O 80486DX incorporou: ● uma arquitetura escalar (canalização única) otimizada; ● uma unidade "caché" e; ● uma unidade em ponto flutuante (FPU). ● A inclusão da unidade cache interna veio permitir menos acessos as memórias externas (cache ou principal) e a FPU veio permitir a execução de operações com números reais (antes só possíveis com o auxílio de um co-processador aritmético) tais como o cálculo de funções trigonométricas (seno, coseno, tangente, etc), funções trigonométricas inversas (arco-seno, arco-coseno, arco-tangente, etc), funções logarítmicas (log 2, log 10, ln), funções exponenciais e funções hiperbólicas. 22 1.1 - Introdução aos microprocessadores digitais. ● Contexto histórico: ● Como forma de competir no mercado, a INTEL desenvolveu as versões econômicas 386SX (com barramento de 16 bits) e 486SX (com barramento de 32 bits mas sem o co-processador interno). ● O 80486DX evoluiu de 25MHz (velocidade de clock dos primeiros lançamentos) para 33MHz e 50MHz. ● As versões de 50MHz embora extremamente rápidas, trouxeram um grave problema, o superaquecimento da pastilha já que, trabalhava em 5V e com velocidade de barramento equivalente. ● Para contornar este problema, a Intel lançou os 486DX2 (de 50MHz e 66MHz em 3,3V) e 486DX4 (de 75MHz, 83MHz e 100MHz em 3,3V) os quais, multiplicavam segundo um fator 2 ou 3 o clock de processamento enquanto mantinham o clock do barramento no limite de 33MHz (velocidade máxima dos barramentos ISA, MCA, EISA, VL-BUS ou PCI). ● Posteriormente é lançada a linha PENTIUM, também de 32 bits ... 23 1.1 - Introdução aos microprocessadores digitais. MIPS ● Gráficos evolutivos dos microprocessadores X86 ● 1 - Performance dos Ps em quantidade de instruções executadas por segundo 80386DX 5 4,5 4 3,5 3 2,5 2 1,5 1 0,5 0 80386SX 80286 8086 8080 8008 70 72 74 76 78 80 82 84 86 88 90 Anos 24 1.1 - Introdução aos microprocessadores digitais. ● Gráficos evolutivos dos microprocessadores X86 ● 1 - Performance dos Ps em quantidade de instruções executadas por segundo 120 100 PENTIUM M I PS 80 60 40 20 486 386 0 70 72 74 76 78 80 82 84 86 88 90 92 94 An o s 25 1.1 - Introdução aos microprocessadores digitais. ● Gráficos evolutivos dos microprocessadores X86 ● 2 - Complexidade dos Ps em número de transistores por chip Mil transistores/chip 300 80386 250 200 150 80286 100 50 4004 8008 8080 80186 8085 8086/88 0 70 72 74 76 78 81 82 85 Anos 26 1.1 - Introdução aos microprocessadores digitais. ● Gráficos evolutivos dos microprocessadores X86 ● 2 - Complexidade dos Ps em número de transistores por chip 3500 PENTIUM Mil transistores/chip 3000 2500 2000 1500 486 1000 500 386 0 85 88 93 An o s 27 1.1 - Introdução aos microprocessadores digitais. ● Contexto histórico: ● Paralelamente, na busca de melhores performances tão bem quanto de novos mercados, os produtores de microprocessadores procuraram especializar os seus projetos. Como resultado deste esforço, em 1974 a Texas Instruments produziu o primeiro microcontrolador: o TMS1000. ● Estes microcontroladores, em essência, se constituíam em um completo microcomputador em um chip. A inclusão de memória e de unidades periféricas no chip o fez particularmente eficiente em aplicações de sistemas embarcados onde custo, tamanho e consumo de energia deviam ser mantidos extremamente baixos. ● Em 1980 a Intel lançou a família de microcontroladores 8748. Esta família integrou muitos periféricos, inclusive uma memória de programa que podia ser apagada e reprogramada pelo projetista. Tais características abaixou os custos de desenvolvimento dos sistemas à microcontrolador e permitiu o uso do microcontrolador em aplicações de sistemas embarcados de baixos volumes. 28 1.1 - Introdução aos microprocessadores digitais. ● Contexto histórico: ● Em 1983 surgiu o primeiro processador digital de sinais. Lançado pela Texas Instruments, o TMS320C10 foi especificamente projetado para resolver problemas de processamento digital de sinais, até esta época, feito totalmente no domínio da eletrônica analógica. ● O Processamento digital de sinais além de muito pouco utilizado, requeria máquinas muito complexas, restritivas às áreas militares, aeroespaciais e de exploração do petróleo. ● A introdução do DSP induziu o estabelecimento da matéria Processamento Digital de Sinais nos currículos dos cursos de Engenharia Elétrica e é, notadamente a área do conhecimento da engenharia elétrica que mais evoluiu nestas últimas décadas. ● Além do que é a que guarda o maior leque de interdisciplinaridade do curso exigindo conhecimentos específicos em: Teoria da informação; Análise Numérica; Eletrônica Analógica; Eletrônica Digital; Programação; Estatística e Probabilidade. 29 1.1 - Introdução aos microprocessadores digitais. ● Contexto histórico: ● O Processamento digital de sinais progressivamente substituiu o processamento analógico em aplicações que variam do controle para as telecomunicações. Esta migração digital é percebida até hoje e afeta aplicações de custos acentuadamente decrescentes. ● Hoje, com a presença de baratos e eficientes DSPs, o processamento digital de sinais se incorporou a um conjunto muito grande de áreas da produção industrial onde, principalmente são exigidos algoritmos eficientes e rápidos para a compressão de dados, análise e controle de processos, aquisição de dados, análise e simulação espectral. ● A diferenciação introduzida pela absorção de periféricos específicos nos microprocessadores gera componentes extremamente especializados. Alguns por exemplo são especificamente projetados para aplicações em protocolos de comunicação (Ethenet, USB, etc.) enquanto outros são especificamente projetados para uso em motores elétricos. 30 1.1 - Introdução aos microprocessadores digitais. ● Contexto histórico: ● O beneficio de tais especificações é a produção de projetos eficientes, em termos de custos, tamanho e consumo de energia. Por outro lado, ele força o surgimento de uma grande variedade de CPUs. ● A dificuldade trazida por esta grande diversidade não deve ser subestimada. O tempo necessário a ser investido no estudo das novas características e na nova ferramenta de desenvolvimento é freqüentemente um grande obstáculo para sua adoção pelo projetista. ● Para o produtor, a introdução de uma nova família de microprocessadores é muito mais complexa e sua adoção deve vir com a garantia de mercado. ● Para evitar este problema alguns fabricantes estão introduzindo novos tipos de microcontroladores que incorporam lógica programável e subsistemas analógicos programáveis. Este é o caso das famílias PsoC – “Programmable system on a Chip” (Sistema programável em um chip) da Cypress e da Altera. 31 1.1 - Introdução aos microprocessadores digitais. ● Principais características dos Microprocessadores ● Largura de bus de endereços elevada (permite o gerenciamento de grande quantidade de memória) ● Unidade de gerenciamento de memória integrada ● Co-processador matemático e unidade lógica e aritmética com suporte à operações numéricas complexas tais como multiplicação em ponto flutuante. ● Sofisticados modos de endereçamento para eficiente suporte as funções de linguagens de alto nível. ● Alto custo ● Alto consumo de energia. ● Ocupação de grande área de silício. 32 1.1 - Introdução aos microprocessadores digitais. ● Principais características dos Microcontroladores ● Memória e periféricos integrados no chip ● Bus de endereços estreito só permitindo o gerenciamento de pequena quantidade de memória ● Tratamento de poucos formatos de dados (tipicamente 8 ou 16 bits) ● Ausência de co-processador e com unidade aritmética e lógica limitada ● Limitados modos de endereçamento (tratamento ineficiente de funções de linguagens de alto nível) ● Baixo custo ● Baixo consumo ● Pequena área de silício 33 1.1 - Introdução aos microprocessadores digitais. ● Principais características dos DSPs ● Processadores para tratamento de dados em ponto fixo ou flutuante ● Arquitetura otimizada para computação intensiva. O TMS320C67 pode, por exemplo, executar 1 Giga Flops. ● Bus de endereços estreito, permitindo apenas o gerenciamento de uma pequena quantidade de memória ● Modos de endereçamento especiais para suporte eficiente a operações de processamento de sinais (endereçamento circular para tratamento de filtros, endereçamento “bit-reverse” para transformada rápida de Fourier...) ● limitados formato de dados (16 ou 32 bits típicos) ● Muitos periféricos especializados “on chip” (portas seriais, memória, timers, conversores A/D e D/A, geradores de PWM, etc) ● Baixo custo ● Baixo consumo 34 1.1 - Introdução aos microprocessadores digitais. ● Critérios para escolha de um microprocessador ● A escolha de um microprocessador para uma dada aplicação é provavelmente a mais difícil tarefa enfrentada pelos engenheiros. ● Para fazer isto corretamente, ele deve conhecer a gama de microprocessadores que poderá usar para a aplicação, para assim poder precisar e medir os pros e contras de cada opção. ● A maioria deles tenta fazer a escolha dentro do jogo de dispositivos com o qual eles já estão familiarizados. ● Para ajudar na escolha, a maioria dos fabricantes oferecem ferramentas de desenvolvimento e de avaliação. Estas ferramentas permitem ao engenheiro desenvolver e testar o seu software sem ter que implementar o hardware requerido pela aplicação. 35 1.1 - Introdução aos microprocessadores digitais. ● Critérios para escolha de um microprocessador ● Com as tolerâncias inerentes a qualquer projeto, os primeiros critérios que devem ser levados em conta na escolha de um microprocessador dizem respeito a: ● Funcionalidade do conjunto de instruções ● Arquitetura e modos de endereçamento ● Velocidade de execução (não exatamente a freqüência do clock) ● Capacidade aritmética e lógica ● Capacidade de endereçamento ● Consumo de energia ● Tamanho ● Presença de periféricos necessários a aplicação. 36 1.1 - Introdução aos microprocessadores digitais. ● Critérios para escolha de um microprocessador ● Outros critérios de suma importância na escolha são: ● Ferramentas de software e suporte técnico. Neste item devem ser observados o ambiente de desenvolvimento (editor, assemblador, compilador, simulador, emulador), a biblioteca de funções e as soluções de software disponibilizadas pelo fabricante ou empresas credenciadas. ● Custo ● Disponibilidade de mercado ● Maturidade do processador. 37 1.2 - Contextualizações sobre hardware e software no projeto de sistemas digitais microprocessados. ● Tradicionalmente o hardware foi considerado uma tecnologia imutável, de alto desempenho e alto custo de desenvolvimento e produção, enquanto o software sempre foi considerado uma tecnologia com alto grau de adaptabilidade, de baixo desempenho e baixo custo de desenvolvimento e produção. ● Curva típica de desempenho x custo de sistemas de hardware e software nesta abordagem Desempenho Hardware Hardware/Software Software Custo 38 1.2 - Contextualizações sobre hardware e software no projeto de sistemas digitais microprocessados. ● Assim, ao se utilizar componentes de hardware e software, um sistema pode se beneficiar do aumento de desempenho trazido pelo hardware e ao mesmo tempo a redução de custos trazida pela introdução de componentes de software. ● Tradicionalmente os subsistemas de software eram projetados para serem executados em um microprocessador. ● Seu desempenho era naturalmente baixo, visto que um microprocessador, para garantir a generalidade, necessitava de instruções aritméticas e lógicas, de controle de fluxo, de manipulação de memória e de entrada e saída genéricas, baseadas no paradigma de busca, decodificação e execução. ● Qualquer função mais complexa poderia ser decomposta nas instruções de máquina do microprocessador e para se promover uma modificação era bastante se trocar o código, o que facilitava bastante a atualização deste componente. 39 1.2 - Contextualizações sobre hardware e software no projeto de sistemas digitais microprocessados. ● Já os subsistemas de hardware eram implementados em placas de circuitos impressos com circuitos LSI e VLSI, ou com ASICs (Application Specific Integrated Circuits), dependendo da escala de produção. ● Devido a isto, os subsistemas de hardware possuíam baixa tolerância a mudanças, apesar de que, por serem confeccionados para executarem uma só tarefa, possuíam alto desempenho. ● Genericamente, projeto de sistemas contendo subsistemas de hardware e software têm sido feitos na indústria e nas universidades desde os primórdios da computação. ● Entretanto, esses projetos eram feitos de maneira ad hoc e a escolha dos componentes era feita na definição do projeto, o que nem sempre levava a um sistema de custo/benefício e desempenho ótimos. ● Se o protótipo não possuísse desempenho ou custo adequado ao esperado, o projeto voltava à prancheta para o reparticionamento do sistema nos seus subsistemas primitivos de hardware e software. 40 1.2 - Contextualizações sobre hardware e software no projeto de sistemas digitais microprocessados. ● Neste modelo de projeto continuado, após o “racha” inicial, as duas sínteses, embora conduzam a integração final do produto não mantêm nenhum compartilhamento e nenhuma realimentação. Análise dos requisitos de hardware Projeto e testes do hardware Análise e concepção do sistema Integração do sistema Análise dos requisitos de software Projeto e testes do software 41 1.2 - Contextualizações sobre hardware e software no projeto de sistemas digitais microprocessados. ● Outra alternativa de projeto baseou-se no conceito de ambiente unificado onde o projeto de hardware e de software usam a mesma infra-estrutura integrada, tendo por resultado uma melhoria do desempenho global do sistema embora requisite poderoso soft de simulação. Análise dos requisitos de hardware Análise e concepção do sistema Projeto e testes do hardware Substrato de modelagem integrado Análise dos requisitos de software Integração do sistema Projeto e testes do software 42 1.2 - Contextualizações sobre hardware e software no projeto de sistemas digitais microprocessados. ● Os avanços em engenharia e computação, assim como o aumento na complexidade dos sistemas projetados direcionaram para a evolução de um novo paradigma: O codesign. ● Ou mais especificamente à análise e ao projeto integrados de sistemas de hardware e software onde o item chave é a “reconfiguração” e onde passam a ser exploradas as “synergys” entre hardware e software. ● Os fatos geradores do codesign como novo paradigma de análise e projeto foram: ● Primeiro, o aumento do nível de integração que permitiu que sistemas de computação inteiros fosse encapsulados em um único chip. Enquadram-se neste contexto, notadamente os DSPs e os microcontroladores embora que orientados por software mas não reprogramáveis. 43 1.2 - Contextualizações sobre hardware e software no projeto de sistemas digitais microprocessados. ● Segundo, foi o surgimento dos “embedded systems” (sistemas embarcados) e a crescente necessidade de se produzir estes sistemas com complexidade e autonomia cada vez maiores e em um tempo cada vez mais curto. Estas características os diferenciam de outros sistemas integrados e impõem a necessidade de uma metodologia que não somente as atendam como também demandas de caráter mercadológico como tempo de projeto e custos financeiros (modelo de receita triangular). Receita Pico de receita no meio da vida útil D – Atraso 2W – Janela de mercado Receita de mercado = D(3W-D)/2W2 Perda de receita pelo atraso da entrada do produto no mercado (área azul) D Início da janela de Mercado W W Fim da vida útil 44 1.2 - Contextualizações sobre hardware e software no projeto de sistemas digitais microprocessados. ● E como terceiro fato gerador do codesign como novo paradigma de análise e projeto, surge no mercado os FPGAs (Field Programmable Gate Arrays), dispositivos de hardware que integram elementos lógicos e de memória estruturalmente configuráveis por software. ● Funcionalmente, a configuração do hardware desejado é carregado, por definições de software, durante a inicialização do FPGA, a partir de uma unidade de memória externa ou de um microcomputador adequadamente conectado. ● Esta flexibilidade estrutural permite que os projetistas implementem, por software, qualquer sistema de hardware a partir de uma adequada linguagem de descrição de hardware como o VHDL ou a Verilog HDL. ● Com a introdução de FPGAs de alta densidade, como os da família Stratix® da Altera, que incorporam milhões de elementos lógicos e muitos blocos funcionais embarcados, alguns típicos dos DSPs, os projetistas podem agora implementar o SoPC (System on a Programmable Chip) ideal para sua aplicação*. * A PI (Propriedade Intelectual) tem na tecnologia SoC sua grande aliada 45 1.2 - Contextualizações sobre hardware e software no projeto de sistemas digitais microprocessados. ● Pelo exposto, um ambiente elementar de desenvolvimento para codesign, pode se constituir de um microcontrolador ou de um DSP, para a prototipação rápida de software, de um FPGA, como circuito reconfigurável, para a prototipação rápida do hardware e, opcionalmente, de uma unidade de memória para armazenamento da descrição do hardware desejado. ● O microcontrolador ou o DSP pode ser programado em código C ou assembly e a descrição do hardware do FPGA pode ser feita por meio de ferramentas de mapeamento de hardware e síntese lógica, VHDL ou Verilog HDL em ambientes gráficos de programação, simulação e síntese, fornecidos pelos seus respectivos fabricantes. ● Normalmente o algoritmo desenvolvido em uma plataforma de codesign permite a modelagem, o particionamento entre o hardware e o software, a cosíntese e a cosimulação. 46 1.2 - Contextualizações sobre hardware e software no projeto de sistemas digitais microprocessados. ● Exemplo1: ambiente de codesign. ● Placa LIRMM - Logic Inside Reconfigurable Micro Machine - desenvolvida no Laboratório de Informática, Robótica e Microeletrônica de Montpellier. 47 1.2 - Contextualizações sobre hardware e software no projeto de sistemas digitais microprocessados. ● Exemplo 2: algoritmo de codesign Descrição do sistema Especificações Desenvolvimento e Análise Validação Particionamento e mapeamento Performance estimada Especificações do particionamento Evolução Síntese de SW Código C Síntese de interfaces VHDL Síntese de HW VHDL Prototipação 48 1.2 - Contextualizações sobre hardware e software no projeto de sistemas digitais microprocessados. ● Anexo 1: estrutura de um FPGA Pinos de interface IOB IOB Matriz de roteamento CLB CLB CLB CLB 49 1.2 - Contextualizações sobre hardware e software no projeto de sistemas digitais microprocessados. ● Anexo 1: estrutura de um FPGA ● Como pôde ser visto na figura anterior, arquitetura do FPGA apresenta três blocos funcionais: o CLB, o IOB e a matriz de roteamento ou chaveamento (“Switch Matrix”). ● Os CLBs (“Configurable Logic Blocks”) constituem-se normalmente de blocos com funções lógicas programáveis e alguns flip-flops ou registradores. ● Os IOBs (“Input/Output Blocks”) são buffers bidirecionais com saída em alta impedância podendo ser programado como entrada, como saída, como bidirecional ou como saída em coletor aberto. ● O terceiro bloco, são as matrizes de roteamento, responsáveis pelas definições de interligação entre os blocos lógicos e/ou destes com os blocos de entrada/saída. 50