KR100868451B1 - 3-d 주소 매핑을 이용한 메모리 접근 방법 - Google Patents

3-d 주소 매핑을 이용한 메모리 접근 방법 Download PDF

Info

Publication number
KR100868451B1
KR100868451B1 KR1020070017775A KR20070017775A KR100868451B1 KR 100868451 B1 KR100868451 B1 KR 100868451B1 KR 1020070017775 A KR1020070017775 A KR 1020070017775A KR 20070017775 A KR20070017775 A KR 20070017775A KR 100868451 B1 KR100868451 B1 KR 100868451B1
Authority
KR
South Korea
Prior art keywords
address
memory
loop
triple
mapping
Prior art date
Application number
KR1020070017775A
Other languages
English (en)
Other versions
KR20080078131A (ko
Inventor
김종면
류수정
유동훈
김홍석
김희석
김정욱
민경준
Original Assignee
삼성전자주식회사
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 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020070017775A priority Critical patent/KR100868451B1/ko
Priority to EP07110820A priority patent/EP1962190A3/en
Priority to US11/828,440 priority patent/US7779225B2/en
Priority to JP2007201534A priority patent/JP4837634B2/ja
Publication of KR20080078131A publication Critical patent/KR20080078131A/ko
Application granted granted Critical
Publication of KR100868451B1 publication Critical patent/KR100868451B1/ko

Links

Images

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)

Abstract

본 발명은 프로그램 중 3중 루프에 의하여 메모리를 접근하는 코드로부터 a, b, c를 획득하는 단계 - 상기 a는 상기 3중 루프의 가장 안쪽 루프 변수가 가질 수 있는 값의 개수이고, 상기 b는 상기 3중 루프의 가운데 루프 변수가 가질 수 있는 값의 개수이고, 상기 c는 상기 3중 루프의 가장 바깥쪽 루프 변수가 가질 수 있는 값의 개수임 -; 상기 3중 루프에 의하여 접근되는 상기 메모리의 시작 주소를 획득하는 단계; 및 상기 시작 주소 및 소정의 식을 이용하여 상기 3중 루프에 의하여 접근되는 상기 메모리의 a * b * c개의 주소를 획득하는 단계를 포함하는 메모리 접근 방법을 제공한다.
3DAM (3-D Addressable Memory), 3-D 메모리, 2-D 메모리

Description

