Você está na página 1de 32

Aula 18 Conjunto de Instrues

Sistemas de Computao I
Centro de Cincias Computacionais C3 - FURG

Decises de Projeto (1)

Repertrio de Operao

Quantas operaes? O que elas podem fazer? Quo complexas elas sero?

Tipos de Dados Formatos de Instrues


Tamanho do campo de opcode Nmero de endereos

Decises de Projeto (2)

Registradores

Nmero de registradores da CPU disponveis Quais operaes podem ser executadas em quais registradores ?

Modos de Endereamento (prxima matria) RISC v CISC

Tipos de Operandos

Endereos Nmeros

Inteiros/Ponto Flutuante
ASCII, EBCDIC etc. Bits ou flags
Quem programa em C?

Caracteres

Dados Lgicos

(Existe alguma diferena entre nmeros e caracteres?

Byte Ordem

Qual a ordem de leitura de nmeros que ocupam mais que um byte? Exemplo: (em hexa para ficar mais fcil de ler) 12345678 pode ser armazenado em um espao de 4 x 8 bits nos seguintes modos:

Byte Ordem (exemplo: 12345678)


Endereo 184 185 186 186

Valor(1) 12 34 56 78

Valor(2) 78 56 34 12

Isto , leitura top down ou bottom up ?

Tipos de Ordenaes de Bytes


Esse problema chamado Endian O sistema 1 do exemplo, tem o byte mais significativo no menor endereo

big-endian

O sistema 2 tem o byte menos significativo no menor endereo

little-endian

Conceito da disposio de bytes (endianness Cohen, 1981)


Endere Valor o 184 185 186 187 12 34 56 78 Big - endian Byte mais significativo armazenado no menor endereo de byte IBM 370/390, Motorola 680x0, Sun SPARC, maiorias das mquinas RISC Endere Valor o 184 185 186 187 78 56 34 12 Little - endian Byte menos significativo armazenado no menor endereo de byte Intel 80x86, PentiumII, VAX e Alpha

Problemas

Transferncia de dados entre mquinas Manipular bytes ou bits individuais em um valor escalar de mltiplos bytes.

Exemplo Estrutura de dados em C

Observaes

Cada item de dado tem o mesmo endereo nos dois esquemas.

O endereo da palavra dupla com hexa 2122232425262728 08.

Dentro de um valor escalar de multibytes, a disposio de bytes no big-endian inverso da disposio de bytes no little-endian. O tipo de endian no afeta a organizao de itens de dado dentro de uma estrutura. Portanto, os 4 bytes da palavra c aparecem invertidos nas duas disposies, mas o vetor de 7 caracteres d no invertido. Assim, o endereo de cada elemento individual do vetor d o mesmo nas duas estruturas.

Viso alterantiva do mapa de memria

Pontos favorveis ao Big-endian

Classificao de string de caracteres: mais rpido na comparao de strings de caracteres alinhados por inteiros, a ULA pode comparar mltiplos bytes em paralelo. Listagem de valores decimais ASCII: todos os valores podem ser impressos da esquerda para a direita, sem causar confuso. Ordem coerente: processadores big-endian armazenam inteiros e strings na mesma ordem (bytes mais significativos vem primeiro)

Pontos favorveis ao Little-endian

Um processador big-endian precisa efetuar uma adio para converter um endereo de 32 bits para um endereo de 16 bits, a fim de obter os bytes menos significativos. mais fcil efetuar a aritmtica de alta preciso, pois no necessrio encontrar o byte menos significativo e recuar.

Bi-endian

PowerPC: possibilita a utilizao de ambas as disposies de bytes.

Permite ao desenvolvedor escolher qual a disposio de bytes ao migrar sistemas operacionais ou aplicaes de outras mquinas. O S. O. determina a disposio dos bytes na qual um processo executa. Uma vez selecionada, todas as operaes subsequentes seguem a mesma disposio.

2 bits do registrador de estado da mquina (MSR).


1 especifica a disposio de bytes na qual o ncleo do S.O. executa 1 especifica a disposio do processo corrente.

Tipos de Operao

Transferncia de dados Aritmticas Lgicas Converso E/S Controle do Sistema Transferncia de Controle

Transferncia de dados

Especifica

Origem Destino Quantidade de dados

Pode haver instrues diferentes para movimentos diferentes

IBM 370
VAX

Ou uma instruo e diferente endereos

Tipos de Transferncias

Transferncia de dados entre registradores

Rd = Rf Calcular o endereo de memria (modo de endereamento) Se est na Memria Virtual

Transferncia envolvendo Memria Principal


Traduz o endereo para Endereo Fsico

Determina se o item est na memria cache Se no estiver, emite um comando para o mdulo da memria.

Aritmticas

Add, Subtract, Multiply, Divide Inteiros com sinal Ponto Flutuante Pode incluir:

Incremento (a++) Decremento (a--) Negao (-a)

OBS: instrues aritmticas podem envolver transferncia de dados

Exemplo de operao com BCD


12 (10) = 0001 0010 (BCD) 24(10) = 0010 0100 (BCD) + ___________ 0011 0110 (BCD) = 36 (10)

15(10) = 0001 0101 (BCD) 37(10) = 0011 0111 (BCD) + __________ 0100 1100 (BCD) 0010

1100 = 12 (10)???
Ajuste:

1100 = 0010 e vai 1 Resposta: 0101

Lgicas

Operaes entre os bits AND, OR, NOT, XOR COMPARE ROTAO DESLOCAMENTO

Operaes deslocamento

Operaes de rotao

Exemplos de operaes de deslocamento e rotao

Entrada 10100110

Operao Deslocamento lgico direita (3 bits)

Resultado 00010100

10100110
10100110 10100110 10100110 10100110

Deslocamento lgico esquerda (3 bits)


Deslocamento aritmtico direita (3 bits) Deslocamento aritmtico esquerda (3 bits) Rotao direita (3 bits) Rotao esquerda (3 bits)

00110000
11110100 10110000 11010100 00110101

Exemplo transmisso de caracteres de dados de um dispositivo de E/S, um caractere de cada vez.

Se cada palavra de memria tiver tamanho de 16 bits e contiver 2 caracteres, ser necessrio 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. 2.

3.

4.

Carregue a palavra em um registrador Execute a operao AND com os operandos dados pelo contedo do registrador e o valor 11111111 00000000, para mascarar o caracter da direita Desloque o contedo do registrador para a direita, 8 posies de bit. Isso desloca o caractere restante para a metade direita do registrador. Efetue a E/S. O mdulo de E/S ler os 8 bits de ordem inferior do barramento de dados.

Exerccio

Descreva os passos necessrios para enviar o caracter mais direita do exemplo anterior.

Resposta
1. 2.

3.

Carregue a palavra de novo no registrador Execute a instruo AND com operandos dados pelo contedo do registrador e o valor 0000 0000 1111 1111. Efetue a E/S.

Exerccios de fixao
12- Quais as concluses quanto ao nmero de endereos por instruo? 13- Quais os tipos de nmeros freqentemente encontrados nas arquiteturas? 14- Porque na linguagem de mquina no existe variveis tipadas? 15- Qual a diferena de Little-endian e Bigendian? 16- Como realizada a transferncia de dados quando 1 ou mais operandos esto na memria?

18- Qual o problema de trabalhar com nmeros no formato BCD? 19- Instrues lgicas e aritmticas podem envolver transferncia de dados? 20- Para que finalidade deslocamentos lgicos so especialmente teis? 21 complete a tabela abaixo realizando as operaes: Entrada Operao Resultado
11011010 11011010 11011010 Deslocamento lgico direita (4 bits) Deslocamento lgico esquerda (2 bits) Deslocamento aritmtico direita (5 bits)

11011010 11011010
11011010

Deslocamento aritmtico esquerda (1 bits) Rotao direita (2 bits)


Rotao esquerda (3 bits)

22- Em um sistema com palavras de 32 bits, na posio 1320 da memria est armazenada a varivel X, inicializada com o valor FF AB 08 7C e carregada no Registrador 2 (R2). Em uma arquitetura so disponibilizadas as seguintes funes 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 informaes, determine o valor final da varivel X aps a execuo das 4 prximas instrues: i. SRL R2, 2, R2 ii. SRA R2, 8, R2 iii. SLL R2, 16, R2 iv. SRA R2, 4, R2