Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdu c ao
Roteiro
Introdu c ao
Hadley Magno
Introdu c ao
Sistemas embarcados
Grande maioria dos sistemas computacionais existentes s ao sistemas embarcados Complexos: celulares, consoles, tablets etc Dom esticos: port ao autom atico, geladeira etc Cr ticos: carros, avi oes etc Possuem restri c oes que computadores normais n ao tem: tamanho, consumo de energia, mem oria utilizada entre outros
Hadley Magno
Introdu c ao
Sistemas embarcados
O que celulares, tablets, consoles e sistemas embarcados similares possuem em comum? Rodam v arios aplicativos Necessidade de um microprocessador para executar uma variada gama de aplicativos Hardware espec co como GPUs, por exemplo, podem ajudar a acelerar algumas atividades, mas n ao todas. Processadores precisam ser cada vez mais r apidos Mais velocidade, mais complexidade
Hadley Magno
Introdu c ao
Sistemas embarcados
Como projetar sistemas embarcados complexos de forma r apida e eciente? FPGAs aparecem como bons candidatos ` a prototipagem Podem ser congurados para funcionar como v arios circuitos Trabalham com linguagens de descri c ao de hardware que permitem n veis mais abtratatos que portas l ogicas Funcionam similar ` a linguagens de programa c ao e compiladores Muito mais r apido modicar um texto do que refabricar um chip
Hadley Magno
Introdu c ao
Sistemas embarcados
Como conectar um processador ao FPGA? Comprar algum FPGA com processador j a integrado: processadores hard-core Possuem boa performance Por serem processadores f sicos, n ao permitem grandes customiza c oes E se customiza c oes forem importantes? Por exemplo, inserir instru c oes especiais para fazer codica c ao de v deo
Hadley Magno
Introdu c ao
Sistemas embarcados
Outra abordagem: usar o pr oprio FPGA congurado como processador Processadores desse tipo s ao denominados de soft-core Descritos em linguagem de hardware, mais f aceis de serem customizados do que processadores hard-core Que processador deve ser implementado?
Hadley Magno
Introdu c ao
Sistemas embarcados
Processadores CISC: um dos primeiros a serem implementados na hist oria da computa c ao Surgiram em uma epoca onde a mem oria era cara e lenta e onde se programava bastante em assembly Evitar ao m aximo o uso da mem oria ao transferir o m aximo de opera c oes possiveis para dentro do processador; e oferecer o opera c oes de alto n vel tanto quanto poss vel Manter compatibilidade dos programas Complexidade proporcional ` a quantidade de opera c oes Processadores grandes
Hadley Magno
Introdu c ao
Sistemas embarcados
O tempo passou e as ferramentas de desenvolvimento e mem orias melhoraram Mem orias com maior capacidade, mais r apidas e mais baratas Software programado em linguagens de alto n vel Por que esperar pelo fabricante para colocar uma opera c ao no processador quando o pr oprio usu ario pode fazer a opera c ao em linguagem de alto n vel? Por que se preocupar em manter compatibilidade ` a n vel de assembly quando basta recompilar o c odigo para a nova arquitetura?
Hadley Magno
Introdu c ao
Sistemas embarcados
Fazer um bom compilador e uma tarefa dif cil Como suportar tantos modelos de processadores com opera c oes diferentes? Uso de conjunto de opera c oes comuns entre os processadores: adi c oes, subtra c oes etc O compilador aliado ` a mem orias melhores e ` a facilidade de recompilar o c odigo para novas arquiteturas levou ao surgimento das arquiteturas RISC
Hadley Magno
Introdu c ao
Sistemas embarcados
Arquiteturas RISC descartaram a grande quantidade de instru c oes presentes em arquiteturas CISC: hardware bem simplicado Hardware mais simples usa menos area em chip e e mais f acil de ser melhorado e otimizado (pipeline). Mais espa co em livre chip, mais oportunidade de usar para outras possibilidades: caches. Resultado: arquitetura eciente Na epoca, processadores RISC conseguiam emular processadores CISC e emula c ao era mais r apida do que os processadores CISC originais.
Hadley Magno
Introdu c ao
Sistemas embarcados
Arquiteturas RISC chegaram ao seu limite: limita c oes f sicas Diculdade em obter transistores menores e mais pr oximos Diculdade em aumentar a frequ encia de opera c ao Como obter mais desempenho? Utilizar paralelismo existente nos programas
Hadley Magno
Introdu c ao
Sistemas embarcados
Algumas instru c oes nos programas podem ser executadas em paralelo Aproveitar o espa co livre e utilizar mais unidades funcionais Quanto mais unidades funcionais, mais opera c oes podem ser executadas em paralelo As unidades funcionais por si s o n ao oferecem paralelismo Al em de ser capaz de executar as opera c oes em paralelo, e necess ario descobrir quais opera c oes podem ser executadas em paralelo
Hadley Magno
Introdu c ao
Sistemas embarcados
Uma abordagem para descobrir o paralelismo e utilizando hardware dedicado Arquiteturas que fazem uso da replica c ao de unidades funcionais e que descobrem o paralelismo usando hardware s ao denominadas arquiteturas superescalares. Apresentam alta taxa de desempenho Esse desempenho n ao vem de gra ca Arquiteturas superescalares t ao ou mais complexas do que processadores CISC
Hadley Magno
Introdu c ao
Sistemas embarcados
Como colocar uma arquitetura superescalar em um sistema embarcado com tantas restri c oes? E poss vel fazer uso do paralelismo presente nos programas sem ter um hardware complexo? Abordagem usando software
Hadley Magno
Introdu c ao
Sistemas embarcados
Arquiteturas VLIW delegam a responsabilidade de encontrar o paralelismo ao compilador O compilador monta as instru c oes e j a entrega tudo pronto para a m aquina VLIW Dessa forma, processadores VLIW s ao bem mais simples que processadores superescalares Controle mais simples, aus encia de circuito de verica c ao de paralelismo etc
Hadley Magno
Introdu c ao
Sistemas embarcados
Arquiteturas VLIW: ideia proposta por Joseph Fisher Vantagens: hardware simples e eciente etc Desvantagens: baixa densidade de c odigo, incompatibilidade de c odigo etc Possui hardware simples que e atrativo para sistemas embarcados, mas possui baixa densidade de c odigo. Como resolver?
Hadley Magno
Introdu c ao
Sistemas embarcados
Diminuir tamanho dos execut aveis Fazer o compilador gerar c odigo menor
trechos repetidos se tornam fun c oes
Hadley Magno
Introdu c ao
Sistemas embarcados
Processador VLIW soft-core com otimiza c ao no uso de mem oria Instru c oes de tamanho vari avel similar ` a Thumb e MIPS16 Manter hardware simples sem perder eci encia
Hadley Magno
Introdu c ao
Sistemas embarcados
Executa at e duas opera c oes em paralelo 32 registradores de prop osito geral Execu c ao condicional Predi c ao de salto Adiantamento Instru c oes de tamanho variado
Hadley Magno
Introdu c ao
Instru c oes comportam at e duas opera c oes Exemplos de opera c oes: adi c ao, subtra c ao, compara c oes, acessos ` a mem oria etc Opera c oes com tamanhos de 30 ou 14 bits Consequentemente, instru c oes passam a ter tamanho variado (n ao h a uso de padding)
Hadley Magno
Introdu c ao
Opera c oes de 30 bits divididas em 4 tipos Opera c oes do tipo I realizam, em geral, opera c oes entre registradores Opera c oes do tipo II realiza opera c oes entre um registrador e uma constante Opera c oes do tipo III e IV lidam, respectivamente, com instru c oes de salto condicional e incondicional
Hadley Magno
Introdu c ao
Opera c oes de 14 bits s ao vers oes de opera c oes 30 bits reduzidas Operandos implicitos e/ou redu c ao de bits na codica c ao dos operandos. Codicam um subconjunto das opera c oes de 30 bits Exemplos: saltos condicionais, loads e stores em chamadas de fun c oes etc
Hadley Magno
Introdu c ao
Pipeline possui 7 est agios Dois desses est agios foram adicionados por quest oes de desempenho
Busca Expans ao Decodica c ao I Decodica c ao II Execu c ao e acesso ` a mem oria I Execu c ao e acesso ` a mem oria II Escrita
Hadley Magno
Introdu c ao
Est agio de busca acessa a mem oria de instru c oes, buscando sempre 64 bits da mem oria O endere co a ser acessado e armazenado no registrador contador de programa (PC) Mem oria de instru c oes entrega os dados com um atraso de um ciclo de rel ogio PC n ao pode ser incrementado de uma constante xa porque as intru c oes possuem tamanho vari avel Constante a ser adicionada depende do tamanho da instru c ao Como calcular o pr oximo valor do PC no ciclo atual, se a instru c ao s o estar a pronta no ciclo seguinte?
Hadley Magno
Introdu c ao
Primeira instru c ao de blocos b asicos possuem tamanho xo Auxiliado pelo assembler, cada instru c ao passa a armazenar o tamanho da instru c ao seguinte considerando um uxo de execu c ao sequencial Primeira instru c ao possui tamanho conhecido a priori, logo e poss vel calcular o pr oximo PC sem ter a instru c ao No ciclo seguinte, a instru c ao j a cont em o tamanho da sua sucessora e assim por diante
Hadley Magno
Introdu c ao
O est agio de expans ao e respons avel por transformar eventuais opera c oes de 14 bits em opera c oes de 30 bits Verica o tamanho da instru c ao e ent ao multiplexa as opera c oes corretas Remove dos est agios seguintes a necessidade de vericar a possibilidade ou n ao de execu c ao paralela
Hadley Magno
Introdu c ao
Hadley Magno
Introdu c ao
FPGAs atuais com block rams com no m aximo duas portas de leitura/escrita Necess ario replica c ao Replica c ao n ao resolve o problema das portas de escrita Manter hist orico de qual block ram possui o dado mais atualizado
Hadley Magno
Introdu c ao
Uso de block rams na constru c ao do banco de registradores apresenta um novo problema Dados entregues no ciclo seguinte Mas os sinais de controle s ao gerados no ciclo atual Ligar a sa da do banco de registradores diretamente em outros circuitos pode criar caminhos cr ticos longos
Hadley Magno
Introdu c ao
A solu c ao usada foi adicionar um est agio denominado de decodica c ao II Manter desempenho e sincronizar os dados N ao realiza nenhuma computa c ao importante
Hadley Magno
Introdu c ao
O est agio de execu c ao e acesso ` a mem oria I e onde s ao feitas as opera c oes l ogico-aritm eticas e onde ocorre o acesso ` a mem oria de dados Diferente de outras arquiteturas que realizam o acesso ` a mem oria de dados em est agios mais avan cados do pipeline Mem oria de dados implementada com block rams Principal motivo para acessar a mem oria de dados neste est agio: minimizar o custo da entrega dos dados atrasados de um ciclo.
Hadley Magno
Introdu c ao
Possui duas ULA-deslocadores Deslocadores implementados como barrel shifters a m de realizar deslocamentos em um ciclo de rel ogio Deslocamento seguido de uma poss vel adi c ao Permite c alculo de endere cos efetivos de forma mais ecaz ao realizar deslocamento e adi c ao em um u nico ciclo endere co = (i col tamanho) + j c = (a immd) + b
Hadley Magno
Introdu c ao
Registradores de predicado nesse est agio Cont em quatro registradores de predicado Usados para obter execu c ao condicional Opera c ao carrega o endere co do registrador de predicado e um valor teste Opera c ao s o e executada se o valor teste for igual ao valor do registrador de predicado especicado pelo endere co Uma opera c ao e impedida de ser executada ao impedir a mesma de atualizar o estado do processador Desabilita c ao dos sinais de controle
Hadley Magno
Introdu c ao
Da mesma forma que no est agio de decodica c ao, foi inserido um est agio adicional para manter desempenho Novamente por causa do atraso na entrega de dados por parte das block ram Est agio denominado de execu c ao e acesso ` a mem oria II Apenas repassa os dados realizando poucas computa c oes
Hadley Magno
Introdu c ao
Ou ltimo est agio e o est agio de escrita Seleciona entre o dado lido da mem oria ou o resultado de uma opera c ao l ogico-aritm etica Envia os valores para o banco de registradores
Hadley Magno
Introdu c ao
A arquitetura proposta possui suporte ` a predi c ao de salto Predi c ao de salto consiste em prever se um salto deve ou n ao ser tomado Predi c ao de salto para opera c oes de salto condicional e incondicional Previs ao pode ser feita em software ou hardware Aqui usamos predi c ao feita em software. O compilador insere dicas nas opera c oes a m de informar ao hardware se o salto deve ou n ao ser tomado Opera c oes de salto que usem valores de registradores como endere co de destino n ao s ao tratadas pela predi c ao de salto
Hadley Magno
Introdu c ao
Est agios modicados para suportar predi c ao de salto Principais est agios alterados foram o est agio de busca e o de expans ao Demais est agios sofreram modica c oes a m de repassar os dados para os demais est agios No est agio de busca foram adicionados multiplexadores para selecionar entre os diversos endere cos de saltos poss veis Est agio de expans ao modicado para detectar se e uma opera c ao de salto
Hadley Magno
Introdu c ao
Em opera c oes de salto condicional verica-se o bit de predi c ao a m de saber se o salto e tomado ou n ao Opera c oes de salto incondicional sempre saltam A verica c ao do bit de predi c ao bem como a tomada do salto s ao realizados no est agio de expans ao
Hadley Magno
Introdu c ao
No est agio de decodica c ao I, opera c oes de salto que salvam o endere co de retorno s ao implementadas, internamente, como uma opera c ao de soma Valor do antigo PC e salvo no banco de registradores e o novo valor enviado para o est agio de busca. Isso ocorre no est agio de execu c ao e acesso ` a mem oria I
Hadley Magno
Introdu c ao
Adiantamento implementado para quase todos as combina c oes de opera c oes poss veis N ao e poss vel opera c oes de load seguidas de opera c oes que fazem uso do resultado do load Necess ario inserir NOPs via software
Hadley Magno
Introdu c ao
Hadley Magno
Introdu c ao
Ferramentas de desenvolvimento
Assembler e simulador implementados (C++) para desenvolvimento de algoritmos O mais simples poss vel: n ao exibe erros Bin ario gerado e um arquivo .txt f acil de ser lido tanto pelo simulador quanto por simula c oes em VHDL
Hadley Magno
Introdu c ao
Ferramentas de desenvolvimento
Opera c oes agrupadas com ;; Coment arios usando # Declara c ao de vari aveis inteiras ou strings
Hadley Magno
Introdu c ao
Ferramentas de desenvolvimento
loop: (p1) add $r1, $r2, $r0 shadd $r20, $r20, $r0 SLL 12 ;; add $r7, $r7, $r7 addi $r8, $r9, 72 ;; cmpeq $p1, $r1, $r2 ;; (!p1) jr $r31 andp $p2, $p2, $p3 ;; (!p2) jc loop ;; .qtd dw 20 .versao ascii "v1.0" # fim do exemplo
Hadley Magno Arquitetura VLIW com otimiza c ao do uso de mem oria
Introdu c ao
Experimentos e resultados
Hadley Magno
Introdu c ao
Experimentos e resultados
Compara c ao com o processador -VEX Arquitetura VLIW multiciclo com suporte ` a instru c oes recongur aveis Execu c ao do algoritmo Fibonacci: achar o 45o elemento da sequ encia
Qtd. opera c oes em paralelo 1 opera c ao 2 opera c oes 4 opera c oes 4 opera c oes com opera c oes recongur aveis
Hadley Magno
Introdu c ao
Experimentos e resultados
Mesmo algoritmo executado na arquitetura proposta Primeira execu c ao com os saltos preditos de forma errada Segunda execu c ao considerando saltos preditos corretamente
Hadley Magno
Introdu c ao
Experimentos e resultados
Taxa de compress ao de 82% para o algoritmo de Fibonacci implementado C odigo comparado com o de uma arquitetura VLIW imagin aria
Opera c oes de 32 bits, sempre Codica c ao explicita de NOPs
Pode-se obter melhores resultados de compress ao utilizando mais opera c oes de 14 bits em troca obtendo um desempenho inferior
Hadley Magno
Introdu c ao
Trabalhos futuros
Melhorias na arquitetura e no c odigo Realizar estudo mais detalhado das opera c oes Suportar interrup c oes, sistemas operacionais etc Compiladores, assemblers etc Combinar com outras t ecnicas de compress ao de c odigo
Hadley Magno