ISA Fundamentos 1
Definições
Características de uma ISA
Efeitos de uma ISA
Modos de endereçamento
Questões de complexidade da ISA
RISC x CISC
Problema
Algoritmo
Programa (linguagem)
Ambiente de execução (SO, etc.)
ISA (Arquitetura)
Microarquitetura
Lógica
Circuitos
Eletrônica
Fonte: adaptado de “Computer Architecture Lecture 1: Introduction and
Basics” (http://www.ece.cmu.edu/~ece447/s14/doku.php)
ISA (Instruction Set Architecture)
◦ Conjunto de instruções da arquitetura
◦ Opcodes, modos de endereçamento, tipos de dados
◦ Registradores, códigos de condições
◦ Modos de acesso à memória
◦ Endereçamento, faixas de endereços, etc.
Diferentes ISAs propostas ao longo dos anos
◦ x86, IA-32, Intel 64, Power, ARM, MIPS, etc.
Uma instrução de uma ISA consiste basicamente de um código de operação
(opcode) e de operandos (dependentes da operação) Por exemplo, para a ISA Intel 64 e IA-32:
Opcode
Operandos
Fonte: Intel 64 and IA-32 Architectures Software Developers Manual
Para a ISA ARM7TDMI:
Operandos
Opcode
Fonte: Atmel Corporation ARM7TDMI (Thumb) Datasheet
Codificação das instruções de uma ISA é binária sequência de bits de acordo com o formato de opcode e operandos implementado (esperado) pela microarquitetura No entanto, desenvolver software baseado em códigos binários é trabalhoso porém, esta foi a abordagem utilizada nas primeiras
ISAs desenvolvidas
Como esta abordagem evoluiu??
Propôs-se linguagens de montagem
(assembly) para as ISAs mapeamento umpara-um de cada código binário de instrução para um mnemônico “muito” mais fácil de utilizar Exemplos de mnemônicos:
◦ x86 (IA-32):
◦ ARM7TDMI:
mov %eax, 0x28(%esp) add r0, r1, r0
Questão: quais são os códigos binários correspondentes aos mnemônicos do exemplo?
Assembly é específico para uma ISA específica depende de detalhes específicos das instruções que aquela ISA suporta
Estudaremos o assembly de uma ISA nas próximas aulas -> ARM7TDMI