close

MOS6502

Gå til navigasjon Gå til søk
MOS6502
MOS 6502AD 4585 top.jpg
Informasjon
Fyr produsert objektmodell Se og endre dataene i Wikidata
utvikler MOS-teknologi Se og endre dataene i Wikidata
Maker
Utgivelsesdato september 1975 _ Se og endre dataene i Wikidata
Tekniske data
CPU -klokkefrekvens1MHz - 3MHz
Instruksjonssett MOS6502 Se og endre dataene i Wikidata
Kronologi
MOS6501 Se og endre dataene i Wikidata
MOS6502

MOS 6502 eller MOS Technology 6502 er en 8 -bits mikroprosessor designet av MOS Technology i 1975 . Da den ble introdusert var den den desidert billigste prosessoren med alle funksjoner på markedet, til omtrent en sjettedel av prisen eller mindre enn konkurrerende prosessorer fra større selskaper som Motorola og Intel . Den var imidlertid raskere enn de fleste av dem, og sammen med Zilog Z80 utløste den en rekke dataprosjekter som til slutt ville føre til den personlige datamaskinrevolusjonen på slutten av 1970 -tallet.og tidlig på 1980- tallet . I tillegg til MOS-teknologi, ble 6502-designet opprinnelig hentet fra Rockwell og Synertek og ble senere lisensiert til flere andre selskaper. Det gjøres fortsatt for innebygde systemer.

6502 er faktisk en familie av CPUer som deler samme brikke, men er pakket med forskjellige antall pinner, noe som senker kostnadene og ofrer noen funksjoner. Disse er igjen delt inn i to grupper: 650x, med en intern klokke, og 651x, som trenger en to-fase klokke (som MC6800).

Historikk og bruk

6502 ble designet først og fremst av det samme teamet som designet Motorola 6800 . Etter å ha forlatt Motorola -gruppen designet de raskt 6501 , en helt ny design som imidlertid var pin-kompatibel med 6800. Motorola saksøkte dem umiddelbart, og selv om saken i dag ville blitt avvist umiddelbart, var skaden for MOS stor nok. at de ble enige om å stoppe produksjonen av 6501.

Resultatet var 6502, som ikke kunne forårsake en juridisk tvist med Motorola, siden på grunn av en annen rekkefølge av pinnene, var den ubrukelig i et hovedkort for 6800 . Dette etterlot imidlertid MOS Technology problemet med å få nye utviklere til systemet, så som svar designet ingeniør Chuck Peddle KIM-1 , en enkeltbordsdatamaskin. Til hans overraskelse solgte KIM-1 i et stort antall til hobbyister og folk som likte å eksperimentere, og også til ingeniørene som den var ment for. AIM 65 , et kontroll-, trenings- og utviklingssystem produsert av Rockwell, solgte også godt. Et annet mer eller mindre lignende design var Synertek Sync .

Vi introduserer 6502

Image
Introduksjonsannonse for MOS Technology MCS6501 og MCS6502 mikroprosessorer.

6502 ble lansert på en teknologimesse i september 1975 . Prisen var $25 ($125,9 i 2022), mens 6800 og 8080 ble solgt for $179 ($901,42 i 2022). Til å begynne med trodde mange det var en slags svindel, men før showet var over, hadde både Motorola og Intel senket prisene til $79 ($397,83 i 2022). Nå var 6502 legitim og begynte å selge i hundrevis.

En av de første "offentlige" bruksområdene for design var Atari 2600 videospillkonsoll . 2600 brukte en etterkommer av 6502 kalt 6507 , som hadde færre pinner og som et resultat bare kunne adressere 8 KB RAM . Millioner ville bli solgt på denne måten. 6502 ble senere brukt i Apple II -familien , og dukket deretter raskt opp i forskjellige personlige datamaskiner som Commodore PET , Commodore VIC-20 , Atari 8-bit- familien, BBC Micro -familien og et stort antall andre design nå tapt i historien. 6510 , en direkte etterfølger til 6502, var CPU -en som ble brukt i den ekstremt populære Commodore 64 personlige datamaskinen .

