Hlavní navigace

Čtyřicet let existence slavných mikroprocesorů řady Motorola 68000

Pavel Tišnovský

Nedávné oznámení, že se z projektu GCC pravděpodobně odstraní některé starší mikroprocesorové architektury, vyšlo náhodou v době, kdy mikroprocesory a mikrořadiče založené na jádrech Motorola 68000 (m68k) slaví kulaté výročí.

Doba čtení: 56 minut

Sdílet

   8.1 Sada registrů

   8.2 Příznakový registr

   8.3 Adresovací režimy

9. Instrukční sada čipů Motorola 68000

   9.1 Tabulka instrukcí

   9.2 Podmínky v instrukcích Bcc a DBcc

   9.3 Vybrané instrukce

10. Další vývoj řady 68000

11. Aplikace čipů řady m68k v osobních počítačích a pracovních stanicích

12. Sinclair QL

13. Apple Lisa

14. Atari řady ST

   14.1 Atari 520 ST

   14.2 Atari 260 ST a Atari 130 ST

   14.3 Atari 1040 STF a Atari 1040 STFM

   14.4 Atari Mega ST

15. Osobní počítače Amiga

   15.1 Amiga 1000

   15.2 Amiga 500

   15.3 Amiga 2000

   15.4 Amiga 3000

   15.5 Amiga 1200

   15.6 Amiga 4000

   15.7 Original Amiga Chipset

   15.8 Enhanced Chip Set

   15.9 Advanced Graphics Architecture

16. Osobní počítače Macintosh

17. Pracovní stanice Sun-1

18. Sega Mega Drive

19. Podpůrná role v Atari Jaguaru a Sega Saturn

20. Odkazy na Internetu

1. Čtyřicet let existence slavných mikroprocesorů řady Motorola 68000

Rok 2019 nám přinesl v oblasti informatiky hned několik kulatých výročí. Již v předchozích článcích jsme si připomněli třicetileté výročí vzniku Turbo Pascalu, šedesátiny programovacího jazyka COBOL a sedmdesát let od vzniku assemblerů. Nedávné oznámení týmu, který se stará o projekt GCC o tom, že dojde ke zrušení podpory některých starších mikroprocesorových architektur, nám nepřímo připomněl další výročí – letos totiž uběhlo takřka neuvěřitelných čtyřicet let od vzniku legendárních mikroprocesorů řady Motorola 68000 (zkráceně se celá řada označuje m68k; tuto zkratku budeme v dnešním článku používat).

Obrázek 1: 16/32bitový mikroprocesor Motorola Motorola 68000 patří mezi typické zástupce architektury CISC s téměř ortogonální instrukční sadou, mnoha adresovacími režimy a (na CISC) poměrně velkou sadou pracovních registrů (rozdělených na registry datové a adresové). Jednalo se o jeden z nejúspěšnějších 16/32bitových mikroprocesorů vůbec.

První série těchto mikroprocesorů skutečně vznikly již v roce 1979, ovšem architektura Motorola 68000 v některých ohledech předběhla svoji dobu a do značné míry určovala a ovlivňovala vývoj IT jak v osmdesátých letech minulého století, tak i v letech devadesátých (minimálně v první polovině). Většina přelomových osobních mikropočítačů – s výjimkou IBM PC – totiž byla na čipech s architekturou m68k postavena, což platí zejména pro mikropočítače řady Atari ST, Amiga a Macintosh (ovšem například i Apple Lisa či Sinclair QL, což již nebyly tak úspěšné stroje). Nesmíme ovšem zapomenout ani na pracovní stanice, zejména na Sun-1 a IRIS 1000. Ovšem jádra postavená nad m68k byla používána i později, a to jak v oblasti výkonných mikrořadičů, tak i čipů určených pro PDA a mobilní telefony či pro programovatelné grafické kalkulačky společnosti Texas Instruments. Tyto čipy jsme mohli najít i v laserových tiskárnách a v herních konzolích. A v neposlední řadě se jednalo o mikroprocesory, které se velmi snadno programovaly v assembleru; snadnost programování vynikne zejména při porovnání s konkurenční platformou 80×86.

pc7702

Obrázek 2: Mikroprocesor Motorola 68030 (což je již čistě 32bitový čip) na základní desce desce osobního počítače Macintosh Color Classic.

2. Od osmibitových mikroprocesorů Motorola 6800 k 16/32bitovým čipům řady 68000

Historie mikroprocesorů Motorola 68000 začala vlastně již vznikem čistě osmibitového čipu MC6800 pocházejícího z roku 1974 (konkurenční MOS 6502 vytvořený mj. i inženýry pracujícími právě na 6800, přišel na trh až o rok později), který byl následovaný poněkud méně známými čipy MC6801 a MC6802. Jednalo se o osmibitové mikroprocesory (poslední dva čipy jsou již mikrořadiče), jejichž programátorský model se v mnoha ohledech odlišoval například od konkurenčních čipů Intel 8008, Intel 8080 či Zilog Z80. Osmibitové čipy Motorola totiž měly jen velmi omezený počet pracovních registrů – pouze dva osmibitové akumulátory pojmenované A a B a plně šestnáctibitový index registr X, které byly doplněny o ukazatel na vrchol zásobníku SP, programový čítač PC a samozřejmě i stavový registr (jedním z mála mikroprocesorů bez stavového registru a příznakových bitů je MIPS, jenž má ovšem naprosto odlišnou architekturu).

pc7703

Obrázek 3: Osobní mikropočítač Atari 520 ST postavený na 32bitových mikroprocesorech řady Motorola 68000.

Volba omezeného počtu pracovních registrů je vlastně logická, především když si uvědomíme, že v polovině sedmdesátých let minulého století byla cena každého tranzistoru vytvořeného na čipu o několik řádů vyšší, než je tomu dnes. Navíc byly mikroprocesory relativně pomalé při porovnání s dobou přístupu do operační paměti (dokonce tak pomalé, že se v některých domácích mikropočítačích mikroprocesor vcelku bez problémů dělil o datovou a adresovou sběrnici s grafickým řadičem). Z tohoto důvodu mělo význam, aby mikroprocesory měly pouze malý počet registrů (nižší cena a větší výtěžnost) a aby obsahovaly relativně složité instrukce realizované mikroprogramovým řadičem (ten je totiž – když celou problematiku značně zjednodušíme – tvořen maskou/pamětí typu ROM, kde je cena za bit mnohem nižší než v případě statické paměti typu RAM).

pc80

Obrázek 4: Legendární počítač Amiga 500 obsahující čipset OCS a oblíbený mikroprocesor Motorola 68000, taktovaný na 7,14 MHz. V základní konfiguraci byl tento počítač osazen již 512 KB paměti, jež byla rozšiřitelná na 32 MB (Fast RAM). Naproti tomu byl model Amiga 500 Plus osazen 1 MB s možností rozšíření Chip RAM na 2 MB a Fast RAM až na 32 MB.

Poznámka: přesně opačnou cestou se později vydaly mikroprocesory s architekturou RISC, které naopak mají počet registrů mnohonásobně vyšší, ovšem instrukční sada je omezena většinou jen na ty instrukce, které se provedou v počtu cyklů odpovídajících počtu řezů instrukční pipeline. Čipy RISC ovšem vznikly na základě odlišných požadavků a odlišných technologických parametrů.

Obrázek 5: Pracovní stanice Sun-1 vybavená buď čipem Motorola 68000 nebo 68010.

3. Mikroprocesor Motorola MC6800 z pohledu programátora

Z pohledu programátora se Motorola MC6800 vyznačovala malým počtem pracovních registrů, instrukcemi podporujícími několik adresních režimů (typicky pět) a relativně komplikovanou instrukční sadou, v níž byl jedním z operandů akumulátor. Podívejme se ještě jednou na seznam registrů dostupných na osmibitové platformě M6800:

Označení Šířka Název registru Význam registru
A 8 b accumulator A první universální pracovní registr
B 8 b accumulator B druhý universální pracovní registr
X 16 b index register používán při adresování operandů
PC 16 b program counter používán při adresování instrukcí
SP 16 b stact pointer použit při operacích se zásobníkem
CCR 6 b condition code register obsahuje příznakové bity

Obrázek 6: Struktura mikroprocesoru MC6800
(Zdroj: Wikipedia)

Akumulátory A a B jsou použity u většiny aritmetických a logických operací, protože tvoří vždy první (nebo jediný) operand a současně se do nich ukládá i výsledek operace. Jedinou „asymetrii“ mezi těmito registry můžeme najít u instrukcí ABA (A=A+B), CBA (A-B) a SBA (A=A-B), kde je registr A vždy prvním operandem a současně se do něj ukládá (kromě instrukce CBA) i výsledek operace; dále pak u instrukcí DAA (korekce při BCD sčítání) a TAP společně s TPA (přesun mezi akumulátorem a příznakovým registrem), které pracují pouze s akumulátorem A. Indexový registr je použit při adresování druhého operandu mnoha instrukcí, jeho hodnotu je taktéž možné inkrementovat, dekrementovat, uložit či načíst z paměti a porovnat s dvoubajtovou konstantou. Příznakový registr CCR obsahuje následující jednobitové příznaky:

Příznak Název Význam
H halfcarry přetečení ze 3. do 4. bitu (použito při BCD aritmetice)
I interrupt příznak povolení či zákazu přerušení
N negative příznak operace se záporným výsledkem
Z zero příznak operace s nulovým výsledkem
V overflow (přeplnění) přetečení ze 6. do 7. (znaménkového) bitu
C carry přetečení ze 7. bitu (přenos do vyššího řádu)

Příznakové bity a jejich kombinace jsou použity u 14 podmíněných relativních skoků.

Obrázek 7: Osmibitový mikroprocesor Motorola MC6800.

Obrázek 8: Další fotografie osmibitového mikroprocesoru Motorola MC6800
(Zdroj: Wikipedia).

4. Další vývoj osmibitové řady Motorola 6800

Po vzniku osmibitového mikroprocesoru MC6800 vytvořila firma Motorola dvě další varianty tohoto čipu, které se některými svými vlastnostmi blížily skutečným mikrořadičům. Prvním z těchto čipů byl MC6802 z roku 1977, který obsahoval kromě vlastního řadiče a CPU i 128 bajtů paměti RAM, interní oscilátor (nemusel se připojovat externí zdroj hodinových signálů, pouze 4 MHz krystal) a spolu s čipem MC6846 (2kB paměti ROM, osmibitový obousměrný port a časovač) bylo možné vytvořit jednoduchý dvoučipový mikropočítač, což se již v mnoha ohledech blížilo ke klasickému mikrořadiči. Následoval čip MC6801 (číslování je pravda poněkud neobvyklé), který měl taktéž 128 bajtů paměti RAM, navíc však na tomto čipu byla přítomna i paměť ROM s kapacitou 2 kB, šestnáctibitový časovač, sériový port a 31 programovatelných I/O linek. Jednalo se o jeden z prvních mikroprocesorů (nebo vlastně už mikrořadičů), u nichž bylo možné oba osmibitové akumulátory A a B spojit do jednoho šestnáctibitového akumulátoru D.

Obrázek 9: Interní struktura mikrořadičů M68HC05 popsaných v následujícím textu.
(Zdroj: Freescale Semiconductor, Ltd. MC68HC05B6/D Rev. 4.1 08/2005)

4.1 Mikrořadič 68HC05