3-D 주소 매핑을 이용한 메모리 접근 방법{Memory Access Method Using 3 Dimensional Address Mapping}
도 1은 종래기술에 따라 메모리 블록을 접근하는 경우를 설명하기 위한 도면이다.
도 2는 본 발명의 설명을 위한 3중 루프를 포함한 프로그램의 일례를 도시한 도면이다.
도 3은 본 발명에 따라 메모리의 선형 주소(linear address)를 2-D 주소로 매핑하는 동작을 설명하기 위한 도면이다.
도 4는 본 발명에 따라 메모리의 2-D 주소를 3-D 주소로 매핑하는 동작을 설명하기 위한 도면이다.
도 5는 본 발명에 따라 3-D 주소를 3-D 모듈(3-D module)로 매핑하는 동작을 설명하기 위한 도면이다.
도 6은 본 발명에 따라 3-D 모듈 배열(3-D module array)를 생성하는 동작을 설명하기 위한 도면이다.
도 7은 본 발명에 따라 a * b * c개의 데이터로 구성된 블록의 주소를 얻는 동작을 설명하기 위한 도면이다.
도 8은 본 발명에 따라 3중 루프에서 접근하는 메모리의 주소를 획득하는 순 서를 도시한 흐름도이다.
도 9는 본 발명에 따라 선형 주소 메모리(LAM: linear addressable memory)를 가상적으로 3-DAM(3-D addressable memory)로 매핑하는 순서를 도시한 흐름도이다.
도 10은 본 발명의 가상 3-D 주소 매핑을 이용하여 선형 주소 메모리(LAM)에 접근하는 3DAMC(3-Dimensional Accessible Memory Controller)의 동작을 설명하기 위한 도면이다.
본 발명은 메모리 시스템에 관한 것으로, 보다 구체적으로는 3-D 주소 매핑을 이용하여 선형 주소 메모리(LAM: linear addressable memory)를 효율적으로 접근하는 방법 및 장치에 관한 것이다.
도 1은 종래기술에 따라 메모리 블록을 접근하는 경우를 설명하기 위한 도면이다. 프로그램 중 2 * 2의 이중 루프(double loop)를 가지고 있는 경우, 상기 이중 루프에 의하여 접근되는 메모리의 주소는 연속적이 아니다. 도 1에 도시된 바와 같이, 접근할 블록(block to access)(120)에 포함된 데이터는 4개이다. 선형 주소 메모리는 이 경우 최대 4번의 메모리 접근을 필요로 한다. 이러한 메모리 접근을 줄이기 위하여 블록 접근(block access)이 사용된다. 예를 들어, 한번의 메모리 접근 시 4개의 얼라인된 블록(aligned block)을 판독하는 것이다. 그러나, 이 경우에도 판독하려는 데이터들이 모두 하나의 얼라인된 블록에 포함되지 않으면, 여전히 여러 번의 메모리 접근을 요구한다. 도 1의 경우, 접근할 블록(120)에 포함된 데이터들은 모두 다른 얼라인된 블록에 포함되어 있다. 예를 들어, 접근할 블록(120)의 주소 23은 얼라인된 블록(110)에 포함된다. 이 경우, 접근할 블록(120)에 포함된 데이터들을 모두 접근하기 위해서는 4번의 메모리 접근이 요구된다.
한편, 프로그램 상에서는 2중, 3중 루프가 많이 등장하고, 특히 영상 처리를 수행하는 프로그램의 경우 3중 루프가 많이 사용된다. 따라서, 이러한 3중 루프를 통하여 접근하는 메모리를 효율적으로 접근할 수 있는 방법 및 장치가 요구되고 있다.
본 발명은 프로그램 중에 포함되는 3중 루프(triple loop)에서 접근하는 메모리를 효율적으로 접근하는 방법 및 장치를 제공하는 것을 목적으로 한다.
또한 본 발명은 선형 주소를 3 중 루프에서 접근하는 메모리의 주소 계산에 적합한 3-D 주소로 효율적으로 매핑하는 방법 및 장치를 제공하는 것을 목적으로 한다.
본 발명의 일측에 따른 메모리 접근 방법은, 프로그램 중 3중 루프에 의하여 메모리를 접근하는 코드로부터 a, b, c를 획득하는 단계 - 상기 a는 상기 3중 루프의 가장 안쪽 루프 변수가 가질 수 있는 값의 개수이고, 상기 b는 상기 3중 루프의 가운데 루프 변수가 가질 수 있는 값의 개수이고, 상기 c는 상기 3중 루프의 가장 바깥쪽 루프 변수가 가질 수 있는 값의 개수임 -, 상기 3중 루프에 의하여 접근되는 상기 메모리의 시작 주소를 획득하는 단계, 및 상기 시작 주소 및 소정의 식을 이용하여 상기 3중 루프에 의하여 접근되는 상기 메모리의 a * b * c개의 주소를 획득하는 단계를 포함한다.
본 발명의 또 다른 일측에 따르면, 상기 메모리 접근 방법은, 상기 메모리의 상기 선형 주소 addr을 2-D 주소 (m, n)로 매핑하는 단계, 상기 2-D 주소 (m, n)를 상기 3-D 주소 (x, y, z)로 매핑하는 단계, 상기 3-D 주소 (x, y, z)를 3-D 모듈 (p, q, r)로 매핑하는 단계, 및 상기 3-D 모듈 (p, q, r)로 매핑되는 주소를 순차적으로 정렬한 3-D 모듈 배열 (p, q, r)을 생성하는 단계를 더 포함한다.
본 발명의 또 다른 일측에 따르는 3-D 주소 매핑 방법은, 메모리의 선형 주소 addr을 2-D 주소 (m, n)로 매핑하는 단계 - L은 상기 메모리의 스캔 라인 길이이고, 상기 m = (addr / L)의 몫, 상기 n = (addr / L)의 나머지임 -, 및 상기 2-D 주소 (m, n)를 3-D 주소 (x, y, z)로 매핑하는 단계 - a는 가장 안쪽 루프 변수가 가질 수 있는 값의 개수이고, x = m, y = (n / a)의 몫, z = (n / a)의 나머지임 -를 포함한다.
이하 첨부 도면들 및 첨부 도면들에 기재된 내용들을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명하지만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 2는 본 발명의 설명을 위한 3중 루프를 포함한 프로그램의 일례를 도시한 도면이다.
엠펙(mpeg), H.264 등의 비디오 코덱(video codec)에는 도 2에 도시된 바와 같은 fullsearch() 함수가 많이 사용된다. 도 2에 도시된 바와 같이, fullsearch() 함수는 3중 루프를 가진다. 도 2를 참조하면, 가장 안쪽 루프(210)에서 메모리를 참조할 때는 1-D 패턴을 가진다. 그러나, 가운데 루프(220)까지 포함하여 이중 루프(double loop)를 수행하는 경우 메모리를 참조할 때는 2-D 패턴을 가진다. 그리고, 가장 바깥쪽 루프(230)를 포함하여 3중 루프를 수행하는 경우 메모리를 참조할 때는 3-D 패턴(240)을 가진다. 이러한 fullsearch() 함수 외에도 비디오 처리 프로그램들은 3중 루프를 많이 가지고 있다.
1-D 패턴으로 메모리를 접근할 때는 연속적인 위치의 메모리를 접근하게 되지만, 2-D 패턴이나 3-D 패턴으로 메모리를 접근할 때는 떨어져 있는 메모리의 위치를 접근하여야 한다. 도 2에서 "a[k][j][i]"는 3중 루프로 접근되기 때문에, 서로 떨어져 있는 메모리의 위치를 접근하여야 한다. 본 발명은 이러한 3중 루프에서 참조되는 메모리를 효율적으로 접근하기 위하여 가상적으로 매칭된 3-D 주소를 이용한다.
도 2에서 3중 루프 중 가장 안쪽 루프 변수는 "i"이고, 상기 변수 "i"가 가질 수 있는 값의 개수는 "8"이다. 또한, 도 2에서 3중 루프 중 가운데 루프 변수는 "j"이고, 상기 변수 "j"가 가질 수 있는 값의 개수는 "8"이다. 마찬가지로 도 2에서 3중 루프 중 가장 바깥쪽 루프 변수는 "k"이고, 상기 변수 "k"가 가질 수 있 는 값의 개수는 2이다.
도 3은 본 발명에 따라 메모리의 선형 주소(linear address)를 2-D 주소로 매핑하는 동작을 설명하기 위한 도면이다.
본 발명은 우선 메모리의 선형 주소 addr을 2-D 주소 (m, n)으로 매핑한다. 매핑 방법은 식 1에 따른다.
[식 1]
Figure 112007015590012-pat00001
L은 메모리의 스캔 라인 길이(scan line length)인데, 메모리를 판독할 때의 폭(width)을 의미한다. 도 3에서 스캔 라인 길이는 16이다. 1-D 주소(선형 주소)로 표시된 메모리(310)를 가상적으로 2-D 주소로 변환하여 2-D 주소로 표시한 메모리(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에서 안쪽 이중 루프에 의하여 접근되는 메모리 위치들을 메모리(320)에 얼라인하여 표시하였다. 가장 바깥쪽 루프 변수가 첫 번째 값을 가질 때 안쪽 이중 루프에 의하여 접근되는 메모리는 (0, 0), (0, 1), (1, 0), (1, 1)이 된다. 그리고, 가장 바깥쪽 루프 변수가 두 번째 값을 가질 때 안쪽 이중 루프에 의하여 접근되는 메모리는 (0, 2), (0, 3), (1, 2), (1, 3)이 된다.
도 4는 본 발명에 따라 메모리의 2-D 주소를 3-D 주소로 매핑하는 동작을 설명하기 위한 도면이다.
본 발명은 선형 주소 addr로부터 매핑된 2-D 주소 (m, n)을 가상적으로 3-D 주소 (x, y, z)로 매핑한다. 따라서, 결국 선형 주소 addr은 3-D 주소 (x, y, z)로 매핑된다. 2-D 주소를 3-D 주소로 매핑하는 방법은 식 2에 따른다.
[식 2]
Figure 112007015590012-pat00002
2-D 주소로 표시된 메모리(410)를 가상적으로 3-D 주소로 변환하여 3-D 주소로 표시한 메모리(420)가 도 4에 도시되어 있다. 도 4의 실시예는 3중 루프 중 가장 안쪽 루프 변수가 가질 수 있는 값의 수 a는 2인 경우이다. 따라서, 2-D 주소 (0, 6)은 3-D 주소 (0, 3, 0)으로 매핑되고, 2-D 주소 (2, 10)은 3-D 주소 (2, 5, 0)으로 매핑된다.
도 5는 본 발명에 따라 3-D 주소를 3-D 모듈(3-D module)로 매핑하는 동작을 설명하기 위한 도면이다.
본 발명은 3-D 주소 (x, y, z)를 3-D 모듈 (p, q, r)로 매핑한다. 3-D 주소를 3-D 모듈로 매핑하는 방법은 식 3에 따른다.
[식 3]
Figure 112007015590012-pat00003
3-D 주소로 표시된 메모리(510)를 3-D 모듈로 매핑하여 3-D 모듈로 표시한 메모리(520)가 도 5에 도시되어 있다. 도 5의 실시예에서 3중 루프 중 가장 안쪽 루프 변수가 가질 수 있는 값의 수 a가 2이다. 또한, 3중 루프 중 가운데 루프 변수가 가질 수 있는 값의 수 b는 2이고, 3중 루프의 가장 바깥쪽 루프 변수가 가질 수 있는 값의 수 c도 2이다. 따라서, 도 5에서 3-D 주소 (0, 2, 0)은 3-D 모듈 (0, 0, 0)으로 매핑되고, 3-D 주소 (3, 4, 0)은 3-D 모듈 (1, 0, 0)으로 매핑된다.
도 6의 (a) 및 (b)는 본 발명에 따라 3-D 모듈 배열(3-D module array)를 생성하는 동작을 설명하기 위한 도면이다.
본 발명에서는 생성된 3-D 모듈 (p, q, r)을 이용하여, 3-D 모듈 (p, q, r)로 매핑되는 주소를 순차적으로 정렬한 3-D 모듈 배열 (p, q, r)을 생성한다. 도 6a 및 도 6b는 도 5에서 매핑된 3-D 모듈을 이용하여 생성된 3-D 모듈 배열의 일부를 도시한다.
도 6의 (a)는 3-D 모듈 배열 (0, 0, 0)을 도시한 것이다. 3-D 모듈 배열 (0, 0, 0)은 3-D 모듈 (0, 0, 0)으로 매핑되는 주소를 순차적으로 정렬한 것이다. 상기 주소는 선형 주소(1-D 주소)일 수도 있고, 2-D 주소 또는 3-D 주소일 수도 있다. 도 6a서는 상기 주소가 3-D 주소인 경우를 도시하였다. 도 5를 참조하면 3-D 모듈 (0, 0, 0)으로 매핑되는 3-D 주소는 (0, 0, 0), (0, 2, 0), (0, 4, 0), (0, 6, 0) 등의 순이 된다. 만약 2-D 주소로 표시한다면, 3-D 모듈 (0, 0, 0)으로 매핑되는 2-D 주소는 (0, 0), (0, 4), (0, 8), (0, 12) 등이다. 만약 1-D 주소로 표시한다면, 3-D 모듈 (0, 0, 0)으로 매핑되는 1-D 주소는 0, 4, 8, 12 등이다.
도 6의 (b)는 3-D 모듈 배열 (0, 1, 1)을 도시한 것이다. 3-D 모듈 배열 (0, 1, 1)은 3-D 모듈 (0, 1, 1)로 매핑되는 주소를 순차적으로 정렬한 것이다. 도 5를 참조하면 3-D 모듈 (0, 1, 1)로 매핑되는 3-D 주소는 (0, 1, 1), (0, 3, 1), (0, 5, 1), (0, 7, 1) 등의 순이 된다.
도 7은 본 발명에 따라 3중 루프에 의하여 접근되는 메모리 블록의 주소를 얻는 동작을 설명하기 위한 도면이다.
먼저, 3중 루프에 의하여 접근되는 메모리의 시작 주소를 3-D 주소로 매핑한다. 3중 루프에 의하여 접근되는 메모리의 시작 주소는 선형 주소이므로, 상기 선형 주소를 3-D 주소로 매핑하는 동작은 식 1 및 식2를 이용하여 수행된다. 예를 들어, 도 3 내지 도 4에서, 3중 루프에 의하여 접근되는 메모리의 시작 주소가 "23"이면, 상기 1-D 주소 "23"은 식 1 및 식 2에 의하여 3-D 주소 (1, 3, 1)로 매핑된다.
그 다음 아래 식 4를 이용하여, a * b * c 블록을 접근한다. 여기서 a는 3중 루프의 가장 안쪽 루프 변수가 가질 수 있는 값의 개수이고, b는 3중 루프의 가운데 루프 변수가 가질 수 있는 값의 개수이고, c는 3중 루프의 가장 바깥쪽 루프 변수가 가질 수 있는 값의 개수이다. L은 메모리의 스캔 라인 길이이다.
[식 4]
Figure 112007015590012-pat00004
그러면, Ap ,q,r (x1, y1, z1)은 시작 주소의 3-D 주소가 (x1, y1, z1)인 a * b * c 블록에서 3-D 모듈 (p, q, r)로 매핑된 주소가 상기 3-D 모듈 배열 (p, q, r)에서 몇 번째에 대응하는지의 값을 나타낸다. 보다 구체적으로는 Ap ,q,r (x1, y1, z1)가 "f"의 값을 가지면, 시작 주소의 3-D 주소가 (x1, y1, z1)인 a * b * c 블록에서 3-D 모듈 (p, q, r)로 매핑된 주소는 상기 3-D 모듈 배열 (p, q, r)에서 "f+1"번째의 값이 된다.
도 7의 실시예에서, 프로그램 상의 3중 루프에 포함된 가장 안쪽 루프 변수, 가운데 루프 변수 및 가장 바깥쪽 루프 변수가 가질 수 있는 값의 개수는 모두 2이다. 그리고, a * b * c 블록의 시작 3-D 주소는 3중 루프에 의하여 접근되는 메모리의 시작 주소인 "23"에 매핑되는 3-D 주소 (1, 3, 1)로 가정한다. 그러면, 시작 주소 "23" (3-D 주소로 매핑하면 (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-D 주소 (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-D 주소가 (1, 3, 1)인 2 * 2 * 2 블록에서 3-D 모듈 (0, 1, 1)로 매핑된 주소는 3-D 모듈 배열 (0, 1, 1)에서 6(=5+1)번째가 된다. 도 6의 (b)를 참조하면, 3-D 모듈 배열 (0, 1, 1)에서 6번째는 3-D 주소가 (2, 3, 1)인 메모리이다.
마찬가지로, 식 1을 이용하여 (p, q, r)에 (0, 0, 0)을 넣으면, A0,0,0(1, 3, 1) = (0 + 1) * 4 + 1 + 1 + 0 = 6이 된다. 즉, 시작 주소의 3-D 주소가 (1, 3, 1)인 2 * 2 * 2 블록에서 3-D 모듈 (0, 0, 0)으로 매핑된 주소는 3-D 모듈 배열 (0, 0, 0)에서 7(=6+1)번째가 된다. 도 6의 (a)를 참조하면, 3-D 모듈 배열 (0, 0, 0)에서 7번째는 3-D 주소가 (2, 4, 0)인 메모리이다.
특히, 도 7에서 접근할 블록(710)은 얼라인되지 아니하였지만, 본 발명에 따르면 하나의 블록으로 접근된다. 즉, 본 발명에 따르면, 메모리의 얼라인먼트(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-D 주소로 매핑하고, 상기 3-D 주소에 기초하여 3-D 모듈 어레이를 계산한다. 이에 관하여는 도 3 내지 도 6에서 상세히 설명하였다. 그리고, 상기 시작 주소로부터 상기 시작 주소에 매핑되는 3-D 주소 (x1, y1, z1)을 구한다. 그리고, 0 <= p < c, 0 <= q < b, 0 <= r < c인 모든 p, q, r의 조합에 대하여 상기 식 4를 이용하여 3-D 주소 (x1, y1, z1)를 시작 주소로 하는 a * b * c 블록에 포함되는 메모리의 주소를 획득한다.
도 9는 본 발명에 따라 선형 주소 메모리(LAM: linear addressable memory)를 가상적으로 3-DAM(3-D addressable memory)로 매핑하는 순서를 도시한 흐름도이다.
단계(910)에서 메모리의 선형 주소 addr은 2-D 주소 (m, n)으로 매핑된다. 매핑 방법은 식 1에 따른다. 이에 관하여는 도 3에 상세히 설명되어 있다.
단계(920)에서 상기 2-D 주소 (m, n)은 3-D 주소 (x, y, z)로 매핑된다. 따라서, 결국 선형 주소 addr은 3-D 주소 (x, y, z)로 매핑된다. 2-D 주소를 3-D 주소로 매핑하는 방법은 식 2에 따른다. 이에 관하여는 도 4에 상세히 설명되어 있다.
단계(930)에서 상기 3-D 주소 (x, y, z)는 3-D 모듈 (p, q, r)로 매핑된다. 3-D 주소를 3-D 모듈로 매핑하는 방법은 식 3에 따른다. 이에 관하여는 도 5에 상세히 설명되어 있다.
단계(940)에서 생성된 3-D 모듈 (p, q, r)을 이용하여, 3-D 모듈 (p, q, r)로 매핑되는 주소를 순차적으로 정렬한 3-D 모듈 배열 (p, q, r)이 생성된다. 이에 관하여는 도 6에 상세히 설명되어 있다.
상기에서 설명한 본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
도 10은 본 발명의 가상 3-D 주소 매핑을 이용하여 선형 주소 메모리(LAM)에 접근하는 3DAMC(3-Dimensional Accessible Memory Controller)의 동작을 설명하기 위한 도면이다.
본 발명의 동작을 수행하는 3DMAC(3-Dimensional Accessible Memory Controller)(1020)가 하드웨어로 구현될 수 있다. 이 경우, 3DMAC(1020)은 프로세싱 장치(1030)와 선형 접근 메모리(LAM: Linear Addressable Memory)(1010)의 사이에 위치하며, 3중 루프에 의하여 접근되는 코드에 대하여 본 발명의 3-D 주소 매핑을 이용하여 블록 단위로 메모리에 접근할 수 있다. 3DMAC(1020)에 의하여 수행되는 동작은 도 8 내지 도 9에서 설명된 동작들의 전부 또는 일부가 될 수 있다.
이상 3중 루프의 경우에 대해서만 설명하였지만, 본 발명은 4중 루프 이상에도 적용될 수 있다. 이 경우, 안쪽 3중 루프에 대하여 본 발명을 적용함으로써 4 중 루프 이상도 효율적으로 메모리 접근을 할 수 있다.
본 발명에 따르면, 프로그램 중에 포함되는 3중 루프(triple loop)에서 접근하는 메모리를 효율적으로 접근하는 방법 및 장치가 제공된다.
또한 본 발명에 따르면 선형 주소를 3 중 루프에서 접근하는 메모리의 주소 계산에 적합한 3-D 주소로 효율적으로 매핑하는 방법 및 장치가 제공된다.
또한 본 발명에 따르면, 메모리의 얼라인먼트(alignment)와 무관하게 3중 루프에 의하여 접근되는 메모리를 블록 단위로 접근할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (12)

  1. 프로그램 중 3중 루프에 의하여 메모리를 접근하는 코드로부터 a, b, c를 획득하는 단계 - 상기 a는 상기 3중 루프의 가장 안쪽 루프 변수가 가질 수 있는 값의 개수이고, 상기 b는 상기 3중 루프의 가운데 루프 변수가 가질 수 있는 값의 개수이고, 상기 c는 상기 3중 루프의 가장 바깥쪽 루프 변수가 가질 수 있는 값의 개수임 -;
    상기 메모리의 주소들을 복수의 모듈들로 분할하는 단계;
    상기 3중 루프에 의하여 접근되는 데이터의 상기 메모리 내의 시작 주소를 획득하는 단계; 및
    상기 복수의 모듈들 각각의 인덱스 및 상기 시작 주소를 이용하여 상기 3중 루프에 의하여 접근되는 상기 데이터의 상기 메모리 내의 a * b * c개의 주소를 획득하는 단계
    를 포함하는 것을 특징으로 하는 메모리 접근 방법.
  2. 제1항에 있어서,
    상기 메모리의 주소들을 복수의 모듈들로 분할하는 단계는
    상기 메모리의 선형 주소 addr을 3-D 주소 (x, y, z)로 매핑하는 단계
    를 포함하는 것을 특징으로 하는 메모리 접근 방법.
  3. 제2항에 있어서, 상기 메모리의 선형 주소 addr을 3-D 주소 (x, y, z)로 매핑하는 단계는,
    상기 메모리의 상기 선형 주소 addr을 2-D 주소 (m, n)로 매핑하는 단계; 및
    상기 2-D 주소 (m, n)를 상기 3-D 주소 (x, y, z)로 매핑하는 단계
    를 포함하는 것을 특징으로 하는 메모리 접근 방법.
  4. 제3항에 있어서,
    m = (addr / L)의 몫;
    n = (addr / L)의 나머지;
    L은 상기 메모리의 스캔 라인 길이
    인 것을 특징으로 하는 메모리 접근 방법.
  5. 제3항에 있어서,
    x = m;
    y = (n / a)의 몫;
    z = (n / a)의 나머지;
    인 것을 특징으로 하는 메모리 접근 방법.
  6. 제2항에 있어서,
    상기 메모리의 주소들을 복수의 모듈들로 분할하는 단계는
    상기 3-D 주소 (x, y, z)를 a * b * c 개의 3-D 모듈 (p, q, r)로 매핑하는 단계
    를 더 포함하고,
    상기 3중 루프에 의하여 접근되는 상기 메모리의 a * b * c 개의 주소를 획득하는 단계는
    상기 시작 주소를 이용하여 상기 a * b * c 개의 3-D 모듈들 각각의 인덱스를 생성하는 단계; 및
    상기 생성된 인덱스를 이용하여 상기 a * b * c 개의 3-D 모듈들 각각으로부터 하나씩의 주소를 획득하는 단계
    를 포함하는 것을 특징으로 하는 메모리 접근 방법.
  7. 제6항에 있어서,
    p = x mod c;
    q = y mod b;
    r = z mod c;
    인 것을 특징으로 하는 메모리 접근 방법.
  8. 제6항에 있어서,
    상기 메모리의 주소들을 복수의 모듈들로 분할하는 단계는
    상기 3-D 모듈 (p, q, r)로 매핑되는 주소를 순차적으로 정렬한 3-D 모듈 배열 (p, q, r)을 생성하는 단계
    를 더 포함하는 것을 특징으로 하는 메모리 접근 방법.
  9. 제8항에 있어서,
    상기 시작 주소를 이용하여 상기 a * b * c 개의 3-D 모듈들 각각의 인덱스를 생성하는 단계는 하기 수학식 1을 이용하여 상기 인덱스를 생성하는 메모리 접근 방법.
    [수학식 1]
    Figure 112008045155361-pat00005
    여기서, Ap,q,r (x1, y1, z1)은 시작 주소의 3-D 주소가 (x1, y1, z1)인 a * b * c 블록에서 3-D 모듈 (p, q, r)로 매핑된 주소가 상기 3-D 모듈 배열 (p, q, r)에서 몇 번째인지의 값.
  10. 제9항에 있어서, 상기 3중 루프에 의하여 접근되는 상기 데이터의 상기 메모리 내의 a * b * c개의 주소를 획득하는 상기 단계는,
    상기 메모리의 상기 시작 주소에 매핑되는 3-D 주소 (x1, y1, z1)을 획득하는 단계; 및
    0 <= p < c, 0 <= q < b, 0 <= r < c인 모든 p, q, r의 조합에 대하여 상기 소정의 식을 이용하여 3-D 주소 (x1, y1, z1)를 시작 주소로 하는 a * b * c 블록에 포함되는 메모리의 주소를 획득하는 단계
    를 포함하는 것을 특징으로 하는 메모리 접근 방법.
  11. 메모리의 선형 주소 addr을 2-D 주소 (m, n)로 매핑하는 단계 - L은 상기 메모리의 스캔 라인 길이이고, 상기 m = (addr / L)의 몫, 상기 n = (addr / L)의 나머지임 -; 및
    상기 2-D 주소 (m, n)를 3-D 주소 (x, y, z)로 매핑하는 단계 - a는 가장 안쪽 루프 변수가 가질 수 있는 값의 개수이고, x = m, y = (n / a)의 몫, z = (n / a)의 나머지임 -
    를 포함하는 것을 특징으로 하는 3-D 주소 매핑 방법.
  12. 제1항 내지 제11항 중 어느 하나의 방법을 실행하는 프로그램을 기록한 컴퓨터 판독 가능 기록매체.
KR1020070017775A 2007-02-22 2007-02-22 3-d 주소 매핑을 이용한 메모리 접근 방법 KR100868451B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020070017775A KR100868451B1 (ko) 2007-02-22 2007-02-22 3-d 주소 매핑을 이용한 메모리 접근 방법
EP07110820A EP1962190A3 (en) 2007-02-22 2007-06-21 Memory access method using three dimensional address mapping
US11/828,440 US7779225B2 (en) 2007-02-22 2007-07-26 Memory access method using three dimensional address mapping
JP2007201534A JP4837634B2 (ja) 2007-02-22 2007-08-02 3次元アドレスマッピングを用いたメモリアクセス方法

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
KR20080078131A KR20080078131A (ko) 2008-08-27
KR100868451B1 true KR100868451B1 (ko) 2008-11-11

Family

ID=38819814

Family Applications (1)

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

Country Status (4)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101154286B1 (ko) 2011-12-30 2012-06-14 (주)케이닷컴 동시 다중 접근이 가능한 메모리 제어장치

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147210A (ja) * 1994-11-22 1996-06-07 Oki Electric Ind Co Ltd ビットマップメモリ装置
JP2004013389A (ja) 2002-06-05 2004-01-15 Sony Corp データ転送システム、データ転送方法
KR20050022200A (ko) * 2003-08-25 2005-03-07 삼성전자주식회사 넓은 메모리 밴드위스를 갖는 디지털 신호 처리 장치 및그 메모리 맵핑 방법

Family Cites Families (10)

* 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
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
US7073041B2 (en) * 2002-10-30 2006-07-04 Motorola, Inc. Virtual memory translation unit for multimedia accelerators

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147210A (ja) * 1994-11-22 1996-06-07 Oki Electric Ind Co Ltd ビットマップメモリ装置
JP2004013389A (ja) 2002-06-05 2004-01-15 Sony Corp データ転送システム、データ転送方法
KR20050022200A (ko) * 2003-08-25 2005-03-07 삼성전자주식회사 넓은 메모리 밴드위스를 갖는 디지털 신호 처리 장치 및그 메모리 맵핑 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101154286B1 (ko) 2011-12-30 2012-06-14 (주)케이닷컴 동시 다중 접근이 가능한 메모리 제어장치

Also Published As

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

Similar Documents

Publication Publication Date Title
KR100868451B1 (ko) 3-d 주소 매핑을 이용한 메모리 접근 방법
EP3002732B1 (en) Method and apparatus for generating and traversing acceleration structure
JP4280270B2 (ja) 幾何プリミティブのインデックスを外す方法、ラスタ化装置、コンピュータ可読媒体
US9256536B2 (en) Method and apparatus for providing shared caches
KR101925089B1 (ko) 네비게이션 장치를 위한 데이터베이스, 지형의 3차원 표현을 출력하는 방법, 및 데이터베이스를 생성하는 방법
EP3147867A1 (en) Apparatus for and method of traversing tree
JP4942517B2 (ja) 衝突感知装置及び方法
US7991240B2 (en) Methods, systems and apparatuses for modeling optical images
BR102012006951B1 (pt) dispositivo de navegação, método de determinação de coordenada de altitude e método de geração de banco de dados
US20080018664A1 (en) Method and system for tile binning using half-plane edge function
US20110307459A1 (en) System, data structure, and method for simultaneously retrieving multi-dimensional data with zero contention
CN106648939A (zh) 用于进程间资源共享的方法与设备
US9483843B2 (en) Method and system for expediting bilinear filtering
Sramek Fast surface rendering from raster data by voxel traversal using chessboard distance
US20070103480A1 (en) Information processing apparatus, information processing method, and program
US9588245B2 (en) Efficient wavefield extrapolation in anisotropic media
CN103390275B (zh) 动态图像拼接的方法
US10460502B2 (en) Method and apparatus for rendering object using mipmap including plurality of textures
CN108984421A (zh) 一种信息提示方法及装置
CN109960534A (zh) 设备探测方法、装置、存储介质以及电子设备
KR20130142661A (ko) 시프트 알고리즘을 이용하여 대용량 소스 이미지의 특징점 정보를 추출하는 장치 및 방법
CN111882482A (zh) 图形分块数据读写方法、装置、设备及存储介质
CN105335296B (zh) 一种数据处理方法、装置及系统
KR20190110218A (ko) 동적 가상객체 구현 시스템 및 방법
EP2453404A1 (en) Computing apparatus and method using X-Y stack memory

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121016

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131022

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141022

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20151020

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20161018

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20171019

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20181024

Year of fee payment: 11