SSブログ

RAMとEMSその2(月刊ASCII 1990年5月号6) [月刊アスキー廃棄(スクラップ)]

特集の「RAMとEMSはまかせろ!!」をスクラップする。
コラム記事
もっと知りたいあなたのための
RAMボードの歴史と展開
T.Tanaka

● I・Oバンク
 初代PC-9801が発売された当初は,本体にメモリが128Kbytesしか搭載されていなかった.システムが使用できるメモリサイズは640Kbytesであるから,この残りの512Kbytesを埋めるための増設ボードが用意された.日本電気純正のものもあったが,サードパーティからも数多く出された.それでも、当時はメモリが高かったので640Kbytesの領域が全部埋められることはめったになかったようだ.
 しかし,メモリの集積度の向上と価格の低下は大変なもので,すぐに1枚のボードに数Mbytesものメモリを積める(かつ,現実的な価格で販売できる)ようになった。もちろん、640Kbytesを超える部分は直接アクセスすることはできない.そこで,いろいろな方法が考えられたのである.
 最初に出てきたのが「バンク切り替え方式」,その中でも特に有名なのが「I・Oバンク方式」である。この方式は,メモリボード上のメモリ空間をいくつかのバンクに分け,そのうちの一つをメモリ空間上に投射しよう,というものである.I・Oバンク方式以外にもいくつかの独自なバンク切り替え方式が存在していたが,最終的にはI・Oバンク方式に統一され,この方式は増設メモリにおける絶大なシェアを誇った。多くの会社が同一のハードウェア構成をとったので,異社のボードで何ら問題なく混用することができる.
 I・Oバンク方式では,ボード上のメモリ全体を128Kbytesの単位に分ける。そして、このうちの1ページを本体メモリ空間の80000H~9FFFFHに投射する.この切り替えのために,PC-9801の「隠しあきI/O空間」であったECHをポートとして使用する.1byteのサイズのポートでページを管理するので,全体で256ページ,32Mbytesまでのメモリを管理することができる.
 このような方式のため,システム空間で80000H~9FFFFHに当たる領域は,本体内にメモリが搭載されていてはいけない。本体実装メモリが384Kbytes以下であったVM以前では,問題はなかったのだが,VX以降は640Kbytesフル実装になった.しかし,日本電気もI・Oバンクメモリのシェアは無視できなかったのだろう.本体上位128Kbytesのメモリをディップスイッチ(3-6)で切り放し,増設メモリボードが使えるようになっている。
 I・Oバンクは,通常RAMディスクと,キャッシュメモリなどとして使用される.つまり,あくまで切り替え可能な「一時記憶領域」として使用するのである.マッピングのハードウェアが簡単なため,RAMディスクのアクセスなどは比較的高速である.ただ,単一の管理プログラムが存在しなかったため,アプリケーション側がハードウェアの現状を把握することができず,複数のプログラムがI・Oバンクメモリを共有する,といった使い方はほとんどなされなかった。昨年春,アイ・オー・データ機器はBMSという共通規格を提唱したが,対応するアプリケーションは,同社の製品を除けばまだごく少数のようだ。
 I・Oバンクの特徴的な使用法として,切替領域のサイズが大きいことから,ここに日本語入力FPなどの大きなドライバを組み込み、必要に応じて本体メモリのバンクを切り替え,主メモリを有効活用しようというものがある。この場合には,ハードウェアの統一的な管理が必要になるので,BMSなどの管理プログラムが使用される.このようにFPを「バンクに入れる」ことはメモリサイズの点からは有利なのだが,バンク切り替えが頻繁に起きるため一般に画面表示スピードが低下し,また本体メモリを割り込み許可状態で切り替えたままにしているということから,システムに本質的な不安定さが生じるという問題もあるようだ.


