Вы находитесь на странице: 1из 13

x86

Origem: Wikipdia, a enciclopdia livre. Ir para: navegao, pesquisa Esta pgina ou seco no cita nenhuma fonte ou referncia, o que compromete sua credibilidade (desde novembro de 2010). Por favor, melhore este artigo providenciando fontes fiveis e independentes, inserindo-as no corpo do texto por meio de notas de rodap. Encontre fontes: Google
notcias, livros, acadmico Scirus. Veja como referenciar e citar as fontes.

O Intel 8086.

Intel Core 2 Duo - Um exemplo de aquitetura x86 compativel com processadores multicore de 64-bit.

AMD Athlon (primeira verso) - outra implementao x86 tecnicamente diferentes, mas totalmente compatvel. Em informtica, x86 ou 80x86 o nome genrico dada famlia (arquitetura) de processadores baseados no Intel 8086, da Intel Corporation. A arquitetura chamada x86 porque os primeiros processadores desta famlia eram identificados somente por nmeros terminados com a seqncia "86": o 8086, o 80186,

o 80286, o 80386 e o 80486. Como no se pode ter uma marca registrada sobre nmeros, a Intel e a maior parte de seus competidores comearam a usar nomes que pudessem ser registrados como marca, como Pentium para as geraes de processadores posteriores, mas a antiga nomenclatura tinha forjado um termo para toda a famlia. Em outras palavras podemos dizer que o x86 termo refere-se a uma famlia de arquitetura do conjunto de instrues, baseado no Intel 8086. O 8086 foi lanado em 1978 como uma extenso de 16 bits pela Intel foi um dos oito primeiros microprocessadores baseados que introduziu a segmentao de superao dos 16 bits de endereamento de barreira dos chips anteriores. O x86 termo derivado do fato de que os sucessores para o 8086 tambm tinham nomes terminados em "86". Muitas adies e extenses foram adicionadas ao conjunto de instrues x86 ao longo dos anos, quase sempre com total compatibilidade com verses anteriores. A arquitetura foi implementada em processadores da Intel , Cyrix , AMD , VIA , e muitos outros. O termo x86 no sinnimo de compatibilidade com IBM PC , pois isso sugere uma infinidade de outros hardwares e sistemas embarcados bem como computadores usando chips x86 antes do moderno mercado ser compatvel com PC, alguns deles antes mesmo do IBM PC em si. Como o termo se tornou comum aps a introduo do 80386 , ele normalmente implica compatibilidade binria com o conjunto de instrues 32-bits do 80386. Isso s vezes enfatizado como x86-32, para distingui-lo da originalidade de 16 bits, designado "x8616", ou dos 64-bit, designado x86-64. Entretanto, a maioria dos processadores x86 usados em novos computadores pessoais e servidores tm recursos de 64 bits. Para evitar problemas de compatibilidade com computadores mais velhos ou sistemas, o termo x86-64 (ou 64) freqentemente utilizado para designar um software de 64 bits, e o termo 86 para designar um software de 32 bits. Embora o 8086 ter sido desenvolvido principalmente para sistemas embarcados e computadores de um usurio (em grande parte como resposta ao sucesso 8080compatvel Zilog Z80), a linha x86 logo cresceu em recursos e poder de processamento. Hoje, 86 presente em ambos os computadores pessoais portteis e desktop, substituindo computadores de mdio porte e a maioria dos servidores de estaes de trabalho com base em processadores RISC. Uma grande quantidade de software , incluindo sistemas operacionais (OSs), como o DOS , Windows , Linux , BSD , Solaris e Mac OS X suporta hardware baseado em x86. O moderno X86 relativamente incomum em sistemas embarcados, por conter baixa potncia em suas aplicaes (usando pequenos microprocessadores), tais como eletrodomsticos e brinquedos. Contudo chips x86-16 so mais comum em computadores embarcados, embora VIA C7 , VIA Nano , a AMD est Geode , Athlon Neo , e processador Intel Atom so exemplos de 32 e projetos de 64 bits usados em partes desses segmentos. Houve vrias tentativas, dentro da Intel em si, para quebrar o domnio do mercado da arquitetura x86, que descendia diretamente do simples microprocessadores de 8 bits. Exemplos disso so as iAPX 432 (alis Intel 8800 ), o Intel 960 , Intel 860 e Intel e a arquitetura do Hewlett Packard Itanium. No entanto, o aperfeioamento contnuo de 86

