NS32000 (32kとも呼ばれる)は、ナショナルセミコンダクター社が製造するマイクロプロセッサのシリーズである。設計作業は1980年頃に開始され、1981年4月に開催された国際固体回路会議で発表された。
このファミリーの最初のメンバーは 1982 年に市場に登場し、32016と改名される前に一時的に16032として知られていました。[ 1 ]これは、内部で32 ビットデータを使用する市場初の汎用マイクロプロセッサでした。Motorola 68000 は32 ビット レジスタと 32 ビット演算を実行する命令を持っていましたが、データの算術演算には 16 ビットALU を使用していたため、これらの算術演算を実行するのに 32016 の 2 倍の時間がかかりました。[ 2 ] [ 3 ]しかし、32016 には多くのバグがあり、定格速度で動作しないことがよくありました。これらの問題と、1980 年以来入手可能だったそれ以外は類似した 68000 の存在により、初期の関心は高かったものの、市場での使用はほとんどありませんでした。
その後、いくつかの改良版が登場し、1985年の32032は、基本的に32ビット外部データバスを備えた32016のバグ修正版でした。32016よりも約50%高速でしたが、1年前にリリースされた32ビットのMotorola 68020には性能で劣っていました。1987年にリリースされた32532は、同時代のMotorola 68030をほぼ2倍上回る性能でしたが、この頃にはマイクロプロセッサへの関心のほとんどがRISCプラットフォームに移っており、この優れた設計もほとんど使われることはありませんでした。
ナショナルは32732のさらなる改良に取り組んでいたが、最終的には中央処理装置(CPU)分野での競争を断念した。その代わりに、基本的な32000アーキテクチャにいくつかのサポートシステムを組み合わせ、ソードフィッシュマイクロコントローラとして再発売した。これは市場で一定の成功を収めたが、1990年代半ばにCompactRISCアーキテクチャに取って代わられた。

