A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Processador Fluxo de Dados e Controle

Apresentações semelhantes


Apresentação em tema: "Processador Fluxo de Dados e Controle"— Transcrição da apresentação:

1 Processador Fluxo de Dados e Controle

2 O processador: Fluxo de Dados & Controle
Estamos prontos para realizarmos uma implementação do MIPS Simplificada para conter somente: Instruções de referência à memória: lw, sw Instruções aritméticas e lógicas: add, sub, and, or, slt Instruções de fluxo de controle: beq, j Implementação genérica: usar o contador de programa (PC) para fornecer o endereço da instrução Ler a instrução da memória ler registradores Usar a instrução para decidir exatamente o que fazer Todas as instruções usam a ALU após a leitura dos registradores Por que? Referência a memória?Aritmética? Fluxo de controle?

3 Mais detalhes sobre a Implementação
Resumo / Vista Simplificada: Dois tipos de unidades funcionais: Elementos que operam sobre dados (combinacional) Elementos que contêm estado (sequencial)

4 Elementos de Estado Sem clock vs. com clock
Clocks são usados em lógica síncrona como um elemento que contem estado pode ser atualizado? Tempo de ciclo Borda de subida Borda de descida

5 preliminares Número ímpar de inversores em anel
Número par de inversores em anel

6 Um elemento de estado sem clock
O retentor (latch) set-reset A saída depende das entradas atuais e também das entradas passadas S Q R Q

7 Latch D e Flip-flop D A saída é igual ao valor armazenado no elemento (não é necessário pedir permissão para ver o valor) A mudança de estado (valor) é baseada no clock Latch D: sempre que as entradas mudam, e o clock é acionado Flip-flop D: o estado muda somente na borda do clock (edge-triggered)

8 Latch D Duas entradas: O valor do dado a ser armazenado (D)
O sinal de clock (C) indicando quando ler & escrever D Duas saídas: O valor do estado interno (Q) e o seu complemento D Q C Q

9 flip-flop D A saída somente muda na borda do clock D Q C Q

10 Nossa Implementação Uma metodologia usando borda para o disparo ( “trigger”) Execução típica: Ler conteúdo de certos elementos de estado, Enviar valores através de alguma lógica combinacional Escrever resultados a um ou mais elementos de estado

11 Banco de Registradores (Register file)
Construido usando D flip-flops

12 Banco de Registradores
Nota: ainda usamos o clock real para determinar quando escrever

13 Implementação simples
Inclui as unidades funcionais que necessitamos para as instruções

14 multiplexador S S 2 2 C mux de 4 entradas C A A B B C C D D
Seleciona uma das entradas para a saída, baseado numa entrada de controle S C A B mux de 2-entradas A e B e controle S 1 S S 2 2 A A 01 B 1 C B mux de 4 entradas 10 C C 2 C 10 D 3 D 11

15 ALU Operando A Flag de resultado zero resultado Operando B

16 ALU de 32 bits 32 Seleção result a b ALU Linhas de controle: 000 = and 001 = or 010 = add 110 = subtract 111 = slt

17 Convertendo um número de n bits em números de mais de n bits
Um dado imediato de 16 bits do MIPS é convertido para 32 bits em aritmética Copiar o bit mais significativo (o bit de sinal) para outros bits > > "sign extension"

18 Memória de instruções endereço de 32 bits pelo PC instrução de 32 bits

19 Memória de dados Para leitura: deve fornecer o endereço (Address) e acionar o controle de leitura (MemRead=1) Para escrita deve fornecer o endereço (Address), o dado a ser escrito no (Writedata) e acionar o controle de escrita (MemWrite=1)

20 Contador de programa endereço da próxima de instrução endereço da instrução corrente Quando é sequencial é o endereço da instrução corrente adicionado de 4 (memória de instruções constituída de bytes)

21 Construindo o Fluxo de Dados
Usar os multiplexadores para juntar os elementos

