JP2010134628A - Memory controller and data processor - Google Patents
Memory controller and data processor Download PDFInfo
- Publication number
- JP2010134628A JP2010134628A JP2008308795A JP2008308795A JP2010134628A JP 2010134628 A JP2010134628 A JP 2010134628A JP 2008308795 A JP2008308795 A JP 2008308795A JP 2008308795 A JP2008308795 A JP 2008308795A JP 2010134628 A JP2010134628 A JP 2010134628A
- Authority
- JP
- Japan
- Prior art keywords
- request
- memory
- status
- unit
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
Description
本発明は、メモリコントローラおよびデータ処理装置に関し、特に、複数のメモリアクセスリクエスタからのリクエストを処理するメモリコントローラ、およびそのようなメモリコントローラを備えたデータ処理装置に関する。 The present invention relates to a memory controller and a data processing device, and more particularly to a memory controller that processes requests from a plurality of memory access requesters and a data processing device including such a memory controller.
従来から、バスに接続された複数のメモリアクセスリクエスタ(バスマスタ)と、そのバスにメモリコントローラを介して接続されたメモリとを備えたデータ処理装置において、バスマスタのレイテンシを低減することを目的とした方法が開示、提案されている。 Conventionally, in a data processing device including a plurality of memory access requesters (bus masters) connected to a bus and a memory connected to the bus via a memory controller, the object is to reduce the latency of the bus master. A method is disclosed and proposed.
たとえば、特許文献1には、インタフェース部が、メモリアクセスリクエスタ(バスマスタ)からバスの所定のバス帯域分を使用した共有リソースへのアクセスの要求を受信した際に、全てのバスマスタにより現在使用されているバスのバス帯域から共有リソースへのアクセスの要求が最新に許可されたバスマスタが現在使用しているバスのバス帯域を減算した第1の減算結果と、バスの最大のバス帯域から最新に許可されたバスマスタにおけるバスの予約分のバス帯域を減算した第2の減算結果とを比較して、第1の減算結果が第2の減算結果よりも大きい場合には、インタフェース部が受信した共有リソースへのアクセスの要求に対して許可を与えないようにする調停装置が開示されている。
For example, in
この調停装置によれば、メモリアクセスリクエスタ(バスマスタ)のレイテンシは低減できるものの、各バスマスタからのアクセスは、多数の細切れのものとなるため、バス帯域を効率的に使用することができない。 According to this arbitration device, although the latency of the memory access requester (bus master) can be reduced, the access from each bus master is divided into many pieces, so that the bus bandwidth cannot be used efficiently.
これに対して、たとえば、特許文献2には、特定のメモリアクセスリクエスタ(バスマスタ)は、メモリのアクセス箇所のロウアドレス(行アドレス)が一致するリクエストをグループ化して、メモリコントローラに出力し、メモリコントローラは、グループ化されたリクエストを連続して処理する方法が記載されている。この方法によれば、メモリにおいて、メモリコントーラからメモリへのコマンドおよびアドレスの転送回数を削減することができ、バスの使用効率を高めることができる。
ところで、特許文献2に記載されたリクエストのグループ化は、メモリアクセスリクエスタ(マスタ)が自身で行ない、複数のメモリアクセスリクエスタからのリクエストはグループ化されない。
By the way, the grouping of requests described in
しかしながら、複数のメモリアクセスリクエスタがメモリ内の同一のロウに同時にアクセス要求を行なう場合もある。たとえば、符号化などの画像処理を行なうデータ処理装置では、各メモリアクセスリクエスタが、特定の画像処理機能を担当し、メモリは、各画素のデータを記憶する。このような装置では、複数のメモリアクセスリクエスタが、画像の同一の行に対して、並行して処理するようなことがある。したがって、バスの使用効率を高めるために、複数のメモリアクセスリクエスタからのリクエストであってもグループ化する必要がある。 However, a plurality of memory access requesters may simultaneously request access to the same row in the memory. For example, in a data processing apparatus that performs image processing such as encoding, each memory access requester takes charge of a specific image processing function, and the memory stores data of each pixel. In such an apparatus, a plurality of memory access requesters may process the same row of an image in parallel. Therefore, in order to increase the use efficiency of the bus, it is necessary to group even requests from a plurality of memory access requesters.
それゆえに、本発明の目的は、複数のメモリアクセスリクエスタからのリクエストでも、バスの使用効率を高めるためのグループ化が可能なメモリコントローラおよびデータ処理装置を提供することである。 SUMMARY OF THE INVENTION Therefore, an object of the present invention is to provide a memory controller and a data processing device that can be grouped to increase the bus use efficiency even for requests from a plurality of memory access requesters.
本発明の一実施例のメモリコントローラによれば、複数のメモリアクセスリクエスタから受信したリクエストを格納するキューと、キュー内のリクエストのうち、メモリにおける1回の読出しサイクルまたは書込みサイクルでアクセス可能なリクエストを併合する併合部と、リクエストに従って、メモリに対してアクセスを行なうインタフェース部とを備え、インタフェース部は、併合された複数のリクエストに対するメモリへのアクセスを一括して行なう。 According to the memory controller of an embodiment of the present invention, a queue that stores requests received from a plurality of memory access requesters, and a request that can be accessed in one read cycle or write cycle in the memory among the requests in the queue. And an interface unit that accesses the memory in accordance with the request, and the interface unit collectively accesses the memory for a plurality of merged requests.
本発明によれば、複数のメモリアクセスリクエスタからのリクエストでも、バスの使用効率を高めるためのグループ化を行なうことができる。 According to the present invention, even requests from a plurality of memory access requesters can be grouped to increase the bus use efficiency.
以下、本発明の実施の形態について、図面を参照して説明する。
図1は、本発明の実施形態のデータ処理装置の構成を表わす図である。
Embodiments of the present invention will be described below with reference to the drawings.
FIG. 1 is a diagram showing a configuration of a data processing apparatus according to an embodiment of the present invention.
図1を参照して、このデータ処理装置1は、複数個のイニシエータ1〜4と、バスアービタ7と、メモリコントローラ6と、DDR(Double Data Rate)2−SDRAM(Synchronous Dynamic Random Access memory)8とを備える。
Referring to FIG. 1, a
このデータ処理装置100は、たとえば、符号化などの画像処理を行なう装置であり、各イニシエータ1〜4が、特定の画像処理機能を担当し、DDR2−SDRAM8は、各画素のデータを記憶し、複数のイニシエータ1〜4のうちイニシエータ1は、CPU(Central Processing Unit)であるものとする。
The
バスアービタ7は、イニシエータ1〜4から出力されるリクエスト(トランザクション)と、DDR2−SDRAM8から出力されるレスポンスとの競合を調停するルータとして機能する。
The
各イニシエータ1〜4は、メモリアクセスリクエスタであって、リクエスト生成部10と、ポインタ管理部11とを備える。
Each
リクエスト生成部10は、リクエストを生成し、生成したリクエストをバス5を通じてメモリコントローラ6へ出力する。
The
図2(a)および(b)は、リクエストのデータ構造を表わす図である。
図2(a)に示すように、リクエストがリードの場合には、リクエストは、リード要求と、リクエスト特性情報と、割込通知要求フラグとからなる。また、図2(b)に示すように、リクエストがライトの場合には、リクエストは、ライト要求と、ライトデータと、リクエスト特性情報と、割込通知要求フラグとからなる。
2A and 2B are diagrams showing the data structure of the request.
As shown in FIG. 2A, when the request is a read, the request includes a read request, request characteristic information, and an interrupt notification request flag. As shown in FIG. 2B, when the request is a write, the request includes a write request, write data, request characteristic information, and an interrupt notification request flag.
割込通知要求フラグは、このリクエストが終了した場合に、イニシエータ1(CPU)に割込みを通知する場合に付加される。この割込通知要求フラグは、たとえば、画像処理装置において、画像処理の最終段の処理を行なう画像処理モジュール(イニシエータ)が、1画面の最後のデータに対するアクセスを要求するようなリクエストに含まれる。割込みを通知されたイニシエータ1(CPU)は、1画面の処理が終了したことが分かるので、1画面の表示処理を行なうようにすることができる。 The interrupt notification request flag is added when notifying the initiator 1 (CPU) of an interrupt when this request is completed. This interrupt notification request flag is included in a request in which, for example, an image processing module (initiator) that performs the final stage of image processing in the image processing apparatus requests access to the last data of one screen. Since the initiator 1 (CPU) notified of the interruption knows that the processing for one screen has been completed, the display processing for one screen can be performed.
図2(c)は、リクエスト情報の例を表わす図である。
TIDは、リクエストを識別する番号である。
FIG. 2C illustrates an example of request information.
TID is a number for identifying a request.
キューイング可否は、リクエストキュー22に格納可能か否かの識別情報である。
併合可否は、他のリクエストと併合されて一括処理が可能か否かの識別情報である。これは、他のリクエストと併合されると不都合が生じるようなリクエストを考慮したものである。
The queuing permission / inhibition is identification information indicating whether or not the
The mergeability is identification information indicating whether or not batch processing is possible by merging with other requests. This takes into account a request that causes inconvenience when it is merged with another request.
発行元イニシエータ番号は、リクエストを発行したイニシエータを識別する情報である。 The issuer initiator number is information for identifying the initiator that issued the request.
許容待ち時間情報は、リクエストによるDDR2−SDRAM8へのアクセス開始の許容できる待ち時間を表わす。これは、リクエストが、イニシエータから発行されてから、実際に処理が行われるまでに時間的な制限が課されている場合が多いことを考慮したものである。
The allowable waiting time information represents an allowable waiting time for the start of access to the DDR2-
優先度情報は、処理の優先度を表わす。
想定平均処理レートは、リクエストが属するグループの平均処理レート、つまり1バイト当りの処理時間の想定される平均値である。処理時間とは、DDR2−SDRAM8へのアクセスが開始されるまでの時間である。
The priority information represents the priority of processing.
The assumed average processing rate is an average processing rate of a group to which the request belongs, that is, an assumed average value of processing time per byte. The processing time is the time until access to the DDR2-
メモリアドレスは、DDR2−SDRAM8内のアクセス対象のメモリセルのアドレスである。
The memory address is an address of a memory cell to be accessed in the DDR2-
転送バイト数は、イニシエータとDDR2−SDRAM8間のデータの転送バイト数である。
The number of transfer bytes is the number of transfer bytes of data between the initiator and the DDR2-
転送方向は、データを転送する方向が、イニシエータからDDR2−SDRAM8(ライト)か、DDR2−SDRAM8からイニシエータ(リード)かの識別情報である。
The transfer direction is identification information indicating whether the data transfer direction is from the initiator to DDR2-SDRAM 8 (write) or from the DDR2-
アクセスレベルは、特権アクセスか、あるいはユーザアクセスかの識別情報である。
スプリット可否は、アクセスが、途中でスプリット(中断)可能か否かの識別情報である。
The access level is identification information indicating whether the access is privileged access or user access.
Split availability is identification information indicating whether or not access can be split (interrupted).
ロック転送フラグは、ロック転送か否かを識別する情報である。
アウトオブオーダ可否フラグは、アウトオブオーダ可能なリクエストか否かの識別情報である。リクエストがアウトオブオーダが不可能な場合には、そのリクエストは、それまでに受信したリクエストのすべてが処理された後、かつそれ以降に受信したリクエストが処理されるまでの間に処理する。
The lock transfer flag is information for identifying whether or not the lock transfer is performed.
The out-of-order availability flag is identification information indicating whether the request is out-of-order. If the request cannot be out-of-order, the request is processed after all the requests received so far have been processed and before the subsequent received requests are processed.
再び、図1を参照して、ポインタ管理部11は、出力したリクエストごとに、DDR2−SDRAM8内のアクセス位置を表わすアドレスを表わすポインタと、ポインタについてのアクセス状態を表わすポインタフラグを管理する。
Referring again to FIG. 1, pointer management unit 11 manages a pointer indicating an address indicating an access position in DDR2-
図3(a)は、ポインタのフラグを表わす図である。
図3(a)を参照して、DDR2−SDRAM8のデータの更新中の場合には、ポインタフラグはD(Dirty)となる。DDR2−SDRAM8のデータの参照中の場合には、ポインタフラグはR(Reference)となる。DDR2−SDRAM8へのアクセスが行なわれていない場合には、ポインタフラグはV(Valid)となる。
FIG. 3A shows a pointer flag.
Referring to FIG. 3A, when data in DDR2-SDRAM 8 is being updated, the pointer flag is D (Dirty). When data in the DDR2-
ポインタ管理部11は、リードのリクエストを出力後、ステータス管理部25から実行中(EXE)のステータスの通知を受けたときには、ポインタフラグをRに設定する。また、ポインタ管理部11は、ライトのリクエストを出力後、ステータス管理部25から実行中(EXE)のステータスの通知を受けたときには、ポインタフラグをDに設定する。また、ポインタ管理部11は、リクエストの出力後、ステータス管理部25から終了状態(DONE)のステータスの通知を受けたときには、ポインタフラグをVに設定する。
The pointer management unit 11 sets the pointer flag to R when receiving a notification of the status being executed (EXE) from the
図3(b)は、イニシエータ1で発行されたリクエストのポインタフラグと、ポインタ値の例を表わす図である。図3(c)は、イニシエータ2で発行されたリクエストのポインタフラグと、ポインタ値の例を表わす図である。図3(d)は、イニシエータ3で発行されたリクエストのポインタフラグと、ポインタ値の例を表わす図である。図3(e)は、イニシエータ4で発行されたリクエストのポインタフラグと、ポインタ値の例を表わす図である。
FIG. 3B is a diagram illustrating an example of a pointer flag and a pointer value of a request issued by the
このように、各イニシエータ1〜4が自身のリクエストに対するポインタフラグを管理し、イニシエータ1〜4どうしで、互いに他のイニシエータ1〜4のポインタフラグを参照することによって、たとえば、イニシエータ2が、DDR2−SDRAM8内のADD(10)のアドレスのデータを参照中であるので、他のイニシエータ1、3および4からは、DDR2−SDRAM8内のADD(10)のアドレスと同一のロー(行)へアクセスすることを控えるようにすることができ、DDR2−SDRAM8内のデータのコヒーレンシを保つことができる。
In this way, each
再び、図1を参照して、DDR2−SDRAM8は、メモリセルアレイ51と、ロウデコーダ53と、カラムデコーダ52と、アドレスバッファ55と、コマンドデコーダ57と、I/Oバッファ54とを備える。
Referring again to FIG. 1, DDR2-
メモリセルアレイ51は、行列上に配置された複数のメモリセルを備える。メモリセル内には、行方向にm本のワード線WL1〜WLmが配置され、列方向にn本のビット線BL1〜BLnが配置される。 The memory cell array 51 includes a plurality of memory cells arranged on a matrix. In the memory cell, m word lines WL1 to WLm are arranged in the row direction, and n bit lines BL1 to BLn are arranged in the column direction.
アドレスバッファ55は、メモリインタフェース部27から出力されたロウアドレスおよびカラムアドレスを受けて、ロウアドレスをロウデコーダ53に供給し、カラムアドレスをカラムデコーダ52に供給する。
The
コマンドデコーダ57は、メモリインタフェース部27から出力されたコマンドを受けて、コマンドに基づいて、メモリセルアレイ51に対するアクセスを制御する。
The command decoder 57 receives the command output from the
I/Oバッファ54は、カラムアドレスで選択された列のビット線対から伝送されるリードデータを保持し、リードデータをメモリコントローラ6へ出力する。また、I/Oバッファ54は、メモリコントローラ6から送られたライトデータを保持し、カラムアドレスで選択された列のビット線対へ出力する。
The I / O buffer 54 holds read data transmitted from the bit line pair in the column selected by the column address, and outputs the read data to the
ロウデコーダ53は、アドレスバッファ55から送られるロウアドレスに従って、1本のワード線を選択して、選択したワード線を活性化する。
The
カラムデコーダ52は、アドレスバッファ55から送られるカラムアドレスに従って、I/Oバッファ54と接続する列を選択する。
The
図4は、メモリコントローラ6の構成を表わす図である。
図4を参照して、メモリコントローラ6は、キューイング可否判定部20と、リクエストキュー22と、キュー情報記憶部23と、併合部31と、併合情報記憶部24と、イニシエータグループ情報記憶部30と、優先制御部21と、メモリインタフェース部27と、ステータス情報記憶部26と、ステータス管理部25と、メモリインタフェース部27と、出力制御部29とを備える。優先制御部21は、待ち時間計測部28と、処理時間計測部32と、平均処理レート算出部33と、選択部34とを備える。
FIG. 4 is a diagram showing the configuration of the
Referring to FIG. 4, the
キューイング可否判定部20は、受信したリクエストのリクエスト情報のキューイング可否を参照して、キューイング可否が可に設定されているかどうかを調べる。キューイング可否判定部20は、キューイング可否が可に設定されている場合には、受信したリクエストをリクエストキュー22の空いているキー位置の番号が最も小さい位置に出力し、受信したリクエストが格納された状態を表わすようにキュー情報記憶部23内のキュー情報を更新する。また、キューイング可否判定部20は、キューイング可否が不可に設定されている場合には、受信したリクエストを直接選択部34に出力する。このように、キューイングの可否を判定することによって、迅速に処理すべきリクエスト(特にイニシエータ1(CPU)から出力されるリクエストなど)がリクエストキュー22に格納されることによって、処理が後回しになるのを防止することができる。
The queuing
リクエストキュー22は、キューイング可否判定部20から出力されたリクエストを格納する。リクエストは、リクエストキュー22内のキュー位置の番号が小さい方から順番に格納される。また、リクエストキュー22は、格納しているリクエストがメモリインタフェース部27へ出力された場合には、残りのリクエストをキュー位置の番号が小さくなるように詰めることによって、リクエストを再配置する。
The
図5(a)および(b)は、リクエストキュー22の状態の例を表わす図である。
図5(a)を参照して、キュー位置が「1」にTIDが「0001」のリクエストが格納され、キュー位置が「2」にTIDが「0002」のリクエストが格納され、キュー位置が「3」にTIDが「0003」のリクエストが格納され、キュー位置が「4」にTIDが「0004」のリクエストが格納され、キュー位置が「5」にTIDが「0005」のリクエストが格納され、キュー位置が「6」にTIDが「0009」のリクエストが格納され、キュー位置が「7」にTIDが「0010」のリクエストが格納され、キュー位置が「8」にTIDが「0011」のリクエストが格納され、キュー位置が「9」にTIDが「0012」のリクエストが格納されている。
FIGS. 5A and 5B are diagrams illustrating examples of the state of the
Referring to FIG. 5A, a request with a queue position “1” and a TID “0001” is stored, a request with a queue position “2” and a TID “0002” is stored, and a queue position “ A request with TID “0003” is stored in “3”, a request with TID “0004” is stored in “4”, a request with TID “0005” is stored in “5”, A request with a queue position “6” and a TID “0009” is stored, a request with a queue position “7” and a TID “0010” is stored, a request with a queue position “8” and a TID “0011” , A request with a queue position of “9” and a TID of “0012” is stored.
図5(b)は、図5(a)の状態から、TIDが「0001」、「0003」、「0005」、「0009」、「0010」、「0011」、「0012」のリクエストが出力されたときのリクエストキュー22の状態を表わす。
In FIG. 5B, requests with TIDs “0001”, “0003”, “0005”, “0009”, “0010”, “0011”, and “0012” are output from the state of FIG. Represents the state of the
キュー情報記憶部23は、キューの位置と、そこに格納されているリクエストの識別番号(TID)との対応を定めたキュー情報を記憶する。
The queue
図6(a)は、図5(a)に示すリクエストキュー22の状態でのキュー情報の例を表わす図である。図6(b)は、図6(b)に示すリクエストキュー22の状態でのキュー情報の例を表わす図である。
FIG. 6A is a diagram illustrating an example of queue information in the state of the
再び、図1を参照して、併合部31は、リクエストキュー22内のリクエストのうち、DDR2−SDRAM8における1回の読出しサイクルまたは書込みサイクルでアクセス可能なリクエストを併合する。併合処理の詳細は後述する。
Referring to FIG. 1 again, merging
イニシエータグループ情報記憶部30は、イニシエータグループ情報を記憶する。イニシエータグループ情報は、他の条件を満たせば、リクエストを併合することができるイニシエータの組合せを表わす。言い換えると、イニシエータグループ情報で定められていないイニシエータ間では、リクエストの併合ができないことになる。これは、併合になじまないイニシエータどうしのリクエストを併合すると不都合が生じる場合があることを考慮したものである。
The initiator group
併合情報記憶部24は、併合されたリクエストについて、グループ識別番号(GID)と、そのグループに属するリクエストの識別番号(TID)との対応を表わす情報を記憶する。
The merge
図7は、併合情報の例を表わす図である。
図7を参照して、グループ識別番号(GID)が「0001」には、TIDが「0001」、「0005」、「0009」、「0010」のリクエストが併合されている。また、グループ識別番号(GID)が「0002」には、TIDが「0003」、「0011」、「0012」のリクエストが併合されている。
FIG. 7 is a diagram illustrating an example of merge information.
Referring to FIG. 7, requests having a TID of “0001”, “0005”, “0009”, and “0010” are merged into a group identification number (GID) “0001”. In addition, requests with TIDs “0003”, “0011”, and “0012” are merged into the group identification number (GID) “0002”.
ステータス情報記憶部26は、受信したリクエストのステータス情報を記憶する。DDR2−SDRAM8へのアクセスが未実行のリクエストのステータスは、アイドル(IDLE)である。DDR2−SDRAM8へのアクセスが実行中のリクエストのステータスは実行中(EXE)である。DDR2−SDRAM8へのアクセスが終了したリクエストのステータスは終了状態(DONE)である。
The status
図8は、ステータス情報の例を表わす図である。
図8を参照して、グループ識別番号(GID)が「0001」に属するTIDが「0001」、「0005」、「0009」、「0010」のリクエストのステータスは、いずれも「END」である。
FIG. 8 is a diagram illustrating an example of status information.
Referring to FIG. 8, the statuses of the requests with TID “0001”, “0005”, “0009”, and “0010” belonging to the group identification number (GID) “0001” are all “END”.
また、TIDが「0002」のリクエストのステータスは、「IDLE」である。
グループ識別番号(GID)が「0002」に属するTIDが「0003」、「0011」のリクエストのステータスは、いずれも「END」であり、TIDが「0012」のリクエストのスタータスは「EXE」である。このように、同一のグループに属するリクエストのステータスが相違するのは、たとえば、リードのアクセスの場合に、指定したカラムアドレスおよび指定した転送バイト数などによって、DDR2−SDRAM8から転送されてきたリードデータが、どのリクエストに対応するものかを識別することができるからである。
The status of the request with TID “0002” is “IDLE”.
The status of requests with TID “0003” and “0011” belonging to the group identification number (GID) “0002” is “END”, and the status of the request with TID “0012” is “EXE”. . As described above, the statuses of requests belonging to the same group are different because, for example, in the case of read access, read data transferred from the DDR2-
また、TIDが「0004」のリクエストのステータスは、「IDLE」である。
ステータス管理部25は、イニシエータ1〜4からのリクエストの受信に応じて、リクエストのステータスをIDLEに設定する。ステータス管理部25は、メモリインタフェース部27がリクエストに従ってDDR2−SDRAM8へのアクセスを開始した(つまり、コマンドやアドレスを出力した)ことに応じて、リクエストのステータスをEXEに設定する。また、ステータス管理部25は、リクエストがリードの場合に、リクエストに応答してDDR2−SDRAM8からリードデータを受信したことに応じて、リクエストのステータスをDONEに設定する。また、ステータス管理部25は、リクエストがライトの場合には、リクエストに従ってDDR2−SDRAM8へのアクセスを開始してから所定の時間が経過したことに応じて、リクエストのステータスをDONEに設定する。
The status of a request with a TID “0004” is “IDLE”.
The
ステータス管理部25は、リクエストのステータスが変化したことに応じて、リクエストを出力したイニシエータに対して、ステータス情報を送る。このようにリクエストのステータスをイニシエータ側に送るのは、イニシエータ側は、発行したリクエストがリクエストキュー22に格納されることによって、すぐに実行されるとは限らず、発行したリクエストのステータスが把握できないことを考慮したものである。
The
また、ステータス管理部25は、ステータスが(DONE)に変化したリクエストが、割込通知要求フラグがオンのリクエストの場合には、特定のイニシエータ1(CPU)に割込みを表わす割込情報を送る。
If the request whose status has changed to (DONE) is a request whose interrupt notification request flag is on, the
待ち時間計測部28は、ステータス情報記憶部26を参照して、リクエストがリクエストキュー22に格納されることによってそのリクエストのステータスがIDLEが設定された時に、そのリクエスト用のタイマを起動し、待ち時間を計測する。
The waiting
処理時間計測部32は、ステータス情報記憶部26を参照して、リクエストがリクエストキュー22に格納されることによってそのリクエストのステータスがIDLEに設定された時に、そのリクエスト用のタイマを起動し、そのリクエストのステータスがEXEに設定される(すなわちアクセスが開始される)までの時間を計測して、処理時間記憶部61に記憶する。
The processing
平均処理レート算出部33は、各リクエストの計測された処理時間と転送バイト数とを用いて、グループごとの平均処理レート、つまり1バイトごとの処理時間の平均値を算出して、平均処理レート記憶部62に記憶する。ここでは、1つのグループに属するリクエストは、たとえば、キューイング可否、併合可否、および転送方向が同一であるとする。
The average processing
選択部34は、第1優先度制御、第2優先度制御に基づいて、リクエストキュー22に格納されたリクエストおよびキューイング可否判定部20から直接送られてきたリクエストのうち、次に処理すべきリクエストを選択し、選択したリクエストをメモリインタフェース部27に出力する。第1優先度制御は、できるだけ迅速に処理すべきリクエストを選択するための制御である。第2優先度制御は、第1優先度制御だけでは、いつまでも選択されずに残ってしまうリクエストを選択するための制御である。第1優先度制御および第2優先度制御の詳細は、後述する。
Based on the first priority control and the second priority control, the
メモリインタフェース部27は、選択部34から出力されたリクエストに基づいて、DDR2−SDRAM8に対して、バス12を通じてアクセスを行なう。すなわち、メモリインタフェース部27は、アクセス要求がリードの場合には、リクエスト情報中のメモリアドレスおよび転送バイト数に基づいて、プリチャージコマンドを出力し、その後アクティブコマンドとロウアドレスを発行し、その後リードコマンドとカラムアドレスを発行する。また、メモリインタフェース部27は、アクセス要求がライトの場合には、リクエスト情報中のメモリアドレスおよび転送バイト数に基づいて、プリチャージコマンドを発行し、その後アクティブコマンドとロウアドレスを発行し、その後ライトコマンドとカラムアドレスを発行する。
The
メモリインタフェース部27は、併合された複数のリクエストに対するDDR2−SDRAM8へのアクセスを一括して行なう。すなわち、メモリインタフェース部27は、併合された複数のリクエストについては、ロウアドレスが同一であるので、先頭のリクエストについてのみ、プリチャージコマンド、アクティブコマンドおよびロウアドレスをDDR2−SDRAM8へ出力する。このように、コマンドおよびアドレスの転送回数を減らすことによって、メモリコントローラ6とDDR2−SDRAM8の間のバス12の使用効率を高めることができる。
The
また、メモリインタフェース部27は、アクセス要求がリードの場合には、バス12を通じてDDR2−SDRAM8から送られるリードデータを受信する。
In addition, when the access request is a read, the
出力制御部29は、リクエスト情報に基づいて、受信したリードデータをどのイニシエータに出力するかを特定し、特定したイニシエータにリードデータを出力する。
Based on the request information, the
(キューイングと併合処理の動作)
図9は、キューイングと併合処理の動作手順を表わす図である。
(Operation of queuing and merge processing)
FIG. 9 is a diagram illustrating an operation procedure of queuing and merging processing.
図9を参照して、キューイング可否判定部20は、受信したリクエストのリクエスト情報のキューイング可否を参照して、キューイング可否が可に設定されているかどうかを調べる。キューイング可否判定部20は、キューイング可否が可に設定されている場合には(ステップS101でYES)、受信したリクエストをリクエストキュー22の空いているキー位置の番号が最も小さい位置に出力する(ステップS102)。また、キューイング可否判定部20は、受信したリクエストが格納された状態を表わすようにキュー情報記憶部23内のキュー情報を更新する(ステップS104)。
Referring to FIG. 9, queuing
一方、キューイング可否判定部20は、キューイング可否が不可に設定されている場合には(ステップS101でNO)、受信したリクエストを直接選択部34に出力する(ステップS103)。
On the other hand, when the queuing permission / inhibition setting is set to be impossible (NO in step S101), the queuing permission /
次に、併合部31は、受信したリクエストのリクエスト情報の併合可否を参照して、併合可否が可に設定されているかどうかを調べる。併合部31は、併合可否が不可に設定されている場合には(ステップS105でNO)、受信したリクエストと他のリクエストとの併合を行なわないこととし、ステップS111に進む。
Next, the merging
次に、併合部31は、併合可否が可に設定されている場合には(ステップS105でYES)、受信したリクエストのリクエスト情報の発行元イニシエータ識別番号と、リクエストキュー22に格納されているリクエストのリクエスト情報の発行元イニシエータ識別番号と、イニシエータグループ情報記憶部30内のイニシエータグループ情報を参照して、受信したリクエストの発行元イニシエータが属するイニシエータグループと同一のグループに属するイニシエータの1個以上のリクエスト(A)が、リクエストキュー22に格納されているかどうかを調べる。併合部31は、1個以上のリクエスト(A)が格納されていない場合には(ステップS106でNO)、受信したリクエストと他のリクエストとの併合を行なわないこととし、ステップS111に進む。
Next, the merging
次に、併合部31は、1個以上のリクエスト(A)が格納されている場合には(ステップS106でYES)、受信したリクエストのリクエスト情報の転送方向と、リクエストキュー22に格納されている1個以上のリクエスト(A)のリクエスト情報の転送方向を参照して、リクエストキュー22に格納されている1個以上のリクエスト(A)のうち、受信したリクエストと転送方向が同一である1個以上のリクエスト(B)があるかどうかを調べる。併合部31は、1個以上のリクエスト(B)がない場合には(ステップS107でNO)、受信したリクエストと他のリクエストとの併合を行なわないこととし、ステップS111に進む。
Next, when one or more requests (A) are stored (YES in step S106), the merging
次に、併合部31は、1個以上のリクエスト(B)がある場合には(ステップS107でYES)、受信したリクエストのリクエスト情報のメモリアドレスと、リクエストキュー22に格納されている1個以上のリクエスト(B)のリクエスト情報のメモリアドレスを参照して、リクエストキュー22に格納されている1個以上のリクエスト(B)のうち、受信したリクエストと、メモリアドレスのうちのロウアドレスが同一の1個以上のリクエスト(C)があるかどうかを調べる。併合部31は、1個以上のリクエスト(C)がない場合には(ステップS108でNO)、受信したリクエストと他のリクエストとの併合を行なわないこととし、ステップS111に進む。
Next, when there are one or more requests (B) (YES in step S107), the merging
次に、併合部31は、1個以上のリクエスト(C)がある場合には(ステップS108でYES)、受信したリクエストのリクエスト情報の転送バイト数と、リクエストキュー22に格納されている1個以上のリクエスト(C)のリクエスト情報の転送バイト数とを参照して、リクエストキュー22に格納されている1個以上のリクエスト(C)のうち、併合したときの転送バイト数が、メモリセルアレイ51のビット線の数(つまり、1回にアクセスできるサイズ)以下となるような、1個以上のリクエスト(D)があるかどうかを調べる。ここで、たとえば、リクエストCには、c1、c2があり、c1とc2が既に併合されている場合には、併合部31は、併合情報を参照して、c1とc2の転送バイト数の合計と、受信したリクエストの転送バイト数の総和が、1回にアクセスできるサイズ以下であるかどうかを調べることになる。併合部31は、1個以上のリクエスト(D)がない場合には(ステップS109でNO)、受信したリクエストと他のリクエストとの併合を行なわないこととし、ステップS111に進む。
Next, when there are one or more requests (C) (YES in step S108), the merging
次に、併合部31は、1個以上のリクエスト(D)がある場合には(ステップS109でYES)、併合情報記憶部24内の併合情報を更新する。すなわち、併合部31は、併合相手のリクエストが既に別のリクエストと併合されている場合には、併合されているグループに属するリクエストのTIDに、受信したリクエストのTIDを追記する。併合する相手のリクエストが今回初めて併合される場合には、新規にグループを作成し、そのグループに属するリクエストのTIDに、受信したリクエストのTIDと、併合する相手のリクエストのTIDを書込む(ステップS110)。
Next, when there is one or more requests (D) (YES in step S109), the merging
次に、ステータス管理部25は、ステータス情報記憶部26内のステータス情報に受信したリクエストのステータス(IDLE)を設定する(ステップS111)。
Next, the
(第1の優先度制御の動作)
図10は、第1の優先度制御の動作手順を表わす図である。
(First priority control operation)
FIG. 10 is a diagram illustrating an operation procedure of the first priority control.
図10を参照して、待ち時間計測部28は、1つのリクエストがリクエストキュー22に格納されるごとに、そのリクエスト用のタイマを起動して、待ち時間T1を計測する。すなわち、待ち時間計測部28は、リクエストがリクエストキュー22に格納されることによってステータス情報にそのリクエストのステータスがIDLEが設定された時に、そのリクエスト用のタイマを起動し、待ち時間T1を計測する(ステップS201)。
Referring to FIG. 10, each time a request is stored in the
次に、選択部34は、キューイング可否判定部20から直接出力されたリクエスト(このリクエストをリクエストAとする)があるかどうかを調べる。
Next, the
選択部34は、リクエストAが1個以上存在する場合には(ステップS202でYES)、1個のリクエストAをメモリインタフェース部27へ送る(ステップS203)。
When there are one or more requests A (YES in step S202), the
次に、選択部34は、リクエストAが存在しない場合には(ステップS202でNO)、リクエストキュー22に格納されているリクエストのリクエスト情報の許容間待ち時間情報を参照して、リクエストキュー22に格納された複数のリクエストについて、許容可能待ち時間T2と、待ち時間計測部28で計測された待ち時間T1との時間差を算出し、この時間差ΔTが閾値TR1以下となるリクエスト(このリクエストをリクエストBとする)があるかどうかを調べる。ここで、TR1は、転送バイト数、メモリコントローラ6からDDR2−SDRAM8までの転送レートを考慮した値である。
Next, when the request A does not exist (NO in step S202), the
選択部34は、リクエストBが1個以上存在する場合には(ステップS204でYES)、1個のリクエストBをメモリインタフェース部27へ送る。ただし、この1個のリクエストBが併合されている場合には、選択部34は、併合されている他のリクエストもメモリインタフェース部27へ送る(ステップS205)。
The
次に、選択部34は、リクエストBが存在しない場合には(ステップS204でNO)、リクエストキュー22に格納されているリクエストのリクエスト情報の優先度情報を参照して、優先度が他のリクエストよりも高く、かつ最大であるリクエスト(このリクエストをリクエストCとする)があるかどうかを調べる。
Next, when the request B does not exist (NO in step S204), the
選択部34は、リクエストCが1個以上存在する場合には(ステップS206でYES)、1個のリクエストCをメモリインタフェース部27へ送る。ただし、この1個のリクエストCが併合されている場合には、選択部34は、併合されている他のリクエストもメモリインタフェース部27へ送る(ステップS207)。
If there are one or more requests C (YES in step S206), the
選択部34は、リクエストCが存在しない場合には(ステップS206でNO)、リクエストキュー22のキュー位置が「1」の1個のリクエスト(このリクエストをリクエストDとする)をメモリインタフェース部27へ送る。ただし、この1個のリクエストDが併合されている場合には、選択部34は、併合されている他のリクエストもメモリインタフェース部27へ送る(ステップS208)。
If the request C does not exist (NO in step S206), the
リクエストキュー22は、格納しているリクエストがメモリインタフェース部27へ出力された場合には、残りのリクエストをキュー位置の番号が小さくなるように詰めることによって、リクエストを再配置する(ステップS209)。
When the stored request is output to the
次に、選択部34は、リクエストキュー22内のリクエストがメモリインタフェース部27へ出力された場合には、再配置したリクエストキュー22の格納状態を表わすようにキュー情報記憶部23内のキュー情報を更新する(ステップS210)。
Next, when the request in the
次に、メモリインタフェース部27は、選択部34から出力されたリクエストに基づいて、DDR2−SDRAM8に対して、コマンド、ロウアドレス、およびカラムアドレスを発行して、アクセスを行なう(ステップS211)。
Next, the
次に、ステータス管理部25は、メモリインタフェース部27がリクエストに従ってDDR2−SDRAM8へのアクセスを開始した(つまり、コマンドやアドレスを出力した)ことに応じて、リクエストのステータスをEXEに設定し、そのリクエストを発行したイニシエータにステータス(EXE)を表わすステータス情報を送る(ステップS212)。
Next, the
(第2の優先度制御の動作)
図11は、第2の優先度制御の動作手順を表わす図である。
(Second priority control operation)
FIG. 11 is a diagram illustrating an operation procedure of the second priority control.
図11を参照して、処理時間計測部32は、1つのリクエストがリクエストキュー22に格納されるごとに、そのリクエスト用のタイマを起動して、処理時間T3を計測する。すなわち、処理時間計測部32は、リクエストがリクエストキュー22に格納されることによってステータス情報にそのリクエストのステータスがIDLEに設定された時に、そのリクエスト用のタイマを起動し、そのリクエストのステータスがEXEに設定されるまでの時間を処理時間T3として計測して、処理時間記憶部61に記憶する(ステップS301)。
Referring to FIG. 11, each time a request is stored in the
平均処理レート算出部33は、各リクエストの処理時間T3および転送バイト数を用いて、グループごとの平均処理レートR1、つまり1バイトごとの処理時間の平均値を算出して、平均処理レート記憶部62に記憶する。ここでは、1つのグループに属する1個以上のリクエストは、キューイング可否、併合可否、および転送方向が同一であるとする。
The average processing
選択部34は、所定の時間間隔ごとに(ステップS303でYES)、以下のステップの処理を行なう。これは、優先度の制御は、第1の優先度制御を基本としつつ、第1の優先度制御では、いつまでも選択されないリクエストを救済するために第2の優先度制御を行なうためである。
The
選択部34は、リクエストキュー22に格納されているリクエストのリクエスト情報の想定処理レートR2を参照して、リクエストキュー22に格納されている複数のリクエストについて、そのリクエストが属するグループの平均処理レートR1と、そのリクエストの想定処理レートR2とのレート差ΔRを算出して、このレート差ΔRが閾値TR2以上となるリクエスト(このリクエストをリクエストAとする)があるかどうかを調べる。
The
選択部34は、そのようなリクエストAが1個以上存在する場合には(ステップS304でYES)、1個のリクエストAをメモリインタフェース部27へ送る。ただし、この1個のリクエストAが併合されている場合には、選択部34は、併合されている他のリクエストもメモリインタフェース部27へ送る(ステップS305)。
If there are one or more such requests A (YES in step S304), the
次に、リクエストキュー22は、格納しているリクエストがメモリインタフェース部27へ出力された場合には、残りのリクエストをキュー位置の番号が小さくなるように詰めることによって、リクエストを再配置する(ステップS306)。
Next, when the stored request is output to the
次に、選択部34は、再配置したリクエストキュー22の格納状態を表わすようにキュー情報記憶部23内のキュー情報を更新する(ステップS307)。
Next, the
次に、メモリインタフェース部27は、選択部34から出力されたリクエストに基づいて、DDR2−SDRAM8に対して、コマンド、ロウアドレス、およびカラムアドレスを発行して、アクセスを行なう(ステップS308)。
Next, the
次に、ステータス管理部25は、メモリインタフェース部27がリクエストに従ってDDR2−SDRAM8へのアクセスを開始した(つまり、コマンドやアドレスを出力した)ことに応じて、リクエストのステータスをEXEに設定し、そのリクエストを発行したイニシエータにステータス(EXE)を表わすステータス情報を送る(ステップS309)。
Next, the
(イニシエータへの応答処理の動作)
図12は、イニシエータへの応答処理の動作手順を表わす図である。
(Operation of response processing to the initiator)
FIG. 12 is a diagram illustrating an operation procedure of response processing to the initiator.
図12を参照して、メモリインタフェース部27が、転送方向がDDR2−SDRAM8からイニシエータに設定されたリクエストに従ってリードコマンドを出力した場合に(ステップS401でYES)、メモリインタフェース部27は、DDR2−SDRAM8からリードデータを受信する(ステップS402)。
Referring to FIG. 12, when
出力制御部29は、リクエスト情報に基づいて、受信したリードデータをどのイニシエータに出力するかを特定し、特定したイニシエータにリードデータを出力する(ステップS403)。
Based on the request information, the
ステータス管理部25は、イニシエータへ出力したリードデータに対応するリクエスト、つまり、そのリードデータの転送を指定したリクエストのステータス情報をDONEに設定し、そのリードデータの転送を指定したリクエストを発行したイニシエータにステータス(DONE)を表わすステータス情報を送る(ステップS404)。
The
一方、メモリインタフェース部27が、転送方向がイニシエータからDDR2−SDRAM8に設定されたリクエストに従ってライトコマンドを出力した場合に(ステップS401でNO)、ステータス管理部25は、所定の時間が経過した後(ステップS405でYES)、そのリクエストのステータス情報をDONEに設定し、そのリクエストを発行したイニシエータにステータス(DONE)を表わすステータス情報を送る(ステップS406)。
On the other hand, when the
次に、出力制御部29は、そのリクエストが、割込通知要求フラグがオンのリクエストの場合には(ステップS407でYES)、イニシエータ1(CPU)に割込みを表わす割込情報を送る(ステップS408)。
Next, when the request is a request whose interrupt notification request flag is on (YES in step S407), the
以上のように、本発明の実施形態のデータ処理装置によれば、複数のイニシエータからのリクエストでも、同一の行に対するものは併合して一括して処理するので、バススの使用効率を高めることができる。 As described above, according to the data processing apparatus of the embodiment of the present invention, even requests from a plurality of initiators are processed in a lump for the same row, thereby improving the bus use efficiency. it can.
[変形例]
本発明は、上記の実施形態に限定されるものではなく、たとえば、以下のような変形例も含まれる。
[Modification]
The present invention is not limited to the above embodiment, and includes, for example, the following modifications.
(1) 平均処理レート
本発明の実施形態では、DDR2−SDRAMへのアクセスが開始されるまでのレートを想定処理レートとしたが、これに限定するものではない、たとえば、DDR2−SDRAMへのアクセスが終了するまでのレートを想定処理レートとしてもよい。そして、処理時間計測部32は、リクエストがリクエストキュー22に格納されることによってステータス情報にそのリクエストのステータスがIDLEが設定された時に、そのリクエスト用のタイマを起動し、そのリクエストのステータスがDONEに設定される(すなわち、アクセスが終了)までの時間を処理時間T3として計測することとしてもよい。
(1) Average processing rate In the embodiment of the present invention, the rate until the access to the DDR2-SDRAM is started is the assumed processing rate. However, the present invention is not limited to this. It is good also considering the rate until this is completed as an assumed processing rate. Then, when the request is stored in the
(2) ポインタ管理部
本発明の実施形態では、ポインタ管理部が、ポインタとポインタフラグを管理するものとしたが、これに限定するものではない。たとえば、ポインタ管理部が、ポインタとポインタフラグに加えて、アクセス対象のメモリセルのアドレス、ポインタを始点としたアクセス対象のメモリセルの数などを管理することとしてもよい。
(2) Pointer management unit In the embodiment of the present invention, the pointer management unit manages the pointer and the pointer flag. However, the present invention is not limited to this. For example, in addition to the pointer and the pointer flag, the pointer management unit may manage the address of the memory cell to be accessed, the number of memory cells to be accessed starting from the pointer, and the like.
(3) 割り込み
本発明の実施形態では、割込通知要求フラグは、たとえば、画像処理装置において、画像処理の最終段の処理を行なう画像処理モジュール(イニシエータ)が、1画面の最後のデータに対するアクセスを要求するようなリクエストに含まれるとしたが、これに限定するものではない。特定のイニエータが、1画面の最初のデータに対するアクセスを要求するようなリクエストに含まれるものとしてもよい。この場合、ステータス管理部25は、ステータスが(EXE)に変化したリクエストが、割込通知要求フラグがオンのリクエストの場合には、特定のイニシエータ1(CPU)に割込みを表わす割込情報を送るものとしてもよい。
(3) Interruption In the embodiment of the present invention, the interrupt notification request flag is, for example, accessed by the image processing module (initiator) that performs the final stage of image processing in the image processing apparatus to the last data of one screen It is included in a request that requests, but is not limited to this. A specific initiator may be included in a request for requesting access to the first data of one screen. In this case, when the request whose status has changed to (EXE) is a request whose interrupt notification request flag is ON, the
(4) ライト要求
本発明の実施形態では、メモリインタフェース部27が転送方向がイニシエータ側に設定されたリクエストに従ってライトコマンドを出力した場合に、ステータス管理部25は、所定の時間が経過した後、そのリクエストのステータスをDONEに設定したが、これに限定するものではない。たとえば、DDR2−SDRAMから書込みを終了したことを表わす情報を受信した後、または、リクエストの転送が終了したことを表わす情報を受信したときに、リクエストのステータスをDONEに設定するものとしてもよい。
(4) Write request In the embodiment of the present invention, when the
(5) 割込みの判断
本発明の実施形態では、割込通知要求フラグを用いて、割込情報を送るか否かを判断するものとしたが、これに限定するものではない。たとえば、リクエスト情報に含まれるアクセスされるメモリアドレスに基づいて、割込みを送るか否かを判断してもよい。
(5) Determination of interrupt In the embodiment of the present invention, the interrupt notification request flag is used to determine whether or not to send interrupt information. However, the present invention is not limited to this. For example, it may be determined whether to send an interrupt based on the accessed memory address included in the request information.
またリクエストの併合や実行において、データの整合性や排他処理を考慮することは当然に行うことである。例えば、メモリインタフェース部27でDDR2−SDRAMへのリードリクエスト、ライトリクエスト、再度のリードリクエストが順次受付けられ、2つのリードリクエストが併合可能な属性であったとしても、ライトリクエストにより最初のリードリクエストまたは再度のリードリクエストでのデータに整合性の問題を生じるのであれば、これら2つのリードリクエストの併合は当然に行われず、ライトリクエストの実行時点を挟んで、前後のリードリクエストがかかる順序で実行される。
In addition, it is a matter of course to consider data consistency and exclusive processing when merging and executing requests. For example, even if the
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。特にメモリインタフェース部に接続されるメモリはDDR2−SDRAMを含むSDRAM(揮発性メモリ)だけでなくNAND型Flashメモリ(不揮発性メモリ)等を含み、アクセスアドレスにより選択される1のワード線に接続されるメモリセルの数が比較的多く1回のワード線アクセスに対して複数回のデータ入出力が対応するようなメモリ、又は複数個のメモリを有する外面的に同様の動作と捉えられる記憶媒体(メモリカード)のインタフェース部において本発明を同様に実施することが可能である。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。 The embodiment disclosed this time should be considered as illustrative in all points and not restrictive. In particular, the memory connected to the memory interface section includes not only SDRAM (volatile memory) including DDR2-SDRAM but also NAND flash memory (nonvolatile memory), etc., and is connected to one word line selected by an access address. A memory that has a relatively large number of memory cells and that can handle a plurality of times of data input / output for one word line access, or a storage medium that has a plurality of memories and is regarded as an externally similar operation ( The present invention can be similarly implemented in the interface section of the memory card). The scope of the present invention is defined by the terms of the claims, rather than the description above, and is intended to include any modifications within the scope and meaning equivalent to the terms of the claims.
1〜4 イニシエータ、5,12 バス、6 メモリコントローラ、7 バスアービタ、8 DDR2−SDRAM、10 リクエスト生成部、11 ポインタ管理部、20 キューイング可否判定部、21 優先制御部、22 リクエストキュー、23 キュー情報記憶部、24 併合情報記憶部、25 ステータス管理部、26 ステータス情報記憶部、27 メモリインタフェース部、28 待ち時間計測部、29 出力制御部、30 イニシエータグループ情報記憶部、31 併合部、32 処理時間計測部、33 平均処理レート算出部、34 選択部、51 メモリセルアレイ、52 カラムデコーダ、53 ロウデコーダ、54 I/Oバッファ、55 アドレスバッファ、57 コマンドデコーダ、61 処理時間記憶部、62 平均処理レート記憶部。 1-4 initiator, 5, 12 bus, 6 memory controller, 7 bus arbiter, 8 DDR2-SDRAM, 10 request generation unit, 11 pointer management unit, 20 queuing availability determination unit, 21 priority control unit, 22 request queue, 23 queue Information storage unit, 24 merged information storage unit, 25 status management unit, 26 status information storage unit, 27 memory interface unit, 28 waiting time measurement unit, 29 output control unit, 30 initiator group information storage unit, 31 merged unit, 32 processing Time measurement unit, 33 average processing rate calculation unit, 34 selection unit, 51 memory cell array, 52 column decoder, 53 row decoder, 54 I / O buffer, 55 address buffer, 57 command decoder, 61 processing time storage unit, 62 average processing rate憶部.
Claims (15)
複数のメモリアクセスリクエスタから受信したリクエストを格納するキューと、
前記キュー内のリクエストのうち、前記メモリにおける1回の読出しサイクルまたは書込みサイクルでアクセス可能なリクエストを併合する併合部と、
前記リクエストに従って、前記メモリに対してアクセスを行なうインタフェース部とを備え、
前記インタフェース部は、併合された複数のリクエストに対する前記メモリへのアクセスを一括して行なう、メモリコントローラ。 A memory controller that receives requests from a plurality of memory access requesters and controls access to a memory via a bus.
A queue for storing requests received from multiple memory access requesters;
A merging unit for merging requests that are accessible in one read cycle or write cycle in the memory among requests in the queue;
An interface unit for accessing the memory according to the request,
The interface unit is a memory controller that collectively accesses the memory for a plurality of merged requests.
前記インタフェース部は、併合された複数のリクエストについては、先頭のリクエストについてのみ、プリチャージコマンド、アクティブコマンドおよびロウアドレスを前記SDRAMへ出力する、請求項1記載のメモリコントローラ。 The memory is an SDRAM,
2. The memory controller according to claim 1, wherein the interface unit outputs a precharge command, an active command, and a row address to the SDRAM only for the first request for a plurality of merged requests.
複数のメモリアクセスリクエスタのうちの併合可能なメモリアクセスリクエスタのグループを表わす第1の情報を記憶する記憶部を備え、
前記併合部は、さらに、前記第1の情報を参照して、併合可能なメモリアクセスリクエスタからのリクエストのみを併合する、請求項1または2記載のメモリコントローラ。 The memory controller further includes:
A storage unit storing first information representing a group of memory access requesters that can be merged among the plurality of memory access requesters;
3. The memory controller according to claim 1, wherein the merging unit further merges only a request from a memory access requestor that can be merged with reference to the first information. 4.
前記併合部は、さらに、前記第2の情報を参照して、併合が可能なリクエストのみを併合する、請求項1〜3のいずれか1項に記載のメモリコントローラ。 The request includes second information indicating whether or not to merge with another request,
The memory controller according to claim 1, wherein the merging unit further merges only requests that can be merged with reference to the second information.
前記メモリコントローラは、さらに、
受信したリクエストに含まれる前記第3の情報を参照して、前記キューへの格納が可能なものだけを前記キューに格納するキューイング判定部を備えた、請求項1〜4のいずれか1項に記載のメモリコントローラ。 The request includes third information indicating whether storage in the queue is possible,
The memory controller further includes:
5. The queuing determination unit according to claim 1, further comprising: a queuing determination unit that refers to the third information included in the received request and stores in the queue only those that can be stored in the queue. Memory controller as described in.
前記メモリコントローラは、さらに、
受信したリクエストの前記キューに格納されてからの待ち時間を計測する計測部と、
前記キューに格納された複数のリクエストについて、前記第4の情報で示される許容可能な待ち時間と前記計測部で計測される前記待ち時間との時間差を算出し、前記算出した時間差に基づいて、次に処理すべきリクエストを選択し前記インタフェース部に出力する選択部とを備え、
前記選択部は、前記選択したリクエストが他のリクエストと併合されている場合には、前記併合されている他のリクエストも選択して、前記インタフェース部に出力する、請求項5記載のメモリコントローラ。 The request includes fourth information representing an acceptable waiting time until the start of access to the memory;
The memory controller further includes:
A measuring unit for measuring a waiting time after the received request is stored in the queue;
For a plurality of requests stored in the queue, calculate a time difference between an allowable waiting time indicated by the fourth information and the waiting time measured by the measuring unit, and based on the calculated time difference, A selection unit that selects a request to be processed next and outputs the request to the interface unit;
The memory controller according to claim 5, wherein, when the selected request is merged with another request, the selection unit also selects the other merged request and outputs the selected request to the interface unit.
前記メモリコントーラは、さらに、
前記キューに格納された複数のリクエストについて、前記第5の情報で示される優先度に基づいて、次に処理すべきリクエストを選択し前記インタフェース部に出力する選択部を備え、
前記選択部は、前記選択したリクエストが他のリクエストと併合されている場合には、前記併合されている他のリクエストも選択して、前記インタフェース部に出力する、請求項5記載のメモリコントローラ。 The request includes fifth information indicating processing priority,
The memory controller further includes:
For a plurality of requests stored in the queue, a selection unit that selects a request to be processed next based on the priority indicated by the fifth information and outputs the request to the interface unit;
The memory controller according to claim 5, wherein, when the selected request is merged with another request, the selection unit also selects the other merged request and outputs the selected request to the interface unit.
前記メモリコントローラは、さらに、
受信したリクエストの前記キューに格納されてからメモリへのアクセスが開始されるまでの処理時間、または前記メモリへのアクセスが終了するまでの処理時間を計測する第2の計測部と、
前記複数のメモリアクセスリクエスタから出力される複数のリクエストを分類したグループごとに、前記計測した処理時間に基づいて平均処理レートを算出する平均処理レート算出部と、
所定の時間ごとに、前記キューに格納された複数のリクエストについて、前記リクエストが属するグループの平均処理レートと、前記リクエストの前記第6の情報で示される想定処理レートとの時間差に基づいて、次に処理すべきリクエストを選択して、前記インタフェース部に出力する選択部とを備え、
前記選択部は、前記選択したリクエストが他のリクエストと併合されている場合には、前記併合されている他のリクエストも選択して、前記インタフェース部に出力する、請求項5記載のメモリコントローラ。 The request includes sixth information indicating an assumed processing rate until access to the memory is started or until access to the memory is ended,
The memory controller further includes:
A second measuring unit for measuring a processing time from when the received request is stored in the queue until the access to the memory is started, or a processing time until the access to the memory is terminated;
An average processing rate calculation unit that calculates an average processing rate based on the measured processing time for each group that classifies a plurality of requests output from the plurality of memory access requesters;
Based on the time difference between the average processing rate of the group to which the request belongs and the assumed processing rate indicated by the sixth information of the request for a plurality of requests stored in the queue at predetermined time intervals, And selecting a request to be processed and outputting to the interface unit,
The memory controller according to claim 5, wherein, when the selected request is merged with another request, the selection unit also selects the other merged request and outputs the selected request to the interface unit.
前記受信したリクエストのステータスを管理するステータス管理部を備え、
前記ステータス管理部は、前記メモリへのアクセスが未実行のリクエストのステータスをアイドルに設定し、前記メモリへのアクセスが実行中のリクエストのステータスを実行中に設定し、前記メモリへのアクセスが終了したリクエストのステータスを終了状態に設定し、
前記ステータス管理部は、前記リクエストを出力したメモリアクセスリクエスタに対して、前記ステータスを通知する、請求項1〜8のいずれか1項に記載のメモリコントローラ。 The memory controller is
A status management unit for managing the status of the received request;
The status management unit sets the status of an unexecuted request for access to the memory to idle, sets the status of a request for which access to the memory is being executed, and completes access to the memory. Set the status of the completed request to finished,
The memory controller according to claim 1, wherein the status management unit notifies the status to a memory access requester that has output the request.
請求項9〜14のいずれか1項に記載のメモリコントローラと、
前記メモリとを備え、
各メモリアクセスリクエスタは、
出力したリクエストごとに、前記メモリ内のアクセス位置のアドレスを表わすポインタを管理するポインタ管理部を備え、
前記ポインタ管理部は、さらに、前記ポインタについて、アクセス状態を表わすポインタフラグを管理し、
前記ポインタ管理部は、読出しのリクエストを出力後、前記ステータス管理部から実行中のステータスの通知を受けたときには、前記ポインタフラグを前記メモリのデータの参照中を表わすように設定し、
書込みのリクエストを出力後、前記ステータス管理部から実行中のステータスの通知を受けたときには、前記ポインタフラグを前記メモリのデータの更新中を表わすように設定し、
リクエストの出力後、前記ステータス管理部から終了状態のステータスの通知を受けたときには、前記ポインタフラグを前記メモリへのアクセスが行なわれていないことを表わすように設定する、データ処理装置。 The plurality of memory access requesters;
The memory controller according to any one of claims 9 to 14,
Said memory,
Each memory access requester
A pointer management unit for managing a pointer representing an address of an access position in the memory for each output request;
The pointer management unit further manages a pointer flag indicating an access state for the pointer,
When the pointer management unit receives a notification of the status being executed from the status management unit after outputting the read request, the pointer management unit sets the pointer flag to indicate that the data in the memory is being referred to,
After outputting the write request, when receiving a notification of the status being executed from the status management unit, the pointer flag is set to indicate that the data in the memory is being updated,
A data processing device that sets the pointer flag to indicate that access to the memory is not performed when receiving a status notification of an end state from the status management unit after outputting a request.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008308795A JP2010134628A (en) | 2008-12-03 | 2008-12-03 | Memory controller and data processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008308795A JP2010134628A (en) | 2008-12-03 | 2008-12-03 | Memory controller and data processor |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010134628A true JP2010134628A (en) | 2010-06-17 |
Family
ID=42345881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008308795A Pending JP2010134628A (en) | 2008-12-03 | 2008-12-03 | Memory controller and data processor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010134628A (en) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012198621A (en) * | 2011-03-18 | 2012-10-18 | Nec Corp | Memory access control device, processor, and memory access control method |
JP2014035678A (en) * | 2012-08-09 | 2014-02-24 | Fujitsu Ltd | Arithmetic processing unit, information processing unit, and control method for information processing unit |
JP2014063385A (en) * | 2012-09-21 | 2014-04-10 | Fujitsu Ltd | Arithmetic processing unit and method for controlling arithmetic processing unit |
WO2015018290A1 (en) * | 2013-08-06 | 2015-02-12 | 华为技术有限公司 | Memory access processing method, apparatus, and system |
JP5857273B2 (en) * | 2011-05-17 | 2016-02-10 | パナソニックIpマネジメント株式会社 | Stream processing device |
US9904609B2 (en) | 2015-11-04 | 2018-02-27 | Toshiba Memory Corporation | Memory controller and memory device |
US10579318B1 (en) | 2018-12-31 | 2020-03-03 | Kyocera Document Solutions Inc. | Memory control method, memory control apparatus, and image forming method that uses memory control method |
US10614001B1 (en) | 2018-12-31 | 2020-04-07 | Kyocera Document Solutions Inc. | Memory control method, memory control apparatus, and image forming method that uses memory control method |
US10764455B2 (en) | 2018-12-31 | 2020-09-01 | Kyocera Document Solutions Inc. | Memory control method, memory control apparatus, and image forming method that uses memory control method |
CN111684430A (en) * | 2017-12-28 | 2020-09-18 | 超威半导体公司 | Supporting response to memory types of non-uniform latency on the same channel |
US10922038B2 (en) | 2018-12-31 | 2021-02-16 | Kyocera Document Solutions Inc. | Memory control method, memory control apparatus, and image forming method that uses memory control method |
US11010114B2 (en) | 2018-12-31 | 2021-05-18 | Kyocera Document Solutions Inc. | Read/write direction-based memory bank control for imaging |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0496841A (en) * | 1990-08-14 | 1992-03-30 | Hitachi Ltd | Storage control system |
JPH0581042A (en) * | 1991-09-24 | 1993-04-02 | Fujitsu Ltd | Priority control circuit |
JPH06162066A (en) * | 1992-11-25 | 1994-06-10 | Hitachi Ltd | Storage control system |
JPH06195313A (en) * | 1992-12-25 | 1994-07-15 | Hitachi Ltd | Computer system, and integrated circuit and request selecting circuit being suitable therefor |
JPH07253923A (en) * | 1994-03-15 | 1995-10-03 | Hitachi Ltd | Memory control circuit |
JP2002328837A (en) * | 2001-04-27 | 2002-11-15 | Fujitsu Ltd | Memory controller |
JP2005339348A (en) * | 2004-05-28 | 2005-12-08 | Renesas Technology Corp | Semiconductor device |
JP2006260472A (en) * | 2005-03-18 | 2006-09-28 | Matsushita Electric Ind Co Ltd | Memory access device |
JP2007249837A (en) * | 2006-03-17 | 2007-09-27 | Nec Electronics Corp | Memory controller, memory control method, and portable device |
-
2008
- 2008-12-03 JP JP2008308795A patent/JP2010134628A/en active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0496841A (en) * | 1990-08-14 | 1992-03-30 | Hitachi Ltd | Storage control system |
JPH0581042A (en) * | 1991-09-24 | 1993-04-02 | Fujitsu Ltd | Priority control circuit |
JPH06162066A (en) * | 1992-11-25 | 1994-06-10 | Hitachi Ltd | Storage control system |
JPH06195313A (en) * | 1992-12-25 | 1994-07-15 | Hitachi Ltd | Computer system, and integrated circuit and request selecting circuit being suitable therefor |
JPH07253923A (en) * | 1994-03-15 | 1995-10-03 | Hitachi Ltd | Memory control circuit |
JP2002328837A (en) * | 2001-04-27 | 2002-11-15 | Fujitsu Ltd | Memory controller |
JP2005339348A (en) * | 2004-05-28 | 2005-12-08 | Renesas Technology Corp | Semiconductor device |
JP2006260472A (en) * | 2005-03-18 | 2006-09-28 | Matsushita Electric Ind Co Ltd | Memory access device |
JP2007249837A (en) * | 2006-03-17 | 2007-09-27 | Nec Electronics Corp | Memory controller, memory control method, and portable device |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012198621A (en) * | 2011-03-18 | 2012-10-18 | Nec Corp | Memory access control device, processor, and memory access control method |
JP5857273B2 (en) * | 2011-05-17 | 2016-02-10 | パナソニックIpマネジメント株式会社 | Stream processing device |
JP2014035678A (en) * | 2012-08-09 | 2014-02-24 | Fujitsu Ltd | Arithmetic processing unit, information processing unit, and control method for information processing unit |
JP2014063385A (en) * | 2012-09-21 | 2014-04-10 | Fujitsu Ltd | Arithmetic processing unit and method for controlling arithmetic processing unit |
WO2015018290A1 (en) * | 2013-08-06 | 2015-02-12 | 华为技术有限公司 | Memory access processing method, apparatus, and system |
US9898206B2 (en) | 2013-08-06 | 2018-02-20 | Huawei Technologies Co., Ltd. | Memory access processing method, apparatus, and system |
US9904609B2 (en) | 2015-11-04 | 2018-02-27 | Toshiba Memory Corporation | Memory controller and memory device |
CN111684430A (en) * | 2017-12-28 | 2020-09-18 | 超威半导体公司 | Supporting response to memory types of non-uniform latency on the same channel |
JP2021509745A (en) * | 2017-12-28 | 2021-04-01 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | Response support for memory types with non-uniform latency on the same channel |
US10579318B1 (en) | 2018-12-31 | 2020-03-03 | Kyocera Document Solutions Inc. | Memory control method, memory control apparatus, and image forming method that uses memory control method |
US10614001B1 (en) | 2018-12-31 | 2020-04-07 | Kyocera Document Solutions Inc. | Memory control method, memory control apparatus, and image forming method that uses memory control method |
US10764455B2 (en) | 2018-12-31 | 2020-09-01 | Kyocera Document Solutions Inc. | Memory control method, memory control apparatus, and image forming method that uses memory control method |
US10922038B2 (en) | 2018-12-31 | 2021-02-16 | Kyocera Document Solutions Inc. | Memory control method, memory control apparatus, and image forming method that uses memory control method |
US11010114B2 (en) | 2018-12-31 | 2021-05-18 | Kyocera Document Solutions Inc. | Read/write direction-based memory bank control for imaging |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2010134628A (en) | Memory controller and data processor | |
US8949547B2 (en) | Coherency controller and method for data hazard handling for copending data access requests | |
TWI416322B (en) | Optimizing concurrent accesses in a directory-based coherency protocol | |
TWI463318B (en) | Cache coherent processing system,cache memory and method for the same | |
US9158597B2 (en) | Controlling access to shared resource by issuing tickets to plurality of execution units | |
US8447905B2 (en) | Dynamic multi-level cache including resource access fairness scheme | |
US8396996B2 (en) | Querying a device for information | |
US20050188121A1 (en) | System and controller with reduced bus utilization time | |
US8560767B2 (en) | Optimizing EDRAM refresh rates in a high performance cache architecture | |
JP2014508361A (en) | Memory interface | |
JP4834362B2 (en) | Memory controller. | |
US20200285420A1 (en) | System, apparatus and method for persistently handling memory requests in a system | |
US8566532B2 (en) | Management of multipurpose command queues in a multilevel cache hierarchy | |
US9606923B2 (en) | Information processing device with shared memory, memory order guarantee method using counters fence instructions in relation to cache-oriented requests, and recording medium storing program | |
WO2023005352A1 (en) | Data processing apparatus and method, computer device, and storage medium | |
US6928525B1 (en) | Per cache line semaphore for cache access arbitration | |
US9372795B2 (en) | Apparatus and method for maintaining cache coherency, and multiprocessor apparatus using the method | |
US11003495B2 (en) | Dynamic access of task queues in a parallel processing system | |
JP2006215621A (en) | Dma controller | |
US8452920B1 (en) | System and method for controlling a dynamic random access memory | |
JP2019509557A (en) | Provide scalable DRAM cache management using a dynamic random access memory (DRAM) cache indicator cache | |
TW201721447A (en) | Controller and control method for shared computer resource | |
CN102087637B (en) | Utilization-enhanced shared bus system and bus arbitration method | |
JPH0844661A (en) | Information processor | |
JP6565729B2 (en) | Arithmetic processing device, control device, information processing device, and control method for information processing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20100602 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111014 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130403 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130416 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130820 |