Você está na página 1de 9

1.

HISTRICO Em 1985 a INTEL anunciou seu microprocessador de 32 bits de dados, o 80386, mas devido a uma srie de falhas e defeitos ele s foi comercializado no ano seguinte. Ao ser lanado, chamava-se 80386 e seu preo inicial era de 299 dlares. Isto ocorreu em meados dos anos 80, mas somente por volta de 1990 tornaram-se comuns os PCs que utilizavam este microprocessador. O 80386 abriu a era dos 32 bits em micros da classe PC. Durante o seu ciclo de vida, foi lanado em verses de 16, 20, 25, 33 e finalmente 40 MHz. Entre 1992 e 1993, quando comeou a popularizao do micro no Brasil, eram muito comuns os equipados com o 386DX-40. Faz parte da terceira gerao de processadores Intel, que foi outra grande evoluo de performance em relao a segunda gerao. At aqui a Lei de Murphy, est totalmente correta: Murphy praticamente profetizou que a cada 18 meses a performance dos processadores duplicaria. At aqui ele est correto, o que no ocorre nos dias atuais. HISTRICO DOS PROCESSADORES INTEL Tipo 80386DX 80386SX Gerao Terceira Terceira Lanamento 1985 1988

Foi por volta desta gerao que se comeou a apelidar os processadores carinhosamente como os "oites". O 386 era e ainda conhecido como o "trs-oito". Os Primeiros 386 operavam a 12,5Mhz, mas logos foram substitudos pelos DX, 16, 20, 25, 33, 40 e 50 Mhz. A Intel tambm lanou uma verso para notebooks que era 386SL. 2. CARACTERSTICAS O microprocessador 386 era constitudo por 275,000 transistores (mais de 100 vezes que o 4004 original), com medida de 1 mcron cada, o mesmo que 1 milsimo de milmetro ou 1000 nm (nanmetros). Foi com este chip que tudo verdadeiramente comeou. Com este chip os PCs passaram a ser ferramentas de trabalho bastante teis. O 386 foi o primeiro processador de 32 bits para PCs. Podia, por conseguinte, consumir o dobro de informao em cada ciclo de relgio e conseguia trabalhar com placas de tambm 32 bits. Um grande passo depois da 80286 foi o i80386 DX (Double Word), a primeira verso do "trs - oito", pois at a o acesso memria estava restrito a 16384 segmentos de 64 K. Tambm foi o primeiro processador totalmente de 32 bits de barramento, ou seja, ele operava tanto internamente quanto externamente a 32 bits, gravando ou lendo 32 bits de dados em cada vez. Possui 14 registradores do 8086, com 32 bits, e mais 2 registradores de segmento. Todos os registradores e instrues podem manipular 8, 16 ou 32 bits igualmente. 386 DX O modo protegido foi fabricado com tecnologia muito mais avanada dos outros, mas tambm era totalmente compatvel com linha da Intel pois continuou a ter uma modalidade real, ou seja, programas projetadas para processadores mais antigos funcionavam nos mais novos. De fato, cdigos escritos para o 8008 podem ainda rodar no mais recente Pentium-pr. Ele pode emular tanto o 8086 quanto o 80286, tornando possvel executar uma grande quantidade de software existente (incluindo sistemas operacionais) sem qualquer modificao. Este processador possuiu muitos verses diferentes com varias freqncias de funcionamento. Foi a partir do 386 que se formou o conjunto de instrues padro x86. Desde ento, mnimas mudanas ocorreram no x86. As capacidades de memria tambm cresceram. Com 32 terminais de endereos, era possvel acessar, teoricamente, 10 32= 4 gigabytes de memria real RAM (versus 16 megabytes do 80286) e 64 trilhes de bytes de memria virtual, permitindo programas com uma memria virtual de 246 bytes (versus 232 no 80286). Aliada a capacidade de processar 32 bits de uma vez s, o 386 se tornou capaz de executar programas muito mais complexos. Dando um exemplo no mundo dos games, Doom foi um dos primeiros jogos a ser 100 % 32 bits, e por isso que ele tinha toda aquela complexidade. Ao contrario do 286, ele pode alternar entre o modo real e o modo protegido. Foram ento desenvolvidos vrios sistemas operacionais como o Windows 3.1, OS/2, Windows 95 e Windows NT que funcionavam usando o modo protegido do 386. O 386 era muito rpido para as memrias RAM existentes na poca. Por isso, muitas vezes ele tinha que ficar "esperando" os dados serem liberados pela memria RAM para poder concluir suas tarefas, perdendo muito em desempenho. Para solucionar esse problema, foram inventadas as memrias cache (SRAM) que so utilizadas em pequena quantidade na grande maioria das placas me para micros 386 e superiores. Esta memria cache um tipo de memria ultra-rpida que armazena os dados da memria RAM mais usados pelo processador, de modo que mesmo uma pequena quantidade dela melhora bastante a velocidade da troca de dados entre o processador e a RAM. O microprocessador pesquisa qual a regio da memria DRAM onde provavelmente sero feitas as prximas operaes e copia todo o contedo daquela rea para outra memria mais rpida (SRAM); quando ocorre um erro na previso ele recalcula nova regio de provveis operaes e a copia na memria rpida, em substituio anterior. A Intel adicionou um novo modo de operao, o modo 86 virtual. Foi a partir daqui que comearam a aparecer os sistemas operacionais multitarefa, como o OS/2. O Windows 386 tambm usou esta habilidade para poder executar vrios programas DOS em separado, protegidos um da capacidade destrutiva do outro. Os sistemas operacionais grficos s se tornaram possveis com este novo recurso do 386. Em termos grosseiros de velocidade de computao, ele comparvel a um pequeno mainframe. A velocidade dos 386 da Intel variou somente entre 12.5MHz e 33MHz. Foi preciso que alguns clones aparecessem para que ele fosse mais longe. Alm da Intel, vrios outros fabricantes produziram microprocessadores 386SX e 386DX. Os clones da AMD e da Cyrix atingiram um mximo de 40 MHZ. A AMD lanou verses de 16, 20, 25, 33 e 40 MHz. O motivo de a Intel ter se limitado a esta velocidade parece ser receio de que um 386 fosse mais potente que um 486. De fato, um bom 386 de MHZ poderia ser comparado a um 486 dos mais simples. Os primeiros 386DX lanados tinham um bug na instruo de multiplicao 32 bits do modo protegido. Alguns dos processadores possuram um soquete diferente com pinos de baixo do processador este tipo de soquete foi usado para os prximos lanamentos.

