SSブログ

EMSボード(月刊ASCII 1988年12月号8) [月刊アスキー廃棄(スクラップ)]

この号のSHOW CASEではメルコのEMS-2000が紹介されていた。記事には開発の経緯、技術的な事項があったのでスクラップする。
ASCII1988(12)e07EMS写真_W495.jpg
 メルコが発表したPC-9800シリーズPOEMS(Expanded Memory Specification)方式のRAMボード「EM-2000」が届いたので、紹介しよう.
メモリ拡張の歴史
 EMSとは,MS-DOS上で640Kbytes以上のメモリを利用する方式で,米国のLotus社,Intel社,Microsoft社の3社が提唱しているもので,最高で32Mbytesまで利用することができる.
 PC-9801用のRAMボードは、最初,メインメモリを標準(128Kbytesや384Kbytes)から640Kbytesへ増設するものだった。やがて,メモリの低価格化にともなって,大容量のRAMボードが出現し,現在では1~4Mbytesのものが発売されている.これらは、メインメモリの1バンク(128Kbytes)を切り替えて使うもので,「I・Oデータ方式」として統一されている.
 ソフトウェア(ドライバ)も,最初は単純なRAMディスク用だったが,キャッシュ機能やプリンタスプーラが付加されたり,FDDと同様にdiskcopyができるものまで出てきた.SRAMを使った不揮発性ボードでは,ボードからMS-DOSを起動できるものもある.
 次に出てきたのが、プロテクトモード用のRAMボードだ.80286や386でないと利用できないが,MS-DOSVer.3.1にも,プロテクトモード用のメモリ(100000H以上の番地に位置する)を利用するための「RAMDSK.SYS」というドライバが付属するようになった.
 プロテクトモード用とはいっても,RAMディスクやキャッシュとして使う分にはバンク切り替え方式のメモリと同じだが,将来,OS/2などのプロテクトモード用ソフトウェアを考えて,出現したものだ。
 そして,PC-9801RAとMS-DOSVer.3.3の発売によって,EMS方式によるメモリの拡張が「公認」された.

EMSの利点
 EMS方式によるメモリ拡張の利点は,MS-DOSのシステムメモリ(ノーマルモードでは640Kbytes,ハイレゾモードでは768Kbytes)の制限を取り払える点にある.EMSに対応しているアプリケーションは,MS-DOSのシステムメモリに対するアクセスと同様に拡張メモリを使え,ソフトウェアを配置したり,データ領域として利用できる.
 具体的には、図1のように,アドレス空間(1Mbytes)内にウィンドウを設置し,そこから拡張メモリをアクセスする.この物理アドレス上のウィンドウは,「ページフレーム」と呼ばれ,その中に16Kbytes単位の「物理ページ」が定義される.対して,拡張メモリ側は「論理ページ」と呼ばれ,物理ページに割り付けることによって,アクセス可能となる.方法からいうと,いわゆるバンク切り替え式ボードと同様だが,1ページは128Kbytesではなく,16Kbytesである.
 現在,EMSに対応しているアプリケーションとして有名なのがLotus1-2-3である.この場合,データ領域として拡一張メモリを利用するので,大きなスプレッドシートが利用できる.
 また,MS-DOSVer.3.3のAIかな漢字変換も対応している.こちらはプログラムの一部を拡張メモリ上に配置するので、約60Kbytes分メインメモリを解放することができる.MS-WINDOWS Ver.2.0/386も対応しており、より多くのアプリケーションを同時に起動できるようになる.WINDOWS用の日本語マルチフォントROMは,拡張メモリがないと利用できない.


ASCII1988(12)e07EMS図1_W433.jpg
利用方法
 EM-2000で利用する物理ページ領域は,C0000Hからの拡張ROM領域なので,サウンドボードを利用している場合は,ボード上のスイッチを変更し,ROMをKILLにしておく必要がある(N88BASICからはサウンド機能を利用できなくなる).それ以外のサードパーティから市販されているボードでも,この領域を使っている場合は変更が必要だ。これは,日本電気のボードとMS-DOSのEMSドライバを利用する場合も同様である.EM-2000側の設定はほとんど必要なく,PC-98XL/XLではジャンパの変更を,2枚目以上で利用する場合は枚数指定をロータリースイッチで行う.
 次にソフトウェアだが,EM-2000は,ボード上でハードウェア的にEMSをサポートしているが,制御用のドライバをMS-DOS上で組み込む必要がある.これは,「MELEM.SYS」という名称で,従来のドライバと同様にconfig.sysで指定する.簡易設定プログラムが付属しているので、メニューに従って自動組み込みも可能である。
 ハードウェアの違いのため,MS-DOSVer.3.3に付属している「EMSDRIVE.SYS」は利用できない.I・Oデータ方式やプロテクトモード用メモリでは,異なるメーカーのボードとドライバを組み合わせて利用できたが,EMSではそうはいかない.ただ,ボードとドライバの組み合わせは切り離せないが,アプリケーションから見ると同じになるので,支障はない。
 また,EM-2000には,EMS方式の拡張メモリを使ったキャッシュディスクやRAMディスクのドライバも添付している.2Mbytes分をそれぞれに割り当てて,効率よく活用できるようになっている. 従来方式のメモリ拡張ボードと組み合わせて利用する場合は,以下のようになる.

