26
1/26 Rodrigo Hausen - OCD Organização de Computadores Aula 25 Conjunto de Instruções: Modos de Endereçamento e Formatos Rodrigo Hausen 11 de novembro de 2011 http://cuco.pro.br/ach2034

Organização de Computadores - cuco.pro.brcuco.pro.br/ach2034/aula26.pdf · explora conceito de localidade espacial: ... FFFF + 1 = 10FFF0 = 1114096 bytes 1,06 MB≈ Por Deslocamento

Embed Size (px)

Citation preview

1/26Rodrigo Hausen - OCD

Organização de Computadores

Aula 25Conjunto de Instruções:

Modos de Endereçamento e Formatos

Rodrigo Hausen

11 de novembro de 2011

http://cuco.pro.br/ach2034

2/26Rodrigo Hausen - OCD

Apresentação

● 1. Bases Teóricas● 2. Organização de computadores– ...– 2.4. Sistema de Memórias– 2.5. Subsistema de Entrada/Saída (I/O)– 2.6. Conjunto de Instruções

● Aula de hoje: Stallings (5a. Edição), Capítulo 10

3/26Rodrigo Hausen - OCD

Modos de Endereçamento

● Como podemos nos referir a um operando em uma instrução?

– Imediato– Direto (na memória)– Indireto (na memória)– Em registrador– Indireto em registrador– Por deslocamento: relativo, registrador-base, indexado– Pilha

4/26Rodrigo Hausen - OCD

Endereçamento Imediato

● Operando é parte da instrução● Operando substitui o campo de endereço● p. ex. ADD 5– Some 5 ao conteúdo do acumulador

● 5 é o operando● Nenhuma referência à memória para obter dado● Vantagem: Rápido● Desvantagem: Tamanho do operando limitado pelo

tamanho do campo de endereço

Modos de Endereçamento:

operandoopcodeInstrução

5/26Rodrigo Hausen - OCD

● Campo de endereço contém endereço do operando● Endereço Efetivo (EA) = campo de endereço (A)● ex. ADD A– Some conteúdo da posição A ao acumulador– Busca na memória, no endereço A, pelo operando

● Vantagens:– Requer apenas um acesso à memória para acessar dado– Nenhum cálculo adicional para encontrar EA

● Desvantagem: Espaço de endereçamento limitado

Endereçamento DiretoModos de Endereçamento:

6/26Rodrigo Hausen - OCD

Diagrama: Endereçamento DiretoModos de Endereçamento:

AopcodeInstrução

Memória

Operando

end.

A

A-1

A-2

A+1

A+2... ...

... ...

7/26Rodrigo Hausen - OCD

● Posição de memória indicada pelo campo de endereço contém o endereço do (é ponteiro para) operando

● end. efetivo EA = ponteiro para endereço [A]1. Acesse endereço A2. Acesse endereço apontado por conteúdo de A, denotado [A]3. Obtenha o operando

● ex. ADD [A]– Adicione o conteúdo da posição apontada pelo conteúdo

do endereço A ao acumulador

Endereçamento IndiretoModos de Endereçamento:

8/26Rodrigo Hausen - OCD

Diagrama: Endereçamento IndiretoModos de Endereçamento:

AopcodeInstrução

Memória

X

end.

A+1

A

X

X+1

... ...

... ...

... ...

operando

9/26Rodrigo Hausen - OCD

● Pode ser em múltiplos níveis (aninhado ou em cascata):– EA = [ … [ [A] ] … ] (para casa: desenhar diagrama)– Endereçamento indireto 1 nível é comum, com mais de 1 é

raro● Vantagem:– Grande espaço de endereçamento

● 2n , onde n é o número de bits da palavra● Desvantagens:– Múltiplos acessos à memória para obter operando

● ADD [A] - requer 2 acessos para obter operando– Portanto, mais lento

Endereçamento IndiretoModos de Endereçamento:

10/26Rodrigo Hausen - OCD

● Operando em registrador indicado no campo de endereço● EA = R● Desvantagem: número limitado de registradores (espaço

de endereçamento extremamente limitado)● Vantagens:– Necessita de campo de endereço muito menor – Instruções mais curtas– Busca de instrução mais rápida– Nenhuma busca à memória para obter operando,

portanto execução muito rápida● Neste modo, maior quantidade de registradores implica

melhor desempenho– requer uso parcimonioso dos registradores

Em RegistradorModos de Endereçamento:

11/26Rodrigo Hausen - OCD

Operando em RegistradorModos de Endereçamento:

RiopcodeInstrução

Registradores

OperandoRi

R2

R1

Rn

......

12/26Rodrigo Hausen - OCD

● Operando está na posição de memória apontada pelo conteúdo do registrador R

● EA = [R]● Vantagens:– grande espaço de endereçamento (2n)– requer 1 acesso de memória a menos para busca de

operando do que endereçamento indireto simples

Indireto Em RegistradorModos de Endereçamento:

13/26Rodrigo Hausen - OCD

Diag: Indireto em RegistradorModos de Endereçamento:

RiopcodeInstrução

Registradores

XRi

R2

R1

Rn

......

Memóriaend.

0

X

X+1

operando

1

... ...

... ...

14/26Rodrigo Hausen - OCD

● Operando está no endereço A adicionado a um deslocamento contido em um registrador

● EA = A + [R]

● Campo de endereço contém dois valores:– A = endereço de memória– R = registrador que contém o deslocamento– um dos campos pode estar implícito

Por DeslocamentoModos de Endereçamento:

15/26Rodrigo Hausen - OCD

Diagrama: por DeslocamentoModos de Endereçamento:

