HP Saturn

HP Saturnとは、1980年代にヒューレット・パッカード社によって開発された、関数電卓あるいは小型コンピュータ向けの、4ビットマイクロプロセッサのシリーズである。

Saturnは旧機種の電卓に使われたNutファミリープロセッサの後継品として開発された。
最初のSaturn CPUは、1984年に発売されたHP-71Bハンドヘルドコンピュータ（日本のポケットコンピュータに類似）に搭載された。
その後、新規バージョンのCPUがHP 48 シリーズ関数電卓に特に多く搭載されるようになった。
HP 49/50 シリーズでも、最初期のモデルには同様にSaturn CPUが搭載された。しかし2003年に、NECの工場が技術的理由でSaturnプロセッサの製造をすることができなくなっため、同年発売されたHP 49g+からは、ARM920T（ARMv4Tアーキテクチャ）をコアとした Samsung S3C2410 プロセッサを使うように設計が変更され、Saturn CPU（Apple series ）をソフトウェアでエミュレーションするようになった。

2000年に発売されたHP 39GとHP 40Gは、Saturn CPUを搭載した最後の電卓になった。
Saturnエミュレータを搭載した最後の電卓は、2006年に発売されたHP 39gs、HP 40gs、HP 50gの3機種、ならびにhp 48gIIの2007年版であった。
特にHP 50gは、Saturnエミュレータを搭載した電卓の中で最も遅くまで製造されていた。サムスン電子がHP 50g用のARMプロセッサの製造を中止したため、2015年にHP 50gも製造中止になった。

 アーキテクチャ 
Saturnアーキテクチャはデータの基本単位がニブル(4ビット)単位である。1ニブルで1桁のBCD(二進化十進数)を保持できる。

Saturnマイクロプロセッサは64ビットと20ビットのハイブリッドCPUのように見えるが、4ビットCPUのような動作をする。プログラム上でニブル（4ビット）単位のデータを扱い、ニブル（4ビット）単位のアドレスシステムを使うからである。

メインレジスタのA,B,C,Dとスクラッチレジスタ（一時記憶用）のR0,R1,R2,R3,R4は6ビット幅であるが、データレジスタのD0とD1は20ビットである。GUIDE TO THE SATURN PROCESSOR

外部アクセス時の論理的な4ビットデータフェッチは8ビットの物理フェッチに自動的に変換される。つまりプログラム上はニブル（4ビット）単位アクセスをしても実際には8ビットでアクセスし、そのうちの4ビットだけを使う。

物理的に説明すると、最下位のアドレスビットが1バイト（8ビット）中の上位ニブル（4ビット）なのか下位ニブル（4ビット）なのかを示しているので、実際には19ビットのバイト単位アドレス空間しかないことになる。

Saturnの64ビットレジスタフォーマット：

s:正負符号、m:仮数、x:指数、w:ワード、b:バイト
Bits63-6059-5655-5251-4847-4443-4039-3635-3231-2827-2423-2019-1615-1211-87-43-0NibbleFEDCBA9876543210Register fieldwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwNumber fieldssssmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmxxxxxxxxxxxxAddress field????????????????????????????????????????????aaaaaaaaaaaaaaaaaaaaByte field????????????????????????????????????????????????????ssssbbbbbbbb
Satrunは4つの汎用レジスタ (A,B,C,D) と5つのスクラッチレジスタ (R0-R4) を持っており、それらは64ビット幅である。汎用レジスタのデータはニブル単位でアクセスすることができる。一方、スクラッチレジスタはロードとストアしかできない。

その64ビットレジスタ（つまり16ニブル）は、1ニブルの正負符号、12桁（12ニブル）の仮数部、そして3桁（3ニブル）の指数部（範囲は±499）"Introduction to Saturn Assembly Language (PDF)" (P104 "56.1 Real number")によると、負の指数を表現するとき、1000 - ABS(exponent) で計算した値を格納する。例えば、-499の場合、指数として1000-|-499|=501を格納することになる。つまり501以上の指数は負の指数とみなす。そのため、指数の範囲は-499～+500となるが、HP 50gの実機で確認したところ-499～+499までしか指数は使えないので、+500はあえて使わないようにしているのだろう。で構成されたBCD浮動小数点数を格納することができる。直接的な2進数表現の代わりにBCD（二進化十進数）を使うと、2進数/10進数変換時の丸め誤差を回避できるという利点がある。