Ovšem tento čip (s cca 35000 tranzistory) byl poměrně drahý a proto se používal pouze v automobilovém průmyslu a nikoli ve spotřební elektronice. Firma Motorola proto tento čip poměrně podstatným způsobem zjednodušila a začala ho nabízet pod novým označením MC6805. Od tohoto mikrořadiče je již malý krůček k integrovanému obvodu 68HC05, jímž se budeme zabývat v následujícím textu. Jak jsme si již řekli, jedná se o zjednodušenou variantu čipu MC6801, což v tomto kontextu mj. znamená, že se počet registrů zmenšil na pět (je použit jen jeden osmibitový akumulátor), indexový registr má šířku pouze osm bitů a taktéž čítač instrukcí má sníženou šířku na 13 bitů, protože paměť nainstalovaná na mikrořadiči má menší kapacitu než teoreticky dosažitelných 64 kB:

Označení Šířka Název registru Význam registru
A 8 b accumulator A jediný universální pracovní registr
X 8 b index register používán při adresování operandů
PC 16 b (13 použito) program counter používán při adresování instrukcí
SP 16 b stact pointer použit při operacích se zásobníkem
CCR 5 b condition code register obsahuje příznakové bity

Obrázek 10: Základní zapojení mikrořadiče M68HC05.
(Zdroj: Freescale Semiconductor, Ltd. MC68HC05B6/D Rev. 4.1 08/2005)

Instrukční soubor se taktéž v některých ohledech odlišoval od původního mikroprocesoru MC6800. Zejména byla přidána instrukce pro celočíselné násobení (X:A = A×X) trvající 11 cyklů a navíc se objevily instrukce (podobné instrukcím známým z MCS-51), které umožňovaly přímou manipulaci s jednotlivými bity uloženými v prvních 256 bajtech paměti: BSET (bit set), BCLR (bit clear), BRSET (branch if bit is set) a BRCLR (branch if bit is clear). Taktéž možnosti adresování byly poněkud odlišné: bylo možné provádět přímé adresování prvních 256 bajtů, rozšířené adresování (16 bitů adresy), adresování přes index registr a adresování přes index registr a osmibitový či šestnáctibitový posun (offset). Všechny mikrořadiče Motoroly jsou postaveny na von Neumannově architektuře, tj. mají pouze jeden adresový prostor, do nějž je mapována jak paměť RAM, tak i paměť ((E)P)ROM a popř. i elektricky mazatelná paměť EEPROM.

Obrázek 11: Instrukční sada mikrořadiče M68HC05.
(Zdroj: Freescale Semiconductor, Ltd. MC68HC05B6/D Rev. 4.1 08/2005)

Základní model procesoru 68HC05 má na jediném čipu 176 bajtů RAM, 5936 bajtů ROM, 256 bajtů EEPROM, tři osmibitové I/O porty, šestnáctibitový čítač/časovač, sériové rozhraní SCI, jeden osmibitový A/D převodník a konečně modul pro PWM (pulsní šířkovou modulaci). Existovaly však i další varianty tohoto procesoru, z nichž některé měly až 32 kB ROM či EPROM, větší kapacitu paměti RAM, nainstalovanou rutinu ve firmware, která umožňovala komunikaci s PC přes sériový port (později se tato rutina vyvinula ve známé BUFFALO) atd. Bližší informace o tomto mikrořadiči i o dalších řadách 68HC08 a 68HC11 si řekneme v navazující části seriálu.

Obrázek 12: Zapojení pinů osmibitového mikrořadiče 68HC08.
(Zdroj: Technical Data – MC68HC08AB16A, Freescale Semiconductor)

4.2 Mikrořadič 68HC08

Dalším osmibitovým mikrořadičem, který byl navržen firmou Motorola, je mikrořadič nesoucí označení 68HC08. Jedná se o v mnoha směrech vylepšenou variantu původního mikrořadiče 68HC05, který svým uživatelům nabízel jak větší množství vstupně-výstupních portů, více časovačů a osmikanálový analogově-digitální převodník, tak i rozšířenou kapacitu pamětí ROM a RAM. Došlo i ke změně v konfiguraci registrů a rozšíření instrukční sady tohoto mikrořadiče – zejména byly přidány nové adresní režimy, které umožňovaly lépe využít zvětšenou kapacitu pamětí ROM a RAM. V následující tabulce jsou vypsány všechny registry centrální procesorové jednotky, které mohly být využity při programování v assembleru. Povšimněte si především toho, že došlo k rozšíření původně osmibitového indexového registru X na šestnáctibitový registr H:X, jehož obě osmibitové části lze zpracovávat odděleně. Taktéž se rozšířila bitová šířka registrů PC a SP na plných šestnáct bitů, zatímco u mikrořadiče 68HC05 měl PC měnitelných pouze 13 spodních bitů a SP dokonce jen 6 spodních bitů:

Označení Šířka (b) Využito bitů Název registru Význam registru
A 8 8 accumulator A jediný universální pracovní registr
H:X 16 16 index register používán při adresování operandů
PC 16 16 program counter používán při adresování instrukcí
SP 16 16 stact pointer použit při operacích se zásobníkem
CCR 8 6 condition code register obsahuje příznakové bity

Obrázek 13: Instrukční sada mikrořadiče 68HC08.
(Zdroj: Technical Data – MC68HC08AB16A, Freescale Semiconductor)

5. Kam dál? Vytvořit nejvýkonnější osmibitový čip či přejít do 32bitové oblasti?

Po vzniku a relativně úspěšných prodejích čipů MC6800/6801/6802 se vedení společnosti Motorola rozhodlo rozdělit další vývoj svých programovatelných čipů na dvě části. První skupina vývojářů se soustředila na vývoj zcela nové generace mikroprocesorů – jednalo se o později slavnou řadu 68000 (m68k), jejíž tvůrci vlastně zcela přeskočili generaci čistě šestnáctibitových procesorů, protože čipy Motorola 68000 byly v mnoha ohledech 32bitovými mikroprocesory. Druhá skupina vývojářů mezitím pracovala na novém typu osmibitového mikroprocesoru, který převzal mnoho svých vlastností jak z původního procesoru MC6800, tak i z konkurenčního čipu MOS 6502 (zde se konstruktéři nechali „inspirovat“ především nultou stránkou paměti a jejím efektivním adresováním; díky tomu je možné MOS 6502 považovat za čip s 256 pracovními registry :-).

Poznámka: Motorola 68000 se někdy označuje jako 16/32bitový mikroprocesor. Je tomu tak z toho důvodu, že pracovní registry i celá instrukční sada byly plnohodnotně 32bitové, ovšem interní datové sběrnice i ALU měly šířku jen 16 bitů. I externí datová sběrnice měla šířku pouze 16 bitů, což však nehraje příliš velkou roli v posuzování bitové šířky procesoru, protože například čip Intel 8088 byl externě jen osmibitový a Intel 386SX externě 16bitový, i když se interně jednalo o plně 16bitové, resp. 32bitové mikroprocesory. Ovšem z pohledu programátorů byla Motorola 68000 32bitovým mikroprocesorem; jediné omezení měla adresová sběrnice – 24 bitů (tedy 16MB, což ovšem v době vzniku tohoto čipu byla nepředstavitelně obrovská hodnota).

Mikroprocesory řady 68000 na škále CISC→RISC:

    Complex/                                                           Simple/
      CISC______________________________________________________________RISC
      |                                                         14500B*    |
4-bit |                                                    *Am2901         |
      |                                   *4004                            |
      |                                *4040                               |
8-bit |                                     6800,650x         *1802        |
      |                       8051*  *  *8008   *    SC/MP                 |
      |                              Z8    *         *    *F8              |
      |                F100-L*   8080/5  2650                              |
      |                             *       *NOVA        *  *PIC16x        |
      |          MCP1600*   *Z-80         *6809    IMS6100                 |
16-bit|          *Z-280           *PDP11             80C166*  *M17         |
      |                      *8086    *TMS9900                             |
      |                 *Z8000          *65816                             |
      |                *56002                                              |
      |            32016*   *68000 ACE HOBBIT  Clipper      R3000          |
32-bit|432           96002 *68020    *   *  *  *   *AMD 29000 *   *ARM     |
      | *         *VAX * 80486 68040 *PSC i960    *SPARC         *SH       |
      |          Z80000*    *  *    TRON48    PA-RISC                      |
      |    PPro  Pent*    -- T9000 -*-------     *    *88100               |
      | *    *    -- 860 -*--*-----            *     *88110                |
64-bit|Rekurs         POWER PowerPC   *        CDC6600     *R4000          |
      |            x86-64*   *620 U-SPARC *     *R8000         *Alpha      |
      |     ------- IA-64 -------      R10000                              |
      CISC______________________________________________________________RISC

6. Nejvýkonnější osmibitový mikroprocesor

Výsledkem těchto snah byl s velkou pravděpodobností nejvýkonnější osmibitový mikroprocesor, který byl kdy vyroben. Jednalo se o procesor nazvaný MC6809, který programátorům nabízel několik v té době poměrně unikátních vlastností, například téměř zcela ortogonální instrukční sadu (samozřejmě se jednalo o procesor s architekturou CISC), dvojici šestnáctibitových index registrů či o dva ukazatele na vrchol zásobníku ideální například pro implementaci programovacího jazyka Forth. Tento mikroprocesor sice programátorům ve své instrukční sadě nabízel „pouze“ 59 instrukcí, ovšem vzhledem k velkému množství adresovacích režimů a ortogonalitě instrukční sady dokázal provádět všechny instrukce původního čipu MC6800 (78 instrukcí) a samozřejmě i vykonávat mnohé další operace.

Obrázek 14: Mikroprocesor Motorola MC6809.

Pro zajímavost jsou v následující tabulce vypsány některé základní vlastnosti „programátorského modelu“ osmibitových mikroprocesorů a mikrořadičů přímo či nepřímo odvozených od původního čipu MC6800 (D je označení pro double accumulator, 16bitový akumulátor vytvořený z dvojice osmibitových akumulátorů A a B):

Čip Typ Akumulátor(y) D=A+B (16b) Index registr(y) Čítač instrukcí Zásobníkové registry Spec. registry
Motorola MC6800 CPU A (8b), B (8b) ne X (16b) PC (16b) SP (16b) CCR (6b)
Motorola MC6809 CPU A (8b), B (8b) ano X (16b), Y (16b) PC (16b) S (16b), U (16b) CCR (8b), DP (8b)
Motorola 68HC05 MCU A (8b) ne X (8b) PC (13b) SP (16b) CCR (5b)
Motorola 68HC08 MCU A (8b) ne H:X (16b) PC (16b) SP (16b) CCR (6b)
Motorola 68HC11 MCU A (8b), B (8b) ano X (16b), Y (16b) PC (16b) SP (16b) CCR (8b)
MOS 6502 CPU A (8b) ne X (8b), Y (8b) PC (16b) S (8b) P (7b)

Jak původní mikroprocesor MC6800, tak i konkurenční čip MOS 6502 obsahoval speciální adresní režimy, s jejichž pomocí bylo možné přistupovat k prvním 256 bajtům operační paměti, a to rychlejším způsobem, než v případě použití plné 16bitové adresy (navíc byly instrukce i o jeden bajt kratší, což nebylo v dobách počítačů s maximálně 64 kB RAM nezanedbatelné). Konstruktéři mikroprocesoru MC6809 tuto možnost zachovali a navíc speciální osmibitové adresní režimy rozšířili o registr nazvaný DP (zkratka Direct Page), kterým bylo možné vybrat jakoukoli stránku v rámci paměťového prostoru 64 kB, kterou bylo následně možné použít v součinnosti s osmibitovou adresou (důležité je, že se neprovádělo časově náročné sčítání dvou adres, nejedná se o obdobu neblahého adresování typu segment:offset, kterým nás oblažila firma Intel :-). Nově přidána byla taktéž instrukce umožňující provést vynásobení dvou osmibitových operandů. Hardwarová násobička přitom nebyla u osmibitových mikroprocesorů příliš častým příslušenstvím, protože její implementace zabírala příliš mnoho cenné plochy čipu (počet tranzistorů na čipu je přímo úměrný jeho ploše a nepřímo úměrný použité technologii litografie).

