第4回・ClassicPentiumマシンのCPUをMMXPentiumマシンに換装する


MMXでないマシンのCPUをMMXPentiumに交換してしまう。
MMXマシン、非常に魅惑的(※1)な響きだ。
もっとも、クラシックPentiumとの違いはそうはない。
大きな点はMMX命令(※2)の搭載である。次にキャッシュ容量(※2)が2倍になっている点だ。
細かい違いとしては、条件分岐命令予測機構(※2)の改良などである。

まず、CPUをただ交換すればMMXマシンになるという物ではないのだ。
電圧の問題がある。最新のCPUは動作スピードを上げるために電圧を下げているのだ。
現在では2.9Vなどの電圧になっているが、消費電力が20W以上などになっているところをみると、
電流は10A以上(※3)になっているのだろう。
外部との調停を行うため、I/O系列とコア電圧の2種類の電圧を要求するなど、最近のCPUは複数電源化(※4)
になっているようだ。
これをあらかじめ考慮した物(※5)に、VRMユニットの装着が可能なマシンがある。
それ以前のマシンでは、仕方が無い、CPUの直前で電圧を調整する下駄(※6)と呼ばれる物を使用する。

さて、実はこれだけではMMXCPUはまだ動作しないのだ。
それは、BOOTROM(ITF※7)がMMXCPUに対応していないためである。
実際には、MMXCPUは、MMX命令を使わない限りクラシックPentiumとなんらかわりない。
のだが、いろいろな動作が高速化されているため、ついてこれない部分が出てくるのだ。
まず、条件分岐予測機構の改良が大きい。
いままでのPentiumは、実はループ用の命令などが予測の対象外だったとか言う話だ。
そのため、タイミング調整がうまく行かず、いつまでも帰ってこない応答(※8)を待っていたりする。
「それならば、CPUの速度に依存しないウェイトをかければいいじゃないか?」と思うであろう。
たしかにそうだ。それならば、ウェイトの問題は一気に解決するのだが、いかんせん、起動時のハードウェア
テストである。チェックもしていないハードウェアの機能を使用するわけにもいかないのだ。(※9)
高速化したとき、起動時の「ぴぽ」音が変わるのを耳にした方も多いだろう。
これは、CPUのスピードが非常に影響される部分なので、このようになってしまっているのだ(※10)

というわけで、このままではMMXPentiumに交換しただけでは、動作しないマシンが多い。
そういったマシンではどのようにすれば、MMXPentiumを動作させる事が出来るのか?

次回に続く!



※1
レナードニモイってあの人間離れした感じがなんとも言えないのである。
やっぱ彼が監督をやっていると、宇宙大作戦って感じがするな。
日本では、昔車かなんかの宣伝で出演していた事もあった。車の上に座った状態で浮いていたのだが、
CMネタはすぐに風化してしまって訳が分からなくなるのが問題点である。
ちなみに、どの辺が魅惑的かというと、その昔386マシンを486DLCで486マシンにしてしまうというのがあったが、
そうしたマシンの事を486マシンと他人に呼ばれると、非常にうれしかったのを思い出す。それと似たような感じなとこ。


※2
MMX命令とは、マルチメディア用の命令である、と、なっている。要は、現在用意されている命令では、
大きな単位で処理するための命令であるため、小さい単位(画面の単位は比較的小さい)では、余った部分が
無駄になってしまう。そのため、小さい単位を複数まとめて処理する命令があれば、そのまとめる単位により、
2倍3倍の処理が行えるわけだ。
キャッシュメモリとは、メインメモリの速度が遅いため、その遅さを補うために用意されたメモリである。
この速度は1次キャッシュと呼ばれるCPU内部にあるメモリは、CPUコアと同一の速度で動作する、
非常に高速なメモリであるといえよう。そして、一般的に外部に増設するのが2次キャッシュである。
2次キャッシュは外部に増設するだけあって、非常に制約を受けやすい。そのためCPUと同一の速度で
動作する事はまず不可能である。
CPU内部に2次キャッシュを内蔵しているCPUもあり、この場合はCPUと同一の速度で動作する事が
可能である。1次キャッシュとどう違うんだというと、バスインターフェースユニットの内側にあるのか、
外側にあるのかの違いが大きいところである。1次キャッシュは非常にCPUと密接した関係にあるといえる。
1次キャッシュを中心としてその周りを様々なブロックで構成するといった形になっているのだ。
ノイマン型コンピュータのように記憶装置が非常に重要なウェイトをしめるコンピュータでは、記憶装置への
アクセスがコンピュータの性能を決めるのである。(非ノイマン型コンピュータの1つである、ニューロコンピュータ
では、構成要素の一つであるPE
(プロセッシングエレメント=処理元素 この場合ニューロンを指す)が、記憶と
計算の両方の要素を併せ持っている。この場合メモリアクセスという考え方はない)

