(57)【特許請求の範囲】
【請求項１】
連続した論理アドレスを、アドレス変換テーブルを用いて主記憶装置のメモリ空間の物理アドレスに変換することにより主記憶装置のメモリ空間を連続エリアと仮想する仮想記憶方式を、主記憶装置における所定のメモリ空間をリング構造とみなして周回するようにアクセスする制御方式に適用して前記主記憶装置のメモリ空間をアクセスするメモリアクセス装置において、
前記アドレス変換テーブルには、複数のアドレスが格納され、
前記主記憶装置に対するアクセスを要求するデバイス毎に間接テーブルを備え、該間接テーブルは、アドレス変換テーブルのアドレスを指定する複数のアドレスデータを格納し、対応するデバイスからのアクセスが終了したときに格納されたアドレスデータが所定テーブルのテーブルサイズの中で周回するように更新され、
前記間接テーブルの前記テーブルサイズは、前記アドレス変換テーブルのテーブルサイズよりも小さく、
前記間接テーブルの複数のアドレスデータのアドレス総数は、前記アドレス変換テーブルのテーブルサイズと等しく、
前記アドレスデータが、アドレスの総数の周期で周回するように、前記間接テーブルが更新されるように構成されたことを特徴とするメモリアクセス装置。
【請求項２】
前記デバイスのアクセス終了後、間接テーブルに格納されたアドレス変換テーブルのアドレスデータが所定テーブルサイズの中で周回するように間接テーブルを更新する間接テーブル更新手段を備えたことを特徴とする請求項１に記載のメモリアクセス装置。
【請求項３】
連続した論理アドレスを、アドレス変換テーブルを用いて主記憶装置のメモリ空間の物理アドレスに変換することにより主記憶装置のメモリ空間を連続エリアと仮想する仮想記憶方式を、主記憶装置における所定のメモリ空間をリング構造とみなして周回するようにアクセスする制御方式に適用して前記主記憶装置のメモリ空間をアクセスするメモリアクセス装置において、
前記主記憶装置に対するアクセスを要求するデバイス毎に間接テーブルを備え、該間接テーブルは、アドレス変換テーブルのアドレスを指定するアドレスデータを格納し、対応するデバイスからのアクセスが終了したときに格納されたアドレスデータが所定テーブルのテーブルサイズの中で周回するように更新されるように構成され、
前記デバイスのアクセス終了後、前記間接テーブルに格納されたアドレス変換テーブルのアドレスデータが所定テーブルサイズの中で周回するように、前記間接テーブルが更新される間接テーブル更新手段を備え、
前記間接テーブル更新手段は、間接テーブルに格納されたアドレス変換テーブルのアドレスデータに間接テーブルのテーブルサイズを加算する加算手段と、
該加算手段により加算された加算データをアドレス変換テーブルのテーブルサイズから減算する減算手段と、
該減算手段による減算の結果、減算データが零未満のときは、格納されたアドレス変換テーブルのアドレスデータを加算データに書き換え、減算データが零のときは、格納されたアドレス変換テーブルのアドレスデータを零に書き換える書き換え手段と、
を備えたことを特徴とするメモリアクセス装置。
【請求項４】
主記憶装置にデータを書き込む書き込み要求が書き込み用デバイスからあり、主記憶装置からデータを読み出す読み出し要求が読み出し用デバイスからあったとき、主記憶装置へのアクセスの競合を回避するように、前記書き込み用デバイス及び読み出し用デバイスのアクセスを制御するアクセス制御手段を備えたことを特徴とする請求項１〜請求項３のいずれか１つに記載のメモリアクセス装置。
【請求項５】
前記アクセス制御手段は、書き込み用デバイスによってデータが書き込まれた書き込みアドレスと読み出し用デバイスによってデータが読み出された読み出しアドレスとを比較して主記憶装置に書き込み可能な領域があるか読み出し可能なデータがあるかを判定する判定手段と、
該判定手段により、書き込み可能な領域があると判定されたときは、書き込み用デバイスに書き込みを許可する書き込み要求許可手段と、
前記判定手段により、読み出し可能なデータがあると判定され、書き込み用デバイスが書き込み要求をしていないときに読み出し用デバイスに読み出しを許可する読み出し要求許可手段と、
を備えたことを特徴とする請求項４に記載のメモリアクセス装置。
【請求項６】
前記間接テーブルに格納されているアドレスデータの更新すべきデータを予め演算して格納するレジスタテーブルを備えたことを特徴とする請求項１〜請求項５のいずれか１つに記載のメモリアクセス装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、仮想記憶方式にメモリバッファ制御を適用したメモリアクセス装置に関する。
【０００２】
【従来の技術】
あるデバイスがメモリ空間上にある開始アドレスと終了アドレスとにはさまれた空間を開始アドレスから終了アドレスまでをアクセスし、繰り返し、開始アドレスに戻るように、リング状にアクセスするメモリアクセス装置が知られている。
このようなメモリ資源の使用方法は、データのフロー制御等で一時的にデータを保持しておくリングバッファとしてよく用いられている。
【０００３】
このようなリングバッファを用いることにより、メモリ資源を効率よく使用することができ、しかもアドレス変換の制御が簡単になる。
また、計算機アーキテクチャにおいて、主記憶装置の一部を使い、プログラムが仮想的に連続エリアとしてメモリをアクセスする考え方がある。仮想記憶方式はこの考え方に基づいた方式であって、デバイスが論理アドレスを指定し、所定のアドレス変換テーブルを参照することにより、その論理アドレスを主記憶装置の物理アドレスに変換する方式である。その代表的な方式としてページング方式がある。
【０００４】
この仮想記憶方式は一般的にソフト制御で行われるが、ハード制御によるリングバッファ制御にも応用でき、上位変換テーブルを動的に書き換えることによりリングバッファを実現することができる。
【０００５】
【発明が解決しようとする課題】
ところで、従来のこのようなメモリアクセス装置では、２つのデバイスが同じメモリ空間をアクセスする場合、データ読み出しのための入力デバイスとデータ書き込み用の出力デバイスとでアクセスすべきメモリ空間が異なることが考えられる。このため、アドレス変換テーブルを複数備える必要がある。
【０００６】
また、高速化のため、Ｆ／Ｆ（フリップフロップ）回路などでアドレス変換テーブルを構成した場合、アドレス変換テーブルを書き換える必要があることから複数のデバイスがＦ／Ｆ回路等を共通に使うことができず、デバイス毎に設ける必要がある。このため、回路規模が大きくなってしまう。
従って、できるだけ回路規模が大きくならないようにリングバッファ制御を行えるようにすることが好ましい。
【０００７】
【課題を解決するための手段】
本発明は以上の点を解決するため次の構成を採用する。
〈構成１〉
請求項１の発明に係るメモリアクセス装置は、連続した論理アドレスを、アドレス変換テーブルを用いて主記憶装置のメモリ空間の物理アドレスに変換することにより主記憶装置のメモリ空間を連続エリアと仮想する仮想記憶方式を、主記憶装置における所定のメモリ空間をリング構造とみなして周回するようにアクセスする制御方式に適用して前記主記憶装置のメモリ空間をアクセスするものにおいて、前記アドレス変換テーブルには、複数のアドレスが格納され、前記主記憶装置に対するアクセスを要求するデバイス毎に間接テーブルを備え、該間接テーブルが、アドレス変換テーブルのアドレスを指定する複数のアドレスデータを格納し、対応するデバイスからのアクセスが終了したときに格納されたアドレスデータが所定テーブルのテーブルサイズの中で周回するように更新され、前記間接テーブルの前記テーブルサイズは、前記アドレス変換テーブルのテーブルサイズよりも小さく、前記間接テーブルの複数のアドレスデータのアドレス総数は、前記アドレス変換テーブルのテーブルサイズと等しく、前記アドレスデータが、アドレスの総数の周期で周回するように、前記間接テーブルが更新されるように構成されている。
【０００８】
〈構成２〉
請求項２の発明に係るメモリアクセス装置では、前記デバイスのアクセス終了後、間接テーブルに格納されたアドレス変換テーブルのアドレスデータが所定テーブルサイズの中で周回するように間接テーブルを更新する間接テーブル更新手段を備えている。
【０００９】
〈構成３〉
請求項３の発明に係るメモリアクセス装置では、連続した論理アドレスを、アドレス変換テーブルを用いて主記憶装置のメモリ空間の物理アドレスに変換することにより主記憶装置のメモリ空間を連続エリアと仮想する仮想記憶方式を、主記憶装置における所定のメモリ空間をリング構造とみなして周回するようにアクセスする制御方式に適用して前記主記憶装置のメモリ空間をアクセスするメモリアクセス装置において、前記主記憶装置に対するアクセスを要求するデバイス毎に間接テーブルを備え、該間接テーブルは、アドレス変換テーブルのアドレスを指定するアドレスデータを格納し、対応するデバイスからのアクセスが終了したときに格納されたアドレスデータが所定テーブルのテーブルサイズの中で周回するように更新されるように構成され、前記デバイスのアクセス終了後、前記間接テーブルに格納されたアドレス変換テーブルのアドレスデータが所定テーブルサイズの中で周回するように前記間接テーブルを更新する間接テーブル更新手段を備え、前記間接テーブル更新手段が、間接テーブルに格納されたアドレス変換テーブルのアドレスデータに間接テーブルのテーブルサイズを加算する加算手段と、該加算手段により加算された加算データをアドレス変換テーブルのテーブルサイズから減算する減算手段と、該減算手段による減算の結果、減算データが零未満のときは、格納されたアドレス変換テーブルのアドレスデータを加算データに書き換え、減算データが零のときは、格納されたアドレス変換テーブルのアドレスデータを零に書き換える書き換え手段と、を備えている。
【００１０】
〈構成４〉
請求項４の発明に係るメモリアクセス装置では、主記憶装置にデータを書き込む書き込み要求が書き込み用デバイスからあり、主記憶装置からデータを読み出す読み出し要求が読み出し用デバイスからあったとき、主記憶装置へのアクセスの競合を回避するように、前記書き込み用デバイス及び読み出し用デバイスのアクセスを制御するアクセス制御手段を備えている。
【００１１】
〈構成５〉
請求項５の発明に係るメモリアクセス装置では、前記アクセス制御手段が、書き込み用デバイスによってデータが書き込まれた書き込みアドレスと読み出し用デバイスによってデータが読み出された読み出しアドレスとを比較して主記憶装置に書き込み可能な領域があるか読み出し可能なデータがあるかを判定する判定手段と、該判定手段により、書き込み可能な領域があると判定されたときは、書き込み用デバイスに書き込みを許可する書き込み要求許可手段と、前記判定手段により、読み出し可能なデータがあると判定され、書き込み用デバイスが書き込み要求をしていないときに読み出し用デバイスに読み出しを許可する読み出し要求許可手段と、を備えている。
【００１２】
〈構成６〉
請求項６の発明に係るメモリアクセス装置では、前記間接テーブルに格納されているアドレスデータの更新すべきデータを予め演算して格納するレジスタテーブルを備えている。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態を具体例を用いて説明する。
〈具体例１〉
具体例１は、間接テーブルをデバイス毎に備え、デバイスがアドレス変換テーブルを間接的に参照することにより、アクセス空間が異なるデバイスが複数存在するときでもアドレス変換テーブルを１つにすることができるようにしたものである。
【００１４】
図１は、具体例１の構成を示すブロック図である。
主記憶装置１００は、例えばプログラムを展開するための実記憶空間を有するメモリである。
【００１５】
上位アドレス変換テーブル２００は、ページング方式により連続した論理アドレス（仮想アドレス）を主記憶装置１００の物理アドレス（実アドレス）に変換するためのテーブルであり、ＣＰＵ５００によってデータの読み書きが可能なレジスタを備えて構成されている。このレジスタに、主記憶装置１００の使用可能エリアの上位アドレスが格納される。
【００１６】
デバイス３００Ａ，Ｂは、主記憶装置１００に読み書きするためのデバイスであり、それぞれデータ転送部３０１Ａを備えている。
尚、具体例１では、デバイス３００Ａは外部からデータを取り込んで主記憶装置１００に書き込む入力専用の入力デバイス、デバイス３００Ｂは主記憶装置１００に書き込まれたデータを読み出して外部に出力する出力専用の出力デバイスとして説明する。
【００１７】
テーブル参照部４００は、デバイス３００Ａ，Ｂが上位アドレス変換テーブル２００を参照できるように制御するブロックであり、間接テーブル４１０Ａ，Ｂと、間接テーブル更新部４２０Ａ，Ｂと、終了アドレス検出部４３０Ａ，Ｂと、アービタ４４０と、を備えて構成されている。
【００１８】
間接テーブル４１０Ａ，Ｂは、それぞれデバイス３００Ａ，Ｂに対応するように備えられ、ＣＰＵ５００によってデータの読み書きが可能なレジスタによって構成されたテーブルである。間接テーブル４１０Ａ，Ｂの各レジスタには上位アドレス変換テーブル２００のアドレスが格納される。
【００１９】
間接テーブル更新部４２０Ａ，Ｂは、それぞれ間接テーブル４１０Ａ，Ｂを更新してリングバッファ処理を行うための間接テーブル更新手段である。
間接テーブル４１０Ａ，Ｂ及び間接テーブル更新部４２０Ａ，Ｂの詳細な構成については後述する。
【００２０】
アービタ４４０は、デバイス３００Ａ，Ｂのメモリアクセスの競合を回避するためのブロックである。アービタ４４０の詳細な構成については後述する。
終了アドレス検出部４３０Ａ，Ｂは、それぞれデバイス３００Ａ，Ｂの書き込み又は読み出しが終了したことを示す終了アドレスを検出するブロックであり、デバイス３００Ａ，Ｂから出力されたデータの終了アドレスを検出し、間接テーブル更新部４２０Ａ，Ｂに終了タイミング信号を出力する。
【００２１】
ＣＰＵ５００は、主記憶装置１００、上位アドレス変換テーブル２００及び間接テーブル４１０Ａ，Ｂを制御するとともに、上位アドレス変換テーブル２００、間接テーブル４１０Ａ，Ｂに対してデータの読み書きを行う演算装置である。
【００２２】
次に、間接テーブル更新部４２０Ａ，Ｂ及び間接テーブル４１０Ａ，Ｂの構成について説明する。
図２は間接テーブル４１０Ａ，Ｂ及び間接テーブル更新部４２０Ａ，Ｂの構成を示すブロック図である。
【００２３】
具体例１の間接テーブル４１０Ａ，Ｂは、それぞれ４つのレジスタ４１１ａ〜ｄを備えている。このレジスタ４１１ａ〜ｄにそれぞれ上位アドレス変換テーブルのアドレスが格納される。
間接テーブル更新部４２０Ａ，Ｂは、書き込みタイミング発生部４２１と、セレクタ４２２と、演算部４２３と、を備えている。
書き込みタイミング発生部４２１は、終了アドレス検出部４３０Ａ又はＢから終了タイミング信号を入力して間接テーブル４１０Ａ，Ｂのデータを書き換える書き換えタイミング信号を作成し、この書き換えタイミング信号を各レジスタ４１１ａ〜ｄに出力する。
【００２４】
セレクタ４２２は、間接テーブル４１０Ａ，Ｂの各レジスタ４１１ａ〜ｄのデータの演算部４２３への出力を切り換えるものである。
演算部４２３は、更新データを演算するものである。
【００２５】
図３は具体例１の演算部４２３の構成を示すブロック図である。
演算部４２３は、加算器４２５と、減算器４２６と、比較器４２７と、セレクタ４２８と、を備えて構成されている。
【００２６】
加算器４２５は、各レジスタ４１１ａ〜ｄのデータと間接テーブル長とを入力して両データの加算を行う加算手段である。尚、この間接テーブル長は、間接テーブル４１０Ａ，Ｂのサイズを示すデータであり、具体例１の間接テーブル長は「４」である。
減算器４２６は、加算器４２５の出力データが上位アドレス変換テーブル長を越えるかどうかを判定するために、上位アドレス変換テーブル長から加算器４２５の出力データを減算する減算手段である。尚、上位アドレス変換テーブル長は上位アドレス変換テーブル２００のサイズを示すデータである。
【００２７】
セレクタ４２８は、比較器４２７によって制御されて加算器４２５の出力データ及び減算器４２６の出力データのうち、いずれか一方を選択出力するものである。
比較器４２７は、減算器４２６によって減算された減算データを“０”と比較することにより加算器４２５の加算データが上位アドレス変換テーブル長と等しいかどうかを判定し、加算器４２５の出力データが上位アドレス変換テーブル長と等しくないときは、セレクタ４２８から加算器４２５の出力データが出力され、等しいときは減算器４２６の出力データが出力されるようにセレクタ４２８を制御する。
このセレクタ４２８と比較器４２７とが書き換え手段に相当する。
【００２８】
次に、アービタ４４０の構成について説明する。
図４は、具体例１のアービタ４４０の構成を示すブロック図である。
書き込みアドレス記憶部４４１は、間接テーブル４１０Ａに最後に書き込んだアドレスに、１を加えたアドレスを保持するブロックである。
【００２９】
読み出しアドレス記憶部４４２は、間接テーブル４１０Ｂから最後に読み出したアドレスに、１を加えたアドレスを保持するブロックである。
セレクタ４４３は、デバイス３００Ａから書き込み要求信号が入力されたとき、書き込み要求を行ったデバイス３００Ａからのアドレス及び書き込みアドレス記憶部４４１により保持されたアドレスのうち、いずれか一方を書き込みアドレスとして選択出力するブロックである。
【００３０】
セレクタ４４４は、デバイス３００Ｂから読み出し要求信号が入力されたとき、読み出し要求を行ったデバイス３００Ｂからのアドレス及び書き込みアドレス記憶部４４１により保持されたアドレスのうち、いずれか一方を読み出しアドレスとして選択出力するブロックである。
【００３１】
アドレス比較部４４５は、セレクタ４４３から出力された書き込みアドレス及びセレクタ４４４から出力された読み出しアドレスを比較することにより書き込み可能な領域があるか読み出し可能なデータがあるかを判定する判定手段であり、書き込み可能な領域があると判定したときは、書き込み要求受付信号作成部４４６に書き込み可能信号を出力し、読み出し可能なデータがあると判定したときは、読み出し要求受付信号作成部４４７に読みだし可能信号を出力する。
【００３２】
書き込み要求受付信号作成部４４６は、デバイス３００Ａ、アドレス比較部４４５から、それぞれ書き込み要求信号、書き込み可能信号が入力されたとき、デバイス３００Ａにデータの書き込みを許可する書き込み受付信号を出力する書き込み要求許可手段である。また、書き込み要求受付信号作成部４４６は、データの書き込み中、読み出し要求受付信号作成部４４７に書き込み中信号を出力する。
【００３３】
読み出し要求受付信号作成部４４７は、デバイス３００Ｂ、アドレス比較部４４５から、それぞれ読み出し要求信号、読み出し可能信号が入力され、さらに書き込み要求受付信号作成部４４６から書き込み中信号が出力されていないときに、デバイス３００Ｂにデータの読み出しを許可する読み出し受付信号を出力する読み出し要求許可手段である。
【００３４】
〈動作〉
ページング方式では、プログラムを主記憶装置１００上に展開して動作させるとき、プログラムが一定の長さのいくつかのページに区切られて主記憶装置１００上に配置される。従って、プログラムが格納されているエリアは、メモリ資源を確保するため、通常は不連続となる。
このため、上位アドレス変換テーブル２００を使用して連続した論理アドレスが主記憶装置１００上の物理アドレスに変換される。
【００３５】
図５は、具体例１の動作説明図である。
尚、具体例１では、分かりやすくするため、この図５に示すようにプログラムが２５６×４のサイズで収まるものとして説明する。
また、主記憶装置１００は３２ビットのアドレス空間を有し、１エリアは、２５６（８ビット）毎に区切られているものとし、デバイス３００Ａ，Ｂがアクセスできるアドレス空間を１０ビット、使用できるエリアをエリア０〜６の７エリアとする。従って、上位アドレス変換テーブル長は、「７」となる。尚、ここでは、１ワードのビット数は特に限定されない。
【００３６】
この場合、プログラムのアドレス空間は２５６×４なので８＋２＝１０ビットということになる。下位８ビットは主記憶装置１００のアドレスとしてそのまま使用することができるので変換するのは上位２ビットとなる。
【００３７】
このプログラム空間の上位２ビットのアドレスが上位アドレス変換テーブル２００のアドレスとなる。テーブルの大きさは、テーブル１アドレス当たりのビット数は主記憶装置１００の上位２４ビットであり、これが４つ分（アドレス分）ということになる。また、上位アドレス変換テーブル２００のレジスタ２１０〜２１６には、それぞれ主記憶装置１００のエリア０〜６の上位２４ビットのアドレスデータが入力される。
【００３８】
このように、上位２ビットのアドレスを上位アドレス変換テーブル２００を通して変換し、下位のアドレスをそのまま使用することにより、あたかもプログラムがエリア０のアドレスから起動されたように動作させることができる。
具体的に、アドレス変換を行うには、まず、上位アドレス変換テーブル２００の各レジスタ２１０〜２１６に、それぞれ主記憶装置１００のエリア０〜６の上位アドレスを格納し、主記憶装置１００上でのデバイスが使用可能なエリア０〜６を上位アドレス変換テーブル２００の各レジスタ２１０〜２１６に割り当てる。これはプログラムによって実行される。
【００３９】
このように割り当てが行われた後、プログラムによってデバイス３００Ａ用の間接テーブル４１０Ａの初期化が行われる。
間接テーブル４１０Ａの初期化を行うには、デバイス３００Ａ用の間接テーブル４１０Ａのレジスタ４１１ａに上位アドレス変換テーブル２００のレジスタ２１０を指定するデータ“０”をセットする。同様にして間接テーブル４１０Ａのレジスタ４１１ｂ〜ｄに、それぞれ上位アドレス変換テーブル２００のレジスタ２１１〜２１３を指定するデータ“１”〜“３”をセットする。
【００４０】
デバイス３００Ｂ用の間接テーブル４１０Ｂについても同様に初期化が行われる。
間接テーブル４１０Ａの初期化後、プログラムによりデバイス３００Ａに起動をかけて入力動作を開始させる。
デバイス３００Ａが入力動作を開始して主記憶装置１００にデータを書き込むとき、アドレス変換が行われる。
【００４１】
図５の例では、デバイス３００Ａによって例えばヘクサ表現でアドレス「0x2a5」（「0x」はヘクサ表現であることを示す。）が指定される。このとき、上位２ビットは「２」であるので、間接テーブル４１０Ａのアドレスは「２」となり、レジスタ４１１ｃのデータ「２」が得られる。このデータ「２」が上位アドレス変換テーブル２００のアドレスデータとなる。
【００４２】
このアドレスデータ「２」に基づいて上位アドレス変換テーブル２００のレジスタに格納されているデータ「0X000007」が得られる。
このデータ「0X000007」は、主記憶装置１００の上位２４ビットのアドレスデータであるので、このデータ「0X000007」とデバイス３００Ｂの下位８ビットのデータ「0xa5」に基づいて主記憶装置１００のアドレス「0X000007a5」が得られる。
【００４３】
そして、このアドレス「0X000007a5」を指定して主記憶装置１００のエリア６に格納されているデータが読み出される。
主記憶装置１００へのデータの書き込みが終了したとき、アクセスの終了タイミングが終了アドレス検出部４３０によって検出され、終了信号が間接テーブル４１０Ａの書き込みタイミング発生部４２１に入力される。
【００４４】
間接テーブル更新部４２０Ａはこの信号をトリガとして間接テーブル４１０Ａのデータを更新する。
更新は以下のようにして行われる。
まず、セレクタ４２２が制御されて間接テーブル４１０Ａのレジスタ４１１ａのデータが演算部４２３に入力される。
【００４５】
演算部４２３では、このデータに間接テーブル長が加算器４２５により加算される。
例えば、レジスタ４１１ａに格納されているデータが「０」のときは、データ「０」に「４」が加算されて「４」となる。このときは、更新されたデータ「４」がレジスタ４１１ａに格納される。
【００４６】
同じようにして、セレクタ４２２が切り換えられ、間接テーブル４１０Ａのレジスタ４１１ａ〜ｄに格納されているデータが順次更新される。
間接テーブル４１０Ａのレジスタに格納されているデータが「３」のときは、加算値は「３」＋「４」＝「７」となり、上位アドレス変換テーブル長と等しくなる。このときは、セレクタ４２２が比較器４２７によって切り換えられてデータ「０」が出力される。
このようにして主記憶装置１００のエリア６を越えないように、間接テーブル４１０Ａの更新が行われる。
【００４７】
図６は間接テーブル４１０Ａの遷移を説明するための説明図である。
図６に示すように、状態１では、間接テーブル４１０Ａのレジスタ４１１ａ〜ｄには、それぞれ上位アドレス変換テーブル２００のアドレスデータ０〜３がセットされている。間接テーブル４１０Ａが更新されたとき、間接テーブル４１０Ａの各レジスタ４１１ａ〜ｄが書き換えられて状態１は状態２のように変化し、この状態２において、さらに間接テーブル４１０Ａが更新されて状態３のように変化する。
【００４８】
読み出しができる程度にデータが蓄積されたとき、今度は、デバイス３００Ｂを起動する。このときも同じようにしてアドレス変換が行われ、データの読み出しが行われる。
【００４９】
そして、デバイス３００Ｂによる主記憶装置１００からのデータの読み出しが終了したときは、書き込み終了時と同様に読み出しアクセスの終了タイミングが終了アドレス検出部４３０によって検出され、終了タイミング信号が間接テーブル４１０Ａの書き込みタイミング発生部４２１に入力される。この信号がトリガとなって書き込みタイミング発生部４２１から書き換えタイミング信号が出力され、間接テーブル４１０Ａのデータが更新される。
【００５０】
デバイス３００Ａにより書き込み要求が行われたとき、あるいはデバイス３００Ｂによって読み出し要求が行われたとき、アービタ４４０によってメモリアクセスがコントロールされ、メモリアクセスの競合が回避される。
【００５１】
例えば、デバイス３００Ａからアービタ４４０に書き込み要求信号が入力されてデバイス３００Ａにより書き込み要求が行われたとき、アドレス比較部４４５によって書き込みアドレスと読み出しアドレスとが比較される。そして、書き込みアドレスが読み出しアドレスよりも小さいときは、書き込み領域があると判定されてアドレス比較部４４５から書き込み要求受付信号作成部４４６に書き込み可能信号が出力される。
【００５２】
この書き込み可能信号が書き込み要求受付信号作成部４４６に出力されたとき、書き込み受付信号が書き込み要求受付信号作成部４４６からデバイス３００Ａに出力され、デバイス３００Ａにより主記憶装置１００へのデータの書き込みが行われる。
【００５３】
同様に、デバイス３００Ｂからアービタ４４０に読み出し要求信号が入力されて読み出し要求が行われたとき、書き込みアドレスが読み出しアドレスよりも小さいときは、読み出すデータがあるとアドレス比較部４４５によって判定され、アドレス比較部４４５から書き込み要求受付信号作成部４４６に書き込み可能信号が出力される。そして、書き込み要求受付信号作成部４４６から書き込み中信号が出力されていないときは、読み出し要求受付信号作成部４４７からデバイス３００Ｂに読み出し受付信号が出力され、デバイス３００Ｂにより主記憶装置１００からデータの読み出しが行われる。
【００５４】
一方、書き込みアドレスが読み出しアドレスよりも大きいときは、デバイス３００Ａから書き込み要求信号が入力されても書き込み領域はないとアドレス比較部４４５によって判定され、アドレス比較部４４５から書き込み可能信号は出力されない。また、デバイス３００Ｂから読み出し要求信号が入力されても読み出すデータはないとアドレス比較部４４５によって判定されて読み出し可能信号は出力されない。このようにしてメモリアクセスの競合が回避され、デバイス３００Ａが主記憶装置１００にデータを書き込む前にデバイス３００Ｂによってデータの読み出しが行われないようになる。
【００５５】
〈具体例１の効果〉
以上、説明したように具体例１によれば、間接テーブル４１０Ａ，Ｂをデバイス３００Ａ，Ｂ毎に備え、上位アドレス変換テーブル２００を間接的に参照するようにしたので、上位アドレス変換テーブル２００を複数設ける必要がなく、回路規模を大幅に削減することができる。
【００５６】
ここで、アドレス変換を目的とするテーブルを上位アドレス変換テーブルのみで構成する場合と間接テーブルを追加して構成する場合とで、その回路規模を比較する。
【００５７】
尚、ここでも、主記憶装置のメモリ空間を３２ビットのアドレス空間、１エリアのアドレス空間を８ビット、デバイスのアクセスできるアドレス空間を１０ビットとし、使用できるエリア数を７つとする。
【００５８】
各テーブルをＦ／Ｆ回路で構成した場合、１つの上位アドレス変換テーブルは２４×７ビットとなる。デバイスが２つのとき、これを２つ使うので、Ｆ／Ｆ回路２４×７×２＝３３６の数だけ必要となる。
これに対して、間接テーブルを設けた場合、上位アドレス変換テーブルは１つで済むため、Ｆ／Ｆ回路は、２４×７＋３×４×２＝１９２の数で済み、回路規模を削減できることになる。
【００５９】
尚、具体例１では、デバイスを２つとしたので、２つの間接テーブルを必要としたが、間接テーブルの数はこの具体例１には限定されない。また、テーブル長も各デバイスのアクセス空間に応じて増減することもできる。
【００６０】
また、上位アドレス変換テーブルも主記憶装置の使用可能エリアの数に応じて増減することができ、主記憶装置の使用可能エリア取得の範囲を制限する事でテーブルの各アドレスのビット数を減らすことが可能になる。
【００６１】
例えば、主記憶装置のメモリアドレス空間が３２ビットで使用可能エリアが常に主記憶装置のアドレス空間の後半と制限すれば、最上位の1ビットは常に固定となるためテーブルの全てのアドレスで最上位の1ビットを省くことができる。
【００６２】
また、デバイス空間が使用可能エリアの空間より大きい場合でも間接テーブルをデバイス空間に合わせたテーブル長にすれば処理可能となる。
例えば、デバイスのアドレス空間が４エリア分で実際に使えるエリアが３つのときは、間接テーブルの内容を“０”、“１”、“２”、“０”というように設定することにより、リングバッファとして使用可能となる。
【００６３】
また、間接テーブル更新部の演算部も間接テーブルのアドレス分備えることもでき、このようにすれば間接テーブルの更新を全て同時に行える。一方、間接テーブル更新部のセレクタの入力数を増やし、書き込みタイミング発生部を全デバイス共通のものにすることにより、全デバイスの間接テーブルの更新用の演算部が1つで済むことになる。
【００６４】
また、具体例１では、間接テーブル更新部の演算部をハードウェア構成としたが、ソフトウェアによって構成することもできる。
図７はその動作を示すフローチャートである。
ステップ（図中、ステップを「Ｓ」と記す。）１では、間接テーブル４１０Ａ（又はＢ）のデータを入力する。
【００６５】
ステップ２では、間接テーブル４１０Ａのデータと間接テーブル長を加算する。
ステップ３では、この加算値を上位アドレス変換テーブル長と比較する。
そして、加算値が上位アドレス変換テーブル長よりも大きいときは、ステップ４に進み、上位アドレス変換テーブル長から加算値を減算する。
【００６６】
ステップ５では、この値を出力する。
また、加算値が上位アドレス変換テーブル長を越えたときは、ステップ６に進み、変数Ｂに加算値を代入し、ステップ５に進んでこの変数Ｂを出力する。
このように、演算部４２３をソフトウェアによって構成することもできる。
【００６７】
〈具体例２〉
具体例２は、更新時間を短縮するため、間接テーブルの各レジスタと対応するレジスタテーブルを備え、あらかじめ更新用のデータを演算させてレジスタテーブルに格納するようにしたものである。
【００６８】
図８は、具体例２の構成を示すブロック図である。
具体例２の間接テーブル更新部４２０Ａ，Ｂは、それぞれ書き込み可能なレジスタ４５２ａ〜ｄを有するレジスタテーブル４５０を備えている。
尚、具体例１と同一要素については同一符号を付して説明を省略する。
【００６９】
〈動作〉
次に具体例２の更新動作を説明する。
具体例２では、間接テーブル４１０Ａ（又はＢ）の更新前に、間接テーブル４１０Ａのレジスタ４１１ａのデータを読み取り、演算部４２３により更新データが作成される。
尚、具体例２においても、演算部４２３をハードウェアにより構成してもよいし、ソフトウェアによって構成してもよい。
【００７０】
そして、この演算結果がレジスタテーブル４５０のレジスタ４５２ａに書き込まれる。
同様にして間接テーブル４１０Ａのレジスタ４１１ｂ〜ｄについてもデータが読み取られ、演算結果が各レジスタテーブル４５０の４５２ｂ〜ｄに書き込まれる。
【００７１】
間接テーブル４１０Ａの更新時、書き込みタイミング発生部４２１から書き換えタイミング信号が出力されたとき、このレジスタテーブル４５０のレジスタ４５２ａ〜ｄのデータが間接テーブル４１０Ａの各レジスタ４１１ａ〜ｄに同時に出力され、コピーされる。
【００７２】
尚、間接テーブル４１０の書き換えタイミングは、割り込み信号等を用いてＣＰＵ５００にも通知される。
レジスタテーブル４５０から間接テーブル４１０へのコピーは通常１クロックで終了する。
そして、コピー終了後、次の更新に備えて再び更新用データがレジスタテーブル４５０に書き込まれる。
このように、レジスタテーブル４５０の書き換え、レジスタテーブル４５０から間接テーブル４１０Ａへのコピーを繰り返すことによりリングバッファが実現される。
【００７３】
〈具体例２の効果〉
以上、説明したように具体例２によれば、レジスタが間接テーブル４１０Ａ，Ｂの各レジスタと対応するレジスタテーブル４５０を備え、あらかじめ演算した更新用データを間接テーブル４１０Ａ，Ｂの更新時、同時に更新するようにしたので、更新時間を大幅に短縮することができる。従って、デバイス３００Ａ，Ｂは主記憶装置１００を、高速かつ連続的にアクセスすることができる。
【図面の簡単な説明】
【図１】具体例１の構成を示すブロック図である。
【図２】具体例１の間接テーブル及び間接テーブル更新部の構成を示すブロック図である。
【図３】具体例１の演算部（間接テーブル更新部）の構成を示すブロック図である。
【図４】具体例１のアービタの構成を示すブロック図である。
【図５】具体例１の動作説明図である。
【図６】具体例１の間接テーブルの遷移を示す説明図である。
【図７】具体例１の演算部をソフトウェアで構成した場合のその動作を示すフローチャートである。
【図８】具体例２の間接テーブル及び間接テーブル更新部の構成を示すブロック図である。
【符号の説明】
１００  主記憶装置
２００  上位アドレス変換テーブル
３００Ａ，Ｂ  デバイス
４００  テーブル参照部
４１０  間接テーブル
４２０  間接テーブル更新部
４４０  アービタ
４５０  レジスタテーブル
５００  ＣＰＵ
【図１】
0004257626.tif 000002
【図２】
0004257626.tif 000003
【図３】
0004257626.tif 000004
【図４】
0004257626.tif 000005
【図５】
0004257626.tif 000006
【図６】
0004257626.tif 000007
【図７】
0004257626.tif 000008
【図８】
0004257626.tif 000009