(57)【要約】【課題】メモリ装置のバスバンド幅を向上させるとともに、リードレイテンシを向上させ、かつメモリ装置へのアクセス回数を抑えること。【解決手段】アクセス分配装置１１１が調停したアクセス要求がライトアクセス要求である場合、バッファリング装置１１３は、データテーブル１３２に該当データを書き込む。そして、書き込まれたデータがメモリ装置１０３に転送するために選択された場合にＦＩＦＯメモリ１３１にライトアクセス要求をエントリーする。調停したアクセス要求がリードアクセス要求である場合、バッファリング装置１１３は、そのリード要求されたデータがデータテーブル１３２に存在する場合はそのデータを前記リードデータとしてアクセス分配装置１１１を対して送出する。一方、該当データが存在しない場合は、ＦＩＦＯメモリ１３１にリードアクセス要求をエントリーする。【選択図】      図１
2005011029.tif 000002
【特許請求の範囲】
【請求項１】
複数のバスマスタが共有するメモリ装置へのアクセスを制御するメモリアクセス制御装置であって、
前記複数のバスマスタからのアクセス要求を調停し、受け付けた１のバスマスタに対して受付通知を発行するとともに、前記アクセス要求がライトアクセス要求であるときはライト登録要求を発行した後に前記１のバスマスタに対して完了通知を発行する一方、前記アクセス要求がリードアクセス要求であるときはリード登録要求を発行し、その発行したリード登録要求に従って送られてくるリードデータを前記１のバスマスタに対して中継転送するアクセス分配装置と、
前記アクセス分配装置からの前記ライト登録要求を受けて該当データを予め用意した記憶領域に書き込むとともにメモリ装置上のアドレスを登録し、書き込まれたデータが前記メモリ装置に転送する対象になった場合にライト要求を発行する一方、前記アクセス分配装置からの前記リード登録要求を受けてそのリード要求先のメモリ装置上のアドレスと予め登録されたメモリ装置上のアドレスとを比較して該当データの存在有無を検索し、該当データが存在する場合は、そのデータを前記リードデータとして前記アクセス分配装置に対して送出し、一方、該当データが存在しない場合はアドレスを登録した上でリード要求を発行し、その発行したリード要求に従って送られてくるリードデータをすでに登録済みのアドレスと対にして登録するとともに当該リードデータを前記アクセス分配装置に対して送出するバッファリング装置と、
前記バッファリング装置からの前記ライト要求を受けて前記メモリ装置をアクセスする信号を生成し前記バッファリング装置から送られてくるライトデータを前記メモリ装置に転送する一方、前記バッファリング装置からの前記リード要求を受けて前記メモリ装置をアクセスする信号を生成し前記メモリ装置からのリードデータ及びアドレスを前記バッファリング装置に転送するスケジューリング装置と、
を具備することを特徴とするメモリアクセス制御装置。
【請求項２】
前記バッファリング装置は、前記アクセス分配装置からのアクセス登録要求に基づき前記メモリ装置にアクセスする内容をアクセス要求ジョブとして管理するＦＩＦＯメモリと、前記メモリ装置上のアドレスと前記ＦＩＦＯメモリが管理するアクセス要求ジョブに従いメモリ装置に書き込むデータ及び読み出すデータとそのアドレスを管理するデータテーブルと、を具備することを特徴とする請求項１記載のメモリアクセス制御装置。
【請求項３】
前記ＦＩＦＯメモリは、前記アクセス要求ジョブ毎に、前記アクセス要求ジョブの動作内容が読み出しと書き込みのいずれであるかを示すリード／ライト識別子の記憶領域と、前記データテーブルのテーブルアドレスのうち前記アクセス要求ジョブで用いるテーブルアドレスの記憶領域と、前記メモリ装置にアクセスするデータに再利用性があるか否かを示す再利用識別子の記憶領域と、を具備することを特徴とする請求項２記載のメモリアクセス制御装置。
【請求項４】
前記データテーブルは、当該データテーブルのアドレスであるテーブルアドレスのアドレス毎に、前記メモリ装置の物理アドレスを記憶する領域と、前記物理アドレスに対応づけられたデータを記憶する領域と、前記データ記憶領域に格納されているデータの前記メモリ装置へのアクセス状況を示すアクセス識別子の記憶領域と、前記格納されているデータが前記メモリ装置内のデータと一貫性が保たれているか否かを示す一貫性識別子の記憶領域と、前記メモリ装置にアクセスするバスマスタを識別するためのＩＤを記憶する領域と、バースト長及び、ラップアラウンドのアドレス発行を伴うバーストアクセスであるか、インクリメントのアドレス発行を伴うバーストアクセスであるかを示す情報の記憶領域と、を具備することを特徴とする請求項２記載のメモリアクセス制御装置。
【請求項５】
前記バッファリング装置は、前記データテーブルにおける前記アクセス識別子及び前記一貫性識別子に基づきデータテーブルの占有ライン数である追記可能データ数を算出する手段と、前記追記可能データ数が閾値以下になったことを報知する手段と、前記報知情報に基づき前記データテーブルの格納データを前記メモリ装置に書き込むためのアクセス要求ジョブを前記ＦＩＦＯメモリに発生させる手段と、を具備することを特徴とする請求項２記載のメモリアクセス制御装置。
【請求項６】
前記バッファリング装置は、前記バスマスタの種別や前記バスマスタがアクセスするメモリ装置のアドレスに基づき、アクセス要求ジョブが実行するデータが再利用性のあるデータであるか否かを判別し、その判別結果を前記ＦＩＦＯメモリにおける前記再利用識別子に設定する手段と、前記再利用識別子の設定内容が再利用性無しであるとき前記メモリ装置へのアクセス終了後に前記データテーブルから該当データを削除する手段と、を具備することを特徴とする請求項２記載のメモリアクセス制御装置。
【請求項７】
前記バッファリング装置は、前記ＦＩＦＯメモリにアクセス要求ジョブが存在しないことを報知する手段と、前記報知があったとき、前記データテーブルに格納されているデータのうち前記メモリ装置内データと一致していないデータを選出し、その選出したデータを前記データテーブルからメモリ装置に転送するためのアクセス要求ジョブを前記ＦＩＦＯメモリに発生させる手段と、を具備することを特徴とする請求項２記載のメモリアクセス制御装置。
【請求項８】
前記バッファリング装置は、メモリ装置へのリードアクセス及びライトアクセスの種別に優先順位を付加する手段と、前記ＦＩＦＯメモリにおける前記リード／ライト識別子に基づきメモリ装置へのリードアクセス及びライトアクセスの種別を判別し、前記優先順位に基づいて前記ＦＩＦＯメモリでのアクセス要求ジョブの実行順序を制御する手段と、を具備することを特徴とする請求項２記載のメモリアクセス制御装置。
【請求項９】
前記スケジューリング装置は、前記バッファリング装置からのアクセス要求に対して優先順位を付加する手段と、前記優先順位に基づいてメモリ装置へのアクセスを生じさせる信号を生成する手段と、を具備することを特徴とする請求項１記載のメモリアクセス制御装置。
【請求項１０】
複数のバスマスタとのインタフェースをなす請求項１から請求項９のいずれかに記載のアクセス分配装置と、複数のバンクを持つメモリ装置とのインタフェースをなす請求項１から請求項９のいずれかに記載のスケジューリング装置と、前記アクセス分配装置と前記スケジューリング装置との間に介在する請求項１から請求項９のいずれかに記載のバッファリング装置の複数個とで構成され、前記バッファリング装置の個数がｍで、前記メモリ装置がｎ個のバンク構成であるとすれば、ｍとｎの関係は、任意のｐを用いるとｍ＝ｐ×ｎ、あるいはｎ＝ｐ×ｍが成り立ち、各バッファリング装置は、メモリ装置のアドレス空間をｍ等分したアドレス空間に対するデータを取り扱い、複数のバッファリング装置の相互間では重複したアドレス空間を扱わないようになっていることを特徴とするメモリアクセス制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリアクセス制御装置に関する。
【０００２】
【従来の技術】
高集積化可能なメモリ装置として汎用ＤＲＡＭと基本構成が同一であるＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ：同期型ＤＲＡＭ）がある。ＳＤＲＡＭは、バーストアクセスの際にコマンド方式を用いたパイプラインアーキテクチャを採用しており、高速なデータアクセスメモリ装置として注目されている。
【０００３】
ＳＤＲＡＭは、同一バンク・同一行のメモリセルアクセスに対しては高速データアクセスが可能である。しかし、それぞれのアクセスにはレイテンシが発生するので、その低減方法として、メモリアクセス内容をコマンドとして受け付ける方法が採用され、そのコマンド制御に工夫がなされている。
【０００４】
このＳＤＲＡＭの制御方法としては、例えば特許文献１，２に開示されたものが知られている。以下、その概要を図６を参照して説明する。なお、図６は、従来のＳＤＲＡＭ制御方法を説明する制御系統図である。
【０００５】
図６に示すように、従来のＳＤＲＡＭ制御方法では、複数のバスマスタ（バスマスタ０〜バスマスタ３）６０１がアービタ６０２を仲介してメモリコントローラ６０３にアクセスし、メモリコントローラ６０３がＳＤＲＡＭ６０５にアクセスする方法が採用されている。
【０００６】
具体的には、複数のバスマスタ６０１がＳＤＲＡＭ６０５にアクセスする際には、そのアクセス要求がアービタ６０２にて受け付けられた後、メモリコントローラ６０３内のＦＩＦＯメモリ６０４にバスマスタのアクセス内容がキューイングされる。メモリコントローラ６０３は、ＦＩＦＯメモリ６０４にキューイングされているバスマスタのアクセス内容を参照してＳＤＲＡＭ６０５へのコマンド発行を行うが、そのバースト長、アドレスを参照してどのバンクにアクセスするかを決定する。
【０００７】
【特許文献１】
特開２００１−１２５８２６号公報
【特許文献２】
特開平１１−３４５１６５号公報
【０００８】
【発明が解決しようとする課題】
しかしながら、従来のＳＤＲＡＭ制御方法では、最大バスバンド幅を達成することは、ＦＩＦＯメモリ内のコマンド順序を入れ替えることにて可能であるが、リードデータのレイテンシを向上することには寄与することができない。
【０００９】
また、ＳＤＲＡＭは、アクセスした回数が多いほど消費電力の増加を招くため、そのアクセス回数を削減することが必要となる。
【００１０】
本発明は、かかる点に鑑みてなされたものであり、複数のバスマスタが共有するメモリ装置をアクセスする場合に、メモリ装置のバスバンド幅を向上させるとともに、リードレイテンシを向上させ、かつメモリ装置へのアクセス回数を抑えることができるメモリアクセス制御装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明に係るメモリアクセス制御装置は、複数のバスマスタが共有するメモリ装置へのアクセスを制御するメモリアクセス制御装置であって、前記複数のバスマスタからのアクセス要求を調停し、受け付けた１のバスマスタに対して受付通知を発行するとともに、前記アクセス要求がライトアクセス要求であるときはライト登録要求を発行した後に前記１のバスマスタに対して完了通知を発行する一方、前記アクセス要求がリードアクセス要求であるときはリード登録要求を発行し、その発行したリード登録要求に従って送られてくるリードデータを前記１のバスマスタに対して中継転送するアクセス分配装置と、前記アクセス分配装置からの前記ライト登録要求を受けて該当データを予め用意した記憶領域に書き込むとともにメモリ装置上のアドレスを登録し、書き込まれたデータが前記メモリ装置に転送する対象になった場合にライト要求を発行する一方、前記アクセス分配装置からの前記リード登録要求を受けてそのリード要求先のメモリ装置上のアドレスと予め登録されたメモリ装置上のアドレスとを比較して該当データの存在有無を検索し、該当データが存在する場合は、そのデータを前記リードデータとして前記アクセス分配装置を対して送出し、一方、該当データが存在しない場合はアドレスを登録した上でリード要求を発行し、その発行したリード要求に従って送られてくるリードデータをすでに登録済みのアドレスと対にして登録するとともに当該リードデータを前記アクセス分配装置に対して送出するバッファリング装置と、前記バッファリング装置からの前記ライト要求を受けて前記メモリ装置をアクセスする信号を生成し前記バッファリング装置から送られてくるライトデータを前記メモリ装置に転送する一方、前記バッファリング装置からの前記リード要求を受けて前記メモリ装置をアクセスする信号を生成し前記メモリ装置からのリードデータ及びアドレスを前記バッファリング装置に転送するスケジューリング装置と、を具備する構成を採る。
【００１２】
この構成によれば、複数のバスマスタがメモリ装置上のデータにアクセスする際に、メモリ装置へのメモリアクセスを実施しなくても良い場合があるので、バスマスタのメモリオペレーションを高速化することが可能となる。また、メモリアクセス回数を低減することできるので、省電力化を図ることが可能となる。
【００１３】
本発明に係るメモリアクセス制御装置は、上記の発明において、前記バッファリング装置は、前記アクセス分配装置からのアクセス登録要求に基づき前記メモリ装置にアクセスする内容をアクセス要求ジョブとして管理するＦＩＦＯメモリと、前記メモリ装置上のアドレスと前記ＦＩＦＯメモリが管理するアクセス要求ジョブに従いメモリ装置に書き込むデータ及び読み出すデータとそのアドレスを管理するデータテーブルと、を具備する構成を採る。
【００１４】
この構成によれば、ＦＩＦＯメモリ内のアクセス要求ジョブの順序を変更して、メモリアクセス制御装置とメモリ装置との間でのデータ転送が実現できる。
【００１５】
本発明に係るメモリアクセス制御装置は、上記の発明において、前記ＦＩＦＯメモリは、前記アクセス要求ジョブ毎に、前記アクセス要求ジョブの動作内容が読み出しと書き込みのいずれであるかを示すリード／ライト識別子の記憶領域と、前記データテーブルのテーブルアドレスのうち前記アクセス要求ジョブで用いるテーブルアドレスの記憶領域と、前記メモリ装置にアクセスするデータに再利用性があるか否かを示す再利用識別子の記憶領域と、を具備する構成を採る。
【００１６】
この構成によれば、データテーブル内の情報と相俟って、複数のバスマスタがアクセスする内容を受け付けて、バスマスタの代わりにメモリアクセスが可能となるので、アクセス要求と実際のアクセスとを分離せることができ、それぞれの動作を高効率化することができる。
【００１７】
本発明に係るメモリアクセス制御装置は、上記の発明において、前記データテーブルは、当該データテーブルのアドレスであるテーブルアドレスのアドレス毎に、前記メモリ装置の物理アドレスを記憶する領域と、前記物理アドレスに対応づけられたデータを記憶する領域と、前記データ記憶領域に格納されているデータの前記メモリ装置へのアクセス状況を示すアクセス識別子の記憶領域と、前記格納されているデータが前記メモリ装置内のデータと一貫性が保たれているか否かを示す一貫性識別子の記憶領域と、前記メモリ装置にアクセスするバスマスタを識別するためのＩＤを記憶する領域と、バースト長及び、ラップアラウンドのアドレス発行を伴うバーストアクセスであるか、インクリメントのアドレス発行を伴うバーストアクセスであるかを示す情報の記憶領域と、を具備する構成を採る。
【００１８】
この構成によれば、メモリアクセス制御装置内に保持されているデータとメモリ装置内のデータとの一貫性と有効性を損なうことなく、メモリアクセス制御装置とメモリ装置との間でのデータ転送が実現できる。
【００１９】
本発明に係るメモリアクセス制御装置は、上記の発明において、前記バッファリング装置は、前記データテーブルにおける前記アクセス識別子及び前記一貫性識別子に基づきデータテーブルの占有ライン数である追記可能データ数を算出する手段と、前記追記可能データ数が閾値以下になったことを報知する手段と、前記報知情報に基づき前記データテーブルの格納データを前記メモリ装置に書き込むためのアクセス要求ジョブを前記ＦＩＦＯメモリに発生させる手段と、具備する構成を採る。
【００２０】
この構成によれば、メモリアクセス制御装置内に追記できるデータ量がゼロになるのを前もって避けることが可能となり、メモリアクセスの効率化を図ることが可能となる。
【００２１】
本発明に係るメモリアクセス制御装置は、上記の発明において、前記バッファリング装置は、前記バスマスタの種別や前記バスマスタがアクセスするメモリ装置のアドレスに基づき、アクセス要求ジョブが実行するデータが再利用性のあるデータであるか否かを判別し、その判別結果を前記ＦＩＦＯメモリにおける前記再利用識別子に設定する手段と、前記再利用識別子の設定内容が再利用性無しであるとき前記メモリ装置へのアクセス終了後に前記データテーブルから該当データを削除する手段と、を具備する構成を採る。
【００２２】
この構成によれば、メモリアクセス制御装置内に不要なデータが蓄積されるのを避けることでき、メモリアクセスの効率化を図ることが可能となる。
【００２３】
本発明に係るメモリアクセス制御装置は、上記の発明において、前記バッファリング装置は、前記ＦＩＦＯメモリにアクセス要求ジョブが存在しないことを報知する手段と、前記報知があったとき、前記データテーブルに格納されているデータのうち前記メモリ装置内データと一致していないデータを選出し、その選出したデータを前記データテーブルからメモリ装置に転送するためのアクセス要求ジョブを前記ＦＩＦＯメモリに発生させる手段と、を具備する構成を採る。
【００２４】
この構成によれば、メモリアクセスが行われなくなった時にメモリ装置と一貫性が保たれていないバッファリング装置内のデータをメモリ装置に転送することが可能となり、バッファリング装置にて即座に利用できる領域を増やすことが可能となる。
【００２５】
本発明に係るメモリアクセス制御装置は、上記の発明において、前記バッファリング装置は、メモリ装置へのリードアクセス及びライトアクセスの種別に優先順位を付加する手段と、前記ＦＩＦＯメモリにおける前記リード／ライト識別子に基づきメモリ装置へのリードアクセス及びライトアクセスの種別を判別し、前記優先順位に基づいて前記ＦＩＦＯメモリでのアクセス要求ジョブの実行順序を制御する手段と、を具備する構成を採る。
【００２６】
この構成によれば、リードアクセスを優先的に行うことが可能となり、バスマスタによるリードアクセス時のデータ受け取り時間を短縮することが可能となる。
【００２７】
本発明に係るメモリアクセス制御装置は、上記の発明において、前記スケジューリング装置は、前記バッファリング装置からのアクセス要求に対して優先順位を付加する手段と、前記優先順位に基づいてメモリ装置へのアクセスを生じさせる信号を生成する手段と、を具備する構成を採る。
【００２８】
この構成によれば、ＦＩＦＯメモリに管理されているアクセス要求ジョブを受け付ける順序を工夫することが可能となり、メモリアクセス制御装置とメモリ装置との間でのデータ転送効率が上がるような制御を行うことが可能となる。
【００２９】
本発明に係るメモリアクセス制御装置は、複数のバスマスタとのインタフェースをなす上記発明によるアクセス分配装置と、複数のバンクを持つメモリ装置とのインタフェースをなす上記発明によるスケジューリング装置と、前記アクセス分配装置と前記スケジューリング装置との間に介在する上記発明によるバッファリング装置の複数個とで構成され、前記バッファリング装置の個数がｍで、前記メモリ装置がｎ個のバンク構成であるとすれば、ｍとｎの関係は、任意のｐを用いるとｍ＝ｐ×ｎ、あるいはｎ＝ｐ×ｍが成り立ち、各バッファリング装置は、メモリ装置のアドレス空間をｍ等分したアドレス空間に対するデータを取り扱い、複数のバッファリング装置の相互間では重複したアドレス空間を扱わない構成になっている。
【００３０】
この構成によれば、コヒーレンシを保ったうえで、アクセス分配装置からのアクセス登録要求を処理する順序を考慮することでメモリ装置とバッファリング装置との間での高効率な転送制御を行うことが可能となる。
【００３１】
【発明の実施の形態】
本発明の骨子は、ＤＳＰを含む複数のプロセッサやＤＭＡコントローラが共有するメモリ装置として比較的大きなレイテンシを伴うメモリ装置、例えば、ＳＤＲＡＭにアクセスする場合に、プロセッサやＤＭＡコントローラの性能を損なわずにメモリバンド幅を向上させ、効率的かつ省電力のメモリアクセスを実現することである。なお、本発明のメモリアクセス制御装置は、内蔵ＳＲＡＭなどアクセス時に大きなレイテンシを伴わないメモリ装置の制御部とも組み合わせて使用することも可能である。
【００３２】
以下、本発明の実施の形態について、添付図面を参照して詳細に説明する。
【００３３】
（実施の形態１）
図１は、本発明の実施の形態１に係るメモリアクセス制御装置の構成を示すブロック図である。図２は、図１に示すバッファリング装置の具体的な構成例を示すブロック図である。
【００３４】
図１において、実施の形態１に係るメモリアクセス制御装置１０１は、複数のバスマスタ（バスマスタ０〜バスマスタ４）１０２とのインタフェースをなす、アクセス分配装置１１１と、複数のバスマスタ１０２が共有するメモリ装置１０３とのインタフェースをなすスケジューリング装置１１２と、アクセス分配装置１１１とスケジューリング装置１１２との間に介在するバッファリング装置１１３と、から構成されている。
【００３５】
バッファリング装置１１３は、アクセス分配装置１１１からのアクセス要求に基づきメモリ装置１０３にアクセスする内容をアクセス要求ジョブとして管理するＦＩＦＯメモリ１３１と、メモリ装置１０３上のアドレスとＦＩＦＯメモリ１３１が管理するアクセス要求ジョブに従いメモリ装置１０３に書き込むデータ及び読み出すデータとを管理するデータテーブル１３２とを備えている。
【００３６】
バッファリング装置１１３は、具体的には、例えば図２に示すように構成されている。図２に示すように、ＦＩＦＯメモリ１３１とデータテーブル１３２には、各種のパラメータを記憶する領域が設けられている。また、バッファリング装置１１３には、ＦＩＦＯメモリ１３１とデータテーブル１３２の他に、各種の周辺装置が設けられている。
【００３７】
バッファリング装置１１３の具体的な構成（図２）と詳細動作（図３、図４）は、後述するとして、全体的な動作を説明する。
【００３８】
以上の構成において、アクセス分配装置１１１は、複数のバスマスタ１０２からのアクセス要求（リードアクセス要求、ライトアクセス要求）を調停し、一つのバスマスタ１０２からのアクセス要求を受け付けると、受け付けたバスマスタ１０２に対して受け付けたことを通知する。
【００３９】
そして、アクセス分配装置１１１は、調停したアクセス要求がライトアクセス要求である場合は、バッファリング装置１１３に対してライト登録要求を発行した後にアクセス要求を受け付けたバスマスタ１０２にライト終了を通知する。一方、アクセス分配装置１１１は、調停したアクセス要求がリードアクセス要求である場合は、バッファリング装置１１３に対してリード登録要求を発行し、その発行したリード登録要求に従ってバッファリング装置１１３から送られてくるリードデータを受け付けたバスマスタ１０２に中継転送する。
【００４０】
バッファリング装置１１３では、アクセス分配装置１１１からライト登録要求を受けて、データテーブル１３２にライトデータを書き込む領域があれば該当データを書き込むとともに、メモリ装置１０３上のアドレスを登録する。そして、バッファリング装置１１３では、データテーブル１３２に書き込まれたデータがメモリ装置１０３に転送するために選択された場合に、ＦＩＦＯメモリ１３１にメモリ装置１０３へのライトアクセス要求をアクセス要求ジョブとしてエントリーする。これによって、スケジューリング装置１１２では、そのアクセス要求ジョブを選択し、ライトアクセス要求はメモリ装置１０３のアクセス信号に変換されデータの書き込みが行われる。
【００４１】
また、バッファリング装置１１３では、アクセス分配装置１１１からリード登録要求を受けて、そのリード要求先のメモリ装置上のアドレスとデータテーブル１３２に登録されたメモリ装置上のアドレスとを比較して該当データの存在有無を検索し、該当データが存在する場合は、そのデータを前記リードデータとしてアクセス分配装置１１１に対して送出する。
【００４２】
一方、バッファリング装置１１３では、前記検索の結果、該当データが存在しない場合は、ＦＩＦＯメモリ１３１にメモリ装置１０３へのリードアクセス要求をアクセス要求ジョブとしてエントリーする。これによって、スケジューリング装置１１２では、そのアクセス要求ジョブが選択され、メモリ装置１０３のアクセス信号に変換され、読み出しが行われる。バッファリング装置１１３では、スケジューリング装置１１２から送られてくるリードデータ及びアドレスをデータテーブル１３２の該当記憶領域に登録するとともに、当該リードデータをアクセス分配装置１１１に対して送出する。
【００４３】
次に、バッファリング装置１１３の具体的な構成について説明する。図２において、ＦＩＦＯメモリ１３１は、アクセス要求ジョブを格納する実行順序管理装置２５２を備えている。そして、アクセス要求ジョブ毎に、リード／ライト（ｒｅａｄ／ｗｒｉｔｅ）識別子２００、再利用識別子２０１及びテーブルアドレス２０２の記憶領域をそれぞれ設けて管理している。
【００４４】
ｒｅａｄ／ｗｒｉｔｅ識別子２００は、アクセス要求ジョブの動作がｒｅａｄ属性（メモリ装置１０３からの読み出し）であるか、ｗｒｉｔｅ属性（メモリ装置１０３への書き込み）であるかを示す。ｒｅａｄ／ｗｒｉｔｅ識別子２００は、ｒｅａｄ属性及びｗｒｉｔｅ属性を持つアクセス要求ジョブの動作順序を入れ替える制御に用いられる。
【００４５】
即ち、ｒｅａｄ／ｗｒｉｔｅ入れ替え制御レジスタ２５１には、バスマスタ１０２から、ｒｅａｄ／ｗｒｉｔｅ識別子２００が表示しているｒｅａｄ属性及びｗｒｉｔｅ属性を持つアクセス要求ジョブの動作順序の入れ替え制御を有効とするか無効とするかが設定されるようになっている。
【００４６】
ｒｅａｄ／ｗｒｉｔｅ識別装置２５０は、ｒｅａｄ／ｗｒｉｔｅ識別子２００を参照してｒｅａｄ属性及びｗｒｉｔｅ属性を持つアクセス要求ジョブの位置を識別し、ｒｅａｄ／ｗｒｉｔｅ入れ替え制御レジスタ２５１の設定が「入れ替え制御が有効」であるとき、実行順序管理装置２５２に対してｒｅａｄが優先的に処理されるように実行順序を変更させる。
【００４７】
次の再利用識別子２０１は、アクセス要求ジョブで取り扱うデータをメモリ装置１０３にアクセスした後に再参照する（ｙｅｓ）か否（ｎｏｔ）かを示す。この再利用識別子２０１は、再利用識別装置２３１によって設定される。
【００４８】
即ち、再利用識別装置２３１は、ＦＩＦＯメモリ１３１の発生するアクセス要求ジョブが、特定領域レジスタ２３２に設定されている特定領域へのアクセスであるか否かを判断する。また、再利用識別装置２３１は、ＦＩＦＯメモリ１３１の発生するアクセス要求ジョブが、特定マスタレジスタ２３３に設定されているバスマスタからのアクセスであるか否かをデータテーブル１３２内のバスマスタＩＤ２０８と比較して判断する。
【００４９】
その結果、再利用識別装置２３１は、ＦＩＦＯメモリ１３１の発生するアクセス要求ジョブが、特定領域レジスタ２３２に設定されている特定領域へのアクセスであるとき、または、特定マスタレジスタ２３３に設定されているバスマスタからのアクセスであるとき、再利用識別子２０１に有効（ｙｅｓ）を表示し、いずれでもないとき無効（ｎｏｔ）を表示する。なお、特定領域レジスタ２３２と特定マスタレジスタ２３３には、バスマスタ１０２から任意に設定できるようになっている。
【００５０】
次のテーブルアドレス２０２には、データテーブル１３２内のテーブルアドレス２０３が格納される。すなわち、テーブルアドレス２０２には、アクセス分配装置１１１からアクセス要求があったとき、アクセスジョブの実行において実際にメモリ装置１０３と間での転送に用いるデータテーブル１３２内のテーブルアドレス２０３が格納される。
【００５１】
また、ＩＤＬＥ観測装置２４１は、ＦＩＦＯメモリ１３１に発生するアクセス要求ジョブが存在するか否かを識別し、ＩＤＬＥ（アイドル）であるとき、つまり存在しないとき、その旨を退出選択装置２２４に通知するようになっている。
【００５２】
次に、データテーブル１３２は、当該データテーブル１３２のアドレスであるテーブルアドレス２０３のアドレス毎に、モディファイ（ｍｏｄｉｆｙ）識別子２０４、アクセス識別子２０５、メモリ装置１０３上の物理アドレス２０６、物理アドレス２０６に対応づけられたデータ２０７、メモリ装置１０３にアクセスするバスマスタを識別するバスマスタＩＤ２０８及びバースト種別２０９をそれぞれ記憶する領域を設けて管理している。
【００５３】
ｍｏｄｉｆｙ識別子２０４は、データテーブル１３２内のデータ２０７がアドレス２０６に対応するメモリ装置１０３上のデータと一致しない場合には当該データ２０７をメモリ装置１０３への転送データとして用いるので有効（Ｙｅｓ）となり、一致する場合には当該データ２０７はメモリ装置１０３への転送データとして用いないので無効（ｎｏｔ）となる。
【００５４】
アクセス識別子２０５は、データ２０７のメモリ装置１０３へのアクセス状況を示す情報であり、アクセス終了「ｆｉｎｉｓｈｅｄ」、アクセス無しの初期状態「ｎｏ  ａｃｃｅｓｓ」、アクセス中「ａｃｃｅｓｓ」を表示する。具体的には、ライトアクセス時では、テーブルアドレス２０３に存在するアドレスに対するライトアクセスの受け付けによって、データ２０７がメモリ装置１０３に書き込まれるまでアクセス中「ａｃｃｅｓｓ」が表示される。また、リードアクセス時では、テーブルアドレス２０３に存在するアドレスに対応するリードアクセスの受け付けによって、メモリ装置１０３からのデータの読み出しが行われるとアクセス中「ａｃｃｅｓｓ」が表示され、終了するとアクセス終了「ｆｉｎｉｓｈｅｄ」が表示される。
【００５５】
バースト種別２０９には、バースト長と、ラップアラウンド（ｗｒａｐ  ａｒｏｕｎｄ）のアドレス発行を伴うバーストアクセスであるか、インクリメント（ｉｎｃｒｅｍｅｎｔ）のアドレス発行を伴うバーストアクセスであるかを示すフラグとが格納されている。
【００５６】
次に、有効ライン算出装置２２３では、ｍｏｄｉｆｙ識別子２０４の有効フラグとアクセス識別子２０５の有効フラグとを参照してデータテーブル１３２の占有ライン数である追記可能データ数を算出する。具体的には、アクセス識別子２０５が「ｎｏ  ａｃｃｅｓｓ」のテーブル内のライン数と、アクセス識別子２０５が「ｆｉｎｉｓｈｅｄ」かつ、ｍｏｄｉｆｙ識別子２０４が「ｎｏｔ」のテーブル内のライン数との合計を、データテーブル内の全ライン数から減算したライン数が追記可能なデータライン数となる。そして、有効ライン算出装置２２３での算出結果と閾値レジスタ２２１に設定されている閾値とが比較器２２２にて比較され、比較結果が退出選択装置２２４に与えられる。
【００５７】
比較器２２２の比較結果が、占有ライン数が閾値レジスタ２２１に設定されている閾値よりも小さいときは、ｍｏｄｉｆｙ識別子２０４には無効フラグが多い（つまり追記可能である）ことを示し、逆の場合は、ｍｏｄｉｆｙ識別子２０４には有効フラグが多い（つまり追記可能でない）ことを示す。
【００５８】
退出選択装置２２４では、比較器２２２での比較結果からｍｏｄｉｆｙ識別子２０４のフラグ状況を判断し、ｍｏｄｉｆｙ識別子２０４が無効であれば上書きが可能（つまり追記可能）であるので何もしない。一方、ｍｏｄｉｆｙ識別子２０４が有効であればメモリ装置１０３に転送するために、退出選択装置２２４は、メモリ装置１０３内のデータ２０７と一貫性が保たれていないラインを選択し、メモリ装置１０３へのｗｒｉｔｅ属性を持ったアクセス要求ジョブをＦＩＦＯメモリ１３１に発生させる。そして、ＩＤＬＥ観測装置２４１からの上記アイドル通知を受けた後に、選択したデータテーブルのラインを無効にする。また、退出選択装置２２４は、メモリ装置１０３にデータの書き込みが行われると、ｍｏｄｉｆｙ識別子２０４を更新するようになっている。
【００５９】
次に、図３、図４を参照して、以上のように構成されるバッファリング装置１１３の動作について説明する。なお、図３は、図１に示すバッファリング装置１１３におけるライトアクセス要求発生時の動作を説明するフロー図である。図４は、図１に示すバッファリング装置１１３におけるリードアクセス要求発生時の動作を説明するフロー図である。
【００６０】
図３において、アクセス分配装置１１１からライトアクセス要求が入力すると（ステップＳＴ３０１）、ライト先アドレスがデータテーブル１３２内に存在するか否かを検索する（ステップＳＴ３０２）。その結果、ライト先アドレスがデータテーブル１３２内に存在する場合は（ステップＳＴ３０３：Ｙｅｓ）、データテーブル１３２内の該当するデータ領域にデータ２０７を格納し（ステップＳＴ３０４）、ステップＳＴ３０８に進む。
【００６１】
一方、ライト先アドレスがデータテーブル１３２内に存在しない場合は（ステップＳＴ３０３：Ｎｏ）、データテーブル１３２に追記できるか否かを判断する（ステップＳＴ３０５）。その結果、追記可能でない場合は（ステップＳＴ３０５：Ｎｏ）、退出選択装置２２４によるデータの退出処理を行って書き込み領域を確保し（ステップＳＴ３０６）、その確保した領域にアドレスとデータを登録し（ステップＳＴ３０７）、ステップＳＴ３０８に進む。また、データテーブル１３２に追記できる場合は（ステップＳＴ３０５：Ｙｅｓ）、その追記可能な領域にアドレスとデータを登録し（ステップＳＴ３０７）、ステップＳＴ３０８に進む。
【００６２】
ステップＳＴ３０８では、書き込んだデータが再利用されるか否かを再利用識別子２０１を参照して判断する。その判断結果、再利用するデータであれば（ステップＳＴ３０８：Ｙｅｓ）、本処理は終了するが、再利用されないデータであれば（ステップＳＴ３０８：Ｎｏ）、ＦＩＦＯメモリ１３１にライトアクセスとして登録し、そのアクセスに対するメモリ装置１０３へのデータ書込み後に、データテーブル１３２の対象データ領域を空き領域として開放し（ステップＳＴ３０９）、その後本処理を終了する。
【００６３】
次に、図４において、アクセス分配装置１１１からリードアクセス要求が入力すると（ステップＳＴ４０１）、リード先アドレスがデータテーブル１３２内に存在するか否かを検索する（ステップＳＴ４０２）。その結果、リード先アドレスがデータテーブル１３２内に存在する場合は（ステップＳＴ４０３：Ｙｅｓ）、物理アドレス２０６に対応づけられたデータ２０７が有効であるか否かを判断する（ステップＳＴ４０４）。そして、対応するデータ２０７が有効であれば（ステップＳＴ４０４：Ｙｅｓ）、直接ステップＳＴ４０８に進む。
【００６４】
一方、リード先アドレスがデータテーブル１３２内に存在しない場合（ステップＳＴ４０３：Ｎｏ）や、対応するデータ２０７が有効でない場合は（ステップＳＴ４０４：Ｎｏ）、データテーブル１３２に追記できるか否かを判断する（ステップＳＴ４０５）。その結果、追記可能でない場合は（ステップＳＴ４０５：Ｎｏ）、退出選択装置２２４によるデータの退出処理を行って書き込み領域を確保し（ステップＳＴ４０６）、その確保した領域にメモリ装置１０３から読み出したデータとアドレスを登録し（ステップＳＴ４０７）、ステップＳＴ４０８に進む。
【００６５】
また、リード先アドレスがデータテーブル１３２内に存在しない場合（ステップＳＴ４０３：Ｎｏ）や、対応するデータ２０７が有効でない場合でも（ステップＳＴ４０４：Ｎｏ）、データテーブル１３２に追記できる場合は（ステップＳＴ４０５：Ｙｅｓ）、直接ステップＳＴ４０８に進む。
【００６６】
ステップＳＴ４０８では、データテーブル１３２のデータ２０７がリードアクセスを要求したバスマスタ１０２によって読み出される。並行して、書き込んだデータが再利用されるか否かを再利用識別子２０１を参照して判断する（ステップＳＴ４０９）。その判断結果、再利用するデータであれば（ステップＳＴ４０９：Ｙｅｓ）、本処理は終了するが、再利用されないデータであれば（ステップＳＴ４０９：Ｎｏ）、データテーブル１３２の対象データ領域を空き領域として開放し（ステップＳＴ４１０）、その後本処理を終了する。
【００６７】
このように、本実施の形態１によれば、複数のバスマスタがメモリ装置上のデータにアクセスする場合に、メモリ装置へのアクセスを実施しなくても良い場合があるので、バスマスタのメモリオペレーションを高速化することが可能となり、またメモリアクセス回数の低減によって省電力化を図ることが可能となる。
【００６８】
ここで、バッファリング装置１１３は、アクセス分配装置１１１からのアクセス要求に基づきメモリ装置１０３にアクセスする内容をアクセス要求ジョブとして管理するＦＩＦＯメモリ１３１と、メモリ装置１０３上のアドレスとＦＩＦＯメモリ１３１が管理するアクセス要求ジョブに従いメモリ装置１０３に書き込むデータ及び読み出すデータとを管理するデータテーブル１３２とを備えるので、ＦＩＦＯメモリ１３１内のアクセス要求ジョブの順序を変更して、メモリアクセス制御装置１０１とメモリ装置１０３との間のデータ転送を実現することが可能となる。
【００６９】
また、ＦＩＦＯメモリ１３１は、実行順序管理装置２５２が管理するアクセス要求ジョブ毎に、アクセス要求ジョブの動作内容が読み出しと書き込みのいずれであるかを示すリード／ライト識別子２００と、データテーブル１３２のテーブルアドレス２０３のうちアクセス要求ジョブで用いるテーブルアドレス２０２と、メモリ装置１０３にアクセスするデータに再利用性があるか否かを示す再利用識別子２０１とを、それぞれ記憶して管理するようにしたので、データテーブル１３２の情報と相俟って、複数のバスマスタ１０２の代わりにメモリアクセスが可能となる。したがって、アクセス要求と実際のアクセスとが分離でき、それぞれでの動作を高効率化することができる。
【００７０】
また、データテーブル１３２は、当該データテーブルのアドレスであるテーブルアドレス２０３のアドレス毎に、メモリ装置１０３の物理アドレス２０６と、物理アドレス２０６に対応づけられたデータ２０７と、格納されているデータ２０７のメモリ装置１０３へのアクセス状況を示すアクセス識別子０５と、格納されているデータ２０７がメモリ装置１０３内のデータと一貫性が保たれているか否かを示す一貫性識別子であるｍｏｄｉｆｙ識別子２０４と、アクセスしてきたバスマスタ１０２を識別するためのバスマスタＩＤ２０８と、バースト長及び、ラップアラウンドのアドレス発行を伴うバーストアクセスであるか、インクリメントのアドレス発行を伴うバーストアクセスであるかを示す情報であるバースト種別２０９とを、それぞれ記憶して管理するようにしたので、データテーブル１３２内に保持されているデータ２０７とメモリ装置１０３内のデータの一貫性と有効性を損なうことなく、メモリアクセス制御装置１０１とメモリ装置１０３との間でのデータ転送が実現できる。
【００７１】
また、バッファリング装置１１３は、データテーブル１３２におけるアクセス識別子２０５及びｍｏｄｉｆｙ識別子２０４に基づきデータテーブル１３２の占有ライン数である追記可能データ数を算出する手段である有効ライン算出装置２２３と、前記追記可能データ数が閾値以下になったことを報知する手段である閾値レジスタ２２１及び比較器２２２と、比較器２２２から前記報知情報に基づきデータテーブル１３２の格納データ２０７をメモリ装置１０３に書き込むためのアクセス要求ジョブをＦＩＦＯメモリ１３１に発生させる手段である退出選択装置２２４とを備えたので、メモリアクセス制御装置１０１内に追記できるデータ量がゼロになることを前もって避けることが可能となり、メモリアクセスの効率化を図ることが可能となる。
【００７２】
また、バッファリング装置１１３は、バスマスタ１０２の種別（特定マスタレジスタ２３３）やバスマスタ１０２がアクセスするメモリ装置１０３のアドレス（特定領域レジスタ２３２）に基づき、アクセス要求ジョブが実行するデータが再利用性のあるデータであるか否かを判別し、その判別結果をＦＩＦＯメモリ１３１における再利用識別子２０１に設定する手段である再利用識別装置２３１と、再利用識別子２０１の設定内容が再利用性無しであるときメモリ装置１０３へのアクセス終了後にデータテーブル１３２から該当データを削除する手段である退出選択装置２２４とを備えたので、メモリアクセス制御装置１０１内に不要なデータが蓄積されるのを避けることができ、メモリアクセスの効率化を図ることが可能となる。
【００７３】
また、バッファリング装置１１３は、ＦＩＦＯメモリ１３１にアクセス要求ジョブが存在しない（つまりアイドルである）ことを報知する手段であるＩＤＬＥ観測装置２４１と、ＩＤＬＥ観測装置２４１から前記アイドルの報知があったとき、データテーブル１３２に格納されているデータ２０７のうちメモリ装置内データと一致していないデータ２０７を選出し、その選出したデータ２０７をデータテーブル１３２からメモリ装置１０３に転送するためのアクセス要求ジョブをＦＩＦＯメモリ１３１に発生させる手段である退出選択装置２２４とを備えたので、メモリアクセスがアイドルの時にバッファリング装置１１３内に存在するメモリ装置１０３と一貫性が保たれていないデータ２０７をメモリ装置１０３に転送することが可能となり、バッファリング装置１１３にて即座に利用できる領域を増やすことが可能となる。
【００７４】
また、バッファリング装置１１３は、メモリ装置１０３へのリードアクセス及びライトアクセスの種別に優先順位を付加する手段であるｒｅａｄ／ｗｒｉｔｅ入れ替え制御レジスタ２５２と、ＦＩＦＯメモリ１３１におけるリード／ライト識別子２００に基づきメモリ装置１０３へのリードアクセス及びライトアクセスの種別を判別し、前記優先順位に基づいてＦＩＦＯメモリ１３１でのアクセス要求ジョブの実行順序を制御する手段であるｒｅａｄ／ｗｒｉｔｅ識別装置２５０とを備えたので、リードアクセスを優先的に行うことが可能となり、バスマスタ１０２によるリードアクセス時のデータ受け取り時間を短縮することが可能となる。
【００７５】
加えて、スケジューリング装置１１２は、バッファリング装置１１３からのアクセス要求に対して優先順位を付加する手段と、優先順位に基づいてメモリ装置１０３へのアクセスを生じさせる信号を生成する手段とを備えるようにすることができる。これによれば、ＦＩＦＯメモリ１３１にて管理されているアクセス要求ジョブを受け付ける順序を工夫することが可能となり、メモリアクセス制御装置１０１とメモリ装置１０３との間でのデータ転送の効率が上がるような制御を行うことが可能となる。
【００７６】
（実施の形態２）
図５は、本発明の実施形態２に係るメモリアクセス制御装置の構成を示すブロック図である。図５に示すように、実施形態２に係るメモリアクセス制御装置３０１は、複数のバスマスタ（バスマスタ０〜バスマスタ４）１０２がアクセスするメモリ装置３０２が複数のバンク３２１を持つ場合を制御対象としている。
【００７７】
図５において、メモリアクセス制御装置３０１は、複数のバスマスタ（バスマスタ０〜バスマスタ４）１０２とのインタフェースをなすアクセス分配装置３１１と、複数のバスマスタ１０２が共有するメモリ装置３０２とのインタフェースをなすスケジューリング装置３１２と、アクセス分配装置３１１とスケジューリング装置３１２との間に介在する複数のバッファリング装置３１３とで構成されている。
【００７８】
アクセス分配装置３１１は、複数のバッファリング装置３１３が実装されているので、バスマスタ１０２のアクセス調停後にアクセス登録要求を複数のバッファリング装置３１３に振り分けることを行う。この振り分け基準は、特定のアドレス領域に基づき行うようになっている。
【００７９】
また、アクセス分配装置３１１は、それぞれのバッファリング装置３１３に振り分けたリードアクセス登録要求に対しバッファリング装置３１３から送られてきたリードデータをバスマスタ１０２が要求した順序でバスマスタ１０２に送出する機能を有している。
【００８０】
複数のバッファリング装置３１３は、それぞれ実施の形態１にて説明したバッファリング装置１１３と同一の構成であって、同様構成のデータテーブル３３１とＦＩＦＯメモリ３３２を備えている。
【００８１】
スケジューリング装置３１２は、複数のバッファリング装置３１３におけるＦＩＦＯメモリ３３２において先頭のアクセス要求ジョブが選択し、メモリ装置３０２へのアクセス信号に変換し、バッファリング装置３１３とメモリ装置３０２との間でのデータ転送を行う。
【００８２】
このとき、メモリ装置３０２が、同一バンク３２１ヘのアクセスやリード／ライトのアクセスが交互に発生するＳＤＲＡＭである場合は、バンド幅が低下する。そのため、スケジューリング装置３１２では、その点を最大限に回避する方策を行った上で、高効率なメモリアクセスを実現するようにしている。
【００８３】
ここで、バッファリング装置３１３の個数がｍで、メモリ装置３０２がｎ個のバンク構成であるとすれば、ｍとｎの関係は、任意のｐを用いるとｍ＝ｐ×ｎ、あるいはｎ＝ｐ×ｍが成り立ち、各バッファリング装置３１３は、メモリ装置３０２のアドレス空間をｍ等分したアドレス空間に対するデータを取り扱い、複数のバッファリング装置３１３の相互間では重複したアドレス空間を扱わないようになっている。
【００８４】
この構成により、コヒーレンシを保ったうえで、アクセス分配装置３１１からのアクセス登録要求を処理する順序を考慮することでメモリ装置３０２とバッファリング装置３１３との間の高効率な転送制御を行うことが可能となる。
【００８５】
なお、各実施の形態では、メモリ装置としてＳＤＲＡＭを念頭において説明したが、本発明はそれに限定されるものではなく、その他の高速アクセスメモリにも適応可能であり、メモリ装置内で構成されるバンク数についても制限はないことは言うまでもない。
【００８６】
【発明の効果】
以上説明したように、本発明によれば、複数のバスマスタが共有するメモリ装置をアクセスする場合に、メモリ装置のバスバンド幅を向上させるとともに、リードレイテンシを向上させ、かつメモリ装置へのアクセス回数を抑えることができる。
【図面の簡単な説明】
【図１】本発明の実施形態１に係るメモリアクセス制御装置の構成を示すブロック図
【図２】図１に示すバッファリング装置の具体的な構成例を示すブロック図
【図３】図１に示すバッファリング装置におけるライトアクセス要求発生時の動作を説明するフロー図
【図４】図１に示すバッファリング装置におけるリードアクセス要求発生時の動作を説明するフロー図
【図５】本発明の実施形態２に係るメモリアクセス制御装置の構成を示すブロック図
【図６】従来のＳＤＲＡＭ制御方法を説明する制御系統図
【符号の説明】
１０１，３０１  メモリアクセス制御装置
１０２  バスマスタ
１０３，３０２  メモリ装置
１１１，３１１  アクセス分配装置
１１２，３１２  スケジューリング装置
１１３，３１３  バッファリング装置
１３１，３３２  ＦＩＦＯメモリ
１３２，３３１  データテーブル
２００  リード／ライト（ｒｅａｄ／ｗｒｉｔｅ）識別子
２０１  再利用識別子
２０２，２０３  テーブルアドレス
２０４  モディファイ（ｍｏｄｉｆｙ）識別子
２０５  アクセス識別子
２０６  物理アドレス
２０７  データ
２０８  バスマスタＩＤ
２２１  閾値レジスタ
２２２  比較器
２２３  有効ライン算出装置
２２４  退出選択装置
２３１  再利用識別装置
２３２  特定領域レジスタ
２３３  特定マスタレジスタ
２４１  アイドル（ＩＤＬＥ）観測装置
２５０  ｒｅａｄ／ｗｒｉｔｅ識別装置
２５１  ｒｅａｄ／ｗｒｉｔｅ入れ替え制御レジスタ
２５２  実行順序管理装置
３２１  バンク
【図１】
2005011029.tif 000003
【図２】
2005011029.tif 000004
【図３】
2005011029.tif 000005
【図４】
2005011029.tif 000006
【図５】
2005011029.tif 000007
【図６】
2005011029.tif 000008