Buscar

05 - Processador caminho de dados

Prévia do material em texto

Arquitetura e Organização de 
Computadores
O Processador: caminho de dados
Prof. Sílvio Fernandes
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO
DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIA DA COMPUTAÇÃO
1
Introdução
 Uma implementação MIPS básica
 Instruções de referência a memória (lw e sw)
 Instruções lógicas e aritméticas (add, sub, and, or e slt)
 Instruções branch equal (beq) e jump (j)
 Os princípios básicos usados para criação do
caminho de dados de outras instruções são
semelhantes a estas
 Examinando várias estratégias de implementação,
teremos a oportunidade de ver como o conj. Inst.
afeta a velocidade de clock e o CPI da máquina
2
Uma sinopse da implementação
 Muito do que precisa ser feito para
implementar as 3 classes de instruções citadas
antes, é igual
 Para cada instrução
1. Enviar o contador de programa (PC) à memória que
contém o código e buscar a instrução dessa
memória
2. Ler um ou mais registradores, usando campos da
instrução para selecionar os registradores a serem
lidos.
 Em seguida, as ações para completar a
instrução dependem da classe da instrução
3
Uma sinopse da implementação
 Mesmo entre diferentes classes, há algumas
semelhanças
 Todas as classes de instrução (exceto jump), usam a
ALU após a leitura dos registradores
 Após usar a ALU, as ações necessárias para
completar várias classes de instruções diferem
 A figura a seguir mostra uma visão de alto nível
de uma implementação MIPS
4
Uma sinopse da implementação
 Uma visão abstrata da implementação do
subconjunto MIPS
5
Uma sinopse da implementação
 Primeiro, em vários lugares nessa figura, os
dados indo para uma determinada unidade,
estão vindo de duas origens diferentes
 Na prática, essas linhas de dados não podem
simplesmente ser interligadas
 Precisamos adicionar um elemento de escolha:
multiplexador que precisa de um controle que
lhe permita fazer a escolha
 As linhas de controle são definidas
principalmente com base nas informações
extraídas da instrução executada
6
Uma sinopse da implementação
 Segundo, várias das unidades precisam ser
controladas de acordo com o tipo da instrução
 A memória de dados precisa ler em um load e
escrever em um strore
 O banco de registradores precisa ser escrito em uma
instrução de load e em uma lógica ou aritmética
 A ALU precisa realizar uma de várias operações
 Assim como os mux, essas operações são
direcionada por linhas de controle que são definidas
baseadas nos vários campos das instruções
 A figura a seguir inclui 3 multiplexadores e as linhas de
controle
7
Uma sinopse da implementação
8
Uma sinopse da implementação
 Uma unidade de controle que tem a instrução
como entrada é usada para determinar como
definir as linhas de controle para as unidades
funcionais e dois do multiplexadores
 O 3º multiplexador (determina o valor de PC) é
definido com base na saída zero da ALU, que é
usada para realizar a comparação da
instrução beq
 A regularidade e simplicidade do conj. Inst.
MIPS significam que um simples processo de
decodificação pode ser usado para
determinar as linhas de controle
9
Convenções lógicas de projeto
 Unidades funcionais MIPS
 Elementos que operam nos valores dos dados
 Combinacionais: suas saídas dependem apenas das
entradas atuais (ALU)
 Elementos que contêm estado
 Também chamado de elementos de estado
 Contém estado se tiver armazenamento interno
 As entradas necessárias são os valores dos dados a
serem escritos e o clock, que determina quando o
valor dos dados deve ser escrito
 São elementos sequenciais: suas saídas dependem
de suas entradas e do conteúdo do estado interno
10
Convenções lógicas de projeto
 Unidades funcionais MIPS
 Elementos que contêm estado
 Ex: memórias de instruções e dados e registradores
 Usaremos o termo ativo para indicar um sinal
que está logicamente alto e ativar para
especificar que um sinal deve ser determinado
logicamente alto, e inativo ou desativar para
representar o que é logicamente baixo
11
Metodologia de clocking
 Uma metodologia de clocking define quando
os sinais podem ser lidos e quando podem ser
escritos
 Ela é importante para sincronização das leituras
e escritas
 Uma metodologia de sincronização acionada
por transição significa que quaisquer valores
armazenados em um elemento lógico
sequencial são atualizados apenas em uma
transição do clock
12
Metodologia de clocking
 Como apenas os elementos de estado podem
armazenar valores de dados, qualquer
coleção de lógica combinatória precisa ter
suas entradas vindas de um conjunto de
elementos de estado e suas saídas escritas em
um conjunto de elementos de estado
 As entradas são valores escritos em um ciclo de
clock anterior, enquanto as saídas são valores
que podem ser usados em um ciclo de clock
seguinte
13
Metodologia de clocking
 A lógica combinatória, os elementos de estado
e o clock estão intimamente relacionados
14
Metodologia de clocking
 Para simplificar, não foi mostrado um sinal de
controle de escrita quando um elemento de
estado é escrito a cada transição ativa do
clock
 Por outro lado, se um elemento de estado não
for atualizado em cada clock, um sinal de
controla de escrita explícito é necessário
15
Metodologia de clocking
 Essa metodologia permite ler o conteúdo de
um registrador, enviar o valor por meio de
alguma lógica combinatória e escrever nesse
registrador no mesmo ciclo de clock
16
Construindo um caminho de dados
 Vamos examinar os principais componentes
necessários para executar cada classe de
instrução MIPS
17
Construindo um caminho de dados
 Unidade de memória
 Para armazenar as instruções de um programa e