ASCII1990(05)c05I・Oバンクメモリ_W512.jpg
記事にあるとおりRAMディスクと,キャッシュメモリに使っていた。FEP(ATOK)を入れるような用途には使わなかった。
● プロテクトメモリ
 次に,VX以降CPUが80286になってから,「プロテクトメモリボード」というのも一般的に市販されるようになった(実はこれ以前に,XA対応のプロテクトNECバンクボードというのがあるのだが,ここでは割愛する).
 8086/V30がアクセス可能なメモリ空間は1Mbytesしかないのに対して,80286は16Mbytesのメモリ空間をアクセス可能なアドレス線を持っている.したがって,下位1Mbytesを超える領域に16Mbytesまでどんどんメモリを増設することができるのである。特に,OS/2などの80286専用OSでは,プロテクトメモリをフルに使用するので、ますます必要性が高まってくるわけである。OS/2などを使用する場合はプロテクトメモリをそのまま使用できるのだが,問題はごく普通に使用されるMS-DOSの場合である.MS-DOSは80286のリアルモードで動作し,この場合は8086と同様に下位1Mbytesのメモリ空間しかアクセスできない.そのため,MS-DOSでプロテクトメモリを使用する場合には,特別な細工(1度プロテクトモードに移ってからデータを転送し、その後にCPUリセットをかけてリアルモードに戻る)が必要である.
 プロテクトメモリも,それが本質的に使用される状況(OS/2など)でなければ,単にRAMディスク領域またはキャッシュディスクなどの領域として使用されるだけである.この目的で使用することを前提とすると,前述のようにアクセスオーバーヘッドが大変に大きいので,I・Oバンク方式に比べて速度的に不利になる.また,高速のボーレートで通信しているときには,文字落ちなどの問題が生じると思われる.
 加えて,リセットをかけたときに,プロテクトメモリはメモリチェック時に消去されてしまうため,RAMディスクとして使用した場合には,内容が毎回なくなってしまう.以上の点を考え合わせると,単にRAMディスクなどとして使用するならI・Oバンクメモリのほうが「使いやすい」ということになる.プロテクトメモリを選択する場合は,これを将来にでも「プロテクトメモリとして」使用する可能性がある場合に限ったほうがよいだろう.
 なお,80386を搭載したマシンや高速の80286を使ったマシンでは,拡張スロットにメモリボードを差し込んでいたのではバスサイクルに付いていけなくなってしまう.このため,内部にメモリボモード増設専用のバスが設けられるようになった.プロテクトメモリとしてのみ使用するのなら、このバスを使用したほうがスロットを消費せず,かつ高速になるので圧倒的に有利である.


ASCII1990(05)c07図8プロテクトメモリ_W520.jpg
プロテクトメモリはPC-9801VXのときは買わなかった。職場のPC-9801RAには入れたかもしれないが忘れた。

● EMSメモリ
 最近になってEMSボードというのがリリースされた。EMSはもともとIBM PC上でLotus/Intel/Microsoftが共同で仕様を定めたもので,LIM-EMSとも言われる.現在では,EMS4.xというものが主流である。
 EMSは,通常64Kbytesのウィンドウ空間を用意し,それを16Kbytesずつ4つに分割する.増設メモリ自身も16Kbytes単位で分割され,任意のウィンドウに任意のメモリ空間を投射できるようになっている.
 つまり,I・Oバンクのようなバンク切替方式と基本的には同等で,一つのページを小さくし,ウィンドウの数を増やしたものといえる.しかし,I・Oバンクと基本的に違うのは,EMSはハードウェアアクセスの部分をEMSドライバが完全に管理している(逆に言うと,アプリケーションがI・Oなどを操作して直接RAMを切り替えることができない)ということである。つまり,ソフトウェアは実際にどのような形でEMSが実現されているのかを気にすることなく,EMSの規格にのっとってアクセスをすれば,まったく問題なくEMSが使用できるのである.その意味で,ソフトウェアには,ボードのメーカーに依存しないという一般性があるほか,MS-DOSマシン間での一般性もある。たとえばIBM PC用のソフトウェアをPC-9801用に移植する場合,EMS関連部分は基本的にノータッチでいいことになるからだ。
 ただしこのため,EMSドライバはEMSのハードウェアと混然一体となってくるため,基本的にはボードメーカーの供給するドライバを使用する必要があり,他のボードメーカーのEMSボードの利用は基本的に不可能である.EMSのドライバは,メーカーの「腕」によって大きく品質が変わってくる.このため,良いソフトウェアが提供されているメーカーの製品を選ぶ,ということは大切なことである.
 EMSは,他の2形式と違ってプログラムが積極的にアクセスをする形式である.アクセスの自由度もバンクメモリに比べて高く,EMS上で動作する日本語入力FPなども出てきている.その意味で,ソフトウェアとの相性は良いといえるだろう.ただし,EMSを使用しないプログラムにとっては,まったく「無用の長物」なので,RAMディスクなどとして使う以外に意味はなくなってしまう.
 EMSも,何Mbytesも存在していると,そのすべてをソフトウェアが使用するということはまずなくなってくる。この場合は,残りの部分をRAMディスクやキャッシュディスクとして使用するという,変わりばえのしないパターンとなる.この場合,RAMディスクの速度などはソフトウェアによって大きく変わってくるので、選択の余地は存在する.


ASCII1990(05)c06図7EMS_W505.jpg
EMSを一番長期間使った。なんといったってアプリケーションが使えるメモリが多くなったので表計算ソフトで仕事をするとき重宝した。
● 多機能ボード
 以上、3種のボードはそれぞれ単目的であったのだが,最近はディップスイッチなどでモードを切り替え,バンク/EMS/プロテクトメモリに任意の量のメモリの割り当てをすることができるようなものが出てきている。このようなボードを使用すれば,最初の選択に迷うことはない(後で,割り当てをどうするか,という悩みは出てくるが……).
● 80386マシンの特例
 CPUに80386を使用するマシンでは,特殊なドライバソフトによって,プロテクトメモリを疑似的にEMSやIOバンク方式のメモリとして利用することができるようになっている.バンク切り替え作業は,80386CPUのページング機能を用いて行なうため、エミュレーションとはいってもデデータの転送を行なう必要はなく,ほぼEMSボード程度のオーバーヘッドですむ。内部バスの増設メモリを使用すれば,データの読み書き速度は,拡張ボード上のそれと比べても非常に有利になってくる.
 このため,386CPUを使用するマシンであれば、内部増設のメモリボードとこれらソフトウェアドライバを併用するのが最高のパフォーマンスとなる.

このように8086互換を引きずるとろくなことにはならないというのがパソコンの歴史だった。何が悲しくてこんなに苦労しなければならなかったのか。インテルは自社の利益を確保するためユーザに不利益を与えてきた。

ロータス(株)開発部長 柳谷 良介氏のインタビュー記事をスクラップする。
ASCII1990(05)c12写真ロータス開発部部長_W342.jpg
――EMSといえばまずLotus1-2-3という連想をしてしまうのですが,実際どのような効果があるのか、メーカーさんの見解としてお聞きしたいのですが.
柳谷――EMSメモリが何Mbytesあるとワークシートがどれだけ広がります,といった類のデータは公表しておりません。といいますか,中に入るデータによって変わってきますので,一概には申し上げられないのです.
――Rel.2.2Jでは,EMSに全部データを持たせるというオプションがあると聞いていますが.
柳谷――Rel.2.1Jまででは,EMSがあると,無条件にEMSにデータを置くようにしていました。正確には,短い整数とフォーマット情報だけはメインメモリに置くようになっていたのです。今回それについて,「内部メモリだけ/内部メモリ+EMS/EMSだけ」という形でデータの置き方を指定することができるようにしました(写真A).真ん中の折衷案が,従来までの方式ということになります.速度的には内部メモリだけを使うものが最も速く,EMSを使うほど遅くなります.
――EMSを使っても、ワークシートが無限に広がるわけではない、という話も聞きますが.
柳谷――折衷案では,短い整数以外の,データをEMSに置くものについては,そのポインタをメインメモリに置いているわけなんです(図A)ですから,それがいっぱいになると,いくらEMSメモリが余っていてもワークシートはそれ以上広げられないということになりますね。全部EMSという設定にすれば,理論的には制限はないのですが,動作速度やディスク容量などとの兼ね合いもありまして、一応5Mbytes程度までということになっています.
――話は変わりますが,米国のMS-DOS版のLotus1-2-3Rel.3では,DOS Extenderを採用して,プロテクトメモリをデータエリアに使えると?
柳谷――その件についてはノーコメントということにしてください。ただはっきりしていますのは、日本で出すLotus1-2-3Rel.3 0S/2対応版だけで,現状ではMS-DOS版を出す予定はありません。
――PC-9801用には,DOS-16M(Rational Systems社のDOS Extender.PC-9801版はライフボートが扱う)も発表されましたが?
柳谷――今回のRel.2.2Jでは、私達は5機種(PC-9801,PS/55,FMR,B16,J-3100)同時バージョンアップを実現しました.ビジネスマーケットでは,IBM端末としてのPS/55や富士通の端末のFMRが基本なのです.
 アメリカにはIBM PCしかありませんから,たとえばDOS Extenderを使うという選択肢もあり得るわけですが,日本ではそうじゃない.DOS Extenderが(上の5機種の)共通のプラットフォームとして利用できるのかとなると,現状ではまだ懐疑的にならざるを得ません。そもそもPC-9801自体,ハードディスクはAドライブになるし(IBM PCはじめ他のほとんどのマシンはCドライブ),ENDキーやALTキーはない,など,いろいろと困っているわけです。ですからPC-9801用にDOS Extenderが出た,じゃあそれを使おうなんていう理屈はないわけですよ。
――ありがとうございました.


ASCII1990(05)c12図Aロータス123_W429.jpg
DOS ExtenderはTEXのとき使っただけだった。一般ユーザには広まらなかった。DOS時代の表計算ソフトはロータス 1-2-3一択だったがWindows95になってExcelに駆逐された。なんといってもWindowsにExcelとWordがバンドルされたメーカー製パソコンが売れまくったから仕方がない。



マイクロソフト(株)
第一研究開発部 アプリケーション企画課主任 新川泰介氏と
マーケティング部企画課 佐藤俊之氏
へのインタビュー記事をスクラップする。
MS-Windows Ver.2.11とEMS
 MS-Windowsも,早くからEMS対応が謳われていた製品だ。Windowsのような,OS的存在がEMSに対応することが,どのような環境の変化をもたらすのかを,マイクロソフトに尋ねてみた.
――MS-WindowsでEMSメモリがたくさんある,というのは、具体的にどういうメリットを提供するものなのですか.
佐藤――Windowsでは,システムそのものがEMSを想定した形のメモリ管理機構を備えています。たとえば複数のアプリケーションを走らせるときにWindowsのメインメモリが足りない場合,プログラムコードをハードディスクに置き、必要になったときに取り出して走らせます.ところがEMSメモリがあれば,EMS上にすべてのプログラムコードを展開して必要なときにはEMSのバンクスイッチングだけで走らせることができます.それだけハードディスクのアクセスが減りますから,動作は快適になりますし,たくさんのアプリケーション用のウィンドウを開いて切り替えて使うような場合でもスムーズに動くようになるわけです(図B).
――Windowsでは,「XMS」をサポートしているというお話しについて、もう少し詳しく(XMSについてはP260を参照)。
佐藤――Windowsでは,XMS規格で定められた「HMA」の領域に,Windowsカーネルの一部を転送しています.カーネル部分は常にメモリ上にありますから,このエリアを64Kbytes減らせるというのは,その上で動くアプリケーションにとっては非常に大きなメリットとなりますXMSとEMSがともに利用できる環境が,Windowsにとっては理想と言えます。
――Windows上でアプリケーションを動かすときのコツのようなものはありませんか.
佐藤――メインメモリに自由な空間があればあるほど,各アプリケーションソフトはワークエリアや本体を外に出さずにすむわけです。ですから,できるだけ多くのメインメモリを確保できるに越したことはありません。たとえば,いらないデバイスドライバは登録しないとか、解除できる常駐ソフトはいったん外す,あるいはFPはEMS対応のものを使う,といったことです.
――Excelを使う上でのチェックポイントもお聞かせください。
新川――Excelも基本的にはWindows上のアプリケーションですから、今まで言ってきたようなことはだいたい当てはまります.ただ,Excelの場合,入り切れない機能については「オーバレイモジュール」として必要な際に読み込むようにしています。これはスワッピングではなくて,重ねられたほうは本当に破棄されてしまうというものですから,その点についてはEMSを載せても効果はないですね.ただ,そんなに大きなモジュールではありませんから,アクセスランプが一瞬光るだけ,というくらいですがそれでも嫌だという方は,RAMディスクを使う手もあるかと思います.
――Excelでもやはり,ワークシートの拡大効果はあるのでしょうか.
新川――─当然あります。中のデータの種類にもよりますが,だいたい3Mbytesくらいまでは、EMSメモリを利用して拡大できます。こういう限界が生じるのは、Excelの一番基本となるワークエリアがメインメモリ上にありまして,そこがいっぱいになると,いくらEMSがあっても参照できなくなってしまうからなのです.ただ,ビジネスの実用を考えても3Mbytesは十分な大きさだと思います。
――そうですね.ありがとうございました。


ASCII1990(05)c14図8MS-Windows_W520.jpg
ASCII1990(05)c20図1XMS_W520.jpg
Windows Ver.2.11は使ったことがなかった。というか全く使う気にはならなかった。DOSと比べ作業環境が悪くなったと思っていた。Windowsは3.1になってやっと使ってみようかという気になった。

特別レポート
EMSのむこうにあるもの
 EMSは,8086マシンでも利用できるものだが,80286,80386マシンの普及とともに,これらのCPUのメモリ管理機能を生かしたメモリ拡張方法も意識されるようになってきた.
XMSとはなにか
 XMSについては,MS-Windowsや,最近ではVJE-βVer.2.5がサポートしていることもあって,聞いたことがある方も多いのではないだろうか.XMSはeXtended Memory Specification,MS-DOS上から1Mbytesを超える空間をアクセス方法を統一するための規格である.
 XMSが取り扱う空間は、大きく2つに分類できる(図1)。ただ、実際にはMS-WindowsもVJE-βも,使っているのはHMA部分だけである。さらに,MS-DOSのプログラムである以上,EMB空間については,データを転送して格納する(あるいはその逆)ことしかできない.EMSのように,その領域にプログラムを載せて実行したり,ハードウェアで切り替えてマッピングしたり,といったことは考えられていない(80386マシンならエミュレートも可能だろうが,XMSフルサポートの仮想EMSドライバというのは存在しないようだ)。
 結局,利用価値の高いのはHMAだけということになるのだが,残念なことに,この空間は,80286CPUのバグを利用して無理やりMS-DOSの空間を64Kbytesほど広げただけのものなので,EMSのようにみんなで分けて使うというわけにはいかないMS-Windowsを使うのならVJEはEMSオンリーに,ということになる.ただ,WindowsにおけるHMAの効果は見逃すわけにはいかないのも事実である.

