• Nenhum resultado encontrado

02- AulaIHS-ArquiteturaIntel

N/A
N/A
Protected

Academic year: 2021

Share "02- AulaIHS-ArquiteturaIntel"

Copied!
31
0
0

Texto

(1)

Interface Hardware-Software

(2)

História do ISA Intel x86

Evolução garantindo compatibilidade com versões

anteriores

– 8080 (1974): microprocessador de 8 bits

– 8086 (1978): extensão do 8080 para 16 bits

 Registradores dedicados de 16 bits

– 8087 (1980): coprocessador para ponto flutuante

 Adiciona instruções de ponto flutuante e pilha

– 80286 (1982): endereços de 24 bits e MMU

 Modelo de proteção da memória

– 80386 (1985): extensão para 32 bits (chamado de IA-32)

 Modos de endereçamento e operações adicionais

 Registradores e endereçamento de 32 bits

– i486 (1989): utilização de pipeline, caches on-chip

(3)

Evoluindo sempre…

– Pentium (1993): superescalar

 Versões posteriores incluiram instruções MMX (Multi-Media eXtension)

 O famoso bug da instrução FDIV

– Pentium III (1999)

 Adicionou instruções SSE (Streaming SIMD Extensions) e registradores associados

 70 instruções adicionadas, 4 operações com ponto flutuante de precisão simples podiam ser feitas

paralelamente

– Pentium 4 (2001)

 Adicionou 144 instruções (SSE2)

 Permitia que operações com ponto flutuante com precisão dupla fossem realizadas paralelamente

(4)

E mais ainda…

– AMD64 (2003): estendeu a arquitetura para 64 bits

 Aumentou registradores para 64 bits

 Aumentou o número de registradores

– EM64T – Extended Memory 64 Technology (2004)  AMD64 adotada pela Intel (com refinamentos)

 Adicionou 13 instruções SSE3

– Intel Core (2006)

 Adicionou 54 instruções SSE4

– AMD64 (2007): mais 170 instruções SSE5

 Introduziu instruções com 3 operandos como o MIPS

(5)

Registradores do IA-32 (Arquitetura de 32 bits)

Registradores de 16 bits

Apenas 8

registradores de 32 bits propósito geral

(6)

Registradores de Propósito Geral (32 bits)

 Podem ser referenciados também como registradores de 16 bits(ex: AX), pela parte baixa dos 16 bits(ex: AL), ou ainda pela parte alta dos 16 bits(ex: AH)

 Embora sejam de propósito geral, em algumas instruções os diferentes registradores tem um uso específico

– EAX,EDX – Multiplicação, divisão, operações de E/S

– ECX – Instruções de laço, rotação, deslocamento de bits

AH AL BH BL CH CL DH DL EAX EBX ECX EDX 31 16 15 8 7 0 AX BX CX DX Reg 32 bits Reg 16 bits Acumulador Base Contador Dados

(7)

Chapter 2 — Instructions: Language of the Computer — 7

Exemplo de Uso do AL/AX

MUL CL

00 20H 00 80H AH AL CH CL 10 00H AH AL Multiplica CL por AL e coloca resultado em AX

(8)

Mais Registradores de Propósito Geral (32 bits)

 Registradores de Índice devem ser utilizados em instruções que manipulam strings

– Estes tipos de instruções geralmente incrementam/decrementam implicitamente estes registradores

 Registrador Stack Pointer deve guardar endereço do topo da pilha

– Instruções como POP/PUSH incrementam/decrementam o ESP

 O Base Pointer deve ser utilizado como ponteiro base para um acesso a memória SI DI ESI EDI ESP EBP 31 16 15 0 Reg 32 bits Reg 16 bits Source Index Destination Index SP BP Stack Pointer Base Pointer

(9)

Registradores de Segmentos (16 bits)

 Servem para controlar e apontar para porções da memória que devem ser acessados

– CS – Busca de instruções

– SS – Operações na pilha, como chamada e retorno de subrotinas

– DS – Ler e escrever dados do programa

– ES,FS,GS – Não tem função específica CS 15 0 Segmento de código SS DS ES FS GS Segmento da pilha Segmento de dados Segmento extra Segmento extra Segmento extra

(10)

Chapter 2 — Instructions: Language of the Computer — 10

Utilidade dos Registradores de Segmentos

CS 15 0 SS DS ES FS GS .code mov ax,var1 add ax,var2 .data var1 db 4 var2 db 5 valorECX db 2 dup(0h)

(11)

Chapter 2 — Instructions: Language of the Computer — 11

Registradores de Controle (32 bits)

 IP (Instruction pointer) aponta para a instrução a ser executada dentro do segmento de código corrente