fornecer instruções dado um endereço
 Registrador contador de programa (PC)
 Para conter o endereço da instrução atual
 Somador
 Para incrementar o PC para o endereço da próxima
instrução
18
Construindo um caminho de dados
 Para executar qualquer instrução, precisamos
buscá-la na memória
 Precisamos incrementar PC para a próxima instrução
(4 bytes depois)
19
Construindo um caminho de dados
 Vamos considerar as instruções no formato R
 Todas lêem 2 registradores, realizam uma operação
na ALU com conteúdo dos registradores e escrevem
o resultado
 Os registradores de uso geral de 32 bits são
armazenados em um estrutura chamada
banco de registradores
 Qualquer registrador pode ser lido ou escrito
especificando o número do registrador no banco
 Esse banco contém o estado dos registradores da
máquina
20
Construindo um caminho de dados
 As instruções do tipo R precisam de 3
operandos de registrador, então precisamos ler
2 word de dados do banco de registradores e
escrever uma word de dados no banco
 Para cada word lida: precisamos de 1 entrada no
banco que especifique o número do registrador a ser
lido
 Para cada word escrita: precisamos de 2 entradas -
uma para especificar o número do registrador a ser
escrito e uma para fornecer os dados a serem escritos
 Para escrita ainda é necessário o sinal de controle de
escrita
21
Construindo um caminho de dados
 A ALU e o bando de registradores para
implementar instruções do tipo R
22
Construindo um caminho de dados
 A ALU usa 2 entradas de 32 bits e produz um
resultado de 32 bits, bem como um sinal de 1
bit se o resultado for 0
 O sinal de controle (4 bits) da ALU define a
operação a ser realizada por ela
23
Construindo um caminho de dados
 Instruções load e store possuem o formato
 lw $t1, offset_value ($t2)
 sw $t1, offset_value ($t2)
 O endereço de memória no registrador base$t2 deve ser
somado ao offset de 16 bits com sinal
 O load armazena o resultado em $t1
 O store envia para a memória o valor de $t1
 Precisamos
 do banco de registradores e da ALU
 de uma unidade para estender o sinal do campo offset de
16 para 32 bits
 de uma unidade de memória para ler ou escrever dados
24
Construindo um caminho de dados
 Unidades necessárias para implementar load e
store
25
Construindo um caminho de dados
 A instrução beq possui 3 operandos: 2
registradores comparados para igualdade e 1
offset de 16 bits para calcular o endereço de
destino do desvio
 Beq $t1, $t2, offset
 Precisamos calcular o endereço de destino somando
o campo offset estendido com sinal da instrução
com o PC
26
Construindo um caminho de dados
 Observações das instruções de desvio
 O conjunto de instruções especifica que a base para
o cálculo do endereço de destino é o endereço da
instrução seguinte ao desvio; como calculamos PC+4,
é fácil usar valor como base
 A arquitetura também diz que o campo offset é
deslocado 2 bits para a esquerda de modo que seja
um offset de uma word; esse deslocamento aumenta
a faixa efetiva do campo offset por um fator de
quatro vezes
 Para lidar com isso precisamos deslocar o campo offset de 2
bits
27
Construindo um caminho de dados
 Instrução beq
 Quando a condição é verdadeira (operandos são
iguais), o endereço de destino do desvio se torna o
novo PC e dizemos que o desvio é tomado
 Se os operandos não forem iguais, o PC
incrementado deve substituir o PC atual (como nas
outras instruções); nesse caso, dizemos que o desvio é
não tomado
28
Construindo um caminho de dados
 Caminho de dados para instruções de acesso
a memória e as do tipo R
29
Construindo um caminho de dados
 A instrução jump funciona substituindo os 28
bits menos significativos do PC pelos 26 menos
significativos da instrução deslocados de 2 bits
á esquerda
 Esse deslocamento é realizado simplesmente
concatenando 00 ao offset do jump
30
Construindo um caminho de dados
 Criando um caminho de dados simples
 Depois de vermos os componentes necessários para cada
classe de instruções, podemos combiná-los em um único
caminho de dados e acrescentar o controle
 O caminho de dados pode tentar executar todas as
instruções em um único ciclo de clock
 Isso significa que nenhum recurso do caminho pode ser
usado mais de uma vez por instrução e, portanto, qualquer
elemento necessário mais de uma vez precisa ser
duplicado
 Então, precisamos de uma memória separada para dados
e instruções
 Mas muitos elementos podem ser compartilhados por
diferentes fluxos de instrução (incluindo multiplexadores)
31
Verifique você mesmo
1. O caminho de dados de ciclo único
conceitualmente descrito até aqui precisa ter
memórias de instrução e de dados separadas
porque
a) O formato dos dados e das instruções é diferente no
MIPS, e, portanto, são necessárias diferentes
memórias
b) Ter memórias separadas é menos dispendioso
c) O processador opera em um ciclo e não pode usar
uma memória de porta única para dois acessos
diferentes dentro desse ciclo
32
Verifique você mesmo
2. Verdadeiro ou falso: como o banco de
registradores é lido e escrito no mesmo ciclo
de clock, qualquer caminho de dados MIPS
usando escritas acionadas por transição
precisa ter mais de uma cópia do banco de
registradores.
33
Respostas
 1) a
 2) falso
34
Referências
 PATTERSON, D. A. ; HENNESSY, J.L. Organização 
e projeto de computadores – a interface 
hardware software. 3. ed. Editora Campus, 
2005.
 STALLINGS, W. Arquitetura e organização de 
computadores: projeto para o desempenho. 8. 
ed. Prentice Hall, 2009.
35

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes