máquinas cisc complex instruction set computer
DESCRIPTION
Conceitos Avançados de Arquitetura de Computadores Arquiteturas RISC Reduced Instruction Set Computer. Máquinas CISC Complex Instruction Set Computer. INEFICIÊNCIA. Crise do Software Dificuldades em achar programadores Aumento da complexidade dos sistema. Aumento do preço do software. - PowerPoint PPT PresentationTRANSCRIPT
Conceitos Avançados de Conceitos Avançados de Arquitetura de ComputadoresArquitetura de Computadores
Arquiteturas RISC Arquiteturas RISCReduced Instruction Set ComputerReduced Instruction Set Computer
Máquinas CISCMáquinas CISCComplex Instruction Set ComputerComplex Instruction Set Computer
• Crise do Software– Dificuldades em achar programadores
– Aumento da complexidade dos sistema
– Surgimento de linguagens de alto nível
– Aumento na complexidade do hardware:Unidades de execução e controle complexas
– Aumento do preço do software
IINNEEFFIICCIIÊÊNNCCIIAA
Máquinas CISCMáquinas CISCComplex Instruction Set ComputerComplex Instruction Set Computer
• Será que esta complexidade é realmente necessária?Comando SAL XPL Fortran C Pascal Média
atribuição 47 55 51 38 45 47
if then else 17 17 10 43 29 23
call 25 17 5 12 15 15
loop 6 5 9 3 5 6
go to 0 1 9 3 0 3
outros 5 5 16 1 6 7
Solução: Solução: Busca da eficiência na simplicidadeBusca da eficiência na simplicidade
• Máquinas RISCReduced Instruction Set Computer
Filosofia RISCFilosofia RISC• Tornar as máquinas mais simples de modo a
torná-las mais velozes:– Poucas instruções, simples e com poucos formatos– Poucos modos de endereçamento– Muitos registradores => Menos buscas na memória
=> => implementação mais eficienteimplementação mais eficiente
Máquina RISCMáquina RISC
ImplementaçãoImplementação eficiente eficiente
– Conjunto reduzido de instruções simples
– Grande número de registradores
– Operação similar a uma linha de montagem
– Complexidade transferida para o compilador
Máquinas RISCMáquinas RISCUso eficiente dos registradoresUso eficiente dos registradores
• Atribuições# Termos %
0 -1 802 153 34 2
>4 0
# Var. locais %0 221 172 203 144 8
>4 20
# Parâmetros %0 411 192 153 94 7
>4 8
• Procedimentos
PipelinePipeline
Lavando RoupaLavando RoupaTime
76 PM 8 9 10 11 12 1 2 AM
A
B
C
D
Time76 PM 8 9 10 11 12 1 2 AM
A
B
C
D
Taskorder
Taskorder
PipelinePipeline
O que é pipeline?O que é pipeline?
• É composto por uma série de estágios
operando em paralelo onde uma parte do
trabalho é feito em cada estágio.
• O trabalho não está concluído até que
tenha passado por todos os estágios.
Surgimento do termo “pipeline”Surgimento do termo “pipeline”• Campbell (ed), Buchholz, Brooks, Bloch, et al,
1962, Planning a Computer System: Project STRETCH [p 204-5]
“The data flow through the computer is comparable to a pipeline which, once filled, has a large output rate no matter what its length.”
Linha de montagem automotiva
Carro-ceria
Motor Elétrica PortasJanelas
Aces-sórios
Para que pipeline?Para que pipeline?Velocidade• Exemplos:
– IBM 7030 100x mais rápido que o 704 (o mais rápido naquele tempo). Melhorias comuns dariam 10x mais.
– IBM 360/91 é 1 a 2 ordens de magnitude mais rápido que o 7090. Sem pipeline se conseguiria apenas 4x mais.
– O 6502 tem throughput similar ao 8080 (que tem clock 4x mais rápido)
ExecuExecução de ção de um programaum programa
Busca instruçãoBusca instrução
Acesso a dados externos (memória)
Acesso a dados externos (memória)
Execução (ALU)Execução (ALU)
Decodificação da Instrução e Leitura de Registradores
Decodificação da Instrução e Leitura de Registradores
Escrita de Resultado (Registradores)
Escrita de Resultado (Registradores)
registradoresregistradores
com pipelinecom pipeline
Incrementa PCIncrementa PC
PipelinePipeline• Em condições ideais, o ganho em performance é igual ao
número de estágios do pipeline
• Para estágios desbalanceados isto não acontece:Tempo por estágio = Tempo do estágio mais lento
• Há um aumento de tempo de cada estágio por conta dos registradores necessários ao Pipeline
• Mesmo que uma instrução não use um estágio, seu tempo é computado
Pipeline: Pipeline: tão lento quanto o mais tão lento quanto o mais lento dos estágioslento dos estágios
Instructionfetch
Reg ALU Dataaccess
Reg
8 nsInstruction
fetchReg ALU Data
accessReg
8 nsInstruction
fetch
8 ns
Time
lw $1, 100($0)
lw $2, 200($0)
lw $3, 300($0)
2 4 6 8 10 12 14 16 18
2 4 6 8 10 12 14
...
Instructionfetch
Reg ALUData
accessReg
Time
lw $1, 100($0)
lw $2, 200($0)
lw $3, 300($0)
2 nsInstruction
fetchReg ALU
Dataaccess
Reg
2 nsInstruction
fetchReg ALU
Dataaccess
Reg
2 ns 2 ns 2 ns 2 ns 2 ns
PipelinePipeline
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Instruction
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Readregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
ReaddataAddress
Datamemory
1
ALUresult
Mux
ALUZero
IF: Instruction fetch ID: Instruction decode/register file read
EX: E xecute/address calculation
MEM: Memory access WB: Write back
RegistradoresRegistradores
Pipeline:Pipeline:
Detalhe da instrução Detalhe da instrução lwlw
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Inst
ruct
ion
IF/ID EX/MEM MEM/WB
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Readegister 1
Readregister 2
16Sign
extend
Writeegister
Writedata
Readdata
1
ALUresult
Mux
ALUZero
ID/EX
Address
Datamemory
PipelinePipeline
Representação GráficaRepresentação Gráfica
IM Reg DM RegALU
IM Reg DM RegALU
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7
Time (in clock cycles)
lw $2, 200($0)
lw $3, 300($0)
Programexecutionorder(in instructions)
lw $1, 100($0) IM Reg DM RegALU
Tempo total de execução de Tempo total de execução de instruçõesinstruções
BuscaInstr.
Decod.&Lê Reg
ALU Acessadados
Escr.Reg
Tempototal
Load 2 ns 1 ns 2 ns 2 ns 1 ns 8 ns
Store 2 ns 1 ns 2 ns 2 ns 7 ns
Addr1,r2,r3
2 ns 1 ns 2 ns 1 ns 6 ns
Jeq 2 ns 1 ns 2 ns 5 ns
Uso eficiente do pipelineUso eficiente do pipeline
Características necessárias
• Tempo de estágio pequeno
• Uma instrução por ciclo
Artifícios para obter estas características
=> Design apropriado do conjunto de instruções
=> Eliminação ou bom gerenciamento de HAZARDSHAZARDS– Estruturais– Dados– Controle
Uso eficiente do pipelineUso eficiente do pipeline
Design do conjunto de instruçõesDesign do conjunto de instruções1) Poucas instruções
Sem microprogramação
2) Instruções do mesmo tamanhoUnidades de busca e decodificação mais eficientes (no 80X86, instruções podem ter de 1 a 17 bytes).
3) Poucos formatos de instrução.Ex. Nos MIPS os campos dos registradores-fonte são sempre os mesmos. A decodificação pode ocorrer em paralelo com a leitura destes registradores.
4) Arquitetura Load-Store
Permite usar a unidade de execução para calcular o endereço e acessar a memória no estágio seguinte. Se fosse possível executar aritmética com operandos da memória, seria necessário adicionar outro estágio ao pipeline. Requer grande número de registradores.
5) Poucos modos de endereçamento
Facilita decodificação e busca de operandos
Uso eficiente do pipelineUso eficiente do pipeline
Design do conjunto de instruçõesDesign do conjunto de instruções
Uso eficiente do pipelineUso eficiente do pipeline
Eliminação ou bom gerenciamento de HAZARDSHAZARDSO que são:O que são: Situações em que a próxima instrução não pode ser executada no próximo ciclo, inserindo uma bolha (provocando um stall)
TiposTipos– Estruturais
Conflito no uso dos recursos– Dados
Dependência de dados– Controle
Alteração do fluxo do programa por instruções de desvio, chamada de funções, interrupções
Uso eficiente do pipeline Uso eficiente do pipeline
Hazard EstruturalHazard Estrutural
Causas:Causas:- Recursos não suficientemente replicadosRecursos não suficientemente replicados ex: portas de escrita na memória ou
mem. de dados = mem. Instruções
- Unidade funcionais muito lentasUnidade funcionais muito lentas
ex: Multiplicação e divisão
Causas:Causas:- Recursos não suficientemente replicadosRecursos não suficientemente replicados ex: portas de escrita na memória ou
mem. de dados = mem. Instruções
- Unidade funcionais muito lentasUnidade funcionais muito lentas
ex: Multiplicação e divisão
Solução: replicar recursosSolução: replicar recursos
Solução: Solução: pipelinezarpipelinezar o recurso o recurso
Uso eficiente do pipeline Uso eficiente do pipeline
Hazard de DadosHazard de Dados
- Dependência Verdadeira:Dependência Verdadeira: Read-after-Write (RAW)Read-after-Write (RAW)
- Dependência de Saída:Write-after-Write (WAW)
- Antidependências:Write-after-Read (WAR)
- Dependência Verdadeira:Dependência Verdadeira: Read-after-Write (RAW)Read-after-Write (RAW)
- Dependência de Saída:Write-after-Write (WAW)
- Antidependências:Write-after-Read (WAR)
Tipos de Dependências de Dados
Uso eficiente do pipeline, Hazard de DadosUso eficiente do pipeline, Hazard de Dados
Dependência Verdadeira (RAW)Dependência Verdadeira (RAW)
bi dr ex mem erAdd r1r1, r2, r3
Sub r4, r1r1, r5
And r6, r1r1, r7
Or r8, r1r1, r9
bi dr ex mem er
bi dr ex mem er
bi dr ex mem er
Uso eficiente do pipeline, Hazard de DadosUso eficiente do pipeline, Hazard de Dados
Dependência Verdadeira (RAW)Dependência Verdadeira (RAW)
IM Reg
IM Reg
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6
Ciclos de clock
sub $2, $1, $3
Instruções
and $12, $2, $5
IM Reg DM Reg
IM DM Reg
IM DM Reg
CC 7 CC 8 CC 9
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
DM Reg
Reg
Reg
Reg
DM
Uso eficiente do pipeline, Hazard de DadosUso eficiente do pipeline, Hazard de Dados
Dependência Verdadeira (RAW)Dependência Verdadeira (RAW)
1) Inserir NOPs ou bolhas
2) Inserir instruções independentes entre
as dependentes
3) Método do curto circuito ou forwarding
1) Inserir NOPs ou bolhas
2) Inserir instruções independentes entre
as dependentes
3) Método do curto circuito ou forwarding
• A solução está em dar tempo para o resultado ser usado pela instrução dependente.
Uso eficiente do pipeline, Hazard de DadosUso eficiente do pipeline, Hazard de Dados
Dependência Verdadeira (RAW)Dependência Verdadeira (RAW)
1) Inserir NOPs ou bolhas1) Inserir NOPs ou bolhas
Tempo2 4 6 8 10
Add r1r1, r2, r3 IF ID WBEX MEM
Sub r4, r1r1, r5 IF ID WBEX MEM
BolhasBolhas
Uso eficiente do pipeline, Hazard de DadosUso eficiente do pipeline, Hazard de Dados
Dependência Verdadeira (RAW)Dependência Verdadeira (RAW)2) Inserir instruções independentes entre as dependentes2) Inserir instruções independentes entre as dependentes
Ex: Troca de valores entre v[k] e v[k+1]
// reg. r1 tem endereço de v[k]lw r0, 0(r1) // r0 = v[k]lw r2, 4(r1) // r2 = v[k+1]sw r2, 0(r1) // v[k] = r2sw r0, 4(r1) // v[k+1] = r0
ProblemaProblema
Uso eficiente do pipeline, Hazard de DadosUso eficiente do pipeline, Hazard de Dados
Dependência Verdadeira (RAW)Dependência Verdadeira (RAW)2) Inserir instruções independentes entre as dependentes2) Inserir instruções independentes entre as dependentes
Ex: Troca de valores entre v[k] e v[k+1]
// reg. r1 tem endereço de v[k]lw r0, 0(r1) // r0 = v[k]lw r2, 4(r1) // r2 = v[k+1]sw r0, 4(r1) sw r0, 4(r1) // v[k+1] = r0// v[k+1] = r0sw r2, 0(r1) sw r2, 0(r1) // v[k] = r2// v[k] = r2
Solução: trocar a ordemSolução: trocar a ordem
Uso eficiente do pipeline, Hazard de DadosUso eficiente do pipeline, Hazard de Dados
Dependência Verdadeira (RAW)Dependência Verdadeira (RAW)
3) Método do curto circuito ou forwarding3) Método do curto circuito ou forwarding
Add r1r1, r2, r3
Sub r4, r1r1, r5
Ordem das Instruções
IF ID WBEX
IF ID MEMEX
Tempo 2 4 6 8 10
MEM
WBMEM
Uso eficiente do pipeline, Hazard de DadosUso eficiente do pipeline, Hazard de Dados
Dependência Verdadeira (RAW)Dependência Verdadeira (RAW)
3) Método do curto circuito ou forwarding3) Método do curto circuito ou forwarding
registradores
Mux 1 Mux 2
ALU
R1R2
Uso eficiente do pipeline, Hazard de DadosUso eficiente do pipeline, Hazard de Dados
Dependência Verdadeira (RAW)Dependência Verdadeira (RAW)
3) Método do curto circuito ou forwarding3) Método do curto circuito ou forwarding
Tempo2 4 6 8 10 12 14
lw $s0, 20($t1)
sub $t2, $s0, $t3
IF ID WBMEMEX
IF ID WBMEMEX
bubble bubble bubble bu bble bubble
Algumas vezes as bolhas são inevitáveis, como no exemplo abaixoAlgumas vezes as bolhas são inevitáveis, como no exemplo abaixo
Uso eficiente do pipelineUso eficiente do pipeline
Hazard de ControleHazard de Controle
• Necessidade da alteração no fluxo do programa:– Interrupções, exceções
– Desvios condicionais e incondicionais
– Chamadas e retornos de subrotinas
• Qual o comportamento do pipeline na ocorrência de instruções de desvio condicional?
Uso eficiente do pipelineUso eficiente do pipeline
Hazard de ControleHazard de Controle
Reg
Reg
40 beq $1, $3, 7 IM Reg
IM DM
IM DM
IM DM
DM
DM Reg
Reg Reg
Reg
Reg
RegIM
44 and $12, $2, $5
48 or $13, $6, $2
52 add $14, $2, $2
72 lw $4, 50($7)
Reg
Quanto mais tarde a decisão do salto pior o efeito Quanto mais tarde a decisão do salto pior o efeito no pipelineno pipeline
Uso eficiente do pipeline, Hazard de ControleUso eficiente do pipeline, Hazard de Controle
Abordagens UsadasAbordagens Usadas1) Congelamento do pipeline
Esperar para buscar próxima instrução após a execução do
desvio (insere bolhas, NOPs)
Instruction
fetchReg ALU
Data
accessReg
Time
beq $1, $2, 40
add $4, $5, $6
lw $3, 300($0)4 ns
Instruction
fetchReg ALU
Data
accessReg
2ns
Instruction
fetchReg ALU
Data
accessReg
2ns
2 4 6 8 10 12 14 16
SimplicidadeSimplicidadeDegradação do desempenho do pipelineDegradação do desempenho do pipeline
Uso eficiente do pipeline, Hazard de ControleUso eficiente do pipeline, Hazard de Controle
Abordagens UsadasAbordagens Usadas
• Não perde tempoNão perde tempo
• ProblemasProblemas– Conflito na utilização de registradores e memóriaConflito na utilização de registradores e memória
– Requer grande duplicação de recursosRequer grande duplicação de recursos
– Desvios seguidos podem provocar um grande Desvios seguidos podem provocar um grande número de streamsnúmero de streams
Ex: IBM 370/168 e IBM 3033Ex: IBM 370/168 e IBM 3033
2) Multiple streams
Busca e executa as instruções dos vários endereços de desvio
Uso eficiente do pipeline, Hazard de ControleUso eficiente do pipeline, Hazard de Controle
Abordagens UsadasAbordagens Usadas3) Desvio com efeito retardado
If a=b then a:= a+1else a: a-1end if;
Ling. alto nível Mov R1,a Mov R2,b CMP R1,R2 JMPZ end1 Add R1, -1 JMP end2end1: Add R1, 1end2: Mov a, R1
Linguagem máquina
Instruções independentes são inseridas após a instrução de desvio de modo a ocupar o pipeline até que o salto seja decidido.
Uso eficiente do pipeline, Hazard de ControleUso eficiente do pipeline, Hazard de Controle
Abordagens UsadasAbordagens Usadas
Mov R1,a Mov R2,b CMP R1,R2 JMPZ end1 Add R1, -1 JMP end2end1: Add R1, 1end2: Mov a, R1
Linguagem máquina
Mov R1,a Mov R2,b CMP R1,R2 JMPZ end1
Add R1, -1 JMP end2end1: Add R1, 1end2: Mov a, R1
Linguagem máquina
Add R6,R7Mov R8, z
Slot deSlot deretardoretardo
3) Desvio com efeito retardado
Uso eficiente do pipeline, Hazard de ControleUso eficiente do pipeline, Hazard de Controle
Abordagens UsadasAbordagens Usadas
Instruction
fetchReg ALU
Data
accessReg
Instruction
fetchReg ALU
Data
accessReg
2 ns
Instruction
fetchReg ALU
Data
accessReg
2 ns
2 ns
beq $1, $2, 40
add $4, $5, $6
lw $3, 300($0)
(Delayed branch slot)
3) Desvio com efeito retardado
• Execução especulativa:
4) Busca e executa sempre a instrução da sequência ou do
salto. Ex: 68020, VAX 11/780
5) Ação dependente da direção do desvio: avanço ou recuo.
• Execução especulativa com histórico:
6) Uso de perfis de execução ou previsões feitas durante a
compilação, com informações passadas no opcode
Ex: Sparc, RS/6000.
7) Técnicas on-line: Branch Target Buffer (BTB).
90% de acerto. Ex: Power-PC
Uso eficiente do pipeline, Hazard de ControleUso eficiente do pipeline, Hazard de Controle
Abordagens UsadasAbordagens Usadas
Branch Target Buffer (BTB)
Uso eficiente do pipeline, Hazard de ControleUso eficiente do pipeline, Hazard de Controle
Abordagens UsadasAbordagens Usadas
Endereço daInstrução deSalto
Endereço doSalto
Histórico (MEF)- 1 ou 2 bits
EIS1 ES1 Estado A
EIS5 ES5 Estado C
Branch Target Buffer (BTB): HISTÓRICO
Uso eficiente do pipeline, Hazard de ControleUso eficiente do pipeline, Hazard de Controle
Abordagens UsadasAbordagens Usadas
Salta (fraco) Salta (forte)
Não Salta (fraco)Não Salta (forte)
saltou
saltou
não saltou
não saltou
saltounão saltou
saltou
nãosaltou
Uso eficiente do pipeline, Hazard de ControleUso eficiente do pipeline, Hazard de Controle
ExExceçõesceções: outra fonte de hazards: outra fonte de hazards• Causas
– Opcode inexistente– Ultrapassar limites da memória– operações aritméticas erradas (ex. divisão por zero)
• Tratamento:– Chamar subrotina em endereço pré-definido.– O pipeline deve parar imediatamente para não modificar
os registradores– Mais de uma exceção pode ocorrer em estágios diferentes
no mesmo ciclo. (MIPS: a primeira tem prioridade)
Uso eficiente do pipeline, Hazard de ControleUso eficiente do pipeline, Hazard de Controle
Tratamento de exceçõesTratamento de exceções– Ex: 4C add $1, $2, $1 (exceção no 3o. Estágio)(exceção no 3o. Estágio)
50 slt $15, $6, $754 lw $16, 50($7)…
• Interrupção Imprecisa:O endereço indicado é 58
• Interrupção Precisa:O endereço indicado é 4C. É necessário manter um
conjunto de registradores (um por estágio) que contém o endereço da instrução em execução.
Máquina RISCMáquina RISC
Gráfico de KiviatGráfico de KiviatProfundidade pipeline
Decodificação Modos de endereçamento
Número instruções
Desvio
Clock / Instrução
Núm. registradoresinteiro
Tamanho instrução
1
2
3
4
5
1
3
5
7
16 32 64 128 256
unid. desvio
Desvio retardado
desvio normal
12864
3216
8
fixovariavel
microprogramado
hardware
0.2
0.5
1
2
3DLX
TM320C25