Motorola 6809

Motorola 6809
1 MHz Motorola 6809P processor, is a C65P mask set manufactured the tenth week of 1992
Allmän information
Lanserades 1978 ; 45 år sedan ( 1978 )
Vanliga tillverkare
Prestanda
Databredd 8
Adressbredd 16
Arkitektur och klassificering
Instruktionsuppsättning 6809
Instruktioner 59
Fysiska specifikationer
Transistorer
  • 9 000
Paket(er)

Motorola 6809 (" sextioåtta-oh-nio ") är en 8-bitars mikroprocessor med några 16-bitars funktioner. Den designades av Motorolas Terry Ritter och Joel Boney och introducerades 1978. Även om källan var kompatibel med den tidigare Motorola 6800 , erbjöd 6809 betydande förbättringar jämfört med den och 8-bitars samtida som MOS Technology 6502 , inklusive en hårdvarumultipliceringsinstruktion, 16-bitars aritmetik, system- och användarstackregister som tillåter återinträdande kod, förbättrade avbrott , positionsoberoende kod och en ortogonal instruktionsuppsättningsarkitektur med en omfattande uppsättning adresseringslägen.

Bland de mest kraftfulla 8-bitarsprocessorerna i sin tid var den också mycket dyrare. 1980 var en 6809 i en-enhetskvantiteter $37 jämfört med $9 för en Zilog Z80 och $6 för en 6502. Den lanserades när en ny generation av 16-bitars processorer kom ut på marknaden, som Intel 8086 och 32-bitars design var vid horisonten, inklusive Motorolas egen 68000 . Den var inte konkurrenskraftig med nyare design och inte priskonkurrens med äldre.

6809 användes i TRS-80 Color Computer , Dragon 32/64 , SuperPET , ENER 1000 och Thomson MO/TO hemdatorer, Vectrex -spelkonsolen och tidigt 1980-tals arkadmaskiner inklusive Star Wars , Defender , Robotron: 2084 , Joust och Gyruss . 1990-talets Williams flipperspel är utrustade med WPC -seriens styrkort baserade på 68B09. Serie II av Fairlight CMI digital ljudarbetsstation och Konamis arkadspel Time Pilot '84 använder båda dubbla 6809-processorer. Hitachi var en stor användare av 6809 och producerade senare en uppdaterad version som Hitachi 6309 .

Historia

Död av Motorola 6809

6800 och 6502

Motorola 6800 designades med början 1971 och släpptes 1974. I övergripande designtermer har den en stark likhet med andra processorer som designades från början som 8-bitarsdesigner, som Intel 8080 . Den tillverkades ursprungligen med tidig NMOS-logik , som normalt krävde flera olika strömförsörjningsspänningar . En nyckelfunktion var en on-chip spänningsfördubblare som gjorde att den kunde köras på en enda +5 V- försörjning, en stor fördel gentemot sina konkurrenter som Intel 8080 som krävde -5 V , +5 V , -12 V och jord .

6800 tillverkades ursprungligen med den då gällande kontaktlitografiprocessen . I denna process placeras fotomasken i direkt kontakt med wafern , exponeras och lyfts sedan av. Det fanns en liten chans att en del av etsmaterialet skulle finnas kvar på wafern när den lyftes, vilket gör att framtida chips mönstrade med masken misslyckas. För komplexa flermönsterdesigner som en CPU ledde detta till att cirka 90 % av chipsen misslyckades när de testades. För att tjäna pengar på det lilla antal marker som fungerade, måste priserna för de fungerande modellerna vara ganska höga, i storleksordningen hundratals dollar i små kvantiteter. Som ett resultat hade 6800 relativt låg acceptans på marknaden efter lanseringen.

Några av 6800-talets designers var övertygade om att ett billigare system skulle vara nyckeln till en bred acceptans. Noterbar bland dem var Chuck Peddle , som skickades på försäljningsresor och såg potentiella kunder upprepade gånger förkasta designen som för dyr för deras avsedda användningsområden. Han påbörjade ett projekt för att producera en mycket billigare design, men Motorolas ledning visade sig ointresserad och sa till honom att sluta arbeta med det. Peddle och några andra medlemmar i 6800-teamet lämnade Motorola för MOS Technology och introducerade denna design 1975 som MOS Technology 6502 .

