Relembrando desempenho...

Documentos relacionados
MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

O Processador: Via de Dados e Controle

DataPath II Tomando o controle!

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples

lw, sw add, sub, and, or, slt beq, j

SSC0114 Arquitetura de Computadores

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

Organização de Computadores

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

Organização e Projetos de Computadores. Capítulo 2. Organização e Projetos de Computadores. Instruções

SSC0611 Arquitetura de Computadores

Sistemas Processadores e Periféricos Aula 2 - Revisão

Infraestrutura de Hardware. Instruindo um Computador

Sistemas de Computação. Instruções de Linguagem de Máquina

Exercícios resolvidos (aula de 4 de Maio) Resolução:

ção de Computadores II

Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture

Tiago Alves de Oliviera

Organização e Arquitetura de Computadores INTRODUÇÃO

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Arquiteturas de Computadores

UCP: Construindo um Caminho de Dados (Parte I)

Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

Unidade Central de Processamento UCP (CPU)

Microprocessadores CPU. Unidade de Controle. Prof. Henrique

Infraestrutura de Hardware. Funcionamento de um Computador

Microcontroladores e Interfaces

Introdução. Os mesmos princípios se aplicam a processadores. No MIPS as instruções são divididas normalmente em cinco etapas:

Capítulo 4. O Processador

Aula 17: UCP: Construindo um Caminho de Dados (Parte I)

O Processador: Via de Dados e Controle (Parte C: microprogramação)

SSC0112 Organização de Computadores Digitais I

Implementação da UCP. Construção do caminho de dados Controle Implementação monociclo. Organização de Computadores

Prof. Leonardo Augusto Casillo

Arquitetura e Organização de Computadores

Disciplina: Arquitetura de Computadores

Organização e Arquitetura de Computadores I

SSC510 Arquitetura de Computadores 1ª AULA

CPU Implementação. Multiciclo. Prof. Carlos Bazilio

SSC0112 Organização de Computadores Digitais I

3. INSTRUÇÕES. Instrução é uma palavra da linguagem de máquina. Instruction Set do MIPS ( usado pela NEC, Nintendo, Silicon Graphics e Sony.

Conjunto de Instruções. Prof. Leonardo Barreto Campos 1

Anotações da 2a Edição

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira

Capítulo 3. Instruções: Aritmética MIPS

Arquitetura e Organização de Computadores

Organização e Arquitetura de Computadores I

Organização ou MicroArquitectura

Especificação do Projeto de Processador RISC

ORGANIZAÇÃO DE COMPUTADORES

William Stallings Arquitetura e Organização de Computadores 8 a Edição. Capítulo 12 Estrutura e função do processador

Arquitetura de Computadores. Linguagem de Máquina

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

4. Modelo de Programação do DLX Introdução

Data Path / Control Path Controle do MIPS

Instruções. Maicon A. Sartin

Sistemas Processadores e Periféricos Aula 5 - Revisão

Arquitetura de Computadores I Prof. Ricardo Santos (Cap 2)

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Introdução à Computação: Arquitetura von Neumann

Unidade Central de Processamento 2. Registradores

Questionário Arquitetura e Organização de Computadores

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

Arquitetura de Computadores

CPU. Funções: Componentes: Processamento; Controle. UC (Unidade de Controle); Registradores; ALU s, FPU s etc. Arquitetura de Computadores 3

Organização de Computadores 1

Capítulo MC10 Organização Básica de Processadores

UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES

Organização e Arquitetura de Computadores I

Arquitetura de Computadores. Prof. João Bosco Jr.

ESTRUTURA E FUNCIONAMENTO DO COMPUTADOR

Arquitetura de Computadores. Ciclo de Busca e Execução

SSC0902 Organização e Arquitetura de Computadores

Transcrição:

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) A partir de agora: princípios e técnica usados para implementar um processador (CPU) 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 poderiam ainda ser incluídos neste ciclo para cálculos de endereços de operandos, seja na fase de busca, seja na fase de escrita. 3

Código em linguagem C (alto nível) Trecho de Código para computar e imprimir a soma dos quadrados dos inteiros entre 0 e 100. 4

Código em linguagem de máquina MIPS 5

A mesma rotina escrita em assembly MIPS 6

A mesma rotina escrita em MIPS, com labels 7

Ciclo de Busca-Execução 0x400000 0x400004 0x400030 0x400034 PC IR Unidade de controle MEM CPU 8

Ciclo de Busca-Execução 0x400000 0x400004 0x400030 0x400034 PC 0x400030 INSTR1 IR Unidade de controle MEM CPU Enviar Armazenar a instrução instrução para ser decodificada no registrador na de Un.Controle instrução 9

Ciclo de Busca-Execução 0x400000 0x400004 0x400030 0x400034 MEM PC 0x400030 0x400034 INSTR1 IR CPU INSTR1 Unidade de controle Incrementar PC 10

Ciclo de Busca-Execução 0x400000 0x400004 0x400030 0x400034 PC 0x400034 INSTR2 IR Unidade de controle MEM CPU Tudo outra vez... 11

