この記事は、大部分または全てを単一の情報源に依拠しています。関連する議論は ( 2022年10月) |
PACEダイ | |
| 一般情報 | |
|---|---|
| 発売 | 1974 (1974年) |
| 共通メーカー | |
| パフォーマンス | |
| 最大CPUクロックレート | 1.33 MHzまで |
| データ幅 | 16ビット |
| アドレス幅 | 16ビット |
| 物理的仕様 | |
| パッケージ |
|
| 歴史 | |
| 前任者 | IMP-16 |
| 後継 | INS8900 |
ナショナルセミコンダクター社のIPC-16A PACE(Processing and Control Elementの略)は、1974年後半に発表された世界初の商用シングルチップ16ビットマイクロプロセッサでした。 [ 1 ]これは、1973年初頭に発表された5チップ構成のIMP-16アーキテクチャをシングルチップ化したもので、このアーキテクチャはデータジェネラル社のNovaミニコンピュータにヒントを得ていました。PACEは、基本的なIMP-16に、 ASCIIテキストなどの8ビットデータの処理に役立つ「バイトモード」という新しい動作モードを追加しました。
当時としては一般的だったpMOSで実装されたPACEは、3つの電源電圧と、内部ロジックを駆動するのに十分な信号を持つ外部クロックを必要としました。これは通常、STEチップによって供給されていました。ほとんどのPACEシステムでは、BTEチップが内部の高電圧信号をシステムの他の部分で使用されるTTLレベルに変換する必要がありました。また、多重化されたアドレスピンとデータピンにも追加のロジックが必要でした。
ナショナル セミコンダクターはシグネティクスおよびロックウェル セミコンダクターとセカンドソース契約を結んでいたものの、どちらの社もPACEの設計を製造していませんでした。PACEの後継としてINS8900が発売されました。こちらは同じアーキテクチャですが、nMOSで実装されていました。このバージョンでは電気的なインターフェースが容易になり、PACEロジックのいくつかのバグも修正され、速度が約50%向上しました。[ 2 ]このバージョンが発売される頃には、より高性能な16ビットCPUが登場しており、同社はこのラインの販売を縮小し始めました。
説明
物理的な

