Arquitetura de Sistemas Embarcados Exame de Qualificação em Abrangência (prestado em 09/12/2005) Carlos Arthur Lang Lisbôa Orientador: Prof. Luigi Carro
Definições Sistema Embarcado Qualquer dispositivo que inclui um computador programável mas que não é, ele mesmo, um computador de uso geral. Wayne Wolf, 2000 Processador Embarcado Um processador programável, cuja interface de programação não está acessível para o usuário final do produto. A única interação com o usuário é através do aplicativo. Jan Rabaey, 2000
Uso Geral vs. Embarcados Qual a diferença ? The Intel® Pentium® Processor Extreme Edition with the processing capabilities of four threads delivers more computing capabilities enabling you to explore new ways to accomplish and enjoy performance intensive tasks on your PC. Featuring advanced technologies that offer high performance, flexibility and robust functionality, the Intel PXA270 processor is packaged specifically for the embedded market and is ideal for the low-power framework of battery-powered devices.
Uso Geral vs. Embarcados ... mas não apenas isto ! calculadoras simples ou programáveis eletrodomésticos “inteligentes” telefones celulares jogos eletrônicos controle, segurança e conforto em veículos set-top boxes sistemas GPS som, fotografia e vídeo copiadoras, impressoras e outros periféricos ... a criatividade humana não tem limites !
Roteiro da Apresentação Introdução Processadores Memórias Sistemas com múltiplos núcleos Comunicação: barramentos e NOCs Aspectos relacionados a software Conclusão
Introdução: Requisitos Especiais consumo nem sempre é problema; custo sim área e desempenho podem ser críticos (soft / hard deadlines) tolerância a falhas pode ser fator crítico múltiplos processadores heterogêneos necessidade de comunicação e redes (NOCs) capacidade gráfica antenas, som, vídeo: processamento digital de sinais (DSP) “embriões” de sistemas operacionais (RTOS) aplicativos residentes em memória / download
Introdução: Complexidade do Projeto portabilidade dos produtos limitação de consumo especificação de desempenho mínimo: hard deadlines baixa capacidade de memória (área, consumo) segurança e confiabilidade operação em rede (múltiplos núcleos) metodologia de teste adequada
Introdução Amplo espaço de projeto a ser explorado particionamento hardware / software tipo(s) de processador(es) hierarquias de memórias interfaces para periféricos comunicação entre componentes sistema operacional e aplicativos Prazo de projeto: poucos meses Custos elevados (pessoal, ferramentas, máscaras) requer volume de produção
Roteiro da Apresentação Introdução Processadores Memórias Sistemas com múltiplos núcleos Comunicação: barramentos e NOCs Aspectos relacionados a software Conclusão
Processadores: Arquitetura Selecionar a mais adequada à aplicação uso de lógica programável (conforme volume) FPGAs (Field Programmable Gate Array) - baixo volume ASICs (Application Specific Integrated Circuit) - alto ASIPs (Application Specific Instruction Set Processor) - alto microprocessadores de prateleira, específicos ou IPs pipeline superescalar VLIW (Very Large Instruction Word) processamento digital de sinais (DSP) múltiplos processadores no mesmo chip reconfigurabilidade redução do consumo de energia
Processadores Arquiteturas com Pipeline paralelismo de estágios da execução de instruções na prática: 12 a 20 estágios com pipeline cheio: 1 instrução por ciclo custo maior em potência (mais chaveamentos) Jan Rabaey, 2000
Processadores Pipelines - hazards: structural, data, control estrutural: faltam componentes (FUs, registradores) dependência de dados reordenação pelo compilador - limitada reordenação pelo processador (forwarding) - mais consumo controle: desvios condicionais (> 20% !) por software: inserção de NOPs (mais lento, mais memória) inserção de “bolhas” remoção de instruções do pipeline quanto mais estágios, maior o custo em desempenho para amenizar o custo: predição de saltos laços - probabilidade maior é repetir máquina de estados - predição “estatística”
Processadores Pipelines: dimensionamento custo produtividade máxima: 1 instrução por ciclo mais estágios ciclos mais curtos ciclos mais curtos maior freqüência maior freqüência maior potência clock mais rápido requer redistribuição redistribuição de clock mais área, mais potência
Processadores Arquiteturas superescalares: exemplo vários pipelines em paralelo - paralelismo explícito Jan Rabaey, 2000
Processadores Arquiteturas superescalares: exemplo real hyperthreading: 1 superescalar por thread (Intel Pentium Extreme Edition) Intel Pentium® 4
Exemplo: processadores Pentium®
Exemplo: processadores Pentium®
Exemplo: processadores Pentium®
Exemplo: processadores Pentium®
Processadores Arquiteturas superescalares - dificuldades programas da “vida real” têm pouco paralelismo na compilação: loop unrolling = mais dependência redução da dependência de dados pelo processador execução de instruções fora de ordem busca instruções cuja dependência de dados esteja resolvida e as executa antes das demais renomeação de registradores (aliases) maior custo em potência: hw extra mantém unidades ocupadas a maior parte do tempo uso principal: processadores de uso geral
Processadores Arquiteturas VLIW: instruções em paralelo 64-bit 32-bit data cache 16KB mmu 64-bit memory bus multi-port 128 words x 64 bits register file FU instruction cache 32 KB bypass network PC exceptions 32-bit peripheral VLIW instruction decode and launch Jan Rabaey, 2000
Processadores Arquiteturas VLIW - prós e contras mais econômica em potência: sem detecção de paralelismo durante execução sem predição de saltos paralelismo resolvido pelo compilador (custa caro) dependência de dados desperdício de memória requer recompilação quando muda a largura do VLIW ideal para sistemas em que o código não muda durante a operação do processador embarcado mais usadas em processamento de sinais e multimedia, onde aplicações têm mais paralelismo
Processadores Arquiteturas DSP - processamento de sinais aplicações: telefone celular, modems, controle, ... digital analógico - repetibilidade e facilidade projeto processadores digitais de uso geral: muitos recursos não utilizáveis em DSP carência de recursos otimizados para DSP consumo de potência elevado processadores digitais de sinais otimizações de hardware para acelerar a execução dos algoritmos específicos para DSP (filtros, FFT, DCT, ...) resultados: maior desempenho, menor potência
Processadores Arquiteturas DSP - otimizações específicas “stream” de entrada contínuo - taxa fixa grande quantidade de dados que não podem ser perdidos não pode ler um “lote” e esperar enquanto processa solução: buffer circular - implementação em hardware arquitetura Harvard: memórias para instruções e dados separadas, com acesso em paralelo vários bancos de memória para dados, com acesso em paralelo interrupções simplificadas para atender E/S sem necessidade de chavear contexto
Processadores Arquiteturas DSP - otimizações específicas instrução multiplica-e-acumula endereçamento de bit reverso registradores com auto incremento controle de laços em hardware muitas destas otimizações estão migrando para processadores de uso geral nos sistemas embarcados, podem ser usados: co-processadores DSP processadores VLIW adaptados para processamento de sinais
Roteiro da Apresentação Introdução Processadores Memórias Sistemas com múltiplos núcleos Comunicação: barramentos e NOCs Aspectos relacionados a software Conclusão
Memórias: hierarquia CPU Cache - Interna (L1) SRAM Register File Cache - Interna (L1) SRAM M A I O R C P D E M A I O R V E L C D M A I O R C U S T / B Y E Cache Externa (L2) - SRAM Memória Principal DRAM Memória Secundária - Disco, Flash
Memórias: principais dificuldades velocidade capacidade memórias estáticas (caches) rápidas, mas ocupam muita área grande consumo de potência se beneficiam de: localidade temporal localidade espacial aplicabilidade a sistemas embarcados não é “unanimidade” Compaq/Digital StrongARM
Memórias: principais dificuldades velocidade capacidade memórias dinâmicas (memória “principal”) várias ordens de grandeza mais lentas ocupam menos área, têm maior capacidade alto custo em potência consumida para acessos cache + principal tempo de resposta imprevisível outros tipos de memória usados em SEs memórias FLASH (também como “memória virtual”) EEPROMs - grandes capacidades (ex: câmeras) FRAM (ferromagnetic RAM) - mesma área, sem refresh
Roteiro da Apresentação Introdução Processadores Memórias: hierarquia Sistemas com múltiplos núcleos Comunicação: barramentos e NOCs Aspectos relacionados a software Conclusão
Sistemas com Múltiplos Núcleos Vários processadores num chip (MP-SOCs): homogêneos: processadores iguais - uso geral exemplos: Intel Pentium D e Intel Pentium Extreme heterogêneos: processadores distintos - sistemas embarcados DSP DSP DSP 3D Subsyst. DSP DSP DSP ARM Video Subsyst. DSP Audio Subsystem DSP DSP System Interconnect In DSOC Scheduler SRAM SMP Scheduler Out Nomadik Mobile Multimedia STMicroelectronics
Roteiro da Apresentação Introdução Processadores Memórias: hierarquia Sistemas com múltiplos núcleos Comunicação: barramentos e NOCs Aspectos relacionados a software Conclusão
Comunicação: barramentos/NOCs evolução da tecnologia: mais transistores menores / chip custo: reuso de núcleos de propriedade intelectual (IPs) necessidade: interconexão entre muitos núcleos alternativas: conexão ponto-a-ponto: não reusável barramentos: uma transferência por ciclo capacitância elevada (fios longos e muitos núcleos) freqüência máxima limitada barramentos hierárquicos: paralelismo limitado
Comunicação: barramentos/NOCs alternativas (continuação): NOCs: networks on chip conjunto de canais e roteadores conexões ponto-a-ponto entre roteadores permitem freqüências mais altas do que barramentos diversas topologias: grelha, torus, árvore, hipercubo, etc. maior capacidade de paralelismo: vários “caminhos” escaláveis de acordo com a quantidade de núcleos fatores que determinam eficiência: largura do canal de roteamento (# fios) topologia política de prioridades e controle de fluxo
Roteiro da Apresentação Introdução Processadores Memórias: hierarquia Comunicação: barramentos e NOCs Sistemas com múltiplos núcleos Aspectos relacionados a software Conclusão
Aspectos relacionados a software antigamente: fixo (microondas, automóveis, ...) atualmente: “mutante” (celulares, PDAs, ...) tendência: sistemas baseados em plataformas, com especialização por software (alto custo de máscaras) novos requisitos em software: compiladores otimizados para VLIW sistemas operacionais de tempo real - RTOS software retargeting (binary translation)
Roteiro da Apresentação Introdução Processadores Memórias: hierarquia Comunicação: barramentos e NOCs Sistemas com múltiplos núcleos Aspectos relacionados a software Conclusão
Conclusão Espaços abertos para pesquisa (exemplos): hierarquia de memória tipo de aplicação reuso de traces da cache para reduzir potência uso de arrays reconfiguráveis dinamicamente e binary translation para reduzir consumo de energia tolerância a múltiplas falhas simultâneas (2010) compiladores mais eficientes para arquiteturas VLIW para reduzir consumo de energia (uso de instruções “low power”) estruturação de código p/aumentar hit rate das caches
Perguntas ?
Referências bibliográficas [Wayne Wolf, 2000] Wolf, W. Computers as Components: Principles of Embedded Computer Systems Design. Academic Press, San Diego, CA, 2001. ISBN 1-55860-693-9. Patterson, D.A. e Hennessy,J. L. Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers, San Francisco, CA, 2003. ISBN 1-55860-724-2. [Jan Rabaey, 2000] Rabaey, J e Keutzer, K. Notas de aula da disciplina “CS252 - Advanced Computer Architecture”, ministrada pelos Profs. Drs. Jan Rabaey e Kurt Keutzer, na University of California at Berkeley, USA, primavera de 2000. Carro, L. e Wagner, Flávio R. Notas de aula do curso “Sistemas Computacionais Embarcados” ministrado pelos Profs. Drs. Flávio Rech Wagner e Luigi Carro nas XII Jornadas de Atualização em Informática (JAI), no XXIII Congresso da Sociedade Brasileira de Computação, 2 e 3 de agosto de 2003, Campinas, SP, Brasil.