● VCPIDPMI
 最近話題を集めているのが,80386の仮想86モードを利用した各種ドライバや、プロテクトモードでソフトウェアを実行させるDOS Extenderである。ご存じのように,国内でも仮想86モードを利用したEMSエミュレータやI・Oバンクエミュレータなどは複数存在する.
 EMS領域の取り合いは,EMSマネージャが調停してくれるからいいが,英語版Lotus1-2-3 Rel.3のように,アプリケーションがDOS Extender上で動くような例が出てくると、「誰がプロテクトモードを利用するか」,という問題が生じてくる.
 たとえばすでに仮想86モードを利用したEMSドライバをインストールしている場合,仮想86モードを用いる他のソフトウェアは動作させることができない.具体的な例では,たとえばMemory-PRO386を導入している環境では,MS-Windows/386を動作させることはできない(「すでにハイメモリが使われています」というメッセージが出て拒絶されてしまう)。
 80386の仮想86モードやプロテクトモードを利用したソフトが複数出現してきたため,これらの間で統一的にメモリを管理しようとする動きが出てきた.VCPI(Virtual Control Program Interface)がそれである。現在,英語版Lotus1-2-3 Rel.3(MS-DOS版)や,Ratioual/SystemsのDOS-16M,CompaqのCEMM,QuarterDeckのQEMMなどがこれをサポートしている.この場合,たとえばQEMMによって,仮想EMSやUMB(Upper Memory Block,1Mbytes以内の領域に仮想的にRAMを割り当てる機能)を利用しながら,LotusのRel.3を起動する,といったことが可能になる.日本でも,メルコのMELWARE Ver.4.5はVCPIサポートを謳っている.
 VCPIで中心的な役割を果たすのは,仮想86モードを利用したEMSエミュレータである.プロテクトモードに移行したり,プロテクトメモリを利用するようなソフトは,まずVCPIファンクションが利用可能かどうか調べ,可能であればそれを利用してメモリを取得する.こうすることで,複数のアプリケーションが衝突なしにプロテクトメモリを共有できるようになるわけである.

 しかしこの仕様では,MS-Windows/386のような独自のメモリ管理を行なうプログラムとの共存は不可能である.Windows/386など,将来登場すると思われる多くのマルチタスクプログラム間でのメモリ配分という問題を解決するため,現在DPMIという規格が最終調整段階に入っていると伝えられる。この5月にもVer.0.9の仕様が発表される見通しだ。仕様的にはVCPIを含む形で問題を解決する方向であるというが,現時点では内容はまったく不明であるため,たとえばVCPIをサポートしているソフトがこの上で動くかどうかといった問題はまだ未知数である。ただ,80386時代の先駆けとして,DPMIがどのような形に仕上がるかは,ソフトハウスならずとも目が離せない。
(取材協力/マイクロソフト,メルコ)

すったもんだして何がなんだか分からない状態だった。記事にたびたび登場する80386の仮想86モードは良かった。これ以降インテルのCPUを呪うことはなくなった。Windows3.1のときは祈りながら恐る恐る仮想86モード(DOS窓)を使ったが、Windows98のDOS窓は出色の出来だった。信じられない位安定してDOS窓をいくつも開き作業ができた。

