MOS 6502

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
MOS 6502
Unități centrale de procesare
MOS 6502AD 4585 top.jpg
Procesorul MOS 6502 într - un container DIL-40 din plastic.
Produs 1975
Proiectat de Tehnologie MOS
Aplicații calculator acasă , arcade
Specificatii tehnice
Frecvența procesorului 1 MHz / 2 MHz
Set de instructiuni MOS 6502
Microarhitectura 8 biți
Pachet DIP40

MOS 6502 este un microprocesor la 8 biți prezentate de MOS Technology în septembrie anul 1975 .

Împreună cu Z80 din iulie 1976 a fost utilizat în multe produse comercializate la sfârșitul anilor șaptezeci și optzeci de ani , cum ar fi jocuri arcade și console de acasă , personale și calculatoare acasă , cum ar fi Apple II și Commodore VIC-20 . [1] A fost produs sub licență de către multe companii, printre care Rockwell International si Synertek . Deoarece 6502 MOS derivă diferite procesoare, inclusiv includ 6507 MOS , utilizat în consola Atari 2600 , The 6509 MOS , utilizat în linia de calculatoare Commodore CBM , iar 6510 MOS , utilizat ca un procesor al Commodore 64 . [2] [3]

Istorie

Originile și proiectul din Motorola

Die din 6502 MOS.

Cip a fost proiectat de același grup care a dezvoltat 6501 MOS și care a inclus mai multe dintre inginerii care au lucrat din anul 1971 privind Motorola 6800 , inclusiv Chuck Peddle și Bill Mensch , pãrãsi în masă de la Motorola în 1974 . [4]

Peddle promovase comercial modelul 6800 și vizitase mulți clienți potențiali pentru a introduce microprocesorul, destinat utilizării în sistemele încorporate. În ciuda impresiilor favorabile, procesorul nu a vândut așa cum era de așteptat, deoarece prețul introductiv de 360 ​​USD a fost considerat excesiv de mare - mulți clienți au considerat că prețul de 25 USD pe cip este corect. Prin urmare, Peddle i-a propus companiei Motorola să dezvolte o versiune slabă a modelului 6800 care ar putea fi vândută la acel preț, dar conducerea nu a acceptat sugestia sa. [5] [6] [7]

În ciuda lipsei de interes din partea conducerii superioare, Peddle a început să lucreze la această idee pe cont propriu. Noul procesor a fost similar cu 6800: modul în care acest lucru a folosit câteva înregistrări , dar a avut doar un singur acumulator (6800 avea 2: registrele A și B). Comparativ cu modelul 6800, modelul 6502 a introdus mai multe moduri de adresare noi, permițând utilizarea registrelor sale index și a stivei foarte eficient: de exemplu, cu stiva a fost posibilă accesarea celulelor de memorie situate în intervalul de adrese 256-511 (hexazecimal: $ 100- $ 1FF), în timp ce unele instrucțiuni ar putea accesa direct celulele de memorie în intervalul 0-255 (hexazecimal: $ 00- $ FF), așa-numita „ pagină zero ”, folosind doar 1 octet ca adresă. [8] Noul cip a fost capabil de a efectua calcule aritmetice în BCD (zecimal codificat binar) [9] și a avut un generator de ceas interior. [10]

În ciuda dezaprobării conducerii superioare a Motorola, grupul condus de Peddle a continuat să lucreze la proiect, în același timp crescând nemulțumirea față de lipsa de sprijin pe care au primit-o. În cele din urmă, conducerea a decis să oprească dezvoltarea noului cip, ca răspuns, Peddle și mai mulți dintre colegii săi au părăsit Motorola în căutarea unei companii care ar fi interesată să producă un astfel de cip. [6]

Dezvoltatorii modelului 6800 trec la tehnologia MOS

Peddle a luat contact cu MOS Technology , un mic producător de circuite integrate la acea vreme, fondat de Allen-Bradley pentru a produce procesoare de calculatoare electronice în numele Texas Instruments , dar care s-a orientat și către producerea altor tipuri de cipuri atunci când acesta din urmă, în pentru a reduce costurile produselor sale, începuse să producă propriile produse integrate. Una dintre cele mai populare produse de MOS Technology a fost o replică a unui singur cip a popularului joc Pong . În august 1974 Peddle și alte 7 ingineri Motorola a mers pentru a lucra la MOS Technology: Bill Mensch , Harry Bawcum, Ray Hirt, Terry Holdt, Mike James, Will Mathis și Rod Orgill. [4]

Peddle și grupul său final au dezvoltat ideea lor care a luat forma în două microprocesoare noi care erau compatibile cu cipurile periferice de la Motorola: 6501 MOS , proiectat de Rod Orgill, care ar putea fi introdus în copitele 6800, deoarece pinout de nivel compatibil cu acesta din urmă, și MOS 6502, proiectat de Bill Mensch, similar cu precedentul, dar cu un pinout diferit și un circuit generator de ceas integrat. Aceste cipuri nu puteau executa programe scrise pentru 6800 deoarece aveau o arhitectură și un set de instrucțiuni diferite.

Noile procesoare au fost promovate pe scară largă în diverse reviste: o reclama a aparut in numarul din luna iulie a Electronics [11] , o alta a celei august EE Times, [12] ; Au urmat apoi alte anunțuri de EDN (20/09/1975), News Electronic (11/03/1975) și Byte (noiembrie 1975). Anunțurile de 6501 au apărut în diverse publicații în cursul lunii august 1975: MOS Technology a anunțat prezentarea de chips - uri la târg WESCON electronice din San Francisco , care va avea loc la 16 septembrie la 19, 1975, în cazul în care ar fi posibil de a cumpăra microprocesor la 25 $ [13] în anunțurile septembrie , de asemenea , acoperite 6502, care a fost anunțat în timpul WESCON întotdeauna disponibil pentru 25 $ , în timp ce 6501 a fost riprezzato la 20 $ [14]

Prezentarea modelului 6502

Publicitate pentru MOS 6501 și 6502.

