aula18 - conjunto instrucoes
TRANSCRIPT
Sistemas de Computação I
Centro de Ciências Computacionais – C3 - FURG
Aula 18Conjunto de Instruções
Decisões de Projeto (1)
Repertório de Operação Quantas operações? O que elas podem fazer? Quão complexas elas serão?
Tipos de Dados Formatos de Instruções
Tamanho do campo de opcode Número de endereços
Decisões de Projeto (2)
Registradores Número de registradores da CPU disponíveis Quais operações podem ser executadas em quais
registradores ? Modos de Endereçamento (próxima matéria) RISC v CISC
Tipos de Operandos
Endereços Números
Inteiros/Ponto Flutuante Caracteres
ASCII, EBCDIC etc. Dados Lógicos
Bits ou flags (Existe alguma diferença entre números e caracteres?
Quem programa em C?
Byte Ordem
Qual a ordem de leitura de números que ocupam mais que um byte?
Exemplo: (em hexa para ficar mais fácil de ler) 12345678 pode ser armazenado em um
espaço de 4 x 8 bits nos seguintes modos:
Byte Ordem (exemplo: 12345678)
Endereço Valor(1) Valor(2) 184 12 78 185 34 56 186 56 34 186 78 12
Isto é, leitura top down ou bottom up ?
Tipos de Ordenações de Bytes
Esse problema é chamado Endian O sistema 1 do exemplo, tem o byte mais
significativo no menor endereço big-endian
O sistema 2 tem o byte menos significativo no menor endereço little-endian
Conceito da disposição de bytes (endianness – Cohen, 1981)
Endereço
Valor
184 12
185 34
186 56
187 78
Endereço
Valor
184 78
185 56
186 34
187 12
Big - endian Little - endian
Byte mais significativo armazenado no menor endereço de byte
Byte menos significativo armazenado no menor endereço de byteIntel 80x86, PentiumII, VAX e AlphaIBM 370/390, Motorola 680x0, Sun SPARC,
maiorias das máquinas RISC
Problemas
Transferência de dados entre máquinas Manipular bytes ou bits individuais em um
valor escalar de múltiplos bytes.
Exemplo – Estrutura de dados em C
Observações
• Cada item de dado tem o mesmo endereço nos dois esquemas. • O endereço da palavra dupla com hexa
2122232425262728 é 08.• Dentro de um valor escalar de multibytes, a
disposição de bytes no big-endian é inverso da disposição de bytes no little-endian.
• O tipo de endian não afeta a organização de itens de dado dentro de uma estrutura. Portanto, os 4 bytes da palavra c aparecem invertidos nas duas disposições, mas o vetor de 7 caracteres d não é invertido. Assim, o endereço de cada elemento individual do vetor d é o mesmo nas duas estruturas.
Visão alterantiva do mapa de memória
Pontos favoráveis ao Big-endian
• Classificação de string de caracteres: mais rápido na comparação de strings de caracteres alinhados por inteiros, a ULA pode comparar múltiplos bytes em paralelo.
• Listagem de valores decimais ASCII: todos os valores podem ser impressos da esquerda para a direita, sem causar confusão.
• Ordem coerente: processadores big-endian armazenam inteiros e strings na mesma ordem (bytes mais significativos vem primeiro)
Pontos favoráveis ao Little-endian
Um processador big-endian precisa efetuar uma adição para converter um endereço de 32 bits para um endereço de 16 bits, a fim de obter os bytes menos significativos.
É mais fácil efetuar a aritmética de alta precisão, pois não é necessário encontrar o byte menos significativo e recuar.
Bi-endian
PowerPC: possibilita a utilização de ambas as disposições de bytes. Permite ao desenvolvedor escolher qual a
disposição de bytes ao migrar sistemas operacionais ou aplicações de outras máquinas.
O S. O. determina a disposição dos bytes na qual um processo executa.
Uma vez selecionada, todas as operações subsequentes seguem a mesma disposição.
2 bits do registrador de estado da máquina (MSR). 1 especifica a disposição de bytes na qual o
núcleo do S.O. executa 1 especifica a disposição do processo corrente.
Tipos de Operação
Transferência de dados Aritméticas Lógicas Conversão E/S Controle do Sistema Transferência de Controle
Transferência de dados
Especifica Origem Destino Quantidade de dados
Pode haver instruções diferentes para movimentos diferentes IBM 370
Ou uma instrução e diferente endereços VAX
Tipos de Transferências
Transferência de dados entre registradores Rd = Rf
Transferência envolvendo Memória Principal Calcular o endereço de memória (modo de
endereçamento) Se está na Memória Virtual
Traduz o endereço para Endereço Físico Determina se o item está na memória cache Se não estiver, emite um comando para o módulo
da memória.
Aritméticas
Add, Subtract, Multiply, Divide Inteiros com sinal Ponto Flutuante Pode incluir:
Incremento (a++) Decremento (a--) Negação (-a)
OBS: instruções aritméticas podem envolver transferência de dados
Exemplo de operação com BCD
12 (10) = 0001 0010 (BCD)
24(10) = 0010 0100 (BCD)
+ ___________
0011 0110 (BCD) = 36 (10)
15(10) = 0001 0101 (BCD) 1100 = 12 (10)???
37(10) = 0011 0111 (BCD) Ajuste:
+ __________ 1100 = 0010 e vai 1
0100 1100 (BCD) Resposta: 0101 0010
Lógicas
Operações entre os bits AND, OR, NOT, XOR COMPARE ROTAÇÃO DESLOCAMENTO
Operações deslocamento
Operações de rotação
Exemplos de operações de deslocamento e rotação
Entrada Operação Resultado
10100110 Deslocamento lógico à direita (3 bits)
00010100
10100110 Deslocamento lógico à esquerda (3 bits)
00110000
10100110 Deslocamento aritmético à direita (3 bits)
11110100
10100110 Deslocamento aritmético à esquerda (3 bits)
10110000
10100110 Rotação à direita (3 bits) 11010100
10100110 Rotação à esquerda (3 bits) 00110101
Exemplo – transmissão de caracteres de dados de um dispositivo de E/S, um caractere de cada vez.
Se cada palavra de memória tiver tamanho de 16 bits e contiver 2 caracteres, será necessário desempacotar os caracteres, antes que sejam enviados.
Os passos a seguir resultam no envio do caracter mais à esquerda dos 2 caracteres de uma palavra:
1. Carregue a palavra em um registrador2. Execute a operação AND com os operandos
dados pelo conteúdo do registrador e o valor 11111111 00000000, para mascarar o caracter da direita
3. Desloque o conteúdo do registrador para a direita, 8 posições de bit. Isso desloca o caractere restante para a metade direita do registrador.
4. Efetue a E/S. O módulo de E/S lerá os 8 bits de ordem inferior do barramento de dados.
Exercício
Descreva os passos necessários para enviar o caracter mais à direita do exemplo anterior.
Resposta
1. Carregue a palavra de novo no registrador2. Execute a instrução AND com operandos
dados pelo conteúdo do registrador e o valor 0000 0000 1111 1111.
3. Efetue a E/S.
Exercícios de fixação
12- Quais as conclusões quanto ao número de endereços por instrução?
13- Quais os tipos de números freqüentemente encontrados nas arquiteturas?
14- Porque na linguagem de máquina não existe variáveis tipadas?
15- Qual a diferença de Little-endian e Big-endian?
16- Como é realizada a transferência de dados quando 1 ou mais operandos estão na memória?
18- Qual o problema de trabalhar com números no formato BCD?
19- Instruções lógicas e aritméticas podem envolver transferência de dados?
20- Para que finalidade deslocamentos lógicos são especialmente úteis?
21 – complete a tabela abaixo realizando as operações:Entrada Operação Resultado
11011010 Deslocamento lógico à direita (4 bits)
11011010 Deslocamento lógico à esquerda (2 bits)
11011010 Deslocamento aritmético à direita (5 bits)
11011010 Deslocamento aritmético à esquerda (1 bits)
11011010 Rotação à direita (2 bits)
11011010 Rotação à esquerda (3 bits)
22- Em um sistema com palavras de 32 bits, na posição 1320 da memória está armazenada a variável X, inicializada com o valor FF AB 08 7C e carregada no Registrador 2 (R2). Em uma arquitetura são disponibilizadas as seguintes funções de deslocamento:
SLL Rs, desl, Rd Shift Left Logical SRA Rs, desl, Rd Shift Right Arithmetic SRL Rs, dels, Rd Shift Right Logical
Onde: Rs é o registrador que contem o dado original desl indica quantos bits deve ser deslocados Rd indica o registrador destino.
a. Com base nestas informações, determine o valor final da variável X após a execução das 4 próximas instruções:
i. SRL R2, 2, R2 ii. SRA R2, 8, R2 iii. SLL R2, 16, R2 iv. SRA R2, 4, R2