NS32000 シリーズの歴史は、ナショナル セミコンダクターがVAX-11アーキテクチャのシングル チップ実装を製造しようとした試みに遡ります。[ 4 ] VAX は、あらゆる命令をあらゆるデータに適用できる、非常に「直交性」の高い命令セット アーキテクチャ(ISA) でよく知られています。たとえば、命令は 2 つのプロセッサ レジスタADDの内容、または 1 つのレジスタとメモリ内の値、メモリ内の 2 つの値、またはレジスタをアドレスに対するオフセットとして使用できます。この柔軟性は、複雑な命令セット コンピュータ(CISC)の時代における設計の模範と考えられていました。[ 3 ]
ナショナル社は、設計の合法性を確保するためにカリフォルニア州でデジタル・イクイップメント・コーポレーション(DEC)を提訴したが、DECが訴訟をDECの本拠地であるマサチューセッツ州に移したため、訴訟は取り下げられ、代わりにシリーズ32000アーキテクチャが開発された。新しい命令セットアーキテクチャはVAX-11と互換性がなかったものの、高度に「直交」した設計思想は維持された。つまり、すべての命令はあらゆる種類のデータで使用できた。当時の記事では、これを「対称的」とも表現していた。[ 3 ]
オリジナルのプロセッサファミリーは、NS16032 CPUと低消費電力版のNS16C032で構成され、どちらも16ビットのデータパスを備えていたため、1つの32ビットワードをロードするのに2マシンサイクルを要した。どちらも、最大16MBの物理メモリに対して24ビットの仮想メモリをサポートするNS16082メモリ管理ユニット(MMU)と併用できた。NS16008は、8ビットの外部データパスと仮想メモリのサポートがない簡略版で、ピン数が少なく、実装がやや容易だった。[ 3 ] NS16008とNS16016はどちらも、 Intel 8080の4倍の速度で動作するエミュレーションモードを搭載する予定だった。 [ 5 ]
同時に、ナショナルセミコンダクターは将来のバージョンとしてNS32032とNS32132の2つも発表した。前者は基本的にNS16032のバージョンで、32ビットの外部データバスを備えており、2倍の速度でデータを読み取ることができた。これは1984年にリリースされる予定だった。NS32132は29ビットの内部アドレスと32ビットの外部アドレスを備えており、4GB のメモリ全体をアドレス指定できるバージョンだった。これは1985年にリリースされる予定だった。[ 3 ]
これらのプロセッサには、汎用32ビットレジスタが8個と、一連の特殊用途レジスタが搭載されています。
(その他のシステムレジスタは記載されていません。)
命令セットはCISCモデルに非常に近いもので、2オペランド命令、メモリ間演算、柔軟なアドレッシングモード、可変長バイト境界にアラインされた命令エンコーディングを備えています。アドレッシングモードでは、オペランドごとに最大2回の変位と2回のメモリ間接参照、およびスケーリングされたインデックス付けが可能で、考えられる最長の命令は23バイトです。実際の命令数は、現代のRISCプロセッサよりもはるかに少なくなっています。
他のプロセッサとは異なり、ベースレジスタの自動インクリメントは提供されていません。唯一の例外は、ソースをポップしてデスティネーションをプッシュする「スタックトップ」アドレッシングモードです。特筆すべきは、変位のサイズが最上位ビットでエンコードされる点です。0、10、11は、それぞれ7ビット、14ビット、30ビットの符号付き変位の前に付きます。(プロセッサ自体は一貫してリトルエンディアンですが、命令ストリーム内の変位はビッグエンディアン順で格納されます。)
汎用オペランドは5ビットのフィールドを使用して指定されます。これに、インデックスバイト(インデックスレジスタと5ビットのベースアドレスを指定)と、オペランドごとに最大2つの可変長変位を追加できます。
シリーズ最初のチップは当初16032と呼ばれていましたが、32ビット内部構造を強調するために後に32016に改名されました。これは、この分野における主要な競合製品である1979年のMotorola 68000(68k)とは対照的です。68kは32ビットの命令とレジスタを使用していましたが、全体の処理タスクの大部分を制御する算術論理演算ユニット(ALU)は16ビットのみでした。つまり、32ビット演算を完了するには、32ビットデータを2つの16ビットの半分に分けてALUに2回通す必要がありました。これに対し、NS32000は32ビットALUを備えているため、32ビット命令と16ビット命令の処理時間は同じです。
32016は1982年に48ピンDIPパッケージで初めて出荷されました。32ビットチップを48ピンパッケージに収めるには、データバスを16ビット幅にし、24ビットアドレスバスとピンを共有する必要がありました。ピンを共有することで、外部ハードウェアはデータモードでピンを使用している間、メモリアドレスのアドレスをラッチする必要があり、これによりアクセスごとに1サイクルの遅延が発生します。そのため、内部の32ビット実装によってパフォーマンスは向上しますが、ピン数の少なさによってパフォーマンスは再び低下します。
これは、量産・販売された最初の32ビットチップだったかもしれない(少なくともナショナル社のマーケティングによれば)。しかし、1983年6月の出版物のレポートでは、ナショナル社は「数ヶ月前からサンプルを出荷しており」、「今月」には浮動小数点コプロセッサのサンプル出荷を開始しており、「今夏には16032個の生産量を約束している」と述べられていた。[ 6 ]
1982年に発売された32016は、68kの登場から約2年後の製品ではあるものの、当時68kはまだ市場で広く普及しておらず、32016は大きな注目を集めた。しかし残念ながら、初期バージョンはバグが多く、定格速度で動作させることはほとんど不可能だった。発売から2年後の1984年になっても、エラーリストにはプロセッサが停止し、リセットを余儀なくされるような制御不能な状態を示す項目が依然として記載されていた。
当初の製品ロードマップでは、1983 年中に6 MHz および 10 MHz の部品、1984 年中に12 MHz および 14 MHz の部品が想定されていました。 [ 3 ]しかし、1984 年の報道では、このロードマップを守ることが困難であることが示されており、部品の周波数を 6 MHz から 8 MHz に上げるのに 5 か月かかり、周波数を 10 MHz に上げるにはさらに「 2、3、または 5 か月」かかると担当者が見積もっていました。チップセット内の 5 つのチップのうち、特定されていない 2 つのチップがこれらの問題の原因であると報告されています。[ 7 ] 1985 年初頭の 32016 ベースの Whitechapel MG-1 ワークステーションに関する記事では、32082 メモリ管理ユニットが「バグに悩まされている」ため、ハードウェア修正を提供する専用ボードに配置されていると指摘されています。[ 8 ] 1986年、テキサス・インスツルメンツは、48ピンデバイスとしてTI32016 CPUとTI32082メモリ管理ユニット、24ピンデバイスとしてTI32201タイミング制御ユニットとTI32081浮動小数点ユニット、40ピンデバイスとしてTI32202割り込み制御ユニットで構成される「完全認定済みの10MHz TI32000 32ビットマイクロプロセッサチップセット」を発表し、5つのデバイスからなるチップセットは「100個単位で289ドル」で販売された。[ 9 ]
ナショナル社は、部品を量産化できるように設計方法を変更し、イスラエルのヘルツリーヤにある「NSC」設計センターに近いテルアビブ大学と共同で、「Z」言語に基づく設計システムを開発した。「Z」言語は、今日のVerilogやVHDLに似ているが、Pascalのような構文を持ち、2相クロック設計に最適化されている。しかし、これらの努力の成果が設計に反映される頃には、 Apple Macintoshをはじめとする多数の68kマシンが既に市場に出回っており、32016は広く普及することはなかった。
32016は、16ビットの外部データバス、24ビットの外部アドレスバス、および完全な32ビット命令セットを備えています。また、コプロセッサインターフェースも搭載しており、 FPUやMMUなどのコプロセッサをメインプロセッサのピアとして接続できます。MMUは、競合他社が採用しているセグメントメモリ方式とは大きく異なるデマンドページング仮想メモリをベースとしており、これは今日のマイクロプロセッサ設計の標準となっています。このアーキテクチャは、ページフォルト発生時に命令再開メカニズムをサポートしており、モトローラが採用していた、ページフォルト発生時に内部ステータスをダンプして読み戻してから命令を再開するという方式よりもはるかにクリーンです。


