Motorola 68000 -sarja

**Motorola 68000** (*MC68000*, *m68k*, *68k*) on Motorolan valmistama mikroprosessorisarja, joka julkistettiin vuonna 1979. Se oli aikanaan suosittu suoritin.
Nimitystä 68000 käytetään sekä sarjan ensimmäisestä mallista että myös koko sarjasta ja sen toteuttamasta CISC-suoritinarkkitehtuurista.

Saman mallisarjan suorittimia ovat 68000, 68010, 68020, 68030, 68040, 68060 eri muunnoksineen. Prosessoreista on halvempia malleja käyttöön muun muassa sulautetuissa järjestelmissä.

Prosessoria käytettiin useissa Unix-työasemissa, muun muassa Sun Microsystemsin varhaisissa malleissa, Hewlett-Packardin HP 9000 -sarjassa, Silicon Graphicsin IRIS 1000 ja IRIS 2000 -sarjoissa, NeXTin NeXT Computer -tietokoneissa sekä Digital Equipment Corporationin VAXstation 100 -terminaalissa.
Kotitietokoneissa sitä käytettiin muun muassa Commodore Amiga, Atari ST, Apple Macintosh ja Sinclair  QL -tietokoneissa. 

1980-luvulla markkinoiden kaksi suurinta mikroprosessorivalmistajaa olivat Intel ja Motorola: Intelillä oli hallussaan 90&nbsp;% henkilökohtaisten tietokoneiden markkinoista ja Motorolalla oli 90&nbsp;% työasemamarkkinoista. Prosessori oli teknisesti parempi kuin kilpailevat Intel 8088 ja TMS9900 ja Motorolan prosessorilla oli merkittäviä etuja, mutta esimerkiksi IBM valitsi Intelin prosessorin koska se oli jo tuotannossa kun sille oli tarvetta.

Ensimmäinen 68000-malli on sisäisesti 32-bittinen, jossa on 16-bittinen ulkoinen dataväylä ja 24-bittinen ulkoinen osoiteväylä. Myöhemmät saman sarjan mallit ovat myös ulkoisesti 32-bittisiä alkaen Motorola 68020-mallista. Motorola valmisti erillisiä liukulukulaskentaan tarkoitettuja matematiikkasuorittimia 68881 ja 68882, joita voitiin käyttää 68020:n ja 68030:n rinnalla. 68040 ja 68060 sisälsivät integroidun matematiikkasuorittimen.

Motorola päätti rikkoa yhteensopivuuden aiempaan Motorola 6800 -sarjaan kehittäessään 68000:n. Eduiksi on sanottu yksinkertaisuutta ja *ortogonaalisuutta*, joiden myötä assemblyn opettelu tuli yksinkertaiseksi.
Sarjan suorittimia valmistetaan vielä 2020-luvulla.

## Prosessoriperheen mallit
* Ensimmäinen sukupolvi (sisäisesti 32-bittinen, ulkoinen väylä riippuu mallista):
** Motorola 68000, 32-bittiset rekisterit, 16-bittinen dataväylä ja 24-bittinen osoiteväylä
** Motorola 68EC000, valinnainen 8- tai 16-bittinen dataväylä
** Motorola 68HC000, alhaisen virrankäytön HCMOS-versio
** Motorola 68HC001, alhaisen virrankäytön HCMOS-versio, valinnainen 8- tai 16-bittinen ulkoinen dataväylä
** Motorola 68008, 8-bittinen dataväylä ja 20- tai 22-bittinen osoiteväylä
** Motorola 68010, 16-bittinen dataväylä ja 24-bittinen osoiteväylä
** Motorola 68012, moniprosessoriversio 68010:stä, 31-bittinen osoiteväylä
* Toinen sukupolvi (täysin 32-bittinen)
** Motorola 68020
** Motorola 68EC020, 24-bittinen osoiteväylä
** Motorola 68030
** Motorola 68EC030, ei integroitua muistinhallintayksikköä (MMU)
* Kolmas sukupolvi (liukuhihna)
** Motorola 68040
** Motorola 68EC040, ei integroitua matematiikkasuoritinta (FPU) ja muistinhallintayksikköä (MMU)
** Motorola 68LC040, ei integroitua matematiikkasuoritinta (FPU)
* Neljäs sukupolvi (superskalaarinen suoritin)
** Motorola 68060
** Motorola 68EC060, ei integroitua matematiikkasuoritinta (FPU) ja muistinhallintayksikköä (MMU)
** Motorola 68LC060, ei integroitua matematiikkasuoritinta (FPU)
* Muita
** Motorola 68300 -mikrokontrollerit (käyttävät samaa ydintä)
** Freescale ColdFire, assembly-tasolla yhteensopiva suoritinsarja

## Käyttökohteet

68000-sarjaa käytettiin aluksi kalliissa järjestelmissä, kuten monenkäyttäjän mikroissa ja yhden käyttäjän työasemissa.
* Sun Microsystemsin mallit Sun 1:stä Sun 3:een
* Hewlett-Packard HP 9000 -sarjassa
* Silicon Graphicsin SGI IRIS 1000, 2000 ja 3000 -sarjoissa 
* Digital Equipment Corporationin VAXstation 100 -terminaalissa
* Apollo Computerin Apollo/Domain -työasemissa
* NeXTin NeXT Computer -työasemissa
* Fujitsun FACOM G-100 -sarjan työasemissa
* Hitachin 3050-sarjan työasemissa
* NECin EWS4800-työasemissa
* Mitsubishi Electric ME1000-työasemissa