– Não pode ser alterado explicitamente pelo programador

– É modificado implicitamente por certas instruções

 FLAGS é utilizado para guardar o estado da CPU e também para seu controle

– É modificado implicitamente pelas instruções

– Instruções de tomadas de decisão baseiam-se neste registrador IP FLAGS EIP EFLAGS 31 16 15 0 Reg 32 bits Reg 16 bits Contador do programa Flags

(12)
(13)

Chapter 2 — Instructions: Language of the Computer — 13

Endianness do x86

Memória 00H 00H 12H 34H 322H 323H 321H 320H Memória 34H 12H 00H 00H 322H 323H 321H 320H 001234H Big-endian Little-endian Byte mais significativo Byte mais significativo

x86 é Little-endian

(14)

Operandos no IA-32

Dois operandos

– Em instruções aritméticas/lógicas primeiro operando é origem e destino

 Pode ter um operando na memória

Operando origem/dest Segundo operando origem

Registrador Registrador

Registrador Imediato

Registrador Memória

Memória Registrador

Memória Imediato

Há algumas poucas instruções que possuem a opção de

utilizarem três operandos

(15)

Modos de Endereçamento Básicos do IA-32

Modos de endereçamento comuns

– Registrador, imediato, endereçamento base

Modos de endereçamento mais complexos

– Direto

– Registrador indireto

– Indexado

―Base Indexado

―Base Indexado com deslocamento

―String

―Portas

Dependendo do modo de endereçamento, certos

registradores não podem ser utilizados

(16)

Modo Registrador

Neste modo, os operandos estão nos registradores

0001H AX 0004H BX Operando 2 Operando 1 0005H AX Operando 1

ADD

AX,

BX

ADD AX BX Reg 1 Reg 2

(17)

Modo Imediato

Neste modo, um operando está contido na própria

instrução

Imediato pode ser um número de 8,16 ou 32 bits

Não pode ser utilizado para registradores de segmento!

0001H AX 3H Operando 2 Operando 1 0004H AX Operando 1

ADD

AX,

3H

ADD AX 3H Reg 1 Imed.

(18)

Modo Direto

Neste modo, um operando está contido na memória

A instrução contém o endereço do operando em relação a

um segmento

Deve vir especificado com o uso de colchetes ([ ]) Segmento padrão é DS, senão deve ser especificado Ex: MOV ES:[2000H],AX

0001H AX Memória Operando 1 1235H AX Operando 1

ADD

AX,

[300H]

ADD AX 300H Reg 1 End. 12H 34H 00H 00H DS + 300H DS +301H Operando 2 DS + 299H DS + 298H

(19)

Modo Registrador Indireto

A instrução contém o registrador que armazena um

endereço do operando em relação a um segmento

Deve vir especificado com o uso de colchetes ([ ]) Só podem ser utilizados BX,BP,SI,DI

Segmento padrão é DS, exceto quando BP usado (padrão SS)

0001H AX

Memória Operando 1

1235H AX

Operando 1

ADD

AX,

[SI]

ADD AX SI Reg 1 Reg 2 12H 34H 00H 00H DS + 300H DS +301H Operando 2 DS + 299H DS + 298H 0300H SI

(20)

Modo Base

Similar ao endereçamento indireto, contudo pode-se somar

um valor ao endereço apontado pelo registrador (base)

Deve vir especificado com o uso de colchetes ([ ])

Só podem ser utilizados BX,BP como registrador base Valor deve ser de 8 ou 16 bits com sinal

Segmento padrão é DS para BX e SS para BP

0001H AX Memória Operando 1 1235H AX Operando 1

ADD

AX,

[BX + 4]

ADD AX BX Reg 1 Base 12H 34H 00H 00H DS + 304H DS +305H Operando 2 DS + 303H DS + 302H 0300H BX 4 Offset +4

(21)

Modo Indexado

Similar ao endereçamento base, contudo somente os

registradores SI e DI podem ser utilizados para apontar

para um endereço de memória (registradores de índice)

Deve vir especificado com o uso de colchetes ([ ]) Segmento padrão é DS 0001H AX Memória Operando 1 1235H AX Operando 1

ADD

AX,

[SI + 4]

ADD AX SI Reg 1 Base 12H 34H 00H 00H DS + 304H DS +305H Operando 2 DS + 303H DS + 302H 0300H SI 4 Offset +4

(22)

Modo Base Indexado

Endereço do operando na memória é o resultado da soma

dos endereços do segmento, do registrador de base e do

registrador de índice

