32
Sistemas de Computação I Centro de Ciências Computacionais – C3 - FURG Aula 18 Conjunto de Instruções

Aula18 - Conjunto Instrucoes

Embed Size (px)

Citation preview

Page 1: Aula18 - Conjunto Instrucoes

Sistemas de Computação I

Centro de Ciências Computacionais – C3 - FURG

Aula 18Conjunto de Instruções

Page 2: Aula18 - Conjunto Instrucoes

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

Page 3: Aula18 - Conjunto Instrucoes

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

Page 4: Aula18 - Conjunto Instrucoes

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?

Page 5: Aula18 - Conjunto Instrucoes

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:

Page 6: Aula18 - Conjunto Instrucoes

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 ?

Page 7: Aula18 - Conjunto Instrucoes

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

Page 8: Aula18 - Conjunto Instrucoes

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

Page 9: Aula18 - Conjunto Instrucoes

Problemas

Transferência de dados entre máquinas Manipular bytes ou bits individuais em um

valor escalar de múltiplos bytes.

Page 10: Aula18 - Conjunto Instrucoes

Exemplo – Estrutura de dados em C

Page 11: Aula18 - Conjunto Instrucoes

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.

Page 12: Aula18 - Conjunto Instrucoes

Visão alterantiva do mapa de memória

Page 13: Aula18 - Conjunto Instrucoes

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)

Page 14: Aula18 - Conjunto Instrucoes

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.

Page 15: Aula18 - Conjunto Instrucoes

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.

Page 16: Aula18 - Conjunto Instrucoes

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.

Page 17: Aula18 - Conjunto Instrucoes

Tipos de Operação

Transferência de dados Aritméticas Lógicas Conversão E/S Controle do Sistema Transferência de Controle

Page 18: Aula18 - Conjunto Instrucoes

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

Page 19: Aula18 - Conjunto Instrucoes

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.

Page 20: Aula18 - Conjunto Instrucoes

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

Page 21: Aula18 - Conjunto Instrucoes

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

Page 22: Aula18 - Conjunto Instrucoes

Lógicas

Operações entre os bits AND, OR, NOT, XOR COMPARE ROTAÇÃO DESLOCAMENTO

Page 23: Aula18 - Conjunto Instrucoes

Operações deslocamento

Page 24: Aula18 - Conjunto Instrucoes

Operações de rotação

Page 25: Aula18 - Conjunto Instrucoes

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

Page 26: Aula18 - Conjunto Instrucoes

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:

Page 27: Aula18 - Conjunto Instrucoes

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.

Page 28: Aula18 - Conjunto Instrucoes

Exercício

Descreva os passos necessários para enviar o caracter mais à direita do exemplo anterior.

Page 29: Aula18 - Conjunto Instrucoes

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.

Page 30: Aula18 - Conjunto Instrucoes

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?

Page 31: Aula18 - Conjunto Instrucoes

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)

Page 32: Aula18 - Conjunto Instrucoes

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