PACEは40ピンのデュアル・インライン・パッケージ(DIP)で提供され、当初はセラミック製でした。pMOSロジックをベースとしていたため、PACEシリーズは+5V(V SS、ピン20)、+3V(V BB、ピン23)、そしてグランドレベルとして-12V(V GG 、ピン29)の3つの電源電圧を必要としました。+3Vレベルは通常、+5Vラインから供給されるシンプルな電子回路によって供給され、電源の複雑さを軽減しました。
チップは通常、 システムタイミングエレメント(STE)チップを使用して外部の750ナノ秒クロック(1.33 MHz )で駆動され、必要な信号強度の信号を生成します。 [ 2 ]これらの信号は外部デバイスでも使用されるため、クロック信号はTTLレベルの+5Vであり、ほとんどのピンが+8Vであるのとは対照的でした。[ 3 ]
外部信号は+8Vレベルで供給されるため、TTLレベルで動作する一般的なデバイスとのシステムインターフェースは容易ではありませんでした。このため、PACEを使用するシステムには通常、双方向トランシーバエレメント(BTE)が搭載されていました。BTEはPACEと連携してTTL電圧のバス信号一式を生成し、SRAMなどの当時のほとんどのデバイスと容易にインターフェースすることができました。[ 4 ]
16ビットのアドレスとデータを40ピンDIPに収めるために、同じ16ピンセットを、アドレスの提示とデータの読み書きを別々のサイクルで多重化しました。そのため、メインメモリなどの外部デバイスは、サイクル間でアドレスをラッチする必要がありました。 [ 5 ]
内部設計
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ナショナルセミコンダクターのIMP-16はデータゼネラルのNovaに触発されたものの、ISAにいくつかの小さな違いがありました。その一つが、ユーザーがアクセスできる4つの16ビットプロセッサレジスタの処理です。Novaでは、最初の2つのレジスタは汎用アキュムレータであり、ほとんどの基本的な算術演算と論理演算に使用されていましたが、残りの2つのレジスタはオペランドまたはインデックスレジスタとして使用できました。IMP-16はこのモデルを踏襲していましたが[ 6 ]、PACEではいくつかの命令が変更され、最初のアキュムレータであるAC0のみを操作するようになりました[ 2 ] 。
オリジナルのNovaはハードウェアにスタックを実装していませんでしたが、1975年以降のNova 3モデルで追加されました。PACEは、隠しスタックポインタを用いた異なるスタイルのスタックを実装しました。このスタックポインタは、命令の実行時に自動的にインクリメント/デクリメントされます。PUSHプログラムカウンタ(PC)は、サブルーチンの呼び出し時と復帰時に自動的にスタックにプッシュ/プルされます。追加の命令により、4つのレジスタとステータス/制御フラグレジスタもプッシュ/プルできます。[ 7 ]PULL
PACEには、スタックの最上位値を保持する16ビットの内部アドレスが10個あります。PACEのユニークな特徴は、スタックがほぼ満杯になりプッシュを試みた場合、またはプルを試みた後にスタックが空になった場合に割り込みが生成されることです。これは通常、スタックの値の一部またはすべてをメインメモリにコピーする割り込みハンドラコードを呼び出すために使用されます。これにより、内部スタックレジスタは、より大きなメモリベースのスタックのキャッシュのように使用できます。 [ 7 ]
ステータスおよび制御フラグ レジスタも 16 ビット幅でした。ビット 0 と 15 は両方とも 1 に設定され、通常は使用されませんが、残りの 14 ビットがアクティブに使用されます。これには、加算の結果がキャリーになったことを示す CRY、オーバーフローした場合の OVF、シフト命令および回転命令中にシフトする必要があるビットを示す LINK などの一般的なフラグが含まれていました。[ 7 ] LINK は、ほとんどのマイクロコンピュータのCPU 設計では通常キャリー フラグを使用して処理されますが、十分なステータス ビットがあるミニコンピュータでは、2 つの別々のフラグを使用することがより一般的です。これは、一般的なシーケンスである一連のシフト/回転および加算命令中に 2 つを別々に追跡できるためです。通常 1 である IN EN フラグにより、割り込みを有効または無効にできます。[ 8 ] IMP-16 にはない PACE のユニークな機能が BYTE フラグです。これをオンにすると、データは16ビットワードではなく8ビットワードでアクセスされます。これにより、 ASCIIテキストなどの8ビットデータの処理が容易になります。[ 8 ]
SCFの残りのビットは、ほとんどがチップ外部のピンに直接マッピングされています。ビット1から5はIE1からIE5までのフラグで、割り込みを優先度に基づいて制御するために使用されます。IE1はスタックオーバーフロー/アンダーフローが発生した場合にのみ設定されます。他の4つのフラグは、個々の割り込みラインを無効にするために使用できます。より一般的には、外部デバイスが割り込みを実行するかどうかを判断するために使用する0から15までのバイナリ値を生成します。例えば、これらのフラグの値が合計5になった場合、割り込み値が5以下のデバイス(1が最高優先度)はそれを表現できますが、より低い優先度(例えば7)を呼び出したいデバイスは、その優先度を保持するように指示されます。[ 8 ]
同様に、SCFフラグF11からF14は、外部デバイスを直接制御するための出力として使用されます。例えば、デバイス6がバス上にデータを出力するように指示するために使用され、これは128バイトの内部バッファを前述の分割ベースページにマッピングすることによって実行されます。[ 8 ]
アドレッシングモードと命令フォーマット
当時のほとんどのマイクロコンピュータ設計とは対照的に、PACEは可変長命令を使用せず、すべての命令が16ビットを使用していました。16ビットワードは、命令フォーマットのために一連のビットフィールドに分割されました。上位6ビット(10から15)はオペコードを保持し、ビット8(Rは相対)と9(Xはインデックス)はアドレッシングモードを示しました。命令の残りの8ビットは通常、8ビットアドレスを保持していました。[ 9 ]これは、任意のメモリ位置を直接指定できなかったことを意味しており、8ビット値から必要な16ビットアドレスを構築するためにいくつかの異なるシステムが使用されました。43の命令と45のオペコードがあり、とにそれぞれ2つのオペコードがありましたLD(ST以下を参照)。[ 10 ]
Xが0のとき、アドレスビットはメモリ内の直接アドレスを表します。Rも0に設定されている場合、アドレスはベースページ内、つまり通常はメモリの最初の256バイト内になります。Rを1、Xを0に設定すると、残りの8ビットはPCからのオフセットとして使用されます。Xビットを1に設定するとインデックスが有効になり、インデックスレジスタの値に加えて8ビットが使用されます。Rが0のときはAC2の値が加算され、1のときはAC3の値が代わりに使用されます。[ 9 ]
通常、ベースページはメモリの最初の256バイトですが、BPSピンがアサートされると、ベースページは最初の128バイトと最後の128バイトに分割されます。[ 9 ]この考え方は、外部デバイスをこれらの上位メモリ位置にマッピングし、バス上のアドレスを調べて上位9ビットがすべて1であるかどうかを確認することで、書き込みと読み取りを簡単に監視できるようにするというものでした。奇妙なことに、の設定を変更する命令はなくBPS、代わりにほとんどのシステムではピンをステータスピンの1つに接続し、ステータス変更命令を使用して制御していました。[ 11 ]
PACEにおける間接アドレッシングは限定的で、主にレジスタとメモリ間で値のロードとセーブを行う命令LDとST命令によってサポートされていました。間接アドレッシングを指定するには、アドレッシング指示ビットではなく、別のオペコードを使用しました。間接アドレッシングを使用する場合、アドレスは通常通り構築され、8つのアドレスビットをベースページまたはPCに追加します。次に、そのメモリ位置から16ビットの値を読み取り、そのアドレスからロードまたはストアします。Xフラグと組み合わせると、まず指定されたインデックスレジスタに8ビットのオフセットが加算または減算されます。[ 12 ]
間接アドレッシングのもう一つの使用例としては、ISZとがあるDSZ。これらはメモリ内の値を増分または減分するものであり、ループの実装によく用いられた。そのため、ループの制御変数がコードブロックの外側に配置されることがあったため、間接アドレッシングが一般的であった。これらの命令のもう一つの興味深い特徴は、(どのアドレッシングモードにおいても)値がゼロに変更されるとSKip命令が呼び出されることである。これにより、追加のテストなしにループを終了できた。通常、ループの最後の命令はJMPループの先頭に戻るが、値が0に達すると自動的にSKそこを通過して処理がJMP続行される。[ 13 ]
このタイプのループ制御はミニコンピュータでは一般的ですが、マイクロコンピュータの設計ではそうではありません。専用マイクロコンピュータでは、この種の操作は通常、複数の命令で実行されます。1つはループインデックスを所定の値(この場合はゼロ)と比較し、条件が満たされない場合は先頭に戻る分岐です。PACEに固有の「スキップ・オン・ゼロ」は、ミニコンピュータの一般的な機能であり、個別のテストを回避することでループ処理を高速化しました。適切でない場合は、インクリメントまたはデクリメントでオフセットをゼロに設定することで、この機能のトリガーを回避できます。[ 13 ]
INS8900

