1 arquitetura de computadores arquitetura do conjunto de instruções

52
1 Arquitetura de Computadores Arquitetura do conjunto de instruções

Upload: internet

Post on 16-Apr-2015

105 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

1

Arquitetura de Computadores

Arquitetura do conjunto de instruções

Page 2: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

2

Arquitetura de Computadores

Arquitetura de conjunto de instruções, permite dar uma visão um pouco acima do hardware, onde iremos conhecer a linguagem de máquina e a linguagem de montagem.

Vamos estudar a arquitetura ARC, baseada numa arquitetura comercial da SUN Um compilador traduz de uma linguagem de alto nível para uma de baixo nível

Um montador assembly é responsável por traduzir a linguagem de assembly para linguagem de código de máquina Linguagem com o C, pascal, fortran traduzem diretamente para código de máquina da arquitetura. A linguagem JAVA traduz para uma linguagem intermediária, chamada de byte code. A máquina virtual JAVA

interpreta o byte code para a linguagem de máquina de cada arquitetura.

Alto Nível

Baixo Nível

C, Pascal, etc -> independente de arquitetura

Montagem -> dependente de arquitetura

Hardware

Page 3: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

3

Arquitetura de Computadores

As instruções de linguagem de máquina apenas apresentam as operações de acesso lógicas aritméticas, a memória, aos I/Os e registradores.

O objetivo do barramento é reduzir o numero de interconexões entre as unidades Toda comunicação é feita pelo barramento. Nem todas as arquiteturas são assim. Existem aquelas que possuem

barramentos dedicados, por exemplo: uma exclusiva entre a CPU e a memória.

Page 4: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

4

Arquitetura de Computadores

Funcionamento típico– Um programa de feito em uma linguagem de alto nível e

armazenado no disco rígido.– O usuário carrega o programa para memória, com a ajuda

do sistema operacional. – O programa é executado, operando instruções de baixo

nível. Todas as instruções são executadas na ALU e gerenciados pela unidade de controle, o qual é responsável em direcionar quando uma instrução fará uma operação de acesso de memória, I/O ou se lógica e aritméticas devem ser realizadas.

Page 5: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

5

Arquitetura de Computadores

Um byte é composto de 8 bits ou dois nibbles Todas as outros tamanhos são compostos em

termos de bytes.

Page 6: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

6

Arquitetura de Computadores

Memória– É um conjunto de registradores que armazenam bytes e que podem ser acessados

através de um endereçamento.– Mesmo uma word ou palavras maiores podem ser acessados na memória, pois estes

dados estão organizados sequencialmente na memória.

Formatos Big-Endian e Little Endian– A forma como os dados podem estar organizado podem variar de arquitetura para

arquitetura.– Os chamados Big-Endian, tem os bytes mais significativos nos endereços mais

baixos.

– OLittle-endian tem os bytes menos significativos no endereço mais baixo.

Page 7: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

7

Arquitetura de Computadores

O acesso a memória é sequencial

A forma de acesso é apresentado pela figura ao lado.

Através do endereçamento ou “Address” podemos indicar a unidade de memória qual dado estamos interessados em acessar.

Page 8: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

8

Arquitetura de Computadores

Mapeamento de memória– Alguns dispositivos podem ter mapeando como posição de

memória as entradas e saídas de dados. Ao invés de usar I/O, um programa pode ler e escrever dados aos dispositivos simplesmente lendo ou escrevendo dados num dado endereçamento.

– Estas regiões são protegidas e são usados somente para este fim, não podem ser usados pelos programas para armazenar informações dos aplicativos.

Page 9: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

9

Arquitetura de Computadores

Considerações sobre memória– Normalmente, as memórias podem ser

considerados como um grande intervalo de endereços contínuos. Mas há outras formas de organização de memórias, como por exemplo: tipo segmentado.

Page 10: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

10

Arquitetura de Computadores

A CPU– Consiste de uma seção

contendo registradores, ALU e a Unidade de Controle.

– A seção de dados é também conhecida de DATAPATH

Page 11: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

11

Arquitetura de Computadores

A unidade de controle é responsável por executar uma por uma as instruções de código de máquina armazenadas na memória.

Utiliza dois registradores especiais, que são a interface entre a unidade de controle e de dados. São o IR e PC, o primeiro contém a instrução lida da memória. A segunda possui o próximo endereço a ser lido pela unidade de controle para a proxima instrução.

