MC68000
Tavaly volt húsz éves a Motorola MC68000-es. Bár a Villanykarra járók közül is csak kevesen ismerik (sokaknak a Motoroláról csak a mobiltelefon jut az eszébe), mégis érdemes megemlékezni erről a remekműről. Ez a processzor működik például az Amigákban, Macintoshokban, Atarikban, de még manapság is beépítik beágyazott rendszerekbe.
1979-ben jelent meg, alig egy évvel később, mint riválisa, az i8086. Tervezőmérnökei nem zsugoriskodtak a tokozással, szép nagy, 64 lábú DIP tokba helyezték a 68000 darab tranzisztort tartalmazó lapkát. Ez lehetővé tette, hogy – akkoriban egyedülálló módon – külön cím- és adatbusszal rendelkezzen (bár ez növelte az árát is).
A processzor maga 16 bites, azonban a szorzáson és az osztáson kívül minden műveletet képes 32 biten végezni. Ezenfelül biteken, 4 bites BCD számokon, byte-okon és 16 bites word-ökön tud manipulálni.
A tervezők a regiszterekkel sem fukarkodtak: 8 darab adat-, 8 darab cím-, egy 16 bites flag- és egy 32 bites programszámláló-regisztere van (ez utóbbi csak az alsó 24 bitet használja, de így is 16 Mbyte megcímzésére alkalmas!). A flagregiszter a hagyományos N (negative), Z (zero),
C (carry) és V (overflow) flageken kívül tartalmaz egy X (extended, hosszú számok összeadásánál jön jól), egy T (trace, nyomkövetés) és egy S (supervisor, ez jelzi, hogy user vagy supervisor módban fut a processzor) flaget. Itt foglal helyet még az interrupt maszk is, amelynek segítségével a processzor 8 interrupt szintet különböztet meg.
A megszokott címzési módokon kívül lehetőségünk van programszámláló-relatív, posztinkrementáló és predekrementáló címzésre. Az előbbi relokálható programok írásakor hasznos, az utóbbiak pedig stack- és sztringműveletekhez alkalmasak.
Az MC68000 támogatja a multitaszkos operációs rendszereket. User/supervisor működési modellel, trapekkel (pl. érvénytelen utasítás) valamint "test and set" (TAS) szemaforkezelő utasítással.
A magasszintű programnyelvek is támogatást kaptak. A veremben helyet lehet foglalni lokális változóknak (LINK, UNLK) és egyetlen utasítással (Scc, ahol cc a feltétel) logikai értéket állíthatunk be egy regiszternek.
Végezetül lássuk, mennyivel jobb az akkori riválisnál, az i8086-nál! Kétszer annyi, kétszer akkora egyenrangú regiszter, bitmanipuláló utasítások, feltételes szubrutinhívás, hosszú egészek, multitaszk és magas szintű nyelvek támogatása, 8 szintű interrupt rendszer, 16-szor akkora címtér szegmensek nélkül. Aztán olyan apróságok, hogy: a flagek egyértelműen állnak be; a túlcsordulást osztásnál is az overflow bit jelzi, nem trap stb. Lehetne még folytatni.
Hogy ennek ellenére miért nem ez a processzorcsalád terjedt el jobban? Ki tudja. Biztosan rossz volt a marketing...
És még valami: itt az egyetemen csak annyit mondanak róla, hogy 1979-ben készült. Szomorú.
M