Você está na página 1de 50

Prof.

Msc Vagner Scamati


Disciplina: Organização e Arquitetura de Computadores
Agenda
• Arquitetura do MIPS;

• MIPS Monociclo;
Arquitetura do MIPS
• Instruções
• Todas as instruções têm 32 bits;
• Todas têm opcode de 6 bits;
• O modo de endereçamento é codificado juntamente com o opcode;
Arquitetura do MIPS
• Instruções formato R: add, sub, or, and
• opcode = 0;
• “funct” define a operação a ser feita pela ALU;
• “shamt” (shift amount) é usado em instruções de deslocamento;
• rd é o registrador destino;

• Simbólico (exemplo): add $s1,$s2,$s3 ($s1 = $s2 + $s3);


Arquitetura do MIPS
• Instruções formato I: load word (lw) e store word (sw)
• load word (lw): opcode = 35;
• store word (sw): opcode = 43;
• rs é o registrador base para o deslocamento;
• rt é o registrador fonte (caso sw) ou desino (caso lw);

• Simbólico (exemplo):
• lw $s1, deslocam($s2) ($s1 = Mem[$s2 + deslocam]);
• sw $s1, deslocam($s2) (Mem[$s2 + deslocam] = $s1)
Arquitetura do MIPS
• Instrução formato I: Desvio Condicional (beq: branch on equal)
• Opcode = 4;
• Campo deslocamento usado para calcular o endereço-alvo;
• Se o conteúdo do registrador cujo endereço está no campo rs for igual
ao conteúdo do registrador cujo endereço está em rt, então salta para a
posição endereço+PC+4;

• Simbólico (exemplo):
• beq $s1, $s2, deslocam (if ($s1 == $s2) then PC = PC+4+deslocam)
Arquitetura do MIPS
• Instrução formato J: Desvio Incondicional (j: jump)
• Opcode = 2;
• Campo deslocamento usado para calcular o endereço-alvo;

• Simbólico (exemplo):
• j endereço (PC = endereço)
Arquitetura do MIPS
• Registradores

• 32 registradores de propósito geral de 32 bits;


• $0, $1, . . . , $31;;
• operações inteiras;
• $0 tem sempre valor 0;
• $31 guarda endereço de retorno de sub-rotina;
Arquitetura do MIPS
• Tipos de Dados

• Dados inteiros disponíveis em instruções load e store;


• bytes;
• meias palavras de 16 bits;
• palavras de 32 bits;
• Dados inteiros disponíveis em instruções aritméticas e lógicas;
• meias-palavras de 16 bits (estendidos para 32 bits);
• palavras de 32 bits;
Arquitetura do MIPS
• Instruções a serem implementadas

• Instruções de referência à memória (tipo I):


• Load word (lw) e store word (sw);

• Instruções aritméticas e lógicas (tipo R):


• (add, sub, and, or);

• Instruções de salto:
• Branch on equal (beq) (tipo I) e jump (j) (tipo J);
MIPS Monociclo
MIPS Monociclo
• Bloco Operativo Monociclo:
• Nesta primeira implementação iremos considerar que:
• Qualquer instrução é executada em um único ciclo de relógio;
• O período do relógio será longo o suficiente para acomodar
qualquer instrução;
• Na verdade, o período do relógio será função da instrução
mais demorada (gargalo!);
MIPS Monociclo
• Caminho de Dados (datapath)
• Bloco de Controle
MIPS Monociclo
MIPS Monociclo
• Bloco Operativo Monociclo:

• O PC contém o endereço da instrução


em execução;

• O endereço da próxima instrução é


obtido pela soma de 4 posições ao
contador de programa;
• A instrução lida é usada por outras
porções do bloco operativo;
MIPS Monociclo
• Bloco Operativo Monociclo:
• Elementos Necessários para a Busca da Instrução:
• A memória onde estão armazenadas as instruções;
• O contador de programa (PC) para armazenar o endereço da
instrução;
• Um somador para calcular o endereço da próxima instrução;
MIPS Monociclo – Caminho de Dados
MIPS Monociclo – Caminho de Dados
Instruções tipo R
MIPS Monociclo - Caminho de Dados
• Bloco Operativo Monociclo:
• Elementos Necessários para Execução de Instruções tipo R:
• Um banco de registradores para armazenar os operandos e o
resultado das operações;
• Uma Unidade Lógica/Aritmética (ULA) que será utilizada para
realizar as operações;
Arquitetura do MIPS - Caminho de Dados
• Bloco Operativo Monociclo:
• Instruções formato R: add, sub, or, and
• opcode = 0;
• “funct” define a operação a ser feita pela ALU;
• “shamt” (shift amount) é usado em instruções de deslocamento;
• rd é o registrador destino;

