R800 (procesor)

R800

R800 to jednostka centralna używana w komputerze domowym MSX Turbo-R . R800 został zaprojektowany przez ASCII Corporation z Japonii i zbudowany przez Mitsui & Co. Celem był nowoczesny i potokowy procesor binarny kompatybilny z Z80, a zatem z oprogramowaniem MSX, przy jednoczesnym zachowaniu zgodności ze starszym sprzętem opartym na MSX Z80 .

Zgodność

Podczas opracowywania MSX Turbo R firma ASCII Corporation brała pod uwagę różne procesory, zarówno kompatybilne, jak i niekompatybilne z Z80, jako kandydatów. W tym czasie Kazuya Kishioka ( 岸岡和也 ) , pracownik firmy, badał i rozwijał ASIC , który był szybką wersją Z80 i był w dużej mierze dostosowany do architektury MSX.

Aby zapewnić kompatybilność oprogramowania ze starszym oprogramowaniem MSX, R800 używa tego samego zestawu instrukcji co Z80, z niewielkimi, ale użytecznymi dodatkami, takimi jak instrukcje mnożenia 8x8-bit i 16x16-bit zwane MULUB ( 8-bitowe ) i MULUW ( 16-bitowe ). trochę ). Ponadto wiele nieudokumentowanych instrukcji Z80 zostało ogłoszonych oficjalnie, w tym wszystkie kody operacji dla instrukcji dotyczących IX i IY jako rejestrów 8-bitowych (IXH, IXL, IYH, IYL).

Ponieważ R800 nie jest oparty bezpośrednio na Z80, ale wywodzi się z rodziny Z800 , brakuje mu niektórych innych nieudokumentowanych funkcji Z80. Na przykład nieudokumentowane flagi reprezentowane w bitach 3 i 5 rejestru F nie przyjmują takich samych wartości jak w Z80 (powodując niepowodzenie testów ZEXALL), a nieudokumentowany kod operacji często nazywany SLL jest tylko aliasem instrukcji SLA.

Zmiany sprzętowe

Będąc znacznie nowszym projektem, implementacja R800 różniła się znacznie od starego Z80. Zmiany były podobne do linii Z800 , Z280 , Z380 i eZ80 procesorów kompatybilnych z Z80. Oryginalny Z80 używa wewnętrznie niezwykłego 4-bitowego sprzętu ALU, rozwiązania, które faktycznie może konkurować z podobnymi procesorami wykorzystującymi w pełni okablowaną 8-bitową logikę ALU (taką jak jego bezpośredni prekursor, Intel 8080 ) . Jednak projektanci R800 zaimplementowali pełną 16-bitową jednostkę ALU aby nadążyć za jego bardziej potokowym wykonaniem. Instrukcje takie jak ADD HL,BC, które zajmują 11 cykli zegara na Z80, mogą w niektórych sytuacjach być wykonywane w zaledwie jednym cyklu magistrali (1-2 zegary) na R800, ze względu na stopień potokowania możliwy dzięki tej pełnej szerokości ALU. Maksymalna częstotliwość taktowania procesora zastosowana w tym nowym MSX wynosiła 14,32 MHz — cztery razy szybciej niż oryginalna częstotliwość 3,57 MHz stosowana w starszym MSX, podczas gdy zegar magistrali został zwiększony do 7,16 MHz. Magistrala danych pozostała 8-bitowa, aby zachować kompatybilność ze starym sprzętem.

Pobieranie kodów operacji

Dodatkowe zmiany zostały wprowadzone w sposobie, w jaki procesor pobiera kody operacji . Oryginalny Z80 wykorzystuje dwa cykle do pobrania prostej instrukcji, takiej jak OR A, plus dwa cykle do odświeżenia. W architekturze MSX wydawany jest dodatkowy stan oczekiwania. Przegląd mechanizmu pobierania w typowym środowisku MSX pomaga w wyjaśnieniu R800:

  • Z80, cykl 1: ustaw wyższe 8 bitów adresu
  • Z80, cykl 2: ustaw dolne 8 bitów adresu
  • Z80, cykl 3: stan oczekiwania
  • Z80, cykl 4: odświeżenie, część 1
  • Z80, cykl 5: odświeżenie, część 2

Ponieważ większość implementacji MSX wykorzystuje pamięć RAM umieszczoną w bloku 256 × 256 bajtów, do ustawienia adresu pobierania wymagane są dwa cykle. R800 unika tego, pamiętając ostatni znany stan wyższych 8 bitów. Jeśli następna instrukcja znajduje się w tych samych granicach 256 bajtów, wyższe 8 bitów nie jest ustawianych i cykl jest zapisywany. Jednak w Z80 cykle odświeżania niszczą informacje na wyższych bitach, więc potrzebne było obejście tego problemu.

Rozwiązaniem zastosowanym w R800 było odświeżanie całych bloków pamięci RAM, zamiast odświeżania jednej linii pamięci RAM przy każdej wydanej instrukcji. Co 30 μs procesor jest zatrzymywany na 4 μs, tym razem jest używany do odświeżenia bloku pamięci RAM. Ponieważ nie ma odświeżania pomiędzy instrukcjami pobierania, a stan oczekiwania jest usuwany z powodu szybszych układów RAM, proste instrukcje mogą być wydawane przy użyciu tylko jednego cyklu. Ten cykl byłby cyklem 2 w powyższym przykładzie Z80; cykl 1 staje się opcjonalny i jest wydawany tylko wtedy, gdy program przekroczy granicę 256 bajtów.

Sprzęt zewnętrzny

Wszystko to dotyczy tylko szybkiej pamięci RAM używanej w MSX Turbo-R. Sprzęt zewnętrzny, podłączony przez gniazda wkładek, wykorzystuje taktowanie podobne do Z80. Nawet wewnętrzna pamięć ROM Turbo-R nie jest wystarczająco szybka dla tego schematu pobierania, więc dodatkowe układy w Turbo-R mogą odzwierciedlać zawartość pamięci ROM w pamięci RAM, aby działała szybciej.

Dalsza lektura