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