organização de computadores - cuco.pro.brcuco.pro.br/ach2034/aula26.pdf · explora conceito de...
TRANSCRIPT
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?
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