メモリ使用効率を最適化するためにSaturnのアドレスはニブル単位である。3つのポインタレジスタ（プログラムカウンタ含む）とアドレスデータパスは20ビット幅である。このため、Saturnアーキテクチャは1Mニブル = 512 KBをアドレスできる。

HP 48GXのように512 KBを越えるアドレスが必要な場合はバンク切替が使われる。

HP 48S/SX と HP 48G/GX シリーズにおいて、Saturn CPUコアはより複雑なチップセットの一部として組込まれている。

 Saturn搭載チップセットと利用製品 
最初のSaturn CPUという名前はチップ全体を指していた。後にチップはSaturn CPUとメモリだけでなく周辺回路も搭載するようになったので、チップセットになった。各チップセット毎に搭載している周辺回路なども異なるので、各チップセットはコード名で区別されるようになった。

チップセットのコード名はルイス・クラーク探検隊の隊員にちなんだコード名を付けられている。HP 48S/SXの場合、ウィリアム・クラークにちなんでコード名はClarkeである。HP 48G/GXの場合、クラークの従僕にちなんでコード名はYorkeである。旧機種のHP-28Sの場合は、ルイス・クラーク探検隊のメリウェザー・ルイスにちなんでLewisというコード名であった。
Levelコード名応用製品特性0Saturn (1LF2)HP-44A, HP-71B (1984)?1LJ7ThinkJet プリンター (1984)
HP Integral PC (1985)に搭載されたプリンターである。1Saturn (1LK7)HP-18C (1986), HP-28C (1987), HP-71BCPU : 640 kHz, 命令追加Bert (1LU7)HP-10B (1988), HP-20S (1988), HP-21S CPU : 640 kHz
 ROM : 10 KB
 RAM : 256 bytes
 LCDドライバー搭載

※ここからCPU,RAM,ROM以外のものも搭載するようになったので、コード名が付与された。Sacajawea (1LR3, 1LE2)HP-14B, HP-22S, HP-32S (1988), HP-32S+, HP-32SII (1991) CPU : 640 kHz
 ROM : 10 KB
 RAM : 512 bytes
 LCDドライバー搭載Lewis (1LR2, 1LT8)HP-17B (1988), HP 17BII (1990), HP-19B (1988), HP 19BII (1990), HP-27S (1988), HP-28S (1988), HP-42S (1988)3V CMOSで製造された。
 CPU : 1 MHz
 ROM : 64 KB
 メモリーコントローラー（RAMが外付け）
 LCDドライバー
 赤外線コントローラー2Clarke (1LT8)HP 48SX (1990), HP 48S (1990) CPU : 2 MHz, 命令追加
 メモリーコントローラー（ROMとRAMが外付け）
 LCDコントローラー
 UARTコントローラー
 赤外線コントローラー3Yorke (1LT8)HP 38G (1995), HP 38G+ (1998), HP 39G (2000), HP 40G (2000), HP 48GX (1993), HP 48G (1993), HP 48G+ (1998), HP 49G (1999) CPU : 3.68-4 MHz, 命令追加
 メモリーコントローラー（ROMとRAMが外付け）
 LCDコントローラー
 UARTコントローラー
 赤外線コントローラー
※NECで製造された。Saturn 5 プラットフォームとしても知られている。New-YorkeHP 48GX prototype CPU : 8 MHz
 メモリーコントローラー（ROMとRAMが外付け）
 LCDコントローラー
 UARTコントローラー
 赤外線コントローラー

※HP内部で試作されたものであり、一般に流通しなかった。4Apple series (Big Apple, Mid Apple, Little Apple)hp 39g+ (2003), HP 39gs (2006), HP 40gs (2006), hp 49g+ (2003), hp 48gII (2003/2007), HP 50g (2006)前述のYorke CPUの仮想バージョン（エミュレーター）である。
ARM920Tコア(ARMv4Tアーキテクチャ)のSamsung S3C2410 プロセッサファミリー 48/75 MHz によってYorke CPUエミュレーターが動作した。

追加された仮想命令はSaturn+という。

 脚注 

 参考文献 

  [1] [2] [3] [4] [5] [6]
  [7] [8] [9] [10] [11] [12]
  [13] [14] [15] [16] [17] [18] [19]
  [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31]
  [32]
  [33]

 外部リンク 
 Summary information in the Museum of HP Calculators

Category:CPU
Category:マイクロプロセッサ
Saturn
Category:ヒューレット・パッカードの製品