HP Saturn

HP Saturnとは、1980年代にヒューレット・パッカード社によって開発された、関数電卓あるいは小型コンピューター向けの、4bitマイクロプロセッサのシリーズである。 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アーキテクチャはデータの基本単位がニブル(4bit)単位である。1ニブルで1桁のBCD(二進化十進数)を保持できる。 Saturnマイクロプロセッサは64bitと20bitのハイブリッドCPUのように見えるが、4bit CPUのような動作をする。プログラム上でニブル(4bit)単位のデータを扱い、ニブル(4bit)単位のアドレスシステムを使うからである。 メインレジスタのA,B,C,Dとスクラッチレジスタ（一時記憶用）のR0,R1,R2,R3,R4は64bit幅であるが、データレジスタのD0とD1は20bitである。 外部アクセス時の論理的な4bitデータフェッチは8bitの物理フェッチに自動的に変換される。つまりプログラム上はニブル(4bit)単位アクセスをしても実際には8bitでアクセスし、そのうちの4bitだけを使う。 物理的に説明すると、最下位のアドレスビットが1byte(8bit)中の上位ニブル(4bit)なのか下位ニブル(4bit)なのかを示しているので、実際には19bitのバイト単位アドレス空間しかないことになる。 Saturnの64bitレジスタフォーマット： s:正負符号、m:仮数、x:指数、w:ワード、b:バイト Satrunは4つの汎用レジスタ(A,B,C,D)と5つのスクラッチレジスタ(R0-R4)を持っており、それらは64bit幅である。汎用レジスタのデータはニブル単位でアクセスすることができる。一方、スクラッチレジスタはロードとストアしかできない。 その64bitレジスタ(つまり16ニブル)は、1ニブルの正負符号、12桁（12ニブル）の仮数部、そして3桁（3ニブル）の指数部（範囲は±499）で構成されたBCD浮動小数点数を格納することができる。直接的な2進数表現の代わりにBCD（二進化十進数）を使うと、2進数/10進数変換時の丸め誤差を回避できるという利点がある。 メモリ使用効率を最適化するためにSaturnのアドレスはニブル単位である。3つのポインタレジスタ（プログラムカウンタ含む）とアドレスデータパスは20bit幅である。このため、Saturnアーキテクチャは1Mニブル = 512 KBをアドレスできる。 HP 48GXのように512 KBを越えるアドレスが必要な場合はバンク切替が使われる。 HP 48S/SX と HP 48G/GX シリーズにおいて、Saturn CPUコアはより複雑なチップセットの一部として組込まれている。 最初のSaturn CPUという名前はチップ全体を指していた。後にチップはSaturn CPUとメモリだけでなく周辺回路も搭載するようになったので、チップセットになった。各チップセット毎に搭載している周辺回路なども異なるので、各チップセットはコード名で区別されるようになった。 チップセットのコード名はルイス・クラーク探検隊の隊員にちなんだコード名を付けられている。HP 48S/SXの場合、ウィリアム・クラークにちなんでコード名はClarkeである。HP 48G/GXの場合、クラークの従僕にちなんでコード名はYorkeである。旧機種のHP-28Sの場合は、ルイス・クラーク探検隊のメリウェザー・ルイスにちなんでLewisというコード名であった。 ^ Kuperus, Klaas (2015年3月4日). “HP 50g: End of an era” (英語). Moravia. 2015年4月2日時点のオリジナルよりアーカイブ。2019年1月2日閲覧。 ^ Kuperus, Klaas (2015年3月6日). “HP 50g not so good news?”. Moravia. 2016年1月1日閲覧。 ^ Wessman, Tim (2015年12月26日). “Windows 10 won't allow HP 50g USB drivers to be installed”. HP Museum. 2016年1月1日閲覧。 ^ GUIDE TO THE SATURN PROCESSOR ^ "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はあえて使わないようにしているのだろう。 “Guide to the Saturn Processor (With HP48 Applications)” (1998年). 2016年8月6日時点のオリジナルよりアーカイブ。2006年5月3日閲覧。 (French) Voyage au centre de la HP28c/s (2 ed.). Paris, France: Editions de la Règle à Calcul. (2006-06-27). OCLC 636072913. オリジナルの2016-08-06時点におけるアーカイブ。. https://web.archive.org/web/20160806084555/http://www.courbis.fr/Voyage-au-centre-de-la-HP28-c-s,17.html  [1] [2] [3] [4] [5] [6] HP48 Machine Language - A Journey to the Center of the HP 48s/sx (2nd ed.). Corvallis, Oregon, USA: Grapevine Publications, Inc.. (2006-06-25). OCLC 34148948. http://www.courbis.fr/spip.php?article21  [7] [8] [9] [10] [11] [12] (French) Voyage au centre de la HP48 s/sx (3rd ed.). Paris, France: Editions Angkor. (2006-06-25). ISBN 2-87892-003-1. OCLC 29640044. http://www.courbis.fr/spip.php?article20  [13] [14] [15] [16] [17] [18] [19] (French) Voyage au centre de la HP48 g/gx (3rd ed.). Paris, France: Editions Angkor. (2006-06-25). ISBN 2-87892-006-6. OCLC 29640044. オリジナルの2016-08-06時点におけるアーカイブ。. https://web.archive.org/web/20160806140746/http://www.webring.org/l/rd?ring=hp48;id=100;url=http%3A%2F%2Fwww%2Ecourbis%2Efr%2FVoyage%2Dau%2Dcentre%2Dde%2Dla%2DHP48%2Dg%2Dgx%2C18%2Ehtml  [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] (French) Le compagnon de Voyage de la HP48 G/GX. Paris, France: Editions Angkor. (March 1994). ISBN 2-87892-007-4. オリジナルの2016-08-06時点におけるアーカイブ。. https://web.archive.org/web/20160806135932/http://www.courbis.fr/Le-compagnon-de-voyage-de-la-HP48.html  [32] Eric Rechlin, ed (2005-07-16) (ZIP, PDF). Introduction to Saturn Assembly Language (3rd ed.). hpcalc.org. オリジナルの2016-08-06時点におけるアーカイブ。. https://web.archive.org/web/20160806131408/http://www.hpcalc.org/details.php?id=1693  [33] Summary information in the Museum of HP Calculators