HPサターン

土星
Saturn CPU を内蔵した HP48SX 1LT8 SoC ダイの写真
HP 48SXで使用するために HP が製造した組み込み Saturn マイクロプロセッサを搭載したHP 1LT8 Clarke SoCの露出ダイの写真
デザイナーヒューレット・パッカード
ビットハイブリッド 64 ビット GPR、20 ビット アドレス バス、4 ビット データパス、4 ビットの最小ワード サイズ
紹介された1984
バージョン「レベル2」
デザインCISC
タイプロード・ストアアーキテクチャと、レジスタ・メモリアーキテクチャファミリーに属するいくつかの例外を組み合わせたもの
エンコーディング変数
分岐キャリービット、スティッキービット、その他のフラグレジスタ
エンディアンリトルエンディアン
ページサイズMMUまたはページングが利用できません
拡張機能エミュレートされたARMベースの「仮想」 CPUの拡張機能のみ
開ける独自の
前任者ナット
レジスター
9つの64ビットGPRおよび「スクラッチ」レジスタ、2つの20ビット「データポインタ」レジスタ、およびその他のレジスタ
汎用4つの64ビットGPR
浮動小数点FPUレジスタなし
ベクターベクトルレジスタなし

Saturnファミリの4 ビット(データパス)マイクロプロセッサは 1980 年代にHewlett-Packard社によって開発されました。最初は 1984 年にリリースされたHP-71Bハンドヘルド コンピュータ向けに、後にさまざまなHP 電卓( HP-18Cから開始) 向けに開発されました。これは、初期の電卓で使用されていたNutファミリのプロセッサの後継です。HP48SXと HP48S は、HP 製の Saturn プロセッサを使用した最後のモデルであり、後のモデルではNEC製のプロセッサが使用されました。HP 49 シリーズは、当初 Saturn CPU を使用しましたが、2003 年に NEC 工場[注 1 ]が技術的な理由でプロセッサを製造できなくなります。2003年のHP 49g+モデル以降、電卓はARM920Tコア ( ARMv4Tアーキテクチャの一部) を搭載したSamsung S3C2410プロセッサに切り替わり、Saturn ハードウェアのエミュレータをソフトウェアで実行しました。 2000年に発売されたHP 39GHP 40Gは、 NEC製のサターンハードウェアをベースにした最後の電卓でした。サターンエミュレータを搭載した最後の電卓は、 2006年のHP 39gsHP 40gsHP 50g 、そして2007年版のhp 48gIIでした。HP 50gは、このエミュレータを使用してHPが販売した最後の電卓であり、SamsungがベースとなったARMプロセッサの生産を中止したため、2015年に生産が中止されました。[ 1 ] [ 2 ] [ 3 ]

建築

サターンのハードウェアはニブルシリアル設計[ 4 ]で、ビットシリアルだった前身のNutとは対照的である。[ 5 ]内部的には、サターンCPUは4つの4ビットデータバスを持ち、1つまたは2つのバスがソースとして、もう1つまたは2つのバスがデスティネーションとして動作することで、1ニブルあたりほぼ1サイクルのパフォーマンスを実現している。[ 4 ]アドレス指定可能な最小ワードは4ビットニブルで、1つの2進化10進数(BCD)桁を保持できる。レジスタ内のニブルよりも大きいデータ単位(最大64ビット)は、全体を操作することができるが、サターンCPUは内部的にニブル単位でシリアルに操作を実行する。[ 4 ]

Saturnアーキテクチャは、内部レジスタ幅が64ビット、アドレスが20ビットで、メモリは4ビット(ニブル)単位でアドレス指定されます。Saturn ALU命令は可変データ幅をサポートし、1ワードの1~16ニブルで動作します。オリジナルのSaturn CPUチップは4ビットの外部データバスを備えていましたが、後のSaturnベースのSoCでは、8ビットの外部データバスと19ビットの外部アドレスバスへのオンチップバス変換機能が搭載されました。