条件分岐予測機構とは、現在のCPUの基本ルールである、もし〜ならばを予測してしまおうという物である。
現在のCPUは、ある程度先読みを行う事で、高性能を実現しているのだ。
そして、条件分岐は条件によって進む方向が違うために、先読みが出来ない。そのために性能が落ちてしまうのだ。
そこで、Pentiumでは、前回の分岐先をおぼえておき(256エントリまで)、その方向へ先読みを進める
という機構を採用した。プログラムは局所性(一ヶ所に固まりやすい)が多い物であるので、同じような分岐先に
行きやすい事を利用した方法である。
一応、予想的中率は75%だそうだ。(もっとも、でたらめに予想しても、確率は50%なのだが)
新しい分岐予測機構は、エントリの増加、ルールを若干変更といったところであろう。(前回の内容を常に記録していた
のでは、たった1回逆方向に行ったときもそちらを学習してしまう事になるが、ここを前回も外れたら変更等のルールを追加
することにより、より高い予想的中率を実現できる)

ちなみに、68040は、分岐する場合と分岐しない場合の両方を先読みしておくというこった作りになっていた。
あ、そうそうMMXPentiumはいままでのPentiumと違い、キャッシュの制御が4ウェイセットアソシエイティブ
に変更されている。486の時代も4ウェイだったのだが、なぜかPentium時に2ウェイになっていたのだ。
キャッシュには一般的に3つの制御方式がある。ダイレクトマップ方式、フルアソシエイティブ方式、セットアソシエイティブ方式
である。
ダイレクトマップ方式では、アドレス(32ビットとか)を数分割化し、そのうちの数箇所を使用して、目的のキャッシュが格納
されているブロックを見分ける。目的のブロックかどうかは、そこから比較して決めるといった方式で、動作が高速、比較回路が比較
小規模にできる(キャッシュラインあたりの回路量が小さくできる)といった特徴がある。
フルアソシエイティブ方式では、各キャッシュラインにつき記憶アドレスがあり、目的のブロックかどうか判別する。
キャッシュが増えると、比較回路が大量に要る。少なくすると動作が遅くなってしまうといった特徴がある。
そしてキャッシュのヒット率は、フルアソシエイティブ方式のほうが高い。これは、ダイレクトマップ方式では、アドレスの数箇所
が一致した場合同じキャッシュラインを使用しなくてはならないため、前回の内容を追い出す必要があるためである。
一般的には、数百〜数千バイトおきに交互にアクセスされると、それぞれが追い出すといったことが発生してしまうのだ。
そのため、セットアソシエイティブ方式では、同一のラインが複数持てるようにダイレクトマップを数ページ用意したような
構造になっている。もしラインが一致して、追い出さなくてはならなくても、4ウェイなら、4つまでならキャッシュにとどめて
おけるのである。


※3
すごい量なのである。人間は1A流れただけでやばい。人間の皮膚の対電圧レベルは50V程度である。
ちなみに、電話は48V程度であるので、工事しているところに電話がかかってくると、感電する。
(とは言ってもぴりぴりする程度である)
手でそのような物に触ると、1Aを超えた時点で、筋肉は神経の制御を離れ限界までその力を出してしまう。
それが、電線であった場合などはがっちりと握ってしまいにっちもさっちもいかなくなってしまうのだ。
よって、危険な物には手の甲で触るのが強電関係者の常識であるそうだ。
(もっともそのような物には近寄らないのがかしこいのであって、触れとは言っていない。念の為)


