Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 ›...

48
IA32 Walter Fetter Lages [email protected] Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica Copyright (c) Walter Fetter Lages – p.1

Transcript of Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 ›...

Page 1: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

IA32Walter Fetter [email protected]

Universidade Federal do Rio Grande do Sul

Escola de Engenharia

Departamento de Engenharia Elétrica

Copyright (c) Walter Fetter Lages – p.1

Page 2: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Introdução

• 80386DX, 80386SX• 80486DX, 80486SX, 80486DX2, 80486DX4• Intel Pentium, Pentium-MMX• Intel Pentium Pro, Pentium II, Celeron• Intel Pentium III, Celeron• Intel Pentium 4, Pentium 4 D, Celeron• Core Duo, Centrino• Intel Core 2 Duo, Core 2 Quad, Centrino

• EM64T, x8664• EM64T 6= IA64

Copyright (c) Walter Fetter Lages – p.2

Page 3: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Introdução

• AMD 5x86, K5, 6x86• AMD K6, K6II, K6III• AMD Athlon, Duron• Athlon XP, Semprom, Turion• AMD Athlon 64, Turion 64

• AMD64, x8664• AMD64 ≈ EM64T

• AMD Athlon 64 X2, Turion 64 X2• AMD64, x8664

• Transmeta Crusoé• Cyrix 5x86, M1

Copyright (c) Walter Fetter Lages – p.3

Page 4: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Diagrama de Blocos DX4

Copyright (c) Walter Fetter Lages – p.4

Page 5: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Sinais DX4

Copyright (c) Walter Fetter Lages – p.5

Page 6: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Ciclo de Leitura Externa DX4

Copyright (c) Walter Fetter Lages – p.6

Page 7: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Modos de Operação

• Modo protegido• Modo virtual 86

• Emulação do modo real por uma tarefa demodo protegido

• Modo real• Modo original do 8086• Modo default

• Modo de gerenciamento de sistema• Introduzido com o 80386SL• Utilizado para função de economia de energia• Endereçamento similar ao modo real

Copyright (c) Walter Fetter Lages – p.7

Page 8: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Níveis de Privilégio

Copyright (c) Walter Fetter Lages – p.8

Page 9: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Verificação de Privilégios

Copyright (c) Walter Fetter Lages – p.9

Page 10: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Ambiente de Execução Básico

Copyright (c) Walter Fetter Lages – p.10

Page 11: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Registradores de Uso Geral

Copyright (c) Walter Fetter Lages – p.11

Page 12: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Registradores de Segmento

Copyright (c) Walter Fetter Lages – p.12

Page 13: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Flags

Copyright (c) Walter Fetter Lages – p.13

Page 14: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Ambiente de Sistema

Copyright (c) Walter Fetter Lages – p.14

Page 15: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Registradores de Controle

Copyright (c) Walter Fetter Lages – p.15

Page 16: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Registradores de Controle

PG: Paging

CD: Cache disable

NW: Not write-through

AM: Aligment mask

WP: Write protect

NE: Numeric error

ET: Extension type

TS: Task switched

EM: Emulation

MP: Monitor coprocessor

PE: Protection enableCopyright (c) Walter Fetter Lages – p.16

Page 17: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Registradores de Controle

PCD: Page-level cache disable

PWT: Page-leve write-through

VME: Virtual-8086 mode extensions

PVI: Protected-mode virtual interrupts

TSD: Time stamp disable

DE: Debugging extensions

PSE: Page size extensions

PAE: Physical address extension

MCE: Machine-check enable

PGE: Page global enale

PCE: Performance-monitoring conter enableCopyright (c) Walter Fetter Lages – p.17

Page 18: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Relocação

• Em sistemas multitarefa, cada tarefa terá umendereço inicial diferente. Como oprogramador/compilador/linker saberá oendereço inicial (e endereços de subrotinas,dados, etc...) da tarefa?• Problema da relocação• Gerar apenas código com endereços relativos

• Código relocável• Relocação durante a carga da tarefa na

memória

Copyright (c) Walter Fetter Lages – p.18

Page 19: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Segmentação

• Associa-se a cada área de memória um valor debase e um valor de limite

• base=endereço inicial• limite=endereço máximo ou tamanho• Todas as tarefas são codificadas assumindo que a

sua área de memória começa em 0• Quando a tarefa é selecionada para executar, base

e limite são carregados pelo sistema operacionalem registradores especiais na CPU

Copyright (c) Walter Fetter Lages – p.19

Page 20: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Segmentação

• Endereço físico = offset + base• Soma feita por hardware a cada acesso à

memória• Endereços são verificados quanto ao limite

• Uma tarefa não pode acessar a área das outras

Copyright (c) Walter Fetter Lages – p.20

Page 21: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Exemplo

• 64kB de memória total• Programa 1

