Escolar Documentos
Profissional Documentos
Cultura Documentos
1
Codificação de cada instrução máquina Tamanho das instruções
● O formato depende do tipo de instrução: ● Quantos bits para o código?
■O código da operação ou opcode (sempre!) ■Depende do número de instruções distintas
■A especificação dos operandos ou sua localização ■Exemplo: 8 bits 256 instruções possíveis
■A especificação da localização para o resultado ● Quantos bits para os campos "op"?
● Exemplo: formato de instrução com 4 campos (3 ■Depende de:
operandos): ●onde estão os operandos,
op3 operação(op1, op2) ●o modo como se endereça a memória,
■Para operações com dois operandos (op1 e op2), deixando o ●a capacidade do espaço de endereços
resultado em op3
"op" pode indicar uma célula de memória ou um registo do ● Exemplo:
CPU contendo o operando (op1 e op2 também podem ser o ■Operandos e resultado em memória
próprio valor do operando)
■Memória de 64 KiloBytes 16 bits (2 Bytes)
■codificação: opcode op1 op2 op3
■Então, uma instrução: 8 + 3 * 16 = 56 bits
ASC1 - 2006/2007 113 ASC1 - 2006/2007 114
2
Um computador muito simples Características do MARIE
● Binário
Vejamos um computador (virtual) muito
● Programa em memória (máquina de Von Neumann)
simples:
● Opera dados de 16 bits
● MARIE (A Machine Architecture that is Really ● Memória central com células de 16 bits cada;
Intuitive and Easy) endereços de 12 bits
■ Do livro: The Essentials of Computer ● Um registo interno geral: AC – acumulador (16 bits)
Organization and Architecture, L. Null, J. Lobur ● Instruções de tamanho fixo, com 2 campos:
■ Simulador escrito em Java 4 bits para código da operação (opcode), 12 bits para um
endereço
● Entrada/Saída (I/O) de 16 bits
3
Ciclo de execução no MARIE Fetch
while (running) {
MAR PC CPU 0
1. Fetch MBRMem[MAR] ALU
Obtenção da instrução em
memória IR MBR MAR PC
PC PC +1 AC MBRMem[MAR]
16 bits
… 16 bits IR MBR
OutREG MBR Memória
2. Decode MAR IR[bits 11-0] PC PC +1
BUS Central
Descodificação if (instrução IR[bits 15-12] requer um InREG MAR
12 bits
operando da memória) { 12 bits
MBR Mem[MAR] IR PC
16 bits
}
Unidade de controlo
… 4095
3. Execute
■ Mais à frente… Executar a instrução…
}
4
RTL das instruções do MARIE (2) Um programa simples
● Input Programa: Dados em memória antes
AC InREG da execução:
Load 100
● Output
OutREG AC Add 101 100: 24
● Halt Store 102 101: 1
Running=False (O ciclo de execução de instruções termina) Halt 102: 0
● Jump X
PC IR[11-0]
● SkipCond Dados em memória depois
if ( IR[11-10] == 002 ) da execução:
if ( AC < 0 ) PC PC + 1 100: 24
else if ( IR[11-10] == 012 ) 101: 1
if ( AC == 0 ) PC PC + 1
else if ( IR[11-10] == 102 ) 102: 25
if ( AC >= 0 ) PC PC + 1