JP2011170594A - メモリアクセスシステムおよびメモリアクセス制御方法 - Google Patents
メモリアクセスシステムおよびメモリアクセス制御方法 Download PDFInfo
- Publication number
- JP2011170594A JP2011170594A JP2010033488A JP2010033488A JP2011170594A JP 2011170594 A JP2011170594 A JP 2011170594A JP 2010033488 A JP2010033488 A JP 2010033488A JP 2010033488 A JP2010033488 A JP 2010033488A JP 2011170594 A JP2011170594 A JP 2011170594A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- bank
- storage unit
- stored
- 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
【課題】複数のメモリチャンネルに格納されている2次元配置のデータに水平アクセス、垂直アクセスした場合であっても、メモリに効率よくアクセスすることができるメモリアクセスシステムを提供することである。
【解決手段】本発明にかかるメモリアクセスシステムは、2次元に配置されたデータを、X方向にXa個のブロックをY方向にYa個のブロックを備える第1の格納単位で区切り、第1の格納単位のデータを、更に、X方向にXa個のブロックをY方向にYb個のブロックを備える第2の格納単位で区切り、第1の格納単位の第1のブロック群のデータを、2個のメモリチャンネルのそれぞれの第1のバンクに、第2の格納単位毎にそれぞれ格納し、第1の格納単位の第2のブロック群のデータを、2個のメモリチャンネルのそれぞれの第2のバンクに、第2の格納単位毎にそれぞれ格納する。
【選択図】図4
【解決手段】本発明にかかるメモリアクセスシステムは、2次元に配置されたデータを、X方向にXa個のブロックをY方向にYa個のブロックを備える第1の格納単位で区切り、第1の格納単位のデータを、更に、X方向にXa個のブロックをY方向にYb個のブロックを備える第2の格納単位で区切り、第1の格納単位の第1のブロック群のデータを、2個のメモリチャンネルのそれぞれの第1のバンクに、第2の格納単位毎にそれぞれ格納し、第1の格納単位の第2のブロック群のデータを、2個のメモリチャンネルのそれぞれの第2のバンクに、第2の格納単位毎にそれぞれ格納する。
【選択図】図4
Description
本発明はメモリアクセスシステムおよびメモリアクセス制御方法に関し、特に2次元に配置されたデータを複数のメモリチャンネルに格納するメモリアクセスシステムおよびメモリアクセス制御方法に関する。
画像データなどの2次元配置のデータを複数のメモリチャンネルに格納する技術がある。図5は背景技術にかかるメモリアクセスシステムを説明するためのブロック図である。図5に示すメモリアクセスシステムは、プロセッサ1(111)、プロセッサ2(112)、プロセッサ3(113)、バス121、122、メモリコントローラA(131)、メモリコントローラB(132)を有する。
各プロセッサ1〜3(111〜113)は、バス121、122を介してメモリコントローラA(131)、メモリコントローラB(132)と接続されている。メモリコントローラA(131)はメモリA(141)に接続され、メモリコントローラB(132)はメモリB(142)に接続されている。
図6はメモリA(141)の構成を説明するためのブロック図である。メモリA(141)は4つのバンク0〜3(151〜154)に分割されている。各バンク(151〜154)にはメモリコントローラA(131)からコントロールアドレス156、クロック信号157が供給される。各バンク(151〜154)からはコントロールアドレス156に応じたデータがクロック信号157に基づくタイミングでデータ線158に出力される。なお、メモリB(142)も同様の構成である。
プロセッサ1(111)がメモリA(141)に記憶されているデータを読み出そうとする命令コードを実行する場合、またはメモリA(141)にデータを書き込もうとする命令コードを実行する場合には、プロセッサ1(111)は読み出しまたは書き込みを行おうとするデータの2次元配置の座標(X、Y)を、バス121を経由してメモリコントローラA(131)に出力する。
メモリコントローラA(131)は、プロセッサ1(111)から2次元配置の座標(X、Y)を受け取ると、これに従いメモリA(141)のバンク、ローアドレス、およびカラムアドレスを算出する。メモリコントローラA(131)は、算出したバンク、ローアドレス、およびカラムアドレスに従ってメモリA(141)にアクセスする。すなわち、プロセッサ1(111)が実行する命令コードがデータの読み出しの場合には、メモリA(141)の当該バンク、ローアドレス、およびカラムアドレスに記憶されているデータを読み出す。一方、プロセッサ1(111)が実行する命令コードがデータの書き込みの場合には、メモリA(141)の当該バンク、ローアドレス、およびカラムアドレスにデータを書き込む。なお、上記で説明した動作は、各プロセッサ(111〜113)がメモリコントローラB(132)を用いてメモリB(142)にアクセスする場合も同様である。
次に、図5に示すメモリアクセスシステムを用いて2次元配置のデータを格納する場合について具体的に説明する。図7は、メモリA(141)、メモリB(142)の各バンクのローアドレスとカラムアドレスを具体的に示した一例である。図7に示した各メモリの各バンクのローアドレスは"0〜8191"、カラムアドレスは"0〜2047"としている。この例では、最小アクセス単位が16バイト、1ページ(1ローアドレス当たり)が2048バイト、4バンクからなるメモリを2チャンネルで構成している。
図8は、このような構成のメモリに格納された2次元配置のデータのマッピングの一例を示す図である。図8に示す2次元配置のデータの1つのブロックは最小アクセス単位(16バイト)で、1つのブロックに横方向(X方向)に連続した16画素の画像データが割り当てられている。全体としては、横方向に1920画素(120ブロック)、縦方向(Y方向)に1080行の2次元画像データがマッピングされている。また、各ブロックには(メモリチャンネル、バンク、ローアドレス、カラムアドレス)を示している。例えば、(A、0、0、16)と示されているブロックは、メモリチャンネルが"A"、バンクが"0"、ローアドレスが"0"、カラムアドレスが"16"であることを示している。ここで、1つのブロックには16バイトのデータを格納することができるので、カラムアドレスが"16"の場合はカラムアドレス"16〜31"にデータが格納されている。図8では便宜上、カラムアドレスは先頭のアドレスのみを表示している。
図8に示す2次元配置データの左上(座標(0、0))のブロック171は(A、0、0、0)であるので、このブロックのデータは図7に示すメモリチャンネル"A"のバンク"0"のローアドレス"0"のカラムアドレス"0〜15"に格納されている。以降、X方向のブロックのデータは、メモリチャンネル"A"のバンク"0"のローアドレス"0"のカラムアドレス"16"以降に順次格納されている。そして、X方向の画素サイズを超えると、つまりブロック172のデータが格納された後は、次の行の左端(座標(0、1))のブロック173のデータが格納される。このとき、ブロック173(A、0、0、1920)以降のデータは、ブロック172の次のカラムアドレス"1920"以降に格納されている。
図8に示した太線で囲んだ領域174には128ブロック(1ページ)存在し、これらがメモリチャンネル"A"のバンク"0"のローアドレス"0"に対応した記憶領域160(図7参照)に格納されている。そして、メモリチャンネル"A"のバンク"0"のローアドレス"0"のカラムアドレスが"2047"に達すると、次にメモリチャンネル"B"のバンク"0"のローアドレス"0"に対応した記憶領域161にブロックのデータが格納される。すなわち、図8に示すように、ブロック(A、0、0、2032)の次のブロックはブロック(B、0、0、0)であり、ブロック(B、0、0、0)のデータはメモリチャンネル"B"のバンク"0"のローアドレス"0"のカラムアドレス"0〜15"に格納されている。そして、以降のブロックのデータは、ブロック(B、0、0、0)の次のカラムアドレス"16"以降に順次格納されている。
このような規則に従い各ブロックのデータがメモリに格納されている。つまり、まずはメモリチャンネル"A"のバンク"0"のローアドレス"0"の記憶領域160(図7参照)にデータが格納され、このローアドレスの格納領域が満たされると、次にメモリチャンネル"B"のバンク"0"のローアドレス"0"の記憶領域161にデータが格納される。次に、"A"のバンク"1"のローアドレス"0"の記憶領域162にデータが格納され、次に、"B"のバンク"1"のローアドレス"0"の記憶領域163にデータが格納される。次に、"A"のバンク"2"のローアドレス"0"の記憶領域164にデータが格納され、次に、"B"のバンク"2"のローアドレス"0"の記憶領域165にデータが格納される。次に、"A"のバンク"3"のローアドレス"0"の記憶領域166にデータが格納され、次に、"B"のバンク"3"のローアドレス"0"の記憶領域167にデータが格納される。
次に、"A"のバンク"0"のローアドレス"1"の記憶領域168にデータが格納され、次に、"B"のバンク"0"のローアドレス"1"の記憶領域169にデータが格納される。つまり、各メモリチャンネルのバンクが"3"まで達すると、バンク番号が"0"となる。また、このときローアドレスはインクリメントして"1"となる。以降、同様な規則に従い各ブロックが順次格納されている。
図8に示すマッピング例では2次元配置データの左上(座標(0、0))のブロック171からX座標方向に順次格納し、右端に達したら次の行の左端からX方向に順次格納するという規則に従い、右下(座標120、1080)までのデータを上記の順番に従い格納している。
また、特許文献1には同一バンクの異なるローアドレスへの連続アクセスが禁止された2n(nは2以上の整数)個のバンクからなるメモリに効率的にアクセスする技術が開示されている。特許文献1において、メモリは2次元配置のデータを記憶するのに使用される。CPUからメモリにアクセスする際にアドレス変換装置によりアドレス変換が行われる。アドレス変換装置は2次元配置のデータの座標を(X、Y)とした場合に、B={Y×(2n×m+k)+X}mod2n及びA=INT[{Y×(2n×m+k)+X}/2n]によりバンク番号B及びローアドレス番号Aを算出する。但し、mは正の整数であり、kは1以外で、2nよりも小さい正の整数であり、modは剰余を求める演算子であり、INTは商の整数部を求める演算子である。
図8に示すようにマッピングされた2次元配置データにリニアアクセスする際は、上記の規則に従いアクセスする。つまり、メモリチャンネル"A"のバンク"0"、"B"のバンク"0"、"A"のバンク"1"、"B"のバンク"1"、"A"のバンク"2"、"B"のバンク"2"、"A"のバンク"3"、"B"のバンク"3"、"A"のバンク"0"(ローアドレスをインクリメントする)の順にアクセスする。このとき、ローアドレス、カラムアドレスがそれぞれ昇順となるようにアクセスする。よって、2048バイト毎にメモリチャンネルが入れ替わる。
また、水平アクセスする際は、ページサイズ(1ローアドレスのサイズ)が画像のX方向のサイズよりも大きい場合は両方のメモリチャンネルに跨る可能性がある。つまり、図8に示す例では、2行目においてブロック(A、0、0、2032)からブロック(B、0、0、0)に移動しているため、両方のメモリチャンネルに跨っている。また、ページサイズが画像のX方向のサイズよりも小さい場合は、1行目においても両方のメモリチャンネルに跨る。ページサイズが画像のX方向のサイズと同一の場合にのみ、どの行でも片方のメモリチャンネルのみのアクセスとなる。
また、垂直アクセスする際は、連続して垂直アクセスする場合はほぼ両方のメモリチャンネルに跨る。また、1行おきに垂直アクセスする場合は、ページサイズと画像のX方向のサイズが同一である場合にのみ片方のメモリチャンネルのみのアクセスとなるが、これ以外の場合は両方のメモリチャンネルに跨る可能性がある。
よって、図8に示したようなある一定の容量毎にメモリチャンネルを切り替えるマッピング方法では、水平アクセス、垂直アクセスにおいて、1回のメモリアクセスが複数のメモリチャンネルに跨る確率が高くなり、メモリに効率的にアクセスできないという問題がある。
このとき、メモリアクセスの順序を保つために、一方のメモリチャンネルのメモリアクセスが完了した後に、他方のメモリチャンネルのメモリアクセスを開始することもできるが、この方法ではメモリアクセスの性能が低下する。例えば、あるメモリマスタから8バーストのメモリリードアクセスを行なう場合に、前半の4バーストがメモリチャンネル"A"に、後半の4バーストがメモリチャンネル"B"に割り当てられていたとする。メモリマスタへのリードデータの転送は昇順に行なう必要があるため、まずメモリチャンネル"A"に4バーストのメモリアクセス要求を出し、これが完了したらメモリチャンネル"B"に4バーストのメモリアクセス要求を出す必要がある。メモリアクセスは要求を出してから実際にアクセスが実行されるまでにレイテンシがあるため、メモリチャンネル"A"とメモリチャンネル"B"のメモリアクセスの間に無駄な時間が発生し、メモリアクセス性能が低下する。このように、1回のメモリアクセスが複数のメモリチャンネルに跨るとメモリに効率的にアクセスできない。
一方、メモリアクセスの順序を保つために、全てのメモリマスタにデータの並び替えを行なうために必要なバッファメモリを設けることもできるが、この方法ではハードウェアが増加するという問題がある。つまり、あるメモリマスタから8バーストのメモリリードアクセスを行なう場合に、前半の4バーストがメモリチャンネル"A"に、後半の4バーストがメモリチャンネル"B"に割り当てられていたとする。上記問題を解決するためにはメモリチャンネル"A"、"B"に同時にメモリアクセス要求を出す必要があるが、メモリチャンネル"A"がビジーで長く待たされ、メモリチャンネル"B"が空いていた場合には、メモリチャンネル"B"からのリードデータの方が先に返ってくる。メモリマスタへのリードデータの転送は昇順に行なう必要があるため、メモリチャンネル"A"からリードデータが返ってくるまでは、メモリチャンネル"B"からのリードデータを保持しておくためのバッファメモリが必要となり、ハードウェアが増加する。
また、例えば各メモリチャンネルの全メモリ容量毎にメモリチャンネルを切り替えるマッピング方法では、メモリアクセス性能の低下もなくバッファメモリも必要としない。しかし、このマッピング方法では各メモリチャンネルにメモリアクセスを均等に割り当てることができない。つまり、全メモリ容量の前半分をメモリチャンネル"A"に、後半分をメモリチャンネル"B"に割り当てたとすると、1回のメモリアクセスがメモリチャンネル"A"と"B"に跨る確率は限りなく0に近いため、両者に跨るアクセスの時はメモリチャンネル"A"へのアクセスが完了してからメモリチャンネル"B"へのアクセスを開始することができる。
しかし、このマッピング方法ではメモリマスタからのアクセスが各メモリチャンネルに固定的に割り当てられることになるため、予めメモリマスタ毎にどちらのチャンネルを使用するかを決めておく必要がある。このとき、考慮すべきパラメータとして、各メモリマスタが使用するメモリ帯域とメモリ容量の2つの変数があり、その両方を満たす方程式を解かなければならない。これは難易度が高く、結果として帯域か容量のいずれかを犠牲にする(片方のチャンネルの帯域か容量のいずれかが無駄になる)結果を招きやすい。また、メモリチャンネル数が増加すればその傾向はより顕著になる。
本発明にかかるメモリアクセスシステムは、2次元に配置されたデータを複数のメモリチャンネルに最小アクセス単位であるブロック単位で格納するメモリアクセスシステムであって、前記2次元に配置されたデータを、X方向にXa個のブロックをY方向にYa個のブロックを備える第1の格納単位で区切り、前記第1の格納単位のデータを、更に、X方向にXa個のブロックをY方向にYb個のブロックを備える第2の格納単位で区切り、前記第1の格納単位の第m(mは正の整数)のブロック群のデータを、k(kは2以上の整数)個のメモリチャンネルのそれぞれの第p(pは正の整数)のバンクに、前記第2の格納単位毎にそれぞれ格納し、前記第1の格納単位の第(m+1)のブロック群のデータを、前記k個のメモリチャンネルのそれぞれの第(p+1)のバンクに、前記第2の格納単位毎にそれぞれ格納する。
本発明にかかるメモリアクセスシステムでは、水平アクセス、垂直アクセスした場合であっても複数のメモリチャンネルに跨る確率が低くなるように、2次元配置のデータを複数のメモリチャンネルに格納することができる。よって、メモリに効率的にアクセスすることができるメモリアクセスシステムを提供することができる。
本発明にかかるメモリアクセス制御方法は、2次元に配置されたデータを複数のメモリチャンネルに最小アクセス単位であるブロック単位で格納するメモリアクセス制御方法であって、前記2次元に配置されたデータを、X方向にXa個のブロックをY方向にYa個のブロックを備える第1の格納単位で区切り、前記第1の格納単位のデータを、更に、X方向にXa個のブロックをY方向にYb個のブロックを備える第2の格納単位で区切り、前記第1の格納単位の第m(mは正の整数)のブロック群のデータを、k(kは2以上の整数)個のメモリチャンネルのそれぞれの第p(pは正の整数)のバンクに、前記第2の格納単位毎にそれぞれ格納し、前記第1の格納単位の第(m+1)のブロック群のデータを、前記k個のメモリチャンネルのそれぞれの第(p+1)のバンクに、前記第2の格納単位毎にそれぞれ格納する。
本発明にかかるメモリアクセス制御方法により、水平アクセス、垂直アクセスした場合であっても複数のメモリチャンネルに跨る確率が低くなるように、2次元配置のデータを複数のメモリチャンネルに格納することができる。よって、メモリに効率的にアクセスすることができるメモリアクセス制御方法を提供することができる。
本発明により複数のメモリチャンネルに格納されている2次元配置のデータに水平アクセス、垂直アクセスした場合であっても、メモリに効率よくアクセスすることができるメモリアクセスシステムおよびメモリアクセス制御方法を提供することができる。
以下、図面を参照して本発明の実施の形態について説明する。図1は本実施の形態にかかるメモリアクセスシステムを説明するためのブロック図である。図1に示すメモリアクセスシステムは、プロセッサ1(11)、プロセッサ2(12)、プロセッサ3(13)、バス21、22、メモリコントローラA(31)、メモリコントローラB(32)を有する。
各プロセッサ1〜3(11〜13)は、バス21、22を介してメモリコントローラA(31)、メモリコントローラB(32)と接続されている。メモリコントローラA(31)はメモリA(41)と接続され、メモリコントローラB(32)はメモリB(42)と接続されている。ここで、プロセッサの数は任意に決定することができる。また、メモリおよび当該メモリに対応して設けられるメモリコントローラの数も任意に決定することができる。
図2はメモリA(41)の構成を説明するためのブロック図である。メモリA(41)は複数のバンク0〜2n−1(nは正の整数)(51〜55)に分割されている。つまり、メモリA(41)のバンクの数は2n(nは正の整数)個とすることができる。各バンク(51〜55)にはメモリコントローラA(31)からコントロールアドレス56、クロック信号57が供給される。各バンク(51〜55)からはコントロールアドレス56に応じたデータがクロック信号57に基づくタイミングでデータ線58に出力される。なお、メモリB(42)も同様の構成である。
例えば、プロセッサ1(11)がメモリA(41)に記憶されているデータを読み出そうとする命令コードを実行する場合、またはメモリA(41)にデータを書き込もうとする命令コードを実行する場合には、プロセッサ1(11)は読み出しまたは書き込みを行おうとするデータの2次元配置の座標(X、Y)を、バス21を経由してメモリコントローラA(31)に出力する。
メモリコントローラA(31)は、プロセッサ1(11)から2次元配置の座標(X、Y)を受け取ると、これに従いメモリA(41)のバンク、ローアドレス、およびカラムアドレスを算出する。メモリコントローラA(31)は、算出したバンク、ローアドレス、およびカラムアドレスに従ってメモリA(41)にアクセスする。すなわち、プロセッサ1(11)が実行する命令コードがデータの読み出しの場合には、メモリA(41)の当該バンク、ローアドレス、およびカラムアドレスに記憶されているデータを読み出す。一方、プロセッサ1(11)が実行する命令コードがデータの書き込みの場合には、メモリA(41)の当該バンク、ローアドレス、およびカラムアドレスにデータを書き込む。なお、上記で説明した動作は、各プロセッサ(11〜13)がメモリコントローラB(32)を用いてメモリB(42)にアクセスする場合も同様である。
次に、図1に示すメモリアクセスシステムを用いて2次元配置のデータを格納する場合について具体的に説明する。なお、以下に示す例ではメモリおよびメモリコントローラの数をそれぞれ2個とし、各メモリのバンクの数を4個としている。図3は、メモリA(41)、メモリB(42)の各バンクのローアドレスとカラムアドレスを具体的に示した一例である。図3に示した各メモリの各バンクのローアドレスは"0〜8191"、カラムアドレスは"0〜2047"としている。この例では、1ページ(1ローアドレス当たり)が2048バイト、4バンクからなるメモリを2チャンネルで構成している。
図4は、本実施の形態にかかるメモリアクセスシステムを用いて各メモリチャンネルに格納された2次元配置のデータのマッピングの一例を示す図である。ここで、2次元配置のデータは例えば画像データである。図4に示す2次元配置のデータの1つのブロックは最小アクセス単位(16バイト)で、1つのブロックに横方向(X方向)に連続した16画素の画像データが割り当てられている。全体としては、X方向に1920画素(120ブロック)、Y方向に1080行の2次元画像データがマッピングされている。また、各ブロックには(メモリチャンネル、バンク、ローアドレス、カラムアドレス)を示している。例えば、(A、0、0、16)と示されているブロックは、メモリチャンネルが"A"、バンクが"0"、ローアドレスが"0"、カラムアドレスが"16"であることを示している。ここで、1つのブロックには16バイトのデータを格納することができるので、カラムアドレスが"16"の場合はカラムアドレスが"16〜31"のデータが格納されている。図4では便宜上、カラムアドレスは先頭のアドレスのみを表示している。
本実施の形態にかかるメモリアクセスシステムは、まず2次元配置のデータを、X方向にXa個のブロックをY方向にYa個のブロックを備える第1の格納単位で区切る。図4に示す2次元配置のデータでは、Xa=4ブロック、Ya=64行としている。第1の格納単位は画像データを格納する最小単位である。なお、第1の格納単位のサイズ、すなわちXaの値、Yaの値はバンクの1つのローアドレスに対応した記憶領域に格納可能なデータサイズ(図3の場合は2048バイト)に応じて変更することができる。
つまり、第1の格納単位のデータサイズをメモリチャンネルの数で除算したデータサイズは、バンクの1つのローアドレスに対応した記憶領域に格納可能なデータサイズと同一とすることとができる。図3、図4に示す例では、第1の格納単位のデータサイズ(4096バイト)をメモリチャンネルの数(2つ)で除算したデータサイズは2048であり、これはバンクの1つのローアドレスに対応した記憶領域に格納可能なデータサイズ(2048バイト)と一致している。
本実施の形態にかかるメモリアクセスシステムは、この第1の格納単位を2次元配置のデータのサイズに応じてX方向、Y方向に複数個並べて、全データを格納する。
次に、第1の格納単位のデータを、更に、X方向にXa個のブロックをY方向にYb個のブロックを備える第2の格納単位で区切る。図4に示す例では、Yb=4行としている。ここで、Ybの値は任意に決定することができる。しかし、Ybの値が大き過ぎると、メモリチャンネルA、Bそれぞれにアクセスする際のアクセスバランスが崩れる確率が高くなる。一方、Ybの値が小さすぎると、垂直アクセス(Y方向アクセス)する際にメモリチャンネルA、Bの両方に跨る確率が高くなる。よって、Ybの値の値はこれらのバランスを考慮して決定する。
次に、第1の格納単位のブロック群(第1のブロック群。太線で示す。)71のデータを、メモリチャンネル"A"のバンク"0"とメモリチャンネル"B"のバンク"0"のそれぞれに、第2の格納単位毎に交互に格納する。つまり、ブロック群71のデータのうち、第2の格納単位のデータ81(破線で表示)を、メモリチャンネル"A"のバンク"0"のローアドレス"0"のカラムアドレス"0〜255"に格納する。また、ブロック群71のデータのうち、第2の格納単位のデータ82(破線で表示)を、メモリチャンネル"B"のバンク"0"のローアドレス"0"のカラムアドレス"0〜255"に格納する。以降、同様に第2の格納単位で区切られたブロック群71のデータを、メモリチャンネル"A"のバンク"0"のローアドレス"0"の記憶領域60(図3参照)と、メモリチャンネル"B"のバンク"0"のローアドレス"0"の記憶領域61に、それぞれ格納する。
このとき、メモリチャンネル"A"のバンク"0"のローアドレス"0"の記憶領域60、およびメモリチャンネル"B"のバンク"0"のローアドレス"0"の記憶領域61には、それぞれブロック群71のデータサイズ(4096バイト)の半分のデータ(2048バイト)が格納される。このように、第1の格納単位のデータサイズを記憶領域60と記憶領域61の合計の記憶容量と一致させることで、メモリ領域を有効に利用することができる。
次に、上記と同様に第1の格納単位のブロック群(第2のブロック群)72のデータを、メモリチャンネル"A"のバンク"1"とメモリチャンネル"B"のバンク"1"のそれぞれに、第2の格納単位毎に交互に格納する。このとき、第2の格納単位のそれぞれのデータは、図3のメモリチャンネル"A"のバンク"1"のローアドレス"0"の記憶領域62とメモリチャンネル"B"のバンク"1"のローアドレス"0"の記憶領域63にそれぞれ格納される。
以降、同様に第1の格納単位のブロック群73のデータは、メモリチャンネル"A"のバンク"2"のローアドレス"0"の記憶領域64とメモリチャンネル"B"のバンク"2"のローアドレス"0"の記憶領域65にそれぞれ格納される。第1の格納単位のブロック群74のデータは、メモリチャンネル"A"のバンク"3"のローアドレス"0"の記憶領域66とメモリチャンネル"B"のバンク"3"のローアドレス"0"の記憶領域67にそれぞれ格納される。
図4に示す例では、各メモリチャンネルのバンクの数を4つとしている。よって、第1の格納単位のブロック群75のデータは、再びメモリチャンネル"A"のバンク"0"とメモリチャンネル"B"のバンク"0"のそれぞれに、第2の格納単位毎に格納される。このとき、各メモリチャンネルのバンク"0"のローアドレスがインクリメントする。よって、ブロック群75のデータは、メモリチャンネル"A"のバンク"0"のローアドレス"1"の記憶領域68とメモリチャンネル"B"のバンク"0"のローアドレス"1"の記憶領域69にそれぞれ格納される。
以降、同様に、X方向に第1の格納単位のブロック群のデータが格納される。そして、ブロック群76のデータが格納された後、ブロック群77のデータが格納され、再びX方向にブロック群のデータが格納される。そして、最後のブロック群79のデータが、メモリチャンネル"A"のバンク"1"のローアドレス"127"の記憶領域とメモリチャンネル"B"のバンク"1"のローアドレス"127"の記憶領域にそれぞれ格納されると、メモリアクセスシステムはデータの格納を終了する。
なお、2次元に配置されたデータのX方向のデータのサイズが、Xa個のブロックのデータサイズで割り切れない場合はメモリ領域を余らせることができる。この場合は第1の格納単位のデータサイズ(4096バイト)に満たないブロック群が存在するため、このブロック群のデータを格納するローアドレスに対応する記憶領域が余ることになる。なお、図4に示す例では、X方向に120ブロック(4ブロックで割り切れる)配置されているのでメモリ領域は余らない。
また、2次元に配置されたデータのY方向のデータのサイズが、Ya個のブロックのデータサイズで割り切れない場合は、Y方向のメモリ領域を余らせることができる。この場合も第1の格納単位のデータサイズ(4096バイト)に満たないブロック群(ブロック群78〜ブロック群79)が存在するため、このブロック群のデータを格納するローアドレスに対応する記憶領域が余ることになる。なお、図4に示す例では、Y方向に1080行配置されているので、8行分のメモリ領域を余らせている。
なお、以上で説明した本実施の形態にかかるメモリアクセスシステムは、メモリチャンネルを2つ備えていたが、メモリチャンネルの数は2つ以上であれば任意に決定することができる。本実施の形態にかかるメモリアクセスシステムでは、特にメモリチャンネルの数を2のべき乗(2n)個とすると、メモリチャンネルの数が2n個でない場合と比べて演算処理を簡素化することができる。また、上記例では各メモリチャンネルのバンクの数を4つとしたが、バンクの数は2n個であれば任意に決定することができる。また、バンクのローアドレス、カラムアドレスも上記の例に限定されることはなく、任意に決定することができる。また、以上で説明したメモリシステムは、ブロック群71の次にブロック群72を格納、すなわちX方向に隣接するブロック群を格納していた。しかし、ブロック群71を格納した後にY方向に隣接するブロック群77を格納してもよい。この場合は、ブロック群78に達したら、次にブロック群72を格納する構成とすることができる。
以上で説明した本実施の形態にかかるメモリシステムは、下記の様に一般化して表現することができる。
すなわち、本実施の形態にかかるメモリアクセスシステムは、2次元に配置されたデータを複数のメモリチャンネルに最小アクセス単位であるブロック単位で格納する際に次のようにして格納する。まず、2次元に配置されたデータを、X方向にXa個のブロックをY方向にYa個のブロックを備える第1の格納単位で区切る。次に、第1の格納単位のデータを、更に、X方向にXa個のブロックをY方向にYb個のブロックを備える第2の格納単位で区切る。
すなわち、本実施の形態にかかるメモリアクセスシステムは、2次元に配置されたデータを複数のメモリチャンネルに最小アクセス単位であるブロック単位で格納する際に次のようにして格納する。まず、2次元に配置されたデータを、X方向にXa個のブロックをY方向にYa個のブロックを備える第1の格納単位で区切る。次に、第1の格納単位のデータを、更に、X方向にXa個のブロックをY方向にYb個のブロックを備える第2の格納単位で区切る。
そして、第1の格納単位の第m(mは正の整数)のブロック群のデータを、k(kは2以上の整数)個のメモリチャンネルのそれぞれの第p(pは正の整数)のバンクに、第2の格納単位毎にそれぞれ格納する。次に、第1の格納単位の第(m+1)のブロック群のデータを、k個のメモリチャンネルのそれぞれの第(p+1)のバンクに、第2の格納単位毎にそれぞれ格納する。
以上で説明した本実施の形態にかかるメモリアクセスシステムにおいて、図4に示すようにマッピングされた2次元配置データに昇順にリニアアクセスする際は、メモリチャンネル"A"のバンク"0"、"B"のバンク"0"、"A"のバンク"1"、"B"のバンク"1"、"A"のバンク"2"、"B"のバンク"2"、"A"のバンク"3"、"B"のバンク"3"、"A"のバンク"0"(ローアドレスをインクリメントする)の順にアクセスする。このとき、カラムアドレスを昇順にアクセスする。よって、2048バイト毎にメモリチャンネルが入れ替わる。したがって、メモリチャンネルを跨る確率は非常に低いため、各メモリチャンネルに入出力するデータを並び替えるためのバッファを設ける必要がない。
また、水平方向に連続してアクセスする水平アクセスの場合は、どの行でも片方のメモリチャンネルのみのアクセスとなる。つまり、X方向には同じメモリチャンネルのブロックが配列されている。よって、各メモリチャンネルに入出力するデータを並び替えるためのバッファを設ける必要がない。図8に示した背景技術にかかるマッピング方法では、水平アクセスの際は、ほとんどの場合において両方のメモリチャンネルに跨っていたが、本実施の形態にかかるメモリアクセスシステムを用いることで、どの行でも片方のメモリチャンネルのみのアクセスとすることができる。
また、垂直方向に連続してアクセスする垂直アクセスの場合は、図4に示したYbの値が"4"であるため5行以上のアクセスでは必ず両方のチャンネルに跨る。また、4行以下のアクセスでは両方のチャンネルに跨る可能性はあるが、行数が少なくなるに従い両方のチャンネルに跨る確率は低下する。また、1行置きに連続して垂直アクセスする場合、3行以上のアクセスでは必ず両方のチャンネルに跨る。また、1行置きに連続してアクセスする場合、2行のアクセスでは両方のチャンネルに跨る可能性がある。よって、必要に応じて各メモリチャンネルに入出力するデータを並び替えるためのバッファを設ける必要がある。
しかし、図8に示した背景技術にかかるマッピング方法と比較すると、垂直アクセスの際に両方のチャンネルに跨る確率を低くすることができる。図8に示したマッピング方法では、ほとんどの場合、メモリチャンネル"A"とメモリチャンネル"B"が交互に入れ替わっていた。一方、図4に示す本実施の形態の場合は4行置きにメモリチャンネル"A"とメモリチャンネル"B"が入れ替わっている。よって、図8の場合と比べて垂直アクセス時に両方のメモリチャンネルに跨る確率を低くすることができる。なお、一般的には垂直アクセスを必要とするメモリマスタは、MPEGやH.264のような動画符号/復号化を行なうメモリマスタやグラフィックス描画を行なうメモリマスタに限られるため、全メモリマスタに占める割合は非常に小さいといえる。このため、各メモリチャンネルに入出力するデータを並び替えるためのバッファを少なく抑えることができる。
以上で説明したように、本実施の形態にかかるメモリアクセスシステムにより、複数のメモリチャンネルに格納されている2次元配置のデータに水平アクセス、垂直アクセスした場合であっても、1回のメモリアクセスが複数のメモリチャンネルに跨る確率を低くすることができ、メモリに効率的にアクセスすることができるメモリアクセスシステムを提供することが可能となる。
また、本実施の形態にかかるメモリアクセスシステムでは、水平アクセスの際にどの行でも片方のメモリチャンネルのみのアクセスとなる。よって、各メモリチャンネルに入出力するデータを並び替えるためのバッファを設ける必要がないため、ハードウェア量の増加を抑えることができる。
また、垂直アクセスの場合であっても、図8に示した背景技術に係るマッピング方法と比較すると両方のチャンネルに跨る確率を低くすることができる。よって、各メモリチャンネルに入出力するデータを並び替えるためのバッファを少なくすることができ、ハードウェア量の増加を抑えることができる。また、X方向とY方向のマッピングを反対にすれば、垂直アクセスが多く水平アクセスが少ない場合でも、各メモリチャンネルに入出力するデータを並び替えるためのバッファを少なくすることができ、ハードウェア量の増加を抑えることができる。
また、本実施の形態にかかるメモリアクセスシステムにより、複数のチャンネルを備えるメモリアクセスシステムにおいて、メモリアクセスシステムのアドレス空間をリニアアクセスする場合、水平アクセスする場合、垂直アクセスする場合であっても、メモリアクセスを各チャンネルに均等に割り当てることができる。
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
11、12、13 プロセッサ
21、22 バス
31、32 メモリコントローラ
41、42 メモリ
51、52、53、54、55 バンク
21、22 バス
31、32 メモリコントローラ
41、42 メモリ
51、52、53、54、55 バンク
Claims (13)
- 2次元に配置されたデータを複数のメモリチャンネルに最小アクセス単位であるブロック単位で格納するメモリアクセスシステムであって、
前記2次元に配置されたデータを、X方向にXa個のブロックをY方向にYa個のブロックを備える第1の格納単位で区切り、
前記第1の格納単位のデータを、更に、X方向にXa個のブロックをY方向にYb個のブロックを備える第2の格納単位で区切り、
前記第1の格納単位の第m(mは正の整数)のブロック群のデータを、k(kは2以上の整数)個のメモリチャンネルのそれぞれの第p(pは正の整数)のバンクに、前記第2の格納単位毎にそれぞれ格納し、
前記第1の格納単位の第(m+1)のブロック群のデータを、前記k個のメモリチャンネルのそれぞれの第(p+1)のバンクに、前記第2の格納単位毎にそれぞれ格納する、
メモリアクセスシステム。 - 前記第1の格納単位の第1のブロック群のデータを、第1のメモリチャンネルの第1のバンクと第2のメモリチャンネルの第1のバンクとに、前記第2の格納単位毎に交互に格納し、
前記第1の格納単位の第2のブロック群のデータを、前記第1のメモリチャンネルの第2のバンクと前記第2のメモリチャンネルの第2のバンクとに、前記第2の格納単位毎に交互に格納する、
請求項1に記載のメモリアクセスシステム。 - 前記各々のメモリチャンネルのバンクの数は2n個である、請求項1または2に記載のメモリアクセスシステム。
- 前記第pのバンクが2n個目のバンクである場合、前記第(p+1)のバンクは1つ目のバンクである、請求項3に記載のメモリアクセスシステム。
- 前記第1の格納単位のデータサイズを前記メモリチャンネルの数で除算したデータサイズは、前記バンクの1つのローアドレスに対応した記憶領域に格納可能なデータサイズと同一である、請求項1乃至4のいずれか一項に記載のメモリアクセスシステム。
- 前記2次元に配置されたデータのX方向のデータのサイズが、前記Xa個のブロックのデータサイズで割り切れない場合は、前記ブロックの数がXa個に満たないブロック群のデータが格納されるローアドレスに対応した記憶領域を余らせる、請求項1乃至5のいずれか一項に記載のメモリアクセスシステム。
- 前記2次元に配置されたデータのY方向のデータのサイズが、前記Ya個のブロックのデータサイズで割り切れない場合は、前記ブロックの数がYa個に満たないブロック群のデータが格納されるローアドレスに対応した記憶領域を余らせる、請求項1乃至6のいずれか一項に記載のメモリアクセスシステム。
- 前記第1の格納単位の第2のブロック群のデータは、前記第1のブロック群のX座標方向において隣に位置する、請求項1乃至7のいずれか一項に記載のメモリアクセスシステム。
- 前記第1の格納単位の第2のブロック群のデータは、前記第1のブロック群のY座標方向において隣に位置する、請求項1乃至7のいずれか一項に記載のメモリアクセスシステム。
- 前記各々のバンクのローアドレスおよびカラムアドレスがそれぞれ昇順となるように、前記2次元に配置されたデータが格納される、請求項1乃至9のいずれか一項に記載のメモリアクセスシステム。
- 前記Xaの値および前記Yaの値は前記バンクの1つのローアドレスに対応した記憶領域に格納可能なデータサイズに基づき決定される、請求項1乃至10のいずれか一項に記載のメモリアクセスシステム。
- 2次元に配置されたデータを複数のメモリチャンネルに最小アクセス単位であるブロック単位で格納するメモリアクセス制御方法であって、
前記2次元に配置されたデータを、X方向にXa個のブロックをY方向にYa個のブロックを備える第1の格納単位で区切り、
前記第1の格納単位のデータを、更に、X方向にXa個のブロックをY方向にYb個のブロックを備える第2の格納単位で区切り、
前記第1の格納単位の第m(mは正の整数)のブロック群のデータを、k(kは2以上の整数)個のメモリチャンネルのそれぞれの第p(pは正の整数)のバンクに、前記第2の格納単位毎にそれぞれ格納し、
前記第1の格納単位の第(m+1)のブロック群のデータを、前記k個のメモリチャンネルのそれぞれの第(p+1)のバンクに、前記第2の格納単位毎にそれぞれ格納する、
メモリアクセス制御方法。 - 前記第1の格納単位の第1のブロック群のデータを、第1のメモリチャンネルの第1のバンクと第2のメモリチャンネルの第1のバンクとに、前記第2の格納単位毎に交互に格納し、
前記第1の格納単位の第2のブロック群のデータを、前記第1のメモリチャンネルの第2のバンクと前記第2のメモリチャンネルの第2のバンクとに、前記第2の格納単位毎に交互に格納する、
請求項12に記載のメモリアクセス制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010033488A JP2011170594A (ja) | 2010-02-18 | 2010-02-18 | メモリアクセスシステムおよびメモリアクセス制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010033488A JP2011170594A (ja) | 2010-02-18 | 2010-02-18 | メモリアクセスシステムおよびメモリアクセス制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011170594A true JP2011170594A (ja) | 2011-09-01 |
Family
ID=44684659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010033488A Pending JP2011170594A (ja) | 2010-02-18 | 2010-02-18 | メモリアクセスシステムおよびメモリアクセス制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011170594A (ja) |
-
2010
- 2010-02-18 JP JP2010033488A patent/JP2011170594A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100817057B1 (ko) | 동일한 픽셀 데이터 그룹에 포함되는 픽셀 데이터들을메모리의 동일한 뱅크 어드레스로 매핑하는 매핑 방법 및비디오 시스템 | |
JP2006318178A (ja) | データ転送調停装置およびデータ転送調停方法 | |
US10585803B2 (en) | Systems and methods for addressing a cache with split-indexes | |
KR20180002635A (ko) | 그래픽 프로세싱을 위한 표면 포맷에 기초한 적응적 메모리 어드레스 스캐닝 | |
CN101084493A (zh) | 在帧缓冲器内读取和写入像素分配子帧的方法和装置 | |
JP5035412B2 (ja) | メモリコントローラ及びそれを使用したメモリシステム | |
JP6159478B2 (ja) | データ書き込み方法及びメモリシステム | |
JP2003186740A (ja) | メモリ制御装置、及びメモリ制御方法 | |
JP2007213055A (ja) | シンクロナスダイナミックランダムアクセスメモリを用いたフレームデータの転送方法及びフレームデータのソースドライバへの転送方法並びにタイミング制御モジュール | |
JP2007018222A (ja) | メモリアクセス制御回路 | |
JP2013132002A (ja) | 画像処理装置 | |
JP5865696B2 (ja) | 画像処理装置 | |
US8806132B2 (en) | Information processing device, memory access control device, and address generation method thereof | |
JP2011170594A (ja) | メモリアクセスシステムおよびメモリアクセス制御方法 | |
JP2010020432A (ja) | キャッシュメモリ装置 | |
US20180095929A1 (en) | Scratchpad memory with bank tiling for localized and random data access | |
CN101996142A (zh) | 一种访问存储器的方法及装置 | |
KR101124860B1 (ko) | 메모리의 엑세스 방법 | |
JP5298625B2 (ja) | メモリ方法およびメモリ装置 | |
JP5605225B2 (ja) | メモリ制御装置、メモリマッピング方法、及び、プログラム | |
JP6329521B2 (ja) | 参照画像バッファ | |
JP2006293693A (ja) | 2次元逆変換装置 | |
JP4906007B2 (ja) | エンコーダシステム | |
TW202002640A (zh) | 配合動態隨機存取記憶體之記憶體管理裝置及記憶體管理方法 | |
KR20110117582A (ko) | 연속적인 매트릭스 트랜스포즈 시스템 및 장치 |