• Simbólico (exemplo): add $s1,$s2,$s3 ($s1 = $s2 + $s3);


MIPS Monociclo - Caminho de Dados
• Bloco Operativo Monociclo:
• A instrução (fornecida pelo hardware de busca de instruções) contém o
endereço de três registradores;
• Dois destes registradores são lidos e passados para a ULA realizar a
operação;
• O resultado é armazenado em um terceiro registrador;
• O controle da ULA determina a operação que será realizada (a partir do
campo FUNCT da instrução);
MIPS Monociclo – Caminho de Dados
Instruções tipo I
MIPS Monociclo - Caminho de Dados
• Bloco Operativo Monociclo:
• Elementos Necessários para Executar lw e sw;
• Uma memória de dados;
• Um banco de registradores (já mostrado);
• Uma ULA (já mostrada);
• Um módulo de extensão de sinal;
Arquitetura do MIPS - Caminho de Dados
• Instruções formato I: load word (lw) e store word (sw)
• load word (lw): opcode = 35;
• store word (sw): opcode = 43;
• rs é o registrador base para o deslocamento;
• rt é o registrador fonte (caso sw) ou desino (caso lw);

• Simbólico (exemplo):
• lw $s1, deslocam($s2) ($s1 = Mem[$s2 + deslocam]);
• sw $s1, deslocam($s2) (Mem[$s2 + deslocam] = $s1)
MIPS Monociclo
• Bloco Operativo Monociclo:
• Combinando os Elementos para uma Leitura na Memória (lw);
• O processo de leitura é semelhante ao de escrita;
• A diferença básica é a existência de um caminho para escrever o
valor lido no banco de registradores;
MIPS Monociclo - Caminho de Dados
• Bloco Operativo Monociclo:
• Combinando os Elementos para uma Escrita na Memória (sw);
• O endereço de escrita é obtido pela soma de um registrador de base
(registrador 1) com um deslocamento de 16 bits estendido para 32
bits;
• O registrador 2 é escrito na memória;
MIPS Monociclo - Caminho de Dados
• Bloco Operativo Monociclo:
• Elementos Necessários Implementar um Branch on Equal;
• Comparar dois registradores usando a ULA para fazer uma subtração;
• O endereço de desvio é (PC+4)+deslocamento (mais um somador);
• O deslocamento contido na instrução deve ser estendido para 32 bits;
• Uma multiplicação por 4 é necessária, pois a memória de instruções
utiliza 4 bytes para cada instrução;
Arquitetura do MIPS - Caminho de Dados
• Instrução formato I: Desvio Condicional (beq: branch on equal)
• Opcode = 4;
• Campo deslocamento usado para calcular o endereço-alvo;
• Se o conteúdo do registrador cujo endereço está no campo rs for igual
ao conteúdo do registrador cujo endereço está em rt, então salta para
a posição endereço+PC+4;

• Simbólico (exemplo):
• beq $s1, $s2, deslocam (if ($s1 == $s2) then PC = PC+4+deslocam)
MIPS Monociclo - Caminho de Dados
• Bloco Operativo Monociclo:
• Elementos Necessários Implementar um Branch on Equal;
• Juntando os elementos;
MIPS Monociclo - Caminho de Dados
• Compondo Bloco Operativo Monociclo:
• Nesta versão de bloco operativo qualquer instrução executa em um ciclo
de relógio;
• Isto significa que o período do relógio deverá ser suficientemente longo
para acomodar a instrução mais demorada;
• Durante a execução de uma instrução qualquer, cada unidade funcional
só pode ser usada uma única vez;
• Por isso necessitamos de uma memória de instruções e outra de dados;
• Ao combinarmos as porções de bloco operativo vistas anteriormente,
veremos que muitas unidades funcionais podem ser compartilhadas;
MIPS Monociclo - Caminho de Dados
• Bloco Operativo Monociclo:
• Estimativa da Frequência Máxima de Funcionamento;
• Ao final de cada ciclo de relógio o PC é carregado com um novo valor;
• Mudança no valor do PC se propaga através de uma grande lógica
combinacional;
• memória de instruções => banco de registradores => ULA =>
memória de dados => banco de registradores;
• Período do ciclo de relógio deve ser maior do que máximo atraso de
propagação através desta lógica combinacional;
MIPS Monociclo - Caminho de Dados
• Bloco Operativo Monociclo: • memórias: 4 ns;
• Exemplo de cálculo • ULA: 2 ns;
• banco de registradores: 1 ns;
• Supondo os seguintes atrasos: • demais componentes: atraso desprezível;

• Período do ciclo de relógio deve ser maior do que 12 ns (cerca de 83 MHz);


