arquitetura de computadores - boscojr.com · 486 (pipeline risc, cache l1 integrada) ... – na...

33
Arquitetura de Computadores Prof. João Bosco Jr.

Upload: vudat

Post on 09-Nov-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Arquitetura de ComputadoresProf. João Bosco Jr.

Page 2: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Unidade IIAula 1

Nível ISA

Page 3: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

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

Page 4: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISACompatibilidade

● 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

Page 5: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISAFamilia 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)

Page 6: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

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

Page 7: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISAVisã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)

Page 8: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISARegistradores

● Visíveis no nível ISA– Registradores de controle

● Alguns são visíveis ou R/W somente no modo núcleo– Registradores de uso Geral

● Armazenamento Temporário– Registradores Especiais

● Controle da Pilha– Registradores de Status

● Invisíveis no nível ISA– Endereçamento

Page 9: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISARegistradores (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

Page 10: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISARegistradores (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, 0x200mul cx

cmp ax, 0x1000je _AX_3000jmp _AX_2000

_AX_3000:mov ax, 0x3000jmp _Sai

_AX_2000:mov ax, 0x2000_Sai:REF: Developer Manual pg 3-22

Page 11: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISARegistradores (cont...)

● Ciclo de Busca da Instrução

Page 12: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISARegistradores

Page 13: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISAInstruçõ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

Page 14: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISAInstruções

Page 15: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISATipos 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)

● 0 = Falso, X = verdadeiro– Caracteres

● ASC II, Unicode– Cadeias de Caractere

Page 16: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISATipos de dados

Page 17: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISAFormatos de Instrução

● OPCODE (código da operação)● Informações adicionais– Operando, endereço do operando, etc

Page 18: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISAFormatos 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

Page 19: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISAFormatos de Instrução

● Expansão de OPCODES

Page 20: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISAModos 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

Page 21: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISAModos 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.

Page 22: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISATipos de Instrução

● Movimentação (Cópia) de dados● Diádicas – Dois operandos produz um resultado

● Monoádicas– Apenas um operando produz o resultado

● Comparações e desvios condicionais– Alteram a sequencias de instruções a ser executada

● Chamadas de procedimento● Controle de laço● Entrada e Saída

Page 23: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISA - Tipos de Instrução Movimentação de Dados

● Movimentações Possíveis– Registrador → Registrador– Memória → Registrador– Registrador → Memória– Memória → Memória

● Arquitetura RISC– LOAD, STORE

● Algumas instruções pode indicar a quantidade de dados a ser movido (bits até palavras)

Page 24: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

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

Page 25: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISA - Tipos de Instrução Comparações e Desvios (x86)

section .data f_maior db 'maior' f_menor db 'menor' f_igual db 'igual' f_buf_len: equ 5 sys_write: equ 4 sys_close: equ 6

section .text global _start

_start: mov eax,100 mov ebx,100 cmp eax,ebx jg maior jl menor je igual

maior: mov ecx,f_maior jmp imprime

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

● Desvia para um label específico● Não salva o PC

Page 26: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISA - Tipos de Instrução Procedimento/Função (CALL)

maior: mov ecx,f_maior call imprime jmp fimmenor: mov ecx,f_menor call imprime jmp fimigual: mov ecx,f_igual call imprime jmp fimfim: mov eax , 1 xor ebx, ebx int 80himprime: mov eax, sys_write mov ebx, 1 mov edx, f_buf_len int 80h ret

section .data f_maior db 'maior' f_menor db 'menor' f_igual db 'igual' f_buf_len: equ 5 sys_write: equ 4 sys_close: equ 6

section .text global _start

_start: mov eax,100 mov ebx,100 cmp eax,ebx jg maior jl menor je igual

● Desvia para um label específico● salva o PC● Instrução de retorno RET

Page 27: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISA - Tipos de InstruçãoEntrada 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

Page 28: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISA - Tipos de InstruçãoEntrada 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

Page 29: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISAFluxo de Controle

● Desvios(JMP,GOTO)● Procedimentos(CALL)● Co-rotinas● Exceção● Interrupções

PC = f(t) Fluxo normal de execução

PC = f(t) Fluxo desvio de Fluxo

Já vimos!

Page 30: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Fluxo controleCo-rotinas

● Procedimento– Que chama– Chamado

● Rotinas– Executam alternadamente

Page 31: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Fluxo de ControleExceçõ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

Page 32: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISAProjeto (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

Page 33: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de

Nível ISAProjeto (5 + 5 pontos)

● Exemplo

Op-code Mnemonico

Função 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.

JUMP 6

111 HALT Para a Execução HALT