Ciclo de Busca & Execução (Patterson & Hennessy) Busca instrução Decodifica instrução Busca Operandos Executa Guarda Resultados Obtém uma instrução do programa armazenado Determine as ações e os tipos da instruções Localiza e obtém os dados (operandos) Calcula um valor do resultado ou status Armazena resultados na memória para uso futuro Próxima instrução Determina a próxima instrução 12

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 (bits) da instrução para identificar qual (is) registrador(es) 1 ou 2, dependendo da instrução Passos seguintes dependem da classe (tipo) 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, pois simplifica o hardware de controle. 13

CPU Estrutura Interna (Stallings, Cap.12) Registers 14

CPU e Barramentos (Stallings, Cap.12) Registers Comunicação com outras parte via barramentos: dados, controle, endereços 15

Arquitetura de (Hayes,1988) Unidade Lógica e Aritmética Acumulador Quociente Mult. Hardware LÓGICO E ARITMÉTICO Dispositivos de Entrada e Saída (E/S) MBR Instruções e dados IBR IR PC MAR Memória Principal Hardware de CONTROLE Sinais de controle Unidade de Controle Endereços 16

Visão da Arquitetura MIPS 17

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 decisões de projeto mais importantes! Arquiteturas RISC priorizam um grande de registradores. 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 18

Registradores Visíveis ao Usuário 19

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 para Códigos Condicionais Test & set (slt), test & branch (bne,beq) e outras instruções de desvio condicional. 20

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 instruções, complexidade de decodificação, etc. Influência sobre o ISA 21

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 22

Comparação de alguns processadores (Stallings, Cap. 13) 23

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. em C: long int a; MIPS: registradores 32 bits, que combinados por trabalhar com até 64 bits Multiplicação, operações ponto-flutuante, etc. 24

Registradores de Controle / Status 25

Registradores de Controle & Status Arquitetura de (Hayes, 1988): 1. Contador de Programa (PC) 2. Registrador de Instrução (IR) 3. Registrador de Endereço de Memória (MAR) 4. Registrador de Buffer de Memória (MBR) 5. Registrador de Buffer de Instrução (IBR) Cada um com função específica na arquitetura: Ex: MAR armazena o endereço da palavra de memória a ser acessada. 26

Arquitetura de (Hayes,1988) Unidade Lógica e aritmética Acumulador Quociente Mult. Hardware LÓGICO E ARITMÉTICO Dispositivos de Entrada e Saída (E/S) MBR Instruções e dados IBR IR PC MAR Memória Principal Hardware de CONTROLE Sinais de controle Unidade de Controle Endereços 27

Algumas Organizações de Registradores (Stallings, Cap.12) 28

CPU =Via de dados & Controle PROCESSADOR MIPS 29

RELEMBRANDO O QUE FOI VISTO NA PARTE 3: Conjunto de Instruções MIPS 30

Sumário instruções MIPS Instrução Significado add $s1,$s2,$s3 $s1 = $s2 + $s3 sub $s1,$s2,$s3 $s1 = $s2 $s3 lw $s1,100($s2) $s1 = Memory[$s2+100] sw $s1,100($s2) Memory[$s2+100] = $s1 bne $s4,$s5,l Prox. instr. label L se $s4!= $s5 beq $s4,$s5,l Prox. instr. label L se $s4 == $s5 j L Prox. instr. label L Somente 3 formatos possíveis: R op rs rt rd shamt funct I,J* op rs rt endereço 16 bit ou imediato J op endereço de 26 bits J* = desvio condicional 31

Sumário: Registradores MIPS Nome Exemplo Comentários $s0-$s7, $t0-$t9, $zero, Localizações rápidas de dados. No MIPS, os dados devem estar nos registradores 32 registradores $a0-$a3, $v0-$v1, $gp, aritméticos. O Registrador $zero no MIPS é sempre igual a 0. Registrador $at é $fp, $sp, $ra, $at reservado para o montador manipular constantes grandes. Memory[0], Acessado somento por instruções de transferência de dados. MIPS usa endereços de bytes, e palavras sequenciais diferenciam de 4. 2 30 memory Memory[4],..., Memória armazena estruturas de dados, como vetores, e registros encadeados, words Memory[4294967292] como aqueles salvos em procedure calls. 32