※4
単一電源を実現したのは、Zilog社のZ80辺りからであった。
それまでは、CPUは複数の電源が辺り前という時代であったし、メインメモリであるDRAM(ダイナミック
ランダムアクセスメモリ)
なんかは、3電源、5V・−5V・12Vが必要であった。
−5Vと12Vの間でショートが起こったりすると火が点いて、燃えるDRAMという話があったくらいである。
ところで、最近のCPUは昔に戻っているところが多いのだ。
内部スタックなんかを採用しているCPUなんかがいい例である。スタックとは、まあ、スポックの親戚ぐらいと思っ
ていれば間違いないだろう。
昔は、スタックをメモリ上にとらなくて、CPU上に取っていたCPUなんかもあったが、ご想像の通り、
CPU上にとれるスタックなどたかが知れている。
そのためにだんだんとすたれていったのだが、スタックを使用する主な目的である、サブルーチン呼び出しなど、
あまりスタックを使用しない部分などでは、スタックのためのメモリアクセスを軽減する目的で、CPUの内部
スタックを使用するものがあるのだ(超えた部分は外部スタック)


※5
PentiumProには、マザーボードに使用可能な電圧を問い合わせて、調整するといった機能があるらしい。
調整専用の端子なんかもあったりするそうだ。
なんで一般的にならなかったんでしょうねぇ?0.1V単位で調整とかできたのにね。


※6
電圧だけではなく、その他いろいろな事をやっている下駄もある。
WildCatな98ユーザーにとっては必需品ともいえるMTSA−M1Tなんかがいい例であろう。


※7
Initial Test Farmwareの略で、起動時の状態チェックプログラムである。
一般的に外部から見られるテスト項目はメモリテストであろう。これ以外のテスト項目が見えたのならば、
それはかなり危険な状態である。
もっとも、それらはクロックアップが原因であったり、増設したボードによるためであったりするので、
それらを元に戻したり、初期化を行ったりする事によって復帰する事が多い。


※8
そもそも、要求がきちんと伝わっていないのだから、応答が帰ってくるわけが無いのである。
これは、速いCPUやクロックアップをしたときに、FM音源が正常にならなくて、ハングした経験がある人なら、
うなずけると思う。つまり、こちらの信号がうまくFM音源チップに伝わっていないので、FM音源からの応答が
帰ってこなくて、いつまでも待ってしまうのだ。もちろん、外部タイマで時間を調べたりして、あまりにも時間が
掛かっているようならば、タイムアウトして抜けてくるという処理も考えられるが、タイマの資源や、処理速度を
考えるとあまりいい方法とはいえない。
ちなみに、MMX化したときの動作不良の一番の原因は、BIOSの切替え時に、切替えが完了する前に、ウェイトを
通り越して、進んでいってしまうという原因のようだ。


※9
もっとも、資源を使わずに一定のウェイトを得るための機構が、実は存在する。
ポート5Fhがそうで、ここにアクセスすると一定のウェイトが保証されているウェイトポートである。
ここは、壊れるような部分ではないので、これを使えば一定のウェイトが取れるはずである。
(なにもつながっていないポートにアクセスすると、一定のウェイトが入るようになっているため、
 ここは、将来使わないという約束がされているだけである。が、最新の機種では微調整できるようになっているという話もある)

しかしながら、機種によって若干のばらつきがあったりする(最低限の50マイクロ秒くらい)くらいのため、
高速化したときに、許容範囲を超えてしまっているのだろう。
余談であるが、MMXしても大丈夫なBIOSは、ウェイトを重視した作りになっていた。
いままで、ウェイトポートを使用せずに、連続アクセスしていた部分などが、きちんとウェイトを入れながらアクセス
するように変更されているそうだ。