MIPS Monociclo – BLOCO DE CONTROLE
MIPS Monociclo – BLOCO DE CONTROLE
• Bloco Operativo Monociclo:
• Capaz de Realizar instruções tipo R, lw, sw e beq;
MIPS Monociclo – BLOCO DE CONTROLE
• O controle da ULA
• A ULA tem 3 entradas de controle (8 combinações possíveis);
• Somente 5 combinações são usadas;
MIPS Monociclo – BLOCO DE CONTROLE
• O controle da ULA

• Uso da ULA
• lw/sw: adição (para calcular o endereço de acesso à memória);
• beq: subtração (para testar se os registradores Rs e Rt são iguais);
• Instruções tipo R: depende do campo “funct”, podendo ser AND,
OR, adição, subtração ou set on less than;
MIPS Monociclo – BLOCO DE CONTROLE
• O controle da ULA
• A ULA terá um controle próprio, separado do bloco de controle principal
(e portanto, menos complexo e mais rápido);
• Este controle tem como entradas:
• Os 6 bits do campo “funct”;
• 2 bits vindos do bloco de controle global (“ULAOp”), que serve para
identificar a qual classe a instrução a ser executada pertence;
MIPS Monociclo – BLOCO DE CONTROLE
• O controle da ULA
• Correspondência entre “funct” e “ULAOp” com “controle da ULA”;
MIPS Monociclo – BLOCO DE CONTROLE
• Bloco Operacional + o controle da ULA
MIPS Monociclo – BLOCO DE CONTROLE
• Sinais de Controle
• Adicionando o Bloco de Controle Principal
MIPS Monociclo – BLOCO DE CONTROLE
• Execução de Instrução do tipo R
• Seja uma instrução tipo R, como por exemplo add $t1, $t2, $t3;
• Podemos imaginar que essa instrução é executada em 4 etapas:
1. Busca da instrução (na memória de instruções) e incremento do PC;
2. Leitura de dois registradores (no caso, $t2 e $t3, ou Rs e Rt) e geração
dos sinais de controle para o resto do bloco operativo(decodificação da
instrução);
3. Operação na ULA;
4. Escrita (do resultado da operação realizada na ULA) no registrador
destino ($t1 ou Rd);
MIPS Monociclo – BLOCO DE CONTROLE
• Instrução do tipo R – Sinais de Controle
MIPS Monociclo – BLOCO DE CONTROLE
• Execução de Instrução lw
• Seja a instrução load word, lw $t1, deslocamento($t2);
• Podemos imaginar que esta instrução é executada em 5 etapas:
1. Busca da instrução (na memória de instruções) e incremento do PC;
2. Leitura de dois registradores (no caso, $t1 e $t2, ou Rs e Rt) e geração
dos sinais de controle para o resto do bloco operativo(decodificação da
instrução). Apenas o registrador $t2 (Rs)interessa, pois é o registrador-
base;
3. Cálculo do endereço usando a ULA (adição);
4. Acesso à memória de dados para uma leitura (endereço = resultado da
ULA);
5. Escrita (do valor lido da mem ória de dados) no registrador destino($t1,
que neste caso correponde ao campo Rt);
MIPS Monociclo – BLOCO DE CONTROLE
• Instrução lw: sinais de controle
MIPS Monociclo – BLOCO DE CONTROLE
• Execução de uma Instrução beq
• Seja a instrução de desvio condicional, beq $t1, $t2, deslocamento;
• Podemos imaginar que esta instrução é executada em 3 etapas:
1. Busca da instrução (na memória de instruções) e incremento do PC;
2. Leitura de dois registradores (no caso, $t1 e $t2, ou Rs e Rt) e
geração dos sinais de controle para o resto do bloco operativo
(decodificação da instrução);
3. Cálculo da subtração entre os registradores $t1 e $t2 (Rs e
Rt)usando a ULA (adição). O valor na saída “zero” da ULA é usado para
decidir se o PC será atualizado com PC+4 ou com o endereço-alvo do
desvio condicional;
MIPS Monociclo – BLOCO DE CONTROLE
• Instrução beq: sinais de controle
MIPS Monociclo – BLOCO DE CONTROLE
• Projeto do Bloco de Controle Principal
• Valores dos Sinais de Controle para as Instruções R, lw, sw e beq;
MIPS Monociclo – BLOCO DE CONTROLE
• Projeto do Bloco de Controle Principal
• Valores do campo “opcode” para as Instruções R, lw, sw e beq;
MIPS Monociclo – BLOCO DE CONTROLE
• Desempenho de maquinas monociclo
• Unidades funcionais utilizadas por cada instrução
MIPS Monociclo – BLOCO DE CONTROLE
• Desempenho de maquinas monociclo
• Tempo de execução de cada instrução (com valores hipotéticos de
atraso para cada etapa)

Você também pode gostar