KR20110040103A - 다중 뱅크 메모리 액세스 장치 - Google Patents

다중 뱅크 메모리 액세스 장치 Download PDF

Info

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
Application number
KR1020090097244A
Other languages
English (en)
Other versions
KR101553651B1 (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 KR1020090097244A priority Critical patent/KR101553651B1/ko
Priority to US12/902,681 priority patent/US9086959B2/en
Publication of KR20110040103A publication Critical patent/KR20110040103A/ko
Application granted granted Critical
Publication of KR101553651B1 publication Critical patent/KR101553651B1/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
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User 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

다중 뱅크 메모리(multi-bank memory)의 액세스 제어 기술이 개시된다. 이를 위해 프로세서에 의해 실행 시간(run time) 중에 설정되는 스트라이드 레지스터(stride register)가 구비된다. 메모리 제어기는 이 스트라이드 레지스터에 의해 폭이 정해지는 논리 블럭(logical block)에 대해 행과 열 방향으로 인터리브된 방식으로 액세스를 제어한다. 이에 따라 행 방향은 물론 열 방향으로 인접하여 연속된 주소에 저장된 데이터들이 동시에 액세스될 수 있다.
다중 뱅크, 다중 포트, 메모리 대역폭, multi-bank, memory bandwidth

Description

다중 뱅크 메모리 액세스 장치{apparatus for accessing multi-bank memory}
다중 뱅크 메모리(multi-bank memory)의 액세스 제어 기술이 개시된다.
멀티-코어(multi-core), 멀티 포트 메모리 액세스 구조(multi-port memory access architecture)를 채택하는 최근의 디지털 신호 처리기(Digital Signal Processor)는 멀티 뱅크 메모리(multi-bank memory) 구조를 통해 메모리 간섭(memory conflict)을 줄이고 있다. 멀티 뱅크 구조에 있어서 하나의 메모리를 다수의 뱅크들로 분할하는 방식에는 주소 블럭 방식이나, 뱅크의 기본 데이터 폭(data width) 단위의 인터리브 할당(interleaved allocation) 방식이 있다.
주소 블럭 방식은 주소 블럭별로 뱅크를 할당하므로 각 메모리 요구 포트(memory request port)가 액세스하는 주소 영역이 정해져 있는 경우에은 효과적이다. 그러나 복수의 포트가 동일한 주소 영역을 액세스하는 경우 메모리 간섭(memory conflict)이 발생한다. 인터리브 방식의 경우 인접한 연속된 주소 값들이 서로 다른 뱅크에 할당된다. 따라서 메모리의 연속된 번지를 동시에 액세스하 는 경우 효과적이다. 예를 들어 코어가 4개의 연속된 바이트를 하나의 워드로 액세스하는 경우 메모리 제어기는 각각의 뱅크에서 하나씩 바이트를 액세스함으로써 하나의 클럭 안에 4개의 바이트가 액세스될 수 있다.
행 방향으로 연속된 주소를 가진 복수의 기억 장소를 동시에 액세스할 수 있을 뿐 아니라 열 방향으로 연속된 주소를 가진 복수의 기억 장소를 동시에 액세스하는 것이 가능한 다중 뱅크 메모리 구조를 제안한다.
상기 목적을 달성하기 위한 일 양상에 따르면, 프로세서에 의해 실행 시간(run time) 중에 설정되는 스트라이드 레지스터가 구비된다. 메모리 제어기는 이 스트라이드 레지스터에 의해 폭이 정해지는 논리 블럭(logical block)에 대해 행과 열 방향으로 인터리브 방식으로 액세스를 제어한다.
또다른 일 양상에 따르면, 주소 변환부는 열 방향으로 인접한 연속된 데이터들이 정수배 만큼, 특히 2의 거듭제곱 만큼 이격된 뱅크들에 할당될 수 있다.
이 같은 양상들에 따라, 프레임 메모리를 행과 열 방향으로 액세스하는 영상 처리 분야에서 메모리 대역폭(bandwidth)을 증가시킬 뿐 아니라 프로세서 코어가 필요로 하는 데이터를 메모리 제어기가 하드웨어적으로 정렬하여 전달하므로 팩킹과 언패킹(pack, unpack) 등의 데이터 정렬에 소오되는 코어 싸이클(core cycle)을 줄일 수 있다.
전술한, 그리고 추가적인 본 발명의 양상들은 후술하는 실시예를 통해 더욱 명확해질 것이다. 이하에서는 이러한 양상들을 첨부된 도면을 참조하여 기술되는 바람직한 실시예들을 통해 상세히 설명한다.
도 1은 일 실시예에 따른 다중 뱅크 메모리 액세스 장치가 채택된 신호 처리 시스템의 주요부를 개략적으로 도시한다. 도시된 바와 같이, 신호 처리 시스템은 개별적으로 액세스 가능한 다중 뱅크 메모리(300)와, 스트라이드(stride) 값을 기억하는 스트라이드 레지스터(700)와, 이 스트라이드 값에 의해 폭이 정해지는 논리 블럭(logical block)에 대해 행과 열 방향으로 인터리브 방식으로 액세스를 제어하는 주소 변환부(100)를 포함한다.
도시된 실시예에 있어서, 주소 변환부(100)를 통해 다중 뱅크 메모리(300)를 액세스하는 프로세서(500)는 멀티 코어 프로세서(multi-core processor)로, 2 이상의 프로세서 코어(510, 530, 550)를 포함할 수 있다. 다중 뱅크 메모리(300)를 액세스하는 프로세서 코어들(510,530)마다 각각 메모리 포트(12,14)가 할당된다. 도시된 실시예에서 각 포트(12,14)를 통해 프로세서 코어들(510, 530)이 액세스하는 워드폭(word width)은 4바이트, 즉 32비트이다. 그러나 본 발명이 이에 한정되지 않음은 당업자에게 자명하다.
도시된 실시예에 있어서, 다중 뱅크 메모리(300)는 23=8개의 뱅크들(311~318)로 구성되며, 주소 변환부(100)가 대응하는 포트들(21~28)을 통해 각각의 뱅크들을 독립적으로 액세스하는 것이 가능한 구조를 갖는다. 주소 변환부(100)는 각각의 메모리 뱅크(311~318)를 바이트 단위로 액세스할 수 있다.
일 양상에 따르면, 메모리 액세스 장치는 스트라이드 레지스터(700)를 포함한다. 스트라이드 레지스터(700)는 제 1 프로세서 코어(550)에 의해 실행 시간(run time) 중에 그 값이 설정된다. 주소 변환부(100)는 스트라이드 레지스터(700)에 설정된 스트라이드 값에 따라 다중 뱅크 메모리(300)를 달리 액세스한다.
영상 처리에 있어서, 프레임 메모리에 저장된 데이터는 행 방향으로는 물론 열 방향으로 순차적으로 액세스되는 경우가 흔히 있다. 예를 들어 영상의 필터링은 행 방향과 열 방향으로 동시에 진행될 수 있다. 나아가 영상 압축이나 필터링에 있어서, 프레임 메모리에 저장된 데이터들은 흔히 2×2, 4×4, 8×8 혹은 16×16 과 같은 블럭 단위로 액세스된다. 동일한 뱅크에 저장된 열 방향으로 인접하여 연속된 주소 상의 데이터들의 엑세스는 지연을 초래하며, 이는 메모리 액세스 대역폭의 감소를 의미한다.
일 실시예에 있어서, 제 1 프로세서 코어(550)는 실행 시간 중에 현재 처리 하는 영상 데이터의 프레임 폭을 스트라이드 레지스터(700)를 통해 설정한다. 주소 변환부(100)는 스트라이드 레지스터(700)에 저장된 스트라이드 값으로부터 현재 처리하는 영상의 프레임 폭을 파악하고, 메모리 기록 및 읽기를 제어함에 있어서 행과 열 방향으로 인터리브된 방식을 적용한다.
도 2는 또다른 실시예에 따른 다중 뱅크 메모리 액세스 장치가 채택된 신호 처리 시스템의 주요부를 개략적으로 도시한다. 도시된 실시예에 있어서, 도 1에 도시된 실시예와 대응되는 유사한 구성요소들은 동일한 부호로 참조된다. 도시된 실시예에 있어서, 프로세서(500)는 프로그램을 실행함에 있어서 행렬 방향의 액세스가 필요한 부분은 제2, 제3 프로세서 코어들(510,530)이 처리하고, 그 이외의 부분은 제4, 제5, 프로세서 코어들(570,590)이 처리한다. 제 4,5 프로세서 코어들(570, 590)은 포트들(11,13)을 통해 메모리 뱅크(321,322)를 액세스한다. 메모리 액세스 제어부(130)는 코어측 포트들(11,13)로부터의 액세스 요구에 따라 메모리 뱅크측 포트들(31,33)을 통해 블럭 할당 방식 혹은 인터리브 할당 방식과 같은 공지된 방법 중 하나로 액세스한다.
제2, 3 프로세서 코어들(510, 530)은 포트들(12,14)을 통해 메모리 뱅크(311~318)를 액세스한다. 주소 변환부(150)는 코어측 포트(12,14)로부터의 액세스 요구에 대해 뱅크측 포트(21~28)를 통해 다중 뱅크 메모리(311~318)를 액세스한다. 주소 변환부(150)는 스트라이드 레지스터(700)에 저장된 스트라이드 값에 의해 폭이 정해지는 논리 블럭(logical block)에 대해 행과 열 방향으로 인터리브 방식으로 액세스를 제어한다.
행렬 방향의 액세스가 필요한 시점 이전에, 제 1 프로세서 코어(550)는 스트라이드 레지스터(700)에 현재 처리하는 프레임 메모리의 폭에 대응하는 값을 스트라이드 값으로 기록하고, 프레임 데이터를 직접 메모리 액세스(DMA)를 이용하여 외부 포트(16)로부터 메모리 뱅크(311~318)로 기록하도록 제어한다. 이에 따라 불필요한 지연이 초래돼지 않고, 프레임 메모리에 대한 행과 열 방향의 고속 처리가 이전의 처리에 이어서 즉시 행해질 수 있다. 이후의 처리 과정은 이전의 실시예와 유사하므로 상세한 설명은 생략한다.
도 3은 또다른 실시예에 따른 다중 뱅크 메모리 액세스 장치가 채택된 신호 처리 시스템의 주요부를 개략적으로 도시한다. 도시된 실시예에 있어서, 도 2에 도시된 실시예와 대응되는 유사한 구성요소들은 동일한 부호로 참조된다. 도시된 실시예에 있어서, 프로세서(500)는 프로그램의 실행 시간(runtime) 중에 행렬 방향의 액세스가 필요한 경우 동작 선택부(110)에 선택신호(18)를 출력하여, 메모리 액세스 제어부(130)와, 주소 변환부(150) 중 주소 변환부(150)가 동작하도록 선택한다. 프로세서(500)는 프로그램의 실행 시간 중에 선택신호(18)를 출력하여 동작 선택부(110)로 하여금 메모리 액세스 제어부(130)와 주소 변환부(150) 중 하나가 동작하도록 선택할 수 있다.
메모리 액세스 제어부(130)는 코어측 포트들(12,14)로부터의 액세스 요구에 따라 메모리 뱅크측 포트들(31,33)을 통해 블럭 할당 방식 혹은 인터리브 할당 방식과 같은 공지된 방법 중 하나로 액세스한다. 이 같은 선택 신호(18)는 프로세서 코어(550)에 의해 생성된다.
주소 변환부(150)는 코어측 포트(12,14)로부터의 액세스 요구에 대해 뱅크측 포트(21~28)를 통해 다중 뱅크 메모리(311~318)를 액세스한다. 주소 변환부(150)는 스트라이드 레지스터(700)에 저장된 스트라이드 값에 의해 폭이 정해지는 논리 블럭(logical block)에 대해 행과 열 방향으로 인터리브 방식으로 액세스를 제어한다.
행렬 방향의 액세스가 필요한 시점 이전에, 제 1 프로세서 코어(550)는 스트라이드 레지스터(700)에 현재 처리하는 프레임 메모리의 폭에 대응하는 값을 스트라이드 값으로 기록하고, 프레임 데이터를 직접 메모리 액세스(DMA)를 이용하여 외부 포트(16)로부터 메모리 뱅크(311~318)로 기록하도록 제어한다. 이에 따라 불필요한 지연이 초래돼지 않고, 프레임 메모리에 대한 행과 열 방향의 고속 처리가 이전의 처리에 이어서 즉시 행해질 수 있다. 이후의 처리 과정은 이전의 실시예와 유사하므로 상세한 설명은 생략한다.
도 4는 일 실시예에 따른 다중 뱅크 메모리 액세스 장치가 적용된 신호 처리 시스템의 주요부를 보다 상세히 도시한다. 도시된 바와 같이, 일 실시예에 따른 다중 뱅크 메모리 액세스 장치는 외부에서 입력되는 메모리 액세스 주소를 상기 스트라이드 값에 의해 정해지는 논리 블럭에서의 2차원 주소 값으로 변환하는 2차원 주소 변환부(170)와, 이 2차원 주소 변환부에서 변환된 2차원 주소 값으로부터 다중 뱅크 중 하나의 뱅크 선택신호와, 뱅크 내 주소 값을 출력하는 뱅크 선택부(190)를 포함하는 주소 변환부(100)를 포함한다.
일 실시예에 따른 2차원 주소 변환부(170)는 입력되는 주소값 ADDR와, 스트 라이드 값 stride 에 대해,
(1) y0×stride <= ADDR < (y0+1)×stride
를 만족하는 정수값 y0와,
x0 = ADDR - y0×stride
에 의해 구해진 x0 값을 구하여 (x0,y0)의 2차원 좌표값으로 출력한다.
이는 개략적으로 프레임 메모리 상에서 2차원 좌표에 상응한다.
여기서 식 (1)을 만족하는 정수값을
ADDR // stride
와 같이 표기하기로 '//' 연산을 정의한다.
다음으로, 뱅크 선택부(190)는 첫번째 활성화된 뱅크로,
(y0[k-1:0] + x) % N ,
여기서, N은 뱅크의 개수이고, k는 N=2k로 표현되는 지수이고, % 는 모듈로 (modulo) 연산이다. 본 실시예에 있어서, 뱅크의 수는 2의 거듭제곱이다. 즉, 뱅크 선택부(190)는 2차원 주소 변환부(170)에서 변환된 2차원 주소 값의 x, y 주소 값의 합인 (x+y)에 따라 뱅크를 결정한다. 뱅크 선택부(190)가 출력하는 첫번째 활성화된 뱅크 내 주소 값은
y0×(stride//k)×(x0//k)
이다.
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)가 타이밍을 맞추기 위해 버퍼링한다.
도 5는 일 실시예에 따른 뱅크 할당 방식을 설명하는 도면이다. 제일 윗줄은 각 뱅크들에 할당된 컬러를 도시한다. 예를 들어 1st stride 의 0x0, 2nd stride,의 0x27, 3rd stride,의 0x46... 은 모두 bank0에 저장된다. 또 1st stride 의 0x1, 2nd stride,의 0x20, 3rd stride,의 0x47... 은 모두 bank1에 저장된다.
도시된 바와 같이, 열 방향으로 인접한 연속된 데이터들이 서로 다른 뱅크들에 할당된다. 따라서 열방향으로 연속된 주소에 위치하는 데이터들이 동시에 액세스될 수 있다. 즉, 뱅크 할당은 2차원 평면 상에서 좌표값 (x,y)가 주어지면, (x+y)의 값에 따라 인터리브된 방식으로 이루어진다. 따라서 도시된 2차원 평면에서 볼 때 동일한 사선 방향으로 놓인 주소들이 동일한 뱅크에 할당된다.
도시된 실시예에 있어서, 열 방향으로 인접한 연속된 데이터들이 정수배 만큼, 특히 2의 거듭제곱 만큼 이격된 뱅크들에 할당된다. 이는 일반적으로 영상처리에서 흔히 이루어지는 2의 거듭제곱 싸이즈의 데이터 액세스에 맞춘 것이다.
도시된 실시예에 있어서, 데이터 중 수평 방향으로 연속된 (0x0, 0x1, 0x2, 0x3) 와 같은 4개의 데이터들이 서로 다른 뱅크에 저장되므로 프로세서에 의해 동시에 액세스될 수 있다. 또한 수직 방향으로 연속된 (0x0,0ㅌ20, 0x40,0x60)와 같은 4개의 데이터들이 서로 다른 뱅크에 저장되므로 프로세서에 의해 동시에 액세스될 수 있다.
여기서 일 실시예에 따른 2차원 주소 변환부(170)는 다음과 같은 프로그램으로 구현될 수 있다.
2D_converter0(addr_p0, stride)
{
y=addr_p0 // stride
x=addr_p0-y
또한 본 발명의 일 실시예에서 뱅크 선택부(190)는 다음과 같은 프로그램으로 구현될 수 있다. 여기서 파라메터 중 x,y는 좌표값이고, stride는 스트라이드 값, k는 뱅크의 2의 거듭제곱수(뱅크 개수 N = 2k), b_offset은 블럭 액세스 크기를 나타낸다.
BankSelector(x,y,stride,k,b_offset)
{
bank=(y×b_offset+x)/N
x=y×(stride//k)
}
수직 방향으로 인접하여 연속된 주소에 저장된 데이터를 액세스하는 경우 종래에는 8 bits/cycle에 불과하였지만, 도시된 실시예의 경우 8bits*8/1cycle = 64bits/cycle로 대역폭이 500% 증가하였다.
도 6은 또다른 실시예에 따른 뱅크 할당 방식을 설명하는 도면이다. 도시된 실시예는 2×2 블럭을 동시에 액세스할 수 있는 뱅크 할당 방식이다. 제일 윗줄은 각 뱅크들에 할당된 컬러를 도시한다. 예를 들어 1st stride 의 0x0, 2nd stride,의 0x26, 3rd stride,의 0x44... 는 모두 bank0에 저장된다. 또 1st stride 의 0x1, 2nd stride,의 0x27, 3rd stride,의 0x45... 는 모두 bank1에 저장된다.
도시된 바와 같이, 열 방향으로 인접한 연속된 데이터들이 서로 다른 뱅크들에 할당된다. 따라서 열방향으로 연속된 주소에 위치하는 데이터들이 동시에 액세스될 수 있다. 도시된 실시예에 있어서, 데이터 중 수평 방향으로 연속된 (0x0, 0x1, 0x2, 0x3)와 같은 4개의 데이터들이 서로 다른 뱅크에 저장되므로 프로세서에 의해 동시에 액세스될 수 있다. 또한 수직 방향으로 연속된 (0x0,0x20, 0x40,0x60) 와 같은 4개의 데이터들이 서로 다른 뱅크에 저장되므로 프로세서에 의 해 동시에 액세스될 수 있다. 뿐만 아니라 (0x0, 0x1, 0x20, 0x21)이나 혹은 (0ㅌ23,0x24,0x43,0x44)와 같은 2×2 블럭이 모두 다른 뱅크에 저장되어 있으므로 이들이 동시에 액세스될 수 있다.
도 6에 도시된 실시예에 따른 뱅크 할당 방식을 적용하기 위해서는 도 5와 관련하여 설명한 BankSelector를 호출할 때 b_offset을 0x2로 설정해야 한다. 즉, 이 함수에서 b_offset은 동시에 액세스되는 블럭의 싸이즈를 나타낸다.
종래 2×2 블럭을 액세스하는 경우 16bits*4/4cycle = 16bits/cycle의 대역폭이 가능하였으나, 도 6에 도시된 실시예의 경우 16bits*8/1cycle = 64bits/cycle의 대역폭이 가능하다.
이상에서 본 발명은 첨부된 도면을 참조하여 기술되는 바람직한 실시예를 중심으로 설명되었지만 이에 한정되는 것은 아니며, 당업자라면 이로부터 도출 가능한 자명한 변형예들을 포괄하도록 의도된 청구범위에 의해 해석되어져야 한다. 예를 들어 도시된 실시예의 경우 2×2 블럭에 대해 설명하였으나 이를 일반적인 M×M, 또는 더 일반적인 M×N의 블럭으로 확장할 수 있다.
도 1은 일 실시예에 따른 다중 뱅크 메모리 액세스 장치가 채택된 신호 처리 시스템의 주요부를 개략적으로 도시한다.
도 2는 또다른 실시예에 따른 다중 뱅크 메모리 액세스 장치가 채택된 신호 처리 시스템의 주요부를 개략적으로 도시한다.
도 3은 또다른 실시예에 따른 다중 뱅크 메모리 액세스 장치가 채택된 신호 처리 시스템의 주요부를 개략적으로 도시한다.
도 4는 일 실시예에 따른 다중 뱅크 메모리 액세스 장치가 적용된 신호 처리 시스템의 주요부를 보다 상세히 도시한다.
도 5는 일 실시예에 따른 뱅크 할당 방식을 설명하는 도면이다.
도 6은 또다른 실시예에 따른 뱅크 할당 방식을 설명하는 도면이다.
<도면의주요한부분의부호의설명>
100 : 주소 변환부
300 : 다중 뱅크 메모리
500 : 프로세서
510 ~ 550 : 프로세서 코어
700 : 스트라이드 레지스터(stride register)
170 : 2차원 주소 변환부
190 : 뱅크 선택부

Claims (13)

  1. 스트라이드(stride) 값이저장된 스트라이드 레지스터와;
    상기 스트라이드 값에 의해 폭이 정해지는 다중 뱅크 메모리(multi-bank memory) 상의 논리 블럭(logical block)에 대해 행 및 열 중에서 선택되는 어느 하나 또는 두 방향으로 액세스를 제어하는 주소 변환부;
    를 포함하는 다중 뱅크 메모리 액세스 장치.
  2. 제 1 항에 있어서, 상기 스트라이드 레지스터의 스트라이드 값이 프로세서에 의해 실행 시간(run time) 중에 설정되는 다중 뱅크 메모리 액세스 장치.
  3. 제 1 항에 있어서, 상기 주소 변환부는 열 방향으로 인접한 연속된 데이터들이 서로 다른 뱅크들에 할당되도록 액세스를 제어하는 다중 뱅크 메모리 액세스 장치.
  4. 제 3 항에 있어서, 상기 주소 변환부는 열 방향으로 인접한 연속된 데이터들이 인접한 연속된 뱅크들에 할당되도록 액세스를 제어하는 다중 뱅크 메모리 액세 스 장치.
  5. 제 4 항에 있어서, 상기 주소 변환부는 열 방향으로 인접한 연속된 데이터들이 정수배 만큼 이격된 뱅크들에 할당되도록 액세스를 제어하는 다중 뱅크 메모리 액세스 장치.
  6. 제 5 항에 있어서, 상기 주소 변환부는 열 방향으로 인접한 연속된 데이터들이 2의 거듭제곱 만큼 이격된 뱅크들에 할당되는 다중 뱅크 메모리 액세스 장치.
  7. 제 1 항에 있어서, 상기 주소 변환부는 :
    외부에서 입력되는 메모리 액세스 주소를 상기 스트라이드 값에 의해 정해지는 논리 블럭에서의 2차원 주소 값으로 변환하는 2차원 주소 변환부;
    상기 2차원 주소 변환부에서 변환된 2차원 주소 값으로부터 다중 뱅크 중 하나의 뱅크 선택신호와, 뱅크 내 주소 값을 출력하는 뱅크 선택부;
    를 포함하는 다중 뱅크 메모리 액세스 장치.
  8. 제 7 항에 있어서, 상기 뱅크 선택부의 뱅크 선택 신호는 2차원 주소 변환부에서 변환된 2차원 주소 값의 x, y 주소 값의 합에 따라 결정되도록 액세스를 제어하는 다중 뱅크 메모리 액세스 장치.
  9. 제 1 항에 있어서, 상기 다중 뱅크 메모리 액세스 장치가 :
    상기 주소 변환부와 다른 방식으로 다중 뱅크 메모리의 액세스를 제어하는 메모리 액세스 제어부;를 더 포함하는 다중 뱅크 메모리 액세스 장치.
  10. 제 9 항에 있어서, 상기 메모리 액세스 제어부는 주소 블럭 방식으로 다중 뱅크 메모리의 액세스를 제어하는 다중 뱅크 메모리 액세스 장치.
  11. 제 9 항에 있어서, 상기 메모리 액세스 제어부는 뱅크의 기본 데이터 폭(data width) 단위의 인터리브 할당(interleaved allocation) 방식으로 다중 뱅크 메모리의 액세스를 제어하는 다중 뱅크 메모리 액세스 장치.
  12. 제 9 항에 있어서, 상기 다중 뱅크 메모리 액세스 장치가 :
    코어로부터의 선택 신호에 따라 상기 주소 변환부 및 메모리 액세스 제어부 중 하나가 동작하도록 선택하는 동작 선택부;를 더 포함하는 다중 뱅크 메모리 액세스 장치.
  13. 제 12 항에 있어서, 상기 동작 선택부는 코어로부터의 선택 신호에 따라 상기 주소 변환부 및 메모리 액세스 제어부 중 하나만 동작하도록 선택하는 다중 뱅크 메모리 액세스 장치.
KR1020090097244A 2009-10-13 2009-10-13 다중 뱅크 메모리 액세스 장치 KR101553651B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090097244A KR101553651B1 (ko) 2009-10-13 2009-10-13 다중 뱅크 메모리 액세스 장치
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 (ko) 2009-10-13 2009-10-13 다중 뱅크 메모리 액세스 장치

Publications (2)

Publication Number Publication Date
KR20110040103A true KR20110040103A (ko) 2011-04-20
KR101553651B1 KR101553651B1 (ko) 2015-09-17

Family

ID=43855726

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090097244A KR101553651B1 (ko) 2009-10-13 2009-10-13 다중 뱅크 메모리 액세스 장치

Country Status (2)

Country Link
US (1) US9086959B2 (ko)
KR (1) KR101553651B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102202575B1 (ko) * 2013-12-31 2021-01-13 삼성전자주식회사 메모리 관리 방법 및 장치
EP3018587B1 (en) * 2014-11-05 2018-08-29 Renesas Electronics Europe GmbH Memory access unit
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
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

Family Cites Families (14)

* Cited by examiner, † Cited by third party
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 (ja) 2003-09-16 2007-08-01 エヌイーシーコンピュータテクノ株式会社 メモリインタリーブ方式
JP4296996B2 (ja) * 2004-06-15 2009-07-15 富士通株式会社 マルチコアプロセサ制御方式
EP1850486A4 (en) 2005-02-03 2008-05-07 Matsushita Electric Ind Co Ltd PARALLEL INTERLACER, PARALLEL DISINTERLACER AND INTERLACING METHOD
KR100726101B1 (ko) * 2005-04-29 2007-06-12 (주)씨앤에스 테크놀로지 메모리 제어 시스템
US8560795B2 (en) * 2005-06-30 2013-10-15 Imec Memory arrangement for multi-processor systems including a memory queue
EP2317446A1 (en) 2005-06-30 2011-05-04 Imec A memory arrangement for multi-processor systems
KR101305490B1 (ko) * 2005-10-01 2013-09-06 삼성전자주식회사 메모리 맵핑 방법 및 장치
US20070162643A1 (en) * 2005-12-19 2007-07-12 Ivo Tousek Fixed offset scatter/gather dma controller and method thereof
EP1967955A4 (en) * 2005-12-28 2009-10-21 Fujitsu Ltd METHOD, PROGRAM AND DEVICE FOR MEMORY CONTROL
KR100846791B1 (ko) * 2006-09-08 2008-07-16 삼성전자주식회사 비디오 데이터 저장 방법 및 장치
US7463267B2 (en) 2006-10-26 2008-12-09 Lsi Corporation System for interleaved storage of video data
KR100874949B1 (ko) * 2006-11-15 2008-12-19 삼성전자주식회사 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리어레이 구조

Cited By (3)

* Cited by examiner, † Cited by third party
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
KR101553651B1 (ko) 2015-09-17
US9086959B2 (en) 2015-07-21

Similar Documents

Publication Publication Date Title
CN107657581B (zh) 一种卷积神经网络cnn硬件加速器及加速方法
US8422330B2 (en) Memory controller and memory controlling method
CN111079917B (zh) 张量数据分块存取的方法及装置
KR20110040103A (ko) 다중 뱅크 메모리 액세스 장치
US8918589B2 (en) Memory controller, memory system, semiconductor integrated circuit, and memory control method
CN111209232B (zh) 访问静态随机存取存储器的方法、装置、设备和存储介质
KR100503094B1 (ko) 넓은 메모리 밴드위스를 갖는 디지털 신호 처리 장치 및그 메모리 맵핑 방법
US9495291B2 (en) Configurable spreading function for memory interleaving
JP6961997B2 (ja) 情報処理装置、メモリ制御装置および情報処理装置の制御方法
JP2013542493A (ja) 複数のメモリチャネルを有するコンピューティングシステムにおけるメモリバッファの割り当て
KR20180002635A (ko) 그래픽 프로세싱을 위한 표면 포맷에 기초한 적응적 메모리 어드레스 스캐닝
CN103760525A (zh) 一种补齐式原地矩阵转置方法
CN112732639B (zh) 一种粗粒度动态可重构处理器及其数据处理方法
CN104183267A (zh) 数据处理设备和存储器设备
CN116010299B (zh) 一种数据处理方法、装置、设备及可读存储介质
CN108139989B (zh) 配备有存储器中的处理和窄访问端口的计算机设备
CN102541769B (zh) 一种存储器接口访问控制方法及装置
US6694407B1 (en) Cache memory with data transfer control and method of operating same
EP2592562B1 (en) Memory access for digital signal processing
KR20120097878A (ko) 다중 포트 캐시 메모리 장치 및 그 구동 방법
CN112631955B (zh) 数据处理方法、装置、电子设备以及介质
US8806132B2 (en) Information processing device, memory access control device, and address generation method thereof
US20230222058A1 (en) Zoned namespaces for computing device main memory
KR102202575B1 (ko) 메모리 관리 방법 및 장치
US7370158B2 (en) SIMD process with multi-port memory unit comprising single-port memories

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