※10
とはいうものの、ここはきちんとウェイトポート制御されている事が多い。(昔のRAとかはなかった)
それでもこれだけ影響を受けてしまっているのだ。
K6などでは音が変わらない、逆に遅くなったという話もあるが、I/Oアクセスが問題になっているのだろう。
Cyrixなどには、FastI/Oモードなどのモードが存在しているらしく、起動時は安全のために、I/Oアクセス
を遅くするモードにしている事が考えられる。これは起動時のBIOS設定で、そのボードの設定を行う
前に動作が止まってしまう事態を避けるためであろう。考えてみればもっともな話である。




第5回・続ClassicPentiumマシンのCPUをMMXPentiumマシンに換装する


さて、MMX化しただけでは起動しないマシンが98にはある(※1)事は前回説明した。
そこで、そのようなマシンでは、どのようにすれば起動できるようになるか。
解決方法から言ってしまうと、
「HDDに本体のコネクタを使用した、 IDE(EIDE)のHDDを接続しなければよい」

これは、起動時にHDDが接続されている場合の処理に問題があるそうだ。
いろいろな話を総合してみると、HDDBIOSそのものに問題があるわけではなく、そのときの認識処理辺りが
問題になっていて、BIOSの切替えがうまく行かなくてハングアップ(※2)するらしい。

この問題を回避するには、本体のIDEコネクタに何も指さなければよい。
では、HDDはどうすればよいのか?
そう、SCSI(※4)を使用するのだ。
つまり、内部のIDEの処理を行わせない事によって回避してしまおうという方法である。
しかし、ここで注意しなければならないのは、使用するSCSIカードもMMX対応(※5)でなければならない。 ということだ。
また、SCSIだけでなく、その他にもBIOSを持っているカード類については注意する必要がある。
起動時にBIOSがシステムに組み込まれて、イニシャライズするような物以外は、制限に引っ掛かる事は
少ないだろうとは思うが。

もっとも、MMX非対応BIOS(ブートROMだが)だからといって、悲しむのは早い。
機種によっては、MMX化しても問題なく起動する機種も存在する。
そういった場合、何かしら不安定になっている事が多いのだが、とりあえず起動さえしてしまえば、BIOS
にパッチを当てる(※3)事が可能なので、それによって不具合を回避する事も出来る。
98にあるWildCat(※6)搭載のマシンには、P55CSUPなるパッチユーティリティが使用可能だ。
(入手に関しては、Niftyで手に入れられる。もっとも、Internet上でも配布されているそうだ)

MMXPentiumがClassicPentiumよりも絶対早いかというとそうでもない。
浮動小数点の演算がClassicよりも劣ると言う話(※7)があるのだ。
しかしながら、そのような違いは体感できないのだが・・・?
詳しくデータシートなどをチェックして、クロック数の違いなどを厳密に比べてみれば違いが分かるのかもしれない。
まあ、そういったレベルである。

さて、HDDをSCSIにすればいいのはわかったが、いままで使用していたHDDがもったいないという人はいないだろうか?
そこで、次回はIDEを使用可能状態にしたまま、MMXマシンにする方法を説明する。
(今回やり残した部分についても説明するかも)



※1
具体的に言うと、EDORAMに対応しているBIOSを持つ機種がMMX化しても大丈夫なマシンである。
これは、経験則から言っているのだが、まず問題ないはず。
EDORAMに対応しているかどうかは、マニュアルのスペックを見て、メモリがEDOかどうかを見てもらえば、
わかるはずだ。
ちなみに、ここに「ECC対応」と書かれている場合は、使用できるメモリは、ECCメモリだけである。
「ECCにも対応」ではなくて、「ECCだけ対応」っていう意味らしい。
そこに、ECCなしメモリをつけると、「PARITY ERROR BASE MEMORY」
という表示と、カラフルな崩れた画面が、「ぴー」という無情な音と共に表示されるといった、かなり激しいエラーが発生する。


※2
つるしあげるという意味かな。システムが止まってしまう事を言う。
よく、「ハングした」などと、略して言う事が多い。
ちなみに、ハングしているときのCPUは、ただ単に止まっているだけなのか、一心不乱に何かに没頭しているのか、
何もやる気が起きなくてサボっているのか、真相は不明である。(ICEあたりを使えばわかるかもしれない)
ひょっとしたら、他のデバイスの応答をいつまでも待ちつづけているのかもしれない。
余談であるが、大容量のHDDを接続したときにシステムが停止してしまうのは、HDDの初期化処理時に予期しない
除算エラーがおこっているためらしい。ここまで大容量になるとは思っていなかったのであろう。
そのため用意していない例外ハンドラに飛ぼうとし、さまよっているようだ。


