Parte 5 OBS: Essas anotações são adaptações do material suplementar (apresentações PPT) ao Livro do Hennessy e Patterson, 2ª e 3ª Ed. e do Livro do 5ª. Ed. A parte final do material corresponde às aulas do Prof. José Luís Güntzel, UFSC, disponível em http://www.inf.ufsc.br/~guntzel/ine641400/ine641400.html 1 Relembrando desempenho • Depende de 3 fatores chave: – Número de instruções – Tempo de ciclo de clock – Número de clocks por instrução (CPI) • Nesta parte do curso: princípios e técnica usados para implementar um processador • Apenas um subconjunto das instruções será considerado inicialmente. 2 Estrutura interna da CPU • Uma CPU deve: – – – – – Buscar instruções Decodificar instruções Buscar operandos/dados Executar a instrução (processar dados/operandos) Escrever o resultado • Esses passos básicos fazem parte do ciclo de busca e execução da arquitetura (aulas iniciais…) – Outros passos podem ser incluídos neste ciclo para cálculos de endereços de operandos, seja na fase de busca, seja na fase de escrita. 3 Ciclo de Busca-Execução PC 1000 1004 INSTR1 INSTR2 1000 IR MEM Unidade de controle CPU Buscar instrução no endereço 1000 4 Ciclo de Busca-Execução PC 1000 1004 INSTR1 INSTR2 1000 INSTR1 IR MEM Armazenar instrução Enviar instrução para ser no registradornadeUn.Controle instrução decodificada Unidade de controle CPU 5 Ciclo de Busca-Execução PC 1000 1004 INSTR1 INSTR2 1000 1004 INSTR1 INSTR1 IR MEM Unidade de controle CPU Incrementar PC 6 Ciclo de Busca-Execução PC 1000 1004 INSTR1 INSTR2 1004 INSTR2 IR MEM Unidade de controle CPU Tudo outra vez... 7 Ciclo de Busca & Execução (Patterson & Hennessy) instrução Fetch Obtém uma instrução do programa armazenado instrução Decode Determine as ações e o tamanho da instruções Operand Fetch Localiza e obtém os dados (operandos) Execute Result Store Next instrução Calcula um valor do resultado ou status Armazena resultados na memória para uso futuro Determina a próxima instrução 8 Na arquitetura MIPS • Dois passos iniciais iguais para todas as instruções: 1. Enviar o PC para o endereço de memória que contém a próxima instrução e trazê-la da memória 2. Usar os campos da instrução para identificar qual (is) registrador(es) – 1 ou 2, dependendo da instrução • Próximos passos dependem da classe de instrução a ser executada! – No caso do MIPS, a vantagem é que as execuções são bastante parecidas, o que agiliza a execução 9 CPU – Estrutura Interna (Stallings, Cap.12) Registers 10 CPU e Barramentos (Stallings, Cap.12) Registers Comunicação com outras parte via barramentos: dados, controle, endereços 11 Arquitetura de (Hayes,1988) Unidade Lógica e aritmética Quociente Mult. Acumulador Dispositivos de Entrada e Saída (E/S) Hardware LÓGICO E ARITMÉTICO MBR Instruções e dados IBR PC Memória MAR IR Hardware de CONTROLE Sinais de controle Principal Endereços Unidade de Controle 12 Visão da Arquitetura MIPS 13 Registradores • Além da ULA e do controle, vários registradores ocupam boa parte da estrutura da CPU – Fornecem “espaço físico temporário” para executar instruções • Quantidade e funções variam entre processadores – Isto é uma das mais importantes decisões de projeto! – Arquiteturas RISC priorizam um grande número deles. • Estão no topo da hierarquia do sistema de memória: são os componentes de memória “mais rápidos” e mais “escassos” do computador • Em termos de organização, 2 tipos: 1. Visíveis ao usuário e 2. Controle/status 14 Registradores visíveis ao usuário • Registradores de Propósito Geral – Variedade de funções pelo programador – Qualquer opcode pode conter um operando armazenado nesses registradores – Também usados em cálculos de endereços • Registradores de Dados – Armazenar dados (tipos definidos no ISA) • Registradores de Endereços – Ex: Ponteiros de segmento, pilha, índice • Registradores de Códigos Condicionais – Test & set (slt), test & branch (bne, beq) e outras instruções de desvio condicional. 15 Registradores de Uso Geral (1) • Podem não ser “exatamente de uso geral” – Ex: dedicados a ponto-flutuante / operações de pilha • Seu uso pode ser restrito/especializado • Podem ser usados por dados ou endereços – Dados: Acumulador é um registrador “especializado” em algumas situações – Endereços: O endereço calculado com o valor armazenado; acesso a segmentos de código (família x86) • Uso-geral x especialização dos registradores – Compromisso entre flexibilidade, tamanho das intruções, complexidade de decodificação, etc. – Influência sobre o ISA 16 Quantos registradores de uso geral uso? • Algo entre 8 – 32 nas arquiteturas atuais – Máquinas RISC, load-store podem ter centenas de registradores • Menos = mais referências à memória • Mais ≠ garantia de redução de referências à memória 17 Comparação de alguns processadores (Stallings, Cap. 13) 18 Qual o tamanho de um registrador? • Reg.endereços: Grande o suficiente para armazenar um endereço completo • Reg.de dados: Grande o suficiente para armazenar uma palavra completa • Em algumas situações é possível combinar 2 registradores de dados – Ex. programa C: double int a; long int a; • MIPS: registradores 32 bits, que combinados por trabalhar com até 64 bits – Multiplicação, operações ponto-flutuante, etc. 19 Registradores de Controle & Status • • • • • • Arquitetura de (Hayes, 1988): Contador de Programa (PC) Registrador de Instrução (IR) Registrador de Endereço de Memória (MAR) Registrador de Buffer de Memória (MBR) Registrador de Buffer de Instrução (IBR) • Cada um tem uma função específica na arquitetura proposta: – Ex: MAR armazena o endereço da palavra de memória a ser acessada. 20 Arquitetura de (Hayes,1988) Unidade Lógica e aritmética Quociente Mult. Acumulador Dispositivos de Entrada e Saída (E/S) Hardware LÓGICO E ARITMÉTICO MBR Instruções e dados IBR PC Memória MAR IR Hardware de CONTROLE Principal Sinais de controle Unidade de Controle Endereços 21 Algumas Organizações de Registradores (Stallings, Cap.12) 22 O “Processador”: Via de dados & Controle • Foco na implementação do MIPS • Projeto simplificado para dar suporte às instruções: – Referência à memória: lw, sw – Lógicas e aritméticas: add, sub, and, or, slt – Fluxo de controle: beq, j • Implementação Genérica: – Usa o contador de programa (PC) para fornecer o endereço da instrução – Pega a instrução na memória – Lê e escreve registradores – Usa campos da instrução para decidir exatamente o que fazer • Todas as instruções usam a ALU após ler os registradores ??? referência à memória? Aritméticas? Fluxo de controle? 23 Detalhes da implementação • Visão Geral: Data PC Address Instruction memory Instruction Register # Registers Register # ALU Address Data memory Register # Data • Dois tipos de unidades funcionais: – Elementos que processam valores de dados (log. combinacional) – Elementos que armazenam estado (log. Sequencial - memória) 24 Simplificação da Implementação • Unidades funcionais básicas usadas na construção da CPU Instruction address PC Instruction Add Sum MemWrite Instruction memory Address a. Instruction memory b. Program counter c. Adder Write data 5 Register numbers 5 5 Data 3 Read register 1 Read register 2 Registers Write register Write data ALU control Read data 1 Read data Data memory Sign extend 32 MemRead a. Data memory unit Data 16 b. Sign-extension unit Zero ALU ALU result Read data 2 RegWrite a. Registers b. ALU 25 Fluxo no caminho de dados • Multiplexadores para selecionar as vias (entradas e saídas) PCSrc M u x Add Add ALU result 4 Shift left 2 Registers PC Read address Instruction Instruction memory Read register 1 Read Read data 1 register 2 Write register Write data RegWrite 16 ALUSrc Read data 2 Sign extend M u x 3 ALU operation Zero ALU ALU result MemWrite MemtoReg Address Read data Data memory Write data M u x 32 MemRead 26 Controle • Seleção de operações a serem realizadas (ALU, read/write, etc.) • Controle do fluxo de dados (entradas dos multiplexadores) • Informações codificadas com os 32 bits da instrução • Exemplo: add $8, $17, $18 • 000000 10001 10010 01000 op rs rt rd 00000 100000 shamt funct Operação da ULA é baseada no tipo de instrução (campo op) e no código da função (campo funct) 27 Controle – Execução de Instrução na ULA • O que a ULA deveria fazer com a instrução abaixo? lw $1, 100($2) • 35 2 1 op rs rt 16 bit offset Controle de entrada da ULA (define a operação aritmética) 000 010 111 • 100 AND 001 add 110 set-on-less-than OR subtract Outros bits: tipo de instrução: 00:lw, sw 01:beq 11:aritmética 28 Solução para HW de Controle da ULA 0 M u x Add Add 4 Instruction [31– 26] Control Instruction [25– 21] PC Read address Instruction memory Instruction [15– 11] 1 Shift left 2 RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Read register 1 Instruction [20– 16] Instruction [31– 0] ALU result 0 M u x 1 Read data 1 Read register 2 Registers Read Write data 2 register 0 M u x 1 Write data Zero ALU ALU result Address Write data Instruction [15– 0] 16 Sign extend Read data Data memory 1 M u x 0 32 ALU control Instruction [5– 0] Memto- Reg Mem Mem Instruction RegDst ALUSrc Reg Write Read Write Branch ALUOp1 ALUp0 R-format 1 0 0 1 0 0 0 1 0 lw 0 1 1 1 1 0 0 0 0 sw X 1 X 0 0 1 0 0 0 X 0 X 0 0 0 1 0 1 beq 29 0 M u x Add ALU result Add 4 Instruction [31– 26] Read address Instruction memory Read register 1 Instruction [20– 16] Instruction [31– 0] Instruction [15– 11] Shift left 2 RegDst Branch MemRead MemtoReg Control ALUOp MemWrite ALUSrc RegWrite Instruction [25– 21] PC 1 0 M u x 1 Read data 1 Read register 2 Registers Read Write data 2 register 0 M u x 1 Write data Zero ALU ALU result Address Write data Instruction [15– 0] 16 Sign extend Read data Data memory 1 M u x 0 32 ALU control Instruction [5– 0] 30 GOTO... • Material Prof. José Luís Güntzel (UFSC) disponível em: http://www.inf.ufsc.br/~guntzel/ine641400/ine641400.html • Parte 1: MIPS monociclo: instruções a serem implementadas, regime de clock, construção do bloco operativo: http://www.inf.ufsc.br/~guntzel/ine641400/AOC2_aula2.pdf • Parte 2: MIPS monociclo: controle da ULA, execução das instruções, bloco de controle principal, desempenho de máquinas monociclo: http://www.inf.ufsc.br/~guntzel/ine641400/AOC2_aula3.pdf 31