• Nenhum resultado encontrado

TE Arquitetura e Organização de Computadores

N/A
N/A
Protected

Academic year: 2021

Share "TE Arquitetura e Organização de Computadores"

Copied!
38
0
0

Texto

(1)

TE 11008 – Arquitetura e

Organização de Computadores

Nível da Microarquitetura

Ronaldo de Freitas Zampolo LaPS/ENGCOMP/ITEC/UFPA

(2)

Tópicos

Introdução

Exemplo de microarquitetura Exemplo de nível ISA

Exemplo de uma implementação Melhora de performance

(3)

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

(4)

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

(5)

E

x

e

m

p

lo

d

e

m

ic

ro

a

rq

u

it

e

tu

ra

C a m in h o d e d a d o s : c o n tr o la d o p o r m ic ro in s tr u ç õ e s H Shifter control Shifter ALU 2 N A B B bus C bus 6 ALU control Control signals Memory control registers

Enable onto B bus

Write C bus to register To and from main memory Z SP LV CPP TOS OPC PC MDR MAR MBR T E 1 1 0 0 8 A rq u ite tu ra e O rg a n iz a c¸ ˜ao d e C o m p u ta d o re s – M

(6)

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)

(7)

Exemplo de microarquitetura

Caminho de dados

F0 F1 ENA ENB INVA INC Função

0 1 1 0 0 0 A 0 1 0 1 0 0 B 0 1 1 0 1 0 A¯ 1 0 1 1 0 0 B¯ 1 1 1 1 0 0 A + B 1 1 1 1 0 1 A + B + 1 1 1 1 0 0 1 A + 1

(8)

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

(9)

Caminho de dados

Temporização Cycle 1 starts here Shifter output stable Registers loaded instantaneously from C bus and memory on rising edge of clock

Set up signals to drive data path ALU and shifter Drive H and B bus Propagation from shifter to registers ∆w ∆x ∆y ∆z

Clock cycle 1 Clock cycle 2

MPC available here

New MPC used to load MIR with next microinstruction here

(10)

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

(11)

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

(12)

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 Discarded

32-Bit MAR (counts in words)

32-Bit address bus (counts in bytes)

(13)

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

(14)

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

(15)

Microinstruções

Observação quanto ao acesso à memória:

Cycle 1 starts here Shifter output stable Registers loaded instantaneously from C bus and memory on rising edge of clock

Set up signals to drive data path ALU and shifter Drive H and B bus Propagation from shifter to registers ∆w ∆x ∆y ∆z

Clock cycle 1 Clock cycle 2

MPC available here

New MPC used to load MIR with next microinstruction here

(16)

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)

(17)

Microinstruções

Formato possível de microinstrução

Bits 9 3 8 9 3 4

NEXT_ADDRESS

Addr JAM ALU C Mem B

R E A D F E T C H J A M N J M P C J A M Z S L L 8 S R A 1 F0F1 E N A E N B I N V A I N C H O P C T O S C P P L V S P P C M D R M A R W R I T E B bus B bus registers 0 = MDR 1 = PC 2 = MBR 3 = MBRU 4 = SP 5 = LV 6 = CPP 7 = TOS 8 = OPC 9 -15 none

(18)

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

(19)

Controle microprogramado

H Shifter ALU 2 N B bus 6 ALU control Control signals Memory control signals (rd, wr, fetch)

Enable onto B bus Write Z C bus SP LV CPP TOS OPC PC MDR MAR MBR 9 O 512 × 36-Bit control store for holding the microprogram 3 8 4-to-16 Decoder 2 9 4 MPC MIR Addr J ALU C M B 1-bit flip–flop High bit JMPC JAMN/JAMZ

(20)

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

(21)

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

(22)

Controle microprogramado

Exemplo:

Address Addr Data path control bits

One of these will follow 0x75 depending on Z JAM

JAMZ bit set 0x75 0x92

0x92

0x192

001

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

(23)

Um exemplo de nível ISA: a IJVM

Pilhas:

Armazenamento de variáveis locais

