Conjunto de Instruções ISA - Instruction Set Architecture Arquitetura de computadores I Conjunto de Instruções
“Conjunto de instruções é a estrutura do computador na
qual o programador de linguagem de máquina deve entender para escrever programas para determinada máquina” Material da IBM da década de 60 ao introduzir o IBM 260 e unificar arquiteturas e conjunto de instruções Arquitetura de computadores I Conjunto de Instruções
Também a descrição da máquina que o projetista de
hardware deve conhecer e entender para projetar a correta implementação do computador. Arquitetura de computadores I Conjunto de Instruções Interface entre Software e Hardware: Atua como interface entre o Software e o Hardware Arquitetura de computadores I Conjunto de Instruções Provê um mecanismo pelo qual o software indica ao hardware o que deve ser feito Arquitetura de computadores I Conjunto de Instruções Interface entre Software e Hardware: • Utilização em muitas e diferentes formas (generalidade) • Prover conveniência para o alto nível • Prover eficiência no baixo nível Arquitetura de computadores I Conjunto de Instruções Categorias: • Armazenamento dos operandos no CPU Onde é que os operandos são guardados para além da memória? Arquitetura de computadores I Conjunto de Instruções Categorias: • Número de operandos chamados por instrução Quantos operandos são chamados numa instrução típica. Arquitetura de computadores I Conjunto de Instruções Categorias: • Localização dos operandos Pode algum operando de uma instrução da ALU estar localizado na memória? Ou têm todos os operandos na memória interna do CPU? Arquitetura de computadores I Conjunto de Instruções Categorias: • Operações Quais as operações fornecidas pela ISA. Arquitetura de computadores I Conjunto de Instruções Categorias: • Tipo e tamanho dos operandos Qual é o tipo e o tamanho de cada operando e como é isso especificado? Arquitetura de computadores I Conjunto de Instruções A ISA estabelece os padrões de bit's para cada instrução limitando o software a essas instruções. Alterar a ISA supõe alterações no hardware. Pode limitar inovações Arquitetura de computadores I Conjunto de Instruções
Mudanças e evoluções ao longo do tempo para se adaptar as
necessidades da computação e ao hardware Arquitetura de computadores I Conjunto de Instruções Arquitetura de computadores I Conjunto de Instruções Organização da ISA influenciada e determinada pela localização de operandos Arquitetura de computadores I Conjunto de Instruções Arquitetura de acumulador Utiliza apenas um acumulador, utiliza um único operando da memória para executar a operação. Arquitetura de computadores I Conjunto de Instruções Arquitetura de acumulador Utiliza apenas um acumulador, utiliza um único operando da memória para executar a operação. Arquitetura de computadores I Conjunto de Instruções: Arquitetura de Pilha A pilha está localizada na memória, a CPU contém um registro com um ponteiro para o topo da pilha. Cada instrução causa uma mudança ao ponteiro do topo da pilha Arquitetura de computadores I Conjunto de Instruções Arquitetura de registradores Modelos: registrador-memória, registrador-registrador Arquitetura de computadores I Conjunto de Instruções Arquitetura de registradores Modelos: registrador-memória, registrador-registrador Arquitetura de computadores I Conjunto de Instruções : Sumário das arquiteturas Arquitetura de stack • modelo simples de avaliação de expressões (algoritmo Reverse Polish). • instruções pequenas (boa densidade de código). • a stack não pode ser acessada aleatoriamente o que torna difícil gerar código eficiente (difícil de otimizar). • difícil de ter uma implementação rápida devido ao continuo uso da stack. Arquitetura de computadores I Conjunto de Instruções Arquitetura de acumulador • mínimo de estados internos. • instruções pequenas. • não tem mais nenhuma memória temporária, apenas o acumulador (é a arquitetura que gera maior tráfico de memória) Arquitetura de computadores I Conjunto de Instruções Arquitetura de registradores • modelo mais geral para a geração de código (torna mais fácil a geração de código). • os dados podem ser armazenados durante um longo período nos registradores • todos os operandos têm de ser nomeados o que conduz a instruções mais longas. Arquitetura de computadores I Conjunto de Instruções Visão Geral As arquiteturas de stack e de acumulador foram bastante populares no inicio pois a memória era cara, registradores eram grandes e caros (queriam-se pouco) e a tecnologia de compilação ainda era primitiva. Arquitetura de computadores I Conjunto de Instruções Visão Geral Atualmente as arquiteturas de registradores dominam: • menor importância do tamanho do código, os circuitos de alta-velocidade são mais baratos e cada vez menores, • evolução da tecnologia de compiladores • uso eficiente dos registradores diminui o tráfico de memória Arquitetura de computadores I Conjunto de Instruções Armazenamento de instruções e dados na memória No geral o endereço é do tipo byte Ordenação: Big Endian os bytes de menor ordem têm o menor endereço. Little Endian os bytes de maior ordem têm o menor endereço. Arquitetura de computadores I Conjunto de Instruções Armazenamento de instruções e dados na memória No geral o endereço é do tipo byte Ordenação: Big Endian os bytes de menor ordem têm o menor endereço. Arquitetura de computadores I Conjunto de Instruções Armazenamento de instruções e dados na memória No geral o endereço é do tipo byte Ordenação: Little Endian os bytes de maior ordem têm o menor endereço. Arquitetura de computadores I Conjunto de Instruções Armazenamento de instruções e dados na memória Arquitetura de computadores I Conjunto de Instruções Alinhamento
No geral acesso da CPU a objetos maiores que um byte
devem estar numa memória alinhada. Arquitetura de computadores I Conjunto de Instruções Alinhamento Justificativa • Acessos não alinhados requerem múltiplos acessos e por isso são mais lentos. • Lógica de hardware barata • Simplificação desenvolvimento de software Arquitetura de computadores I Conjunto de Instruções Modos de endereçamento O modo de endereçamento indica onde se encontra o operando (registrador, parte da instrução, ou endereço de memória) Arquitetura de computadores I Conjunto de Instruções Modos de endereçamento Imediato Arquitetura de computadores I Conjunto de Instruções Modos de enderaçamento Registrador Arquitetura de computadores I Conjunto de Instruções Modos de endereçamento Registrador Indireto Arquitetura de computadores I Conjunto de Instruções Modos de enderaçamento Direto Arquitetura de computadores I Conjunto de Instruções Modos de endereçamento Memoria Indireto Arquitetura de computadores I Conjunto de Instruções Modos de endereçamento Deslocamento Arquitetura de computadores I Conjunto de Instruções Exemplos: ATMEGA 328 Arquitetura de computadores I Conjunto de Instruções Exemplos: ARM Arquitetura de computadores I Conjunto de Instruções Exemplos: x86 Arquitetura de computadores I Conjunto de Instruções Exemplos: Neander Arquitetura de computadores I Conjunto de Instruções