En annen stor bruk av 6502 var i Nintendo Famicom , en japansk videospillkonsoll . Dens amerikanske og europeiske ekvivalent, Nintendo Entertainment System (NES), hadde også 6502. 6502 som ble brukt i NES var en modifisert versjon, som ble produsert kun for Nintendo, kalt 2A03 på NTSC -konsoller og 2A07 på PAL -konsoller . forskjellen mellom de to var klokkefrekvensdeleren. Den tilpassede prosessoren for NES manglet desimalmodusen til 6502, men la til 22 minnetilordnede registre for lydgenerering, joypad (spillkontroll) avlesning og DMA for sprites .

Den effektive designen til 6502 inspirerte også hoveddesignerne av ARM , en RISC -prosessor , og dermed kan arven til 6502 sies å ha overskredet den originale prosessorfamilien ettersom dens ånd lever videre i utformingen av ARM, brukt i forskjellige datamaskiner, stasjonære samt en mengde håndholdte og andre innebygde systemer, og selges som en IP -blokk for bruk i produkter av typen System on a chip .

Beskrivelse

Image
6502 prosessor die. Den vanlige delen øverst er instruksjonsdekodings-ROM, den tilsynelatende tilfeldige delen i midten er kontrolllogikken, og nederst er registrene (høyre) og UAL (venstre). Databussforbindelsene er nederst til høyre og adressebussen nederst og nederst til venstre.
Image
Pin-konfigurasjon av 6502 ( 40 Pin DIP ).

6502, en 8-bits mikroprosessor med en 16-bits adressebuss , ble utgitt i september 1975 av MOS Technology . Den interne logikken kjører med samme hastighet som den eksterne klokkefrekvensen, men de tilsynelatende langsomme klokkehastighetene, typisk 1 MHz , var faktisk konkurransedyktige med andre prosessorer som kjørte fire ganger så raskt, fordi 6502 var en prosessor med pipeline , og de andre av hans dag ble mikrokodet og hadde hastigheter sammenlignbare med 6502. Klokken til Z80 tar for eksempel 4 sykluser for å lese en instruksjon. Selv om dette kan høres ut som en «gimmick», hadde 6502 den bieffekten at de senket hastighetskravene til periferiutstyret som er koblet til CPU, og dermed reduserte totalkostnaden for systemet, en viktig faktor for å oppnå et vinnende design i spillene. svært sensitive markeder for spillkonsoller og personlige datamaskiner. Den har 3510 transistorer.

I motsetning til Intel 8080 og lignende mikroprosessorer, hadde 6502 svært få registre . På den tiden var RAM raskere enn CPUer , så det var fornuftig å optimalisere RAM-tilgangen i stedet for å øke antall registre på brikken. Inne i 6502 var det et 8-bits akkumulatorregister "A", to 8-bits indeksregistre "X" og "Y", et 8-bits statusregister "SR", en 8-bits stabelpeker "SP", og en 16-bits "PC" -programteller . Stabeladresseplassen for subrutineanrop eller bufring ble koblet til minnesiden $01, dvs. adresseområdet $0100-$01FF (256-511) . Programvaretilgang til stabelen ble gjort gjennom fire instruksjoner med implisitt adresseringsmodus hvis funksjon var å plassere eller fjerne et element på stabelen ( Push eller Pop ). Det var Push og Pop-instruksjoner for innholdet i akkumulatoren eller for prosessorstatusregisteret.

Brikken brukte indeksen og stabelregistrene effektivt med forskjellige adresseringsmoduser , inkludert en rask "direkteside" eller " nullside "-modus som fikk tilgang til minneplasseringer fra adressene 0 til 255 (00 til FF heksadesimal). med en enkelt 8-biters adresse ( trengte ikke å lese en ekstra byte for adressen). Koden for 6502 brukte side null mye, omtrent som koden for andre prosessorer ville ha brukt registrene. På de fleste 6502-baserte mikrodatamaskiner med et operativsystem brukte selve operativsystemet side null nesten utelukkende, og etterlot kanskje en håndfull plasseringer for brukeren.

Adresseringsmoduser inkluderte også:

  • underforstått (1-byte instruksjoner)
  • absolutt (3 byte)
  • relativ (2 byte)
  • akkumulator (1 byte)
  • indirekte, x og indirekte, y (2 byte)
  • umiddelbar (2 byte)
  • indeksert, X og indeksert, Y (2 eller 3 byte, avhengig av om basen er på side null eller ikke)