CARACTERSTICAS DOS SOQUETES Tipo Soquete 3 N de pinos 237 Tenso 5 a 3,0 V Processadores 486 DX, SX, DX2, DX4 Encapsulamento PGA

Os chips 386 foram desenhados para serem user friendly. Todos os chips desta famlia eram compatveis pino-por-pino e tambm eram compatveis a nvel dos binrios com as anteriores famlias dos 186, significando isto que os utilizadores no precisavam de comprar novo software para os usar. Ainda, os 386 tinham a capacidade de poupar energia pois trabalhavam a baixa voltagem e usavam o System Management Mode(SMM) que podia desligar alguns dos componentes para poupar energia. Globalmente, este chip foi um grande avano no desenvolvimento dos chips. Foi ele que definiu o padro para os chips que se seguiram, pois tinha um desenho simples com o qual os investigadores conseguiam facilmente trabalhar. Com este processador entrou no mercado o Cache de Memria e multiprocessamento. No microprocessador 80386 existe uma TLB, que uma pequena memria associativa que retm os ltimos e mais freqentes endereos de pgina acessado, ou seja, uma pequena cache de endereos fsicos. Possui tambm endereo fsico ou virtual, com memria virtual segmentada (sempre) e paginada (opcional), ambas apenas no modo protegido. Enfim, todos os microprocessadores hoje disponveis em micros compatveis com PC utilizam o funcionamento do 80386 como ponto de partida. Isso aconteceu por pelo menos trs motivos tcnicos. Primeiro, 0 80386 no tem a limitao do 80286 em relao ao seu modo protegido. Outro a criao do modo virtual 8086, que permitiu que programas escritos para o 8086 pudessem ser utilizados diretamente dentro do modo protegido. E por ltimo, o 80386 manipula dados de 32 bits e tem instrues mais poderosas. Alm disso, estando em seu modo protegido, o 80386 consegue acessar at 4 GB de memria RAM. Fabricante Nome da Famlia INFORMAES GERAIS Gerao do Processador Gerao da Placa Me Verses Lanamento Velocidade do Barramento de Memria (MHZ) ESPECIFICAES DE VELOCIDADE Multiplicador de Clock do Processador Velocidade do Processador (MHZ) BENCHMARKS Classificao iCOMP Norton SI Tecnologia do Processo CARACTERSTICAS FSICAS Tamanho do Circuito (microns) Transstores (milhes) Voltagem Interna ou do Ncleo (V) Gerenciamento de Fora Necessidades de Resfriamento CAPSULAMENTO Tipo de Capsulamento Interface da Placa Me Largura do Barramento de Dados (bits) Largura de Banda Mxima do Barramento de Dados (Mbytes/seg) Largura de Barramento Enderevel (bits) Memria Enderevel Mxima Tipo de Cache Nvel 2 Multiprocessamento Conjunto de Instrues ARQUITETURA INTERNA Suporte a MMX Modos do Processador Mtodo de Execuo x86 COMPONENTES INTERNOS Tamanho do Registro (bits) Profundidade de Pipeline (estgios) Intel AMD, Cyrix 80386DX Terceira Terceira 80386DX-16 Out. 1985 16 1.0 16 ~29 ~15 CMOS Originalmente 1.5, agora 1.0 0.275 20 ~38 ~20 25 49 ~25 33 68 35 40 ~85 ~43 80386DX-20 Fev. 1987 20 80386DX-25 Abril 1988 25 80386-33 Abril 1989 33 80386-40 ? 40

Voltagem Externa ou de E/S (V) 5 VOLTAGEM, FORA E RESFRIAMENTO 5 Nenhum Nenhuma PGA de 132-Pinos Soquete de 132-Pinos 32 66 32 4 GB Nenhum No x86 No Real, Protegido, x86 Virtual Nativo 32 4 80 100 133 160

ARQUITETURA EXTERNA

Tamanho do Cache Nvel 1 Unidades de Inteiros Unidade de Ponto Flutuante / Coprocessador Aritmtico Decodificadores de Instrues

Nenhum 1 Coprocessador 80386 Opcional 1

