a CPU 8085 possui um registro extra na ALU?

11

Na arquitetura da CPU 8085, quando a ALU faz o cálculo, o resultado é retornado ao acumulador A na próxima borda do relógio. Mas o acumulador A é conectado diretamente como entrada da ALU, e se a borda do relógio não aumentasse rápido o suficiente para fazer com que A seja adicionado duas ou mais vezes, seria extremamente difícil detectar esse erro, esse projeto é muito " frágil "para mim.

A menos que haja um registro extra dentro da ALU para salvar temporariamente os resultados da ALU?

https://en.wikipedia.org/wiki/Intel_8085#/media/File:Intel_8085_arch.svg

https://en.wikipedia.org/wiki/Intel_8085

starx
fonte
2
Isso parece uma pergunta para @ KenShirriff…
duskwuff -inactive- 23/03
1
Por que você acha que cronometrar o resultado da ALU em um registro intermediário não teria os mesmos problemas possíveis que cronometrar no acumulador? De qualquer forma, é melhor você saber que sua ULA produz um resultado válido com configuração suficiente e tempo de espera em relação ao relógio.
O Photon

Respostas:

17

Como @duskwuff suspeitava, eu olhei para isso. Para responder à pergunta, o 8085 possui dois registros extras na ALU.

O 8085 possui vários registros "ocultos": um par WZ de 16 bits e dois registros auxiliares da ALU de 8 bits: ACT e TMP. WZ faz parte do arquivo de registro, enquanto ACT, A (acumulador) e TMP estão localizados no próprio circuito da ALU.

Aqui está um diagrama de como a ALU funciona:

Estrutura de registro da ALU dos anos 8085

O registro ACT tem várias funções importantes. Primeiro, ele mantém a entrada na ALU. Isso permite que os resultados da ALU sejam gravados de volta no acumulador sem perturbar a entrada, o que causaria instabilidade. Segundo, o ACT pode manter valores constantes (por exemplo, para aumentar ou diminuir, ou ajuste decimal) sem afetar o acumulador. Por fim, o ACT permite operações de ALU que não usam o acumulador.

Uma conseqüência interessante da configuração da ALU do 8085 é que um valor pode ser carregado no acumulador somente depois de passar pela ALU.

Os detalhes do conjunto de registros 8085 estão aqui e os detalhes da ALU estão aqui .

Ken Shirriff
fonte
1
De alguma forma, eu sabia que você teria algo a dizer sobre isso. : 3
duskwuff -inactive-
2
~ brilhante (tanto no blog de Ken Shirriff quanto no 8085)!
StarX
5

Em projetos síncronos, é uma tarefa importante do designer garantir que essas coisas não aconteçam. O registro, que possui dados sendo "sincronizados", possui propriedades dinâmicas específicas, como tempo de aumento do relógio, tempo de espera do relógio, dados estáveis ​​antes e após a alteração do sinal do relógio. Se o tempo for violado, o estado resultante não será garantido.

No seu caso particular, a ALU está tendo seu atraso de propagação e, para adicionar A duas vezes, deve haver um tempo até que um novo A seja adicionado ao A anterior no somador e o resultado apareça na saída. Provavelmente foi simulado e calculado que tal coisa não acontecerá dentro da faixa de freqüência de relógio permitida definida para o dispositivo. É por isso que a folha de dados tem explicitamente classificações mínimas e máximas de clock. Para 8085A-2, diz:

  • Período mínimo de ciclo CLK: 320 ns
  • Período máximo de ciclo CLK: 2000 ns
Anônimo
fonte
5

O acumulador é o registro de saída da ALU.

O 8085 possui um relógio de duas fases. Onde a instrução de relógio único como um NOP levou 2 ciclos de relógio. Semelhante ao 8088 usado no IBM PC original, o 8088 tinha um relógio de quatro fases de 4 MHz e executou instruções a uma taxa de 1 MHz.

Com o relógio de duas fases, você tem dois ciclos de oscilador para cada ciclo de instrução.

Internamente, para cronometrar, qualquer borda de qualquer relógio pode ser usada. Os relógios são invertidos e, na verdade, existem quatro disponíveis para cronometrar.

Então você tem trincos transparentes que travam na borda descendente e D-Flip Flops que travam na borda ascendente do relógio.

Uma trava transparente permite que os dados de entrada se propaguem até a saída, começando na borda ascendente do relógio, e os valores estão trancados na borda descendente do relógio.

O 8085 tinha muitas opções quando se tratava de evitar condições de corrida de propagação.

insira a descrição da imagem aqui

Incompreendido
fonte
"o 8088 tinha um relógio de quatro fases de 4 MHz e executou uma instrução a uma taxa de 1 MHz" - o 8088 possui apenas um pino de entrada do relógio (embora espere um relógio não simétrico, com o estado alto durando aproximadamente o dobro do tempo estado baixo, que indica internamente que está claramente fazendo coisas diferentes nesses estados, ao contrário da maioria dos processadores modernos que sempre cronometram tudo no mesmo limite de clock), então esse relógio de 4 fases é gerado de alguma maneira internamente? Existe uma descrição em algum lugar de como isso funciona?
Jules