Az NS32000, röviden 32k, a National Semiconductor által fejlesztett és gyártott mikroprocesszorsorozat. Tervezése az 1970-es évek végén kezdődött és 1981 áprilisában jelentették be az ISSCC (International Solid-State Circuits Conference, Nemzetközi Szilárdtest Áramköri Konferencia) rendezvényen.
A család első, kezdetben 16032-ként ismert tagja 1982-ben került forgalomba, ezután a jelölését 32016-ra változtatták, hogy hangsúlyozzák 32 bites voltát. Ez volt az első belsőleg 32 bites adatméretet használó általános célú mikroprocesszor a piacon: a Motorola 68000 regiszterei 32 bitesek, utasításai támogatják a 32 bites aritmetikai műveletek végrehajtását, de ezek végrehajtásához 16 bites ALU-t használ, így a 32 bites műveletek ezen a processzoron kétszer annyi ideig tartanak, mint ugyanezek a műveletek a 32016-oson. A 32016-os azonban sok hibát tartalmazott és gyakran nem tudott a névleges sebességén futni. Ezek a problémák, és az 1980 óta kapható, hasonló tulajdonságokat mutató 68000-es piaci jelenléte vezetett ahhoz, hogy a korai jelentős érdeklődés ellenére alig használták a gyakorlatban.
Az induló modellt több javított változat követte, köztük az 1985-ös 32032, amely lényegében egy hibajavított 32016 volt, külső 32 bites adatsínnel. Bár körülbelül 50%-kal jobb sebességet kínált, mint a 32016, teljesítményében mégis alulmaradt az egy évvel korábban megjelent 32 bites Motorola 68020 processzorral szemben. Az 1987-ben kibocsátott 32532 teljesítménye közel kétszerese volt a Motorola 68030-asnak, de addigra a mikroprocesszorok iránti érdeklődés nagyrészt a RISC platformok felé fordult, és ez az egyébként kiváló kialakítás szinte alkalmazás nélkül maradt.
A National további fejlesztéseken dolgozott a 32732-es típusban, de az 1990-es években feladta a versenyt a mikroprocesszorok terén. Ehelyett az alap 32000-es architektúrát kombinálták több támogató rendszerrel és Swordfish mikrovezérlőként újra piacra dobták. Ennek némi sikere volt a piacon, majd a cég az 1990-es évek közepén átváltott a CompactRISC architektúrára.