※3
通常BIOSはROMで供給されているので、簡単には書き換える事は出来ない。
(最近のはFLASHROMで供給されているので、書き換えるためのハードウェアもサポートされている。
 そのため、専用のソフトで書き換える事が出来るが、いかんせん、その専用のソフトが入手不可能)

そこで、起動した後に毎回パッチを当てるという方式を取る。 そして、BIOSにパッチを当てる方法には2種類ある。
1つは、書換え可能なメモリ(RAM)にBIOSの内容をコピーして、呼び出している部分をすべてそこに書き換えてしまう。
しかしながらこの方法では、そこを呼び出している部分をすべて書き直す場合があるかもしれないのだ。
(X68030に増設できる040TURBOでは、あるアプリケーションに数千個所のパッチを当てた人もいるが、
 はっきり言って、かっこよすぎる。常人には真似の出来ない技だ)

BIOSは、その呼出し方法と出力は厳密に規定されているので、内部に直接ジャンプして読み込むようなものは少ないはずなのだが、
そのような物にも対処しなければならないし、BIOSの中ではジャンプしまくりである。
(余談であるが、DX,DS,DAが出現したときに、光○のゲームが動かなくなったのは、このBIOS(正確にはLIOだが)の中に
直接ジャンプしていたのが原因だと思われる。領域内の塗りつぶしルーチンを呼び出していたらしい。ちなみにLIOとは、BIOSの
一段階上のレベルで操作するライブラリI/Oである。BASIC-Graphic-LIOと呼び、BASICの強力なグラフィック命令が、ここに
実装されており、PAINT、CIRCLEなどを呼び出すことができる)

それに、確保しておくメモリも無ければならないので、あまり現実的ではないのだ。
そこで、第2の方法を使用する事が多い。それは、BIOSRAMを使用する方法だ。
ROMは、結構アクセススピードが遅い。そのために、高速にアクセスする必要がある386DX以降(たぶんRAあたり)
から、起動時にBIOSROMの内容をBIOSRAMにコピーして以後は、BIOSRAMを使う事によって高速アクセス
を可能にするといった機構を搭載するようになった。
そのままでは、BIOSに書き込めてしまうので、周辺の回路にWE(ライトイネーブル)端子を有効にするかどうかの
ゲート回路を付加して、アクセスの制御を行い書込み禁止にしている。
つまり、このアクセス制限を一時的に解除して、パッチを当てて、元に戻しておけばスマートにBIOSにパッチを当てる
ことができるわけだ(パッチあて自体がスマートといえるかどうかは疑問だが)


※4
べつにSASIでもいいんじゃないかと思うのだが、増設SASIカードなんか見た事も無い。
がんばっても80Mまでしかつかないからかなぁ・・・


※5
MMX命令を使用して高速化をはかっているなんてSCSIカードはないと思うが、ここでいうMMX対応とは、
きちんとMMXPentiumの速度でも誤動作しない設計をされたカードである。
よっぽど手を抜いて設計するか、カリカリまでチューンして設計されたBIOSを搭載しているもの以外は、
まず大丈夫なはずである。
しかし、昔(それほど前ではないが)の物については、結構パフォーマンスをあげるためにあちこち高速化していたりするので、
引っかかることもある。