La WESCON, modelul 6502 avea un preț de 25 USD. MOS Technology avea un stand cu un container mare plin de așchii. Întrucât nu reușise să aducă suficiente exemplare de lucru, a decis să umple recipientul cu așchii defecte și să le pună pe cele de lucru, dând astfel impresia că fabricile ei erau deja capabile să susțină o producție de volum industrial. [15] În același târg 6800 și " Intel 8080 au fost puse în vânzare pentru $ 179. [16] MOS 6502 a fost pus în vânzare la un preț de 25 $, [14] a fost cel mai ieftin CPU disponibile pe piață, costa mai puțin de o șesime din modelele concurente: de exemplu, Motorola 6800 a fost vanduta la $ 175. [17] la oamenii care încep crezut că prețul 6502 a fost greșit sau a fost în spatele o înșelătorie , dar în cursul târgului au văzut că atât Motorola și Intel a scăzut prețul de chips - uri lor de la $ 69 [18] [19]

Această reducere a prețului a legitimat modelul 6502, care a început să fie vândut cu sute de unități. [15]

Procesul dintre Motorola și MOS Technology

După ce WESCON MOS Technology a fost menționată în noiembrie 1975 de Motorola: [20] aceasta din urmă a susținut că cei 8 foști angajați ai săi au folosit informații tehnice dezvoltate la birourile lor pentru a proiecta microprocesoarele 6501 și 6502. citând sprijinul MOS Technology Allen-Bradley , considerând, de asemenea, că Cealaltă zonă de interes a MOS Technology, cipurile pentru calculatoare, nu se descurca bine din cauza unui război de preț purtat de Texas Instruments împotriva altor producători, a decis să limiteze posibilele pierderi și și-a vândut acțiunile fondatorilor companiei. [4]

Cazul a fost soluționat în luna mai 1976 de cu o tehnologie MOS 6501 , care a decis să elimine cip care ar putea fi montate în mufele de 6800 pentru a cumpăra licențele de chips - uri periferice de la Motorola. [21] [22]

MOS KIM-1

KIM-1 MOS (1975).

Aranjați probleme juridice și a primit un răspuns bun la WESCON, MOS a trebuit să se gândească la modul de a împinge dezvoltatorii pentru a testa noul său procesor 6502. Peddle apoi a dezvoltat un minicomputer numit MDT-650 ( de la „Terminal Dezvoltare microcomputer“) , în timp ce un alt grup planificat KIM -1 . KIM-1 a fost pus pe piață și, spre uimirea designerilor săi, a fost cumparat nu numai de ingineri și experți , dar , de asemenea , de multe pasionaților . Alte sisteme similare, cum ar fi SYM-1 din Synertek și mai flexibil AIM 65 Rockwell (care a produs atât licența 6502), sa bucurat de același succes comercial.

Folosiți și utilizați

Informatică

Una dintre primele utilizări ale noului procesor a fost ca CPU al computerului Apple I prezentat în 1976 de nou format Apple a , o companie fondata de Steve Jobs și Steve Wozniak . 6502 a fost utilizată mai târziu în Commodore PET și în " Apple II din 1977 , și în alte câteva calculator la 8 biți , inclusiv familia de calculator 8 biți Atari , seria BBC Micro derivate din 8 biți de sisteme Acorn Computers , The Commodore VIC-20 și computerul Ohio științific și Oric . [23] Commodore 64 a folosit un derivat al 6502, MOS 6510 , dar unitatea sa de model 1541 a folosit un 6502 la 2 MHz pentru a executa codul DOS încorporat în unitate în sine și a trebuit să fie rapid (dublul unității CPU C64 ) pentru a satisface nevoile temporale de transfer de date de pe dischetă.

Industrie

La utilizarea civilă și de agrement noi sunt unite printr - o producție remarcabilă a sistemelor de control, inclusiv industriale, având în vedere lipsa de microcontrolere de calitate (mediocre 8048 data în 1976 și performanța necorespunzătoare a avut de multe ori). Astăzi este încă produs ca un procesor pentru sisteme integrate prin Western Design Center , o companie fondata de Bill Mensch , unul dintre designerii originale cip.

Jocuri video

O altă utilizare importantă a 6502 și a derivaților săi a fost în aparatele de jocuri video. Prima dintre aceste dispozitive folosite pentru o familie 6502 de chips - uri a fost consola Atari 2600 : a utilizat 6507 MOS , o versiune limitată a 6502 , cu o magistrala de adrese redusă și un rezultat pachet cu doar 28 de picioare. Din cauza acestei limitare, 6507 ar putea adresa doar 8 KB de memorie, dar pachetul redus, prin reducerea dimensiunii și a costurilor. În ciuda acestui fapt, Atari 2600 a fost vândut în 30 de milioane de unități, fiecare cu un 6507 în interior.

O altă consolă bazată pe un cip 6502 a fost derivat din popularul Nintendo Famicom , prezentat de Nintendo în 1983 : Versiunea pentru consola a fost fabricat de Ricoh , care în comparație cu design original, nu a gestionat aritmetică BCD , dar a oferit 22 de busteni suplimentare (memorie -mapped) pentru gestionarea sunetului, citirea gamepad - ul și " acces direct la memorie pentru sprite . Un astfel de cip, numit 2A03 în sistemele NTSC și 2A07 în cele PAL (diferența avea reședința în diferite divizor ceas intern utilizat pentru a genera imaginea și sunetul datorită frecvenței diferite PAL și semnale NTSC), a fost produs exclusiv pentru Nintendo.

Aceleași arcade , foarte populare la acea vreme, erau echipate cu unul sau mai multe procesoare, adesea 6502, iar Atari folosea aproape exclusiv acest CPU, deși la unele, inclusiv Tempest sau Battlezone, au adăugat un coprocesor bazat pe felii de biți AMD Am2900 la puterea de calcul insuficientă a modelului 6502 care trebuie să funcționeze în timp real

Descriere

Pinout al MOS 6502 (DIP40)