Az NS32000 sorozat története a National Semiconductor azon törekvésére vezethető vissza, hogy elkészítse a VAX–11 architektúra egycsipes implementációját. A VAX jól ismert a nagymértékben ortogonális utasításkészlet-architektúrájáról (ISA), amelyben minden utasítás bármely adatra alkalmazható, a rendelkezésre álló összes címzési móddal. Például egy ADD utasítás összeadhatja két processzorregiszter tartalmát, vagy hozzáadhatja egy regiszter tartalmát a memóriában lévő értékhez, összeadhat két értéket a memóriában, vagy a regisztert egy címhez képest eltolásként használja. Ez a rugalmasság a tervezés mintaképének számított a komplex utasításkészletű (CISC) számítógép korában.
A National jogi úton próbálta biztosítani a tervezés jogszerűségét, és bíróság elé idézte a Digital Equipment Corporation-t (DEC) Kaliforniában, de amikor a DEC a pert Massachusettsbe, a DEC székhelyének államába helyezte át, a pert ejtették és a VAX-11 architektúra helyett a 32000 sorozat architektúráját fejlesztették ki. Az új utasításkészlet-architektúra ugyan nem volt VAX-11 kompatibilis, de megőrizte annak nagymértékben ortogonális tervezési filozófiáját, tehát minden utasítástípus minden címzéssel (gépi adattípussal) használható. A korabeli cikkek ezt „szimmetrikusnak” is nevezték.
Az eredeti processzorcsalád az NS16032 CPU-ból és egy NS16C032 alacsony fogyasztású változatból állt, mindkettő 16 bites adatútvonallal rendelkezett és így két gépi ciklusra volt szükség egy 32 bites szó betöltéséhez. Mindkettő használható volt az NS16082 memóriakezelő egységgel (MMU), amely 24 bites virtuális memória támogatást biztosított maximálisan 16 MiB fizikai memóriához. Az NS16008 egy leegyszerűsített változat volt 8-bit bites külső adatútvonallal, virtuális memóriatámogatás nélkül, amelynek kevesebb kivezetése (lába) volt és így valamivel könnyebb volt a megvalósítása. Mind az NS16008, mind az NS16016 rendelkezett az Intel 8080 emulációs móddal, amely négyszeres sebességet biztosított az eredetihez képest.
Ugyanebben az időben a National Semiconductor két jövőbeli verziót is bejelentett, az NS32032 és NS32132 jelűeket. Az előbbi lényegében az NS16032 egy változata, 32 bites külső adatsínnel, ami lehetővé teszi az adatok kétszeres sebességgel történő olvasását. A tervek szerint 1984-ben került volna forgalomba. Az NS32132 29 bites belső és 32 bites külső címekkel rendelkező változat volt, ami lehetővé tette teljes 4 GiB memória címzését. 1985-ben szándékoztak kibocsátani.
Mindezek az NS16081 lebegőpontos egységgel (FPU) is használhatók.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A processzorok 8 általános célú 32 bites regiszterrel rendelkeznek, valamint több speciális célú regiszterrel:
(A többi rendszerregiszter nincs felsorolva).
Az utasításkészlet CISC elvű, 2 operandusú utasításokkal, memóriából-memóriába történő műveletekkel, rugalmas címzési módokkal és változó hosszúságú, bájtra igazított utasításkódolással. A címzési módok tartalmazhatnak akár két eltolást és két memória-indirekciót is operandusonként, valamint skálázott indexelést, így a lehetséges leghosszabb utasítás 23 bájt hosszú lehet. A utasítások tényleges száma jóval alacsonyabb, mint a kortárs RISC processzoroké.
Más processzorokkal ellentétben, a bázisregiszter automatikus növelése nem támogatott; ez alól kivétel a „verem teteje” (top of stack) címzési mód és változatai, ami kiolvassa (leemeli, pop művelet) a forrásokat és behelyezi (push) a célokat. Egyedülálló módon, az eltolás mérete a legmagasabb helyiértékű biteken van kódolva: 0, 10 és 11 előzi meg a 7-, 14- és 30 bites előjeles eltolásokat. (Habár a processzorok egyébként következetesen növekvő bájtsorrendűek (little-endian), az eltolások az utasításfolyamban csökkenő (big-endian) sorrendben vannak tárolva).
Az általános célú operandusokat egy 5 bites mező specifikálja. Ehhez hozzáadható egy index bájt (amely megadja az indexregisztert és az 5 bites báziscímet) és operandusonként legfeljebb 2 változó hosszúságú eltolás.
A sorozat első csipjét eredetileg 16032-nek hívták, de később átnevezték 32016-ra, ezzel hangsúlyozva a 32 bites belső felépítést. Ezzel a felépítéssel szemben áll az 1979-es Motorola 68000 (68k) processzorral. A 68k 32 bites utasításokat és regisztereket használ, de az aritmetikai-logikai egysége (ALU), ami az általános feldolgozási feladatok többségét vezérli, csak 16 bites. Ez azt jelenti, hogy a 32 bites adatot két ciklusban kell átküldenie az ALU-n – két 16 bites részben –, egy 32 bites művelet elvégzéséhez. Az NS32000-nek viszont 32 bites ALU-ja van, így a 32 bites és 16 bites utasítások végrehajtási ideje megegyezik.
A 32016-os processzor először 1982-ben jelent meg, 48 tűs DIP tokozásban. Egy 32 bites csip 48 tűs tokozásba illesztéséhez az adatsínt 16 bit szélességűre kellett csökkenteni, és a kivezetéseket megosztani a 24 bites címsínnel. Az érintkezők megosztása miatt külső hardvernek kell tárolnia a memóriacímet, mikor a kivezetések adatüzemmódban működnek, és ez minden hozzáféréskor 1 ciklusos késleltetést okoz. Így míg a belső 32 bites megvalósítás növelte a teljesítményt, az alacsony kivezetésszám ismét csökkentette azt.
Feltehetőleg ez volt az első, tömeggyártásba és forgalomba került 32 bites csip (legalábbis a National marketingje szerint). Egy 1983 júniusi publikációban azonban megjegyezték, hogy a National volt „ezen a nyáron termelési mennyiségeket ígért” a 16032-es alkatrészekből, miután már „több hónapja próbamennyiségeket szállított”, a lebegőpontos koprocesszor mintapéldányok pedig „ebben a hónapban” ígérte, ez azt jelzi, hogy a szállítással gondjai voltak a cégnek.
Bár a 32016 processzor 1982-es megjelenése körülbelül két évvel volt a 68k után, a 68k még nem terjedt el széles körben a piacon és a 32016 nagy érdeklődést keltett. Sajnálatos módon a korai változatok tele voltak hibákkal és ritkán lehetett őket névleges sebességükkel üzemeltetni. Két évvel később, 1984-ben a hibajegyzékben még mindig voltak kontrollálatlan állapotokat leíró elemek, amelyek a processzor leállásához vezettek, újraindítást kikényszerítve.
Az eredeti termékfejlesztési terv 6 MHz- és 10 MHz)-es alkatrészeket vizionált 1983-ra és 12 MHz- és 14 MHz-es alkatrészeket 1984-ra. 1984-es sajtóbeszámolók szerint azonban nem sikerült tartani ezt az ütemtervet, mivel állítólag öt hónapba telt, mire a processzorok órajelét 6 MHz-ről 8 MHz-re növelték, és nyilatkozatok további „két, három vagy öt hónap” tartottak szükségesnek a frekvencia 10 MHz-re történő növeléséhez. A problémákat két, meg nem nevezett csip okozta az öt darabos csipkészletből. Egy korai 1985-ös cikk a 32016-alapú Whitechapel MG-1 munkaállomásról megjegyezte, hogy a 32082 memóriakezelő egység „hibás volt” és külön kártyán helyezték el a hardverjavítások miatt. 1986-ban a Texas Instruments bejelentett egy „teljesen minősített 10 MHz-es TI32000 32 bites mikroprocesszor csipkészletet”, amely a 48 tűs tokozású TI32016 CPU-ból és TI32082 memóriakezelő egységből, a 24 tűs TI32201 időzítésvezérlő egységből és TI32081 lebegőpontos egységből és a 40 tűs TI32202 megszakításvezérlő egységből állt. Az öt alkatrészből álló csipkészlet ára 289 dollár volt, 100 darabos mennyiségben.
A National megváltoztatta tervezési módszertanát, hogy lehetővé tegye a termék gyártását, ennek során egy "Z" nyelven alapuló tervezési rendszert fejlesztett ki az „NSC” tervezőközpont az izraeli Herzlijában, a Tel-Avivi Egyetem közreműködésével. A „Z” nyelv hasonló a mai Verilog és VHDL nyelvekhez, de Pascal-szerű szintaxisa van és kétfázisú órajelű kialakítások tervezésére optimalizálták. Mire azonban a fejlesztések eredménye megjelent a tervezésben, a 68k alapú gépek már kezdték elfoglalni a piacot, kezdve az Apple Macintosh modellel, és a 32016 nem terjedt el széles körben.
A 32016 16 bites külső adatsínnel és 24 bites külső címsínnel rendelkezik, utasításkészlete teljesen 32 bites. Tartalmaz egy koprocesszor-interfészt is, ami lehetővé teszi, hogy a társprocesszorok, mint például az FPU-k és MMU-k, egyenrangú módon csatlakozzanak a fő processzorhoz. Az MMU igény szerinti lapozást használó virtuális memórián alapul, ami szokatlan megoldás a versenytársak által használt szegmentált memória-megközelítéshez képest, és amely mára a mikroprocesszorok tervezésének szabványává vált. Az architektúra támogatja az utasítás-újraindítási mechanizmust laphiba esetén, ami sokkal elegánsabb megoldás, mint a Motorola megközelítése, amely laphiba esetén kiírja a belső állapotot, amit vissza kell olvasni az utasítás folytatása előtt.


