KR20240000773A - 프로세싱-인-메모리 컴퓨팅 시스템 및 그의 메모리 컨트롤러 - Google Patents

프로세싱-인-메모리 컴퓨팅 시스템 및 그의 메모리 컨트롤러 Download PDF

Info

Publication number
KR20240000773A
KR20240000773A KR1020220077390A KR20220077390A KR20240000773A KR 20240000773 A KR20240000773 A KR 20240000773A KR 1020220077390 A KR1020220077390 A KR 1020220077390A KR 20220077390 A KR20220077390 A KR 20220077390A KR 20240000773 A KR20240000773 A KR 20240000773A
Authority
KR
South Korea
Prior art keywords
pim
request
memory
read
burst length
Prior art date
Application number
KR1020220077390A
Other languages
English (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 KR1020220077390A priority Critical patent/KR20240000773A/ko
Priority to US18/068,995 priority patent/US12001682B2/en
Publication of KR20240000773A publication Critical patent/KR20240000773A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction 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/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Feedback Control In General (AREA)
  • Complex Calculations (AREA)
  • Dram (AREA)

Abstract

본 발명은 PIM 컴퓨팅 시스템 및 그의 메모리 컨트롤러를 개시하며, 상기 PIM 컴퓨팅 시스템은 PIM 리퀘스트의 경우 페이지 단위로 PIM 연산을 수행할 수 있도록 버스트 렝쓰를 증가시킴으로써 메모리 트래픽을 개선하고 PIM 연산 효율을 개선할 수 있다.

Description

프로세싱-인-메모리 컴퓨팅 시스템 및 그의 메모리 컨트롤러{PIM COMPUTING SYSTEM AND MEMORY CONTROLLER THEROF}
본 발명은 프로세싱-인-메모리(Processing-in-Memory: 이하, PIM이라 함) 컴퓨팅 시스템에 관한 것으로서, 보다 상세하게는 효율적인 PIM 연산을 위한 버스트 렝쓰(Burst Length)를 구성하는 PIM 컴퓨팅 시스템 및 그의 메모리 컨트롤러에 관한 것이다.
반도체 메모리를 이용하는 시스템의 중앙 처리 장치(Central Processing Unit: 이하, CPU라 함)는 반도체 메모리에 저장된 코드나 데이터를 읽고(read), 지정된 프로그램을 실행(execute)하며, 그 결과를 반도체 메모리에 저장할 수 있다. 반도체 메모리의 일예로서, 디램(DRAM)이 예시될 수 있다.
최근 반도체 메모리는 프로세싱-인-메모리(Processing-in-Memory: 이하, PIM이라 함) 연산 기능을 갖도록 개발되고 있다. PIM 연산 기능은 머신 러닝(Machine Learning), 고성능 컴퓨팅 및 빅 데이터의 처리 분야 등에서 데이터 이동(Move)시 발생하는 정체를 해결하기 위하여 반도체 메모리 내부에서 연산을 수행하는 기능을 의미한다.
상기와 같이, PIM 연산 기능을 갖는 반도체 메모리를 이용하는 시스템은 PIM 컴퓨팅 시스템이라 할 수 있다.
CPU는 메모리 리퀘스트를 캐시 계층을 통하여 메모리 컨트롤러로 전달할 수 있고, 메모리 컨트롤러는 메모리 리퀘스트를 메모리로 전달할 수 있다.
메모리 컨트롤러는 CPU가 요청하는 리퀘스트를 처리하기 위한 슬레이브 디바이스로 이용된다. 그러므로, 메모리 리퀘스트에 대응한 DRAM의 리드 단위(Read Granularity)는 캐시 계층의 캐시 라인 사이즈(Cache-line size)에 의해 결정될 수 있다. 캐시 라인 사이즈는 64 바이트로 예시될 수 있다. 상기한 DRAM의 리드 단위는 CPU의 효율적인 연산을 위한 것이다.
메모리 리퀘스트는 DRAM에 대한 메모리 프로세싱을 위한 것과 메모리를 이용한 PIM 연산을 위한 것으로 구분될 수 있다. PIM 연산을 위한 메모리 리퀘스트는 PIM 리퀘스트로 정의할 수 있다.
PIM 리퀘스트는 일반적인 메모리 리퀘스트와 다르게 DRAM 내부에서 PIM 연산을 수행한다. 그러므로, DRAM 외부의 캐시 라인 사이즈를 고려한 일반 메모리 리퀘스트의 리드 단위가 PIM 리퀘스트의 PIM 연산에 적용되는 것은 비효율적이다.
즉, PIM 연산을 위한 리드 단위를 증가시켜서 PIM 리퀘스트를 위한 메모리 트래픽을 개선시키면서 PIM 연산을 효율적으로 개선시킬 필요가 있다.
본 발명의 목적은 PIM 리퀘스트를 위한 메모리 트래픽을 개선시키면서 PIM 연산을 효율적으로 개선시킬 수 있는 프로세싱-인-메모리 컴퓨팅 시스템 및 그의 메모리 컨트롤러를 제공함에 있다.
본 발명의 다른 목적은 일반 메모리 리퀘스트와 PIM 연산을 위한 PIM 리퀘스트 중 PIM 리퀘스트에 증가된 버스트 렝쓰를 적용하며, 일반 메모리 리퀘스트와 PIM 리퀘스트를 같이 서비스할 수 있는 프로세싱-인-메모리 컴퓨팅 시스템 및 그의 메모리 컨트롤러를 제공함에 있다.
본 발명의 또다른 목적은 일반 메모리 리퀘스트와 PIM 연산을 위한 PIM 리퀘스트의 DRAM의 리드 단위(Read Granularity)를 다르게 적용함으로써 PIM 연산의 효율성을 확보하고 메모리 트래픽을 개선시킬 수 있는 프로세싱-인-메모리 컴퓨팅 시스템 및 그의 메모리 컨트롤러를 제공함에 있다.
본 발명의 또다른 목적은 메모리 트래픽을 개선하기 위하여 일반 메모리 리퀘스트는 캐시 라인 사이즈(Cache-line size)를 고려한 버스트 렝쓰를 적용하고 PIM 연산을 위한 PIM 리퀘스트는 페이지 단위로 증가시킨 버스트 렝쓰를 적용하는 프로세싱-인-메모리 컴퓨팅 시스템 및 그의 메모리 컨트롤러를 제공함에 있다.
본 발명의 PIM 컴퓨팅 시스템은, 메모리 리퀘스트의 주소를 미리 등록된 PIM 주소 정보와 비교하여 메모리 리퀘스트와 PIM 리퀘스트로 구분하며, 상기 메모리 리퀘스트 적용되는 제1 버스트 렝쓰보다 증가된 제2 버스트 렝쓰를 적용하여 상기 PIM 리퀘스트를 스케쥴링하는 메모리 컨트롤러; 및 리드 명령을 위한 상기 PIM 리드 리퀘스트가 전달되면, 상기 제2 버스트 렝쓰에 해당하는 제2 리드 단위(Read Granularity)의 데이터를 리드하는 PIM 연산을 수행하는 DRAM;을 포함함을 특징으로 한다.
그리고, 본 발명의 PIM 컴퓨팅 시스템의 메모리 컨트롤러는, 메모리 리퀘스트들을 수신하고, 상기 메모리 리퀘스트에 의해 요청된 주소와 미리 등록된 PIM 주소 정보를 비교하여 상기 메모리 리퀘스트가 PIM 리퀘스트에 해당하는지 확인한 PIM 리퀘스트 확인 신호를 제공하는 PIM 인터페이스 유니트; 상기 메모리 리퀘스트들을 수신하고, 상기 메모리 리퀘스트와 상기 PIM 인터페이스 유니트의 상기 PIM 리퀘스트 확인 신호를 전달하는 리퀘스트 큐 유니트; 및 상기 PIM 리퀘스트 확인 신호에 의해 상기 PIM 리퀘스트가 리드 명령을 위한 PIM 리드 리퀘스트로 확인된 경우, 상기 메모리 리퀘스트에 적용되는 상기 제1 버스트 렝쓰보다 증가된 제2 버스트 렝쓰를 상기 PIM 리드 리퀘스트에 적용하며, 상기 메모리 리퀘스트와 상기 PIM 리퀘스트의 전달을 스케쥴링하는 스케쥴러;를 포함함을 특징으로 한다.
본 발명은 메모리 리퀘스트와 PIM 리퀘스트를 동시에 지원할 수 있는 스케쥴링 기법을 제공하는 효과가 있다.
본 발명은 PIM 리퀘스트에 대한 버스트 렝쓰를 증가시킴으로써 PIM 리퀘스트를 위한 메모리 트래픽을 개선시키면서 PIM 연산을 효율적으로 개선시킬 수 있는 효과가 있다.
본 발명은 PIM 리퀘스트에 대하여 버스트 렝쓰를 다양하게 구성할 수 있으며, 그 결과 다양한 사양의 DRAM과 오퍼레이팅 시스템에 이용할 수 있는 확장성을 갖는 효과가 있다.
도 1은 본 발명의 PIM 컴퓨팅 시스템의 바람직한 실시예를 나타내는 블록도.
도 2는 일반 메모리 리퀘스트에 의해 리드 명령이 실행되는 데이터 플로우를 설명하는 도면.
도 3은 PIM 리퀘스트에 의해 리드 명령이 실행되는 데이터 플로우를 설명하는 도면.
도 4는 확장된 DRAM 상태 다이어그램(State Diagram)을 설명하는 도면.
도 5는 메모리 리드 리퀘스트에 의한 시간 제한(Timing Constraint)을 설명하는 테이블.
도 6은 PIM 리드 리퀘스트에 의한 시간 제한(Timing Constraint)을 설명하는 테이블.
도 7은 메모리 컨트롤러와 DRAM의 상세 블록도.
도 8은 도 7의 PIM 인터페이스 유니트들의 블록도.
도 9는 PIM 인터페이스 유니트(34)에 포함된 PIM 리퀘스트 확인 유니트를 예시한 블록도.
도 10은 PIM 인터페이스 유니트(50)에 포함된 PIM 리퀘스트 확인 유니트를 예시한 블록도.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명한다. 본 명세서 및 특허청구범위에 사용된 용어는 통상적이거나 사전적 의미로 한정되어 해석되지 아니하며, 본 발명의 기술적 사항에 부합하는 의미와 개념으로 해석되어야 한다.
본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 바람직한 실시예이며, 본 발명의 기술적 사상을 모두 대변하는 것이 아니므로, 본 출원 시점에서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있다.
도 1을 참조하면, 본 발명의 PIM 컴퓨팅 시스템의 실시예는 CPU(10), 캐시 계층(12), DMA 엔진(20), 메모리 컨트롤러(30) 및 DRAM(40)을 포함할 수 있다.
메모리 버스(MB)는 캐시 계층(12), DMA 엔진(20) 및 메모리 컨트롤러(30) 간의 인터페이스를 제공하도록 구성된다.
일반적으로 CPU(10)는 DRAM(40)에 저장된 코드나 데이터를 읽고(read), 지정된 프로그램을 실행(execute)하며, 그 결과를 반도체 메모리인 DRAM(40)에 저장하도록 구성될 수 있다.
캐시 계층(12)은 메모리 버스(MB)를 통하여 입출력되는 CPU(10)의 데이터를 임시 저장하기 위하여 구성된 것으로 이해될 수 있고, CPU(10)의 입출력을 위한 데이터 양은 캐시 계층(12)의 캐시 라인 사이즈 즉 캐시 용량에 의해 제한될 수 있다.
본 발명의 PIM 컴퓨팅 시스템의 실시예는 CPU(10)가 DRAM(40)에 메모리 리퀘스트를 제공하여 연산을 수행하거나, DMA 엔진(20)이 CPU(10)에서 오프로딩된 메모리 리퀘스트를 제공하여 DRAM(40) 내부에서 PIM 연산을 수행하도록 제어하도록 구성될 수 있다.
DMA 엔진(20)은 예시적으로, 머신 러닝(Machine Learning), 고성능 컴퓨팅 및 빅 데이터의 처리 분야 등을 위하여 오프로딩된 메모리 리퀘스트에 대응한 트랜잭션(Transaction)을 발생시키며, CPU(10)의 관여없이 DRAM(40)의 PIM 연산을 제어할 수 있다.
상기와 같이, 메모리 리퀘스트는 CPU(10)가 연산을 위하여 DRAM(40)에 대해 메모리 프로세싱을 요청하는 것과 DMA 엔진(20)이 DRMA(40) 내부의 PIM 연산을 제어하기 위한 것으로 구분될 수 있다.
상기한 PIM 연산을 위한 메모리 리퀘스트는 일반 메모리 리퀘스트와 구분을 위하여 PIM 리퀘스트로 정의할 수 있다.
메모리 컨트롤러(30)는 메모리 버스(MB)를 통한 외부의 메모리 리퀘스트를 수신하고, 메모리 리퀘스트가 PIM 리퀘스트인지 판단하고, 일반 메모리 리퀘스트와 PIM 리퀘스트를 DRAM(40)에 전달하는 것을 스케쥴링한다.
CPU(10)는 PIM 리퀘스트를 판단하기 위한 PIM 주소 정보를 메모리 컨트롤러(30) 및 DRAM(40)에 미리 등록할 수 있다. 메모리 컨트롤러(30) 및 DRAM(40)은 상기와 같이 등록된 PIM 주소 정보를 이용하여 메모리 리퀘스트가 PIM 리퀘스트인지 판단할 수 있다.
보다 구체적으로, 메모리 컨트롤러(30)는 메모리 리퀘스트에 의해 요청된 주소와 미리 등록된 PIM 주소 정보를 비교하여 메모리 리퀘스트 중 PIM 리퀘스트를 확인한다.
그리고, 메모리 컨트롤러(30)는 PIM 리퀘스트가 데이터의 리드를 위한 PIM 리드 리퀘스트에 해당하는 경우, 데이터의 리드를 위하여 메모리 리퀘스트에 적용되는 제1 버스트 렝쓰보다 증가된 제2 버스트 렝쓰를 PIM 리드 리퀘스트에 적용하며, 메모리 리퀘스트와 PIM 리퀘스트의 전달을 스케쥴링할 수 있다. 메모리 컨트롤러(30)는 PIM 리퀘스트의 명령 정보로써 PIM 리드 리퀘스트에 해당하는 여부를 구분할 수 있다.
DRAM(40)은 PIM 리드 리퀘스트가 전달되면, 메모리 리퀘스트에 의해 요청된 주소와 미리 등록된 PIM 주소 정보를 비교하여 PIM 리퀘스트 여부를 확인한다.
그리고, DRAM(40)은 예시적으로 데이터의 리드를 위한 일반 메모리 리퀘스트가 전달된 경우, 제1 버스트 렝쓰에 해당하는 제1 리드 단위(Read Granularity)의 데이터를 리드할 수 있다.
또한, DRAM(40)은 PIM 리퀘스트가 전달된 경우, 제1 버스트 렝쓰에 해당하는 제1 리드 단위(Read Granularity)보다 증가된 제2 버스트 렝쓰에 해당하는 제2 리드 단위(Read Granularity)의 데이터를 리드하는 PIM 연산을 수행할 수 있다.
버스트 렝쓰(Burst Length)는 DRAM(40)의 단일 읽기/쓰기 명령을 기반으로 입력/출력되는 데이터의 양을 규정하는 것이다.
CPU(10)로 입출력되는 데이터의 양은 캐시 계층(12)의 캐시 라인 사이즈에 의해 제한될 수 있다. 예시적으로, 데이터 출력 핀(DQ)이 64개인 DDR4의 경우, 데이터를 전달하는데 필요한 버스트의 개수는 8로 정의될 수 있다. 즉, 버스트 렝쓰는 8로 정의될 수 있다.
일반 메모리 리퀘스트는 CPU(10)로 데이터의 입력/출력을 필요로 하며, 상기한 캐시 라인 사이즈에 의해 데이터 양이 제한된다. 그러므로, 일반 메모리 리퀘스트의 리드와 라이트의 경우는 상기한 버스트 렝쓰 8 즉 제1 버스트 렝쓰를 갖도록 설정될 수 있다.
메모리 컨트롤러(30)에 의해 제1 버스트 렝쓰를 갖도록 설정된 일반 메모리 리퀘스트의 리드 명령에 따른 DRAM(40)의 동작은 도 2를 참조하여 설명될 수 있다.
DRAM(40)의 메모리는 복수의 뱅크를 포함한다. 예시적으로 메모리는 16 개의 뱅크를 포함할 수 있으며, 뱅크들은 뱅크 0(Bank 0) 내지 뱅크 15(Bank 15)로 구분할 수 있다. 그리고, 각 뱅크는 복수의 컬럼 주소와 복수의 로오 주소에 대응하는 메모리 셀들을 포함하도록 구성된다.
명령이 전달되는 버스는 Command Bus로 표시되고, 일반 메모리 리퀘스트의 리드 명령은 RD로 표시한다. 도 2에서, RD Bank 0은 뱅크 0의 메모리 리퀘스트의 리드 명령을 의미하며, RD Bank 1은 Bank 1의 메모리 리퀘스트의 리드 명령을 의미한다.
메모리 리퀘스트의 리드 명령 RD Bank 0에 대응하여, 뱅크 0의 해당 데이터는 컬럼 선택 라인(Column select line, CSL), 입출력 스위치(Input/Output Switch, IOSW), 입출력 센스 증폭기(Input/Output Sense Amplifier, IOSA) 및 데이터 출력 핀(Data output Pin, DQ)을 경유하여 메모리 버스(MB)로 출력될 수 있다.
컬럼 선택 라인(CSL)과 입출력 스위치(IOSW)는 셀 입출력 라인(SIO)을 통하여 연결되고, 입출력 스위치(IOSW)와 입출력 센스 증폭기(IOSA)는 로컬 입출력 라인(LIO)을 통하여 연결되고, 입출력 센스 증폭기(IOSA)와 데이터 출력 핀(DQ)은 글로벌 입출력 라인(GIO)를 통하여 연결된다.
여기에서, 메모리 셀의 데이터가 리드된 후 입출력 센스 증폭기(IOSA)까지 전달되는 경로의 구성 요소들은 각 뱅크 별로 구성된 것으로 이해될 수 있고, 글로벌 입출력 라인(GIO)과 데이터 출력 핀(DQ)은 모든 뱅크들이 공유하는 구성 요소로 이해될 수 있다.
데이터의 리드를 위한 메모리 리퀘스트의 경우, 리드된 데이터는 글로벌 입출력 라인(GIO)과 데이터 출력 핀(DQ)를 통하여 출력된다. 그러므로, 특정 뱅크의 데이터가 글로벌 입출력 라인(GIO)과 데이터 출력 핀(DQ)을 통하여 출력되는 경우, 나머지 뱅크들은 글로벌 입출력 라인(GIO)과 데이터 출력 핀(DQ)에 접근할 수 없다.
그러므로, 뱅크들이 공유하는 글로벌 입출력 라인(GIO) 및 데이터 출력 핀(DQ)에서 리소스 충돌(Resource Conflict)이 발생하는 것을 방지하기 위하여, 메모리 컨트롤러(30)는 연속하는 리드 명령들 간 시간 제한(Timing Constraint)을 적용하여 메모리 리퀘스트들을 스케쥴링한다.
상기한 시간 제한은 버스트 렝쓰에 따라 결정될 수 있다.
예시적으로, 상기와 같이 일반 메모리 리퀘스트의 제1 버스트 렝쓰는 버스트 렝쓰 8로 설정될 수 있으며, 이 경우, 메모리 리퀘스트의 리드 명령들 간 시간 제한 tCCD는 예시적으로, 64 바이트의 데이터를 뱅크에서 외부 버스로 전달하는데 소요되는 시간으로 설정될 수 있다. 이때, 64 바이트는 캐시 라인 사이즈의 용량에 해당하는 것으로 이해될 수 있다.
일반 메모리 리퀘스트의 경우, 메모리 컨트롤러(30)는 리드 명령 RD Bank 0을 DRAM(40)에 제공하고 제1 버스트 렝쓰에 해당하는 시간 제한 tCCD이 경과한 후 리드 명령 RD Bank 1을 DRAM(40)에 제공하도록 스케쥴링한다. 그에 따라, DRAM(40)은 뱅크 0에서 리드한 데이터를 시간 제한 tCCD 동안 글로벌 입출력 라인(GIO) 및 데이터 출력 핀(DQ)를 통하여 출력하고 그 후 뱅크 1에서 리드한 데이터를 시간 제한 tCCD 동안 글로벌 입출력 라인(GIO) 및 데이터 출력 핀(DQ)를 통하여 출력할 수 있다.
메모리 컨트롤러(30)는 일반 메모리 리퀘스트의 동일한 뱅크의 연속하는 리드 명령에 대해서도 제1 버스트 렝쓰를 적용하고 시간 제한 tCCD가 경과한 후 후속하는 리드 명령을 수행하도록 메모리 리퀘스트들을 스케쥴링할 수 있다.
한편, PIM 리퀘스트는 DRAM(40) 내부에서 PIM 연산을 수행하기 위한 것이다. PIM 리퀘스트의 경우 도 3을 참조하여 설명한다.
도 3에서, PIM 리드 리퀘스트의 리드 명령은 P-RD로 표시한다. 그러므로, P-RD Bank 0은 뱅크 0의 PIM 리드 리퀘스트의 리드 명령을 의미하며, P-RD Bank 1은 Bank 1의 PIM 리퀘스트의 리드 명령을 의미한다. P-RD Bank 0과 P-RD Bank 1은 다른 뱅크들에 PIM 리드 리퀘스트들이 연속하여 제공한 것을 예시한 것으로 이해될 수 있다.
그리고, 도 3은 뱅크 0의 리드 명령 P-RD Bank 0이 제공되는 시간을 기준으로 시간 제한 tCCD_PIM이 경과한 후 메모리 리퀘스트에 의한 뱅크 0의 리드 명령 RD Bank 0이 후속하는 것을 예시한다. P-RD Bank 0과 RD Bank 0은 PIM 리드 리퀘스트의 리드 명령 이후 다른 뱅크에 메모리 리퀘스트에 의한 리드 명령이 제공되는 것을 예시한 것으로 이해될 수 있다.
DRAM(40)에서 PIM 연산은 뱅크들 별로 수행될 수 있다.
도 3을 참조하면, PIM 리드 리퀘스트에 의한 리드 명령 P-RD Bank 0에 대응하여, 뱅크 0의 데이터는 컬럼 선택 라인(Column select line, CSL), 입출력 스위치(Input/Output Switch, IOSW) 및 입출력 센스 증폭기(Input/Output Sense Amplifier, IOSA)를 통하여 후술하는 도 7의 PIM 연산을 위한 PIM 인터페이스 유니트(50)로 제공될 수 있다. PIM 리드 리퀘스트의 경우, 리드된 데이터는 글로벌 입출력 라인(GIO)과 데이터 출력 핀(DQ)으로 제공되지 않는다.
상기와 같이 뱅크 0은 PIM 리드 리퀘스트에 대응하여 글로벌 입출력 라인(GIO)과 데이터 출력 핀(DQ)을 이용하지 않는다. 그러므로, 다른 뱅크가 글로벌 입출력 라인(GIO)과 데이터 출력 핀(DQ)에 접근할 수 있다.
그러므로, 뱅크 0의 PIM 리드 리퀘스트는 다른 뱅크들의 PIM 리드 리퀘스트 또는 일반 메모리 리퀘스트를 고려한 시간 제한(Timing Constraint)을 적용할 필요가 없다.
즉, 메모리 컨트롤러(30)는 다른 뱅크에 대한 PIM 리퀘스트의 리드 명령 P-RD Bank 0과 P-RD Bank를 시간 제한(Timing Constraint)을 적용할 필요없이 순차적으로 제공할 수 있고, DRAM(40)은 뱅크 O과 뱅크 1에서 PIM 연산을 위한 데이터를 리드할 수 있다.
PIM 연산은 상기한 이유로 캐시 라인 사이즈를 고려할 필요가 없다.
그러므로, PIM 연산을 위한 리드 단위(Read Granularity)는 DRAM(40)의 메모리 관리 단위인 페이지 단위로 증가된 양으로 관리하는 것이 효과적이다.
한 페이지의 크기는 예시적으로 4K 바이트로 설정될 수 있다. DRAM(40)이 16 개의 뱅크를 갖는 것을 가정하면, 각 뱅크는 256 바이트씩 PIM 연산을 효과적으로 수행할 수 있다.
버스트 렝쓰 8의 메모리 리퀘스트의 경우, 각 뱅크의 256 바이트를 연산하기 위하여 4 개의 메모리 리퀘스트가 필요하고, 16 개의 뱅크에 분산된 한 페이지의 데이터를 리드하기 위해서는 64개의 메모리 리퀘스트가 필요하다.
그러나, 리드 단위(Read Granularity)를 256 바이트로 정의하면, 한 페이지를 연산하기 위해 모든 뱅크에 리퀘스트를 한번씩만 제공하면 된다. 이 경우, 16개의 리퀘스트가 필요하다. 상기한 리드 단위는 64바이트에서 4배 증가된 것이며, 각 뱅크를 연산하기 위한 제2 버스트 렝쓰는 제1 버스트 렝쓰 8에서 4배 증가된 32로 설정될 수 있다. 즉, PIM 리드 리퀘스트는 제2 버스트 렝쓰 32를 가지며, 제2 버스트 렝쓰만큼 증가된 시간 제한 tCCD_PIM을 갖도록 설정될 수 있다.
상기와 같이 제2 버스트 렝쓰를 적용한 PIM 리퀘스트의 경우, 한 페이지를 연산하기 위하여 각 뱅크 별로 한번씩 PIM 리퀘스트가 필요하며, 결과적으로 리퀘스트를 위한 메모리 트래픽이 감소될 수 있고, PIM 연산이 효과적으로 수행될 수 있다.
PIM 연산은 메모리 컨트롤러(30)로 데이터를 전달할 필요가 없다. 그러므로, 리드 단위(Read Granularity)가 증가되어도, 다른 뱅크들의 PIM 리드 리퀘스트 간에 사이에 리소스 충돌(Resource Conflict)이 발생하지 않는다. 그러므로, PIM 리드 리퀘스트는 다른 뱅크들의 PIM 리퀘스트 또는 메모리 리퀘스트를 고려한 시간 제한(Timing Constraint)을 적용할 필요가 없다.
다만, 동일한 뱅크의 PIM 리드 리퀘스트는 메모리 셀의 데이터가 리드된 후 입출력 센스 증폭기(IOSA)까지 전달되는 경로의 적어도 일부 구성 요소를 공유할 수 있다. 그러므로, 동일한 뱅크의 PIM 리드 리퀘스트들의 경우, PIM 리드 리퀘스트는 후속하는 PIM 리퀘스트 또는 메모리 리퀘스트를 고려하여 제2 버스트 렝쓰 32를 고려한 시간 제한(Timing Constraint) tCCD_PIM을 적용할 필요가 있다.
이에 대하여 도 3을 참조하여 구체적으로 설명하면, 뱅크 0의 리드 명령 P-RD Bank 0이 제공되는 시간을 기준으로 시간 제한 tCCD_PIM이 경과한 후 메모리 리퀘스트에 의한 뱅크 0의 리드 명령 RD Bank 0이 후속하는 것을 예시한다. P-RD Bank 0과 RD Bank 0은 PIM 리드 리퀘스트의 리드 명령 이후 다른 뱅크에 메모리 리퀘스트에 의한 리드 명령이 제공되는 것을 예시한 것으로 이해될 수 있다.
P-RD Bank 0과 RD Bank 0과 같이, 동일 뱅크에서 PIM 리드 리퀘스트에 후속하여 PIM 리퀘스트 또는 메모리 리퀘스트가 제공되는 경우, 메모리 컨트롤러(30)는 PIM 리드 리퀘스트에 제2 버스트 렝쓰 32를 고려한 시간 제한(Timing Constraint) tCCD_PIM을 적용하여 스케쥴링할 수 있다.
본 발명의 실시예는 PIM 연산을 위한 리드 단위(Read Granularity)가 늘어나는 만큼 DRAM(40)의 버스트 렝쓰가 늘어나고, 이에 따라 메모리 컨트롤러(30)는 시간 제한(Timing Constraint) tCCD_PIM을 늘려서 스케쥴링할 수 있다.
본 발명의 실시예는 상기와 같이 메모리 컨트롤러(30)가 서로 다른 시간 제한(Timing Constraint)을 갖도록 PIM 리퀘스트와 일반 메모리 리퀘스트를 스케쥴링하도록 실시될 수 있다.
그리고, 본 발명의 실시예에서 메모리 컨트롤러(30)는 제1 버스트 렝쓰보다 증가된 제2 버스트 렝쓰를 갖도록 PIM 리드 리퀘스트를 설정할 수 있다.
상기한 제2 버스트 렝쓰는 페이지 단위로 확장되며 제1 버스트 렝쓰의 배수로 증가된 값을 갖도록 설정될 수 있다.
보다 구체적으로, 본 발명의 실시예는 버스트 렝쓰를 8, 16, 32 ... 등의 배수로 조절할 수 있다. 그러므로, 시간 제한(Timing Constraint)도 제1 버스트 렝쓰에 대한 시간 제한 tCCD의 배수 즉, tCCD, tCCD*2, tCCD*3 ... tCCD*N으로 늘어날 수 있다. 본 발명의 실시예에서 제2 버스트 렝쓰에 의한 시간 제한 tCCD_PIM은 tCCD*4에 해당하는 것으로 이해될 수 있다.
한편, 도 4는 본 발명의 실시예에 의해 확장된 DRAM 상태 다이어그램(State Diagram)을 설명하는 도면이다.
도 4를 참조하면, 본 발명의 실시예는 일반적인 DRAM 상태 다이어그램을 그대로 유지하며, PIM 리드 리퀘스트에 대해 동일한 PIM 리드 상태(PIM read state)로 트랜지션(Transition)이 발생함을 알 수 있다. 동일한 상태(state)로 반복되는 트랜지션은 버스트 렝쓰가 늘어난 것과 동일한 의미로 이해될 수 있다.
한편, 도 5는 데이터 리드를 위한 일반 메모리 리퀘스트에 적용되는 시간 제한(Timing Constraint)을 예시한 테이블이다. 도 5에서, ① 및 ②는 명령의 순서를 표시하기 위한 것이다.
리드를 위한 메모리 리퀘스트들(RD)이 동일 뱅크 또는 다른 뱅크들에서 연속되는 경우, 메모리 컨트롤러(30)는 글로벌 입출력 라인(GIO)과 데이터 출력 핀(DQ)에서 리소스 충돌을 방지하기 위하여 ①의 메모리 리퀘스트에 시간 제한(Timing Constraint) tCCD를 적용한다.
리드를 위한 메모리 리퀘스트(RD)와 라이트를 위한 메모리 리퀘스트(WR)가 동일 뱅크 또는 다른 뱅크들에서 연속되는 경우, 메모리 컨트롤러(30)는 리드를 위한 메모리 리퀘스트(RD)에 리드에서 라이트로 전환을 위하여 미리 설정된 시간 제한을 적용한다. 리드에서 라이트로 전환을 위하여 미리 설정된 시간 제한은 리드 레이턴시(tRL), 버스트 렝쓰(tBL) 및 라이트 레이턴시(tWL)를 이용하여 결정될 수 있다. 예시적으로 시간 제한은 tRL+tBL+2-tWL로 결정될 수 있다.
리드를 위한 메모리 리퀘스트(RD)와 프리차지를 위한 메모리 리퀘스트(PRE)가 동일 뱅크에 연속되는 경우, 메모리 컨트롤러(30)는 리드에서 프리차지로 전환하기 위하여 미리 설정된 시간 제한(tRTP)을 적용한다. 이와 달리, 리드를 위한 메모리 리퀘스트(RD)와 프리차지를 위한 메모리 리퀘스트(PRE)가 다른 뱅크들에서 연속되는 경우, 메모리 컨트롤러(30)는 리드를 위한 메모리 리퀘스트에 시간 제한을 고려할 필요가 없다.
도 6은 PIM 리드 리퀘스트에 적용되는 시간 제한(Timing Constraint)을 예시한 테이블이다.
PIM 리드 리퀘스트(PIM RD) 이후 동일한 뱅크의 PIM 리드 리퀘스트(PIM RD) 또는 데이터의 리드를 위한 메모리 리퀘스트(RD)가 연속되는 경우, 메모리 컨트롤러(30)는 앞선 PIM 리드 리퀘스트(PIM RD)의 제2 버스트 렝쓰를 적용한 시간 제한(Timing constraint) tCCD_PIM을 경과한 후 연속되는 PIM 리드 리퀘스트(PIM RD) 또는 데이터의 리드를 위한 메모리 리퀘스트(RD)를 전달할 수 있다.
PIM 리드 리퀘스트(PIM RD) 이후 다른 뱅크의 PIM 리드 리퀘스트(PIM RD) 또는 데이터의 리드를 위한 메모리 리퀘스트(RD)가 연속되는 경우, 메모리 컨트롤러(30)는 앞선 PIM 리드 리퀘스트(PIM RD)의 시간 제한(Timing constraint)을 고려할 필요가 없다.
PIM 리드 리퀘스트(PIM RD) 이후 동일하거나 다른 뱅크의 데이터의 라이트를 위한 PIM 리퀘스트(PIM WR) 또는 메모리 리퀘스트(WR)가 연속되는 경우, 메모리 컨트롤러(30)는 PIM 리드 리퀘스트(PIM)의 제2 버스트 렝쓰를 적용한 시간 제한(Timing constraint) tCCD_PIM과 리드에서 라이트로 전환을 위하여 미리 설정된 시간을 경과한 후 데이터의 라이트를 위한 PIM 리퀘스트(PIM WR) 또는 메모리 리퀘스트(WR)를 전달할 수 있다. 리드에서 라이트로 전환을 위하여 미리 설정된 시간 제한은 리드 레이턴시(tRL), 버스트 렝쓰(tBL) 및 라이트 레이턴시(tWL)를 이용하여 결정될 수 있다. 예시적으로 시간 제한은 tRL+tBL+2-tWL로 결정될 수 있다.
PIM 리드 리퀘스트(PIM_RD) 이후 다른 뱅크의 프리차지를 위한 메모리 리퀘스트(PRE)가 연속되는 경우, 메모리 컨트롤러(30)는 PIM 리드 리퀘스트의 제2 버스트 렝쓰를 적용한 시간 제한(Timing constraint) tCCD_PIM과 무관하게 PIM 리퀘스트 메모리 리퀘스트를 전달할 수 있다.
PIM 리드 리퀘스트(RD) 이후 동일 뱅크의 프리차지를 위한 메모리 리퀘스트(PRE)가 연속되는 경우, 메모리 컨트롤러(30)는 PIM 리드 리퀘스트(PIM RD)의 제2 버스트 렝쓰를 적용한 시간 제한(Timing constraint) tCCD_PIM과 리드에서 프리차지로 전환을 위하여 미리 설정된 시간(tRTP)을 경과한 후 프리차지를 위한 메모리 리퀘스트(PRE)를 전달할 수 있다.
한편, 메모리 컨트롤러(30)와 DRAM(40)의 상세 구성은 도 7을 참조하여 설명될 수 있다.
먼저, 메모리 컨트롤러(30)는 데이터 큐 유니트(32), PIM 인터페이스 유니트(34), 리퀘스트 큐 유니트(36) 및 스케쥴러(38)를 포함한다.
메모리 컨트롤러(30)는 메모리 리퀘스트를 수신하고, 메모리 리퀘스트에 대응하는 리드 또는 라이트 데이터를 입출력하도록 구성된다. 여기에서, 메모리 리퀘스트는 리드 또는 라이트 트랜잭션으로 표현될 수 있으며, 주소 정보 및 명령 정보를 포함하는 것으로 이해될 수 있다.
데이터 큐 유니트(32)는 FIFO 방식으로 데이터를 수신하여 저장하고 출력하도록 구성된 것으로 이해될 수 있으며, 메모리 버스(MB)와 DRAM(40) 간의 데이터 전달을 수행할 수 있다.
PIM 인터페이스 유니트(34)는 메모리 리퀘스트의 주소 정보와 명령 정보를 수신하도록 구성된다.
PIM 인터페이스 유니트(34)는 PIM 리퀘스트의 판단을 위한 PIM 주소 정보가 등록되며, 외부에서 수신된 메모리 리퀘스트에 의해 요청된 주소와 PIM 주소 정보를 비교하여 메모리 리퀘스트가 PIM 리퀘스트에 해당하는지 확인한 PIM 리퀘스트 확인 신호를 제공하도록 구성될 수 있다.
PIM 인터페이스 유니트(34)에 등록된 PIM 리퀘스트의 판단을 위한 PIM 주소 정보는 CPU(10)에서 미리 등록된 것으로 이해될 수 있다.
PIM 인터페이스 유니트(34)에는 PIM 리퀘스트에 의한 PIM 오퍼랜드들 별 버스트 렝쓰 정보들이 세팅될 수 있고, PIM 인터페이스 유니트(34)는 PIM 리퀘스트의 PIM 오퍼랜드에 해당하는 버스트 렝쓰 정보를 스케쥴러(38)에 제공하도록 구성될 수 있다.
리퀘스트 큐 유니트(36)는 외부에서 수신된 메모리 리퀘스트와 PIM 인터페이스 유니트(34)에서 제공되는 PIM 리퀘스트 확인 신호를 FIFO 방식으로 수신하여 저장하고 출력하도록 구성된 것으로 이해될 수 있다. 즉, 리퀘스트 큐 유니트(36)는 메모리 리퀘스트와 PIM 리퀘스트 확인 신호를 전달하도록 구성될 수 있다.
스케쥴러(38)는 메모리 리퀘스트, PIM 리퀘스트 확인 신호 및 PIM 오퍼랜드에 해당하는 버스트 렝쓰 정보를 수신할 수 있으며, 메모리 리퀘스트와 PIM 리퀘스트의 전달을 스케쥴링하도록 구성될 수 있다.
보다 구체적으로, 스케쥴러(38)는 데이터의 리드를 위한 메모리 리퀘스트에 제1 버스트 렝쓰를 적용하고, PIM 리퀘스트 확인 신호에 의해 확인된 PIM 리퀘스트가 리드 명령을 위한 PIM 리드 리퀘스트인 경우, 제1 버스트 렝쓰보다 증가된 제2 버스트 렝쓰를 PIM 리드 리퀘스트에 적용하며, 각각에 적용된 버스트 렝쓰를 이용하여 메모리 리퀘스트와 PIM 리퀘스트의 전달을 스케쥴링하도록 구성될 수 있다.
메모리 컨트롤러(30)와 DRAM(40)은 데이터, 주소 정보 및 명령 정보를 전달하기 위한 버스들을 통하여 DRAM과 인터페이스 되며, 도 7에서 상기한 버스들은 인터페이스(PHY)로 표현된다.
DRAM(40)은 인터페이스(PHY)를 통하여 명령 정보 및 주소 정보를 수신할 수 있고 데이터를 송수신할 수 있다.
DRAM(40)은 데이터 입출력 회로(42), 주소 래치(44), 명령 래치(46), PIM 인터페이스 유니트(50) 및 메모리(60)를 포함할 수 있다.
메모리 리퀘스트 및 PIM 리퀘스트는 주소 정보와 명령 정보를 갖도록 구성된다. 그러므로, 메모리 리퀘스트 및 PIM 리퀘스트는 주소 래치(44)와 명령 래치(46)에 수신되는 것으로 이해될 수 있다.
데이터 입출력 회로(42)는 메모리 리퀘스트 또는 PIM 리퀘스트에 의한 데이터를 입력 또는 출력하도록 구성될 수 있다.
주소 래치(44)는 메모리 컨트롤러(30)를 통하여 제공되는 주소 정보 Addr을 수신 및 임시 저장한 후 출력하도록 구성될 수 있다. 주소 정보 Addr은 뱅크 주소 BAddr, 컬럼 주소 CAddr 및 로오 주소 RAddr을 포함할 수 있다.
명령 래치(46)는 통하여 제공되는 명령 정보를 수신 및 임시 저장한 후 출력하며, PIM 연산에 관한 명령 정보 CMD를 후술하는 PIM 디바이스(50)에 제공하도록 구성될 수 있다. 명령 정보는 뱅크 액티브(Bank Active), 리드(Read), 라이트(Write) 및 프리차지(Precharge) 등을 포함할 수 있다.
메모리(60)는 데이터를 저장하는 복수의 메모리 뱅크들을 갖도록 구성되며, 메모리 뱅크들 각각은 정해진 저장 용량의 메모리 셀들을 포함하는 것으로 이해될 수 있다.
PIM 인터페이스 유니트(50)는 PIM 리퀘스트에 해당하는 주소 정보 및 명령 정보를 수신하며, 주소 정보 및 명령 정보로써 PIM 리퀘스트를 확인하고, PIM 리퀘스트에 대응하여 메모리(60)를 이용한 PIM 연산을 수행하도록 구성될 수 있다.
PIM 인터페이스 유니트(50)도 PIM 리퀘스트의 판단을 위한 PIM 주소 정보가 등록되며, 외부에서 수신된 리퀘스트의 주소 정보를 등록된 PIM 주소 정보와 비교하여 PIM 리퀘스트를 확인할 수 있다. PIM 인터페이스 유니트(50)에 등록된 PIM 리퀘스트의 판단을 위한 PIM 주소 정보도 CPU(10)에서 미리 등록된 것으로 이해될 수 있다.
상술한 바와 같이, PIM 인터페이스 유니트는 메모리 리퀘스트가 PIM 리퀘스트에 해당하는지 판단하기 위하여 메모리 컨트롤러(30)와 DRAM(40)에 각각 구성될 수 있다.
메모리 리퀘스트가 PIM 리퀘스트에 판단하기 위하여, 메모리 컨트롤러(30)와 DRAM(40)의 PIM 인터페이스 유니트들(34, 50)은 도 8과 같이 구성될 수 있다.
도 8을 참조하면, PIM 인터페이스 유니트들(34, 50)은 제어 레지스터 셋(52)과 PIM 리퀘스트 판단 유니트(54)를 포함하는 것으로 예시된다.
메모리 컨트롤러(30)에서, PIM 인터페이스 유니트(34)는 메모리 리퀘스트가 PIM 리퀘스트에 해당하는지 확인한 PIM 리퀘스트 확인 신호를 제공하도록 구성될 수 있다. 이때, PIM 인터페이스 유니트(34)는 뱅크, 컬럼 및 로오의 구분없이 주소 정보값 자체로써 PIM 리퀘스트를 확인하고, PIM 리퀘스트 확인 신호와 PIM 리퀘스트에 해당하는 오퍼랜드의 버스트 렝쓰 정보를 제공하도록 구성될 수 있다.
그리고, DRAM(40)에서, PIM 인터페이스 유니트(50)는 주소 정보 및 명령 정보를 이용하여 PIM 리퀘스트를 확인한 PIM 명령 확인 신호를 제공하도록 구성될 수 있다.
제어 레지스터 셋(52)은 PIM 인터페이스 유니트들(34, 50)에 동일한 구조를 갖도록 구성될 수 있으며, PIM 연산을 위한 PIM 오퍼랜드들의 주소 정보, PIM 오퍼랜드들의 유효 정보 및 PIM 오퍼랜드 별 버스트 렝쓰 정보를 포함하는 복수의 레지스터를 구비할 수 있다.
제어 레지스터 셋(52)에서, 레지스터 REG A 및 REG B는 소스 주소 정보를 저장하고, 레지스터 REG C는 연산 결과를 저장하는 지정 주소 정보를 저장한다. 소스 주소 정보 및 지정 주소 정보는 PIM 오퍼랜드들의 주소 정보 즉 PIM 주소 정보에 해당한다.
레지스터 REG D는 구성 정보를 저장하며, 구성 정보는 오퍼랜드의 속성에 관련된 정보, 오퍼랜드의 유효 정보 및 오퍼랜드마다 버스트 렝쓰를 구성하기 버스트 렝쓰 정보를 포함할 수 있다.
메모리 컨트롤러(30)와 DRAM(40)의 PIM 리퀘스트 판단 유니트(54)는 외부에서 수신된 메모리 리퀘스트에 의해 요청된 주소가 PIM 주소 정보에 해당하는지 판단하는 기능에 공통점은 있으나 구체적인 판단 방법에 차이가 있다. 그러므로, 상기한 판단 방법의 차이에 따라서 메모리 컨트롤러(30)의 PIM 리퀘스트 판단 유니트(54)는 도 9와 같이 구성될 수 있고 DRAM(40)의 PIM 리퀘스트 판단 유니트(54)는 도 10과 같이 구성될 수 있다.
먼저, 메모리 컨트롤러(30)의 PIM 리퀘스트 판단 유니트(54)는 외부에서 수신된 메모리 리퀘스트에 의해 요청된 주소가 제어 레지스터 셋(52)에 등록된 PIM 주소 정보에 해당하고, PIM 주소 정보에 대응하는 오퍼랜드가 유효하며 그리고 상기 메모리 리퀘스트가 리드 명령 또는 라이트 명령에 해당하는 경우 PIM 리퀘스트를 확인한 PIM 리퀘스트 확인 신호를 제공하도록 구성된다.
도 9를 참조하면, 메모리 컨트롤러(30)의 PIM 리퀘스트 판단 유니트(54)는 주소 비교 유니트(70)와 앤드 게이트(72)를 포함할 수 있다.
주소 비교 유니트(70)는 제어 레지스터 셋(52)에 저장된 PIM 주소 정보 REG A/B/C와 메모리 리퀘스트에 의해 요청된 주소 정보 Addr를 비교하고, 일치 여부에 대한 결과를 앤드 게이트(72)로 제공하도록 구성될 수 있다. 주소 비교 유니트(70)는 PIM 주소 정보 REG A/B/C와 메모리 리퀘스트에 의해 요청된 주소 정보 Addr를 뱅크, 컬럼 및 로오의 구분없이 주소 정보 값 자체로 비교하도록 구성될 수 있다.
앤드 게이트(72)는 주소 비교 유니트(70)의 출력, PIM 주소 정보에 대응하는 오퍼랜드가 유효한지에 대한 레지스터 REG D의 정보 및 리드/라이트 명령에 해당하는지 여부에 대한 정보(RD/WR)를 판단하여 PIM 리퀘스트 확인 신호를 제공하도록 구성될 수 있다. 앤드 게이트(72)는 외부에서 수신된 메모리 리퀘스트에 의해 요청된 주소가 제어 레지스터 셋(52)에 등록된 PIM 주소 정보에 해당하고, PIM 주소 정보에 대응하는 오퍼랜드가 유효하며 그리고 메모리 리퀘스트가 리드 명령 또는 라이트 명령에 해당하는 경우 활성화된 PIM 리퀘스트 확인 신호를 제공할 수 있다.
PIM 리퀘스트 판단 유니트(54)가 활성화된 PIM 리퀘스트 확인 신호를 제공하면, 스케쥴러(38)는 현재 메모리 리퀘스트가 PIM 리퀘스트에 해당하는 것으로 확인하고 제2 버스트 렝쓰를 적용하여 PIM 리퀘스트를 스케쥴링한다. 만약, PIM 리퀘스트 판단 유니트(54)가 비활성화된 PIM 리퀘스트 확인 신호를 제공하면, 스케쥴러(38)는 현재 메모리 리퀘스트가 PIM 리퀘스트에 해당하지 않는 것으로 확인하고 제1 버스트 렝쓰를 적용하여 메모리 리퀘스트를 스케쥴링한다.
그리고, DRAM(40)의 PIM 리퀘스트 판단 유니트(54)는 메모리 리퀘스트와 PIM 리퀘스트에 의해 요청된 로오 주소가 PIM 주소 정보의 로오 주소 정보에 해당하고 PIM 주소 정보에 대응하는 오퍼랜드가 유효하면 해당 뱅크 주소에 대한 매칭 플래그를 설정하고, 리드 명령 또는 라이트 명령이 경우 선택된 뱅크에 대한 매칭 플래그를 활성화하며, 메모리 리퀘스트와 PIM 리퀘스트에 의해 요청된 컬럼 주소가 PIM 주소 정보의 컬럼 주소 정보에 해당하면 활성화된 매칭 플래그를 PIM 명령 확인 신호로 제공하도록 구성될 수 있다.
도 10을 참조하면, DRAM의 PIM 리퀘스트 판단 유니트(54)는 로오 주소 판단부(80), 컬럼 주소 판단부(82), 로오 매칭 테이블(84), 멀티플렉서(86), 로오 매치 판단부(88) 및 명령 판단부(90)를 포함할 수 있다.
로오 주소 판단부(80)는 메모리 리퀘스트와 상기 PIM 리퀘스트에 의해 요청된 로오 주소 RAddr이 제어 레지스터 셋(52)에 저장된 PIM 주소 정보 REG A/B/C의 로오 주소 정보에 해당하는지 판단한 제1 판단 신호 RC를 제공하도록 구성될 수 있다.
로오 매칭 테이블(84)은 PIM 주소 정보에 대응하는 오퍼랜드가 유효한지에 대한 레지스터 REG D의 정보를 참조하여 오퍼랜드가 유효한지 판단하고, 오퍼랜드가 유효하면 제1 판단 신호 RC로써 해당 뱅크 주소 BAddr에 대한 매칭 플래그를 설정하고, 액티브 명령 정보 ACT에 의해 상기 매칭 플래그를 셋(Set)하여 저장하거나 프리차지 명령 정보 PRE에 의해 매칭 플래그를 비활성화(Clear)시키도록 구성될 수 있다.
상기한 바에 의해, 로우 매칭 테이블(84)은 각 뱅크(B0~B15)에 대한 활성화되거나 비활성화된 매칭 플래그를 제공할 수 있다.
멀티플렉서(86)는 뱅크 주소 BAddr을 수신하여, 뱅크 주소에 해당하는 매칭 플래그를 출력하도록 구성될 수 있다.
로오 매치 판단부(88)는 리드 명령 RD 또는 라이트 명령 WR을 수신하고, 멀티플렉서(86)에서 제공되는 매칭 플래그를 수신하며, 리드 명령 RD 또는 라이트 명령 WR이 활성화 상태이면 멀티플렉서(86)에서 출력된 매칭 플래그에 대응하는 제2 판단 신호를 출력하도록 구성될 수 있다.
한편, 컬럼 주소 판단부(82)는 메모리 리퀘스트와 PIM 리퀘스트에 의해 요청된 컬럼 주소가 제어 레지스터 셋(52)에 저장된 PIM 주소 정보 REG A/B/C의 컬럼 주소 정보에 해당하는지 판단한 제3 판단 신호 CC를 제공하도록 구성될 수 있다.
그리고, 명령 판단부(90)는 로오 매치 판단부(88)의 제2 판단 신호와 컬럼 주소 판단부(82)의 제3 판단 신호가 활성화된 경우, PIM 명령 확인 신호 PIM command를 제공하도록 구성될 수 있다.
DRAM(40)의 PIM 인ㅌ페이스 유니트(50)는 상기와 같이 PIM 리퀘스트 판단 유니트(54)에서 PIM 명령 확인 신호 PIM command가 활성화 상태로 제공되면, PIM 리퀘스트에 대응하는 PIM 연산을 메모리(60)를 이용하여 수행할 수 있다.
따라서, 본 발명은 메모리 리퀘스트와 PIM 리퀘스트를 동시에 지원할 수 있는 스케쥴링 기법을 제공할 수 있다.
그리고, 본 발명은 DRAM의 상태 다이어그램(State Diagram)을 수정하지 않고 메모리 컨트롤러(30)와 DRAM(40) 간의 버스 라인의 수를 증가시키지 않으면서 PIM 리퀘스트에 대한 시간 제한(Timing Constraint)와 리드 단위(Read Granularity)를 증가시킬 수 있다.
본 발명은 PIM 리퀘스트에 대한 버스트 렝쓰를 증가시킴으로써 PIM 리퀘스트를 위한 메모리 트래픽을 개선시키면서 PIM 연산을 효율적으로 개선시킬 수 있다.
본 발명은 PIM 리퀘스트에 대하여 버스트 렝쓰를 다양하게 구성할 수 있으며, 그 결과 다양한 사양의 DRAM과 오퍼레이팅 시스템에 이용할 수 있는 확장성을 가질 수 있다.

Claims (22)

  1. 메모리 리퀘스트의 주소를 미리 등록된 PIM 주소 정보와 비교하여 메모리 리퀘스트와 PIM 리퀘스트로 구분하며, 상기 메모리 리퀘스트 적용되는 제1 버스트 렝쓰보다 증가된 제2 버스트 렝쓰를 적용하여 상기 PIM 리퀘스트를 스케쥴링하는 메모리 컨트롤러; 및
    리드 명령을 위한 상기 PIM 리드 리퀘스트가 전달되면, 상기 제2 버스트 렝쓰에 해당하는 제2 리드 단위(Read Granularity)의 데이터를 리드하는 PIM 연산을 수행하는 DRAM;을 포함함을 특징으로 하는 PIM 컴퓨팅 시스템.
  2. 제1 항에 있어서, 상기 메모리 컨트롤러는,
    데이터를 전달하는 외부의 경로 상의 캐시-라인 사이즈에 제한되도록 상기 제1 버스트 렝쓰를 설정하고, 그리고
    상기 DRAM의 메모리를 관리하는 페이지 단위로 상기 제2 버스트 렝쓰를 설정하는 PIM 컴퓨팅 시스템.
  3. 제2 항에 있어서,
    상기 메모리 컨트롤러는 상기 페이지 단위로 확장되며 상기 제1 버스트 렝쓰의 배수로 증가된 상기 제2 버스트 렝쓰를 갖도록 상기 PIM 리드 리퀘스트를 설정하는 PIM 컴퓨팅 시스템.
  4. 제1 항에 있어서, 상기 메모리 컨트롤러는,
    상기 PIM 리드 리퀘스트 이후 동일한 뱅크의 상기 PIM 리드 리퀘스트 또는 데이터의 리드를 위한 상기 메모리 리퀘스트가 연속되는 경우, 앞선 상기 PIM 리드 리퀘스트의 상기 제2 버스트 렝쓰를 적용한 시간 제한(Timing constraint)을 경과한 후 후속하는 상기 PIM 리드 리퀘스트 또는 데이터의 리드를 위한 상기 메모리 리퀘스트를 전달하는 PIM 컴퓨팅 시스템.
  5. 제1 항에 있어서, 상기 메모리 컨트롤러는,
    상기 PIM 리드 리퀘스트 이후 다른 뱅크의 상기 PIM 리드 리퀘스트 또는 상기 데이터의 리드나 프리차지를 위한 상기 메모리 리퀘스트가 연속되는 경우, 앞선 상기 PIM 리드 리퀘스트의 상기 제2 버스트 렝쓰를 적용한 시간 제한(Timing constraint)과 무관하게 후속하는 상기 PIM 리드 리퀘스트 또는 상기 메모리 리퀘스트를 전달하는 PIM 컴퓨팅 시스템.
  6. 제1 항에 있어서, 상기 메모리 컨트롤러는,
    상기PIM 리드 리퀘스트 이후 동일하거나 데이터의 라이트를 위한 다른 뱅크의 상기 PIM 리퀘스트 또는 상기 메모리 리퀘스트가 연속되는 경우, 상기 PIM 리드 리퀘스트의 상기 제2 버스트 렝쓰를 적용한 시간 제한(Timing constraint)과 리드에서 라이트로 전환을 위하여 미리 설정된 시간을 경과한 후 상기 PIM 리퀘스트 또는 상기 메모리 리퀘스트를 전달하는 PIM 컴퓨팅 시스템.
  7. 제1 항에 있어서, 상기 메모리 컨트롤러는,
    상기 PIM 리드 리퀘스트 이후 동일 뱅크의 프리차지를 위한 상기 메모리 리퀘스트가 연속되는 경우, 상기 PIM 리드 리퀘스트의 상기 제2 버스트 렝쓰를 적용한 시간 제한(Timing constraint)과 리드에서 프리차지로 전환을 위하여 미리 설정된 시간을 경과한 후 상기 메모리 리퀘스트를 전달하는 PIM 컴퓨팅 시스템.
  8. 제1 항에 있어서, 상기 메모리 컨트롤러는,
    상기 PIM 리퀘스트의 판단을 위한 상기 PIM 주소 정보가 등록되며, 외부에서 수신된 상기 메모리 리퀘스트에 의해 요청된 주소와 상기 PIM 주소 정보를 비교하여 상기 메모리 리퀘스트가 상기 PIM 리퀘스트에 해당하는지 확인한 PIM 리퀘스트 확인 신호를 제공하는 PIM 인터페이스 유니트;
    외부에서 수신된 상기 메모리 리퀘스트와 상기 PIM 리퀘스트 확인 신호를 전달하는 리퀘스트 큐 유니트; 및
    상기 데이터의 리드를 위한 상기 메모리 리퀘스트에 상기 제1 버스트 렝쓰를 적용하고, 상기 PIM 리퀘스트 확인 신호에 의해 확인된 상기 PIM 리퀘스트가 상기 리드 명령을 위한 상기 PIM 리드 리퀘스트인 경우, 상기 제1 버스트 렝쓰보다 증가된 상기 제2 버스트 렝쓰를 상기 PIM 리드 리퀘스트에 적용하며, 각각에 적용된 버스트 렝쓰를 이용하여 상기 메모리 리퀘스트와 상기 PIM 리퀘스트의 전달을 스케쥴링하는 스케쥴러;를 포함함을 특징으로 하는 PIM 컴퓨팅 시스템.
  9. 제8 항에 있어서, 상기 PIM 인터페이스 유니트는,
    상기 PIM 연산을 위한 PIM 오퍼랜드들의 상기 PIM 주소 정보가 등록된 제어 레지스터 셋; 및
    외부에서 수신된 상기 메모리 리퀘스트에 의해 요청된 주소가 상기 PIM 주소 정보에 해당하는 경우, 상기 PIM 리퀘스트를 확인한 상기 PIM 리퀘스트 확인 신호를 제공하는 PIM 리퀘스트 판단 유니트;를 포함하는 PIM 컴퓨팅 시스템.
  10. 제9 항에 있어서,
    상기 제어 레지스터 셋은 상기 PIM 오퍼랜드들 별 버스트 렝쓰 정보들을 더 포함하며,
    상기 인터페이스 유니트는 상기 PIM 리퀘스트에 해당하는 상기 오퍼랜드의 상기 버스트 렝쓰 정보를 상기 스케쥴러에 제공하고, 그리고
    상기 스케쥴러는 상기 PIM 리퀘스트 확인 신호에 해당하는 상기 PIM 리퀘스트에 해당 버스트 렝쓰 정보를 적용하는 PIM 컴퓨팅 시스템.
  11. 제8 항에 있어서, 상기 PIM 인터페이스 유니트는,
    상기 PIM 연산을 위한 PIM 오퍼랜드들의 상기 PIM 주소 정보 및 상기 PIM 오퍼랜드들의 유효 정보를 포함하는 제어 레지스터 셋; 및
    외부에서 수신된 상기 메모리 리퀘스트에 의해 요청된 주소가 상기 PIM 주소 정보에 해당하고, 상기 PIM 주소 정보에 대응하는 상기 오퍼랜드가 유효하며 그리고 상기 메모리 리퀘스트가 리드 명령 또는 라이트 명령에 해당하는 경우 상기 PIM 리퀘스트를 확인한 상기 PIM 리퀘스트 확인 신호를 제공하는 PIM 리퀘스트 판단 유니트;를 포함하는 PIM 컴퓨팅 시스템.
  12. 제1 항에 있어서, 상기 DRAM은,
    상기 메모리 리퀘스트와 상기 PIM 리퀘스트에 대응하여 주소 정보를 저장하는 주소 래치;
    상기 메모리 리퀘스트와 상기 PIM 리퀘스트에 대응하여 명령 정보를 저장하는 명령 래치;
    상기 데이터를 저장하는 메모리; 및
    상기 PIM 리퀘스트에 해당하는 상기 주소 정보 및 상기 명령 정보를 수신하며, 상기 주소 정보 및 상기 명령 정보로써 상기 PIM 리퀘스트를 확인하고, 상기 PIM 리퀘스트에 대응하여 상기 메모리를 이용한 상기 PIM 연산을 수행하는 PIM 인터페이스 유니트;를 구비하는 PIM 컴퓨팅 시스템.
  13. 제12 항에 있어서, 상기 PIM 인터페이스 유니트는,
    상기 PIM 연산을 위한 PIM 오퍼랜드들의 상기 PIM 주소 정보 및 상기 PIM 오퍼랜드들의 유효 정보를 포함하는 제어 레지스터 셋; 및
    상기 메모리 리퀘스트와 상기 PIM 리퀘스트에 의해 요청된 로오 주소가 상기 PIM 주소 정보의 로오 주소 정보에 해당하고 상기 PIM 주소 정보에 대응하는 상기 오퍼랜드가 유효하면 해당 뱅크 주소에 대한 매칭 플래그를 설정하고, 리드 명령 또는 라이트 명령이 경우 선택된 뱅크에 대한 매칭 플래그를 활성화하며, 상기 메모리 리퀘스트와 상기 PIM 리퀘스트에 의해 요청된 컬럼 주소가 상기 PIM 주소 정보의 컬럼 주소 정보에 해당하면 활성화된 매칭 플래그를 PIM 명령 확인 신호로 제공하는 PIM 리퀘스트 판단 유니트;를 포함하며,
    상기 PIM 명령 확인 신호에 의해 상기 PIM 리퀘스트에 대응하는 상기 PIM 연산을 상기 메모리를 이용하여 수행하는 PIM 컴퓨팅 시스템.
  14. 제12 항에 있어서, 상기 PIM 리퀘스트 판단 유니트는,
    상기 메모리 리퀘스트와 상기 PIM 리퀘스트에 의해 요청된 로오 주소가 상기 PIM 주소 정보의 로오 주소 정보에 해당하는지 판단한 제1 판단 신호를 제공하는 로오 주소 판단부;
    오퍼랜드가 유효하면 상기 제1 판단 신호로써 해당 뱅크 주소에 대한 매칭 플래그를 설정하고, 액티브 명령 정보에 의해 상기 매칭 플래그를 저장하거나 프리차지 명령 정보에 의해 상기 매칭 플래그를 비활성화시키는 로오 매칭 테이블;
    상기 뱅크 주소에 해당하는 상기 매칭 플래그를 출력하는 멀티플렉서;
    리드 명령 또는 라이트 명령이 활성화 상태이면 상기 멀티플렉서에서 출력된 상기 매칭 플래그에 대응하는 제2 판단 신호를 출력하는 로오 매치 판단부;
    상기 메모리 리퀘스트와 상기 PIM 리퀘스트에 의해 요청된 컬럼 주소가 상기 PIM 주소 정보의 컬럼 주소 정보에 해당하는지 판단한 제3 판단 신호를 제공하는 컬럼 주소 판단부; 및
    상기 제2 판단 신호와 상기 제3 판단 신호가 활성화된 경우, 상기 PIM 명령 확인 신호를 제공하는 명령 판단부;를 포함하는 PIM 컴퓨팅 시스템.
  15. 메모리 리퀘스트들을 수신하고, 상기 메모리 리퀘스트에 의해 요청된 주소와 미리 등록된 PIM 주소 정보를 비교하여 상기 메모리 리퀘스트가 PIM 리퀘스트에 해당하는지 확인한 PIM 리퀘스트 확인 신호를 제공하는 PIM 인터페이스 유니트;
    상기 메모리 리퀘스트들을 수신하고, 상기 메모리 리퀘스트와 상기 PIM 인터페이스 유니트의 상기 PIM 리퀘스트 확인 신호를 전달하는 리퀘스트 큐 유니트; 및
    상기 PIM 리퀘스트 확인 신호에 의해 상기 PIM 리퀘스트가 리드 명령을 위한 PIM 리드 리퀘스트로 확인된 경우, 상기 메모리 리퀘스트에 적용되는 상기 제1 버스트 렝쓰보다 증가된 제2 버스트 렝쓰를 상기 PIM 리드 리퀘스트에 적용하며, 상기 메모리 리퀘스트와 상기 PIM 리퀘스트의 전달을 스케쥴링하는 스케쥴러;를 포함함을 특징으로 하는 PIM 컴퓨팅 시스템의 메모리 컨트롤러.
  16. 제15 항에 있어서, 상기 PIM 인터페이스 유니트는,
    PIM 연산을 위한 PIM 오퍼랜드들의 상기 PIM 주소 정보 및 상기 PIM 오퍼랜드들의 유효 정보를 포함하는 제어 레지스터 셋; 및
    상기 메모리 리퀘스트에 의해 요청된 주소가 상기 PIM 주소 정보에 해당하고, 상기 PIM 주소 정보에 대응하는 상기 오퍼랜드가 유효하며 그리고 상기 메모리 리퀘스트가 리드 명령 또는 라이트 명령에 해당하는 경우 상기 PIM 리퀘스트를 확인한 상기 PIM 리퀘스트 확인 신호를 제공하는 PIM 리퀘스트 판단 유니트;를 포함하는 PIM 컴퓨팅 시스템의 메모리 컨트롤러.
  17. 제16 항에 있어서,
    상기 제어 레지스터 셋은 상기 PIM 오퍼랜드들 별 버스트 렝쓰 정보들을 더 포함하며,
    상기 인터페이스 유니트는 상기 PIM 리퀘스트에 해당하는 상기 오퍼랜드의 상기 버스트 렝쓰 정보를 상기 스케쥴러에 제공하고, 그리고
    상기 스케쥴러는 상기 PIM 리퀘스트 확인 신호에 해당하는 상기 PIM 리퀘스트에 해당 버스트 렝쓰 정보를 적용하는 PIM 컴퓨팅 시스템의 메모리 컨트롤러.
  18. 제15 항에 있어서,
    상기 스케쥴러는 상기 페이지 단위로 확장되며 상기 제1 버스트 렝쓰의 배수로 증가된 상기 제2 버스트 렝쓰를 갖도록 상기 PIM 리드 리퀘스트를 설정하는 PIM 컴퓨팅 시스템의 메모리 컨트롤러.
  19. 제15 항에 있어서, 상기 스케쥴러는,
    상기 PIM 리드 리퀘스트 이후 동일한 뱅크의 상기 PIM 리퀘스트 또는 상기 데이터의 리드를 위한 상기 메모리 리퀘스트가 연속되는 경우, 상기 PIM 리드 리퀘스트의 상기 제2 버스트 렝쓰를 적용한 시간 제한(Timing constraint)을 경과한 후 상기 PIM 리퀘스트 또는 상기 메모리 리퀘스트를 전달하는 PIM 컴퓨팅 시스템의 메모리 컨트롤러.
  20. 제15 항에 있어서, 상기 스케쥴러는,
    상기 PIM 리드 리퀘스트 이후 다른 뱅크의 상기 PIM 리퀘스트 또는 상기 다른 뱅크의 상기 데이터의 리드나 프리차지를 위한 상기 메모리 리퀘스트가 연속되는 경우, 상기 PIM 리드 리퀘스트의 상기 제2 버스트 렝쓰를 적용한 시간 제한(Timing constraint)과 무관하게 상기 PIM 리퀘스트 또는 상기 메모리 리퀘스트를 전달하는 PIM 컴퓨팅 시스템의 메모리 컨트롤러.
  21. 제15 항에 있어서, 상기 스케쥴러는,
    상기PIM 리드 리퀘스트 이후 동일하거나 다른 뱅크의 상기 PIM 리퀘스트 또는 상기 데이터의 라이트를 위한 상기 메모리 리퀘스트가 연속되는 경우, 상기 PIM 리드 리퀘스트의 상기 제2 버스트 렝쓰를 적용한 시간 제한(Timing constraint)과 리드에서 라이트로 전환을 위하여 미리 설정된 시간을 경과한 후 상기 PIM 리퀘스트 또는 상기 메모리 리퀘스트를 전달하는 PIM 컴퓨팅 시스템의 메모리 컨트롤러.
  22. 제15 항에 있어서, 상기 스케쥴러는,
    상기 PIM 리드 리퀘스트 이후 동일 뱅크의 프리차지를 위한 상기 메모리 리퀘스트가 연속되는 경우, 상기 PIM 리드 리퀘스트의 상기 제2 버스트 렝쓰를 적용한 시간 제한(Timing constraint)과 리드에서 프리차지로 전환을 위하여 미리 설정된 시간을 경과한 후 상기 메모리 리퀘스트를 전달하는 PIM 컴퓨팅 시스템의 메모리 컨트롤러.
KR1020220077390A 2022-06-24 2022-06-24 프로세싱-인-메모리 컴퓨팅 시스템 및 그의 메모리 컨트롤러 KR20240000773A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220077390A KR20240000773A (ko) 2022-06-24 2022-06-24 프로세싱-인-메모리 컴퓨팅 시스템 및 그의 메모리 컨트롤러
US18/068,995 US12001682B2 (en) 2022-06-24 2022-12-20 PIM computing system and memory controller thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220077390A KR20240000773A (ko) 2022-06-24 2022-06-24 프로세싱-인-메모리 컴퓨팅 시스템 및 그의 메모리 컨트롤러

Publications (1)

Publication Number Publication Date
KR20240000773A true KR20240000773A (ko) 2024-01-03

Family

ID=89323979

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220077390A KR20240000773A (ko) 2022-06-24 2022-06-24 프로세싱-인-메모리 컴퓨팅 시스템 및 그의 메모리 컨트롤러

Country Status (1)

Country Link
KR (1) KR20240000773A (ko)

Also Published As

Publication number Publication date
US20230418474A1 (en) 2023-12-28

Similar Documents

Publication Publication Date Title
US9460763B2 (en) Holding by a memory controller multiple central processing unit memory access requests, and performing the multiple central processing unit memory request in one transfer cycle
EP2223217B1 (en) System, apparatus, and method for modifying the order of memory accesses
US7447805B2 (en) Buffer chip and method for controlling one or more memory arrangements
US6006307A (en) Computer system employing a mirrored memory system for providing prefetch bandwidth
US20050146944A1 (en) Memory module and method having on-board data search capabilities and processor-based system using such memory modules
WO2005098629A2 (en) Memory hub and method for providing memory sequencing hints
US8341344B2 (en) Techniques for accessing a resource in a processor system
US20050253858A1 (en) Memory control system and method in which prefetch buffers are assigned uniquely to multiple burst streams
US6549991B1 (en) Pipelined SDRAM memory controller to optimize bus utilization
US6836831B2 (en) Independent sequencers in a DRAM control structure
US9620215B2 (en) Efficiently accessing shared memory by scheduling multiple access requests transferable in bank interleave mode and continuous mode
US6360305B1 (en) Method and apparatus for optimizing memory performance with opportunistic pre-charging
US7386658B2 (en) Memory post-write page closing apparatus and method
TW491970B (en) Page collector for improving performance of a memory
US7167947B2 (en) Memory post-write page closing apparatus and method
KR20240000773A (ko) 프로세싱-인-메모리 컴퓨팅 시스템 및 그의 메모리 컨트롤러
US8244929B2 (en) Data processing apparatus
EP1704487B1 (en) Dmac issue mechanism via streaming id method
US12001682B2 (en) PIM computing system and memory controller thereof
US10768859B1 (en) History-based memory control system and method
JP2022168913A (ja) 制御装置及び制御方法
JP4593220B2 (ja) メモリアクセス制御方式と方法、及び共有メモリアクセス制御方式と方法
KR20070020391A (ko) 스트리밍 id 방법에 의한 dmac 발행 메커니즘