6800 såldes ursprungligen för 360 USD i enstaka kvantiteter, men hade sänkts till 295 USD . 6502 introducerades för $25 , och Motorola sänkte omedelbart 6800 till $125. Det förblev okonkurrenskraftigt och försäljningsutsikterna dämpades. Introduktionen av Micralign på Motorolas linjer möjliggjorde ytterligare sänkningar och 1981 var priset på den då nuvarande 6800P något lägre än motsvarande 6502, åtminstone i enstaka kvantiteter. Vid den tidpunkten hade dock 6502:an sålt tiotals miljoner enheter och 6800:an hade i stort sett glömts bort.

6809

Medan 6502 började ta över 6800-talets marknad, upplevde Intel samma problem när uppstickaren Zilog Z80 började stjäla försäljning från Intel 8080 . Både Motorola och Intel påbörjade nya designcykler för att hoppa över dessa designs. Denna process ledde till att Intel började designa en serie 16-bitars processorer, som dök upp som Intel 8086 1978. Motorola började också designa en liknande avancerad design i MACSS-projektet. När de frågade sina befintliga 6800 kunder, fann de att många förblev intresserade av 8-bitarsdesigner och inte var villiga att betala för en 16-bitarsdesign för sina enkla behov. Detta ledde till beslutet att producera en kraftigt förbättrad men kompatibel 8-bitars design som blev 6809.

Analys av 6800-kod visade att laddningar och lagringar var den stora majoriteten av hela tiden i CPU-termer, och stod för 39 % av alla operationer i koden de undersökte. Däremot var matematiska operationer relativt sällsynta, endast 2,8 % av koden. En noggrann undersökning av lasterna och lagringarna noterade dock att många av dessa kombinerades med adderar och subtraherar, vilket avslöjar att en betydande del av dessa matematiska operationer utfördes på 16-bitarsvärden. Detta ledde till beslutet att inkludera grundläggande 16-bitars matematik i den nya designen: ladda, lagra, addera och subtrahera. På samma sätt utgjorde inkrement och dekrement endast 6,1 % av koden, men dessa inträffade nästan alltid inom loopar där var och en utfördes många gånger. Detta ledde till tillägget av post-inkrementerande och pre-dekrementerande lägen med hjälp av indexregistren .

Huvudmålet för den nya designen var att stödja positionsoberoende kod . Motorolas marknad var mestadels inbyggda system och liknande system för enstaka ändamål, som ofta körde program som liknade de på andra plattformar. Utvecklingen för dessa system tog ofta formen av att samla in en serie förrullade subrutiner och kombinera dem. Men eftersom assemblerspråk i allmänhet skrivs med början på en "basadress", krävde kombinationen av förskrivna moduler normalt en lång process för att ändra konstanter (eller "ekvationer") som pekade på nyckelplatser i koden.

Motorolas idé var att eliminera denna uppgift och göra byggstenskonceptet mycket mer praktiskt. Systemintegratörer skulle helt enkelt kombinera standardkod i ROM för att hantera vanliga uppgifter. Bibliotek med vanliga rutiner som flyttalsaritmetik , grafikprimitiver, Lempel-Ziv-komprimering och så vidare skulle vara tillgängliga att licensiera, kombinera tillsammans med anpassad kod och bränna till ROM.

I tidigare processordesigner, inklusive 6800, fanns det en blandning av sätt att referera till minnesplatser. Vissa av dessa var relativa till den aktuella platsen i minnet eller till ett värde i ett indexregister, medan andra var absoluta, ett 16-bitars värde som refererade till en fysisk plats i minnet. Den tidigare stilen tillåter att kod flyttas eftersom adressen den refererar till kommer att flyttas tillsammans med koden. De absoluta platserna gör det inte; kod som använder denna typ av adressering måste kompileras om om den flyttas. För att ta itu med detta fyllde 6809 i sina instruktionskoder så att det fanns fler fall av relativ adressering där det var möjligt.