○バンク切り替え方式のボード
★揮発型
 EM-2000に付属のドライバを使って,EMSメモリ領域として利用することができる.EM用のドライバで両方を一緒に管理できるわけだ。キャッシュやRAMディスクを使用したい場合,バンク切り替え方式のボードを優先して割り付け,EMSによる拡張にはなるべくEM2000を使うようになっている.バンクメモリの一部をユーザーズメモリの拡張に利用している場合,そのまま利用できる.
★不揮発型
 不揮発型ボードの特性を生かしたい場合は,既存のドライバをそのまま利用し,EM用ドライバと共存が可能、揮発モードで利用する場合は上記と同じ.
○プロテクトモードのボード
 既存のドライバやMS-DOSに添付のドライバで利用でき,EM用ドライバと共存可能。

 以上のように,どのメモリを利用していても,それらが利用不可能になることはない。ただし,既存のキャッシュディスクとEM用キャッシュディスクは共存できない。
 従来のRAMボードでもEMSエミュレータがあったが,EM-2000との違いは以下の3点だ。
(1) ソフトウェアエミュレートとハードウェアの速度の差がある.
(2) エミュレータと比べて,128Kbytes分メモリを多く使える.
(3) EMSのバージョンがエミュレータは3.2だったが,4.0となり,WINDOWSで利用できるようになった.
 さて,どういう目的で,このボードを選ぶかということになるが,まず競合するのは,プロテクトモード用RAMボードということになる.286や386を搭載したマシンでは,MS-DOSVer.3.3に付属のEMSドライバが使えるからだ。OS/2を利用する可能性があるのなら,プロテクトモード用を選んだ方がいいだろう.
 次に8086やV30のみを搭載している機種でEMSを使うには,純正ボードではPC-9801-53(1Mbytes,8万9000円),同54(53増設用1Mbytes,6万円)を買って,MS-DOSVer.3.3でのみ利用可能となる.それに比べて,EM-2000は2「Mbytesで7万4800円と安価で、MS-DOSのバージョンは選ばない、つまり,MS-DOSVer.3.1上でWINDOWS Ver.2.0を使いたい場合はEM-2000を使うしかないわけだ。
 また,MS-DOS上のアプリケーションも大型化の傾向があり,EMS対応のものが増えてくる.ジャストシステムのAACはすでに対応が決まっており,一太郎 Ver.4と花子 Ver.2を統合環境で使うには,EMSが不可欠である.Frame Work IIもEMSに対応の予定という.
 また,AIかな漢字変換のように,メモトリに常駐するユーティリティ類も,メモリを圧迫しないように,EMSに対応することが考えられる.逆に,そういった対応を,どのソフトにも行ってほしくなるボードである。

懐かしい限りだ。16bitマシンといえども、8086系ではそのままでは使い物にならない酷いものであった。まず、TEXT VRAMを付属して日本語の画面表示を使い物になるレベルまで速くし、EGCとかのグラフィックチャージャーを付属してグラフィック描画を速くして、もちろんテキスト画面とグラフィック画面はハードの方で重ね合わせてとめっちゃ工夫しなければ使い物にならなかった。それが8086というくされCPUであった。なんでこんなものを使わなければならなかったのか情けなく思っていた。
そういった情けないCPUを採用したマシンを事務仕事に使うためにはさらにEMSというメモリの拡張が必要であった。単にメモリを増やすだけで使えればいいのだが、そこは8086の腐れぶり。創意工夫をしてやらねばならなかった。なんと情けないCPUだったのだろうか。8086が16bitではなく(8bit+16bit)/2だと揶揄されてもしょうがないCPUだった。

