(57)【要約】【課題】単一のバス転送を複数のメモリチャネルに分割発行するメモリシステムでメモリアクセス効率を向上させることを目的とする。【解決手段】メモリ制御回路は、複数のメモリチャネルに対応した複数のメモリコマンド発行部を有し、各メモリコマンド発行部は、対応するメモリチャネルに対する複数のメモリアクセス要求を保持するバッファを有し、バスアービタは、バスマスタからのアドレス、転送サイズに従って複数のメモリチャネルよりアクセス対象となる物理メモリを識別する識別手段を有し、識別手段での識別の結果とバッファの前記メモリアクセス要求に係る空きエントリ数とに基づきバスマスタによるメモリアクセスの調停を行うことによって課題を解決する。【選択図】図７
2010287058.tif 000002
【特許請求の範囲】
【請求項１】
バスマスタと、メモリ制御回路と、バスマスタとメモリ制御回路との間を接続するバスと、バスアービタと、複数のメモリチャネルと、を有するメモリシステムであって、
前記メモリ制御回路は、前記複数のメモリチャネルに対応した複数のメモリコマンド発行部を有し、
各メモリコマンド発行部は、対応するメモリチャネルに対する複数のメモリアクセス要求を保持するバッファを有し、
前記バスアービタは、
バスマスタからのアドレス、転送サイズに従って複数のメモリチャネルよりアクセス対象となる物理メモリを識別する識別手段を有し、
前記識別手段での識別の結果と前記バッファの前記メモリアクセス要求に係る空きエントリ数とに基づきバスマスタによるメモリアクセスの調停を行う、メモリシステム。
【請求項２】
前記複数のメモリチャネルは、それぞれＤＲＡＭにより構成される、請求項１記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムに関する。
【背景技術】
【０００２】
組み込み系システムでは、ＣＰＵの他、特定の機能を実現する機能ブロック・処理モジュールを複数搭載しシステムに求められる機能を実現している。特に性能要求の高い機能ブロックに関してはハードワイヤードロジックで回路実装が成されることで、ソフトウエア処理では達成することが困難な高性能・高速処理を実現している。多くの機能ブロックではデータの授受を、外部主記憶デバイスを介して行い、また複雑な処理や多くのデータ参照を行う処理においては、主記憶を一時記憶・ワークメモリとして使用することで機能を実現している。多くの組み込み系システムでは、外部主記憶にＤＲＡＭデバイスを採用している。
近年デジタル機器において、高機能／高性能化が継続的に進展している。例えばデジタルカメラ等の映像入力機器やプリンタ等の画像出力機器において高解像度化が進展しており、その結果取り扱うデータ量が継続的に増加しており、単位時間内に多くのデータ量を取り扱うためのメモリアクセスの高速化が必須である。また、リアルタイム処理を必要とする動画像においても高精細化が進展しており、更なるメモリアクセスの高速化が今後も必須な状況である。
対して外部主記憶に使用されるＤＲＡＭデバイスにおいても、半導体プロセスの進化に伴い高帯域デバイスが供給されている。以下簡単にＤＲＡＭデバイスにおける高帯域化について述べる。ＤＲＡＭ等のメモリデバイスは半導体のプロセスが進化したとしても、メモリアクセスを受信しそのアクセスが完了するためのアクセス時間の改善は特性上困難である。従って通常ＤＲＡＭデバイス内のクロック周波数は高速化せずに、半導体プロセスの進化により高速化可能なデータ転送レートを向上させることでデータ転送帯域を改善が行われている。高速化されないアクセス時間に対しては１回のアクセスに対して同時に複数のメモリセルに並列にアクセスを行うことによって高速化されたデータ転送帯域に追従している。これを一般的にＤＲＡＭのプリフェッチと言われている。ＳＤＲＡＭではプリフェッチの段数が１段即ち、一回のメモリアクセスに対して１組のメモリセルにアクセスする構成であったのに対し、ＤＤＲ−ＳＤＲＡＭではプリフェッチの段数を２段としている。プリフェッチの段数を２段とすることで、２倍のデータ転送レートで受信しＤＲＡＭ内部のクロック周波数は維持したままで２組のメモリセルにアクセスすることで高帯域アクセスを実現している。ＤＤＲ２−ＳＤＲＡＭではそのプリフェッチの段数を４段とし、ＤＤＲ３−ＳＤＲＡＭではプリフェッチの段数を８段とすることで更なる高帯域を実現するメモリデバイスを供給している。
プリフェッチの段数を増やすことで高帯域のメモリアクセスを可能とすると同時に１回のＤＲＡＭデバイスに対するアクセス単位が大きくなるという影響が生じている。通常、ＳＤＲＡＭデバイスに対するアクセスにおいてはバースト転送により、メモリに対する読み書きを実現することが一般的である。ＳＤＲＡＭでは一番小さい転送単位が１ビート転送であったのに対し、ＤＤＲ−ＳＤＲＡＭでは２ビート転送、ＤＤＲ２−ＳＤＲＡＭでは４ビート転送、そしてＤＤＲ３−ＳＤＲＡＭでは８ビート転送が最小転送単位となる。より具体的な例を示す。
外部記憶として６４ビットのデータ幅でＳＤＲＡＭを使用する場合、ＳＤＲＡＭにおける最小アクセス単位は８Ｂｙｔｅ、ＤＤＲ−ＳＤＲＡＭでは１６Ｂｙｔｅ、ＤＤＲ２−ＳＤＲＡＭでは３２Ｂｙｔｅ、そしてＤＤＲ３−ＳＤＲＡＭでは６４Ｂｙｔｅとなる。ここで、外部記憶としてＳＤＲＡＭを使用するバスマスタが最小アクセス単位に満たない転送を行う場合、ＳＤＲＡＭにアクセス発行単位毎でしかアクセスが発行できないためメモリデータバス上余分な転送が発生することになる。より具体的に以下図を用いて説明する。
【０００３】
図１は、複数のバスマスタを有した簡易的はメモリシステムの図である。ＣＰＵ２０１、２０５、バスマスタＡ２０２、バスマスタＢ２０３は、システムバス２０４を介してメモリコントローラ１００にアクセスを発行する。メモリコントローラ１００は、バスマスタより受信したコマンドをＤＲＡＭ１０１に対するアクセスコマンドに変換し、ある任意の幅を構成するＤＲＡＭ群２００に対してアクセスを発行する。本構成では各、ＤＲＡＭ１０１は、１６ビット幅のデータ幅を有したＤＤＲ３−ＳＤＲＡＭとし、ＤＲＡＭ群２００を構築することによりデータ幅が６４ビット幅のメモリデバイスとしてアクセスされるものとする。従って、ＤＲＡＭ群２００に対するアクセス単位は、８Ｂｙｔｅ幅の８段プリフェッチにより６４Ｂｙｔｅである。また、ＣＰＵ２０１、２０５のキャッシュライン幅を３２Ｂｙｔｅと仮定する。ＣＰＵ２０１、２０５ではキャッシュミスが発生するとキャッシュライン単位即ち３２Ｂｙｔｅ単位でメモリアクセスを発行する。バスマスタＡ２０２及びバスマスタＢ２０３は、ハードワイヤードロジックとしバスマスタＡ２０２のアクセス単位は３２Ｂｙｔｅ、バスマスタＢ２０３のアクセス単位は１２８Ｂｙｔｅであると仮定する。また、システムバス２０４の１転送における最大転送サイズを１２８Ｂｙｔｅと仮定する。ここでバスマスタＢ２０３がメモリアクセスを発行した場合を想定する。バスマスタＢ２０３の１２８Ｂｙｔｅ単位のアクセスは、システムバス２０４に対して発行され、メモリアクセスはメモリコントローラ１００にてＤＲＡＭ群２００へのアクセスコマンドに変換される。ＤＲＡＭ群２００はＤＤＲ３−ＳＤＲＡＭで構成されるため、８Ｂｙｔｅ転送を８ビート、即ち６４Ｂｙｔｅアクセス単位で発行される。
従って１２８Ｂｙｔｅ単位で発行されるバスマスタＢ２０３のメモリアクセスは６４Ｂｙｔｅ転送として２回、ＤＲＡＭ群２００に対して発行される。この際のメモリバス上の１６ビート転送は全て有効な転送として発行される。次に、バスマスタであるＣＰＵ２０１、２０５、バスマスタＡ２０２がメモリアクセスを発行した場合を想定する。このとき、ＣＰＵ２０１、２０５及びバスマスタＡ２０２から発行されるメモリアクセスは３２Ｂｙｔｅのメモリアクセスをシステムバス２０４に対して発行する。システムバス２０４を介してアクセスされたメモリアクセスはメモリコントローラ１００においてＤＲＡＭ群２００へのアクセスコマンドへと変換される。しかし、ＤＲＡＭ群２００はＤＤＲ３−ＳＤＲＡＭであるため、８Ｂｙｔｅ転送を８ビート、即ち６４Ｂｙｔｅアクセス分発行することになる。しかしながら、バスマスタであるＣＰＵ２０１、２０５及びバスマスタＡ２０２が必要とするデータサイズは３２Ｂｙｔｅであるため、余分な３２Ｂｙｔｅ転送４ビート分の転送を発行することになる。ＣＰＵ２０１、２０５或いはバスマスタＡ２０２が間欠無くメモリアクセスを発行した場合、メモリバス上は常に半分が余分な転送であるために高帯域のメモリデバイスであるＤＤＲ３−ＳＤＲＡＭを用いたとしてもデータ転送効率は５０％まで下がってしまう。ＤＤＲ３−ＳＤＲＡＭには４ビート転送で終了させるバーストチョップという機能を有しているが、同一ランクに対してはデータバスに空きがあったとしても８ビート分の転送時間を待って後続アクセスを発行しなければならない。
よって、後続アクセスが異ランクであるときのみしか転送効率が改善されない。仮に図１に示されたシステムのＤＲＡＭ１０１デバイスがＤＤＲ２−ＳＤＲＡＭであった場合、ＤＲＡＭ群２００に対するデータ転送単位が３２Ｂｙｔｅ８Ｂｙｔｅ転送を８ビートである。よって、本課題は存在しないが、ＤＲＡＭのプリフェッチ段数の増加に従い内部転送サイズに依存しメモリバス効率低下を招くという課題が顕在化する。バスマスタとなるモジュールの転送単位を変更することにより本課題を解決することはできる。しかし、プリフェッチ段数の変更に従い処理単位を変更することは容易ではない。また、矩形単位処理を行うモジュール等においてはある一定以上のメモリアクセス単位を実現することは困難であり現実的な解決策にはなり得ない。また、システムバスに関しても本例においては最大転送単位を１２８Ｂｙｔｅと定義しているが、バスプロトコルに依存し最大転送単位が限定される場合もあり得る。
本課題に対して特許文献１によると、メモリ転送単位に満たない転送を複数結合して転送することによってメモリ使用効率を改善する手法が開示されているが、この場合、バスマスタＡ２０２の発行する転送の連続性や間隔に依存する。即ち連続したアドレス空間で転送が発行されなければ、結合による効果を得ることが出来ず、またバスマスタＡ２０２のバス転送間隔が空いてしまうとその分の待ち合わせに要する期間がレイテンシを低下させることとなり、効果が限定的にならざるを得ない。従ってバスの転送パターン・間隔によらず転送効率を向上が課題となる。
【０００４】
本課題に対しては図２に示す構成が解決手段として有効である。同様の構成が特許文献２にも開示されている。以下図２に示すメモリシステムの構成について説明する。図２に示すメモリシステムでは、ＤＲＡＭ群を２系統メモリコントローラに接続し、それぞれのＤＲＡＭ群に対してメモリ空間を独立に割り当てる。メモリコントローラ１００は、転送分割・振り分け部３０２にてバスマスタより受信したメモリアクセスをその受信したアドレスと転送長に基づき、アクセス対象のメモリ空間を判定し対応するメモリアクセス発行部３０３に転送を振り分ける。メモリアクセス発行部３０３では、ＤＲＡＭ１０１に対するアクセスコマンドへの変換を行い、メモリアクセスを完了する。図２に示される各ＤＲＡＭ群のデータ幅を３２ビットと仮定すると図１に示される６４ビット幅のＤＲＡＭ群と同一のメモリバス幅を確保することとなる。より具体的な動作を以下に示す。
図１で示したメモリシステムと同様にＣＰＵ２０１、２０５とバスマスタＡ２０２の転送単位を３２Ｂｙｔｅとする。また、ＤＲＡＭ１０１に関してもＤＤＲ３−ＳＤＲＡＭを仮定すると、アクセス単位が８ビート分の３２Ｂｙｔｅである。ＣＰＵ２０１、２０５からＤＲＡＭ群３００に対応するメモリ空間へのメモリアクセス、及びバスマスタＡ２０２からＤＲＡＭ群３０１に対応するメモリ空間へのメモリアクセスが同時刻に発行された場合を考える。このときＣＰＵ２０１、２０５からのメモリアクセスは転送分割・振り分け部３０２によりＤＲＡＭ群３００に対するメモリアクセス発行部３０３により発行される。バスマスタＡ２０２のメモリアクセスは転送分割・振り分け部３０２によりＤＲＡＭ群３０１に対するメモリアクセス発行部３０３により発行される。同時刻に発行された２つのメモリアクセスは２つもメモリアクセス発行部３０３にて並列に処理され発行される。またＤＲＡＭ１０１に対するメモリアクセス単位とＣＰＵ２０１、２０５とバスマスタＡ２０２とのメモリアクセス単位が３２Ｂｙｔｅと同一であるため、ＤＲＡＭ１０１に対する８ビート転送を全て活用することが可能となる。また、２つのＤＲＡＭ群に対して同時にメモリアクセスが発行されるため、６４ビット幅分のメモリ帯域を活用することができる。従って、アドレスの振り分け状況に従い、２つのＤＲＡＭ群に同時並列でアクセスを行うことによって６４ビット幅におけるメモリ帯域を２つのＤＲＡＭ群でまかなうことが可能となる。
次にバスマスタＢ２０３のメモリアクセスについて示す。バスマスタＢ２０３は先に示すとおり１２８Ｂｙｔｅ単位でアクセスを発行する。このときのＤＲＡＭ群への転送方法はＤＲＡＭへのアドレス空間のマッピングに依存して変化する。図３では論理アドレスの０ｘ０番地から０ｘ０ＦＦＦＦＦＦＦ番地の２５６ＭＢの空間をＤＲＡＭ群３００に相当する空間にマッピングする。０ｘ１０００００００番地から０ｘ１ＦＦＦＦＦＦＦ番地の２５６ＭＢの空間をＤＲＡＭ群３０１に相当する空間にマッピングした構成である。ここで、バスマスタＢ２０３からのメモリアクセスが０ｘ０番地からの１２８Ｂｙｔｅに転送される場合、ＤＲＡＭ群３００に対してのみ転送が発行される。ＤＲＡＭ群３００のビット幅が３２ビット、転送単位が８ビートであるため、３２Ｂｙｔｅ転送が４回発行されることとなる。この場合、連続空間に対するバスマスタＢ２０３のアクセスは図１の構成におけるアクセスに対して１／２の転送レートで２倍の転送期間を要することとなるため、バスマスタＢ２０３に対するメモリアクセス性能が半分でレイテンシが２倍要してしまうこととなる。従って、システムとして６４ビット幅のメモリバス幅を擁したとしても、連続アクセスを発行する転送においては図３に示すメモリ空間の割り当てでは、バス幅分の転送レートの恩恵を得ることが出来なくなる。
【０００５】
次に図４に示すアドレス空間のマッピングを考える。ここでは論理アドレス空間をＤＲＡＭデバイスのアクセス単位である３２Ｂｙｔｅ毎にＤＲＡＭ群３００とＤＲＡＭ群３０１とを交互に物理アドレスとしてマッピングしたものである。このとき、バスマスタＢ２０３の転送分割・振り分け部３０２により、論理アドレス空間０ｘ０番地からの３２Ｂｙｔｅと０ｘ４０番地からの３２ＢｙｔｅがＤＲＡＭ群３００に対応するメモリアクセス発行部３０３に伝達される。また、論理アドレス空間０ｘ２０番地殻の３２Ｂｙｔｅと０ｘ６０番地からの３２ＢｙｔｅがＤＲＡＭ群３０１に対応するメモリアクセス発行部３０３に伝達され、メモリアクセスとして発行される。このとき、ＤＲＡＭ群３００とＤＲＡＭ群３０１とに対して同時並行にメモリアクセスが発行されるため、８ビート転送２回が２組並列に発行されることとなる。従って、６４ビット幅の転送帯域を確保しつつ、３２ビットデバイスを使いながらレイテンシの改善が可能となるため、バスマスタＢ２０３のメモリアクセス性能の低下無くアクセスを発行することができる。
このように、ＤＲＡＭデバイスの高速化によるプリフェッチ段数の増加によって発生するメモリアクセス効率の低下に関しては、データバス幅を維持して小さなバス幅のメモリチャネルを並列に接続し、同時並列アクセス可能とすることで改善することができる。メモリチャネルのバス幅に関しては、メモリアクセスを行うバスマスタのアクセス単位に適合するように実装することで定義することもできる。本例では６４ビット幅のメモリデータバス幅に対して、内部の転送単位の一番小さいサイズが３２Ｂｙｔｅであるシステムを想定している。このため３２ビット幅のメモリチャネルを２系統搭載とした例を示している。もしバスマスタＡ２０２の転送単位が１６Ｂｙｔｅと仮定すると、１６ビット幅のメモリチャネルを４系統と搭載することで同様にメモリの使用効率を改善することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−２６８８０１号公報
【特許文献２】特開２００７−０３４７４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記示すように、ＤＲＡＭデバイスのアクセス単位増加に対し、バス幅の小さいメモリチャネルを複数搭載することによって、メモリバスの使用効率の低下を解決することができる。そのためには各メモリチャネルに対するメモリ制御を独立に実行することが不可避である。一般的に図２に示すメモリアクセス発行部３０３においては、コマンドを発行するための制御手段とコマンドを蓄えるコマンドバッファ等とが具備され、順次メモリアクセスを発行する。図２の例に示すようにＣＰＵ２０１、２０５、バスマスタＡ２０２がそれぞれ異なるメモリチャネルとしてマッピングされた領域にアクセスを発行される場合には、それぞれのメモリチャネルにおいて独立にページ管理が成されアクセスが発行されることとなる。従って複数具備されるメモリアクセス発行部３０３の処理は独立動作を行うことが必須の条件となっている。
図４に示したメモリ空間の割り当て時に、メモリアクセスを発行、各種メモリアクセスを発行した場合について以下に動作説明を行う。
ＣＰＵ２０１及びバスマスタＡ２０２のメモリアクセスはそれぞれＤＲＡＭ群３００に対するアクセスとして割り当てられる。対してバスマスタＢ２０３のメモリアクセスはＤＲＡＭ群３００とＤＲＡＭ群３０１にそれぞれ２回ずつの転送として割り当てられる。ＣＰＵ２０５のメモリアクセスはＤＲＡＭ群３００に対するメモリアクセスとして割り当てられる。ここで転送順としてＣＰＵ２０１、バスマスタＡ２０２、バスマスタＢ２０３、ＣＰＵ２０５の順に転送が許可された場合、ＤＲＡＭ群３００に対し４回分のメモリ転送、ＤＲＡＭ群３０１に対しても４回分のメモリ転送が発行されることとなる。しかしながら、メモリアクセスの発行はＤＲＡＭ群３００へのメモリアクセスが先立ってメモリコントローラ１００に発行されるため、ＤＲＡＭ群３００に対してのメモリアクセスのみ発行される期間が先に生じる。更に、ＣＰＵ２０５のメモリアクセスが最後にメモリコントローラ１００に発行されることとなり、このようなアクセスはＤＲＡＭ群３０１に対してのみ発行される期間が生じることとなる。上記転送では、ＤＲＡＭ群３００とＤＲＡＭ群３０１に対する転送が同時期に同数発生したにも関わらず、システムバス２０４上での調停結果シリアライズされた結果に依存する。しかし、独立動作しているメモリアクセス発行部３０３が同時に動作する期間が限定され結果としてメモリアクセス効率の向上が限定的にならざるを得ないという課題が存在している。
【０００８】
本発明はこのような問題点に鑑みなされたもので、単一のバス転送を複数のメモリチャネルに分割発行するメモリシステムでメモリアクセス効率を向上させることを目的とする。
【課題を解決するための手段】
【０００９】
そこで、本発明は、バスマスタと、メモリ制御回路と、バスマスタとメモリ制御回路との間を接続するバスと、バスアービタと、複数のメモリチャネルと、を有するメモリシステムであって、前記メモリ制御回路は、前記複数のメモリチャネルに対応した複数のメモリコマンド発行部を有し、各メモリコマンド発行部は、対応するメモリチャネルに対する複数のメモリアクセス要求を保持するバッファを有し、前記バスアービタは、バスマスタからのアドレス、転送サイズに従って複数のメモリチャネルよりアクセス対象となる物理メモリを識別する識別手段を有し、前記識別手段での識別の結果と前記バッファの前記メモリアクセス要求に係る空きエントリ数とに基づきバスマスタによるメモリアクセスの調停を行う。
【発明の効果】
【００１０】
本発明によれば、単一のバス転送を複数のメモリチャネルに分割発行するメモリシステムでメモリアクセス効率を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】従来のメモリシステムのシステム構成の図（その１）である。
【図２】従来のメモリシステムのシステム構成の図（その２）である。
【図３】図２に示すシステムにおける論理アドレス空間と物理アドレス空間との対応を示す図（その１）である。
【図４】図２に示すシステムにおける論理アドレス空間と物理アドレス空間との対応を示す図（その２）である。
【図５】メモリシステムのシステム構成の一例を示す図である。
【図６】論理アドレス空間と物理アドレス空間との対応の一例を示す図である。
【図７】バスアービタにおける調停に関する処理の一例を示すフローチャートである。
【図８】４組のＤＲＡＭ群によりシステムを構成した場合のメモリシステムのシステム構成の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について図面に基づいて説明する。
【００１３】
図５は、メモリシステムのシステム構成の一例を示す図である。図５のメモリシステムにおいて３つのバスマスタは任意のシステムバス１０６を介してメモリ制御回路の一例であるメモリコントローラ１００に接続され、ＤＲＡＭ群１０２に接続される。システムバス１０６は、バスマスタからのメモリアクセスを、バスアービタ１１７で調停しメモリコントローラ１００に転送する。本システムではデータ幅が１６ビットのＤＤＲ３−ＳＤＲＡＭ１０１を２組有したＤＲＡＭ群が接続され、第一のＤＲＡＭ群１０２−Ａと第二のＤＲＡＭ群１０２−Ｂとの２チャンネルのメモリインターフェースを具備している。第一のＤＲＡＭ群１０２−Ａと第二のＤＲＡＭ群１０２−Ｂとのメモリ空間の割り当てを図６に示す。論理アドレス空間は各ＤＲＡＭ群のアクセス単位である３２Ｂｙｔｅ毎に分割され、第一のＤＲＡＭ群１０２−Ａ及び第二のＤＲＡＭ群１０２−Ｂに交互にマッピングされるものとする。例えば論理アドレス空間が０ｘ１００番地は第一のＤＲＡＭ群１０２−Ａの物理アドレス空間０ｘ８０番地に割り当てられ、論理アドレス空間が０ｘ１２０番地は第二のＤＲＡＭ群１０２−Ｂの物理アドレス空間０ｘ８０に割り当てられる。
【００１４】
バスマスタより発行されたメモリアクセスは、システムバス１０６を介してメモリコントローラ１００に伝達される。メモリコントローラ１００では、システムバスのインターフェースであるバスインターフェース部１０７においてバスアクセスとして取り込まれる。バスインターフェース部１０７では、アクセスアドレス、アクセスデータサイズに基づき上記メモリ空間の割り当てに基づき転送分割・振り分け部１０８において、適宜転送の分割と該当するＤＲＡＭ群への振り分けとが行われる。転送分割・振り分け部１０８の処理フローを図７に示す。以下、転送分割・振り分け部１０８の作用の詳細を例示する。
任意のバスマスタより０ｘ２２０番地に対する３２Ｂｙｔｅアクセスを受信すると、アドレス情報・アクセス長情報に基づき判定を行う。Ａｌｉｇｎ判定では３２Ｂｙｔｅ  Ａｌｉｇｎに乗った転送であり、且つ、３２Ｂｙｔｅ以内の転送である。このため、アドレス判定を行い、第一のＤＲＡＭ群に割り当てられた転送であるため第一のＤＲＡＭ群に対応したメモリコマンド発行部１０９に対して第一のＤＲＡＭ群に対し物理アドレス空間０ｘ１００より３２Ｂｙｔｅのメモリアクセス要求を転送する。対して０ｘ１０００番地に対して１２８Ｂｙｔｅアクセスを受信すると、３２Ｂｙｔｅ  Ａｌｉｎｇの転送である。しかし、３２Ｂｙｔｅを超える転送であるためバスマスタからのメモリアクセスを分割し、第一のＤＲＡＭ群１０２−Ａ及び第二のＤＲＡＭ群１０２−Ｂに振り分ける。このとき、転送は、第一のＤＲＡＭ群１０２−Ａにおける物理アドレス空間０ｘ８００番地からの６４Ｂｙｔｅ転送として対応するメモリコマンド発行部１０９に対してメモリアクセス要求が転送される。論理アドレス空間０ｘ１０２０番地からの３２Ｂｙｔｅと０ｘ１０６０番地からの３２Ｂｙｔｅとの転送は第二のＤＲＡＭ群１０２−Ａにおける物理アドレス空間０ｘ８００番地からの６４Ｂｙｔｅ転送として対応するメモリコマンド発行部１０９に対し転送される。本例では６４Ｂｙｔｅ転送として２組のメモリコマンド発行部１０９に転送しているが、３２Ｂｙｔｅ転送２回に分けて２組のメモリコマンド発行部１０９に転送してもよい。更に０ｘ８１０番地からの１６Ｂｙｔｅ転送に関しては、３２Ｂｙｔｅ  Ａｌｉｇｎにのっていない転送である。しかし、３２Ｂｙｔｅ  Ａｌｉｇｎを超えない転送である。よって、アドレス判定を行い第一のＤＲＡＭ群１０２−Ａに対するアクセスとして、第一のＤＲＡＭ群１０２−Ａに対する物理アドレス空間０ｘ４０８番地からの１６Ｂｙｔｅアクセスとしてメモリコマンド発行部１０９に対して転送される。また、０ｘ２０１８番地からの３２Ｂｙｔｅ転送に関しては、３２Ｂｙｔｅ  Ａｌｉｇｎにのっていない転送であり、３２Ｂｙｔｅ  Ａｌｉｇｎを超える転送であるため、第一のＤＲＡＭ群、第二のＤＲＡＭ群にメモリアクセスが発行される。第一のＤＲＡＭ群に対しては、０ｘ１００Ｃからの８Ｂｙｔｅのメモリアクセスとして相当するメモリコマンド発行部１０９にメモリアクセス要求が転送される。第二のＤＲＡＭ群に対しては、０ｘ１０００からの２４Ｂｙｔｅのメモリアクセスとして該当するメモリコマンド発行部１０９にメモリアクセス要求が発行される。
【００１５】
バスインターフェース部１０７を介して発行されるメモリアクセス要求は、各、メモリコマンド発行部１０９内に具備されるコマンド順序制御部１１０に転送される。コマンド順序制御部１１０では、複数のメモリアクセス要求を保持するコマンドバッファ１１１と発行するコマンド順序を制御し選択する順序制御回路１１５とにより構成される。コマンドバッファ１１１には、ＤＲＡＭ群１０２に発行するアドレス情報、アクセスサイズ情報及び読み出し・書き込み情報等が保持され、順序制御回路１１５にて、任意のコマンド発行順序の並べ替え処理が行われる。本実施形態では例示しないが、一般的に用いられるようにＤＲＡＭのページ遷移が少なくなる様順序制御を実行することもできる。
順序制御回路１１５にて並べ替えされたメモリアクセスの先頭のエントリはメモリアクセス制御コア部１１６にてＤＲＡＭ群１０２に対するメモリアクセスプロトコルに変換されメモリアクセスが発行される。
以下、システムバス１０６上に実装されるバスアービタ１１７に関して記載する。バスアービタ１１７では、バスマスタより発行される複数のメモリアクセスを調停しメモリコントローラ１００に対してメモリアクセスを転送する機能を有する。バスアービタ１１７では、複数のバスマスタからのメモリアクセスの転送要求を受信する機構と、複数の転送要求内より一つのバスマスタを選択し転送許可を発行する機構と、を有する。また、バスアービタ１１７では、メモリコントローラ１００内の第一のＤＲＡＭ群１０２−Ａと第二のＤＲＡＭ群１０２−Ｂとに対応する順序制御回路１１５内に実装されるコマンドバッファ１１１のステータス信号１１８を入力する機構を有する。ステータス信号１１８にはそれぞれのＤＲＡＭ群に対応するコマンドバッファ１１１の空きエントリ数がステータスとして入力される。例えばコマンドバッファ１１１のエントリ数が４段あり、メモリアクセス制御コア部１１６に対し発行待ちとなっている有効エントリが３段存在している場合、空きエントリのステータスは１段として入力される。バスアービタ１１７は更に、受信したメモリアクセスのアクセスアドレスとアクセス長とより、アクセス対象のＤＲＡＭ群を識別するアクセス領域識別手段１１９を有する。アクセス領域識別手段１１９は、バスマスタより発行されたメモリアクセスが、第一のＤＲＡＭ群１０２−Ａのみへのメモリアクセス、第二のＤＲＡＭ群１０２−Ｂのみへのメモリアクセス又は第一、第二双方のＤＲＡＭ群へのメモリアクセスであるかを識別する。例えば０ｘ０番地より３２Ｂｙｔｅ以内のメモリアクセスであれば、第一のＤＲＡＭ群へのメモリアクセスと判定し、０ｘ１２０番地より６４Ｂｙｔｅのメモリアクセスであれば第一、第二双方のＤＲＡＭ群へのメモリアクセスと判定する。バスアービタ１１７は、バスマスタからのメモリアクセス要求、アクセス領域識別手段１１９での各メモリアクセスの判定結果、各ＤＲＡＭ群に対応する順序制御回路１１５より入力されるコマンドバッファ１１１のステータス信号１１８を使用する。つまり、アクセス領域識別手段１１９は、バスマスタからのアドレス、転送サイズに従って複数のメモリチャネルよりアクセス対象となる物理メモリを識別する。
【００１６】
そして、図７に示すフローチャートの処理に基づきメモリアクセスを調停し、バスマスタへの転送許可を発行する。バスアービタは図７に示すフローチャートの処理に従い発行されたメモリアクセス内で調停対象とするバスマスタを選択し、調停対象マスタリストを作成し、調停対象マスタリスト内で任意の調停手法によりバスマスタを選択する。調停手法としはラウンドロビンによるバスマスタ調停やバスマスタの優先度指定による調停手法等種々適用することができる。バスアービタは、１つ以上のバスマスタよりメモリアクセス要求が発行されたタイミングでメモリアクセスの調停を開始する（Ｓ７０）。その際、単一のバスマスタのみがメモリアクセスを要求している場合（Ｓ７０でＮＯ）、本バスマスタのみを調停対象マスタリストに追加する（Ｓ７３）。２つ以上のバスマスタがメモリアクセスを要求している場合（Ｓ７０でＹＥＳ）、バスアービタ１１７は各ＤＲＡＭ群に対応する順序制御回路１１５より入力されるコマンドバッファの各、ステータス信号１１８を比較する（Ｓ７１、Ｓ７４）。各、ステータス信号１１８の比較結果、第一のＤＲＡＭ群の空きエントリ数と第二のＤＲＡＭ群の空きエントリ数とが同数であった場合（Ｓ７１でＹＥＳ）、メモリアクセスを要求している全てのバスマスタを調停対象マスタリストに追加する（Ｓ７２）。比較結果、第一のＤＲＡＭ群１０２−Ａに対応するステータス信号１１８が示す空きエントリ数の方が大きかった場合（Ｓ７４でＹＥＳ）、アクセス領域識別手段１１９の判定結果より、第一のＤＲＡＭ群１０２−Ａのみへのメモリアクセス発行マスタの有無を判定する（Ｓ７５）。第一のＤＲＡＭ群１０２−Ａのみへのメモリアクセス発行マスタが存在する場合（Ｓ７５でＹＥＳ）、該当するバスマスタを調停対象マスタリストに追加する（Ｓ７６）。第一のＤＲＡＭ群１０２−Ａのみへのメモリアクセス発行マスタが存在しない場合（Ｓ７５でＮＯ）、メモリアクセスを要求している全てのバスマスタを調停対象マスタリストに追加する（Ｓ７７）。
比較結果、第二のＤＲＡＭ群１０２−Ｂに対応するステータス信号１１８が示す空きエントリ数の方が大きかった場合（Ｓ７４でＮＯ）、アクセス領域識別手段１１９の判定結果より、第二のＤＲＡＭ群１０２−Ｂのみへのメモリアクセス発行マスタの有無を判定する（Ｓ７８）。第二のＤＲＡＭ群１０２−Ｂのみへのメモリアクセス発行マスタが存在する場合（Ｓ７８でＹＥＳ）、該当するバスマスタを調停対象マスタリストに追加する（Ｓ７９）。第二のＤＲＡＭ群１０２−Ｂのみへのメモリアクセス発行マスタが存在しない場合（Ｓ７８でＮＯ）、メモリアクセスを要求している全てのバスマスタを調停対象マスタリストに追加する（Ｓ７７）。上記のフローチャートに係る処理を通じ、最終的に調停対象マスタリストよりメモリアクセス許可を発行するバスマスタの調停を実行する（Ｓ８０）。そして、調停の結果、選択されたバスマスタの転送を許可する（Ｓ８１）。
【００１７】
以上の処理により、バスアービタ１１７は、バスマスタからのメモリアクセス要求受信時に、第一のＤＲＡＭ群１０２−Ａと第二のＤＲＡＭ群１０２−Ｂとに対して発行待ち転送の少ないＤＲＡＭ群に対するメモリアクセスを優先的に選択することを可能とする。各ＤＲＡＭ群に対するメモリアクセス転送数の偏りを解消するようメモリアクセスの調停を実施する。本実施形態では２組のＤＲＡＭ群で構成されるメモリシステムについて示したが、ＤＲＡＭ群の数は種々変更できる。図８に４組のＤＲＡＭ群で構成されるメモリシステムを例示する。
【００１８】
以上、本実施形態によれば、単一のバス転送を複数のメモリチャネルに分割発行するメモリシステムで、複数のメモリチャネルの並列動作期間を増加させ、メモリアクセス効率を向上させることができる。
【００１９】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００２０】
１１７  バスアービタ
【図１】
2010287058.tif 000003
【図２】
2010287058.tif 000004
【図３】
2010287058.tif 000005
【図４】
2010287058.tif 000006
【図５】
2010287058.tif 000007
【図６】
2010287058.tif 000008
【図７】
2010287058.tif 000009
【図８】
2010287058.tif 000010