Академический Документы
Профессиональный Документы
Культура Документы
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
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.
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] 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.
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)
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.
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.
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).
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] 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] 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.