相談室にもEMSの解説記事があったスクラップする。
EMSのソコが知りたい
Q1:EMSとバンク切り替え方式の違いを教えてください。
Q2:ハードウェアEMSとは、どんなものですか.ソフトウェアEMSとはどう違うのですか
A:今回は、EMSに関する質問を2つまとめてとりあげてみます.
 8086,8088,80286(リアルモード)などのCPUは,アドレスが20ビットである関係でメモリ空間が1Mバイトに制限されています.またMS-DOSなどの基本ソフトにも,扱えるメモリ空間に制限があります(PC-9801ノーマルモードの場合は640Kバイト).
 このようなメモリの限界が存在することによって,パーソナルコンピュータが取り扱うことのできるデータの大きさが限られたり,処理速度が極端に落ちるといった障害が発生することがあります.
 たとえば,MS-DOSのアプリケーションで大きなデータベースを取り扱う場合を考えてみましょう640KバイトからMS-DOSやアプリケーション本体を除いた部分に収納しきれないデータは,通常ディスク上に置くことになります。そのためデータの検索などの際には、ディスクのアクセスが頻繁に起こり,極端に実行速度が低下してしまいます.
 このような障害を避けるため,メモリを拡張する方法がいくつか考えられています.その代表的なものがバンク切り替え方式とEMS(Expanded Memory Specification)です.
 バンク切り替え方式とは,拡張したメモリを一定の大きさの「バンク」という単位に分け,特定のI/Oポートにバンク番号を指定することでそのバンクをCPUがアクセスできるアドレスに割付ける方法です.PC-9801の場合,バンクの大きさは128Kバイトで図3のようにMS-DOSのユーザーズメモリ領域に割付けられます.このため,MS-DOSで使用できるプログラムエリアがその分狭くなります。また一度に選択できるバンクの数は1つだけなので,バンクの大きさより離れた位置にあるデータが必要になる場合には、バンク切り替えが頻繁に起こって実行速度が低下します.また,切り替えるメモリの単位が比較的大きいので,あるバンクで実際に使われているメモリの量がバンクの大きさに比べて少ない場合,空き領域は使用できない無駄なメモリ空間となります。
 一方EMSは,Lotus/Intel/Microsoftの3社が規格化した拡張メモリのアクセス方式で,いくつかのバージョンがあります.最新のVer.4.0は最大32Mバイトのメモリを16Kバイト単位の「論理ページ」に分け,そのうちの任意の複数ページ(4ページが一般的)を,CPUが直接アクセスできるアドレスに割付けます.EMSによって拡張メモリが割付けられた領域を「ページフレーム」と呼びます.ページフレームの中に割付けられた論理ページを「物理ページ」と呼び,プログラムはこの物理ページのアドレスに対してアクセスをする形になります(図4).
 EMSはバンク切り替え方式に比べて取り扱うメモリの単位は小さいのですが,同時に複数のページを参照できるのでページの大きさに関係なく離れたデータを同時にアクセスすることができます.また,バンク切り替え方式より無駄になるメモリの量の少ないので,メモリの利用効率が上がります(図5).
 さらに,EMSは各物理ページに連続したアドレスが割付けられるので,実際には離れている論理ページも連続している普通のメモリと同様にアクセスすることができます.このおかげで,プログラムの一部を拡張メモリの上に置くことも可能になります.
 従来のバンク切り替え方式のメモリでも,ソフトウェアでEMSをエミュレートすることができます.これがソフトウェアEMSと呼ばれているもので,メルコのXBシリーズRAMボード用に発売されている,MX-1StarVer.4.0(メガソフト)に付属のEMSエミュレータなどが代表的です.
 しかし、ソフトウェアEMSはバンク切り替え方式と同様にページフレームのアドレスがMS-DOSのユーザーズメモリ領域と重なってしまい,また1ページの大きさも128Kバイトになってしまうのでメモリ効率の低下を避けることはできません.それにソフトウェアによるエミュレーションなので,CPUの負担がその分増えてしまいます.
 これに対して、ページの切り替えやアドレスの割付けなどをハードウェアで行うのがハードウェアEMSです.ハードウェアEMSではページフレームをユーザーズメモリ以外の領域に割付けることができるので,EMSの利点を最大に生かすことができます.
 PC-9801用に発売されているハードウェアEMSボードには日本電気のPC-9801-53,54,メルコのEM-2000,I・Oデータ機器のPIO-PC34Eなどがあります。これらのボードはいずれも2~4物理ページを表1に示すアドレスに割付けます.実は,このアドレスには、グラフィックVRAMやFM音源ボードのROMなどが割付けられています.FM音源ボードのROMなどは、EMSと同時に使うことはできなくなりますが,VRAMは後述するEMMの機能を利用することで,アプリケーション側から随時切り替えて使用しています。
 バンク切り替えにはないこれらのEMSの各機能を直接コントロールするのは,「EMM(Expanded Memory Manager),?呼ばれるデバイスドライバです.アプリケーションプログラムが拡張メモリの割当てを受けたり,論理ページを物理ページに割付けるなど,EMSの機能を利用するときは,ソフトウェア割込みによるファンクションコールの形でEMMを呼び出します。EMSボード自体のハードウェア構成やEMMの中身はメーカーによってさまざまで,あるボードに付属するEMMで他社のボードを使用することはできません.しかし,EMMのファンクションコールはEMSの仕様で統一されているので,アプリケーションからの使用法はまったく同じになります。
 EMSに対応したソフトウェアは,Lotus1-2-3,MS-WINDOWS Ver.2.0を始めとしてワードプロセッサやCADソフト,データベースソフトなど多数発表されています.また,PC-9801用のMS-DOS Ver.3.3は,正式にEMSをサポートしています。OS/2が本格的に普及するまでの間,EMSは8086系CPUを持ったパーソナルコンピュータのメモリ拡張方式の1つとして広く使われるでしょう。
(竹田)



ASCII1988(12)g01EMS図3_W389.jpg
ASCII1988(12)g01EMS図4_W520.jpg
ASCII1988(12)g01EMS図5_W392.jpg
ASCII1988(12)g02EMS表1_W520.jpg
この記事でも最後には「OS/2が本格的に普及するまでの間」と書いてある。いつまでOS/2が普及すると思っていたのだろうか。今後のスクラップが楽しみ。

nice!(0)  コメント(0) 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。