JP4354583B2 - アクセス方法及びアクセス処理プログラムを記録した記録媒体 - Google Patents
アクセス方法及びアクセス処理プログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP4354583B2 JP4354583B2 JP25527299A JP25527299A JP4354583B2 JP 4354583 B2 JP4354583 B2 JP 4354583B2 JP 25527299 A JP25527299 A JP 25527299A JP 25527299 A JP25527299 A JP 25527299A JP 4354583 B2 JP4354583 B2 JP 4354583B2
- Authority
- JP
- Japan
- Prior art keywords
- interface
- input
- output device
- address
- register
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/206—Memory mapped I/O
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、アクセス方法及びアクセス処理プログラムを記録した記録媒体に係り、特に、仮想化されたマルチコンテクスト環境におけるユーザレベル入出力アクセス方法及びアクセス処理プログラムを記録した記録媒体に関する。
【0002】
【従来の技術】
図6に、従来方式1のシステムの説明図を示す。この図では、従来のカーネルアドレス空間にマップされたシステムの説明図を示す。
【0003】
従来方式1では、図示のように、入出力装置(I/O装置)(I/O device)の制御用レジスタは、汎用オペレーティングシステム(OS)の下では、カーネル(kernel)モードでしかアクセスできないようにすることにより、ユーザアプリケーションによる不正な操作を防止している。物理アドレス空間(physical address space)は、カーネルアドレス空間(kernel address space)とユーザアドレス空間(user address space)とに分かれる。I/O装置は、カーネルアドレス空間のI/O装置に対応するエントリがアクセスされた場合のみ、I/O装置を使用することができる。そして、ユーザアプリケーションとしてのプロセスAが、I/O装置を使用したい場合には、OSのシステムコール(system call)を通じて操作要求を出す。つぎに、OSが、カーネルモードにおいて操作要求の正当性をチェックした後、具体的な操作をI/O装置内の制御レジスタに施す。
【0004】
また、最近では、ユーザアプリケーションのアドレス空間にI/O装置の制御レジスタをマップして、ユーザアプリケーション(ユーザプロセス)が直接制御レジスタをアクセスし、入出力操作のオーバヘッドを減らす方式も使われるようになってきている。図7に、従来方式2のシステムの説明図を示す。この図では、ユーザアドレス空間にマップされたシステムの構成図の一例を示す。この従来方式2では、プロセスAが、物理アドレス空間にあるI/O装置用ページ(page for I/0)を、ユーザアドレス空間にマッピングしている。I/O装置用ページにより、I/O装置の制御レジスタを使用することができる。
【0005】
つぎに、図8に、従来方式3のシステムの説明図を示す。この図は、ユーザアドレス空間から操作要求をダイレクトメモリアクセス(DMA)するシステムの一例を示す。従来方式1におけるシステムコールのオーバヘッドを排除又は小さくするためには、ユーザアドレス空間にI/O装置に関する制御情報をマップする必要がある。従来方式3においても、この点では従来方式2と同じである。ただし、単にI/O装置の制御レジスタをユーザアドレス空間にマップしたのでは、複数のユーザアプリケーションからアクセスされた場合に、混乱が生じてしまう。これを解決するためには、I/O装置に対する要求内容をメモリ上にまとめておいて、I/O装置側に要求内容を読み出して制御レジスタにセットしてもらうようにすればよい。つまり、I/O装置側がDMAによって制御レジスタの内容を更新する。そして、一つの要求内容が終る(区切りがつく)までは、次の要求内容の処理を開始しないようにI/O装置が動作すれば動作の混乱も起こらない。また、汎用OSの下でメモリ資源は保護されているので、アプリケーション間で要求内容を書き潰したりする心配はない。
【0006】
ここで重要になるのは、どうやってI/O装置に要求内容が書かれているメモリの場所を指示するかである。そこで、従来方式3では、要求内容を示すメモリの場所を示すポインタを記憶したコンテクストレジスタ(context register)をI/O装置内に持たせる。コンテクストレジスタは、例えば、どのプロセス・タスクがホストプロセッサで実行されているかを示すレジスタである。OSは、どのユーザのタスク(プロセス)が実行しているかを把握している。そして、OSは、実行されているプロセスに応じて、コンテクストレジスタを書き換えることができる。プロセッサにあるアプリケーション(例えば、プロセスA)が割り当てられる場合には、該当アプリケーションの要求内容の格納場所をコンテクストレジスタにセットする。
【0007】
また、各アプリケーションによるユーザアドレス空間には、要求内容を登録したことを知らせるペンディングレジスタ(ペンディングレジスタ)をマップする。ペンディングレジスタは、例えば、いずれかのプロセスがI/O装置をアクセスしたことを示すフラグである。プロセスA用ページ(page for A)には、要求(requests)が記憶される。要求の内容は、例えば、I/O指令であり、I/O装置がプリンタであれば、印刷指令、改ページ指令等であり、入出力装置であれば、どの装置に出力又は入力するかの指令等である。また、従来方式3では、I/O装置はペンディングレジスタがアクセスされると、コンテクストレジスタの(ポインタの)示すメモリ位置から該当する要求内容を取り出して(DMAして)、実行する。
【0008】
【発明が解決しようとする課題】
しかしながら、従来方式1は、ユーザアプリケーションが入出力操作をする必要がある毎に、システムコールを含む一連のカーネルプログラムを呼び出す必要があり、オーバヘッドが大きくなるという課題がある。
【0009】
このため、従来方式2が提案されたものの、この従来方式2では、同時に複数のアプリケーションが該当I/O装置を使うことができない。この例では、プロセスAがI/O装置を使用している場合に、プロセスBがI/O装置を使用することができない。また、一つのアプリケーションが自分の都合だけでI/O装置の制御レジスタの内容を変更してしまうので、複数のアプリケーションが時分割で制御レジスタを操作すると、制御レジスタの操作の一貫性が崩れてしまう。よって、この従来方式2ではI/O資源を排他的に一つのアプリケーションに割り当てて使用する必要がある。
【0010】
そこで、従来方式1のシステムコールのオーバヘッドの課題、及び、従来方式2の割り当ての課題を解決する方式として従来方式3が提案された。しかしながら、従来方式3において、I/O装置内のコンテクストレジスタは、プロセッサコンテクストの一部となり、OSがコンテクスト切替を行う毎に、プロセッサに割り当てられたアプリケーションの要求内容格納場所に更新する必要がある。コンテクスト切替は、OSの根幹に関わる動作の一つであるため、既存のOSに対してプロセッサコンテクストを拡張する改造を施すことは難しい。ましてや、デバイスドライバの追加等では、プロセッサコンテクストは拡張できない。また、I/O装置が接続される計算機がマルチプロセッサ構成である場合にはコンテクストレジスタはプロセッサ台数と同じだけ必要であり、ペンディングレジスタへのアクセスがどのプロセッサからのアクセスであるか識別可能である必要がある。I/O装置の制御回路がLSI化される場合には、マルチプロセッサ対応を考慮すると、多くのコンテクストレジスタを用意しておく必要があり、通常の単体プロセッサもしくは少数台の並列システムでは無駄なコストになってしまう。
【0011】
このように、従来行われているユーザレベルによるI/O装置へのアクセス方式はそれぞれ課題を抱えている。また、例えば、上述のように、通信およびI/O装置へのユーザレベルのアクセスを高速化するためにユーザメモリ空間に通信や入出力操作のためのレジスタをマップする手法が行われている。しかし、従来の方式では同時に複数のアプリケーションが使用することができなかった。
【0012】
本発明は、以上の点に鑑み、メモリ管理機構を流用することにより、複数のアプリケーションが同時に低コストで通信および入出力操作、インタフェース操作を可能とするアクセス方法及びアクセス処理プログラムを記録した記録媒体を提供する。
【0013】
【課題を解決するための手段】
本発明の特徴のひとつは、ページ単位のメモリエイリアス(物理的に同一の対象に複数のアドレスが割り当てられた状態)を故意に起こして、どのエイリアスアドレスからアクセスされたか検知する機構によってアクセスしたアプリケーションを同定することにある。メモリはページ単位に管理されているので、アプリケーションごとに別のエイリアスを割り当てることによって、他のエイリアスアドレスをアクセスするような不正な行動は行えない。及びアクセス処理プログラムを記録した記録媒体を提供する。
【0014】
本発明の解決手段によると、
プロセスが、入出力装置又はインタフェースのオープン処理をオペレーティングシステムに要求するステップと、
オペレーティングシステムが、前記プロセスの要求格納領域を示し、且つ、入出力装置又はインタフェースを使用するプロセスを示すためのコンテクスト識別子を割り当てるステップと、
前記プロセスが、要求格納領域へ入出力装置又はインタフェースへの要求内容を記述するステップと、
オペレーティングシステムが、入出力装置又はインタフェース内の内蔵メモリに、各プロセスのコンテキスト識別子に対応する要求格納領域のアドレスを記憶するステップと、
入出力装置又はインタフェースが、先入れ先出しメモリで構成されるペンディングレジスタに記憶されたコンテクスト識別子に基づき、前記内蔵メモリから求めた要求格納領域に従い、前記プロセスの要求内容を読み出すステップ
を含むアクセス処理方法、及び、各ステップをコンピュータに実行させるためのアクセス処理プログラムを記録した記録媒体であって、
入出力装置又はインタフェースを指定する物理アドレスは、入出力装置又はインタフェースのペンディングレジスタの位置を示す固有アドレスであるファンクションセレクトと、入出力装置又はインタフェースを使用するプロセスを示すコンテクスト識別子とを含み、
アドレスデコーダは、前記物理アドレス内の前記コンテクスト識別子をデコードに使用せず、前記ファンクションセレクトをデコードに使用することにより、入出力装置又はインタフェースのペンディングレジスタを選択するとともに、前記物理アドレス内の前記コンテクスト識別子をペンディングレジスタに記憶することにより、
ペンディングレジスタへのアクセスをペンディングレジスタを構成する先入れ先出しメモリにバッファリングすることにより、プロセスが異なれば、コンテクスト識別子が異なった前記物理アドレスで、同一のファンクションセレクトに基づき同一の入出力装置又はインタフェースのペンディングレジスタへアクセスし、入出力装置又はインタフェースは、ペンディングレジスタに記憶された異なるコンテクスト識別子に基づき、異なる要求内容を読み出すことを特徴とする、
アクセス方法及びアクセス処理プログラムを記録した記録媒体を提供する。
【0015】
【発明の実施の形態】
本発明では、上述の課題を解決する新しいユーザレベルによるI/O装置へのアクセス方法を提供する。
【0016】
従来方式3において、入出力処理されていない要求がメモリ上にあることを示すペンディングレジスタへのアクセスが、どのアプリケーションによってなされたかを、I/O装置側が識別できれば、要求内容が格納されたメモリアドレスを求める方法が構成できる。極論すれば、コンテクストレジスタとペンディングレジスタの対が十分な数だけあり、アプリケーション空間ごとに一つのペンディングレジスタがマップされていれば、アクセスされたペンディングレジスタに対応したコンテクストレジスタの内容を使って、要求を読み出すアドレスを決定できる。この場合においてコンテクストレジスタをレジスタとして実装する必要はなく、I/O装置内のメモリ上の領域等で十分代用できる。アクセスされたペンディングレジスタの位置からメモリ上のコンテクストレジスタの位置を計算すればよい。コンテクストレジスタがI/O装置内のメモリ上の領域として実装可能であるなら、さらに、ペンディングレジスタの数を一つないしは少数に抑えることが可能になると、非常に低コストかつオーバヘッドのないI/O装置へのユーザレベルアクセス方法となる。
【0017】
本発明では、ペンディングレジスタの実体は一つだけ用意するが、そこへのアドレスのエイリアスを複数用意し、どのエイリアスからアクセスされたか判る機構を用意することにより、ペンディングレジスタにアクセスしたアプリケーション(プロセッサコンテクスト)を同定する。以下に、本発明の実施の形態について、具体例を示して説明する。
【0018】
図1に、本発明に関連するシステム構成図の一例を示す。
図1は、例えば、標準的な構成のワークステーションもしくはパーソナルコンピュータを利用して、ユーザレベルにおいて低オーバヘッドでI/O装置をアクセスする方式を実現するためのシステムである。
【0019】
このシステムは、I/O装置(A)1−1及びI/O装置(B)1−2、プロセッサ2、キャッシュ3、システムLSI4、メインメモリ5、I/Oバス6を備える。I/O装置(A)1−1及びI/O装置(B)1−2は、内部に未処理の要求が登録されていることを示すペンディングレジスタを備える。このペンディングレジスタは、メモリ空間にマップ(メモリマップ)されていて、プロセッサからアクセスされる(詳細は、後述する。)。プロセッサ2は、キャッシュ3と協調して、OSに従い各種処理を実行する。キャッシュ3は、処理の高速化のために、プログラムやデータをコピーしておく高速メモリである。システムLSI4は、I/O装置(A)1−1及びI/O装置(B)1−2、プロセッサ2、メインメモリ5の相互の間で、データの送受を制御する。メインメモリ5は、オペレーティングシステム(OS)、アプリケーションとしての各種プロセス、物理アドレス空間等のプログラム及びデータ等を記憶する。また、I/Oバス6は、拡張バスとして構成することができる。
【0020】
つぎに、図2に、本発明に係るアクセス方法の説明図を示す。この図は、ペンディングレジスタのアドレスマップについて示したものである。
【0021】
この例では、プロセス(process)A〜C210〜212、物理アドレス空間(physical address space)22、I/O装置1(I/O device)が示される。I/O装置1は、ペンディングレジスタ(pending register)23、DMAエンジン(DMA engine)24、要求実行用のレジスタ(register)25、内蔵メモリ26を備える。また、プロセスA〜C用ページ270〜272(例えば、page for A,B)及びプロセスA〜C用、メモリページ280〜282(page 0〜2)が物理アドレス空間に用意され、各プロセスによる要求(requests)が要求格納領域290〜292に記憶される。
【0022】
図3に、本発明に係るアクセス方法のOS及びプロセスについてのフローチャ−トを示す。また、図4に、本発明に係るアクセス方法のI/O装置についてのフローチャ−トを示す。以下、図2〜図4を参照して、本発明のアクセス方法について説明する。
【0023】
まず、図2及び図3のフローチャートに基づき、OS及びプロセス側に関する処理について説明する。
OSはプロセスを管理しているので、プロセスA〜Cの存在をプロセスが作成された時から把握している。オープン処理によってわかることは、オープン処理をOSに要求したプロセスが、今後I/O装置1を使用しようとしていることである。まず、プロセスから見たI/O装置を使用するための処理が以下のように実行される。
【0024】
ステップS101では、あるプロセス(例えば、プロセスA210)がI/O装置1のオープン処理をOSに要求する。このとき、プロセスは自分のI/O装置1への要求を置く領域をOSに指示する。つぎに、ステップS102では、第1に、OSはオープン処理の中で、プロセスA210に対して使っていないI/O装置1用のコンテクストID(context-ID)(例えば、ID=0)を割り当て、そのIDに該当するメモリページ280(page 0)をプロセスA210用のペンディングレジスタ23アクセス用のアドレスとしてマップする。マップした論理アドレスはオープン処理の結果としてプロセスA210にOSから通知される。また、ステップS102では、第2に、OSが、オープン処理の中で、 I/O装置1内の内蔵メモリ26にプロセスA210の要求格納領域290へのポインタ(物理アドレス)を記憶する。記憶するアドレスはプロセスA210に割り当てたコンテクストIDから容易に計算可能な場所にする。つまり、コンテクストIDから要求格納領域へのポインタが取り出せる表が、内蔵メモリ上に形成される。
【0025】
ステップS103では、プロセスA210は自分の要求格納領域290へI/O装置1への要求内容を記述する。ステップS104では、要求内容の記述後、OSは、オープン処理で割り当てられたペンディングレジスタ23用のアドレスを使って、未処理の要求があることをI/O装置に伝える。具体的にはペンディングレジスタ23のアドレスに対してアクセスする。ステップS105では、I/O装置が要求格納領域290から要求を読み出す。ステップS106により、プロセスA210がI/O装置1に対して再び要求がある場合は、ステップS103及びS104を繰り返す。ステップS107では、プロセスAがI/O装置1のクローズ処理をOSに要求した場合、又はプロセスA210が終了した場合等には、OSはプロセスA210に割り当てたアドレスを回収すると共に、I/O装置用のコンテクストIDの回収(空きIDとして記憶)及び内蔵メモリ26上のプロセスA210の要求格納領域290へのポインタのエントリをクリアする。
【0026】
つぎに、図2及び図4のフローチャートに基づき、I/O装置側に関する処理について説明する。I/O装置側から見ると、以下のように処理が実行される。
【0027】
ステップS201では、ペンディングレジスタ23にアクセスがあったことが、先入れ先出しメモリ(FIFO)出力からわかる。ステップS202では、FIFO出力にはコンテクストIDが含まれており、内蔵メモリ26上の表を参照することにより、ペンディングレジスタをアクセスしたプロセスA210の要求格納領域290の物理アドレスがわかる。ステップS203では、DNA エンジン24により要求格納領域290の内容を読み出して、内容に沿って内部レジスタ25を制御して、要求を実現する。ステップS204により、例えば、電源断まで、この動作をI/O装置は繰り返す。
【0028】
プロセスBもプロセスCもまったく同様にしてI/O装置1を使用する。ここで、ステップS103、S104においてOSを一切介していないことがオーバヘッド低減の観点で重要である。たとえ、ホストプロセッサで動いているプロセスが時分割で切り替わっても、コンテクストIDを含むペンディングレジスタへのアドレスを使うことによって、一意に要求しているプロセスがわかるので、プロセス切替え時にOSは一切付加的な動作が必要ないことになる。なお、従来方式3ではコンテクストレジスタを切替える必要があった。
【0029】
つぎに、図5に、ペンディングレジスタに記憶する機構の説明図を示す。
図5の一番上のメモリ構造は、I/O装置を指定する物理アドレス51を示す。
ここでは、一例として、36bit構成で0〜11ビットにページオフセット(Page Offset)としてのファンクションセレクト(Function Select)、12〜19ビットにプロセスのためのコンテクストID(Context-ID)、20〜35ビットにファンクションセレクト(Function Select)の各領域を含む。また、図のように、ページオフセット(大抵のプロセッサでは12bitか13bit)より上位の部分に、コンテクストIDを示すフィールドを用意する(図では8bit)。ただし、コンテクストIDのフィールドは、アドレスデコードに使用されず、ペンディングレジスタのアドレスデコードに使用され得るのはコンテクストIDよりも上位のフィールドとページオフセットの部分である。ファンクションセレクト領域は、ぺンディングレジスタの位置を示す。
【0030】
ファンクションセレクトは上位アドレスに関しては必ずデコードする(一意に決める)必要があり、一方、下位アドレス(オフセット部分)は、必ずしもデコードされなくても良い。オフセット部分をデコード対象とならないようにした場合、オフセット部分がどんなパターンになっていても上位アドレスのみによりペンディングレジスタにアクセスすることになる。なお、ページ単位でしかプロセスにアドレスを割り当てることはできないので、オフセット部のデコードを省略しても他のプロセスには影響がでない。逆に省略しないと、ペンディングレジスタ以外のレジスタやメモリをペンディングレジスタと同一のページ内に割り当てることができる。この場合、ページオフセット部分のビットパターンが違うアドレスが使われる。
【0031】
また、コンテクストID領域は、I/O装置を使用するプロセス(例えば、プロセスA〜Cのいずれか)を示す。コンテクストID領域が8ビットであれば、同時に256のプロセスがI/O装置の使用を要求(オープン)していても対応することができる。
【0032】
ペンディングレジスタ用のアドレスデコーダ52は、物理アドレス51のファンクションセレクト領域にペンディングレジスタの場所を表す固有アドレスが記憶されている場合、ペンディングレジスタを選択するとともに、物理アドレス51のコンテクストIDをペンディングレジスタ53に記憶する。また、必要に応じて、ペンディングレジスタ53に、プロセス識別子に対応してデータ54を記憶することができる。データ54は、例えば、プロセッサ、メインメモリ、インタフェース等から与えられることができる(例えば、ストア・スワップアクセス時)。ペンディングレジスタ53の出力55には、コンテクストIDが含まれ、場合によってはデータもそれに対応して含まれる。
【0033】
各アプリケーションは、特定のコンテクストIDを割り当てられ、そのIDに従ったページのみをマップする。つまり、アプリケーションが異なれば、コンテクストIDの部分が異なったアドレスで同一のペンディングレジスタへアクセスすることになる。I/O装置側にアクセスされるたびにコンテクストID部分を保持して解釈する能力があれば、どのアプリケーションがペンディングレジスタへアクセスしたか明らかにすることができる。ペンディングレジスタへのアクセスは、ユーザアプリケーションによるアクセスであり、実行されるタイミングに制約がない。I/O装置の動作とペンディングレジスタによる新規要求の受け付けは同期されないと入出力処理が行えなくなる。このため、ペンディングレジスタ53へのアクセスをそれを構成するFIFOにバッファリングしてやる必要がある。このときにアクセス内容(書き込みなら「書き込み」であるという情報と「書き込みデータ」)のみではなく、コンテクストIDも同時にバッファリングする。コンテクストIDから適当な処理によってアプリケーションの要求内容を格納しているアドレス空間とアドレスを求めて、I/O装置が要求内容を読み出し、入出力処理を行う。
【0034】
FIFOバッファの溢れに関しては、以下のように、返り値もしくは割り込みで対処することができる。
・返り値で対処する場合は、「書き込みデータ」が不要であれば、load(メモリ読み出し)命令によってペンディングレジスタをアクセスし、FIFOバッファが溢れている場合には返り値としてエラーコード(例えば-1)を返す。ユーザアプリケーションは、返り値を見て、成功するまでアクセスを繰り返す。「書き込みデータ」が必要であれば、swap(不可分読み書き)命令によってを返り値を受け取りつつ、データをI/O装置1に受け渡す。
・I/O装置用の拡張バスを介したload命令やswap命令は、store命令と比べるとプロセッサにとって実行時間が長くコストが高い。そこで、割り込みで対処する場合は、store命令によってペンディングレジスタへアクセス可能にするためには、FIFOバッファ溢れを割り込みによって検出する。FIFOバッファの容量が十分にあり、I/O装置1の能力が飽和していなければ、FIFOバッファ溢れは発生しない。FIFOバッファ溢れが発生した場合には、処理コストが少しぐらい掛かってもやむを得ないと考えて、割り込みを発生させてペンディングレジスタへアクセスに失敗したアプリケーションやアクセス内容をOSによって保管しておき、I/O装置に登録可能になった時点で処理する。
【0035】
なお、本発明に係るアクセス方法は、I/O装置に限らず、適宜のインタフェースのアクセスに適用することができる。また、本発明に係るアクセス方法は、アクセス処理プログラムとして、CD-ROM等の記録媒体又はインタネット等の伝送媒体により提供されることができる。
【0036】
【発明の効果】
本発明によると、以上のように、メモリ管理機構を流用することにより、複数のアプリケーションが同時に低コストで通信および入出力操作、インタフェース操作を可能とするアクセス方法及びアクセス処理プログラムを記録した記録媒体を提供することができる。
【図面の簡単な説明】
【図1】本発明に関連するシステム構成図。
【図2】本発明に係るアクセス方法の説明図。
【図3】本発明に係るアクセス方法のOS及びプロセスについてのフローチャ−ト。
【図4】本発明に係るアクセス方法のI/O装置についてのフローチャ−ト。
【図5】ペンディングレジスタに記憶する機構の説明図。
【図6】従来方式1のシステムの説明図。
【図7】従来方式2のシステムの説明図。
【図8】従来方式3のシステムの説明図。
【符号の説明】
1 I/O装置
2 プロセッサ
3 キャッシュ
4 システムLSI
5 メインメモリ5
6 I/Oバス
Claims (7)
- プロセスが、入出力装置又はインタフェースのオープン処理をオペレーティングシステムに要求するステップと、
オペレーティングシステムが、前記プロセスの要求格納領域を示し、且つ、入出力装置又はインタフェースを使用するプロセスを示すためのコンテクスト識別子を割り当てるステップと、
前記プロセスが、要求格納領域へ入出力装置又はインタフェースへの要求内容を記述するステップと、
オペレーティングシステムが、入出力装置又はインタフェース内の内蔵メモリに、各プロセスのコンテキスト識別子に対応する要求格納領域のアドレスを記憶するステップと、
入出力装置又はインタフェースが、先入れ先出しメモリで構成されるペンディングレジスタに記憶されたコンテクスト識別子に基づき、前記内蔵メモリから求めた要求格納領域に従い、前記プロセスの要求内容を読み出すステップ
を含み、
入出力装置又はインタフェースを指定する物理アドレスは、入出力装置又はインタフェースのペンディングレジスタの位置を示す固有アドレスであるファンクションセレクトと、入出力装置又はインタフェースを使用するプロセスを示すコンテクスト識別子とを含み、
アドレスデコーダは、前記物理アドレス内の前記コンテクスト識別子をデコードに使用せず、前記ファンクションセレクトをデコードに使用することにより、入出力装置又はインタフェースのペンディングレジスタを選択するとともに、前記物理アドレス内の前記コンテクスト識別子をペンディングレジスタに記憶することにより、
ペンディングレジスタへのアクセスをペンディングレジスタを構成する先入れ先出しメモリにバッファリングすることにより、プロセスが異なれば、コンテクスト識別子が異なった前記物理アドレスで、同一のファンクションセレクトに基づき同一の入出力装置又はインタフェースのペンディングレジスタへアクセスし、入出力装置又はインタフェースは、ペンディングレジスタに記憶された異なるコンテクスト識別子に基づき、異なる要求内容を読み出すことを特徴とするアクセス方法。 - 入出力装置又はインタフェースは、ペンディングレジスタにアクセスがあったことを識別するステップと、
コンテクスト識別子に基づき、各プロセスの要求格納領域の物理アドレスを記憶した内蔵メモリを参照することにより、ペンディングレジスタをアクセスしたプロセスの要求格納領域の物理アドレスを得るステップと、
要求格納領域の内容を読み出して、要求内容を実現するステップとを備えたことを特徴とする請求項1に記載のアクセス方法。 - 前記物理アドレスは、さらにオフセットを下位アドレスに含み、前記アドレスデコーダは該オフセット領域をデコード対象とすることを特徴とする請求項1又は2のいずれかに記載のアクセス方法。
- 前記物理アドレスは、さらにオフセットを下位アドレスに含み、前記アドレスデコーダは該オフセット領域をデコード対象としないことを特徴とする請求項1又は2に記載のアクセス方法。
- 前記ペンディングレジスタに、コンテクスト識別子に対応する他のデータを必要に応じて記憶することを特徴とする請求項1乃至4のいずれかに記載のアクセス方法。
- 第1のプロセスが入出力装置又はインタフェースのクローズ処理をオペレーティングシステムに要求した場合又は第1のプロセスが終了した場合には、オペレーティングシステムは第1のプロセスに割り当てたアドレスを回収すると共に、入出力装置又はインタフェース用のコンテクスト識別子を回収し、及び又は、内蔵メモリ上の第1のプロセスの要求領域への物理アドレスのエントリをクリアすることを特徴とする請求項1又は5のいずれかに記載のアクセス方法。
- プロセスが、入出力装置又はインタフェースのオープン処理をオペレーティングシステムに要求するステップと、
オペレーティングシステムが、前記プロセスの要求格納領域を示し、且つ、入出力装置又はインタフェースを使用するプロセスを示すためのコンテクスト識別子を割り当てるステップと、
前記プロセスが、要求格納領域へ入出力装置又はインタフェースへの要求内容を記述するステップと、
オペレーティングシステムが、入出力装置又はインタフェース内の内蔵メモリに、各プロセスのコンテキスト識別子に対応する要求格納領域のアドレスを記憶するステップと、
入出力装置又はインタフェースが、先入れ先出しメモリで構成されるペンディングレジスタに記憶されたコンテクスト識別子に基づき、前記内蔵メモリから求めた要求格納領域に従い、前記プロセスの要求内容を読み出すステップ
をコンピュータに実行させるためのアクセス処理プログラムを記録した記録媒体であって、
入出力装置又はインタフェースを指定する物理アドレスは、入出力装置又はインタフェースのペンディングレジスタの位置を示す固有アドレスであるファンクションセレクトと、入出力装置又はインタフェースを使用するプロセスを示すコンテクスト識別子とを含み、
アドレスデコーダは、前記物理アドレス内の前記コンテクスト識別子をデコードに使用せず、前記ファンクションセレクトをデコードに使用することにより、入出力装置又はインタフェースのペンディングレジスタを選択するとともに、前記物理アドレス内の前記コンテクスト識別子をペンディングレジスタに記憶することにより、
ペンディングレジスタへのアクセスをペンディングレジスタを構成する先入れ先出しメモリにバッファリングすることにより、プロセスが異なれば、コンテクスト識別子が異なった前記物理アドレスで、同一のファンクションセレクトに基づき同一の入出力装置又はインタフェースのペンディングレジスタへアクセスし、入出力装置又はインタフェースは、ペンディングレジスタに記憶された異なるコンテクスト識別子に基づき、異なる要求内容を読み出すことを特徴とする、前記アクセス処理プログラムを記録した記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25527299A JP4354583B2 (ja) | 1999-09-09 | 1999-09-09 | アクセス方法及びアクセス処理プログラムを記録した記録媒体 |
US09/830,588 US6928492B1 (en) | 1999-09-09 | 2000-08-01 | Computer I/O device access method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25527299A JP4354583B2 (ja) | 1999-09-09 | 1999-09-09 | アクセス方法及びアクセス処理プログラムを記録した記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001075824A JP2001075824A (ja) | 2001-03-23 |
JP4354583B2 true JP4354583B2 (ja) | 2009-10-28 |
Family
ID=17276453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25527299A Expired - Fee Related JP4354583B2 (ja) | 1999-09-09 | 1999-09-09 | アクセス方法及びアクセス処理プログラムを記録した記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6928492B1 (ja) |
JP (1) | JP4354583B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150051868A (ko) * | 2013-11-05 | 2015-05-13 | 인텔 코포레이션 | 하드웨어 컨텍스트 복구 흐름 동안에 프로그램가능한 소프트웨어 컨텍스트 상태 실행을 지원하기 위한 방법 및 장치 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4661574B2 (ja) * | 2005-12-14 | 2011-03-30 | セイコーエプソン株式会社 | 組込機器、電子機器、組込機器の制御方法、制御プログラムおよび記録媒体 |
US8521966B2 (en) * | 2007-11-16 | 2013-08-27 | Vmware, Inc. | VM inter-process communications |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61253567A (ja) | 1985-05-07 | 1986-11-11 | Toshiba Corp | デ−タ入出力方式 |
JPS63108448A (ja) | 1986-10-25 | 1988-05-13 | Nec Corp | 入出力要求制御方式 |
GB2210480B (en) * | 1987-10-02 | 1992-01-29 | Sun Microsystems Inc | Flush support |
US5887190A (en) * | 1995-05-15 | 1999-03-23 | Nvidia Corporation | System for determining from a command storing in a storage circuit an application program which has initiated the command to determine an input/output device address |
JPH0969060A (ja) | 1995-08-31 | 1997-03-11 | Toshiba Corp | 計算機システムおよびファイルアクセス制御方法 |
DE69727465T2 (de) * | 1997-01-09 | 2004-12-23 | Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto | Rechnersystem mit Speichersteuerung für Stossbetrieb-Übertragung |
US6434620B1 (en) * | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US6081854A (en) * | 1998-03-26 | 2000-06-27 | Nvidia Corporation | System for providing fast transfers to input/output device by assuring commands from only one application program reside in FIFO |
US6065071A (en) * | 1998-03-26 | 2000-05-16 | Nvidia Corporation | Method and apparatus for trapping unimplemented operations in input/output devices |
-
1999
- 1999-09-09 JP JP25527299A patent/JP4354583B2/ja not_active Expired - Fee Related
-
2000
- 2000-08-01 US US09/830,588 patent/US6928492B1/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150051868A (ko) * | 2013-11-05 | 2015-05-13 | 인텔 코포레이션 | 하드웨어 컨텍스트 복구 흐름 동안에 프로그램가능한 소프트웨어 컨텍스트 상태 실행을 지원하기 위한 방법 및 장치 |
KR101693662B1 (ko) | 2013-11-05 | 2017-01-17 | 인텔 코포레이션 | 하드웨어 컨텍스트 복구 흐름 동안에 프로그램가능한 소프트웨어 컨텍스트 상태 실행을 지원하기 위한 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
US6928492B1 (en) | 2005-08-09 |
JP2001075824A (ja) | 2001-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7353361B2 (en) | Page replacement policy for systems having multiple page sizes | |
JP5735070B2 (ja) | パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換 | |
US4742450A (en) | Method to share copy on write segment for mapped files | |
US5754818A (en) | Architecture and method for sharing TLB entries through process IDS | |
EP1805629B1 (en) | System and method for virtualization of processor resources | |
KR101612922B1 (ko) | 메모리 시스템 및 메모리 시스템 관리 방법 | |
US7120778B2 (en) | Option ROM virtualization | |
US20060282624A1 (en) | Information processing apparatus, process control method and computer program therefor | |
US9146879B1 (en) | Virtual memory management for real-time embedded devices | |
US9086920B2 (en) | Device for managing data buffers in a memory space divided into a plurality of memory elements | |
US20120216003A1 (en) | Semiconductor device and memory protection method | |
JP2002123424A (ja) | コンピュータ・システムにおいてメモリを動的に再割当てするシステムおよび方法 | |
US5293622A (en) | Computer system with input/output cache | |
WO2010024071A1 (ja) | キャッシュメモリ、そのシステム、その利用方法及びその利用プログラム | |
JP4354583B2 (ja) | アクセス方法及びアクセス処理プログラムを記録した記録媒体 | |
JP5254710B2 (ja) | データ転送装置、データ転送方法およびプロセッサ | |
US7444636B2 (en) | Method and system of determining attributes of a functional unit in a multiple processor computer system | |
JP2001051958A (ja) | 多重プロセッサ多成分アーキテクチャのための統一メモリ管理システム | |
JP5104501B2 (ja) | 仮想マシンシステム、ホスト計算機、仮想マシン構築方法およびプログラム | |
CN112241308A (zh) | 一种虚拟机标识处理方法、装置及相关设备 | |
CN117769700A (zh) | 动态可分配物理寻址元数据存储库 | |
CN117290263A (zh) | 一种用于大容量bar空间的大页映射实现方法及系统 | |
CN114461391A (zh) | 一种可重映射的gpu主存访问管理方法和系统 | |
JPH0793220A (ja) | 仮想記憶管理方式 | |
JPH07182298A (ja) | 情報処理方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20031031 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20040129 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060911 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090217 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090410 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090609 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090702 |
|
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: 20090728 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090730 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120807 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130807 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |