(57)【要約】【課題】複数のメモリアクセスリクエスタからのリクエストでも、バスの使用効率を高めるためのグループ化が可能なメモリコントローラおよびデータ処理装置を提供する。【解決手段】リクエストキュー２２は、複数のメモリアクセスリクエスタから受信したリクエストを格納する。併合部３１は、リクエストキュー２２内のリクエストのうち、ＤＤＲ２−ＳＤＲＡＭにおける１回の読出しサイクルまたは書込みサイクルでアクセス可能なリクエストを併合する。メモリインタフェース部２７は、リクエストに従って、ＤＤＲ２−ＳＤＲＡＭに対してアクセスを行ない、併合された複数のリクエストに対するＤＤＲ２−ＳＤＲＡＭのアクセスを一括して行なう。【選択図】図１
2010134628.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリアクセスリクエスタからのリクエストを受けて、バスを介してメモリへのアクセスをコントロールするメモリコントローラであって、
複数のメモリアクセスリクエスタから受信したリクエストを格納するキューと、
前記キュー内のリクエストのうち、前記メモリにおける１回の読出しサイクルまたは書込みサイクルでアクセス可能なリクエストを併合する併合部と、
前記リクエストに従って、前記メモリに対してアクセスを行なうインタフェース部とを備え、
前記インタフェース部は、併合された複数のリクエストに対する前記メモリへのアクセスを一括して行なう、メモリコントローラ。
【請求項２】
前記メモリは、ＳＤＲＡＭであって、
前記インタフェース部は、併合された複数のリクエストについては、先頭のリクエストについてのみ、プリチャージコマンド、アクティブコマンドおよびロウアドレスを前記ＳＤＲＡＭへ出力する、請求項１記載のメモリコントローラ。
【請求項３】
前記メモリコントローラは、さらに、
複数のメモリアクセスリクエスタのうちの併合可能なメモリアクセスリクエスタのグループを表わす第１の情報を記憶する記憶部を備え、
前記併合部は、さらに、前記第１の情報を参照して、併合可能なメモリアクセスリクエスタからのリクエストのみを併合する、請求項１または２記載のメモリコントローラ。
【請求項４】
前記リクエストは、他のリクエストとの併合の可否を表わす第２の情報を含み、
前記併合部は、さらに、前記第２の情報を参照して、併合が可能なリクエストのみを併合する、請求項１〜３のいずれか１項に記載のメモリコントローラ。
【請求項５】
前記リクエストは、前記キューへの格納の可否を表わす第３の情報を含み、
前記メモリコントローラは、さらに、
受信したリクエストに含まれる前記第３の情報を参照して、前記キューへの格納が可能なものだけを前記キューに格納するキューイング判定部を備えた、請求項１〜４のいずれか１項に記載のメモリコントローラ。
【請求項６】
前記リクエストは、前記メモリへのアクセスの開始までの許容可能な待ち時間を表わす第４の情報を含み、
前記メモリコントローラは、さらに、
受信したリクエストの前記キューに格納されてからの待ち時間を計測する計測部と、
前記キューに格納された複数のリクエストについて、前記第４の情報で示される許容可能な待ち時間と前記計測部で計測される前記待ち時間との時間差を算出し、前記算出した時間差に基づいて、次に処理すべきリクエストを選択し前記インタフェース部に出力する選択部とを備え、
前記選択部は、前記選択したリクエストが他のリクエストと併合されている場合には、前記併合されている他のリクエストも選択して、前記インタフェース部に出力する、請求項５記載のメモリコントローラ。
【請求項７】
前記リクエストは、処理の優先度を表わす第５の情報を含み、
前記メモリコントーラは、さらに、
前記キューに格納された複数のリクエストについて、前記第５の情報で示される優先度に基づいて、次に処理すべきリクエストを選択し前記インタフェース部に出力する選択部を備え、
前記選択部は、前記選択したリクエストが他のリクエストと併合されている場合には、前記併合されている他のリクエストも選択して、前記インタフェース部に出力する、請求項５記載のメモリコントローラ。
【請求項８】
前記リクエストは、前記メモリへのアクセスが開始されるまで、または前記メモリへのアクセスが終了するまでの想定処理レートを表わす第６の情報を含み、
前記メモリコントローラは、さらに、
受信したリクエストの前記キューに格納されてからメモリへのアクセスが開始されるまでの処理時間、または前記メモリへのアクセスが終了するまでの処理時間を計測する第２の計測部と、
前記複数のメモリアクセスリクエスタから出力される複数のリクエストを分類したグループごとに、前記計測した処理時間に基づいて平均処理レートを算出する平均処理レート算出部と、
所定の時間ごとに、前記キューに格納された複数のリクエストについて、前記リクエストが属するグループの平均処理レートと、前記リクエストの前記第６の情報で示される想定処理レートとの時間差に基づいて、次に処理すべきリクエストを選択して、前記インタフェース部に出力する選択部とを備え、
前記選択部は、前記選択したリクエストが他のリクエストと併合されている場合には、前記併合されている他のリクエストも選択して、前記インタフェース部に出力する、請求項５記載のメモリコントローラ。
【請求項９】
前記メモリコントローラは、
前記受信したリクエストのステータスを管理するステータス管理部を備え、
前記ステータス管理部は、前記メモリへのアクセスが未実行のリクエストのステータスをアイドルに設定し、前記メモリへのアクセスが実行中のリクエストのステータスを実行中に設定し、前記メモリへのアクセスが終了したリクエストのステータスを終了状態に設定し、
前記ステータス管理部は、前記リクエストを出力したメモリアクセスリクエスタに対して、前記ステータスを通知する、請求項１〜８のいずれか１項に記載のメモリコントローラ。
【請求項１０】
前記ステータス管理部は、前記メモリアクセスリクエスタからのリクエストの受信に応じて、受信したリクエストのステータスをアイドル状態に設定する、請求項９記載のメモリコントローラ。
【請求項１１】
前記ステータス管理部は、前記インタフェース部が、リクエストに従って前記メモリへのアクセスを開始したことに応じて、前記リクエストのステータスを実行状態に設定する、請求項９記載のメモリコントローラ。
【請求項１２】
前記ステータス管理部は、リクエストが読出し要求の場合には、前記リクエストに応答して前記メモリから読出されたデータの受信に応じて、前記リクエストのステータスを終了状態に設定する、請求項９記載のメモリコントローラ。
【請求項１３】
前記ステータス管理部は、特定のリクエストのステータスが実行中になったことに応じて、所定のメモリアクセスリクエスタに割込みを通知する、請求項９記載のメモリコントローラ。
【請求項１４】
前記ステータス管理部は、特定のリクエストのステータスが終了状態になったことに応じて、所定のメモリアクセスリクエスタに割込みを通知する、請求項９記載のメモリコントローラ。
【請求項１５】
前記複数のメモリアクセスリクエスタと、
請求項９〜１４のいずれか１項に記載のメモリコントローラと、
前記メモリとを備え、
各メモリアクセスリクエスタは、
出力したリクエストごとに、前記メモリ内のアクセス位置のアドレスを表わすポインタを管理するポインタ管理部を備え、
前記ポインタ管理部は、さらに、前記ポインタについて、アクセス状態を表わすポインタフラグを管理し、
前記ポインタ管理部は、読出しのリクエストを出力後、前記ステータス管理部から実行中のステータスの通知を受けたときには、前記ポインタフラグを前記メモリのデータの参照中を表わすように設定し、
書込みのリクエストを出力後、前記ステータス管理部から実行中のステータスの通知を受けたときには、前記ポインタフラグを前記メモリのデータの更新中を表わすように設定し、
リクエストの出力後、前記ステータス管理部から終了状態のステータスの通知を受けたときには、前記ポインタフラグを前記メモリへのアクセスが行なわれていないことを表わすように設定する、データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラおよびデータ処理装置に関し、特に、複数のメモリアクセスリクエスタからのリクエストを処理するメモリコントローラ、およびそのようなメモリコントローラを備えたデータ処理装置に関する。
【背景技術】
【０００２】
従来から、バスに接続された複数のメモリアクセスリクエスタ（バスマスタ）と、そのバスにメモリコントローラを介して接続されたメモリとを備えたデータ処理装置において、バスマスタのレイテンシを低減することを目的とした方法が開示、提案されている。
【０００３】
たとえば、特許文献１には、インタフェース部が、メモリアクセスリクエスタ（バスマスタ）からバスの所定のバス帯域分を使用した共有リソースへのアクセスの要求を受信した際に、全てのバスマスタにより現在使用されているバスのバス帯域から共有リソースへのアクセスの要求が最新に許可されたバスマスタが現在使用しているバスのバス帯域を減算した第１の減算結果と、バスの最大のバス帯域から最新に許可されたバスマスタにおけるバスの予約分のバス帯域を減算した第２の減算結果とを比較して、第１の減算結果が第２の減算結果よりも大きい場合には、インタフェース部が受信した共有リソースへのアクセスの要求に対して許可を与えないようにする調停装置が開示されている。
【０００４】
この調停装置によれば、メモリアクセスリクエスタ（バスマスタ）のレイテンシは低減できるものの、各バスマスタからのアクセスは、多数の細切れのものとなるため、バス帯域を効率的に使用することができない。
【０００５】
これに対して、たとえば、特許文献２には、特定のメモリアクセスリクエスタ（バスマスタ）は、メモリのアクセス箇所のロウアドレス（行アドレス）が一致するリクエストをグループ化して、メモリコントローラに出力し、メモリコントローラは、グループ化されたリクエストを連続して処理する方法が記載されている。この方法によれば、メモリにおいて、メモリコントーラからメモリへのコマンドおよびアドレスの転送回数を削減することができ、バスの使用効率を高めることができる。
【特許文献１】特開２００７−１０２５０９号公報
【特許文献２】特開２００７−３２８５８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、特許文献２に記載されたリクエストのグループ化は、メモリアクセスリクエスタ（マスタ）が自身で行ない、複数のメモリアクセスリクエスタからのリクエストはグループ化されない。
【０００７】
しかしながら、複数のメモリアクセスリクエスタがメモリ内の同一のロウに同時にアクセス要求を行なう場合もある。たとえば、符号化などの画像処理を行なうデータ処理装置では、各メモリアクセスリクエスタが、特定の画像処理機能を担当し、メモリは、各画素のデータを記憶する。このような装置では、複数のメモリアクセスリクエスタが、画像の同一の行に対して、並行して処理するようなことがある。したがって、バスの使用効率を高めるために、複数のメモリアクセスリクエスタからのリクエストであってもグループ化する必要がある。
【０００８】
それゆえに、本発明の目的は、複数のメモリアクセスリクエスタからのリクエストでも、バスの使用効率を高めるためのグループ化が可能なメモリコントローラおよびデータ処理装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明の一実施例のメモリコントローラによれば、複数のメモリアクセスリクエスタから受信したリクエストを格納するキューと、キュー内のリクエストのうち、メモリにおける１回の読出しサイクルまたは書込みサイクルでアクセス可能なリクエストを併合する併合部と、リクエストに従って、メモリに対してアクセスを行なうインタフェース部とを備え、インタフェース部は、併合された複数のリクエストに対するメモリへのアクセスを一括して行なう。
【発明の効果】
【００１０】
本発明によれば、複数のメモリアクセスリクエスタからのリクエストでも、バスの使用効率を高めるためのグループ化を行なうことができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態について、図面を参照して説明する。
図１は、本発明の実施形態のデータ処理装置の構成を表わす図である。
【００１２】
図１を参照して、このデータ処理装置１は、複数個のイニシエータ１〜４と、バスアービタ７と、メモリコントローラ６と、ＤＤＲ（Double Data Rate）２−ＳＤＲＡＭ（Synchronous Dynamic Random Access memory）８とを備える。
【００１３】
このデータ処理装置１００は、たとえば、符号化などの画像処理を行なう装置であり、各イニシエータ１〜４が、特定の画像処理機能を担当し、ＤＤＲ２−ＳＤＲＡＭ８は、各画素のデータを記憶し、複数のイニシエータ１〜４のうちイニシエータ１は、ＣＰＵ（Central Processing Unit）であるものとする。
【００１４】
バスアービタ７は、イニシエータ１〜４から出力されるリクエスト（トランザクション）と、ＤＤＲ２−ＳＤＲＡＭ８から出力されるレスポンスとの競合を調停するルータとして機能する。
【００１５】
各イニシエータ１〜４は、メモリアクセスリクエスタであって、リクエスト生成部１０と、ポインタ管理部１１とを備える。
【００１６】
リクエスト生成部１０は、リクエストを生成し、生成したリクエストをバス５を通じてメモリコントローラ６へ出力する。
【００１７】
図２（ａ）および（ｂ）は、リクエストのデータ構造を表わす図である。
図２（ａ）に示すように、リクエストがリードの場合には、リクエストは、リード要求と、リクエスト特性情報と、割込通知要求フラグとからなる。また、図２（ｂ）に示すように、リクエストがライトの場合には、リクエストは、ライト要求と、ライトデータと、リクエスト特性情報と、割込通知要求フラグとからなる。
【００１８】
割込通知要求フラグは、このリクエストが終了した場合に、イニシエータ１（ＣＰＵ）に割込みを通知する場合に付加される。この割込通知要求フラグは、たとえば、画像処理装置において、画像処理の最終段の処理を行なう画像処理モジュール（イニシエータ）が、１画面の最後のデータに対するアクセスを要求するようなリクエストに含まれる。割込みを通知されたイニシエータ１（ＣＰＵ）は、１画面の処理が終了したことが分かるので、１画面の表示処理を行なうようにすることができる。
【００１９】
図２（ｃ）は、リクエスト情報の例を表わす図である。
ＴＩＤは、リクエストを識別する番号である。
【００２０】
キューイング可否は、リクエストキュー２２に格納可能か否かの識別情報である。
併合可否は、他のリクエストと併合されて一括処理が可能か否かの識別情報である。これは、他のリクエストと併合されると不都合が生じるようなリクエストを考慮したものである。
【００２１】
発行元イニシエータ番号は、リクエストを発行したイニシエータを識別する情報である。
【００２２】
許容待ち時間情報は、リクエストによるＤＤＲ２−ＳＤＲＡＭ８へのアクセス開始の許容できる待ち時間を表わす。これは、リクエストが、イニシエータから発行されてから、実際に処理が行われるまでに時間的な制限が課されている場合が多いことを考慮したものである。
【００２３】
優先度情報は、処理の優先度を表わす。
想定平均処理レートは、リクエストが属するグループの平均処理レート、つまり１バイト当りの処理時間の想定される平均値である。処理時間とは、ＤＤＲ２−ＳＤＲＡＭ８へのアクセスが開始されるまでの時間である。
【００２４】
メモリアドレスは、ＤＤＲ２−ＳＤＲＡＭ８内のアクセス対象のメモリセルのアドレスである。
【００２５】
転送バイト数は、イニシエータとＤＤＲ２−ＳＤＲＡＭ８間のデータの転送バイト数である。
【００２６】
転送方向は、データを転送する方向が、イニシエータからＤＤＲ２−ＳＤＲＡＭ８（ライト）か、ＤＤＲ２−ＳＤＲＡＭ８からイニシエータ（リード）かの識別情報である。
【００２７】
アクセスレベルは、特権アクセスか、あるいはユーザアクセスかの識別情報である。
スプリット可否は、アクセスが、途中でスプリット（中断）可能か否かの識別情報である。
【００２８】
ロック転送フラグは、ロック転送か否かを識別する情報である。
アウトオブオーダ可否フラグは、アウトオブオーダ可能なリクエストか否かの識別情報である。リクエストがアウトオブオーダが不可能な場合には、そのリクエストは、それまでに受信したリクエストのすべてが処理された後、かつそれ以降に受信したリクエストが処理されるまでの間に処理する。
【００２９】
再び、図１を参照して、ポインタ管理部１１は、出力したリクエストごとに、ＤＤＲ２−ＳＤＲＡＭ８内のアクセス位置を表わすアドレスを表わすポインタと、ポインタについてのアクセス状態を表わすポインタフラグを管理する。
【００３０】
図３（ａ）は、ポインタのフラグを表わす図である。
図３（ａ）を参照して、ＤＤＲ２−ＳＤＲＡＭ８のデータの更新中の場合には、ポインタフラグはＤ（Dirty）となる。ＤＤＲ２−ＳＤＲＡＭ８のデータの参照中の場合には、ポインタフラグはＲ（Reference）となる。ＤＤＲ２−ＳＤＲＡＭ８へのアクセスが行なわれていない場合には、ポインタフラグはＶ（Valid）となる。
【００３１】
ポインタ管理部１１は、リードのリクエストを出力後、ステータス管理部２５から実行中（ＥＸＥ）のステータスの通知を受けたときには、ポインタフラグをＲに設定する。また、ポインタ管理部１１は、ライトのリクエストを出力後、ステータス管理部２５から実行中（ＥＸＥ）のステータスの通知を受けたときには、ポインタフラグをＤに設定する。また、ポインタ管理部１１は、リクエストの出力後、ステータス管理部２５から終了状態（ＤＯＮＥ）のステータスの通知を受けたときには、ポインタフラグをＶに設定する。
【００３２】
図３（ｂ）は、イニシエータ１で発行されたリクエストのポインタフラグと、ポインタ値の例を表わす図である。図３（ｃ）は、イニシエータ２で発行されたリクエストのポインタフラグと、ポインタ値の例を表わす図である。図３（ｄ）は、イニシエータ３で発行されたリクエストのポインタフラグと、ポインタ値の例を表わす図である。図３（ｅ）は、イニシエータ４で発行されたリクエストのポインタフラグと、ポインタ値の例を表わす図である。
【００３３】
このように、各イニシエータ１〜４が自身のリクエストに対するポインタフラグを管理し、イニシエータ１〜４どうしで、互いに他のイニシエータ１〜４のポインタフラグを参照することによって、たとえば、イニシエータ２が、ＤＤＲ２−ＳＤＲＡＭ８内のＡＤＤ（１０）のアドレスのデータを参照中であるので、他のイニシエータ１、３および４からは、ＤＤＲ２−ＳＤＲＡＭ８内のＡＤＤ（１０）のアドレスと同一のロー（行）へアクセスすることを控えるようにすることができ、ＤＤＲ２−ＳＤＲＡＭ８内のデータのコヒーレンシを保つことができる。
【００３４】
再び、図１を参照して、ＤＤＲ２−ＳＤＲＡＭ８は、メモリセルアレイ５１と、ロウデコーダ５３と、カラムデコーダ５２と、アドレスバッファ５５と、コマンドデコーダ５７と、Ｉ／Ｏバッファ５４とを備える。
【００３５】
メモリセルアレイ５１は、行列上に配置された複数のメモリセルを備える。メモリセル内には、行方向にｍ本のワード線ＷＬ１〜ＷＬｍが配置され、列方向にｎ本のビット線ＢＬ１〜ＢＬｎが配置される。
【００３６】
アドレスバッファ５５は、メモリインタフェース部２７から出力されたロウアドレスおよびカラムアドレスを受けて、ロウアドレスをロウデコーダ５３に供給し、カラムアドレスをカラムデコーダ５２に供給する。
【００３７】
コマンドデコーダ５７は、メモリインタフェース部２７から出力されたコマンドを受けて、コマンドに基づいて、メモリセルアレイ５１に対するアクセスを制御する。
【００３８】
Ｉ／Ｏバッファ５４は、カラムアドレスで選択された列のビット線対から伝送されるリードデータを保持し、リードデータをメモリコントローラ６へ出力する。また、Ｉ／Ｏバッファ５４は、メモリコントローラ６から送られたライトデータを保持し、カラムアドレスで選択された列のビット線対へ出力する。
【００３９】
ロウデコーダ５３は、アドレスバッファ５５から送られるロウアドレスに従って、１本のワード線を選択して、選択したワード線を活性化する。
【００４０】
カラムデコーダ５２は、アドレスバッファ５５から送られるカラムアドレスに従って、Ｉ／Ｏバッファ５４と接続する列を選択する。
【００４１】
図４は、メモリコントローラ６の構成を表わす図である。
図４を参照して、メモリコントローラ６は、キューイング可否判定部２０と、リクエストキュー２２と、キュー情報記憶部２３と、併合部３１と、併合情報記憶部２４と、イニシエータグループ情報記憶部３０と、優先制御部２１と、メモリインタフェース部２７と、ステータス情報記憶部２６と、ステータス管理部２５と、メモリインタフェース部２７と、出力制御部２９とを備える。優先制御部２１は、待ち時間計測部２８と、処理時間計測部３２と、平均処理レート算出部３３と、選択部３４とを備える。
【００４２】
キューイング可否判定部２０は、受信したリクエストのリクエスト情報のキューイング可否を参照して、キューイング可否が可に設定されているかどうかを調べる。キューイング可否判定部２０は、キューイング可否が可に設定されている場合には、受信したリクエストをリクエストキュー２２の空いているキー位置の番号が最も小さい位置に出力し、受信したリクエストが格納された状態を表わすようにキュー情報記憶部２３内のキュー情報を更新する。また、キューイング可否判定部２０は、キューイング可否が不可に設定されている場合には、受信したリクエストを直接選択部３４に出力する。このように、キューイングの可否を判定することによって、迅速に処理すべきリクエスト（特にイニシエータ１（ＣＰＵ）から出力されるリクエストなど）がリクエストキュー２２に格納されることによって、処理が後回しになるのを防止することができる。
【００４３】
リクエストキュー２２は、キューイング可否判定部２０から出力されたリクエストを格納する。リクエストは、リクエストキュー２２内のキュー位置の番号が小さい方から順番に格納される。また、リクエストキュー２２は、格納しているリクエストがメモリインタフェース部２７へ出力された場合には、残りのリクエストをキュー位置の番号が小さくなるように詰めることによって、リクエストを再配置する。
【００４４】
図５（ａ）および（ｂ）は、リクエストキュー２２の状態の例を表わす図である。
図５（ａ）を参照して、キュー位置が「１」にＴＩＤが「０００１」のリクエストが格納され、キュー位置が「２」にＴＩＤが「０００２」のリクエストが格納され、キュー位置が「３」にＴＩＤが「０００３」のリクエストが格納され、キュー位置が「４」にＴＩＤが「０００４」のリクエストが格納され、キュー位置が「５」にＴＩＤが「０００５」のリクエストが格納され、キュー位置が「６」にＴＩＤが「０００９」のリクエストが格納され、キュー位置が「７」にＴＩＤが「００１０」のリクエストが格納され、キュー位置が「８」にＴＩＤが「００１１」のリクエストが格納され、キュー位置が「９」にＴＩＤが「００１２」のリクエストが格納されている。
【００４５】
図５（ｂ）は、図５（ａ）の状態から、ＴＩＤが「０００１」、「０００３」、「０００５」、「０００９」、「００１０」、「００１１」、「００１２」のリクエストが出力されたときのリクエストキュー２２の状態を表わす。
【００４６】
キュー情報記憶部２３は、キューの位置と、そこに格納されているリクエストの識別番号（ＴＩＤ）との対応を定めたキュー情報を記憶する。
【００４７】
図６（ａ）は、図５（ａ）に示すリクエストキュー２２の状態でのキュー情報の例を表わす図である。図６（ｂ）は、図６（ｂ）に示すリクエストキュー２２の状態でのキュー情報の例を表わす図である。
【００４８】
再び、図１を参照して、併合部３１は、リクエストキュー２２内のリクエストのうち、ＤＤＲ２−ＳＤＲＡＭ８における１回の読出しサイクルまたは書込みサイクルでアクセス可能なリクエストを併合する。併合処理の詳細は後述する。
【００４９】
イニシエータグループ情報記憶部３０は、イニシエータグループ情報を記憶する。イニシエータグループ情報は、他の条件を満たせば、リクエストを併合することができるイニシエータの組合せを表わす。言い換えると、イニシエータグループ情報で定められていないイニシエータ間では、リクエストの併合ができないことになる。これは、併合になじまないイニシエータどうしのリクエストを併合すると不都合が生じる場合があることを考慮したものである。
【００５０】
併合情報記憶部２４は、併合されたリクエストについて、グループ識別番号（ＧＩＤ）と、そのグループに属するリクエストの識別番号（ＴＩＤ）との対応を表わす情報を記憶する。
【００５１】
図７は、併合情報の例を表わす図である。
図７を参照して、グループ識別番号（ＧＩＤ）が「０００１」には、ＴＩＤが「０００１」、「０００５」、「０００９」、「００１０」のリクエストが併合されている。また、グループ識別番号（ＧＩＤ）が「０００２」には、ＴＩＤが「０００３」、「００１１」、「００１２」のリクエストが併合されている。
【００５２】
ステータス情報記憶部２６は、受信したリクエストのステータス情報を記憶する。ＤＤＲ２−ＳＤＲＡＭ８へのアクセスが未実行のリクエストのステータスは、アイドル（ＩＤＬＥ）である。ＤＤＲ２−ＳＤＲＡＭ８へのアクセスが実行中のリクエストのステータスは実行中（ＥＸＥ）である。ＤＤＲ２−ＳＤＲＡＭ８へのアクセスが終了したリクエストのステータスは終了状態（ＤＯＮＥ）である。
【００５３】
図８は、ステータス情報の例を表わす図である。
図８を参照して、グループ識別番号（ＧＩＤ）が「０００１」に属するＴＩＤが「０００１」、「０００５」、「０００９」、「００１０」のリクエストのステータスは、いずれも「ＥＮＤ」である。
【００５４】
また、ＴＩＤが「０００２」のリクエストのステータスは、「ＩＤＬＥ」である。
グループ識別番号（ＧＩＤ）が「０００２」に属するＴＩＤが「０００３」、「００１１」のリクエストのステータスは、いずれも「ＥＮＤ」であり、ＴＩＤが「００１２」のリクエストのスタータスは「ＥＸＥ」である。このように、同一のグループに属するリクエストのステータスが相違するのは、たとえば、リードのアクセスの場合に、指定したカラムアドレスおよび指定した転送バイト数などによって、ＤＤＲ２−ＳＤＲＡＭ８から転送されてきたリードデータが、どのリクエストに対応するものかを識別することができるからである。
【００５５】
また、ＴＩＤが「０００４」のリクエストのステータスは、「ＩＤＬＥ」である。
ステータス管理部２５は、イニシエータ１〜４からのリクエストの受信に応じて、リクエストのステータスをＩＤＬＥに設定する。ステータス管理部２５は、メモリインタフェース部２７がリクエストに従ってＤＤＲ２−ＳＤＲＡＭ８へのアクセスを開始した（つまり、コマンドやアドレスを出力した）ことに応じて、リクエストのステータスをＥＸＥに設定する。また、ステータス管理部２５は、リクエストがリードの場合に、リクエストに応答してＤＤＲ２−ＳＤＲＡＭ８からリードデータを受信したことに応じて、リクエストのステータスをＤＯＮＥに設定する。また、ステータス管理部２５は、リクエストがライトの場合には、リクエストに従ってＤＤＲ２−ＳＤＲＡＭ８へのアクセスを開始してから所定の時間が経過したことに応じて、リクエストのステータスをＤＯＮＥに設定する。
【００５６】
ステータス管理部２５は、リクエストのステータスが変化したことに応じて、リクエストを出力したイニシエータに対して、ステータス情報を送る。このようにリクエストのステータスをイニシエータ側に送るのは、イニシエータ側は、発行したリクエストがリクエストキュー２２に格納されることによって、すぐに実行されるとは限らず、発行したリクエストのステータスが把握できないことを考慮したものである。
【００５７】
また、ステータス管理部２５は、ステータスが（ＤＯＮＥ）に変化したリクエストが、割込通知要求フラグがオンのリクエストの場合には、特定のイニシエータ１（ＣＰＵ）に割込みを表わす割込情報を送る。
【００５８】
待ち時間計測部２８は、ステータス情報記憶部２６を参照して、リクエストがリクエストキュー２２に格納されることによってそのリクエストのステータスがＩＤＬＥが設定された時に、そのリクエスト用のタイマを起動し、待ち時間を計測する。
【００５９】
処理時間計測部３２は、ステータス情報記憶部２６を参照して、リクエストがリクエストキュー２２に格納されることによってそのリクエストのステータスがＩＤＬＥに設定された時に、そのリクエスト用のタイマを起動し、そのリクエストのステータスがＥＸＥに設定される（すなわちアクセスが開始される）までの時間を計測して、処理時間記憶部６１に記憶する。
【００６０】
平均処理レート算出部３３は、各リクエストの計測された処理時間と転送バイト数とを用いて、グループごとの平均処理レート、つまり１バイトごとの処理時間の平均値を算出して、平均処理レート記憶部６２に記憶する。ここでは、１つのグループに属するリクエストは、たとえば、キューイング可否、併合可否、および転送方向が同一であるとする。
【００６１】
選択部３４は、第１優先度制御、第２優先度制御に基づいて、リクエストキュー２２に格納されたリクエストおよびキューイング可否判定部２０から直接送られてきたリクエストのうち、次に処理すべきリクエストを選択し、選択したリクエストをメモリインタフェース部２７に出力する。第１優先度制御は、できるだけ迅速に処理すべきリクエストを選択するための制御である。第２優先度制御は、第１優先度制御だけでは、いつまでも選択されずに残ってしまうリクエストを選択するための制御である。第１優先度制御および第２優先度制御の詳細は、後述する。
【００６２】
メモリインタフェース部２７は、選択部３４から出力されたリクエストに基づいて、ＤＤＲ２−ＳＤＲＡＭ８に対して、バス１２を通じてアクセスを行なう。すなわち、メモリインタフェース部２７は、アクセス要求がリードの場合には、リクエスト情報中のメモリアドレスおよび転送バイト数に基づいて、プリチャージコマンドを出力し、その後アクティブコマンドとロウアドレスを発行し、その後リードコマンドとカラムアドレスを発行する。また、メモリインタフェース部２７は、アクセス要求がライトの場合には、リクエスト情報中のメモリアドレスおよび転送バイト数に基づいて、プリチャージコマンドを発行し、その後アクティブコマンドとロウアドレスを発行し、その後ライトコマンドとカラムアドレスを発行する。
【００６３】
メモリインタフェース部２７は、併合された複数のリクエストに対するＤＤＲ２−ＳＤＲＡＭ８へのアクセスを一括して行なう。すなわち、メモリインタフェース部２７は、併合された複数のリクエストについては、ロウアドレスが同一であるので、先頭のリクエストについてのみ、プリチャージコマンド、アクティブコマンドおよびロウアドレスをＤＤＲ２−ＳＤＲＡＭ８へ出力する。このように、コマンドおよびアドレスの転送回数を減らすことによって、メモリコントローラ６とＤＤＲ２−ＳＤＲＡＭ８の間のバス１２の使用効率を高めることができる。
【００６４】
また、メモリインタフェース部２７は、アクセス要求がリードの場合には、バス１２を通じてＤＤＲ２−ＳＤＲＡＭ８から送られるリードデータを受信する。
【００６５】
出力制御部２９は、リクエスト情報に基づいて、受信したリードデータをどのイニシエータに出力するかを特定し、特定したイニシエータにリードデータを出力する。
【００６６】
（キューイングと併合処理の動作）
図９は、キューイングと併合処理の動作手順を表わす図である。
【００６７】
図９を参照して、キューイング可否判定部２０は、受信したリクエストのリクエスト情報のキューイング可否を参照して、キューイング可否が可に設定されているかどうかを調べる。キューイング可否判定部２０は、キューイング可否が可に設定されている場合には（ステップＳ１０１でＹＥＳ）、受信したリクエストをリクエストキュー２２の空いているキー位置の番号が最も小さい位置に出力する（ステップＳ１０２）。また、キューイング可否判定部２０は、受信したリクエストが格納された状態を表わすようにキュー情報記憶部２３内のキュー情報を更新する（ステップＳ１０４）。
【００６８】
一方、キューイング可否判定部２０は、キューイング可否が不可に設定されている場合には（ステップＳ１０１でＮＯ）、受信したリクエストを直接選択部３４に出力する（ステップＳ１０３）。
【００６９】
次に、併合部３１は、受信したリクエストのリクエスト情報の併合可否を参照して、併合可否が可に設定されているかどうかを調べる。併合部３１は、併合可否が不可に設定されている場合には（ステップＳ１０５でＮＯ）、受信したリクエストと他のリクエストとの併合を行なわないこととし、ステップＳ１１１に進む。
【００７０】
次に、併合部３１は、併合可否が可に設定されている場合には（ステップＳ１０５でＹＥＳ）、受信したリクエストのリクエスト情報の発行元イニシエータ識別番号と、リクエストキュー２２に格納されているリクエストのリクエスト情報の発行元イニシエータ識別番号と、イニシエータグループ情報記憶部３０内のイニシエータグループ情報を参照して、受信したリクエストの発行元イニシエータが属するイニシエータグループと同一のグループに属するイニシエータの１個以上のリクエスト（Ａ）が、リクエストキュー２２に格納されているかどうかを調べる。併合部３１は、１個以上のリクエスト（Ａ）が格納されていない場合には（ステップＳ１０６でＮＯ）、受信したリクエストと他のリクエストとの併合を行なわないこととし、ステップＳ１１１に進む。
【００７１】
次に、併合部３１は、１個以上のリクエスト（Ａ）が格納されている場合には（ステップＳ１０６でＹＥＳ）、受信したリクエストのリクエスト情報の転送方向と、リクエストキュー２２に格納されている１個以上のリクエスト（Ａ）のリクエスト情報の転送方向を参照して、リクエストキュー２２に格納されている１個以上のリクエスト（Ａ）のうち、受信したリクエストと転送方向が同一である１個以上のリクエスト（Ｂ）があるかどうかを調べる。併合部３１は、１個以上のリクエスト（Ｂ）がない場合には（ステップＳ１０７でＮＯ）、受信したリクエストと他のリクエストとの併合を行なわないこととし、ステップＳ１１１に進む。
【００７２】
次に、併合部３１は、１個以上のリクエスト（Ｂ）がある場合には（ステップＳ１０７でＹＥＳ）、受信したリクエストのリクエスト情報のメモリアドレスと、リクエストキュー２２に格納されている１個以上のリクエスト（Ｂ）のリクエスト情報のメモリアドレスを参照して、リクエストキュー２２に格納されている１個以上のリクエスト（Ｂ）のうち、受信したリクエストと、メモリアドレスのうちのロウアドレスが同一の１個以上のリクエスト（Ｃ）があるかどうかを調べる。併合部３１は、１個以上のリクエスト（Ｃ）がない場合には（ステップＳ１０８でＮＯ）、受信したリクエストと他のリクエストとの併合を行なわないこととし、ステップＳ１１１に進む。
【００７３】
次に、併合部３１は、１個以上のリクエスト（Ｃ）がある場合には（ステップＳ１０８でＹＥＳ）、受信したリクエストのリクエスト情報の転送バイト数と、リクエストキュー２２に格納されている１個以上のリクエスト（Ｃ）のリクエスト情報の転送バイト数とを参照して、リクエストキュー２２に格納されている１個以上のリクエスト（Ｃ）のうち、併合したときの転送バイト数が、メモリセルアレイ５１のビット線の数（つまり、１回にアクセスできるサイズ）以下となるような、１個以上のリクエスト（Ｄ）があるかどうかを調べる。ここで、たとえば、リクエストＣには、ｃ１、ｃ２があり、ｃ１とｃ２が既に併合されている場合には、併合部３１は、併合情報を参照して、ｃ１とｃ２の転送バイト数の合計と、受信したリクエストの転送バイト数の総和が、１回にアクセスできるサイズ以下であるかどうかを調べることになる。併合部３１は、１個以上のリクエスト（Ｄ）がない場合には（ステップＳ１０９でＮＯ）、受信したリクエストと他のリクエストとの併合を行なわないこととし、ステップＳ１１１に進む。
【００７４】
次に、併合部３１は、１個以上のリクエスト（Ｄ）がある場合には（ステップＳ１０９でＹＥＳ）、併合情報記憶部２４内の併合情報を更新する。すなわち、併合部３１は、併合相手のリクエストが既に別のリクエストと併合されている場合には、併合されているグループに属するリクエストのＴＩＤに、受信したリクエストのＴＩＤを追記する。併合する相手のリクエストが今回初めて併合される場合には、新規にグループを作成し、そのグループに属するリクエストのＴＩＤに、受信したリクエストのＴＩＤと、併合する相手のリクエストのＴＩＤを書込む（ステップＳ１１０）。
【００７５】
次に、ステータス管理部２５は、ステータス情報記憶部２６内のステータス情報に受信したリクエストのステータス（ＩＤＬＥ）を設定する（ステップＳ１１１）。
【００７６】
（第１の優先度制御の動作）
図１０は、第１の優先度制御の動作手順を表わす図である。
【００７７】
図１０を参照して、待ち時間計測部２８は、１つのリクエストがリクエストキュー２２に格納されるごとに、そのリクエスト用のタイマを起動して、待ち時間Ｔ１を計測する。すなわち、待ち時間計測部２８は、リクエストがリクエストキュー２２に格納されることによってステータス情報にそのリクエストのステータスがＩＤＬＥが設定された時に、そのリクエスト用のタイマを起動し、待ち時間Ｔ１を計測する（ステップＳ２０１）。
【００７８】
次に、選択部３４は、キューイング可否判定部２０から直接出力されたリクエスト（このリクエストをリクエストＡとする）があるかどうかを調べる。
【００７９】
選択部３４は、リクエストＡが１個以上存在する場合には（ステップＳ２０２でＹＥＳ）、１個のリクエストＡをメモリインタフェース部２７へ送る（ステップＳ２０３）。
【００８０】
次に、選択部３４は、リクエストＡが存在しない場合には（ステップＳ２０２でＮＯ）、リクエストキュー２２に格納されているリクエストのリクエスト情報の許容間待ち時間情報を参照して、リクエストキュー２２に格納された複数のリクエストについて、許容可能待ち時間Ｔ２と、待ち時間計測部２８で計測された待ち時間Ｔ１との時間差を算出し、この時間差ΔＴが閾値ＴＲ１以下となるリクエスト（このリクエストをリクエストＢとする）があるかどうかを調べる。ここで、ＴＲ１は、転送バイト数、メモリコントローラ６からＤＤＲ２−ＳＤＲＡＭ８までの転送レートを考慮した値である。
【００８１】
選択部３４は、リクエストＢが１個以上存在する場合には（ステップＳ２０４でＹＥＳ）、１個のリクエストＢをメモリインタフェース部２７へ送る。ただし、この１個のリクエストＢが併合されている場合には、選択部３４は、併合されている他のリクエストもメモリインタフェース部２７へ送る（ステップＳ２０５）。
【００８２】
次に、選択部３４は、リクエストＢが存在しない場合には（ステップＳ２０４でＮＯ）、リクエストキュー２２に格納されているリクエストのリクエスト情報の優先度情報を参照して、優先度が他のリクエストよりも高く、かつ最大であるリクエスト（このリクエストをリクエストＣとする）があるかどうかを調べる。
【００８３】
選択部３４は、リクエストＣが１個以上存在する場合には（ステップＳ２０６でＹＥＳ）、１個のリクエストＣをメモリインタフェース部２７へ送る。ただし、この１個のリクエストＣが併合されている場合には、選択部３４は、併合されている他のリクエストもメモリインタフェース部２７へ送る（ステップＳ２０７）。
【００８４】
選択部３４は、リクエストＣが存在しない場合には（ステップＳ２０６でＮＯ）、リクエストキュー２２のキュー位置が「１」の１個のリクエスト（このリクエストをリクエストＤとする）をメモリインタフェース部２７へ送る。ただし、この１個のリクエストＤが併合されている場合には、選択部３４は、併合されている他のリクエストもメモリインタフェース部２７へ送る（ステップＳ２０８）。
【００８５】
リクエストキュー２２は、格納しているリクエストがメモリインタフェース部２７へ出力された場合には、残りのリクエストをキュー位置の番号が小さくなるように詰めることによって、リクエストを再配置する（ステップＳ２０９）。
【００８６】
次に、選択部３４は、リクエストキュー２２内のリクエストがメモリインタフェース部２７へ出力された場合には、再配置したリクエストキュー２２の格納状態を表わすようにキュー情報記憶部２３内のキュー情報を更新する（ステップＳ２１０）。
【００８７】
次に、メモリインタフェース部２７は、選択部３４から出力されたリクエストに基づいて、ＤＤＲ２−ＳＤＲＡＭ８に対して、コマンド、ロウアドレス、およびカラムアドレスを発行して、アクセスを行なう（ステップＳ２１１）。
【００８８】
次に、ステータス管理部２５は、メモリインタフェース部２７がリクエストに従ってＤＤＲ２−ＳＤＲＡＭ８へのアクセスを開始した（つまり、コマンドやアドレスを出力した）ことに応じて、リクエストのステータスをＥＸＥに設定し、そのリクエストを発行したイニシエータにステータス（ＥＸＥ）を表わすステータス情報を送る（ステップＳ２１２）。
【００８９】
（第２の優先度制御の動作）
図１１は、第２の優先度制御の動作手順を表わす図である。
【００９０】
図１１を参照して、処理時間計測部３２は、１つのリクエストがリクエストキュー２２に格納されるごとに、そのリクエスト用のタイマを起動して、処理時間Ｔ３を計測する。すなわち、処理時間計測部３２は、リクエストがリクエストキュー２２に格納されることによってステータス情報にそのリクエストのステータスがＩＤＬＥに設定された時に、そのリクエスト用のタイマを起動し、そのリクエストのステータスがＥＸＥに設定されるまでの時間を処理時間Ｔ３として計測して、処理時間記憶部６１に記憶する（ステップＳ３０１）。
【００９１】
平均処理レート算出部３３は、各リクエストの処理時間Ｔ３および転送バイト数を用いて、グループごとの平均処理レートＲ１、つまり１バイトごとの処理時間の平均値を算出して、平均処理レート記憶部６２に記憶する。ここでは、１つのグループに属する１個以上のリクエストは、キューイング可否、併合可否、および転送方向が同一であるとする。
【００９２】
選択部３４は、所定の時間間隔ごとに（ステップＳ３０３でＹＥＳ）、以下のステップの処理を行なう。これは、優先度の制御は、第１の優先度制御を基本としつつ、第１の優先度制御では、いつまでも選択されないリクエストを救済するために第２の優先度制御を行なうためである。
【００９３】
選択部３４は、リクエストキュー２２に格納されているリクエストのリクエスト情報の想定処理レートＲ２を参照して、リクエストキュー２２に格納されている複数のリクエストについて、そのリクエストが属するグループの平均処理レートＲ１と、そのリクエストの想定処理レートＲ２とのレート差ΔＲを算出して、このレート差ΔＲが閾値ＴＲ２以上となるリクエスト（このリクエストをリクエストＡとする）があるかどうかを調べる。
【００９４】
選択部３４は、そのようなリクエストＡが１個以上存在する場合には（ステップＳ３０４でＹＥＳ）、１個のリクエストＡをメモリインタフェース部２７へ送る。ただし、この１個のリクエストＡが併合されている場合には、選択部３４は、併合されている他のリクエストもメモリインタフェース部２７へ送る（ステップＳ３０５）。
【００９５】
次に、リクエストキュー２２は、格納しているリクエストがメモリインタフェース部２７へ出力された場合には、残りのリクエストをキュー位置の番号が小さくなるように詰めることによって、リクエストを再配置する（ステップＳ３０６）。
【００９６】
次に、選択部３４は、再配置したリクエストキュー２２の格納状態を表わすようにキュー情報記憶部２３内のキュー情報を更新する（ステップＳ３０７）。
【００９７】
次に、メモリインタフェース部２７は、選択部３４から出力されたリクエストに基づいて、ＤＤＲ２−ＳＤＲＡＭ８に対して、コマンド、ロウアドレス、およびカラムアドレスを発行して、アクセスを行なう（ステップＳ３０８）。
【００９８】
次に、ステータス管理部２５は、メモリインタフェース部２７がリクエストに従ってＤＤＲ２−ＳＤＲＡＭ８へのアクセスを開始した（つまり、コマンドやアドレスを出力した）ことに応じて、リクエストのステータスをＥＸＥに設定し、そのリクエストを発行したイニシエータにステータス（ＥＸＥ）を表わすステータス情報を送る（ステップＳ３０９）。
【００９９】
（イニシエータへの応答処理の動作）
図１２は、イニシエータへの応答処理の動作手順を表わす図である。
【０１００】
図１２を参照して、メモリインタフェース部２７が、転送方向がＤＤＲ２−ＳＤＲＡＭ８からイニシエータに設定されたリクエストに従ってリードコマンドを出力した場合に（ステップＳ４０１でＹＥＳ）、メモリインタフェース部２７は、ＤＤＲ２−ＳＤＲＡＭ８からリードデータを受信する（ステップＳ４０２）。
【０１０１】
出力制御部２９は、リクエスト情報に基づいて、受信したリードデータをどのイニシエータに出力するかを特定し、特定したイニシエータにリードデータを出力する（ステップＳ４０３）。
【０１０２】
ステータス管理部２５は、イニシエータへ出力したリードデータに対応するリクエスト、つまり、そのリードデータの転送を指定したリクエストのステータス情報をＤＯＮＥに設定し、そのリードデータの転送を指定したリクエストを発行したイニシエータにステータス（ＤＯＮＥ）を表わすステータス情報を送る（ステップＳ４０４）。
【０１０３】
一方、メモリインタフェース部２７が、転送方向がイニシエータからＤＤＲ２−ＳＤＲＡＭ８に設定されたリクエストに従ってライトコマンドを出力した場合に（ステップＳ４０１でＮＯ）、ステータス管理部２５は、所定の時間が経過した後（ステップＳ４０５でＹＥＳ）、そのリクエストのステータス情報をＤＯＮＥに設定し、そのリクエストを発行したイニシエータにステータス（ＤＯＮＥ）を表わすステータス情報を送る（ステップＳ４０６）。
【０１０４】
次に、出力制御部２９は、そのリクエストが、割込通知要求フラグがオンのリクエストの場合には（ステップＳ４０７でＹＥＳ）、イニシエータ１（ＣＰＵ）に割込みを表わす割込情報を送る（ステップＳ４０８）。
【０１０５】
以上のように、本発明の実施形態のデータ処理装置によれば、複数のイニシエータからのリクエストでも、同一の行に対するものは併合して一括して処理するので、バススの使用効率を高めることができる。
【０１０６】
［変形例］
本発明は、上記の実施形態に限定されるものではなく、たとえば、以下のような変形例も含まれる。
【０１０７】
（１）  平均処理レート
本発明の実施形態では、ＤＤＲ２−ＳＤＲＡＭへのアクセスが開始されるまでのレートを想定処理レートとしたが、これに限定するものではない、たとえば、ＤＤＲ２−ＳＤＲＡＭへのアクセスが終了するまでのレートを想定処理レートとしてもよい。そして、処理時間計測部３２は、リクエストがリクエストキュー２２に格納されることによってステータス情報にそのリクエストのステータスがＩＤＬＥが設定された時に、そのリクエスト用のタイマを起動し、そのリクエストのステータスがＤＯＮＥに設定される（すなわち、アクセスが終了）までの時間を処理時間Ｔ３として計測することとしてもよい。
【０１０８】
（２）  ポインタ管理部
本発明の実施形態では、ポインタ管理部が、ポインタとポインタフラグを管理するものとしたが、これに限定するものではない。たとえば、ポインタ管理部が、ポインタとポインタフラグに加えて、アクセス対象のメモリセルのアドレス、ポインタを始点としたアクセス対象のメモリセルの数などを管理することとしてもよい。
【０１０９】
（３）  割り込み
本発明の実施形態では、割込通知要求フラグは、たとえば、画像処理装置において、画像処理の最終段の処理を行なう画像処理モジュール（イニシエータ）が、１画面の最後のデータに対するアクセスを要求するようなリクエストに含まれるとしたが、これに限定するものではない。特定のイニエータが、１画面の最初のデータに対するアクセスを要求するようなリクエストに含まれるものとしてもよい。この場合、ステータス管理部２５は、ステータスが（ＥＸＥ）に変化したリクエストが、割込通知要求フラグがオンのリクエストの場合には、特定のイニシエータ１（ＣＰＵ）に割込みを表わす割込情報を送るものとしてもよい。
【０１１０】
（４）  ライト要求
本発明の実施形態では、メモリインタフェース部２７が転送方向がイニシエータ側に設定されたリクエストに従ってライトコマンドを出力した場合に、ステータス管理部２５は、所定の時間が経過した後、そのリクエストのステータスをＤＯＮＥに設定したが、これに限定するものではない。たとえば、ＤＤＲ２−ＳＤＲＡＭから書込みを終了したことを表わす情報を受信した後、または、リクエストの転送が終了したことを表わす情報を受信したときに、リクエストのステータスをＤＯＮＥに設定するものとしてもよい。
【０１１１】
（５）  割込みの判断
本発明の実施形態では、割込通知要求フラグを用いて、割込情報を送るか否かを判断するものとしたが、これに限定するものではない。たとえば、リクエスト情報に含まれるアクセスされるメモリアドレスに基づいて、割込みを送るか否かを判断してもよい。
【０１１２】
またリクエストの併合や実行において、データの整合性や排他処理を考慮することは当然に行うことである。例えば、メモリインタフェース部２７でＤＤＲ２−ＳＤＲＡＭへのリードリクエスト、ライトリクエスト、再度のリードリクエストが順次受付けられ、２つのリードリクエストが併合可能な属性であったとしても、ライトリクエストにより最初のリードリクエストまたは再度のリードリクエストでのデータに整合性の問題を生じるのであれば、これら２つのリードリクエストの併合は当然に行われず、ライトリクエストの実行時点を挟んで、前後のリードリクエストがかかる順序で実行される。
【０１１３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。特にメモリインタフェース部に接続されるメモリはＤＤＲ２−ＳＤＲＡＭを含むＳＤＲＡＭ(揮発性メモリ)だけでなくＮＡＮＤ型Ｆｌａｓｈメモリ(不揮発性メモリ)等を含み、アクセスアドレスにより選択される１のワード線に接続されるメモリセルの数が比較的多く１回のワード線アクセスに対して複数回のデータ入出力が対応するようなメモリ、又は複数個のメモリを有する外面的に同様の動作と捉えられる記憶媒体(メモリカード)のインタフェース部において本発明を同様に実施することが可能である。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１１４】
【図１】本発明の実施形態のデータ処理装置の構成を表わす図である。
【図２】リクエストのデータ構造を表わす図である。
【図３】（ａ）は、ポインタフラグを表わす図である。（ｂ）は、イニシエータ１で発行されたリクエストのポインタフラグと、ポインタ値の例を表わす図である。（ｃ）は、イニシエータ２で発行されたリクエストのポインタフラグと、ポインタ値の例を表わす図である。（ｄ）は、イニシエータ３で発行されたリクエストのポインタフラグと、ポインタ値の例を表わす図である。（ｅ）は、イニシエータ４で発行されたリクエストのポインタフラグと、ポインタ値の例を表わす図である。
【図４】メモリコントローラの構成を表わす図である。
【図５】（ａ）および（ｂ）は、リクエストキューの状態の例を表わす図である。
【図６】キュー情報の例を表わす図である。
【図７】併合情報の例を表わす図である。
【図８】ステータス情報の例を表わす図である。
【図９】キューイングと併合処理の動作手順を表わす図である。
【図１０】第１の優先度制御の動作手順を表わす図である。
【図１１】第２の優先度制御の動作手順を表わす図である。
【図１２】イニシエータへの応答処理の動作手順を表わす図である。
【符号の説明】
【０１１５】
１〜４  イニシエータ、５，１２  バス、６  メモリコントローラ、７  バスアービタ、８  ＤＤＲ２−ＳＤＲＡＭ、１０  リクエスト生成部、１１  ポインタ管理部、２０  キューイング可否判定部、２１  優先制御部、２２  リクエストキュー、２３  キュー情報記憶部、２４  併合情報記憶部、２５  ステータス管理部、２６  ステータス情報記憶部、２７  メモリインタフェース部、２８  待ち時間計測部、２９  出力制御部、３０  イニシエータグループ情報記憶部、３１  併合部、３２  処理時間計測部、３３  平均処理レート算出部、３４  選択部、５１  メモリセルアレイ、５２  カラムデコーダ、５３  ロウデコーダ、５４  Ｉ／Ｏバッファ、５５  アドレスバッファ、５７  コマンドデコーダ、６１  処理時間記憶部、６２  平均処理レート記憶部。
【図１】
2010134628.tif 000003
【図２】
2010134628.tif 000004
【図３】
2010134628.tif 000005
【図４】
2010134628.tif 000006
【図５】
2010134628.tif 000007
【図６】
2010134628.tif 000008
【図７】
2010134628.tif 000009
【図８】
2010134628.tif 000010
【図９】
2010134628.tif 000011
【図１０】
2010134628.tif 000012
【図１１】
2010134628.tif 000013
【図１２】
2010134628.tif 000014