Top Banner
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
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

Jun 07, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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