Buscar

Semana 8 - 2021_1 APNP AOC


Continue navegando


Prévia do material em texto

07/08/2021
1
ARQUITETURA E ORGANIZAÇÃO DE 
COMPUTADORES
Semana 8
Aula Síncrona – Início: 13:03h
Prof. Nelson Miguel Betzek
nmbetzek@utfpr.edu.br
Ciência da Computação
Este trabalho está licenciado com uma Licença 
Creative Commons – Atribuição-
NãoComercial-SemDerivações 4.0 
Internacional.
Representação de Instruções
Instrução - Hardware
• Refere-se a uma instrução de máquina, que é 
interpretada e executada diretamente pelo 
processador;
• Diferente de uma instrução em linguagem de 
alto nível.
– precisa ser compilada para uma série de 
instruções de máquina antes que seja executada.
• Quem executa um programa é o hardware;
• Um programa em linguagem de alto nível não 
pode ser executado diretamente 
pelo hardware. 
• Compilador transforma (traduz) o programa 
em linguagem de alto nível em linguagem de 
máquina.
• O programa linguagem de máquina é carregado 
na memória, para que o hardware possa 
executá-lo. 
• A linguagem de máquina é composta de códigos 
binários, representando:
– Instruções;
– Endereços; e
– Dados.
• A linguagem de máquina está totalmente 
vinculada ao conjunto de instruções da 
máquina.
07/08/2021
2
Operações do computador
• Matemáticas (aritméticas, lógicas, de 
complemento, de deslocamento...);
• Movimentação de dados (memória <--> 
registrador);
• Entrada-saída (leitura e escrita em dispositivos 
externos - dispositivos de Entrada / Saída);
• Controle (desvio da sequência de execução, 
parar, etc...)
Instruções de máquinas
• Executar operações aritméticas sobre dois 
números;
• Executar operações lógicas sobre dois números;
• Mover um conjunto de bits (um número ou 
parte) de um ponto para outro do computador;
• Desviar a sequência do programa;
• Comunicação com algum dispositivo de 
entrada ou saída de dados.
Conjunto de instruções
• São todas as possíveis instruções que podem 
ser interpretadas e executadas por um 
processador.
• Coleção completa de instruções que são 
entendidas por uma CPU.
• Código de máquina.
• Binário.
• Normalmente, representado por códigos em 
assembly.
Instrução Significado Operação Código
Load Carregar no acumulador ACC <-- op 0000
Store Salvar na memória op <-- ACC 0001
Add Somar ACC <-- ACC + op 0010
Sub Subtrair ACC <-- ACC - op 0011
Mult Multiplicar ACC <-- ACC * op 0100
Div Dividir ACC <-- ACC / op 0101
Jmp Desviar CI <-- op 0110
Jz Desviar, se ACC igual zero CI <-- op, se ACC = 0 0111
Jnz Desviar, se ACC não zero CI <-- op, se ACC != 0 1000
Stop/Halt Terminar 1100
Instrução Significado Operação Código
Load Carregar no acumulador ACC <-- op 0000
Store Salvar na memória op <-- ACC 0001
Add Somar ACC <-- ACC + op 0010
Sub Subtrair ACC <-- ACC - op 0011
Mult Multiplicar ACC <-- ACC * op 0100
Div Dividir ACC <-- ACC / op 0101
Jmp Desviar CI <-- op 0110
Jz Desviar, se ACC igual zero CI <-- op, se ACC = 0 0111
Jnz Desviar, se ACC não zero CI <-- op, se ACC != 0 1000
Stop/Halt Terminar 1100
• Qual o código binário gerado para processar a 
instrução Y = Y + X ?
• Qual o código binário gerado para processar a 
instrução Y = Y + X ?
• Load 0000
• Add 0010
• Store 0001
• Stop 1100
07/08/2021
3
DRAM
• Y = 1000
• X = 1001
• Qual o código binário gerado para processar a 
instrução Y = Y + X ?
operação operando (end. Memória)
1. Load Y 0000 1000
2. Add X 0010 1001
3. Store Y 0001 1000
4. Halt 1100
Variável DRAM (endereço de memória)
• W 1000
• X 1001
• Y 1010
• Z 1011
• Qual o código binário gerado para processar a 
instrução Z = Y + X * W
instrução operação operando (end. Memória)
1. .
2. .
3. .
...
Representação da instrução
• Instruções são representadas por uma sequência de 
bits, dividida em campos.
• Em código de máquina, cada instrução tem um 
padrão de bits exclusivo.
• Para programadores, uma representação simbólica é 
utilizada. Os opcodes são representados por 
abreviações:
– Ex.: ADD, SUB, MUL, DIV, LOAD, STORE
• Operandos também podem ser representados desta 
maneira:
– ADD A,B.
Formato de Instrução
• O formato de uma instrução normalmente é 
retangular dividido em campos de bits. 
opcode
operandos
FONTEDESTINO
opcode
FONTEDESTINO FONTE
operandos
Código de operação 
(OPCODE) Operando 1 (OP1) OP 2 OP 3
Opcode
– O código de operação de uma instrução, 
abreviado por opcode, é o grupo de bits da 
instrução que especifica a operação, como por 
exemplo:
• Adição, Subtração, Complemento, Transferência, 
Comparação.
Formato de Instrução
• O opcode de uma instrução especifica a 
operação a ser realizada pelo processador,
• Isso inclui o significado de cada operando que 
segue o opcode: 
– Valor de uma constante
– Endereço de memória
– Endereço/nome de um registrador
07/08/2021
4
Formato de Instrução
• O número de bits necessários para representar o 
opcode é função do número total de operações 
possíveis do conjunto de instruções. 
• Por exemplo, se o opcode tiver 4 bits, o conjunto de 
instruções pode realizar 16 operações diferentes.
0000
0001
0010
0011
0100
0101
0111
....
Adição do valor da memória com o acumulador
Adição do valor da memória com um dado
Adição do acumulador com um dado
Subtração do valor da memória com o acumulador
Subtração do valor da memória com um dado
Subtração do acumulador com um dado
....
Operando(s)
Código de operação 
(OPCODE) Operando 1 (OP1) OP 2 OP 3
• é o campo da instrução cujo valor binário 
sinaliza a localização do dado que será 
manipulado (processado) pela instrução 
durante a operação;
• Em geral, um operando identifica o endereço 
de memória onde está contido o dado que 
será manipulado, ou pode conter o endereço 
onde o resultado da operação será 
armazenado. 
Operando(s):
Código de operação 
(OPCODE) Operando 1 (OP1) OP 2 OP 3
• um operando pode também indicar um 
Registrador (que conterá o dado propriamente 
dito ou um endereço de memória onde está 
armazenado o dado). 
– Os operandos fornecem os dados da instrução.
• Obs: Existem instruções que não tem 
operando. Ex.: Instrução HALT (PARE).
Exemplos
ADD OP1 OP2 => (OP1) <-- (OP1) + (OP2) Soma conteúdo de OP1 e OP2 e armazena o resultado em OP1
ADD OP1 OP2 OP3 => (OP3) <-- (OP1) + (OP2) Soma conteúdo de OP1 e OP2 e armazena o resultado em OP3
ADD OP1 => (ACC)<--(ACC) + (OP1) Soma conteúdo de OP1 e ACC e armazena o resultado em ACC
Codificação de Instruções
Comando em linguagem 
de alto nível
X = A x B + C - D 
Comandos 
em Assembly
Instruções em linguagem 
de Máquina
A representação em Assembly e o correspondente valor em 
binário variam para cada Microprocessador.
LDA (LoaD Acumulator)
STA (STore Acumulator)
Codificação de Instruções
Comando em linguagem 
de alto nível
X = A * B + C - D 
Comandos 
em Assembly
LDA A
MUL B
ADD C
SUB D
STA X
HLT
Instruções em linguagem 
de Máquina
11000111 11110000
11100000 00001111
00100000 11100000
00011100 01101010
00100100 00000011
11110000 00000000
A representação em Assembly e o correspondente valor em 
binário variam para cada Microprocessador.
LDA (LoaD Acumulator)
STA (STore Acumulator)
mnemônico