Processador de dados numéricos 8087
Processador de dados numéricos 8087 também é conhecido como Math co-processor, Numeric processor extension e Floating point unit. Foi o primeiro coprocessador matemático projetado pela Intel para emparelhar com 8086/8088, resultando em um cálculo mais fácil e rápido.
Depois que as instruções são identificadas pelo processador 8086/8088, elas são atribuídas ao coprocessador 8087 para execução posterior.
Os tipos de dados suportados pelo 8087 são -
- Inteiros binários
- Números decimais compactados
- Numeros reais
- Formato real temporário
As características mais proeminentes do processador de dados numéricos 8087 são as seguintes -
Ele suporta dados do tipo inteiro, flutuante e tipos reais que variam de 2 a 10 bytes.
A velocidade de processamento é tão alta que pode calcular a multiplicação de dois números reais de 64 bits em ~ 27 µs e também pode calcular a raiz quadrada em ~ 35 µs.
Ele segue os padrões de ponto flutuante IEEE.
Arquitetura 8087
A arquitetura 8087 é dividida em dois grupos, ou seja, Control Unit (CU) e Numeric Extension Unit (NEU).
o control unit lida com toda a comunicação entre o processador e a memória, tal como recebe e decodifica instruções, lê e escreve operandos na memória, mantém a fila paralela, etc. Todas as instruções do coprocessador são instruções ESC, ou seja, começam com 'F', apenas o coprocessador executa as instruções ESC enquanto outras instruções são executadas pelo microprocessador.
o numeric extension unitlida com todas as instruções do processador numérico, como instruções aritméticas, lógicas, transcendentais e de transferência de dados. Possui 8 pilha de registradores, que contém os operandos para instruções e seus resultados.
A arquitetura do coprocessador 8087 é a seguinte -
Descrição do pino 8087
Vamos primeiro dar uma olhada no diagrama de pinos de 8087 -
A lista a seguir fornece a descrição do pino 8087 -
AD0 – AD15 - Estas são as linhas de endereço / dados multiplexadas no tempo, que transportam endereços durante o primeiro ciclo de clock e dados do segundo ciclo de clock em diante.
A19 / S6 – A16/S- Essas linhas são as linhas de endereço / status multiplexadas no tempo. Ele funciona de forma semelhante aos pinos correspondentes do 8086. O S 6 , S 4 e S3 estão permanentemente altos, enquanto o S 5 está permanentemente baixo.
$\overline{BHE}$/S7- Durante o primeiro ciclo de clock, $ \ overline {BHE} $ / S 7 é usado para habilitar os dados para o byte mais alto do barramento de dados do 8086 e depois disso funciona como linha de status S 7 .
QS1, QS0 - Estes são sinais de entrada de status da fila que fornecem o status da fila de instruções, suas condições conforme mostrado na tabela a seguir -
QS 0 | QS 1 | Status |
---|---|---|
0 | 0 | Nenhuma operação |
0 | 1 | Primeiro byte de opcode da fila |
1 | 0 | Esvazie a fila |
1 | 1 | Byte subsequente da fila |
INT - É um sinal de interrupção, que muda para alto quando uma exceção não mascarada é recebida durante a execução.
BUSY - É um sinal de saída, quando alto indica estado de ocupado para a UCP.
READY - É um sinal de entrada utilizado para informar ao coprocessador se o barramento está pronto para receber dados ou não.
RESET - É um sinal de entrada usado para rejeitar as atividades internas do coprocessador e prepará-lo para posterior execução sempre que solicitado pela CPU.
CLK - A entrada CLK fornece os tempos básicos para a operação do processador.
VCC - É um sinal de alimentação, que requer alimentação de + 5V para o funcionamento do circuito.
S0, S1, S2- Estes são os sinais de status que fornecem o status da operação que é usado pelo Bus Controller 8087 para gerar memória e sinais de controle de E / S. Esses sinais estão ativos durante o quarto ciclo do clock.
S 2 | S 1 | S 0 | Status da fila |
---|---|---|---|
0 | X | X | Não utilizado |
1 | 0 | 0 | Não utilizado |
1 | 0 | 1 | Memória lida |
1 | 1 | 0 | Gravação de memória |
1 | 1 | 1 | Passiva |
RQ/GT1 & RQ/GT0 - Estes são os Request/Grant sinais usados pelos processadores 8087 para obter controle do barramento do processador host 8086/8088 para transferências de operando.