A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

RISC vs. CISC Introdução

Apresentações semelhantes


Apresentação em tema: "RISC vs. CISC Introdução"— Transcrição da apresentação:

1 RISC vs. CISC Introdução
instruções simples poucos modos de endereçamento operandos em registos acessos à memória por load / store CISC instruções complexas muitos modos de endereçamento operandos em memória a[i] = a[i] + d i++ EXEMPLO: Tirando o registo $0 e o registo $ra todos os outros são genéricos. A sua utilização para fins específicos é determinada por uma convenção de programação, alheia ao processador. Porque é que se justifica o $zero? # $t2 – i # $t4 - d la $t0, a sll $t1, $t2, 2 # i*4 add $t1, $t0, $t1 lw $t3, 0($t1) # a[i] add $t3, $t3, $t4 sw $t3, 0($t1) addi $t2, $t2, 1 #i++ # i e d em memória add (a+i), d, 4 inc i #i++ Factor de escala Arquitectura de Computadores

2 RISC vs. CISC Introdução
do { ... i-- } while (i>0); EXEMPLO: RISC CISC # $t0 – i li $t0, 10 ciclo: ... addi $t0,$t0,-1 #i-- bgtz $t0, ciclo # i em memória li i, 0 ciclo: ... loop i, ciclo Arquitectura de Computadores

3 RISC vs. CISC Motivação CISC (anos 60 e 70)
Simplificação da programação em assembly Linguagens de programação pouco desenvolvidas Compiladores pouco sofisticados exigem um assembly com um nível próximo da HLL, para simplificar a programação os avanços da microelectrónica permitem a construção de processadores cada vez mais sofisticados Melhorar o desempenho Instruções complexas permitem reduzir: . o tamanho dos programas, ocupando menos espaço em memória . o tempo gasto a ler instruções da memória (fetch) Arquitectura de Computadores

4 RISC vs. CISC Argumentação RISC (anos 80)
A utilização das instruções complexas é pouco frequente, porque os compiladores têm que encontrar casos que se adaptem exactamente à instrução O tamanho reduzido dos programas deixa de ser relevante, pois as memórias são mais baratas De qualquer forma, os programas das arquitecturas CISC não são significativamente menores A optimização do tamanho do código, do número de instruções executadas e da utilização do pipeline é mais fácil com instruções simples Suportar instruções complexas implica uma unidade de controlo mais sofisticada, com um período de relógio maior. Isto afecta também instruções simples. Suportar apenas instruções simples permite uma unidade de controlo mais rápida, com um pipeline equilibrado, desde que os operandos sejam registos Uma unidade de controlo mais simples liberta espaço para outras funcionalidades no chip, incluindo mais registos, unidades funcionais e memória cache. 2. Os programas não são menores porque as instruções complexas não são muito usadas, os opcodes são maiores e os endereços de memória também. Arquitectura de Computadores

5 Arquitectura de Computadores
Pipeline Sobreposição da execução de diferentes fases de diferentes instruções. A execução de uma instrução pode ser, geralmente, dividida em 5 fases: Leitura da instrução – fetch (Fe) Descodificação e leitura de registos (ID) Execução da operação ou cálculo do endereço (Ex) Acesso à memória (Mem) Escrita do resultado num registo (WB) Processador sem pipeline : Só quando todas as fases de uma instrução terminam, começa a próxima instrução O ciclo do relógio deve ser tão longo quanto a instrução mais lenta Processador com pipeline : A execução das diferentes fases das várias instruções podem ser encadeadas no tempo. O ciclo do relógio deve ser tão longo quanto a fase mais longa Arquitectura de Computadores

6 Arquitectura de Computadores
Pipeline Exemplo: 2 ns – acesso à memória 2 ns – cálculo na ALU 1 ns – acesso a um registo Numa microarquitectura sem pipeline o ciclo do relógio deve ser de 8 ns, apesar de haver instruções (como o add) que só precisam de 6 ns. Numa microarquitectura com pipeline o ciclo de relógio é de 2 ns. O processador termina uma instrução cada ciclo. No entanto, Precisa de 10 ns (5 ciclos) para executar cada instrução. Arquitectura de Computadores

