Buscar

06 - Processador controle II

Prévia do material em texto

Arquitetura e Organização de 
Computadores
O Processador: controle
Parte II
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
Uma Implementação multiciclo
 Implementação multiciclo
 Cada instrução dividida em etapas correspondentes
às operações das unidades funcionais necessárias
 Cada etapa na execução levará 1 ciclo de clock
 Uma unidade funcional pode ser usada mais de 1 vez
por instrução, desde que seja usada em diferentes
ciclos de clock
 Unidade funcionais podem ser compartilhadas,
reduzindo o hardware
2
Uma Implementação multiciclo
 Visão alto nível do caminho de dados
multiciclo
3
Uma Implementação multiciclo
 Principais diferenças da implementação
multiciclo
 Uma única unidade de memória para dados e
instruções
 Uma única ALU, em vez de uma ALU e 2 somadores
 Um ou mais registradores são adicionados após cada
unidade funcional para conter a saída dessa
unidade até o valor ser usado em um ciclo de clock
subsequente
 No final de um ciclo de clock, todos os dados
usados nos ciclos subsequentes precisam ser
armazenados em um elemento de estado
4
Uma Implementação multiciclo
 Dados usados pelas instruções subsequentes
são armazenados em um dos elementos de
estado visíveis ao programador: o banco de
registradores, o PC ou a memória
 Registradores temporários acrescentados
 Reg. de instrução (IR) e reg. de dados da memória
(MDR) para salvar a saída da memória
 Os reg. A e B para conter os valores vindos do banco
de registradores antes da ALU
 O reg. ALUOut contém a saída da ALU
5
Uma Implementação multiciclo
 Todos os registradores exceto o IR contém
dados apenas entre um par de ciclos e,
portanto, não precisarão de um sinal controle
de escrita
 Com as unidades funcionais compartilhadas é
preciso incluir outros multiplexadores e espandir
os já existentes
 Substituir as 3 ALUs por uma só
6
Uma Implementação multiciclo
 Manipular as entradas adicionais exige 2
mudanças
1. Um multiplexador para escolher entre A e PC para a
1ª entrada da ALU
2. O multiplexador da 2ª entrada da ALU deve
acrescentar mais 2 valores para serem escolhidos: a
constante 4 e o campo offset com sinal estendido e
deslocado
7
Uma Implementação multiciclo
 Caminho de dados multiciclo MIPS
8
Uma Implementação multiciclo
 MIPS multiciclo com linhas de controle
9
Uma Implementação multiciclo
 Com a instrução jump e branch, há 3 origens
possíveis para o valor a ser escrito no PC
1. A saída da ALU (PC+4); esse valor deve ser
armazenado diretamente no PC
2. O registrador ALUOut, que é onde armazenaremos o
endereço de desvio após ele ser calculado
3. Os 26 bits menos significativos do IR deslocados de 2
à esquerda e concatenado com os 4 bits mais
significativos do PC incrementado, que é a origem
quando a instrução é um jump
10
Uma Implementação multiciclo
 O PC é escrito incondicionalmente e
condicionalmente
 Durante um incremento normal e para jumps, o PC é
escrito incondicionalmente
 Se a instrução é um desvio condicional, o PC
incrementado é substituído pelo valor em ALUOut
apenas se os 2 registradores designados forem iguais
 Nossa implementação usa 2 sinais de controle
separados
 PCWrite que causa a escrita incondicional no PC
 PCWriteCond que causa a escrita condicional se a