コラム記事をスクラップする。
もっと知りたいあなたのための
EMS,そのビジョンと問題点
T.Tanaka

 EMSは,別項のようにもともとIBM PCのために開発されたシステムで,PC-9801でもこれを流用するようになっている.
 現在日本では,メモリの入手価格などの点からRAMボードメーカーは大手数社に限られているが,アメリカ・台湾などでは実に多くのIBM PC使用のハードウェアが販売されていて,多くがベンダー独自の仕様を持っている.このため,ハードウェア的な仕様にはこだわらず,間にソフトウェアドライバを噛ませることによって見かけ上同じものとして扱う,という方式が一般的になってきたわけである.なお,EMSはハードウェアを含めたシステム全体の総称であり,ソフトウェアドライバの部分だけを呼ぶときにはEMM(Expanded Memory Manager)と言う.
 EMSは,INT 67Hの割り込みを経由してアクセスするEMSの存在はINT 67Hのエントリアドレスから算出した部分に特定の文字列(実は,EMSのデバイスヘッダ)が存在することを確認してから使用する.機能コードは,DOS呼び出しと同様にAXレジスタに設定する.その後に,INT 67Hで呼び出すわけである.処理のステータスは、やはりAXレジスタに返される.
 EMSの特徴的な概念は,メモリをちょうどファイルのようなイメージで使用しているということである.DOSの高い番号のファイルアクセス機能は,ファイルをハンドルという抽象化された識別子で取り扱う。ファイルをオープン・クローズ読み書き・シークなどをする場合には,ファイルハンドルを引数にとる.
 EMSも,メモリの割り当てなどのファンクションを実行すると,メモリハンドルとでも言うべき値が返される。以後のメモリのアクセスは,すべてこのハンドルを使用して行なう.

 ごく一般的なEMSの使用法の概念について触れてみよう。まず,最初にEMSの存在とアクセスの確認を行なう.それから,ページフレームのベースアドレスを取得する.さらに,使用可能なメモリ容量を確認し,それが十分な場合はメモリの割り当て機能を呼び出す.このときに,メモリハンドルが返される.次に,EMSメモリの特定の領域を,特定のページフレームにマップする(ファイルで言えば,SEEK処理)以後,そのページフレームを通して見られる領域は,通常のメモリアクセスとまったく同様に行なうことができる.最後に,ウィンドウを解放し,取得したメモリ領域も解放する。このときも,ハンドルを引数にとることで,割り当てられたどのメモリを解放するのかを示す.
 このように,ファイルとEMSはかなり似ていあるのだが,(1)ファイルに比べて明らかに高速である,(2)読み書きに関しての制限がまったくない,(3)少なくとも,ウィンドウサイズの分だけの主メモリの拡張となる,(4)データ領域としてだけでなく,プログラム実行領域としても使用可能である,などの利点がある.
 なお,EMSは常駐プログラムで使用されることも考えてある。この場合のために,現在EMSメモリ上のどのページが割り当てられているかを記憶する機能があり,自分が勝手にページ割り当てを操作した後,元の状態に戻せるようになっている.
 基本的にEMMは再入が許されないため,通常EMMの処理中は割り込み禁止状態になっている.また,プログラムする側から言えば,「スタックはEMSの中に置かない」「ハード割り込みのエントリは,EMSの中に置かない」というのが原則になっている.
 現在のEMSの主流は4.Xだが,それ以前に3.2というバージョンも使われていた.3.2は4.Xにくらべて大変に仕様が小さいのでEMMのサイズが小さくてすむという利点があるが,4.Xの機能を利用しているプログラムは当然走らなくなる.逆3.2を対象としたプログラムは,特にハードウェアの制限がなければ4.XのEMMで走らせることは可能である.
 EMS3.2の一番大きな制限は,ページフレームが連続した64Kbytesの領域に限られているということである.つまり,ページフレームの数は4枚しか取ることができない.4.Xではページフレームの数とマップは任意に取れるが,3.2との互換性のために64Kbytesの連続した領域は確保しておくのが普通である.
 4.Xでは,ページフレームの数などが増えたりしたことから,ページフレームと物理アドレスの対比状態を取得することや,ページのマップ状態を一括して保存したり復元したりすること,そのほかにメモリ領域との直接転送やメモリ領域間のジャンプ/コールなどが可能で,EMSの上でプログラムを走らせることについての配慮がある.また,かなり基本的なことだが一度割り当てられたメモリ領域のサイズを変更することも可能である.
 さらにEMS4.Xではメモリハンドルに名前を付けられるので,ちょうどファイル名でファイルをプログラム間で共有する(データ転送に使用する)ように,メモリハンドル名でプログラム間のデータのやり取りをすることも可能である.常駐型のプリンタスプーラがプリンタに送るデータを,別の非常駐プログラムがメモリハンドル経由で送る,というようなこともできるわけである。

 最後に,EMSの仕様自体の問題について見てみよう.
 まず,ハードウェア的な面について,98とEMSの関係で一番問題になるのはページフレームのア ドレスである.これについては,FM音源利用時の問題点のところで触れることにする.
 ソフトウェア的な面で一番大きな問題なのは,基となっているEMSの仕様書自体が曖昧である部分が多いことである.仕様書にインプリメントの例でもあればよかったのだが,具体的なプログラムなどがないため,解釈の仕方によってまったく異なった動作をするEMMが出来上がってしまうことがある.
 実際,国産のEMSボードに付属しているEMMでも,初期の頃は動作にいろいろと不安定なものがあった。分かりにくいので有名なMAP&CALLやMAP&JUMPでは,そもそもまともに動作をしないものすらあり,さらに引数の解釈が異なっているものがいくつもあった。現在,これらがどのような方向に収束しているのか分からないが,結局プログラマ側としては,安全のためにこれらの「機能の高い」ファンクションは使用せず,簡単なファンクションを組み合わせて機能を実現することを余儀なくされているわけである.
 さらに,EMSがハードウェアを徹底的に抽象化したため,非常に過剰な仕様になっている部分がある.たとえば,ページフレームとマップされているページの対応状態を記憶させる,という機能がある.大変便利に見えるこの機能だが,どのような形で記憶するか,というのは、EMMに任されてしまっているのだ。したがって,記憶させたり,それを再度割り当てたりすることはできるのだが,記憶された内容をプログラムが参照することができない。実際には,ページフレームのアドレスとそこにマップされていたページのナンバーを記憶させているだけの場合が多いようだが,それは仕様ではないので,どのEMMでもそうだという保証がない。つまり,一般には参照できないのである.
 したがって,あるページフレームにボード上のどのページが現在マップされているか,ということを知ることは(一般的には)できない。これは,EMS上でプログラムを実行しているときや,再入時に非常に問題となる.結局,事実上無駄なページ切り替えを余儀なくされるのである.

