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 % henkilökohtaisten tietokoneiden markkinoista ja Motorolalla oli 90 % 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.
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.
Kotitietokoneissa prosessoria käytettiin 1980-luvun alkupuolelta lähtien:
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.