RiopcodeInstrução

Registradores

XRi

R2

R1

Rn

......

Memóriaend.

0

X+A operando

1

... ...

... ...

A

+

16/26Rodrigo Hausen - OCD

● Versões do endereçamento por deslocamento: 1. endereçamento relativo:

● deslocamento tomado implicitamente a partir do PC:EA = A + [PC]

● ou seja, obtenha o operando A posições a patir da instrução corrente

● explora conceito de localidade espacial: se a maioria das referências à memória são próximas, economiza bits no campo de endereço da instrução

Por DeslocamentoModos de Endereçamento:

17/26Rodrigo Hausen - OCD

● Versões do endereçamento por deslocamento: 2. endereçamento via registrador-base:

● deslocamento tomado implicitamente a partir de um registrador de deslocamento

● registradores de segmento CS (code segment), DS (data segment) e SS (stack segment) em IA-32

● Modo real IA-32: segmento 20 bits (16 bits deslocados 4 posições para direita), endereço 16 bits. Exemplo:– Se CS = 3FA2 e PC = 2100, o endereço efetivo da

instrução a ser buscada na memória será 3FA20 = [CS] + 2100 = [PC] 41B20 = [CS:PC] = endereço efetivo

– memória máxima acessível no modo real: FFFF0 + FFFF + 1 = 10FFF0 = 1114096 bytes 1,06 MB≈

Por DeslocamentoModos de Endereçamento:

18/26Rodrigo Hausen - OCD

Por DeslocamentoModos de Endereçamento:

● Versões do endereçamento por deslocamento: 3. endereçamento indexado:

● mantém A fixo, varia o conteúdo de REA = A + [R]

● útil para acessar vetoresA ← endereço do primeiro elemento do vetorR ← 0enquanto [R] < n acessa vetor[R] R ← [R]

19/26Rodrigo Hausen - OCD

● Operando(s) está(ão) no topo da pilha (implicitamente)● Ex.: ADD (retira as duas palavras do topo da pilha, soma

e coloca o resultado no novo topo da pilha)● Necessário manter um apontador para o topo da pilha.

Geralmente, apontador fica em um registrador chamado SP (stack pointer).

● Pilha geralmente cresce “para cima”– instrução push X decrementa SP e coloca operando X na

pilha– pop X retira da pilha, colocando no operando X, e

incrementa SP● IA-32: esp (stack pointer, 32 bits), ebp (base pointer,

base da pilha, 32 bits)

PilhaModos de Endereçamento:

20/26Rodrigo Hausen - OCD

Formatos de Instrução● Organização dos bits em uma instrução● Inclui opcode● Inclui operandos (implícitos ou explícitos)

21/26Rodrigo Hausen - OCD

Formatos de Instrução● Organização dos bits em uma instrução● Inclui opcode● Inclui operandos (implícitos ou explícitos)● Operando explícito é referenciado usando-se um dos

métodos de endereçamento descritos anteriormente.– métodos de endereçamento diferentes podem ser

determinados por opcodes diferentes ou por bits específicos dentro do campo de endereçamento da instrução

22/26Rodrigo Hausen - OCD

Formatos de Instrução● Organização dos bits em uma instrução● Inclui opcode● Inclui operandos (implícitos ou explícitos)● Operando explícito é referenciado usando-se um dos

métodos de endereçamento descritos anteriormente.– métodos de endereçamento diferentes podem ser

determinados por opcodes diferentes ou por bits específicos dentro do campo de endereçamento da instrução

● Na maioria dos casos, é usado mais de um formato de instrução (no IAS era um formato único)

– p. ex. comprimento do opcode pode variar para instruções distintas de uma mesma arquitetura!

23/26Rodrigo Hausen - OCD

Tamanho de Instrução

● É afetado por, e afeta:– Tamanho da memória– Organização da memória– Estrutura dos barramentos– Complexidade da CPU– Velocidade da CPU (instruções por segundo)

● Buscamos um compromisso entre um repertório de instruções poderoso e economia de espaço

– mais instruções e mais modos de endereçamento, consequentemente mais opcodes, que implica que campo de opcode de cada instrução precisará de mais bits.

24/26Rodrigo Hausen - OCD

Alocação de Bits● O número de bits em uma instrução é afetado por:– Quantidade de modos de endereçamento– Número de operandos– Operando em registrador versus operando na memória

● quanto menos registradores, menos bits necessários para identificar cada um

– Número de conjuntos de registradores● dividir registradores em conjuntos especializados, opcode

determina implicitamente o banco usado– Alcance do endereçamento (quantos endereços?)– Granularidade no endereçamento

● endereçamento por byte? endereçamento por palavra maior que um byte?

25/26Rodrigo Hausen - OCD

Formato de Instrução IA-32

Bytes

26/26Rodrigo Hausen - OCD

Para Casa● Pensar: na IA-32, a memória é endereçada por byte. Como

a palavra de 32 bits AABBCCDD é armazenada na memória? Outras arquiteturas, com endereçamento também por byte, armazenam de um jeito diferente. Como? (Apêndice 9B: Little Endian, Big Endian, Bi-Endian)

● Ler capítulos 9 e 10 (inclusive os seus apêndices)● Para mais informações sobre segmentação na IA-32:– http://en.wikipedia.org/wiki/X86_memory_segmentation– http://en.wikipedia.org/wiki/Real_mode– http://en.wikipedia.org/wiki/Protected_mode

● Para mais informações sobre o conjunto de instruções da IA-32: http://pdos.csail.mit.edu/6.828/2011/readings/i386/c17.htm

● Fazer os exercícios propostos no site