Deve vir especificado com o uso de colchetes ([ ]) Segmento padrão é DS 0001H AX Memória Operando 1 1235H AX Operando 1

ADD

AX,

[BP + SI]

ADD AX BP Reg 1 Base 12H 34H 00H 00H DS + 304H DS +305H Operando 2 DS + 303H DS + 302H 0300H BP SI Índice 0004H SI +

(23)

Modo Base Indexado com Deslocamento

Endereço do operando na memória é o resultado da soma

dos endereços do segmento, do registrador de base, do

registrador de índice e de valor de deslocamento (offset)

Deve vir especificado com o uso de colchetes ([ ]) Segmento padrão é DS 0001H AX Memória Operando 1 1235H AX Operando 1

ADD

AX,

[BP + SI + 8]

ADD AX BP Reg 1 Base 12H 34H 00H 00H DS + 30CH DS + 30DH Operando 2 DS + 30BH DS + 30AH 0300H BP SI Índice 0004H SI + 8 Offset 8

(24)

Modo Base Indexado Escalar

Modo utilizado para gerar endereços de 32 bits, o

operando na memória é o resultado da soma dos

endereços do segmento, do registrador de base, e do

registrador de índice multiplicado for um fator escalar

Fator pode ser 1,2,4,8

00000001H EAX

Memória Operando 1

00001235H EAX Operando 1

ADD

EAX,

[EBX][ECX *4]

ADD EAX EBX Reg 1 Base 00H 00H 12H 34H DS + 322H DS + 323H Operando 2 DS + 321H DS + 320H 00000300H EBX ECX Índice 00000008H ECX + 4 Fator 4 *

(25)

Modo de Endereçamento de Portas

Específico para E/S, o operando é dado pelo endereço

(imediato) de uma porta ou é dado pelo endereço contido

pelo registrador DX

0001H AX Porta 80H Operando 1 0012H AX Operando 1

IN

AX,

DX

IN AX DX

Reg 1 Reg de Porta

0012H

Operando 2

80H DX

OUT

40H

,AX

OUT AX 40H

Reg 1 Imed de Porta

Porta 40H 0012H

(26)

Chapter 2 — Instructions: Language of the Computer — 26

Formato de Instrução do x86

Formatos com tamanhos

variados

(27)

Chapter 2 — Instructions: Language of the Computer — 27

Formato de Instrução do x86 – Bytes Prefixados

– Bytes pré-fixados modificam operação

(28)

Chapter 2 — Instructions: Language of the Computer — 28

(29)

Chapter 2 — Instructions: Language of the Computer — 29

Formato de Instrução do x86 – Bytes Pós-Fixados

(30)

Chapter 2 — Instructions: Language of the Computer — 30

(31)

Chapter 2 — Instructions: Language of the Computer — 31

Algumas Conclusões sobre x86

Instruções complexas tornam implementação difícil

– Hardware traduz instruções para micro-operações mais simples

 Instruções simples: 1–1

 Instruções complexas : 1–muitos

– Microengine similar ao RISC

– Mercado torna o processador economicamente viável

Desempenho comparável ao RISC

– Compiladores evitam instruções complexas

Compatibilidade amarra projeto do processador

Referências

Documentos relacionados

Diante disso, os ensaios “in vitro” (Estudo de Equivalência Farmacêutica) e/ou “in vivo” (Estudo de Bioequivalência) deverão ser realizados para comprovar

Francisca (concentração), Dona Romana, Rua Barão do Bom Retiro, Rua Verna Magalhães, Rua Cabuçu e Rua D. Automóvel Club esquina com

REDONDO QUADRADO Código Acabamento 074DP29SNG CINZA 300 Referência DP29SNG 074DP29SNGR CINZA 300 DP29SNGR S/ CONSULTA: BEGE

I – estudantes que tenham cursado integralmente o Ensino Fundamental ou Ensino Médio em escolas públicas, em cursos regulares ou no âmbito da modalidade da Educação de Jovens

O processo da construção e permanência do projeto de vida a dois, que articula individualidades e relação conjugal, de fato, como escreve Féres-Carneiro e Ziviani (2009), é um

Este trabalho tem como objetivo a implementação de estratégias metodológicas para o estudo de comportamentos sociais em animais modelo de autismo, bem como, caracterizar, por meio

“O Renegade diesel é um oceano azul para nós, onde navegamos so- zinhos, sem concorrência no Brasil nesse tamanho de veículo”, diz Sérgio Ferreira, diretor-geral da Jeep

Em um módulo de 32 bits (como os antigos módulos de 72 vias), são necessários 7 bits adicionais para cada 32 bits de memória, mas nos módulos DIMM de 64 bits atuais, são