Vous êtes sur la page 1sur 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)
B. Dados Int (8)

DC (16)

R3 (16)

A (8)

B (8) M E M

RD (8) RD/WR

IR (8)

VI (8)

SP (16)

T1 (8)

T2 (8)

UC

F (1)

ULA

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)
B. Dados Int (8)

DC (16)

R3 (16)

A (8)

B (8) M E M

RD (8) RD/WR

IR (8)

VI (8)

SP (16)

T1 (8)

T2 (8)

UC

F (1)

ULA

4-19

Processador (cont.)
CPU 8080 simplificada (adaptado de Brafman)
RE (16)
B.End. Int (16)

PC (16)
B. Dados Int (8)

DC (16)

R3 (16)

A (8)

B (8) M E M

RD (8) RD/WR

IR (8)

VI (8)

SP (16)

T1 (8)

T2 (8)

UC

F (1)

ULA

4-20

Processador (cont.)
CPU 8080 simplificada (adaptado de Brafman)
RE (16)
B.End. Int (16)

PC (16)
B. Dados Int (8)

DC (16)

R3 (16)

A (8)

B (8) M E M

RD (8) RD/WR

IR (8)

VI (8)

SP (16)

T1 (8)

T2 (8)

UC

F (1)

ULA

4-21

Processador (cont.)
CPU 8080 simplificada (adaptado de Brafman)
RE (16)
B.End. Int (16)

PC (16)
B. Dados Int (8)

DC (16)

R3 (16)

A (8)

B (8) M E M

RD (8) RD/WR

IR (8)

VI (8)

SP (16)

T1 (8)

T2 (8)

UC

F (1)

ULA

4-22

Processador (cont.)
CPU 8080 simplificada (adaptado de Brafman)
RE (16)
B.End. Int (16)

PC (16)
B. Dados Int (8)

DC (16)

R3 (16)

A (8)

B (8) M E M

RD (8) RD/WR

IR (8)

VI (8)

SP (16)

T1 (8)

T2 (8)

UC

F (1)

ULA

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)
B. Dados Int (8)

DC (16)

R3 (16)

A (8)

B (8) M E M

RD (8) RD/WR

IR (8)

VI (8)

SP (16)

T1 (8)

T2 (8)

UC

F (1)

ULA

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)
B. Dados Int (8)

DC (16)

R3 (16)

A (8)

B (8) M E M

RD (8) RD/WR

IR (8)

VI (8)

SP (16)

T1 (8)

T2 (8)

UC

F (1)

ULA

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 add B, C, A D, A, A

Ou seja, multiplique B por C e armazene o resultado em A. (As operaes m ul t 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 add C, A 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 B C D A

A instruo load carrega B no acumulador; m ult multiplica 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

Modos de Endereamento

4-49

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

Vous aimerez peut-être aussi