Som ett exempel inkluderade 6800 ett speciellt "direkt" adresseringsläge som användes för att göra koden mindre och snabbare; istället för att en minnesadress har 16-bitar och därför kräver två byte att lagra, var direktadresser endast 8-bitar långa. Nackdelen var att den bara kunde referera till minnet inom ett 256-byte fönster, " direktsidan ", som normalt låg längst ner i minnet - 6502 kallade detta " noll sida adressering ". 6809 lade till ett nytt 8-bitars DP-register, för "direktsida". Kod som tidigare behövde vara på nollsidan kunde nu flyttas var som helst i minnet så länge som DP ändrades för att peka på sin nya plats.

Att använda DP löste problemet med att hänvisa till adresser i koden, men data finns i allmänhet en bit från koden, utanför ROM. För att lösa problemet med att enkelt referera till data samtidigt som den förblir positionsoberoende, lade 6809 till en mängd nya adresseringslägen. Bland dessa var program-counter-relativ adressering som gjorde det möjligt att referera till vilken minnesplats som helst genom sin plats i förhållande till instruktionen. Dessutom användes stacken mer allmänt, så att ett program i ROM kunde avsätta ett minnesblock i RAM, ställa in SP:n som basen för blocket och sedan hänvisa till data inom det med hjälp av relativa värden .

För att underlätta denna typ av åtkomst döpte 6809 om SP till U för "användare" och lade till en andra stackpekare, S, för "system". Tanken var att användarprogram skulle använda U medan processorn själv skulle använda S för att lagra data under subrutinsamtal . Detta gjorde att systemkoden lätt kunde anropas genom att ändra S utan att påverka något annat program som körs. Till exempel skulle ett program som anropar en flyttalsrutin i ROM placera sina data på U-stacken och sedan anropa rutinen, som sedan kunde utföra beräkningarna med hjälp av data på sin egen privata stack som pekas på av S, och sedan återvända och lämna U-stacken orörd.

En annan anledning till den utökade stackåtkomsten var att stödja reentrant- kod, kod som kan anropas från olika olika program samtidigt utan att behöva bekymra sig om samordning mellan dem, eller som kan anropa sig själv rekursivt. Detta gör konstruktionen av operativsystem mycket enklare; operativsystemet hade sin egen stack och processorn kunde snabbt växla mellan en användarapplikation och operativsystemet genom att helt enkelt ändra vilken stackpekare den använde. Detta gör också serviceavbrott mycket lättare av samma anledning. Avbrott på 6809 sparar endast programräknaren och villkorskodregistret innan avbrottskoden anropas, medan 6800, som nu hänvisas till, sparar alla register, tar ytterligare cykler, sedan mer för att varva upp stacken vid utgång.

6809 inkluderar en av de tidigaste dedikerade hårdvarumultiplikatorerna. Den tar 8-bitars nummer i A- och B-ackumulatorerna och producerar ett resultat i A:B, gemensamt känt som D.

Marknadsacceptans

Mycket av designen hade varit baserad på marknadskonceptet byggstenskod. Men marknaden för förrullade ROM-moduler förverkligades aldrig: Motorolas enda släppta exempel var MC6839 flyttals-ROM. Branschen som helhet löste problemet med att integrera kodmoduler från separata källor genom att använda automatiska förflyttningslänkar och laddare, vilket är den lösning som används idag. De beslut som fattades av designteamet möjliggjorde dock multi-användare, multitasking operativsystem som OS-9 och UniFlex .

De extra funktionerna i 6809 var kostsamma; CPU:n hade ungefär 9 000 transistorer jämfört med 6800:s 4 100 eller 6502:ans 3 500. Medan processförbättringar innebar att den kunde tillverkas för mindre kostnad än den ursprungliga 6800, tillämpades samma förbättringar på de andra designerna och så den relativa kostnaden förblev densamma. Så var fallet i praktiken; 1981 såldes 6809:an i en enda enhet för ungefär sex gånger priset på en 6502:a. För de system som behövde några av dess specialfunktioner, som hårdvarumultiplikatorn, kunde systemet motivera sitt pris, men i de flesta roller var det bortse.

En annan faktor i dess låga användning var förekomsten av nyare design med betydligt högre prestanda. Bland dessa var Intel 8086 , som släpptes samma år, och dess billigare version, Intel 8088 från 1979. En känsla för problemet kan ses i Byte Sieve- sammansättningsspråkets resultat mot andra vanliga konstruktioner från eran (tagen från 1981 och 1983):

