Nivel isa
ISA: Introdução
• Nível do conjunto de instruções da arquitetura (Instruction Set Architecture)
– Interface entre o hardware e o software – Programas escritos em linguagens de alto nível são traduzidos para uma linguagem comum (nível ISA)
• ISA isn’t assembly language! • ISA define a interface entre os compiladores e o hardware.
– O ideal seria que:
• Os projetistas de compiladores especificassem, para os arquitetos de hardware, os requisitos desejados nesse nível. • Os arquitetos de hardware apresentassem para os projetistas de compiladores aquilo que efetivamente pode ser implementado!!!! (don’t dream, baby!!!)
ISA: HW/SW Interface
Visão Geral do Nível ISA (Tanenbaum, 2005)
ISA: Requisitos desejáveis
• Construir máquinas com melhor desempenho, mantendo compatibilidade com versões anteriores. • Definir um conjunto de instruções eficientes para uso atual e futuro.
– Um projeto ruim pode exigir:
• um grande número de portas lógicas no nível da microarquitetura.
• Um quantidade maior de memória para a execução dos programas.
• Fornecer um código alvo claro para o código compilado.
– Completude. O código deve ser completo de modo a permitir de modo fácil e eficiente a implementação do maior número de operações possível. – Regularidade. O formato das instruções deve ser regular, de modo a facilitar o entendimento e a implementação.
ISA: Visão Geral
• Definido como o modo como o programador (ou compilador) “vê” a máquina.
– Idealmente,
• Disponibiliza um grupo de instruções necessária para possibilitar a manipulação de memória, registradores e dispositivos de I/O. • Detalhes da organização interna da máquina podem ser ocultados.
– E.g. O programador (ou compilador) não sabe se a microarquitetura é microprogramada ou não.
– Na realidade,
• O programador precisa conhecer detalhes da máquina para maximizar o desempenho.
• Muitas máquinas podem operar em dois modos:
– Modo Kernel. Deve executar o sistema operacional