Saturnアーキテクチャには、A、B、C、Dという4つの64ビットGPR(汎用レジスタ)があります。さらに、R0、R1、R2、R3、R4という5つの64ビット「スクラッチ」レジスタがあります。これらはデータの格納のみ可能です。スクラッチレジスタのデータに対してALU演算が必要な場合は、まず当該レジスタをGPRに転送する必要があります。その他のレジスタには、Pという1ニブルの「ポインタ」レジスタがあり、これは通常、GPR内のニブルまたはニブルの範囲を選択するために使用されます(または、ラップアラウンドを使用して、GPR内の特定のニブルに即値データをアライメントするために使用されます)。メモリアクセス用には、D0とD1という2つの20ビットのデータポインタレジスタがあります。Saturnアーキテクチャには、GPRと相互運用可能なPC(プログラムカウンタ)レジスタもあります。また、サブルーチン呼び出し命令が発行される際に使用される、RSTKという8レベル、循環、LIFO、20ビットのハードウェアリターンスタックもあります。さらに、Saturn CPUには、STと呼ばれる16ビットのソフトウェアステータスレジスタと、HSと呼ばれる1ニブルのハードウェアステータスレジスタが搭載されています。HSには、バイナリ1がGPRから右シフトされたかどうかを示すSB(スティッキービット)フラグが含まれています。さらに、Saturnアーキテクチャには12ビットのOUTレジスタと16ビットのINレジスタがあり、YorkeおよびClarke SoCでは、キーボードからの入力をキャプチャしたり、ビープ音を制御したりするために使用されています。また、1ビットのキャリーフラグレジスタも存在します。

上記に加えて、サターンCPUはシンプルで優先度のない割り込みシステムを備えています。割り込みが発生すると、CPUは現在の命令の実行を終了し、プログラムカウンタをハードウェアリターンスタック(RSTK)に保存し、アドレス0x0000Fh(前の値がニブルで格納されている)にジャンプします。[ 4 ] CPUはキーボードスキャンロジックとも直接やり取りします。

次の図はレジスタを示しています (1 ビットのキャリー フラグを除き、各白い四角は 4 ビット/ニブルです)。

「HP Saturnレジスタフィールドのグラフィカル表現」
HPサターンレジスタ

Saturn 64 ビット GPR レジスタの形式とフィールド:

HP Saturnレジスタフィールド
ビット63~6059~5655~5251~4847~4443~4039~3635~3231~2827~2423~2019~16歳15~12歳11~8  7~4  3-0 
ニブルFEDCB9876543210
フィールド  XSB
 
SMX
W
P=0  P
P=7  WP

汎用レジスタのデータには、ニブル境界にあるフィールドを介してアクセスできますが、スクラッチレジスタではロードとストアの操作のみが可能です。上図に示すように、フィールドはW(64ビットGPR全体)、A(アドレス、GPRの最初の5ニブル)、S(仮数部の符号、GPRの最上位ニブル)、XS(指数部の符号、GPRのニブル2)、M(仮数部、GPRのニブル3~14)、X(指数部、GPRの最初の3ニブル)、B(GPRの最初のバイト)です。さらに、Pレジスタの4ビット値に基づいてGPRからニブルを選択するPフィールドがあります。また、Pレジスタで選択されたニブル0からニブルを選択するWPフィールドもあります。 64ビット(16ニブル)は、BCD形式の符号化浮動小数点数を保持できます。この数値は符号ニブル(負の数の場合は「9」)、12桁の仮数、およびBCD形式で格納された3桁の10の補数指数(±499)で構成されます。[ 6 ] BCD浮動小数点値の内部表現は、15桁の仮数と、1つのレジスタに格納された1つの符号ニブル、および別のレジスタに格納された10の補数形式の20ビット指数で構成されています。単純な2進数表現ではなくBCDを使用することで、2進数/10進数変換時に発生する丸めの問題を回避できるため、計算機にとって有利です。

サターンCPUの命令アドレスとデータアドレスもニブルベースです。3つのポインタレジスタ(プログラムカウンタを含む)とアドレスレジスタは20ビット幅です。これにより、サターンアーキテクチャは1Mニブル、つまり512Kバイトのアドレス指定が可能です。このサイズを超える場合(例えば48GXなど)、バンクスイッチングが使用されます。