pc6604

Obrázek 15: Herní konzole Vectrex s mikroprocesorem Motorola 6809 (jedná se o 3D model, nikoli o skutečnou fotografii).

Zajímavé a i v dnešní době poněkud neobvyklé bylo též přidání druhého ukazatele na vrchol zásobníku U. To umožňovalo jak rychlé přepínání mezi různými procesy (operační systém → uživatelský program, uživatelský program → obslužná přerušovací rutina), tak i například snadnou implementaci interpretru programovacího jazyka Forth, který dvojici zásobníků používá. Vzhledem k tomu, že řadič i aritmeticko-logická jednotka mikroprocesoru MC6809 byly ručně optimalizovány (šlo o možná poslední procesor typu CISC, jehož interní struktura byla „zadrátována“ bez použití mikrokódu), jednalo se o velmi rychlý procesor, a to i v případě, že byl použit relativně pomalý zdroj hodinového signálu – původní MC6809 měl maximální hodinovou frekvenci rovnu 1MHz, model MC68A09 1,5 MHz (právě tento model byl použit v herní konzoli Vectrex) a konečně model MC68B09 mohl být taktován hodinovým signálem o frekvenci až 2 MHZ.

Z mnoha pohledů se tak jednalo o technologicky velmi dobře navržený mikroprocesor, který však přišel na trh již poměrně pozdě – v době nástupu šestnáctibitových a 32bitových čipů (ostatně to samé je možné říci i o herní konzoli Vectrex, které se „podařilo“ přijít na trh téměř v době, kdy v USA začala velká krize na trhu s herními konzolemi i hrami určenými pro tyto konzole). Vzhledem k technologickým kvalitám 6809 je poměrně zajímavý a poněkud nepochopitelný fakt, že mikrořadiče firmy Motorola, zejména pak čipy rodiny 68HC11, NEbyly založeny na 6809 ale na starším a ne tak výkonném čipu MC6800, což je z dnešního pohledu možná poněkud škoda (například o instrukční sadě 68HC11 lze říci cokoli, jen ne to, že je ortogonální a snadno naučitelná).

7. Konec osmibitové éry a vznik legendární řady Motorola 68000

I přesto, že byl výše zmíněný čip 6809 pravděpodobně nejpropracovanějším a nejvýkonnějším osmibitovým mikroprocesorem (a jedním z posledních čipů optimalizovaných ručně), bylo již v době jeho uvedení na trh jasné, že éra osmibitových počítačů (nikoli mikrořadičů) je již za svým zenitem a vývoj bude probíhat v oblasti šestnáctibitových a 32bitových čipů. A právě zde se inženýři ze společnosti Motorola rozhodli, že vývoj jejich nového čipu bude probíhat odlišným způsobem, než který zvolila konkurenční firma Intel. Intel se totiž snažil vyrábět do značné míry kontinuální řadu mikroprocesorů, počítaje osmibitovým procesorem Intel 8008, přes mnohem známější procesory Intel 8080 a Intel 8085 až po šestnáctibitový procesor Intel 8086, popř. jeho velmi úspěšnou variantu Intel 8088 se zmenšenou šířkou externí sběrnice, který byl použit v prvních osobních počítačích IBM PC. Jak architektura, tak i instrukční sada mikroprocesorové řady x86 je vlastně dodnes ovlivněna snahou o dosažení zpětné kompatibility se stařičkými osmibitovými mikroprocesory Intel (pro x86–64 to platí už jen v malé míře).

Procesory 8086 a 8088, které z větší části navrhoval Stephen Morse, navíc obsahují (i díky snahám o kontinualitu vývoje) šestnáctibitovou interní sběrnici a tudíž i šestnáctibitové adresové i datové registry, což poměrně zásadním způsobem ovlivnilo například způsob výpočtu efektivních adres – jedná se o (nechvalně) známý způsob adresování přes dvojici šestnáctibitových registrů segment:offset.

Návrh Motoroly 68000 se skutečně v mnoha ohledech lišil od osmibitových předchůdců. Výsledkem byl totiž (z pohledu programátora, nikoli nutně interně) plně 32bitový mikroprocesor s do značné míry ortogonální instrukční sadou, mnoha adresovacími režimy a s relativně velkým množstvím datových registrů D0D7 i adresových registrů A0A7, z nichž každý měl šířku plných 32bitů. Což byl velmi podstatný rozdíl oproti omezeným možnostem použitým u mikroprocesorů Intel řady x86, kde se sada registrů i způsob adresování musel několikrát změnit (přesněji řečeno rozšiřovat, a to s použitím prefixů u instrukcí, režimů činnosti procesoru i dalších adresovacích režimů); nehledě na to, že instrukční sady procesorů Intel nebyly zpočátku ortogonální, což komplikovalo jak práci programátorů v assembleru, tak i (a to především) činnost překladačů.

Rozdělení sady všech šestnácti registrů na adresové a datové umožnilo konstruktérům dosáhnout paralelního zpracování jednotlivých kroků v instrukci, tj. současně bylo možné provádět nějaký výpočet či přenos dat a navíc se již mohl měnit obsah adresového registru (operace provádějící mj. i post-inkrementaci či pre-dekrementaci adresového registru jsou asi nejlepším příkladem). To, že každý adresový registr měl šířku 32 bitů taktéž znamenalo, že každý z těchto registrů mohl sloužit pro zápis či čtení obsahu libovolné paměťové buňky v rozsahu 4 GB, i když fyzicky bylo možné k původnímu mikroprocesoru Motorola 68000 připojit „pouze“ 16 MB RAM (jedná se o jeden z důsledků již zmíněné dopředné kompatibility – dobře napsané programy nebylo nutné při přechodu na modernější typ procesoru měnit). I přes některé nedostatky tohoto mikroprocesoru (pravděpodobně nejzávažnějším byla u původního typu absence jednotky pro ochranu paměti – chráněný režim) byl procesor Motorola 68000 použit i u pracovní stanice Sun-1, kterou si popíšeme v navazujících kapitolách.

Původní Motorola M68000 měla maximální hodinovou frekvenci 8 MHz (u některých počítačů záměrně snižovanou o několik stovek Hz na hodnoty přesahující 7 MHz) a interně se jednalo o třicetidvoubitový mikroprocesor, na rozdíl od konkurenčních procesorů Intel 8086 a Intel 80286 (procesor obsahoval šestnáctibitové ALU pracující paralelně). Aby se však snížila celková cena čipu i počítačů, které ho používaly, byla externí datová sběrnice M68000 pouze šestnáctibitová a adresová sběrnice 24bitová, což jeho tvůrcům umožnilo, aby mikroprocesor obsahoval pouze 64 pinů aniž by se musely adresy a data multiplexovat (přenášet po jedněch vodičích v časově oddělených okamžicích).

8. Programátorský model mikroprocesorů m68k

8.1 Sada registrů

Z pohledu programátora (používajícího assembler) je programátorský model mikroprocesorů m68k velmi příjemný na práci. Programátoři měli k dispozici již výše zmíněné adresové a datové registry s plnou šířkou 32bitů. K těmto registrům je doplněno několik registrů dalších, ovšem některé z nich nejsou v uživatelském režimu přístupné:

Registr Šířka Význam
D0 32b datový registr D0
D7 32b datový registr D7
     
A0 32b adresový registr A0
A6 32b adresový registr A6
A7/USP 32b adresový registr A7, resp. User Stack Pointer
     
PC 32b programový čítač
CCR 8b příznakový registr
     
SR status register, v dolních osmi bitech obsahuje CCR, není viditelný v uživatelském režimu
ISP interrupt stack pointer, nedostupné v uživatelském režimu
MSP master stack pointer, nedostupné v uživatelském režimu, až do 68020
Poznámka: již při letmém pohledu na tabulku je patrné, že se architektura M68000 zcela odlišuje od předchozích architektur osmibitových mikroprocesorů M6800.

Datové registry D0 až D7 je možné používat v jejich původním významu, tj. pro zpracování 32bitových slov. Kromě toho je ovšem možné je využít jako bitová pole, osmibitové registry, šestnáctibitové registry nebo dva sousední registry využít pro 64bitovou operaci. Tyto registry se taktéž používají ve funkci index registrů při adresování dat uložených v operační paměti (viz též kapitola s popisem adresovacích režimů).

8.2 Příznakový registr

Příznakový registr obsahuje pět příznakových bitů nastavovaných různými instrukcemi. Zajímavá je existence příznakového bitu X, který je nastavován na stejnou hodnotu jako příznak C, ovšem jen u aritmetických operací. Používá se pro implementaci aritmetických operací se širšími bitovými šířkami operandů:

Označení Příznak Význam
C Carry přenos
V Overflow přetečení
Z Zero příznak nuly
N Negative příznak záporného výsledku
X Extend nastaven jako C, ovšem jen u aritmetických operací

8.3 Adresovací režimy

Mikroprocesor podporoval velké množství adresovacích režimů, které byly navrženy takovým způsobem, aby dobře odpovídaly běžným jazykovým konstrukcím, především práci s poli a s rozeskokovými tabulkami. Díky tomu, že většina režimů byla podporována všemi instrukcemi, dosahoval celkový počet dostupných operačních kódů instrukcí hodnoty větší než 1000 (a to byl přitom počet instrukcí nízký – jen 56 instrukcí v uživatelském režimu).

Poznámka: v příkladech je použito opačné pořadí operandů, než je zvykem u architektur společnosti Intel.

Režim immediate je jednoduchý, protože používá přímo konstantu, která vystupuje jako jeden z operandů v prováděné instrukci:

MOVE.L #1234, D0

Přímý režim (direct) používá přímou specifikaci registru, který vystupuje v roli operandu. Může se jednat jak o datové, tak i o adresové registry:

MOVE.L D1,D0
MOVE.B D1,D0
MOVE.W D1,D0
MOVE.L A1,D0

V nepřímém režimu (indirect) je použit adresový registr ve funkci ukazatele – samotný operand je načten z paměti:

MOVE.L D0,(A1)

Existuje několik variant nepřímého režimu. Jedním z nich je režim, v němž se provede post-inkrementace adresového registru (=ukazatele) a to podle velikosti operandu (s výjimkou bajtů):

MOVE.L (A1)+,D0

Podobný režim provádí pre-dekrementaci ukazatele ještě před přístupem do operační paměti:

MOVE.L -(A0),D2

V nepřímém režimu lze použít i posun o šestnáctibitovou konstantu (displacement):

MOVE.L (1234,A0),D2
MOVE.L 1234(A0),D2
MOVE.L (1234)(A0),D2
Poznámka: některé assemblery podporují pouze jeden z výše uvedených zápisů.

Další režim využívá nepřímé adresování s index registrem (což je libovolný datový či adresový registr):

MOVE.L #10,(x,A0,D0.W)
MOVE.L #10,(x,A0,A1.W)

Popř. lze adresu doplnit o velikost (scale) v rozsahu 1, 2, 4 a 8:

MOVE.L #10,(x,A0,D0.L*scale)
MOVE.L #10,(x,A0,A1.L*scale)

Adresovací režim s krátkým ukazatelem:

MOVE.L #10, 1234.W
MOVE.L #10, (1234).W

Adresovací režim s dlouhým ukazatelem:

MOVE.L #10, 1234.L
MOVE.L #10, (1234).L

Nepřímé adresování využívající programový čítač PC:

MOVE.L x(PC)
MOVE.L (x)(PC)
MOVE.L (x,PC)