Tamanho do Buffer de Previso Nenhum de Desvio / Preciso 3. 80386DX vs. 80386SX Apesar de ser tecnologicamente mais avanado que o 80286, o 80386 passou pelo mesmo problema sofrido pelo 8086: a dificuldade na transio para um maior nmero de bits. Um processador que trabalha com dados de 32 bits necessita de circuitos perifricos de apoio que trabalhem tambm com dados de 32 bits, que eram muito caros na poca. Toda a arquitetura de micros classe "PC AT" era voltada para 16 bits: memrias de 16 bits, placas de expanso de 16 bits, chips auxiliares de 16 bits. A soluo dada pela Intel foi semelhante a usada com o 8086: para baratear o custo de produo de microcomputadores baseados no 80386, a Intel resolveu compatibilizar o processador aos circuitos de apoio j existentes. Esses circuitos integrados de apoio eram os mesmos amplamente utilizados em projetos de placasme baseadas no 80286, portanto capazes de trabalhar com dados de 16 bits. Para diferenci-la do 80386 original, a Intel teve de nome-la de alguma forma. E isso se deu na forma de sufixo "SX". Para no haver confuso, o 80386 original passou a ser chamado de 386 DX. Sempre que citarmos o processador 80386, estamos nos referindo ao modelo 80386DX.

386 SX O 80386 SX (Single Word) uma verso mais barata e reduzida, com barramento externo de 16 bits ( comunicava com as placas por um caminho de 16 bits) e verso OverDrive para os usurios com placas me antigas. MICROPROCESSADOR 80386 SX 80386 DX BITS INTERNOS 32 32 BITS EXTERNOS 16 32

O 80386 SX internamente trabalhava 32 bits, porm externamente funcionava 16 bits, possibilitando a fabricao de placas me mais baratas usando basicamente os mesmos componentes das placas de 286. O 80386SX continha somente 24 linhas de endereamento, enquanto que o 80386DX tinha 32 linhas. Contudo, do ponto de vista do software, eram idnticos. Possui os mesmos circuitos e executa as mesmas instrues, de 8, 16 e 32 bits. A diferena estava na largura da interface para barramento de dados, que opera com 16 bits, ao invs dos 32 bits usados pelo 80386 original, que passou a chamar-se 386DX. Alm do barramento de dados com 16 bits, existe ainda mais uma diferena: seu barramento de endereos, apesar de possuir 32 bits, utiliza apenas 24, o que limita seu espao de endereamento a apenas 16 MB. Isto no chegou a ser nenhum problema, pois na sua poca, raros eram os PCs que usavam mais de 4 MB de memria. MICROPROCESSADOR 80286, 386 SX 386 DX N BITS DE ENDEREO 24 32 CAPACIDADE DE ENDEREAMENTO 16 MB 4 GB

O 386SX sensivelmente mais lento que o 386DX. Ao fazer a leitura de dados da memria, o 386DX recebe 32 bits de uma s vez. O 386SX precisa realizar duas leituras consecutivas para completar os 32 bits. Apesar do acesso memria ser mais demorado, o processamento feito na mesma velocidade que o 386DX. Enquanto uma instruo est sendo executada, outra instruo buscada na memria. Como em muitas instrues, o tempo de execuo maior que o tempo de busca, na maioria delas o tempo adicional causado pelo barramento de 16 bits no chega a causar impacto muito forte no desempenho. 4. PINAGEM A pinagem do 80386 similar do 80286. Internamente, o 80386 trabalha com palavras de 32 bits, e todas as referncias memria devem ser alinhadas em limites de 4 bytes. Assim, a CPU pode buscar palavras nos endereos 0, 4, 8 etc., mas no palavras nos endereos 1, 2, 3. Como resultado, todos os endereos de memria so mltiplos de quatro, e assim os dois bits de baixa ordem do endereo so sempre 0, e A0 e A1 no existem. Apesar disso, existem instrues para armazenar quantidades de 8 e 16 bits na memria; assim, o problema resolvido pelo BHE no 80286 tambm existe aqui, mas pior. Ele foi resolvido de uma forma direta, simplesmente provendo quatro sinais, BE0-BE3 (Bus Enable - habilitao de barramento), que apenas indicam, para cada byte na palavra, quais devem ser utilizados. Com um barramento de endereo de controle, o encapsulamento de 68 pinos utilizado no 80286 era muito pequeno; assim, a Intel foi para um padro maior. Este encapsulamento consiste em uma grade quadrada de 14x14 = 196 pinos, com a subgrade do meio de 8x8 = 64 ausente, dando um total de 132 pinos. Muitos deles so duplicatas de outros pinos, ou no so usados.