SP LV a3 a1 (a) 108 100 a2 104 SP LV a3 a1 (b) a2 b3 b4 b1 b2 a3 a1 (c) a2 b3 b4 LV c1 SP c2 b1 b2 LV a3 a1 (d) a2 d3 d4 SP d5 d1 d2

Auxílio em operações aritméticas (Ex.: a1 = a2 + a3)

LV a3 SP a2 a1 (a) a2 LV a3 a2 SP a3 a1 (b) a2 LV a3 SP a2 + a3 a1 (c) a2 LV SP a3 a2 + a3 (d) a2

(24)

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

(25)

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

(26)

Um exemplo de nível ISA: a IJVM

Modelo de memória da IJVM

SP LV PC CPP Constant Pool Current Operand Stack 3 Current Local Variable Frame 3 Local Variable Frame 2 Local Variable Frame 1 Method Area

Área de Procedimento: vetor de bytes Pool de Constantes: vetor de palavras Pilha de Operandos: vetor de palavras

(27)

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

(28)

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,

(29)

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

(30)

Compilação de JAVA para IJVM

Java Assembly ISA

i=j+k; ILOAD J 0x15 0x02 if (i==3) ILOAD K 0x15 0x03 k=0; IADD 0x60 else ISTORE I 0x36 0x01 j=j-1; 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 L2:

(31)

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

(32)

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

(33)

Pipeline

1

Instr

uction

Cycle 1 Cycle 2 Cycle 3 Cycle 4 IFU ALU Reg Shifter A C B IFU ALU Reg Shifter A C B IFU ALU Reg Shifter A C B IFU ALU Reg Shifter A C B IFU ALU Reg Shifter A C B IFU ALU Reg Shifter A C B IFU ALU Reg Shifter A C B IFU ALU Reg Shifter A C B IFU ALU Reg Shifter A C B IFU ALU Reg Shifter A C B 2 IFU ALU Reg Shifter A C B IFU ALU Reg Shifter A C B IFU ALU Reg Shifter A C B 3 IFU ALU Reg Shifter A C B IFU ALU Reg Shifter A C B 4 IFU ALU Reg Shifter A C B

(34)

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)

(35)

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

(36)

Redução do caminho de execução

União do loop de interpretação com microcódigo

pop1 MAR=SP=SP-1; rd pop1 MAR=SP=SP-1; rd

pop2 Main1.pop PC=PC+1; fetch

pop3 TOS=MDR; goto Main1 pop3 TOS=MDR; goto(MBR)

(37)

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

(38)

Redução do caminho de execução

H A latch C latch B latch ALU N B bus C bus 6 ALU control Control signals Memory control registers

Enable onto B bus

Write C bus to register To and from main memory Z MBR2 SP LV CPP TOS PC MDR MAR MBR1 OPC Instruction fetch unit (IFU) A bus

Referências

Documentos relacionados

Este trabalho se refere ao instituto processual conhecido como fundamentação das decisões judiciais, que em razão da divergência doutrinária quanto a nomenclatura

A partir do estudo do ambiente cultural artístico português do final do século XVI, foi possível conhecer o tratado de pintura Filipe Nunes, o qual nos foi revelado

Graduanda em Design pela UFPE/CAA, bolsista de Projeto de Extensão “Tecidoteca UFPE/CAA”, monitora voluntária da disciplina Design têxtil.. ensino teórico-prático para

Due to the paucity of clinical studies reporting complications in implant fixed complete denture prostheses (IFCDPs), this thesis aimed to evaluate implants and

A amplitude da passada não se mostrou significativamente diferente nas duas corridas, já a freqüência da passada houve uma diminuição significativa dos 50 para os

De acordo com estes resultados, e dada a reduzida explicitação, e exploração, das relações que se estabelecem entre a ciência, a tecnologia, a sociedade e o ambiente, conclui-se

1- Designar Comissão composta pelos Professores ANGELO MARIO DO PRADO PESSANHA, matrícula SIAPE 311702; CESAR FREDERICO DOS SANTOS VON DOLLINGER, matrícula SIAPE 2321560; FRANCISCO

No panorama atual do mercado de trabalho no campo da arquitetura, onde novas edificações inserem-se em contextos edificados com construções de diversas épocas,