ASCII R800

ASCII R800 este un microprocesor  parțial pe 16 biți dezvoltat de ASCII pe baza Zilog Z800 și fabricat special pentru computerele de consum MSX Turbo R. Scopul principal al creării procesorului a fost acela de a obține performanțe maxime, menținând în același timp compatibilitatea cu software-ul și hardware-ul mai vechi ale computerelor MSX folosind microprocesorul Zilog Z80 .

Pentru a menține compatibilitatea software-ului cu software-ul MSX mai vechi, R800 utilizează setul de instrucțiuni extins pentru procesor Z80 . Operațiunile de multiplicare hardware - MULUB (8 biți) și MULUW (16 biți) au fost adăugate la setul obișnuit de instrucțiuni Z80. De asemenea, multe dintre caracteristicile nedocumentate ale Z80 au fost oficializate, cum ar fi operațiunile pe jumătățile de 8 biți ale perechilor de registre index (IXh, IXl, IYh, IYl).

R800 este o evoluție a procesoarelor Z800 (microprocesoare pe 16 biți compatibile cu Z80), dar îi lipsesc unele dintre caracteristicile nedocumentate ale lui Z80. De exemplu, starea biților 3 și 4 ai registrului flag F nu se potrivește cu starea acelor biți pentru procesorul Z80 (determinând ca R800 să eșueze testul ZEXALL ). De asemenea, comanda nedocumentată, numită de obicei SLL, a fost înlocuită cu o altă comandă, TST, de asemenea nedocumentată.

Au avut loc schimbări semnificative pe partea hardware. ALU intern pe 4 biți [1] al procesorului a fost înlocuit cu unul nou pe 16 biți. Operațiuni precum ADD HL,BC (adăugarea perechii de registre), care anterior necesitau 11 cicluri, pot fi efectuate pe R800 într-un singur ciclu în anumite condiții. Viteza maximă de ceas a fost mărită la 7,16 MHz , dublu față de standardul de 3,57 MHz utilizat de procesorul Z80 în computerele MSX. Autobuzul de date a rămas pe 8 biți pentru a menține compatibilitatea cu hardware-ul mai vechi.

S-au făcut modificări suplimentare mecanismului de preluare a codului operațional. Z80 original folosește 4 cicluri pentru a prelua codul instrucțiunilor simple precum OR A, computerele MSX adaugă și un ciclu de așteptare datorită arhitecturii lor. Mecanismul de preluare pentru Z80 într-un mediu tipic MSX este următorul:

Deoarece majoritatea implementărilor RAM din computerele MSX sunt organizate ca un bloc de 256 x 256 de octeți , este nevoie de două cicluri de ceas pentru a seta adresa instrucțiunii. R800 își amintește starea celor 8 biți superiori ai adresei, ceea ce salvează un ciclu de ceas în cazul în care adresa următoarei instrucțiuni nu depășește limita blocului de 256 de octeți. Cu toate acestea, pe procesorul Z80, valorile celor 8 biți superiori ai adresei se pierd în timpul regenerării RAM, care trebuie, de asemenea, abordată.

Soluția folosită pe R800 este de a folosi reîmprospătarea blocurilor întregi de RAM, în loc de a reîmprospăta o linie per instrucțiune. La fiecare 30 de microsecunde , procesorul se oprește timp de 4 microsecunde, timp în care blocul RAM este reîmprospătat. În acest caz, nu este necesar să se efectueze un proces de regenerare la procesarea fiecărei comenzi. Datorită acestui fapt, dar și datorită utilizării unei RAM mai rapide, care nu necesită introducerea unui ciclu de așteptare, instrucțiunile simple pot fi executate într-un singur ciclu. Cu toate acestea, această viteză poate fi obținută doar prin executarea programului în memoria RAM a computerelor MSX Turbo R. Toate accesele la hardware extern, cum ar fi dispozitivele conectate la sloturile pentru cartușe , necesită aceeași perioadă de timp ca și pentru procesorul Z80. De asemenea, ROM-ul folosit în Turbo R nu are suficientă viteză pentru a implementa o astfel de schemă de preluare a instrucțiunilor, prin urmare, pentru a crește viteza de execuție a codului din ROM, conținutul său este copiat în RAM folosind hardware Turbo R suplimentar.

Note

  1. Z-80 are un ALU pe 4 biți. Iată cum funcționează . Preluat la 24 decembrie 2018. Arhivat din original la 9 septembrie 2013.