Pinagem do 80386DX/386DX (PGA-132) Pinagem 80386SX/386SX (PQFP-100) Com o 80386, a Intel mantm a tradio de redefinir todos os sinais de controle do barramento a cada nova pastilha. Desta vez eles so chamados W/R (Write/Read), D/C (Data/Code) e M/IO (Memory/IO). Entretanto, algum finalmente achou uma tabela com as potncias de 2 e descobriu que 7 (23, e assim apenas

trs sinais so usados para os sete tipos de ciclos de barramento necessrios (leitura de cdigo, leitura de dados, escrita de dados, leitura de E/S, escrita de E/S, reconhecimento e halt). LOCK e READY no foram modificados, mas trs novos sinais de controle de barramento esto presentes no 80386. ADS (Adress Status - status de endereo) indica que um endereo vlido est no barramento. Quando a memria v este sinal, ela sabe que o endereo e as linhas de controle do barramento so vlidos, e ento ela pode comear a trabalhar imediatamente. BS16 (Bus Size 16) uma entrada que pode ser ativada para dizer ao 80386 que o sistema contm pastilhas de E/S (antigas) e 16 bits. Quando o 80386 v este sinal, ele realiza as transferncias de 32 bits como uma seqncia de duas transferncias consecutivas de 16 bits. Enquanto BS16 usado para reduzir a velocidade do sistema, NA (Next Address - prximo endereo) usado para aceler-lo. Ativando NA, a memria pode informar ao 80386 que ela est preparada para aceitar o prximo endereo de memria, mesmo que no tenha ainda ativado READY para o ciclo de barramento corrente. Esta caracterstica permite um maior pipeline, uma vez que a memria comea a preparar o prximo ciclo antes que a CPU tenha terminado de processar o corrente. Os sinais INTR, NMI, HOLD, HLDA, PEREQ, BUSY, ERROR e RESET esto tambm presentes como no 80286 e tm a mesma funo. No existe PEACK porque o 80386 pode acessar seu co-processador diretamente. 5. O MODO PROTEGIDO E SUPERIORES O modo protegido do 80386 apresenta diversos recursos importantes. Entre esses, podemos citar: Memria virtual: Com esse esquema podemos simular um computador com mais memria RAM do que ele realmente possui. A memria extra conseguida atravs dessa tcnica armazenada em um arquivo do disco rgido, chamado arquivo de troca. Proteo de memria: Como o processador acessa muita memria, podemos carregar diversos programas simultaneamente. Atravs da proteo de memria, o processador capaz de isolar cada programa em uma rea de memria bem-definida. Multitarefa: Por causa da proteo de memria, o processador capaz de saber exatamente onde se encontra cada programa carregado em memria. Dessa forma, ele pode executar automaticamente uma instruo de cada programa, parecendo que os programas esto sendo executados simultaneamente. Modo virtual 8086: O modo protegido incompatvel com o modo real. Poderamos, ento, executar programas de modo real em modo protegido atravs do modo virtual 8086, pois o processador pode trabalhar como se fosse vrios processadores 8086 com 1 MB de memria simultaneamente. Isso significa que podemos ter, ao mesmo tempo, um ou mais programas de modo real sendo executados simultaneamente dentro do modo protegido. 5.1. Memria Virtual No momento em que desejamos armazenar mais dados do que realmente cabem na memria RAM, o sistema operacional apresenta uma mensagem de erro. Devemos, ento, fechar um ou mais aplicativos para liberarmos memria. Quando o processador est em modo protegido, podemos fazer com que ele "pense" que h mais memria RAM instalada do que realmente existe, fazendo com que o erro de "estouro" de memria seja menos comum. Dessa forma, podemos configurar u micro que, por exemplo, possua apenas 8 MB de memria RAM com 20 MB de memria virtual, de modo que os programas "pensem" que h 28 MB de memria RAM instalada. A memria virtual feita atravs de um arquivo no disco rgido, chamado arquivo de troca. Quando a memria RAM real do micro "estoura", o processador comanda uma troca entre uma rea da memria RAM que esteja sendo menos utilizada com uma rea do arquivo de troca que esteja vazia. Dessa forma, uma poro da memria RAM passar a ficar vazia, e no ser emitida mensagem de erro informando que no h memria disponvel. No momento em que o processador necessitar de um dado na memria virtual, ele comanda uma troca, de forma a recuperar o dado armazenado. Esse processo continua at o arquivo de troca tambm ficar cheio. Nesse momento ir aparecer a mensagem de erro por causa da falta de memria. A tcnica de memria virtual nos traz uma soluo, mas tambm nos traz um outro problema. Como o disco rgido muito mais lento que o processaodor, cada troca comandada no instantnea. Quanto menos memria RAM um micro tiver, mais vezes sero necessrias trocas com o disco rgido. Instalando-se mais memria RAM no micro, menos vezes ocorrer o problema de falta de memria. Quando mais memria RAM tiver, menos lento ser o micro, pois utilizar menos a memria virtual. 5.2. Proteo de memria O processador necessita isolar cada aplicativo em sua prpria rea de memria, para que uma aplicao no sobreponha a rea que uma outra esteja utilizando. Para isso no ocorrer, o processador protege, em memria, cada aplicativo carregado. Entretanto, nem todos os sistemas operacionais utilizam o recurso de proteo de memria. Fica fcil entender o porqu de travamentos constantes e erros da Falha Geral de Proteo que ocorrem freqentemente no Windows 3.x e no Windows 9x. Como esses sistemas no utilizam ou nem sempre utilizam o recurso de proteo de memria, muito comum um aplicativo invadir a rea de outro. 5.3. Multitarefa O processador capaz de executar um pouco de cada aplicativo por vez, dando a impresso de que todos so executados simultaneamente. Para que a multitarefa seja executada pelo processador, obrigatrio que os aplicativos estejam protegidos em memria. Dessa forma, somente sistemas operacionais que utilizem proteo de memria tm multitarefa. 5.4. Modo Virtual O uso do processador 80386 aumentou ainda mais a capacidade de endereamento e introduziu o modo virtual (V86). O modo V86 veio permitir a execuo dos programas mais antigos em mquinas virtuais (VM ou Virtual Machines) como se fosse em modo real, conjuntamente com outros programas em modo protegido.

Como o modo real incompatvel em software com o modo protegido, seria impossvel executar diretamente um programa escrito para o modo real mantendo o processador em modo protegido. Para que isso no ocorresse, foi criado um modo de operao chamado Virtual 8086. Podemos abrir quantas sesses Virtual 8086 quisermos, cada uma emular um processador 8086 com 1 MB de memria. Cada programa que seja executado em uma sesso Virtual 8086 "pensar" que est sendo executado em um micro 8086 s para ele. Alm disso, cada sesso destas protegida automaticamente em memria. 6. O DOS E O MODO PROTEGIDO O DOS um sistema operacional de modo real. Entretanto, h duas maneiras bsicas para fazermos o DOS trabalhar em modo protegido: atravs do Windows 3.x ou de algum programa DPMI. Windows 3.x: Como ele trabalha em modo protegido, pode operar com a memria virtual e com o modo Virtual 8086. Como o seu sistema operacional ainda o DOS, no pode utilizar proteo de memria e, conseqentemente, no permite multitarefa. A Microsoft estipulou uma padronizao para que programas de modo protegido fossem escritos para o DOS. Essa padronizao chama-se DPMI. Um exemplo clssico de programa DPMI o DOS4GW. Diversos programas o utilizam de modo a trabalharem em modo protegido mesmo no DOS. O DOS4GW fica sendo um "chaveador": ele traz o processador para o modo protegido. Quando o programa necessita de alguma instruo de modo real ou do sistema operacional, o DOS4GW comanda a volta para o modo real e, ao trmino dessa instruo, ao modo protegido novamente. 7. BUGS Por ser um projeto grandioso demais para a poca (1985), apareceram alguns bugs. Os mais conhecidos bugs do 80386 so: As primeiras verses do 80386 no conseguiam chavear para o modo protegido. Essaas mesmas veres no conseguiam executar a instruo de multiplicao de 32 bits corretamente. Alm dos outros dois erros, nas primeiras veres do 80386 aps uma instruo chamada STOSB, o registrador EDI era "zerado" ao invs de ser incrementado. Uma instruo chamada POPAD no preservava corretamente o valor do registrador EAX. Ao contrrio dos outros trs bugs, esse bug demorou muito tempo para ser descoberto. 8. CO-PROCESSADORES MATEMTICOS A complexidade dos novos softwares tambm exigiam a presena do co-processador numrico. Como os processadores Intel anteriores, o 386 pode trabalhar em conjunto com um co-processador matemtico chamado 387, com 73 instrues bsicas (67+7- 1). O co-processador a ser utilizado depende do modelo de processador que est sento utilizado. Uma placa-me 386SX tem como opo utilizar o co-processador 80387SX e uma placa-me 386DX tem a opo de utilizar o co-processador 80387DX. A pinagem utilizada pelos co-processadores citados so diferentes, por isso no h como encaixar um no local de outro. Na instalao de um co-processador matemtico devemos observar a sua freqncia de operao mxima, que dever ser igual ou superior freqncia de operao do processador principal. Existe uma grande diferena em clculos quando o micro passa a ter um co-processador matemtico. O pipeline do 80386 4, executando simultaneamente 4 etapas diferentes de 4 respectivas instrues. Com ele obrigatrio o uso do co-processador matemtico 80387. A INTEL desenvolveu em 1989 um projeto colocando internamente na pastilha do processador 80386 o co-processador 80387, o controlador de cache 82385 e 8 KBytes de memria RAM de cache, denominando-o microprocessador 80486 . Este projeto inicial do 80486 tinha mais de 1 milho de transistores integrados na pastilha, operando em 25 MHz. A dissipao de calor era muito grande, provocando falhas e problemas de design de placas e gabinetes. A soluo foi rebaixar a tenso de alimentao do CI, dos tradicionais 5 Volts para 3,3 Volts. 9. O CACHE DE MEMRIA A partir do 80386, a memria RAM do micro comea a ficar lenta em relao ao processador. Por ser mais lenta que o processador, quando um segundo dado for enviado, ela ainda estar armazenando o primeiro dado, portanto ainda no estar pronta para receb-lo. O processador precisar esperar (wait state) e essa espera ordena que o processador espere n pulsos de clock depois do envio ou recebimento de dados memria. O processador est constantemente acessando a memria, logo ir utilizar wait states em todo momento. A utilizao constante de wait states faz com que o desempenho do micro seja reduzido, j que o processador no ficar fazendo absolutamente nada, esperando somente a memria ficar pronta para receber dados. A verdadeira soluo para o acesso lenta memria RAM a utilizao de um recurso chamado cache de memria. Ele utiliza na placa-me uma pequena poro de memria de alta velocidade (memria cache) e um circuito controlador especial, o controlador de cache. O controlador de cache l o contedo da RAM e copia uma pequena poro para a memria cache. Quando o processador precisar ler algum dado da memria, ler a cpia existente na memria cache, no necessitando utilizar wait states para a leitura. Assim o micro ganha velocidade e fica mais rpido. Em pelo menos 80% das vezes que o processador faz um acesso memria RAM, os dados so lidos do cache de memria. Normalmente no encontramos o recurso de cache de memria em micros 386SX. 10. PLACAS-ME 10.1. Placas-me 386SX: Encontra-se nesse tipo de placa-me: Processador 386SX Soquete PLCC para co-processador 387SX Slots ISA Soquetes para mdulos de memria SIMM30 No encontrar circuito de cache de memria 10.2. Placas-me 386DX:

Encontra-se nesse tipo de placa-me: Processador 386DX Soquete PGA para co-processador 387DX Slots ISA Soquetes para mdulos de memria SIMM-30 Cache de memria 11. ENDEREAMENTO 11.1. Modos de endereamento com registradores O processador 80386 (e posteriores) possuem registradores de 32 bits. Os oito registradores de propsito geral possuem equivalentes com 32 bits. So eles eax, ebx, ecx, edx, esi, edi, ebp e esp. Estes registradores podem ser utilizados como operandos de muitas instrues 80386. 11.2. Modos de endereamento memria O processador 80386 generalizou os modos de endereamento memria. Enquanto o 8086 s permitia usar bx ou bp como registradores de base e si ou di como registradores de ndice, o 80386 permite que praticamente todos os registradores de propsito geral de 32 bits seja usado como um registrador de base ou de ndice. Alm do mais, o 80386 novos modos de endereamento indexado em escala que simplificam o acesso a elementos de arrays. Alm do aumento para 32 bits, os novos modos de endereamento so, provavelmente, o maior progresso do chip em relao a processadores anteriores. Como os modos de endereamento do 80386 so mais ortogonais, eles so mais fceis de memorizar do que os modos de endereamento do 8086. Para programadores trabalhando com o processador 80386 sempre existe a tentao de deixar os modos de endereamento do 8086 de lado e usar unicamento o conjunto do 80386. Entretanto, veremos no prximo mdulo que os modos de endereamento do 8086 so mais eficientes que os comparveis do 80386. Portanto, importante conhecer todos os modos de endereamento e escolher o modo apropriado para cada situao. Quando se usa os modos de endereamento base/indexado e base/indexado/deslocamento no 80386, sem a opo de escala (isto , deixando a escala padro em "*1"), o primeiro registrador que aparece no modo de endereamento o registrdor base e, o segundo registrador, o registrador ndice. Este um aspecto importante porque a escolha do segmento padro determinada pela escolha do registrador base. Se o registrador base for ebp ou esp, o 80386 usa como padro o segmento de dados, mesmo se o registrador ndice for ebp. Se usarmos o operador ndice de escala ("*n") com um registrdor, este registrador sempre ser o registrador ndice, independentemente de onde aparecer no modo de endereamento: 11.3. Modos de endereamento indireto com registradores No 80386 possvel especificar qualquer registrador de 32 bits de propsito geral quando se usa o modo de endereamento indireto com registradores. Tanto [eax], [ebx], [ecx], [edx], [esi] como [edi] fornecem deslocamentos, como padro, para o segmento de dados. Os modos de endereamento [ebp] e [esp] usam o segmento da pilha como padro. Note que, rodando em modo real de 16 bits no 80386, os deslocamentos nestes registradores de 32 bits precisam continuar dentro do limite de 0 a 0FFFFh. No possvel usar valores maiores que isto para acessar mais do que 64K num segmento. Note tambm que preciso usar o nome de 32 bits dos registradores (eax ao invs de ax, por exemplo). As instrues seguintes mostram todas as formas vlidas: 11.4. Modos de endereamento indexado, base com ndice, base com ndice com deslocamento Os modos de endereamento indexado (registrador indireto mais um deslocamento) permitem misturar um registrador de 32 bits com uma constante. Os modos de endereamento base/indexado permitem associar dois registradores de 32 bits. Finalmente, os modos de endereamento base/indexado/deslocamento permitem combinar uma constante e dois registradores para formar o endereo efetivo. Lembre-se de que o deslocamento produzido pelo clculo do endereo efetivo precisa ser de 16 bits quando se opera no modo real. No 80386 os termos registrador base e registrador ndice ampliam o sentido. QUando se combina dois registradores de 32 bits num modo de endereamento, o primeiro registrador o registrador base e o segundo o registrador ndice. Isto verdadeiro, independentemente dos nomes dos registradores. Note que o 80386 permite usar o mesmo registrador como base e como ndice, o que pode ser til em vrias ocasies. As instrues seguintes fornecem exemplos representativos dos vrios modos de endereamento base e indexado, junto com suas variaes sintticas: As instrues seguintes usam o modo de endereamento base+indexado. O primeiro registrador no segundo operando o registrador base, o segundo o registrador de ndice. Se o registrador base for esp ou ebp, o endereo efetivo relativo ao segmento de pilha. Nos outros casos, o endereo efetivo relativo ao segmento de dados. Note que a escolha do registrador ndice no afeta a escolha do segmento padro. claro que podemos adicionar um deslocamento aos modos de endereamento acima citados para produzir o modo de endereamento base+indexado+deslocamento. As instrues seguintes so uma amostra representativa dos modos de endereamento possveis: Existe uma restrio em relao ao uso do registrador ndice no 80386: no se pode usar o registrador esp como um registrador ndice. Ele pode ser usado como registrador base, mas no como registrador ndice. 11.5. Modos de endereamento indexado em escala Os modos de endereamento indexado, bas/indexado e base/indexado/deslocamento descritos acima, na realidade so instncias especiais dos modos de endereamento indexado em escala do 80386. Estes modos de endereamento so particularmente teis para acessar elementos de arrays, apesar de no estarem limitados a este propsito. Estes modos permitem multiplicar o registrador ndice por um, dois, quatro ou oito. A sintaxe geral : onde "base" e "ndice" representam qualquer registrador de propsito geral de 32 bits do 80386 e "n" o valor de um, dois, quatro ou oito. O 80386 calcula o endereo efetivo somando desloc, base e ndice*n. Por exemplo, se ebx contiver 1000h e esi contiver 4, ento Note que os modos de endereamento ampliados indexado, base/indexado e base/indexado/deslocamento do 80386 na realidade so casos especiais deste modo de endereamento indexado em escala com "n" igual a um. Isto , os pares de instrues seguintes so absolutamente idnticos: claro que o MASM permite uma poro de variaes destes modos de endereamento. A seguir uma pequena amostra destas possibilidades: 12. FORMATO DE INSTRUO O 386 possui 153 instrues bsicas, sendo 44 instrues extras. O formato de instruo no 386 tambm muito complicado, sendo a instruo mais curta de 1 byte e a mais comprida at 17 bytes.

H pouca estrutura ou regularidade no formato, exceto talvez nos 2 ltimos bits do opcode:

O bit da direita do opcode indica se o endereo de memria, se usado, fonte ou destino da operao. O penltimo bit da direita do opcode indica se o operando tipo byte ou word.

O formato geral est mostrado na primeira figura. A segunda figura mostra os campos opcode e mode. SIB presente apenas no Motorola 68030, para dar um byte adicional ao modo.

Formato de instruo no Intel 80386

Campos opcode e mode 12.1 A instruo MOV 80x86 Os exemplos do texto usaro com muita frequncia a instruo mov 80x86. Alm disso, a instruo mov a instruo de mquina mais comum do 80x86. Portanto, compensa gastar um pouco de tempo discutindo o funcionamento desta instruo. A instruo mov muito simples e tem a seguinte forma: mov destino, fonte mov faz uma cpia da fonte e armazena este valor no destino. Esta instruo no afeta o contedo original da fonte. Ela sobrepe o valor anterior do destino. A operao desta instruo pode descrita pela seguinte declarao Pascal: destino := fonte; Esta instruo tem muitas limitaes. Seremos confrontados com ela no nosso estudo da linguagem Assembly 80x86. Para entender porque estas limitaes existem, preciso dar uma olhada no cdigo de mquina das vrias formas desta instruo. Um alerta: eles nunca chamam o CISC (Complex Instruction Set Computer) do 80386. A codificao da instruo mov provavelmente a mais complexa do conjunto de instrues. Isto significa que, se no estudarmos o cdigo de mquina desta instruo, no seremos capazes de avali-la e no seremos capazes de escrever cdigo otimizado usando esta instruo. Agora voc vai entender porque trabalhamos com os processadores x86 (os "de mentira") nos mdulos anteriores ao invs de usar as instrues 80x86.

Instruo MOV Existem diversas verses da instruo mov. O menumnico mov descreve mais de uma dzia de instrues diferentes no 80386. A forma mais usada tem a seguinte codificao binria (veja a Fig.13). Os oito primeiros bits da instruo so o opcode. Os bits zero e um definem a largura da instruo (8, 16 ou 32 bits) e a direo da transferncia. Quando forem analisadas instrues especficas neste texto, os valores de d e w estaro sempre preenchidos. Outros textos, com frequncia, costumam pedir que estes valores sejam preenchidos pelo leitor. O opcode seguinte o byte do modo de endereamento, carinhosamente chamado de byte "mod-reg-r/m" pela maioria dos programadores. Este byte escolhe qual das 256 combinaes possveis de operandos a instruo genrica mov permite. A instruo mov genrica assume trs formas diferentes na linguagem Assembly: mov reg, memria mov memoria, reg mov reg, reg Observe que pelo menos um dos operandos sempre um registrador de propsito geral. O campo reg no byte mod/reg/rm especifica este registrador (ou um dos registradores se usarmos a terceira forma). O bit d (de direo) do opcode decide se a instruo deve armazenar dados nos registradores (d=1) ou na memria (d=0). Os bits do campo reg permitem selecionar um de oito registradores diferentes. O 8086 permite oito registradores de 8 bits e oito registradores de propsito geral de 16 bits. O 80386 tambm permite oito registradores de propsito geral de 32 bits. A CPU decodifica o significado do campo reg da seguinte maneira: Para diferenciar registradores de 16 e de 32 bits, o processador 80386 e posteriores usam um byte especial de prefixo no opcode das instrues com registradores de 32 bits. No restante, as codificaes das instrues so as mesmas para os dois tipos de instruo. O campo r/m, juntamente com o campo mod, escolhe o modo de endereamento. A codificao do campo mod a seguinte: O campo mod escolhe entre mover de registrador para registrador e mover da memria para registrador. Tambm escolhe o tamanho do deslocamento (zero, um, dois ou quatro bytes) que segue a instruo dos modos de endereamento de memria. Se MOD=00, significa que se trata de um dos modos de endereamento sem deslocamento (indireto via registrador ou base/indexado). Note o caso especial onde MOD=00 e r/m=110. Normalmente corresponderia ao modo de endereamento [bp]. O 8086 usa esta codificao para o modo de endereamento apenas por deslocamento. Isto mostra que no existe um modo de endereamento por [bp] verdadeiro no 8086. Para entender porque possvel usar o modo de endereamento por [bp], analise os MOD=01 e MOD=02 da tabela acima. Estes padres de bits ativam os modos de endereamento desloc[reg] e desloc[reg][reg]. Aparentemente no correspondem a um modo de endereamento [bp], mas considere as seguintes instrues:Estas declaraes, que usam os modos de endereamento indexado, realizam as mesmas operaes que as correspondentes indiretas por registradores

(obtidas removendo-se o deslocamento das instrues acima). A nica diferena real entre as duas formas que o modo de endereamento indexado um byte mais longo (se MOD=01 e dois bytes mais longo se MOD=10), o qual contm o deslocamento zero. Por serem maiores, estas instrues tambm so um pouco mais lentas. Esta caracterstica do 8086 - de permitir duas ou mais maneiras de realizar a mesma coisa - ocorre em todo o conjunto de isntrues. Na verdade, veremos vrios outros exemplos antes de terminarmos a anlise da instruo mov. O MASM geralmente escolhe a melhor forma automaticamente. Se escrevssemos o cdigo acima e o submetssemos ao MASM, ele geraria o modo de endereamento indireto por registradores para todas as instrues, exceto para mov ah,0[bp]. Mesmo neste caso, emitiria apenas um byte para um deslocamento zero. Note que o MASM no exige que se indique 0[bp]. Podemos usar apenas [bp] que o MASM automaticamente supre o byte zero. Se MOD for diferente de 11b, o campo r/m codifica o modo de endereamento memria da seguinte forma: No se esquea de que os modos de endereamento envolvendo bp usam o segmento da pilha (ss) como padro. Todos os outros usam o segmento de dados (ds) como padro. Se voc j ficou perdido com esta explicao, ainda no sabe do pior. Lembre-se de que estes so apenas alguns dos modos de edereamento 8086 e ainda preciso conhecer todos os modos de endereamento do 80386. Agora comea a ficar claro o que o pessoal quiz dizer com computador de instrues complexas. Entretanto, o conceito importante que deve ser notado que possvel construir instrues 80x86 da mesma forma como foram construdas as instrues do x86 no captulo 3 - criando as instrues bit a bit. Existem vrios fatos importantes, relacionados instruo mov, que devem ser lembrados. Antes de mais nada, no existem movimentos da memria para a memria. Por alguma razo, os iniciantes da linguagem Assembly tm uma certa dificuldade de lembrar deste aspecto. Apesar de existirem algumas instrues que realizam movimentos da memria para a memria, carregar um registrador e depois armazenar este valor na memria quase sempre mais eficiente. Outro fato importante que existem muitas instrues mov diferentes que realizam a mesma coisa. Tambm existem vrios modos de endereamento diferentes que podem ser usados para a mesma posio na memria. Se voc tiver interesse em escrever programas mais curtos e mais rpidos possveis na linguagem Assembly, ser preciso observar constantemente as vantagens e desvantagens de instrues equivalentes. A anlise deste captulo refere-se principalmente s instrues mov genricas para realar a maneira como os processadores 80x86 codificam os modos de endereamento de memria e de registradores numa instruo mov. Outras formas da instruo mov permitem transferir dados entre os registradores de 16 bits de propsito geral e os registradores de segmento. Outras ainda permitem carregar registradores ou posies de memria com uma constante. Estas variaes da instruo mov usam opcodes diferentes. Na tabela abaixo esto as principais instrues MOV e suas respectivas codificaes em binrio: Existem vrias instrues mov adicionais no 80386 que permitem carregar os registradores de propsito especial do 80386. Eles no sero analisados neste texto. No 80x86 tambm existem algumas instrues para strings, as quais realizam operaes da memria para a memria. Estas instrues aparecem no prximo captulo, mas no so boas substituitas da instruo mov. 13. EFLAGS No 80386, o registrador FLAGS foi expandido de 16 para 32 bits e passou a se chamar EFLAGS. O bit 18 do registrador EFLAGS no foi definido e no poder ser ativado. No 80486 este bit tornou-se o Alignment Check (AC), utilizado para capturar acessos memria no-alinhados (tentativas de ler uma palavra num endereo que reside nos limites de um byte). Desta forma, o programa l o registrador EFLAGS e tenta ativar o bit AC. Se o valor do bit no puder ser alterado, o programa pode concluir que a mquina um 80386 e responde de acordo. 14. 80386 vs. 68030 As pastilhas 80386 e 68030 so ambas processadores de 32 bits de alto desempenho com aproximadamente o mesmo poder computacional. , entretanto, interessante compar-los para ver como projetistas diferentes tomam decises diferentes no nvel de hardware. Ambas as pastilhas utilizam endereos de 32 bits, mas os do 80386 tm sempre os 2 bits de baixa ordem iguais a 0, alinhando transferncias em limites de palavras. O 68030 no tem esta limitao e pode enderear a memria comeando em qualquer byte. Ambas as pastilhas tm um barramento de dados de 32 bits. No h nenhuma diferena aqui. Os sinais de controle do barramento so de alguma forma diferentes. O 68030 tem sinais, ECS e OCS, que indicam o incio de um ciclo de barramento e um ciclo de operando, respectivamente, facilitando aos dispositivos externos o sincronismo com a CPU. Com o 80386, os dispositivos de E/S tm que sincronizar monitorando o barramento. Ambas as pastilhas possuem sinais (ADS e AS) que indicam que o barramento de endereo est vlido, mas somente o 68030 possui um sinal similar (DS) para o barramento de dados. Ambas usam um cdigo de 3 bits para especificar o tipo de ciclo de barramento, e ambas tm uma forma explcita de deixar que na memria e dispositivos de E/S sinalizem o trmino de um ciclo (READY e DSACKx). Ambas possuem tambm uma maneira de travar o barramento para operaes de mltiplos ciclos (LOCK e RMC). O tratamento de interrupes ligeiramente diferente. O 80386 possui apenas duas prioridades, mascarvel e no-mascarvel, enquanto o 68030 tem sete. Eles tambm diferem na arbitragem de barramento, com o 68030 permitindo que um segundo dispositivo requisite o barramento antes que o primeiro termine, algo que o 80386 no permite. Embora ambos os microprocessadores possuam co-processadores de ponto flutuante, a forma de interface-los ligeiramente diferente. O 80386 considera seu co-processador como sendo algo especial, e tem sinais especficos para comunicar-se com ele. Ao contrrio, o 68030 considera seu co-processador como simplesmente outro dispositivo de E/S e, se comunica com ele atravs de ciclos de barramento normais. Esta abordagem torna mais fcil ligar co-processadores adicionais ao 68030. O processador 68030 foi, de fato, projetado com a idia de que os usurios pudessem construir suas prprias placas co-processadoras. Ambas as pastilhas possuem uma unidade de gerncia de memria sofisticada interna, mas apenas o 68030 possui um cache de dados substancial. Ambas usam pipeline para melhorar seu desempenho. Em resumo, as duas pastilhas so mais parecidas do que diferentes. Ambos os times de projeto tiveram acesso mesma

tecnologia, ambos tiveram os mesmos objetivos e ambos estavam tentando conquistar os mesmos consumidores, de modo que no deve ser surpresa que os produtos resultantes sejam similares.