Intel 8088 - Intel 8088

Intel 8088
KL Intel TD8088.jpg
D8088 em um DIP de cerâmica com pinos de prata
Informação geral
Lançado 1979
Interrompido 1998
Fabricante (s) comum (is)
atuação
Máx. Taxa de clock da CPU 5 MHz a 16 MHz
Largura de dados 8 bits
Largura do endereço 20 bits
Arquitetura e classificação
Min. tamanho do recurso 3 µm
Conjunto de instruções x86-16
Especificações físicas
Transistores
Coprocessador Intel 8087
Pacote (s)
Tomadas)
Produtos, modelos, variantes
Variante (s)
História
Antecessor Intel 8085
Sucessor 80186 e 80286 (ambos introduzidos no início de 1982)

A Intel 8088 ( " 80-88 ", também chamado iAPX 88 ) microprocessador é uma variante do Intel 8086 . Introduzido em 1 de junho de 1979, o 8088 tem um barramento de dados externo de oito bits em vez do barramento de 16 bits do 8086. Os registradores de 16 bits e o intervalo de endereços de um megabyte permanecem inalterados, entretanto. Na verdade, de acordo com a documentação da Intel, o 8086 e o ​​8088 têm a mesma unidade de execução (EU) - apenas a unidade de interface de barramento (BIU) é diferente. O IBM PC original é baseado no 8088, assim como seus clones .

História e descrição

Die of AMD 8088

O 8088 foi projetado no laboratório da Intel em Haifa , Israel , assim como um grande número de processadores da Intel. O 8088 foi direcionado a sistemas econômicos, permitindo o uso de um caminho de dados de oito bits e suporte de oito bits e chips periféricos; placas de circuito complexas ainda eram bastante pesadas e caras quando foram lançadas. A fila de pré-busca do 8088 foi reduzida para quatro bytes, dos seis bytes do 8086, e o algoritmo de pré-busca foi ligeiramente modificado para se adaptar ao barramento mais estreito. Essas modificações no design básico do 8086 foram um dos primeiros trabalhos atribuídos ao novo escritório de design e laboratório da Intel em Haifa.

Variantes do 8088 com frequência máxima de clock de mais de 5 MHz incluem o 8088–2, que foi fabricado usando o novo processo nMOS aprimorado da Intel chamado HMOS e especificado para uma frequência máxima de 8 MHz. Mais tarde veio o 80C88, um design CHMOS totalmente estático , que podia operar com velocidades de clock de 0 a 8 MHz. Havia também várias outras variantes, mais ou menos semelhantes, de outros fabricantes. Por exemplo, o NEC V20 era uma variante compatível com pinos e ligeiramente mais rápida (na mesma frequência de clock) do 8088, projetado e fabricado pela NEC . Processadores compatíveis com NEC 8088 sucessivos funcionariam a até 16 MHz. Em 1984, a Commodore International assinou um acordo para fabricar o 8088 para uso em um clone licenciado do Dynalogic Hyperion , em um movimento que foi considerado como um sinal de uma nova direção importante para a empresa. A versão CMOS disponível foi terceirizada para a Oki Electronic Industry Co., Ltd. Quando anunciado, o preço de lista do 8088 era de US $ 124,80.

Diferenças do 8086

O 8088 é arquitetonicamente muito semelhante ao 8086. A principal diferença é que há apenas oito linhas de dados em vez das 16 linhas do 8086. Todos os outros pinos do dispositivo executam a mesma função do 8086, com duas exceções. Primeiro, o pino 34 não é mais BHE (esta é a seleção de byte de alta ordem no 8086 - o 8088 não tem um byte de alta ordem em seu barramento de dados de oito bits). Em vez disso, ele produz um status de modo máximo, SSO . Combinado com os sinais IO / M e DT / R , os ciclos de barramento podem ser decodificados (geralmente indica quando uma operação de gravação ou uma interrupção está em andamento). A segunda mudança é o pino que sinaliza se um acesso à memória ou acesso de entrada / saída está sendo feito e teve seu sentido revertido. O pino no 8088 é IO / M . Na parte 8086, é IO / M. O motivo da reversão é que ele torna o 8088 compatível com o 8085 .