22 Controle Selecionar as operações para executar (ALU, leitura/escrita, etc.) Controlar o fluxo de dados (entradas para o multiplexador) A informação vem de 32 bits da instrução Exemplo: add $8, $17, $18 Formato de Instrução: op rs rt rd shamt funct Operação da ALU baseada no tipo de instrução e código da função

23 Controle P.ex., o que a ALU faz para essa instrução
Example: lw $1, 100($2) op rs rt 16 bit offset Entrada de controle da ALU AND 001 OR 010 add 110 subtract 111 set-on-less-than Por que o código da subtração é 110 e não 011?

24 Controle Deve descrever o hardware para computar a entrada de controle da ALU de 3-bit Dado o tipo de instrução = lw, sw 01 = beq, = aritmética Código de função para aritmética Descreve usando uma tabela verdade (que pode ser convertido em portas): ALUOp Computado do tipo de instrução

25 Controle

26 Controle Lógica combinacional simples (tabela verdade)

27 Nossa estrutura de controle simples
Todas as lógicas são combinacionais Esperamos estabilizar tudo, e a operação certa a ser realizada ALU não produz resposta certa imediatamente Usamos os sinais de escrita sincronizados ao clock para determinar quando escrever O tempo de ciclo é determinado pelo circuito mais moroso

28 Implementação em um ciclo
Calcular o tempo de ciclo assumindo atrasos desprezíveis exceto: Memória (2ns), ALU e somadores (2ns), acesso aos registradores (1ns)

29 Implementação de MIPS em um único ciclo

30 Onde estamos? Problemas de ciclo simples:
E se tivéssemos instruções mais complexas como ponto-flutuante? Devastação de área Uma Solução: usar um tempo de ciclo “menor” Ter diferentes instruções levando diferentes números de ciclos Um fluxo de dados de “multiplos ciclos”:

31 Técnica Multiciclo Estaremos usando as mesmas unidades funcionais
ALU é usada para computar o endereço e para incrementar PC A memória é usada para instruções e dados Nossos sinais de controle não são determinados somente pelas instruções P.ex., o que a ALU faria para uma instrução de “subtração” ? Usamos uma máquina de estado finito para o controle

32 Revisão: máquinas de estado finito
Um conjunto de estados e Função próximo estado (determinado pelo estado atual e entrada) Função de saída (determinada pelo estado atual e possivelmente entrada) Usaremos uma máquina Moore (saída baseada somente no estado atual)

33 Revisão: máquinas de estado finito
Exemplo: B. 21 Um amigo gostaria de construir um olho “eletrônico” para uso em dispositivo de segurança. O dispositivo consiste de 3 luzes alinhados, controladas por saídas Esquerda, Central, e Direita, que, se acionadas, indicam que uma luz estaria acesa. Somente uma luz é acionada por vez, e a luz “move” da esquerda para a direita e, então, da direita para a esquerda, para assustar os ladrões que acreditam que os dispositivos estejam monitorando as suas atividades. Traçar a representação gráfica para a máquina de estado finito usada para especificar o olho eletrônico. Notar que a taxa de movimentação do olho será controlado pela velocidade do clock (que não deveria ser excessivamente grande) e que não existem essencialmente entradas.

34 Técnica multiciclo Quebrar as instruções em passos, cada passo leva um ciclo Balancear a quantidade de trabalhos a realizar Restringir cada ciclo para usar somente uma unidade funcional No fim de um ciclo Armazenar valores para serem usados nos ciclos posteriores introduzir registradores internos adicionais

35 Cinco passos de Execução
Busca da instrução (Instruction Fetch) Decodificação da instrução e busca do registrador Execução, Computação do endereço de memória, ou conclusão de uma instrução de branch Acesso à memória ou conclusão de uma instrução R-type Passo de Write-back INSTRUÇÕES LEVEM DE CICLOS!

