TE 11008 – Arquitetura e Organização de Computadores

Propaganda
TE 11008 – Arquitetura e
Organização de Computadores
Nível da Microarquitetura
Ronaldo de Freitas Zampolo
LaPS/ENGCOMP/ITEC/UFPA
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 1
Tópicos
Introdução
Exemplo de microarquitetura
Exemplo de nível ISA
Exemplo de uma implementação
Melhora de performance
Exemplos de níveis de microarquitetura
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 2
Introdução
Objetivo: implementar o nível ISA (instruction set
architecture) situado imediatamente acima
Elementos a considerar no projeto do nível de
microarquitetura:
Nível ISA
Custo × desempenho do computador a ser
projetado
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 3
Exemplo de microarquitetura
ISA a ser implementada: IJVM (subconjunto da JVM)
Objetivo do estudo: análise dos sinais de controle e do
seqüenciamento da execução das instruções
Microprograma em memória ROM: busca,
decodificação e execução de instruções ISA
Estado: conjunto de variáveis do microprograma que
podem ser acessadas por todas as funções chamadas
(funções ISA). Cada funçõo muda, pelo menos uma
variável de estado. Ex.: PC
Instruções IJVM: simples, com 1 ou dois campos: (a)
opcode (código de operação); e (b) operando
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 4
MDR
PC
MBR
SP
LV
Control signals
Enable onto B bus
CPP
Write C bus to register
TOS
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 5
OPC
C bus
B bus
H
A
ALU control
B
6
N
Z
ALU
Shifter
Shifter control
2
Exemplo de microarquitetura
To
and
from
main
memory
Memory
control
registers
Caminho de dados: controlado por microinstruções
MAR
Exemplo de microarquitetura
Caminho de dados
Conjunto de registradores de 32 bits
UAL
Controle de função: F0 e F1
Controle de habilitação: ENA, ENB
Complemento de A: INVA
Incremento: INC
3 barramentos: A, B e C
Deslocador
SLL8 (shift left logical - 8 bits)
SRA1 (shift right arithmetic - 1 bit direita com
preservação de sinal MSB)
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 6
Exemplo de microarquitetura
Caminho de dados
F0
F1
0
0
0
1
1
1
1
1
1
1
0
1
1
1
ENA ENB INVA INC
1
0
1
1
1
1
1
0
1
0
1
1
1
0
0
0
1
0
0
0
0
0
0
0
0
0
1
1
Função
A
B
Ā
B̄
A+B
A+B+1
A+1
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 7
Exemplo de microarquitetura
Caminho de dados
É possível escrever em um mesmo registrador no
mesmo ciclo de clock: leitura e escrita são feitas em
momentos diferentes em um mesmo ciclo
A saída da UAL pode ser armazenada em mais de
um registrador. Contudo, no barramento B apenas o
contedo de um dos registradores pode ser
transferido por vez.
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 8
Caminho de dados
Temporização
Registers loaded
instantaneously from
C bus and memory on
rising edge of clock
Shifter
output
stable
Cycle 1
starts
here
Clock cycle 1
∆w
∆x
Set up
signals
to drive
data path
Drive H
and
B bus
∆y
Clock cycle 2
New MPC used to
load MIR with next
microinstruction here
∆z
ALU
and
shifter
MPC
available
here
Propagation
from shifter
to registers
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 9
Caminho de dados
Operao da memória
Acesso memória
Porta de 32 bits (palavra):
MAR (memory address register)
MDR (memory data register)
Porta de 8 bits (byte):
PC (program counter)
MBR (memory buffer register)
MAR: guarda o endereço da palavra
PC: orientado a byte
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 10
Caminho de dados
Operação da memória
Ex.: Operação de leitura
PC=2: leitura do byte 2, armazenamento nos oito
bits menos significativos de MBR
MAR=2: leitura dos bytes 8 a 11, armazenamento
em MDR
PC/MBR: programas do nível ISA
MAR/MDR: dados do nível ISA
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 11
Caminho de dados
Operação da memória
MAR: Implementação
Memórias: dispositivos orientados a byte
MAR: orientado a palavra
Em 4 GB (232 endereços de 1 byte), existem 230
palavras 4 bytes
32-Bit MAR (counts in words)
Discarded
0 0
32-Bit address bus (counts in bytes)
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 12
Caminho de dados
Operação da memória
MAR (cont):
palavra 0 → byte 0
palavra 1 → byte 4
palavra 2 → byte 8
palavra 3 → byte 12
MBR:
Com sinal: 25 bits mais significativos (-128 a 127)
Sem sinal: MBR passa os oito bits menos
significativos para o barramento B, os outros bits
são iguais a zero
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 13
Microinstruções
De acordo com a figura do caminho de dados, são
necessários 29 sinais para controle:
9 sinais para controlar escrita no barramento B
9 sinais para controlar escrita nos registradores a
partir do barramento C
8 sinais para controlar UAL e deslocador
2 sinais para leitura e escrita em memória (MAR /
MDR)
1 sinal para busca em memória via PC /MBR
Os valores dos 29 sinais definem as operações a serem
executadas durante um ciclo do caminho de dados
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 14
Microinstruções
Observação quanto ao acesso à memória:
Registers loaded
instantaneously from
C bus and memory on
rising edge of clock
Shifter
output
stable
Cycle 1
starts
here
Clock cycle 1
∆w
∆x
Set up
signals
to drive
data path
Drive H
and
B bus
∆y
Clock cycle 2
New MPC used to
load MIR with next
microinstruction here
∆z
ALU
and
shifter
MPC
available
here
Propagation
from shifter
to registers
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 15
Microinstruções
Observação quanto ao acesso à memória:
Uma solicitação de acesso ao conteúdo da memória
é feita no ciclo 1
a informação solicitada só estará disponível no ciclo
3 ! (pelo menos)
Redução do número de sinais de controle:
9 sinais para controlar escrita em B → 4 sinais,
usando decodificador (não faz sentido o acesso a B
por mais de um registrador simultaneamente)
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 16
Microinstruções
Formato possível de microinstrução
Bits
9
NEXT_ADDRESS
Addr
3
J
M
P
C
J
A
M
N
8
J
A
M
Z
JAM
S
L
L
8
9
3
4
S F0 F1 E E I I H O T C L S P M M W R F
P O P V P C D A R E E
N N N N
R
I
T
R R T A C
C S P
A B V C
A
A
1
E D H
ALU
C
Mem
B
bus
B
B bus registers
0 = MDR
1 = PC
2 = MBR
3 = MBRU
4 = SP
5 = LV
6 = CPP
7 = TOS
8 = OPC
9 -15 none
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 17
Microinstruções
Endereço: contém o endereço da próxima
microinstrução potencial
Desvio: determina a próxima microinstrução a ser
executada
UAL: especifica as funções da UAL e do deslocador
Barramento C: seleciona quais registradores
armazenarão a informação no barramento C
Memória: especifica operação com a memória no ciclo
Barramento B: seleciona o registrador-entrada do
barramento B
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 18
Controle microprogramado
Memory control signals (rd, wr, fetch)
3
4
4-to-16
Decoder
MAR
MDR
MPC
9
PC
O
8
MBR
SP
512 × 36-Bit
control store
for holding
the microprogram
9
LV
JMPC
CPP
Addr
J
ALU
C
MIR
M B
TOS
JAMN/JAMZ
OPC
H
B bus
2
1-bit flip–flop
N
6
ALU
control
High
bit
ALU
Control
signals
Enable
onto
B bus
Z
Shifter
C bus
2
Write
C bus
to register
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 19
Controle microprogramado
O MIC-1: elementos
Seqüenciador
Realiza todos os passos necessários para execução
de uma instrução ISA
A cada ciclo: estado de cada sinal de controle; e o
endereço da próxima microinstrução
Memória de controle: armazena o microprograma
completo
MPC (MicroProgram Counter): endereço da próxima
microinstrução
MIR (Micro Instruction Register): armazena
microinstrução corrente
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 20
Controle microprogramado
Campo JAM
000: nada a fazer
JAMN == 1: O valor de N deve ser submetido a um
OR com bit de maior ordem do MPC
JAMZ == 1: O valor de Z deve ser submetido a um
OR com bit de maior ordem do MPC
F=(JAMN AND N) OR (JAMZ AND Z) OR
NEXT_ADDRESS[8]
Só há duas possibilidades para o conteúdo de MPC:
NEXT_ADDRESS
NEXT_ADDRESS com bit de mais alta ordem
submetido à operação OR com 1
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 21
Controle microprogramado
Exemplo:
Address
Addr
JAM
0x75
0x92
001
Data path control bits
JAMZ bit set
…
0x92
…
0x192
One of
these
will follow
0x75
depending
on Z
JMPC:
1: MPC=(8 bits de MBR) OR (8 bits menos
significativos do NEXT_ADDRESS)
JMPC=1: NEXT_ADDRESS = 0x000 ou 0x100
Em geral, MBR contém um código de operação
(opcode) ISA
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 22
Um exemplo de nível ISA: a IJVM
Pilhas:
Armazenamento de variáveis locais
SP
LV
SP
LV
SP
LV
a3
a2
a1
108
104
100
(a)
b4
b3
b2
b1
a3
a2
a1
c2
c1
b4
b3
b2
b1
a3
a2
a1
(b)
(c)
SP
LV
d5
d4
d3
d2
d1
a3
a2
a1
(d)
Auxílio em operações aritméticas (Ex.: a1 = a2 + a3)
SP
SP
LV
a2
a3
a2
a1
(a)
LV
a3
a2
a3
a2
a1
(b)
SP
LV
a2 + a3
a3
a2
a1
(c)
SP
LV
a3
a2
a2 + a3
(d)
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 23
Um exemplo de nível ISA: a IJVM
Modelo de memória da IJVM
Duas opções de visualização:
Vetor de 232 bytes = 4 GB
Vetor de 230 palavras (cada palavra = 4 bytes)
As instruções da IJVM só podem ter acesso à
memória indexando-a com ponteiros
1. Pool de Constantes
Programas IJVM não podem escrever nessa área
que armazena constantes, strings e ponteiros
para outras áreas da memória
CPP aponta para o endereço da primeira palavra
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 24
Um exemplo de nível ISA: a IJVM
Modelo de memória da IJVM
1. Quadro de Variáveis Locais
Armazena variáveis locais (procedimentos)
LV aponta para a base do quadro de variáveis
locais corrente
2. Pilha de Operandos
Localiza-se imediatamente acima do quadro de
variáveis locais
SP aponta para o endereço de mais alta ordem
3. Área de Procedimento
Armazena o programa
PC armazena o endereço da instrução a ser
executada
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 25
Um exemplo de nível ISA: a IJVM
Modelo de memória da IJVM
Current
Operand
Stack 3
SP
Current
Local
Variable
Frame 3
LV
Local
Variable
Frame 2
Constant
Pool
Local
Variable
Frame 1
Method
Area
PC
CPP
Área de Procedimento: vetor de bytes
Pool de Constantes: vetor de palavras
Pilha de Operandos: vetor de palavras
Quadro de Variáveis Locais: vetor de palavras
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 26
Um exemplo de nível ISA: a IJVM
Conjunto de instruções da IJVM
Manipulação de pilha
BIPUSH byte (0x10): coloca byte na pilha
DUP (0x59): copia topo e coloca no topo
ILOAD varnum (0x15): coloca uma variável local
no topo da pilha
ISTORE varnum(0x36): retira palavra do topo e
armazena numa variável local
LDC_W ndice(0x13): coloca no topo uma
constante vinda do Pool de Constantes
POP (0x57): retira da pilha a palavra do topo
SWAP (0x5F): troca de posição as duas palavras
do topo da pilha
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 27
Um exemplo de nível ISA: a IJVM
Conjunto de instruções da IJVM
Operações aritméticas
IADD (0x60): retira as duas palavras do topo,
soma-as e armazena o resultado no topo
ISUB (0x64): retira as duas palavras do topo,
subtrai-as e armazena o resultado no topo
Operações lógicas
IAND (0x7E): retira as duas palavras do topo,
realiza um AND e armazena o resultado no topo
IOR (0x80): retira as duas palavras do topo,
realiza um OR e armazena o resultado no topo
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 28
Um exemplo de nível ISA: a IJVM
Conjunto de instruções da IJVM
Desvios
GOTO desl (0xA7): desvio incondicional
IFEQ desl (0x99): retira o topo e desvia se for
igual a zero
IFLT desl (0x9B): retira o topo e desvia se for
menor que zero
IF_ICMPEQ desl (0x9F): retira as duas palavras
do topo e desvia se forem iguais
Chamadas a procedimentos
INVOKEVIRTUAL desl (0xB6): chama um
procedimento
IRETURN (0xAC): retorna de um procedimento
trazendo um inteiro
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 29
Compilação de JAVA para IJVM
Java
Assembly
ISA
i=j+k;
ILOAD J
0x15 0x02
if (i==3)
ILOAD K
0x15 0x03
IADD
0x60
ISTORE I
0x36 0x01
ILOAD I
0x15 0x01
BIPUSH 3
0x10 0x03
IF_ICMPEQ L1
0x9F 0x00 0x0D
ILOAD J
0x15 0x02
BIPUSH 1
0x10 0x01
ISUB
0x64
ISTORE J
0x36 0x02
GOTO L2
0xA7 0x00 0x07
L1: BIPUSH 0
0x10 0x00
ISTORE K
0x36 0x03
k=0;
else
j=j-1;
L2:
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 30
Implementação da IJVM
Main 1 ⇒ PC=PC+1; fetch; goto(MBR)
nop1 ⇒ goto Main 1
iadd1⇒ MAR=SP=SP-1; rd
iadd2⇒ H=TOS
iadd3⇒ MDR=TOS=MDR+H; wr; goto Main 1
isub1 ⇒ MAR=SP=SP-1; rd
isub2 ⇒ H=TOS
isub3 ⇒ MDR=TOS=MDR-H; wr; goto Main 1
dup1 ⇒ MAR=SP=SP+1
dup2 ⇒ MDR=TOS; wr; goto Main 1
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 31
Implementação da IJVM
bipush1 ⇒ SP=MAR=SP+1
bipush2 ⇒ PC=PC+1; fetch
bipush3 ⇒ MDR=TOS=MBR; wr; goto Main 1
iload1 ⇒ H=LV
iload2 ⇒ MAR=MBRU+H; rd
iload3 ⇒ MAR=SP=SP+1
iload4 ⇒ PC=PC+1; fetch; wr
iload5 ⇒ TOS=MDR; goto Main 1
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 32
Pipeline
IFU
IFU
Reg
A
C
B
IFU
Reg
A
C
B
IFU
Reg
A
C
B
Reg
A
C
B
1
IFU
ALU
ALU
ALU
ALU
Shifter
Shifter
Shifter
Shifter
IFU
Reg
A
C
B
IFU
Reg
A
C
B
IFU
Reg
A
C
B
Reg
A
C
B
2
IFU
ALU
ALU
ALU
ALU
Shifter
Shifter
Shifter
Shifter
IFU
Reg
A
C
B
IFU
Reg
A
C
B
IFU
Reg
A
C
B
Reg
A
C
B
Instruction
3
IFU
ALU
ALU
ALU
ALU
Shifter
Shifter
Shifter
Shifter
IFU
Reg
A
C
B
IFU
Reg
A
C
B
IFU
Reg
A
C
B
Reg
A
C
B
4
Cycle 1
ALU
ALU
ALU
ALU
Shifter
Shifter
Shifter
Shifter
Cycle 2
Cycle 3
Cycle 4
Time
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 33
Pipeline
swap1
swap2
swap3
swap4
swap5
swap6
ciclo MAR=SP-1; rd MAR=SP H=MDR; wr MDR=TOS MAR=SP-1; wr TOS=H; goto Main1
1
B=SP
2
C=B-1
B=SP
3
MAR=C; rd
C=B
4
MDR=mem
MAR=C
5
B=MDR
6
C=B
B=TOS
7
H=C; wr
C=B
B=SP
8
mem=MDR
MDR=C
C=B-1
B=H
9
MAR=C; wr
C=B
10
mem=MDR
TOS=C
11
goto(MBR)
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 34
Velocidade x Custo
Metodologias para aumentar a velocidade de execução
Reduzir o número de ciclos necessários à execução
de instruções
Simplificar a organização da máquina, de modo a
reduzir o período de clock
Sobrepor a execução de instruções
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 35
Redução do caminho de execução
União do loop de interpretação com microcódigo
pop1
MAR=SP=SP-1; rd
pop2
pop3
TOS=MDR; goto Main1
Main 1
PC=PC+1; fetch; goto(MBR)
pop1
MAR=SP=SP-1; rd
Main1.pop
PC=PC+1; fetch
pop3
TOS=MDR; goto(MBR)
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 36
Redução do caminho de execução
Arquitetura com três barramentos: inclusão de um
barramento A para a entrada esquerda da UAL
Unidade de busca de instruções: busca de instruções a
cargo de uma unidade independente; UAL restrita
execução de instruções propriamente dita
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 37
Redução do caminho de execução
Memory
control
registers
MAR
To
and
from
main
memory
MDR
PC
Instruction
fetch unit
(IFU)
MBR1
MBR2
SP
LV
Control signals
CPP
Enable onto B bus
TOS
Write C bus to register
OPC
C bus
B bus
H
A bus
C latch
A latch
ALU
control
B latch
6
ALU
N
Z
Shifter
TE 11008 Arquitetura e Organização de Computadores – Microarquitetura – p. 38
Download