出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/09/26 14:02 UTC 版)
|
|
この記事には参考文献や外部リンクの一覧が含まれていますが、脚注による参照が不十分であるため、情報源が依然不明確です。
|
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も製造中止になった[1][2][3]。
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ビットである。[4]
外部アクセス時の論理的な4ビットデータフェッチは8ビットの物理フェッチに自動的に変換される。つまりプログラム上はニブル(4ビット)単位アクセスをしても実際には8ビットでアクセスし、そのうちの4ビットだけを使う。
物理的に説明すると、最下位のアドレスビットが1バイト(8ビット)中の上位ニブル(4ビット)なのか下位ニブル(4ビット)なのかを示しているので、実際には19ビットのバイト単位アドレス空間しかないことになる。
Saturnの64ビットレジスタフォーマット:
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) を持っており、それらは64ビット幅である。汎用レジスタのデータはニブル単位でアクセスすることができる。一方、スクラッチレジスタはロードとストアしかできない。
その64ビットレジスタ(つまり16ニブル)は、1ニブルの正負符号、12桁(12ニブル)の仮数部、そして3桁(3ニブル)の指数部(範囲は±499)[5]で構成された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 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,RAM,ROM以外のものも搭載するようになったので、コード名が付与された。 |
|
| Sacajawea (1LR3, 1LE2) | HP-14B, HP-22S, HP-32S (1988), HP-32S+, HP-32SII (1991) |
|
|
| 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で製造された。
|
|
| 2 | Clarke (1LT8) | HP 48SX (1990), HP 48S (1990) |
|
| 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) |
※NECで製造された。Saturn 5 プラットフォームとしても知られている。 |
| New-Yorke | HP 48GX prototype |
※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+という。 |