コンテンツにスキップ
Wikipedia

利用者:Monadaisuki/sandbox

これはこのページの過去の版です。Monadaisuki (会話 | 投稿記録) による 2016年12月8日 (木) 12:49 (個人設定で未設定ならUTC)時点の版 (今度こそ完成?)であり、現在の版 とは大きく異なる場合があります。

Monadaisuki (会話 | 投稿記録)による2016年12月8日 (木) 12:49時点の版 (今度こそ完成?)
ここはMonadaisuki さんの利用者サンドボックスです。編集を試したり下書きを置いておいたりするための場所であり、百科事典の記事ではありません。ただし、公開の場ですので、許諾されていない文章の転載はご遠慮ください

登録利用者は自分用の利用者サンドボックスを作成できます(サンドボックスを作成する 解説)。

その他のサンドボックス: 共用サンドボックス | モジュールサンドボックス

記事がある程度できあがったら編集方針を確認して、新規ページを作成しましょう。

 HP Saturn(英語版を翻訳)

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のエミュレーターを動かすためにARM920T(ARMv4Tアーキテクチャ)をコアとした Samsung S3C2410 プロセッサを使うように変更した。

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

Saturnエミュレーターを搭載した最後の電卓は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である。

外部アクセス時の論理的な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)[4] で構成された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. 2015年4月2日時点のオリジナルよりアーカイブ。accessdate引数が正しくありません。
  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. ^ "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はあえて使わないようにしているのだろう。

参考文献

外部リンク

AltStyle によって変換されたページ (->オリジナル) /