Kotitietokoneissa prosessoria käytettiin 1980-luvun alkupuolelta lähtien:
* Apple Lisa 
* Apple Macintosh 
* Commodore Amiga
* Atari ST
* Atari Falcon
* CST Thor
* Sharp X68000 
* Sinclair QL

Suoritinta käytettiin 1980- ja 1990-luvuilla useissa kolikkopelijärjestelmissä ja pelikonsoleissa kuten Sega Megadrive ja Neo-Geo. Kuuluisassa Segan *[[Out Run]]* -autopelissä (1986) oli kaksi M68k-prosessoria, joista toinen huolehti vain objektien skaalauksesta etäisyyden mukaan. Jotkut uudemmat konsolit kuten Sega Saturn ja Atari Jaguar käyttivät 68000:ta vielä apusuorittimena. Texas Instruments käytti 68000:aa TI-89 ja TI-92 laskimissaan.

68000-sarjaa käytettiin myös ohjaustehtävissä sulautetuissa järjestelmissä. Lasertulostimissa sitä käytettiin ohjaimena ensimmäistä kertaa jo vuonna 1981, läpi 1980-luvun yleisesti ja vielä pitkälle 1990-luvulla halvoissa malleissa. Sitä käytettiin ja käytetään edelleen paljon myös teollisuusjärjestelmissä ja ohjelmoitavissa logiikoissa.

Sarjan muistinhallintayksiköllä (MMU) varustettuja suorittimia 68030 ja 68040 käytettiin useissa Unix-työasemissa.

Suoritinarkkitehtuurin epäviralliseksi seuraajaksi tuli Applen, IBM:n ja Motorolan suunnittelema PowerPC, johon aiemmin m68k -suorittimia käyttänyt Applen Macintosh siirtyi vuonna 1994. Sitä käytetään myös useissa Amigan turbokorteissa.

## Arkkitehtuuri ja käskykannan ominaisuuksia
Arkkitehtuurissa on kahdeksan 32-bittistä datarekisteriä ja kahdeksan 32-bittistä osoiterekisteriä. Datarekistereillä ei ole erityiskäyttöjä vaan ne ovat ohjelmoijan vapaasti käytettävissä lähteenä tai kohteena tavun (8-bit), sanan (16-bit) tai tuplasanan (32-bit) mitoissa. Osoiterekistereitä voi käsitellä 16- tai 32-bittisillä arvoilla. Osoiterekistereistä vain A7 on erityinen ja sitä käytetään pino-osoittimena.

32-bittiset osoiterekisterit mahdollistivat suuren muistimäärän suoran osoittamisen ilman segmentointeja, jolloin muistia pystyi osoittamaan suoraan. Kilpaileva x86 tarvitsi segmentointia yli 64 kilotavun käyttämiseen. Ensimmäisissä 68k-suorittimissa oli vain 24-bittinen ulkoinen osoiteväylä, ja muistiosoitteen kahdeksan ylintä bittiä olivat merkityksettömiä. Tämä johdosta jotkut ohjelmoijat käyttivät osoiterekisterien ylimpiä kahdeksaa bittiä ylimääräisen datan säilömiseen suorittimen käskykannan määrittelyn vastaisesti. Näin laaditut ohjelmat eivät enää toimineet suorittimien uudempien mallien kanssa, joissa oli leveämpi ulkoinen osoiteväylä tai virtuaalimuistia.
Näihin ohjelmiin kuului esimerkiksi Microsoftin kehittämä AmigaBASIC, joka ei toiminut enää AmigaOS 2.0:n alla.

Käskykanta on melko ortogonaalinen, eli siinä ei ole suuremmalti rajoituksia siinä, mitä rekisterejä pystyy käyttämään minkäkin käskyn yhteydessä, paitsi että osa käskyistä operoi vain datarekistereillä, osa vain osoiterekistereillä.
M68k:n käskykanta on muutenkin melko johdonmukainen ja siten assembly-kieleksi helppoa ohjelmoida, ja ohjelmoijat pitivät sille ohjelmoimisesta, mitä ei voinut sanoa kilpailevasta x86-arkkitehtuurista. Suuresta rekisterimäärästä ja käskykannan ortogonaalisuudesta johtuen konekieli vei enemmän tilaa kuin kilpailevan x86:n konekieli.

Motorola 68000 -sarjassa on *supervisor*-tila käyttöjärjestelmä ytimen suorittamista varten. Muut ohjelmat suoritetaan käyttäjätilassa. *Supervisor*-tilassa pino-osoitin A7-rekisterissä vaihtuu ja käytössä on toinen tilarekisteri. Käytössä on myös etuoikeutettuja käskyjä, jotka operoivat tilarekisterillä.
Prosessorin kaksi suoritustilaa vastaavat hyvin Unixin jakoa käyttäjän ja ytimen suoritustiloihin.

## Katso myös

* Motorola 68300, 68000-sarjan ydin

## Lähteet

## Kirjallisuutta
*Queyssac, Daniel: Mikrotietokoneet, perusteet, 1.  Infopress. 
*Parkkari, Vesa; Harju, Raimo: Mikrotietokoneet, EURO-6 käsikirja, 2.  Infopress. 
*Parkkari, Vesa: Mikrotietokoneet, Ohjelmointi, 3.  Infopress. 

## Aiheesta muualla