capítulo 2 processadores de propósito Único: hardwareattux/cap2.pdf · os slides são, em parte,...
TRANSCRIPT
Capítulo 2 – Processadores de
Propósito Único: Hardware
Prof. Romis Attux
EA075 – 2015
Os slides são, em parte, baseados nos dos autores do livro texto.
Processadores
Processador: dispositivo capaz de computar.
Consiste de um caminho de dados capaz de processar e armazenar informação e de uma unidade de controle que o rege.
Um processador de propósito geral é capaz de realizar diversas operações (lembra uma máquina de Turing universal).
Um processador de propósito único é capaz, em geral de realizar uma tarefa em particular (lembra uma máquina de Turing específica).
Processadores de Propósito
Único Há vantagens em se projetar um sistema embarcado tendo
por base um processador de propósito único (PPU).
Primeiramente, o desempenho pode ser muito bom, já que
um caminho de dados customizado tende a ser capaz de
realizar a tarefa demandada com menos ciclos de relógio
(uma questão de simplicidade e especificidade).
O tamanho do sistema pode ser relativamente pequeno, já
que utiliza-se o “estritamente essencial”.
O consumo de potência também pode ser relativamente
pequeno pelo motivo acima.
Desvantagens
NRE potencialmente alto. Se este não for o caso, as vantagens anteriores podem não ser plenamente exploradas.
O time-to-market pode ser elevado, e a flexibilidade tende a ser reduzida em relação a processadores de propósito geral.
Motivação
Discutir técnicas para projeto de sistemas de propósito específico.
Para tanto, partiremos de uma revisão de conceitos de circuitos lógicos.
Transistores e Portas
Circuitos lógicos podem ser vistos como abstrações matemáticas, mas sua corporificação requer tecnologias específicas.
O avanço da eletrônica nas últimas décadas fez com que esse paradigma se tornasse dominante.
Atualmente, a base de circuitos lógicos é, geralmente, um transistor baseado na tecnologia CMOS (complementary metal oxide semicondutor).
Transistor CMOS
source drain
oxide
gate
IC package IC channel
Silicon substrate
Transistores e Portas Lógicas
Algumas Portas
Projeto Básico com Mapas de
Karnaugh
Componentes no Nível de RT
Flip-Flops
Flip-flops (FFs) executam o “milagre” da memória digital por meio da recursão.
Vejamos uma estrutura básica.
Componentes Sequenciais no
Nível de RT
Projeto Lógico Sequencial (I)
Projeto Lógico Sequencial (II)
Projeto de um Processador de
Propósito Único Voltamos à divisão fundamental entre
caminho de dados (datapath) e unidade de controle.
Nas figuras a seguir discutiremos como essa divisão toma forma no caso de um projeto de propósito único baseado em teoria de circuitos lógicos.
Projeto de um Processador de
Propósito Único
Cálculo do Mínimo Divisor
Comum
Comentários sobre o Diagrama
de Estados O diagrama mostrado (FSMD, finite state machine with
data) é criado seguindo uma filosofia:
◦ Cada declaração (statement) se torna uma atribuição
simples, loop ou branch.
◦ Para cada loop, cria-se um estado de condição (C) e um
estado de junção (J).
◦ Cria-se então uma conexão entre o estado de condição e
os estados do loop.
◦ Um segundo arco é criado para “pular o loop” caso a
condição desejada não seja cumprida.
◦ Por fim, coloca-se um arco de (J) para (C).
Comentários sobre o Diagrama
de Estado – Atribuição Simples
Comentários sobre o Diagrama
de Estados - Loop
Comentários sobre o Diagrama
de Estados - Branch Para cada branch, criam-se C e J. Para a primeira condição, liga-se C a
um estado associado à primeira condição do branch. O mesmo é feito para os demais casos (lembrando que o caso seguinte envolve o não cumprimento dos casos anteriores). Após isso, faz-se a ligação com J.
Por fim, liga-se o último estado a J.
Comentário sobre o Diagrama
de Estados - Branch
Preparando o Projeto
Primeiro, cada variável declarada deve ter seu
registrador. A porta de saída será tratada como um
registrador d. Desenham-se também entradas e saídas.
Cria-se uma unidade funcional para cada operação
necessária. No caso, haverá duas subtrações, uma
comparação (menor que) e uma comparação de
diferente.
Fazem-se as conexões entre pinos, registradores e
unidades funcionais. Quando mais de uma unidade se
conecta ao mesmo registrador, deve-se utilizar um
esquema de multiplexagem.
Preparando o Projeto
Por fim, cria-se um identificador único para cada entrada de controle e saída dos componentes do caminho de dados.
Usa-se então a máquina construída antes como unidade de controle, com as devidas traduções booleanas.
Deve-se então projetar a máquina usando as técnicas sequenciais discutidas.
Visão Geral – Caminho de
Dados
Visão Geral – Unidade de
Controle
Visão Geral
Visão Geral – Projeto da
Unidade de Controle
Note que, a rigor, haveria 128 linhas na tabela!
Projeto em Nível RT de
Processadores de Propósito Único Podemos também partir de uma
FMSD para realizar o projeto. Uma vantagem é que, nesse caso, tem-se uma visão clara do timing de cada ciclo.
Analisemos um exemplo de um dispositivo que faz o envio de um número de oito bits a partir de uma entrada que só suporta quatro bits de cada vez.
Projeto em Nível RT de
Processadores de Propósito Único
Projeto em Nível RT de Processadores
de Propósito Único
WaitFirst4 espera pelos primeiros quatro bits, cuja
presença é indicada por rdy_in. Quando esse pulso é
detectado, passa-se a um estado RecFirst4Start, que
grava o conteúdo de data_in em data_lo. Após o final
do pulso rdy_in, espera-se pelos 4 próximos bits,
indicados por um segundo pulso rdy_in. Grava-se o
conteúdo agora em data_hi.
Ao final do segundo pulso rdy_in, os 8 bits são
gravados em data_out e emite-se rdy_out.
Supõe-se que o circuito seja síncrono, ou seja, os
sinais todos são “ANDed” com um clock.
Projeto em Nível RT de
Processadores de Propósito Único Chega-se então à conjunção unidade
de controle e datapath dada a seguir.
Projeto em Nível RT de
Processadores de Propósito Único Note que o caminho de dados é
composto apenas pelos registradores, já que não há operações de processamento a fazer.
A unidade de controle é, basicamente, uma consequência direta da FMSD (uma FSM é feita com as mudanças em negrito).
Otimização
Um projeto otimizado pode levar a melhorias em diferentes métricas de projeto.
Portanto, o projetista deve sempre buscar soluções otimizadas quando isso for possível.
Veremos algumas possibilidades a seguir.
Otimização do Programa
Original Buscar otimização no tempo e/ou no espaço. Vejamos um exemplo:
Otimização da FMSD
Possibilidades Imediatas:
◦ Estados com constantes especificando as transições condicionais podem ser eliminados.
◦ Estados adjacentes que realizam operações independentes podem ser eliminados.
◦ Estados associados a operações complexas podem ser quebrados para reduzir o tamanho do hardware.
◦ Escalonamento: em qual estado uma operação será executada?
Exemplo
Exemplo – Versão Otimizada
Otimização do Caminho de
Dados
Economia de unidades funcionais (e.g. compartilhamento de uma ALU sem “colisões” entre estados).
Diferentes componentes no nível RT
que podem ser escolhidos.
Otimização de FSMs
Codificação dos estados Minimização dos estados, buscando
“estados equivalentes”.