micro arquiteturas, circuitos, e fabricao de semicondutores provaria que difcil substituir x86 em vrios segmentos. O 64, da extenso bit da AMD x86 (que a Intel finalmente respondeu, com um design compatvel) e a escala de processadores x86, como o eight-core Intel Xeon e 12-core AMD Opteron destaca-se o x86 como um exemplo de contnuo aperfeioamento e como as normas estabelecidas pela indstria pode resistir concorrncia das novas arquiteturas.

ndice
[esconder]

1 Cronologia 2 Histria o 2.1 Antecedentes o 2.2 iAPX 432 e a 80286 o 2.3 Outros fabricantes o 2.4 Extenses do tamanho de bits 3 Resumo o 3.1 Propriedades bsicas da arquitetura 4 Ponto Flutuante e SIMD 5 As implementaes atuais 6 Registradores o 6.1 Registradores de Uso Geral o 6.2 Registradores de segmento o 6.3 Registro das flags 7 O Apontador de Execuo 8 Registradores x86 o 8.1 16 bits o 8.2 32 bits o 8.3 64 bits 9 Diversas funcionalidades 10 Segmentao 11 Ver tambm

[editar] Cronologia
A tabela abaixo mostra as marcas de processadores e microprocessadores na Hall da Fama, agrupados por geraes que destacam pontos importantes na histria do x86. Nota: As geraes de CPU no so rgidas, cada gerao marcada por melhoras significativas ou comercialmente bem sucedidos projetos do processador.

Introduzido Marcas de CPU Linear / Espao Gerao inicialmente proeminentes de endereo fsico em Intel 8086, Intel 1 1978 8088 16-bit / 20-bit Intel 80186, Intel (segmentados) 80188, NEC V20/V30 2 1982 16-bit (30-bit Intel 80286 virtual) / 24-bit (segmentados) 3 (IAIntel 80386, AMD 1985 32) Am386 Intel486, AMD Am486, Cyrix III4 1989 Samuel, VIA C3- 32-bit (46-bit Samuel2 / VIA virtual) / Conjunto C3-Ezra (2001) de instrues com 32-bit, MMU com Pentium, Pentium paginao. 5 1993 MMX 5/6 1996 Cyrix 6x86, Cyrix MII, Cyrix IIIJoshua (2000) Pentium Pro, AMD K5, Nx586|Nx586 (1994), Rise mP6 AMD K6/-2/3, Pentium II/III, IDT/Centaur-C6 Athlon, Athlon XP como acima / 36bit Fsico (PAE)

Novos recursos Primeiros processadores X86. Hardware para clculos de endereos rpidos. MMU, para o modo protegido e um maior espao de endereo.

RISC FPU pipelining, cache integrada, onchip. Superscalar, 64-bit databus, faster FPU, MMX. Register renaming, speculative execution. translao -op, PAE Pentium Pro, integrado com cache L2 (Pentium Pro), instruo de movimentao condicional. cache L3 suportando, 3DNow, SSE. superscalar FPU, design wide (at trs instrues por ciclo de clock) Alta conduta, alta frequencia, SSE2, hyper-threading. Otimizados para baixo consumo.

1995 6

1997

1999 7 2000 6-M/7M 2003 8 (x8664)

Pentium 4 Pentium M, VIA C7 (2005), Intel Core (2006) Athlon 64, Opteron

64-bit / 40-bit Conjunto de instrues Implementao x86-64, controlador de fsica do primeiro memria on-die,

2004

2006 2007

10

2008

11

2010

processador AMD. hypertransport. Alta contuta, Altssima frequencia, SSE], Pentium 4 capacidade de 64 bits Prescott est disponvel somente em soquetes LGA 775. baixo consumo, multicore, menor frequencia Intel Core 2 de clock, SSE4 (Penryn) AMD Phenom monoltica quad-core, 128 FPUs bit, SSE4a, HyperTransport 3 ou Intel Core i3, Intel QuickPath, controlador Core i5, Intel de memria nativa, onCore i7 die cache L3, design modular. como acima / 48Altamente canalisado bit processador Intel Atom porm com sua fsico AMD potncia muito baixa. Phenom Fora de ordem, superescalar, criptografia baseada VIA Nano em hardware, muito baixa energia, gerenciamento de energia adaptativa. Intel Sandy SSE5/AVX, design Bridge, AMD altamente modular. Bulldozer