全く困ったものだ。私はロータス1-2-3でEMSがらみのバグを経験した。そのときのメモをローカルBBSにアップして愚痴ったはずだ。そのうちファイルを探してみるつもりだ。

以下製品の写真をスクラップする。
ASCII1990(05)c22写真1_W391.jpg
ASCII1990(05)c22写真2_W360.jpg
ASCII1990(05)c22写真3_W343.jpg
ASCII1990(05)c23写真4_W412.jpg
ASCII1990(05)c23写真5_W312.jpg
ASCII1990(05)c23写真6_W346.jpg
ASCII1990(05)c23写真7_W406.jpg
ASCII1990(05)c23写真8_W400.jpg

編集室からの内容もRAMだった。
もっとメモリを!
▲コンピュータのプログラムはメモリの上で動くデータも,メモリ上にあると高速に処理できる.そんなことは,アスキーの読者であれば百も承知だと思う。今月号では,そのメモリについて特集を組んだ.特集のテーマは,できるだけタイムリーで,多くの人に読んでもらえるものをと配慮して決定しているのだが,本誌でメモリについて特集したのは,'86年9月号以来である.
▲コンピュータのパワーを決める基本は,CPUの処理能力と,メモリの容量だと言い切ってしまってもいいだろう.CPUのパワーが上がれば,それを生かすプログラムが登場することになる.そして,そのプログラムは,大きなメモリ空間を必要とすることが多い。実際,8ビットのマシンが主流だったころ,主メモリの容量は高々64Kバイト程度であったが,現在主流となっているMS-DOSマシンでは,640Kバイト以上の主メモリを搭載しているのが普通だ。
▲昨年以来,MS-DOS上でも,より大きなメモリを利用する環境が整ってきつつある。そのキーワードがEMSだ.MS-Windowsはもちろん,一般のアプリケーションでも,これを有効に利用するものが増えてきたのは,本文中でも触れた通りだ.一太郎Ver.4が登場したときに,「EMSがないと利用できない機能があるなんて,過剰仕様じゃないか」という声をよく聞いたが,大きなメモリを利用できる環境が整うこと自体は、結果的に,ユーザーの利益となるだろう.
▲パソコンのCPUは,16ビットから32ビットへと移行しつつある。その能力を十分に生かせるソフトウェア環境さえ整えば,おそらく主メモリ数Mバイト搭載のマシンが普通となるだろう.それまでの間,自分のニーズに合わせて,適切にメモリを増設することになるのではないか.メモリの価格が下がり,入手しやすくなったのも幸いしている.
▲ところで,春は異動の季節。6月号より,本誌も新スタッフィングで取り組む予定です.新展開にご期待ください.   (土田米一)

「EMSがないと利用できない機能があるなんて,過剰仕様じゃないか」こんなバカげた発言をするパソコンユーザは何だろうかと思う。パソコンを使わずワープロを使っていろよと思う。当時売っているパソコンは不満だらけで拡張しないと使い物にならないものだった。拡張しなくても済むのはゲーム機とワープロだけだった。パソコンを買って足りないメモリを追加し、足りない外部記憶装置を追加し、足りないプリンタを買う。ああそうだったモニタを忘れていた。とにかくパソコン本体ではなにもできない装置だった。したいことがあるたび拡張するのが常だった。過剰仕様なんてとんでもない。貧弱なパソコン本体には常に苛立っていた。
nice!(0)  コメント(0)