atuação

Dependendo da frequência do clock , do número de estados de espera da memória , bem como das características do programa de aplicativo específico, o desempenho médio do Intel 8088 variou aproximadamente de 0,33 a 1 milhão de instruções por segundo . Enquanto isso, as instruções e , levando dois e três ciclos respectivamente, produziram um desempenho de pico absoluto entre 13 e 12  MIPS por MHz, ou seja, em algum lugar na faixa de 3-5 MIPS a 10 MHz. mov reg,regALU reg,reg

A velocidade da unidade de execução (EU) e do barramento da CPU 8086 estava bem equilibrada; com uma combinação típica de instruções, um 8086 poderia executar instruções fora da fila de pré-busca uma boa parte do tempo. Cortar o barramento para oito bits tornou-o um gargalo sério no 8088. Com a velocidade de busca de instruções reduzida em 50% no 8088 em comparação com o 8086, uma sequência de instruções rápidas pode drenar rapidamente a fila de pré-busca de quatro bytes. Quando a fila está vazia, as instruções demoram tanto para serem concluídas quanto para serem buscadas. Tanto o 8086 quanto o 8088 levam quatro ciclos de clock para completar um ciclo de barramento; enquanto para o 8086 isso significa quatro relógios para transferir dois bytes, no 8088 são quatro relógios por byte. Portanto, por exemplo, uma instrução de deslocamento ou rotação de dois bytes, que leva o EU apenas dois ciclos de clock para ser executada, na verdade leva oito ciclos de clock para ser concluída se não estiver na fila de pré-busca. Uma sequência dessas instruções rápidas evita que a fila seja preenchida tão rápido quanto é drenada e, em geral, porque tantas instruções básicas são executadas em menos de quatro relógios por byte de instrução - incluindo quase todas as ALU e instruções de movimentação de dados no registro operandos e alguns deles em operandos de memória - é praticamente impossível evitar a ociosidade do EU no 8088 pelo menos 14 do tempo durante a execução de programas úteis do mundo real, e não é difícil deixá-lo inativo na metade do tempo. Resumindo, um 8088 normalmente executa cerca de metade da velocidade do 8086 com clock na mesma taxa, por causa do gargalo do barramento (a única grande diferença).

Um efeito colateral do design do 8088, com o barramento lento e a pequena fila de pré-busca, é que a velocidade de execução do código pode depender muito da ordem das instruções. Ao programar o 8088, para eficiência da CPU, é vital intercalar instruções de longa duração com curtas, sempre que possível. Por exemplo, uma operação de string repetida ou um deslocamento de três ou mais demorará o suficiente para permitir que a fila de pré-busca de 4 bytes seja totalmente preenchida. Se instruções curtas (ou seja, aquelas totalizando poucos bytes) são colocadas entre instruções mais lentas como essas, as curtas podem ser executadas em velocidade total fora da fila. Se, por outro lado, as instruções lentas forem executadas sequencialmente, costas com costas, então após a primeira delas a unidade de barramento será forçada a ficar ociosa porque a fila já estará cheia, com a consequência que mais tarde mais das instruções mais rápidas sofrerá atrasos de busca que poderiam ser evitados. Como algumas instruções, como mudanças e rotações de posição de bit único, levam literalmente 4 vezes mais tempo para buscar do que para executar, o efeito geral pode ser uma desaceleração por um fator de dois ou mais. Se esses segmentos de código são os corpos de loops, a diferença no tempo de execução pode ser muito perceptível na escala de tempo humana.