condição de desvio também for verdadeira
11
Uma Implementação multiciclo
12
13
Nome do sinal Efeito quanto inativo Efeito quanto ativo
RegDst O número do registrador destino para a 
entrada Registrador para escrita vem o 
campo rt
O número do registrador destino para a 
entrada Registrador para escrita vem do 
campo rd
RegWrite Nenhum O registrador de uso geral selecionado pelo 
no. na entrada Registrador para escrita é 
escrito com o valor da entrada Dados
ALUSrcA O 1º operando da ALU é o PC O 1º operando da ALU vem do reg. A
MemRead Nenhum O conteúdo da mem. no local 
especificado pela entrada Endereço é 
colocado na saída Dados da mem.
MemWrite Nenhum O conteúdo da mem. no local 
especificado pela entrada Endereço é 
substituído pelo valor na entrada Dados 
para escrita
MemtoReg O valor enviado para a entrada Dado do 
banco de registradores vem de ALUOut
O valor enviado para a entrada Dado do 
banco de registradores vem de MDR 
IorD O PC é usado para fornecer o endereço 
para unidade de mem.
ALUOut é usado para fornecer o endereço 
para unidade de mem.
IRWrite Nenhum A saída da mem. é escrita no IR
PCWrite Nenhum O PC é escrito; a origem é controlada por 
PCSource
PCWriteCond Nenhum O PC é escrito se a saída Zero da ALU 
também estiver ativa
Ações dos sinais de controle de 1 bit
14
Nome do sinal Valor (Binário) Efeito
ALUOp 00 A ALU realiza uma operação de adição
01 A ALU realiza uma operação de subtração
10 O campo funct da instrução determina a operação da 
ALU
ALUSrcB 00 A 2ª. entrada da ALU vem do reg. B
01 A 2ª. entrada da ALU é a constante 4
10 A 2ª. entrada da ALU são os 16 bits menos significativos 
com sinal estendido do IR 
11 A 2ª. entrada da ALU são os 16 bits menos significativos 
com sinal estendido do IR deslocados de 2 bits para a 
esquerda
PCSource 00 A saída da ALU (PC+4) é enviada ao PC para escrita
01 O conteúdo de ALUOUt (endereço de destino de 
desvio) é enviado ao PC para escrita
10 O endereço de destino do jump (IR[25:0]) deslocado de 
2 bits para esquerda e concatenado com PC+4[31:28] é 
enviado ao PC para escrita
Ações dos sinais de controle de 2 bit
Uma Implementação multiciclo
 Agora podemos olhar o que deve acontecer
em cada ciclo de clock da execução
multiciclo
 Cada instrução MIPS precisa de 3 a 5 das
etapas a seguir
1. Etapa de busca da instrução
 Buscar a instrução da memória e calcular o
endereço da próxima instrução sequencial
IR <= Memória[PC];
PC <= PC + 4;
15
Uma Implementação multiciclo
1. Etapa de busca da instrução
 Para implementar esta etapa, precisamos ativar os
sinais de controle MemRead e IRWrite e colocar IorD
em 0 para selecionar o PC como origem do
endereço
 Para incrementar PC em 4 precisamos colocar o
sinal ALUSrcA em 0, o sinal ALUSrcB em 01 e ALUOp
em 00
 Para atualizar PC precisamos colocar PCSource em
00 e ativa PCWrite
 O incremento de PC e o acesso à memória podem
ocorrer em paralelo
16
Uma Implementação multiciclo
2. Etapa de decodificação e busca de reg.
 Se a instrução tiver 2 registradores como entrada, eles
estarão sempre nos campos rs e rt, se a instrução for um
desvio, o offset será sempre os 16 bits menos significativos:
A <= Reg[IR[25:21]];
B <= Reg[IR[20:16]];
ALUOut <= PC + (estende-sinal (IR[15-0]) << 2);
 Isso exige colocar ALUSrcA em 0 (PC enviado para ALU)
 ALUSrcB em 11(offset de sinal estendido enviado para ALU)
 ALUOp em 00 (ALU realiza soma)
 Acesso ao banco de registradores e o cálculo do destino
do desvio ocorrem em paralelo
17
Uma Implementação multiciclo
3. Execução, cálculo do endereço de memória
ou conclusão do desvio
 Especificamos a ação a ser tomada de acordo com
a classe de instrução
 Referência à memória
ALUOut <= A + estende-sinal(IR[15:0]);
 Colocar ALUSrcA em 1 (1ª entrada da ALU seja A)
 ALUSrcB em 10 (sinal estendido seja a 2ª entrada da ALU)
 ALUOp em 00 (fazendo a ALU ser somada)
