HP Saturn

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

4bit マイクロプロセッサCPU)のSaturnファミリーはプログラミング科学技術電卓あるいは小型コンピューター向けとして1980年代にヒューレット・パッカード社によって開発された。

Saturnは以前の電卓に使われたNutファミリープロセッサの後を引継いだ。

最初のSaturnチップセットは1984年に発売されたBASIC言語でプログラミング可能なHP-71B英語版ハンドヘルドコンピューター(日本で言うところのポケコン)に搭載された。

Saturnファミリーのその後のモデルは数あるHP製品の中でも人気のあったHP 48 シリーズ電卓に特に多く搭載された。

HP 49/50 シリーズも最初だけ同様にSaturn CPUを搭載した。しかし、NECの工場が2003年に技術的理由でSaturnプロセッサの製造をすることができなくなった。

そのため、2003年に発売されたHP 49g+からは、ソフトウェアでSaturn CPUのエミュレーターApple series )を動かすためにARM920T(ARMv4Tアーキテクチャ)をコアとした Samsung S3C2410 プロセッサを使うように変更した。

2000年に発売されたHP 39GHP 40GはSaturn CPUを搭載した最後の電卓になった。

Saturnエミュレーター(Apple series )を搭載した最後の電卓は2006年に発売されたHP 39gsHP 40gsHP 50gの三機種とhp 48gIIの2007年版であった。

特にHP 50gはSaturnエミュレーターを搭載した電卓の中で最も遅くまで製造されていた。サムスン電子がHP 50g用のARMプロセッサの製造を中止したので、2015年にHP 50gも製造中止になった。[1][2][3]

アーキテクチャ[編集]

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である。[4]

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

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

Saturnの64bitレジスタフォーマット:

s:正負符号、m:仮数、x:指数、w:ワード、b:バイト

Bits 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
Nibble F E D C B A 9 8 7 6 5 4 3 2 1 0
Register field wwww wwww wwww wwww wwww wwww wwww wwww wwww wwww wwww wwww wwww wwww wwww wwww
Number field ssss mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm xxxx xxxx xxxx
Address field ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? aaaa aaaa aaaa aaaa aaaa
Byte field ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ssss bbbb bbbb

Satrunは4つの汎用レジスタ(A,B,C,D)と5つのスクラッチレジスタ(R0-R4)を持っており、それらは64bit幅である。汎用レジスタのデータはニブル単位でアクセスすることができる。一方、スクラッチレジスタはロードとストアしかできない。

その64bitレジスタ(つまり16ニブル)は、1ニブルの正負符号、12桁(12ニブル)の仮数部、そして3桁(3ニブル)の指数部(範囲は±499)[5]で構成されたBCD浮動小数点数を格納することができる。直接的な2進数表現の代わりにBCD(二進化十進数)を使うと、2進数/10進数変換時の丸め誤差を回避できるという利点がある。

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

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

HP 48S/SXHP 48G/GX シリーズにおいて、Saturn CPUコアはより複雑なIC(集積回路)の一部として組込まれている。

これらのICパッケージはルイス・クラーク探検隊の隊員にちなんだコード名を付けられている。HP 48S/SXの場合、ウィリアム・クラークにちなんでICのコード名はClarkeである。HP 48G/GXの場合、クラークの従僕にちなんでICのコード名はYorkeである。

ちなみに旧機種のHP-28SのSaturn搭載ICはルイス・クラーク探検隊のメリウェザー・ルイスにちなんでLewisというコード名であった。

Saturn搭載チップセットとその応用製品[編集]

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

チップセットのコード名はルイス・クラーク探検隊(1804-1806)の隊員にちなんだコード名を付けられている。

ルイス・クラーク探検隊はアメリカ合衆国で最初に陸路で西海岸まで到達し、生還した探検隊である(当時のアメリカ合衆国はアメリカ大陸の東側の一部だけであった)。

Level コード名 応用製品 特性
0 Saturn (1LF2) HP-44A, HP-71B (1984)
? 1LJ7 ThinkJet プリンター (1984)

HP Integral PC (1985)に搭載されたプリンターである。

1 Saturn (1LK7) HP-18C (1986), HP-28C (1987), HP-71B CPU : 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ドライバー
  • 赤外線コントローラー
2 Clarke (1LT8) HP 48SX (1990), HP 48S (1990)
  • CPU : 2 MHz, 命令追加
  • メモリーコントローラー(ROMとRAMが外付け)
  • LCDコントローラー
  • UARTコントローラー
  • 赤外線コントローラー
3 Yorke (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-Yorke HP 48GX prototype
  • CPU : 8 MHz
  • メモリーコントローラー(ROMとRAMが外付け)
  • LCDコントローラー
  • UARTコントローラー
  • 赤外線コントローラー

※HP内部の試作品として作られただけ。市場には決して出ていない。

4 Apple 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. ^ Kuperus, Klaas (2015年3月4日). “HP 50g: End of an era”. Moravia. ...
  2. ^ Kuperus, Klaas (2015年3月6日). “HP 50g not so good news?”. Moravia. 2016年1月1日閲覧。
  3. ^ Wessman, Tim (2015年12月26日). “Windows 10 won't allow HP 50g USB drivers to be installed”. HP Museum. 2016年1月1日閲覧。
  4. ^ GUIDE TO THE SATURN PROCESSOR
  5. ^ "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はあえて使わないようにしているのだろう。

参考文献[編集]

外部リンク[編集]