Pytanie:
W jaki sposób z80 może używać 4-bitowej jednostki ALU i zwracać wyniki w jednym cyklu zegara?
GabrielOshiro
2015-10-19 21:01:15 UTC
view on stackexchange narkive permalink

Według posta na blogu Kena Sheriffa Z80 ALU ma 4 bity szerokości. Jeśli spojrzymy na strony 8 i 9 Podręcznika użytkownika Z80, znajdziemy następujące informacje:

Stany zegara T3 i T4 cyklu pobierania są używane do odśwież dynamiczne wspomnienia. Procesor wykorzystuje ten czas do dekodowania i wykonania pobranej instrukcji, tak aby żadna inna współbieżna operacja nie mogła być wykonana.

Fetch Opcode Cycle

Wiemy również, że wiele instrukcji jest wykonywanych w 1 cyklu maszynowym z 4 stanami T, takie jak ADD r , SUB r itd.

Biorąc pod uwagę następujące fakty:

  • Szyna danych Z80 ma 8-bitową szerokość, podczas gdy jej ALU ma 4-bity
  • Niektóre instrukcje używające ALU są wykonywane w 4 cyklach zegarowych ( Stany T) ​​
  • Wiemy, że T1 i T2 są używane do pobierania kodu z pamięci i potrzebujemy T3, aby zdekodować kod operacji

Jak to możliwe, że 4 -bit ALU daje 8-bitowy wynik tylko w jednym cyklu zegara?

