# Intel 80386

O microprocessador Intel 80386 é um microprocessador da família CISC x86 lançado pela Intel em 1985 e que inaugurou a era da computação de 32 bits na plataforma PC.
Lançado inicialmente na velocidade de 12 MHz, era constituído por aproximadamente 275 mil transistores e representou uma grande evolução em relação à geração anterior, tanto no grande número de novas instruções que foram introduzidas quanto pela sua arquitetura interna que passou a operar com palavras de 32 bits.
Pela primeira vez, o processador foi capaz de utilizar eficientemente o modo protegido, capacidades de memória virtual em disco e multitarefa, ainda que os sistemas operacionais da época não aproveitassem plenamente esses recursos. Iria demorar ainda alguns anos para que surgissem os primeiros sistemas operacionais que fizessem uso das avançadas características que o 386 apresentou ao mundo. A versão 2.0 do OS/2 , com suporte a processadores de 32 bits surgiria somente em 1992, e o Windows NT 3.1, sistema operacional da Microsoft voltado a servidores, um ano depois.

## O Modo Protegido

Apesar do modo protegido já ser usado desde o 80286, pela primeira vez, foi possível ao processador alternar entre o Modo real e o Modo protegido livremente.
Um programa que rode sobre DOS, pode chavear o processador para o modo protegido, para beneficiar-se de suas vantagens, e voltar ao modo real sempre que precisar usar alguma rotina do DOS, de maneira transparente ao usuário. Neste caso, é usado um programa de DPMI (“DOS Protected Mode Interface”) para fazer o chaveamento entre os dois modos.
Toda vez que o programa precisar usar alguma rotina do DOS, ele passa o comando ao chaveador, e fica esperando. O chaveador, por sua vez, passa o processador para o modo real, executa o comando, chaveia o processador para o modo protegido e entrega o resultado ao aplicativo, que continua trabalhando como se nada tivesse acontecido.
O 80286, por um erro de projeto não era capaz de voltar ao modo real depois de comutar para o modo protegido, a não ser que fosse reiniciado. Isso, aliado ao fato de inexistir um sistema operacional que fizesse uso desse recurso, fizeram do 286 uma espécie de "super XT", que rodava muito rápido os programas do DOS escritos para o 8088.

## Arquitetura e o 386 SX

O 386 original possuía tanto interna quanto externamente um barramento de dados e de endereços de 32 bits, o que permitia acessar 4 Gigabytes de memória RAM. Como o 386 era um processador de 32 bits, foi preciso desenvolver toda uma nova categoria de chipsets e circuitos de apoio para trabalhar com ele, o que acabou encarecendo bastante os sistemas baseados no 386 e afastando muitos compradores em potencial. Para contornar este problema, a Intel optou por lançar em 1988, uma versão de baixo custo do 386, batizada de 386 SX, que apesar de continuar funcionando internamente com palavras de 32 bits, comunicava-se com a memória RAM e os demais periféricos usando um barramento mais estreito de 16 bits. Apenas para diferenciar os dois processadores, a Intel rebatizou o 386 original de 386 DX.
Esta arquitetura permitiu que fossem aproveitados os mesmos periféricos usados em placas do 286, tornando as máquinas baseadas no 386 SX muito mais acessíveis.
Da mesma forma que o 286, o 386 SX usava endereçamento de 24 bits para fazer o acesso à memória RAM, o que permita ao processador acessar diretamente apenas 16 Megabytes de memória. Na época esta quantidade de memória era mais do que suficiente para suprir as necessidades da grande maioria dos usuários e essa limitação em relação ao 386 original não afugentou os compradores que fizeram do 386SX um enorme sucesso comercial.
Na época do 386, ainda eram utilizados em larga escala os antigos módulos de memória SIMM de 30 vias, que podiam transferir somente 8 bits por ciclo de clock. Assim, num sistema 386, era necessário instalar os módulos de memória em quantidades múltiplos de 4 de forma a suprir o processador com os 32 bits de dados que ele necessitava a cada acesso à memória.
O 386 foi a última geração de processadores fabricados pela Intel a não possuir uma unidade de ponto flutuante (FPU). Assim, as placas mãe do 386 vinham equipadas com um soquete destinado à adição de um processador auxiliar, o coprocessador aritmético, que era encarregado de executar todas as operações envolvendo números reais, essenciais em muitos programas de engenharia e CAD/CAM. Muitos fabricantes de chips criaram seus coprocessadores compatíveis com o i386, sendo os mais comuns o i387, da própria Intel e o Weitek 3167.
Os sistemas 386 utilizam o mesmo barramento para a instalação de periféricos que o seu antecessor, o ISA (“Industry Standard Architecture”) que era um barramento de 16 bits e que operava a 8 MHz. Algumas placas, destinadas principalmente a servidores, vinham dotadas com a extensão de 32 bits deste barramento, o Extended Industry Standard Architecture (EISA). O barramento EISA dobrava a largura de banda destinada ao fluxo de dados entre o periférico e o processador, mas tiveram pouca aceitação devido ao alto custo dessas placas e ao insignificante acréscimo que essas placas traziam para o desempenho geral do sistema. Mesmo o barramento sendo de 32 bits, a frequência de 8 MHz do EISA já não era suficiente para acompanhar a demanda de dados exigida pelas versões mais velozes do 386, que já tinham chegado a 33 MHz em 1989. Mesmo assim, um barramento de alta velocidade realmente eficiente só seria apresentado para utilização com os modernos processadores 486, que viria a ser conhecido como VESA LOCAL BUS (VLB).

