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.