| デザイナー | ヒューレット・パッカード |
|---|---|
| ビット | ハイブリッド 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 39GとHP 40Gは、 NEC製のサターンハードウェアをベースにした最後の電卓でした。サターンエミュレータを搭載した最後の電卓は、 2006年のHP 39gs、HP 40gs、HP 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 ビット/ニブルです)。

Saturn 64 ビット GPR レジスタの形式とフィールド:
| ビット | 63~60 | 59~56 | 55~52 | 51~48 | 47~44 | 43~40 | 39~36 | 35~32 | 31~28 | 27~24 | 23~20 | 19~16歳 | 15~12歳 | 11~8 | 7~4 | 3-0 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ニブル | F | E | D | C | B | あ | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| フィールド | XS | B | |||||||||||||||
| あ | |||||||||||||||||
| S | M | X | |||||||||||||||
| 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-44A、HP-71B (1984年) | |
| 1 [ 7 ] [ 8 ] | 土星(1LK7) | HP-18C (1986年)、HP-28C (1987年)、HP-71B | 640 kHz、詳細な説明 |
| 2 [ 7 ] [ 8 ] | バート[ 9 ] (1LU7) [ 9 ] | HP-10B (1988年)、HP-20S (1988年)、HP-21S | 640 kHz、10 KB ROM、256バイト RAM、LCDドライバ |
| 2 [ 7 ] [ 8 ] | サカジャウィア[ 9 ] (1LR3) | HP-14B、HP-22S、HP-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 ]
指数が負の場合、指数は「1000 - ABS(指数)」とエンコードされます。
[1]