(57)【要約】【課題】複数のバスマスタユニットが共通のメモリにアクセスするデータ処理システムにおけるメモリアクセス制御装置に関し、各バスマスタユニットからのアクセスに対して、各バスマスタユニットが個々に次のアドレスのデータをプリフェッチすることを可能にし、読み出し時間の短縮を図る。【解決手段】複数のバスマスタユニットａ、ｂ  、ｃに対して、複数のプリフェッチバッファ１−４１〜１−４３を備え、各プリフェッチバッファは、メモリ１−３から読み出した一連のアドレスのデータとともに、アクセス要求を行ったバスマスタユニットを識別する情報を蓄える。メモリリードアクセス要求によりプリフェッチバッファの内容を書き換えるとき、他のバスマスタユニットの識別情報が蓄えられているプリフェッチバッファの内容を書き換えることなく、他のバスマスタユニットの識別情報が蓄えられていないプリフェッチバッファの内容を書き換える。【選択図】      図１
2004234446.tif 000002
【特許請求の範囲】
【請求項１】
共通バスに複数のバスマスタユニットが接続されるデータ処理システムのメモリアクセス制御装置において、
バスマスタユニットからのメモリリードアクセス要求に対して、要求されたアクセスアドレスに続く連続したアドレスから複数のデータを予め読み出し、該読み出したデータをプリフェッチバッファに蓄える手段を備え、該バスマスタユニットから再度メモリリードアクセス要求があったとき、該プリフェッチバッファ内に、要求されたアドレスのデータが蓄えられている場合に、該プリフェッチバッファからデータを出力する手段を有し、
前記複数のバスマスタユニットに対して前記プリフェッチバッファを複数備え、各プリフェッチバッファは、メモリから読み出した一連のアドレスのデータとともに、該メモリリードアクセス要求を行ったバスマスタユニットを識別するバスマスタユニット識別情報を蓄える手段を有し、
バスマスタユニットからのメモリリードアクセス要求により、プリフェッチバッファの内容の書き換えを行うとき、他のバスマスタユニットのバスマスタユニット識別情報が蓄えられているプリフェッチバッファの内容を書き換えることなく、他のバスマスタユニットのバスマスタユニット識別情報が蓄えられていないプリフェッチバッファの内容を書き換える制御を行う手段を備えたことを特徴とするメモリアクセス制御装置。
【請求項２】
前記各プリフェッチバッファを各バスマスタユニットにそれぞれ固定的に割り当て、各プリフェッチバッファにおけるバスマスタユニット識別情報を蓄える手段に、固定的に割り当てたバスマスタユニットのバスマスタユニット識別情報を蓄えた構成を有することを特徴とする請求項１に記載のメモリアクセス制御装置。
【請求項３】
前記バスマスタユニットからのメモリリードアクセス要求に対して、要求されたアクセスアドレスに続く連続したアドレスから読み出した複数のデータを蓄えるプリフェッチバッファを、空き状態のプリフェッチバッファの中から選択して割り当て、該選択されたプリフェッチバッファのバスマスタユニット識別情報の書き込み領域に、該プリフェッチバッファを選択したバスマスタユニットの識別情報を書き込む構成を有することを特徴とする請求項１に記載のメモリアクセス制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理システムにおけるメモリアクセス制御装置に関し、特に、メモリアクセスにおけるプリフェッチ機能に関する。
【０００２】
【従来の技術】
データ処理装置の大容量の主記憶には、一般にＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が用いられる。データ処理ユニット（プロセッサ）には、ＤＲＡＭアクセス制御回路を内蔵し、ＤＲＡＭ専用バスを有するものもあるが、図２に示すように、プロセッサ２−１とは別にＤＭＡ制御ユニット（ＤＭＡＣ：Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ  ）２−２を備え、プロセッサ２−１とＤＭＡ制御ユニット（ＤＭＡＣ）２−２とで、共通のメモリ領域を使用するデータ処理システムでは、共通バス２−３にメモリアクセス制御回路２−４を配置して、該メモリアクセス制御回路２−４を介してメモリ（ＤＲＡＭ）２−５へのアクセスを行う。
【０００３】
メモリ（ＤＲＡＭ）２−５へのアクセスは、メモリ（ＤＲＡＭ）２−５のアドレスビットを行（Ｒｏｗ）部と列（Ｃｏｌｕｍｎ）部とに分けて、２ステップで行われるため、全てのアドレスビットを一度に与えるＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ  ）へのアクセスに比べてアクセス時間が大きい。
【０００４】
しかし、図３に示すように、１つの行（Ｒｏｗ）部アドレスビット（ｒａ）に対して、複数の列（Ｃｏｌｕｍｎ）部アドレスビット（ｃａ１，ｃａ２，ｃａ３，ｃａ４）を連続して与えることによって、複数のデータ（ｄ１，ｄ２，ｄ３，ｄ４）に短時間にアクセスすることができるという特長を有している。なお、ここで、４つの連続アドレスのデータにアクセスする例を示しているが、一度にアクセスする連続アドレスのデータは４つに限ったものではなく、適宜、データ処理システムの実際の使用環境に応じて最適な個数に設定される。
【０００５】
プログラムから或る一つのアドレスのデータへのアクセスがあった場合、次にアクセスされるデータは多くの場合、該アドレスに引き続くアドレスに存在することが期待されるため、メモリリードアクセスがあったとき、先頭の読出しアドレスから所定数の連続したアドレス領域の複数のデータを一度に読み出し、それらのデータをプリフェッチバッファにバッファリングしておく構成は、一連のデータの読み出し時間を短縮することができ、性能向上に有効である。
【０００６】
図４にプリフェッチを行うメモリリードアクセスの動作シーケンスの例を示す。メモリアクセス制御回路は、１回のメモリリードアクセス時に、該アクセスアドレス（ａ１）からプリフェッチバッファの１エントリ長（ライン）分のデータ（ｄ１，ｄ２，ｄ３，ｄ４）を、メモリ（ＤＲＡＭ）から読み込み、プリフェッチバッファ（ＢＵＦ）に蓄える。
【０００７】
図５にプリフェッチバッファ（ＢＵＦ）に蓄えるデータ例を示す。同図に示すように、プリフェッチバッファ（ＢＵＦ）は、蓄えたデータの有効／無効を示す有効表示ビット（Ｖ：Ｖａｌｉｄ  ）、アクセスアドレス（ａｄｄｒ：ａｄｄｒｅｓｓ  ）、該アクセスアドレス（ａｄｄｒ）の読み出しデータ（ｄ１（ａｄｄｒ））、該アクセスアドレス（ａｄｄｒ）に引き続く領域からの読み出しデータ（ｄ２（ａｄｄｒ＋４），ｄ３（ａｄｄｒ＋８），ｄ４（ａｄｄｒ＋１２））を蓄える。
【０００８】
なお、ここで、メモリ（ＤＲＡＭ）に格納されているデータ（ｄ１，ｄ２，ｄ３，ｄ４）は、４バイトから成る３２ビットデータであるとし、連続したデータ（ｄ１，ｄ２，ｄ３，ｄ４）は、それぞれ先頭位置が４バイトずつ離れたメモリアドレスに格納される例を示している。
【０００９】
次に行われるメモリリードアクセスのアドレスが、プリフェッチバッファに蓄えられた１エントリ長（ライン）分の範囲内である場合、メモリ（ＤＲＡＭ）へのアクセスを行わず、プリフェッチバッファ（ＢＵＦ）から次データ（ｄ２）を読み出して出力することによって、アクセス時間を短縮することができる。
【００１０】
メモリリードアクセスのアドレスが、プリフェッチバッファに蓄えられたデータのアドレス範囲内と異なるものであった場合には、改めてメモリ（ＤＲＡＭ）へアクセスし、プリフェッチバッファ（ＢＵＦ）の内容を、新しいアクセスデータに書き換える。
【００１１】
そのほかに、本発明に関連する先行技術として、主記憶へのアクセスにおけるプリフェッチ機能に関する技術が、下記の特許文献１に記載されている。特許文献１に記載された技術は、メモリバスを使用するバスマスタユニットと主記憶とのデータ転送において、他のバスマスタユニットがバス使用要求を行っている場合は、プリフェッチを行わないようにしたものである。
【特許文献１】
特開平５−２５７８５９号公報
【００１２】
【発明が解決しようとする課題】
ここで、図２に示したＤＭＡ制御ユニット（ＤＭＡＣ）２−２のように、プロセッサ２−１とは別に、メモリ（ＤＲＡＭ）２−５にアクセスするバスマスタユニットが存在するシステムでは、プロセッサ２−１とＤＭＡ制御ユニット（ＤＭＡＣ）２−２とが交互にバス権を取得してメモリリードアクセスを行った場合に、プロセッサ２−１とＤＭＡ制御ユニット（ＤＭＡＣ）２−２とがアクセスするメモリ領域には連続性がないため、メモリリードアクセス毎にプリフェッチバッファ（ＢＵＦ）が書き換えられ、プリフェッチバッファ（ＢＵＦ）が有効に機能しないという問題があった。
【００１３】
図６に複数のバスマスタユニットが存在する場合のプリフェッチの動作例を示す。いま、プロセッサ（Ｐｒｏｃ）が第１のアドレスａ１にアクセスしたとすると、メモリ（ＤＲＡＭ）から第１のアドレスａ１に続く一連のデータｄ１〜ｄ４を読み出し、プリフェッチバッファ（ＢＵＦ）に蓄える。
【００１４】
しかし、次にＤＭＡ制御ユニット（ＤＭＡＣ）から第２のアドレスａ２へのアクセスがあると、メモリ（ＤＲＡＭ）から第２のアドレスａ２に続く一連のデータｄ５〜ｄ８を読み出し、プリフェッチバッファ（ＢＵＦ）に蓄える。
【００１５】
そして、次に再びプロセッサ（Ｐｒｏｃ）から第１のアドレスａ１に続くアドレス領域（ａ１＋４）のデータｄ２へのアクセスがあったとき、プリフェッチバッファ（ＢＵＦ）は前回のアクセス時に蓄えたデータｄ１〜ｄ４が、他のバスマスタユニットからのアクセスデータｄ５〜ｄ８に書き換えられているため、プリフェッチバッファ（ＢＵＦ）からデータｄ２を読み出すことができず、再び、メモリ（ＤＲＡＭ）にアクセスしてデータｄ２を読み出さなければならない。
【００１６】
本発明は、複数のバスマスタユニットが共通のメモリ（ＤＲＡＭ）にアクセスを行うデータ処理システムにおいて、各バスマスタユニットからのメモリアクセスに対して、それぞれのバスマスタユニットが次のアドレスのデータをプリフェッチしてバッファリングを行うことを可能にし、プリフェッチバッファの効果を高めることを目的とする。
【００１７】
【課題を解決するための手段】
本発明のメモリアクセス制御装置は、（１）共通バスに複数のバスマスタユニットが接続されるデータ処理システムのメモリアクセス制御装置において、バスマスタユニットからのメモリリードアクセス要求に対して、要求されたアクセスアドレスに続く連続したアドレスから複数のデータを予め読み出し、該読み出したデータをプリフェッチバッファに蓄える手段を備え、該バスマスタユニットから再度メモリリードアクセス要求があったとき、該プリフェッチバッファ内に、要求されたアドレスのデータが蓄えられている場合に、該プリフェッチバッファからデータを出力する手段を有し、前記複数のバスマスタユニットに対して前記プリフェッチバッファを複数備え、各プリフェッチバッファは、メモリから読み出した一連のアドレスのデータとともに、該メモリリードアクセス要求を行ったバスマスタユニットを識別するバスマスタユニット識別情報を蓄える手段を有し、バスマスタユニットからのメモリリードアクセス要求により、プリフェッチバッファの内容の書き換えを行うとき、他のバスマスタユニットのバスマスタユニット識別情報が蓄えられているプリフェッチバッファの内容を書き換えることなく、他のバスマスタユニットのバスマスタユニット識別情報が蓄えられていないプリフェッチバッファの内容を書き換える制御を行う手段を備えたものである。
【００１８】
また、（２）前記各プリフェッチバッファを各バスマスタユニットにそれぞれ固定的に割り当て、各プリフェッチバッファにおけるバスマスタユニット識別情報を蓄える手段に、固定的に割り当てたバスマスタユニットのバスマスタユニット識別情報を蓄えた構成を有するものである。
【００１９】
また、（３）前記バスマスタユニットからのメモリリードアクセス要求に対して、要求されたアクセスアドレスに続く連続したアドレスから読み出した複数のデータを蓄えるプリフェッチバッファを、空き状態のプリフェッチバッファの中から選択して割り当て、該選択されたプリフェッチバッファのバスマスタユニット識別情報の書き込み領域に、該プリフェッチバッファを選択したバスマスタユニットの識別情報を書き込む構成を有するものである。
【００２０】
【発明の実施の形態】
図１に本発明のメモリアクセス制御装置の構成を示す。同図に示すように、メモリアクセス制御装置１−５は、メモリアクセス制御回路１−２及び各バスマスタユニット対応のプリフェッチバッファ１−４１〜１−４３から構成される。
【００２１】
図１において、Ｒａは第１のバスマスタユニットａからのバス権要求信号、Ｇａは第１のバスマスタユニットａへのバス権許可信号、Ｒｂは第２のバスマスタユニットｂからのバス権要求信号、Ｇｂは第２のバスマスタユニットｂへのバス権許可信号、Ｒｃは第３のバスマスタユニットｃからのバス権要求信号、Ｇｃは第３のバスマスタユニットｃへのバス権許可信号である。
【００２２】
各バスマスタユニットからのバス権要求信号Ｒａ，Ｒｂ，Ｒｃは、バス権調停回路１−１に入力され、バス権調停回路１−１は同時に２つ以上のバスマスタユニットがメモリにアクセスすることがないように、１つのバスマスタユニットに対してのみバス権許可信号を与える。バス権許可信号Ｇａ，Ｇｂ，Ｇｃは、メモリアクセス制御回路１−２にも出力される。
【００２３】
また、ＡＳ，ＲＷ，Ａ，ＲＤＹ，Ｄは、共通バスの信号群であり、それぞれ、アドレスストローブ信号（Ａｄｄｒｅｓｓ  Ｓｔｒｏｂｅ），読出し／書込み信号（Ｒｅａｄ／Ｗｒｉｔｅ），アドレス信号（Ａｄｄｒｅｓｓ  ），レディ信号（Ｒｅａｄｙ  ），データ信号（Ｄａｔａ）である。アドレスストローブ信号ＡＳ，読出し／書込み信号ＲＷ，アドレス信号Ａは、共通バスからメモリアクセス制御回路１−２に入力され、レディ信号ＲＤＹはメモリアクセス制御回路１−２から共通バスへ出力される。
【００２４】
また、ＲＡＳ，ＣＡＳ，ＯＥ，ＷＥ，ＭＡ，ＭＤは、メモリ（ＤＲＡＭ）の信号群であり、それぞれ、行アドレスストローブ信号（Ｒｏｗ  Ａｄｄｒｅｓｓ  Ｓｔｒｏｂｅ），列アドレスストローブ信号（Ｃｏｌｕｍｎ  Ａｄｄｒｅｓｓ  Ｓｔｒｏｂｅ  ），出力イネーブル信号（Ｏｕｔｐｕｔ  Ｅｎａｂｌｅ  ），書込みイネーブル信号（Ｗｒｉｔｅ  Ｅｎａｂｌｅ），メモリアドレス信号（Ｍｅｍｏｒｙ  Ａｄｄｒｅｓｓ），メモリデータ信号（Ｍｅｍｏｒｙ  Ｄａｔａ  ）である。
【００２５】
行アドレスストローブ信号ＲＡＳ，列アドレスストローブ信号ＣＡＳ，出力イネーブル信号ＯＥ，書込みイネーブル信号ＷＥ，メモリアドレス信号ＭＡは、メモリアクセス制御回路１−２からメモリ（ＤＲＡＭ）１−３に与えられ、メモリデータ信号ＭＤは、メモリ（ＤＲＡＭ）１−３から、後述する複数のプリフェッチバッファ（ＰＦＢ−ａ，ＰＦＢ−ｂ，ＰＦＢ−ｃ）の何れか１つに出力される。
【００２６】
ＢＡは、各プリフェッチバッファ（ＰＦＢ−ａ，ＰＦＢ−ｂ，ＰＦＢ−ｃ）におけるメモリデータ信号ＭＤの書き込み／読み出しアドレスを示すバッファアドレス信号、Ｋは各バスマスタユニット毎に異なるバスマスタユニット識別信号、ＰＦＢ−ａ，ＰＦＢ−ｂ，ＰＦＢ−ｃは、それぞれ、第１のバスマスタユニット，第２のバスマスタユニット，第３のバスマスタユニット対応に設けたプリフェッチバッファ（ＰＦＢ）である。各バスマスタユニットａ，ｂ，ｃは図示省略している。
【００２７】
第１のバスマスタユニットａは、バス権要求信号Ｒａの送出によってバス権を要求し、バス権許可信号Ｇａを受信して許可を得ると、アドレスストローブ信号ＡＳ，読出し／書込み信号ＲＷ，アドレス信号Ａの信号群を駆動してメモリアクセスを行う。
【００２８】
メモリアクセス制御回路１−２は、入力されるアドレスストローブＡＳ，読出し／書込み信号ＲＷ，アドレス信号Ａに従って、行アドレスストローブ信号ＲＡＳ，列アドレスストローブ信号ＣＡＳ，出力イネーブル信号ＯＥ，書込みイネーブル信号ＷＥ，メモリアドレス信号ＭＡを生成して、メモリ（ＤＲＡＭ）１−３へのアクセスを行う。
【００２９】
メモリリード動作の場合、メモリ（ＤＲＡＭ）１−３から読み出されたデータは、メモリデータ信号線ＭＤのを経由し、バスマスタユニット識別信号Ｋにより示されるバスマスタユニットの区別に従って、そのうちの１つのプリフェッチバッファ例えばＰＦＢ−ａに書き込むと同時に、データバスＤに出力される。
【００３０】
第２のバスマスタユニットｂ、第３のバスマスタユニットｃからのメモリアクセスに対して同様に、メモリ（ＤＲＡＭ）１−３から読み出されたデータは、Ｋバスマスタユニット識別信号に従い、それぞれのバスマスタユニットｂ、ｃに対応したプリフェッチバッファＰＦＢ−ｂ，ＰＦＢ−ｃに書き込まれる。
【００３１】
複数のプリフェッチバッファＰＦＢ−ａ，ＰＦＢ−ｂ，ＰＦＢ−ｃを、各バスマスタユニットａ，ｂ，ｃ毎に区別して使用するため、他のバスマスタユニットのメモリアクセスによって、各自のバスマスタユニットのプリフェッチバッファの内容が書き換えられることはない。
【００３２】
各バスマスタユニットのメモリリードアクセス要求に対して、要求されたアドレスの次のアドレスのメモリ内容を予めメモリから読み出し、各バスマスタユニット対応のプリフェッチバッファＰＦＢ−ａ，ＰＦＢ−ｂ，ＰＦＢ−ｃに蓄え、バスマスタユニットから再度メモリリードアクセス要求があったとき、プリフェッチバッファ内に、アクセス要求されたアドレスのデータが蓄えられていれば、プリフェッチバッファからデータを出力する。
【００３３】
各プリフェッチバッファＰＦＢ−ａ，ＰＦＢ−ｂ，ＰＦＢ−ｃは、図５に示したように、読み出しアドレスと該アドレスに対応した読み出しデータとを組にしたフェッチデータをエントリーとして蓄えるとともに、該エントリーと一緒に要求元のバスマスタユニットの識別情報を書き込む領域を付加する。
【００３４】
バスマスタユニットからのメモリリードアクセス要求により、プリフェッチバッファのエントリ内容の書き換えを行うときに、上記プリフェッチバッファの付加領域に書き込まれたバスマスタユニット識別情報を参照し、他のバスマスタユニットによってエントリーされたフェッチデータを書き換えないよう制御する。また、プリフェッチバッファは、メモリリードアクセス要求を行ったバスマスタユニットを示す識別情報を含んだエントリのみを書き換えるよう制御する。
【００３５】
各プリフェッチバッファに各バスマスタユニットを固定的に割り当て、上記バスマスタユニット識別情報書き込み領域に、それぞれ各バスマスタユニットの識別情報を固定的に設定することにより、各バスマスタユニットに専用のプリフェッチバッファを割り当てる構成とすることができる。
【００３６】
また、各バスマスタユニットに専用のプリフェッチバッファを固定的に割り当てることなく、各バスマスタユニットがプリフェッチを行う際に、空き状態のプリフェッチバッファの１つを選択して割り当て、該選択されたプリフェッチバッファのバスマスタユニット識別情報書き込み領域に、該プリフェッチバッファを選択したバスマスタユニットの識別情報を書き込む構成とすることにより、複数のプリフェッチバッファを複数のバスマスタユニットで共用し、メモリリードアクセスの頻度に応じて必要とされる最少個数のプリフェッチバッファのみを具備するようにしてプリフェッチバッファの設置数を削減することができる。
【００３７】
【発明の効果】
以上説明したように、本発明によれば、メモリアクセス制御回路内のプリフェッチバッファを、複数のバスマスタユニットに対応してそれぞれ専用のエントリに分けることにより、別のバスマスタユニットによるメモリリードアクセスでプリフェッチバッファの内容が書き換えられることがなく、プリフェッチバッファが有効に機能するため、各バスマスタユニット毎にプリフェッチによる一連のデータの読み出し時間を短縮することができ、システム性能を向上させることができる。
【図面の簡単な説明】
【図１】本発明のメモリアクセス制御装置の構成を示す図である。
【図２】共通のメモリ領域を使用するデータ処理システムの例を示す図である。
【図３】メモリ（ＤＲＡＭ）へのアクセスの例を示す図である。
【図４】プリフェッチを行うメモリリードアクセスの動作シーケンスの例を示す図である。
【図５】プリフェッチバッファ（ＢＵＦ）に蓄えるデータ例を示す図である。
【図６】複数のバスマスタユニットが存在する場合のプリフェッチの動作例を示す図である。
【符号の説明】
１−１  バス権調停回路
１−２  メモリアクセス制御回路
１−３  メモリ（ＤＲＡＭ）
１−４１〜１−４３  プリフェッチバッファ
１−５  メモリアクセス制御装置
【図１】
2004234446.tif 000003
【図２】
2004234446.tif 000004
【図３】
2004234446.tif 000005
【図４】
2004234446.tif 000006
【図５】
2004234446.tif 000007
【図６】
2004234446.tif 000008