36 Passo 1: Busca da instrução (Instruction Fetch)
Usar o PC para a leitura da instrução e carga da mesma no registrador de instrução (Instruction Register). Incrementar o valor do PC por 4 e carregar o resultado no PC. Pode ser descrito sucintamente usando RTL "Register-Transfer Language" IR = Memory[PC]; PC = PC + 4; Podemos obter os valores dos sinais de controle? Quais as vantagens de atualizar o PC neste passo?

37 Passo 2: Decod. da Instrução e Busca de Registradores
Leitura dos registradores rs e rt Computar o endereço de branch no caso da instrução de branch RTL: A = Reg[IR[25-21]]; B = Reg[IR[20-16]]; ALUOut = PC + (sign-extend(IR[15-0]) << 2); Estamos acionando as linhas de controle baseadas no tipo de instrução (a instrução está sendo "decodificada" na lógica de controle)

38 Passo 3 (dependente da instrução)
ALU está realizando uma das três funções, baseadas no tipo de instrução Referência à memória: ALUOut = A + sign-extend(IR[15-0]); R-type: ALUOut = A op B; Branch: if (A==B) PC = ALUOut;

39 Passo 4 (R-type ou acesso à memória)
Acesso à memória através de loads e stores MDR = Memory[ALUOut]; or Memory[ALUOut] = B; Fim das instruções R-type Reg[IR[15-11]] = ALUOut; A escrita é realizada no fim do ciclo, na borda

40 Passo Write-back Reg[IR[20-16]]= MDR; E as outras instruções?

41 Resumo:

42 Questões simples Quantos ciclos são necessários para o código? lw $t2, 0($t3) lw $t3, 4($t3) beq $t2, $t3, Label #assume not add $t5, $t2, $t3 sw $t5, 8($t3) Label: ... O que acontece durante o oitavo ciclo de execução? Em que ciclo a soma de $t2 e $t3 é realizada?

43 Implementando o Controle
Os sinais de controle são dependentes de: Que instrução está sendo executada Que passo está sendo realizada Usar as informações acumuladas para especificar uma máquina de estado finito Especificar uma máquina de estado finito graficamente, ou usar microprogramação

44 Especificação da FSM Quantos bits de estado são necessários?

45 Máquina de estado finito para controle
Implementação:

46 Implementação em PLA

47 Implementação em ROM ROM = "Read Only Memory"
Os valores das palavras de memória são fixas ao longo do tempo Uma ROM pode ser usada para implementar uma tabela verdade Se o endereço é de m-bits, podemos endereçar 2m entradas na ROM. Nossas saídas são os bits de dados onde o endereço aponta m é a “altura", e n é a “largura" m n

48 Implementação em ROM Quantas entradas existem? 6 bits para opcode, 4 bits para estado = 10 linhas de endereço (i.e., 210 = 1024 endereços diferentes) Quantas saídas existem? 16 saídas de controle do fluxo de dados, 4 bits de estado = 20 saídas ROM é 210 x 20 = 20K bits (um tamanho não usual)

