(57)【要約】【課題】  複数処理ユニットが単一もしくは複数メモリを共有する計算機システムにおいて、メモリコントローラにおける効率的な優先制御を可能とする。【解決手段】  メモリコントローラ内にリオーダーリング可能なメモリアクセスコマンド発行キューとコマンド優先度設定入力をもち、さらに前記コマンド発行キューはコマンド優先度設定入力に基づいた各メモリアクセスコマンドの優先度を保持する。メモリアクセスコマンド発行キューは保持された優先度に基づきリオーダーリングされ、主記憶へのアクセス順序が決定される。【選択図】  図１
2007026366.tif 000002
【特許請求の範囲】
【請求項１】
リオーダーリング可能なメモリアクセスコマンド発行キューと
メモリアクセスコマンド優先度設定入力をもち、
前記コマンド発行キューは各メモリアクセスコマンドと優先度設定入力より決定される各コマンドの優先度を保持し、
保持された優先度に基づき、前記コマンド発行キュー内のコマンドのリオーダーリングを実施する手段を備えた事を特徴とするメモリコントローラ。
【請求項２】
リオーダーリング可能なメモリアクセスコマンド発行キューと
マスター毎に優先度設定を保持する手段とを有し、
前記コマンド発行キューは各メモリアクセスコマンドとアクセスコマンドを発行したマスター情報を保持し、
保持されたマスター情報と優先度設定情報に基づき、前記コマンド発行キュー内のコマンドのリオーダーリングを実施する手段を備えた事を特に徴とするメモリコントローラ。
【請求項３】
請求項１乃至２における優先度設定に基づくリオーダーリングのイネーブル機能を備えた事を特徴とするメモリコントローラ。
【請求項４】
請求項１乃至３を搭載したコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数マスターが単一もしくは複数メモリを共有する計算機システムにおけるメモリコントローラに係わり、複数マスター間、もしくは単一マスター内のアクセス優先順位制御方式に関するものである。
【背景技術】
【０００２】
図2は従来のメモリコントローラにより複数マスターからのメモリアクセスを制御するシステムのブロック図である。１はASIC（Application Specific Integrated Circuit）であり、メモリ２は例えば、大容量のDRAM（Dynamic Random Access Memory）である。また、ASIC１とメモリ２間は、３メモリバスで接続される。ASIC１は４のメモリコントローラ、７−０〜７−ｎの複数処理ユニットおよびメモリコントローラと複数処理ユニットを接続する共有バス５からなる。メモリコントローラ４は内部にメモリアクセスコマンド発行キュー６を持つ。処理ユニット（７−０〜７―ｎ）からのメモリアクセス要求は共有バス５を介して、メモリコントローラ４に伝えられる。複数の処理ユニットから同時にアクセス要求があった場合、共有バス５では、処理ユニット（７−０〜７―ｎ）からのアクセス要求の調停が行われる。このアクセス要求は一旦、メモリアクセスコマンド発行キュー６に保持される。メモリアクセスコマンド発行キュー内部のメモリアクセスコマンドはメモリバス３の状態およびメモリアクセスコマンド発行キュー６内に保持されているメモリアクセスコマンドの内容に応じてリオーダーリングが行われ、コマンド発行キュー内の先頭にあるメモリアクセスコマンドがメモリ２に発行される。前記コマンド発行キューは通常メモリバンド幅を最大にするように設計されている。
【０００３】
また、半導体プロセスの進歩と共にASIC１に搭載される処理ユニットの数は増大している。一方で半導体パッケージの制約からASIC1の外部に接続可能なメモリ２は限られており、１つのメモリを共有する処理ユニットの数は増大している。
【０００４】
又、従来例としては、例えば特許文献１と特許文献２と特許文献３をあげることが出来る。
【特許文献１】特開平11-53257号公報
【特許文献２】特開2004-355435号公報
【特許文献３】特開2001-34530号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
複数の処理ユニットを含む計算機システムにおいて、アプリケーションプログラムのリアルタイム性が課題となる場合に、ソフトウェアによって複数処理ユニットからのメモリアクセスの優先順位を設定することが必要となる。
【０００６】
特定の処理ユニットに優先権を与える事により、メモリアクセスの優先順位を設定する事が可能である。しかしながら、複数処理ユニットを同一ASIC内に搭載した場合、各CPUが実行しているアプリケーションの優先順位に応じたメモリアクセスの優先順位設定が困難となる。
【０００７】
また、メモリコントローラと処理ユニット間を接続するバス上でラウンドロビン等のアービトレーションにより処理ユニットを限定せずに優先順位設定を実行すると、リアルタイム性を保証することが困難となってしまう。
【０００８】
また、共有バス上で適切な優先順位決定がなされた場合でも、バンド幅を最大限にすることを意図したメモリコントローラに入力された場合、バンド幅を最大限にするようにリオーダーリングされ、リアルタイム性の確保が困難となる場合がある。
【０００９】
さらに、負荷分散のため、特定の処理ユニット群で処理を分散する場合等に該当処理ユニット群に優先権を与える方法が無く、リアルタイム性の保証が困難な状況である。
【００１０】
本発明は、複数処理ユニットを搭載したASICやマルチプロセッサ計算機システムにおいて、リアルタイム製の改善を測ることを目的とする。
【課題を解決するための手段】
【００１１】
このような課題を解決するために、本発明のうち請求項１記載発明の特徴は、複数の処理ユニットからのメモリアクセスを制御するメモリコントローラにおいて、メモリアクセスコマンド優先度入力とコマンドのオーダーリング可能なメモリアクセスコマンド発行キューを持ち、コマンド発行キューはメモリアクセスコマンドと優先度設定入力より決定される各コマンドの優先度を保持し、その優先度設定値に基づきリオーダーリングできることである。
【００１２】
請求項２記載発明の特長は複数の処理ユニットからのメモリアクセスを制御するメモリコントローラにおいて、マスター毎にアクセス優先度を設定する手段とメモリアクセスコマンドを発行したマスター情報を保持し、保持されたマスター情報とマスターごとに設定された優先度に基づきリオーダーリング可能なメモリアクセスコマンド発行キューを具備した事である。
【００１３】
請求項３記載発明の特徴は請求項１乃至２において優先度設定に基づくリオーダーリングのイネーブル機能を具備した事にある。
【００１４】
請求項４記載発明の特徴は、請求項１乃至２のメモリコントローラの有する機能を有する要素がコンピュータシステムに取り込まれた点にある。
【発明の効果】
【００１５】
以上説明した事から明らかな様に本発明によればＣＰＵを含む各処理ユニットの処理の優先度に基づきメモリアクセスの優先順位を設定でき、処理内容に応じたメモリアクセスの優先順位が容易に設定できる。
【００１６】
更に、複数ＣＰＵもしくは複数処理ユニットで処理を共有して実行する場合にでも、優先度設定レジスタに設定する事で、メモリアクセスの優先順位を容易に設定できる。
【００１７】
更に、メモリバンド幅が重要なアクセスの場合、優先アドレス設定によるリオーダーリングを無効にする事でメモリバンド幅を優先させる事が出来る。
【発明を実施するための最良の形態】
【００１８】
以下図面を参照して本発明の実施形態を説明する。
【００１９】
（第１の実施例）
図１は本発明の実施例を示す。１０はASIC（Application Specific Integrated Circuit）であり、１１はメモリである。また、ASIC１０とメモリ１１間は、メモリバス１２で接続される。ASIC１０は１３のメモリコントローラ、１９−１〜１９−ｎのCPU、２０−１〜２０−ｎの複数処理ユニット、メモリコントローラとCPU、複数処理ユニットを接続する共有バス１８からなる。メモリコントローラ１３は内部にメモリアクセスコマンド発行キュー１４と優先度設定入力１５を持つ。更に、メモリアクセスコマンド発行キュー内にはメモリへのアクセスコマンドを保持する１７−１〜１７−ｎのキューとキューのリオーダーリング制御部１６よりなる。処理ユニット（２０−１〜２０−ｎ）およびCPU（１９−１〜１９−ｎ）からのメモリアクセス要求は共有バス（１８）を介して、メモリコントローラ（１３）に伝えられる。このとき、処理ユニット（２０−１〜２０−ｎ）およびCPU（１９−１〜１９−ｎ）はメモリアクセスコマンド優先度設定入力を介してメモリアクセスコマンド優先度を設定する。複数の処理ユニットおよび複数ＣＰＵから同時にアクセス要求があった場合、共有バス（１８）では、処理ユニット（１０−１〜１０−ｎ）およびＣＰＵ（１９−１〜１９−ｎ）からのアクセス要求の調停が行われる。この時、バス権を確保したマスターからのコマンド優先度設定がメモリコントローラに入力される。このアクセス要求は一旦、メモリアクセスコマンド発行キュー（１４）内部のアクセスコマンドキュー（１７−１〜１７−ｎ）に保持される。この時、優先度設定入力により決定される該当コマンドの優先度も同時にコマンドキューに登録される。
【００２０】
メモリアクセスコマンドは図３のフローに基づきコマンド発行キュー（１４）に登録される。要求コマンドの優先度が既登録済みのコマンドよりも優先度の低い場合、要求コマンドは登録済みのコマンドの最後尾に追加される。要求コマンドの優先度が既登録済みのコマンドより高い場合、既登録済みのコマンドの内、要求コマンドよりも優先度の低いコマンドをスキップし、コマンド発行キューに登録される。
【００２１】
メモリアクセスコマンド発行が可能な場合にはアクセスコマンドキューの先頭（１７−１）から順にメモリに対してコマンドが発行される。
【００２２】
次に実際の処理フローについて説明する。ＣＰＵ１９−１、CPU１９−２、ＣＰＵ１９−３が同時に別の処理を実施している場合を考える。処理のリアルタイム性を考慮し要求される優先度として、ＣＰＵ１９−１が一番高く、ＣＰＵ１９−２，ＣＰＵ１９−３の順に低いとする。各CPU１９−１、ＣＰＵ１９−２およびＣＰＵ１９−３は共有バスを介してアクセスの優先度を設定する機構をもち、ＣＰＵ１９−１は高い優先度のメモリアクセスを要求し、ＣＰＵ１９−２、ＣＰＵ１９−３の順に低い優先度のメモリアクセスを要求する。結果として、ＣＰＵ１９−１からのメモリアクセス要求が優先的にメモリに対して発行される。ＣＰＵ１９−３が該当処理を終了し、別に高いリアルタイム性が要求される処理を実行する場合には、ＣＰＵ１９−３もＣＰＵ１９−１と同程度の高い優先度のメモリアクセスを要求し、結果としてＣＰＵ１９−１，ＣＰＵ１９−３からのアクセス要求は同程度の優先度で処理される。
【００２３】
前記条件の基で、コマンドキューが図４のような状態にある場合を考える。図４では、アクセスコマンドキュー１〜３にコマンドが格納されており、アクセスコマンドキュー４以降にコマンドは格納されていない。ここで、優先度は３が一番高く、０が一番低いとする。アクセスコマンドキュー１（２７−１）はＣＰＵ１９−１からのアクセスで優先度３の設定、アクセスコマンドキュー２（２７−２）はＣＰＵ１９−２からのアクセスで優先度２の設定、アクセスコマンドキュー３（２７−３）はＣＰＵ１９−３からのアクセスで優先度１の設定とする。ＣＰＵ１９−１がアクセス優先度３で要求を出した場合、アクセス優先度の比較コマンドキュー２、３はスキップされ、優先度３のアクセスコマンドキュー１と優先度２のアクセスコマンドキュー２の間に格納される。また、ＣＰＵ１９−３がそれぞれアクセスコマンド優先度１で要求を題した場合に、要求コマンドよりも優先度の低いコマンドが登録されていないので、最後尾であるコマンドキュー３とコマンドキュー４の間に格納される。また、ＣＰＵ１９−３が該当処理を終了し、アクセス優先度３で要求を出した場合には、コマンドはアクセスコマンドキュー１とアクセスコマンドキュー２の間に格納される。
【００２４】
これにより、ＣＰＵ１９−１〜１９−３の処理内容に応じた優先順位の設定が可能である。
【００２５】
（第２の実施例）
図５にマスター毎の優先度を保持する機構をメモリコントローラに備えた場合の構成を示す。第１の実施例との違いは優先度保持手段（２５）であり、他の点は同一のため、前記優先度保持手段について説明する。優先度保持手段は例えば図６のような構成を持ち、共有バスのマスター毎に優先度の設定が可能である。メモリコントローラは外部からメモリアクセス要求が入力されると、優先度保持手段を参照し、優先度に応じてアクセス要求コマンドをメモリアクセスコマンドキューに登録する。
【００２６】
メモリアクセスコマンドは図７のフローに基づきコマンド発行キュー（１４）に登録される。要求コマンドを発行したマスターの優先度を参照し、既登録済みのコマンドを発行したマスターよりも優先度の低い場合、要求コマンドは登録済みのコマンドの最後尾に追加される。要求コマンドの優先度が既登録済みのコマンドを発行したマスターより高い場合、既登録済みのコマンドの内、要求コマンドよりも優先度の低いマスターの発行したコマンドをスキップし、コマンド発行キューに登録される。
【００２７】
次に実際の処理フローについて説明する。ＣＰＵ１９−１、CPU１９−２、ＣＰＵ１９−３が同時に別の処理を実施している場合を考える。処理のリアルタイム性を考慮し要求される優先度として、ＣＰＵ１９−１が一番高く、ＣＰＵ１９−２，ＣＰＵ１９−３の順に低いとする。優先度保持設定レジスタには、ＣＰＵ１９−１が高い優先度で設定され、ＣＰＵ１９−２、ＣＰＵ１９−３の順に低い優先度で設定される。結果として、ＣＰＵ１９−１からのメモリアクセス要求が優先的にメモリに対して発行される。ＣＰＵ１９−３が該当処理を終了し、別に高いリアルタイム性が要求される処理を実行する場合には、優先度設定レジスタを更新し、ＣＰＵ１９−３もＣＰＵ１９−１と同程度の高い優先度の設定に変更する。結果としてＣＰＵ１９−１，ＣＰＵ１９−３からのアクセス要求は同程度の優先度で処理される。
【００２８】
前記条件の基で、優先度保持設定レジスタとコマンドキューが図８のような状態にある場合を考える。図８では、ＣＰＵ１９−１，１９−２，１９−３に対して、３、２、１、の優先度が設定されている。ここで、優先度は３が一番高く、０が一番低いとする。また、アクセスコマンドキュー１〜３にコマンドが格納されており、アクセスコマンドキュー４以降にコマンドは格納されていない。アクセスコマンドキュー１（２７−１）はＣＰＵ１９−１からのコマンド、アクセスコマンドキュー２（２７−２）はＣＰＵ１９−２からのコマンド、アクセスコマンドキュー３（２７−３）はＣＰＵ１９−３からのコマンドとする。ＣＰＵ１９−１がアクセス要求を出した場合、優先度設定レジスタを参照し、優先度の低いＣＰＵ１９−２，ＣＰＵ１９−３からのアクセスコマンドをスキップしアクセスコマンドキュー１と優先度２のアクセスコマンドキュー２の間に格納される。また、ＣＰＵ１９−３がアクセスコマンドを出した場合に、優先度設定レジスタを参照し、ＣＰＵ１９−３より優先度の低いコマンドがコマンド発行キューに格納されていないため、最後尾であるコマンドキュー３とコマンドキュー４の間にそれぞれ格納される。
【００２９】
また、ＣＰＵ１９−３が該当処理を終了し、リアルタイム性が多角優先順位の高い処理を実施する場合、図９の様に優先度設定レジスタの設定を変更した後にアクセスを開始する。以降はＣＰＵ１９−３もＣＰＵ１９−１と同様の優先度設定となる。
【００３０】
これにより、ＣＰＵ１９−１〜１９−３の処理内容に応じた優先順位の設定が可能である。
【図面の簡単な説明】
【００３１】
【図１】本発明を適用したメモリコントローラの機能ブロック図である。
【図２】従来のメモリコントローラの機能ブロック図である。
【図３】実施例１においてメモリアクセス要求コマンドをコマンド発行キューに登録する際のフローを示す図である。
【図４】メモリアクセスコマンドキューの状態を示す図である。
【図５】実施例２のメモリコントローラの構成を示す図である。
【図６】優先度設定レジスタの例を示す図である。
【図７】実施例２においてメモリアクセス要求コマンドをコマンド発行キューに登録する際のフローを示す図である。
【図８】実施例２において優先度保持レジストとコマンド発行キューの一状態示す図である。
【図９】実施例２において優先度保持レジストとコマンド発行キューの一状態示す図である。
【符号の説明】
【００３２】
１  ＡＳＩＣ
２  メモリ
３  メモリバス
４  メモリコントローラ
５  バス
６  コマンド発行キュー
７−０〜７−ｎ  処理ユニット
１０  ASIC
１１  メモリ
１２  メモリバス
１３  メモリコントローラ
１４  コマンド発行キュー
１５  優先アドレス設定レジスタ
１６  リオーダーリング制御ブロック
１７−１〜１７−ｎ  アクセスコマンドキュー
１８  共有バス
１９−１〜１９−ｎ  CPU
２０−１〜２０−ｎ  処理ユニット
【図１】
2007026366.tif 000003
【図２】
2007026366.tif 000004
【図３】
2007026366.tif 000005
【図４】
2007026366.tif 000006
【図５】
2007026366.tif 000007
【図６】
2007026366.tif 000008
【図７】
2007026366.tif 000009
【図８】
2007026366.tif 000010
【図９】
2007026366.tif 000011