Bár a processzort gyakran a 68k-hoz hasonlították, az NSC ezt elutasította. Akkori marketingjük egyik jelmondata volt az „Elegance is Everything (az elegancia minden)”, és ennek értelmében a Motorola megoldásait gyatra tákolmánynak („kludge”) tartották. A 32000-es sorozatban a regiszterhasználat alapvetően eltér a Motorola 68k család módszerétől, amelyben az adat- és a címregiszterek két külön készletre vannak osztva és az utasítások csak az egyiket használhatják. A 32000-ben nincs ilyen szétválasztás, az általános célú regiszterek bármilyen típust tartalmazhatnak, leírásuk a műszaki dokumentációban „cím-adat” (address-data) regiszter.

A 32032 1984-ben került forgalomba. Ez szinte teljesen kompatibilis a 32016-tal, de 32 bites adatsínnel rendelkezik (megtartva a 24 bites címsínt), ami némileg gyorsabb teljesítményt eredményezett. A gyártó „miniszámítógép teljesítményűnek” nevezte, amely összehasonlítható a VAX-11 rendszerével.(pp39) Készült egy 32008 jelű modell is, ami egy 32016, 8 bites szélességűre csökkentett adatsínnel, az alacsony költségű alkalmazások számára. Hasonló megoldás volt a Motorola 68008-é is, egyik sem aratott nagy sikert.
A National készített egy sorozat kapcsolódó támogató csipet is, mint például az NS32081 lebegőpontos egység (FPU), az NS32082 memóriakezelő egység (MMU), az NS32203 DMA és NS32202 megszakításvezérlők. A teljes csipkészlet memóriával és perifériákkal kiegészítve olyan 32 bites számítógéprendszer építését teszi lehetővé, amely képes támogatni a modern többfeladatos operációs rendszereket, ami korábban csak drága mini- és nagyszámítógépeken volt elérhető.
1985-ben a National Semiconductor bemutatta az NS32332-t, a 32032 jelentősen továbbfejlesztett változatát. Az adatlapon felsorolt fejlesztések közé tartozott az új, dedikált címzési hardver, amely egy nagy sebességű ALU-ból, egy barrel shifterből (gyors léptetőregiszter) és egy címregiszterből áll; egy hatékony megnövelt (20 bájtos) utasítás-előbetöltő sor, új rendszer/memóriasín interfész és protokoll, a megnövelt hatékonyságú slave processzor protokoll és a mikrokódban történt fejlesztések. Ezzel együtt jelent meg az NS32382 MMU, NS32381 FPU és az NS32310 interfész is a Weitek FPA-hoz. Az NS32332 ezekből a fejlesztésekből adódó összes teljesítménynövekedése mindössze 50 százalékkal tette gyorsabbá a kiinduló NS32032 modellnél, amivel elmaradt fő versenytársa, a Motorola 68020 mögött.
A National Semiconductor 1987 elején mutatta be az NS32532-t. A 20, 25 és 30 MHz-en futó processzor belső felépítését teljesen áttervezték egy ötfokozatú futószalaggal, egy integrált gyorsítótár/MMU-val és javított memóriateljesítménnyel, így teljesítménye körülbelül kétszerese volt a konkurens MC68030 és i386 processzorokénak. Ebben az időszakban kezdtek teret nyerni a RISC architektúrák, és versenytársként jelentkeztek az Am29000 és MC88000 processzorok, amelyeket gyorsabbnak tartottak az NS32532-nél (ezek 1995-ben és 1997-ben megszűntek). A lebegőpontos számításokhoz az NS32532 a meglévő NS32381 vagy az NS32580 interfészt használta a Weitek FPA-hoz. Az NS32532 volt a PC532 asztali minigép központi egysége, ami egy 1989–1990-ben született publikus hardverterv, egyike annak a néhány kezdeményezésnek, amelyből használható gép jött létre és még valódi operációs rendszer is fut rajta (ebben az esetben MINIX vagy NetBSD).
Az NS32532 tervezett nagy teljesítményű utódját eleinte NS32732, később NS32764 néven ismerték. Ez a konstrukció nem került forgalomba, de nem tűnt el teljesen, a tervezet a National egyik beágyazott processzorcsaládjában él tovább.
1991 elején jelentették be az NS32732 egy származékát, a NS32SF640 jelölésű Swordfish nevezetű processzort. A beágyazott rendszerekhez készült Swordfish egy integrált lebegőpontos egységet, időzítőket, DMA vezérlőket és más perifériákat tartalmaz, amelyek mikroprocesszorokban általában nem fordulnak elő. 64 bites adatbusszal rendelkezik és 50 MHz-es belső órajelet használ, a 25 MHz-es rendszerórajel kétszeresét. A Swordfish fő tervezője Donald Alpert, aki később a Pentium architektúra tervezőcsapatát irányította. A Pentium belső mikroarchitektúrája hasonló az azt megelőző Swordfish-éhez.
A Swordfish felhasználási területének középpontjában a nagy teljesítményű PostScript lézernyomtatók álltak, és teljesítménye valóban kivételes volt a maga idejében. A konkurens megoldások percenként körülbelül egy új oldalt voltak képesek renderelni, a Swordfish demóegység viszont tizenhat oldalt nyomtatott ki percenként, amit csak a lézernyomtató mechanikája korlátozott. A demó minden oldalon kinyomtatta hogy mennyi ideig állt tétlenül, a mechanika működésének befejeződésére várva.
A Swordfish lapkája igen nagy volt, és végül úgy döntöttek, hogy teljesen elvetik a projektet, és a termék többé nem került gyártásba. A Swordfishből levont tanulságokat felhasználták a CompactRISC tervezéséhez. Kezdetben volt egy CompactRISC-32 és egy CompactRISC-16 tervezet is, amelyeket még a „Z” nyelv használatával terveztek. A National nem hozott forgalomba CompactRISC-32 maggal rendelkező csipet. A National kutatási részlege a Michigani Egyetemmel együttműködve fejlesztette ki az első szintetizálható Verilog modellt, és a CR16C fejlesztésétől kezdve a Verilogot használták.
A régebbi, alacsony költségű termékekhez tervezett NS32000 vonal verziói, például az NS32CG16, NS32CG160, NS32FV16, NS32FX161, NS32FX164 és az NS32AM160/1/3, mind az NS302CG16-on alapulnak, és 1987-től voltak forgalomban.
Ezeknek a processzoroknak volt némi sikerük a lézernyomtatók és faxok piacán, az AMD és az Intel RISC csipek erős konkurenciája ellenére. Az NS32CG16 kitüntetett figyelmet érdemel. Ennek a legfontosabb eltérése az NS32C016-tól a drága időzítésvezérlő egység (TCU) integrálása volt, ami egy kristályról generálja a szükséges kétfázisú órajelet, és a lebegőpontos koprocesszortámogatás eltávolítása, ami mikrokódterületet szabadított fel a hasznos BitBLT utasításkészlet számára, ami jelentősen javítja a lézernyomtatók teljesítményét, így ez a 60 000 tranzisztoros csip gyorsabb, mint a 200 000 tranzisztoros MC68020. Az NS32CG160 a CG16 időzítőkkel és DMA perifériákkal ellátott változata, míg az NS32FV/FX16x csipek extra DSP (digitális jelprocesszor) funkcionalitással is rendelkeznek a CG16 BitBLT magon felül; ezeket a faxok és üzenetrögzítők piacán értékesítették. A sorozat később az NS32532 alapú NS32GX32-vel bővült. A korábbi csipektől eltérően ebben nem volt extra hardver. Az NS32GX32 az MMU nélküli NS32532, melyet kedvező áron kínálták a beágyazott rendszerekhez. Kezdetben ez csak egy átnevezett csip volt. Nem ismert pontosan, hogy a csipet áttervezték-e az alacsonyabb költségű gyártáshoz.
Dokumentációk alapján létezett egy NS32132 jelű egység, amelyet nyilvánvalóan többprocesszoros rendszerekhez terveztek. Ez egy arbiterrel (összehasonlító vezérlőáramkörrel) kiegészített NS32032. A NS32032 sínkihasználtsága körülbelül 50 százalékos, ami a nagyon kompakt utasításkészletének köszönhető, illetve a versenytársak kifejezésével élve, nagyon lassú futószalagjának. Valójában az NS32032 egyik javasolt alkalmazása egy „hibatűrő tranzakciós rendszer” része volt, amelyben két 32032-es működik párhuzamosan és az alternatív memóriaciklusokban ezek eredményeit az arbiter összehasonlítja az átmeneti hibák (soft error) észleléséhez. Az NS32132 csip lehetővé teszi két CPU csatlakoztatását ugyanahhoz a memóriarendszerhez, a nyomtatott áramköri lap jelentősebb változtatása nélkül. A svéd Diab Data AB épített ilyen prototípusrendszereket, melyek azonban nem teljesítettek olyan jól, mint az ugyanattól a cégtől származó egyprocesszoros MC68020 rendszerek.
A sorozat processzorait és támogatóáramköreit a korai 32 bites korszakban, az 1980-as, 1990-es években alkalmazták, változatos szerepekben: megtalálhatók voltak munkaállomásokban, nyomtatókban, szintetizátorokban, ipari robotokban, hálózati eszközökben és egyéb beágyazott rendszerekben. Az ismert alkalmazások:
A Motorola 68000-hez hasonló mikroprocesszorokon alapuló munkaállomások megjelenése arra ösztönözte a Digitalt, hogy fontolóra vegye egy alacsony kategóriájú, 32 bites „szupermikro” termék bevezetését. „Egy félvezetőgyártó” kezdeményezésére (amit később a Zilogként azonosítottak), a Digital alkalmasabb félvezető partnereket kezdett keresni a VAX architektúra egy részhalmazát megvalósító nagy volumenű, nagy teljesítményű csipkészlet fejlesztéséhez, sikertelenül. Bár a vállalat később egyedül folytatta ezt a munkát, ami végül a MicroVAX architektúrát és termékcsaládot eredményezte, az iparág érdeklődésének hiánya és az erőforrásokkal kapcsolatos aggodalmak arra indította a programcsapat néhány tagját, hogy megfontolja az akkor még meg sem jelent NS32032 bevezetését és ehhez a VMS portolását, eredeti céljuk megvalósítása érdekében.
2015 júniusában Udo Möller kiadta az NS32000 processzor egy teljes Verilog implementációját az OpenCores nyílt forráskódú hardvermegosztó portálon, melyet M32632-nek nevezett el. Ez teljesen szoftverkompatibilis egy NS32532 CPU-val és megvalósítja az NS32381 lebegőpontos egység funkcióit is, viszont FPGA-n implementálva jelentősen gyorsabb azoknál, mivel magasabb órajelen működik és kevesebb ciklust használ utasításonként.
Nemrégiben 32 bites mikroprocesszoros termékeinket az NS16000 családról 32000-es sorozatra neveztük át. Ez a program azonnal életbe lépett, miután a Texas Instruments, Inc. a Series 32000 második forrásaként aláírta a szerződést.
{{cite magazine}}: Italic or bold markup not allowed in: |magazine= (súgó)Minden cím-adat regiszter minden utasítás számára elérhető. Így a fordító szabadon használhatja a regisztereket, és nem kell sok takarítást végeznie. Az architektúra azt is lehetővé teszi, hogy a cím-adat regisztereket akkumulátorként, adatregiszterként és címmutatóként használjuk. Ez nagy előrelépést jelent azokhoz a gépekhez képest, amelyek csak néhány regisztert engednek címmutatóként használni, ami szűk keresztmetszetet okoz a címszámításban, ez nagyon fontos funkció a magas szintű nyelvi programozásban.
Ez a szócikk részben vagy egészben a NS32000 című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.