máquina microprogramada - ic.uff.brloques/orgcomp/maquina-1.pdf · sequenciador microprogramado...
TRANSCRIPT
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
Rµ
← (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