Nepřímé adresování s programovým čítačem a index registrem:

MOVE.L #10, x(PC,Dn.L)

Doplnění předchozího režimu o velikost (scale):

MOVE.L #10, x(PC,Dn.L*scale)

Další režim je nesložitější, protože používá ukazatel uložený v operační paměti. Přístup do paměti je tedy proveden několikrát, nejprve pro získání ukazatele a posléze pro přístup k operandu. Jedna z nejsložitějších variant vypadá takto:

MOVE.L #10, ([bd,An],An.L*scale,od)

Poslední režim pracuje s registrem SR (nikoli v uživatelském režimu) a CCR:

ORI #5,CCR

9. Instrukční sada čipů Motorola 68000

Operační kódy instrukcí měly, podobně jako u mnoha dalších mikroprocesorů s architekturou CISC, proměnlivou šířku. Minimální šířka byla rovna šestnácti bitům, ovšem u instrukcí, v nichž se vyskytovaly konstanty (posun při adresování atd.) mohla být šířka instrukce mnohem delší. Nejdelší instrukcí je jedna z variant instrukce MOVE, která je zakódována v deseti 16bitových slovech. Takto složité instrukce pochopitelně musel spouštět mikroprogramový řadič; Motorola 68000 tedy v žádném případě nepatřila do kategorie RISC.

Poznámka: ve skutečnosti by byly i některé mikroinstrukce příliš složité (horizontální kód), takže se převáděly na sekvence nanoinstrukcí. To později vedlo k problémům při snaze o dosažení vyššího výkonu u superskalárních jader.

9.1 Tabulka instrukcí

V následující tabulce jsou vypsány všechny instrukce čipu Motorola 68000 (bez instrukcí matematického koprocesoru):

Instrukce Význam zkratky instrukce
ABCD Add BCD with extend
ADD ADD binary
ADDA ADD binary to An
ADDI ADD Immediate
ADDQ ADD 3-bit immediate
ADDX ADD eXtended
AND Bit-wise AND
ANDI Bit-wise AND with Immediate
ASL Arithmetic Shift Left
ASR Arithmetic Shift Right
Bcc Conditional Branch
BCHG Test a Bit and CHanGe
BCLR Test a Bit and CLeaR
BSET Test a Bit and SET
BSR Branch to SubRoutine
BTST Bit TeST
CHK CHecK Dn Against Bounds
CLR CLeaR
CMP CoMPare
CMPA CoMPare Address
CMPI CoMPare Immediate
CMPM CoMPare Memory
DBcc Looping Instruction
DIVS DIVide Signed
DIVU DIVide Unsigned
EOR Exclusive OR
EORI Exclusive OR Immediate
EXG Exchange any two registers
EXT Sign EXTend
ILLEGAL ILLEGAL-Instruction Exception
JMP JuMP to Affective Address
JSR Jump to SubRoutine
LEA Load Effective Address
LINK Allocate Stack Frame
LSL Logical Shift Left
LSR Logical Shift Right
MOVE Between Effective Addresses
MOVE To CCR
MOVE To SR
MOVE From SR
MOVE USP to/from Address Register
MOVEA MOVE Address
MOVEM MOVE Multiple
MOVEP MOVE Peripheral
MOVEQ MOVE 8-bit immediate
MULS MULtiply Signed
MULU MULtiply Unsigned
NBCD Negate BCD
NEG NEGate
NEGX NEGate with eXtend
NOP No OPeration
NOT Form one's complement
OR Bit-wise OR
ORI Bit-wise OR with Immediate
PEA Push Effective Address
RESET RESET all external devices
ROL ROtate Left
ROR ROtate Right
ROXL ROtate Left with eXtend
ROXR ROtate Right with eXtend
RTE ReTurn from Exception
RTR ReTurn and Restore
RTS ReTurn from Subroutine
SBCD Subtract BCD with eXtend

9.2 Podmínky v instrukcích Bcc a DBcc

V některých instrukcích (Bcc, DBcc) se používají podmínky založené na kombinaci příznakových bitů:

Kód Význam Kombinace příznakových bitů
T true (nedostupný pro Bcc) vždy splněna
F false (nedostupný pro Bcc) nikdy nesplněna
     
HI větší (bez znaménka) not C and not Z
LS menší nebo rovno (bez znaménka) C or Z
CC bez přenosu not C
CS s přenosem C
NE nerovno not Z
EQ rovno Z
     
VC bez přetečení not V
VS s přetečením V
PL kladné (plus) not N
MI záporné (minus) N
     
GE větší nebo rovno (se znaménkem) (N and V) or (not N and not V)
LT menší než (se znaménkem) (N and not V) or (not N and V)
GT větší než (se znaménkem) ((N and V) or (not N and not V)) and not Z
LE menší nebo rovno (se znaménkem) Z or (N and not V) or (not N and V)

To například znamená, že instrukce Bcc má ve skutečnosti čtrnáct variant:

Podmíněný skok
BCC
BCS
BEQ
BGE
BGT
BHI
BLE
BLS
BLT
BMI
BNE
BPL
BVC
BVS

9.3 Vybrané instrukce

Instrukce ADDQ neboli add quick dokáže k operandu přičíst konstantu 1 až 8, která je zakódována přímo v instrukčním slovu. A vzhledem k tomu, že se takto malé konstanty vyskytují v reálných programech často, může se jednat o zajímavou optimalizaci (mnohé assemblery ji provádí automaticky).

Instrukce DBcc neboli test condition, decrement and branch je vhodná pro implementaci různých programových smyček. Testuje se jak nastavená podmínka (ta může být i true), tak i hodnota čítače po jeho snížení o jedničku. Díky tomu lze například velmi snadno implementovat průchod polem atd.

Existuje i možnost přesunu dat mezi více registry což zajišťuje instrukce MOVEM neboli move multiple registers:

MOVEM.L D0-D7/A0-A6,$1234
MOVEM.L (A5),D0-D2/D5-D7/A0-A3/A6
MOVEM.W (A7)+,D0-D5/D7/A0-A6
MOVEM.W D0-D5/D7/A0-A6,-(A7)

Bitové operace (užitečné při ovládání portů atd.) zajišťuje tato čtveřice instrukcí:

Instrukce Význam Poznámka
BTST test bit testovaný bit se uloží do příznaku Z
BCLR test bit and clear  
BSET test bit and set  
BCHG test bit and change  

10. Další vývoj řady 68000

Další vývoj této řady mikroprocesorů, jenž se také souhrnně označovaly jako řada 68k, se ubíral dvěma směry – ke zjednodušení (a především zlevnění) a směrem k vyššímu výkonu a dalším funkcím potřebným pro nasazení čipů (matematický koprocesor, podpora pro virtuální paměť atd.). Cenově výhodnější varianta označená M68008 měla datovou sběrnici zúženou na osm bitů a adresovou sběrnici na bitů dvacet, což umožnilo zmenšit velikost pouzdra a především počet pinů (větší množství pinů znamená i vyšší cenu celého počítače a zvýšenou poruchovost). Naopak mikroprocesor M68020 a následně i M68030 a M68040 byly již plně třicetidvoubitové.

Rozlišujeme čtyři hlavní generace čipů M68000:

  1. 16/32 čipy
  2. Interně plně 32bitové čipy
  3. Čipy s instrukční pipeline
  4. Superskalární čipy

První generace s 16/32 bitovými čipy:

Čip
Motorola 68000
Motorola 68EC000
Motorola 68SEC000
Motorola 68HC000
Motorola 68008
Motorola 68010
Motorola 68012

Druhá generace s plně 32 bitovými čipy:

Čip
Motorola 68020
Motorola 68EC020
Motorola 68030
Motorola 68EC030

Třetí generace s instrukční pipeline:

Čip
Motorola 68040
Motorola 68EC040
Motorola 68LC040

Čtvrtá generace se superskalární architekturou:

Čip
Motorola 68060
Motorola 68EC060
Motorola 68LC060

Zapomenout nesmíme ani na čipy DragonBall a pozdější ColdFire, které se používaly a používají v embedded oblasti. DragonBall byl využíván v zařízeních Palm, ovšem později se i v oblasti handheldů přešlo na 32bitovou architekturu ARM. Novější čipy ColdFire nejsou s původní řadou m68k zcela kompatibilní, což je dáno snahou o zjednodušení instrukční sady (instrukce zde mohou mít šířku 16, 32 či 48 bitů, další šířky nejsou podporovány). V současnosti se čipy odvozené od m68 používají právě v embedded oblasti, a to jak z historických důvodů (většinou neexistuje žádný tlak na vylepšování dlouhými léty provozu otestovaných zařízení), tak i proto, že CISCová instrukční sada umožňuje tvorbu kompaktního strojového kódu.

11. Aplikace čipů řady m68k v osobních počítačích a pracovních stanicích

Již v úvodní kapitole jsme se zmínili o tom, že mikroprocesory řady m68k byly použity v celé řadě osobních mikropočítačů a dokonce i pracovních stanic. Kromě toho nalezneme m68k i v některých herních konzolích, laserových tiskárnách, grafických kalkulačkách společnosti Texas Instruments atd. V navazujících kapitolách se seznámíme s nejdůležitějšími aplikacemi m68k pocházejícími z dob, kdy dnes tato skomírající architektura znamenala špičku ve svém oboru. Nejdříve se seznámíme s osobními mikropočítači postavenými nad m68k – řadou Apple Lisa, Sinclair QL, Macintosh, Atari ST a Amiga (pořadí odpovídá době uvedení na trh). Dále se zmíníme o grafické pracovní stanici Sun-1 a nezapomeneme ani na herní konzole, v nichž se čipy pocházející z řady m68 používaly, ať již v roli primárního čipu, tak i čipu pomocného (ovšem paradoxně se i tento sekundární čip používal v hlavní roli – viz další text).

Poznámka: ve skutečnosti existují i další oblasti, v nichž se m68k používaly. Příkladem mohou být jakési hybridy mezi primitivními laptopy a psacími stroji společnosti Alpha Smart.

Obrázek 16: O tom, že pro tvorbu textů není zapotřebí používat nejnovější výkřiky IT s plnohodnotným GUI, svědčí i existence několika generací zařízení Alpha Smart, která jsou v mnoha ohledech pravým opakem tabletů: malý pasivní (černobílý) displej s několika řádky textu je doplněn poměrně kvalitní klávesnicí a výdrží na baterie i několik týdnů. Jádrem systému je procesor na bázi slavné Motoroly 68000.

12. Sinclair QL

Sinclair QL byl osobní počítač vyráběný slavnou společností Sinclair Research. Zkratka QL je odvozena od sousloví Quantum Leap neboli kvantový přechod. Tímto názvem pravděpodobně chtěla firma naznačit výkonový i technologický skok mezi původní řadou ZX a počítači QL. O technologický skok se skutečně jednalo – Sinclair QL totiž obsahoval mikroprocesor řady Motorola 68000, konkrétně typ Motorola 68008 taktovaný na sedmi a půl megahertzích, což je na dobu vzniku velmi slušná frekvence (vzpomeňme na pozdější Amigy či Atari ST). Vzhledem k tomu, že počítač byl představen v roce 1983, se jednalo o jeden z prvních skutečně třicetidvoubitových osobních počítačů na trhu. Jedním z uživatelů tohoto počítače byl i jistý Linus Torvalds, jehož jméno čtenáři Root.cz pravděpodobně již zaslechli :-)

obr

Obrázek 17: Sinclair QL.

