Motorola 68000 -serien - Motorola 68000 series
| Designer | Motorola |
|---|---|
| Bider | 32-bit |
| Introduceret | 1979 |
| Design | CISC |
| Forgrening | Tilstandskode |
| Uendelighed | Stor |
| Registre | |
De Motorola 68000-serien (også kendt som 680x0 , m68000 , m68k , eller 68k ) er en familie af 32-bit CISC (CISC) mikroprocessorer . I løbet af 1980'erne og begyndelsen af 1990'erne, var de populære i personlige computere og arbejdsstationer og var de primære konkurrenter Intel 's x86 mikroprocessorer. De var bedst kendt som de processorer, der blev brugt i den tidlige Apple Macintosh , Sharp X68000 , Commodore Amiga , Sinclair QL , Atari ST , Sega Genesis (Mega Drive), Capcom System I (Arcade), AT&T UnixPC , Tandy Model 16/16B/6000 , Sun Microsystems Sun-1 , Sun-2 og Sun-3 , NeXT-computeren , Texas Instruments TI-89 / TI-92- lommeregnere, Palm Pilot (alle modeller, der kører Palm OS 4 .x eller tidligere) og rumfærgen . Selvom ingen moderne stationære computere er baseret på processorer i 680x0 -serien, bruges deriverede processorer stadig meget i integrerede systemer .
Motorola ophørte med udviklingen af arkitekturen i 680x0 -serien i 1994 og erstattede den med PowerPC RISC -arkitekturen, som blev udviklet sammen med IBM og Apple Computer som en del af AIM -alliancen .
Familie medlemmer
- Generation en (internt 16/32-bit og produceret med 8- , 16- og 32-bit grænseflader)
- Generation to (internt fuldt ud 32-bit)
- Generation tre ( pipelined )
- Generation fire ( superscalar )
- Andre
- Freescale 683XX (CPU32 aka 68330, 68360 aka QUICC )
- Freescale ColdFire
- Freescale DragonBall
- Philips 68070
Forbedringshistorie
68010 :
- Understøttelse af virtuel hukommelse (genstartbare instruktioner)
- 'loop mode' til hurtigere streng- og hukommelsesbibliotekets primitiver
- multiplicere instruktion bruger 14 ur ticks mindre
68020 :
- 32-bit adresse og aritmetisk logisk enhed (ALU)
- Tretrins rørledning
- Instruktion cache på 256 bytes
- Ubegrænset data- og ordadgang til data (se justering )
- 8 × multiprocessing evne
- Større multiplicere (32 × 32 -> 64 bit) og opdele (64 ÷ 32 -> 32 bit kvotient og 32 bit rest) instruktioner og bitfelt manipulationer
- Adresseringstilstande tilføjede skaleret indeksering og et andet niveau af indirekte
- Lav pris, EC = 24-bit adresse
68030 :
- Opdel instruktion og datacache på 256 bytes hver
- On-chip hukommelsesstyringsenhed (MMU) (68851)
- Lavpris EC = Ingen MMU
- Burst Memory Interface
68040 :
- Instruktion og datacaches på hver 4 KB
- Seks -trins rørledning
- On-chip floating-point-enhed (FPU)
- FPU mangler IEEE transcendental funktion evne
- FPU -emulering fungerer med 2E71M og senere chiprevisioner
- Lavpris LC = Ingen FPU
- Lavpris EC = Ingen FPU eller MMU
68060 :
- Instruktion og datacacher på 8 KB hver
- 10 -trins rørledning
- Heltals multiplikationsenhed med to cykler
- Gren forudsigelse
- Dobbelt instruktions pipeline
- Instruktioner i adressegenereringsenheden (AGU) og derved levere resultatet to cyklusser før ALU
- Lavpris LC = Ingen FPU
- Lavpris EC = Ingen FPU eller MMU
Funktionskort
| År | CPU | Pakke | Frekvens (maks.) [I MHz] | Adresse bus bits | MMU | FPU |
|---|---|---|---|---|---|---|
| 1979 | 68000 | 64-pin dual in-line pakke (DIP) , 68-pin LCC , 68-pin pin grid array (PGA) | 8–20 | 24 | - | - |
| 1982 | 68010 | 64-pin DIP , 68-pin PLCC , 68-pin PGA | 8–16,67 | 24 | 68451 | - |
| 1984 | 68020 | 114-benet PGA | 12,5–33,33 | 32 | 68851 | 68881 |
| - | 68 EF 020 | 100-pin Quad Flat-pakke (QFP) | 16.7–25 | 24 | - | - |
| 1987 | 68030 | 132-pin QFP (maks. 33 MHz ), 128-pin PGA | 16–50 | 32 | MMU | 68881 |
| 68 EF 030 | 132-pin QFP , 128-pin PGA | 25 | 32 | - | 68881 | |
| 1991 | 68040 | 179-benet PGA , 184-benet QFP | 20–40 | 32 | MMU | FPU |
| 68 LC 040 | PGA , 184-benet QFP | 20–33 | 32 | MMU | - | |
| 68 EF 040 | 20–33 | 32 | - | - | ||
| 1994 | 68060 | 206-benet PGA | 50–75 | 32 | MMU | FPU |
| 68 LC 060 | 206-benet PGA , 208-benet QFP | 50–75 | 32 | MMU | - | |
| 68 EF 060 | 206-benet PGA | 50–75 | 32 | - | - |
Vigtigste anvendelser
680x0-serien af processorer er blevet brugt i en række forskellige systemer, lige fra moderne avancerede Texas Instruments- lommeregnere ( TI-89 , TI-92 og Voyage 200- linjer) til alle medlemmerne af Palm Pilot- serien, der kører Palm OS 1.x til 4.x (OS 5.x er ARM -baserede), og selv strålingshærdede versioner i de kritiske kontrolsystemer rumfærge .
Imidlertid blev 680x0 CPU -familien mest kendt som processorer, der driver avancerede stationære computere og videospilkonsoller som Apple Macintosh , Commodore Amiga , Sinclair QL , Atari ST , SNK NG AES / Neo Geo CD , Atari Jaguar , Commodore CDTV og flere andre. 680x0 var også de valgte processorer i 1980'erne til Unix- arbejdsstationer og servere såsom AT & T's UNIX PC , Tandy's Model 16/16B/6000 , Sun Microsystems ' Sun-1 , Sun-2 , Sun-3 , NeXT Computer , Silicon Graphics (SGI) og mange andre. Der var en 68000 version af CP/M kaldet CP/M-68K, som oprindeligt blev foreslået at være Atari ST-operativsystemet, men Atari valgte Atari TOS i stedet. Mange systemspecifikke porte til CP/M-68K var tilgængelige, for eksempel tilbød TriSoft en port på CP/M-68K til Tandy Model 16/16B/6000.
Også, og måske mest markant, var de første flere versioner af Adobes PostScript-tolke 68000-baserede. 68000 i Apple LaserWriter og LaserWriter Plus blev klokket hurtigere end den version, der blev brugt dengang på Macintosh -computere. En hurtig 68030 i senere PostScript -tolke, herunder standardopløsningen LaserWriter IIntx, IIf og IIg (også 300 dpi), LaserWriter Pro 600 -serien med højere opløsning (normalt 600 dpi, men begrænset til 300 dpi med minimum RAM installeret) og den meget høje opløsning Linotronic billedsættere , 200PS (1500+ dpi) og 300PS (2500+ dpi). Derefter foretrak Adobe generelt en RISC til sin processor, da konkurrenterne med deres PostScript-kloner allerede var gået med RISC'er, ofte en AMD 29000-serie. De tidlige 68000 -baserede Adobe PostScript -tolke og deres hardware blev opkaldt efter kolde krig -era amerikanske raketter og missiler: Atlas, Redstone osv.
I dag er disse systemer enten end-of-line (i tilfælde af Atari) eller bruger forskellige processorer (i tilfælde af Macintosh, Amiga, Sun og SGI). Da disse platforme havde deres største markedsandel i 1980'erne, understøtter deres originale producenter enten ikke længere et operativsystem til denne hardware eller er ude af drift. Men Linux , NetBSD og OpenBSD operativsystemer omfatter stadig støtte til 68000 processorer.
De 68000 processorer blev også brugt i Sega Genesis (Mega Drive) og SNK Neo Geo -konsoller som hoved -CPU. Andre konsoller såsom Sega Saturn brugte 68000 til lydbehandling og andre I/O -opgaver, mens Atari Jaguar inkluderede en 68000, der var beregnet til grundlæggende systemkontrol og inputbehandling, men på grund af Jaguars usædvanlige sortiment af heterogene processorer var det også bruges ofte til at køre spillogik. Mange arkadebrætter brugte også 68000 processorer, herunder tavler fra Capcom, SNK og Sega.
Mikrocontrollere afledt af 68000 -familien er blevet brugt i en lang række applikationer. F.eks. Er CPU32- og ColdFire -mikrokontrollere blevet fremstillet i millionvis som bilmotorkontrollere.
Mange proprietære videoredigeringssystemer brugte 68000 processorer. I denne kategori kan vi navngive MacroSystem Casablanca, som var en sort boks med en brugervenlig grafisk grænseflade (1997). Det var tiltænkt markedet for amatører og hobbyvideografer. Det er også værd at bemærke dens tidligere, større og mere professionelle modstykke, kaldet "DraCo" (1995), Den banebrydende Quantel Paintbox- serie af tidligt baserede 24-bit maling- og effektsystem blev oprindeligt udgivet i 1981, og i løbet af sin levetid brugte den næsten hele sortimentet af 68000 familieprocessorer, med den eneste undtagelse af 68060, som aldrig blev implementeret i sit design. En anden konkurrent i videoarenaen, Abekas 8150 DVE -systemet, brugte 680EC30, og Trinity Play, senere omdøbt til Globecaster, bruger flere 68030'er. Bosch FGS-4000/4500 Video Graphics System fremstillet af Robert Bosch Corporation, senere BTS (1983), brugte en 68000 som hovedprocessor; det drev flere andre til at udføre 3D -animation i en computer, der let kunne anvende Gouraud og Phong -skygge. Det kørte et modificeret Motorola Versados -operativsystem.
Arkitektur
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Folk, der kender PDP-11 eller VAX, føler sig normalt trygge ved 68000-serien. Med undtagelse af opdelingen af generelle registre i specialiserede data- og adresseregistre er 68000-arkitekturen på mange måder en 32-bit PDP-11.
Det havde et mere ortogonalt instruktionssæt end dem for mange processorer, der kom før (f.eks. 8080) og efter (f.eks. X86). Det vil sige, at det typisk var muligt at kombinere operationer frit med operander, frem for at være begrænset til at bruge bestemte adresseringstilstande med visse instruktioner. Denne egenskab gjorde programmering relativt let for mennesker og gjorde det også lettere at skrive kodegeneratorer til kompilatorer.
De 68000-serien har otte 32-bit generelle formål data registre (D0-D7), og otte-adresse registre (A0-A7). Det sidste adresseregister er stakkepegeren , og montører accepterer etiketten SP som ækvivalent med A7.
Derudover har den et 16-bit statusregister. De øverste 8 bits er systembyte, og ændring af den er privilegeret. De nederste 8 bits er brugerbyten, også kendt som betingelseskoderegisteret (CCR), og ændring af den er ikke privilegeret. 68000 sammenlignings-, aritmetiske og logiske operationer ændrer betingelseskoder for at registrere deres resultater til brug ved senere betingede spring. Betingelseskodebitene er "nul" (Z), "bær" (C), "overløb" (V), "forlæng" (X) og "negativ" (N). "Udvid" (X) -flaget fortjener særlig omtale, fordi det er adskilt fra bæreflaget . Dette gør det muligt at adskille den ekstra bit fra aritmetiske, logiske og skiftoperationer fra bæringen for flow-of-control og kobling.
Mens 68000 havde en 'supervisor mode', opfyldte den ikke Popek- og Goldberg -virtualiseringskravene på grund af den enkelte instruktion 'MOVE from SR', som kopierer statusregistret til et andet register, idet det er uprivilegieret, men følsomt. I Motorola 68010 og senere blev dette gjort privilegeret for bedre at understøtte virtualiseringssoftware.
68000 -serien instruktionssæt kan opdeles i følgende brede kategorier:
- Indlæs og gem (MOVE)
- Aritmetik (ADD, SUB, MULS, MULU, DIVS, DIVU)
- Bitforskydning (ASL, ASR, LSL, LSR)
- Bitrotation (ROR, ROL, ROXL, ROXR)
- Logiske operationer (AND, OR, NOT, EOR)
- Type konvertering ( byte til word og omvendt )
- Betingede og ubetingede grene (BRA, Bcc - BEQ, BNE, BHI, BLO, BMI, BPL osv.)
- Subroutine påkaldelse og tilbagevenden (BSR, RTS)
- Stack management (LINK, UNLK, PEA)
- Forårsager og reagerer på afbrydelser
- Undtagelseshåndtering
- Der er ingen ækvivalent med x86 CPUID -instruktionen for at bestemme, hvilken CPU eller MMU eller FPU der er til stede.
Den Motorola 68020 tilføjet nogle nye instruktioner, der omfatter nogle mindre forbedringer og udvidelser til den tilsynsførende tilstand, flere instruktioner til software styring af et multiprocessing system, (der blev fjernet i 68060), en vis støtte til højt niveau sprog som ikke vænne meget (og blev fjernet fra fremtidige 680x0 processorer), større multiplicere (32 × 32 → 64 bit) og dividere (64 ÷ 32 → 32 bit kvotient og 32 bit resterende) instruktioner og bitfeltmanipulationer.
Standard adresseringstilstande er:
- Tilmeld dig direkte
- dataregister, f.eks. "D0"
- adresseregister, f.eks. "A0"
- Registrer indirekte
- Enkel adresse, f.eks. (A0)
- Adresse med efterforøgelse, f.eks. (A0)+
- Adresse med forudindskæring, f.eks.-(A0)
- Adresse med en 16-bit signeret offset, f.eks. 16 (A0)
- Registrer indirekte med indeksregister og 8-bit signeret forskydning f.eks. 8 (A0, D0) eller 8 (A0, A1)
- Bemærk, at for (A0)+ og - (A0) er den faktiske stignings- eller formindskelsesværdi afhængig af operandens størrelse: en byteadgang justerer adresseregistret med 1, et ord med 2 og en lang med 4.
- PC (programtæller) relativ med forskydning
- Relativ 16-bit signeret offset, fx 16 (PC). Denne tilstand var meget nyttig til positionsuafhængig kode.
- Relativ med 8-bit signeret offset med indeks, fx 8 (PC, D2)
- Absolut hukommelsesplacering
- Enten et tal, f.eks. "$ 4000" eller et symbolsk navn oversat af samleren
- De fleste samlere brugte "$" symbolet for hexadecimal , i stedet for "0x" eller et efterfølgende H.
- Der var 16 og 32-bit versioner af denne adresseringstilstand
- Umiddelbar tilstand
- Data gemt i instruktionen, f.eks. "#400"
- Hurtig øjeblikkelig tilstand
- 3-bit usigneret (eller 8-bit signeret med moveq) med værdi gemt i opcode
- I addq og subq er 0 ækvivalent med 8
- f.eks. moveq #0, d0 var hurtigere end clr.l d0 (selvom begge gjorde D0 lig med 0)
Plus: adgang til statusregistret og, i senere modeller, andre specialregistre.
Motorola 68020 tilføjede en skaleret indekseringsadressetilstand og tilføjede et andet niveau af indirekte til mange af de allerede eksisterende tilstande.
De fleste instruktioner har suffikser med dot-letter, der tillader operationer at forekomme på 8-bit bytes (".b"), 16-bit ord (".w") og 32-bit longs (".l").
De fleste instruktioner er dyadiske , det vil sige, operationen har en kilde og en destination, og destinationen ændres. Bemærkelsesværdige instruktioner var:
- Aritmetik: ADD, SUB, MULU (usigneret multiplikation), MULS (signeret multiplikation), DIVU, DIVS, NEG (additiv negation) og CMP (en slags sammenligning foretaget ved at trække argumenterne og indstille statusbitene, men lagrede ikke resultatet)
- Binærkodet decimalregning : ABCD, NBCD og SBCD
- Logik: EOR (eksklusiv eller), OG, IKKE (logisk ikke), ELLER (inklusive eller)
- Shifting: (logisk, dvs. højre forskydning sætter nul i den mest signifikante bit) LSL, LSR, ( aritmetiske skift , dvs. tegn-forlæng den mest signifikante bit) ASR, ASL, (roterer gennem eXtend og ikke) ROXL, ROXR, ROL, ROR
- Bit -test og manipulation i hukommelse eller dataregister: BSET (indstillet til 1), BCLR (klar til 0), BCHG (invert) og BTST (ingen ændring). Alle disse instruktioner tester først destinationsbitten og indstiller (rydder) CCR Z -bit, hvis destinationsbiten er henholdsvis 0 (1).
- Multiprocesseringskontrol : TAS, test-and-set , udførte en udelelig busoperation, hvilket tillod, at semaforer bruges til at synkronisere flere processorer, der deler en enkelt hukommelse
- Kontrolstrøm: JMP (spring), JSR (spring til underprogram), BSR (relativ adressespring til underprogram), RTS (retur fra underprogram ), RTE (retur fra undtagelse , dvs. en afbrydelse), TRAP (udløser en lignende softwareundtagelse) til software afbrydelse), CHK (en betinget software undtagelse)
- Filial: Bcc (hvor "cc" angav en af 14 test af tilstandskoderne i statusregistret: lig, større end, mindre end, carry og de fleste kombinationer og logiske inversioner, tilgængelige fra statusregistret). De resterende to mulige betingelser (altid sand og altid falsk) har separate instruktionshukommelser, BRA (gren altid) og BSR (gren til underprogram).
- Decrement-and-branch: DBcc (hvor "cc" var som for filialinstruktionerne), som, forudsat at betingelsen var falsk , dekrementerede det lave ord i et D-register og, hvis resultatet ikke var -1 ($ FFFF) , forgrenet til en destination. Denne brug af -1 i stedet for 0 som afslutningsværdi tillod let kodning af sløjfer, der ikke skulle gøre noget, hvis tællingen var 0 til at starte med, uden behov for en anden kontrol, før du gik ind i sløjfen. Dette letter også indlejring af DBcc.
68050 og 68070
Der var ingen 68050, selvom det på et tidspunkt var et projekt inden for Motorola. U-nummerede udgivelser havde altid været reaktioner på spørgsmål rejst inden for den tidligere lige nummererede del; derfor var det generelt forventet, at 68050 ville have reduceret 68040's strømforbrug (og dermed varmeafledning), forbedret undtagelseshåndtering i FPU, brugt en mindre funktionsstørrelse og optimeret mikrokoden i overensstemmelse med programbrug af instruktioner. Mange af disse optimeringer var inkluderet i 68060 og var en del af dets designmål. Af en række årsager, sandsynligvis at 68060 var under udvikling, at Intel 80486 ikke udviklede sig så hurtigt som Motorola antog det ville, og at 68060 var et krævende projekt, blev 68050 aflyst tidligt i udviklingen.
Der er heller ingen revision af 68060 , da Motorola var i færd med at skifte væk fra 68000- og 88k -processorlinjerne til sin nye PowerPC -forretning, så 68070 blev aldrig udviklet. Havde det været det, ville det have været en revideret 68060, sandsynligvis med en overlegen FPU (pipelining blev bredt spekuleret på på Usenet).
Motorola brugte hovedsageligt lige tal til større revisioner af CPU -kernen såsom 68000, 68020, 68040 og 68060. 68010 var en revideret version af 68000 med mindre ændringer i kernen, og ligeledes var 68030 en revideret 68020 med nogle mere kraftfulde funktioner, ingen af dem betydelige nok til at klassificeres som en større opgradering til kernen.
Der var en CPU med 68070- betegnelsen, som var en licenseret og noget langsommere version af 16/32-bit 68000 med en grundlæggende DMA-controller, I²C- vært og en on-chip seriel port. Denne 68070 blev brugt som hoved-CPU i Philips CD-i . Denne CPU blev dog produceret af Philips og var ikke officielt en del af Motorolas 680x0 lineup.
Sidste generation
4. generations 68060 leverede ækvivalent funktionalitet (dog ikke instruktion-sæt-arkitektur-kompatibilitet) til de fleste funktioner i Intel P5-mikroarkitekturen .
Andre varianter
Personal Computers XT/370 og AT/370 pc-baserede IBM-kompatible mainframes inkluderede hver to modificerede Motorola 68000-processorer med brugerdefineret mikrokode til at efterligne S/370 mainframe-instruktioner.
Efter mainline 68000 -processorernes død er 68000 -familien i nogen grad blevet brugt i mikrokontroller- og integrerede mikroprocessorversioner. Disse chips inkluderer dem, der er anført under "andet" ovenfor, dvs. CPU32 (aka 68330 ), ColdFire , QUICC og DragonBall .
Med fremkomsten af FPGA- teknologi har et internationalt team af hardwareudviklere genskabt 68000 med mange forbedringer som en FPGA-kerne. Deres kerne er kendt som 68080 og bruges i Amiga-acceleratorer fra Vampire-mærket.
Magnetic Scrolls brugte en delmængde af 68000's instruktioner som en base for den virtuelle maskine i deres teksteventyr .
Konkurrenter
Desktop
I løbet af 1980'erne og begyndelsen af 1990'erne, da den 68000 blev almindeligt anvendt i stationære computere, er det først og fremmest konkurrerede mod Intel 's x86 arkitekturen brugt i IBM PC kompatible . Generation 1 68000 CPU'er konkurrerede hovedsageligt om 16-bit 8086 , 8088 og 80286 . Generation 2 konkurrerede mod 80386 (den første 32-bit x86-processor) og generation 3 mod 80486 . Den fjerde generation konkurrerede med P5 Pentium -linjen, men den blev ikke nær så udbredt som sine forgængere, da meget af den gamle 68000 markedsplads enten var nedlagt eller næsten det (som det var tilfældet med Atari og NeXT) eller konverterede til nyere arkitekturer ( PowerPC til Macintosh og Amiga , SPARC til Sun og MIPS til Silicon Graphics (SGI)).
Indlejret
Der er snesevis af processorarkitekturer, der har succes med integrerede systemer . Nogle er mikrokontrollere, som er meget enklere, mindre og billigere end 68000, mens andre er relativt sofistikerede og kan køre kompleks software. Indlejrede versioner af 68000 konkurrerer ofte med processorarkitekturer baseret på PowerPC , ARM , MIPS , SuperH og andre.
Referencer
Bibliografi
- Howe, Dennis, red. (1983). Gratis online ordbog for computere . Imperial College, London. http://foldoc.org . Hentet 4. september 2007.