Logo Passei Direto
Buscar
Material

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

O Processor 
Sumário 
͍ Introdução 
͍ Caminho da Dados 
͍ Pipeline 
͍ Hazards de Dados e de Controle 
͍ Exceções 
Desempenho 
Contagem de Instruções 
Tempo de Ciclo de Clock 
CPI (no. ciclo 
clock/instrução) 
CPI 
Contagem 
de Instrução Tempo 
de CPU 
(significa o tempo 
que a CPU 
consome 
computando) 
Taxa de 
Clock 
x 
= ____________________ 
Compilador 
Arquitetura do 
Conjunto de 
Instruções 
Processador 
Instrução x ciclo/instrucao 
------- 
 ciclos/segundo (1 Hz = 1 ciclo/s) 
Objetivo 
͍ Entender os princípios e as técnicas utilizadas na 
implementação de um processador 
- caminho de dados 
- unidade de controle 
Implementação MIPS Básica 
͍ Subconjunto do conjunto de instruções MIPS básico 
- instruções de transferência de dados: lw e sw. 
- instruções lógicas e aritméticas: add, sub, and, or e slt. 
- instruções de desvio: beq e j. 
Como o conjunto de instruções determina 
muitos aspectos da implementação? 
Como as diferentes estratégias de 
implementação afetam a velocidade de clock 
e o CPI? 
Torne o caso mais comum mais rápido 
Implementação de 
Instruções 
͍ Etapas comuns para diversas classes de instruções 
1. Buscar a instrução na memória 
2. Ler um ou mais registradores (de acordo com o 
formato da instrução 
͍ As próximas ações dependem da classe da 
instrução 
Execuções Semelhantes 
͍ A simplicidade e a regularidade do conjunto de instruções 
simplifica a implementação 
- mesmo instruções de classes diferente são executadas com 
quase as mesmas ações 
- Exemplo: todas as instruções usam a ALU (exceto jump) 
͍ As execuções necessárias para completar as instruções podem 
ser diferentes: acessar memória ou registrador, incrementar PC em 
4 ou atribuir endereço de desvio, etc. 
͍ OBS.: Contador de programa é um registrador de uma CPU que indica qual é a posição atual na sequência 
de execução de um processo. Ele armazena o endereço da instrução sendo executada ou o endereço da 
próxima instrução. O contador de programa é automaticamente incrementado para cada ciclo de instrução de 
forma que as instruções são normalmente executadas sequencialmente sendo que o contador de programa 
deve ser colocado a zero no inicio da execução do mesmo. 
CPU 
͍ Um CPU é composta basicamente pelos três 
seguintes componentes : 
͍ Unidade lógica e aritmética (ULA ou ALU): executa 
operações lógicas e aritméticas; 
͍ Unidade de controle: decodifica instruções, busca 
operandos, controla o ponto de execução e desvios; 
͍ Registradores: armazenar dados para o 
processamento. 
ULA 
͍ A unidade lógica e aritmética pode realizar diversas 
operações, entre elas: 
͍ Adição Subtração 
͍ Operações lógicas (E, OU, XOR, INVERSÃO) 
͍ Deslocamento (à esquerda e à direita) 
͍ Comparação 
͍ As unidades aritméticas e lógicas mais modernas realizam 
também as operações de multiplicação e divisão. 
͍ As operações são realizadas pela leitura de dois registradores 
fontes do banco de registradores, e com a escrita do resultado 
no registrador de destino. 
Visão abstrata da implementação do subconjunto MIPS com principais 
unidades funcionais e conexões entre elas 
Decodif. instrução 
rs 
rt 
5 bits 
Convenções de 
Lógica Digital 
͍ Tipos de elementos lógicos 
- elemento combinacional (elemento operacional, ex. ALU, porta 
AND) 
- elemento de estado (elemento de memória, ex. registrador ou 
memória) 
͍ Tipos de Sinais 
- sinal de controle (seleção de multiplexador ou operação de uma 
unidade funcional) 
- sinal de dados (informações sobre as quais operam uma unidade 
funcional) 
Metodologia de Clocking 
͍ O método usado para determinar quando os dados 
são válidos e estáveis (em relação ao clock) 
͍ Metodologia de sincronização acionada por 
transição 
- as mudanças de estado ocorrem em uma transição do clock 
- sinal ativo: alto (verdadeiro, 1) 
- sinal inativo: sinal baixo (falso, 0) 
Construindo um 
Caminho de Dados 
͍ Examinar quais os componentes necessários para 
executar cada classe de instrução do MIPS 
- elementos (memória, registrador, somador, ALU) 
- extensão dos barramentos (de dados e controle) 
Buscar uma Instrução 
Buscar uma Instrução 
͍ O processador executa uma instrução em uma série de etapas: 
 – 1. Busca a próxima instrução que está localizada na memória de 
instrução para o registrador ; 
– 2. Atualiza o apontador de instruções (PC) para que ele aponte para 
a próxima instrução a ser executada. 
– 3. Determina o tipo de instrução; 
– 4. Se a instrução faz uso de dados (operandos), determina onde 
estão localizados; 
– 5. Busca os operandos, se houver, para os registradores do 
processador; 
– 6. Executa a instrução; 
– 7. Armazena os resultados nos locais apropriados; 
– 8. Volta ao passo 1 para executar a próxima instrução. 
Instrução do Tipo R 
op rs rt rd shamt func 
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 
operação 
básica 
(opcode) 
primeiro 
operando 
fonte 
segundo 
operando 
fonte 
registrador 
de destino 
quantidade de 
deslocamento (shift 
amount) 
variante da 
operação 
básica 
͍ Ex: add $t2, $t1, $t0 
͍ add, sub, and, or, slt 
͍ Elementos: banco de registradores e uma ALU 
͍ Sinal de controle de escrita no banco de registradores (ativo para 
que a escrita ocorra na transição do clock) 
32 
Identificação dos registradores = no do registrador 
O registrador Zero se ativa (1) se os registradores comparados forem iguais 
Zero é usado para lógica de controle de desvio 
add 
Load e Store 
͍ Ex: lw $t2, offset_value($t0) ; offset de 16 bits é somado 
com registrador base 
͍ Elementos: banco de registradores, ALU, unidade 
de memória e unidade de extensão do sinal 
op rs rt 
6 bits 5 bits 5 bits 16 bits 
operação 
básica 
(opcode) 
registrado
r base 
registrado
r destino 
constante ou endereço 
As unidades necessárias para implementar loads e stores, além do banco de 
Registradores e da ALU, são a unidade de memória de dados e a unidade de 
extensão de sinal. 
1111 1111 1111 1111 (-1 em complemento de 2, representado em 16 bits), a extensão de 
 sinal transforma este vetor em 1111 1111 1111 1111 1111 1111 1111 1111 (-1 em 
complemento de 2, representado em 32 bits). 
Instrução beq 
͍ beq possui 3 operandos, 2 registradores comparadores e 1 offset 
de 16 bits para calcular o endereço de destino do desvio relativo 
ao endereço da instrução desvio. 
͍ Ex: beq $t2, $t1, offset 
͍ offset é deslocado à esquerda em 2 bits e somado a PC+4 
operação de deslocamento de 2 bits para a esquerda (uma vez que o endereço de salto 
especificado é o endereço de uma palavra de 32 bits, que ocupa 4 células de memória). 
͍ Ações necessárias: calcular o endereço de desvio e comparar os 
registradores 
op rs rt 
6 bits 5 bits 5 bits 16 bits 
operação 
básica 
(opcode) 
registrado
r base 
registrado
r destino 
constante ou endereço 
O caminho de dados para um desvio usando a ALU a fim de avaliar a condição de desvio 
e um somador separado para calcular o destino do desvio como a soma do PC 
incrementado. 
Criando um caminho de 
dados 
͍ O caminho de dados mais simples pode tentar 
executar todas as instruções em um único ciclo de 
clock. 
͍ Operações do tipo R e de acesso a memória são 
parecidas, diferenciando-se em: 
- Em R usa-se a ALU com as entradas vindo de 2 registradores, 
já as de memória também usam a ALU para cálculo do 
endereço. 
- O valor armazenado em um registrador de destino vem da ALU 
(para instrução tipo R) ou da memória (para um load). 
 
0 = instrução aritmética 
1= instruçãoload/store 
0 = instrução 
aritmética 
1= instrução 
load/store 
Visão Geral de Pipelining 
Definição 
͍ Pipelining é uma técnica de implementação em que 
várias instruções são sobrepostas na execução 
- semelhante a uma linha de montagem 
Analogia 
͍ Processo de lavar roupas 
1. colocar a trouxa de roupa suja na lavadora; 
2. colocar a trouxa de roupa molhada na secadora; 
3. passar a roupa; 
4. arrumar as roupas no guarda-roupa. 
Lavagem de roupa com pipelining 
Visão geral do Pipeline 
Performance: 
• 8 horas/3,5 horas = 2,3 
 
Pipeline e 2,3 vezes mais rápido!!! 
 
E agora se o total de roupas for dividido em 20 cargas, 
sendo que estagio continua com o periodo de 30 minutos, 
quanto mais rápido será o uso do pipeline? 
R.: Sem pipeline gastaríamos 20 x 2 horas/carga = 40 horas 
R.: Com pipeline gastaríamos: 
 1a. Carga = 2 horas 
19 cargas restantes a cada meia hora: 19 * 0,5 = 9,5 horas 
-> Total = 11,5 horas 
 Performance = 40/11,5 ≈ 3,5 
Desempenho 
͍ O uso de pipeline não diminui o tempo de execução 
de uma instrução, mas aumenta a vazão do sistema 
- uso dos recursos em paralelo aumenta o número de 
tarefas executadas em um determinado período de tempo 
͍ Se todos os estágios demoram o mesmo tempo e 
há recursos suficientes, então o ganho de 
velocidade é aproximadamente igual ao número de 
estágios do pipeline 
- a lavanderia com pipeline é potencialmente 4 vezes mais 
rápida do que a sem pipeline 
Conceitos Básicos 
͍ Estágio: cada etapa da execução de uma tarefa 
- deve haver recursos separados para cada estágio do 
pipeline 
͍ Pipeline cheio: é quando todos os estágios estão 
operando simultaneamente 
Pipeline no MIPS 
͍ O MIPS usa pipeline para execução das instruções. 
1. Buscar instrução na memória 
2. Decodificar a instrução e ler registradores 
3. Executar uma operação lógica ou aritmética ou calcular 
um endereço. 
4. Acessar um operando na memória de dados 
5. Escrever o resultado em um registrador 
1. IF (instruction Fetch): buscar a instrução na memória 
2. ID (instruction decode): decodificar a instrução e ler 
registradores 
3. EX: executar uma operação lógica ou aritmética 
4. MEM: acessar uma posição de memória 
5. WB (write back): escrever o resultado em um registrador 
Exemplo 
͍ Compare o tempo médio de entre as instruções de: 
- uma implementação em ciclo único (todas as instruções 
demoram um ciclo de clock; o ciclo precisa ser esticado 
para acomodar a instrução mais lenta) 
- implementação com pipeline (5 estágios) 
͍ Tempo de operação das unidades funcionais: 
- 200ps (ciclo de clock) para acesso à memória 
- 200ps para operação com ALU 
- 100ps para leitura e escrita em registrador 
Tempo total para cada instrução 
ciclo de clock = 800ps 
tempo entre o fim da primeira e da quarta 
instrução é de 2400ps 
Registrador $1 recebe (base do array A) A[25] 
rs rt 
Um ciclo de clock para cada estágio do pipeline: 200ps 
• tempo entre o fim da primeira e da quarta 
instrução é de 600ps 
• na média, uma instrução é completada a 
cada ciclo de clock de 200ps 
Hazards de Pipeline 
͍ Hazards são situações em pipelining em que a 
próxima instrução não pode ser executada no ciclo 
de clock seguinte 
͍ Tipos: 
- Hazards estruturais 
- Hazards de dados 
- Hazards de controle 
Hazard Estrutural 
͍ É quando o hardware não suporta a combinação de 
instruções que queremos executar no mesmo ciclo 
de clock 
Hazard de Dados 
͍ É uma ocorrência em que uma instrução planejada 
não pode ser executada no ciclo de clock correto 
porque os dados necessários para executar a 
instrução ainda não estão disponíveis 
- quando o pipeline precisa ser interrompido porque uma 
etapa precisa esperar até que outra seja concluída. 
add $s0, $t0, $t1 
sub $t2, $s0, $t3 
Possíveis Soluções 
͍ Compiladores podem ajudar! 
͍ Forwarding (ou bypassing) 
- recurso de hardware que permite disponibilizar o item 
que falta antes do estágio previsto (não é preciso 
esperar que a instrução termine) 
Exemplo 
add $s0, $t0, $t1 
sub $t2, $s0, $t3 
Quais estágios do 
pipeline estariam 
conectados pelo 
forwarding? 
- o caminho de forwarding só é válido se o estágio de 
destino estiver mais adiante no tempo do que o estágio 
de origem 
lw $s0, 20($t1) 
sub $t2, $s0, $t3 
pipeline stall (bolha): atrasar um estágio 
Exercício 
͍ Considere o seguinte segmento de código em 
C 
a = b + c 
d = b + e 
… 
e 
d 
c 
b 
a endereço base ($t0) 
- Qual o código MIPS ? 
Exercício 
- Encontre hazards de dados e 
reordene as instruções para evitar 
pipeline stalls. 
- Teste esses códigos no simulador. 
Exercício 
lw $t1, 4($t0) 
lw $t2, 8($t0) 
add $t3, $t1,$t2 
sw $t3, 0($t0) 
lw $t4, 16($t0) 
a = b + c 
d = b + e 
add $t3,$t1,$t4 
sw $t3, 12($t0) 
. 
. 
Exercício 
lw $t1, 4($t0) 
lw $t2, 8($t0) 
add $t3, $t1,$t2 
sw $t3, 0($t0) 
lw $t4, 16($t0) 
a = b + c 
d = b + e 
add $t3,$t1,$t4 
sw $t3, 12($t0) 
. 
. 
conflito!! 
Exercício 
lw $t1, 4($t0) 
lw $t2, 8($t0) 
add $t3, $t1,$t2 
sw $t3, 0($t0) 
lw $t4, 16($t0) 
a = b + c 
d = b + e 
add $t3,$t1,$t4 
sw $t3, 12($t0) 
. 
. 
conflito!! 
Exercício 
lw $t1, 4($t0) 
lw $t2, 8($t0) 
add $t3, $t1,$t2 
sw $t3, 0($t0) 
lw $t4, 16($t0) 
Existe conflito?? 
No Mars ...sem pipeline 
No Mars ...sem pipeline 
Observações do syscall..... 
 li $v0, 1 # system call code for print_int 
Hazard de Controle 
͍ Também denominado hazard de desvio 
͍ É quando a instrução seguinte não pode ser 
executada no devido ciclo de clock do pipeline 
porque a instrução buscada não é aquela 
apropriada 
- Surge da necessidade de tomar uma decisão com base 
no resultado de uma instrução 
- o pipeline possivelmente não saberá qual deve ser a 
próxima instrução. 
pipeline stall? 
Previsão de Desvio 
͍ Previsão de que o desvio não será tomado 
͍ Previsão de que alguns desvios serão tomados 
- ex. laços (desvios para endereços anteriores são tomados) 
͍ Previsores de hardware dinâmicos (precisão > 90%) 
- histórico recente para prever o futuro 
͍ Delayed branch (desvio adiado), usado no MIPS 
Exceções 
͍ Exceção: evento não programado que interrompe o 
fluxo de execução do programa, ocorre dentro do 
próprio programa, como divisão por zero. 
͍ Interrupção: uma exceção que vem de fora do 
processador (ex. de dispositivos de E/S) e a CPU 
trata. 
Desafios 
͍ O Controle é o aspecto mais desafiador do projeto 
de um processador 
- implementar exceções e interrupções 
͍ Detectar condições excepcionais e tomar as ações 
apropriadas 
- aspecto crítico de temporização (influencia no tempo do ciclo 
de clock) 
- identificar as exceções em tempo de projeto 
Tratamento de Exceções 
(MIPS) 
͍ Tipos de exceção 
- Instrução indefinida 
- Overflow Aritmético 
͍ Ações tomadas: 
- Salvar o endereço da instrução que causou a exceção no 
PC de Exceção (EPC — Exception Program Counter) 
- Transferir o controle (fluxo de execução) para o sistema 
operacional em algum endereço especificado 
Rotinas de Tratamento 
͍ Fornecer algum serviço ao programa do usuário 
͍ Tomar alguma ação predefinida em resposta a um 
overflow 
͍ Terminar a execução do programa e informar um 
erro 
Após realizar as ações necessárias, o sistema 
operacional pode terminar ou continuar (EPC) a 
execução do programa

Mais conteúdos dessa disciplina