Aula18 - Conjunto Instrucoes

Preview:

Citation preview

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