※6
PCIチップセットの事。
もっとも、最近ではメモリアクセスだけではなく、様々なコントローラも一緒に入っている。
CPUの近くに配置され、2ndキャッシュやメモリのアクセス等を担当している、ノースブリッジ(たぶん)
周辺装置の周りに配置され、バスや、ハードディスクの制御などを行っているサウスブリッジ(たぶん)の2つに
わかれるのがはやりらしい。
もちろん1チップで全てをまかなうものもある。
98では、サウスブリッジにNECオリジナル(GHOST7,GHOST7W,YEBISU,STARALPHA2,SUMINOE等)が使用されている。
一般的なサウスブリッジには、DOS/V(一般的にこの名称にはいろいろと物議をかもしているようだが、ここでは
DOS/Vレベル互換機ということで、上位AT互換機)
の基本的な機能が搭載されているらしく、98につける事は出来ないようだ。
そして、サウスブリッジにEIDEのコントローラも内蔵されていた。98では、最高でもStarAlpha2以降がもつ機能(PIO Mode2〜3)までしか使用できないのだ。
ちなみに、WildCatは「やまねこ」なんかの意味。野生に近い猫を指しているものと思われる。雄猫はTOMCATだ。
(外国には山猫いないだろうなあ。猫のうまれはエジプトの方で、リビアだったかな)
そのほかにも意味があるのが、結構否定的な意味ばかりである。辞書を調べてみるのも一興だろう。
そういえばどこぞの漫画で人類と出会う前の猫は冬どこで過ごしていたんだろう?なんて言う疑問があがっていたが、
答えは人間と出会う前は寒いところにはいなかったというのが正解であろう。広まったのは、ねずみ取り&航海中の精神安定剤
として船で人間と一緒に世界中を旅して回ったからだ。たぶん。


※7
その昔、IntelのFPU(NPXとかコプロセッサとかいろいろな呼び名があるが、つまり、浮動小数点ユニットのこと。
通常CPUには整数演算のみの処理しか行えないため、非常に大きい数や細かい数を扱うために設計されたユニットを搭載する
ことによって、実行速度の向上を図ったもの。0.02とかを0.2×10e−1などと表現する事によって、小数点の位置が
動いて見える事から浮動小数点の名がついた)
は、そんなに早くなかった。
Cyrixから出ているFPUは、FasMath等の名前がつけられ、より高速に動作するのをうたい文句にしていた。
(さらに、4*4の行列演算などの命令を追加していたりもしたのだが)
486のころまではまだ周りの方が早かったのだが、Pentiumになってからその立場は逆転したのだ。
PentiumのFPUは、7つの演算パイプラインを持ち(確かそうだったはずだが)、整数ユニットと独立して動作可能
で、486までのFPUより、2.2倍から4.8倍の性能を持ち、平均で約3倍の性能を実現してしまった。
周りの互換チップメーカーは、この性能に簡単についてこれず、Pentiumに浮動小数点計算の分野では分がある。
ちなみに、浮動小数点レジスタは8つあり、それぞれは80ビットある。このうち64ビットを使用して、MMX命令は
実現されている。そのため、MMX命令と浮動小数点命令は排他的にしか利用が出来ない。
MMXCPUはClassicPentiumよりも浮動小数点演算が遅いなどいっている輩もいるようだが、実際に
マシンクロックを調べて厳密に比較してはいないので、一概には言えないのだが。MMX命令を使用するアプリケーションと、
浮動小数点演算をするアプリケーションを交互に実行するような状態では、実行速度が低下するということなのだろうか。
(浮動小数点をするアプリケーションがどれくらいあるかというのは疑問ではある。電卓か?(笑)
もっとも、Cなどで、小数点が扱える型を使っただけで、FPUを使用するコードをはく可能性は十分あるので、結構使われて
いるのかもしれない)

そういえば、Pentiumは割り算を間違えるって有名になった。OSR2以降では、デバイスマネージャーの数値演算コプロセッサ
の欄をみると、バグ無しの場合は「このプロセッサはすべてのテストにパスし正常に機能しています」というメッセージが
表示されているとか。
ところで、整数演算では、一般的なRISCプロセッサであるPowerPCやR10000、UltraSPARCを軽く
上回る性能を出す最近のx86互換CPUだが、浮動小数点演算においては、これらのRISCプロセッサの方がはるかに上
回っている。さすがにRISCというべきか。もっとも、両方の面で最高を記録しているのはDECのAlphaチップであるが。




第6回・続続ClassicPentiumマシンのCPUをMMXPentiumマシンに換装する


前回では、MMX化したマシン(※1)はIDEハードディスクが使用できなくなると書いた。
(しかしながらそれらの機種でも個体差によっては起動可能な機種も存在する。らしい)