49 ROM vs PLA Quebrar a tabela em duas partes — 4 bits de estado fornecem as 16 saídas, x 16 bits of ROM — 10 bits fornecem o endereço para os 4 bits de estado seguinte, 210 x 4 bits of ROM — Total: 4.3K bits de ROM PLA é menor — pode compartilhar termos produtos — são necessárias somente entradas que produzem saída ativa — pode levar em conta os irrelevantes O tamanho é (#entradas ´ #termos-produto) + (#saídas ´ #termos-produto) Para esse exemplo = (10x17)+(20x17) = 460 células PLA Células PLA são de tamanho aproximado de uma célula de ROM (levemente maior)

50 Um outro estilo de Implementação
Instruções complexas: o “estado seguinte" é quase sempre o estado atual + 1

51 Detalhes

52 Microprogramação O que são “microinstruções” ?

53 Microprogramação Uma metodologia de especificação
Apropriado se centenas de opcodes, modos, ciclos, etc. sinais especificados simbolicamente usando microinstruções Duas implementações da mesma arquitetura tem o mesmo microcódigo? O que faria um microassembler?

54 Formato de Microinstrução

55 Codificação Maximal vs. Minimal
Sem codificação: 1 bit para cada operação do fluxo de dados rápido, requer mais memória (lógica) Usada para Vax 780 — 400K de memória! Muita codificação: Enviar as microinstruções através de lógicas para a obtenção dos sinais de controle Usa menos memória, lenta Contexto histórico do CISC: Muita lógica a ser colocada num único chip Usar uma ROM (ou mesmo RAM) para manter o microcódigo Fácil para adicionar novas instruções

56 Microcódigo: compromisso (Trade-offs)
Vantagens da especificação: Fácil de projetar e escrever Projetar a arquitetura e o microcódigo simultaneamente Vantagens da Implementação (off-chip ROM) Fácil de mudar se os valores estão em memória Pode emular outras arquiteturas Pode fazer uso de registradores internos Desvantagens da Implementação, MAIS LENTO que: O controle seja implementado no mesmo chip como o processador ROM não é mais rápido que RAM Quando não existe necessidade para fazer mudanças

57 Exceções e Interrupções
Exceções e interrupções – são eventos diferentes de branches e jumps que mudam o fluxo normal de execução de instruções. Exceção – evento inesperado que causa uma mudança no fluxo de controle, que tem origem dentro do processador (por ex. overflow aritmético) Interrupção –evento inesperado que causa uma mudança inesperada no fluxo de controle, que tem origem fora do processador. (por ex. digitação de um caracter no teclado) Observação: arquitetura 80x86 (ou IA-32, Intel) usa o termo Interrupção para todos esses eventos.

58 Exceções e interrupções
Exemplos: TIPO DE EVENTO ORIGEM TERMINOLOGIA MIPS Solicitação de dispositivo de E/S externa interrupção Chamada do SO pelo programa de usuário interna exceção Overflow aritmético Uso de uma instrução indefinida Mal funcionamento do hardware ambas exceção ou interrupção

59 Como manipular exceções e interrupções
Ações básicas a serem tomadas pela máquina quando ocorre uma exceção : 1) salvar o endereço da instrução ofendida (instrução atual) num registrador especial EPC (Exception Program Counter). 2) transferir o controle (atualizar o conteúdo de PC) para um endereço específico, que possibilite ao computador executar a rotina de tratamento de exceção. ROTINA DE TRATAMENTO DE EXCEÇÃO: depende do tipo de exceção, por exemplo, reportar ao usuário que ocorreu um erro de overflow. Ações a serem tomadas após a execução do tratamento de exceção: Depende do tipo de exceção: por ex. pode encerrar, ou continuar executanto, o programa que estava executando antes da exceção. O EPC é usado para determinar o endereço de reinício da execução.

60 Como saber a causa da exceção
Para o computador manipular uma exceção, ele deve conhecer a razão da exceção. A razão pode ser obtida de duas formas: 1) usar o registrador de status (cause register) que indica a razão 2) usar interrupção vetorizada, caso em que o endereço de desvio para executar a exceção é determinado pela causa da exceção

61 Implementação de exceção no MIPS
Implementação de duas exceções: 1) overflow aritmético 2) instrução indefinida A causa é determinada pelo valor do registrador CAUSE de 32 bits: CAUSE = (em hexa), overflow aritmético CAUSE = (em hexa), instrução indefinida O endereço da instrução ofendida é guardada em EPC O endereço de desvio para o início da execução da rotina de tratamento de exceção é dado por C (em hexa).

62 Alterações no fluxo de dados
Registradores adicionais: EPC, Cause Sinais de controle adicionais: EPCWrite, CauseWrite, IntCause

63 Alteração na máquina de estado


Carregar ppt "Processador Fluxo de Dados e Controle"

Apresentações semelhantes


Anúncios Google