7 Arquitectura de Computadores
Pipeline O pipeline é tão mais eficiente quanto mais equilibradas forem as várias fases; Dependências de dados podem criar atrasos; Exemplo: addi $t2, $0, lw $t3, 0($t2) Saltos condicionais podem criar atrasos; Exemplo: bne $t2, $0, label lw $t3, 0($t2) b fim label: add $s0, $at, $t5 Arquitectura de Computadores

8 Arquitectura de Computadores
RISC vs. CISC Evolução Anos 60 – Minimização do tamanho do programa Memória RAM muito cara Anos 70 – Desenvolvimentos da microelectrónica permitem processadores cada vez mais complexos, com um instruction set bastante próximo das HLL. Anos 80 – Constatação de que grande parte das instruções são pouco usadas – Utilização pipeline para execução encadeada de instruções simples e consequente aceleração do período do relógio – aumento da velocidade do processador em relação à memória leva à utilização intensiva de registos, facilitada por desenvolvimentos na ciência da compilação – desenvolvimentos nas linguagens de programação e compiladores fazem com que a programação em assembly seja cada vez menos utilizada; o assembly não precisa de estar próximo das HLL Arquitectura de Computadores

9 RISC vs. CISC Comparação : arquitectura e microarquitectura
Reduzido número de instruções, que realizam operações elementares Elevado número de instruções, incluindo operações complexas Instruções de tamanho fixo Instruções de tamanho variável Poucos formatos de instruções Grande número de formatos de instruções Poucos modos de endereçamento Grande número de modos de endereçamento Muitos registos de uso genérico Poucos registos, normalmente com utilizações pré-definidas Pipeline com muitos níveis, elevada frequência do relógio, execução de uma instrução por ciclo Pipeline menos frequente Arquitectura de Computadores

10 RISC vs. CISC Comparação : programação
Utilização intensiva de registos Utilização intensiva da memória Operandos de operações logico-aritméticas em registos; acesso à memória através de load/store Operandos podem estar em memória Modos de endereçamento simples requerem cálculo explícito dos endereços por software Modos de endereçamento complexos, cálculo de endereços implementado pelo hardware 3 operandos por instrução (destino + 2 fontes) 2 operandos por instrução Parâmetros, endereço de retorno e resultado das funções em registos Parâmetros, e endereço de retorno na stack Operações complexas conseguidas à custa de sequências de instruções Uma única instrução pode realizar operações complexas Arquitectura de Computadores

11 RISC vs. CISC Comparação : programação
Exemplo main () { int a[100]; soma (a, 100, 1000); } void soma (int *a, int d, int v) int i; for (i=0 ; i<d ; i++) a[i] = a[i] + v; Codificar em assembly duma máquina CISC com as seguintes características: Apenas 2 operandos por instrução Um dos operandos pode estar em memória Apenas 7 registos: $t0 .. $t5 , $sp Passagem de parâmetros e endereço de retorno na stack Modos de endereçamento adicionais: Mem[$reg1 + $reg2] Arquitectura de Computadores

12 RISC vs. CISC Comparação : programação
main: la $t0, a push $t0 push 100 push 1000 call soma lw $ra, 0($sp) pop $t0 ret soma: lw $t0, 12($sp) #$t0=a lw $t1, 4($sp) #$t1=v li $t2, 0 # i=0 ciclo: cmp $t2, 8($sp) jge fim move $t3, $t2 sll $t3, 2 add ($t0+$t3),$t1 inc $t2 j ciclo fim: main: addui $sp, $sp,-4 sw $ra, 0($sp) la $a0, a li $a1, 100 li $a2, 1000 jal soma lw $ra, 0($sp) addui $sp, $sp, 4 jr $ra soma: li $t0, 0 ciclo: bge $t0, $a1, fim sll $t1, $t0, 2 add $t1, $a0, $t1 lw $t2, 0($t1) add $t2, $t2, $a2 sw $t2, 0($t1) addi $t0, $t0, 1 b ciclo: fim: a d v ER SP Arquitectura de Computadores


Carregar ppt "RISC vs. CISC Introdução"

Apresentações semelhantes


Anúncios Google