これらのマシンを使用してIDEハードディスクを使用するには、I/Oデータから出ている IDE−98(※2) を使用する。
このボードは、Cバスに差してそこにHDDを接続する事によって、BIOSの容量制限を回避したり、IDEインターフェースが無い
機種にIDEHDDを接続可能にしたりするためのボードである。
おまけとして、内蔵IDEインターフェースより、読込みで1.1倍、書込みで最大2倍のパフォーマンスを実現(※3)するそうだ。

まず、つなげ方としては、
1.95のデバイスマネージャーでIDEインターフェースを削除する。
2.内蔵IDEが使用しているIRQ9番を開けられるためである。このIRQにIDE98を割り当てる事が出来る。
3.内蔵IDEインターフェースからケーブルを引きぬく。ケーブルが刺さっているだけでも起動しない事があるそうだ。
4.IDE98をCバスに搭載(※4)する。
5.IDE98にHDD、CD−ROM(※5)を接続して、起動する(IRQなど手動で設定したい場合は設定しておく事)
6.そして、ドライバを登録すればOKである。

ちなみに、起動時にいくらか停止する期間がある。ロゴアニメーションが停止して、完全にハングしたような感じになるのだが、
しばらくすると抜けてくる。これにはいろいろな時間があって、1分という事もあれば、5秒から15秒くらいというマシンもある。
調べてみた限りでは、どうやら使用するIRQによって起動時間が異なっているみたいなのだ。
ちなみに私は、サウンドボードである、メルコのXMS−Fと同じINT5(IRQ12)を使用している。
サウンドボードはDOS上でしか使用しないので、Windows上ではまったくさわらないため、問題なく使用できる。
ただし、このままではDOS上でFM音源を使用したままHDDにアクセスすると、そのとたんハングしてしまう。
その場合(※6)は、IDE98の使用ポートをずらすのだ。DOS上では特にIRQが問題にならないので特に問題ないであろう。
なお、IDE98でHDDをアクセスしても、DISKランプは点灯しない(※7)

さて次回は、BlueLEDを使ったパワーランプの改造を行う。そして、IDE98を使った時の問題点でもある、
アクセスランプが点灯しない点についても、改造方法を紹介する。




※1
もちろん、MMX非対応BIOSの機種である。
前回はEDOメモリの対応・非対応で見分ける事が出来ると書いたが、Xメイトを基準にして分ける事も出来る。
Xaシリーズには、Xa13/K12のような型番が採用されているが、その種類には、Xa/C Xa/K Xa/R Xa/w
が存在する。
これらのうち、CKRについては、MMX非対応だと思ってもらえばよい。(BIOSRevが0.02や0.03では駄目である。
Rev0.04ならばOK。ちなみにXa7のMMX対応BIOSUpdateDISKでBIOSを更新するとこのリビジョンになるらしい)

そして、W型番からはチップセットの変更などによって、MMX対応のようだ。(EDO対応になってるし)
つまり、この時期と同一の発売の機種ではMMX対応な可能性がある。


※2
このインターフェースはもちろんこの目的のために用意されている物ではない。
CバスにIDE98をさして、そこにIDEケーブルを接続、そしてHDDをつなげる。
マニュアルにはCD−ROMをつなげない事となっているが、結構認識するCDROMも多いので、つなげても問題ない。
ただし、WIN95上でのみ有効で、DOS上ではCDROMを使用できなくなる。
WIN95の再インストールなどでは、別ドライブやMOに95CDROMの内容をコピーしておいて、そこからインストール
する方法が有効だと思われる。
あと、そこにつなげられるHDDは、I/Oデータ製のうんぬんとなっているので、一般的なHDDは保証対象外である。
ちなみに、PCIバスに指すUIDE98という製品もあるのだが、こちらも同一の目的に使用可能であるという事だ。
こちらはUltraATAモードでデータを転送可能なので、対応ドライブならば、今までのインターフェースよりもはるかに
高いパフォーマンスを実現できる。