Na rozdíl od většiny dalších počítačů postavených nad Motorolou 68000 se však Sinclair QL nesetkal s větším obchodním úspěchem. Uvádí se, že za necelé dva roky (než byla výroba ukončena) bylo prodáno cca 150 tisíc kusů, což již nepředstavuje pro polovinu osmdesátých let žádné ohromující číslo. Pravděpodobným důvodem neúspěchu je nástup nové generace počítačů firem Atari a Commodore (CBM) a také to, že počítač nebyl zpětně kompatibilní se ZX Spectrem. Poměrně zajímavá je však jeho architektura. Kromě již zmíněného třicetidvoubitového mikroprocesoru se na jeho základní desce nacházely dva zákaznické obvody označené ZX8301 a ZX8302 (původně se totiž Sinclair QL měl jmenovat ZX83, z čehož vychází i prefix označení této dvojice integrovaných obvodů) a navíc mikrořadič Intel 8049 (jedná se o řadu Intel 8048 z níž vychází i dodnes populární řada Intel 8051), který mj. sloužil pro generování zvuku a komunikaci s klávesnicí a myší. Zajímavé je, že počítač nebyl vybaven disketovou jednotkou, ale paměťovým zařízením Microdrive („nekonečnou“ magnetickou páskou).

obr

Obrázek 18: Další pohled na Sinclair QL.

Důležitou roli hrál obvod ZX8301, nazývaný též Master Chip. Tento obvod plní v počítači dvě funkce: obnovu obsahu dynamických pamětí (DRAM refresh) a generování video signálu. Při práci s video signálem dokázal čip ZX8301 pracovat ve dvou grafických režimech. První režim nabízel velmi slušné rozlišení 512×256 pixelů, přičemž každý pixel mohl mít nastavenu jednu ze čtyř barev (černá, červená, zelená, bílá). Ve druhém režimu bylo rozlišení v horizontální ose sníženo na polovinu, tj. 256×256, ovšem počet barev pro jeden pixel se zvýšil ze čtyř na osm (výběr se mohl provádět z palety 256 barev) a navíc se jedním bitem dalo nastavit, zda má pixel blikat. Velikost framebufferu je v obou případech shodná: 512×256×2/8=32768 bajtů; 256×256×4/8=32768 bajtů, tj. přesně 32 kB, navíc je počet pixelů na řádku představován „kulatým“ číslem, což v některých případech vede ke zjednodušení grafických algoritmů, například i rutiny putpixel.

obr

Obrázek 19: Obrazovka počítače Sinclair QL s textovým editorem.

Čip ZX8301 taktéž podporoval přepínání mezi dvěma framebuffery, čímž se dal velmi jednoduše implementovat double buffering, pomocí něhož lze provádět animace bez nežádoucího poblikávání obrazu. Přepínání mezi dvěma framebuffery znamená, že do jednoho bufferu se vykresluje scéna zatímco druhý buffer je zobrazen na obrazovce monitoru. Pokud vás grafické schopnosti počítače Sinclair QL neohromily, tak vězte, že první generace počítačů IBM PC byla vybavena kartou CGA (Color Graphics Adapter) s poloviční kapacitou framebufferu a tím pádem i omezenějšími schopnostmi (o double bufferingu ani nemluvě).

13. Apple Lisa

První zmínky o vývoji 16/32bitového mikropočítače Apple Lisa můžeme najít již v roce 1979, kdy (po známé návštěvě šéfů firmy Apple u Xeroxu v Palo Altu, které ovlivnilo jak vývoj grafického prostředí, tak i objektově orientovaný návrh inspirovaný jazykem Smalltalk) vznikl prvotní návrh designu celého stroje i s jeho grafickým uživatelským rozhraním (GUI). Masová výroba však začala až v roce 1983 aby posléze velmi neslavně skončila již v roce 1986 (řeč je o známém „pohřbívání“ počítačů v Utahu, jež proběhlo v roce 1989). Apple Lisa byla vůbec prvním osobním počítačem, který obsahoval operační systém s podporou multitaskingu (i když prozatím pouze kooperativního, ovšem, jak se ukázalo o několik let později, uživatelé byli ochotni kooperativní multitasking akceptovat i u systému MS Windows) a moderního grafického uživatelského rozhraní založeného na ovládání pomocí myši. I přes nepříliš velkou oblibu tohoto počítače mezi běžnými uživateli i korporátními zákazníky tak Apple Lisa patří mezi velmi zajímavé počítače, které svým způsobem změnily historii výpočetní techniky.

pc74

Obrázek 20: Počítač Apple Lisa.

Příčiny komerčního neúspěchu tohoto počítače, který dokonce podle některých autorů mohl při neopatrném rozhodnutí vést ke krachu firmy Apple, jsou dvě: prvním důvodem byla příliš vysoká cena, protože první verze se prodávaly za cenu cca 10000 dolarů (naproti tomu pozdější Macintoshe stály pouhých 2500 dolarů, přičemž Steve Jobs původně plánoval, že by jejich cena neměla přesáhnout částku 500 dolarů). Na první pohled může cena 10000 dolarů za mikropočítač působit přemrštěně, ve skutečnosti však pouze operační paměti do tohoto počítače stály cca 4000 dolarů, uživatel tedy dostal tak výkonný stroj, jaký si zaplatil. Historie však zcela jasně ukázala (problémy firem jako Apple, později SGI, IBM a relativně nedávno i Sun Microsystems), že počítače jsou – podobně jako automobily – masovou záležitostí, proto je zapotřebí je prodávat za „lidové“ ceny. Druhou příčinou byla obchodní politika samotné firmy Apple, která později propagovala spíše počítače značky Macintosh (ostatně i druhá verze počítače Apple Lisa se raději prodávala pod obchodním názvem Macintosh XL).

pc74

Obrázek 21: Neslavný konec počítačů Apple Lisa. V roce 1989 zakoupila firma Apple pozemek v Utahu a pohřbila na něm tisíce těchto počítačů. I takovým způsobem se může chovat firma, která je dnes módní ikonou…

Počítač Apple Lisa byl postaven na bázi známého mikroprocesoru Motorola M68000 (jinak bychom se s ním v dnešním článku nezabývali), jenž byl taktován na pouhých 5 MHz (tento procesor například v pozdějších počítačích Atari ST a Amiga pracoval i na mnohem vyšších frekvencích). Kapacita operační paměti RAM byla rovna celému jednomu megabajtu – na tomto místě je vhodné si uvědomit, že tehdejší rozšířené mikropočítače měly kapacitu operační paměti rovnu 64 kB až 128 kB, přičemž cena jednoho kilobajtu paměti byla cca čtyři dolary. Kapacita paměti ROM byla 2 MB, jelikož v této paměti byl zapsán celý operační systém počítače. Dále byly k dispozici dvě disketové jednotky pro diskety o velikosti 5 1/4 palce. Externí paměti doplňoval volitelný (a taktéž patřičně drahý) pevný disk o kapacitě 5 MB. V případě, že operační systém potřeboval zvýšit kapacitu virtuální paměti, mohl provést swap – swapovací soubor se ukládal buď na disketu ve druhé disketové mechanice (velmi pomalá možnost pro počítače bez pevného disku), nebo na pevný disk. Počítač byl doplněn monitorem o velikosti úhlopříčky dvanáct palců a myší s jedním tlačítkem. Prakticky totožná myš se mimochodem dodávala i k prvním Macintoshům. Počítač i monitor byly zabudovány v jedné skříni, což se později objevilo i u několika modelů již zmíněného Macintosh.

pc74

Obrázek 22: Počítač Alto firmy Xerox, na němž byly vyvíjeny první generace systémů s grafickým uživatelským rozhraním. Právě ve firmě Xerox byly vyvinuty základy dnešního GUI založené na myši, oknech, ikonách a rozbalovacích menu.

14. Osobní mikropočítače Atari ST

Předchozí dva počítače nebyly po komerční stránce příliš úspěšné. Ovšem řada Atari ST již úspěšná byla, takže si v navazujících podkapitolách alespoň ve stručnosti popíšeme některé základní modely z této řady.

14.1 Atari 520 ST

Osobní mikropočítač Atari 520 ST představoval svým výkonem a také cenou základní model z celé vývojové řady Atari ST (označení ST je odvozeno od sousloví Sixteen/Thirty Two, i když se traduje, že se jedná o iniciály Sama Tramiela, syna majoritního akcionáře firmy). Vyráběn byl od roku 1985 a jeho design byl podobný jako například u známé Amigy 500, tj. počítač i disketová mechanika (v některých modelech) byly zabudovány přímo v klávesnici. Při porovnání s dále popsanými Macintoshi můžeme vidět několik rozdílů – Macintosh měl zabudovaný monitor i disketovou jednotku (ta se u Atari používá v modelech s písmenem F v názvu) a jeho klávesnice byla ochuzena o mnoho funkčních kláves; v prvních modelech dokonce i kláves kurzorových (podle Steva Jobse se na pohyb v textu měla používat pouze myš). Naproti tomu Atari ST mají plnohodnotnou klávesnici, ale monitor musel být externí (barevný či monochromatický), popřípadě bylo možné u modelů označených písmenem M použít i běžnou televizi, protože obsahovaly VF modulátor, podobně jako Amigy či většina osmibitových počítačů.

pc7703

Obrázek 23: Osobní mikropočítač Atari 520 ST.

