Title: Agenda
1Agenda
2Gap Semântico
- Queda do custo do Hardware o custo relativo do
Software aumentou. - SW é pouco confiável
- Resposta dos pesquisadores foi desenvolver
linguagens de programação mais poderosas e
complexas. - Aumento da distância semântica entre operações
disponíveis em linguagens de alto nível e aquelas
disponibilizadas pelo hardware dos computadores
3GAP Semântico
- Desenvolver arquiteturas que diminuíssem a
distância entre instruções de linguagem de alto
nível e instruções de máquina. - Características dessa Arquitetura grande
conjunto de instruções, vários modos de
endereçamento e implementação de diversos
comandos de linguagem de alto nível no hardware
da máquina.
4Características das HLL (LAN) operações
Ocorrência dinâmica
Instruções valor normalizado
referência a memória
atribuição Laços chamadas if outros
Válido para arquiteturas CISC (Complex
Instruction Set Computer)
5Características das HLL (LAN) operandos
- segundo Patterson PATT82a a maioria das
referências é de variáveis escalares sendo que
mais de 80 dos escalares são locais
Pascal C Average Integer constant 16 23 20
Scalar variable 58 53 55 Array/structure 26 24 25
- segundo Lunde LUND77, cada instrução, em média,
referencia 0.5 operandos na memória e 1.4 nos
registradores
6Características das HLL (LAN) chamadas
- é a operação mais lenta nas linguagens de alto
nível compiladas - segundo Tanenbaum Tane78, 98 de chamadas
dinâmicas passam menos de 6 argumentos e 92 usam
menos de 6 variáveis locais - segundo KatevenisKATE83, é raro existir uma
longa seqüência de chamadas à procedimentos.
7Implicações
- Deve-se otimizar os processos que consomem mais
tempo. - Deve-se usar um grande número de registradores
(referência aos operandos) - Uso de pipelines
- Simplified (reduced) instruction set
8Uso de registradores
- os registradores são os dispositivos mais rápidos
de armazenamento
- deve-se criar uma estratégia para se manter os
operandos mais freqüentemente acessados nos
registradores
- deve-se minimizar as operações de transferência
de operandos da memória para registradores
abordagem via hardware
9Abordagem via software
- visa deixar a tarefa de maximização de uso dos
registradores para o compilador - o compilar irá tentar usar os registradores para
armazenar as variáveis que serão usadas a maior
parte do tempo - deve utilizar algoritmos sofisticados de análise
de programas.
10Abordagem via hardware
- uso de mais registradores para manter mais
variáveis por mais tempo - deve-se organizar o uso destes registradores de
forma a diminuir o número de acessos à memória
principal.
11Condições de contorno
- as variáveis locais devem ser salvas a cada
chamada de nova sub-rotina - parâmetros devem ser passados para as sub-rotinas
chamadas - no retorno da chamada as variáveis locais devem
ser novamente carregadas e os resultados passados
de volta
12Janelas de registradores
- Uma sub-rotina típica passa poucos parâmetros
- O número de sub-rotinas chamadas é geralmente
pequena
- Múltiplos conjuntos de registradores são
endereçados para diferentes sub-rotinas
- Uma nova chamada faz com que o processador use
automaticamente o próximo conjunto de
registradores
- Janelas de registradores de sub-rotinas
adjacentes possuem uma superposição de
registradores que são usados para se passar os
parâmetros
13Janelas de registradores
14Representação circular
se F for chamado, os conteúdo de A.in e
A.loc devem ser salvos na memória
neste caso, o valor de SWP deve ser alterado
Ao passo que novas sub-rotinas são chamadas, o
valor de CWP deve ser alterado
Implementações típicas usam 8 janelas de 16
registradores cada.
15Variáveis Globais
- Uma possibilidade é usar endereçamento de memória
para as variáveis globais
Outra possibilidade é o uso de registradores de
uso exclusivo para variáveis globais
16Cache vs. Janela de registradores
17Arquitetura CISC
- Conjunto com um grande número de instruções .
- Motivações
- simplificação nos projetos de compiladores
- aumento de desempenho de HLL.
- Em suma dar melhor suporte as HLL.
18Argumentos
- Conjunto com um grande número de instruções
- - dificultam a implementação de pipeline
- simplificação nos projetos de compiladores
- - o compilador deve encontrar os casos que
combinam exatamente com a construção - programas usando CISC são menores
- - porém os opcodes são maiores, produzindo
maiores instruções.
19Características da arquitetura RISC
- Uma instrução por ciclo
- Operações entre registradores
- Modos de endereçamento mais simples
- Formatos de instruções mais simples
20Características RISC
- Tornar as máquinas mais simples para que sejam
mais velozes - Simplicidade
- Poucas instruções, simples e com poucos formatos
- Poucos modos de endereçamento
- Usar apenas LOAD/STORE para movimentação de dados
entre registradores e memória - Baseado em compiladores sofisticados para
otimizar o código
21Características RISC
- Alcançar alto desempenho através de registradores
rápidos, altas velocidades de CPU e otimização na
compilação - Uma instrução por ciclo
- Operações registrador a registrador
- Formato fixo de instruções.
- Implementação mais eficiente
22Exemplos
- RISC MIPS, SPARC, Alpha, HP-PA, PowerPC, i860,
i960. - CISC VAX, PDP-11, Intel i86, Motorola 68K.
- CISC com macro/micro-instruções RISC internas
Pentium, AMD Athlon.
23RISC x CISC
- Complex Instruction Set Computer (CISC)
- CISC é caracterizada por usar um grande conjunto
de instruções complexas, objetivando o uso mínimo
de memória - Instruções típicas CISC incorporam complexos
modos de endereçamento para os operandos - Máquinas CISC usualmente possuem número pequeno
de registradores - Máquinas CISC foram, na maioria, construídas como
microprogramadas, mas, recentemente, algumas têm
implementado micro/macro-instruções RISC
(executadas diretamente pelo hardware).
24RISC x CISC
- Reduced Instruction Set Computer (RISC)
- RISC é caracterizada por usar um conjunto pequeno
de simples instruções - Máquinas RISC usualmente utilizam apenas
instruções Load e Store para acesso a memória - Máquinas RISC frequentemente possuem número
elevado de registradores - Máquinas RISC têm sido construídas para que suas
instruções sejam diretamente executadas pelo
hardware (não há microcódigo).
25RISC vs. CISC
Não existe a melhor arquitetura
Uma boa filosofia usar o melhor dos dois