Byte Sieve jämförelse
Processor Sekunder
6502 1 MHz 13.9
Z80 4 MHz 6.8
6809 2 MHz 5.1
8086 8 MHz 1.9
68000 8 MHz 0,49

Även om 6809 erbjöd en prestandaförbättring jämfört med sådana som 6502 och Z80, var förbättringen inte i linje med prishöjningen. För dem där priset inte var det primära problemet, men direkt prestanda var det, överträffade de nya designerna det med så mycket som en storleksordning .

Redan innan 6809 släpptes hade Motorola 1976 lanserat sitt eget avancerade CPU-projekt, då känt som Motorola Advanced Computer System on Silicon-projektet, eller MACSS. Även om det var för sent för att väljas ut för IBM PC- projektet, när MACSS dök upp som Motorola 68000 1979, tog det något kvarvarande intresse för 6809. Motorola meddelade snart att deras framtida 8-bitarssystem skulle drivas av nedskärningar av versioner av 68000 istället för ytterligare förbättrade versioner av 6809.

Stora användningsområden

TRS-80 färgdator

Dess första stora användning var i TRS-80 Color Computer , vilket till stor del skedde av en slump. Motorola hade blivit ombedd att designa en färgkompatibel datorterminal för ett onlineprojekt för jordbruksstöd, ett system som kallas "AgVision". Tandy ( Radio Shack ) togs in som detaljhandelspartner och sålde dem under namnet "VideoTex", men projektet avbröts till slut kort efter introduktionen 1980. Tandy omarbetade sedan designen för att producera en hemdator, som blev en av 6809:ans mest anmärkningsvärda design vinner.

SuperPET SP9000

På jakt efter en billig programmeringsplattform för datavetenskapsstudenter utvecklade University of Waterloo ett system som kombinerade en 6809-baserad dator-på-ett-kort med en befintlig Commodore PET , inklusive ett antal programmeringsspråk och programredigerare i ROM . Resultatet plockades senare upp av Commodore, som sålde det som SuperPET , eller MicroMainframe i Europa. Dessa var relativt populära i mitten av 1980-talet innan introduktionen av PC- klonmarknaden tog över programmeringsrollen för de flesta användare.

Andra populära användningsområden för hemdatorer inkluderar Fujitsu FM-7 , Canon CX-1, Dragon 32/64 och Thomson TO7- serien. Det fanns även som tillval på Acorn System 2 , 3 och 4-datorerna. De flesta SS-50-busskonstruktioner som hade byggts runt 6800 hade också alternativ för 6809 eller bytte till den exklusivt. Exempel inkluderar maskiner från SWTPC , Gimix , Smoke Signal Broadcasting , etc. Motorola bygger också en serie EXORmacs och EXORset-utvecklingssystem.

Hitachi producerade sina egna 6809-baserade maskiner, MB-6890 och senare S1. Dessa var i första hand för den japanska marknaden, men en del exporterades till och såldes i Australien , där MB-6890 döptes till "Peach", förmodligen med hänvisning till Apple II . S1 var anmärkningsvärd genom att den innehöll personsökningshårdvara som utökade 6809:ans ursprungliga 64 kilobyte adresseringsområde till hela 1 megabyte på 4 KB-sidor. Det liknade i detta maskiner tillverkade av SWTPC, Gimix och flera andra leverantörer. TSC producerade ett Unix-liknande operativsystem uniFlex som endast kördes på sådana maskiner. OS-9 Level II, utnyttjade också sådana minneshanteringsmöjligheter. De flesta andra datorer på den tiden med mer än 64 KB minnesadressering var begränsade till bankväxling där mycket om inte alla 64 KB helt enkelt byttes ut mot en annan sektion av minne, även om Motorola i fallet med 6809 erbjöd sin egen MC6829 MMU designmappning 2 megabyte på 2 KB-sidor.

Vectrex hemmavideospelkonsol

