Z architektury procesora 8085, gdy ALU wykonało obliczenia, wynik jest taktowany z powrotem do akumulatora A na następnej krawędzi zegara. Ale akumulator A jest podłączony bezpośrednio jako wejście ALU, co jeśli krawędź zegara nie podniesie się wystarczająco szybko, aby spowodować dodanie A dwa lub więcej razy, niezwykle trudno byłoby wykryć taki błąd, taka konstrukcja jest bardzo „ kruche ”dla mnie.
Chyba że w ALU istnieje dodatkowy rejestr do tymczasowego zapisywania wyników ALU?
https://en.wikipedia.org/wiki/Intel_8085#/media/File:Intel_8085_arch.svg
Odpowiedzi:
Jak podejrzewał @duskwuff, przyjrzałem się temu. Aby odpowiedzieć na pytanie, 8085 ma dwa dodatkowe rejestry w ALU.
8085 ma kilka „ukrytych” rejestrów: 16-bitową parę WZ i dwa 8-bitowe rejestry pomocnicze ALU: ACT i TMP. WZ jest częścią pliku rejestru, podczas gdy ACT, A (akumulator) i TMP znajdują się w samym obwodzie ALU.
Oto schemat działania ALU:
Rejestr ACT ma kilka ważnych funkcji. Po pierwsze, przechowuje dane wejściowe do ALU. Umożliwia to zapisywanie wyników z ALU z powrotem do akumulatora bez zakłócania wejścia, co spowodowałoby niestabilność. Po drugie, ACT może utrzymywać stałe wartości (np. Do zwiększania lub zmniejszania lub regulacji dziesiętnej) bez wpływu na akumulator. Wreszcie, ACT pozwala na operacje ALU, które nie używają akumulatora.
Jedną z interesujących konsekwencji konfiguracji ALU w 8085 jest to, że wartość można załadować do akumulatora dopiero po przejściu przez ALU.
Szczegóły dotyczące zestawu rejestrów 8085 są tutaj, a szczegóły ALU są tutaj .
źródło
W projektach synchronicznych ważnym zadaniem projektanta jest dopilnowanie, aby takie rzeczy się nie zdarzyły. Rejestr, w którym dane są „taktowane”, ma określone właściwości dynamiczne, takie jak czas narastania zegara, czas utrzymywania zegara, stabilne dane przed i po zmianie sygnału zegarowego. W przypadku naruszenia timingu stan wynikowy nie jest gwarantowany.
W twoim szczególnym przypadku ALU ma opóźnienie propagacji i aby dodać dwa razy A, powinien upłynąć czas, zanim nowy A zostanie dodany do poprzedniego A w sumatorze i wynik pojawi się na jego wyjściu. Najprawdopodobniej została zasymulowana i obliczona, że coś takiego nie wydarzy się w ramach określonego dopuszczalnego zakresu częstotliwości zegara dla urządzenia. Właśnie dlatego arkusz danych ma jawnie minimalne i maksymalne oceny zegara. W przypadku 8085A-2 napisano:
źródło
Akumulator jest rejestrem wyjściowym ALU.
8085 ma dwufazowy zegar. Tam, gdzie instrukcja pojedynczego zegara, jak NOP, trwała 2 cykle zegarowe. Podobnie jak 8088 zastosowany w oryginalnym komputerze IBM, 8088 miał czterofazowy zegar 4 MHz i wykonywał instrukcje z częstotliwością 1 MHz.
Z dwufazowym zegarem masz dwa cykle oscylatora dla każdego cyklu instrukcji.
Wewnętrznie do pomiaru czasu można wykorzystać dowolną krawędź dowolnego zegara. Zegary są odwrócone, więc w rzeczywistości dostępne są cztery zegary.
Następnie masz przezroczyste zatrzaski, które zatrzaskują się na opadającej krawędzi i klapki D-Flip, które zatrzaskują się na rosnącym brzegu zegara.
Przezroczysty zatrzask umożliwia propagację danych wejściowych do wyjścia rozpoczynającego się od zbocza narastającego zegara, a wartości są zatrzaśnięte na zboczu opadającym zegara.
8085 miał wiele opcji, jeśli chodzi o unikanie warunków rasy rozmnażania.
źródło