• Tamanho de 16kB• Carregado no endereço físico 1000h

• Programa 2• Tamanho de 32kB• Carregado no endereço físico 6000h

• Ambos acessam o endereço lógico 3000h• Tabela de segmentos no endereço físico 0400h

Copyright (c) Walter Fetter Lages – p.21

Page 22: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Segmentação

• O seletor e descritor de segmento são controladospelo sistema operacional

• O offset é controlado pelo programa de aplicação• Proteção

• Usualmente o descritor de segmento temalgums bits associados que são utilizados paradeterminar as características de proteção dosegmento

• Permissões de leitura, escrita, execução• Cache de descritor de segmento

• Evita dois acessos a memória• Alterado apenas quando o registrador de

seletor de segmento é alteradoCopyright (c) Walter Fetter Lages – p.22

Page 23: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Modelo Flat

Copyright (c) Walter Fetter Lages – p.23

Page 24: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Modelo Flat Protegido

Copyright (c) Walter Fetter Lages – p.24

Page 25: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Multi-segmentos

Copyright (c) Walter Fetter Lages – p.25

Page 26: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Segmentação na IA32

• Local Descriptor Table (LDT)• Global Descriptor Table (GDT)

Copyright (c) Walter Fetter Lages – p.26

Page 27: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

GDT e LDT

Copyright (c) Walter Fetter Lages – p.27

Page 28: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Segmentação na IA32

Copyright (c) Walter Fetter Lages – p.28

Page 29: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Seletor de Segmento na IA32

Copyright (c) Walter Fetter Lages – p.29

Page 30: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Descritor de Segmento

Copyright (c) Walter Fetter Lages – p.30

Page 31: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Segmentação no Modo V86

• Semelhante à segmentação no 8086• Seletores são utilizados como base dos segmentos

Copyright (c) Walter Fetter Lages – p.31

Page 32: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Memória Virtual

• Paginação• Falta de página• Page-table

• Endereço• Virtual• Físico

Copyright (c) Walter Fetter Lages – p.32

Page 33: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Tabela de Páginas

Copyright (c) Walter Fetter Lages – p.33

Page 34: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Hardware de Paginação

• Usualmente a tabela de páginas é mantida emmemória e não em registradores• Registrador de base da tabela de páginas• Translation look-aside buffer (TLB)

• Evita dois acessos a memória• Páginas também podem ter bits de proteção

associados• Bit de presença/ausência

Copyright (c) Walter Fetter Lages – p.34

Page 35: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Páginas de 4MB

Copyright (c) Walter Fetter Lages – p.35

Page 36: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Páginas de 4KB

Copyright (c) Walter Fetter Lages – p.36

Page 37: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Segmentação e Paginação

Copyright (c) Walter Fetter Lages – p.37

Page 38: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Physical Address Extension

Copyright (c) Walter Fetter Lages – p.38

Page 39: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Páginas de 2MB

Copyright (c) Walter Fetter Lages – p.39

Page 40: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Page Size Extension

Copyright (c) Walter Fetter Lages – p.40

Page 41: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Mapeamento Segmentos/Páginas• Segmentos mapeados em páginas ou não• Mapeamento de segmentos em páginas simplifica

o gerenciamento

Copyright (c) Walter Fetter Lages – p.41

Page 42: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Proteção de I/O

• Existe um nível de privilégio de I/O• Apenas processos com nível de privilégio

menor ou igual podem executar instruções deI/O

• Associado a cada processo pode existir umbitmap de permissões de I/O• Apenas as portas habilitadas podem ser

acessadas• Hardware Virtual

• Virtualização de dispositivos

Copyright (c) Walter Fetter Lages – p.42

Page 43: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

I/O Permission Bit Map

Copyright (c) Walter Fetter Lages – p.43

Page 44: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Coprocessador (FPU)

• Registradores e opcodes ponto flutuante• Na IA32 opera em notação polonesa reversa• A partir do 80486DX passou a ser FPU

Copyright (c) Walter Fetter Lages – p.44

Page 45: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Registradores FPU

Copyright (c) Walter Fetter Lages – p.45

Page 46: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Controle FPU

Copyright (c) Walter Fetter Lages – p.46

Page 47: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Status FPU

Copyright (c) Walter Fetter Lages – p.47

Page 48: Walter Fetter Lages Universidade Federal do Rio Grande do ... › ~fetter › eng04476 › ia32.pdf · • Modo virtual 86 • Emulação do modo real por uma tarefa de modo protegido

Exemplo FPU

.intel_syntax noprefix

.text

.global sum

# float sum(float a,float b)

sum:

push ebp

mov ebp,esp

finit

wait

fld dword ptr [ebp+8] # a

fadd dword ptr [ebp+12] # b

fwait

pop ebp

ret

Copyright (c) Walter Fetter Lages – p.48