6809 användes också i olika videospelsystem . Noterbart bland dessa, i 68A09-inkarnationen, var den unika vektorgrafikbaserade Vectrex - hemvideospelsmaskinen. Det användes också i Milton Bradley Expansion (MBX)-systemet (en arkadkonsol för TI-99/4A- hemdatorn), och en serie arkadspel som släpptes under tidigt till mitten av 1980-talet. Williams Electronics var en produktiv användare av processorn, som användes i Defender , Stargate , Joust , Robotron: 2084 , Sinistar och andra spel. 6809 CPU utgör kärnan i den framgångsrika Williams Pinball Controller . KONAMI-1 är en modifierad 6809 som används av Konami i Roc'n Rope , Gyruss och The Simpsons .

Serie II av Fairlight CMI (datormusikinstrument) använde dubbla 6809-processorer som körde OS-9 , och använde även en 6809-processor per röstkort. 6809 användes ofta i musiksyntar från andra tillverkare som Oberheim ( Xpander , Matrix 6/12/1000 ), PPG (Wave 2/2.2/2.3, Waveterm A) och Ensoniq ( Mirage sampler, SDP-1, ESQ- 1 , SQ-80 ). Den senare använde 6809E som sin huvudprocessor. (E)-versionen användes för att synkronisera mikroprocessorns klocka till ljudchippet (Ensoniq 5503 DOC) i dessa maskiner; i ESQ-1 och SQ-80 användes 68B09E, vilket krävde en dedikerad arbiterlogik för att säkerställa 1 MHz busstiming vid åtkomst till DOC-chippet.

I motsats till tidigare Motorola-produkter sågs inte 6809 utbredd användning inom mikrokontrollerområdet . Den användes i trafiksignalkontroller tillverkade på 1980-talet av flera olika tillverkare, såväl som Motorolas SMARTNET och SMARTZONE Trunked Central Controllers (så kallade "6809 Controller"). Dessa kontroller användes som centrala processorer i många av Motorolas trunkerade tvåvägsradiokommunikationssystem.

6809 användes av Mitel som huvudprocessor i sitt SX20 Office Telephone System.

Versioner

Motorola 6809 tillverkades ursprungligen i hastighetsklasserna 1 MHz, 1,5 MHz (68A09) och 2 MHz (68B09). Snabbare versioner producerades senare av Hitachi. Med lite att förbättra, markerar 6809 slutet på utvecklingen av Motorolas 8-bitars processorer; Motorola hade för avsikt att framtida 8-bitarsprodukter skulle baseras på en 8-bitars databussversion av 68000 (68008 ) . En mikrokontrollerversion med en något modifierad instruktionsuppsättning, 6811 , avbröts så sent som under andra decenniet av 2000-talet.

Hitachi 6309 är en förbättrad version av 6809 med extra register och ytterligare instruktioner, inklusive blockflyttning, ytterligare multiplikationsinstruktioner och division.

Arv

Motorola avvecklade sin mikroprocessordivision 2004. Divisionen bytte namn till Freescale och har därefter förvärvats av NXP .

Varken Motorola eller Hitachi producerar 6809-processorer eller derivat längre. 6809 kärnor finns i VHDL och kan programmeras in i en FPGA och användas som en inbyggd processor med hastighetsklasser upp till 40 MHz. [ citat behövs ] Vissa 6809 opcodes lever också kvar i Freescale inbyggda processorer. 2015 auktoriserade Freescale Rochester Electronics att återigen börja tillverka MC6809 som en drop-in-ersättning och kopia av den ursprungliga NMOS-enheten. Freescale levererade Rochester den ursprungliga databasen för fysisk design av GDSII . I slutet av 2016 är Rochesters MC6809 (inklusive MC68A09 och MC68B09) fullt kvalificerad och tillgänglig i produktion.

Den australiensiska utvecklaren John Kent har syntetiserat Motorola 6809 CPU i hårdvarubeskrivningsspråk (HDL). Detta har möjliggjort användningen av 6809-kärnan vid mycket högre klockhastigheter än vad som var tillgängliga med original 6809. Gary Beckers CoCo3FPGA kör Kent 6809-kärnan på 25 MHz. Roger Taylors Matchbox CoCo går på 7,16 MHz. Dave Philipsens CoCoDEV körs på 25 MHz.

Beskrivning

6809:ans interna design är närmare enklare, icke- mikrokodade CPU-designer. Liksom de flesta 8-bitars mikroprocessorer är 6809-implementeringen en registeröverföringsnivåmaskin som använder en central PLA för att implementera mycket av instruktionsavkodningen såväl som delar av sekvenseringen.

