JP4837634B2 - 3次元アドレスマッピングを用いたメモリアクセス方法 - Google Patents

3次元アドレスマッピングを用いたメモリアクセス方法 Download PDF

Info

Publication number
JP4837634B2
JP4837634B2 JP2007201534A JP2007201534A JP4837634B2 JP 4837634 B2 JP4837634 B2 JP 4837634B2 JP 2007201534 A JP2007201534 A JP 2007201534A JP 2007201534 A JP2007201534 A JP 2007201534A JP 4837634 B2 JP4837634 B2 JP 4837634B2
Authority
JP
Japan
Prior art keywords
address
dimensional
memory
loop
triple
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.)
Active
Application number
JP2007201534A
Other languages
English (en)
Other versions
JP2008204428A (ja
Inventor
種 冕 金
秀 晶 柳
東 勲 劉
泓 錫 金
熙 錫 金
政 ▲ウック▼ 金
庚 俊 閔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2008204428A publication Critical patent/JP2008204428A/ja
Application granted granted Critical
Publication of JP4837634B2 publication Critical patent/JP4837634B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明はメモリシステムに関し、より詳細には、3次元アドレスマッピングを用いて線形アドレスメモリ(LAM:linear addressable memory)を効率的にアクセスする方法および装置に関する。
図1は、関連技術によってメモリブロックをアクセスする場合を説明するための図である。プログラム内に2×2の2重ループ(double loop)を有している場合、この2重ループによってアクセスするメモリのアドレスは連続的でない。図1に示すように、アクセスするブロック(block to access)120に含まれたデータは4つである。この場合、線形アドレスメモリは、最大4回のメモリアクセスを必要とする。このようなメモリアクセスを減らすために、ブロックアクセス(block access)が用いられる。例えば、1回のメモリアクセスで4つの整列したブロック(aligned block)を読み取るのである。しかし、この場合にも、読み取ろうとするデータがすべて1つの整列したブロックに含まれていなければ、従来のように何回もメモリアクセスを要求するようになる。図1の場合、アクセスするブロック120に含まれたデータは、すべて異なる整列したブロックに含まれている。例えば、アクセスするブロック120のアドレス23は、整列したブロック110に含まれている。この場合、アクセスするブロック120に含まれたデータをすべてアクセスするためには、4回のメモリアクセスが要求される。
一方、プログラム上では2重、3重ループが多く登場し、特に映像処理を行うプログラムの場合には、3重ループが多く用いられる。したがって、このような3重ループを介してアクセスするメモリを効率的にアクセスできる方法および装置が求められている。
本発明は、プログラム内に含まれる3重ループ(triple loop)によってアクセスするメモリを効率的にアクセスする方法および装置を提供することを目的とする。
また、本発明は、線形アドレスを3重ループによってアクセスするメモリのアドレス計算に適合した3次元アドレスで効率的にマッピングする方法および装置を提供することを目的とする。
本発明の一側に係るメモリアクセス方法は、プログラム内の3重ループによってメモリをアクセスするコードからa、b、cを獲得する段階(前記aは前記3重ループの最内ループ変数が有し得る値の個数であり、前記bは前記3重ループの中間ループ変数が有し得る値の個数であり、前記cは前記3重ループの最外ループ変数が有し得る値の個数である)と、前記3重ループによってアクセスされる前記メモリの開始アドレスを獲得する段階と、前記開始アドレスおよび式を用いて前記3重ループによってアクセスされる前記メモリのa×b×c個のアドレスを獲得する段階とを含む。
本発明のさらに他の観点によれば、前記メモリアクセス方法は、前記メモリの前記線形アドレス「addr」を2次元アドレス(m、n)にマッピングする段階と、前記2次元アドレス(m、n)を前記3次元アドレス(x、y、z)にマッピングする段階と、前記3次元アドレス(x、y、z)を3次元モジュール(p、q、r)にマッピングする段階と、前記3次元モジュール(p、q、r)にマッピングされるアドレスを順に整列した3次元モジュール配列(p、q、r)を生成する段階とをさらに含む。
本発明のさらに他の一側によれば、3次元アドレスマッピング方法は、メモリの線形アドレス「addr」を2次元アドレス(m、n)にマッピングする段階(Lは前記メモリの走査ラインの長さであり、前記m=(addr/L)の指数、前記n=(addr/L)の残りである)と、前記2次元アドレス(m、n)を3次元アドレス(x、y、z)にマッピングする段階(aは最内ループ変数が有し得る値の個数であり、x=m、y=(n/a)の指数、z=(n/a)の残りである)とを含む。
本発明によれば、プログラム内に含まれる3重ループによってアクセスするメモリを効率的にアクセスする方法および装置を提供することができる。
また、本発明によれば、線形アドレスを3重ループによってアクセスするメモリのアドレス計算に適合した3次元アドレスに効率的にマッピングする方法および装置を提供することができる。
また、本発明によれば、メモリのアライメントと関係なく、3重ループによってアクセスされるメモリをブロック単位でアクセスすることができる。
以下、添付の図面に基づき、本発明の好適な実施の形態を詳細に説明するが、本発明がこれらの実施形態によって制限または限定されることはない。図中、同じ参照符号は同じ部材を示す。
図2は、本発明の説明のための3重ループを含んだプログラムの一例を示した図である。
mpeg(Moving Picture Experts Group)、H.264などのビデオコーデック(video codec)には、図2に示すようなfullsearch()関数が多く用いられる。図2に示すように、fullsearch()関数は3重ループを有する。図2に示すように、最内ループ210でメモリを参照するときは、1次元パターンを有する。しかし、中間ループ220まで含んで2重ループを行う場合、メモリを参照するときは2次元パターンを有する。また、最外ループ230を含んで3重ループを行なう場合、メモリを参照するときは3次元パターン240を有する。このようなfullsearch()関数の他にも、ビデオ処理プログラムは3重ループを多く有している。
1次元パターンでメモリをアクセスするときは連続的な位置のメモリをアクセスするようになるが、2次元パターンや3次元パターンでメモリをアクセスするときは、離れているメモリの位置をアクセスしなければならない。図2で、「a[k][j][i]」は3重ループにアクセスされるため、互いに離れているメモリの位置をアクセスしなければならない。本発明では、このような3重ループで参照されるメモリを効率的にアクセスするために、仮想的にマッチングされた3次元アドレスを用いている。
図2において、3重ループのうち最内ループ変数は「i」であり、この変数「i」が有し得る値の個数は「8」である。また、図2において、3重ループのうち中間ループ変数は「j」であり、この変数「j」が有し得る値の個数は「8」である。同様に、図2において、3重ループのうち最外ループ変数は「k」であり、この変数「k」が有し得る値の個数は「2」である。
図3は、本発明によってメモリの線形アドレスを2次元アドレスにマッピングする動作を説明するための図である。
本発明は、まず、メモリの線形アドレス「addr」を2次元アドレス(m、n)にマッピングする。マッピング方法は下記の数式1の通りとなる。
(数式1)
addr→(m、n)
(ここで、m=(addr/L)の指数、n=(addr/L)の残り、Lはメモリの走査ラインの長さである)
Lは、メモリの走査ラインの長さ(scan line length)であり、メモリを読み取るときの幅(width)を意味する。図3において、走査ラインの長さは「16」である。1次元アドレス(線形アドレス)で表示されたメモリ310を仮想的に2次元アドレスに変換し、2次元アドレスで表示したメモリ320が図3に示されている。
本発明の実施形態において、3重ループのうち最内ループの変数は「i」であり、この変数「i」が有し得る値の個数は「a」である。例えば、最内ループが「for(i=0;i<2;i++)」であれば、最内ループ変数は「i」であり、「i」が有し得る値は0、1の2つであるため、「a」は「2」となる。同様に、3重ループのうち中間ループの変数は「j」であり、この変数「j」が有し得る値の個数は「b」である。また、3重ループのうち最外ループの変数は「k」であり、この変数「k」が有し得る値の個数は「c」である。図2の実施形態では、a、bすべてが「2」である場合を説明する。図2において、内側の2重ループによってアクセスされるメモリ位置をメモリ320に整列して表示した。最外ループ変数が1番目の値を有するとき、内側2重ループによってアクセスされるメモリは(0、0)、(0、1)、(1、0)、(1、1)となる。また、最外ループ変数が2番目の値を有するとき、内側2重ループによってアクセスされるメモリは(0、2)、(0、3)、(1、2)、(1、3)となる。
図4は、本発明によってメモリの2次元アドレスを3次元アドレスにマッピングする動作を説明するための図である。
本発明は、線形アドレス「addr」からマッピングされた2次元アドレス(m、n)を仮想的に3次元アドレス(x、y、z)にマッピングする。したがって、結果的には、線形アドレス「addr」は3次元アドレス(x、y、z)にマッピングされる。2次元アドレスを3次元アドレスにマッピングする方法は、下記の数式2の通りとなる。
(数式2)
(m、n)→(x、y、z)
(ここで、x=m、y=(n/a)の指数、z=(n/a)の残り、aは3重ループの最内ループ変数が有し得る値の数)
2次元アドレスで表示されたメモリ410を仮想的に3次元アドレスに変換し、3次元アドレスで表示したメモリ420が図4に示されている。図4の実施形態は、3重ループのうち最内ループ変数が有し得る値の数「a」が「2」である場合である。したがって、2次元アドレス(0、6)は3次元アドレス(0、3、0)にマッピングされ、2次元アドレス(2、10)は3次元アドレス(2、5、0)にマッピングされる。
図5は、本発明によって3次元アドレスを3次元モジュールにマッピングする動作を説明するための図である。
本発明は、3次元アドレス(x、y、z)を3次元モジュール(p、q、r)にマッピングする。3次元アドレスを3次元モジュールにマッピングする方法は、下記の数式3の通りである。
(数式3)
(x、y、z)→(p、q、r)
(ここで、p=x mod c、q=y mod b、r=z mod a、aは3重ループの最内ループ変数が有し得る値の数、bは3重ループの中間ループ変数が有し得る値の数、cは3重ループの最外ループ変数が有し得る値の数)
3次元アドレスで表示されたメモリ510を3次元モジュールにマッピングして3次元モジュールで表示したメモリ520が、図5に示されている。図5の実施形態において、3重ループのうち最内ループ変数が有し得る値の数「a」は「2」である。また、3重ループのうち中間ループ変数が有し得る値の数「b」は「2」であり、3重ループの最外ループ変数が有し得る値の数「c」も「2」である。したがって、図5において、3次元アドレス(0、2、0)は3次元モジュール(0、0、0)にマッピングされ、3次元アドレス(3、4、0)は3次元モジュール(1、0、0)にマッピングされる。
図6aおよび図6bは、本発明によって3次元モジュール配列(3-D module array)を生成する動作を説明するための図である。
本発明では、生成された3次元モジュール(p、q、r)を用いて、3次元モジュール(p、q、r)にマッピングされるアドレスを順に整列した3次元モジュール配列(p、q、r)を生成する。図6aおよび図6bは、図5でマッピングされた3次元モジュールを用いて生成された3次元モジュール配列の一部を示したものである。
図6aは、3次元モジュール配列(0、0、0)を示したものである。3次元モジュール配列(0、0、0)は、3次元モジュール(0、0、0)にマッピングされるアドレスを順に整列したものである。このアドレスは線形アドレス(1次元アドレス)であっても良いし、2次元アドレスまたは3次元アドレスであっても良い。図6aでは、アドレスが3次元アドレスである場合を示している。図5に示すように、3次元モジュール(0、0、0)にマッピングされる3次元アドレスは、(0、0、0)、(0、2、0)、(0、4、0)、(0、6、0)などの順序となる。仮に、2次元アドレスで表示すれば、3次元モジュール(0、0、0)にマッピングされる2次元アドレスは、(0、0)、(0、4)、(0、8)、(0、12)などである。仮に、1次元アドレスで表示すれば、3次元モジュール(0、0、0)にマッピングされる1次元アドレスは、0、4、8、12などである。
図6bは、3次元モジュール配列(0、1、1)を示したものである。3次元モジュール配列(0、1、1)は、3次元モジュール(0、1、1)にマッピングされるアドレスを順に整列したものである。図5に示すように、3次元モジュール(0、1、1)にマッピングされる3次元アドレスは、(0、1、1)、(0、3、1)、(0、5、1)、(0、7、1)などの順となる。
図7は、本発明によって3重ループによってアクセスされるメモリブロックのアドレスを得る動作を説明するための図である。
まず、3重ループによってアクセスされるメモリの開始アドレスを3次元アドレスにマッピングする。3重ループによってアクセスされるメモリの開始アドレスは線形アドレスであるため、この線形アドレスを3次元アドレスにマッピングする動作は数式1および数式2を用いて行われる。例えば、図3〜4において、3重ループによってアクセスされるメモリの開始アドレスが「23」であれば、1次元アドレス「23」は数式1および数式2によって3次元アドレス(1、3、1)にマッピングされる。
その後、下記の数式4を用いて、a×b×cブロックをアクセスする。ここで、「a」は3重ループの最内ループ変数が有し得る値の個数であり、「b」は3重ループの中間ループ変数が有し得る値の個数であり、「c」は3重ループの最外ループ変数が有し得る値の個数である。Lは、メモリの走査ラインの長さである。

(ここで、(x1、y1、z1)はa×b×cブロックの開始3次元アドレス)
これにより、Ap、q、r(x1、y1、z1)は、開始アドレスの3次元アドレスが(x1、y1、z1)であるa×b×cブロックで3次元モジュール(p、q、r)にマッピングされたアドレスが、この3次元モジュール配列(p、q、r)で何番目に対応するのかの値を示す。より具体的には、Ap、q、r(x1、y1、z1)が「f」の値を有していれば、開始アドレスの3次元アドレスが(x1、y1、z1)であるa×b×cブロックで3次元モジュール(p、q、r)にマッピングされたアドレスは、この3次元モジュール配列(p、q、r)で「f+1」番目の値となる。
図7の実施形態において、プログラム上の3重ループに含まれた最内ループ変数、中間ループ変数および最外ループ変数が有し得る値の個数はすべて「2」である。また、a×b×cブロックの開始3次元アドレスは、3重ループによってアクセスされるメモリの開始アドレスである「23」にマッピングされる3次元アドレス(1、3、1)として仮定する。これにより、開始アドレス「23」(3次元アドレスにマッピングすれば(1、3、1))で始まる2×2×2ブロックにマッピングされるメモリは、(p、q、r)に(0、0、0)、(0、0、1)、(0、1、0)、(0、1、1)、(1、0、0)、(1、0、1)、(1、1、0)、(1、1、1)の値を入れて計算されるAp、q、r(x1、y1、z1)を介して知ることができる。
例えば、図7において、アクセスするブロック710の開始アドレスの3次元アドレス(x1、y1、z1)が(1、3、1)である場合を説明する。本実施形態において、プログラム上の3重ループに含まれた最内ループ変数が有し得る値の個数a、中間ループ変数が有し得る値の個数bおよび最外ループ変数が有し得る値の個数cはすべて「2」である。Lはメモリの走査ラインの長さであり、図7の実施形態では「16」である。本発明によれば、数式1を用いて(p、q、r)に(0、1、1)を入れれば、A0、1、1(1、3、1)=(0+1)×4+1+0+0=5となる。すなわち、開始アドレスの3次元アドレスが(1、3、1)である2×2×2ブロックで3次元モジュール(0、1、1)にマッピングされたアドレスは、3次元モジュール配列(0、1、1)で6(=5+1)番目となる。図6bに示すように、3次元モジュール配列(0、1、1)で6番目は、3次元アドレスが(2、3、1)であるメモリである。
同様に、数式1を用いて(p、q、r)に(0、0、0)を入れれば、A0、0、0(1、3、1)=(0+1)×4+1+1+0=6となる。すなわち、開始アドレスの3次元アドレスが(1、3、1)である2×2×2ブロックで3次元モジュール(0、0、0)にマッピングされたアドレスは、3次元モジュール配列(0、0、0)で7(=6+1)番目となる。図6aに示すように、3次元モジュール配列(0、0、0)で7番目は、3次元アドレスが(2、4、0)であるメモリである。
特に、図7において、アクセスするブロック710を整列していないが、本発明によれば1つのブロックにアクセスするように構成できる。すなわち、本発明によれば、メモリのアライメント(alignment)と関係なく、3重ループによってアクセスされるメモリをブロック単位でアクセスすることができる。
図8は、本発明によって3重ループによってアクセスするメモリのアドレスを獲得する順序を示したフローチャートである。
本発明は、まず、段階810で、プログラム内の3重ループによってメモリをアクセスするコードを識別する。例えば、図2に示すように、図2のプログラムからループ230、ループ220およびループ210の3重ループによってメモリにアクセスするコードを識別する。その次に、この3重ループから3重ループの最内ループ変数が有し得る値の個数a、3重ループの中間ループ変数が有し得る値の個数b、3重ループの最外ループ変数が有し得る値の個数cを獲得する。図2のプログラムに示すように、ループ210、220、230で成された3重ループのうち最内ループ変数は「i」であり、この変数「i」が有し得る値の個数は「8」である。また、図2において、3重ループのうち中間ループ変数は「j」であり、この変数「j」が有し得る値の個数は「8」である。同様に、図2において、3つのループのうち最外ループ変数は「k」であり、この変数「k」が有し得る値の個数は「2」である。仮に、最内側ループが「for(i=0;i<8;i=i+3)」として与えられれば、iは0、3、6の値を有するため、変数「i」が有し得る値の個数は「3」である。
段階820で、本発明は、3重ループによってアクセスされるメモリの開始アドレスを獲得する。図2のプログラムにおいて、3重ループによってアクセスされるメモリの開始アドレスは「a[0][0][0]」に該当するアドレスとなる。
段階830で、本発明は、開始アドレスおよび式を用いて、3重ループによってアクセスされるメモリのa×b×c個のアドレスを獲得する。このためには、メモリの線形アドレスを3次元アドレスにマッピングし、3次元アドレスに基づいて3次元モジュールアレイを計算する。これに関しては、図3〜6で詳しく説明した通りである。そして、開始アドレスから開始アドレスにマッピングされる3次元アドレス(x1、y1、z1)を求める。さらに、0<=p<c、0<=q<b、0<=r<cであるすべてのp、q、rの組み合わせに対して、数式4を用いて3次元アドレス(x1、y1、z1)を開始アドレスとするa×b×cブロックに含まれるメモリのアドレスを獲得する。
図9は、本発明によって線形アドレスメモリを仮想的に3−DAM(3-D addressable memory)にマッピングする順序を示したフローチャートである。
段階910で、メモリの線形アドレス「addr」は、2次元アドレス(m、n)にマッピングされる。マッピング方法は、数式1の通りである。これに関しては、図3に詳しく説明されている。
段階920で、2次元アドレス(m、n)は、3次元アドレス(x、y、z)にマッピングされる。したがって、結果的には、線形アドレス「addr」は3次元アドレス(x、y、z)にマッピングされる。2次元アドレスを3次元アドレスにマッピングする方法は、数式2の通りである。これに関しては、図4に詳しく説明されている。
段階930で、3次元アドレス(x、y、z)は、3次元モジュール(p、q、r)にマッピングされる。3次元アドレスを3次元モジュールにマッピングする方法は、数式3の通りである。これに関しては、図5に詳しく説明されている。
段階940で、生成された3次元モジュール(p、q、r)を用いて、3次元モジュール(p、q、r)にマッピングされるアドレスを順に整列した3次元モジュール配列(p、q、r)が生成される。これに関しては、図6に詳しく説明されている。
前述したように本発明の実施形態は、コンピュータにより具現される多様な動作を実行するためのプログラム命令を含むコンピュータ読み取り可能な媒体を含む。この媒体は、プログラム命令、データファイル、データ構造などを単独または組み合わせた構成を含むこともできる。このような媒体およびプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知であり使用可能なものであってもよい。コンピュータ読み取り可能な記録媒体の例としては、ハードディスク、フレキシブルディスクおよび磁気テープのような磁気媒体、CD−ROM、DVDのような光記録媒体、フロプティカルディスクのような磁気−光媒体、およびROM、RAM、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれる。前述した媒体は、プログラム命令、データ構造などを保存する信号を送信する搬送波を含む光または金属線、導波管などの送信媒体でもある。プログラム命令の例としては、コンパイラによって生成されるもののような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行される高級言語コードを含む。
図10は、本発明の仮想3次元アドレスマッピングを用いて線形アドレスメモリにアクセスする3DAMC(3-Dimensional Accessible Memory Controller)の動作を説明するための図である。
本発明の動作を実行する3DMAC1020は、ハードウェアで具現される。この場合、3DMAC1020は、プロセッシング装置1030と線形アクセスメモリ1010との間に位置し、3重ループによってアクセスされるコードに対して、本発明の3次元アドレスマッピングを用いてブロック単位でメモリにアクセスすることができる。3DMAC1020によって実行される動作は、図8〜9で説明された動作の全部または一部となり得る。
以上、3重ループの場合に対してのみ説明したが、本発明は4重ループ以上にも適用することができる。この場合、内側3重ループに対して本発明を適用することで、4重ループ以上でも効率的にメモリアクセスを行えるようになる。
上述したように、本発明の好ましい実施形態を参照して説明したが、該当の技術分野において熟練した当業者にとっては、特許請求の範囲に記載された本発明の思想および領域から逸脱しない範囲内で、本発明を多様に修正および変更きることを理解することが可能であろう。すなわち、本発明の技術的範囲は、特許請求の範囲に基づいて定められ、発明を実施するための最良の形態により制限されるものではない。
関連技術によってメモリブロックをアクセスする場合を説明するための図である。 本発明の説明のための3重ループを含んだプログラムの一例を示した図である。 本発明によってメモリの線形アドレスを2次元アドレスにマッピングする動作を説明するための図である。 本発明によってメモリの2次元アドレスを3次元アドレスにマッピングする動作を説明するための図である。 本発明によって3次元アドレスを3次元モジュールにマッピングする動作を説明するための図である。 本発明によって3次元モジュール配列を生成する動作を説明するための図である。 本発明によって3次元モジュール配列を生成する動作を説明するための図である。 本発明によってa×b×c個のデータで構成されたブロックのアドレスを得る動作を説明するための図である。 本発明によって3重ループによってアクセスするメモリのアドレスを獲得する順序を示したフローチャートである。 本発明によって線形アドレスメモリを仮想的に3DAMにマッピングする順序を示したフローチャートである。 本発明の仮想3次元アドレスマッピングを用いて線形アドレスメモリにアクセスする3DAMCの動作を説明するための図である。

Claims (5)

  1. プログラム内の3重ループによってメモリをアクセスするコードからa、b、cを獲得する段階(前記aは前記3重ループの最内ループ変数が有し得る値の個数であり、前記bは前記3重ループの中間ループ変数が有し得る値の個数であり、前記cは前記3重ループの最外ループ変数が有し得る値の個数である)と、
    前記3重ループによってアクセスされる前記メモリの開始アドレスを獲得する段階と、
    前記3重ループによってアクセスされる前記メモリのa×b×c個のアドレスを獲得する段階と、
    を含み、
    前記3重ループによってアクセスされる前記メモリのa×b×c個のアドレスを獲得する前記段階は、
    前記メモリの線形アドレスaddrを3次元アドレス(x、y、z)にマッピングする段階と、
    前記3次元アドレス(x、y、z)を3次元モジュール(p、q、r)にマッピングする段階と、
    前記3次元モジュール(p、q、r)にマッピングされるアドレスを順次に整列した3次元モジュール配列(p、q、r)を生成する段階と、
    前記メモリの前記開始アドレスにマッピングされる3次元アドレス(x1、y1、z1)を獲得する段階と、
    0<=p<c、0<=q<b、0<=r<cであるすべてのp、q、rの組み合わせに対して、次式を用いて3次元アドレス(x1、y1、z1)を開始アドレスとするa×b×cブロックに含まれるメモリのアドレスを獲得する段階と、
    を有
    (ここで、(x1、y1、z1)はa×b×cブロックの開始3次元アドレス)であり、
    p、q、r(x1、y1、z1)は、開始アドレスの3次元アドレスが(x1、y1、z1)であるa×b×cブロックで3次元モジュール(p、q、r)にマッピングされたアドレスが、前記3次元モジュール配列(p、q、r)で何番目であるかの値であり、Lは前記メモリの走査ラインの長さであり、
    p=x mod a、
    q=y mod b、
    r=z mod c、
    である、ことを特徴とするメモリアクセス方法。
  2. 前記メモリの線形アドレスaddrを3次元アドレス(x、y、z)にマッピングする段階は、
    前記メモリの前記線形アドレスaddrを2次元アドレス(m、n)にマッピングする段階と、
    前記2次元アドレス(m、n)を前記3次元アドレス(x、y、z)にマッピングする段階と、
    を含むことを特徴とする請求項1に記載のメモリアクセス方法。
  3. m=(addr/L)の指数、
    n=(addr/L)の残り、
    addrは前記メモリの前記線形アドレス、
    であることを特徴とする請求項2に記載のメモリアクセス方法。
  4. x=m、
    y=(n/a)の指数、
    z=(n/a)の残り、
    であることを特徴とする請求項2に記載のメモリアクセス方法。
  5. 請求項1〜4のいずれか一項の方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2007201534A 2007-02-22 2007-08-02 3次元アドレスマッピングを用いたメモリアクセス方法 Active JP4837634B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2007-0017775 2007-02-22
KR1020070017775A KR100868451B1 (ko) 2007-02-22 2007-02-22 3-d 주소 매핑을 이용한 메모리 접근 방법

Publications (2)

Publication Number Publication Date
JP2008204428A JP2008204428A (ja) 2008-09-04
JP4837634B2 true JP4837634B2 (ja) 2011-12-14

Family

ID=38819814

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007201534A Active JP4837634B2 (ja) 2007-02-22 2007-08-02 3次元アドレスマッピングを用いたメモリアクセス方法

Country Status (4)

Country Link
US (1) US7779225B2 (ja)
EP (1) EP1962190A3 (ja)
JP (1) JP4837634B2 (ja)
KR (1) KR100868451B1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101154286B1 (ko) 2011-12-30 2012-06-14 (주)케이닷컴 동시 다중 접근이 가능한 메모리 제어장치
US9323654B2 (en) * 2013-07-17 2016-04-26 Infineon Technologies Ag Memory access using address bit permutation
US10985171B2 (en) 2018-09-26 2021-04-20 Sandisk Technologies Llc Three-dimensional flat NAND memory device including wavy word lines and method of making the same
US11018151B2 (en) 2018-09-26 2021-05-25 Sandisk Technologies Llc Three-dimensional flat NAND memory device including wavy word lines and method of making the same
US10700090B1 (en) 2019-02-18 2020-06-30 Sandisk Technologies Llc Three-dimensional flat NAND memory device having curved memory elements and methods of making the same
US10700078B1 (en) 2019-02-18 2020-06-30 Sandisk Technologies Llc Three-dimensional flat NAND memory device having curved memory elements and methods of making the same

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58128078A (ja) * 1982-01-27 1983-07-30 Dainippon Screen Mfg Co Ltd メモリ装置の構成方法
US4819152A (en) * 1985-04-05 1989-04-04 Raytheon Company Method and apparatus for addressing a memory by array transformations
JPH0750448B2 (ja) * 1987-04-01 1995-05-31 日本電気株式会社 配列添字変換装置
JPH02181277A (ja) * 1989-01-05 1990-07-16 Ricoh Co Ltd 画像メモリ用アドレス制御回路
JP2854420B2 (ja) * 1990-02-21 1999-02-03 松下電器産業株式会社 多次元アドレス発生器およびその制御方式
US5293596A (en) * 1990-02-21 1994-03-08 Matsushita Electric Industrial Co., Ltd. Multidimensional address generator and a system for controlling the generator
JPH08147210A (ja) * 1994-11-22 1996-06-07 Oki Electric Ind Co Ltd ビットマップメモリ装置
US6125437A (en) * 1998-03-05 2000-09-26 Hewlett-Packard Company Virtual linear frame buffer addressing method and apparatus
JP2001188675A (ja) * 1999-12-28 2001-07-10 Nec Eng Ltd データ転送装置
WO2001090888A1 (en) * 2000-05-23 2001-11-29 Theis Jean Paul A data processing system having an address generation unit with hardwired multidimensional memory indexing support
JP2004013389A (ja) 2002-06-05 2004-01-15 Sony Corp データ転送システム、データ転送方法
US7073041B2 (en) * 2002-10-30 2006-07-04 Motorola, Inc. Virtual memory translation unit for multimedia accelerators
KR100503094B1 (ko) * 2003-08-25 2005-07-21 삼성전자주식회사 넓은 메모리 밴드위스를 갖는 디지털 신호 처리 장치 및그 메모리 맵핑 방법

Also Published As

Publication number Publication date
EP1962190A3 (en) 2009-05-06
US7779225B2 (en) 2010-08-17
KR20080078131A (ko) 2008-08-27
JP2008204428A (ja) 2008-09-04
KR100868451B1 (ko) 2008-11-11
US20080209159A1 (en) 2008-08-28
EP1962190A2 (en) 2008-08-27

Similar Documents

Publication Publication Date Title
JP4837634B2 (ja) 3次元アドレスマッピングを用いたメモリアクセス方法
JP4280270B2 (ja) 幾何プリミティブのインデックスを外す方法、ラスタ化装置、コンピュータ可読媒体
US20080172646A1 (en) Array transformation in a behavioral synthesis tool
US20090076754A1 (en) Methods, systems and apparatuses for modeling optical images
JP2009266230A (ja) パラレル処理を利用した連立一次方程式を解くための装置、システム及び方法
CN111868786B (zh) 跨设备监控计算机视觉系统
WO2013179560A1 (ja) 画像処理装置および画像処理方法
CN109697733A (zh) 点云空间寻点方法、装置、计算机设备和存储介质
CN110489425A (zh) 一种数据访问方法、装置、设备及存储介质
US20220262447A1 (en) Error detection pin encoding scheme to avoid maximum transitions and further improve signal integrity on high speed graphic memory interfaces
US8139895B2 (en) Image recognition device and image rotating method
US6678868B2 (en) Using Boolean expressions to represent shapes within a layout of an integrated circuit
JP5597175B2 (ja) 画像圧縮装置及び画像処理システム
JP2010259116A (ja) コスト関数演算方法、コスト関数演算装置及びその補間方法
US20180101975A1 (en) Animating a virtual object
JP2005150010A (ja) 線材パッキング計算方法、その装置及びそのプログラム
US11861815B2 (en) Composite image creating method, composite image creating apparatus, and computer program stored in recording medium to execute the method
CN109635228A (zh) 有序数组间差异度的确定方法、装置、设备及存储介质
CN112351213B (zh) 用于有效信号处理的芯片资源上的系统动态分配
JP5895229B2 (ja) 配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法
JP2007295143A (ja) 画像処理装置
CN109035417B (zh) 含有机构的虚拟场景建模方法和装置
JP4986835B2 (ja) 一括表示画像出力装置、一括表示画像出力方法、コンピュータプログラム及び記録媒体
JP4834642B2 (ja) 図形変化装置、図形変化方法、コンピュータプログラム及び記録媒体
JP6981314B2 (ja) 情報処理装置、シミュレーションプログラム及びシミュレーション方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110221

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110523

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110830

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110928

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141007

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4837634

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250