[editar] Histria
[editar] Antecedentes
A arquitetura x86 aparece primeiro como o Intel 8086 CPU lanado em 1978, um projeto totalmente de 16 bits baseado na anterior de 8 bits com base 8008, 8080 e 8085. Apesar de no ser compatveis com o binrio, ele foi projetado para permitir que programas escritos em linguagem assembly serem mecanicamente traduzidos para o conjunto 8086 equivalente. Isso fez com que o novo processador fosse um caminho de migrao tentador, mas no sem uma remodelagem de hardware significativa, principalmente devido ao barramento de dados 16-bit externo. Para resolver isso, a Intel lanou o 8088 quase idntico, com um barramento de dados externo de 8-bit, o que permitiu o uso de placas de circuito mais simples e exigiu poucas fichas (1-bit de largura) DRAM. O 8088 tambm pode ser conectado ao j estabelecido (ou seja, de baixo custo) de 8 bits do sistema e chips perifricos mais facilmente. Entre outros

fatores no tcnicos, o que contribuiu para o fato de que a IBM construisse seu IBM PC usando o 8088, apesar da presena de microprocessadores de 16 bits da Motorola, Zilog, e National Semiconductor. O IBM PC, posteriormente assumiu Z80-based CP/M systems, Apple II, e outros computadores populares, e tornou-se um padro de fato dominante, para computadores pessoais, permitindo assim que os 8088 e os seus sucessores dominassem este ramo importante de microprocessadores no mercado.

[editar] iAPX 432 e a 80286


Outro fator foi que o Intel 8800 (alis iAPX 432) no compatvel com 32 bits, falhou no mercado na poca que o IBM-PC foi lanado. O novo e rpido 80286 realmente contribuiu para a decepo do semi-contemporneo 8800 no incio de 1982. (O 80186, lanado em paralelo com o 80286, foi concebido para sistemas embarcados, e, portanto, teve um grande mercado de qualquer maneira.) A falha de mercado dos 32 bits 8800, foi um impulso significativo para a Intel continuar desenvolvendo 8086 compativis mais avanados, como o 80386 (uma extenso de 32 bits do 80286 com bom desempenho).

[editar] Outros fabricantes


Mais informaes: Lista de fabricantes dos processadores compatveis ex-IA-32 Por vrias vezes, empresas como IBM, NEC, AMD, TI, STM, Fujitsu, OKI, Siemens, Cyrix, Intersil, C & T, NexGen, e a UMC comearam a fabricao de processadores x86 destinado a computadores pessoais e de sistemas embarcados. Tais implementaes x86 raramente so cpias simples, e muitas vezes empregam diferentes microarquiteturas internas, bem como diferentes solues ao nvel eletrnico e fsico. Muito naturalmente, os primeiros chips compatveis foram de 16 bits, enquanto os projetos de 32 bits apareceram mais tarde. Para o mercado de computadores pessoais, a quantidade real comeou a aparecer por volta de 1990 com o i386 e o i486, processadores compatveis, ento nomeados similarmente como Chip Original Intel. Outras empresas, que projetaram ou fabricaram processadores x86 ou x87, foram a ITT Corporation, a National Semiconductor, a ULSI System Technology, e a Weitek. Aps a pipelined i486, a Intel lanou a marca Pentium para sua nova linha de modelos x86 superescalar. Com o esquema de nomeao de 86 agora legalmente seguro, a Intel fez uma parceria com a IBM para produzir o Cyrix 5x86 e 6x86. Nessa poca a AMD, estava projetando e fabricando o 5k86, que internamente, foi baseado no design da AMD RISC 29K, semelhante ao Nx586 NexGen. A AMD usou uma estratgia em que estgios da pipeline, decodificavam instrues x86 e outros manuseios de micro Operaes, um mtodo muito usado como base para o design do x86, da poca. Algumas verses mais antigas desses chips tiveram problemas de dissipao do calor. O 6x86 tambm foi afetado por alguns pequenos problemas de compatibilidade, o Nx586 faltava uma unidade de ponto flutuante (FPU) e a compatibilidade de pinos, enquanto o K5 tinha um desempenho um pouco decepcionante, quando foi lanado. A conscientizao do cliente para a linha Pentium contribuu para estes projetos sendo comparativamente melhor, apesar do fato de que o K5 tinha boa compatibilidade com Pentium e 6x86. A AMD conseguiu, mais tarde, estabelecer-se como um grande concorrente com a linha de processadores K6, que deu lugar ao grande sucesso Athlon e Opteron. Houve tambm outros concorrentes, como a Centaur Technology (formerly

IDT), a Rise Technology, e a Transmeta. Processadores como o VIA Technologies C3 e C7, que foram projetados pela Centaur, tambm foram vendidos por muitos anos. O mais novo projeto da Centaur, o VIA Nano, o primeiro processador com a execuo superescalar. Foi interessante, pois foi introduzido na mesma poca do processador Intel's first "in-order" desde o P5 Pentium, o Intel Atom.