Liksom 6800 och 6502 använder 6809 en tvåfasig klocka för att låsa spärrarna. Denna tvåfasiga klockcykel används som en hel maskincykel i dessa processorer. Enkla instruktioner kan utföras i så lite som två eller tre sådana cykler. 6809 har en intern tvåfas klockgenerator (behöver bara en extern kristall) medan 6809E behöver en extern klockgenerator. Det finns varianter som 68A09(E) och 68B09(E); den interna bokstaven indikerar processorns nominella klockhastighet.

6800, 6502, 6809:ans klocksystem skiljer sig från andra processorer i eran. Till exempel använder Z80 en enda extern klocka och de interna stegen i instruktionsprocessen fortsätter vid varje övergång. Detta innebär att den externa klockan i allmänhet går mycket snabbare; 680x-konstruktioner körde i allmänhet på 1 eller 2 MHz medan Z80 i allmänhet körde på 2 eller 4. Internt konverterade 680x:erna den långsammare externa klockan till ett internt schema med högre frekvens, så på en instruktion-för-instruktion-basis, körde de ungefär dubbelt så mycket som snabbt när man jämför de externa klockorna.

Fördelen med åtkomsten i 680x-stil var att tidens dynamiska RAM- chips i allmänhet körde på 2 MHz. På grund av cykeltimingen fanns det perioder av den interna klockan där minnesbussen garanterat var ledig. Detta gjorde det möjligt för datordesignern att interfoliera åtkomst till minne mellan CPU:n och en extern enhet, säg en styrenhet för direkt minnesåtkomst, eller mer vanligt, ett grafikchip . Genom att köra båda chipsen på 1 MHz och stega dem efter varandra kunde de dela åtkomst till minnet utan ytterligare komplexitet eller kretsar. Beroende på version och hastighetsklass är ungefär 40–60 % av en enskild klockcykel vanligtvis tillgänglig för minnesåtkomst i en 6800, 6502 eller 6809.

Register och instruktioner

6809 programmeringsmodell, som visar processorregistren

Den ursprungliga 6800 inkluderade två 8-bitars ackumulatorer , A och B, ett enda 16-bitars indexregister , X, en 16-bitars programräknare , PC, en 16-bitars stackpekare , SP och ett 8-bitars statusregister . 6809 lade till ett andra indexregister, Y, en andra stackpekare, U (medan den döpte om det ursprungliga S), och gjorde att A- och B-registren kunde behandlas som en enda 16-bitars ackumulator, D. Den lade också till ytterligare 8- bitregister, DP, för att ställa in basadressen för direktsidan. Dessa tillägg var osynliga för 6800-koden, och 6809 var 100% källkompatibel med tidigare kod.

Ett annat betydande tillägg var program-mot-relativ adressering för alla instruktioner för datamanipulation. Detta var ett nyckeltillägg för positionsoberoende kod , eftersom det tillåter data att refereras till i förhållande till instruktionen, och så länge som den resulterande minnesplatsen finns kan instruktionerna flyttas fritt i minnet. Systemet behöll också sina tidigare adresseringslägen, även om det som tidigare var separata instruktioner i det nya assemblerspråket nu ansågs vara olika adresseringslägen på andra instruktioner. Detta reducerade antalet instruktioner från 6800:s 78 instruktioner till 6809:ans 59. Dessa nya lägen hade samma opkoder som den tidigare separata instruktionen, så dessa ändringar var endast synliga för programmeraren som arbetade med ny kod.

Instruktionsuppsättningen och registerkomplementet är mycket ortogonala , vilket gör 6809 lättare att programmera än samtida . Liksom 6800 innehåller 6809 en odokumenterad adressbusstestinstruktion som kom att få smeknamnet Halt and Catch Fire (HCF) .

Anteckningar

Bibliografi

Vidare läsning

Datablad och manualer
Böcker
Tidningar
Referenskort
  • MC6809 referenskort ; Motorola; 16 sidor; 1981. (arkiv)
  • 6809/6309 Referenskort ; Chris Lomont; 10 sidor; 2007. (arkiv)

externa länkar

Simulatorer / Emulatorer
Brädor
FPGA