1970年代初頭、半導体製造技術の継続的な進歩により、 NMOSロジック(nMOS)という概念が導入されました。このタイプのロジックには、pMOSのように内部トランジスタが基板層に大きな電圧を必要としないという大きな利点があります。実用的には、nMOSプロセッサは3つの入力電圧ではなく2つの入力電圧で動作し、正電源を+5Vに設定できるため、TTL回路とのインターフェースが非常に容易になります。[ 14 ]
ナショナル セミコンダクターは、この技術を活用し、nMOSのPACEを再設計してINS8900を開発しました。新バージョンでは、オリジナルのチップレイアウトの大部分が維持されましたが、当然のことながら、一部の電源ピンの入力が変更されました。オリジナルの+5V V SSはグランド(GND)に、V BB は+3Vから-8Vに、以前の-12V V GGは+12V V DDに、CLKは+5V CCに変更されました。理由は不明ですが、NCLKはCLKXに変更されました。[ 3 ]
使用上の最も重要な変更は、さまざまな信号ピンが TTL 電圧で動作するようになり、メモリなどの外部システムと直接通信できるようになったことです。この変更では、共有データ/アドレス バス上のアドレスをラッチしなければならないという問題は解決されませんでしたが、そのようなラッチ処理ははるかに容易になりました。比較的複雑な BTE チップを必要とする代わりに、このタスクは一般的な TTL コンポーネントで実行できるようになりました。ただし、ナショナル セミコンダクターは、この用途に自社製の INS8208 と INS8212 を推奨しています。[ 15 ]バスは、バスがアドレス モードかデータ モードか (その他) を示す制御信号をバッファリングする 1 つの INS8208、各バッファに 8 ビットのデータをバッファリングする 2 つの INS8208、各ラッチに 8 ビットのアドレスをラッチする 2 つの INS8212 で実装できるようになりました。[ 16 ]
nMOSの低負荷化によって可能になったもう一つの変化は、クロック信号がそれほど多くの電力を必要としなくなったことである。これによりSTEが不要となり、多くのメーカーから入手可能な適切な水晶振動子と単一の7404インバータで置き換えることが可能になった。[ 16 ]外部クロックが高電力ではなくなったため、必要なクロック入力は以前のNCLK(現在はCLKXと改名)1つだけになった。以前の第2フェーズはCPU上で生成されるようになった。これらの変更により、システムの高速化も可能になった。2MHzの水晶振動子が推奨され、PACEの1.33MHzから大幅に速度が向上した。これにより命令実行時間は8~16マイクロ秒に短縮された。[ 2 ]
その他の変更点には、PACEで見つかった問題に対するいくつかの修正が含まれていました。これらの中で注目すべきは、スタックがいっぱいになったときにトリガーされる割り込みに関する問題です。PACEでは、これは正しく動作しませんでした。割り込みがNIR3またはNIR5と全く同時に到着した場合、間違った割り込みコードが2番地ではなく0番地から呼び出されました。ナショナル セミコンダクターは、この機能を使用しないか、両方の場所に同じアドレスを配置して常に同じコードが呼び出されるようにすることで、実際に何が起こったかを判断できるようにすることを提案しました。[ 17 ]レベル0の割り込みが他の割り込みの12サイクル以内に発生した場合にも同様の問題が発生し、間違ったコードが呼び出されました。[ 18 ]これらの問題はすべて8900で修正されました。[ 17 ]
パフォーマンス
PACEは当時としては比較的高速なクロック速度で動作していましたが、命令セットアーキテクチャ(ISA)はマイクロコードで実装されており、多重化バスはメモリアクセスごとに2サイクルを必要としました。その結果、典型的な命令の実行には約12~30マイクロ秒かかり、当時のIntel 8080などの8ビットプロセッサとほぼ同等の速度でした。[ 2 ]これは、浮動小数点ライブラリなど、より大きなデータを扱う場合には、1命令で2倍のデータを処理できるという利点がありました。 [ 4 ]
注記
参考文献
引用
- ^ 「ナショナル セミコンダクター PACE CPU ファミリー」。
- ^ a b c d eアブラモヴィッツら。 1981 年、p. 1.1.
- ^ a bアブラモヴィッツら。 1981 年、p. 1.10.
- ^ a bアブラモヴィッツら。 1981 年、p. 1.2.
- ^アブラモヴィッツら。 1981 年、p. 1.3.
- ^アブラモヴィッツら。 1981 年、p. 1.4.
- ^ a b cアブラモヴィッツら。 1981 年、p. 1.5.
- ^ a b c dアブラモビッツ他 1981年、1.9頁。
- ^ a b cアブラモヴィッツら。 1981 年、p. 1.6.
- ^ Abramovitz et al. 1981、表1.2。
- ^アブラモヴィッツら。 1981 年、p. 1.7.
- ^アブラモヴィッツら。 1981 年、1.8 ~ 1.9 ページ。
- ^ a bアブラモヴィッツら。 1981 年、p. 1.24。
- ^ Critchlow, DL (2007). 「MOSFETのスケーリングに関する回想」 . IEEE Solid-State Circuits Society Newsletter . 12 (1): 19– 22. doi : 10.1109/N-SSC.2007.4785536 .
- ^アブラモヴィッツら。 1981 年、p. 2.
- ^ a b Abramovitz et al. 1981、p. 1.4、図1.2。
- ^ a bアブラモヴィッツら。 1981 年、p. 1.22
- ^アブラモヴィッツら。 1981 年、p. 1.23。
参考文献
- IPC-16A PACE、ナショナル セミコンダクター データシート、Bitsavers (2018-01-06)
- アブラモヴィッツ, ボブ; エンガー, ジャニス; イングラハム, カーティス; ジェイコブソン, スザンナ; マクガイア, パトリック (1981). Osborne 16-Bit Microprocessor Handbook . Osborne/McGraw-Hill. ISBN 0-931988-43-8。