オリジナルのHP-71BハンドヘルドコンピュータとHP-28Cでは、Saturnプロセッサは独立したチップとして搭載されていました。HP 48S/SX、48G/GXシリーズ、HP-28S、HP-27S、HP-42S、HP-32SII、HP-20Sでは、Saturn CPUコアはより複雑な集積回路(IC)SoCの一部として統合されています。

サンプルコード

以下は、Saturn Jazz / HP Tools アセンブリ構文での BCD 小数平方根アルゴリズムの整数実装です。

** 以下では、AW に引数 (< 1E14) が含まれているものと想定されます。 ** 結果 (IP(SQRT(AW))) は CW です: SETDEC ASL W C=AW A=A+AW A=A+AW A=A+CW ASR W C=0 W P= 13 LC(1) 5 - CSR WP C=C-1 P -- C=C+1 P A=AC W GONC -- A=A+CW CSR W P=P-1 P=P-1 ゴンク - セセックス A=時計回り

チップセットとアプリケーション

オリジナルのSaturn CPUは、命令セットアーキテクチャ全体にその名を与えました。その後のチップにはそれぞれ独自のコード名が付けられました。

ISAレベルプロセッサコード名計算機モデルで使用されるプロパティ
0 [ 7 ] [ 8 ]土星(1LF2) HP-44AHP-71B  (1984年)
1 [ 7 ] [ 8 ]土星(1LK7) HP-18C  (1986年)、HP-28C  (1987年)、HP-71B640 kHz、詳細な説明
2 [ 7 ] [ 8 ]バート[ 9 ] (1LU7) [ 9 ]HP-10B  (1988年)、HP-20S  (1988年)、HP-21S640 kHz、10 KB ROM、256バイト RAM、LCDドライバ
2 [ 7 ] [ 8 ]サカジャウィア[ 9 ] (1LR3) HP-14BHP-22SHP-32S  (1988年)、HP-32S+HP-32SII  (1991年) 640 kHz、16 KB ROM、512バイト RAM、LCDドライバ
2 [ 7 ] [ 8 ]ルイス[ 9 ] (1LR2) HP-17B  (1988)、HP 17BII  (1990)、HP-19B  (1988)、HP 19BII  (1990)、HP-27S  (1988)、HP-28S  (1988)、HP-42S  (1988) 1 MHz、64 KB ROM、LCD ドライバ、メモリ コントローラ、IR制御、3 V CMOS
2 [ 7 ] [ 8 ]クラーク[ 9 ] (1LT8) [ 9 ]HP 48SX  (1990)、HP 48S  (1991) 2 MHz、LCDコントローラ、メモリコントローラ、UARTおよびIR制御、その他の命令
2 [ 7 ] [ 8 ]ヨーク[ 9 ] 00048-80063 [ 10 ]HP 38G  (1995)、HP 38G+  (1998)、HP 39G  (2000)、HP 40G  (2000)、HP 48GX  (1993)、HP 48G  (1993)、[注 1 ] HP 48G+  (1998)、HP 49G  (1999) 3.68~4 MHz、LCDコントローラ、メモリコントローラ、UARTおよびIR制御、 NEC製、命令が多い、 Saturn 5プラットフォーム とも呼ばれる
? ニューヨークHP 48GXプロトタイプ 8MHz、LCDコントローラ、メモリコントローラ、UART、IR制御。これはHP社内のプロトタイプとしてのみ製作され、一般公開されることはなかった。[ 11 ] [ 12 ]
2 [ 7 ] [ 8 ] [注 2 ]アップルシリーズ(ビッグアップル[ 9 ]ミッドアップル[ 9 ]リトルアップルhp 39g+  (2003)、HP 39gs  (2006)、HP 40gs  (2006)、hp 49g+  (2003)、hp 48gII  (2003/2007)、HP 50g  (2006) Yorke CPU の仮想バージョンは、ARM920Tコア ( ARMv4Tアーキテクチャ) を搭載した 48/75 MHz Samsung S3C2410プロセッサ ファミリのメンバー (別名Saturn+ ) によってエミュレートされ、追加の仮想命令を備えています。

CPUのコードネームは、 1804年から1806年にかけて行われたルイス・クラーク探検隊(アメリカ初の太平洋岸往復陸路探検隊)のメンバーに由来しています。仮想CPU/エミュレータのコードネームは、サターンベース8MHz SoCのプロトタイプ「New-Yorke」に由来しています。このSoCは製品化には至りませんでした。[ 12 ] ACO(オーストラリア計算機事業)のメンバーの一人によると、「Big Apple」はサターンベース8MHz SoCのプロトタイプのコードネーム「New-Yorke」に由来し、ニューヨーク市にちなんで名付けられました。そのため、「Big apple」、「Mid Apple」、「Little Apple」という名前が付けられました。[ 12 ]

参照

注記

  1. ^ a b HP 48Gでは、Saturnプロセッサには「NEC Japan、D3004GD、00048-80063、9738PX002」というラベルが貼られています。
  2. ^エミュレートされた/仮想の「Apple」シリーズのSaturn CPUでは、 ISA レベル/バージョンは「2」ですが、仮想オペコード拡張が使用されています。

参考文献

  1. ^ Kuperus, Klaas (2015年3月4日). 「HP 50g:時代の終焉」 . forum.hp-prime.de . Moravia. 2015年4月2日時点のオリジナルよりアーカイブ。
  2. ^ Kuperus, Klaas (2015年3月6日). 「HP 50g はそれほど良いニュースではないのか?」 HP博物館. モラビア. 2018年7月8日時点のオリジナルよりアーカイブ2016年1月1日閲覧。
  3. ^ Wessman, Timothy "Tim" James (2015年12月26日). 「Windows 10ではHP 50g USBドライバーのインストールが許可されない」 HP Museum . 2018年7月8日時点のオリジナルよりアーカイブ。 2016年1月1日閲覧
  4. ^ a b c d「3.1 プロセッサの概要」。HP -71B ハードウェア内部設計仕様。ヒューレット・パッカード社。1984年9月。p. 3-1。00071-90071。
  5. ^ HP-41C CPU、ディスプレイドライバ、HP-IL、データストレージ、タイマーIC、およびインタフェースICの仕様。ヒューレット・パッカード社。1981年7月。5ページ。
  6. ^ Fernandes, Gilbert Henri (2005-07-16) [1999-01-29]. 「第56.1章 実数」. Rechlin, Eric (編). 『Saturn アセンブリ言語入門(第3版)』. hpcalc.org. p. 104. ID 1693. 2018年11月13日時点のオリジナルよりアーカイブ。 2019年4月29日閲覧指数が負の場合、指数は「1000 - ABS(指数)」とエンコードされます。[1]
  7. ^ a b c d e f g hドンニーニ、ジュゼッペ (2020-06-26). 「ニューヨーク」?www.hpmuseum.org . 2020年7月6日閲覧
  8. ^ a b c d e f g h「Saturnアセンブラマニュアル」 . www.hpcalc.org . Hewlett Packard. 1993年8月20日. 2020年7月6日閲覧
  9. ^ a b c d e f g h i Finseth, Craig A. (2016年12月23日). 「names」 . 2017年12月21日時点のオリジナルよりアーカイブ2017年12月21日閲覧。
  10. ^ Arnett, Dave (1994-05-03). 「Name that chip!」 .ニュースグループcomp.sys.hp48 . 2019年4月29日時点のオリジナルよりアーカイブ。 2019年4月22日閲覧
  11. ^デ・ブレビッソン、シリル (2020-06-17). 「RE:「ニューヨーク」?」www.hpmuseum.org 2020年6月18日に取得
  12. ^ a b c de ブレビッソン、シリル (2020-06-16). 「RE:「ニューヨーク」?」www.hpmuseum.org 2020年6月18日に取得

さらに読む