Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Arquitetura de Sistemas de Informação: Nível de Arquitetura do Conjunto de Instruções, Trabalhos de Cultura

Este documento, pertencente ao currículo do bacharelado em sistemas de informação do centro de ensino superior de juiz de fora (ces), aborda o nível de arquitetura do conjunto de instruções (isa). Aprenda sobre a tradução de linguagem de alto nível para linguagem de máquina, formatos de instruções, tipos de instruções, registradores, endereçamento e memória. O texto também discute os critérios de projeto de formatos de instrução, tamanho da instrução, tamanho do código de operação e número de bits no campo endereço.

Tipologia: Trabalhos

2010

Compartilhado em 14/05/2010

kadu-velasco-5
kadu-velasco-5 🇧🇷

9 documentos

1 / 25

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
CES
Centro de Ensino Superior
de Juiz de Fora
Bacharelado em Sistemas de Informação
1
Arquitetura e Organização de computadores
Máquinas Multiníveis
Carlos Eduardo O. Velasco
1º Semestre / 2009
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19

Pré-visualização parcial do texto

Baixe Arquitetura de Sistemas de Informação: Nível de Arquitetura do Conjunto de Instruções e outras Trabalhos em PDF para Cultura, somente na Docsity!

Bacharelado em Sistemas de Informação

Arquitetura e Organização de computadores

Máquinas Multiníveis

Carlos Eduardo O. Velasco 1º Semestre / 2009

Bacharelado em Sistemas de Informação

1 - Nível de Arquitetura do Conjunto de instruções

1.1 - Introdução

O Nível de Arquitetura do Conjunto de Instruções (ISA - Instruction Set Architecture) é a interface entre software e hardware. É o nível mais próximo ao hardware em que o usuário pode programar.

O problema encontrado neste nível é que sua programação não é muito amigável. Para solucionar este problema é feita uma organização em níveis.

Cada nível da organização possui uma linguagem associada e a medida que a organização evolui em direção ao usuário, a linguagem se torna mais conveniente para ele.

O usuário escreve um programa fonte em linguagem de alto nível ou em linguagem de montagem, mais amigáveis e o programa fonte é traduzido para programa Objeto numa linguagem intermediária (Linguagem de Máquina); as instruções de máquina são interpretadas pelo Hardware.

1.1.1 - Comparação entre as linguagens de cada nível: Linguagem de alto nível: A=5; Linguagem de montagem: MOVE A, #5; Linguagem de máquina: 0011001100000101 Observações:

  • A linguagem de montagem e a linguagem de máquina possuem uma relação de uma para um, ou seja, cada instrução de montagem possui uma instrução de máquina equivalente;

Bacharelado em Sistemas de Informação

Neste caso, dados desalinhados teriam que ser buscados em duas referências à memória e os dados teriam de ser reconstruídos a partir das duas palavras lidas.

1.2.1 - Organização da memória no Pentium II:

  • Espaço de endereçamento constituído por 16 k segmentos, cada segmento com endereços de 0 a (2^32 - 1).
  • Maioria dos sistemas operacionais só suporta um segmento com espaçode endereçamento linear de 0 a (2^32 - 1).
  • Cada byte tem seu próprio endereço.
  • Palavras de 32 bits, little-endian.

1.3 - Registradores

O nível ISA disponibiliza um conjunto de registradores visíveis ao programador.

Os registradores de propósito geral, que são utilizados para armazenar resultados intermediários e variáveis locais, agilizando o acesso a esses dados e os registradores de propósito específico, que podem ser:

  • PC (contador de programa): ponteiro que armazena o endereço da próxima instrução a ser executada.
  • SP (apontador de pilha): aponta para o endereço no topo da pilha.
  • Registrador de Status (PSW - Program Status Word): contém bits necessários à operação do processador. Exemplo: habilitação de interrupções, modo de execução da máquina, códigos de condição, etc.

Códigos de condição são modificados a cada ciclo de máquina e indicam o estado do resultado do processamento da ULA, exemplos:

  • N - Igual a 1 quando o resultado da ULA for negativo.
  • Z - Igual a 1 quando o resultado da ULA for zero.
  • V - Igual a 1 quando o resultado da ULA gerou um oVerflow.

