Eigenlijk, tenzij er daadwerkelijke ontwerpnotities van WDC beschikbaar zijn, is de vraag eigenlijk een te lang voor het titelveld: “Wat zijn precies de nadelen van het hebben van een versie van de WDC 65816 met een 16-bits databus en / of niet-gemultiplexte adresbus in vergelijking met de voordelen die deze zouden opleveren? “
Alle (niet-zachte¹) versies van de WDC 65816 waarvan ik me bewust ben een externe interface hebben met een 8-bits databus en de bovenste 8 bits van de adresbus gemultiplexed op de databuspennen. Er zijn dus twee cycli nodig voor 16-bits gegevenstoegang (bijv. div id = “c619c4cdcd”>
met dem
bitset) en externe logica is vereist om de bovenste 8 bits van de adresregels te vergrendelen, wat ook extra timingbeperkingen kan introduceren .
Hierdoor past de chip wel in een 40-pins pakket, wat een redelijke optie lijkt om beschikbaar te maken, maar dat sluit niet uit dat er ook een versie in een groter pakket zit. Vier jaar eerder was de Motorola 68000 voor het eerst beschikbaar in een 64-pins DIP-pakket met aparte 24-bits adres- en 16-bits databussen, dus de technologie om dit tegen een redelijke prijs te doen, was al lang beschikbaar. En sindsdien zijn natuurlijk veel andere verpakkingen met een hoog aantal pinnen gemeengoed geworden, maar zelfs nu biedt WDC niets groter dan 44-pins (PLCC en QFP) -pakketten.
Evenmin een 40-pins pakket sluit een volledige 16-bit externe databus uit, zoals de Intel 8086 deed, met zijn 16-bit externe databus gemultiplexed op de 20 bit externe adresbus. Dit hoeft niet eens te betekenen dat er aparte 8- en 16-bits databusversies moeten worden vervaardigd: in 1990 verving Motorola de MC68008 (een 68000 met een 8-bits externe databus) door de MC68HC001, waardoor een externe databus kon worden geselecteerd width bij reset.
Dus waarom het ontbreken, zelfs tot op de dag van vandaag, aan “volledige 16-bit” externe interfaces, zoals aangeboden door andere vroege 16-bit CPU-leveranciers? Welke nadelen van de verschillende vormen van de volledige 16-bits externe interfaces mis ik?
Dat wil zeggen, chips die je van de plank kunt kopen, in tegenstelling tot FPGA- of ASIC-kernen die je kunt integreer uzelf in elk pakket dat u maar wilt.
Opmerkingen
- Zie ook retrocomputing.stackexchange.com / questions / 6124 / … , die in feite dezelfde vraag stelt vanuit een algemener in plaats van processorspecifiek perspectief
Answer
De 65816 heeft fysiek een 8-bits ALU, hoewel veel van de interne registers nu 16 bits breed zijn. Het kost daarom een extra cyclus om elke ALU-bewerking in 16-bits modus uit te voeren, en dit geeft nuttig de benodigde tijd om de extra gegevens over de databus te krijgen (die heel eenvoudig te koppelen blijft).
Daar maakt geen deel uit van de kern waar een 16-bits databus beschikbaar is om te worden blootgesteld, zelfs niet in de semi-aangepaste versies van de 65816-kern die WDC nog steeds biedt voor ontwikkelaars van embedded systemen.
Dat zou natuurlijk het is mogelijk om een nieuwe kern te ontwerpen met een bredere ALU en externe databus, en dus met betere prestaties bij 16-bits bewerkingen. Het zou zelfs mogelijk zijn om pipelining en caching in te voeren om de prestaties verder te verbeteren. Maar het resultaat zou alleen 65816 ISA-compatibel zijn; het zou geen 65816 zijn. Het zou ook groter zijn, meer energie verbruiken, duurder zijn (niet in de laatste plaats vanwege het complexere pakket dat nodig is om de bredere bus bloot te leggen) en veel minder hobbyistenvriendelijk. / p>
Opmerkingen
- Volgens zijn datasheet ( datasheets.chipdb.org/Western%20Design/w65c816s .pdf ), heeft de W65C816 een volledige 16-bits ALU.
- @StarCat Interessant punt. Als ik naar de instructietijden kijk, vraag ik me echter af waarom ze de moeite zouden doen: het lijkt erop dat ze inderdaad prima kunnen rondkomen met een 8-bit ALU. (Zelfs instructies zoals
INX
zijn nog steeds twee cycli.) Misschien beweren ze dat de ‘ weergave van de programmeur is als een 16- bit ALU (dat wil zeggen, er zijn 16-bit instructies voor het toevoegen, etc.), zoals een programmeur de Z80 ‘ s 4 vindt -bit ALU niet te onderscheiden van de 8085 ‘ s 8-bit ALU? - De 65816 heeft een 16 bit ALU. Dit is het meest zichtbaar bij het vergelijken van branches, die hetzelfde werken in zowel native als emulatiemodus (8 bit offset), maar geen straf krijgen voor het overschrijden van paginas in native mode, terwijl dit nog steeds voorkomt in emulatie (en op de 65C02). Het is ook zichtbaar bij alle directe paginabewerkingen, waarbij het overschrijden van paginas ook zonder boete wordt behandeld.DP in emulatiemodus laat verder zien dat de ALU hier eenvoudig ‘ wordt verlaagd ‘ naar 8 bit, zoals DH niet t hoeft niet op nul te staan, btu wordt genegeerd.
- @StarCat Het volledige citaat is: ” Volledige 16-bits ALU, Accumulator, Stack Pointer en Index Registers ” – die misschien gewoon onhandig geschreven zijn, maar het lijkt erop te wijzen dat alleen registers 16 bits breed zijn. De prestatiekenmerken van een 16-bits ALU zijn echter niet gemakkelijk waar te nemen in deze CPU, omdat de meeste operanden (inclusief geheugenadressen) 8 bits tegelijk uit het geheugen moeten worden geladen. Zelfs als de volledige breedte van de ALU wordt gebruikt voor berekeningen van de adresseringsmodus, merk ik op dat als de DPR niet pagina-uitgelijnd is, toegang tot directe modus een straf van 1 cyclus vereist, wat consistent is met een 8-bits ALU.
- @Raffzahn Met 16-bits indexen moet een volledige 16-bits optelling worden uitgevoerd tussen het basisadres en de indexoffset. Het lijkt erop dat dit pas kan worden gestart als het basisadres volledig is geladen, mogelijk vanwege een tekort aan interne registers. Dat er dan twee cycli nodig zijn voor een 16 + 16 optelling, maar slechts één cyclus voor een 16 + 8 optelling, toont aan dat er een 8-bits opteller met doorgifte van hogere bytes wordt gebruikt voor dit doel.
Answer
De 65816 is bedoeld als upgradepad naar bestaande 6502 klanten. Het 8-bits houden was vanuit gebruikersoogpunt een verstandige beslissing, aangezien het biedt
- Eenvoudige upgrade van bestaande ontwerpen
- Volledig compatibel met bestaande software
- Standaard 40-pins pakket heeft minder doorlopende gaten nodig en biedt een goedkopere bediening
- Er is slechts één vergrendeling nodig om het uitgebreide adresbereik te gebruiken
- Alleen standaard 8-bits externe componenten zijn nodig
Vooral de latere zijn belangrijk voor kostenoverwegingen. Voor de fabricage telt elk gat, omdat het tijd kost om te boren en dus kosten. In 1983 waren 16 bit-componenten (RAM / ROM) vrij zeldzaam en duur. Bij een 8-bits ontwerp werd een aantal standaard (EP) ROM- en RAM-chips bepaald op basis van de benodigde grootte, terwijl een 16-bits databus er altijd minstens twee van elk nodig heeft. Immers, welk ontwerp voorbij de prototypestatus is, is niet kostengevoelig. De 65xx-serie was altijd gericht op goedkope / ingebedde applicaties. In feite leek de doelmarkt veel op wat Intel voor de 8086 had gezien als een upgradepad voor 8080 / 85 gebruikers.
In tegenstelling tot Intel, dat een 16 bit CPU ontwierp en 8 bit compatibel maakte (* 1), bleef WDC 8 bit, wat logisch was voor het CPU-ontwerp omdat het de ontwikkeling vereenvoudigde vanwege
- De interne basisstructuur kan worden behouden van 65C02
- Geen wijzigingen in het genereren van basisadressen
- het is niet nodig om een 8/16 bit busprotocol toe te voegen om toegang te krijgen tot bytes in een woord
- geen behoefte aan beheer van instructiewachtrijen
Op die manier werd het hele project klein genoeg gehouden om te worden afgehandeld door middelen die een klein bedrijf als WDC zou kunnen bieden – zonder toekomst in gevaar.
Behalve dat het vergelijkbaar eenvoudig te maken is, wint een 16 bit bus niet zoveel als men in eerste instantie zou denken. Prestaties gaan tenslotte veel over geheugenbandbreedte, nietwaar? De 8088 vs. 8086 is hier een geweldige maatstaf, omdat beide exact dezelfde EU (Execution Unit; * 1) gebruiken, terwijl ze alleen verschillen in de busbreedte van de BIU ( Bus Interface Unit) gebruikt om toegang te krijgen tot het geheugen. Terwijl de 8086 in theorie ongeveer twee keer de prestatie zou moeten leveren vanwege een verdubbeling van de bandbreedte bij dezelfde kloksnelheid, is de prestatiewinst in de echte wereld slechts ongeveer 30-40%. Dit is nog opmerkelijker omdat de BIU ontwerp werkt redelijk goed bij het gebruik van de bus bijna 100% (* 2)
Dus terwijl het verdubbelen van de busbreedte altijd minder dan het dubbele van de snelheid oplevert, is het eenvoudig om de klokfrequentie van een ontwerp te verdubbelen zonder enige onzekerheid. In 1983 was het geheugen zover gekomen dat een 4 MHz 6500-stijl ontwerp gemakkelijk te realiseren was, waarbij de doorvoer verviervoudigde zonder enige jitter.
Kort gezegd: 8-bits blijven bood veel voordelen qua ontwerp en voor gebruikers, terwijl onnodige inspanningen en kosten werden vermeden.
Last but not least, als neveneffect zou de 65802 aanvullend kunnen worden gemaakt, met een daling van het aantal vervanging voor het gebruik van 16 bit-functies in bestaande 65C02-ontwerpen.
* 1 – Voor de meeste delen kan de EU worden gezien als de “echte” CPU-kern van de 8086
* 2 – Veel hiervan komt door single-byte-toegang, maar ook door niet-uitgelijnde geheugenwoorden en sprongdoelen, waardoor een 16-bits bus wordt vertraagd naar een 8-bits bewerking. En hoewel nieuwe software hiermee rekening zou kunnen houden, zal bestaande dat niet doen. Een slechtste voorbeeld hier is misschien Applesoft BASIC, waar bijna alle verwijzingen in Zero Page op oneven adressen stonden. Voor 8 bit kon het niemand iets schelen, met 16 bit is het dodelijk.
Answer
Het voordeel van de 8-bit externe databus en multiplexing van de bovenste 8 bits van de adresbus in de eerste release van de 65816 lijkt duidelijk. Er waren eigenlijk twee versies van de chip: de W65C816S zoals beschreven in de vraag en de W65C802. Volgens Wikipedia ,
[De] 65C802 … was van binnen identiek aan de 65C816. Beiden werden geproduceerd op dezelfde fabricagelijnen en divergeerden alleen tijdens de laatste metallisatiefasen toen de chip werd verbonden met de externe pinnen. In de 65C802 hadden die pinnen dezelfde lay-out als de originele 6502, waardoor deze kon worden gebruikt als een drop-in-vervanging terwijl de 16-bits verwerking van de CPU nog steeds kon worden gebruikt. Omdat het echter de originele pinout gebruikte, had het slechts 16 adrespinnen en kon het daarom slechts toegang krijgen tot 64 kB extern geheugen. Wanneer hardwarefabrikanten een project vanaf de grond af ontwierpen, gebruikten ze meestal de 65C816 in plaats van de 65C802, waardoor de laatste uit productie werd genomen.
Maar dit verklaart niet waarom alle versies van de 65816 de externe 8-bits interface bleven gebruiken, zelfs nadat de 65802 was stopgezet.
Answer
Ik denk dat het antwoord simpel is: zon versie van 65C816 is tegenwoordig niet meer nodig. Het Western Design Center (WDC), de fabrikant van 65C816, richt zich op IPs en IoT-zaken. Ik denk dat de “nieuwe 65C816” -productie is een soort nostalgie voor hen. Chip- en pakketrevisie heeft geen duidelijke businesscase, IMHO.
Een andere vraag is “waarom was er in de jaren 80 geen 16-bits databusversie?” De redelijke verklaring is: het was een opeenvolging van externe gebeurtenissen. De markt bewoog waarschijnlijk sneller dan WDC had verwacht. In de eerste helft van de jaren 80, toen 65C816 werd geïntroduceerd, werd de 8-bits databus passender bij de systemen die al zijn ontworpen voor de 6502-chip en de markt vraagt niet om een 16-bits databus. Later, toen 16-bits randapparatuur beschikbaar kwam, bood de 65C816-fabrikant niet op tijd de “next-gen” CPU aan, dus de grootste klanten, zoals Apple (// GS) of Nintendo (SNES), stapten over naar het betere, snellere, enz. processors (Motorola, NEC MIPS, …) bij het ontwerpen van een nieuwe generatie van hun hardware. Deze zet maakte “16bit databus 65C816” overbodig voordat het zelf werd gemaakt.
Opmerkingen
- Het lijkt mij dat Apple nooit ” ging verder met betere, snellere processors “; de IIgs was het einde van de lijn voor de Apple II en hij bleef de ‘ 816 gebruiken tot 1992. (Apple gebruikte de 68000 wel in de Mac, maar die beslissing werd genomen in eind 1980, lang voordat de ‘ 816 met de ontwikkeling begon.) En Nintendo ‘ begon op zijn vroegst tot 1988 met de ontwikkeling van de SNES, vijf jaar na de release van de ‘ 816.
- Toegegeven, Mac vs. II zijn verschillende ontwikkelingen. Ondanks het succes van de Apple IIgs, met slechts 1,25 miljoen eenheden, was Apple verre van hun grootste klanten. SNES-nummers zijn ongeveer 50 miljoen, de klonen niet meegerekend. En er zijn nogal wat andere embedded applicaties in die regio. Over het algemeen zijn desktopcomputers misschien het meest zichtbare gebruik van 6502 voor ons geweest, maar ze behoren in totaal tot de minst belangrijke. Zelfs het toevoegen van alle Commodore, Apple, BBC enzovoort, zal uiteindelijk slechts minder dan 1% van alle 65xxx cores die ooit zijn gebouwd gebruiken.
Answer
De W65C265S , een op 65816 gebaseerde microcontroller, heeft de volledige 24b adresbus blootgelegd, met een aparte 8b databus.
En, voor alle duidelijkheid, de “265S is” geen 65816. Hij is heel, heel dichtbij. Maar ondanks de ingebouwde randapparatuur en decodeerlogica, heeft het een aantal verschillende interruptvectoren die “265S-code incompatibel kunnen maken met een box stock 65816. Voor alle praktische doeleinden zijn ze identiek vanuit softwaredoeleinden, maar er zijn enkele kleine verschillen.