18
Uma Implementação multiciclo
3. Execução, cálculo do endereço de memória
ou conclusão do desvio
 Especificamos a ação a ser tomada de acordo com
a classe de instrução
 Instrução lógica ou aritmética (tipo R)
ALUOut <= A op B;
 ALUSrcA em 1 (1ª entrada da ALU é A)
 ALUSrcBem 00 (2ª entrada da ALU é B)
 ALUOp em 10 (o campo funct é usado para determinar as
definições do sinal de controle da ALU)
19
Uma Implementação multiciclo
3. Execução, cálculo do endereço de memória
ou conclusão do desvio
 Especificamos a ação a ser tomada de acordo com
a classe de instrução
 Desvio
if (A == B) PC <= ALUOut;
 ALUSrcA em 1 (1ª entrada da ALU é A)
 ALUSrcB em 00 (2ª entrada da ALU é B)
 ALUOp em 01 (fazendo a ALU subtrair)
 PCWriteCond em 1 (para atualizar PC se a saída Zero da
ALU estiver ativa)
 PCSource em 01 (o valor escrito no PC virá de ALUOut, que
contém o endereço de destino do desvio do ciclo anterior
20
Uma Implementação multiciclo
3. Execução, cálculo do endereço de memória
ou conclusão do desvio
 Especificamos a ação a ser tomada de acordo com
a classe de instrução
 Jump
PC <= {PC[31:28], (IR[25:0], 2’00)};
 PCSource é atualizado para direcionar o endereço do jump
para o PC
 PCWrite em 1
21
Uma Implementação multiciclo
4. Etapa de acesso à memória ou conclusão de
instrução tipo R
 Referência à memória
MDR <= Memória[ALUOut];
ou
Memória[ALUOut] <= B;
 Para LOAD
 MemRead em 1
 IorD em 1 (endereço de mem. vem da ALU e não do PC)
 Para STORE
 MemWrite em 1
22
Uma Implementação multiciclo
4. Etapa de acesso à memória ou conclusão de
instrução tipo R
 Instruções lógicas e aritméticas (tipo R)
Reg[IR[15:11]] <= ALUOut;
 RegDst em 1(usar o campo rd com entrada do
banco de registrados a ser escrita)
 RegWrite em 1
 MemtoReg em 0 (saída da ALU seja escrita, em vez
da saída de dados da memória)
23
Uma Implementação multiciclo
5. Etapa de conclusão da leitura da memória
 Os loads são completados escrevendo novamente o
valor da memória
Reg[IR[20:16]] <= MDR;
24
Resumo das etapas
25
Etapa
Ação para 
instruções tipo R
Ação para 
instruções de 
acesso à mem.
Ação para 
desvios
Ação para 
jumps
Busca instrução IR <= Memória[PC];
PC <= PC + 4;
Decodificação da 
instrução e busca 
dos registradors
A <= Reg[IR[25:21]];
B <= Reg[IR[20:16]];
ALUOut <= PC + (estende-sinal (IR[15-0]) << 2);
Execução, cálculo 
do endereço ou 
conclusão do 
desvio/jump
ALUOut <= A op B; ALUOut <= A + 
estende-
sinal(IR[15:0]);
if (A == B) PC <= 
ALUOut;
PC <= {PC[31:28], 
(IR[25:0], 2’00)};
Acesso à memória 
ou conclusão de 
instrução tipo R
Reg[IR[15:11]] <= 
ALUOut;
MDR <=
Memória[ALUOut];
ou
Memória[ALUOut]
<= B;
Conclusão da 
leitura da 
memória
Reg[IR[20:16]] <= 
MDR;
Definindo o controle
 Agora que determinamos quais são os sinais de
controle e quando eles precisam ser ativados,
podemos implementar a unidade de controle
 A 1ª técnica é baseada em máquina de estados
finitos
 A 2ª técnica, chamada microprogramação, usa uma
representação de programação para o controle
26
Definindo o controle
 Uma máquina de estados consiste em um
conjunto de estados e diretrizes sobre como
mudar de estado
 As diretrizes são definidas por uma função de
próximo estado, que mapeia o estado atual e
as entradas para um novo estado
 A implementação de uma máquina de
estados finitos em geral considera que todas as
saídas que não são explicitamente ativadas
estão inativadas
27
Definindo o controle
 O controle de estados finitos basicamente
corresponde às 5 etapas de execução
28
Início
Busca/decodificação da instrução e busca
dos registrdores
Instruções de 
acesso a memória
Instruções tipo R Instruções de branch Instruções de jump
Definindo o controle
 Busca e decodificação para todas instruções
29
Definindo o controle
 Instruções
referência à
memória
30
Definindo o controle
 Instruções do tipo R
31
Definindo o controle
 Instruções de branch
32
Definindo o controle
 Instruções de jump
33
Definindo o
controle
34
Definindo o controle
 Arquitetura do controle
35
Exceções
 Uma das partes mais difíceis do controle é
implementar exceções e interrupções
 Uma exceção é um evento inesperado dentro do
processador; o overflow aritmético é um exemplo
 Uma interrupção é um evento que também causa
uma mudança inesperada no fluxo de controle mas
vem de fora do processador; interrupções são usadas
pelos dispositivos de E/S para se comunicarem com o
processador
36
Exceções
 Exemplos de interrupções/exceções
37
Tipo de evento Origem Terminologia MIPS
Requisição de dispositivo de E/S Externa Interrupção
Chamada ao SO pelo programa de usuário Interna Exceção
Overflow aritmético Interna Exceção
Uso de uma instrução indefinida Interna Exceção
Mal-funcionamento do hardware Ambas Exceção ou 
interrupção
Exceções
 Como as exceções são tratadas
 Os 2 tipos de exceções que nossa implemetação
atual pode gerar são a execução de uma instrução
indefinida e um overflow aritmético
 A ação básica é salvar o endereço da instrução
problemática no contador de programa para
exceções (EPC) e transferir o controle para o SO
 Para que o SO trate a exceção, ele precisa conhecer
o motivo da exceção, além da instrução que causou
 O método usado no MIPS é incluir um registrador de
status (Cause)
 Um outro método é usar interrupções vetorizadas
38
Exceções
 Para os 2 tipos de exceções
39
Tipo de exceção Endereço do vetor de 
exceções (em hexa)
Instrução indefinida C000 0000hex
Overflow aritmético C000 0020hex
Exceções
 No MIPS precisamos acrescentar 2 registradores
 EPC: reg. de 32 bits usado para conter o endereço
da instrução afetada (esse reg. é necessário mesmo
quando as exceções são vetorizadas)
 Cause: usado para registrar a causa da exceção. No
MIPS, esse reg. possui 32 bits, onde o bit menos
significativo codifica as duas origens de exceção
possíveis: instrução indefinida = 0 e overflow = 1
 Precisamos incluir os sinais de controle EPCWrite e
CauseWrite para fazer com que os novos
registradores sejam escritos
 Precisamos de 1 bit (IntCause) para definir o bit
menos significativo do reg. Cause
40
Exceções
 Finalmente, precisaremos ser capazes de
escrever no PC o endereço de exceção, que é
o ponto de entrada do SO para o tratamento
da exceção
 No MIPS, esse endereço é 8000 0180hex
 Então PCSource pode ser colocado em 11bin
para selecionar esse valor
 Como PC é incrementado em 4, para salvar o
endereço da instrução problemática em EPC,
antes deve ser subtraído 4 do valor de PC
41
Exceções
42
Exceções
43
Verifique você mesmo
1. Verdadeiro ou falso: como a instrução de
jump não depende dos valores dos
registradores ou do cálculo do endereço de
destino do desvio, ela pode ser completada
durante o segundo estado, em vez de esperar
até o terceiro
2. Verdadeiro, falso ou talvez: o sinal de controle
PCWriteCond pode ser substituído por
PCSource[0].
44
Respostas
1. Falso
2. Talvez: se o sinal PCSource[0] estiver sempre
com valor zero quando ele é um don’t care
(que é a maioria dos estados), então, ele será
idêntico a PCWriteCond.
45
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.
46

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes