miniatura|Diagrama da pinagem do Intel i8086. O 8086 (também chamado de iAPX 86) é um chip microprocessador de 16 bits lançado pela Intel em 8 de junho de 1978, após o início de seu desenvolvimento no começo de 1976. Foi sucedido pelo Intel 8088 em 1979, que era um chip ligeiramente modificado com um barramento de dados externo de 8 bits (permitindo o uso de circuitos integrados de suporte mais baratos e em menor número).Menos buffers TTL, latches e multiplexadores (embora a quantidade de lógica TTL não tenha sido drasticamente reduzida). Também permite o uso de CIs baratos da família 8080, onde o 8254 CTC, o 8255 PIO e o 8259 PIC foram usados no projeto do IBM PC. Além disso, simplifica o layout da placa de circuito impresso e barateia o custo das placas, além de exigir menos chips de DRAM (de 1 ou 4 bits de largura).
O 8086 deu origem à arquitetura x86, que eventualmente se tornou a linha de processadores de maior sucesso da Intel. Em 5 de junho de 2018, a Intel lançou uma CPU de edição limitada para comemorar o 40º aniversário do Intel 8086, chamada Intel Core i7-8086K.
Histórico Contexto Em 1972, a Intel lançou o 8008, o primeiro microprocessador de 8 bits da Intel.usando carga de aprimoramento lógica PMOS (requerendo 14 V, alcançando compatibilidade TTL tendo VCC em +5 V e VDD em −9 V). Ele implementava um conjunto de instruções projetado pela Datapoint Corporation para terminais CRT programáveis, que também se mostrou bastante versátil. O dispositivo necessitava de vários circuitos integrados adicionais para produzir um computador funcional, em parte devido ao fato de estar encapsulado em um pequeno "pacote de memória" de 18 pinos, o que inviabilizava o uso de um barramento de endereços separado (a Intel era principalmente uma fabricante de DRAM na época).
Dois anos depois, a Intel lançou o 8080, empregando os novos encapsulamentos DIL de 40 pinos originalmente desenvolvidos para circuitos integrados de calculadoras, permitindo um barramento de endereços separado. Ele possuía um conjunto de instruções expandido, compatível em termos de código-fonte (não binário) com o 8008, e também incluía algumas instruções de 16 bits para facilitar a programação. O dispositivo 8080 foi eventualmente substituído pelo 8085 (1977), baseado em carga de depleção, que utilizava uma única fonte de alimentação de +5 V em vez das três tensões de operação diferentes dos chips anteriores.Possibilitado pela lógica nMOS de carga de depleção (o 8085 foi posteriormente fabricado usando processamento HMOS, assim como o 8086). Outros microprocessadores de 8 bits bastante conhecidos que surgiram durante esses anos são o Motorola 6800 (1974), o General Instruments PIC16X (1975), o MOS Technology 6502 (1975), o Zilog Z80 (1976) e o Motorola 6809 (1978).
O primeiro projeto x86 miniatura|Imagem do die do processador Intel 8086. O projeto 8086 teve início em maio de 1976 e foi originalmente concebido como um substituto temporário para o ambicioso e atrasado projeto iAPX 432. Foi uma tentativa de desviar a atenção dos processadores de 16 e 32 bits de outros fabricantes — Motorola, Zilog e National Semiconductor — que estavam em desenvolvimento há menos tempo.
Embora o 8086 fosse um microprocessador de 16 bits, ele utilizava uma arquitetura similar à dos microprocessadores de 8 bits da Intel (8008, 8080 e 8085). Isso permitiu que programas em linguagem assembly escritos em 8 bits migrassem sem problemas. Novas instruções e recursos — como inteiros com sinal, endereçamento base + deslocamento e operações autorrepetíveis — foram adicionados. Instruções foram incluídas para auxiliar a compilação do código-fonte de funções aninhadas na família de linguagens ALGOL, incluindo Pascal e PL/M. De acordo com o arquiteto principal Stephen P. Morse, isso foi resultado de uma abordagem mais centrada em software. Outras melhorias incluíram instruções de microcódigo para as instruções de multiplicação e divisão em linguagem assembly. Os projetistas também previram coprocessadores, como o 8087 e o 8089, portanto a estrutura do barramento foi projetada para ser flexível.
A primeira revisão do conjunto de instruções e da arquitetura de alto nível ficou pronta após cerca de três meses e, como quase nenhuma ferramenta CAD foi utilizada, quatro engenheiros e 12 projetistas de layout trabalharam simultaneamente no chip.Utilizando rubylith, quadros de luz, réguas, apagadores elétricos e um digitalizador (de acordo com Jenny Hernandez, membro da equipe de design do 8086, em uma declaração feita na página da Intel por ocasião de seu 25º aniversário). O 8086 levou pouco mais de dois anos da concepção ao produto funcional, o que era considerado rápido para um projeto complexo na década de 1970.
O 8086 foi sequenciadoO 8086 utilizava menos microcódigo do que muitos projetos concorrentes, como o MC68000 e outros. usando uma combinação de lógica aleatória — Ilustração do uso de "aleatório" para descrever a lógica de controle da CPU. e microcódigo, e implementado com circuitos nMOS de carga de depleção, com aproximadamente 20.000 transistores ativos (29.000 considerando todos os locais de ROM e PLA). Em pouco tempo, a produção foi transferida para um novo processo de fabricação nMOS refinado, chamado HMOS (sigla em inglês para High Performance MOS), que a Intel desenvolveu originalmente para a fabricação de produtos de memória RAM estática de alta velocidade.Memórias RAM estáticas rápidas com tecnologia MOS (tão rápidas quanto as RAMs bipolares) foram um produto importante para a Intel durante esse período. A isso se seguiram as versões HMOS-II, HMOS-III e, eventualmente, uma versão CMOS totalmente estática para dispositivos alimentados por bateria, fabricada usando os processos CHMOS da Intel.CHMOS é o nome que a Intel dá aos circuitos CMOS fabricados usando etapas de processamento muito semelhantes às do HMOS. O chip original media 33 mm² e a menor dimensão dos elementos era de 3,2 μm.
A arquitetura foi definida por Stephen P. Morse, com alguma ajuda de Bruce Ravenel (o arquiteto do 8087) no refinamento das revisões finais. O projetista lógico Jim McKevitt e John Bayliss foram os engenheiros principais da equipe de desenvolvimento de hardware,Outros membros da equipe de design foram Peter A. Stoll e Jenny Hernandez. e Bill Pohlman foi o gerente do projeto. O legado do 8086 permanece presente no conjunto de instruções básicas dos computadores pessoais e servidores atuais; o 8086 também emprestou seus dois últimos dígitos para versões posteriores e estendidas do projeto, como o Intel 286 e o Intel 386, que eventualmente ficaram conhecidos como a família x86. Além disso, o ID de fornecedor PCI para dispositivos de sistema produzidos pela Intel, é 8086.
Detalhes miniatura|250px|Atribuições de pinos do 8086 nos modos mínimo e máximo. Barramentos e operação Todos os registradores internos, bem como os barramentos de dados internos e externos, têm 16 bits de largura, o que estabeleceu firmemente a identidade de "microprocessador de 16 bits" do 8086. Um barramento de endereço externo de 20 bits fornece um espaço de endereço físico de 1 MiB (220 = 1.048.576 x 1 byte). Este espaço de endereçamento é gerenciado por meio de "segmentação" de memória interna. O barramento de dados é multiplexado com o barramento de endereços para que todas as linhas de controle caibam em um encapsulamento DIP padrão de 40 pinos. Ele fornece um barramento de endereços de E/S de 16 bits, suportando 64 KB de espaço de E/S separado. O espaço de endereçamento linear máximo é limitado a 64 KB, simplesmente porque os registradores internos de endereço/índice têm apenas 16 bits de largura. A programação em limites de memória de 64 KB envolve o ajuste dos registradores de segmento (veja abaixo); essa dificuldade existiu até que a arquitetura 80386 introduziu registradores mais largos, de 32 bits (o hardware de gerenciamento de memória do 80286 não ajudou nesse aspecto, já que seus registradores ainda têm apenas 16 bits de largura).
Modos de hardware do 8086 Alguns dos pinos de controle, que transportam sinais essenciais para todas as operações externas, têm mais de uma função, dependendo se o dispositivo está operando no modo mínimo ou máximo. O primeiro modo destina-se a pequenos sistemas com um único processador, enquanto o segundo é para sistemas médios ou grandes que utilizam mais de um processador (uma espécie de modo multiprocessador). O modo máximo é necessário ao usar um coprocessador 8087 ou 8089. A tensão no pino 33 (MN/) determina o modo. Alterar o estado do pino 33 altera a função de outros pinos, a maioria dos quais relacionados à forma como a CPU gerencia o barramento (local).Os computadores IBM PC e PC/XT utilizam um processador Intel 8088 em modo máximo, o que permite que a CPU trabalhe com um coprocessador 8087 opcional instalado no soquete do coprocessador matemático na placa-mãe do PC ou PC/XT. (O PC e o PC/XT podem exigir o modo máximo por outros motivos, como, por exemplo, para suportar o controlador DMA.) O modo geralmente é definido no circuito e, portanto, não pode ser alterado por software. O funcionamento desses modos é descrito em termos de diagramas de temporização nos manuais e folhas de dados da Intel. No modo mínimo, todos os sinais de controle são gerados pelo próprio 8086.
Registradores e instruções + Registradores Intel 8086 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (posição do bit) Registradores principais AH AL AX (acumulador) CH CL CX (contador) DH DL DX (acum. estendido) 0 0 0 0 BH BL BX (base) Registradores de índice 0 0 0 0 SP Stack Pointer 0 0 0 0 BP Base Pointer 0 0 0 0 SI Source Index 0 0 0 0 DI Destination Index Contador de programa 0 0 0 0 IP Instruction Pointer Registros de segmento ES 0 0 0 0 Extra Segment CS 0 0 0 0 Code Segment SS 0 0 0 0 Stack Segment DS 0 0 0 0 Data Segment Registros de status - - - - O D I T S Z - A - P - C Flags O 8086 possui oito registradores mais ou menos gerais de 16 bits (incluindo o ponteiro de pilha, mas excluindo o ponteiro de instrução, o registrador de flag e os registradores de segmento). Quatro deles, AX, BX, CX, DX, também podem ser acessados como pares de registradores de 8 bits (veja a figura), enquanto os outros quatro, SI, DI, BP, SP, são apenas de 16 bits.
Devido a uma codificação compacta inspirada em processadores de 8 bits, a maioria das instruções são operações de um ou dois endereços, o que significa que o resultado é armazenado em um dos operandos. No máximo um dos operandos pode estar na memória, mas esse operando na memória também pode ser o destino, enquanto o outro operando, a origem, pode ser registrador ou imediato. Muitas vezes, um único local de memória também pode ser usado como origem e destino, o que, entre outros fatores, contribui ainda mais para uma densidade de código comparável (e muitas vezes melhor que) à maioria das máquinas de oito bits da época.
O grau de generalidade da maioria dos registros é muito maior do que no 8080 ou 8085. No entanto, os registros 8086 eram mais especializados do que na maioria dos minicomputadores contemporâneos e também são usados implicitamente por algumas instruções. Embora perfeitamente sensível para o programador assembly, isso torna a alocação de registros para compiladores mais complicada em comparação com processadores mais ortogonais de 16 e 32 bits da época, como o PDP-11, VAX, 68000, 32016, etc. Por outro lado, sendo mais regulares do que os microprocessadores de 8 bits bastante minimalistas, mas onipresentes, como o 6502, 6800, 6809, 8085, MCS-48, 8051 e outras máquinas contemporâneas baseadas em acumuladores, é significativamente mais fácil construir um gerador de código eficiente para a arquitetura 8086.