Absolutt modus var en generell modus. Relativ modus ble brukt for betingede greninstruksjoner som kunne flytte programtelleren opp til 128 byte fremover eller bakover. Akkumulatormodus brukte akkumulatoren som en effektiv adresse, og trengte ingen operanddata . Umiddelbar modus brukte en 8-bits bokstavelig operand.

Indirekte moduser var nyttige for vektorbehandling og andre repeterende sløyfeoperasjoner. Med indirekte modus ble 8-bits Y-registeret lagt til en 16-bits base plassert på side null i minnet (én byte i opkoden betegnet plasseringen til side null). 8-biters X- og Y-registre ble brukt som forskyvninger i stedet for deres "normale" bruk som indeksregistre. Å øke X eller Y for å gå i arrayet var en to-syklus, 8-bits operasjon, selv om arrayen kunne være plassert hvor som helst i 16-biters adresserom (å få 16-bits basen lest fra side null). Det er her 6502 skiller seg mest fra Motorola 6800 . En overfladisk titt på 6502-spesifikasjonene som viser at det bare var 8-bits indeksregistre er absolutt misvisende.

Tvilsomme funksjoner

  • 6502-ene er beryktet for å ha en rekke udokumenterte instruksjoner, som varierte fra design til design. Instruksjonsdekoding i 6502 er implementert ved hjelp av en fast logisk array implementert i maskinvare (ligner på en PLA ) definert kun for gyldige opkoder . De omtrent 32 udokumenterte op-kodene utløser flere gyldige instruksjoner på en gang, noe som fører til uventede resultater. I CMOS-versjonene (65Cxx) utføres disse kodene som NOP, men med variabelt antall byte og sykluser avhengig av koden.
  • 6502s indirekte hoppinstruksjon, JMP (xxxx), hadde en defekt. Hvis adressen var xxFF heksadesimal, ville ikke prosessoren ha tilgang til adressen som er lagret på xxFF og xxFF+1, men på xxFF og xx00. 6510 rettet ikke denne feilen, og den ble heller ikke rettet i noen av de andre NMOS -versjonene av 6502 som 8502 og 2A03. Bill Mensch ved Western Design Center var den første som korrigerte det, i CMOS -derivatet 65C02 , men på bekostning av en klokkesyklus til. Han designet senere 65816- prosessoren , en 16-bits etterfølger til 65C02, samt en hybrid etterkommer kalt 65802 som var en 65816 med 64 KB adresserom og en pin-kompatibel pakke med 65(C)02.

Akselerasjon

Mange brukere av 1 MHz 6502-baserte systemer ønsket snart at datamaskinene deres skulle kjøre raskere. Ulike selskaper solgte erstatningsmaskinvare for å få fart på disse systemene. Generelt var 6502 systemakseleratorer basert på:

  • 6502 eller 65C02 brikker som har en raskere klokkehastighet.
  • 65C816-brikker i emuleringsmodus av 6502, som har en mye raskere klokkehastighet (opptil 20 MHz).
  • 4 MHz og 8 MHz Zip Chip-prosessorer, laget av Zip Technology , og 10 MHz Rocket Chips, laget av Bits and Pieces , alle bruker innebygd RAM- cache for å øke hastigheten på behandlingen av data som ofte brukes, samtidig som de forblir kompatible med et 1 MHz hovedkort Til slutt tvinger Zip Technologys patent #4 794 523 Bits and Pieces til å slutte å produsere Rocket Chip.

65xx-familien

