KR20110040103A - Apparatus for accessing multi-bank memory - Google Patents

Apparatus for accessing multi-bank memory 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
Korean (ko)
Other versions
KR101553651B1 (en
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/en
Priority to US12/902,681 priority patent/US9086959B2/en
Publication of KR20110040103A publication Critical patent/KR20110040103A/en
Application granted granted Critical
Publication of KR101553651B1 publication Critical patent/KR101553651B1/en

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

PURPOSE: An apparatus for accessing a multi-bank memory is provided to reduce the core cycle taken for sorting data by allowing a memory controller to arrange and transfer data, which are required by a processor core, in hardware manner. CONSTITUTION: A stride register(700) stores a stride value, and an address conversion unit(170) controls the access in column and/or row direction in relation to a logical block of a multi-bank memory. The width of the logical block is determined by the stride value. The stride value of the stride register is set up during the execution time by a processor(500). The address conversion unit controls the access to allocate the continuous data adjacent in the row direction to different banks.

Description

다중 뱅크 메모리 액세스 장치{apparatus for accessing multi-bank memory}Device for accessing multi-bank memory

다중 뱅크 메모리(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 multi-bank memory 300, a stride register 700 that stores stride values, and a logical block whose width is determined by the stride values. ), The address translation unit 100 controls access in an interleaved manner in a row and column direction.

도시된 실시예에 있어서, 주소 변환부(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 processor 500 that accesses the multi-bank memory 300 through the address translator 100 is a multi-core processor, and includes two or more processor cores 510, 530, and 550. ) May be included. Memory ports 12 and 14 are allocated to each of the processor cores 510 and 530 accessing the multi-bank memory 300. In the illustrated embodiment, the word width accessed by the processor cores 510, 530 through each port 12, 14 is 4 bytes, i.e. 32 bits. However, it will be apparent to those skilled in the art that the present invention is not limited thereto.

도시된 실시예에 있어서, 다중 뱅크 메모리(300)는 23=8개의 뱅크들(311~318)로 구성되며, 주소 변환부(100)가 대응하는 포트들(21~28)을 통해 각각의 뱅크들을 독립적으로 액세스하는 것이 가능한 구조를 갖는다. 주소 변환부(100)는 각각의 메모리 뱅크(311~318)를 바이트 단위로 액세스할 수 있다. In the illustrated embodiment, the multi-bank memory 300 is composed of 2 3 = 8 banks 311 to 318, and each of the address translators 100 has corresponding ports 21 to 28 through corresponding ports. It is possible to access the banks independently. The address conversion unit 100 may access each of the memory banks 311 to 318 in byte units.

일 양상에 따르면, 메모리 액세스 장치는 스트라이드 레지스터(700)를 포함한다. 스트라이드 레지스터(700)는 제 1 프로세서 코어(550)에 의해 실행 시간(run time) 중에 그 값이 설정된다. 주소 변환부(100)는 스트라이드 레지스터(700)에 설정된 스트라이드 값에 따라 다중 뱅크 메모리(300)를 달리 액세스한다. According to one aspect, the memory access device includes a stride register 700. The stride register 700 is set by the first processor core 550 at run time. The address conversion unit 100 accesses the multi-bank memory 300 differently according to the stride value set in the stride register 700.

영상 처리에 있어서, 프레임 메모리에 저장된 데이터는 행 방향으로는 물론 열 방향으로 순차적으로 액세스되는 경우가 흔히 있다. 예를 들어 영상의 필터링은 행 방향과 열 방향으로 동시에 진행될 수 있다. 나아가 영상 압축이나 필터링에 있어서, 프레임 메모리에 저장된 데이터들은 흔히 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 first processor core 550 sets the frame width of the image data currently processed during the execution time through the stride register 700. The address conversion unit 100 grasps the frame width of the image currently processed from the stride value stored in the stride register 700, and applies the interleaved method in the row and column directions in controlling memory writing and reading.

도 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 processor 500 processes the portions requiring the matrix-oriented access in the execution of the program by the second and third processor cores 510 and 530, and the portions other than the fourth and fifth portions. Processor cores 570,590 process. The fourth and fifth processor cores 570 and 590 access the memory banks 321 and 322 through the ports 11 and 13. The memory access control unit 130 accesses one of the known methods such as a block allocation method or an interleaved allocation method through the memory bank side ports 31 and 33 according to an access request from the core side ports 11 and 13. .

제2, 3 프로세서 코어들(510, 530)은 포트들(12,14)을 통해 메모리 뱅크(311~318)를 액세스한다. 주소 변환부(150)는 코어측 포트(12,14)로부터의 액세스 요구에 대해 뱅크측 포트(21~28)를 통해 다중 뱅크 메모리(311~318)를 액세스한다. 주소 변환부(150)는 스트라이드 레지스터(700)에 저장된 스트라이드 값에 의해 폭이 정해지는 논리 블럭(logical block)에 대해 행과 열 방향으로 인터리브 방식으로 액세스를 제어한다. The second and third processor cores 510 and 530 access the memory banks 311 to 318 through the ports 12 and 14. The address translation unit 150 accesses the multi-bank memories 311 to 318 through the bank side ports 21 to 28 in response to an access request from the core side ports 12 and 14. The address translator 150 controls access in a row and column direction interleaved to a logical block whose width is determined by the value of the stride stored in the stride register 700.

행렬 방향의 액세스가 필요한 시점 이전에, 제 1 프로세서 코어(550)는 스트라이드 레지스터(700)에 현재 처리하는 프레임 메모리의 폭에 대응하는 값을 스트라이드 값으로 기록하고, 프레임 데이터를 직접 메모리 액세스(DMA)를 이용하여 외부 포트(16)로부터 메모리 뱅크(311~318)로 기록하도록 제어한다. 이에 따라 불필요한 지연이 초래돼지 않고, 프레임 메모리에 대한 행과 열 방향의 고속 처리가 이전의 처리에 이어서 즉시 행해질 수 있다. 이후의 처리 과정은 이전의 실시예와 유사하므로 상세한 설명은 생략한다. Prior to the point in time in which matrix direction access is required, the first processor core 550 writes a value corresponding to the width of the frame memory currently being processed in the stride register 700 as a stride value, and directly stores the frame data as a memory access (DMA). Control to write to the memory banks 311 to 318 from the external port 16 using " As a result, unnecessary delay is not caused, and high-speed processing in the row and column directions for the frame memory can be performed immediately following the previous processing. Since the subsequent processing is similar to the previous embodiment, a detailed description thereof will be omitted.

도 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 processor 500 outputs the selection signal 18 to the operation selector 110 when the matrix direction access is required during the execution of the program, and the memory access controller 130. Among the address conversion unit 150, the address conversion unit 150 is selected to operate. The processor 500 may output the selection signal 18 during a program execution time to cause the operation selector 110 to select one of the memory access controller 130 and the address converter 150 to operate.

메모리 액세스 제어부(130)는 코어측 포트들(12,14)로부터의 액세스 요구에 따라 메모리 뱅크측 포트들(31,33)을 통해 블럭 할당 방식 혹은 인터리브 할당 방식과 같은 공지된 방법 중 하나로 액세스한다. 이 같은 선택 신호(18)는 프로세서 코어(550)에 의해 생성된다. The memory access control unit 130 accesses one of the known methods such as a block allocation method or an interleaved allocation method through the memory bank side ports 31 and 33 according to an access request from the core side ports 12 and 14. . This selection signal 18 is generated by the processor core 550.

주소 변환부(150)는 코어측 포트(12,14)로부터의 액세스 요구에 대해 뱅크측 포트(21~28)를 통해 다중 뱅크 메모리(311~318)를 액세스한다. 주소 변환부(150)는 스트라이드 레지스터(700)에 저장된 스트라이드 값에 의해 폭이 정해지는 논리 블럭(logical block)에 대해 행과 열 방향으로 인터리브 방식으로 액세스를 제어한다. The address translation unit 150 accesses the multi-bank memories 311 to 318 through the bank side ports 21 to 28 in response to an access request from the core side ports 12 and 14. The address translator 150 controls access in a row and column direction interleaved to a logical block whose width is determined by the value of the stride stored in the stride register 700.

행렬 방향의 액세스가 필요한 시점 이전에, 제 1 프로세서 코어(550)는 스트라이드 레지스터(700)에 현재 처리하는 프레임 메모리의 폭에 대응하는 값을 스트라이드 값으로 기록하고, 프레임 데이터를 직접 메모리 액세스(DMA)를 이용하여 외부 포트(16)로부터 메모리 뱅크(311~318)로 기록하도록 제어한다. 이에 따라 불필요한 지연이 초래돼지 않고, 프레임 메모리에 대한 행과 열 방향의 고속 처리가 이전의 처리에 이어서 즉시 행해질 수 있다. 이후의 처리 과정은 이전의 실시예와 유사하므로 상세한 설명은 생략한다. Prior to the point in time in which matrix direction access is required, the first processor core 550 writes a value corresponding to the width of the frame memory currently being processed in the stride register 700 as a stride value, and directly stores the frame data as a memory access (DMA). Control to write to the memory banks 311 to 318 from the external port 16 using " As a result, unnecessary delay is not caused, and high-speed processing in the row and column directions for the frame memory can be performed immediately following the previous processing. Since the subsequent processing is similar to the previous embodiment, a detailed description thereof will be omitted.

도 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 address conversion unit 170 for converting an externally input memory access address into a two-dimensional address value in the logical block determined by the stride value And an address conversion unit 100 including a bank selection signal of one of the multiple banks from the two-dimensional address value converted by the two-dimensional address conversion unit, and a bank selection unit 190 for outputting an address value within the bank. do.

일 실시예에 따른 2차원 주소 변환부(170)는 입력되는 주소값 ADDR와, 스트 라이드 값 stride 에 대해, The two-dimensional address conversion unit 170 according to an embodiment with respect to the input address ADDR, the stride value stride,

(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 bank selector 190 is the first activated bank.

(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 bank selector 190 determines a bank according to (x + y), which is the sum of the x and y address values of the 2D address values converted by the 2D address converter 170. The first activated bank address value output from the bank selector 190 is

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 terminals 41 and 43 from the address value addr [31: 0] input from the processor side port 12-1. The bank selector 190 outputs a select signal 'bank select' for selecting one bank among the multiple banks through the terminal 21-3. In addition, the bank selector 190 calculates an address value in the selected bank and outputs it through the terminal 21-1. In the case of a memory read, the data data [7: 0] is read through the terminal 21-2 accordingly. Data read from the four banks is collected by the latch 180-1 and outputted through the terminal 12-2. In the case of the memory write operation, the write enable signal WE is buffered so that the latch 180-2 adjusts the timing.

도 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 address conversion unit 170 according to an embodiment may be implemented by the following program.

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 bank selector 190 may be implemented by the following program. Here, x and y are coordinate values, stride is a stride value, k is a power of 2 of banks (number of banks N = 2 k ), and b_offset is a block access size.

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)

스트라이드(stride) 값이저장된 스트라이드 레지스터와;A stride register in which a stride value is stored; 상기 스트라이드 값에 의해 폭이 정해지는 다중 뱅크 메모리(multi-bank memory) 상의 논리 블럭(logical block)에 대해 행 및 열 중에서 선택되는 어느 하나 또는 두 방향으로 액세스를 제어하는 주소 변환부;An address translator configured to control access to one or two directions selected from a row and a column of a logical block on a multi-bank memory whose width is determined by the stride value; 를 포함하는 다중 뱅크 메모리 액세스 장치.Multi-bank memory access device comprising a. 제 1 항에 있어서, 상기 스트라이드 레지스터의 스트라이드 값이 프로세서에 의해 실행 시간(run time) 중에 설정되는 다중 뱅크 메모리 액세스 장치.2. The apparatus of claim 1, wherein the stride value of the stride register is set by the processor during run time. 제 1 항에 있어서, 상기 주소 변환부는 열 방향으로 인접한 연속된 데이터들이 서로 다른 뱅크들에 할당되도록 액세스를 제어하는 다중 뱅크 메모리 액세스 장치.The multi-bank memory access device of claim 1, wherein the address translator controls access so that consecutive data adjacent in the column direction are allocated to different banks. 제 3 항에 있어서, 상기 주소 변환부는 열 방향으로 인접한 연속된 데이터들이 인접한 연속된 뱅크들에 할당되도록 액세스를 제어하는 다중 뱅크 메모리 액세 스 장치.4. The multi-bank memory access device of claim 3, wherein the address translator controls access so that consecutive data adjacent in the column direction is allocated to adjacent consecutive banks. 제 4 항에 있어서, 상기 주소 변환부는 열 방향으로 인접한 연속된 데이터들이 정수배 만큼 이격된 뱅크들에 할당되도록 액세스를 제어하는 다중 뱅크 메모리 액세스 장치.The multi-bank memory access device of claim 4, wherein the address conversion unit controls access so that consecutive data adjacent in the column direction are allocated to banks spaced by an integer multiple. 제 5 항에 있어서, 상기 주소 변환부는 열 방향으로 인접한 연속된 데이터들이 2의 거듭제곱 만큼 이격된 뱅크들에 할당되는 다중 뱅크 메모리 액세스 장치.6. The multi-bank memory access device of claim 5, wherein the address translator assigns consecutive data adjacent in the column direction to banks spaced by powers of two. 제 1 항에 있어서, 상기 주소 변환부는 : The method of claim 1, wherein the address conversion unit: 외부에서 입력되는 메모리 액세스 주소를 상기 스트라이드 값에 의해 정해지는 논리 블럭에서의 2차원 주소 값으로 변환하는 2차원 주소 변환부;A two-dimensional address conversion unit for converting an externally input memory access address into a two-dimensional address value in a logical block determined by the stride value; 상기 2차원 주소 변환부에서 변환된 2차원 주소 값으로부터 다중 뱅크 중 하나의 뱅크 선택신호와, 뱅크 내 주소 값을 출력하는 뱅크 선택부;A bank selector for outputting a bank selection signal of one of multiple banks and an address value within a bank from the 2D address value converted by the 2D address converter; 를 포함하는 다중 뱅크 메모리 액세스 장치.Multi-bank memory access device comprising a. 제 7 항에 있어서, 상기 뱅크 선택부의 뱅크 선택 신호는 2차원 주소 변환부에서 변환된 2차원 주소 값의 x, y 주소 값의 합에 따라 결정되도록 액세스를 제어하는 다중 뱅크 메모리 액세스 장치.8. The apparatus of claim 7, wherein the bank select signal of the bank selector is controlled to be determined according to a sum of x and y address values of the 2D address value converted by the 2D address converter. 제 1 항에 있어서, 상기 다중 뱅크 메모리 액세스 장치가 : The apparatus of claim 1, wherein the multi-bank memory access device is: 상기 주소 변환부와 다른 방식으로 다중 뱅크 메모리의 액세스를 제어하는 메모리 액세스 제어부;를 더 포함하는 다중 뱅크 메모리 액세스 장치.And a memory access control unit for controlling access of the multi-bank memory in a manner different from that of the address translation unit. 제 9 항에 있어서, 상기 메모리 액세스 제어부는 주소 블럭 방식으로 다중 뱅크 메모리의 액세스를 제어하는 다중 뱅크 메모리 액세스 장치.10. The apparatus of claim 9, wherein the memory access control unit controls access to the multi-bank memory in an address block manner. 제 9 항에 있어서, 상기 메모리 액세스 제어부는 뱅크의 기본 데이터 폭(data width) 단위의 인터리브 할당(interleaved allocation) 방식으로 다중 뱅크 메모리의 액세스를 제어하는 다중 뱅크 메모리 액세스 장치.The multi-bank memory access device of claim 9, wherein the memory access control unit controls access to the multi-bank memory in an interleaved allocation method in units of a basic data width of a bank. 제 9 항에 있어서, 상기 다중 뱅크 메모리 액세스 장치가 : 10. The apparatus of claim 9, wherein the multi-bank memory access device is: 코어로부터의 선택 신호에 따라 상기 주소 변환부 및 메모리 액세스 제어부 중 하나가 동작하도록 선택하는 동작 선택부;를 더 포함하는 다중 뱅크 메모리 액세스 장치.And an operation selector configured to select one of the address translator and the memory access controller to operate according to a selection signal from a core. 제 12 항에 있어서, 상기 동작 선택부는 코어로부터의 선택 신호에 따라 상기 주소 변환부 및 메모리 액세스 제어부 중 하나만 동작하도록 선택하는 다중 뱅크 메모리 액세스 장치.The multi-bank memory access device of claim 12, wherein the operation selector selects only one of the address translator and the memory access control unit to operate according to a selection signal from a core.
KR1020090097244A 2009-10-13 2009-10-13 apparatus for accessing multi-bank memory KR101553651B1 (en)

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)

* 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 (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)

* 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 (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

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
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