6502 este un procesor la 8 biți , cu o magistrală de adrese de 16 biți , și , prin urmare , în măsură să abordeze în mod direct până la 64K de memorie. Pe plan intern se execută în același set de viteză de ceas extern, de obicei 1 - 2 MHz : de exemplu, Z80 împarte pe plan intern ceasul extern 4. În ciuda performanțelor sale mai mici de ceas este comparabil cu cele ale altor procesoare cu frecvențe mai mari: ceea ce se datorează mai ales a adoptat arhitectura internă, care se bazează pe o conductă statică și pe faptul că operează cu un ciclu în 2 etape și nu de numărare cicluri de ceas. Ca multe alte CPU - uri din timp, logica NMOS 6502 nu este secvențiat din microcod rezidente în ROM , dar folosește pentru decodare și secvențierea instrucțiunilor unui PLA preprogramat pentru a masca strat (care ocupă aproximativ 15% din suprafața cipului). Ca și alte microprocesoare pe 8 biți, 6502 efectuează o suprapunere limitată a operațiunilor de preluarea și executarea instrucțiunilor.

Frecvența de ceas redusă a redus constrângerile la viteza perifericelor conectate la CPU, deoarece doar 50% din ciclul de ceas era disponibil pentru acces la memorie (datorită designului asincron al procesorului, acest procent variază foarte mult între diferite versiuni de cipuri) . Acest lucru era important într-un moment în care amintirile fiabile aveau timpi de acces în intervalul 450-250 ns. 6502 a fost conceput pentru a fi simplu și ieftin, iar reducerea costurilor întregului sistem a fost un factor foarte important în concurența pe piața computerelor de acasă și a consolelor de jocuri video.

Ca și precursorul său, Motorola 6800 , 6502 a avut câteva înregistrări : în momentul în care 6502 a fost proiectat numărul de tranzistori într - un influivano lot conținut integrat cu privire la costul său și să mențină numărul lor reduse au contribuit la stabilizarea costurilor. În plus, RAM extern a fost mai rapid decât un procesor, asa ca a fost sensibil pentru a optimiza arhitectura de acces la memorie , mai degrabă decât să crească numărul registrelor cip. 6502 a fost conceput cu scopul de a fi foarte economic: de aceea au fost folosite aproximativ 4.000 de tranzistori, in comparatie cu aproximativ 2.300 de " Intel 4004 , 1971 și aproximativ 8.500 de Z80 . [24]

6800 design -ul original a inclus o suprafață de siliciu de 4572 mm înălțime de 20,9 mm 5,4 mm² devine egală cu 29 mm² [25] în timp ce proiectul de 6502 a inclus 3,9 x 4,3 mm egal cu 16,6 mm².

Jurnalele 6502 includ:

Stiva este pe 1 pagina de memorie mapate (adrese de la $0100 la $01FF , 256 - 511 ). Software - ul accesează stiva de 4 instrucțiuni care vă permit să introduceți ( PUSH ) sau recuperarea ( PULL ) valoarea acumulatorului sau a statutului de registru. Același stivă este utilizat de instrucțiunile de gestionare sub rutină JSR (Salt la sub-rutină) și RTS ( de la subrutine de retur) și prin procedura de manipulare întrerupere .

6502 utilizează registrul stivă și a celor index cu diferite moduri de adresare , inclusiv un mod rapid numit „pagina directă“ sau „pagina zero“, similar cu cel al PDP-8 , care permite accesul la locațiile de memorie ale paginii zero ( adrese $0000 - $00FF , cu 0 - 255 ) cu utilizarea unei adrese format din numai 8 biți, economisind ciclul necesar în mod normal pentru a încărca adresa de mare octet în registrul de index. O mare parte din codul scris pentru 6502 exploatează adesea această particularitate și folosește aceste locații de memorie în același mod în care registrele interne sunt utilizate pe alte procesoare. Pe unele calculatoare bazate pe 6502, ca Commodore VIC-20, sistemul de operare utilizat aproape toate locațiile paginii de zero, lăsând câteva utilizator liber. [26]

Modurile de adresare sunt, de asemenea, „implicite”, contribuind cu 1 octet la dimensiunea instrucțiunii. Acestea sunt (între paranteze ocuparea totală a memoriei):

  • absolute, "absolute" (3 octeți)
  • Absolute "indexată absolute" indexate (3 bytes)
  • pagina-indexată zero " indexate la pagina zero" (2 octeți)
  • legate, "relativ" (2 octeți)
  • acumulator, „acumulator (1 byte)
  • indirect, x, "indirect, x", și indirect, y, "indirect, y" (2 octeți)
  • imediate, "imediate" (2 octeți)

Modul absolut este un mod de uz general: instrucțiunile de salt utilizează o adresă semnată de 8 biți în intervalul -128 / +127, indicând astfel o adresă de până la 128 de octeți înainte sau 127 de octeți după instrucțiunea de adresare (care se traduce în intervalul - 126 / +129 cu privire la celula de pornire a instrucțiunii de salt). Modul acumulator folosește acumulatorul ca adresă reală și nu necesită date ca operand. Modul imediat utilizează un operand literal pe 8 biți.

Metodele indirecte sunt utile pentru iterații și a procesului matrice de date . Cu modul „(indirect), y“ la 5/6 cicluri, se adaugă Y registru de 8 biți la o adresă de 16 biți în pagina zero , indicată de numai 1 octet urmat de ' opcode . Prin urmare, registrul Y este un registru „index” în sensul că este utilizat pentru a stoca „indexul” curent, spre deosebire de registrul X al 6800 unde o adresă de bază este stocată direct și la care un offset poate accesa direct). Este nevoie de doar încă 2 cicluri pentru a crește registrul index și a itera matricea octet cu octet. În modul rar (indirect), x, adresa efectivă pentru operație se găsește în pagina zero la adresa compusă prin adăugarea celui de-al doilea octet al instrucțiunii la conținutul registrului X. Folosind modurile indexate, pagina zero funcționează la fel ca un set de 128 de registri de index suplimentari.

6502 este capabil de operații de adunare și scădere performante este că binar BCD . Plasarea CPU în modul BCD cu studii SED rezultatele operațiunilor sunt exprimate în format zecimal: de exemplu, suma de $99 + $01 se întoarce $00 la pavilionul restului care este setat la 1, în timp ce în binar (educație CLD ) aceeași operațiune revine $9A cu steagul restului care este setat la 0. în afară de " Atari BASIC , această metodă a fost folosită foarte rar în computerele de acasă.

