Nível ISA - boscojr.com

Propaganda
Arquitetura de Computadores
Prof. João Bosco Jr.
Unidade II
Aula 1
Nível ISA
Nível ISA
●
●
●
●
Posicionado entre a microarquitetura e o SO
Define a arquitetura (Conjunto de Instruções)
É a interface entre o Software e o HW
É a linguagem intermediária comum
Nível ISA
Compatibilidade
Regra geral
●
–
–
–
Novos projetos devem ser compatíveis com os
antigos. Significa Implementar o mesmo conjunto de
instruções do sistema antigo
A novidade se dará através de novas instruções e
registradores.
Caso Intel Itanium (2001)
Consequências
●
–
–
Família de processadores
Ex.: x86
●
386,486,Pentium,Pentium II, Pentium III, Pentium IV, etc
Nível ISA
Familia x86
386
486 (Pipeline RISC, cache L1 integrada)
Pentium (Super Escalar, MMX, PAE)
Pentium II/III ( Cache L3, SSE)
Pentium IV (Hyper-Threading, SSE2)
●
●
●
●
●
–
SSE (Streaming SIMD Extensions)
Nível ISA
Características de um bom nível ISA
●
–
Deve ser fácil de implementar com eficiência
●
●
–
Diz respeito ao Hardware
Custo X Tecnologia (atuais e futuras)
Fácil de Gerar bom código
●
Diz respeito ao software
Nível ISA
Visão Geral
O que é?
●
–
–
Como a máquina se apresenta ao programador
Código gerado pelo compilador
Em alguns casos o compilador tem que se
preocupar em como as instruções são
executadas, para poder tirar proveito dos
recursos do hardware.
A documentação é fornecida pelo fabricante
●
●
●
EX.: Intel 64 and IA-32 Architetures Software
Developer Manual
Modos de Execução
●
–
Kernel (todas as instruções), usuário (restrito)
Nível ISA
Registradores
Visíveis no nível ISA
●
–
Registradores de controle
●
–
Registradores de uso Geral
●
–
Armazenamento Temporário
Registradores Especiais
●
–
Alguns são visíveis ou R/W somente no modo núcleo
Controle da Pilha
Registradores de Status
Invisíveis no nível ISA
●
–
Endereçamento
Nível ISA
Registradores (cont...)
Program status word (PSW)
●
–
–
–
–
–
–
Cada bit representa um status
N – A operação deu resultado negativo
Z – A operação deu resultado zero
V – Overflow
C – Carry – Out (Vai um)
P – Resultado teve paridade par
●
Quando o numero de bit 1 for par P=1
Nível ISA
Registradores (cont...)
Intel PSW=EFLAGS
●
–
–
–
–
–
OF – Overflow Flag
ZF – A operação deu resultado zero
SF – Signal Flag
CF – Carry Out Flag (Vai um)
PF – Parity Flag
ax = 0x200;
ax = cx * 0x200;
If (ax == 0x1000)
ax = 0x3000;
else
ax = 0x2000;
mov ax, 0x200
mul cx
cmp ax, 0x1000
je _AX_3000
jmp _AX_2000
_AX_3000:
mov ax, 0x3000
jmp _Sai
REF: Developer Manual pg 3-22
_AX_2000:
mov ax, 0x2000
_Sai:
Nível ISA
Registradores (cont...)
●
Ciclo de Busca da Instrução
Nível ISA
Registradores
Nível ISA
Instruções
Estudo de Caso Pentium 4
●
–
–
Compatibilidade 80XX (8086, 8088, 80386)
Modos
●
●
●
Real (8088)
Modo 8086 Virtual
Modo protegido
–
–
–
–
Modo 0 – Modo núcleo (usado pelo SO)
Modo 3 – Usados pelos programas
Modos 1 e 2 raramente são usados
Registradores
●
●
Uso Geral (EAX (AX (AH,AL), EBX, ECX, EDX)
Especiais:
–
–
●
●
ESI, EDI – Tratamento de cadeias por hardware
EBP, ESP – Apontam para base e topo da pilha
Flags (EFLAGS), Contador de Programa (EIP)
“Fosseis”: CS, SS, DS, FS,ES,GS
Nível ISA
Instruções
Nível ISA
Tipos de dados
Representação de dados usando bits
Tipos numéricos
●
●
–
Inteiros
●
●
–
Com Sinal
Sem Sinal
Ponto Flutuante
●
IEEE 754
Tipos Não Numéricos
●
–
Booleanos (Teoricamente precisa de bit)
●
–
Caracteres
●
–
0 = Falso, X = verdadeiro
ASC II, Unicode
Cadeias de Caractere
Nível ISA
Tipos de dados
Nível ISA
Formatos de Instrução
OPCODE (código da operação)
Informações adicionais
●
●
–
Operando, endereço do operando, etc
Nível ISA
Formatos de Instrução
Expansão de OPCODES
n+k : k bits p/ opcodes e n bits p/ endereço
●
●
–
Consequencia: 2^k opcodes x 2^n endereços
A ideia é variar a quantidade de bits p/ opcode
●
–
Ex (16 bits) Instruções começando:
●
●
●
●
0x0(0000) a 0xE(1110): opcode de 4 bits
0xF0(11110000) a 0xFD(11111101): opcode de 8 bits
0xFE0 a 0xFFE: opcode de 12 bits
0xFFF a 0xFFFF: opcode de 16 bits
Nível ISA
Formatos de Instrução
●
Expansão de OPCODES
Nível ISA
Modos de Endereçamento
Especifica onde estão os operandos
Imediato
●
●
–
–
O operando já é parte da instrução
Ex: mov EAX,#32
Direto
●
–
–
Na instrução é informado o endereço do operando
na memória
Ex: mov EAX, $0x93
Registrador
●
–
Na instrução é informado o registrador que contém o
operando
Nível ISA
Modos de Endereçamento
Indireto de Registrador
●
–
O registrador informado na instrução contém o
endereço do operando, ou seja o registrador tem
um ponteiro.
Indexado
●
–
Neste modo a instrução, para ter acesso a um
operando, deve conter um endereço base da
memória e um deslocamento em relação ao
endereço base.
Nível ISA
Tipos de Instrução
Movimentação (Cópia) de dados
Diádicas
●
●
–
Monoádicas
●
–
–
●
●
Apenas um operando produz o resultado
Comparações e desvios condicionais
●
●
Dois operandos produz um resultado
Alteram a sequencias de instruções a ser executada
Chamadas de procedimento
Controle de laço
Entrada e Saída
Nível ISA - Tipos de Instrução
Movimentação de Dados
Movimentações Possíveis
●
–
–
–
–
Arquitetura RISC
●
–
●
Registrador → Registrador
Memória → Registrador
Registrador → Memória
Memória → Memória
LOAD, STORE
Algumas instruções pode indicar a quantidade
de dados a ser movido (bits até palavras)
Nível ISA - Tipos de Instrução
Comparações e Desvios (x86)
CMP – Comparação
●
–
CMP EAX,EBX
JE – Pula se igual (PSW (EFLAGS), ZF=0)
●
–
JE Label
JNE – Pula se diferente (PSW(EFLAGS),ZF=1)
●
–
JNE Label
JL – Pula se menor (PSW(EFLAGS),SF=0)
●
–
JL Label
JG – Pula se maior (PSW(EFLAGS),SF=0)
●
–
JG Label
Nível ISA - Tipos de Instrução
Comparações e Desvios (x86)
●
●
Desvia para um label específico
maior:
Não salva o PC
mov ecx,f_maior
jmp imprime
section .data
f_maior db
f_menor db
f_igual db
f_buf_len:
sys_write:
sys_close:
'maior'
'menor'
'igual'
equ 5
equ 4
equ 6
section .text
global _start
_start:
mov eax,100
mov ebx,100
cmp eax,ebx
jg maior
jl menor
je igual
menor:
mov ecx,f_menor
jmp imprime
igual:
mov ecx,f_igual
jmp imprime
imprime:
mov eax, sys_write
mov ebx, 1
mov edx, f_buf_len
int 80h
mov eax , 1
xor ebx, ebx
int 80h
Nível ISA - Tipos de Instrução
Procedimento/Função (CALL)
●
●
●
Desvia para um label específico
maior:
mov ecx,f_maior
salva o PC
call imprime
jmp fim
Instrução de retorno RET
section .data
f_maior db
f_menor db
f_igual db
f_buf_len:
sys_write:
sys_close:
'maior'
'menor'
'igual'
equ 5
equ 4
equ 6
section .text
global _start
_start:
mov eax,100
mov ebx,100
cmp eax,ebx
jg maior
jl menor
je igual
menor:
mov ecx,f_menor
call imprime
jmp fim
igual:
mov ecx,f_igual
call imprime
jmp fim
fim:
mov eax , 1
xor ebx, ebx
int 80h
imprime:
mov eax, sys_write
mov ebx, 1
mov edx, f_buf_len
int 80h
ret
Nível ISA - Tipos de Instrução
Entrada e Saída
Controlador de Dispositivo
●
●
Faz a interface entre o dispositivo e o barramento
E/S programada com espera ocupada
●
●
●
●
●
1: Monitora o estado (registrador interno: Bit READY)
2: Envia o dado (uma palavra ou byte)
3: Espera o resultado (registrador interno: Bit READY)
Usa CPU mesmo quando não está transferindo
E/S por interrupção
●
–
Para cada byte ou palavra
●
●
1: Verifica o estado (registrador interno: Bit READY)
2: Liga a interrupção (registrador interno: Bit INT)
–
●
●
Se não estiver pronto
3: Aguarda interrupção (Barramento de controle)
4: Le ou envia o dado
Nível ISA - Tipos de Instrução
Entrada e Saída
E/S por DMA
●
–
Informações são passadas para o controlador DMA
●
●
●
●
–
–
o dispositivo,
endereço de memória destino/origem
Quantidade de dados (contagem)
Tipo de operação (leitura ou escrita)
Decrementa a contagem a cada transferência
Interrompe a CPU quando chagar a zero
Nível ISA
Fluxo de Controle
●
●
●
●
●
Desvios(JMP,GOTO)
Procedimentos(CALL)
Co-rotinas
Exceção
Interrupções
Já vimos!
PC = f(t) Fluxo normal de execução
PC = f(t) Fluxo desvio de Fluxo
Fluxo controle
Co-rotinas
Procedimento
●
–
–
Que chama
Chamado
Rotinas
●
–
Executam alternadamente
Fluxo de Controle
Exceções e Interrupção
O Fluxo é desviado automaticamente para
uma posição de memória onde estará o
tratador.
Exceções
●
●
–
–
–
–
São causadas pelo programa (Software)
Divisão por zero
Falha de proteção
Instrução ilegal
Interrupções
●
–
São causadas pelo hardware
Nível ISA
Projeto (5 + 5 pontos)
Projetar uma arquitetura (5,0):
●
–
–
–
–
A arquitetura deve ter no máximo 15 instruções
Instruções (Mnemônico, OPCODE, OPERANDOS)
Registradores e Memória
Traduzir um programa de alto nível
Extra:
●
–
–
Montador (Gerador do código HEX) – 1,0
Emulador da arquitetura usando o HEX de
preferência – 4,0
Nível ISA
Projeto (5 + 5 pontos)
●
Exemplo
Op-code Mnemon Função
ico
Exemplo
001
LOAD
Carrega o valor do operando no
acumulador
LOAD 10
010
STORE
Armazena o valor do acumulador
no endereço especificado
STORE 8
011
ADD
Adiciona o valor especificado ao
acumulador
ADD #5
100
SUB
subtrai o valor do operando do
acumulador
SUB #1
101
EQUAL
se o valor do operando é igual a
valor do acumulador pula a
próxima instrução
EQUAL #20
110
JUMP
Pula para uma instrução
especificada setando o PC para o
valor especificado pelo operando.
111
HALT
Para a Execução
JUMP 6
HALT
Download