CPU: Estrutura e Funcionalidade
Roteiro da Aula Ciclo de Instrução Projeto de uma CPU simples: conceitos Componentes básicos Leitura da instrução Operação entre registradores Acesso à memória Implementação ono-ciclo Leitura da Instrução Operações Aritméticas Leitura + Operação entre registradores Acesso à emória Desvio Condicional Visualizando a execução da instrução Análise de Desempenho
Como um documento é processado? - Busca documento 2 - Identifica tipo de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza saldo
Componentes de um computador CPU Execução das instruções de um programa emória Programas + Dados E/S Vídeo Teclado Infra-estrutura de Buffers Hardware
Unidade Central de Processamento Unidade de controle Dados IRReg. FLAGS Reg. PC Gerais AR BR Endereço Controle Unidade de processamento
Ciclo de Instrução Busca instrução Incrementa PC Decodifica instrução Busca operando Executa instrução Armazena ado
Projeto de uma Arquitetura Conjunto de registradores Tipos de Dados Formato e Repertório de instruções
Instruções Tipos de instruções Processamento: 6 5 5 5 5 6 aritméticas e lógicas F Opcode rs rt rd shamt funct Armazenamento F2 Opcode rs rt Endereço E/S 6 5 5 6 Controle: teste e desvio
IPS Instrução Descrição nop No operation lw reg, desl(reg_base) reg. = mem (reg_base+desl) sw reg, desl(reg_base) em(reg_base+desl) = reg lui reg, constante reg(3..6) = constante add regi, regj,regk Regi. <- Regj. + Regk addi regi, regj, cte Regi = regj + cte sub regi, regj, regk Regi. <- Regj. Regk and regi, regj,regk Regi. <- Regj. and Regk andi regi, regj, cte Regi = regj and cte shfrl regd, regs, n Desloca regs para direita n vezes (Lógico) e armazena valor deslocado em regd. shfra regd, regs, n Desloca regs para dir. n vezes (aritmético), armazena valor deslocado em regd. shfl regd, regs, n Desloca regs para esquerda n vezes, armazena valor deslocado em regd. rotr regd, regs, n Rotaciona regs para direita n vezes, armazena valor deslocado em regd. rotl regd, regs, n Rotaciona regs para esquerda n vezes, armazena valor deslocado em regd. beq regi, regj, end Desvia para end. se regi = regj bne regi, regj, end Desvia para end se regi <> regj slt regi, regj, regk Regi = se regj < regk senão regi= slti regi, regj, cte Regi = se regj < cte senão regi= j end Desvio para end jr regi PC = (regi) jal end Arquitetura Infra-estrutura de Computadores Hardware R3 = PC; PC = end break 29 Para a execução do programa
Projeto: uma CPU simples... Instrução LW rt, desl(rs) SW rt, desl(rs) ADD rd, rs, rt SUB rd, rs, rt AND rd, rs, rt BEQ rs, rt, end Descrição Carrega palavra de mem em rs Armaz. Reg. na memória rd <- rs + rt rd <- rs rt rd <- rs and rt Desvio se rs = rt Aritm Opcode rs rt rd shamt funct lw/sw Opcode rs rt Endereço beq Opcode rs rt Endereço
IPS - Visão Abstrata Register # PC ress Registers Register # Register # ress
Relógio - Clock S tate elem ent Com binational logic State elem ent 2 Clock cycle
ono-ciclo Início Busca a próxima instrução Executa a instrução Término Clock cycle Busca - Executa
8 2482 8 4 84 Componentes Básicos: Busca de Instrução Contador Programa address PC Sum emória (Instrução) Adicionador
2482 8 8 84 Busca de Instrução 4 PC address
Componentes Básicos: Operações Aritméticas Register numbers 5 5 5 register register 2 Registers register 4 2 2 4 2 Reg Banco de registradores Leitura
Componentes Básicos: Operações Aritméticas Register numbers 5 5 5 6 register 6 register 4 2 Registers 2 register 2 Reg Banco de registradores Escrita
Componentes Básicos: Operações Aritméticas 4 +: 3 control Zero 6 2 b.
Instruções Aritméticas/Lógicas (+) register 6 register 4 2 2 Registers register Reg 4 2 2 3 operation Zero 6
8 Busca e Execução de Instruções Aritméticas/Lógicas 2482 84 add $, $2, $3 PC address 4 + 3 operation register 6 4 4 register 2 2 Registers Zero 6 register 22 Reg
8C Componentes Básicos: Acesso à memória em ress 5 5 em emória de Dados - Leitura
8 Componentes Básicos: Acesso à memória em ress 7 5 7 em emória de Dados - Escrita
Componentes Básicos: Acesso à memória FFFD 6 Sign 32 FFFFFFFD extend 2 2 Extensão de Sinal
8D28 4B Instruções Load/Store lw $8, desl($9) register register 2 Registers register 2 2 88 Reg 4B 6 Sign 32 extend 88 3 + operation Zero 4B 84B8 ress em 2 em 2
AB28 4B Instruções Load/Store sw $8, desl($9) register register 2 Registers 5 register 88 2 Reg 4B 6 Sign 32 extend 88 3 + operation Zero 5 4B 84B8 ress em 5 em
2482 Instruções Aritméticas e de Load/Store add $, $2, $3 6 register register 2 2 Re gisters W rite 2 reg ister W rite 6 4 Reg 6 32 Sign extend 4 Src 3 + operation Zero 2 6 resu lt ress u x em mem ory em emtoreg u x 6
8D28 4B Instruções Aritméticas e de Load/Store lw $8, desl($9) register register 2 W rite reg ister W rite Reg 4B Re gisters 6 4 5 88 2 6 32 Sign extend Src 3 operation 88 Zero 84B8 resu lt ress u u x x 4B em emtoreg 5 mem ory 5 em 5
Instruções Aritméticas e de Load/Store register register 2 Registers register Reg 2 Src u x 3 operation Zero ress em emtoreg u x 6 32 Sign extend Instrução Função da alu Controle da em Load word lw Store word sw Sub Sub And and Infra-estrutura Slt de Hardware Set on less than Beq sub
Instrução de Branch on equal Beq $,$2, end. PC + 4 from instruction path register 6 register 6 2 Registers register 2 5 Reg 4b 84 82C4 2C 6 Sign 32 extend Shift left 2 6 6 3 Sum operation Zero Branch target To branch control logic Endereçamento relativo 4b comp
Unidade de Processamento PCSrc 4 Reg Shift left 2 PC address [3 ] [25 2] [2 6] [5 ] RegDst [5 ] register register 2 register 2 Registers 6 Sign 32 extend Src control Zero em ress em emtoreg [5 ] Op
4 Unidade de Processamento Aritm lw/sw beq Opcode rs rt rd shamt Opcode rs rt Reg Shift left 2 Endereço PCSrc funct 3-26 25-2 2-6 5- -6 5-3-26 25-2 2-6 5- Opcode rs rt Endereço 3-26 25-2 2-6 5- PC address [3 ] [25 2] [2 6] [5 ] RegDst [5 ] register register 2 register 2 Registers 6 Sign 32 extend Src control Zero em ress em emtoreg [5 ] Op
Unidade de Controle 4 [3 26] Control RegDst Branch em emtoreg Op em Src Reg Shift left 2 PCSrc PC address [3 ] [25 2] [2 6] [5 ] [5 ] register register 2 Registers 2 register 6 Sign 32 extend control Zero ress [5 ]
Busca de instrução 4 [3 26] Control RegDst Branch em emtoreg Op em Src Reg Shift left 2 PCSrc PC address [3 ] [25 2] [2 6] [5 ] [5 ] register register 2 Registers 2 register 6 Sign 32 extend control Zero ress [5 ]
Leitura de registradores 4 [3 26] Control RegDst Branch em emtoreg Op em Src Reg Shift left 2 PCSrc PC address [3 ] [25 2] [2 6] [5 ] [5 ] register register 2 Registers 2 register 6 Sign 32 extend control Zero ress [5 ]
Instr. Aritmética: Operação com 4 [3 26] Control RegDst Branch em emtoreg Op em Src Reg Shift left 2 PCSrc PC address [3 ] [25 2] [2 6] [5 ] [5 ] register register 2 Registers 2 register 6 Sign 32 extend control Zero ress [5 ]
Instr. Aritmética: Escrita Reg. 4 [3 26] Control RegDst Branch em emtoreg Op em Src Reg Shift left 2 PCSrc PC address [3 ] [25 2] [2 6] [5 ] [5 ] register register 2 Registers 2 register 6 Sign 32 extend control Zero ress [5 ]
Lw/Sw: Operação com (cálculo do endereço) 4 [3 26] Control RegDst Branch em emtoreg Op em Src Reg Shift left 2 PCSrc PC address [3 ] [25 2] [2 6] [5 ] [5 ] register register 2 Registers 2 register 6 Sign 32 extend control Zero ress [5 ]
Lw: Leitura de emória 4 [3 26] Control RegDst Branch em emtoreg Op em Src Reg Shift left 2 PCSrc PC address [3 ] [25 2] [2 6] [5 ] [5 ] register register 2 Registers 2 register 6 Sign 32 extend control Zero ress [5 ]
Lw: Escrita em Registrador 4 [3 26] Control RegDst Branch em emtoreg Op em Src Reg Shift left 2 PCSrc PC address [3 ] [25 2] [2 6] [5 ] [5 ] register register 2 Registers 2 register 6 Sign 32 extend control Zero ress [5 ]
Sw: Escrita de emória 4 [3 26] Control RegDst Branch em emtoreg Op em Src Reg Shift left 2 PCSrc PC address [3 ] [25 2] [2 6] [5 ] [5 ] register register 2 Registers 2 register 6 Sign 32 extend control Zero ress [5 ]
Beq: Operação com (comparação) e cálculo de endereço de desvio 4 [3 26] Control RegDst Branch em emtoreg Op em Src Reg Shift left 2 PCSrc PC address [3 ] [25 2] [2 6] [5 ] [5 ] register register 2 Registers 2 register 6 Sign 32 extend control Zero ress [5 ]
Análise de Desempenho ono-ciclo: Período do relógio definido em função da duração da instrução mais lenta 8ns (5ns) Implementação pouco eficiente CPU time = nr. Instruções x período_clock Como melhorar o desempenho na execução de várias instruções? ulti-ciclo: cada estágio é executado em um ciclo do relógio. Começar uma instrução ANTES da última instrução iniciada terminar.