6502 a fost , de asemenea , menționată ca fiind unul dintre primele procesoare RISC “, [27] [28] , din cauza sale set de instrucțiuni eficient, simplu și aproape ortogonale ( mai multe instrucțiuni pot funcționa cu diferite moduri de adresare) , precum și pentru ei 256" registre „pagina de zero. 6502 nu este încă punct de vedere tehnic un procesor RISC ca operațiile matematice pot citi orice celulă de memorie (nu doar cele din pagina zero) și instrucțiuni diferite (cum ar fi INC , ROL , etc ...) se schimbă , de asemenea , de memorie , contrar filosofia RISC „încărcare / magazin“ . de asemenea , rectangularitatea instrucțiunilor este adesea asociat cu „ CISC .“ , în termeni de performanță 6502 este încă comportă bine, în comparație cu alte CPU - uri ale timpului ca Z80 , care a folosit un ceas mult mai mare ( de obicei 3.5-4 MHz) , iar 6502 este creditat ca fiind inspirația procesoarelor RISC , cum ar fi ARM , [28] , deși o astfel de inspirație a fost limitat la punerea în aplicare destul de simplu decât arhitecturii, care este foarte diferită de cea a ARM-urilor.

Eșantion de cod

Următoarele este clasic program de lume Bună ziua scris în codul de asamblare 6502 pentru calculatoare cu Kernal Commodore :

 A_CR = $ 0D; retur de car
 BSOUT = $ FFD2; în rutina Kernal ROM care scrie dispozitivul de ieșire
 ;
 LDX # $ 00; inițializează indexul în X-registru
 ;
 LOOP LDA MSG, X, se spune în mesajul text
 BEQ LoopEnd, sfârșitul mesajului
 ;
 JSR BSOUT, imprimarea unui caracter
 INX
 BNE LOOP; repetă
 ;
 LoopEnd RTS; iese din subrutina
 ;
 MSG .BYT „Bună ziua, lume! “, A_CR, $ 00

Interfețe dedicate

Excluderea 6522 MOS și alte câteva componente, MOS Technology folosit chips - uri periferice derivate din cele ale familiei 6800:

  • MOS 6520 PIA (adaptor de interfață paralelă) - aproape clona a Motorola 6821 Motorola: 2 are porturi de 8 biți cu direcționalitate la adresabil biți
  • MOS 6522 VIA (Versatile Interface Adapter) - este modelul 6520 cu adăugarea de porturi seriale, temporizatoare și alte îmbunătățiri notabile. La momentul respectiv, costă aproximativ ¼ din Motorola 6821
  • MOS 6526 CIA (adaptor de interfață Complex) - Evoluția 6522, Commodore 64 a fost utilizat pentru interfețele externe și de a gestiona tastatura
  • MOS 6545 CRTC (CRT Controller) - Extensiile portul video cu o foarte ușoară în comparație cu Motorola 6845 (ca întotdeauna pentru motive juridice)
  • MOS 6551 Acia (asincronă Communications Adapter Interface) - derivat din Motorola 6850, serviciul efectuează UART și gestionează protocolul RS-232

Variante și derivate

Din 6502, au fost produse mai multe variante și cipuri derivate:

  • MOS 6507 : el a prezentat un autobuz adresa redusă capabil să facă doar 8 KB. Acest cip a fost folosit doar în consola Atari 2600 . [29]
  • MOS 6509 : magistrala de adrese a fost extins la 20 de biți. Odată cu integrarea circuitele de pe cip pentru gestionarea comutării bancare , The 6509 ar putea adresa de până la 1 MB de memorie. Acesta a fost folosit doar pe Commodore CBM-II . [30]
  • MOS 6510 : a fost utilizat ca CPU populare Commodore 64 . Comparativ cu 6502, acesta avea un port I / O suplimentar și un pin pentru ieșirea semnalului de ceas.
  • WDC 65C02 : fabricat de Western Design Center , a fost o 6502 de tehnologie CMOS cu mai Opcode și unele bug - uri corectate proiectul inițial (cum ar fi steagurile care nu erau, contrar documentației, actualizate după anumite operațiuni).
  • Ricoh 2A03 : varianta de 6502 fara modul BCD, utilizate exclusiv în consola Nintendo Entertainment System . [31]

MOS 6512

MOS 6512 este o variantă care funcționează cu un ceas extern: original 6502 utilizări, de fapt, un generator intern pentru a crea semnalele de ceas „Faza 1“ (Φ1) și „Faza 2“ (Φ2). A fost folosit în BBC Micro B + 64 , unde utilizarea ceasului extern a permis procesorului să funcționeze normal la 2 MHz, pentru a-l aduce la 1 MHz atunci când a trebuit să acceseze periferice lente precum magistrala de expansiune, ADC ( Convertor analog la digital) și VIA. [32]

Derivate pe 16 biți

Western Design Center a proiectat, de asemenea, o versiune pe 16 biți a 65C02, WDC 65C816 , precum și WDC 68C082 , o versiune hibridă bazată pe un nucleu 65C816 capabil să adreseze 64 KB de memorie și cu un pinout compatibil cu cel al modelului 6502 / 65C02: ar putea să-l înlocuiască pe acesta din urmă și să funcționeze ca un 65C02 normal, dar ar putea fi, de asemenea, configurat prin software pentru a funcționa cu registrele interne de 16 biți "A" și "X". 65C802 nu a avut prea multă difuzie și nu mai este în producție. 65C816 a fost utilizat în consola Super Nintendo Entertainment System și în " Apple a IIGS și este încă în producție. [33]

Mitsubishi a produs 65816, un microcontroler cu o arhitectură similară cu 65C816, cu toate că nu 100% compatibil cu ea.

Synertek a publicat fișa de date a „SY6516, o versiune de 16-biți de 6502 , dar nu a fost niciodată pus pe piață. [34]

Probleme în proiect

