HP Saturn 1LT8 Clarke in HP 48 SX
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(ARMv 4Tアーキテクチャ)をコアとした 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も製造中止になった[ 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/SX と HP 48G/GX シリーズにおいて、Saturn CPUコアはより複雑なチップセットの一部として組込まれている。
Saturn搭載チップセットと利用製品
最初のSaturn CPUという名前はチップ全体を指していた。後にチップはSaturn CPUとメモリだけでなく周辺回路も搭載するようになったので、チップセット になった。各チップセット毎に搭載している周辺回路なども異なるので、各チップセットはコード名で区別されるようになった。
チップセットのコード名はルイス・クラーク探検隊 の隊員にちなんだコード名を付けられている。HP 48S/SXの場合、ウィリアム・クラーク にちなんでコード名はClarke である。HP 48G/GXの場合、クラークの従僕にちなんでコード名はYorke である。旧機種のHP-28S の場合は、ルイス・クラーク探検隊のメリウェザー・ルイス にちなんでLewis というコード名であった。
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コア(ARM v4Tアーキテクチャ)のSamsung S3C2410 プロセッサファミリー 48/75 MHz によってYorke CPUエミュレーターが動作した。
追加された仮想命令はSaturn+ という。
出典
^ 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]
外部リンク