Bacharelado em Sistemas de Informação

  • C - Igual a 1 quando o resultado da ULA gerou um Vai-um (carry) para o bit mais à esquerda.
  • A - Igual a 1 quando o bit 3 do resultado da ULA gerou um carry Auxiliar.
  • P - Igual a 1 quando o resultado da ULA apresentar paridade par.

Códigos de condição são utilizados por instruções de comparação e desvio condicional.

1.3.1 - Registradores do Pentium II

  • Registradores de propósito geral, 32 bits, (compatibilidade com 16 e 8 bits): EAX (aritmético), EBX (ponteiros), ECX (loops), EDX(multiplicação e divisão, junto com EAX).
  • Registradores de propósito geral, 32 bits: ESI e EDI (ponteiros para manipulação de strings), EBP (ponteiro para base de quadro de pilha).
  • Registrador de propósito específico, 32 bits: ESP (apontador de pilha).
  • Registrador de segmento, 32 bits: CS, SS, DS, ES, FS, GS.(compatibilidade com versões anteriores).
  • Registrador de 32 bits: EIP (contador de programa).
  • Registrador de 32 bits: EFLAGS (status),

Bacharelado em Sistemas de Informação

Dados Não Numéricos:

  • Strings de caracteres ASCII.
  • Valores booleanos.
  • Mapas de bits (matriz de valores booleanos).
  • Ponteiros (endereços de máquina).

1.4.1 - Tipos de dados no Pentium II:

  • Números inteiros em complemento de dois.
  • Números inteiros sem sinal.
  • Números decimais codificados em binário (BCD).
  • Números em ponto flutuante padrão IEEE 754.
  • Strings de caracteres ASCII de comprimento conhecido.
  • Strings de caracteres ASCII de comprimento desconhecido (final da string marcado por caractere especial).

1.5 Formato das Instruções

Existem dois campos essenciais de uma instrução.

O Código de operação (OP CODE) que identifica, de forma única, a operação a ser realizada pelo processador, podendo ter seu tamanho fixo ou variável.

Bacharelado em Sistemas de Informação

E o endereço que indica a localização do dado (operando) a ser manipulado pela instrução. Em geral indica um endereço de memória ou de um registrador onde está contido o dado, ou onde ele será armazenado. Cada instrução pode possuir 0, 1, 2 ou mais campos de endereço.

Na prática os formatos de instrução são bem mais complexos:

  1. O conjunto de instruções pode possuir formatos diferentes;
  2. O comprimento das instruções também pode ser variável, geralmente múltiplo ou submúltiplo do tamanho da palavra: a. instruções menores que uma palavra; b. instruções maiores que uma palavra; c. instruções do tamanho de uma palavra.

1.5.1 - Critérios de projeto de formatos de instrução: Os critérios de projeto de formatos de instruções são o tamanho da instrução, o tamanho do código de operação e o número de bits no campo endereço.

No critério tamanho da instrução temos vantagens e desvantagens quando utilizamos instruções curtas. A vantagem é que quanto maior o tamanho da instrução, maior é o espaço ocupado por um programa na memória, assim sendo, se esta instrução for curta, ocupará menos espaço. N instruções de 32 bits ocupam o dobro da memória ocupada por N instruções de 16 bits.

  • O desempenho que se tem utilizando instruções curtas é melhor. Vejamos:
  • Banda passante da memória: t bps.
  • Tamanho médio das instruções: r bits.
  • Memória pode buscar no máximo t/r instruções por segundo.
  • Velocidade que o processador pode executar as instruções é limitada pelo tamanho das instruções.

Bacharelado em Sistemas de Informação

Bacharelado em Sistemas de Informação

1.6 Modos de Endereçamento

Características da Especificação do Endereçamento:

As instruções em geral utilizam pequena quantidade de bits parar o código de operação e grande quantidade para especificar endereços dos dados. Por exemplo, a instrução de adição precisa de dos endereços dos dois valores a serem somados e do endereço do local onde o valor deve ser armazenado. Supondo que os endereços de memória sejam de 32 bits: são necessários 96 bits de endereços. Os endereços dos operandos na memória principal devem ser determinados em tempo de compilação.

A primeira solução é utilizar registradores para armazenar os operandos. Máquina com 32 registradores, endereços de registrador de 5 bits tem 15 bits de endereços, para o caso acima citado; o acesso será mais rápido contudo teremos o problema da nescessidade de instruções adicionais que utilizariam endereços de 32 bits para carregar os operandos da memória para os registradores. O uso repetido de uma variável compensa o problema.

A segunda solução é indicar um ou mais endereços de forma implícita, como por exemplo a instrução só precisa indicar o ENDEREÇO_1, quando o código de operação é decodificado já se sabe que o registrador R1 deve ser utilizado. R1 := R1 + ENDEREÇO_1. Uma pilha também pode ser usada para que nenhum endereçoseja especificado.

Existem outros métodos de codificar o campo de endereços. Estes podem utilizar mais ou menos bits e o endereço pode ser determinado estaticamente, em tempo de compilação, ou dinamicamente, em tempode execução.

O método utilizado para codificar o campo de endereço de uma instrução é denominado Modo de Endereçamento. Indica a forma pela qual o campo de endereço é interpretado para buscar o dado.

Para exemplificar os modos de endereçamento existentes considere o seguinte formato de instrução:

COD OPERAÇÃO ENDEREÇO

E a seguinte instrução neste formato:

ADD FONTE A instrução acima soma o valor endereçado por FONTE a um registrador chamado ACUMULADOR e armazena a soma no próprio ACUMULADOR, ou seja, ACUMULADOR := ACUMULADOR + FONTE;

1.6.1 - Endereçamento Imediato No endereçamento imediato, o campo de endereço contém o próprio dado e no ciclo de busca-decodificação-execução, a memória só é acessadapara buscar a instrução.

O dado é obtido imediatamente quando a instrução é buscada e fica limitado ao tamanho do campo de endereço da instrução.

Bacharelado em Sistemas de Informação

1.6.3 - Endereçamento Via Registrador Neste tipo de endereçamento o endereço especificado no campo de endereço é de um registrador onde está contido o dado.

Utiliza um endereço de registrador, que é menor que um endereço de memória principal com isso o acesso aos registradores é mais rápido.

O número de registradores é limitado e é utilizado para acessar variáveis locais.

1.6.4 - Endereçamento Indireto Via Registrador Neste, o campo de endereço contém um endereço de registrador na memória de rascunho, onde está armazenado o endereço do dado na memória principal.

Endereço intermediário é chamado de ponteiro.

Quando o ponteiro se encontra em um registrador é possível acessar um endereço de memória através de um endereço de registrador. Acesso a vetores.

Bacharelado em Sistemas de Informação

Exemplo: soma dos elementos de um vetor com 1024 elementos.

  • Elementos inteiros, palavras de 4 bytes.
  • Elementos são somados um a um em laço.
  • Registrador R1 armazena a soma acumulada.
  • Registrador R2 armazena o endereço A do primeiro elemento.
  • Registrador R3 armazena o primeiro endereço fora do vetor.
  • As instruções do laço só endereçam operandos em registradores.

LOOP

MOV R1, #0 ; acumula soma em R1; valor inicial zero MOV R2, #A ; R2 = endereço do vetor A MOV R3, #A+4096 ; R3 = endereço de 1ª palavra após A ADD R1, (R2) ; modo indireto de obter operando com base em R ADD R2, #4 ; incrementa R2 de uma palavra (4 bytes) CMP R2, R3 ; compara R2 e R3 para testar fim de laço BLT LOOP ; se R2 < R3, não terminou, continua o laço

1.6.5 - Endereçamento Indexado O endereço do dado é obtido somando o valor no campo de endereço com o valor contido em um registrador de índice. É utilizado para acessar posições de memória localizadas a uma distância conhecida a partir do conteúdo de um registrador.

