Aula 6: Topologia dos processadores

Questão: Qual a relação entre a organização interna do processador e o conjunto de instruções?

Objetivos

  1. Descrever os tipos mais comuns de arquiteturas.

Contextualização

Podemos classificar as instruções pela forma que elas endereçam os argumentos que serão utilizados em suas operações. Ou seja, o tipo de endereçamento utilizado.

De uma forma muito simplificada, podemos dizer que os argumentos podem ser:

Para entender melhor a maneira como as instruções funcionam, e são representadas, vamos primeiro entender o funcionamento do processador.

Para executar uma instrução, o processador deve fazer uma sequência de passos que se repetirá continuamente. Como visto anteriormente, essa sequência tem cinco etapas:

Cada etapa possuí os seus pontos de controle, que são definidos durante o projeto do fluxo de dados do processador.

Etapas de Execução
Etapas de Execução

Essas alternativas de localização dos argumentos, na memória, em um banco de registradores ou no acumulador, são definidas pela topologia (ou arquitetura) do processador.

A topologia (ou arquitetura) do processador está vinculada com:

Estudaremos as seguintes arquiteturas:

O resultado, de qualquer operação, sempre é armazenado no acumulador (AC ou A), ou seja, está implicito o uso desse registrador.

As instruções possuem apenas um endereço, que sempre será uma posição da memória ou valor imediato.

Exemplos de possíveis instruções, onde:

Soma o conteúdo do acumulador com o conteúdo do endereço de memória definido na instrução:

Funcionamento (execução):


Carrega conteúdo da memória para o acumulador:

Funcionamento (execução):


Armazena conteúdo do acumulador na memória:

Funcionamento (execução):


Arquitetura Baseada em Acumulador
Arquitetura Baseada em Acumulador


Como a instrução possui apenas um endereço de operando (da memória), a implementação (organização) do processador necessita somente de um barramento:

Formato da Codificação das Instruções

A organização do código da instrução pode ser feito utilizando um campo para a codificação da instrução e outro para o endereço / valor imediato (escolhendo o maior número de bits entre o tamanho desses dois).

opcode Endereço/Imediato
X bits Y bits
MSB bit(X+Y-1) LSB bit 0

MSB: Bit mais significativo (Most Significant Bit).

LSB: Bit menos significativo (Least Significant Bit).

Exemplo: Processador com 16 instruções e endereçamento de 1024 posições de memória.

Se tivermos um total de 16 instruções ou menos, precisaremos de 4 bits (16 = 2^4) para codificar as instruções.

Para endereçar todas as 1024 posições de memória, precisaremos de 10 bits (1024 = 2^10).

O formato das instruções terá 14 bits, divididos em 4 bits para o opcode da instrução e 10 bits para o endereço de memória utilizado.

opcode Endereço/Imediato
4 bits 10 bits
MSB bit 13 LSB bit 0

Vantagens e Desvantagens

Acumulador
Complexidade Hardware Acessos RAM
Acumulador Baixa Muitos

O processador possui uma quantidade “N” de registradores, onde N > 1.

As operações ocorrem entre um registrador e uma posição de memória ou um valor imediato.

O resultado é armazenado no mesmo registrador utilizado como um dos argumentos. Essa é a arquitetura do x86.

Os exemplos abaixo são de possíveis instruções, onde:

Soma o conteúdo de um registrador com o conteúdo do endereço de memória definido na instrução:

Funcionamento (execução):


Carrega conteúdo da memória para um registrador:

Funcionamento (execução):


Armazena conteúdo de um registrador na memória:

Funcionamento (execução):


Arquitetura Baseada em Registradores e Memória
Arquitetura Baseada em Registradores e Memória

Questão:

Quantos barramentos seriam necessários para implementar essa arquitetura?

Como a instrução possui um endereço para o registrador e outro para o operando (da memória), a implementação (organização) do processador necessita de dois barramentos:

  • O barramento de endereços da RAM, constituído pelos bits 11 até 0 do imediato.

  • O barramento de endereços do banco de registradores, constituído pelos bits 13 e 12 da instrução.

Formato da Codificação das Instruções

Como visto anteriormente, precisamos de um campo para a codificação da instrução.

E, como temos dois argumentos, o registrador e a posição de memória (ou um valor imediato), precisamos de dois campos para definí-los.

opcode Registrador Endereço/Imediato
X bits Y bits Z bits
MSB bit(X+Y+Z-1) LSB bit 0

MSB: Bit mais significativo (Most Significant Bit).

LSB: Bit menos significativo (Least Significant Bit).

Exemplo:

Temos um processador com 32 instruções, 8 registradores e endereçamento de 2048 posições de memória.

Se tivermos um total de 32 instruções ou menos, precisaremos de 5 bits (32 = 2^5) para codificar as 32 instruções.

Para definir qual registrador utilizar, precisaremos de 3 bits (8 = 2^3).

Para endereçar todas as 2048 posições de memória, precisaremos de 11 bits (2048 = 2^11).

O formato das instruções terá 19 bits, divididos em:

A codificação poderia ser:

opcode Registrador Endereço/Imediato
5 bits 3 bits 11 bits
MSB bit 18 LSB bit 0

Porém, nada impede que a codificação seja:

opcode Endereço/Imediato Registrador
5 bits 11 bits 3 bits
MSB bit 18 LSB bit 0

Ou mesmo:

