Escolar Documentos
Profissional Documentos
Cultura Documentos
Parte2:
A Arquitetura do Conjunto de
Instrues
4-2
Bibliografia
[1] Miles J. Murdocca e Vincent P. Heuring, Introduo
Arquitetura de Computadores
[2] Marcelo Rubinstein Transparncias do curso de
Computadores Digitais (UERJ)
[3] Andrew S. Tanenbaum, Organizao Estruturada de
Computadores
[4] Jos Paulo Brafman Transparncias do curso de Organizao
de Computadores (UFRJ)
[5] Victor Paulo Peanha Esteves Apostila de Arquitetura de
Microcomputadores, Mdulo 1
4-3
4-4
4-5
4-6
4-7
Memria
Onde os programas e os dados so armazenados
Sua unidade bsica o bit
formada por um conjunto de clulas (ou posies)
O nmero de bits de uma clula chamado palavra
Clulas referenciadas por um endereo
4-8
Memria (cont.)
Organizao de uma memria de 96 bits (fonte: Tanenbaum)
@ 2000-2001 by Prentice-Hall, Inc.
4-9
Processador
Crebro do computador
Tambm conhecido como CPU
Sua funo executar instrues
Constitudo de
Unidade de controle
Busca instrues na memria principal e determina o tipo de
cada instruo
Unidade lgica e aritmtica (ALU)
Realiza um conjunto de operaes necessrias execuo de
instrues
4-10
Processador (cont.)
Registrador constitudo de n flip-flops, cada flip-flop
armazenando um bit
PC (Program Counter): aponta para a prxima instruo a ser
buscada na memria para ser executada
IR (Instruction Register): armazena a instruo que est sendo
executada
Outros de uso geral ou especfico
4-11
Processador (cont.)
Organizao do processador
Caminho de dados constitudo de
Registradores
ULA
Barramentos: conjunto de fios paralelos que permite a
transmisso de dados, endereos e sinais de controle
Instrues do processador
Registrador-memria
Registrador-registrador
4-12
Processador (cont.)
Caminho de dados de uma tpica mquina de Von Neumann
(fonte: Tanenbaum)
4-13
4-14
4-15
Execuo de Instrues
Unidade de controle dispara cada um dos passos
Registradores armazenam temporariamente dados e
instrues
Unidade lgica e aritmtica trata os dados e permite a
atualizao dos apontadores
4-16
Processador (cont.)
CPU 8080 simplificada (adaptado de Brafman)
RE (16)
B.End.
Int (16)
PC (16)
DC (16)
R3 (16)
A (8)
B (8)
B. Dados
Int (8)
RD (8)
IR (8)
VI (8)
UC
SP (16)
F (1)
T1 (8)
T2 (8)
ULA
RD/WR
M
E
M
4-17
Processador (cont.)
Busca na memria
4-18
Processador (cont.)
CPU 8080 simplificada (adaptado de Brafman)
RE (16)
B.End.
Int (16)
PC (16)
DC (16)
R3 (16)
A (8)
B (8)
B. Dados
Int (8)
RD (8)
IR (8)
VI (8)
UC
SP (16)
F (1)
T1 (8)
T2 (8)
ULA
RD/WR
M
E
M
4-19
Processador (cont.)
CPU 8080 simplificada (adaptado de Brafman)
RE (16)
B.End.
Int (16)
PC (16)
DC (16)
R3 (16)
A (8)
B (8)
B. Dados
Int (8)
RD (8)
IR (8)
VI (8)
UC
SP (16)
F (1)
T1 (8)
T2 (8)
ULA
RD/WR
M
E
M
4-20
Processador (cont.)
CPU 8080 simplificada (adaptado de Brafman)
RE (16)
B.End.
Int (16)
PC (16)
DC (16)
R3 (16)
A (8)
B (8)
B. Dados
Int (8)
RD (8)
IR (8)
VI (8)
UC
SP (16)
F (1)
T1 (8)
T2 (8)
ULA
RD/WR
M
E
M
4-21
Processador (cont.)
CPU 8080 simplificada (adaptado de Brafman)
RE (16)
B.End.
Int (16)
PC (16)
DC (16)
R3 (16)
A (8)
B (8)
B. Dados
Int (8)
RD (8)
IR (8)
VI (8)
UC
SP (16)
F (1)
T1 (8)
T2 (8)
ULA
RD/WR
M
E
M
4-22
Processador (cont.)
CPU 8080 simplificada (adaptado de Brafman)
RE (16)
B.End.
Int (16)
PC (16)
DC (16)
R3 (16)
A (8)
B (8)
B. Dados
Int (8)
RD (8)
IR (8)
VI (8)
UC
SP (16)
F (1)
T1 (8)
T2 (8)
ULA
RD/WR
M
E
M
4-23
Processador (cont.)
4-24
Processador (cont.)
CPU 8080 simplificada (adaptado de Brafman)
RE (16)
B.End.
Int (16)
PC (16)
DC (16)
R3 (16)
A (8)
B (8)
B. Dados
Int (8)
RD (8)
IR (8)
VI (8)
UC
SP (16)
F (1)
T1 (8)
T2 (8)
ULA
RD/WR
M
E
M
4-25
Processador (cont.)
Execuo da instruo
4-26
Processador (cont.)
CPU 8080 simplificada (adaptado de Brafman)
RE (16)
B.End.
Int (16)
PC (16)
DC (16)
R3 (16)
A (8)
B (8)
B. Dados
Int (8)
RD (8)
IR (8)
VI (8)
UC
SP (16)
F (1)
T1 (8)
T2 (8)
ULA
RD/WR
M
E
M
4-27
Processador (cont.)
Distino entre CPUs
Registradores (nmero, tamanho)
ULA (nmero de operaes, tamanho)
UC (mquina de estado convencional, microprogramada)
4-28
4-29
Numa mquina enderevel por byte, o menor dado que pode ser
referenciado na memria o byte. Palavras de mltiplos bytes so
armazenadas como uma seqncia de bytes, na qual o endereo da
palavra na memria o mesmo do byte da palavra que possui o menor
endereo.
Quando palavras de mltiplos bytes so usadas, existem duas
escolhas para a ordem na qual os bytes so armazenados na
memria: o byte mais significativo no endereo mais baixo, chamada
big-endian, ou o byte menos significativo armazenado no endereo
mais baixo, chamada little-endian.
4-30
4-31
4-32
O ISA ARC
O ISA ARC um sub-conjunto do ISA SPARC.
4-33
4-34
Mnemnico
campo de cdigo da operao
4-35
4-36
Registradores do ARC
PC Program Counter
Endereo da prxima instruo a ser executada
IR Instruction Register
Instruo em execuo
Cdigos de condio
z valor zero
n valor negativo
c excedente da ALU de 32 bits (carry ou vai-um)
v - overflow
4-37
4-38
Formato aritmtico
Formato memria
rd origem para st, destino para outras instrues
rs1, rs2 registrador origem
simm3 constante como segunda origem em vez de rs2
4-39
Formato de
Dados ARC
4-40
ARC Pseudo-Ops
4-41
4-42
Programa
Um Pouco
Mais
Complexo
Um programa
ARC que soma
5 inteiros.
4-43
Instrues de 1, 2 ou 3 Endereos
Considere como a expresso A = B*C + D pode ser calculada por
tipos de instruo de um, dois ou trs endereos.
Hipteses:
Endereos e palavras de dados possuem dois bytes.
Opcodes tem tamanho de 1 byte.
Operandos so movidos para e da memria uma palavra
(dois bytes) de cada vez.
4-44
Instrues de 3 Endereos
Usando instrues de 3 endereos, a expresso A = B*C +
D pode ser codificada como:
m ult
B, C, A
add
D, A, A
4-45
Instrues de 3 Endereos
O tamanho do programa 7x2 = 14 bytes
cada instruo = 1 + 2 + 2 + 2 = 7 bytes
opcode + operando + operando + operando
Trfego da memria
Para cada instruo:
busca da instruo (7 bytes) + trfego de dados (6 bytes)
Total = (7+6) + (7+6) = 26 bytes
4-46
Instrues de 2 endereos
Em uma instruo de 2 endereos, um dos operandos sobrescrito
com o resultado. Um cdigo possvel para o clculo da expresso
A = B*C + D :
load
B, A
m ult
C, A
add
D, A
4-47
Instrues de 1 endereo
Ou de Acumulador: Instrues de 1 endereo utilizam um nico
registrador aritmtico na CPU, conhecido como o acumulador. O
cdigo para a expresso A = B*C + D agora :
load
m ult
add
store
4-48
Instrues de 1 endereo
O tamanho do programa 3 x 4 = 12 bytes
cada instruo = 1 + 2 = 3 bytes
opcode + operando
Trfego da memria
Cada instruo gera apenas 2 bytes de cada vez, sendo buscados
OU armazenados na memria
Total = (3+2) + (3+2) + (3+2) + (3+2) = 20 bytes
4-49
Modos de Endereamento
4-50
Ligao de Sub-rotinas
Processo de passar argumentos (e valores de retorno) entre
rotinas
Convenes de chamada
Diferentes maneiras de passagem de argumentos
Registradores
rea de ligao de dados
Pilha
4-51
4-52
4-53
4-54
4-55
4-56
4-57
4-58
Exemplo
de
Ligao
pela Pilha
Programa em C
com chamadas
de funo
aninhadas.
4-59
Aninhamento
Quando sub-rotina termina de executar, %r15 (reg. de ligao)
usado para calcular endereo de retorno
Problema: e se vrias chamadas so aninhadas?
Soluo
Valor atual de %r15 deve ser armazenado na pilha
Junto com quaisquer outros registradores que precisem ser
restaurados
Conjunto dos registradores preservados: Quadro de pilha
4-60
Exemplo
de Ligao
pela Pilha
(cont.)
(a-f)
Comportamento
da pilha durante
a execuo do
programa em C.
4-61
Exemplo
de Ligao
pela Pilha
(cont.)
(g-k)
Comportamento da
pilha durante a
execuo do
programa em C.
4-62
Entrada e Sada
Duas formas
Instrues especiais e barramento especial de entrada e sada
Entrada e sada mapeada em memria
acesso feito como para posies de memria, em sees do
espao de endereamento onde no existe memria real
ARC
E/S mapeada em memria
4-63
Entrada e
Sada no
ISA ARC
Mapa de memria
do ARC,
mostrando a E/S
mapeada em
memria.
4-64
Mdulos de vdeo
Entre os endereos 216 e 219 1
Dispositivos de E/S
Entre os endereos 223 e 224 1
4-65
4-66
Fluxograma para
Disp. de E/S
Estrutura de controle de um
programa de rastreamento do
touchscreen.
4-67
4-68
Programa Java
e
Arquivo
de
Classe
Compila
-do
4-69
4-70
4-71
Code
0x10
0x0f
0x3c
0x10
0x09
0x3d
0x03
0x3e
0x1b
0x1c
0x60
0x3e
0xb1
Mnemonic
bipush
15
istore_1
bipush
9
istore_2
iconst_0
istore_3
iload_1
iload_2
iadd
istore_3
return
Meaning
Push next byte onto stack
Argument to bipush
Pop stack to local variable 1
Push next byte onto stack
Argument to bipush
Pop stack to local variable 2
Push 0 onto stack
Pop stack to local variable 3
Push local variable 1 onto stack
Push local variable 2 onto stack
Add top two stack elements
Pop stack to local variable 3
Return