JP3571667B2 - 割り込みフラグ管理方法 - Google Patents

割り込みフラグ管理方法 Download PDF

Info

Publication number
JP3571667B2
JP3571667B2 JP2001150838A JP2001150838A JP3571667B2 JP 3571667 B2 JP3571667 B2 JP 3571667B2 JP 2001150838 A JP2001150838 A JP 2001150838A JP 2001150838 A JP2001150838 A JP 2001150838A JP 3571667 B2 JP3571667 B2 JP 3571667B2
Authority
JP
Japan
Prior art keywords
memory
rom
address
stack
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001150838A
Other languages
English (en)
Other versions
JP2002024003A (ja
Inventor
スピア,ダン
メイヤー,ラリー
Original Assignee
クウォーターデッキ・コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クウォーターデッキ・コーポレーション filed Critical クウォーターデッキ・コーポレーション
Publication of JP2002024003A publication Critical patent/JP2002024003A/ja
Application granted granted Critical
Publication of JP3571667B2 publication Critical patent/JP3571667B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)
  • Memory System (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
発明の説明
[発明の背景]
(1)技術分野
本発明は一般的にはコンピュータ・メモリ・システムの分野に関係し、具体的にはコンピュータ・メモリの使用を制御し最適化するためのメモリ管理システム及び割り込みフラグ管理システムに関係するものである。
【0002】
(2)背景技術
典型的なコンピュータ・システムは複数のモジュール又は要素から構成される。コンピュータ・システムにはマイクロプロセッサなどの中央処理装置(CPU)を典型的に含む。マイクロプロセッサは命令の取得、復号及び実行を行うプログラム制御される装置である。コンピュータ・システムはシステム・オペレーティング・ソフトウェア、アプリケーション・プログラム命令及びデータを記憶するための記憶要素も含む。これらの記憶要素は読み出し専用メモリ(ROM)、ランダム・アクセス・メモリ(RAM),ディスク記憶装置又はテープ記憶装置もしくは他の適当な記憶手段とすることができる。
【0003】
コンピュータ・システムは外部装置をマイクロプロセッサに接続するための入出力(I/O)要素も典型的に含む。メモリ管理ユニットやコプロセッサなどの専用部品もコンピュータ・システムの一部となり得る。
【0004】
コンピュータはデータの処理に使用される。データの処理を可能にするためには中央処理装置(CPU)が入力データを使用するまで、その入力データを記憶しなければならない。また、データを処理した後に出力データを記憶しなければならない。いくつかの処理動作の間、データに対して命令を実行している間にCPUがデータの一時的な記憶を必要とする場合がある。さらに、処理を制御するアプリケーション・プログラムや、その下でプログラムが走行するオペレーティング・システムをCPUからアクセスできなければならない。「メイン・メモリ」と呼ばれる資源にこの情報を記憶することによってCPUからこの情報を使用できるようになる。
【0005】
メイン・メモリと呼ばれるメモリ要素はユーザ、データ、プログラム又はプロセスに動的にアロケートされる希少な資源である。メイン・メモリは通常はRAMなどのシリコン・べースのメモリである。多くの応用例ではメイン・メモリとしてダイナミック・ランダム・アクセス・メモリ(Dynamic Random Access Memory:DRAM)が使用される。プロセッサのメイン・メモリは「バイト」編成になっている。すなわち、メモリは8ビット・バイトのシーケンスとして構成され、このバイトがメモリからアクセスされる情報の最小単位になる。ある規約によれば、1つのロウ全体がロウ・アドレスによって選択され、カラムが8ビットのグループでアクセスされる。実施によっては16ビット・ワード(2バイト)又は32ビット・ワード(4バイト)を1回でアクセスするものもある。
【0006】
メイン・メモリをCPUからアクセスできるようにするためにはメイン・メモリをCPUに直接又は間接に接続しなければならない。中央処理装置に直接接続できるメイン・メモリの量はCPUのアドレス・バスの幅によって制限される。アドレス・バスはCPUとメモリの間に接続される。メモリをアクセスするため、CPUは1つのメモリ・ロケーションだけをユニークに表現する値をアドレス・バスに置くことができる。アドレス・バスに置くことのできるユニークな値の数はアドレス・バスの幅に応じて変化する。特定のマイクロプロセッサなど特定のタイプのCPUのアドレス・バスの幅は普通は固定されているので、CPUによってアドレッシングできるメモリ・ロケーションの数には限界がある。
【0007】
CPUによってアドレッシングできる以上のメモリをCPUに接続することが望ましい場合がある。追加のメモリを接続できるようにするためにある方法を使用して追加メモリをCPUに間接的に結合する。8088や8086などのマイクロプロセッサのアドレス・バスは20ビットである。nビットのアドレス・バスによってアドレッシングできるメモリ・ロケーションの数は2のn乗であるから20ビットのアドレス・バスによってアドレッシングできるメモリ・ロケーションの数は2の20乗、すなわち、約100万(1M)である。CPUから直接アクセスできるようにするためにはすべてのメモリをアドレス・バスのビットによって表現できるユニークな値の数を越えないサイズの連続ブロックの中に配置しなければならない。20ビットのアドレス・バスの場合すべてのメモリを1Mの連続ブロックの中に置かなければならない。
【0008】
理論的には間接的な方法によって追加メモリをアクセスすることもできるが、ほとんどのオペレーティング・システムはメモリヘの直接アクセスだけをサポートする。オペレーティング・システムが間接的に追加メモリをアクセスする方法をサポートしない場合、アプリケーション・プログラムとそのデータのすべてを、必要なシステム・ソフトウエアのすべてとともに直接アクセスできる連続ブロックの中に格納しなければならない。
【0009】
アドレス・バスの幅によって、直接アクセスできるメモリの量が制限されるが、システム・ソフトウェアの占有するメモリの量によって、アプリケーション・プログラムが使用できる空きメモリの量が制限される。したがって、アプリケーション・プログラムが使用できるメモリの量は直接アクセスできるメモリの総量より少ない。アプリケーション・プログラムが、使用可能な量以上のメモリを必要とする時には簡単にアクセスできる使用可能メモリの量を増加するための方法を見い出さなければならない。
【0010】
従来技術では使用可能メモリの量を増やすために多くの試みが行われてきた。従来技術で使用された方法の1つがエクスパンデッド・メモリ仕様(Expanded Memory Specif1cation:EMS)として知られている。EMSは直接アクセスできないエクステンデッド・メモリの一部をエクスパンデッド・メモリとして使用するために予約し、ぺージに分割する。EMSではこのエクスパンデッド・メモリを1回に1ぺージずつCPUが直接アクセスできるアドレス空間に切り替えることによって事実上無制限の量のメモリをアクセスできる。しかし、EMSではぺージの変更に時間がかかる。望みのデータが直接アクセスできるメモリ内に配置されたEMSぺージ・フレーム内にない場合、EMSではページ・フレームの現在の内容をぺージ・アウトし、望みのデータを含むページをエクスパンデッド・メモリからぺージ・インしなければならない。このようなページ変更は時間を要するのでコンピュータの処理速度が低下する。また、EMSはすべてのアプリケーション・ソフトウェアに一般的に適用可能ではない。EMSを使用できる場合にそれを利用するよう特別にアプリケーション・ソフトウェアを作成しなければならない。
【0011】
従来技術のもう1つの方法はLOADALL命令に頼る方法である。LOADALL命令は80286マイクロプロセッサだけに具えられた非サポート命令である。LOADALL命令は80286だけに具えられているのでこの従来技術の方法は80286マイクロプロセッサに基づくコンピュータでなければ役に立たない。
【0012】
従来技術のもう1つの方法はシステムROMに含まれるシステム・ソフトウェアの検査と再プログラミングを含む。この方法では最小の量のメモリを占有しながらその機能を実行するようにシステムROMを再プログラミングすることができる。この方法によればROMプログラミングが非効率的なために浪費されていたメモリ空間を他の目的に使用できるようになる。しかし、この方法ではこの方法に使用できるROMのそれぞれのすべての改訂版を人間がプログラミングし直す必要がある。
【0013】
これらの従来技術の方法のどれにも不便な点がある。これらの方法の中のあるものは追加メモリを提供するが、望みのデータをアクセス可能にするのに必要なステップのせいでコンピュータ・システムの性能を低下させるものがある。特定の中央処理装置に基づくシステムでなければ使えない方法もある。ROM固有でありROMのそれぞれの改訂版ごとに別々に実施しなければならないものもあれば、特定のアプリケーション・プログラムに固有でありすべてのアプリケーション・プログラムに一般的に適用することができないものもある。
【0014】
発明の概要
本発明は一般保護例外などの障害に対して強固なメモリ管理システムを提供する。本発明はこのことを達成するため適切な割り込みフラグの管理を行う。さらに、CPU固有、ROM固有又はアプリケーション・プログラム固有のどれでもなく、従来技術の方法ほど性能を低下させないので、従来技術の欠点がなく、より一般的に適用可能であると同時によりよい性能を提供する。
【0015】
本発明ではROMに格納されたシステム・ソフトウェアをその通常のアドレス空間から移動し、そのアドレス空間を他の目的に使用する。本発明はROMアドレス空間を他の目的に使用でき、なおかつROMに格納されたソフトウェアにアクセスできる形でメモリを管理する。
【0016】
本発明の好ましい実施例ではシステム・ソフトウェアを含むROMをエクステンデッド・メモリのアドレス空間にマッピングし、プロテクト・モードでアクセスする。その後、元々ROMが配置されていたアドレス空間にエクステンデッドRAMをマッピングする。本発明の好ましい実施例ではROMアクセスの試みのすべてを再配置されたROMイメージに方向変更し、元はROMであったアドレス空間にマッピングされたエクステンデッドRAMをアプリケーション・プログラムなど他の目的に使用できるようにする。
【0017】
本発明の好ましい実施例はCPUの通常のメモリ・アドレッシング範囲内でアドレッシング可能であり、このようにしてデータに直接に簡単にアクセスできるメモリの量を増やすための方法である。本発明の好ましい実施例ではシステムROMとビデオROMを再配置するが、他のROMにもこの方法を適用できる。
【0018】
本発明では初期設定ルーチンを実行してROMをメモリ外部アドレス空間にマッピングする。インターセプト・ルーチンをインストールしてROMアクセスをすべてインターセプトする。エクステンデッドRAMの位置を突き止め、アロケートして、以前にROMが占有していたアドレス空間に配置する。インストールが終わったならば、普通のアプリケーション・プログラムをこのコンピュータ・システムで実行できる。元々ROMがあったアドレス空間に配置される追加RAMはアプリケーション・プログラムが使用するためにアロケートしたり、常駐終了(Terminate−and−Stay Resident:TSR)プログラムの再配置を含む(それに限定されるわけではない)他の目的のためにアロケートできる。ROMへのアクセスがある場合にはROMアクセス・インターセプト・ルーチンがそのアクセスをインターセプトし、再配置されたROMイメージに方向変更する。再配置されたROMルーチンを呼び出す時にはその実行を監視して、元のROMアドレス空間にあるROMデータ・テーブルやROMサブルーチンをアクセスしたりしないようにする。というのはこのアクセスが行われるとシステムがクラッシュするはずだからである。再配置されたROMルーチンの実行が完了した後にこのROM実行の結果のすべてを検査し、調節して、システムのエラーやクラッシュをもたらす可能性のある不正確なデータを除く。性能をさほど低下させず、特定のCPU、特定のROM又は特定のアプリケーション・プログラムに限定されない形で動作することによって本発明はコンピュータ・システム内のCPUから簡単にアクセスできる使用可能メモリの量を増やすためのはるかに効率的で一般的に適用できる方法を提供する。
【0019】
コンピュータ・システム内で簡単にアクセスできる追加メモリを提供する方法を説明する。以下の説明では本発明の完全な説明を提供するためコンピュータ・システムのタイプ、メモリ・アドレス・ロケーション、メモリの量やバス幅など多数の特定の詳細を記載する。しかし、これらの特定の詳細なしで本発明を実施できることは当業者には明白であろう。それ以外の場合では本発明を無用に不明瞭にしないために周知の特徴を詳細に説明することはしない。
【0020】
典型的なコンピュータ・アーキテクチャを第1図に示す。このコンピュータ・システムにはCPU101、RAM(メイン・メモリ)102、ROM(読み取り専用メモリ)103、及びI/O(入出力)104が含まれ、これらのすべてがシステム・バス107に結合される。I/Oブロック104はバス105を介して、大容量記憶装置106などの他のシステムヘのアクセスを提供する。
【0021】
CPU101はコンピュータを制御し、命令を実行し、データを処理する。CPU101はシステム・バス107を介して他の要素と通信する。CPUはシステム・バス107を介してコンピュータの他の要素から入力データを受け取り、システム・バスを介してコンピュータの他の要素へ出力データを送る。システム・バス107には普通アドレス・バス、データ・バス及び他のさまざまな制御線が含まれる。アドレス・バスとデータ・バスの幅ならびに制御線の数とタイプはコンピュータ・システムごとに異なる。
【0022】
RAM102、ROM103及びメモリー・マップドI/O104を合むコンピュータ・システムの各要素に複数の別個のメモリ・ロケーションが含まれる。CPU101がこれらのロケーションをアクセスできるようにするために各ロケーションに固有のアドレスを割り当てる。アドレスのそれぞれはアドレス・バスを介して送ることのできる2進値の固有の組合せである。ほとんどのメモリ・デバイスに複数のロケーションが含まれるので、1つのメモリ・デバイスのロケーションのすべてのアドレスが通常は連続ブロックとして割り当てられる。これらのブロックに連続した形でアドレスが割り当てられる(メモリにマッピングされる)場合が多い。しかし、割り当てられていないアドレスや将来の使用のために予約されたアドレスでギャップができていてもよい。
【0023】
メモリ・マップはコンピュータ・システムのメモリの編成を理解するのに役立つ。典型的なメモリ・マップはマイクロプロセッサがアクセスできる最下位アドレスから始まり、マイクロプロセッサがアクセスできる最上位アドレスまで延びる。メモリ・マップの1例を第2図に示す。第2図のマップのメモリの最下位アドレスは領域201として示されるが、メイン・メモリRAM102にアロケートされる。領域202として示される次のアドレスはI/O104にアロケートされる。領域203として示されるメモリ・アドレスは未使用である。未使用アドレスの上位にある領域204にはROMにアロケートされたメモリ・アドレスが含まれる。領域205は追加RAMにアロケートされるメモリ・アドレスであり、領域206は追加ROMにアロケートされるメモリ・アドレスである。第2図はコンピュータ・システムのメモリ・アーキテクチャを設計する際の自由度を示すためあくまで1例として提供した図である。これは特定のコンピュータ・システムの実際のメモリ・マップを表現したものではない。
【0024】
コンピュータ・システムの動作は「オペレーティング・システム」として知られる一連の命令によって制御される。オペレーティング・システムは入出力などコンピュータ・システムの基本機能を制御するのに使用され、通常はROM103などの永久記憶要素に記憶される。オペレーティング・システムの例にMS−DOS又はPC−DOSが含まれる。
【0025】
コンピュータ・システムはアプリケーション・プログラムを実行するのに使用される。アプリケーション・プログラムの例に含まれるのがワード・プロセッサ、スプレッドシート、ドローインク・プログラム、データベースなどである。アプリケーション・プログラムによってはROMに格納されるものもある。しかし、一般的にはアプリケーション・プログラムはディスク・ドライブなどの大容量記憶装置に記憶される。
【0026】
コンピュータ・システムの初期設定の時にCPU101によって実行されるアプリケーション・プログラムも大容量記憶装置106からRAM102に転送される。CPU101が操作するデータもRAM102に格納される。
【0027】
アプリケーション・プログラムのサイズと量、オペレーティング・システムのサイズ及びCPU101からアクセスできるデータの量はメイン・メモリのサイズによって制限される。無限の量のメモリがあれば理想的だが経済的にも技術的にも不可能である。まず、ユーザが購入できるメモリの量に限界がある。次に、特定のコンピュータがサポートできるメモリの量に技術的な限界がある。特定のコンピュータがサポートするメモリの量はそのコンピュータのベースとなる特定のCPUのタイプに依存する。
【0028】
たとえば、IBMのパーソナルコンピュータは8088マイクロプロセッサをベースとしている。8088マイクロプロセッサのアドレス・バスは20ビットである。あるコンピュータがアドレッシングできるメモリの量はそのアドレス・バスの幅の関数である。nビットのアドレス・バスを備えたCPUは2のn乗バイト又は2のn乗ワードのメモリを直接アクセスできる。したがって、8088マイクロプロセッサは約100万バイト又は100万ワード(1M)を直接アクセスできる。CPUのアドレス・バスの限界を越えて追加メモリを間接アクセスできるようにするための方法が開発されてはいるが、このような方法は扱いにくくて非効率的である場合が多い。したがって、アプリケーション・ソフトウエアが使用できる直接アクセス可能なメモリ空間ができる限り多い状態を保って、アプリケーション・ソフトウェアが可能な限り効率的に動作できるようにすることが望ましい。
【0029】
できる限り多くの直接アクセス可能なメモリ空間をアプリケーション・ソフトウェア用に予約し直接アクセス可能なメモリ空間に収まるようにアプリケーション・ソフトウェアをできる限り小さくすることが理想的であるが、これが必ず達成できるとは限らない。システム・ソフトウェアはアプリケーション・ソフトウェアの管理と制御のために必要であるからやはりメモリに常駐しなければならない。また、アプリケーション・ソフトウェアの複雑さとユーザ・データの量が増加するにつれてアプリケーション・ソフトウェアに必要なメモリが増加する。
【0030】
さらに、TSR(常駐終了)として知られるプログラムがコンピュータ・システム上で使用される場合が多い。このようなプログラムは「ホット・キー」と「ポップアップ・ウィンドウ」を提供し、ビデオ・ディスプレイの隅に時計を表示したりディスク・ドライブの活動を監視するなどバックグラウンド・タスクの実行に使用される。TSRは他の多くの応用分野のために作成されており、ユーザが自分のコンピュータに複数のTSRを同時に常駐させることもしばしばである。TSRのそれぞれが自分の配置されるメモリ空間を必要とするのでシステムにTSRを追加するとメモリ必要量が増加する。
【0031】
第5図は典型的なコンピュータ、すなわち、8088/8086ファミリのマイクロプロセッサに基づいて、MS−DOSの下で動作するIBMのパーソナル・コンピュータなどのコンピュータのメモリ・マップを示す図である。第5図のメモリ・マップは可能な唯一のメモリ・マップではなく、典型的なメモリ・マップの1例である。このメモリ・マップは一番下のメモリ・ロケーション0(501)から一番上のメモリ内で最上位のロケーションまでという形で編成されている。このメモリ・マップには3つの基本領域がある。第1領域には最下位640Kのメモリが含まれ、コンベンショナル・メモリ502と呼ばれる。コンベンショナル・メモリ502は読み取り動作と書き込み動作の両方が可能なRAMだけから構成される。ただし、すべてのシステムが640K全体を含むわけではなく、メモリ空間の一部が未使用のままであってもよい。
【0032】
初期のマイクロコンピュータのアドレス・バスは16ビットであり、これによって64Kのアドレス空間がもたらされた。アプリケーションの必要とするメモリの量が増加するにつれてマイクロコンピュータに16ビット・アドレス・バスの制限を克服する必要が生じた。したがって、IBMのパーソナルコンピュータは20ビット・アドレス・バスをサポートするセグメント・アドレス方式と共に市場に導入された。20ビット・アドレス・バスは1024K又は1Mのアドレス空間を提供するが、これは16ビット・バスの16倍のスペースである。1Mは16ビット・アドレス・バスを備えるコンピュータの64Kと比較して膨大な量のメモリであると思われた。さらに、当時のメモリ回路は高価であったのでRAMメモリに関する人為的な制限が640Kに設けられた。640Kから1Mまでの384Kのアドレス空間は将来の使用、主にROMのために予約されていた。後続モデルのコンピュータはオリジナルのIBM PCと後方互換であり同一のPC−DOS/MS−DOSオペレーティング・システムを使用するように設計されたので640Kの制限が現代のコンピュータ上でアプリケーションに使用可能なメモリの量を制約し続けている。
【0033】
コンベンショナル・メモリ502はコンピュータ・システムの重要な部分である。コンベンショナル・メモリはシステム・ソフトウェア、アプリケーション・ソフトウェア、ユーザ・データ及びTSRやデバイス・ドライバを含む他のコードとデータを記憶するのに使用される。第5図に示すように、MS−DOSはメモリの最下位部分を使用してそれ自体のコード506と関連データ507を格納する。MS−DOSはその上位にアプリケーション・ソフトウェア、TSR及びデバイス・ドライバ(全体を要素512として図示)を格納する。
【0034】
メモリの第2の基本領域が384Kの予約済みメモリ503である。これは640KのRAM限界の上位、1024Kまでのメモリ・アドレスにある。予約済みメモリ領域503は主に読み取り専用デバイスであるROMによって占められる。予約済みメモリ領域にあるROMにはシステムROM504,ビデオROM505とおそらくはハード・ディスク・ドライブやネットワーク・インターフェースなどの他の周辺装置用のROM514が含まれる。システムROM504にはコンピュータの基本機能をサポートするコードとデータが格納される。ビデオROM505にはビデオ表示を伴う動作をサポートするためのコードとデータが格納される。他の周辺機器用のROM514はそれらの装置の動作をサポートする。
【0035】
ROMの他に予約済みメモリ領域503には他のタイプの特殊メモリも含まれる。予約済みメモリ領域503にあるメモリのタイプの1つがビデオ・フレーム・バッファに使用されるRAMである。ビデオ・フレーム・バッファは現在ビデオ・ディスプレイに表示されている情報を格納するのに使用される。一般にビデオ・フレーム・バッファから情報を読み取ることと書き込むことの両方が可能であるが、ビデオ・フレーム・バッファは通常は一般情報の記憶には使用できない。というのはビデオ・フレーム・バッファがアクティブでなくその状態のままになるのでない限り、ビデオ・フレーム・バッファに情報を書き込むとビデオ・ディスプレイの外見が変化するからである。
【0036】
予約済み領域503のうちでビデオ・フレーム・バッファのために使用される領域は特定のコンピュータ・システムにインストールされたビデオ・ディスプレイ・アダプタの特定のタイプによって変化する。第5図に示すように、EGA又はVGAのビデオ・アダプタをインストールする場合、グラフィックス用の64Kのビデオ・フレーム・バッファ508が640Kから704Kまでのメモリ空間を占有する。EGA又はVGAのアダプタはテキスト表示のために32Kのビデオ・フレーム・バッファも使用する。この32Kのビデオ・フレーム・バッファはモノクローム表示の場合には704Kから736Kまで、カラー表示の場合には736Kから768Kまでに配置される。MDAビデオ・アダプタをインストールする場合16Kのビデオ・フレーム・バッファ509が704Kから720Kまでのメモリ空間を占有する。ハーキュリーズ・ビデオ・アダプタをインストールする場合、64Kのビデオ・フレーム・バッファが704Kから768Kまでのメモリ空間を占有する。CGAビデオ・アダプタをシステムにインストールする場合、ビデオ・フレーム・バッファ510が736Kから768Kまでの82Kのメモリ空間を占有する。EGA又はVGAのビデオ・アダプタをインストールする場合、追加のメモリがビデオROMのために使用される。典型的には768Kから784Kまでの16Kのメモリ空間がEGA又はVGAのビデオROM505のために使用される。ただし、ビデオROM505はサイズが異なる場合もあり、異なるアドレス空間に配置される場合もある。
【0037】
システムROM504はコンピュータの基本動作をサポートするが典型的にはたとえば960Kから1024Kまでの予約済みメモリ領域503の最上位64Kを占有する。予約済みメモリ領域503の残りのスペースは未使用か、周辺装置をサポートするROMやEMSページ・フレームを含む他の目的に使用されるかのどちらかである。
【0038】
メモリの第3の基本領域は1Mを越えるすべてのメモリを合むエクステンデッド・メモリ511である。8088/8086マイクロプロセッサはアドレス・バスが20ビットしかないので1Mのメモリしかアドレッシングできず、エクステンデッド・メモリ511を簡単にはサポートできない。80286など24ビットのアドレッシング能力を持つマイクロプロセッサは予約済みメモリ503とコンベンショナル・メモリ502の1Mの他に、15Mのエクステンデッド・メモリ511を合む16Mまでのメモリをアドレッシングできる。80386や80486など32ビットのアドレッシング能力を持つマイクロプロセッサは予約済みメモリ503とコンベンショナル・メモリ502の1Mの他に4095Mのエクステンデッド・メモリ511を含む4Gまでのメモリをアドレッシングできる。
【0039】
エクステンデッド・メモリ511のうちで1Mの直上に置かれる領域をハイ・メモリ・エリア513と呼ぶ場合がある。ハイ・メモリ・エリア513は従来技術のハイ・メモリ技法を使用してアドレッシングできる65520個のメモリ・ワードから構成される。
【0040】
第5図の従来技術のメモリ・マッピング・システムの欠点は1メガバイトのメモリしか直接アクセスできないことである。その1メガバイトの中にRAMアドレッシングに関して640Kの人為的な制限が設けられている。しばしば、ユーザは640Kを越えるRAMを直接アドレッシングできることを必要とする。RAMアドレッシングの人為的な640K制限を変更できないので追加RAMを提供しようとする従来技術の試みはRAMカットオフと1メガバイト限界の間の384Kの予約メモリの利用に焦点を置いている。いくつかの従来技術の方法を以下で説明する。
【0041】
従来技術の第1の方法では追加のコンベンショナル・メモリとして使用するためコンベンショナル・メモリ602の640K限界の真上の予約メモリ603をアロケートする。第5図を参照すると、要素601として示される640Kから704Kまでの予約メモリ・アドレス空間がEGA/VGAビデオ・フレーム・バッファのためにアロケートされる。704Kから736Kまでの予約メモリはMDA/ハーキュリーズ・ビデオ・フレーム・バッファのためにアロケートされる。736Kから768Kまでの予約メモリ・アドレス空間はCGAビデオ・フレーム・バッファのためにアロケートされる。しかし、ほとんどのコンピュータ・・システムには1種類のビデオ・ディスプレイ・アダプタしかない。あるコンピュータ・システムにCGA又はMDA/ハーキュリーズのビデオ・アダプタがあるがEGA/VGAビデオ・アダプタがない場合、要素601として図示されるEGA/VGAビデオ・フレーム・バッファのためにアロケートされる640Kから704Kまでのメモリは未使用のままになり、コンベンショナル・メモリ602の拡張としてアプリケーション・プログラムが使用するために再アロケートすることができる。あるコンピュータ・システムにCGAビデオ・アダプタがあるがMDA/ハーキュリーズ又はEGA/VGAのアダプタがない場合、MDA/ハーキュリーズとEGA/VGAのビデオ・フレーム・バッファのためにアロケートされる640Kから736Kまでのメモリ空間が未使用のままになりコンベンショナル・メモリ602を736Kまで拡張できる。
【0042】
コンベンショナル・メモリ602の限界を640Kの上に押し上げるためには、まず、そのシステムにインストールされているビデオ・ディスプレイ・アダプタのタイプを判定しなければならない。存在するビデオ・ディスプレイ・アダプタのタイプに応じて外部メモリから適当な量の未使用RAMを640Kを越えて640Kと連続している未使用のアドレス空間にマッピングしなければならない。その後、アプリケーション・ソフトウェアやTSRにメモリを供給するためのメモリ・アロケーション手続きを修正して640K限界を越えるメモリをアロケートできるようにしなければならない。
【0043】
この方法は簡単にアクセスできるメモリの量を増加させるが、複数の欠点がある。第1に、この方法はますます一般的になりつつあるEGAディスプレイ又はVGAディスプレイを備えたコンピュータ・システムでは役に立たない。第2に、EGAディスプレイ又はVGAディスプレイのないシステムであってもこの方法によって使用可能にできるメモリの量はごくわずかである。MDAディスプレイ又はハーキュリーズ・ディスプレイのあるシステムでは64Kを使用可能にすることしかできない。CGAディスプレイしかないシステムであっても96Kを使用可能にすることしかできない。
【0044】
従来技術の第2の方法は第1の方法に似ている。この方法にも第6図に示されるようにコンベンショナル・メモリの640K限界を予約メモリ領域に押し上げることが含まれる。しかし、この方法は他の目的に使用されている予約メモリの再配置も行われるという点が従来技術の第1の方法と異なる。この方法を使用することからもたらされるメモリ・マップを第7図に示す。この方法を用いるとビデオRAM703及びビデオROM704ならびに入出力(I/O)メモリ705及びTSRメモリ706を予約メモリ領域内でできる限り上位のメモリ・ロケーションに再配置してできる限り多くの未使用の予約メモリ・アドレス空間をコンベンショナル・メモリ701との640K境界に連続して使用可能にすることができる。実際に、コンベンショナル・メモリ701の640K限界を900Kまで押し上げることができる。
【0045】
この方法を実施するためには、まず、そのシステムにインストールされているビデオ・ディスプレイ・アダプタのタイプを判定しなければならない。やはり予約メモリ領域708の一部を占有する他のI/Oデバイスも判定しなければならない。その後、ビデオRAM703、ビデオROM704、他のI/Oメモリ705及びTSRメモリ706を予約メモリ領域708の最上位にあるシステムROM707の真下の領域に再マッピングしなければならない。その後、ビデオRAM703、ビデオROM704、I/Oメモリ705及びTSRメモリ706を指す割り込みポインタその他すべてのポインタをリダイレクト(宛先変更)して、このメモリが再配置された新しいメモリ空間を反映させなければならない。次に、640Kと連続する予約メモリ・アドレス空間の使用可能ブロックに外部メモリから適当な量の未使用RAMをマッピングしなければならない。最後に、アプリケーション・ソフトウェアとTSRのためのメモリ・アロケーション手続きを修正してフィル・メモリ702と呼ばれる640Kの上位にある予約メモリのうちで使用可能にされた部分をアロケートできるようにしなければならない。
【0046】
この従来技術の第2の方法にも欠点がある。この方法では多くとも260Kの予約メモリしかアクセスできない。また、ビデオRAM703はしばしばアプリケーション・ソフトウエアが直接アクセスするので、アクセスの試みのすべてをつかまえビデオRAM703が再配置されたメモリ空間にリダイレクトすることは困難である。
【0047】
従来技術の第3の方法は初めの2つとは多少異なる形で動作する。これを第8図に示す。TSR、デバイス・ドライバ及びネットワーク・インターフェース・プログラム808は普通は640K未満のコンベンショナル・メモリ801に配置されるが、そうでなければアプリケーション・ソフトウェアが使用できるはずのコンベンショナル・メモリの一部を占有するので、これらのプログラムをコンベンショナル・メモリ801の外部に移動できるならばより多くのメモリをアプリケーション・ソフトウェアが使用できるはずである。従来技術の第3の方法ではTSR,デバイス・ドライバ及びネットワーク・インターフェース・プログラム803をコンベンショナル・メモリ801から予約メモリ802に移動することによってアプリケーション・ソフトウェアが使用できるコンベンショナル・メモリ801の量を増やす。
【0048】
この方法を実施するためには、まず、未使用の予約メモリ806の量を判定しなければならない。また、TSR、デバイス・ドライバ及びネットワーク・インターフエース・ドライバ803が占有するコンベンショナル・メモリの量も判定しなければならない。その後、予約メモリ領域にエクステンデッド・メモリから十分な量のアロケートされていないRAMをマッピングしてTSR,デバイス・ドライバ及びネットワーク・インターフェース・プログラムのためのメモリ空間を供給しなければならない。次に、TSR、デバイス・ドライバ及びネットワーク・インターフェース・プログラム803を予約メモリ802内の使用可能メモリ806に再配置しなければならない。
この従来技術の第3の方法にも欠点がある。まず、この方法ではアロケートされていない予約メモリ空間806しか使用できない。この方法ではROM、ビデオ・フレーム・バッファ又は他の用途にアロケートされている予約メモリ空間807を使用できない。また、TSR、デバイス・ドライバ及びネットワーク・インターフェース・プログラム803の再配置はそれらに対する参照のすべてが確実に新しいロケーション804,805にリダイレクトされるようにするために注意深く行わなければならない。
【0049】
従来技術の第4の方法はいわゆるハイ・メモリ・エリアに関連する方法である。この方法を使用することからもたらされるメモリ・マップを第9図に示す。この方法は80286で実施されたセグメント・アドレッシング方式の例外に基づいている。セグメント・アドレッシング方式では16ビットのセグメントと16ビットのオフセットを組み合わせて20ビットのアドレスを生成する。20ビットのアドレスは理論的には1Mまでに制限されるはずであるが、セグメントとオフセットの特定の組合せを用いると1M限界を越えるアドレスを得ることができる。8088及び8086マイクロプロセッサは可能なアドレスの範囲を1Mまでに制限するよう設計されたが80286マイクロプロセッサにはそのような保護機構がない。80286マイクロプロセッサはメモリ・アドレスに対する1M制限を厳格に維持するわけではないのでこの方法を80286プロセッサと共に使用すると、ハイ・メモリ・エリア(HMA)903と呼ばれる、1Mの真上に位置する追加の64Kのメモリをアクセスできるようになる。
【0050】
この方法を使用するためには、まず、セグメント・アドレッシング方式を使用する時に最初の16ビットのセグメントを格納するのに使用される「セグメント・レジスタ」と呼ばれるレジスタにFFFFHをロードする。その後、「オフセット・レジスタ」と呼ばれるレジスタに10HとFFFFHの間の値をロードする。そうすると、マイクロプロセッサはコンベンショナル・メモリ901へのアクセスであるかのようにハイ・メモリのアクセスを実行する。
【0051】
この従来技術の第4の方法にはそれに関連する欠点がある。この方法は8088又は8086マイクロプロセッサに基づくコンピュータでは機能しないので、初期のPCやその互換機では使用できない。また、この方法によってもたらされるメモリの量は64Kに限られる。さらに、アプリケーション・ソフトウェアはHMAをアロケートし、アクセスするよう特別に作成しなければならず、セグメント計算やHMAへの直接のディスク読み書きを含むHMAアクセスに関する制約に違反してはならない。また、この方法は広く知られており、この方法を使用してより多くのメモリを取得するソフトウェアが作成されているので、この方法によってもたらされるメモリはおそらくほとんどのコンピュータ・システムで他の用途に使用することができない。
【0052】
従来技術の第5の方法ではメモリをページに分割し、データをアクセスする時にその望みのデータを含むページがアクセス可能なメモリに確実に含まれるようにする。この方法には2つのバリエーションがある。第1のバリエーションはエクスパンデッド・メモリ仕様(Expanded Memory Specificatin:EMS)と呼ばれる。EMSを第12図に示す。EMSはエクステンデッド・メモリから予約メモリ領域1202内のページ・フレーム1203にバンク切換してどの時点でも1M未満のメモリ空間に1つ又は少数のページしか存在しないのに大量のエクステンデッド・メモリを使用できるようにする。EMSと共に使用する時にはエクステンデッド・メモリをエクスパンデッド・メモリ1204と呼ぶ。第2のバリエーションは仮想メモリと呼ばれる。仮想メモリを第10図に示す。仮想メモリを用いるシステムの可能なメモリ・マップの1つを第11図に示す。仮想メモリを使用すると物理メモリ1002に格納できない情報をハード・ディスク・ドライブなどのI/Oデバイスに記憶できるようになる。データはべ一ジに分割されCPU1001が必要とする時だけにディスク・ドライブから物理メモリにロードされる。したがって、大量のデータ・ページをハード・ディスクに記憶できるとともに物理メモリ1002にわずかのページを保持するだけでよい。
【0053】
EMSを使用するためにはエクスパンデッド・メモリ1204をページに分割しなければならない。また、予約メモリ内の1領域をページ・フレーム1203として使用するためにアロケートしなければならない。ページの内容とエクスパンデッド・メモリ内でのロケーションを含むページのディレクトリを維持しなければならない。一旦EMSが初期設定され動作状態になったならば、EMSをサポートするソフトウェアは望みのEMSデータがEMSページ・フレーム1203に含まれるようにするためにメモリ・アクセスを監視しなければならない。望みのEMSデータがアクセスの時点でEMSページ・フレーム1203に含まれない場合、EMSをサポートするソフトウェアは望みのデータのための余地を作るためにページ・フレーム1203のうちのどのページをページ・フレームからバンク切り替えして追い出すかを決定しなければならない。その後、このソフトウェアはエクスパンデッド・メモリ1204から適当なページを見つけなければならない。その後、この適当なページをページ・フレーム1203のうちの使用可能なページにロードしなければならない。その後、ページ・フレーム1203内の適当なアドレスへメモリ・アクセスをリダイレクトして望みのデータを読み書きできるようにしなければならない。
【0054】
仮想メモリ・システムを使用するためにはハード・ディスク上にアロケートされた仮想メモリ1003をページに分割しなければならない。ページの内容とメモリ内のロケーションを含むページのディレクトリを維持しなければならない。一旦仮想メモリ・システムが初期設定され動作状態になったならば、仮想メモリ・システムは望みのデータが物理メモリ1002に含まれるようにするためにメモリ・アクセスを監視しなければならない。望みの仮想メモリ・データがアクセスの時点で物理メモリ1002に含まれない場合、仮想メモリ・システムは将来アクセスされる可能性が最も低いメモリのページを判定しなければならず、それらをハード・ディスクに書き戻さなければならない。その後、仮想メモリ・システムはハード・ディスクの仮想メモリ1003から適当なページを見つけなければならない。その後、適当なページを物理メモリ1002の選択されたページにロードしなければならない。その後、新たにロードされたページ内の適当なアドレスにメモリ・アクセスをリダイレクトして望みのデータを読み書きできるようにしなければならない。
【0055】
EMSと仮想メモリ・システムには類似性があるが、仮想メモリ・システムは一般にEMSよりはるかに自動的にアプリケーション・ソフトウエアに対して透明に動作する。アプリケーション・ソフトウェアは、仮想メモリ・システムの場合、その存在すら意識せずにコンピュータ・システム上でアクティブになる場合があるが、EMSの場合、アプリケーション・ソフトウェアはEMSの存在を認識するだけではなく特別にEMSをサポートしEMSの動作を指令しなければならない。
【0056】
この従来技術の第5の方法は理論的にはより大量のメモリのアクセスを可能にする能力を持っているが欠点もある。この方法を用いるとメモリ管理にCPUタイムを割かなければならないのでメモリ・アクセス・タイムが増加する。記録を継続的に更新してページ・フレーム1203とエクスパンデッド・メモリ1204の両方でのページの位置とその内容を示さなければならない。これらの動作はCPUが他のタスクに当てることのできるはずのタイムを奪い、したがって、性能を低下させる。
【0057】
従来技術の第6の方法ではROMの圧縮と最適化を使用する。この方法は一般的に適用することができず、ROMのそれぞれの改訂版ごとに人間が実行しなければならない。この方法の目的はROMの占有するメモリ空間の量を減らし、その結果ROMにアロケートされているが未使用のメモリ空間を他の目的のために再アロケートできるようにすることである。非効率的なコードとROMのうちで絶対にアクセスされない部分とを発見し除去することによって、ROMが占有するメモリ空間を減らす。
【0058】
この方法は特定のROMのそれぞれに別々の形で適用しなければならないのでこの方法の詳細を一般的に説明することはできない。この方法を使用するためには既存のROMのコードとデータを注意深く検査し、変更又は削除しなければならない領域を突き止めなければならない。その後、これらの変更を行った後にROMのコードとデータを再アセンブルしなければならない。その後、小さくなった新しいROMコードを元のROMの部分の上にマッピングしなければならない。また、この方法によって使用可能にされたメモリ空間を他の目的に使用できるようにするための用意も必要である。
【0059】
この方法の明らかな欠点は一般的に適用できないことである。この方法に基づく製品は新しいROM改訂版が発表された途端に旧式になる。また、ROMのそれぞれの各改訂版の圧縮と最適化を実行するにはかなりの時間と労力と技能が必要である。
【0060】
従来技術の第7の方法では予約メモリ領域に常駐することになるTSRの初期設定のために予約メモリ領域内に追加のメモリを一時的に供給する。予約メモリ領域にマッピングされているメモリ内にTSRを置くことによって、そうでなければそれらのTSRが使用するはずのコンベンショナル・メモリ空間をアプリケーション・プログラムが使用できる。しかしながら、TSRは典型的に初期設定されるときに単に常駐している時よりも多くのメモリを必要とする。時にはEMSをインストールしそのページ・フレームが予約メモリ領域内のメモリ空間を占有する時などにある、TSRを初期設定するのに十分な使用可能予約メモリ空間がない場合がある。従来技術のこの方法はEMSページ・フレームのためにアロケートされた予約メモリ空間からスペースを借りることによってこの問題を克服する。TSRがその初期設定を完了し、そのスペースがもはや不要になった後にそのスペースがEMSに返される。
【0061】
従来技術のこの方法にも、欠点がある。まず、この方法はTSRにしか適用できない。TSRのないシステムやごく小数のTSRしかないシステムがあり、これらのシステムではこの方法からはほとんど利益を得られない。また、この方法から得られる利益の量はTSRによって変化する。あるTSRが初期設定のために追加のメモリを必要としない場合、この方法からはほとんど利益を得られない。
【0062】
従来技術の第8の方法ではLOADALLコマンドを使用してリアル・モード・プログラムを80286マイクロプロセッサのプロテクト・モードで走らせる。その目的は80286マイクロプロセッサにリアル・モードでの固有のメモリ・マッピング能力がないという事実にもかかわらずEMSをエミュレートすることである。リアル・モード・プログラムがセグメント・レジスタをロードしようとする時に一般保護例外が発生する。この方法は一般保護例外ハンドラを使用してセグメント・レジスタをセレクタに変換し、予期されないプロセッサ・モードをプログラムに対して透明にする。これらの能力を80286マイクロプロセッサで実現するためにこの方法はLOADALL命令に頼る。
【0063】
LOADALLコマンドは80286マイクロプロセッサの非公開・非サポートの機能である。これは8088、8086、80386又は80486マイクロプロセッサではサポートされない。これは明らかにマイクロプロセッサの製造と試験を助けるものとして80286マイクロプロセッサだけに実施されたコマンドである。したがって、LOADALL命令は将来に製造される80286マイクロプロセッサでサポートされるという保証すらない。LOADALL命令はシステム・ソフトウェア又はアプリケーション・ソフトウェアでの使用を目的としたものではない。
【0064】
従来技術の第8の方法を使用するためには以下の処理を実行しなければならない。第1に、割り込みを禁止しなければならない。第2に、ロケーション00800Hから始まる102バイトをセーブしなければならない。第3に、全レジスタをセーブしなければならない。次に、アクセスしようとする外部メモリの領域を指定するディスクリプタ・キャッシュ・ベース・アドレスを含む望みのレジスタ値をロケーション00800Hから始まる102バイトのメモリにロードしなければならない。この後に、LOADALLオペコード(0FH05H)を実行しなければならない。次に、エクステンデッド・メモリの読み取り又は書き込みを実行するが、この時にはアドレス・オフセットだけを使用しセグメント・ベース・アドレスを変更してはならない。この後に、記憶しておいた全レジスタの値を取り出し、ロケーション00800Hから始まる102バイトのメモリにロードしなければならない。次に、LOADALLオペコード(0FH05H)を実行してレジスタとディスクリプタ・キャッシュの以前の内容を復元しなければならない。その後、00800Hから始まるメモリの102バイトの内容を取り出し、復元しなければならない。最後に、割り込みを許可し直さなければならない。
【0065】
従来技術の第8の方法には多数の欠点がある。まず、LOADALL命令は80286べースのコンピュータ・システムでなければ機能せず8088、8086、80386又は80486ベースのコンピュータ・システムでは機能しない。LOADALL命令は非公開で非サポートであるからLOADALL命令が将来に製造される80286マイクロプロセッサで機能するという保証はない。一般に非公開又は非サポートのハードウェア機能に頼るのは受け入れられない行動である。さらに、LOADALL命令は絶対メモリ・アドレス00800Hにあるデータの操作を必要とする。LOADALL命令を実行する前にこの領域のメモリに含まれるデータを保存するために何らかの手だてを講じない限りシステム・ソフトウェアがダメージを受ける可能性がある。また、この方法によればすべてのタイプのシステム動作の間に一般保護例外が発生する。この例外をサービスする必要があるがこれにはCPUタイムというコストがかかり、したがって、ほとんどのタイムでシステム性能がかなり低下する。
【0066】
従来技術のもう1つの方法はアップルIIコンピュータで使用する16K−RAMカードに関連するものである。アップルIIコンピュータは6502マイクロプロセッサをベースとする。6502マイクロプロセッサのアドレス・バスは16ビットであり64Kのアドレス空間をサポートする。しかし、アップルIIが市場に導入された時点ではRAMデバイスのコストが高かったので下位48Kのアドレス空間だけがRAMを用いて使用するようになっていた。この48KのRAMの上位に、I/Oメモリに当てられた4Kの領域があった。残りの12Kはアドレス空間の最上位領域にありROMを用いて使用するようになっていた。
【0067】
アプリケーション・ソフトウェアが徐々に大量のRAMを必要とするようになるのにつれてその48Kの限界を越えてRAMを拡張する方法が必要になった。RAMの量を増やすために16K−RAMカードが導入された。16K−RAMカードには16KのRAMが搭載され、このRAMは64Kアドレス空間の上位16Kにマッピングでき、4KのI/Oメモリと12KのROMと入れ替えることができた。追加の16KのRAMを使用できるようにするためには、まず、I/OメモリとROMをアドレス空間の上位16Kから取り除かなければならなかった。これはメモリ・デバイスに関連するアドレス復号ロジックを変更することによって達成できた。その後、16KのRAMのアドレス復号ロジックをイネーブルすることによってそのRAMを16Kのアドレス空間にマッピングできた。
【0068】
16K−RAMカードをイネーブルすると64Kのアドレス空間が64KのRAMで満たされた。その時点では4KのI/Oメモリも12KのROMもアクセスできなかった。I/OメモリとROMが使用できないのでアプリケーション・ソフトウェアは16K−RAMカードがイネーブルされている間にコンピュータ・システムの完全な制御を維持しなければならず、制御を解放する前にI/OメモリとROMを確実にイネーブルし直さなければならなかった。また、アプリケーション・ソフトウェアは16K−RAMカードがイネーブルされている間にI/OデバイスやROMルーチンをアクセスすることができなかった。16K−RAMカードがイネーブルされている間にアプリケーション・ソフトウェアが制御を解放するかI/Oデバイス又はROMルーチンをアクセスしようとしたならば、システムがクラッシュした。というのはその時点で望みのI/OデバイスもシステムROMもそのコンピュータ・システムのアドレス空間に存在しなかったからである。この方法はアプリケーション・ソフトウェアによるこのような注意深い制御と監視を必要としたので確かにアプリケーション・ソフトウェアの動作に対して透明ではなかった。16K−RAMカードの存在を特に認識しその特徴を注意深く使用するようにアプリケーション・ソフトウェアを作成しなければならなかった。
【0069】
本発明はアプリケーション・ソフトウェアに透明な形でROMアドレス空間を再利用するための方法を提供することによって、この従来技術の方法の制限を克服する。本発明を特にサポートするようにアプリケーション・ソフトウェアを記述する必要はなく、本発明の存在や動作を意識する必要もない。したがって、本発明は従来技術の方法よりはるかに役に立ち、用途の広い、ROMアドレス空間再利用方法を提供する。
【0070】
本発明はROMメモリ・アドレスを640Kバイトと1メガバイトの間の予約メモリ領域に再割り振りすることによってRAMをサポートするために使用できる追加のメモリ・アドレス空間を提供する。この場合、元のメモリ・アドレスをRAMに格納されているアプリケーション、TSRなどをアドレスするために使用できる。
【0071】
たとえば、8088/8086ファミリーのマイクロプロセッサ(80286、80386及び80486マイクロプロセッサを含むがこれらに限定されるものではない)をベースとし、MS−DOSないしPC−DOSオペレーティング・システムの下で作動するコンピュータ・システムに適用されたものとして本発明を説明する。しかしながら、本発明の用途はこのようなコンピュータ・システムに限定されるものではない。本発明は特定のビデオ・ディスプレイ・アダプタの構成を必要とするものではなく、すべてのビデオ・ディスプレイ・アダプタで作動する。さらに、本発明は特定のROMの特定の改訂版に限定されるものではなく一般的にほとんどのROMに適用できるものである。さらに、本発明は特定のアプリケーション・ソフトウェアとともに使用することに限定されるものではなくほとんどのアプリケーション・ソフトウェアに透過的に使用できる。また、本発明は全体的なシステム・パフォーマンスの相当程度の低下を回避する。このようにして、本発明はコンピュータ・システムで利用可能なメモリの量を増加させる従来技術の方法を大幅に改善するものである。
【0072】
本発明を典型的なMS−DOSコンピュータに適用したものを第13図に示す。システムROM1301及びビデオROM1302の位置はエクステンデッド・メモリ1303に移動されており、これらが占めていたスペースは割り振り解放(dea11ocated)されている。したがって、未使用予約メモリ1304の量は増加し未使用予約メモリ1305となっている。本発明によればROM1306及びビデオROM1307にプロテクト・モードであるいは予約メモリへマップすることによってアクセス可能である。
本発明はコンピュータ・システムで使用されているマイクロプロセッサのセグメント化アドレス指定「リアル」モード及び「プロテクト」モードを利用する。セグメント化アドレス指定ならびにリアル・モード及びプロテクト・モードについては後で詳述する。
【0073】
セグメント化アドレス指定を第8図に示す。セグメント化アドレス指定において、アドレスは2つの部分で指定される。最初の部分はセグメント801と呼ばれ、16ビットの2進値である。第2の部分はオフセット302と呼ばれ、これも16ビットの2進値である。アクセスする物理メモリ306内で指定されたアドレスを決定するためにマイクロプロセッサはまずセグメント・レジスタの内容に10Hを乗算する(303)がこれはセグメントの内容を左へ4ビットシフトすることと等価である。次いで、この値をオフセット・レジスタの内容に加算する(304)。セグメント・レジスタをシフトしてからオフセット・レジスタに加算することにより、幅20ビットのアドレスが生成される。20ビットのアドレス・バスを通じてCPUにアクセス可能なメモリの量は220であり、これは1024Kバイトすなわち1Mバイトに等しい。このアドレス指定方法は80286、80386及び80486が「リアル」モードで作動している場合にこれらによっても使用される。
【0074】
80286、80386及び80486マイクロプロセッサは「リアル」モードでも「プロテクト」モードでも作動可能である。プロテクト・モードにはリアル・モードにはない各種の利点がある。まず、80286ではプロテクト・モードで16Mバイトにアクセスすることができ、これはリアル・モードでアクセス可能なメモリの量の16倍である。80386及び80486ではプロテクト・モードはアドレス指定限度をさらに増加させる。プロテクト・モードにおいて80386及び80486は4096Mバイトすなわち4Gバイトをアドレスすることができこれは約40億メモリ・ワードにあたる。
本発明は「プロテクト・モード」の実施例と坪ばれるもの、あるいは「マッピング」の実施例と呼ばれるものにおいて実現可能である。
【0075】
プロテクト・モード
プロテクト・モードにおけるアドレス指定を第4図に示す。16ビットのセグメント・レジスタの代わりに、プロテクト・モードは16ビットのセレクタ401を使用する。セレクタはディスクリプタ・テーブル404の項目403をポイントする。ディスクリプタ・テーブルはベース・アドレスを指定するディスクリプタを含んでいる。80286のディスクリプタは24ビットのベース・アドレスを備えており、80386及び80486のディスクリプタは32ビットのベース・アドレスを備えている。これらのベース・アドレスは8088/8086のセグメントと同じ機能を果たすがより用途が広いものである。アクセスするメモリ406内で指定されたアドレス405を決定するために8088/8086で使用しているものと同様なオフセット402をディスクリプタ・テーブル404からベース・アドレスに追加する。
【0076】
80386及び80486は「仮想86(V86)」モードという付加的な機能を有している。仮想モードにおいてマイクロプロセッサが計算したアドレスはアドレス・バスにおかれる実際のアドレスではないことがある。80886又は80486が仮想モードでアドレスを計算する場合、32ビットの線形アドレスのみを計算する。線形アドレスは次いで、マイクロプロセッサのページング機構に渡され、該機構は付加的な計算を行って物理メモリにおける最終アドレスを決定する。ページング機構によって実際の物理メモリのものと異なる構成でメモリをマップすることが可能となる。物理メモリをページに分割することによって仮想モードは物理メモリの各4Kバイトのブロックがそれ自体の仮想アドレスを有することを可能とする。以下の説明において「リアル・モード」という語は「仮想モード」と言い換えることができる。好ましい実施例において本発明は仮想モードを利用する。
【0077】
本発明のプロテクト・モードの実施例によって本来システム504及びビデオROM505に割り振られている予約メモリ領域503のメモリ空間の再割り振り(rea11ocatin)が可能となる。プロテクト・モードでROMからの読み込みを行うことによって本発明はROMのアドレス空間をリアル・モードにおいて他の目的に使用することを可能とする。
【0078】
システム構成を初期化し、元のROMのアドレス空間を再割り振りして、他の目的に利用できるようにし、ROMのアクセスをインターセプトして、これらのアクセスが再割り振りされたROMのアドレス空間に送られるようにし、かつROMのアクセスを処理して、ROMのアクセスが完了し、システムがROMのアクセス後に実行を継続できるようにすることによって、本発明は実施される。
【0079】
本発明のコンピュータ・システムの初期化を第14図の流れ図に関して説明する。初期化ルーチンはステップ1401から始まる。ステップ1401において移動対象のROMは第5図の予約メモリ領域508の元のアドレス空間におかれている。ステップ1403においてROMのコードにアクセスする割り込みハンドラが確認される。
【0080】
ステップ1404においてROMのデータ・テーブル・アドレス及び長さが確認される。ステップ1405において再割り振りされたROMが使用する適切な割り振りされていない(unallocated)プロテクト・モード・アドレス空間が確認される。このアドレス空間は連続していなければならず、またROMのアドレス指定を完全にサポートするのに適切なサイズのものでなければならない。このアドレス空間は再割り振りされたROMが実行されるところである。
【0081】
ステップ1406において、エクステンデッド・メモリ内の確認されたアドレス空間がROMに割り振られるので、他の目的のためのアドレス空間を使用することによる衝突が防止される。ROMは割り振られたメモリ・アドレス空間にマップされる。
【0082】
オプションのステップ1407においてグローバル及びローカル・ディスクリプタ・テーブル(GDT/LDT)がROMがマップされている新しいアドレス空間に対して事前に割り振りされる。
【0083】
ステップ1408においてコンベンショナル・メモリがROMデータ・テーブルのコピーを保持するために割り振られる。ステップ1409においてROMデータ・テーブルがコンベンショナル・メモリにコピーされる。ステップ1410においてコンベンショナル・メモリ内のアドレス空間が割り込みハンドラ・ルーチンに割り振られる。ステップ1411において割り込みハンドラ・ルーチンが割り振られたアドレス空間にインストールされる。ステップ1412に拾いてROMデータ・テーブルに対するポインタがコンベンショナル・メモリ内のコピーにリダイレクトされる。
【0084】
オプションのステップ1413においてROMのアドレスはエクステンデッド・メモリによってオーバーレイされる。ステップ1414において制御がオペレーティング・システムに戻される。
【0085】
ROMデータ・テーブルに対する照会がすべて見つからなかった場合あるいはこれらがすべて見つからないようなことを回避したい場合には上記の手順の変形を行う。その位置に関して公表されている情報を照会するかあるいはROMの内容の分析によるかのいずれかによってROMデータ・テーブルの位置を捜し出してから、元のROMアドレス空間のこれらが占める部分をこれらに予約されているものとすることができる。次いで、プロテクト・モードの機能を使用してROMデータ・テーブルを元のROMアドレス空間内の元の位置に復元することができる。ROMデータ・テーブルは元のROMアドレス空間の元の位置にマップされる。マイクロプロセッサはプロテクト・モードのリング・ゼロにおかれている。グローバル及びローカル両方のディスクリプタ・テーブル(GDT/LDT)はROMデータ・テーブルが占める元のROMアドレス空間の部分に設定される。プロセッサはプロテクト・モードを終了し、リアル・モードヘ戻るようになされる。ROMデータ・テーブルが占める部分以外の元のROMアドレス空間は割り振り解放され、他のリアル・モードでの目的に使用できるようになる。割り振りされていない適切なエクステンデッドRAMを見つけだし、元のROMアドレス空間を割り振り解放済みの予約メモリ503に収める必要がある。このRAMは次いで予約メモリ内の元のROMアドレス空間に割り振られ、マップされる。
【0086】
必要なステップをすべて行って本発明のプロテクト・モードの実施例で使用するためにコンピュータ・システムを初期化した後、予約メモリ503内の元のROMアドレス空間にマップされているRAMをTSR,デバイス・ドライバ又はネットワーク・インタフェース・プログラムの再配置を含む各種の目的に使用することができる。ROMの呼出しを合めコンピュータ・システムの作動のすべてのフェーズの間新しいRAMは元のROMアドレス空間にマップされたままとなる。
【0087】
システムが再構成され予約メモリ503内の元のROMアドレス空間の再割り振りが可能となってからROMアクセス・インタセプタが使用される。システムの何らかのソフトウェアがROMへのアクセスを試みた場合、ROMアクセス・インタセプタが試みられたアクセスをインターセプトし、ROMアクセス・ハンドラを活性化してROMのコード又はデータにアクセスできるようにしなければならない。ほとんどのROMのルーチンがソフトウェア割り込みによってアクセスされるものであるから、ROMのアクセスをインターセプトするもっとも簡単な方法は上述のように割り込みテーブルを変更することである。アプリケーション・ソフトウェアの中には割り込みを使用せずに直接ROMへのアクセスを試みるものがあるため、ROMのアドレスに対する照会についてアプリケーション・ソフトウェアを調べ、これらの照会をリダイレクトして、アプリケーション・ソフトウェアがエクステンデッド・メモリ内の新しいROMイメージにアクセスするようにすることが望ましい。
【0088】
もちろん、ROMデータ・テーブルを元の位置に保持しておくという上述の代替手順を使用した場合にはROMデータ・テーブルにアクセスしようとするROMアクセスを行うことができ、インターセプト及びリダイレクトは行われない。
【0089】
ROMアクセス・ハンドラはエクステンデッド・メモリ内の新しいROMイメージにアクセスし、ROMの実行を収納し、ROMアクセスの完了後にアプリケーション・ソフトウェアの実行を継続できる状態にコンピュータ・システムを復元する方法を提供する。
【0090】
ROMアクセス・ハンドラの作動を示す流れ図を第15図に示す。プロセスはステップ1501から始まる。ステップ1502においてアクセスされる特定の割り込みサービス・ルーチンに対するROMアクセス・ハンドラはCPUをリング・ゼロというプロテクト・レベルでプロテクト・モードにする。オプションのステップ1503において割り込みのサービスはROMへ行かずに行われ、制御が呼出しプログラムに戻される。オプションのステップを実行しない場合、プロセスは次のようになる。
【0091】
ステップ1504において必要ならば新しいプロテクト・モード・セレクタを反映するように入力リアル・モード・セグメント・レジスタが調節される。ステップ1505において、ROMが戻るアドレスがプロテクト・モード・スタックに設定される。
ステップ1506においてリング・スリー・プロテクト・モードのCS:IPを変更し、再配置されたROM入口点をポイントするようにする。ステップ1507において該当するIOPLを設定する。ステップ1508において再配置されたROM入口点でリング・スリー・プロテクト・モードに移行する。
【0092】
ステップ1509においてROMは実行可能とされ、障害があればそれを処理する。ステップ1510においてROMは制御をステップ1505で設定されたアドレスに戻す。ステップ1511において再度プロテクト・モードヘ移行し、ルーチンを終了する。
ステップ1512においてリアル・モードのCS:IPを変更し、呼出しプログラムの戻りアドレスをポイントするようにする。必要に応じステップ1513において戻りポインタを変更し、リダイレクトされたROMデータをポイントするようにする。ステップ1514において呼出しプログラムの戻りアドレスでリアル・モードに移行する。
【0093】
マッピングの実施例
本発明のマッピングの実施例も当初ROMに割り振られていた予約メモリ503のアドレス空間を他の用途に再割り振りすることを可能とする。しかしながら、本発明のマッピングの実施例はプロテクト・モードを使用することを必要とするものではなく、したがって、プロテクト・モードの作動をサポートしていない8088及び8086マイクロプロセッサとの互換性を有し、プロテクト・モード動作をサポートしない。本発明のマッピングの実施例は80386又は80486マイクロプロセッサのプロテクト・モードを必要としないがメモリ空間を再マップする機能は必要である。80386及び80486においてこの機能はV86仮想モードによって提供される。8088、8086及び80286マイクロプロセッサにおいてこの機能はエクスパンデッド・メモリ仕様(EMS)ボード又はその他のメモリ管理ハードウェアのいずれかによって提供される。
【0094】
本発明の初期化ルーチンのマッピングの実施例を示す流れ図を第16図に示す。プロセスはステップ1601から始まる。ステップ1602においてアドレス空間が再割り振りされるROMを捜し出す。
ステップ1603においてROMコードにアクセスする割り込みハンドラが確認される。ステップ1604においてROMデータ・テーブルのアドレス及び長さが確認される。
ステップ1605においてROMが実行されるEMSのページ・フレームのリアル・モード・アドレス空間が割り振られる。オプションのステップ1606においてROMのアドレスをオーバーレイするために使用するエクステンデッド・メモリが割り振られる。
ROMのデータ・テーブルはステップ1607においてコンベンショナル・メモリにコピーされる。ステップ1608において割り込みハンドラのインターセプトが配置される。ステップ1609においてROMデータに対するポインタがコンベンショナル・メモリ内のデータのコピーをポイントするようにリダイレクトされる。オプションでステップ1610においてROMアドレスがエクステンデッド・メモリによってオーバーレイされる。制御はステップ1611においてオペレーティング・システムに戻される。
【0095】
ROMデータ・テーブルに対する照会がすべて見つからなかった場合、あるいはこれらがすべて見つからないようなことを回避したい場合には上記の手順の変形を行う。その位置に関して公表されている情報を照会するか、あるいはROMの内容の分析によるかのいずれかによってROMデータ・テーブルの位置を捜し出してから、元のROMアドレス空間のこれらが占める部分をこれらに予約されているものとすることができる。ROMデータ・テーブルは元のROMアドレス空間の元の位置にマップされる。ROMデータ・テーブルが占めるスペース以外の予約メモリ内の元のROMアドレス空間は割り振り解放され、他のリアルモードでの目的に使用できるようになる。割り振りされていない適切なエクステンデッドRAMを見つけだし、元のROMアドレス空間を割り振り解放済みの予約メモリ503に収める必要がある。このRAMを次いで割り振らなければならない・このRAMを予約メモリ503内の割り込み解除されたROMナドレス空間にマップしなければならない。
【0096】
第16図の初期化ルーチンが一回完了すると、コンピュータを正常に使用することができ、また当初ROMが占めていたメモリ空間をTSR、デバイス・ドライバ及びネットワーク・インターフェース・プログラムの再配置を含む他の用途に割り振ることができる。
マッピングの実施例のROMアクセス・インタセプタはROMを照会するすべての命令をインターセプトし実行が混乱するのを防止しなければならない。ほとんどのアプリケーション・ソフトウエアがソフトウェア割り込みによってROMコードにアクセスしているため割り込みテーブルを修正することによって、.ROMコードに対する呼出しをインターセプトし、リダイレクトすることが可能である。ROMデータ・テーブルに対する照会をリダイレクトすることが望ましいので、ソフトウェアを調べ、ROMデータ・テーブルに対するアクセスの試みを捜し出さなければならず、またROMデータ・テーブル・ポインタに対する変更を行って、アクセスが適切にリダイレクトされるようにしなければならない。ROMデータ・テーブルを元の位置に保持しておくという上述の代替手順を使用した場合にはROMデータ・テーブルにアクセスしようとするROMアクセスを行うことができ、インターセプト及びリダイレクトは行われない。ROMアクセス・インタセプタはROMアクセスの試みをインターセプトした場合には実行をROMアクセス・ハンドラに渡す。
【0097】
本発明のROMアクセス・ハンドラのマッピングの実施例を第17図の流れ図に示す。流れ図はステップ1701から操作を開始する。
ステップ1702においてアクセスされる特定の割り込みサービス・ルーチンのためのハンドラに対するプロテクト・モードヘの移行が行われる。オプションのステップ1703においてROMへ進むことなくサービスが行われ、システムは次いで呼出しプログラムに戻る。オプションのステップ1703を行わない場合にはプロセスは次のように継続する。
ステップ1704においてページ・フレームの現行のマッピングが呼出しプログラムのリアル・モード・スタックにオプションでセーブされる。ステップ1705においてROMが戻るアドレスがリアル・モード・スタックに設定される。ステップ1706においてリアル・モードCS:IPを変更し、再配置されたROM入口点をポイントする。ステップ1707においてROMがページ・フレームにマップされる。ステップ1708において再配置されたROM入口点におけるリアル・モードヘの移行が行われる。ROMはステップ1709において実行可能となる。
【0098】
ステップ1710において制御はステップ1705で設定されたアドレスに戻される。システムはプロテクト・モードヘ再移行し、ステップ1711でルーチンを終了する。ステップ1712においてリアル・モードCS:IPを変更し、呼出しプログラムの戻りアドレスをポイントする。
必要に応じステップ1713において戻りポインタを修正し、リダイレクトされたROMデータをポイントするようにする。ページ・フレームの元のマッピングはステップ1714において呼出しプログラムのリアル・モード・スタックに格納されているデータからオプションで復元される。ステップ1715においてシステムは呼出しプログラムの戻りアドレスでリアル・モードに再移行する。
CPUのプロテクト・モードを使用した本発明の実施形態は多数の利点をもたらすものであるが、ROMは通常プロテクト・モードではなくリアル・モード(又はV86モード)で作動している。ROMにはリアル・モードでアクセスするものとしているシステム・ソフトウェア及びアプリケーション・ソフトウェアとの互換性を維持するため、プロテクト・モードでアクセスされるROMに対してリアル・モードの作動をシミュレートするステップを行わなければならない。
【0099】
本発明をセグメント・レジスタのローディング時の試みをトラップする方法を含むように実施することができる。CPUがプロテクト・モードであるときにセグメント・レジスタをロードしようとする試みをCPUによって検出し、一般保護例外ハンドラ(genera1 protection exceptionhandler)に対する呼出しを自動的に行う。一般保護例外ハンドラはプロテクト・モードの規則に違反する命令の位置を戻す。
これが発生するのを補うために一般保護例外ハンドラが指定した位置にある命令を調ベデコードする。デコーディンクはすべての命令のオペコード(opcode)を含んでいるルックアップ・テーブルにある命令のオペコードを調べることによって行われる。命令の分析によりリアル・モードにおいて命令が意図している効果を判断することができ、かつ意図している効果をプロテクト・モードでエミュレートすることができる。意図している効果がもたらされるので障害をもたらしたコードを適切に動作させることができ、実行がそのコードに渡されそのコードを完了することが可能となる。
【0100】
本発明が適切に作動できるようにするため、I/O命令をトラップしI/O特権レベル(I/O Privelege Leve1)IOPLの特権レベルを高くできるので(低い特権レベル番号で表される)IOPLセンシティブI/O命令を実行しようという試みは一般保護例外障害をもたらす。発生した障害を処理し、これが本発明の動作と衝突しないようにすることができる。
いくつかのマイクロプロセッサの割り込みフラグは注意をほとんど必要としない態様で作動するが、I/O命令をトラップする場合などのようにI/O特権が拒否された場合、割り込みフラグの動作が異なるものとなることがある。割り込みフラグに関連したある種のマイクロプロセッサの命令はI/Oレベルに敏感である(IOP−sensitive)。80286又は80386マイクロプロセッサ・ベースのシステムにおいて、I/O特権が拒否された場合に割り込み可能フラグ・クリア(clear interrupt enable f1ag)CLI命令又は割り込み可能フラグ設定(set interrupt enab1e flag)STI命令の実行を試みると一般保護例外障害が生じる。
【0101】
本発明は割り込みフラグを変更するソフトウェアによる試みの監視、ならびに適切な割り込みフラグの挙動のエミュレーションの問題を解決する方法も含んでいる。これらの問題はプロテクト・モードにおけるPOPF及び割り込み戻り(imterrupt return)IRET命令の不適切な動作によって生じる。POPF命令は最上位のワードをスタックから取り出し、その内容をCPUのフラグ・レジスタに入れるものであると考えられる。IRET命令は上位8ワードをスタックから取り出し、そのワードの内容をCPUフラグ・レジスタに入れる。しかしながら、プロテクト・モードではPOPF命令もIRET命令も割り込みフラグを変更しないし、また一般保護例外も発生しない。それ故、コンピュータがプロテクト・モードのときに割り込みフラグのリアル・モードでの挙動をエミュレートするために一般保護例外ハンドラを使用すると完全なエミュレーションは行われず、適正な作動が行われなくなる。
【0102】
従来、POPF命令をトラップできなかったため、満足できるリアル・モードのエミュレーションを提供できたものは誰もいない。「DOS Protected Mode Interface Specification,Version 1.0」には次のように記載されている。「...クライアントはIRET(D)又はPOPFを使用して、割り込みフラグを変更できないが、これはこれらの命令が物理的割り込みフラグにアクセスするものであり、クライアントの特権レベルのためCPUによって無視されるからである。」
【0103】
本発明の特徴の1つはPOPF及びIRET命令に一般保護例外を発生させることである。本発明は一般保護例外ハンドラのみに依存する代わりに、代替方法を使用してPOPF命令又はIRET命令をトラップすることによってプロテクト・モード時にリアル・モードの挙動の適切なエミュレーションを提供する。
POPF命令又はIRET命令が普通、プログラム内のコードの予測可能なシーケンスの一部として使用されているので、本発明はこの規則性を利用してPOPF命令をトラップする。
【0104】
普通は、プログラムはPUSHF命令を使用してフラグ・レジスタの内容をセーブし、CLI又はSTI命令を使用して割り込みをロックし、割り込みがロックされている間に各種のコードを実行し、その後、POPF命令を使用してフラグ・レジスタの内容を復元している。
POPF命令をトラップするためにCLI又はSTI命令の実行によってもたらされる一般保護例外が生じる場合には、常にスタックの限界を現行のスタック・ポインタと等しく設定する。このようなスタックの限界を設けた場合、POPF又はIRETを実行するとスタックの限界を越え、これによって、一般保護例外が発生する。
【0105】
本発明は第5図に示すようにマップされたメモリ・アドレスを有するコンピュータ・システムに限定されるものではない。たとえば、ROM用に予約されたメモリ・アドレスが他の位置にあることがある。たとえば、PS/2などのオペレーティングシステムの場合、ROM用のメモリ・アドレスは0E000などの位置に予約されている。
本発明はマッピング方法にプロテクト・モードを利用しているが、これは必須ではない。マッピング方法のためにプロテクト・モードとすることを必要としない他のメモリ管理システムを使用することができる。
したがって、パフォーマンスを大幅に劣化させることがなく、またCPU、ROM又はアプリケーションのいずれにも特有のものではない態様で容易にアクセスできるメモリをより多く利用可能にする方法が提供される。
【図面の簡単な説明】
【図1】第1図 典型的なコンピュータ・システムの構造を示すブロック図。
【図2】第2図 コンピュータ・システムの可能なメモリ編成を示すメモリ・マップ。
【図3】第3図 あるマイクロプロセッサのリアル・モードで使用されるアドレッシング方法を示す図。
【図4】第4図 あるマイクロプロセッサのプロテクト・モードで使用されるアドレッシング方法を示す図。
【図5】第5図 典型的なコンピュータ・システムのメモリ編成を示すメモリ・マップ。
【図6】第6図 従来技術の第1の方法を示すメモリ・マップ。
【図7】第7図 従来技術の第2の方法を示すメモリ・マップ。
【図8】第8図 従来技術の第4の方法を示すメモリ・マップ。
【図9】第9図 従来技術の第3の方法を示すメモリ・マップ。
【図10】第10図 従来技術の第5の方法を使用する典型的なコンピュータ・システムの構造を示すブロック図。
【図11】第11図 従来技術の第5の方法を使用するコンピュータ・システムの可能なメモリ編成を示すメモリ・マップ。
【図12】第12図 従来技術の第5の方法を示すメモリ・マップ。
【図13】第13図 本発明のプロテクト・モード実施例とマッピング実施例を示すメモリ・マップ。
【図14】第14図 本発明のプロテクト・モード実施例の初期設定ルーチンを示す流れ図。
【図15】第15図 本発明のプロテクト・モード実施例の初期設定ハンドラを示す流れ図。
【図16】第16図 本発明の初期設定ルーチンのマッピング実施例を示す流れ図。
【図17】第17図 本発明の初期設定ハンドラのマッピング実施例を示す流れ図。

Claims (8)

  1. コンピュータ・システム内の割り込みフラグ管理方法において:
    割り込みを処理するための命令の実行をモード・エミュレータによって検出し;
    前記コンピュータ・システムのスタックのスタック限界を前記モード・エミュレータによって調節し;
    スタックに関連した命令を前記コンピュータ内で実行して、前記スタック限界外の前記スタックにアクセスし;
    前記コンピュータ・システムにおいて、前記アクセスによって生じたスタック限界違反を検出し;
    前記違反を検出した場合に、割り込みフラグを修正する;
    ステップからなる前記方法。
  2. 前記命令が割り込み関連命令である特許請求の範囲第1項記載の方法。
  3. 前記スタックの限界をスタック・ポインタの現在の値に調節する特許請求の範囲第1項記載の方法。
  4. 前記割り込み関連命令が割り込みクリア命令(CLI)である特許請求の範囲第2項記載の方法。
  5. 前記割り込み関連命令が割り込み設定命令(STI)である特許請求の範囲第2項記載の方法。
  6. 前記スタック関連命令が前記スタックから複数個のスタック項目を取り出すポップ・フラグ(POPF)命令である特許請求の範囲第1項記載の方法。
  7. 前記スタック関連命令が前記スタックから複数個のスタック項目を取り出す割り込み戻し(IRET)命令である特許請求の範囲第1項記載の方法。
  8. 前記スタック関連命令の実行及び前記スタックの限界の違反が一般保護例外をもたらす特許請求の範囲第1項記載の方法。
JP2001150838A 1991-07-15 2001-05-21 割り込みフラグ管理方法 Expired - Fee Related JP3571667B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/730,244 US5237669A (en) 1991-07-15 1991-07-15 Memory management method
US730,244 1991-07-15

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP50293493A Division JP3268310B2 (ja) 1991-07-15 1992-07-15 メモリ管理方法

Publications (2)

Publication Number Publication Date
JP2002024003A JP2002024003A (ja) 2002-01-25
JP3571667B2 true JP3571667B2 (ja) 2004-09-29

Family

ID=24934552

Family Applications (2)

Application Number Title Priority Date Filing Date
JP50293493A Expired - Fee Related JP3268310B2 (ja) 1991-07-15 1992-07-15 メモリ管理方法
JP2001150838A Expired - Fee Related JP3571667B2 (ja) 1991-07-15 2001-05-21 割り込みフラグ管理方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP50293493A Expired - Fee Related JP3268310B2 (ja) 1991-07-15 1992-07-15 メモリ管理方法

Country Status (12)

Country Link
US (2) US5237669A (ja)
EP (1) EP0595880B1 (ja)
JP (2) JP3268310B2 (ja)
KR (1) KR0132696B1 (ja)
AT (1) ATE174137T1 (ja)
AU (1) AU2339592A (ja)
BR (1) BR9206286A (ja)
CA (1) CA2113565C (ja)
DE (1) DE69227774T2 (ja)
FI (1) FI940168A (ja)
NO (1) NO940148L (ja)
WO (1) WO1993002417A1 (ja)

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202994A (en) * 1990-01-31 1993-04-13 Hewlett-Packard Company System and method for shadowing and re-mapping reserved memory in a microcomputer
US5640507A (en) * 1992-03-02 1997-06-17 Microsoft Corporation Method and apparatus for identifying read only memory
US5404438A (en) * 1992-03-03 1995-04-04 Compaq Computer Corporation Method and apparatus for operating text mode software in a graphics mode environment
CA2091075A1 (en) * 1992-03-06 1993-09-07 Eric Straub Method and apparatus for storing dos program in high memory area
US5455919A (en) * 1992-11-03 1995-10-03 International Business Machines Corporation Installation and use of plural expanded memory managers
US5596755A (en) * 1992-11-03 1997-01-21 Microsoft Corporation Mechanism for using common code to handle hardware interrupts in multiple processor modes
US5371867A (en) * 1992-11-10 1994-12-06 International Business Machines Corporation Method of using small addresses to access any guest zone in a large memory
JPH0773046A (ja) * 1992-12-07 1995-03-17 Intel Corp コンピュータシステムで回路をエミュレートする 方法及び装置
US5835926A (en) * 1992-12-15 1998-11-10 Siemens Business Communication Systems, Inc. Multiple memory addressing using adjustable chip select
WO1994020905A1 (en) * 1993-03-09 1994-09-15 Novell, Inc. Method and apparatus for memory management
US5581270A (en) * 1993-06-24 1996-12-03 Nintendo Of America, Inc. Hotel-based video game and communication system
US6762733B2 (en) * 1993-06-24 2004-07-13 Nintendo Co. Ltd. Electronic entertainment and communication system
US5959596A (en) 1993-06-24 1999-09-28 Nintendo Co., Ltd. Airline-based video game and communications system
US6147696A (en) * 1993-06-24 2000-11-14 Nintendo Co. Ltd. Electronic entertainment and communication system
US5473777A (en) * 1993-07-19 1995-12-05 Moeller; Christopher P. Wrapper for enabling an object otented application to maintain virtual memory using procedural function calls
US6684261B1 (en) 1993-07-19 2004-01-27 Object Technology Licensing Corporation Object-oriented operating system
US5379432A (en) * 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
US5537597A (en) * 1993-09-27 1996-07-16 Intel Corporation Method and apparatus for supporting real mode card services clients with a protected mode card services implementation
US5526503A (en) * 1993-10-06 1996-06-11 Ast Research, Inc. Virtual addressing buffer circuit
US5517651A (en) * 1993-12-29 1996-05-14 Intel Corporation Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes
US5577221A (en) * 1994-04-14 1996-11-19 Industrial Technology Research Institute Method and device for expanding ROM capacity
JPH07302254A (ja) * 1994-05-06 1995-11-14 Mitsubishi Electric Corp マイクロコンピュータシステム
US5664139A (en) * 1994-05-16 1997-09-02 Compaq Computer Corporation Method and a computer system for allocating and mapping frame buffers into expanded memory
US5699542A (en) * 1994-09-30 1997-12-16 Intel Corporation Address space manipulation in a processor
AUPN105495A0 (en) * 1995-02-10 1995-03-09 Aristocrat Leisure Industries Pty Ltd Dram emulator
WO1996038784A1 (en) * 1995-06-02 1996-12-05 Systemsoft Corporation Digital data processing method and apparatus for peripheral device control
US5829012A (en) * 1996-04-19 1998-10-27 Unisys Corporation System for programmably providing modified read signals within a ROM-based memory
US6081664A (en) * 1996-09-30 2000-06-27 Intel Corporation Method for monitoring a BIOS
US5940850A (en) * 1996-10-31 1999-08-17 International Business Machines Corporation System and method for selectively enabling load-on-write of dynamic ROM data to RAM
US5983310A (en) 1997-02-13 1999-11-09 Novell, Inc. Pin management of accelerator for interpretive environments
JP3011120B2 (ja) * 1997-02-13 2000-02-21 日本電気株式会社 レイアウト情報生成装置及びレイアウト情報生成方法
US5987581A (en) * 1997-04-02 1999-11-16 Intel Corporation Configurable address line inverter for remapping memory
US5978882A (en) * 1997-04-25 1999-11-02 Novell, Inc. Real-mode, 32-bit, flat-model execution apparatus and method
US7441254B1 (en) 1997-07-09 2008-10-21 International Business Machines Corporation Simulation of memory-mapped I/O
US6018332A (en) * 1997-11-21 2000-01-25 Ark Interface Ii, Inc. Overscan user interface
US6686936B1 (en) 1997-11-21 2004-02-03 Xsides Corporation Alternate display content controller
US6337717B1 (en) 1997-11-21 2002-01-08 Xsides Corporation Alternate display content controller
US6330010B1 (en) * 1997-11-21 2001-12-11 Xsides Corporation Secondary user interface
US6639613B1 (en) * 1997-11-21 2003-10-28 Xsides Corporation Alternate display content controller
US7024512B1 (en) * 1998-02-10 2006-04-04 International Business Machines Corporation Compression store free-space management
US6578193B1 (en) 1998-03-24 2003-06-10 Novell, Inc. Endian-neutral loader for interpretive environment
US6356996B1 (en) 1998-03-24 2002-03-12 Novell, Inc. Cache fencing for interpretive environments
US6141732A (en) * 1998-03-24 2000-10-31 Novell, Inc. Burst-loading of instructions into processor cache by execution of linked jump instructions embedded in cache line size blocks
JP2995030B2 (ja) * 1998-03-31 1999-12-27 三洋電機株式会社 コンピュータシステム、並びにコンピュータシステムにおけるプログラム及びデータの修正方法
US6637023B1 (en) * 1999-03-03 2003-10-21 Microsoft Corporation Method and system for updating read-only software modules
US6590592B1 (en) 1999-04-23 2003-07-08 Xsides Corporation Parallel interface
AU5276800A (en) 1999-05-21 2000-12-12 Xsides Corporation Parallel graphical user interface
US6282647B1 (en) * 1999-06-02 2001-08-28 Adaptec, Inc. Method for flashing a read only memory (ROM) chip of a host adapter with updated option ROM bios code
US6543006B1 (en) * 1999-08-31 2003-04-01 Autodesk, Inc. Method and apparatus for automatic undo support
US6630943B1 (en) 1999-09-21 2003-10-07 Xsides Corporation Method and system for controlling a complementary user interface on a display surface
US20040226041A1 (en) * 2000-02-18 2004-11-11 Xsides Corporation System and method for parallel data display of multiple executing environments
US6892359B1 (en) 2000-02-18 2005-05-10 Xside Corporation Method and system for controlling a complementary user interface on a display surface
US7539828B2 (en) * 2000-08-08 2009-05-26 Faronics Corporation Method and system for automatically preserving persistent storage
US6884171B2 (en) * 2000-09-18 2005-04-26 Nintendo Co., Ltd. Video game distribution network
US7058177B1 (en) 2000-11-28 2006-06-06 Xilinx, Inc. Partially encrypted bitstream method
US7818808B1 (en) * 2000-12-27 2010-10-19 Intel Corporation Processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor
US6834384B2 (en) * 2001-03-14 2004-12-21 General Instrument Corporation Methods and apparatus for upgrading firmware in an embedded system
US6938111B2 (en) * 2002-04-19 2005-08-30 Siemens Aktiengesellschaft Method for operating automation control equipment applications
US7171546B2 (en) * 2002-05-23 2007-01-30 Adams Phillip M CPU life-extension apparatus and method
US7305680B2 (en) * 2002-08-13 2007-12-04 Sharp Laboratories Of America, Inc. Listening module for asynchronous messages sent between electronic devices of a distributed network
US7134006B2 (en) * 2003-06-03 2006-11-07 Gateway Inc. Method and system for changing software access level within or outside a host protected area
US7451267B1 (en) * 2003-09-23 2008-11-11 Netlogic Microsystems, Inc. Method and apparatus for learn and related operations in network search engine
US7403936B2 (en) * 2004-03-05 2008-07-22 Siemens Medical Solutions Usa, Inc. Optimizing database access for record linkage by tiling the space of record pairs
US7495558B2 (en) 2004-04-27 2009-02-24 Infratab, Inc. Shelf-life monitoring sensor-transponder system
US7764183B2 (en) * 2005-04-22 2010-07-27 Infratab, Inc. Apparatus and method for monitoring and communicating data associated with a product
US7380095B2 (en) * 2004-06-30 2008-05-27 Intel Corporation System and method for simulating real-mode memory access with access to extended memory
US7840962B2 (en) 2004-09-30 2010-11-23 Intel Corporation System and method for controlling switching between VMM and VM using enabling value of VMM timer indicator and VMM timer value having a specified time
US7738484B2 (en) * 2004-12-13 2010-06-15 Intel Corporation Method, system, and apparatus for system level initialization
US7734741B2 (en) * 2004-12-13 2010-06-08 Intel Corporation Method, system, and apparatus for dynamic reconfiguration of resources
CN100561446C (zh) * 2004-12-31 2009-11-18 北京中星微电子有限公司 通过间接寻址扩展存储空间的存取方法及其存取装置
US20080126590A1 (en) * 2006-06-29 2008-05-29 Rothman Michael A Semiconductor based host protected addressing in computing devices
US8032687B2 (en) * 2009-02-12 2011-10-04 Unisys Corporation Method, system, and apparatus for supporting limited address mode memory access
JP2011003072A (ja) * 2009-06-19 2011-01-06 Toshiba Corp マルチコアプロセッサシステム
US9128625B1 (en) * 2012-03-26 2015-09-08 Emc Corporation Method and system for physical memory reservation for user-space programs
WO2014059048A1 (en) 2012-10-09 2014-04-17 Infratab, Inc. Inference electronic shelf life dating system for perishables
KR102511363B1 (ko) * 2016-02-04 2023-03-17 삼성전자주식회사 디스플레이 장치 및 디스플레이 방법
US11307779B2 (en) * 2019-09-11 2022-04-19 Ceremorphic, Inc. System and method for flash and RAM allocation for reduced power consumption in a processor
US20240152463A1 (en) * 2022-11-09 2024-05-09 Andes Technology Corporation Configurable memory system and memory managing method thereof
CN116820785B (zh) * 2023-08-30 2024-01-02 紫光同芯微电子有限公司 用于管理内存的方法及装置、资源受限设备、存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4141068A (en) * 1977-03-24 1979-02-20 Xerox Corporation Auxiliary ROM memory system
US4442484A (en) * 1980-10-14 1984-04-10 Intel Corporation Microprocessor memory management and protection mechanism
US4386773A (en) * 1981-06-22 1983-06-07 Bronstein John M TV Game cartridge with expandable memory
JPS6068441A (ja) * 1983-09-22 1985-04-19 Fujitsu Ltd ワンチツプ・マイクロ・コンピユ−タ
US5027273A (en) * 1985-04-10 1991-06-25 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4761736A (en) * 1986-01-02 1988-08-02 Commodore Business Machines, Inc. Memory management unit for addressing an expanded memory in groups of non-contiguous blocks
US5109521A (en) * 1986-09-08 1992-04-28 Compaq Computer Corporation System for relocating dynamic memory address space having received microprocessor program steps from non-volatile memory to address space of non-volatile memory
US4831522A (en) * 1987-02-17 1989-05-16 Microlytics, Inc. Circuit and method for page addressing read only memory
US4928237A (en) * 1987-03-27 1990-05-22 International Business Machines Corp. Computer system having mode independent addressing
US4926322A (en) * 1987-08-03 1990-05-15 Compag Computer Corporation Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management
US5091850A (en) * 1987-09-28 1992-02-25 Compaq Computer Corporation System for fast selection of non-cacheable address ranges using programmed array logic
JP3046310B2 (ja) * 1988-09-13 2000-05-29 株式会社東芝 メモリシステム
US5125087A (en) * 1988-11-07 1992-06-23 Microsoft Corporation Method of resetting sequence of access to extended memory disrupted by interrupt processing in 80286 compatible system using code segment register
US5083259A (en) * 1988-12-07 1992-01-21 Xycom, Inc. Computer bus interconnection device
US5123098A (en) * 1989-02-28 1992-06-16 Hewlett-Packard Company Method for executing programs within expanded memory of a computer system using MS or PC DOS
US4985871A (en) * 1989-11-13 1991-01-15 Chips And Technologies, Inc. Memory controller for using reserved dram addresses for expanded memory space

Also Published As

Publication number Publication date
JP3268310B2 (ja) 2002-03-25
AU2339592A (en) 1993-02-23
DE69227774T2 (de) 1999-07-22
US5367658A (en) 1994-11-22
CA2113565C (en) 1998-05-05
ATE174137T1 (de) 1998-12-15
US5237669A (en) 1993-08-17
KR0132696B1 (ko) 1998-04-24
FI940168A (fi) 1994-03-04
EP0595880B1 (en) 1998-12-02
BR9206286A (pt) 1994-11-08
NO940148L (no) 1994-03-14
JP2002024003A (ja) 2002-01-25
WO1993002417A1 (en) 1993-02-04
EP0595880A1 (en) 1994-05-11
EP0595880A4 (en) 1997-07-02
CA2113565A1 (en) 1993-01-16
DE69227774D1 (de) 1999-01-14
JPH06508952A (ja) 1994-10-06
FI940168A0 (fi) 1994-01-13
NO940148D0 (no) 1994-01-14

Similar Documents

Publication Publication Date Title
JP3571667B2 (ja) 割り込みフラグ管理方法
CA1304166C (en) Software emulation of bank-switched memory using a virtual dos monitorand paged memory management
US7120778B2 (en) Option ROM virtualization
US8127098B1 (en) Virtualization of real mode execution
US7376949B2 (en) Resource allocation and protection in a multi-virtual environment
EP0288606B1 (en) Computer system employing a cpu having two mutually incompatible addressing modes
US7330942B2 (en) Method for efficient virtualization of physical memory in a virtual-machine monitor
US5561788A (en) Method and system for executing programs using memory wrap in a multi-mode microprocessor
KR101174583B1 (ko) 변환 예외 한정자를 갖는 동적 어드레스 변환
US20040064668A1 (en) Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching
WO2006012007A1 (en) A system and method for simulating real-mode memory access with access to extended memory
KR20080089002A (ko) 메모리 접근 제어 방법
JPS6248258B2 (ja)
US5875487A (en) System and method for providing efficient shared memory in a virtual memory system
US5175830A (en) Method for executing overlays in an expanded memory data processing system
JP2021512400A (ja) メモリ・アクセスにおける保護タグ・チェックの制御
US20040122834A1 (en) Apparatus and method for switching mode in a computer system
US5940869A (en) System and method for providing shared memory using shared virtual segment identification in a computer system
GB2302604A (en) Data memory allocation
US8091090B2 (en) Method for providing scratch registers for use by a virtual-machine monitor
JPH06332803A (ja) 仮想計算機システムにおけるtlb制御方法
JPH10293684A (ja) コンピュータシステムおよびその立ち上げ制御方法
JP6708860B2 (ja) 仮想アドレス空間レガシーエミュレーションシステムにおける保護キー管理およびプレフィックス変換
CN111527480A (zh) 数据处理装置中的地址转换

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040430

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040525

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040624

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070702

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080702

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080702

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090702

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100702

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110702

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees