KR20110040103A - Apparatus for accessing multi-bank memory - Google Patents
Apparatus for accessing multi-bank memory Download PDFInfo
- Publication number
- KR20110040103A KR20110040103A KR1020090097244A KR20090097244A KR20110040103A KR 20110040103 A KR20110040103 A KR 20110040103A KR 1020090097244 A KR1020090097244 A KR 1020090097244A KR 20090097244 A KR20090097244 A KR 20090097244A KR 20110040103 A KR20110040103 A KR 20110040103A
- Authority
- KR
- South Korea
- Prior art keywords
- bank
- address
- memory access
- stride
- bank memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Image Input (AREA)
Abstract
Description
다중 뱅크 메모리(multi-bank memory)의 액세스 제어 기술이 개시된다. Disclosed is an access control technique of multi-bank memory.
멀티-코어(multi-core), 멀티 포트 메모리 액세스 구조(multi-port memory access architecture)를 채택하는 최근의 디지털 신호 처리기(Digital Signal Processor)는 멀티 뱅크 메모리(multi-bank memory) 구조를 통해 메모리 간섭(memory conflict)을 줄이고 있다. 멀티 뱅크 구조에 있어서 하나의 메모리를 다수의 뱅크들로 분할하는 방식에는 주소 블럭 방식이나, 뱅크의 기본 데이터 폭(data width) 단위의 인터리브 할당(interleaved allocation) 방식이 있다. Recent digital signal processors, which adopt a multi-core, multi-port memory access architecture, have memory interference through a multi-bank memory architecture. (memory conflict) is being reduced. In a multi-bank structure, a method of dividing a memory into a plurality of banks includes an address block method or an interleaved allocation method in units of a basic data width of a bank.
주소 블럭 방식은 주소 블럭별로 뱅크를 할당하므로 각 메모리 요구 포트(memory request port)가 액세스하는 주소 영역이 정해져 있는 경우에은 효과적이다. 그러나 복수의 포트가 동일한 주소 영역을 액세스하는 경우 메모리 간섭(memory conflict)이 발생한다. 인터리브 방식의 경우 인접한 연속된 주소 값들이 서로 다른 뱅크에 할당된다. 따라서 메모리의 연속된 번지를 동시에 액세스하 는 경우 효과적이다. 예를 들어 코어가 4개의 연속된 바이트를 하나의 워드로 액세스하는 경우 메모리 제어기는 각각의 뱅크에서 하나씩 바이트를 액세스함으로써 하나의 클럭 안에 4개의 바이트가 액세스될 수 있다. Since the address block method allocates banks for each address block, it is effective when the address area to which each memory request port is accessed is determined. However, memory conflicts occur when multiple ports access the same address area. In the interleaved manner, adjacent consecutive address values are allocated to different banks. Therefore, it is effective when accessing consecutive addresses of memory at the same time. For example, if the core accesses four consecutive bytes in one word, the memory controller can access four bytes in one clock by accessing one byte in each bank.
행 방향으로 연속된 주소를 가진 복수의 기억 장소를 동시에 액세스할 수 있을 뿐 아니라 열 방향으로 연속된 주소를 가진 복수의 기억 장소를 동시에 액세스하는 것이 가능한 다중 뱅크 메모리 구조를 제안한다. A multi-bank memory structure capable of simultaneously accessing a plurality of storage locations having consecutive addresses in the row direction and simultaneously accessing a plurality of storage locations having consecutive addresses in the column direction is proposed.
상기 목적을 달성하기 위한 일 양상에 따르면, 프로세서에 의해 실행 시간(run time) 중에 설정되는 스트라이드 레지스터가 구비된다. 메모리 제어기는 이 스트라이드 레지스터에 의해 폭이 정해지는 논리 블럭(logical block)에 대해 행과 열 방향으로 인터리브 방식으로 액세스를 제어한다. According to one aspect for achieving the above object, there is provided a stride register set during a run time by a processor. The memory controller controls access in a row and column direction interleaved to a logical block whose width is defined by this stride register.
또다른 일 양상에 따르면, 주소 변환부는 열 방향으로 인접한 연속된 데이터들이 정수배 만큼, 특히 2의 거듭제곱 만큼 이격된 뱅크들에 할당될 수 있다. According to another aspect, the address translator may be allocated to banks spaced adjacent to each other in the column direction by integer multiples, in particular, by powers of two.
이 같은 양상들에 따라, 프레임 메모리를 행과 열 방향으로 액세스하는 영상 처리 분야에서 메모리 대역폭(bandwidth)을 증가시킬 뿐 아니라 프로세서 코어가 필요로 하는 데이터를 메모리 제어기가 하드웨어적으로 정렬하여 전달하므로 팩킹과 언패킹(pack, unpack) 등의 데이터 정렬에 소오되는 코어 싸이클(core cycle)을 줄일 수 있다. According to these aspects, in addition to increasing memory bandwidth in image processing applications that access frame memory in row and column directions, the memory controller arranges and delivers data required by the processor core in a hardware-packed manner. This reduces the core cycles involved in sorting data such as packs and unpacks.
전술한, 그리고 추가적인 본 발명의 양상들은 후술하는 실시예를 통해 더욱 명확해질 것이다. 이하에서는 이러한 양상들을 첨부된 도면을 참조하여 기술되는 바람직한 실시예들을 통해 상세히 설명한다. The foregoing and further aspects of the present invention will become apparent from the following examples. Hereinafter, these aspects will be described in detail with reference to preferred embodiments described with reference to the accompanying drawings.
도 1은 일 실시예에 따른 다중 뱅크 메모리 액세스 장치가 채택된 신호 처리 시스템의 주요부를 개략적으로 도시한다. 도시된 바와 같이, 신호 처리 시스템은 개별적으로 액세스 가능한 다중 뱅크 메모리(300)와, 스트라이드(stride) 값을 기억하는 스트라이드 레지스터(700)와, 이 스트라이드 값에 의해 폭이 정해지는 논리 블럭(logical block)에 대해 행과 열 방향으로 인터리브 방식으로 액세스를 제어하는 주소 변환부(100)를 포함한다. 1 schematically illustrates a main part of a signal processing system employing a multi-bank memory access apparatus according to an embodiment. As shown, the signal processing system includes an individually accessible
도시된 실시예에 있어서, 주소 변환부(100)를 통해 다중 뱅크 메모리(300)를 액세스하는 프로세서(500)는 멀티 코어 프로세서(multi-core processor)로, 2 이상의 프로세서 코어(510, 530, 550)를 포함할 수 있다. 다중 뱅크 메모리(300)를 액세스하는 프로세서 코어들(510,530)마다 각각 메모리 포트(12,14)가 할당된다. 도시된 실시예에서 각 포트(12,14)를 통해 프로세서 코어들(510, 530)이 액세스하는 워드폭(word width)은 4바이트, 즉 32비트이다. 그러나 본 발명이 이에 한정되지 않음은 당업자에게 자명하다. In the illustrated embodiment, the
도시된 실시예에 있어서, 다중 뱅크 메모리(300)는 23=8개의 뱅크들(311~318)로 구성되며, 주소 변환부(100)가 대응하는 포트들(21~28)을 통해 각각의 뱅크들을 독립적으로 액세스하는 것이 가능한 구조를 갖는다. 주소 변환부(100)는 각각의 메모리 뱅크(311~318)를 바이트 단위로 액세스할 수 있다. In the illustrated embodiment, the
일 양상에 따르면, 메모리 액세스 장치는 스트라이드 레지스터(700)를 포함한다. 스트라이드 레지스터(700)는 제 1 프로세서 코어(550)에 의해 실행 시간(run time) 중에 그 값이 설정된다. 주소 변환부(100)는 스트라이드 레지스터(700)에 설정된 스트라이드 값에 따라 다중 뱅크 메모리(300)를 달리 액세스한다. According to one aspect, the memory access device includes a
영상 처리에 있어서, 프레임 메모리에 저장된 데이터는 행 방향으로는 물론 열 방향으로 순차적으로 액세스되는 경우가 흔히 있다. 예를 들어 영상의 필터링은 행 방향과 열 방향으로 동시에 진행될 수 있다. 나아가 영상 압축이나 필터링에 있어서, 프레임 메모리에 저장된 데이터들은 흔히 2×2, 4×4, 8×8 혹은 16×16 과 같은 블럭 단위로 액세스된다. 동일한 뱅크에 저장된 열 방향으로 인접하여 연속된 주소 상의 데이터들의 엑세스는 지연을 초래하며, 이는 메모리 액세스 대역폭의 감소를 의미한다. In image processing, data stored in the frame memory is frequently accessed sequentially in the row direction as well as the column direction. For example, filtering of an image may be performed simultaneously in a row direction and a column direction. Furthermore, in image compression or filtering, data stored in frame memories are often accessed in block units such as 2x2, 4x4, 8x8, or 16x16. Access of data on adjacent consecutive addresses in the column direction stored in the same bank results in a delay, which means a reduction in memory access bandwidth.
일 실시예에 있어서, 제 1 프로세서 코어(550)는 실행 시간 중에 현재 처리 하는 영상 데이터의 프레임 폭을 스트라이드 레지스터(700)를 통해 설정한다. 주소 변환부(100)는 스트라이드 레지스터(700)에 저장된 스트라이드 값으로부터 현재 처리하는 영상의 프레임 폭을 파악하고, 메모리 기록 및 읽기를 제어함에 있어서 행과 열 방향으로 인터리브된 방식을 적용한다. In one embodiment, the
도 2는 또다른 실시예에 따른 다중 뱅크 메모리 액세스 장치가 채택된 신호 처리 시스템의 주요부를 개략적으로 도시한다. 도시된 실시예에 있어서, 도 1에 도시된 실시예와 대응되는 유사한 구성요소들은 동일한 부호로 참조된다. 도시된 실시예에 있어서, 프로세서(500)는 프로그램을 실행함에 있어서 행렬 방향의 액세스가 필요한 부분은 제2, 제3 프로세서 코어들(510,530)이 처리하고, 그 이외의 부분은 제4, 제5, 프로세서 코어들(570,590)이 처리한다. 제 4,5 프로세서 코어들(570, 590)은 포트들(11,13)을 통해 메모리 뱅크(321,322)를 액세스한다. 메모리 액세스 제어부(130)는 코어측 포트들(11,13)로부터의 액세스 요구에 따라 메모리 뱅크측 포트들(31,33)을 통해 블럭 할당 방식 혹은 인터리브 할당 방식과 같은 공지된 방법 중 하나로 액세스한다. Figure 2 schematically shows the main part of a signal processing system employing a multi-bank memory access apparatus according to another embodiment. In the illustrated embodiment, similar components corresponding to those shown in FIG. 1 are referred to by the same reference numerals. In the illustrated embodiment, the
제2, 3 프로세서 코어들(510, 530)은 포트들(12,14)을 통해 메모리 뱅크(311~318)를 액세스한다. 주소 변환부(150)는 코어측 포트(12,14)로부터의 액세스 요구에 대해 뱅크측 포트(21~28)를 통해 다중 뱅크 메모리(311~318)를 액세스한다. 주소 변환부(150)는 스트라이드 레지스터(700)에 저장된 스트라이드 값에 의해 폭이 정해지는 논리 블럭(logical block)에 대해 행과 열 방향으로 인터리브 방식으로 액세스를 제어한다. The second and
행렬 방향의 액세스가 필요한 시점 이전에, 제 1 프로세서 코어(550)는 스트라이드 레지스터(700)에 현재 처리하는 프레임 메모리의 폭에 대응하는 값을 스트라이드 값으로 기록하고, 프레임 데이터를 직접 메모리 액세스(DMA)를 이용하여 외부 포트(16)로부터 메모리 뱅크(311~318)로 기록하도록 제어한다. 이에 따라 불필요한 지연이 초래돼지 않고, 프레임 메모리에 대한 행과 열 방향의 고속 처리가 이전의 처리에 이어서 즉시 행해질 수 있다. 이후의 처리 과정은 이전의 실시예와 유사하므로 상세한 설명은 생략한다. Prior to the point in time in which matrix direction access is required, the
도 3은 또다른 실시예에 따른 다중 뱅크 메모리 액세스 장치가 채택된 신호 처리 시스템의 주요부를 개략적으로 도시한다. 도시된 실시예에 있어서, 도 2에 도시된 실시예와 대응되는 유사한 구성요소들은 동일한 부호로 참조된다. 도시된 실시예에 있어서, 프로세서(500)는 프로그램의 실행 시간(runtime) 중에 행렬 방향의 액세스가 필요한 경우 동작 선택부(110)에 선택신호(18)를 출력하여, 메모리 액세스 제어부(130)와, 주소 변환부(150) 중 주소 변환부(150)가 동작하도록 선택한다. 프로세서(500)는 프로그램의 실행 시간 중에 선택신호(18)를 출력하여 동작 선택부(110)로 하여금 메모리 액세스 제어부(130)와 주소 변환부(150) 중 하나가 동작하도록 선택할 수 있다. Figure 3 schematically shows the main part of a signal processing system employing a multi-bank memory access apparatus according to another embodiment. In the illustrated embodiment, similar elements corresponding to the embodiment shown in FIG. 2 are referred to by the same reference numerals. In the illustrated embodiment, the
메모리 액세스 제어부(130)는 코어측 포트들(12,14)로부터의 액세스 요구에 따라 메모리 뱅크측 포트들(31,33)을 통해 블럭 할당 방식 혹은 인터리브 할당 방식과 같은 공지된 방법 중 하나로 액세스한다. 이 같은 선택 신호(18)는 프로세서 코어(550)에 의해 생성된다. The memory
주소 변환부(150)는 코어측 포트(12,14)로부터의 액세스 요구에 대해 뱅크측 포트(21~28)를 통해 다중 뱅크 메모리(311~318)를 액세스한다. 주소 변환부(150)는 스트라이드 레지스터(700)에 저장된 스트라이드 값에 의해 폭이 정해지는 논리 블럭(logical block)에 대해 행과 열 방향으로 인터리브 방식으로 액세스를 제어한다. The
행렬 방향의 액세스가 필요한 시점 이전에, 제 1 프로세서 코어(550)는 스트라이드 레지스터(700)에 현재 처리하는 프레임 메모리의 폭에 대응하는 값을 스트라이드 값으로 기록하고, 프레임 데이터를 직접 메모리 액세스(DMA)를 이용하여 외부 포트(16)로부터 메모리 뱅크(311~318)로 기록하도록 제어한다. 이에 따라 불필요한 지연이 초래돼지 않고, 프레임 메모리에 대한 행과 열 방향의 고속 처리가 이전의 처리에 이어서 즉시 행해질 수 있다. 이후의 처리 과정은 이전의 실시예와 유사하므로 상세한 설명은 생략한다. Prior to the point in time in which matrix direction access is required, the
도 4는 일 실시예에 따른 다중 뱅크 메모리 액세스 장치가 적용된 신호 처리 시스템의 주요부를 보다 상세히 도시한다. 도시된 바와 같이, 일 실시예에 따른 다중 뱅크 메모리 액세스 장치는 외부에서 입력되는 메모리 액세스 주소를 상기 스트라이드 값에 의해 정해지는 논리 블럭에서의 2차원 주소 값으로 변환하는 2차원 주소 변환부(170)와, 이 2차원 주소 변환부에서 변환된 2차원 주소 값으로부터 다중 뱅크 중 하나의 뱅크 선택신호와, 뱅크 내 주소 값을 출력하는 뱅크 선택부(190)를 포함하는 주소 변환부(100)를 포함한다. Figure 4 illustrates in more detail the principal parts of a signal processing system employing a multi-bank memory access device according to one embodiment. As shown, the multi-bank memory access apparatus according to an embodiment is a two-dimensional
일 실시예에 따른 2차원 주소 변환부(170)는 입력되는 주소값 ADDR와, 스트 라이드 값 stride 에 대해, The two-dimensional
(1) y0×stride <= ADDR < (y0+1)×stride(1) y0 × stride <= ADDR <(y0 + 1) x strride
를 만족하는 정수값 y0와, An integer value y0 that satisfies
x0 = ADDR - y0×stridex0 = ADDR-y0 × stride
에 의해 구해진 x0 값을 구하여 (x0,y0)의 2차원 좌표값으로 출력한다. The value of x0 obtained by is obtained and output as a two-dimensional coordinate value of (x0, y0).
이는 개략적으로 프레임 메모리 상에서 2차원 좌표에 상응한다. This roughly corresponds to two-dimensional coordinates on the frame memory.
여기서 식 (1)을 만족하는 정수값을 Where an integer value satisfying equation (1)
ADDR // strideADDR // stride
와 같이 표기하기로 '//' 연산을 정의한다. The notation is defined as
다음으로, 뱅크 선택부(190)는 첫번째 활성화된 뱅크로, Next, the
(y0[k-1:0] + x) % N , (y0 [k-1: 0] + x)% N,
여기서, N은 뱅크의 개수이고, k는 N=2k로 표현되는 지수이고, % 는 모듈로 (modulo) 연산이다. 본 실시예에 있어서, 뱅크의 수는 2의 거듭제곱이다. 즉, 뱅크 선택부(190)는 2차원 주소 변환부(170)에서 변환된 2차원 주소 값의 x, y 주소 값의 합인 (x+y)에 따라 뱅크를 결정한다. 뱅크 선택부(190)가 출력하는 첫번째 활성화된 뱅크 내 주소 값은 Where N is the number of banks, k is an exponent expressed by N = 2 k , and% is a modulo operation. In this embodiment, the number of banks is a power of two. That is, the
y0×(stride//k)×(x0//k)y0 × (stride // k) × (x0 // k)
이다. to be.
2차원 주소 변환부는 프로세서 측 포트(12-1)로부터 입력된 주소값 addr[31:0] 으로부터 2차원 좌표값 (x0,y0)을 단자들 (41,43)을 통해 출력한다. 뱅크 선택부(190)는 이로부터 다중 뱅크 중 하나의 뱅크를 선택하는 선택 신호 'bank select'를 단자 (21-3)를 통해 출력한다. 또 뱅크 선택부(190)는 선택된 뱅크 내 주소 값을 계산하여 단자 (21-1)를 통해 출력한다. 메모리 읽기인 경우 이에 따라 단자 (21-2)를 통해 데이터 data[7:0] 가 읽혀진다. 4개의 뱅크로부터 읽혀진 데이터는 래치(180-1)에서 취합되어 단자 (12-2)를 통해 출력된다. 메모리 쓰기 동작인 경우 write enable 신호 WE 를 래치(180-2)가 타이밍을 맞추기 위해 버퍼링한다. The two-dimensional address conversion unit outputs the two-dimensional coordinate values (x0, y0) through the
도 5는 일 실시예에 따른 뱅크 할당 방식을 설명하는 도면이다. 제일 윗줄은 각 뱅크들에 할당된 컬러를 도시한다. 예를 들어 1st stride 의 0x0, 2nd stride,의 0x27, 3rd stride,의 0x46... 은 모두 bank0에 저장된다. 또 1st stride 의 0x1, 2nd stride,의 0x20, 3rd stride,의 0x47... 은 모두 bank1에 저장된다. 5 is a diagram for describing a bank allocation method, according to an exemplary embodiment. The top row shows the color assigned to each bank. For example, 1x stride 0x0, 2nd stride, 0x27, 3rd stride, 0x46 ... are all stored in bank0. Also, 0x1, 2nd stride, 0x20, 3rd stride, 0x47 ... of 1st stride are all stored in bank1.
도시된 바와 같이, 열 방향으로 인접한 연속된 데이터들이 서로 다른 뱅크들에 할당된다. 따라서 열방향으로 연속된 주소에 위치하는 데이터들이 동시에 액세스될 수 있다. 즉, 뱅크 할당은 2차원 평면 상에서 좌표값 (x,y)가 주어지면, (x+y)의 값에 따라 인터리브된 방식으로 이루어진다. 따라서 도시된 2차원 평면에서 볼 때 동일한 사선 방향으로 놓인 주소들이 동일한 뱅크에 할당된다. As shown, consecutive data adjacent in the column direction are allocated to different banks. Thus, data located at consecutive addresses in the column direction can be accessed simultaneously. That is, the bank allocation is made in an interleaved manner according to the value of (x + y), given the coordinate values (x, y) on the two-dimensional plane. Thus, in the illustrated two-dimensional plane, addresses placed in the same diagonal direction are allocated to the same bank.
도시된 실시예에 있어서, 열 방향으로 인접한 연속된 데이터들이 정수배 만큼, 특히 2의 거듭제곱 만큼 이격된 뱅크들에 할당된다. 이는 일반적으로 영상처리에서 흔히 이루어지는 2의 거듭제곱 싸이즈의 데이터 액세스에 맞춘 것이다. In the illustrated embodiment, consecutive data adjacent in the column direction are allocated to banks spaced by integer multiples, in particular by powers of two. This is generally adapted to data accesses of powers of powers of two that are common in image processing.
도시된 실시예에 있어서, 데이터 중 수평 방향으로 연속된 (0x0, 0x1, 0x2, 0x3) 와 같은 4개의 데이터들이 서로 다른 뱅크에 저장되므로 프로세서에 의해 동시에 액세스될 수 있다. 또한 수직 방향으로 연속된 (0x0,0ㅌ20, 0x40,0x60)와 같은 4개의 데이터들이 서로 다른 뱅크에 저장되므로 프로세서에 의해 동시에 액세스될 수 있다. In the illustrated embodiment, four data such as (0x0, 0x1, 0x2, 0x3) consecutive in the horizontal direction among the data are stored in different banks so that they can be accessed simultaneously by the processor. In addition, four data, such as (0x0,0x20, 0x40,0x60), which are consecutive in the vertical direction, are stored in different banks and thus can be simultaneously accessed by the processor.
여기서 일 실시예에 따른 2차원 주소 변환부(170)는 다음과 같은 프로그램으로 구현될 수 있다. The two-dimensional
2D_converter0(addr_p0, stride)2D_converter0 (addr_p0, stride)
{{
y=addr_p0 // stridey = addr_p0 // stride
x=addr_p0-yx = addr_p0-y
또한 본 발명의 일 실시예에서 뱅크 선택부(190)는 다음과 같은 프로그램으로 구현될 수 있다. 여기서 파라메터 중 x,y는 좌표값이고, stride는 스트라이드 값, k는 뱅크의 2의 거듭제곱수(뱅크 개수 N = 2k), b_offset은 블럭 액세스 크기를 나타낸다. In addition, in an embodiment of the present invention, the
BankSelector(x,y,stride,k,b_offset)BankSelector (x, y, stride, k, b_offset)
{{
bank=(y×b_offset+x)/Nbank = (y × b_offset + x) / N
x=y×(stride//k)x = y × (stride // k)
}}
수직 방향으로 인접하여 연속된 주소에 저장된 데이터를 액세스하는 경우 종래에는 8 bits/cycle에 불과하였지만, 도시된 실시예의 경우 8bits*8/1cycle = 64bits/cycle로 대역폭이 500% 증가하였다. In the case of accessing data stored in consecutive addresses adjacent in the vertical direction, only 8 bits / cycle has been conventionally used. However, in the illustrated embodiment, the bandwidth is increased by 500% as 8 bits * 8/1 cycle = 64 bits / cycle.
도 6은 또다른 실시예에 따른 뱅크 할당 방식을 설명하는 도면이다. 도시된 실시예는 2×2 블럭을 동시에 액세스할 수 있는 뱅크 할당 방식이다. 제일 윗줄은 각 뱅크들에 할당된 컬러를 도시한다. 예를 들어 1st stride 의 0x0, 2nd stride,의 0x26, 3rd stride,의 0x44... 는 모두 bank0에 저장된다. 또 1st stride 의 0x1, 2nd stride,의 0x27, 3rd stride,의 0x45... 는 모두 bank1에 저장된다. 6 is a diagram for explaining a bank allocation method according to another exemplary embodiment. The illustrated embodiment is a bank allocation scheme that can simultaneously access 2x2 blocks. The top row shows the color assigned to each bank. For example, 1x stride 0x0, 2nd stride, 0x26, 3rd stride, 0x44 ... are all stored in bank0. Also, 0x1, 2nd stride, 0x27, 3rd stride, and 0x45 ... of 1st stride are all stored in bank1.
도시된 바와 같이, 열 방향으로 인접한 연속된 데이터들이 서로 다른 뱅크들에 할당된다. 따라서 열방향으로 연속된 주소에 위치하는 데이터들이 동시에 액세스될 수 있다. 도시된 실시예에 있어서, 데이터 중 수평 방향으로 연속된 (0x0, 0x1, 0x2, 0x3)와 같은 4개의 데이터들이 서로 다른 뱅크에 저장되므로 프로세서에 의해 동시에 액세스될 수 있다. 또한 수직 방향으로 연속된 (0x0,0x20, 0x40,0x60) 와 같은 4개의 데이터들이 서로 다른 뱅크에 저장되므로 프로세서에 의 해 동시에 액세스될 수 있다. 뿐만 아니라 (0x0, 0x1, 0x20, 0x21)이나 혹은 (0ㅌ23,0x24,0x43,0x44)와 같은 2×2 블럭이 모두 다른 뱅크에 저장되어 있으므로 이들이 동시에 액세스될 수 있다. As shown, consecutive data adjacent in the column direction are allocated to different banks. Thus, data located at consecutive addresses in the column direction can be accessed simultaneously. In the illustrated embodiment, four data, such as (0x0, 0x1, 0x2, 0x3), which are contiguous in the horizontal direction, are stored in different banks and thus may be simultaneously accessed by the processor. In addition, four data, such as (0x0,0x20, 0x40,0x60), which are consecutive in the vertical direction, are stored in different banks and can be accessed simultaneously by the processor. In addition, since 2x2 blocks such as (0x0, 0x1, 0x20, 0x21) or (0x23, 0x24, 0x43, 0x44) are all stored in different banks, they can be accessed simultaneously.
도 6에 도시된 실시예에 따른 뱅크 할당 방식을 적용하기 위해서는 도 5와 관련하여 설명한 BankSelector를 호출할 때 b_offset을 0x2로 설정해야 한다. 즉, 이 함수에서 b_offset은 동시에 액세스되는 블럭의 싸이즈를 나타낸다. In order to apply the bank allocation method according to the embodiment shown in FIG. 6, b_offset should be set to 0x2 when calling the BankSelector described with reference to FIG. 5. In other words, b_offset in this function represents the size of the block being accessed at the same time.
종래 2×2 블럭을 액세스하는 경우 16bits*4/4cycle = 16bits/cycle의 대역폭이 가능하였으나, 도 6에 도시된 실시예의 경우 16bits*8/1cycle = 64bits/cycle의 대역폭이 가능하다. In the case of accessing a 2 × 2 block, a bandwidth of 16 bits * 4/4 cycles = 16 bits / cycle was possible. However, in the embodiment shown in FIG. 6, a bandwidth of 16 bits * 8/1 cycles = 64 bits / cycle is possible.
이상에서 본 발명은 첨부된 도면을 참조하여 기술되는 바람직한 실시예를 중심으로 설명되었지만 이에 한정되는 것은 아니며, 당업자라면 이로부터 도출 가능한 자명한 변형예들을 포괄하도록 의도된 청구범위에 의해 해석되어져야 한다. 예를 들어 도시된 실시예의 경우 2×2 블럭에 대해 설명하였으나 이를 일반적인 M×M, 또는 더 일반적인 M×N의 블럭으로 확장할 수 있다. The present invention has been described above with reference to the preferred embodiments described with reference to the accompanying drawings, but is not limited thereto, and should be construed by the claims intended to cover obvious modifications derivable from those skilled in the art. . For example, in the illustrated embodiment, a 2 × 2 block has been described, but it may be extended to a general M × M block or a more general M × N block.
도 1은 일 실시예에 따른 다중 뱅크 메모리 액세스 장치가 채택된 신호 처리 시스템의 주요부를 개략적으로 도시한다. 1 schematically illustrates a main part of a signal processing system employing a multi-bank memory access apparatus according to an embodiment.
도 2는 또다른 실시예에 따른 다중 뱅크 메모리 액세스 장치가 채택된 신호 처리 시스템의 주요부를 개략적으로 도시한다. Figure 2 schematically shows the main part of a signal processing system employing a multi-bank memory access apparatus according to another embodiment.
도 3은 또다른 실시예에 따른 다중 뱅크 메모리 액세스 장치가 채택된 신호 처리 시스템의 주요부를 개략적으로 도시한다.Figure 3 schematically shows the main part of a signal processing system employing a multi-bank memory access apparatus according to another embodiment.
도 4는 일 실시예에 따른 다중 뱅크 메모리 액세스 장치가 적용된 신호 처리 시스템의 주요부를 보다 상세히 도시한다. Figure 4 illustrates in more detail the principal parts of a signal processing system employing a multi-bank memory access device according to one embodiment.
도 5는 일 실시예에 따른 뱅크 할당 방식을 설명하는 도면이다. 5 is a diagram for describing a bank allocation method, according to an exemplary embodiment.
도 6은 또다른 실시예에 따른 뱅크 할당 방식을 설명하는 도면이다. 6 is a diagram for explaining a bank allocation method according to another exemplary embodiment.
<도면의주요한부분의부호의설명><Description of Signs of Major Parts of Drawings>
100 : 주소 변환부100: address conversion unit
300 : 다중 뱅크 메모리300: multi-bank memory
500 : 프로세서500: Processor
510 ~ 550 : 프로세서 코어510-550: processor core
700 : 스트라이드 레지스터(stride register)700: stride register
170 : 2차원 주소 변환부170: two-dimensional address conversion unit
190 : 뱅크 선택부190: bank selector
Claims (13)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090097244A KR101553651B1 (en) | 2009-10-13 | 2009-10-13 | apparatus for accessing multi-bank memory |
US12/902,681 US9086959B2 (en) | 2009-10-13 | 2010-10-12 | Apparatus to access multi-bank memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090097244A KR101553651B1 (en) | 2009-10-13 | 2009-10-13 | apparatus for accessing multi-bank memory |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110040103A true KR20110040103A (en) | 2011-04-20 |
KR101553651B1 KR101553651B1 (en) | 2015-09-17 |
Family
ID=43855726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090097244A KR101553651B1 (en) | 2009-10-13 | 2009-10-13 | apparatus for accessing multi-bank memory |
Country Status (2)
Country | Link |
---|---|
US (1) | US9086959B2 (en) |
KR (1) | KR101553651B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017019095A1 (en) * | 2015-07-30 | 2017-02-02 | Hewlett Packard Enterprise Development Lp | Interleaved access of memory |
US10983723B2 (en) | 2014-12-05 | 2021-04-20 | Samsung Electronics Co., Ltd. | Memory access control method and apparatus |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102202575B1 (en) * | 2013-12-31 | 2021-01-13 | 삼성전자주식회사 | Memory management method and apparatus |
EP3018587B1 (en) * | 2014-11-05 | 2018-08-29 | Renesas Electronics Europe GmbH | Memory access unit |
US11836527B2 (en) * | 2021-08-02 | 2023-12-05 | Nvidia Corporation | Accelerating table lookups using a decoupled lookup table accelerator in a system on a chip |
US20230045443A1 (en) * | 2021-08-02 | 2023-02-09 | Nvidia Corporation | Performing load and store operations of 2d arrays in a single cycle in a system on a chip |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6272594B1 (en) * | 1998-07-31 | 2001-08-07 | Hewlett-Packard Company | Method and apparatus for determining interleaving schemes in a computer system that supports multiple interleaving schemes |
US6219725B1 (en) * | 1998-08-28 | 2001-04-17 | Hewlett-Packard Company | Method and apparatus for performing direct memory access transfers involving non-sequentially-addressable memory locations |
JP3950831B2 (en) | 2003-09-16 | 2007-08-01 | エヌイーシーコンピュータテクノ株式会社 | Memory interleaving method |
JP4296996B2 (en) * | 2004-06-15 | 2009-07-15 | 富士通株式会社 | Multi-core processor control system |
KR100912156B1 (en) | 2005-02-03 | 2009-08-14 | 파나소닉 주식회사 | Parallel interleaver, parallel deinterleaver, and interleave method |
KR100726101B1 (en) | 2005-04-29 | 2007-06-12 | (주)씨앤에스 테크놀로지 | System for Controlling Memory |
KR100990902B1 (en) | 2005-06-30 | 2010-11-01 | 삼성전자주식회사 | A memory arrangement for multi-processor systems |
US8560795B2 (en) | 2005-06-30 | 2013-10-15 | Imec | Memory arrangement for multi-processor systems including a memory queue |
KR101305490B1 (en) | 2005-10-01 | 2013-09-06 | 삼성전자주식회사 | The method and apparatus for mapping memory |
US20070162643A1 (en) | 2005-12-19 | 2007-07-12 | Ivo Tousek | Fixed offset scatter/gather dma controller and method thereof |
JP4810542B2 (en) | 2005-12-28 | 2011-11-09 | 富士通株式会社 | MEMORY CONTROL METHOD, PROGRAM, AND DEVICE |
KR100846791B1 (en) | 2006-09-08 | 2008-07-16 | 삼성전자주식회사 | Method and apparatus for saving video data |
US7463267B2 (en) | 2006-10-26 | 2008-12-09 | Lsi Corporation | System for interleaved storage of video data |
KR100874949B1 (en) | 2006-11-15 | 2008-12-19 | 삼성전자주식회사 | Single instruction multiple data processor and memory array structure for it |
-
2009
- 2009-10-13 KR KR1020090097244A patent/KR101553651B1/en active IP Right Grant
-
2010
- 2010-10-12 US US12/902,681 patent/US9086959B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10983723B2 (en) | 2014-12-05 | 2021-04-20 | Samsung Electronics Co., Ltd. | Memory access control method and apparatus |
WO2017019095A1 (en) * | 2015-07-30 | 2017-02-02 | Hewlett Packard Enterprise Development Lp | Interleaved access of memory |
US10579519B2 (en) | 2015-07-30 | 2020-03-03 | Hewlett Packard Enterprise Development Lp | Interleaved access of memory |
Also Published As
Publication number | Publication date |
---|---|
US20110087821A1 (en) | 2011-04-14 |
US9086959B2 (en) | 2015-07-21 |
KR101553651B1 (en) | 2015-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8422330B2 (en) | Memory controller and memory controlling method | |
KR20110040103A (en) | Apparatus for accessing multi-bank memory | |
CN111079917B (en) | Tensor data block access method and device | |
US7872657B1 (en) | Memory addressing scheme using partition strides | |
US8918589B2 (en) | Memory controller, memory system, semiconductor integrated circuit, and memory control method | |
CN111209232B (en) | Method, apparatus, device and storage medium for accessing static random access memory | |
KR100503094B1 (en) | DSP having wide memory bandwidth and DSP memory mapping method | |
US9495291B2 (en) | Configurable spreading function for memory interleaving | |
CN103760525A (en) | Completion type in-place matrix transposition method | |
CN112732639B (en) | Coarse-grained dynamic reconfigurable processor and data processing method thereof | |
CN104183267A (en) | Data Processing Apparatus and Memory Apparatus | |
CN116010299B (en) | Data processing method, device, equipment and readable storage medium | |
CN108139989B (en) | Computer device equipped with processing in memory and narrow access port | |
CN114942831A (en) | Processor, chip, electronic device and data processing method | |
CN102541769B (en) | Memory interface access control method and device | |
CN106227506A (en) | A kind of multi-channel parallel Compress softwares system and method in memory compression system | |
US6694407B1 (en) | Cache memory with data transfer control and method of operating same | |
EP2592562B1 (en) | Memory access for digital signal processing | |
CN112631955B (en) | Data processing method, device, electronic equipment and medium | |
KR101788245B1 (en) | Multi-port cache memory apparatus and method for operating multi-port cache memory apparatus | |
US8806132B2 (en) | Information processing device, memory access control device, and address generation method thereof | |
US20230222058A1 (en) | Zoned namespaces for computing device main memory | |
KR102202575B1 (en) | Memory management method and apparatus | |
WO2013032788A2 (en) | A 2-d gather instruction and a 2-d cache | |
US20100058025A1 (en) | Method, apparatus and software product for distributed address-channel calculator for multi-channel 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: 20180831 Year of fee payment: 4 |