[editar] Extenses do tamanho de bits


A arquitetura do conjunto de instrues foi prorrogado duas vezes para um tamanho maior. Em 1985, a Intel lanou o 32 bits 80386 (ou i386), que gradualmente substituiu o chip de 16 bits em computadores. Durante os anos seguintes, este modelo de programao estendida foi originalmente chamado de arquitetura i386, mas mais tarde apelidou-se de Intel IA-32, antes da sua verso independente, a arquitetura IA-64. Em 1999-2003, a AMD estendeu essa arquitetura de 32 bits para 64 bits e se refere a ele como x86-64 em documentos antigos e mais tarde como AMD64. a Intel logo adotou extenses da arquitetura da AMD, como o nome IA-32e que foi mais tarde renomeado de Intel EM64T e, finalmente, 64. Entre estes cinco nomes, o original x86-64 provavelmente o mais utilizado, embora a Microsoft e a Sun Microsystems tambm usam o termo x64.

[editar] Resumo
[editar] Propriedades bsicas da arquitetura
A arquitetura x86 um comprimento varivel de instruo, primeiramente so modelados dois endereos CISC com nfase em compatibilidade com verses anteriores. No entanto o conjunto de instrues no tpico CISC, mas, basicamente, uma verso estendida e ortogonal de simples oito bits, das arquiteturas 8008, 8080 e 8085. O Byte de endereamento suportado e as palavras so armazenadas na memria com ordem de little-endian byte. O acesso memria para endereos desalinhados permitido em todos os tamanhos de palavras suportadas. O maior tamanho nativo para aritmtica de inteiros e endereos de memria (ou deslocamentos) de 16, 32 ou 64 bits dependendo da gerao da arquitetura (processadores mais recentes incluem um suporte direto para inteiros menores tambm). Vrios valores escalares podem ser tratados simultaneamente, atravs da unidade SIMD presente em geraes posteriores, conforme descrito abaixo. Compensaes imediatas de endereamento e dados de imediato podem ser expressos em quantidades de 8 bits conforme a frequncia que ocorrem os casos ou contextos em que o intervalo de 128 .. 127 o suficiente. Instrues tpicas so, portanto, de 2 ou 3 bytes de comprimento (embora alguns so muito mais longos, e algumas so de byte nico). Para melhor conservar o espao de codificao, a maioria dos registros so expressos em opcodes usando trs bits, e no mximo um operando em uma instruo que pode ser um local de memria (alguns projetos "CISC" altamente ortogonais, como o PDP-11, podem utilizar dois). No entanto, esta memria operando tambm pode ser de destinao (ou a combinao entre fonte e destinao), enquanto o outro operando, a fonte, pode ser tanto registrada quanto imediata. O nmero relativamente pequeno de registros gerais (tambm herdados de seus antecessores de 8 bits) fez-se endereamento de registro relativo (usando pequenas compensaes imediatas) como um importante mtodo de acesso a operandos, especialmente na pilha. Muito trabalho foi, portanto, investido na fabricao desses acessos de modo to rpido

como registrar os acessos, ou seja, um ciclo de transferncia de instruo, na maioria dos casos em que os dados acessados esto disponveis no cache de nvel superior.

[editar] Ponto Flutuante e SIMD


Um processador de ponto flutuante dedicado com 80 bits de registros internos, o 8087, foi desenvolvido para o original de 8086. Este chip foi posteriormente desenvolvido para o estendido 80387 e, mais tarde incorporado a uma verso de processadores compatveis a essa funcionalidade no mesmo chip como no processador principal. Alm disso, projetos modernos da x86 tambm incluem uma unidade SIMD em que as instrues podem trabalhar em paralelo (uma ou duas) palavras de 128 bits, cada uma contendo 2 ou 4 nmeros de ponto flutuante (a cada 64 ou 32 bits de largura, respectivamente), ou, alternativamente, 2, 4, 8 ou 16 nmeros inteiros (a cada 64, 32, 16 ou 8 bits de largura, respectivamente). Os amplos registradores SIMD significam que os processadores existentes x86 podem carregar ou armazenar at 128 bits de dados de memria em uma nica instruo e tambm podem executar operaes bit a bit (embora no a aritmtica de nmeros inteiros) sobre as quantidades de 128-bits em paralelo. Planejados processadores x86 tero operaes SIMD de 256 bits (incluindo 256-bit de memria e armazenamento de carga).

[editar] As implementaes atuais


Durante a execuo, processadores x86 atuais empregam uma decodificao extra para dividir a maioria das instrues em pedaos menores (micro-operaes). Estes so ento entregues a uma unidade de controle que os tampes e os cronogramas esto em conformidade de acordo com a x86-semntica, para que possam ser executadas, parcialmente em paralelo, por uma das vrias unidades (mais ou menos especializadas) de execuo. Quando foi introduzida, esta abordagem foi por vezes referida como um "ncleo RISC" ou como "traduo RISC", em parte por razes de marketing, mas tambm porque essas micro-operaes compartilham algumas propriedades com certos tipos de instrues RISC. No entanto, o microcdigo tradicional (usado desde a dcada de 1950) tambm inerentemente compartilha muitas das mesmas propriedades; a nova abordagem difere, principalmente na medida em que a traduo para micro-operaes agora ocorrem de forma assncrona. No ter que sincronizar as unidades de execuo com as etapas de decodificao abre possibilidades para uma anlise mais aprofundada do fluxo de cdigo (buffer) e, portanto, permite a deteco de operaes que podem ser executadas em paralelo, alimentando simultaneamente mais de uma unidade de execuo. Os mais recentes processadores tambm fazem o oposto quando for o caso, pois eles combinam certas seqncias x86 (como uma comparao seguida de um salto condicional) um processo mais complexo de micro-op, que se encaixa no modelo de execuo melhor e, portanto, pode ser executado mais rpido ou com menos recursos da mquina envolvida. Outra forma de tentar melhorar o desempenho o cache decodificado de micro-operaes, de modo que o processador pode acessar diretamente o decodificado de micro-operaes a partir de um cache especial, em vez de descodific-lo novamente. A Execution Trace Cache encontrada na microarquitetura da Intel NetBurst (Pentium 4) at agora o nico exemplo generalizado desta tcnica. Transmeta usa um mtodo completamente diferente em seus CPUs x86 compatveis. Eles usam traduo para converter as instrues x86 para instrues nativas do CPU. Transmeta argumenta que sua abordagem permite projetos de energia mais eficientes,

uma vez que a CPU pode abandonar a etapa de decodificao complicada para implementaes x86 tradicionais.

[editar] Registradores
A arquitetura x86 tem 8 registradores de uso geral (General Purpose Registers - GPR), 6 registradores de segmento, 1 registrador de flags e um Apontador de Execuo (Instruction Pointer). (FIXME: no AMD64/EM64T h mais de 8 GPRs)

[editar] Registradores de Uso Geral


Os 8 GPRs, ou Registradores de Uso Geral, so os seguintes (por ordem de introduo na pilha ao executar a instruo PUSHAD):

EAX - Acumulador. Usado em operaes aritmticas. ECX - Contador. Usado em loops. EDX - Registrador de Dados. Usado em operaes de entrada/sada e em multiplicaes e divises. tambm uma extenso do Acumulador. EBX - Base. Usado para apontar para dados no segmento DS. ESP - Apontador da Pilha (Stack Pointer). Aponta para o topo da pilha (endereo mais baixo dos elementos da pilha). EBP - Apontador da base do frame. Usado para aceder a argumentos de procedimentos passados pela pilha. ESI - ndice da fonte de dados a copiar (Source Index). Aponta para dados a copiar para DS:EDI. EDI - ndice do destino de dados a copiar (Destination Index). Aponta para o destino dos dados a copiar de DS:ESI.

Estes 8 registradores tm 32 bits cada um e dizem-se Estendidos. Os 16 bits de ordem mais baixa de cada um dos registradores podem ser acedidos atravs das verses no estendidas destes. As verses de 16 bits tm os mesmo nomes que as de 32 bits, com excepo de a letra E ser retirada (ex: EAX AX). As verses estendidas dos registradoress no existem em geraes anteriores 80386 a primeira gerao de processadores 32 bits da arquitetura x86. As verses no estendidas dos quatro primeiros GPRs dividem-se ainda em dois grupos de 8 bits cada um. O octeto (byte) de ordem mais alta acedido trocando o X por um H (exemplo: AX AH), e o octeto de ordem mais baixa trocando o X por um L (ex: AX AL). Nota: Nos processadores da arquitectura AMD64/EM64T, os GPRs tm 64 bits e pode aceder-se totalidade dos bits atravs dos nomes RAX, RCX, RDX, etc. Adicionalmente, existem ainda mais oito GPRs, de 64 bits cada um. Isto s vlido se o processador estiver em Modo Longo.

[editar] Registradores de segmento


H 6 registradores de segmento.

CS - Segmento do Cdigo DS - Segmento de Dados ES - Segmento com dados extra FS - Segmento com mais dados GS - Segmento com ainda mais dados SS - Segmento da Pilha (Stack)

Os segmentos so uma idiossincrasia da arquitetura x86, no existindo em praticamente mais nenhuma arquitetura. Sendo assim, os compiladores de linguagens de alto nvel geralmente optam por ignorar os segmentos. Por essa razo, os sistemas operativos modernos para x86 (incluindo o Windows e o Linux) tipicamente fazem todos os registradores de segmento apontar para o mesmo segmento de 4GB. As excees a essa regra so geralmente o FS e o GS, que so usados para isolar as seces de dados das diferentes threads de um mesmo processo. As outras arquitetura utilizam registradores especiais chamados registradores de thread para esse efeito, os quais no existem no x86.

[editar] Registro das flags


O registrador das flags chamado EFLAGS (Extended Flags) nas arquitetura de 32 bits, sendo a sua verso de 16 bits chamada simplesmente FLAGS. Tal como com os GPRs, os processador x86 anteriores ao i386 no possuem a verso de 32 bits. Nos processadores de 64 bits, este registrador tambm tem 64 bits e chama-se RFLAGS. No esquema abaixo, os 16 bits menos significativos aparecem a cinza, enquanto que os bits a azul apenas existem em processadores da gerao do i386 ou posteriores. 31 0 30 0 29 28 0 0 27 0 26 0 25 24 0 0 23 0 22 0 21 ID 5 0 20 VIP 4 AF 19 VIF 3 0 18 AC 2 PF 17 VM 1 1 16 RF 0 CF

15 14 13 12 11 0 NT IOPL OF

10 9 8 7 6 DF IF TF SF ZF

Ao carregar um novo valor no EFLAGS, os bits que aparecem no esquema como 1 ou 0 devem ser carregados como tal, de modo a preservar a compatibilidade do software com geraes futuras da arquitetura. Note-se que utilizar um mtodo convencional para aceder a este registrador produz um erro do montador (assembler), uma vez que o x86 no fornece nenhuma forma de aceder directamente ao registrador das flags. Para modificar ou ler o eflags necessrio utilizar a instruo pushf (16 bits) ou pushaf (32 bits).

[editar] O Apontador de Execuo


O apontador de execuo, ou Instruction Pointer (genericamente conhecido na cincia da computao por Program Counter), do x86 um registo interno que aponta para a prxima instruo a ser executada.

O seu nome EIP e a parte que contem os 16 bits menos significativos denomina-se IP. Tal como no caso do registo das flags, no possvel utilizar um mtodo convencional para aceder ao apontador de Execuo. Ele tem de ser introduzido no stack por meio de uma instruo call ou semelhante.

