Máquina Microprogramada - ic.uff.brloques/orgcomp/maquina-1.pdf · Sequenciador microprogramado...

Post on 09-Nov-2018

217 views 0 download

Transcript of Máquina Microprogramada - ic.uff.brloques/orgcomp/maquina-1.pdf · Sequenciador microprogramado...

Máquina Microprogramada

µFF

Referências:

• Structured Computer Organization, A.S. Tanenbaum, (c) 2006 Pearson Education Inc

• Computer Organization and Architecture, W. Stallings, Prentice Hall

Orlando Loquessetembro 2006

Sequenciador microprogramado – Wilkes 1951

código xxxxxxxxRI

← (macro) instrução do computador

DECODER

MUX

µ PC

status

●●

micro ordens endereços

● ●

● ●

micro ordem endereço ← formato de µ instrução

ativação ou carregamento de registros

endereço da próxima µinstrução

Sequenciador microprogramado – Wilkes 1951

código xxxxxxxxRI ← (macro) instrução do computador

DECODER

MUX

µ PC

status

●●

micro ordens endereços

● ●

● ●

micro ordem endereço ← formato de µ instrução

ativação ou carregamento de registros; função da ALU, desvios ...

endereço da próxima µ instrução

ROMmemória de controle

address

Organização do Computador (I)

AC EA CP AP

ULA 0000 RµIRIR

RE

RD

buffer

ca

ESE

SA BMS

ESD

CA REL

A B

S

Zera AC CAC

ADD SUB LIG CR’ DECR R0

R0 =1, quando (R) = 0

CRI

CRDM ABD

CRE

CAP INCRAP DECRAPCCP INCRCPDD DE CEA

AAC

AR ARI ARµI

ACPAEA AAP

Barra de Endereços

Barra deDados

8

12

16

Organização do Computador (ii)

RE

R D*

CRD

CRE

endereços

dados

M ESEMLMPRONTO ES

(LE + LM)desativa

LE

ABDativa

* bidirecional

16

12

Sequenciador microprogramável: µmáquina

CR

FONTE

RI12

R

µI

ROM

µ

CP

GRUPO 1DESTINO GRUPO 2

11 10 9 8 7 6 5 4 3 2 1 3 2 1 0

RI13

RI14

RI15

RµI7

RµI6

RµI5

RµI4

RµI3

RµI2

RµI1

RµI0

LD

RS CLK CLK

0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7

CR’

CAC=ADD+SUB+LIG

MUX

ESEESD

Observações� Capacidade da Memória de Macro-Instrução: O RE tem 12 bits, permitindo

endereçar 212 (4Kpalavras) palavras de 16 bits

� Capacidade da Memória de Micro-Instrução: O RµI tem 8 bits, permitindo endereçar 28 (256) palavras de 12 bits. Se for necessário, o espaço de endereçamento e o tamanho da micro-instrução poderiam ser facilmente alterados sem alterar a micro-arquitetura

� O conteúdo do registro de micro-instrução pode ser colocado na barra de dados (ARµI) e usado para carregar (sempre) o registro R. Isso pode ajudar a implementação de algumas instruções, e.g., temporizações, multiplicação, divisão, etc

� O micro-sequenciador usa um pipeline (µCP||RµI). Se isso for considerado, a micro-programação seria mais complexa (ver slide 28). Assim, para simplificar os exemplos, assumimos que RµI repete diretamente a saída da ROM (micro-instrução)

� As ordens SUB, LIG e ADD são combinadas em um “OU” para gerar o sinal de carregamento do Acumulador (CAC)

Código de Instrução (i)

OPERANDOi+1

ENDEREÇOCÓDIGOi

* Uso específico em algumas instruções

0111215

*

Código de Instrução (ii)

Desvio Condicional, para o endereço ENDCP ← END, se (AC) >= 0DESVC0111

Desvio incondicional, para o endereço ENDCP ← ENDDESV I0110

Armazena o conteúdo da extensão do acumulador na memória

M(END) ← EACARE0101

Armazena o conteúdo do acumulador na memóriaM(END) ← ACCARA0100

SUBTRAÇÃO DIRETA; o operando é o conteúdo da memória em END

AC ← AC + M(END)SUBD0011

SUBTRAÇÃO IMEDIATA; o operando é a palavra seguinte a da instrução na memória

