Você está na página 1de 71

4-1

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

Arquitetura do Conjunto de Instrues


A Arquitetura do Conjunto de Instrues (Instruction Set
Architecture - ISA) de uma mquina corresponde aos nveis de
linguagem de montagem (assembly) e de linguagem de mquina.
O compilador traduz uma linguagem de alto nvel, que independente
de arquitetura, na linguagem assembly, que dependente da
arquitetura.
O assembler (ou montador) traduz programas em linguagem
assembly em cdigos binrios executveis.
Para linguagens completamente compiladas, como C e Fortran, os
cdigos binrios so executados diretamente pela mquina-alvo. O
Java pra a traduo no nvel de byte code. A mquina virtual Java,
que est no nvel da linguagem assembly, interpreta os byte codes
(implementaes em hardware da JVM tambm existem, caso em
que o byte code Java executado diretamente.)
Principles of Computer Architecture by M. Murdocca and V. Heuring

1999 M. Murdocca and V. Heuring

4-4

O Modelo de Barramento de Sistemas


Revisitado
Um programa compilado copiado do disco rgido na memria. A
CPU l as instrues e os dados da memria, executa as instrues,
e armazena os resultados de volta na memria.

Principles of Computer Architecture by M. Murdocca and V. Heuring

1999 M. Murdocca and V. Heuring

4-5

Organizao de um Computador Simples


(fonte: Tanenbaum)
@ 2000-2001 by Prentice-Hall, Inc.

4-6

Viso Abstrata de uma CPU


A CPU consiste de uma seo (ou caminho) de dados (datapath)
que contm registradores e uma ALU, e uma seo de controle,
que interpreta instrues e efetua transferncias entre
registradores.

Principles of Computer Architecture by M. Murdocca and V. Heuring

1999 M. Murdocca and V. Heuring

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

Possui uma memria pequena e de alta velocidade formada


por um conjunto de registradores

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)

@ 2000-2001 by Prentice-Hall, Inc.

4-13

Ciclo de Busca e Execuo


Os passos que a Unidade de Controle segue durante a execuo
de um programa so:
(1) Busca na memria da prxima instruo a ser executada.
(2) Decodificao do opcode.
(3) Leitura dos operandos da memria, se necessrio.
(4) Execuo da instruo e armazenamento dos resultados.
(5) Volta ao passo 1.
Este conhecido como ciclo de busca e execuo (fetch-execute
cycle), ou busca-decodificao-execuo.

Principles of Computer Architecture by M. Murdocca and V. Heuring

1999 M. Murdocca and V. Heuring

4-14

Busca e Execuo (det.)


1 - Busca da prxima instruo na memria e armazenamento da
instruo em IR
2 - Atualizao de PC
3 - Determinao do tipo de instruo do IR
4 - Caso necessrio, busca dos dados que esto na memria e
armazenamento dos mesmos em registradores
5 - Execuo da instruo
6 - Caso necessrio, armazenamento do resultado na memria

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.)

Determinao do tipo de instruo do IR

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)

Tamanhos do B. Dados, do B. interno e da ULA definem a


categoria do processador
8 bits: 8085, Z80, 8031
16 bits: 8086, 8088 (B. Dados de 8 bits), 68000

4-28

Tamanhos de Tipos de Dados Comuns


Um byte (ou octeto) composto de 8 bits. Dois nibbles formam um byte.
meias-palavras, palavras (words), palavras duplas (doublewords), e
quadwords so compostas de bytes como abaixo:

Principles of Computer Architecture by M. Murdocca and V. Heuring

1999 M. Murdocca and V. Heuring

4-29

Formatos Big-Endian e Little-Endian

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.

Principles of Computer Architecture by M. Murdocca and V. Heuring

1999 M. Murdocca and V. Heuring

4-30

Mapa de Memria do ARC


As localizaes
na memria
so arrumadas
linearmente em
ordem. Cada
localizao
numerada
corresponde a
uma palavra
ARC. O nmero
nico que
identifica cada
palavra o seu
endereo.

Principles of Computer Architecture by M. Murdocca and V. Heuring

1999 M. Murdocca and V. Heuring

4-31

Um Exemplo de Caminho de Dados

O caminho de dados do ARC possui uma coleo de registradores,


conhecido como register file, e uma unidade aritmtica e lgica (ALU).
Principles of Computer Architecture by M. Murdocca and V. Heuring

1999 M. Murdocca and V. Heuring

4-32

O ISA ARC
O ISA ARC um sub-conjunto do ISA SPARC.

Principles of Computer Architecture by M. Murdocca and V. Heuring

1999 M. Murdocca and V. Heuring

4-33

Formato da Linguagem Assembly ARC


O formato da linguagem assembly ARC o mesmo da linguagem
assembly SPARC.

Principles of Computer Architecture by M. Murdocca and V. Heuring

1999 M. Murdocca and V. Heuring

4-34

Formato do Assembly ARC


Rtulo: opcional
no pode comear por nmero
termina por dois pontos ( : )

Mnemnico
campo de cdigo da operao

