View
0
Download
0
Category
Preview:
Citation preview
Infra-estrutura de Hardware
Infra-estrutura de Hardware
CPU: Estrutura e
Funcionalidade
Infra-estrutura de Hardware
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 Mono-ciclo– Leitura da Instrução
– Operações Aritméticas
– Leitura + Operação entre registradores
– Acesso à Memória
– Desvio Condicional
• Visualizando a execução da instrução
• Análise de Desempenho
Infra-estrutura de Hardware
Como um documento é processado?
1- Busca
documento
2 - Identifica tipo
de transação
3 - Verifica se saldo
é positivo
4 - Efetiva transação e
atualiza saldo
Infra-estrutura de Hardware
Componentes de um computador
Vídeo
Teclado
CPU
Execução das
instruções de um
programa
Memória
Programas
+
Dados
E/S
Buffers
Infra-estrutura de Hardware
Unidade Central de Processamento
PCReg.IR MAR
MBR
◼Unidade de processamento
◼Unidade de controle
ALU
Gerais
Reg.FLAGS
Dados
Endereço
Controle
Infra-estrutura de Hardware
Ciclo de Instrução
Busca instrução
Executa instrução
Busca operando
Decodifica instrução
Armazena resultado
Incrementa PC
Infra-estrutura de Hardware
Projeto de uma Arquitetura
• Conjunto de
registradores
• Tipos de Dados
• Formato e Repertório
de instruções
Infra-estrutura de Hardware
Projeto: uma CPU simples...
Instrução Descrição
LD rt, desl(rs) Carrega palavra de mem em rs
SD rt, desl(rs) Armaz. Reg. na memória
ADD rd, rs, rt rd <- rs + rt
SUB rd, rs, rt rd <- rs – rt
AND rd, rs, rt rd <- rs and rt
BEQ rs, rt, end Desvio se rs = rt
Infra-estrutura de Hardware
RISC V - Visão Abstrata
Registers
Register #
Data
Register #
Data
memory
Address
Data
Register #
PC Instruction ALU
Instruction
memory
Address
Multiplexers
◼ Não é só juntar
fios juntos◼ Usar multiplexers
Controle
Conceitos Básico Projeto Lógico
• Informação codificada em binário
– Baixa tensão = 0, alta tensão = 1
– Um fio por bit
– Dados codificados como vários bits são
implementados como barramentos
• Circuito combinacional
– Operam os dados
– A saída é uma função da entrada
• Circuitos de estado (sequenciais)
– Guardam informação
Elementos Combinacionais
• AND-gate
– Y = A & B
A
BY
I0
I1Y
M
u
x
S
◼ Multiplexer
◼ Y = S ? I1 : I0
A
B
Y+
A
B
YALU
F
◼ Adder
◼ Y = A + B
◼ Arithmetic/Logic Unit
◼ Y = F(A, B)
Elementos Sequenciais
• Registrador: armazena dados em um
circuito
• Usa um sinal do clock para determinar
quando atualizar o valor armazenado
– Edge-triggered: atualiza quando Clk muda de
0 para 1
D
Clk
Q
Clk
D
Q
Elementos Sequenciais
• Registrador com controle de escrita
– Sómente atualiza na transição do clock edge
quando controle write é 1
– Usado quando valor armazenado será usado
posteriormente
D
Clk
Q
Write
Write
D
Q
Clk
Uso do Clock
• A lógica combinacional transforma os dados durante os ciclos de clock
• Entre transições do clock
– Entrada de elementos de estado, saída para o elemento de estado
– Atraso mais longo determina o período do relógio
Projetando um Datapath
• Datapath (Caminho de Dados)
– Elementos que processam dados e
endereços na CPU– Registradores, ALUs, mux's, memórias,…
• Vamos construir um caminho de dados
RISC-V incrementalmente
– Refinando o projeto da versão geral
Infra-estrutura de Hardware
Relógio - Clock
Clock cycle
S tate
e lem ent
1
Com binationa l logic
State
elem ent
2
Infra-estrutura de Hardware
Mono-ciclo
Clock cycle
Busca a próxima
instrução
Executa a
instrução
Início
Término
Busca - Executa
Infra-estrutura de Hardware
Componentes Básicos: Busca de Instrução
PC
Instruction
memory
Instructionaddress
Instruction Add Sum
8000..
.0000
02480020
0000..
0004
8000..
0000 8000..
0004
Memória (Instrução)
Contador Programa
Adicionador
Infra-estrutura de Hardware
Busca de Instrução
PC
Instructionmemory
Readaddress
Instruction
4
Add
8000..
.0000
8000..
.0000
8000..
.0004
02480020
64-bit
register
Infra-estrutura de Hardware
Componentes Básicos: Operações Aritméticas
RegWrite
RegistersWriteregister
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Writedata
Data
Data
Register
numbers
Banco de registradores
Leitura
5
5
500110
00111
0000...0004
0000...0002
00000...004...
0000...0002
Infra-estrutura de Hardware
Componentes Básicos: Operações Aritméticas
RegWrite
RegistersWriteregister
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Writedata
Data
Data
Register
numbers
Banco de registradores
Escrita
5
5
5
00101
0000..0006
0000..0004
0000..0002
0000..0006
1
Infra-estrutura de Hardware
Componentes Básicos: Operações Aritméticas
ALU control
ALUresult
ALU
b. ALU
Zero
4
0000..0004
0000..0002
0000..0006
+: 0001
ALU
Infra-estrutura de Hardware
Instruções Aritméticas/Lógicas
InstructionRegisters
Writeregister
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Writedata
ALUresult
ALU
Zero
RegWrite
ALU operation400110
001110000..0004
0000..0002
0000..0004
00000..0002
0001 (+)
0000..0006
00000000111001100
010
010
100
000
00
00101
1
0000..0006
Infra-estrutura de Hardware
Busca e Execução de Instruções
Aritméticas/Lógicas
InstructionRegisters
Writeregister
Readdata1
Readdata2
Readregister 1
Readregister 2
Writedata
ALUresult
ALUZero
RegWrite
ALUoperation3
PC
Instructionmemory
Readaddress
Instruction
4
Add
8000..
0000
02480020
8000..
0004
00110
00111
0000..0004
00000..0002
0000..000600101
0000..00040000..0002
0000..0006
+
1
add x5,x6,x7
Infra-estrutura de Hardware
Componentes Básicos: Acesso à memória
MemRead
MemWrite
Datamemory
Writedata
Readdata
Address
8000..
000C
0000..0005
1
Memória de Dados - Leitura
0000..0005
0
Infra-estrutura de Hardware
Componentes Básicos: Acesso à memória
MemRead
MemWrite
Datamemory
Writedata
Readdata
Address
80000010
0000..00070000..0005
0000..0007
1
0
Memória de Dados - Escrita
Infra-estrutura de Hardware
Componentes Básicos: Acesso à memória
12 64Sign
extend
Geração de Constantes: extrai e
compõe constante da instrução
preservando o sinal
FFDFFFF..FFFD
002 0000..0002
Immed.
Gen.
Infra-estrutura de Hardware
Instruções Load/Store
Instruction
32 64
RegistersWriteregister
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Data
memoryWritedata
Readdata
Writedata
Sign
extend
ALUresult
Zero
ALU
Address
MemRead
MemWrite
RegWrite
ALU operation3
ld x8, desl(x9)
8D
28
04B
0
01001
01000
8D..4B0
8000..0008
000..004B0
800..004B8
0000..0002
0000..0002
1
+
1
0
8000..0008
0000..0002
Immed.
Gen.
Infra-estrutura de Hardware
Instruções Load/Store
Instruction
32 64
RegistersWriteregister
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Data
memoryWritedata
Readdata
Writedata
Immed
Gen.
ALUresult
Zero
ALU
Address
MemRead
MemWrite
RegWrite
ALU operation3
sw x8, desl(x9)
AB
28
04B
0
01001
01000
00..4B0
8000..0008
0000..04B0
800..004B8
0000..0005
00000005
+
1
0
80000008
00000005
Immed.
Gen.
Instruções Aritméticas e de Load/Store
Instruction
32 64
Registers
W rite
register
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Data
mem oryWrite
data
Read
dataM
u
x
M
u
xW rite
data
ALU
result
Zero
ALU
Address
RegWrite
ALU operation3
MemRead
MemWrite
ALUSrc
MemtoReg
02480020
00110
001110000..0004
0000..00002 0000..00060000..00040000..0002
0000..0006
0000..0006
001011
0
+
00000006
1
add x5, x6, x7
Immed
Gen.
Immed.
Gen.
Infra-estrutura de Hardware
Instruções Aritméticas e de Load/Store
Instruction
32 64
Registers
W rite
register
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Data
mem oryWrite
data
Read
dataM
u
x
M
u
xW rite
data
Sign
extend
ALU
result
Zero
ALU
Address
RegWrite
ALU operation3
MemRead
MemWrite
ALUSrc
MemtoReg
0000..00040000..0006
8D
28
04B
0
01001
01000
8D..4B0
8000..0008
80000008
0000..04B0
8000..04B8
00000005
0000..0005
00000005
1 0
ld x8, desl(x9)
1
0
00000005
1
Immed
Gen.
Immed.
Gen.
Infra-estrutura de Hardware
Instrução de Branch on equal
32 64Sign
extend
ZeroALU
Sum
Shift
left 1
To branch
control logic
Branch target
PC + 4 from instruction datapath
Instruction
Add
RegistersWriteregister
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Writedata
RegWrite
ALU operation4
Endereçamento relativo
Beq x5,x6, end.
0000..00060000..0006
0000..0005
00101
001100000..0006
0000..0006
00..4b00000..04b0
0000..12C0
8000..0004 8000..12C2
comp
Immed.
Gen.
Unidade Processamento
Controle da ALU
• ALU usada para
– Load/Store: F = adição
– Branch: F = subtração
– R-type: F depende do opcode
ALU control Function
0000 AND
0001 OR
0010 add
0110 subtract
Controle da ALU
• Suponha que o ALUOp de 2 bits seja derivado
do opcode
– Lógica combinacional deriva o controle da ALU
opcode ALUOp Operation Opcode field ALU function
ALU
control
ld 00 load register XXXXXXXXXXX add 0010
sd 00 store register XXXXXXXXXXX add 0010
beq 01 branch on equal XXXXXXXXXXX subtract 0110
R-type 10 add 100000 add 0010
subtract 100010 subtract 0110
AND 100100 AND 0000
OR 100101 OR 0001
Unidade de Controle
• Sinais de controle derivados da instrução
Processamento e Controle
Instrução R-Type
Instrução Load
Instrução BEQ
Infra-estrutura de Hardware
Análise de Desempenho
• Mono-ciclo:
– Período do relógio definido em função da duração da instrução mais lenta
• 8ns (5ns)
• Implementação pouco eficiente
• CPUtime = nr. Instruções x período_clock
• Como melhorar o desempenho na execução de várias instruções?
– Multi-ciclo: cada estágio é executado em um ciclo do relógio.
– Começar uma instrução ANTES da última instrução iniciada terminar.
Recommended