AC ← AC - OperandoSUBI0010

SOMA DIRETA; o operando é o conteúdo da memória em END

AC ← AC + M(END)SOMD0001

SOMA IMEDIATA; o operando é a palavra seguinte a da instrução na memória

AC ← AC + OperandoSOMI0000

DESCRIÇÃOAçãoMenemonicoCódigo

OPERANDOi+1

ENDEREÇOCÓDIGOi

* específico

0111215Nível Convencional

Código de Instrução (iii)

Armazena o AP Apontador de Pilha na memóriaM(END) ← APCAP1111

Inicializa o Apontador de Pilha (AP)AP ←M(END)IAP1110

MultiplicaçãoAC, EA ← AC*M(END)MULT1101

Zera o acumuladorAC ← 0ZERA1100

Retorna de procedimentoAP ← AP + 1; CP ←M (AP)

RETORNA1011

Chama procedimento iniciado em ENDM(AP) ← CP; AP ←AP-1; CP ← END

CHAMA1010

Escreve no AC o conteúdo da porta de entrada especificada por END

AC ← RE(END)ENTRA1001

Escreve o conteúdo do AC no registro de saída especificado por END

RS(END) ← ACSAI1000

DESCRIÇÃOAçãoMenemonicoCódigo

OPERANDO*i+1

ENDEREÇOCÓDIGOi

* específico

0111215

Microinstruções

ENDEREÇO DE DESVIOCONDIÇÃO1

0781011

ESORDEMSDESTINOFONTE0

01345781011

Tipo Desvio

Tipo Operacional

Campo ES (bit 0): especifica o valor do bit que vai ser injetado nasentradas seriais do AC e do EA, durante operações de de slocamentoà direita e à esquerda, respectivamente

Microinstruções

ENDEREÇO DE DESVIOCONDIÇÃO1

0781011

Tipo Desvio

Decodificação da Macroinstrução: permite o carregamento do registro de Μicroinstrução com o código Macroinstrução

DEC111

Estado do flip-flop de interrupçãoINT110

Estado do flip-flop “vai um”CA101

Estado do bit de sinal do AcumuladorSAC100

Gerado pela memória indicando que o dado foi escrito ou lidoPRONTO011

Bit menos significativo do AcumuladorBMS010

Ativa quando (R)=0R0001

Desvio IncondicionalNOP000

DESCRIÇÃOMNEMÔNICOCONDIÇÃO

• O desvio é efetuado sempre que a condição for confirmada

Tipo Operacional – Registro Fonte

ESORDENSSDESTINOFONTE0

01345781011

Registro de µInstrução*ARuI111

AcumuladorAAC110

Registro RAR101

Extensão do AcumuladorAEA100

Registro de InstruçãoARI011

Apontador de PilhaAAP010

Barra de Dados (externa)ABD001

Contador de ProgramaACP000

Registro Ativado (saída ligada à Barra de Dados)MNEMÔNICOFONTE

Nota: quando o R µI for selecionado como fonte, o destino será sempre o Registro R; o formato da µinstrução passa a ser:

parâmetroR µI0

0781011

Tipo Operacional – Registro Destino

ESORDENSSDESTINOFONTE0

01345781011

Registro de EndereçoCRE111

Extensão do AcumuladorCEA110

Contador de ProgramaCCP101

Registro de DadosCRD100

Apontador de PilhaCAP011

Registro de InstruçãoCRI010

Registro RCR001

---NOP000

Registro Carregado com o conteúdo da Barra de DadosMNEMÔNICODESTINO

Microinstruções

ESORDEMSDESTINOFONTE0

01345781011

S=0 – 1º Grupo de ordens

- - -NOP111

Decrementa Apontador de PilhaDECRAP110

Incrementa Contador de ProgramaINCRCP101

Decrementa RDECRR100

Leitura de Porta de EntradaLE011

Zera o AcumuladorZA010

Desloca à DireitaDD001

Leitura de MemóriaLM000

DescriçãoMNEMÔNICOORDEM

Microinstruções

ESORDEMSDESTINOFONTE0

01345781011

não usado- - -111

Incrementa Apontador de PilhaINCRAP110

Comando da ULA: S=BLIG101

Comando da ULA: S=A-BSUB100