## A introdução do Cache

Como o 386 já havia se tornado muito mais veloz do que os chips de memória da época, o processador desperdiçava muitos ciclos de CPU simplesmente esperando os dados serem recebidos da memória. Esses ciclos desperdiçados foram chamados de ciclos de espera, ou “Wait States”.
Para minimizar o problema, os fabricantes de PCs optaram por dotar as placas mãe destinadas aos 386 com uma pequena, porém extremamente rápida memória estática (cache), que armazenava os últimos dados e instruções acessados pelo processador. Quando o processador designava um dado que não estivesse em seus registradores, primeiro ele acessava a memória cache, e somente se o dado procurado não estivesse armazenado lá, ele fazia o acesso à lenta memória RAM. Entretanto, como as instruções da arquitetura x86 utilizam muitas instruções repetidas, a taxa de acerto (cache hit), ou seja, a percentagem de acessos onde o processador efetivamente encontra o dado procurado no cache é extremamente alta (tipicamente maior que 90%).
Assim, mesmo uma pequena quantidade de memória cache, que num 386 típico continha apenas 64 Kbytes de cache, já era suficiente para minimizar o problema dos ciclos de espera, fazendo com que o processador sempre estivesse ocupado processando e não esperando os dados serem trazidos da memória principal.

## Variantes
### i386SL

O i386SL foi produzido como um microprocessador alternativo para laptops. A UCP oferecia várias opções de gerenciamento de energia (por exemplo, SMM), bem como modos de "hibernação" variados para economizar bateria. Também continha suporte para um cache externo de 16 a 64 KiB. As funções extras fizeram com esta variante contivesse 3 vezes mais transistores do que o i386DX. O primeiro i386SL disponível tinha um clock de 20 MHz, com um modelo de 25 MHz lançado posteriormente.

### Versões embarcadas

Uma versão embarcada do i386SX foi produzida como i376. Esta, foi mais tarde superada pelo i386EX, a qual foi usada em aplicações espaciais, tais como no Telescópio Espacial Hubble.

## Concorrentes

A AMD, através de uma técnica de produção conhecida como engenharia reversa, criou suas próprias versões do 386, que tinham compatibilidade total com o processador da Intel e de quebra, eram mais eficientes, por usarem uma quantidade menor de transistores. Mais tarde, a AMD lançou uma versão mais veloz do 386, que foi batizada de Am386DX 40, elevando a velocidade dos processadores desta geração um passo à frente. Esses processadores foram um enorme sucesso de vendas pelo seu baixo custo e bom desempenho, que em algumas aplicações se igualava a de um 486 SX de 25 MHz.
A Cyrix lançou versões de upgrade para o 386, que já possuíam suporte para as novas instruções do processador 486 e incluíam uma pequena quantidade de cache interno no processador. Essas melhorias colocavam o desempenho dos processadores alternativos num meio termo entre os 386 e o 486 SX, apesar de poderem ser instalados em placas antigas, sem que o usuário precisasse migrar para a nova plataforma, o que significaria muitas vezes perder o investimento feito no 386, inclusive com a aquisição de um caro coprocessador aritmético que não era compatível com o 486 SX.
* · Cx486 SLC: Possui apenas 1 Kbyte de cache interno (em contraposição aos 8 Kbytes de cache do i486). A versão SLC era compatível com o barramento do 386 SX por também possuir barramento externo de 16 bits. Operava nas frequências de 25, 33 e 40 MHz. Foi um processador muito criticado, pois pessoas desavisadas acabaram comprando um sistema com o nome 486 achando apenas que não estavam pagando pelo nome da marca Intel, quando na verdade, o desempenho deste processador deixava bastante a desejar e até perdia para um Am386 DX40.
* · Cx486 DLC: Possui as mesmas características do 486 SLC, porém eram compatíveis com o barramento do 386 DX, de 32 bits. Foi uma boa opção de upgrade para quem não tinha condições de investir num sistema inteiramente novo. A versão de 40 MHz oferecia um desempenho próximo ao de um 486 SX de 33 MHz.
* · Cx486 SRx2: Possui barramento externo de 16 bits, porém com 8 Kbytes de cache interno e com o clock interno dobrado em relação ao barramento externo. Operava nas frequências de 50 e 66 MHz.
* · Cx486 DRx2: Possui barramento externo de 32 bits, porém com 8 Kbytes de cache interno e com o clock interno dobrado em relação ao barramento externo.
Assim como os 486 SX, nenhum desses processadores possuía unidade de ponto flutuante integrada, porém eram compatíveis com os coprocessadores fabricados para o 386. x para a Texas Instruments que os fabricou com a mesma nomenclatura, porém com a sua marca