Page 12: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

12

Arquitetura de Computadores

Algoritmo básico (ciclo de busca e execução)

– Ler a próxima instrução, apontada pelo PC– Decodificar os operandos– Ler o operando da memória, se houver– Executar a instrução e armazenar os resultados– Repetir

Page 13: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

13

Arquitetura de Computadores

Datapath é feito sobre uma coleção de registradores conhecidos como registradores de arquivo e a ALU.

Page 14: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

14

Arquitetura de Computadores

Conjunto de Instruções– São uma coleção de instruções/comandos que são usados

para executar tarefas de receber, processar e transmitir dados dentro do processador. Estes conjuntos são chamados de linguagem de máquina.

– Cada arquitetura pode ter diferentes conjuntos de instruções.

– Necessidades de compiladores: C, Pascal, Java, etc.

Page 15: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

15

Arquitetura de Computadores

Compiladores– São software para gerar programas em

linguagem de máquinas.– Como entrada, são usados linguagens de alto

nível, como alinguagem C, Fortran, Pascal, etc.– Usando o código fonte, por exemplo da

linguagem C, é possível compilar um mesmo programa em várias arquiteturas diferentes.

Page 16: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

16

Arquitetura de Computadores

Processo de compilagem– Linguagem de alto nível– Linguagem de montagem– Tempo para “linkagem”– Código de máquina

Page 17: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

17

Arquitetura de Computadores

Exemplo de computador RISC– ARC

ARC é uma máquina de 32 bits com memória endereçada por byte

Podem manipular dados de 32 bits Tem áreas de memórias separadas por função

Page 18: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

18

Arquitetura de Computadores

Os menores 2048, são reservado para o S.O.

Acima de 2048 e abaixo de da pilha, é reservada para os programas do usuário

A pilha está localizada, 231- 4 e cresce em direção a endereços menores

Acima disso, entre 231 e

232 – 1 é reservado para dispositivos de entradas e saídas.

Page 19: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

19

Arquitetura de Computadores

Conjuntos de instruções especiais– Os Registradores, são memórias especiais e são diferentes

da memória, por estarem internas a CPU.– O ARC tem 32 registradores de 32 bits– Possui um PC, IR e PSR

PC Program Count IR Instrution Register PSR – registrador de status

– Load-Store – é uma arquitetura que carrega e armazena. Todos dados são necessariamente carregados em registradores para processamentos. O resultado é também sempre carregado em um registrador.

Page 20: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

20

Arquitetura de Computadores

Instruções de Movimentação de Dados– Ld e St, são respectivamente de leitura e escrita

de dados da memória para registrador e vice-versa.

– São as únicas instruções que podem acessar a memória no ARC.

Page 21: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

21

Arquitetura de Computadores

Instruções de Controle– São responsáveis por chamar subrotinas, gerar

saltos condicionais e incondicionais na execução de um algorítmos.

– Exemplo de incondicionais: Call e Jmpl– Exemplo das instruções condicionais: be, bneg,

bcs, bvs e ba

Page 22: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

22

Arquitetura de Computadores

sdf

Page 23: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

23

Arquitetura de Computadores

O Registrador PSR– Ele especifica o status a uma dada operação

aritmética.– “z”, define se uma operação matemática deu

“Zero”– “n”, define se a operação deu negativo– “c”, Carry out– “v”, Overflow

Page 24: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

24

Arquitetura de Computadores

Formato de linguagem de montagem ARC

Page 25: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

25

Arquitetura de Computadores

Registradores

Page 26: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

26

Arquitetura de Computadores

Formato das instruções

Page 27: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

27

Os Formatos de dados ARC

– Temos formatos de: Inteiros sem sinal Inteiros com sinal Ponto flutuantes

Page 28: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

28

Arquitetura de Computadores

Pseudo Ops– São operandos especiais que são necessários

que não fazem parte dos opscodes de uma arquitetura. Porém eles são necessários durante o processo de montagem de códigos de máquinas.

Page 29: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

29

Arquitetura de Computadores

Pseudo Ops

Page 30: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

30

Arquitetura de Computadores

Exemplo de código assembly

Page 31: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

31

Um pouco mais complexo

Page 32: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

32

Arquitetura de Computadores

Variações na Arquitetura e endereçamento da máquina.– Considere A = B * C + D– Dependendo do tipo de instruções usado, esta