Operandos origem (se houver operando)


Um ou mais campos separados por vrgula

Operando destino (se houver operando)


Comentrio (opcional)
Comea por exclamao ( ! )

4-35

Registradores do ARC Visveis pelo Usurio

4-36

Registradores do ARC
PC Program Counter
Endereo da prxima instruo a ser executada

IR Instruction Register
Instruo em execuo

PSR Processor Status Register


Informaes sobre o estado do processador
Informaes a respeito do resultado de operaes aritmticas

Cdigos de condio
z valor zero
n valor negativo
c excedente da ALU de 32 bits (carry ou vai-um)
v - overflow

4-37

Formato de Instrues e do PSR ARC

4-38

Formatos de Instrues do ARC


Formato SETHI e de Desvio
rd registrador de destino no SETHI
cond identifica o tipo de desvio, baseado nos bits do PSR
Instrues com cc no final do mnemnico alteram o PSR

Formato de Chamada (CALL)


disp30 tamanho do desvio para endereo da rotina chamada

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

Pseudo-ops so instrues para o assembler, no so parte do


ISA.

4-41

Exemplo de Programa ARC


Um programa em assembly ARC que soma dois inteiros:

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

Ou seja, multiplique B por C e armazene o resultado em A.


(As operaes m ult e add so genricas; no so
instrues ARC.)
Ento, some D a A e armazene o resultado em 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

O tamanho do programa agora : 3 (1 + 2 + 2 ), ou 15 bytes.


Trfego de memria:
busca das instrues: 5 por instruo
primeira inst.: 2 2 bytes buscados
outras 2 instrues: 2 2 bytes buscados, 2 bytes armazenados.
total: (5 + 4) + (5 + 6) + (5 + 6) = 31 bytes

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

A instruo load carrega B no acumulador;


m ultmultiplica C pelo acumulador e armazena o resultado no
acumulador;
e add realiza a soma correspondente.
A instruo store armazena o valor do acumulador em A.

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

Quatro formas de calcular o endereo de um valor na memria: (1) uma


constante conhecida em tempo de montagem, (2) o contedo de um
registrador, (3) a soma de dois registradores, (4) a soma de um
registrador e de uma constante. A tabela d nomes a estes e outros
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

Ligao de Sub-rotinas por Registradores


Passagem de parmetros atravs de registradores.

4-52

Ligao de Sub-rotinas por Registradores


Mtodo rpido e simples
Mas no funciona se
Nmero de argumentos excede o nmero de registradores livres
Chamadas de subrotina alinhadas em profundidade

4-53

Ligao de Sub-rotinas por rea de


Ligao de Dados

Passagem de parmetros numa rea de memria separada. O


endereo inicial da rea de memria passado em um registrador
( %r5 aqui).

4-54

Ligao de Sub-rotinas por rea de


Ligao de Dados
Blocos de dados arbitrariamente grandes podem ser passados
entre rotinas
Um nico registrador copiado na chamada da sub-rotina
Problemas
Recurso
Uma rotina que chama a si mesma precisa de vrias reas de
ligao de dados

Tamanho da rea de ligao


Deve ser conhecido em tempo de montagem

4-55

Ligao de Sub-rotinas por Pilha


Pilha: o ltimo a entrar o primeiro a sair
Idia bsica
Rotina principal coloca os argumentos na pilha
Rotina chamada retira os argumentos da pilha,
executa,
e coloca valores de retorno na pilha
Rotina principal recupera os valores de retorno da pilha
Registrador especial aponta o topo da pilha
SP stack pointer

Algumas mquinas possuem instrues push e pop que


colocam e retiram elementos da pilha e atualizam o SP
automaticamente

4-56

Ligao de Sub-rotinas por Pilha


Passagem de parmetros utilizando a pilha.

4-57

Ligao de Sub-rotinas por Pilha


Tamanho da pilha cresce e diminui dinamicamente
Aninhamento arbitrariamente profundo de chamadas

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

Regies de Endereamento do ARC


Memria real
Entre os endereos 222 e 223 1

Rotinas de inicializao e rotinas grficas bsicas


Entre os endereos 0 e 216 1

Mdulos de vdeo
Entre os endereos 216 e 219 1

Dispositivos de E/S
Entre os endereos 223 e 224 1

4-65

Disp. de E/S: Touchscreen


Um usurio seleciona um objeto em um touchscreen:

4-66

Fluxograma para
Disp. de E/S

Estrutura de controle de um
programa de rastreamento do
touchscreen.

4-67

Arquitetura da Mquina Virtual Java

4-68

Programa Java
e
Arquivo
de
Classe
Compila
-do

4-69

Um Arquivo de Classes Java

4-70

Um Arquivo de Classes Java (Cont.)

4-71

Byte Code do Programa Java


Byte code desmontado do programa Java do slide anterior.
Location
0x00e3
0x00e4
0x00e5
0x00e6
0x00e7
0x00e8
0x00e9
0x00ea
0x00eb
0x00ec
0x00ed
0x00ee
0x00ef

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

Você também pode gostar