65xx
Fyr Minne / KiB andre tegn innkapslet
6502 64 IRQ NMI Φ1 Φ2 Φo SYNC RDY 40-pinners
6503 4 IRQ NMI Φo 28-pinners
6504 8 IRQ Φo 28-pinners
6505 4 IRQ Φeller RDY 28-pinners
6506 4 IRQ Φ1 Φ2 Φo 28-pinners
6507 8 RDY Φo 28-pinners
6512 64 IRQ NMI Φ1 Φ2 DBE SYNC RDY 40-pinners
6513 4 NMI IRQ Φ1 Φ2 28-pinners
6514 8 IRQ Φ1 Φ2 28-pinners
6515 4 IRQ Φ1 Φ2 RDY 28-pinners
Ytterligere variasjoner
* Commodore Semiconductor Group la til følgende varianter:
6508 64K En 6502 som inneholder 256 byte RAM og en 8-bit port, noe som tillater en μC med bare to brikker: 6508 og ROM
6509 1M Den inneholder logikken som er nødvendig for å søke på 64 KiB og gi en 20-bits adressebuss.
6510 64K Den inneholder en gate på seks eller åtte biter, avhengig av versjonen.
6570 µC Inneholder RAM og ROM. Generell mikrokontroller. CBM bruker den som en tastaturkontroller på Amigaen
65CE02 64K (Cmos Enhanced) Siste utvidelse som Commodore laget av 6502. Den inneholder flere registre og et større antall instruksjoner og adresser. Bestemt til å være CPU (4510) til Commodore 65.
* Rockwell tok 6502-kjernen og la til RAM og ROM i sin 6500/xx-familie.
6500/21 Dobbel mikrokontroller. Det fungerer som to CPUer som opererer på samme minne.
65C29 64K dobbel mikroprosessor
65F11 Videre mikrodatamaskin
65F12 Videre mikrodatamaskin
6516 64K En modifikasjon av Rockwell (CMOS) som i liten grad respekterer det originale designet.

Lisensering

MOS Technology lisensierte snart sin 65xx til blant annet følgende selskaper:

  • Rockwell Semiconductor
  • Synertek
  • MEG
  • ITT
  • CMU
  • NTE

Mikrodatamaskiner som brukte 6502

MOS 6502-prosessoren og dens varianter ble brukt, blant annet utstyr, i:

Maskinvare som emulerer MOS 6502

Det er flere prosjekter som søker å emulere MOS 6502 og derivater på programvarenivå, så vel som på maskinvarenivå. Blant prosjektene som implementerer/emulerer en MOS 6502 på maskinvarenivå:

  • MOnSter 6502 , et brett som implementerer den "arbeidende" delen av en MOS 6502 på et brett som består av transistorer og motstander og synlige lysdioder. Navnet "monster" refererer til størrelsen på platen, 30 x 38 cm. [ 1 ]
  • Gigatron TTL , en mikrodatamaskin i retrostil, som blant funksjonene er muligheten til å emulere MOS 6502.
  • I Minecraft var det mulig å implementere en komplett datamaskin basert på MOS6502 takket være RedPower 2 mod . [ 2 ]​ [ 3 ]

Kuriosa

  • I science fiction-filmen Terminator (1984), med Arnold Schwarzenegger i hovedrollen , ser publikum i visse øyeblikk gjennom øyet/kameraet til Terminator T-800 Model-101 ​​noen fragmenter av 6502s maskinprogram/monteringsspråk ned . Det vises også resultatet av en kjøring, på en Apple II-datamaskin, av et kontrollsumprogram kalt KEY PERFECT 4.0, utgitt av Nibble magazine .
  • Bender , en "industrirobot" android produsert i 2998 e.Kr., hovedperson i tegneserie-TV-serien Futurama , i episoden "Fry and the Slurm Factory", ble avslørt for å ha en 6502 CPU som sin "hjerne", det er Det er nysgjerrig. å merke seg at det er CPUer produsert i Mexico på markedet, og dette er i samsvar med utsagnet om at Bender er meksikansk etter å ha vist "Made in Mexico"-stempelet som han har internt på brystet.
  • Furbys drives av en 6502-prosessor i kroppen.

Se også

Andre mikroprosessorer på den tiden

Prototype- og eksperimenteringsdatamaskiner

mikrodatamaskiner

Referanser

  1. ^ "MONSter 6502: Den klassiske 8-bits prosessoren, bygget i massiv skala – NeoTeo" . www.neoteo.com . Hentet 14. juli 2022 . 
  2. Toor, Amar (21. mai 2012). "RedPower 2 mod bringer fullt emulert 6502 CPU til Minecraft" . The Verge (på engelsk) . Hentet 14. juli 2022 . 
  3. ^ Av (20. mai 2012). "Bygge en 6502 i Minecraft" . Hackaday (på amerikansk engelsk) . Hentet 14. juli 2022 . 

Eksterne lenker