Počítače řady ST jsou na první pohled snadno rozeznatelné svými typickými zešikmenými funkčními klávesami, které se v minulosti objevily už u počítačů Atari 800XE a Atari 130XE – ostatně celý design tohoto počítače vychází ze svých (v tomto ohledu velmi kvalitních) osmibitových předků navržených designérem Irou Valenskim. Technické parametry počítače Atari 520 ST odpovídaly jeho určení – k dispozici byly různé modely rozlišované písmeny v názvu, ST je základní model, STF obsahuje disketovou jednotku (označení použito v souvislosti s 1040 STF), STM modulátor pro připojení k televizoru a STFM jak disketovou jednotku, tak i VF modulátor. Částečné rozšíření přinesl model Atari 520 ST+, který byl nabízen s 1 MB RAM, zatímco původní Atari 520 ST obsahovalo půl megabajtu operační paměti. Ve všech konfiguracích Atari 520 ST se objevoval výše popsaný mikroprocesor Motorola 68000 (tj. základní typ), jenž byl taktovaný na 8MHz. Jako operační systém byl použit TOS (The Operating System, též Tramiel's Operating System) s grafickou nadstavbou GEM. Poněkud netypicky byl celý operační systém uložen v paměti ROM, jež měla kapacitu 192KB a později (u dalších modelů) i 256KB.

pc7704

Obrázek 24: Další pohled na počítač Atari 520 ST.

pc7705

Obrázek 25: Legendární Dungeon Master běžící na počítači Atari ST v šestnáctibarevném režimu.

14.2 Atari 260 ST a Atari 130 ST

Počítač Atari 260 ST vznikl v roce 1986 jako levnější varianta k výše popsanému modelu Atari 520 ST. Jedná se o počítač určený především pro Evropský trh, který však svými vlastnostmi odpovídá původnímu modelu Atari 520 ST s 512 kB operační paměti, tj. jedná se o model bez zabudované disketové jednotky i bez VF modulátoru. Původně se sice plánovalo, že počítač bude osazen pouze 256 kB operační paměti (což by odpovídalo jeho názvu), ale ukázalo se, že samotný operační systém by si pro svoje potřeby alokoval tak velké množství paměti, že by pro aplikace zůstalo pouze cca 64 kB (Atari tento model vydalo jen kvůli tomu, že se již vydaly inzeráty se jménem 260 ST). Model Atari 130 ST měl obsahovat pouze 128 kB operační paměti a mělo se tak jednat o nejlevnější model z celé řady. Ve skutečnosti nebyl tento počítač nikdy prodáván, což znamená, že naprostá většina modelů řady ST obsahovala minimálně 512 kB operační paměti, s čímž také počítala většina aplikací.

pc7707

Obrázek 26: Osobní mikropočítač Atari 260 ST.

pc7708

Obrázek 27: Odlišný (a mnohem zajímavější) design klávesnice osobního mikropočítače Atari 260 ST.

14.3 Atari 1040 STF a Atari 1040 STFM

Počítač Atari 1040 STF(M) z roku 1986 představoval rozšíření předchozích modelů, a to jak po designové stránce, tak i v některých technických parametrech (například zdroj byl zabudovaný přímo do těla počítače a nikoli v samostatné krabičce, disketová jednotka byla vždy interní atd.). Tyto počítače byly původně dodávány s jedním megabajtem operační paměti, přičemž maximálně je bylo možné osadit až čtyřmi megabajty RAM. Varianta s jedním megabajtem se prodávala za 995 dolarů – jednalo se o první počítač s 1MB RAM, který byl prodáván za cenu pod tisíc dolarů, což firma Atari samozřejmě nezapomněla zdůrazňovat ve svých reklamách (zmiňovala se v nich rovnice 1 KB RAM = $1). Kapacita využitelné grafické paměti zůstala rovna 32KB, stejně jako podporované grafické režimy (popsané v předchozích kapitolách). Modely STF a STFM se od sebe lišily přítomností (resp. nepřítomností) VF modulátoru.

pc7709

Obrázek 28: Osobní mikropočítač Atari 1040 STFM.

14.4 Atari Mega ST

Počítač Atari Mega ST představuje další rozšíření vývojové řady ST. Ve skutečnosti byly vyráběny tři typy – Atari Mega ST 1, Atari Mega ST 2 a Atari Mega ST 4. Jediný rozdíl byl v kapacitě operační paměti, která byla rovna buď jednomu, dvěma nebo čtyřem megabajtům. Procesor zůstával stále stejný, tj. obligátní Motorola M68000. Taktovací frekvence se také nezměnila, byla tedy rovna 8MHz, což je, zejména v porovnání s novějšími Amigami, nedostatečné (ovšem díky relativně nízké ceně se Mega ST staly velmi oblíbenými modely, zejména v Evropě).

pc7710

Obrázek 29: Osobní mikropočítač Atari Mega ST s firemním monitorem a laserovou tiskárnou.

Kapacita grafické paměti (framebufferu) také zůstala z předchozích modelů řady ST zachována – 32 KB, stejně jako tři dostupné grafické režimy a počet maximálně zobrazitelných barev: 320×200 pixelů šestnáctibarevně, 640×200 pixelů čtyřbarevně a 640×400 pixelů monochromaticky. Přibyl však Blitter, což je čip používaný pro samostatné blokové přenosy dat (zejména grafických) bez účasti procesoru. Teprve s použitím Blitteru bylo možné zobrazovat kvalitní a rychlé animace bez nežádoucího „trhání“ obrazu. Blitter bylo možné také použít pro celoobrazovkový scrolling, emulaci spritů atd.

Poznámka: Blitter by se podle dobové literatury měl psát s některými písmeny velkými, tj. jako BLiTTER; podle mého názoru se však nejedná o akronym, proto zůstávám u malých písmen (slovo blit vzniklo ze zkratky operace BitBlt, což zase vzniklo ze sousloví Bit Block Transfer, jež bylo poprvé použito v systémech založených na programovacím jazyku Smalltalk).

pc7711

Obrázek 30: Populární hra Populous využívající šestnáctibarevný grafický režim 320×200 pixelů.

15. Osobní počítače Amiga

Počítače řady Amiga od firmy Commodore se staly již v době své největší slávy legendami a některé jejich vlastnosti nejsou na běžných PC dodnes překonány (například synchronizace obrazu s externím videosignálem nebo systém designu celého čipsetu), resp. byly překonány až hrubou výpočetní silou. Pojďme si nyní uvést stručnou historii těchto počítačů (zdaleka nejsou uvedeny všechny modely, pouze ty, které představují určité mezníky ve vývoji těchto počítačů).

15.1 Amiga 1000

Prvním komerčně dostupným počítačem z řady Amiga byla Amiga 1000, která začala být firmou Commodore prodávána v roce 1985. V té době byl největším konkurentem Amig výše popsaný mikropočítač Atari ST (zejména model 520ST, později také 1040ST), částečně také Apple. Prodávané modely tohoto počítače byly osazeny 256KB paměti RAM, která byla teoreticky (omezení OCS) rozšiřitelná až na 16MB. Více paměti nebylo možné osadit, protože (jak již víme) použitý procesor Motorola 68000 měl adresovou sběrnici širokou „pouze“ 24bitů. V tomto počítači byl vůbec poprvé použit takzvaný OCS – Original Amiga Chipset, který byl následně implementován i v dalších modelech, zejména ve známé Amize 500. OCS představoval velmi sofistikovaný systém několika čipů, které pracovaly relativně nezávisle na CPU a umožňovaly tak vytváření různých grafických i zvukových efektů prakticky „zadarmo“, protože mikroprocesor mohl provádět různé podpůrné výpočty a o zobrazování a zvuk se staraly čipy z OCS samostatně.

Obrázek 31: Amiga 1000.

15.2 Amiga 500

Amiga 1000 byla sice po technické stránce velmi vydařeným počítačem, pro větší úspěch na (především) herním trhu však bylo zapotřebí vytvořit diverzifikovanou základnu modelů. Výsledkem těchto snah byla velmi úspěšná Amiga 500, která byla poprvé dodána na trh v roce 1987 a prodávala se až do začátku devadesátých let. Podobně jako Amiga 1000 i Amiga 500 obsahovala čipset OCS a stejný mikroprocesor Motorola 68000, taktovaný na 7,14MHz. V základní konfiguraci byl tento osobní mikropočítač osazen již 512KB paměti, jež byla rozšiřitelná na 16MB.

Obrázek 32: Amiga 500.

15.3 Amiga 2000

Prakticky současně s Amigou 500 se začala dodávat i Amiga 2000. Zatímco „pětistovka“ představovala low-endovou řadu počítačů, „dvoutisícovka“ byla nabízena jako hi-end model. Tomu odpovídá i její vybavení, zejména použití šestnáctibitové i osmibitové sběrnice ISA, na kterou bylo možné připojit přes přídavné karty pevné disky, jednotky CD-ROM i další rozličná zařízení. Také se zde objevuje Zorro slot pro rozšiřující moduly.

Obrázek 33: Amiga 2000.

15.4 Amiga 3000

Amiga 3000 byla uvedena na trh v roce 1990 jako náhrada za stávající modely vyšší řady Amiga 1000 a Amiga 2000. Místo čipsetu OCS se objevuje nový čipset ECS – Enhanced Chip Set. Také původní procesor Motorola 68000 byl nahrazen novějším modelem 68030, který se navenek jevil jako plně třicetidvoubitový procesor, což se samozřejmě projevilo na celkové rychlosti počítače.

Obrázek 34: Amiga 4000.

15.5 Amiga 1200

Amiga 1200, která byla na trh uvedena v roce 1992, obsahovala zbrusu nový čipset zvaný AGA-Advanced Graphics Architecture. U Amigy 1200 došlo k celé řadě dalších vylepšení. Byl použit procesor Motorola 68020 taktovaný již na 14,28MHz (přesně dvojnásobná frekvence oproti předešlým modelům), základní kapacita operační paměti se zvýšila na 2MB a dokonce byl dodáván slot PCMCIA, přes nějž se daly připojovat paměťové karty, modemy, síťové karty apod.

Obrázek 35: Amiga 1200.

15.6 Amiga 4000

Také Amiga 4000 obsahovala, podobně jako výše popisovaný model, čipset AGA. Tento typ počítače měl sloužit jako nástupce Amigy 2000 a Amigy 3000. Svým celkovým pojetím se firma Commodore snažila s tímto modelem přiblížit ke klasickým počítačům PC, čemuž odpovídá i zabudování IDE řadiče a existence „tower“ verze.

Obrázek 36: Amiga 4000.

15.7 Original Amiga Chipset

První generace počítačů Amiga používala Original Amiga Chipset, zkráceně též OCS. Z technologického hlediska se jedná o velmi zajímavý čipset, při jehož návrhu bylo prvotním cílem co největší odlehčení práce centrální procesorové jednotky – CPU. Tuto snahu lze snadno pochopit, protože použité procesory Motorola 68000 s taktovací frekvencí 7,14 MHz i přes velmi dobře navrženou instrukční sadu a třicetidvoubitovou bitovou architekturu zpočátku velkou rychlostí neoplývaly, což by se negativně projevilo například při nutnosti provádění všech grafických operací přímo mikroprocesorem. Neexistence podpůrných čipů byl mj. i jeden z nedostatků prvních verzí počítačů Apple Macintosh. Z tohoto důvodu pracují čipy použité v OCS do značné míry nezávisle na mikroprocesoru, který pouze provádí inicializaci všech operací a tyto operace následně probíhají samostatně, popřípadě s řízením přes přerušení. Original Amiga Chipset se skládal z více částí (čipů): Agnus (přístup do RAM, implementace Blitteru a Copperu pro grafické operace), Denise (generování rastrové grafiky s horizontálním rozlišením 320, resp. 640 pixelů a 200/256/400/512 obrazovými řádky) a Paula (čtyři osmibitové zvukové kanály s PCM se stereofonním výstupem).

15.8 Enhanced Chip Set

Enhanced Chip Set – ECS – se poprvé objevil v Amize 3000. Obsahuje čipy Super Agnus, jenž podporuje adresaci 2MB RAM, dále čip Super Denise a Blitter, který může přenášet obraz větší než 1024×1024 pixelů. K dispozici jsou také nové grafické režimy: Productivity o rozlišení 640×480 pixelů a SuperHires o rozlišení 1280×200 pixelů, resp. 1280×256 pixelů ve čtyřech barvách. Kromě toho je umožněno posouvat sprity i mimo zobrazovanou oblast do okraje obrazovky (border).

15.9 Advanced Graphics Architecture

Advanced Graphics Architecture – AGA – byl použit u systémů Amiga 1200 a Amiga 4000. Podporuje grafické režimy s 256 barvami (8 bitplanů), osmnáctibitové barvy v HAM režimu a barvovou paletu obsahující 224 barev. Čipy z této čipové sady využívaly při adresaci plný třicetidvoubitový režim, což se projevilo zejména na šířce datové sběrnice. Tento čipset znamenal určité zklamání, protože se obecně očekávalo, že přinese podporu pro grafické režimy typu packed-pixel, kdy se nepoužívají bitplany, ale postupné ukládání barev jednotlivých pixelů po jednotlivých řádcích na obrazovce. Absence packed-pixel grafických módů komplikovala tvorbu interaktivní 3D grafiky, zejména her.

16. Osobní počítače Macintosh

Slavný mikropočítač Apple Macintosh Personal Computer, který je známý spíš pouze jako Macintosh nebo Mac je společným dílem Steva Jobse a Jefa Raskina (i když se tito pánové neměli v lásce). Již v roce 1979 vydal Jef Raskin knihu nazvanou „The Book of Macintosh“, ve které se objevují všechny základní ideje použité později právě v Macintoshi: grafické uživatelské rozhraní (textový režim nebyl podporovaný a to ani při startu systému), objektově orientované programování i ovládání počítače, síťová infrastruktura a jednotný přístup k obrazovce a tiskárně. Steve Jobs si Macintosh představoval jako počítač pro široké masy lidí, jeho cena by podle něj neměla překročit 500 (tehdejších) dolarů.

pc75

Obrázek 37: Osobní počítač Apple Macintosh, na kterém je spuštěný grafický rastrový editor MacPaint.

Doba nebyla pro vznik Macintoshe právě příznivá, Steve Jobs se několikrát nepohodl s Johnem Sculleym, tehdejším generálním ředitelem firmy Apple (ostatně rok po uvedení Macintoshe na trh byl Steve Jobs právě kvůli zásahu Johna Sculleye z Apple „odejit“, aby se po několika letech triumfálně vrátil).

pc75

Obrázek 38: Logo počítače Apple Macintosh 128 K, vlevo se nachází logo firmy Apple, které v té době ještě bylo duhové, teprve později se „přebarvilo“ do jednoho barevného odstínu.

Mikropočítač Macintosh byl řízen – jak jinak – mikroprocesorem Motorola 68000, který byl taktovaný na 7,834 MHz. Na stejné frekvenci byly provozována i zařízení připojená na společnou interní sběrnici. Kapacita operační paměti RAM činila 128 kB u modelu Macintosh 128 K, pozdější modely (Macintosh 512 K) obsahovaly i 512 kB. Základní součásti operačního systému byly uloženy v paměti ROM o kapacitě 64 kB. První verze Macintoshe se 128 kB paměti RAM se běžně označovala jako Macintosh 128K Personal Computer, verze s 512 kB jako Macintosh 512 K Personal Computer. Kromě interních zařízení, jako je disketová mechanika pro diskety s kapacitou 400 kB (používal se záznam pouze na vrchní stranu diskety), byly k dispozici i dva sériové porty. Zvuk měl tento počítač pouze monofonní osmibitový (programově řízené přehrávání samplů).

pc75

Obrázek 39: Word verze 1.0 vznikl právě pro Macintosh (souběžně se však vyvíjel i Microsoft Word pro DOS, který však byl koncipovaný zcela odlišně – nejednalo se o skutečný WYSIWYG ale spíše o obdobu WordPerfectu).

17. Pracovní stanice Sun-1

Jednou z prvních komerčně nabízených a prodávaných pracovních stanic podporujících plnohodnotný grafický výstup na monitoru, byl počítač nazvaný Sun-1 z roku 1982. Jednalo se o počítač určený pro práci v UNIXu, který se v obvyklé (základní) konfiguraci skládal z takzvané procesorové desky (Sun Processor Board). Byla to karta propojená s ostatními částmi počítače přes sběrnici; tato karta obsahovala operační paměť s kapacitou 256 kB, mikroprocesor Motorola 68000 nebo Motorola 68010 taktovaný na 10 MHz a obvody zajišťujícími ochranu operační paměti (ty 68000 neobsahovala). Kapacitu operační paměti bylo možné zvýšit přidáním dalších rozšiřujících karet na 512 kB nebo dokonce na celý jeden megabajt. Druhou částí počítače byl grafický subsystém implementovaný na zvláštní kartě a třetí částí síťové rozhraní Ethernet implementované taktéž na zvláštní kartě (síťové rozhraní a jeho plnohodnotná podpora operačním systémem ostatně představovalo jeden z velmi důležitých prvků, který odlišoval pracovní stanice od osobních počítačů).

Obrázek 40: Pracovní stanice Sun-1.

Pro pracovní stanice Sun-1 byla vyvinuta vlastní varianta Unixu. V roce 1982, tj. v době, kdy začal být tento počítač prodáván, se k němu dodával Sun UNIX 0.7 odvozený od UniSoft UNIXu verze 7. Ovšem po poměrně krátkém čase se přešlo na SunOS 1.0 založený na BSD 4.1. SunOS byl zpočátku nabízen právě pod tímto jménem, teprve později se přešlo, především z marketingových důvodů, k pojmenování Solaris (původní jméno však na některých místech systému zůstalo zachováno). Systém byl doplněn o grafické uživatelské rozhraní. Zpočátku se jednalo o systémy SunTools (SunView) a NeWS, který se však i přes některé své technické přednosti nakonec neujal.

Obrázek 41: Moduly pracovní stanice Sun-1.
Zdroj: The SUN Workstation Architecture, Technical Report No. 229

Již při popisu programátorského modelu m68k jsme si řekli, že původní mikroprocesor Motorola 68000 neobsahoval modul pro ochranu (řízení přístupu do) operační paměti ani pro podporu paměti virtuální, což je ovšem důležitá součást systémů, na nichž má být současně provozován větší počet úloh (k Sun-1 bylo dokonce možné připojit terminály pomocí sériového portu, samotný operační systém umožňoval současnou práci několika uživatelů současně). Z tohoto důvodu firma Sun Microsystems vytvořila vlastní řídicí modul, který tuto činnost zajišťoval. Sice je pravda, že existoval podobný obvod nesoucí číselné označení 68451 z dílny Motoroly, ten však nebyl příliš oblíbený, protože v některých případech zpomaloval přístup do paměti. Modul firmy Sun zajišťoval jak stránkování paměti, tak i její ochranu před neoprávněným přepsáním. Všechny adresy, které generoval procesor, byly tímto modulem pomocí dvojice mapovacích tabulek nazvaných Segment Map a Page Map převáděny na adresy fyzické.

Obrázek 42: Procesorová deska počítače Sun-1.

Celý rozsah operační paměti byl zmíněným řídicím modulem rozdělen na stránky o velikosti 2 kB a na vyšší úrovni na segmenty, z nichž každý měl velikost 32 kB. U každého segmentu se pomocí čtyř bitů nastavoval režim přístupu do paměti – povolení čtení, povolení zápisu, superuživatelský režim atd. Maximální počet stránek byl roven 1024, což odpovídá dvěma adresovatelným megabajtům (1024×2048 bajtů), ale díky stránkování bylo možné adresovat až 8 MB (23 bitů adresy). Důležitým prvkem celého systému byl čtyřbitový context registr, který, poněkud zjednodušeně řečeno, obsahoval identifikátor aktuálně běžícího procesu. Tento registr bylo možné měnit jen jádrem operačního systému. Pokud se každému procesu přidělila stejná paměť (to je samozřejmě možné, jak na úrovni mapy segmentů, tak i mapy stránek), bylo možné zajistit komunikaci procesů pomocí sdílené paměti.

Nedílnou součástí pracovní stanice Sun-1 byl grafický subsystém umístěný na samostatné desce plošných spojů, jehož ústředním prvkem byl framebuffer (grafická paměť) umožňující uložení bitmapy s rozlišením 1024×1024 pixelů a taktéž modul nazvaný RasterOp, který dokázal provádět některé základní operace nad rastrovým obrazem, včetně blokového přenosu dat (podobnost s minule popsanou operací BitBLT není náhodná). Vraťme se však k framebufferu. Ten byl poněkud zvláštní kvůli dvěma vlastnostem. První vlastností bylo to, že z uložené bitmapy o rozlišení 1024×1024 pixelů se na monitoru ve skutečnosti zobrazovala pouze oblast o velikosti 1024×800 pixelů, popř. 800×1024 pixelů, podle aktuálně nastavené orientace monitoru (již v předchozích dvou dílech tohoto seriálu jsme se dozvěděli, že monitor postavený na výšku v žádném případě není žádný moderní vynález, ale věc používaná takřka od vynálezu GUI).

Obrázek 43: Deska obsahující grafický subsystém počítače Sun-1. Na pravé straně jsou patrné konektory pro přivedení všech důležitých signálů do monitoru.

Zbylý obdélník o velikosti 1024×224, popř. 224×1024 pixelů se využíval pro uložení bitových map znaků, kurzorů, ikon i dalších grafických symbolů, ale i pro meziuložení obdélníkových částí oken při jejich posuvu na obrazovce. Druhou zvláštností framebufferu je to, že byl implementován pomocí dvoubránové (dvouportové) paměti, přičemž první brána byla použita pro přístup mikroprocesoru k framebufferu (včetně obnovy obsahu DRAM) a brána druhá pro výstup grafické informace. Použití dvoubránových pamětí je sice dražší řešení (zejména v současnosti), ovšem technologicky mnohem jednodušší a rychlejší než řešení, kdy se musí mikroprocesor, obvod obnovující obsah DRAM a generátor video signálu dělit o jedinou adresovou a datovou sběrnici framebufferu.

Obrázek 44: Rozdělení framebufferu na viditelnou a neviditelnou oblast.
Zdroj: The SUN Workstation Architecture, Technical Report No. 229

18. Sega Mega Drive

Čipy Motorola řady 68000 nalezneme i v herních konzolích, především pak v Sega Mega Drive. Tuto konzoli vydala v roce 1988 společnost Sega; v některých regionech i pod jménem Sega Genesis. Jednalo se o konzoli vybavenou (jak jinak!) slavným mikroprocesorem Motorola 68000 (hodinová frekvence přibližně 7,6 MHz) a i z tohoto důvodu se herní konzole Sega Mega Drive začala v reklamách prezentovat jako skutečná „šestnáctibitová konzole“, čímž bylo skrytě a někdy i méně skrytě naznačeno, že starší herní konzole (samozřejmě především konkurenční NES) jsou již technologicky zaostalé. A právě kvůli tomuto neustálému zdůrazňování 16bitového hardware herní konzole Sega Mega Drive se začíná mluvit o „bit wars“, protože konkurenční firma Nintendo na tuto výzvu zareagovala v roce 1990 vydáním zcela nové herní konzole SNES (Super NES), jenž byla taktéž vybavena šestnáctibitovým mikroprocesorem.

Obrázek 45: Sonic the Hedgehog – design druhého herního světa.

Jak jsme si již řekli v předchozím odstavci, byla herní konzole Sega Mega Drive postavena na bázi populárního a ve své době i velmi výkonného mikroprocesoru Motorola 68000 (přesněji řečeno se jednalo o variantu vyráběnou společností Hitachi), který v Sega Mega Drive/Genesis používal hodinovou frekvenci buď 7,67 MHz (konzole určené pro připojení k televizorům NTSC), popř. 7,61 MHz (pro televizory pracující v normě PAL). Použití mikroprocesoru Motorola 68000 byl z mnoha hledisek velmi šikovný tah, protože se jednalo o výkonný mikroprocesor a navíc s ním již programátoři měli mnoho zkušeností – k dispozici byly jak různé assemblery, tak i několik překladačů jazyka C (sice to nemusí být na první pohled patrné, ale pro výrobce herních konzolí je důležité, aby společně s konzolí začalo být dodáváno co nejvíce kvalitních her – ostatně jeden z důvodů neúspěchu konzolí Atari 5200 a Atari 7800 byl nedostatek kvalitních titulů).

Obrázek 45: Díky existenci výkonných čipů 80386, 80486DX a Motorola 68030/68040 již bylo možné vytvářet hry, v nichž se vykreslovala prostorová scéna programově. Na tomto screenshotu pravděpodobně většina čtenářů pozná slavný Doom, který bylo možné provozovat i na počítači s mikroprocesorem AMD 80386 40MHz (v některých případech se však vykreslování na takto výkonném počítači výrazně zpomalilo, například v závěrečné úrovni hry Doom 2).

Zajímavý byl i zvukový a grafický subsystém této herní konzole. Grafický subsystém podporoval barvovou paletu s 512 barvami, horizontální rozlišení generovaného obrazu mohlo dosahovat 256, resp. 320 pixelů a vertikální rozlišení obrazu pak 224 či 240 obrazových řádek (240 obrazových řádek bylo podporováno pouze na televizorech pracujících v normě PAL). Samozřejmě bylo přímo v čipu podporováno i zobrazení spritů, kterých mohlo být současně použito až osmdesát. Univerzálnější byl zvukový subsystém, protože ten byl představován dvojicí navzájem spolupracujících čipů. Jednalo se o čipy Yamaha YM2612 FM a dále pak o čip Texas Instruments SN76489 PSG. Díky čipu YM2612 mohli hudebníci využívat šestikanálovou FM syntézu, přičemž každý kanál využíval čtyři operátory, čip SN76489 se pak používal pro přehrávání zvuků ve hře, popř. pro samplované nástroje.

Obrázek 46: Ukázka možností původního grafického řadiče: úvodní obrazovka hry Black Onyx.

19. Podpůrná role v Atari Jaguaru a Sega Saturn

Mezi další herní konzole postavené primárně na čipu Motorola řady 68k patří samozřejmě Commodore CDTV postavená na výše zmíněné a velmi úspěšné Amize 500. Ovšem m68k nalezneme i v dalších konzolích, především v Atari Jaguaru a konzoli Sega Saturn. Zde ovšem – alespoň podle originálního návrhu – měla m68k pouze vedlejší roli.

Obrázek 47: Atari Jaguar byla (podle použité matematiky :-) 64bitová konzole.

Nejzajímavější jsou na herní konzoli Atari Jaguar použité čipy i způsob jejich vzájemného propojení a komunikace. Veškeré funkce totiž byly soustředěny do tří čipů, z nichž dva (nazývané „Tom“ a „Jerry“) byly vyvinuty přímo pro potřeby Jaguaru, zatímco třetím čipem byl klasický a lety ověřený mikroprocesor Motorola 68000, který však původně v této konzoli měl plnit spíše pomocnou roli (což se však ve skutečnosti nestalo, protože mnozí vývojáři právě na tomto CPU prováděli převážnou část výpočtů). Čipy Tom a Jerry obsahovaly architektonicky prakticky shodné 32bitové RISCové procesory, které se však využívaly k odlišným operacím: procesor na čipu Tom se staral o zobrazování grafiky, zatímco procesor na čipu Jerry byl využíván pro zvuky a hudbu. Tom navíc obsahoval dva další moduly: 64bitový Objektový procesor (Object Processor) a taktéž 64bitový blitter. Zajímavé je, že jednotlivé čipy používaly odlišný endianess, tj. způsob uložení bajtů v 32bitových a 64bitových slovech.

Nejdůležitější vlastnosti všech tří čipů tvořících základ herní konzole Atari Jaguar jsou vypsány v následujících třech tabulkách:

Čip Frekvence Poznámka
Tom 26,591 MHz video procesor
Jerry 26,591 MHz zvukový subsystém (DSP, FM+AM syntéza)
M68000 13,296 MHz použitý mj. i pro bootstrap celého systému
Moduly čipu Tom Popis
GPU 32-bitový Grafický procesor (GPU) (32bit RISC architektura)
OP 64-bitový Objektový procesor 64bit RISC, generování grafiky, podpora až 24bitů RGB
Blitter 64-bitový Blitter, mohl realizovat z-buffering, Gouraudovo stínování
Moduly čipu Jerry Popis
DSP RISC 32bit, stejný jako jádro GPU
  16bitový stereo výstup (tj. CD kvalita)
  FM syntéza, AM syntéza, wavetable syntéza
  (jednotlivé tvary vln pro FM a AM syntézu jsou uloženy v paměti: sinus, pila, …

Z předchozího popisu je zřejmé, že se tvorba her na konzoli Atari Jaguar dosti podstatným způsobem odlišovala od způsobu tvorby her na osobních počítačích či na dalších herních konzolích. Základem bylo vybudování object listu, tj. seznamu vykreslovaných rastrových obrázků (spritů). Při jejich vzájemné kombinaci a tvorbě mohl být použit blitter a (alespoň teoreticky) měly být veškeré tyto operace řízeny přímo RISC procesorem umístěným na čipu Tom, zatímco nezávisle na jeho práci se měly čipem Jerry generovat zvuky a hudba. Při tvorbě 3D her se měl – podle původního návrhu – na generování grafiky podílet především blitter, a to díky podpoře Gouraudova stínování a Z-bufferu. Ovšem samotné rozložení trojúhelníků na obrazové řádky, zajištění zdrojové textury atd. museli vývojáři provádět ručně, takže se nedá říci, že by čip Tom zahrnoval všechny funkce grafického akcelerátoru.

Mikroprocesor Motorola 68000, jímž se dnes zabýváme primárně, měl provádět spíše koordinační činnost (staral se taktéž o bootstrap celého systému), ovšem u mnoha her se (později, reverse engineeringem :-) zjistilo, že mnoho operací bylo prováděno právě na M68000 a nikoli na k tomu určené dvojici RISC procesorů (pro vývojáře se jednalo o nejjednodušší řešení, protože s M68000 měli již mnoho zkušeností, vývojové nástroje atd.). To se samozřejmě projevilo na nižším výkonu her, než by se mohlo při pohledu na technickou specifikaci Atari Jaguaru očekávat. Je to škoda, protože možnosti Jaguaru nebyly prakticky nikdy plně využity a až po mnoha letech (například při konverzi slavné hry Another World) se ukázalo, jaké možnosti Atari Jaguar vývojářům a hráčům ve skutečnosti nabízel.

Podobný koncept byl využit i v konzoli Sega Saturn. I v této herní konzoli totiž nalezneme větší množství čipů, jejichž jména a základní funkce jsou vypsány v následující tabulce:

Diners Vánoce 2019

# Čip Plné jméno Funkce
1 SH-2 Hitachi SuperH-2 dvojice RISCových mikroprocesorů
2 SCU System Control Unit řízení sběrnic a koordinace ostatních čipů, centrální jednotka konzole
3 SMPC System Manager and Peripheral Control řízení RESETu, přepínání horizontálního rozlišení, čtení stavu ovladačů
4 SCSP Saturn Custom Sound Processor zvukový čip (Yamaha YMF292)
5 VDP1 Video Display Processor 1 první část grafického subsystému
6 VDP2 Video Display Processor 2 druhá část grafického subsystému
7 MC68E000 Motorola MC68E000 řízení zvukového čipu SCSP
8 DSP DSP MC68E000 řízen CPU, může provádět různé funkce (nejde o samostatný čip, ale o modul)

Vidíme, že zde čipům řady m68k (dokonce dvěma) připadla skutečně spíše podřadnější role.

Obrázek 48: Blokové schéma herní konzole Sega Saturn.

20. Odkazy na Internetu

  1. Motorola 68000 microprocessor family
    http://www.cpu-world.com/CPUs/68000/
  2. GCC 11 Compiler Could End Up Removing Support For The Motorola m68k, Other Old CPUs
    https://www.phoronix.com/scan­.php?page=news_item&px=GCC-11-Dropping-CC0
  3. Zprávička: GCC 11 patrně odstraní podporu Motorola 68k a dalších
    https://www.root.cz/zpravicky/gcc-11-patrne-odstrani-podporu-motorola-68k-a-dalsich/
  4. GCC, the GNU Compiler Collection
    https://gcc.gnu.org/
  5. Mikroprogramové řadiče a mikroprogramování
    https://www.root.cz/clanky/mi­kroprogramove-radice-a-mikroprogramovani/
  6. Vývoj mikroprogramových řadičů: od mainframu EDSAC k moderním mikroprocesorům
    https://www.root.cz/clanky/vyvoj-mikroprogramovych-radicu-od-mainframu-edsac-k-modernim-mikroprocesorum/
  7. Wikipedia: Motorola 68HC05
    http://en.wikipedia.org/wi­ki/Motorola_68HC05
  8. Wikipedia: Freescale 68HC08
    http://en.wikipedia.org/wiki/68HC08
  9. Wikipedia: Freescale 68HC11
    http://en.wikipedia.org/wiki/68HC11
  10. Wikipedia: Freescale 68HC12
    http://en.wikipedia.org/wi­ki/Freescale_68HC12
  11. HC05 Processor Families
    http://www.freescale.com/we­bapp/sps/site/overview.jsp?no­deId=01624684498633
  12. HC08 Processor Families
    http://www.freescale.com/we­bapp/sps/site/overview.jsp?no­deId=01624684497663
  13. Digital Core Design 68HC08 – HDL IP Core
    http://www.dcd.pl/acore.php?idcore=82
  14. Freescale 68HC11
    http://www.freescale.com/we­bapp/sps/site/taxonomy.jsp?no­deId=01624684498635
  15. Lifecycle of a CPU:
    http://www.cpushack.net/life-cycle-of-cpu.html
  16. Most wanted CPU of the world:
    http://www.cpu-galaxy.at/CPU/Intel%20CPU/3002–8008/4004%20Grey.jpg
  17. Motorola 68000 series
    https://en.wikipedia.org/wi­ki/Motorola_68000_series
  18. 68000 Assembly (Wikibooks)
    https://en.wikibooks.org/wi­ki/68000_Assembly
  19. The 68000's Instruction Set
    http://wpage.unina.it/rca­nonic/didattica/ce1/docs/68000­.pdf
  20. 68000 TRICKS AND TRAPS
    http://www.easy68k.com/pau­lrsm/doc/trick68k.htm
  21. EASy68K Home Page
    http://www.easy68k.com/index.html
  22. Learn Multi platform 68000 Assembly Programming… By Magic!
    https://www.chibiakumas.com/68000/
  23. A Small MC68008 Computer System
    http://wandel.ca/homepage/mc68008/in­dex.html
  24. Motorola 68000 Instruction Set
    https://digilander.libero­.it/rosario.cerbone/Asim/68000ref­.htm
  25. Atari ST
    http://en.wikipedia.org/wiki/Atari_st
  26. Atari Museum
    http://www.atarimuseum.com/
  27. Atari ST and TT
    http://www.atarimuseum.com/com­puters/16BITS/a1632bit.html
  28. The ST Computer Line
    http://www.atarimuseum.com/com­puters/16bits/stmenu/ataris­t.htm
  29. Atari MEGA STE
    http://en.wikipedia.org/wi­ki/Atari_MEGA_STE
  30. Blitter
    http://en.wikipedia.org/wiki/Blitter
  31. Dobová dokumentace ke stanici Sun-1
    http://www.bitsavers.org/pdf/sun/sun1/
  32. Obrázky Sun-1, manuálů a základních desek
    http://www.solivant.com/sun100/
  33. SUN display (computer museum)
    http://infolab.stanford.e­du/pub/voy/museum/pictures/dis­play/SUN.htm
  34. Sun-1
    http://en.wikipedia.org/wiki/Sun-1
  35. Online Sun Information ArcHive – Sun-1
    http://www.sunstuff.org/har­dware/systems/sun1/Sun-1/
  36. Custom Chips: Paula
    http://www.amiga-hardware.com/…hardware.cgi?…
  37. Big Book of Amiga Hardware
    http://www.amiga-resistance.info/bboahfaq/
  38. Amiga Hardware Database
    http://amiga.resource.cx/
  39. ExoticA
    http://www.exotica.org.uk/wi­ki/Main_Page
  40. Jaguar Sector – II
    http://www.jaguarsector.com/index.php
  41. Atari Age: Atari Jaguar History
    http://www.atariage.com/Ja­guar/history.html
  42. Jaguar
    http://www.giantbomb.com/jaguar/3045–28/
  43. Consoles that won't die: The Atari Jaguar
    http://venturebeat.com/2013/04/25/con­soles-that-wont-die-atari-jaguar/
  44. Atari Jaguar and Atari Jaguar CD
    http://videogamecritic.com/ja­guarinfo.htm
  45. Atari Jaguar Documentation (Forum)
    http://www.jaguarsector.com/in­dex.php?showforum=65
  46. Atari Jaguar Programming (Forum)
    http://www.jaguarsector.com/in­dex.php?showforum=63
  47. The Jaguar Underground Documentation
    http://justclaws.atari.or­g/devcats/dox/dox.htm