Comando da ULA: S=A+BAD011

Escreve em Porta de SaídaES010

Desloca à esquerdaDE001

Escreve em memóriaEM000

DescriçãoMNEMÔNICOORDEM

S=1 - 2º Grupo de ordens

Microprograma (i)

0 0 0 0 0 0 0 0NOP17

xAD1NOPARI06

xLM0CRIABD05

xINCRCP0CREACP04

0 1 0 00 0 0 0DEC13

xLM0CRIABD02

xINCRCP0CREACP01

# # # # # # # #INT10

endereço de desvioCONDIÇÃO1

parâmetroRµI0

ESORDEMSDESTINOFONTE0

01234567891011END

SOMI

Busca e Decodificaçãode Instrução

endereço da memória de controle; hexadecimal

ver µmáquina → RI15 RI14 RI13 RI12

Microprograma (ii)

0 0 0 0 0 0 0 0NOP117

xAD1NOPARI016

xLM0CRIABD015

xNOP0CREARI014

endereço de desvioCONDIÇÃO1

parâmetroRµI0

ESORDEMSDESTINOFONTE0

01234567891011END

SOMAD

endereço da memória de controle; hexadecimal

Microprograma (iii)

0 0 0 0 0 0 0 0NOP197

xLIG1---ABD096

xLE0CRDABD095

xNOP0CREARI094

0 0 0 0 0 0 0 0NOP187

xES1NOP---086

xNOP0CRDAAC085

xNOP0CREARI084

endereço de desvioCONDIÇÃO1

parâmetroRµI0

ESORDEMSDESTINOFONTE0

01234567891011END

ENTRA

SAI

Microprograma (iv)

0 0 0 0 0 0 0 0NOP1B7

xLM0CCPABD0B6

xNOP0CREAAP0B5

xINCRAP1NOP---0B4

0 0 0 0 0 0 0 0NOP1A7

xNOP0CCPARI0A6

xEM1CRDACP0A5

xDECRAP0CREAAP0A4

endereço de desvioCONDIÇÃO1

parâmetroRµI0

ESORDEMSDESTINOFONTE0

01234567891011END

RETORNA

CHAMA

Ciclos de Instrução

Modelo da Unidade de Controle (i)

unidade de controle

Clock

sinais de controledentro da UCP

sinais de controleda barra do sistema

sinais de controlepara a barra do sistema

flags:IntAC

wait,etc

Registro de Instrução

Unidade de Controle Lógica Fixa (ii)

lógica de controle

Clock

Registro de Instrução

Geradorde

Timing

T1

Tn

decodificador

flags:IntAC

wait,etc

sinais de controledentro da UCP

sinais de controleda barra do sistema

sinais de controlepara a barrado sistema

Unidade de Controle Microprogramada(iii)

Clock

sinais de controledentro da UCP

sinais de controleda barra do sistema

sinais de controlepara a barra do sistema

ROM

µPC

flags:IntAC

wait,etc

Registro de Instrução

a) Passagem de parâmetros: a pilha antes da chamada

b) A pilha durante a execução do procedimento

Chamada de Procedimento: Uso da Pilha

count = read(fd, buf, nbytes)

Sequenciador microprogramável

ROM

µ

CP

LD

RS CLKCLK

REL

Sem pipeline:Ciclo de Relógio >= Tac_ROM + Tativação_lógica

TAC_ROM TA_LOG

TREL

Sequenciador microprogramável

R

µI

ROM

µ

CP

LD

RS CLK CLK

REL

Com pipeline:Ciclo de Relógio >= TmaxTmax = Max[Tac_ROM, Tativação_lógica]

TA_LOG

TAC_ROM

TMAX

Sequenciador microprogramável:→ efeito do pipeline em µinstruções de desvio

R

µI

ROM

µ

CP

LD

RS CLK CLK

REL

No ciclo de execução da µinstrução(n) – tipodesvio - está sendo buscada a µinstrução(n+1). Como o o resultado do teste só é conhecido após a execução daµinstrução(n), o desvio só poderá serexecutado após a execução daµinstrução(n+1). Ou seja, temos que nos preocupar com o que ela faz

Soluções:

• Software: eg, introduzir NOP ou algumainstrução útil

• Hardware: modificar o ciclo de execuçãoda µinstrução de desvio