68k の命令セットと比較されることが多かったが、これは NSC の従業員によって却下された。当時の主要なマーケティング フレーズの 1 つは「エレガンスがすべて」であり、高度に直交する Series 32000 を「間に合わせ」と比較していた。重要な違いの 1 つは、モトローラがアドレス レジスタとデータ レジスタを使用しており、命令はアドレス レジスタまたはデータ レジスタのいずれかでのみ動作する点である。Series 32000 には汎用レジスタがあり、技術文書では「アドレス データ」レジスタと説明されている。[ 10 ]

32032は1984年に発表されました。32016とほぼ完全に互換性がありますが、32ビットのデータバス(ただし24ビットのアドレスバスは維持)を備えており、VAX-11システムに匹敵する「ミニコンピュータ性能」と評される、やや高速なパフォーマンスを実現しています。[ 11 ]:39また、低コストアプリケーション向けにデータバスを8ビット幅に縮小した32016である32008もありました。これはMC68008と哲学的に似ており、同様に不人気でした。
ナショナルは、NS32081浮動小数点演算ユニット(FPU)、NS32082メモリ管理ユニット(MMU)、NS32203ダイレクトメモリアクセス(DMA)、NS32202割り込みコントローラといった関連サポートチップも製造した。これらのチップに加え、メモリチップや周辺機器を揃えることで、最新のマルチタスクオペレーティングシステムに対応できる32ビットコンピュータシステムを構築することが可能になった。これは、以前は高価なミニコンピュータやメインフレームでしか実現できなかったことである。
1985年、ナショナルセミコンダクターは、32032を大幅に改良したNS32332を発表しました。データシートによると、改良点には「新しい専用アドレッシングハードウェア(高速ALU、バレルシフタ、アドレスレジスタで構成)、非常に効率的な拡張(20バイト)命令プリフェッチキュー、新しいシステム/メモリバスインターフェース/プロトコル、効率が向上したスレーブプロセッサプロトコル、そして最後にマイクロコードの改良」が含まれています。また、新しいNS32382 MMU、NS32381 FPU、そして(非常に珍しい)Weitek FPAへのNS32310インターフェースもありました。これらの改良によるNS32332の総合的なパフォーマンス向上は、元のNS32032より50%高速になっただけであり、主要な競合製品であるMC68020よりも劣っていました。
ナショナルセミコンダクターは1987年初頭にNS32532を発表しました。[ 12 ] 20MHz、25MHz、30MHzで動作するこの製品は、5段パイプライン、統合キャッシュ/MMU、改良されたメモリ性能を備えた内部実装の完全な再設計であり、競合するMC68030およびi80386の約2倍の性能を実現しました。この段階でRISCアーキテクチャが普及し始め、主な競合製品は、現在では同様に廃止されたAM29000およびMC88000となり、これらはNS32532よりも高速であると考えられていました。浮動小数点演算には、NS32532は既存のNS32381またはNS32580インターフェースを使用してWeitek 3164 FPAに接続しました。[ 13 ]後者の組み合わせは、前者の230 万 MWIPSおよびMIPS M/800 の690 万 MWIPSと比較して、毎秒約800 万MWIPSの性能を謳っていた。 [ 14 ] : 216 MIPS M/800 は12.5 MHz R2600 チップセットをベースとしており、[ 15 ]それ自体がMIPS R2000プロセッサとそれに付随する浮動小数点ユニットを採用していた。[ 16 ] NS32532 は、パブリック ドメインのハードウェア プロジェクトであるPC532のベースであり、実際のオペレーティングシステム (この場合はMinixまたはNetBSD )を実行する実用的なマシンを生成した数少ないものの 1 つです。
半ば伝説的な存在であるNS32732(NS32764と呼ばれることもある)は、NS32532の高性能後継機種として構想されたものの、結局市場に出回ることはなかった。
NS32732の派生版であるソードフィッシュ(NS32SF640)が1991年初頭に発表された。組み込みシステム向けに設計されたソードフィッシュは、マイクロプロセッサでは通常利用できない浮動小数点演算ユニット、タイマー、DMAコントローラ、その他の周辺機器を内蔵している。64ビットのデータバスを持ち、 内部クロックは50MHzで、システムクロック25MHzの2倍である 。[ 17 ]ソードフィッシュのチーフアーキテクトはドナルド・アルパートで、彼は後にペンティウムを設計するアーキテクチャチームのマネージャーとなった。ペンティウムの内部マイクロアーキテクチャは、先行するソードフィッシュと似ている。
SwordfishはハイエンドのPostScriptレーザープリンターに特化しており、当時の性能は群を抜いていました。競合製品は1分間に約1ページしか印刷できませんでしたが、Swordfishのデモ機はレーザーエンジンの機構的な制約のみで、1分間に16ページも印刷できました。各ページには、エンジンの処理完了を待つ間の待機時間も印刷されていました。
ソードフィッシュのダイは巨大で、最終的にプロジェクト自体を中止することが決定され、製品は生産されることはありませんでした。ソードフィッシュから得られた教訓は、CompactRISC の設計に活用されました。当初は、CompactRISC-32 と CompactRISC-16 の両方があり、「Z」を使用して設計されました。ナショナルは CompactRISC-32 コアを搭載したチップを市場に出すことはありませんでした。ナショナルの研究部門はミシガン大学と協力して、最初の合成可能な Verilog モデルを開発し、CR16C 以降では Verilog が使用されました。
NS302CG16をベースとした、NS32CG16、NS32CG160、NS32FV16、NS32FX161、NS32FX164、NS32AM160/1/3などの低価格製品向け旧型NS32000シリーズのバージョンは、1987年以降に導入されました。
これらのプロセッサは、AMDやIntelのRISCチップとの激しい競争にもかかわらず、レーザープリンタやファックス市場で一定の成功を収めました。特にNS32CG16は注目に値します。このプロセッサとNS32C016の主な違いは、水晶発振子から必要な2相クロックを生成する高価なタイミング制御ユニット(TCU)の統合と、浮動小数点コプロセッサのサポートの削除です。これにより、マイクロコード領域が解放され、レーザープリンタの動作性能が大幅に向上したBitBLT命令セットが利用できるようになりました。これにより、この60,000トランジスタのチップは、200,000トランジスタのMC68020よりも高速になりました。NS32CG160は、タイマーとDMA周辺機器を備えたCG16であり、NS32FV/FX16xチップは、ファックスおよび留守番電話市場向けに、CG16 BitBLTコアの上にDSP機能を追加したものです。これらは後に、NS32532ベースのNS32GX32によって補完されました。以前のチップとは異なり、余分なハードウェアは搭載されていません。NS32GX32は、MMUを搭載していないNS32532で、組み込みシステム向けに魅力的な価格で販売されています。当初は単なるリマークされたチップでした。このチップが低コスト生産のために再設計されたのかどうかは不明です。
NS32132 のデータシートが存在し、これはマルチプロセッサ システム向けに設計されているようです。これは、アービタを拡張した NS32032 です。NS32032 のバス使用率は約 50 パーセントで、これは非常にコンパクトな命令セット、あるいは競合他社が言うところの非常に遅いパイプラインによるものです。実際、NS32032 の提案された用途の 1 つは、「2 つの 32032 を並列に使用し、交互のメモリ サイクルで結果を比較してソフト エラーを検出する」という「フォールト トレラント トランザクション システム」の一部として使用されることでした。[ 6 ] NS32132 チップを使用すると、PCB をほとんど変更することなく、2 つの CPU を同じメモリ システムに接続できます。プロトタイプ システムは、スウェーデンのDiab Data ABによって構築されましたが、同じ会社が設計したシングル CPU MC68020 システムほど優れたパフォーマンスは得られませんでした。
Motorola 68000などのマイクロプロセッサをベースとしたワークステーションの出現により、Digitalはローエンドの32ビット「スーパーマイクロ」製品の導入を検討するようになった。[ 31 ]後にZilogと判明した「半導体メーカーからの非公式な提案」[ 32 ]に促され、VAXアーキテクチャのサブセットを実装する大量生産の高性能チップセットの開発を目指したDigitalは、このような取り組みのために、より有能な半導体パートナーを探したが、成功しなかった。[ 33 ]その後、同社はこの取り組みを単独で進め、MicroVAXアーキテクチャと製品ファミリーが誕生したが、業界の関心の欠如とリソースに関する懸念から、プログラムチームの一部は、当初の目的を達成するために、当時未発売だったNS32032を採用し、VMSを移植することを検討した。[ 32 ]
2015年6月、Udo MöllerはOpenCores上でNS32000プロセッサの完全なVerilog実装を公開した。[ 34 ] N32381 FPUを搭載したNS32532 CPUと完全にソフトウェア互換性があり、FPGAに実装するとクロックレートが高く、命令あたりのサイクル数も少ないため、大幅に高速化される。[ 35 ]
当社は最近、32 ビットマイクロプロセッサ製品の名称を NS16000 ファミリーから Series 32000 に変更しました。この変更は、Series 32000 の 2 番目の供給元として Texas Instruments, Inc. と契約を締結した直後に有効になりました。
すべてのアドレス データ レジスタはすべての命令で使用可能です。そのため、コンパイラはレジスタの使用に関して自由度が高く、多くのハウスキーピングを行う必要がありません。このアーキテクチャでは、アドレス データ レジスタをアキュムレータ、データ レジスタ、およびアドレス ポインタとして使用することもできます。これは、アドレス ポインタとして使用できるレジスタがごく少数しか許可されていないマシンに比べて大きな改善であり、アドレス計算のボトルネックを解消します。アドレス計算は、高水準言語プログラミングにおいて非常に重要な機能です。