Sumário: Assembly MIPS Linguagem Assembly MIPS Categoria Instrução Exemplo Significado Comentário add add $s1, $s2, $s3 $s1 = $s2 + $s3 3 operandos; dados em registradores Arim ética subtract sub $s1, $s2, $s3 $s1 = $s2 - $s3 3 operandos; dados em registradores add immediate addi $s1, $s2, 100 $s1 = $s2 + 100 Usado para adicionar constantes load w ord lw $s1, 100($s2) $s1 = Memory[$s2 + 100] Palavra da memória para registrador Transf. de store w ord sw $s1, 100($s2) Memory[$s2 + 100] = $s1 Palavra do registrador para memória dados load byte lb $s1, 100($s2) $s1 = Memory[$s2 + 100] Byte da memória para registrador store byte sb $s1, 100($s2) Memory[$s2 + 100] = $s1 Byte do registrador para memória load upper lui $s1, 100 $s1 = 100 * 2 16 Carregar constante no 16 bits immediate superiores branch on equal beq $s1, $s2, 25 if ($s1 == $s2) go to PC + 4 + 100 Teste de igualdade; desvio PC-relativo Desvio branch on not equal bne $s1, $s2, 25 Condicional set on less than slt $s1, $s2, $s3 if ($s1!= $s2) go to PC + 4 + 100 if ($s2 < $s3) $s1 = 1; else $s1 = 0 Teste de Desigualdade; desvio PCrelativo Comparar menor que; para beq, bne set less than slti $s1, $s2, if ($s2 < 100) $s1 = 1; Constante comparação menor que immediate 100 else $s1 = 0 jump j 2500 go to 10000 Saltar para o endereço alvo Desvio jump register jr $ra go to $ra Para escolha, retorno de procedimento Incondicional jump and link jal 2500 $ra = PC + 4; go to 10000 Para chamada de procedimento 33

Projeto da CPU MIPS Foco na implementação do MIPS Projeto simplificado para dar suporte (apenas) à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 ULA após ler os registradores? referência à memória? Aritméticas? Fluxo de controle? 34

Detalhes da implementação Visão Geral: Data PC Address Instruction Registers ALU Instruction memory Register # Register # Register # Address Data memory Data Dois tipos de unidades funcionais: Elementos que processam valores de dados (log. combinacional) Elementos que armazenam estado (log. sequencial - memória) 35

Simplificação da Implementação Unidades funcionais básicas usadas na construção da CPU Instruction address Instruction PC Add Sum Instruction memory MemWrite a. Instruction memory b. Program counter c. Adder Address Write data Data memory Read data 16 Sign 32 extend Register numbers Data 5 Read 3 5 register 1 Read Read data 1 5 register 2 Registers Write register Write data Read data 2 Data ALU ALU control Zero ALU result MemRead a. Data memory unit b. Sign-extension unit RegWrite a. Registers b. ALU 36

Fluxo no caminho de dados Multiplexadores para selecionar as vias (entradas e saídas) PCSrc 4 Add Shift left 2 Add ALU result M u x PC Read address Instruction Instruction memory Read register 1 Read register 2 Write register Write data RegWrite Registers Read data 1 Read data 2 16 Sign 32 extend ALUSrc M u x 3 ALU operation Zero ALU ALU result Address Write data MemRead MemWrite Read data Data memory MemtoReg M u x 37

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 00000 100000 op rd rt rs shamt funct Operação da ULA é baseada no tipo de instrução (campo op) e no código da função (campo funct), para instruções do tipo R 38

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 100 op rs rt 16 bit offset Controle de entrada da ULA (define a operação aritmética) 000 AND 001 OR 010 add 110 subtract 111 set-on-less-than Outros bits: tipo de instrução: 00:lw, sw 01:beq 11:aritmética 39

Solução para HW de Controle da ULA 0 4 Add Instruction [31 26] Control RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Shift left 2 Add ALU result M u x 1 PC Read address Instruction memory Instruction [31 0] Instruction [25 21] Instruction [20 16] Instruction [15 11] 0 M u x 1 Read register 1 Write data Read data 1 Read register 2 Registers Read Write data 2 register 0 M u x 1 Zero ALU ALU result Address Write data Data memory Read data 1 M u x 0 Instruction [15 0] 16 32 Sign extend ALU control Instruction [5 0] Instruction RegDst ALUSrc Memto- Reg Reg Write Mem Read Mem 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 beq X 0 X 0 0 0 1 0 1 40

0 4 A d d I n s t r u c t i o n [ 3 1 2 6 ] C o n t r o l R e g D s t B r a n c h M e m R e a d M e m t o R e g A L U O p M e m W r i t e A L U S r c R e g W r i t e S h i f t l e f t 2 A d d A L U r e s u l t M u x 1 P C R e a d a d d r e s s I n s t r u c t i o n m e m o r y I n s t r u c t i o n [ 3 1 0 ] I n s t r u c t i o n [ 25 21 ] I n s t r u c t i o n [ 20 16 ] I n s t r u c t i o n [ 15 11 ] 0 M u x 1 R e a d r e g i s t e r 1 R e a d R e a d d a t a 1 r e g i s t e r 2 R e g i s t e r s R e a d W r i t e d a t a 2 r e g i s t e r W r i t e d a t a 0 M u x 1 Z e r o A L U A L U r e s u l t A d d r e s s W r i t e d a t a D a t a m e m o r y R e a d d a t a 1 M u x 0 I n s t r u c t i o n [ 1 5 0 ] 16 S i g n 32 e x t e n d A L U c o n t r o l I n s t r u c t i o n [ 5 0 ] 41

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 Parte 3: MIPS multiciclo: construção do bloco operativo, execução das instruções: http://www.inf.ufsc.br/~guntzel/ine641400/aoc2_aula4.pdf 42