※3
内蔵のローカルバス接続のインターフェースよりも、外部のCバス(PCI搭載機種では更に遅いが)に接続したHDDの方が
早いとは・・・。内蔵IDEが以下に遅いインターフェースかわかってもらえると思う。
ちなみに、Cバスの転送速度って理論上の最高速度は10MB/Sだったかな。(PCI機種ではもっと遅い)
Cバスにはアドレスバスとして24ビット分しか線が出ていない。
つまり、Cバスから先は16Mバイトまでしかアドレスを指定できないのだ。この問題は、高速なSCSIボードなどでも
見かける事が出来るだろう。CバスのSCSIに搭載されているDMAでは16MB以上の空間にデータを転送する事が出来ない。
そのために、どこかのワークエリアに一度データを転送して、その後CPUがデータを目的地に転送するといった行為が必要に
なるのだ。そのため、転送場所によっては速度が落ちてしまう。
IDE98では、16M空間(15M〜16Mの1Mの空間を、いろいろなものの専用の空間として確保している。この場所は、
かつてグラフィックアクセラレータなどが使用していた空間でもある)
に128KBほどの転送用空間を設定できる。
余談であるが、内蔵DMAも16M以上の空間に転送できなかったはず。
昔との互換性を維持するために、一度に転送できる最大容量は64KB(!)までなのだ。
さらに、セグメントの壁(64Kバイトごとの節目)を越える事が出来ない。つまり17ビット目が変化するような転送は行えない
のだ。なんて、実際には286以上を搭載してマシンではこの欠点は改良されている。
繰り上がりを検出してインクリメントする機構が搭載されているのだ。(DMA内部のレジスタには16ビットしかないので、これ以上
は外部に追加されたFFで、つまり外部レジスタで実現されている)

このインクリメント回路の動作モードには、最高で1Mクラスまでの自動インクリメントがあるので、このモードにすれば結構な
領域まで転送できるはずである。
今現在98では、内蔵WSSとフロッピーくらいしか内蔵DMAを使用しない。DMAは全部で4Chあるのだが、スピードが遅いので
使い道が無い。内蔵WSS(CS4231)には、DMAを2Ch使用する全2重モードなどもあるのだが、残念ながら内部の物理的な
回路が無いので使用できない。内蔵DMAはかなり虐げられているといえよう・・・
ちなみに、NTではIDE98は使用できない。


※4
Cバスの一番上に搭載する事となっているが、別に1番上でなくてもかまわない。が、物理的にケーブルが通らなかったり、
するので難しい。PCMCIAカードのボードが刺さっている場合は、かなり強引な引き回しが必要であろう。


※5
SONY CDU77E−NEは動作した。マニュアルには動作しないと書いてあるのだが。(保証が出来ないという事である)
ちなみに、MSDOSではIDE98上のCDROMは、起動時に認識したとしても、MSDOSからは使用できない。
これは、MSDOSでは、CDROMドライブはリモートドライブとしてアクセスする構造になっているためだ。
つまり、BIOSを経由せずにアクセスする構造にしたためである。実際にCDROMにアクセスするのはデバイスドライバ
が行う。MSCDEXは、リモートドライブとしてのアクセスをMSDOSとCDROMドライバの間の仲介を行う事によって、実現する。
そして、このドライバがCDROMを認識しないためである。
この理由は至極単純で、CDROMドライバが98の内蔵IDEのみをアクセスして、CDROMを操作しようとするためである。
実際のCDROMドライブがIDE98上にマウントされていても、ドライバがIDE98にアクセスしてCDROMを操作しようと
しなければいけないので、この部分が問題になって認識しないのが原因である。
UIDE98には、汎用的なCDROMデバイスドライバが用意されているようなので、このドライブで認識できる範囲のドライブ
ならば問題なく認識できる事だろう。


※6
もちろん、DOS上でゲームをするときだけであって、Windowsを起動するときには元に戻しておかなければならない。
めんどくさいのだが、特に問題も無いのでOK。


※7
内蔵DISKランプ(もちろんLEDのこと)は内蔵IDEインターフェースのアクセスのときに点くランプというのが正しい。
そのため、外部に搭載されたIDEに関してはまったく光らない。

トップへ