czy coś mi brakuje, czy właśnie powiedziałeś, że w cyklu M są 4 stany T?W takim przypadku jeden zajmujący się jednym nybble na stan T daje dużo czasu na jedną operację 8-bitową w cyklu M.
@user44635 Nie każdy cykl M ma 4 stany T.Ale w tym konkretnym przykładzie pytam o M1 (pobierz-dekoduj-wykonaj) z 4 stanami T.Nie masz dostępnych 4 stanów T, ponieważ do pobrania i jednego do dekodowania potrzeba dwóch.Zakładam tutaj, że procesor wie tylko, co zostanie wykonane * po * stanie dekodowania, co pozostawia nam pojedynczy cykl zegara na wykonanie 2 operacji ALU z półbajtami.
Przejrzałem dokument [odniesienia Ken Sheriff] (http://archive.computerhistory.org/resources/text/Oral_History/Zilog_Z80/102658073.05.01.pdf) i wspomina o niewielkich ilościach potoków.Może potrzebować tylko jednego dodatkowego stanu T, w którym wykonanie ALU nakłada się na inną operację, aby wszystko pasowało.Proponuję więc, abyś przeczytał [„Panel historii mówionej Zilog na temat założenia firmy i rozwoju mikroprocesora Z80”] (http://archive.computerhistory.org/resources/text/Oral_History/Zilog_Z80/102658073.05.01.pdf).Wydaje się, że wyjaśnia to szczegółowo.
@gbulmer O tak, kiedyś to czytałem, niewiele rozumiałem.Ale teraz przestudiowałem więcej o Z80, być może będę w stanie to zrozumieć.Dziękuję Ci.
Ten artykuł może Cię zainteresować.Autor przeprowadza inżynierię wsteczną procesora Z80 na poziomie krzemowym, aby zrozumieć odpowiedź na Twoje pytanie: http://www.righto.com/2013/09/the-z-80-has-4-bit-alu-heres-how-it.html
Dwa odpowiedzi:
mcleod_ideafix
2019-05-01 06:39:12 UTC
view on stackexchange narkive permalink

Instrukcja w rzeczywistości kończy się na końcu T2 cyklu M1, który czyta następną instrukcję, jak wyjaśniono na z80.info

Z80 overlapping execution

Tak więc instrukcję taką jak: SUB r można podzielić w ten sposób:

  M1 / ​​T1
M1 / T2: odczytaj kod operacji
M1 / T3: kod operacji jest dekodowany jako SUB r. A jest ładowany do zatrzasku op1
M1 / T4: r jest ładowany do zatrzasku op2
------------
M1 / T1: oblicza się i zapisuje małe skubanie odejmowania, co skutkuje niskim zatrzaskiem
M1 / T2: obliczany jest wysoki półbajt odejmowania i zapisywany do pliku rejestru,
          wynikowy niski zatrzask jest zapisywany do pliku rejestru,
          następny kod operacji jest odczytywany z pamięci
 

Z80 ALU datapath

Ten schemat nakładania się jest używany tylko wtedy, gdy operacja zapisuje do rejestru. Jeśli zapisuje do pamięci, nie może wystąpić żadne nakładanie się, ponieważ kolidowałoby to z cyklem M1 próbującym odczytać kod operacji.

Inny przykład: INC HL. Zwiększa to 16-bitowy rejestr, więc 4-bitowa jednostka ALU musi być użyta cztery razy. INC HL ma jeden cykl M1, który trwa 6 cykli zegara. Jego podział jest następujący (liczba cykli zegara dla każdego cyklu maszyny pochodzi z podręcznika technicznego Mostek MK3880 Z80):

  M1 / ​​T1:
M1 / T2: odczytaj kod operacji
M1 / T3: kod operacji jest dekodowany jako INC HL
M1 / T4: L jest ładowany do zatrzasku op1
M1 / T5: niskie skubanie L jest zwiększane i przechowywane w wyniku niskiego zatrzasku
M1 / T6: niskie skubanie H jest ładowane do niskiego zatrzasku op1,
          wysoki półbajt L jest zwiększany i zapisywany z powrotem do pliku rejestru
------------
M1 / T1: wysokie szczypanie H jest ładowane do wysokiego zatrzasku op1,
          wynik niskiego zatrzasku (nowa wartość niskiego skubania L) to
                               zapisany z powrotem do pliku rejestrowego
M1 / T2: wysoki półbajt H jest zwiększany i zapisywany z powrotem do pliku rejestru,
          przeczytaj następny kod operacji itp ...
 

DODAJ HL, DE: trwa 11 cykli zegara z następującym podziałem: 4 + 4 + 3

  M1 / ​​T1:
M1 / T2: odczytaj kod operacji
M1 / T3: kod operacji jest dekodowany jako ADD HL, DE
M1 / T4: L jest ładowany do zatrzasku op1
------------
M2 / T1: E jest ładowany do zatrzasku op2
M2 / T2: obliczane jest małe skubanie L + E i zapisywane w wyniku niskiego zatrzasku
M2 / T3: wysoki półbajt L + E jest obliczany i zapisywany z powrotem do pliku rejestru,
          niski półbajt jest również zapisywany w pliku rejestru
M2 / T4: H jest ładowany do zatrzasku op1
------------
M3 / T1: D jest ładowany do zatrzasku op2
M3 / T2: obliczane jest małe skubanie H + D i zapisywane w wyniku niskiego zatrzasku
M3 / T3: wysoki półbajt H + D jest obliczany i zapisywany z powrotem do pliku rejestru,
          niski półbajt jest również zapisywany w pliku rejestru
 
gbulmer
2015-10-19 21:34:19 UTC
view on stackexchange narkive permalink

Przejrzałem dokument Odniesienia do bloga Kena Sheriffa, „Panel historii mówionej Zilog w sprawie założenia firmy i rozwoju mikroprocesora Z80”.

Na stronie 10, wspomina o niewielkich ilościach rurociągów; na przykład „Na początku wprowadziłem potok 4-bitowy ALU”

Może potrzebować tylko jednego dodatkowego stanu T, w którym wykonanie ALU nakłada się na inną operację, aby wszystko pasowało.

Tak więc w dokumencie „Historia mówiona Zilog w sprawie założenia firmy i rozwoju mikroprocesora Z80” dokument „Masatoshi Shima” wydaje się wystarczająco opisywać związek między funkcjami procesora, które może wyjaśnić, jak to działa. Wydaje się, że wyjaśnia to szczegółowo, a ja czytam, że jest tam niewielka ilość potoków, wystarczająca do wyjaśnienia, w jaki sposób ściśnięto wszystko w 4 stanach T.

EDYCJA:
Zachęcam wszystkich zainteresowanych w historii rozwoju mikroprocesorów, aby przeczytać ten dokument. To fascynujące. Dziękuję @GabrielOshiro za wyróżnienie go.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...