RISC vs. CISC Introdução

Slides:



Advertisements
Apresentações semelhantes
Arquitecturas RISC Arquitectura e Conjunto de Instruções
Advertisements

Arquitecturas RISC Programação em assembly
Do alto-nível ao assembly
TRABALHO AVALIATIVO ALUNO: FRANCISCO HELIÉSUS DE MEDEIROS MATÉRIA: ORGANIZAÇÃO DE COMPUTADORES.
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
Disciplina:PROA3V José Henrique Verhalem e Renan Tenório Professor: Alexandre Cassimiro Novembro 2015.
Máquinas Virtuais Professoras: Márcia Jani / Kathia.
Programação em Assembly Conceitos Iniciais Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Variáveis e Atribuições.
EA869 Pipeline Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1.
Introdução à Computação para Engenharia MAC2166
Introdução e Conceitos.
Arquitetura do SET de instruções Instruction SET CISC vs RISC
PSI3441 – Arquitetura de Sistemas Embarcados
Introdução ao OpenMP Open MultiProcessing.
GRÁFICOS ESTATÍSTICOS
Aspectos de Interrupção
Programação em C Aula 8.
DISTRIBUIÇÃO AMOSTRAL E ESTIMAÇÃO
PSI3441 – Arquitetura de Sistemas Embarcados
Computador MIPS Organização básica e conjunto de instruções.
Comandos da Linguagem C
Contabilidade Empresarial
Estruturas de Repetição
Prof. Alberto F. De Souza LCAD/DI/UFES
Linguagem C Para programadores Python
INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO PROF. BRUNO DE CASTRO H. SILVA
Prof. Wellington Franco
CPU.
DESENVOLVIMENTO DE PROGRAMAS
Instruções.
Vantagens e desvantagens da recursão
INTRODUÇÃO A COMPUTAÇÃO
SISTEMAS OPERACIONAIS
Funções de um computador
Arquitetura de Computadores
PIT – PROGRAMA INTERNO DE TREINAMENTO 2015
FUNDAMENTO DE PROGRAMAÇÃO
Arquitetura de Computadores
INTRODUÇÃO À COMPUTAÇÃO PARALELA
Métodos Numéricos de Determinação de Raízes: Bisseção, Secante e Newton-Raphson Professor.: Heron Jr.
INE 5201 – INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS
Algoritmos e Programação MC102
Organização de Computadores
Estrutura de Repetição
Prof. Msc. Diovani Milhorim
Arranjo Físico Celular
ARA 7244 – Estrutura de Computadores
Organização básica de arquivos
Organização de Computadores
Sistemas Operacionais
Complexidade de Algoritmos
Sistemas Distribuídos
Algorítmos e Técnicas de Programação
Informática Básica Introdução a informática básica FUNCIONAMENTO
GRÁFICOS ESTATÍSTICOS
Instruções de Acesso à Memória e de Desvio Condicional
Prof. Wilian Soares Lacerda DCC - UFLA
Introdução à Lógica Programável
PSI3441 – Arquitetura de Sistemas Embarcados
ALGORITMOS.
Programação em assembly
Prof. Rafael Mesquita Listas Encadeadas Prof. Rafael Mesquita
Conjunto de instruções
Introdução a progrmação Comandos condicionais: if e switch
Arquitetura de Computadores
Introdução às Tecnologias da Informação e Comunicação
RESULUÇÃO DOS EXERCÍCIOS E
Transcrição da apresentação:

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 23-02-2019 Arquitectura de Computadores

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 23-02-2019 Arquitectura de Computadores

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) 23-02-2019 Arquitectura de Computadores

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. 23-02-2019 Arquitectura de Computadores

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 23-02-2019 Arquitectura de Computadores

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. 23-02-2019 Arquitectura de Computadores

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, 1000 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 23-02-2019 Arquitectura de Computadores

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 23-02-2019 Arquitectura de Computadores

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 23-02-2019 Arquitectura de Computadores

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 23-02-2019 Arquitectura de Computadores

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] 23-02-2019 Arquitectura de Computadores

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 23-02-2019 Arquitectura de Computadores