[editar] Registradores x86


[editar] 16 bits
O original Intel 8086 e 8088 tem quatorze registros de 16 bits. Quatro deles (AX, BX, CX, DX) so registradores de propsito geral (GPRS, embora cada um possa ter uma finalidade adicional: por exemplo, apenas CX pode ser usado como um contador com a instruo de loop). Cada um pode ser acessado como dois bytes separados (da o byte mais alto BX pode ser acessado como BH e byte baixo como BL). H dois registros de ponteiro: SP, que aponta para o topo da pilha e da BP (base pointer) que usado para apontar para algum outro lugar na pilha, geralmente acima de variveis locais. Dois registros (SI e DI) so para a indexao de matriz. Quatro registradores de segmento (CS, DS, SS e ES) so usados para formar um endereo de memria. O registrador de flags contm sinalizadores como de proceder com tais flags, overflow de flag e underflow de flag. Finalmente, o ponteiro de instruo (IP) aponta para a prxima instruo que ser obtida a partir da memria e depois executados. Na Intel 80286, trs registros especiais contm endereos da tabela descrita (GDTR, LDTR, IDTR), e um registo de quarta tarefa (TR).

[editar] 32 bits
Com o advento do processador de 32 bits 80386, os registradores de 16 bits, registradores base, registradores de ndice, ponteiro de instruo, e registradores de flag, mas no os registradores de segmento, foram ampliados para 32 bits. Este representado por um prefixo "E" (para Extended) para registrar os nomes em linguagem assembly x86. Assim, o registro AX diferencia o registrador de 16 bits do novo EAX 32-bit, SI corresponde ao menor de 16 bits do ESI, e assim por diante. Os registradores de uso geral, registradores de base e registradores de ndice podem ser usados como base em modos de endereamento, e todos os registos, exceto o ponteiro de pilha pode ser utilizado como ndice de endereamento. Dois novos registros de segmento (FS e GS) foram adicionados. Com um maior nmero de registros, instrues e operandos, o formato do binario|cdigo de mquina foi alargado. Para fornecer compatibilidade com verses anteriores, os segmentos com cdigo executvel pode ser marcado como contendo ou 16 bits ou 32 bits de instrues. Prefixos especiais permitem a incluso de instrues de 32 bits em um segmento de 16 bits, ou vice-versa. Com o 80486 uma unidade de processamento de ponto flutuante (FPU) foi adicionada, com oito registros de 80 bits de largura.

Com o Pentium II, oito registradores de 64 bits MMX foram adicionados. Com o Pentium III, um de 32 bits Streaming SIMD Extension (SSE) de controle / registrador de status (mxcsr) e oito de 128 bits SSE registradores de ponto flutuante (XMM0.. XMM7) foram adicionados [17]. Com o Pentium III, um Streaming SIMD Extension (SSE) de 32 bits, um registrador de controle (MXCSR) e oito registradores SSE de pontos flutuantes de 128 bits (XMM0..XMM7) foram adicionados.

[editar] 64 bits
Com o processador AMD Opteron, a arquitetura x86 estendeu os registradores de 32 bits para registradores de 64 bits de uma forma similar como a extenso de 16 bits para 32 bits foi feita, foram adicionadas oito registradores de 64 bits (R8, R9 R15 ..), entre outras. No entanto, essas extenses so apenas utilizveis em modo de 64 bits. Os modos de endereamento no mudaram drasticamente a partir do modo de 32 bits, com exceo que a resoluo foi estendida para 64 bits, endereos virtuais foram estendidos para 64 bits, a fim de impedir endereos virtuais que se tm revelado problemticos em outras arquiteturas, e mais alguns detalhes foram drasticamente reduzidos.

[editar] Diversas funcionalidades


Processadores x86 (comeando com o 80386) tambm incluem registradores especiais, tais como registradores de controle (CR0 a 4, CR8 para 64 bits), registradores de depurao (DR0 a 3, mais 6 e 7), os registradores de teste (TR3 atravs 7; apenas 80.486), registradores descritores (GDTR, LDTR, IDTR), um registrador de tarefas (TR), e modelo especifico de registrador (MSRs, aparecendo com o Pentium).