O 8088 também (como o 8086) é lento para acessar a memória. A mesma ALU que é usada para executar instruções aritméticas e lógicas também é usada para calcular endereços efetivos. Há um somador separado para adicionar um registrador de segmento deslocado ao endereço de deslocamento, mas o próprio EA de deslocamento é sempre calculado inteiramente na ALU principal. Além disso, o acoplamento fraco da UE e BIU (unidade de barramento) insere overhead de comunicação entre as unidades, e o ciclo de transferência de barramento de período de quatro relógios não é particularmente simplificado. Compare isso com o ciclo de barramento de período de dois clock da CPU 6502 e o ciclo de barramento de período de três clock do 80286 com pipelining de dois ciclos para a maioria das transferências. A maioria das instruções do 8088 que podem operar em registros ou memória, incluindo ALU comum e operações de movimentação de dados, são pelo menos quatro vezes mais lentas para operandos de memória do que apenas para operandos de registro. Portanto, programas 8088 (e 8086) eficientes evitam o acesso repetido de operandos de memória quando possível, carregando operandos da memória em registradores para trabalhar com eles e armazenando de volta apenas os resultados finalizados. O conjunto de registros geral relativamente grande do 8088 em comparação com seus contemporâneos auxilia nessa estratégia. Quando não há registros suficientes para todas as variáveis ​​necessárias ao mesmo tempo, salvar registros empurrando-os para a pilha e devolvendo-os para restaurá-los é a maneira mais rápida de usar a memória para aumentar os registros, pois as instruções PUSH e POP da pilha são as operações de memória mais rápidas. O mesmo provavelmente não é verdade no 80286 e posterior; eles têm ALUs de endereço dedicado e realizam acessos à memória muito mais rápido do que o 8088 e o 8086.

Finalmente, porque as chamadas, saltos e interrupções redefinem a fila de pré-busca e porque o carregamento do registro IP requer comunicação entre a UE e a BIU (uma vez que o registro IP está na BIU, não na UE, onde estão os registros gerais), essas operações são caras. Todos os saltos e chamadas levam pelo menos 15 ciclos de clock. Qualquer salto condicional requer quatro ciclos de clock se não for executado, mas se realizado, requer 16 ciclos além de redefinir a fila de pré-busca; portanto, os saltos condicionais devem ser organizados para não serem executados na maior parte do tempo, especialmente dentro dos loops. Em alguns casos, uma sequência de operações lógicas e de movimento é mais rápida do que um salto condicional que pula uma ou duas instruções para obter o mesmo resultado.

As planilhas de dados da Intel para 8086 e 8088 anunciavam as instruções dedicadas de multiplicação e divisão (MUL, IMUL, DIV e IDIV), mas são muito lentas, na ordem de 100–200 ciclos de clock cada. Muitas multiplicações simples por pequenas constantes (além de potências de 2, para as quais os deslocamentos podem ser usados) podem ser feitas muito mais rápido usando sub-rotinas curtas dedicadas. O 80286 e o ​​80386 aumentam significativamente a velocidade de execução dessas instruções de multiplicação e divisão.

Seleção para uso no IBM PC

O IBM PC original é o microcomputador mais influente a usar o 8088. Ele tem uma freqüência de clock de 4,77 MHz (4/3 da freqüência NTSC colorburst ). Alguns dos engenheiros da IBM e outros funcionários queriam usar o processador IBM 801 , alguns preferiam o novo Motorola 68000 e outros defendiam um microprocessador pequeno e simples, como o MOS Technology 6502 ou Zilog Z80 , que estão em computadores pessoais anteriores. No entanto, a IBM já tinha um histórico de uso de chips Intel em seus produtos e também adquiriu os direitos de fabricação da família 8086 .

A IBM escolheu o 8088 em vez do 8086 porque a Intel ofereceu um preço melhor pelo primeiro e poderia fornecer mais unidades. Outro fator foi que o 8088 permitiu que o computador se baseasse em um design 8085 modificado , já que ele poderia interagir facilmente com a maioria dos chips nMOS com barramentos de dados de 8 bits. Esses eram componentes maduros e, portanto, econômicos. Isso incluía ICs originalmente destinados a suporte e funções periféricas em torno do 8085 e processadores semelhantes (não exclusivamente da Intel), que já eram bem conhecidos por muitos engenheiros, reduzindo ainda mais os custos.

Os descendentes de 8088 incluem a 80188 , 80186 , 80286 , 80386 , 80486 , e mais tarde software - compatíveis com os processadores, incluindo os processadores Intel Core processadores, que são populares hoje.

Galeria

Periféricos

Veja também

Notas

Referências

links externos