Registrador de índice é incrementado a cada utilização de forma a acessar endereços contíguos. Acesso a vetores e variáveis locais.

Instrução:

ADD 4 (R1) Endereço do operando = 4 + (R1) = 4 + 2 = 6

Bacharelado em Sistemas de Informação

1.6.7 - Endereçamento Via Estrutura de Pilha Os dados são buscados a partir do topo da pilha;

Estrutura de dados LIFO armazenada em endereços consecutivos.

Utiliza um registrador Ponteiro de Pilha (SP - Stack Pointer) que aponta para o topo da pilha (último item armazenado).

Instruções para gerenciar a pilha:

PUSH X Empilha X ⇒SP :=SP+1; (SP) := X; POP Y Desempilha em Y⇒ Y := (SP); SP := SP-1;

Algumas instruções de pilha não necessitam especificar endereço.

Os dados são buscados a partir de SP.

Bacharelado em Sistemas de Informação

Exemplo: adição de dois valores usando endereçamento via estrutura de Pilha.

  • Dois valores são desempilhados,
  • Os valores são somados.
  • O resultado é empilhado.

1.7 – Tipos de instruções

  • Instruções de movimento de dados: criam uma cópia de um dado armazenado em algum lugar (fonte) e armazenam essa cópia em outro lugar (destino). Precisam especificar o endereço da fonte e do destino;
  • Operações diádicas: combinam dois operandos para produzir um resultado. Por exemplo: operações aritméticas (adição, subtração, multiplicação e divisão), funções booleanas (AND, OR, NOR, NAND, ...)
  • Operações monádicas: utilizam um único operando para produzir um resultado. Por exemplo: NOT lógico, negação, deslocamento, rotação, incremento.

Bacharelado em Sistemas de Informação

1.7.2 - Instruções de chamada de procedimento: Podemos definir procedimentos como o conjunto de instruções que realizam uma determinada tarefa e podem ser chamados várias vezes de qualquer parte do programa.

Quando um procedimento é chamado através de instrução de chamada de procedimento (CALL), o programa é desviado para a primeira instrução do procedimento.

Quando o procedimento termina sua tarefa o programa é desviado para a instrução imediatamente seguinte a instrução de sua chamada através de instrução de retorno de procedimento (RET).

Quando o procedimento é chamado, é necessário armazenar o endereço de retorno.

O endereço de retorno pode ser armazenado numa pilha, permitindo que um procedimento chame outro procedimento.

Quando um procedimento termina o endereço de retorno é desempilhado e colocado no PC.

1.7.3 - Instruções de Controle de Laço Execução de um grupo de instruções (laço) repetida um número fixo de vezes. É baseada em contador que é incrementado ou decrementado a cada execução do laço (loop).

Bacharelado em Sistemas de Informação

O contador deve ser testado a cada execução do laço, quando o teste assumir uma determinada condição, o laço é interrompido.

Duas implementações: com teste no final ou com teste no inicio do laço.

1.7.4 - Instruções de E/S (Entrada/Saída) de dados

A - E/S programada com espera ocupada: É um método de implementação simples, comum em sistemas de baixo desempenho (sistemas embarcados, sistemas em tempo real). Cada dispositivo possui dois registradores associados: status e buffer de dados.

O processador testa o registrador de status periodicamente, em laço, até verificar se o dispositivo esta pronto para receber (saída) ou se disponibilizou um dado (entrada). ⇒ Espera Ocupada.

O status espera ocupada mantém o processador ocioso enquanto realiza operação de entrada ou saída. ⇒ Baixo desempenho. Aplicações dedicadas.

As instruções IN e OUT são providas para ler e escrever nos registradores. Estas instruções selecionam um dos dispositivos de E/S disponíveis.

Como um caractere é lido ou escrito por vez no registrador de dados, o processador precisa executar seqüência explícita de instruções para cada caractere lido ou escrito.

Por exemplo um terminal com dois dispositivos de E/S: 1 de entrada (teclado) e 1 de saída (vídeo).

Entrada:

  • Processador fica em loop lendo registrador de status do teclado até que o bit Caractere disponível seja ligado pelo dispositivo.