Bardzo fajny dokument. Nie znałem go.
Zawiłości wewnętrznej pracy procesora nie są łatwe do zrozumienia. To wymaga sporo przetrawienia. Po prostu ostatni cykl rozkazu w rozważaniach na tej stronie nie jest tym, czym myślisz, że jest. Nawet poświęcili trzy paragrafy na uzasadnienie tego. Zastosowali konwencję, że pierwszym cyklem jest cykl, w którym rejestr rozkazu ma już załadowany opcode i procesor już może go wykonywać i wykonuje go aż do ostatniego cyklu, w którym ładuje opcode następnego rozkazu. Więc przykład lda #0 w ich konwencji wygląda tak:
1. przeczytanie operandu z pamięci
2. załadowanie operandu do akumulatora ORAZ przeczytanie opcode'u następnego rozkazu.
I tutaj ostatni cykl ma w sobie ten "pipelining", jak dla wszystkich rozkazów, w których przedostatni cykl (w tej nomenklaturze) nie jest cyklem zapisu, bo jego fizycznie nie można połączyć z fetchem następnego opcode'u.
W ogóle fajna rzecz. Wg tego dokumentu przerwanie nie może wskoczyć po instrukcji skoku względnego nie przekraczającego strony. To warto byłoby sprawdzić, bo teoretycznie sekwencji
nie można przerwać. Nie wiedziałem tego.
Ostatnio edytowany przez laoo/ng (2021-01-27 08:40:49)