[editar] Segmentao
Ver artigo principal: Segmentao (memria) Os Minicomputadores durante o final de 1970 estavam em execuo contra o 16-bit com limite de at 64 KB de endereo. Alguns microcomputadores como o PDP-11 utilizavam complexos bancos de comutao de sistemas, ou, no caso da Digital VAX, redesenhado processadores muito mais caro que poderia, isso diretamente com endereamento de 32 bits.O original 8086, desenvolvido a partir do 8085 um microprocessador simples e principalmente visado muito pequeno e barato, em vez que registradores de segmento simples o que aumentou a largura de endereo de memria de apenas 4 bits. Multiplicando um endereo de 64 KB por 16, o endereo de 20 bits poder enderear um total de um megabyte(1.048.576 bytes), que foi uma grande quantidade para um pequeno computador. O conceito de registradores de segmento no era nova para mainframes que muitas vezes era usado segmentao para registar-se e trocar rapidamente as diferentes tarefas. Na prtica, a 86 era () uma lamentao muito criticada, que complicou muito as muitas tarefas comuns de programao e compiladores. Mas, como tambm simplificou projeto de hardware e custo, seria a custos competitivos em seus segmentos de mercado dominante. Com o surgimento de padres como o IBM-PC, os custos de desenvolvimento de programao pode ser espalhado sobre a venda de muitas cpias de software, e a arquitetura acabariam evoluindo para 32 total de memria e at mesmo endereamento de 64 bits por volta do sculo XXI.

Dados e / ou de cdigos pode ser administrados dentro de "perto de" nos segmentos de 16 bits dentro deste espao de endereo de 1 MB, ou um compilador poderia operar em um modo "more" (muito) com 32 bits de segmento: offset pares alcanar (apenas) 1 MB. Enquanto que tambm pode revelar-se bastante limites em meados da dcada de 1980, que estava trabalhando para o mercado de PC emergentes e que se tornou muito simples para traduzir o software dos antigos 8080, 8085 e Z80 para o novo processador. Em 1985, o modelo de segmento de 16-bit de resoluo foi efetivamente fatorado pela introduo de 32-bit registro offset, no projeto 386. No modo real, a segmentao obtida mudando o endereo de segmento deixado por 4 bits e adicionando um deslocamento, a fim de receber um endereo de 20 bits no final. Por exemplo, se o DS A000h e SI 5677h, DS: SI vai apontar para o DS endereo absoluto 10h + SI = A5677h. Assim, o espao de endereos em modo real de 220 bytes, ou 1 MB, uma figura bastante impressionante para 1978. Todos endereos de memria consistem em um segmento e offset, cada tipo de acesso (cdigo, dados ou pilha) tem um segmento de registro padro associado com ele (para os dados do cadastro geralmente DS, para o cdigo CS, e para a pilha SS). Para acessar os dados, o registrador de segmento pode ser especificado explicitamente (usando um prefixo substituir segmento) para usar qualquer um dos quatro registradores de segmento. Neste esquema, dois segmentos de diferentes pares de deslocamento podem apontar em um nico local absoluto. Assim, se o DS A111h e SI 4567h, DS: SI vai apontar para o A5677h. Este regime torna impossvel a utilizao de mais de quatro segmentos de uma vez. CS e SS so vitais para o funcionamento correto do programa, de modo que somente DS e ES pode ser usado para apontar para dados segmentos fora do programa (ou, mais precisamente, fora do segmento em execuo atualmente do programa) ou a pilha. No modo protegido, um registrador de segmento, j no contm o endereo fsico do incio de um segmento, mas contm um "selector", que aponta para uma estrutura em nvel de sistema chamado de segmento descritor. Um descritor de segmento contm o endereo fsico do incio do segmento, o comprimento do segmento, e permisses de acesso a esse segmento. O deslocamento verificado em relao ao comprimento do segmento, com deslocamentos referindo-se a localidades fora do segmento que pode causar uma exceo. Compensaes referindo-se a locais dentro do segmento so combinados com o endereo fsico do incio do segmento a obter o endereo fsico correspondente ao offset. A segmentao da programao e design do compilador difcil, pois o uso de ponteiros afeta o desempenho.

Вам также может понравиться