Registrador Endereço/Imediato opcode
3 bits 11 bits 5 bits
MSB bit 18 LSB bit 0

Ou qualquer outra possível combinação.

Vantagens e Desvantagens

Registrador-Memória
Complexidade Hardware Acessos RAM
Registrador-Memória Média Médio

Essa arquitetura é chamada de registrador-registrador ou load-store.

As operações só ocorrem entre registradores e os valores para esses registradores devem ser carregados da memória (ou imediato) através de uma instrução específica.

O resultado é armazenado em um registrador definido e pode ser guardado na memória usando uma instrução específica.

Exemplos:

Os exemplos abaixo são de possíveis instruções, onde:

Soma o conteúdo de dois registradores e o resultado armazenado em um terceiro registrador:

Note que podemos usar para os três registradores o mesmo registrador: R1 = R1 + R1

Funcionamento (execução):


Carrega conteúdo da memória para um registrador:

Funcionamento (execução):


Armazena conteúdo de um registrador na memória:

Funcionamento (execução):


Arquitetura Baseada em Registradores de Uso Geral
Arquitetura Baseada em Registradores de Uso Geral


Temos, nessa arquitetura, dois tipos de instruções diferentes:

Como as instruções que executam operações utilizam três endereços (dos registradores), a implementação (organização) do processador necessita de três barramentos.


Formato da Codificação das Instruções

Precisamos de um campo para a codificação da instrução.

E, como temos dois ou três argumentos, precisaremos de dois formatos para as instruções.

Formato das Instruções Lógicas e Aritméticas

Precisamos do opcode da instrução e três endereços para os registradores. Portanto, precisamos de quatro campos para definí-los.

opcode Registrador A Registrador B Registrador C
X bits Y bits Y bits Y bits
MSB bit (X+3Y-1) LSB bit 0

MSB: Bit mais significativo (Most Significant Bit).

LSB: Bit menos significativo (Least Significant Bit).

Exemplo:

Temos um processador com 64 instruções, 32 registradores e endereçamento de 4096 posições de memória.

Se tivermos um total de 64 instruções ou menos, precisaremos de 6 bits (64 = 2^6) para codificar as 64 instruções.

Para definir quais registradores utilizar, precisaremos de 5 bits (32 = 2^5) para cada registrador.

O formato das instruções terá, no mínimo, 21 bits, divididos em:

A codificação poderia ser:

opcode Registrador A Registrador B Registrador C
6 bits 5 bits 5 bits 5 bits
MSB bit 20 LSB bit 0

Para as instruções do tipo: A = B <operação> C.


Formato das Instruções de Acesso à Memória (carga ou armazenamento)

Precisamos do opcode da instrução e um endereço para o registrador e outro para a posição de memória (ou imediato). Portanto, precisamos de três campos para definí-los.

opcode Registrador A Endereço/Imediato
X bits Y bits Z bits
MSB bit (X+Y+Z-1) LSB bit 0

Exemplo:

Para o mesmo processador do exemplo anterior:

Para as 64 instruções precisaremos de 6 bits.

Para definir o registrador utilizado, precisaremos de 5 bits.

Para o endereço da posição de memória, precisaremos de 13 bits (4096 = 2^13)

O formato das instruções terá, no mínimo, 24 bits, divididos em:

A codificação poderia ser:

opcode Registrador A Memória/Imediato
6 bits 5 bits 13 bits
MSB bit 23 LSB bit 0

Para as instruções do tipo:


Formato Final da Codificação das Instruções

O formato final precisa contemplar os dois formatos definidos anteriormente, ou seja, precisamos utilizar o número de bits para a maior representação entre os dois formatos.

Utilizando os exemplos anteriores, teremos 24 bits para as instruções de acesso à memória:

opcode Registrador A Memória/Imediato
6 bits 5 bits 13 bits
MSB bit 23 LSB bit 0

Para as instruções lógicas e aritméticas, como tínhamos 21 bits, faremos a definição da quantidade de bits pelo teto dos dois formatos:

opcode Registrador A Registrador B Registrador C Reservado
6 bits 5 bits 5 bits 5 bits 3 bits
MSB bit 23 LSB bit 0

Onde o campo reservado pode conter 3 bits com valor ‘0’ para facilitar a montagem das instruções pelo assembler.

Vantagens e Desvantagens

Comparativo das Três Arquiteturas
Código Complexidade Hardware Acessos RAM Desempenho
Acumulador Potencialmente Mais Longo Baixa Muitos Baixo
Registrador-Memória Médio Média Médio Médio
Registrador-Registrador Potencialmente Mais Curto Alta Poucos Alto

Também conhecida como arquitetura com zero endereços. É a arquitetura utilizada no processador da disciplina “Elementos de Sistemas”

Como essa arquitetura foi estudada em “Elementos de Sistemas”, não nos aprofundaremos nela.

Os operandos (argumentos) estão armazenados na pilha, nas posições do ponteiro da pilha e na posição anterior.

A operação (instrução) retira os argumentos da pilha e acerta o ponteiro da pilha.

A operação é executada e o resultado é escrito no topo da pilha.

Exemplos:

A soma de dois valores é dada por:

Note que a instrução que executa a operação não define nenhum endereço para os argumentos.


Arquitetura Baseada em Pilha
Arquitetura Baseada em Pilha

Responder o quiz de participação, no blackboard, em:

Conteúdos > Participação > Aula_6_Quiz-P1



Atividade: Aula Estúdio


Ferramentas