Processador Fluxo de Dados e Controle

Slides:



Advertisements
Apresentações semelhantes
Contadores e Registradores
Advertisements

Introdução Revisão de Conceitos de Circuitos Lógicos e Estruturas para Arquitetura de Computadores.
PIPELINE (continuação).
Organização de Computadores I
Eletrônica Digital Flip-Flops e Registradores de Deslocamento
CPU: Controle e processamento
Sistemas Digitais Projeto RTL – Unidade de Controle
Arquitetura de Computadores
WebDesign Redes de Computadores Aula 05
INTRODUÇÃO À LÓGICA DIGITAL
Ch Morgan Kaufmann Publishers Paulo C. Centoducatte Desempenho.
Circuitos Lógicos e Organização de Computadores Capítulo 8 –Circuitos Seqüenciais Síncronos Ricardo Pannain
Arquitetura e organização de computadores
Arquitetura e organização de computadores.
Autor: Salvador P. Gimenez
Lógica Booleana A álgebra booleana é baseada totalmente na lógica. Desta forma, os circuitos lógicos executam expressões booleanas. As expressões booleanas.
A Arquitetura: conjunto de instruções
Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 03: Computador.
VISÃO GERAL Profa. Fernanda Denardin Walker
Sistemas Digitais Projeto RTL – Unidade de Execução
Unidades de Execução e de Controle Sistemas Digitais.
Exemplo de arquitetura registrador-registrador- MIPS
MIPS PIPELINE.
MIPS MULTICICLO Fluxo de Dados e Controle
Circuitos Lógicos Sequenciais
MC542 Organização de Computadores Teoria e Prática
MC542 Organização de Computadores Teoria e Prática
Organização de Computadores Inserindo o Controle Identifica pontos de controle no caminho de dados – Busca da instrução – Operações lógicas e aritméticas.
Maria Aparecida Castro Livi
Introdução à Informática
Rganização de Computadores Melhorias de Desempenho com Pipelines - Parte B - Capítulo 6 – Patterson & Hennessy Organização de Computadores Melhorias de.
Rganização de Computadores Melhorias de Desempenho com Pipelines Capítulo 6 – Patterson & Hennessy Organização de Computadores Melhorias de Desempenho.
Prof. Fábio M. Costa Instituto de Informática Universidade Federal de Goiás rganização de Computadores Organização do Processador Parte B Capítulo 5 –
Professor: Erivelto Tschoeke – UDESC/CEPLAN
Implementando um Montador com LEX e YACC - 3
1. Circuitos seqüenciais - conceito 2. Flip-flops 3. Registradores 4
1998 Morgan Kaufmann Publishers Ch5B-1 O Processador: Via de Dados e Controle (Parte C: microprogramação)
Arquitetura de Computadores
Autor: Fernando de Mesentier Silva
Processadores – Aula 3 Professor: André Luis Meneses Silva
Fundamentos do Projeto Lógico
Processadores – Aula 3 Professor: André Luis Meneses Silva
Introdução à Programação
Índice SUMÁRIO Introdução ao projeto de lógica seqüencial.
Engenharia de Software para Computação Embarcada
Unidade Central de Processamento
Unidade Central de Processamento
Funcionamento básico de um computador
Latches e Flip-Flops GSI008 – Sistemas Digitais
Circuitos Seqüenciais
Pipeline O throughput de um pipeline é determinado pela freqüência com que uma instrução sai do pipeline. Todos os estágios devem estar prontos ao mesmo.
ORGANIZAÇÃO DE COMPUTADORES
Computador Simplificado Conceitos p.ex. FLUXO de execução
Infra-Estrutura de Hardware
ENGA78 – Síntese de Circuitos Digitais
ELETRÔNICA DIGITAL Circuitos Aritméticos
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Processamento de dados na UCP e memória UCP
Unidade Central De Processamento: Processador
Unidade Central De Processamento: Processador
Tudo sobre o Processador
Parte 3 Seção de Dados e Unidade de Controle
1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s Prof. Paulo Cesar Centoducatte
Arquitetura de computadores
Organização de Computadores Implementação da UCP Construção do caminho de dados Controle Implementação monociclo.
 Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:  Somar e subtrair  Mover um dado de um local de armazenamento.
TRABALHO AVALIATIVO ALUNO: FRANCISCO HELIÉSUS DE MEDEIROS MATÉRIA: ORGANIZAÇÃO DE COMPUTADORES.
Construção de Via de dados Trabalho Avaliativo do Primeiro Bimestre. Marcos André de Sena Silva.
Transcrição da apresentação:

Processador Fluxo de Dados e Controle

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?

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)

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

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

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

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)

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

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

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

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

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

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

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

ALU Operando A Flag de resultado zero resultado Operando B

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

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 0010 -> 0000 0010 1010 -> 1111 1010 "sign extension"

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

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)

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)

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

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: 000000 10001 10010 01000 00000 100000 op rs rt rd shamt funct Operação da ALU baseada no tipo de instrução e código da função

Controle P.ex., o que a ALU faz para essa instrução Example: lw $1, 100($2) 35 2 1 100 op rs rt 16 bit offset Entrada de controle da ALU 000 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?

Controle Deve descrever o hardware para computar a entrada de controle da ALU de 3-bit Dado o tipo de instrução 00 = lw, sw 01 = beq, 10 = 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

Controle

Controle Lógica combinacional simples (tabela verdade)

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

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)

Implementação de MIPS em um único ciclo

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”:

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

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)

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.

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

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 3 - 5 CICLOS!

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?

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)

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;

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

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

Resumo:

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?

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

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

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

Implementação em PLA

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" 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 m n

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)

ROM vs PLA Quebrar a tabela em duas partes — 4 bits de estado fornecem as 16 saídas, 24 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)

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

Detalhes

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

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?

Formato de Microinstrução

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

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

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.

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

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.

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

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 = 00 00 00 00 (em hexa), overflow aritmético CAUSE = 00 00 00 01 (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 C0 00 00 00 (em hexa).

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

Alteração na máquina de estado