expressão pode ocupar diferentes tamanhos.– Premissa que todos os operandos ocupem dois

bytes e opcodes apenas um byte.

Page 33: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

33

Arquitetura de Computadores

Tipo com três parâmetros

mult B, C, A A <- B x C

add D, A, A A <- A + D

– O tamanho do programa ocupado é: 7x2 = 14 bytes.

– Tráfico de Memória: 14 + 2x(2x3) = 26 bytes

Page 34: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

34

Arquitetura de Computadores

Tipo com dois parâmetros– Um dos operandos é usando para acomodar o

resultado

load B, A A <- B

mult C, A A <- A x C

add D, A A <- A + D

O tamanho do programa: 3x(1+2+2) = 15 bytes

Tráfico de memória: 15 + 2x2 + 2x3 + 2x3 = 31 bytes

Page 35: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

35

Arquitetura de Computadores

Tipo com dois parâmetros– Um dos operandos é usando para acomodar o resultado

load B Acc <- B

mult C Acc <- Acc x C

add D Acc <- Acc + D

store A A <- Acc

Tamanho do programa: 4x3 = 12 bytes

Tráfego de memória: 12 + 4 x 2 = 20 bytes

Page 36: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

36

Arquitetura de Computadores

Registradores de Uso Especial– Algumas arquiteturas possuem registradores

especiais de acordo com os fins específicos Registradores de indexação da memória, os

registradores de índice de origem (SI) e de origem (DI) do Intel 80x86 são usados para marcar o início ou fim de um vetor de memória.

Registradores de ponto flutuante: muitos processadores usam esses registradores para tratar com pontos flutuantes

Page 37: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

37

Arquitetura de Computadores

Registradores que implementa operações de tempo: o processador PowerPC 601 tem registradores de clock de tempo que oferecem medidas de tempo de alta resolução.

Registradores de apoio ao S.O. : ex: apoio ao acesso a memória

Registradores que podem ser acessados por instruções privilegiadas: são comandos que só S.O tem acesso e permissão usar.

Page 38: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

38

Arquitetura de Computadores

Modos de endereçamento

– Uma constante que é conhecido em tempo de montagem

– Conteúdo direto de um registrador

– Soma de dois registradores

– Soma de registradores e uma constante

Page 39: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

39

Arquitetura de Computadores

Ligação de Sub-rotinas

Page 40: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

40

Arquitetura de Computadores

Área de ligação de dados– A sub-rotina é linkado com uma área de dados de memória

através de r5.

Page 41: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

41

Arquitetura de Computadores

Passagem de parâmetros usando a pilha

Page 42: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

42

Arquitetura de Computadores

Exemplo de uso da pilha em linguagem de alto nível.

Page 43: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

43

Comportamento da pilha no exemplo anterior

Page 44: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

44

Cont.

Page 45: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

45

Arquitetura de Computadores

Mapeamento da memória ARC.

Page 46: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

46

Arquitetura de Computadores

Touchscreen I/O Device

Page 47: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

47

Arquitetura de Computadores

Flowchart for I/O Device

Page 48: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

48

Arquitetura de Computadores

Java Virtual Machine Architecture

Page 49: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

49

Arquitetura de Computadores

Programa Java e o arquivo com a classe compilada

Page 50: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

50

Arquitetura de Computadores

A Java Class File

Page 51: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

51

Arquitetura de Computadores

Cont

Page 52: 1 Arquitetura de Computadores Arquitetura do conjunto de instruções

52

Arquitetura de Computadores

Byte code java– Byte code disassembled para um programa java

Location Code Mnemonic Meaning

0x00e3 0x10 bipush Push next byte onto stack

0x00e4 0x0f 15 Argument to bipush

0x00e5 0x3c istore_1 Pop stack to local variable 1

0x00e6 0x10 bipush Push next byte onto stack

0x00e7 0x09 9 Argument to bipush

0x00e8 0x3d istore_2 Pop stack to local variable 2

0x00e9 0x03 iconst_0 Push 0 onto stack

0x00ea 0x3e istore_3 Pop stack to local variable 3

0x00eb 0x1b iload_1 Push local variable 1 onto stack

0x00ec 0x1c iload_2 Push local variable 2 onto stack

0x00ed 0x60 iadd Add top two stack elements

0x00ee 0x3e istore_3 Pop stack to local variable 3

0x00ef 0xb1 return Return