Se știe că designul original al modelului 6502 și derivatele sale au o serie de instrucțiuni nedocumentate, care variază foarte mult de la cip la cip, în funcție de producător. În 6502 decodarea instrucțiunilor este implementată într-o logică programabilă (similară unui PLA ) care definește doar 151 din cele 256 de coduri opționale posibile: restul de 105 provoacă efecte ciudate și imprevizibile (de exemplu blocarea imediată a procesorului, executarea diverse operații valabile în același timp) sau pur și simplu nu fac nimic. Est Casa Software a dezvoltat „Trap65“, un dispozitiv care ar putea fi inserat între procesor și de soclu pentru a capta aceste opcod nedocumentat și să le transforme în instrucțiuni BRK (care generează o întrerupere de software). Unii programatori utilizate această caracteristică pentru a extinde setul de instrucțiuni de 6502 de scriere rutine pentru Opcodes fara documente care au fost executate de către interceptarea vectori de educație BRK , plasat la $FFFE . Centrul de design occidental înlocuit în loc de instrucțiuni opcod lui 65C02 toate ilegale cu NOP , deși cu ori și ocuparea forței de muncă care rulează în diferite octeți.

Instrucțiunea de salt indirect JMP ( byte basso dell'indirizzo ) are un caz care nu funcționează cum era de așteptat în cazul în care octet scăzută din valoarea conține $FF (astfel încât fiecare adresă în formatul $xxFF ), procesorul nu va efectua „instrucțiunile stocate în adresa $xxFF / $xxFF+1 , dar cel stocat în $xxFF / $xx00 . Acest bug afectează toate cip în versiunea NMOS , dar nu 6502 și derivații săi produse în logica CMOS. [35]

Modul de adresare indirectă bazată pe Y registru ( (Ind),Y ) este parțial defectă. Dacă adresa din pagina zero este $FF (adică ultima locație de memorie a paginii zero) procesorul nu execută date de la adresa indicată de $00FF și $0100 + Y ci în schimb de $00FF și $0000 + Y. Toate Cipurile logice NMOS sunt afectate de această eroare, care a fost remediată în multe dintre cipurile logice CMOS, cu excepția 65C02.

Metoda de adresare indirectă bazată pe X-registru ( (Ind),X ) este , de asemenea , în cazul în defect adresa specificată în pagina zero , este de $FF : problema este identic cu cazul precedent.

Modul de adresare indexat al versiunilor NMOS ale modelului 6502 prezintă o problemă în cazul adreselor din marginile paginilor: în acest caz se efectuează o citire suplimentară a unei adrese nevalide. Această eroare poate provoca probleme dacă accesați hardware-ul care funcționează în timpul unei citiri (de exemplu, resetarea unui cronometru sau a semnalizărilor IRQ, trimiterea unui semnal de sincronizare pe o linie I / O etc.). Această eroare a fost remediată în versiunile CMOS, unde procesorul efectuează o citire suplimentară a ultimului octet de instrucțiuni.

Citiți / modificați / scrieți instrucțiuni la o anumită adresă efectuați 1 ciclu de citire și 2 cicluri de scriere. Acest lucru poate cauza probleme în timpul celui de-al doilea ciclu de scriere dacă accesați hardware care funcționează în timpul scrierii. Acest defect a fost remediat în versiunea CMOS a modelului 6502, în care procesorul efectuează 2 cicluri de citire și 1 scriere.

Semnalizatoarele de stare „N” (rezultat negativ), „V” (semnal de deversare ) și „Z” (rezultat zero) nu sunt valabile atunci când procesorul efectuează operații aritmetice în modul BCD, deoarece aceste semnalizări reflectă starea operațiunilor în binar și nu în modul BCD. Această limitare a fost eliminată în versiunile CMOS. Această eroare a fost folosită în trecut ca test pentru a verifica dacă CPU-ul se afla în logica NMOS sau CMOS. [36]

Când procesorul este în modul BCD în timp ce se efectuează o întrerupere hardware, acesta nu revine la modul binar. Acest defect poate genera erori greu de găsit în codul rutinelor de întrerupere dacă acestea nu deselectează modul BCD înainte de a efectua operații aritmetice. Un sistem de operare afectat de această problemă a fost Kernal Commodore 64, care nu face acest procesor defect. Și acest lucru a fost remediat în versiunile CMOS.

Pinul „SO” (Set Overflow) a fost destinat utilizării în drivere pentru dispozitive de mare viteză: atunci când s-a aplicat o tensiune (semnal „HIGH”) semnalizatorul de procesare „V” a fost setat imediat la 1. Dacă dacă această caracteristică a funcționat bine , ar fi eliminat o instrucțiune de încărcare de la driverul dispozitivului, reducând numărul de instrucțiuni dintr-un ciclu de transfer de date cu 25%, verificând evident proiectarea sistemului foarte atent pentru a evita modificarea procesului de calcul. În practică, însă, această caracteristică nu a fost practic folosită niciodată.

Setul de instrucțiuni 6502 include BRK ) (opcod $00 ), care este punct de vedere tehnic un software de întrerupere (educație similară SWI Motorola 6800 și procesoare ARM). BRK este adesea folosit pentru a sparge executarea unui program și a începe un editor în limbaj mașină pentru testarea și depanarea în timpul dezvoltării de software. Acesta poate fi , de asemenea , utilizat pentru executarea programului de traseu , folosind un tabel salt simplu (similar cu modul în care " Intel 8088 și derivații săi se ocupe de întreruperile de software de număr). Sfortunatamente, se si verifica un interrupt hardware mentre il processore sta eseguendo un'istruzione BRK allora il 6502 ignora quest'ultima ed esegue direttamente il primo. Questo difetto è stato corretto nelle versioni CMOS del processore.

Anche se non sono propriamente un bug, i comportamenti delle istruzioni JSR (Jump to SubRoutine) e RTS (ReTurn from Subroutine) possono sorprendere. L'indirizzo del punto da cui si esegue il salto inserito nello stack da JSR e recuperato poi da RTS per riprendere l'esecuzione è quello dell'ultimo byte della stessa istruzione JSR e non quello dell'indirizzo dell'istruzione successiva. Ciò accade perché la copia del valore (dal registro "PC" allo stack e viceversa) viene eseguito prima che sia incrementato automaticamente il registro puntatore di programma "PC", operazione che viene eseguita al termine di ogni istruzione. Questo modo di operare non inficia però la corretta esecuzione del salto perché l'indirizzo memorizzato in anticipo nello stack viene poi aggiornato con un incremento di 1 al termine dell'istruzione RTS . [37] Questa caratteristica non viene solitamente notata a meno che non si estragga l'indirizzo di rientro per prelevare dei parametri nel flusso del codice (una pratica comune nella programmazione del 6502). Tutti i derivati del 6502 presentano questo comportamento.

Una limitazione dello stack è il fatto che il suo puntatore "S" è ad 8 bit, per cui lo stack può contenere solo 256 valori.

Cloni nel Blocco Sovietico

Nel Blocco Sovietico venne prodotto un gran numero di microprocessori clonati da quelli Occidentali e tra questi il CM630 o CM630P fu un puro clone del 6502 realizzato dalla MICRO ELEKTRONIKA BULGARIA

Acceleratori

Diversi utenti iniziarono a cercare modi di velocizzare i propri computer. Siccome il 6502 preleva il clock dall'esterno, aumentarne la velocità era più semplice che cercare un chip più veloce che fosse compatibile. Molti costruttori iniziarono a fabbricare dispositivi "acceleratori" composti da un piccolo quantitativo di RAM ad alta velocità e dalla circuiteria necessaria a sincronizzare il 6502 "accelerato" con la RAM e le periferiche originali dei computer. Ad esempio, il floppy disk drive dell' Apple II aveva tempi di accesso molto precisi, sincronizzati tramite la gestione diretta dei registri di I/O del processore: per questo motivo gli acceleratori per l'Apple II riportavano la frequenza della CPU al valore originale di 1 MHz durante le operazioni di accesso ai dischi.

I primi acceleratori furono realizzati come schede aggiuntive ma diversi acceleratori che comparvero in seguito integrarono in un package delle dimensioni del chip originale non solo il 6502 ma anche tutta la circuiteria accessoria. Un esempio di questo tipo di acceleratori è lo Zip Chip per l'Apple II, che in un unico package inseribile nello zoccolo del 6502 in formato DIP40 integrava la CPU e 350 circuiti accessori. Lo Zip Chip elevava la frequenza del 6502 a 4 od 8 MHz, a seconda dei modelli. [38] [39]

Simulatori

Un simulatore funzionante del 6502 è stato realizzato in JavaScript dal gruppo visual6502.org utilizzando la tecnica del reverse engineering. Infatti gli schemi tecnici originali della MOS sono stati disegnati a mano e andati perduti. Il gruppo diretto da Michael Steil è riuscito nell'intento ricavando delle immagini ad alta definizione dei vari strati del processore mediante acidi e fotografando gli stessi mediante micro fotografia. Il tutto è stato presentato alla ventisettesima edizione del Chaos Communication Congress a Berlino. [40] [41] [42] [43]

Nella cultura di massa

Nel film di fantascienza Terminator ( 1984 ) ad un certo punto viene proiettato sullo schermo ciò che il robot T-800 vede attraverso i suoi occhi artificiali: all'immagine appare sovrapposto del codice assembly del 6502, che proviene da alcuni programmi per l'Apple II, di cui uno comparso su una rivista per computer denominata Nibble . [44]

Nella sitcom animata Futurama il co-protagonista Bender , un robot androide del 4° millennio, afferma in una puntata di possedere un 6502 come "cervello". David X. Cohen , produttore televisivo e principale autore della serie ha affermato che lui ed i suoi amici David Borden e David Schiminovich scrissero durante il periodo scolastico un compilatore in assembly 6502 per un linguaggio di loro creazione (chiamato "FLEET") per l' Apple II Plus , e ciò lo ha portato ad inserire detta citazione nella sitcom. [45]

Galleria d'immagini

Note

  1. ^ Longley, Shain , p. 147 .
    ( EN )

    «Until recently 8 bit machines were dominated by two microprocessors — the Z80 and the 6502»

    ( IT )

    «Fino a poco tempo fa le macchine ad 8 bit furono dominate da 2 microprocessori: lo Z80 ed il 6502.»

  2. ^ MOS 6510 , su cpu-collection.de . URL consultato il 24 settembre 2015 .
    ( EN )

    «The MOS6510 is a 6502 with an additional 6 Bit bidirectional I/O Port. (…) The 6510 that was built in the C64 ran at 1 Mhz (…)»

    ( IT )

    «Il MOS 6510 è un 6502 con una porta I/O a 6 bit aggiuntiva. (…) Il 6510 che era incluso nel C64 lavorava a 1 MHz (…)»

    ( Cpu-collection.de )
  3. ^ Scheda tecnica del MOS 6510 , Commodore Semiconductor Group.
    ( EN )

    «The internal processor architecture is identical to the Commodore Semiconductor Group 6502 to provide software compatibility.»

    ( IT )

    «L'architettura interna del processore è identica a quella del Commodore Semiconductor Group 6502 per garantire la compatibilità software.»

    ( Commodore Semiconductor Group )
  4. ^ a b c Brian Bagnall, 1 e 2 , in On the Edge: The Spectacular Rise And Fall of Commodore , Winnipeg, Manitoba, Variant Press, 2006, pp. 9–12, ISBN 0-9738649-0-7 .
  5. ^ Motorola 6800 Oral History , su computerhistory.org . URL consultato il 7 febbraio 2011 (archiviato dall' url originale il 2 aprile 2012) .
  6. ^ a b Ian Matthews, The Rise of MOS Technology & The 6502 , su commodore.ca , 26 giugno 2006. URL consultato il 6 febbraio 2011 (archiviato dall' url originale il 4 ottobre 2018) .
  7. ^ Robert Sugarman, Does the Country Need A Good $20 Microprocessor? ( PDF ), in Electronic Engineering Times , 25 agosto 1975, p. 25. URL consultato il 6 febbraio 2011 (archiviato dall' url originale il 3 febbraio 2007) .
  8. ^ ( EN ) Section One: Before the Great Dark Cloud - Part V: The 650x, Another Direction (1975)… , su cpushack.com , CPU Shack. URL consultato il 25 settembre 2015 .
    ( EN )

    «Unlike the 8080 and its kind, the 6502 (and 6800) had very few registers. It was an 8 bit processor, with 16 bit address bus. Inside was one 8 bit data register, two 8 bit index registers, and an 8 bit stack pointer (stack was preset from address 256 ($100 hex) to 511 ($1FF)). It used these index and stack registers effectively, with more addressing modes, including a fast zero-page mode that accessed memory addresses from address 0 to 255 ($FF) with an 8-bit address that speeded operations (it didn't have to fetch a second byte for the address).»

    ( IT )

    «A differenza dell'[Intel]8080 e dei chip simili, il 6502 (ed il 6800) aveva molti pochi registri. Era un processore ad 8 bit, con un bus indirizzi a 16 bit. Al suo interno c'era un registro per i dati ad 8 bit, 2 registri indice ad 8 bit ed un puntatore allo stack ad 8 bit (lo stack era preimpostato dall'indirizzo 256 (esad. $100) a 511 ($1FF)). Usava questi registri indice e lo stack efficacemente, con più modalità di indirizzamento, inclusa una modalità pagina zero che accedeva gli indirizzi di memoria da 0 a 255 ($FF) con un indirizzo ad 8 bit che velocizzava le operazioni (non doveva caricare un secondo byte per l'indirizzo).»

    ( CPU Shack )
  9. ^ ( EN ) Decimal Mode , su 6502.org . URL consultato il 25 settembre 2015 .
  10. ^ ( EN ) 6500 microprocessors , Commodore Semiconductor Group.
  11. ^ Microprocessor line offers 4, 8,16 bits , in Electronics , vol. 48, n. 15, New York, McGraw-Hill, 24 luglio 1975, p. 118.
  12. ^ Robert Sugarman, Does the Country Need A Good $20 Microprocessor? ( PDF ), in EE Times , Manhasset, New York, CMP Publications, 25 agosto 1975, p. 25. URL consultato il 6 febbraio 2011 (archiviato dall' url originale il 3 febbraio 2007) .
  13. ^ MOS 6501 Microprocessor beats 'em all , in Electronics , vol. 48, n. 16, New York, McGraw-Hill, 7 agosto 1975, pp. 60–61.
  14. ^ a b MOS 6502 the second of a low cost high performance microprocessor family ( JPG ), in Computer , vol. 8, n. 9, IEEE Computer Society, settembre 1975, pp. 38–39, DOI : 10.1109/CM.1975.219074 .
  15. ^ a b Brian Bagnall, On the Edge: The Spectacular Rise and Fall of Commodore , Variant Press, 2005, p. 24.
  16. ^ James, James Advertisement , in Popular Electronics , vol. 8, n. 3, settembre 1975, p. 107.
    ( EN )

    «James is now Jameco Electronics. The 8080 CPU was $149.95, the 8008 CPU was 29.95. A 2102 1K bit static RAM was $4.95. Their price for a 8080A CPU was 37.95 in the June 1976 issue.»

    ( IT )

    «James è adesso Jameco Electronics. La CPU 8080 era a $ 149,95, la CPU 8008 era a $ 29,95. Un chip di RAM statica 2102 da 1 Kbit era a $ 4,95. Il loro prezzo per l'8080A era $ 37,95 nel numero di giugno del 1976.»

  17. ^ Motorola, All this and unbundled $69 microprocessor ( JPG ), in Electronics , vol. 48, n. 22, McGraw-Hill, 30 ottobre 1975, p. 11.
  18. ^ Motorola, All this and unbundled $69 microprocessor ( JPG ), in Electronics , vol. 48, n. 22, McGraw-Hill, 30 ottobre 1975, p. 11.
    ( EN )

    «The quantity one price for the MC6800 was reduced from $179 to $69. The previous price for 50 to 99 units was $125.»

    ( IT )

    «Il prezzo per un singolo MC6800 fu ridotto da $ 179 a $ 69. Il precedente prezzo per quantitativi da 50 a 99 chip era di $ 125 cad.»

  19. ^ Digi-Key, Pubblicità di Digi-Key , in Popular Electronics , vol. 8, n. 6, dicembre 1975, p. 124.
    ( EN )

    «The 8080A CPU was $69.50. A 2102 1K bit static RAM was $3.50. Digi-Key's price for a 8080A was $34.95 in the June 1976 issue.»

    ( IT )

    «La CPU 8080A era a $ 69,50. Un chip di RAM statica 2102 da 1 Kbit era a $ 3,50. Il prezzo di Digi-Key per un 8080A era di $ 34,95 nel numero di giugno del 1976.»

  20. ^ Motorola Sues MOS Technology ( PDF ) [ collegamento interrotto ] , in Microcomputer Digest , vol. 2, n. 6, Cupertino CA, Microcomputer Associates, dicembre 1975, p. 11.
  21. ^ MOS Technology Drops 6501 ( PDF ), in Microcomputer Digest , vol. 2, n. 11, Cupertino CA, Microcomputer Associates, maggio 1976, p. 4. URL consultato il 18 gennaio 2011 (archiviato dall' url originale l'8 gennaio 2011) .
  22. ^ Mike Teener, Politics and Intrigue , in SCCS Interface , vol. 1, n. 6, Los Angeles, Southern California Computer Society, maggio 1976, p. 58.
    ( EN )

    «So Motorola sued and just recently won an out-of-court settlement that has MOS Technology paying $200,000 and stopping production on the 6501.»

    ( IT )

    «Così Motorola ha citato ed ha recentemente vinto una causa senza passare dai tribunali che ha visto MOS Technology pagare $ 200.000 e terminare la produzione del 6501.»

  23. ^ Inside the Atari 2600 , su hardwaresecrets.com . URL consultato il 24 settembre 2015 .
    ( EN )

    «The 6502 was widely used at the time in several microcomputers, such as the Apple II, Atari 400, Atari 800, Commodore VIC-20, and Commodore 64, just to name the most famous ones»

    ( IT )

    «Il 6502 fu ampiamente utilizzato all'epoca in diversi microcomputer, come l'Apple II, l'Atari 400, l'Atari 800, il Commodore VIC-20 ed il Commodore 64, giusto per citare i più famosi.»

    ( Inside the Atari 2600 )
  24. ^ "How many transistors in the 6502 processor?" , su classiccmp.org , 5 maggio 2001. URL consultato il 7 febbraio 2011 (archiviato dall' url originale il 25 settembre 2010) .
  25. ^ Motorola 6800 Oral History (2008), p. 10
  26. ^ Mappa della memoria del Commodore VIC-20 ( TXT ), su zimmers.net . URL consultato il 6 febbraio 2011 .
  27. ^ Chip archeology , su compukituk101.blogspot.com , Compukit-101, 18 febbraio 2009. URL consultato il 7 febbraio 2011 .
  28. ^ a b Richard Murray, RISC vs CISC , su heyrick.co.uk , 2002. URL consultato il 7 febbraio 2011 .
  29. ^ ( EN ) Inside the Atari 2600 , su hardwaresecrets.com . URL consultato il 24 settembre 2015 .
    ( EN )

    «The Atari 2600 was based on a MOS Technology 6507 microprocessor. This CPU was a stripped-down version of the 6502 microprocessor, limited to accessing only 8 KB of memory versus 64 KB as on the 6502 and without interrupt lines; otherwise they were the same CPU.»

    ( IT )

    «L'Atari 2600 era basata sul microprocessore MOS Technology 6507. Questa CPU era una versione ridotta del microprocessore 6502, limitata nell'accesso a soli 8 KB di memoria contro i 64 KB del 6502 e senza le linee di interrupt; a parte questo erano la stessa CPU.»

    ( Inside the Atari 2600 (HardwareSecrets.com) )
  30. ^ Commodore CBM-II , su 6502.org . URL consultato il 24 settembre 2015 .
  31. ^ ( EN ) Informazioni sulla CPU Ricoh 2A03 del NES , su wiki.nesdev.com , NESdev.com. URL consultato il 24 settembre 2015 .
    ( EN )

    «The NES CPU core is based on the 6502 processor (...) It is made by Ricoh and lacks the MOS6502's decimal mode.»

    ( IT )

    «Il nocciolo della CPU del NES è basato sul processore 6502 (...) È fabbricato da Ricoh e non ha la modalità decimale del MOS 6502.»

    ( Specifiche del Ricoh 2A03 )
  32. ^ The BBC and Master Computer Public Domain Library - Inside The BBC B+ , su 8bs.com , 8-Bit Software. URL consultato il 7 febbraio 2011 .
  33. ^ Specifiche del WDC 65C816 , su westerndesigncenter.com , Western Design Center. URL consultato il 7 febbraio 2011 .
  34. ^ "Syntertek SY6516 - The chip that never existed" ( TXT ), su homepage.mac.com , Apple II Things. URL consultato il 7 febbraio 2011 (archiviato dall' url originale il 28 giugno 2010) .
  35. ^ MOS 6502 , su foldoc.org , Free Online Dictionary of Computing. URL consultato il 25 giugno 2014 .
  36. ^ Test di verifica CMOS/NMOS per i 6502 , su s-direktnet.de , Pagina su Web.Archive.org. URL consultato il 7 febbraio 2011 (archiviato dall' url originale il 2 gennaio 2008) .
  37. ^ Mark Andrews, 6 , in "Atari Roots - A Guide to Atari Assembly Language" , DATAMOST, Inc., 1984, ISBN 0-88190-171-7 .
    ( EN )

    «RTS ("pull the return address off the stack and put it in the PC and increment it by one." This will cause execution to continue where it left off.)»

    ( IT )

    «RTS ("estrae dallo stack l'indirizzo di rientro, lo inserisce nel PC e lo incrementa di 1." Questo comporterà che l'esecuzione riprenderà da dove era stata sospesa.»

  38. ^ Manuale utente dello Zip Chip ( PDF ), ZIP Technology. URL consultato il 7 febbraio 2011 .
  39. ^ Foto dello Zip Chip e della sua confezione , su nekochan.net . URL consultato il 7 febbraio 2011 (archiviato dall' url originale il 27 gennaio 2011) .
  40. ^ 6502 Images , su visual6502.org . URL consultato il 28 novembre 2017 .
  41. ^ ( EN ) CCC | Home , su ccc.de . URL consultato il 28 novembre 2017 .
  42. ^ Christiaan008, 27c3: Reverse Engineering the MOS 6502 CPU (en) , 10 gennaio 2011. URL consultato il 28 novembre 2017 .
  43. ^ Visual 6502 in JavaScript , su visual6502.org . URL consultato il 28 novembre 2017 .
  44. ^ "The 6502 in 'The Terminator'" , su pagetable.com . URL consultato il 7 febbraio 2011 .
  45. ^ "The Truth About Bender's Brain" , su spectrum.ieee.org , IEEE, 05/2009. URL consultato il 7 febbraio 2011 .

Bibliografia

Monografie in italiano

Monografie in inglese

Capitoli in opere generali

Articoli in rivista

  • ( EN ) Robert Sugarman, Does the Country Need a Good $20 Microprocessor? ( PDF ), in Electrical Engineering Times , 25 agosto 1975, p. 25. URL consultato l'8 febbraio 2011 ( archiviato il 3 febbraio 2007) .
  • ( EN ) 3rd Generation Microprocessor ( PDF ), in Microcomputer Digest , vol. 2, n. 2, Cupertino, California, Microcomputer Associates, 08/1975, pp. 1-3. URL consultato il 5 maggio 2021 ( archiviato il 4 luglio 2009) .
  • ( EN ) Daniel Fylstra, Son of Motorola (or the $20 CPU Chip) , in BYTE , vol. 1, n. 3, Peterborough, New York, Green Publishing, 11/1975, pp. 56-62.
  • Parliamo un po' del 6502 ( JPG ), in Bit , anno 2, n. 5, Milano, Gruppo Editoriale Jackson, novembre/dicembre 1979, pp. 35-40, ISSN 0392-8837 ( WC · ACNP ) .

Collegamenti esterni

Informazioni generali

Caratteristiche del set di istruzioni

Emulatori e simulatori

Primi computer basati sul 6502

Acceleratori hardware

Hardware

Altri progetti

Controllo di autorità LCCN ( EN ) sh85000011 · GND ( DE ) 4120731-2 · BNF ( FR ) cb11953064v (data) · BNE ( ES ) XX527727 (data)
Informatica Portale Informatica : accedi alle voci di Wikipedia che trattano di informatica