KR20200129843A - 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 - Google Patents

연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR20200129843A
KR20200129843A KR1020190054844A KR20190054844A KR20200129843A KR 20200129843 A KR20200129843 A KR 20200129843A KR 1020190054844 A KR1020190054844 A KR 1020190054844A KR 20190054844 A KR20190054844 A KR 20190054844A KR 20200129843 A KR20200129843 A KR 20200129843A
Authority
KR
South Korea
Prior art keywords
command
memory
pim
memory device
write
Prior art date
Application number
KR1020190054844A
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 KR1020190054844A priority Critical patent/KR20200129843A/ko
Priority to CN201910577662.8A priority patent/CN111913652B/zh
Priority to US16/711,274 priority patent/US11379149B2/en
Publication of KR20200129843A publication Critical patent/KR20200129843A/ko

Links

Images

Classifications

    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0656Data buffering 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/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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Dram (AREA)
  • Memory System (AREA)

Abstract

본 기술에 의한 메모리 컨트롤러는 메모리 장치에 대한 읽기 및 쓰기 요청을 포함하는 메모리 요청과 메모리 장치 내부에서의 연산 동작을 지시하는 PIM 요청을 저장하는 요청 큐; 요청 큐에서 출력되는 메모리 요청으로부터 메모리 장치에 전송할 메모리 명령을 생성하고 요청 큐에서 출력되는 PIM 요청으로부터 메모리 장치에 전송할 PIM 명령을 생성하는 명령 생성기; 명령 생성기에서 출력되는 메모리 명령 및 PIM 명령을 저장하는 명령 큐; 및 명령 큐에 저장된 메모리 명령 및 PIM 명령의 출력 순서 및 타이밍을 제어하는 명령 스케줄러를 포함한다.

Description

연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템{MEMORY DEVICE INCLUDING COMPUTING CIRCUIT, MEMORY CONTROLLER CONTROLLING THE MEMORY DEVICE AND MEMORY SYSTEM INCLUDING THE MEMORY DEVICE}
본 발명은 연산 회로를 포함하는 메모리 장치와 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것으로서 보다 구체적으로는 연산 회로에서 연산 동작을 하는 도중에 일반적인 메모리 읽기 또는 쓰기 동작을 수행할 수 있는 메모리 장치와 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것이다.
메모리 장치 내부에서 연산을 수행하기 위한 PIM(Processing-in-Memory) 기술이 개발되고 있다.
종래의 PIM 기술은 예를 들어 HMC(Hyper Memory Cube), HBM(High Bandwidth Memory) 등의 3D 스택 메모리 장치를 기반으로 하는 특정한 응용예로 한정되거나 DRAM 장치 내부의 가속기와 같은 형태로 개발되고 있다.
종래의 PIM 기술을 채택한 메모리 장치에서는 연산 동작을 수행하는 도중에는 일반적인 메모리 읽기 쓰기 동작이 수행되지 않도록 동작하여 결과적으로 메모리 시스템의 성능이 저하되는 문제가 있다.
US 9997232 B2
본 기술은 연산 회로를 포함하는 메모리 장치에서 읽기/쓰기와 같은 일반적인 메모리 명령과 연산 동작을 위한 PIM 명령을 함께 수행할 수 있도록 한다.
본 기술은 연산 회로를 포함하는 메모리 장치에서 일반적인 메모리 명령과 연산 동작을 위한 PIM 명령이 하나의 인터페이스를 통해 처리될 수 있도록 한다.
본 기술은 호스트로부터 제공되는 메모리 요청과 PIM 요청을 함께 스케줄링하는 메모리 컨트롤러를 제공한다.
본 발명의 일 실시예에 의한 메모리 컨트롤러는 메모리 장치에 대한 읽기 및 쓰기 요청을 포함하는 메모리 요청과 메모리 장치 내부에서의 연산 동작을 지시하는 PIM 요청을 저장하는 요청 큐; 요청 큐에서 출력되는 메모리 요청으로부터 메모리 장치에 전송할 메모리 명령을 생성하는 명령 생성기; 명령 생성기에서 출력되는 메모리 명령 및 PIM 명령을 저장하는 명령 큐; 및 명령 큐에 저장된 메모리 명령 및 PIM 명령의 출력 순서 및 타이밍을 제어하는 명령 스케줄러를 포함한다.
본 발명의 일 실시예에 의한 메모리 장치는 읽기 및 쓰기 동작을 지시하는 메모리 명령과 내부에서의 연산 동작을 지시하는 PIM 명령을 디코딩하는 명령 디코더; 데이터를 저장하는 뱅크; 외부와 데이터를 입출력하는 입출력 버퍼; 뱅크와 입출력 버퍼 사이에서 데이터를 전달하는 공유 버스; 및 공유 버스와 뱅크에 연결되어 PIM 명령에 대응한 명령 디코더의 제어에 따라 연산 동작을 수행하는 연산 회로를 포함하되, 연산 회로가 PIM 명령에 따라 동작하는 동안 뱅크는 메모리 명령에 따라 동작할 수 있다.
본 발명의 일 실시예에 의한 메모리 시스템은 메모리 장치; 및 메모리 장치에 대한 읽기 및 쓰기 요청을 포함하는 메모리 요청으로부터 메모리 명령을 생성하고 메모리 장치 내부에서의 연산 동작을 지시하는 PIM 요청으로부터 메모리 장치에 전송할 PIM 명령을 생성하며 PIM 명령과 메모리 명령을 함께 스케줄링하는 메모리 컨트롤러를 포함하되, 메모리 장치는 메모리 컨트롤러에서 제공되는 메모리 명령에 따라 데이터 읽기 또는 쓰기 동작을 수행하고 메모리 컨트롤러에서 제공되는 PIM 명령에 따라 연산 동작을 수행하되 연산 동작을 수행하는 동안 읽기 또는 쓰기 동작을 함께 수행할 수 있다.
본 기술에 의한 메모리 장치는 PIM 동작을 수행하는 도중에 읽기/쓰기와 같은 일반적인 메모리 명령을 함께 처리할 수 있어 메모리 시스템의 성능 저하를 방지할 수 있다.
본 기술에 의한 메모리 장치는 일반적인 메모리 명령과 PIM 명령을 동일한 인터페이스를 통해 처리함으로써 종래의 메모리 시스템과의 호환성을 향상시킬 수 있다.
본 기술에 의한 메모리 컨트롤러는 일반적인 메모리 요청과 PIM 요청을 함께 처리하여 메모리 장치의 동작 성능을 향상시킨다.
도 1은 본 발명의 일 실시예에 의한 메모리 시스템의 블록도.
도 2 및 3은 본 발명의 일 실시예에 의한 메모리 컨트롤러의 블록도.
도 4는 본 발명의 일 실시예에 의한 메모리 명령과 PIM 명령의 데이터 구조도.
도 5는 본 발명의 일 실시예에 의한 PIM 명령의 종류를 설명하는 도표.
도 6은 본 발명의 일 실시예에 의한 메모리 장치의 동작을 설명하는 상태 천이도.
도 7 및 8은 본 발명의 일 실시예에 의한 메모리 장치를 나타내는 블록도.
도 9는 본 발명의 일 실시예에 의한 연산 회로를 나타내는 블록도.
도 10 내지 도 12는 본 발명의 일 실시예에 의한 메모리 장치의 PIM 동작을 설명하는 설명도.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예를 개시한다.
도 1은 본 발명의 일 실시예에 의한 메모리 시스템의 블록도이다.
본 발명의 일 실시예에 의한 메모리 시스템은 메모리 컨트롤러(100)와 메모리 장치(200)를 포함한다.
메모리 컨트롤러(100)는 호스트(10)로부터 제공되는 메모리 요청과 PIM(Process-in-Memory) 요청을 동일한 인터페이스를 통해 수신한다.
본 실시예에 의한 메모리 시스템은 메모리 버스를 통해 호스트(10)와 연결될 수 있다.
본 실시예에 의한 메모리 시스템은 메모리 버스에 연결된 메인 메모리 장치와는 별도로 구비될 수 있으며, 이때 메모리 시스템은 PCIe(PCI Express) 등의 별도의 인터페이스를 통해 호스트(10)와 연결될 수도 있다.
이와 같이 호스트(10)는 메모리 요청과 PIM 요청을 동일한 인터페이스를 통해 제공할 수 있다.
메모리 컨트롤러(100)는 메모리 요청과 PIM 요청으로부터 메모리 명령과 PIM 명령을 생성하고 이들을 동일한 인터페이스를 통해 메모리 장치(300)에 제공한다.
메모리 컨트롤러(100)는 메모리 명령과 PIM 명령을 함께 스케줄링하여 메모리 장치(300)에 제공하며, 메모리 장치(300)는 메모리 명령과 PIM 명령이 동일한 상태 천이도 상에서 처리될 수 있도록 동작한다.
이에 따라 본 발명에 의한 메모리 시스템은 PIM 명령을 위한 별도의 인터페이스가 필요하지 않는다.
호스트(10)는 PIM 요청 대신에 PIM 인스트럭션을 메모리 컨트롤러에 제공할 수 있다.
PIM 인스트럭션은 하나 또는 그 이상의 PIM 요청을 통해 수행될 수 있는 동작에 대응한다.
PIM 인스트럭션은 PIM 동작을 요청하는 소프트웨어의 특정 코드에 대응하여 생성되어 호스트(10)를 통해 제공될 수 있다.
일 실시예에서 PIM 인스트럭션은 소프트웨어 라이브러리를 통해 미리 처리될 수 있으며 이 경우 호스트(10)는 PIM 인스트럭션 대신 PIM 요청을 메모리 컨트롤러 (100)에 제공할 수 있다.
호스트(10)에서 PIM 요청이 아니라 PIM 인스트럭션을 직접 메모리 컨트롤러(100)에 제공하는 경우에 대비하여 본 발명의 일 실시예에 의한 메모리 시스템은 PIM 인스트럭션을 수신하고 이를 내부적으로 PIM 요청으로 디코딩할 수 있다.
도 2는 본 발명의 일 실시예에 의한 메모리 컨트롤러(100)의 블록도이다.
도 2는 호스트(10)가 메모리 요청과 PIM 요청을 제공하는 실시예에 대응하는 메모리 컨트롤러(100)의 블록도이다.
도 2에서 메모리 컨트롤러(100)는 요청 큐(110), 요청 스케줄러(120), 명령 생성기(130), 명령 큐(140) 및 명령 스케줄러(150)를 포함한다.
호스트에서 제공된 메모리 요청과 PIM 요청은 요청 큐(110)에 저장된다.
요청 스케줄러(120)는 요청 큐(110)에 저장된 메모리 요청과 PIM 요청의 처리 순서를 결정한다.
메모리 요청은 일반적인 메모리 읽기 요청 및 메모리 쓰기 요청을 포함한다.
PIM 요청은 연산 동작을 포함하는 요청으로서 본 실시예에서는 PIM 읽기 요청과 PIM 쓰기 요청을 포함한다.
메모리 요청과 PIM 요청은 한 비트(PIM 비트)를 포함하여 메모리 요청과 PIM 요청이 구별되도록 할 수 있다.
예를 들어 PIM 비트가 0인 경우 메모리 요청으로 판단하고 PIM 비트가 1인 경우 PIM 요청으로 판단한다.
메모리 컨트롤러(100)는 메모리 요청 또는 PIM 요청에 포함된 PIM 비트 정보를 유지하여 메모리 명령과 PIM 명령을 출력할 때 이를 대응하는 명령에 포함시킬 수 있다.
요청 스케줄러(120)는 FCFS(First-Come-First-Served), FR-FCFS(First-Ready-First-Come-First-Served) 등과 같이 종래에 알려진 기법을 포함하는 다양한 스케줄링 기법을 적용하여 요청 큐(110)에 저장된 요청들 중 선택된 요청이 명령 생성기(130)에 제공되도록 한다.
명령 생성기(130)는 요청 큐(110)에서 전달되는 메모리 요청을 메모리 명령으로 변환하고 PIM 요청을 PIM 명령으로 변환하여 명령 큐(140)에 저장한다.
명령 스케줄러(150)는 메모리 장치의 동작에 필요한 타이밍 조건을 고려하여 명령 큐(140)에 저장된 메모리 명령과 PIM 명령을 메모리 장치(200)에 출력한다.
타이밍 조건은 표준 등을 통해 미리 규정된 것으로서 이에 대한 구체적인 설명은 생략한다.
본 실시예에서 명령 스케줄러(150)는 타이밍 조건 외에 추가적인 조건을 고려할 수 있다.
아래에서 구체적으로 설명하겠으나 본 실시예에 의한 메모리 장치(200)는 내부에 다수의 뱅크와 다수의 연산 회로를 포함하고 다수의 뱅크와 다수의 연산 회로는 공유 버스(SBUS)를 통해 데이터를 교환할 수 있다.
이에 따라 본 실시예에서 명령 스케줄러(150)는 공유 버스에서의 데이터 충돌을 방지하기 위하여 공유 버스의 상태를 추가로 고려하여 메모리 명령과 PIM 명령을 스케줄링할 수 있다.
본 실시예에서 명령 스케줄러(150)는 뱅크별로 명령을 스케줄링하여 메모리 장치(200)에 제공할 수 있다.
도 3은 본 발명의 다른 실시예에 의한 메모리 컨트롤러(101)의 블록도이다.
도 3의 실시예에서 호스트(10)는 PIM 요청 대신 PIM 인스트럭션을 출력한다.
이에 따라 메모리 컨트롤러(101)는 PIM 인스트럭션을 저장하는 PIM 인스트럭션 큐(160)와 PIM 인스트럭션을 PIM 요청으로 변환하는 PIM 디코더(170)를 더 포함한다.
호스트(10)는 PIM 인스트럭션을 메모리 컨트롤러(101)에 전달하기 위하여 PIM 인스트럭션의 내용을 쓰기 데이터에 포함시킨 쓰기 요청을 생성하고 이를 메모리 컨트롤러(101)에 전송할 수 있다.
편의상 PIM 인스트럭션의 내용을 쓰기 데이터에 포함시킨 쓰기 요청을 PIM 인스트럭션으로 지칭한다.
이때 PIM 인스트럭션을 일반적인 쓰기 요청과 구별하기 위하여 별도의 비트(PIM 비트)를 추가할 수 있다.
이 경우 호스트(10)에서 제공되는 메모리 요청 중 PIM 비트가 1로 설정된 메모리 요청에 대해서는 메모리 요청에 포함된 쓰기 데이터를 PIM 인스트럭션으로 보고 이를 PIM 인스트럭션 큐(160)에 저장한다.
PIM 비트가 0으로 설정된 요청은 일반적인 메모리 요청으로 간주하여 직접 요청 큐(110)에 저장한다.
이를 위해 PIM 비트에 따라 출력 방향을 결정하는 경로 선택 회로(180)가 포함될 수 있다.
PIM 디코더(170)는 PIM 인스트럭션에 대응하여 하나 또는 둘 이상의 일련의 PIM 요청을 생성한다.
PIM 디코더(170)는 전술한 소프트웨어 라이브러리의 일부 동작에 대응할 수 있는데 그 구체적인 변환 방법은 설계 단계에서 정해진 규칙에 의존하는 것으로서 구현 내용에 대해서는 설명을 생략한다.
요청 큐(110), 요청 스케줄러(120), 명령 생성기(130), 명령 스케줄러(150) 및 명령 큐(140)의 동작은 도 2에서와 같으므로 설명을 생략한다.
도 4는 본 발명의 일 실시예에 의한 메모리 명령과 PIM 명령의 데이터 구조를 나타낸다.
도 4(A)는 메모리 명령의 데이터 구조를 나타내고 도 4(B)는 PIM 명령의 데이터 구조를 나타낸다.
도 4(A)에 도시된 메모리 명령은 종래의 메모리 명령에 PIM 비트를 추가한 것이다.
본 실시예에서 메모리 명령에 대응하는 PIM 비트는 0으로 설정된다.
종래의 메모리 명령은 2비트의 CKE 필드, 각각 1비트의 CS 필드, ACT 필드, RAS 필드, CAS 필드 및 WE 필드 등 총 7비트를 포함한다.
메모리 장치(200) 내의 명령 디코더는 메모리 명령을 미리 정해진 규칙에 따라 해석하여 내부 구성들을 제어한다.
메모리 명령의 각 필드의 의미와 이들을 디코딩하는 기법은 잘 알려진 것이므로 구체적인 설명을 생략한다.
도 4(B)에 도시된 PIM 명령은 메모리 명령과 같은 비트 수를 가지며 PIM 비트는 1로 설정된다.
본 실시예에서 PIM 명령은 3비트의 OPCODE 필드, 각각 2비트의 SRC 필드와 DST 필드를 포함한다.
OPCODE 필드는 PIM 명령의 종류 및 종류별 세부 동작을 구분하기 위하여 사용된다.
SRC 필드와 DST 필드는 PIM 동작 시 데이터의 출처와 목적지를 지시하기 위하여 사용될 수 있다.
메모리 장치(200)는 PIM 명령을 수행하는 경우 일반적인 메모리 명령을 수행한 경우같이 명령과 연관되어 메모리 장치(200)에 제공되는 주소를 참조할 수 있다.
이와 같이 본 실시예에서는 PIM 명령이 메모리 명령과 동일한 비트 수를 가지도록 생성된다.
본 실시예에서 메모리 명령과 PIM 명령에서 PIM 비트를 제외한 7비트 신호는 종래와 같이 명령 버스를 통해 메모리 장치(300)에 전송될 수 있다
이때 PIM 비트는 명령 신호를 전송하는 도중에 사용되지 않는 패드를 이용하여 메모리 컨트롤러(100)와 메모리 장치(200) 사이에서 전송될 수 있다.
예를 들어 명령 신호를 전송하는 도중에 사용되지 않는 데이터 패드나 주소 패드를 통해 PIM 비트를 전송할 수 있다.
다른 실시예에서는 PIM 비트를 전송하기 위하여 메모리 컨트롤러와 메모리 장치에 별도의 패드를 추가할 수도 있다.
또 다른 실시예에서는 PIM 비트를 포함한 총 8비트의 신호를 인코딩하여 7비트 이내의 신호로 변환하고 이를 종래의 명령 버스를 통해 전송할 수 있다.
인코딩된 명령 신호를 수신한 메모리 장치(200)는 그 내부에서 이를 디코딩한 후 메모리 명령 또는 PIM 명령을 생성한 후 각 명령을 디코딩하고 그에 따라 내부 구성을 제어할 수 있다.
이와 같이 메모리 명령과 PIM 명령을 메모리 장치로 전송하기 위한 인터페이스는 다양하게 설계 변경될 수 있다.
일반적인 메모리 명령은 뱅크와 입출력 버퍼 사이에서 데이터를 송신 또는 수신하는 동작에 대응한다.
본 실시예에서 PIM 명령은 뱅크 또는 공유 버스와 연산 회로 사이에서 데이터를 송신 또는 수신하는 동작에 대응한다.
이때 PIM 명령은 연산 회로에서의 연산 동작을 포함할 수 있다.
본 실시예에서 PIM 동작은 메모리 읽기 명령을 전송하면서 시작하는데 이에 따라 PIM 동작은 레이턴시가 긴 읽기 명령으로 해석될 수도 있다.
도 5는 본 발명의 일 실시예에 의한 PIM 명령의 종류를 설명하는 도표이다.
도 5의 도표에 도시된 PIM 명령의 종류와 세부 종료는 메모리 장치(200) 내부에 포함된 연산 회로(300)의 내부 구조와 함께 설계 변경될 수 있다. 연산 회로(300)의 내부 구조에 대해서는 아래에서 다시 구체적으로 설명한다.
PIM 명령은 PIM 읽기 명령(PIM RD)과 PIM 쓰기 명령(PIM WR)을 포함한다.
본 실시예에서 PIM 읽기 명령은 OPCODE 필드의 내용에 따라 읽기(RD), 클리어(CLR), 연산(MAC), 리덕션(RADD) 등 4개의 동작으로 세분된다.
읽기(RD) 동작은 OPCODE 필드에서 "010"으로 표현되며, 뱅크의 데이터를 버퍼0 또는 버퍼1에 저장하는 동작 또는 공유 버스(SBUS)의 데이터를 버퍼0 또는 버퍼1에 저장하는 동작이다.
이때 뱅크는 SRC 필드에서 "00"으로 표현되고, 공유 버스는 SRC 필드에서 "01"로 표현되고, 버퍼0은 DST 필드에서 "10"으로 표현되며 버퍼1은 DST 필드에서 "11"로 표현된다.
버퍼0, 버퍼1은 연산 회로의 내부에 포함된 구성이고, 공유 버스(SBUS)는 다수의 뱅크 및 입출력 버퍼와 공통 연결되는 데이터 버스로서 이들에 대해서는 아래에서 구체적으로 개시한다.
클리어(CLR) 동작은 OPCODE 필드에서 "000"으로 표현되며 이에 후속하는 4개의 비트가 순서대로 연산 회로에 포함된 버퍼0, 버퍼1, vACC, rACC에 대응한다. 클리어 동작 시 활성화된 비트에 대응하는 구성이 리셋시킨다.
vACC는 벡터 연산 결과를 누적하는 누적기이고 rACC는 스칼라 연산 결과를 누적하는 누적기로서 이들 역시 연산 회로의 내부 구성이다. 이하에서 vACC는 제 1 누적기, rACC는 제 2 누적기로 지칭할 수 있다.
연산(MAC) 동작은 OPCODE 필드에서 "100"으로 표현되며 SRC 필드와 DST 필드의 정보는 사용하지 않는다.
연산 동작에서는 버퍼0과 버퍼1의 원소별 곱을 이용하여 vACC에서 대응하는 원소의 값을 누적한다.
리덕션(RADD) 동작은 OPCODE 필드에서 "110"으로 표현되고 DST 필드의 정보는 사용하지 않는다.
리덕션 동작은 SRC 필드의 정보에 따라 두 가지로 세분된다.
첫 번째는 SRC 필드가 "0X"인 경우로서 이는 vACC의 각 원소들을 모두 더하여 그 결과를 rACC에 저장하는 동작에 대응한다.
두 번째는 SRC 필드가 "1X"인 경우로서 이는 공유 버스에 제공된 값을 rACC의 값에 누적하는 동작에 대응한다.
본 실시예에서 PIM 쓰기 명령은 OPCODE 필드에 "001"로 표현되며 쓰기(WR) 동작을 포함한다.
쓰기(WR) 동작은 vACC 또는 rACC의 데이터를 뱅크 또는 공유 버스에 저장하는 동작이다.
이때 뱅크는 DST 필드에서 "00"으로 표현되고, 공유 버스는 DST 필드에서 "01"로 표현되고, vACC는 SRC 필드에서 "10"으로 표현되며 rACC는 SRC 필드에서 "11"로 표현된다.
도 6은 본 발명의 일 실시예에 의한 메모리 장치(200)의 동작을 설명하는 상태 천이도이다.
도 6의 상태 천이도는 일반적인 디램의 상태 천이도와 실질적으로 동일한 구조를 가진다.
본 실시예에서는 메모리 명령인 읽기 명령(RD)과 쓰기 명령(RD)에 더하여 PIM 명령인 PIM 읽기 명령(PIM RD)과 PIM 쓰기 명령(PIM WR)이 더 포함되어 있는 점에서 종래의 상태 천이도와 차이가 있다.
메모리 장치(200)의 상태는 휴식 상태(S10), 뱅크 액티브 상태(S20), 쓰기 상태(S30), 읽기 상태(S40), 프리차지 상태(S50), 리프레시 상태(S60)를 포함한다.
아이들 상태(S10)에서 액티브 명령(ACT)이 입력되면 뱅크 액티브 상태(S20)로 천이하고 리프레시 명령(REF)이 입력되면 리프레시 상태(S60)로 천이한다.
뱅크 액티브 상태(S20)에서 쓰기 명령(WR) 또는 PIM 쓰기 명령(PIM WR)이 입력되면 쓰기 상태(S30)로 천이하고, 읽기 명령(RD) 또는 PIM 읽기 명령(PIM RD)이 입력되면 읽기 상태(S40)로 천이하며, 프리차지 명령(PRE)이 입력되면 프리차지 상태(S50)로 천이한다.
쓰기 상태(S30)에서 쓰기 명령(WR) 또는 PIM 쓰기 명령(PIM WR)이 입력되면 쓰기 상태(S30)를 유지하고, 읽기 명령(RD) 또는 PIM 읽기 명령(PIM RD)이 입력되면 읽기 상태(S40)로 천이하고, 프리차지 명령(PRE)이 입력되면 프리차지 상태(S50)로 천이하며, 다른 명령이 입력되지 않고 쓰기 동작이 종료되면 자동으로 뱅크 액티브 상태(S20)로 천이한다.
읽기 상태(S40)에서 쓰기 명령(WR) 또는 PIM 쓰기 명령(PIM WR)이 입력되면 쓰기 상태(S30)로 천이하고, 읽기 명령(RD) 또는 PIM 읽기 명령(PIM RD)이 입력되면 읽기 상태(S40)를 유지하고, 프리차지 명령(PRE)이 입력되면 프리차지 상태(S50)로 천이하며, 다른 명령이 입력되지 않고 쓰기 동작이 종료되면 자동으로 뱅크 액티브 상태(S20)로 천이한다.
프리차지 상태(S50)에서 프리차지 동작이 종료되면 자동으로 휴식 상태(S10)로 천이하고, 리프레시 상태(S60)에서 리프레시 동작이 종료되면 자동으로 휴식 상태(S10)로 천이한다.
도 6과 같이 하나의 상태 천이도를 통해 메모리 명령과 PIM 명령을 함께 처리함으로써 다음과 같은 장점이 있다.
첫째, PIM 명령을 처리하는 도중에 메모리 명령의 처리를 무조건 차단하는 것을 막을 수 있다. 이를 통해 PIM 명령을 수행하는 도중이라도 충돌이 발생하지 않는 이상 메모리 명령을 스케줄링하여 처리할 수 있으므로 메모리 시스템의 성능 저하를 방지할 수 있다.
둘째, 하나의 상태 천이도를 사용하므로 메모리 명령과 PIM 명령을 하나의 명령 큐에 담아 처리할 수 있다. 이를 통해 메모리 명령과는 별도의 방식으로 PIM 명령을 처리하기 위하여 필요한 구성들이 메모리 컨트롤러 및 메모리 장치에 포함되지 않을 수 있어 시스템의 구성을 간단하게 할 수 있다.
도 7은 본 발명의 일 실시예에 의한 메모리 장치(200)를 나타내는 블록도이다.
도시된 바와 같이 본 실시예에 의한 메모리 장치(200)는 다수의 뱅크(210), 다수의 연산 회로(300), 공유 버스(220), 및 입출력 버퍼(230)를 포함한다.
본 실시예에서 뱅크(210)와 연산 회로(300)는 1:1로 대응하며 각각 16개이다.
뱅크(210)와 연산 회로(300)의 연관 관계는 주소 맵핑이나 병렬 처리 조건을 고려하여 다양하게 설계 변경될 수 있다. 예를 들어 연산 회로(300)를 다수의 뱅크에 하나씩 할당하는 실시예도 고려할 수 있다.
공유 버스(220)는 뱅크(210), 연산 회로(300) 및 입출력 버퍼(230) 사이에서 데이터를 전달한다.
연산 회로(300)는 대응하는 뱅크의 데이터를 이용하여 연산을 수행할 수 있으며 공유 버스(220)를 통해 전달된 다른 뱅크의 데이터 또는 다른 연산 회로의 연산 결과를 이용하여 연산을 수행할 수 있다.
도 8은 본 실시예에 의한 메모리 장치(200)의 구성을 다른 방법으로 표현한 블록도이다.
전술한 바와 같이 본 실시예에서 메모리 장치(200)는 뱅크(210), 공유 버스(SBUS, 220), 입출력 버퍼(230)를 포함한다.
뱅크(210)는 메모리 셀 어레이(211), 센스 앰프(212), 로우 버퍼(213)를 포함하며 이들의 세부 구성 및 동작은 종래의 메모리 장치에서와 실질적으로 동일하다.
도 8에는 하나의 뱅크(210)가 도시되어 있으나 나머지 뱅크들도 동일한 구조를 가진다.
또한 메모리 장치(200)는 명령 디코더(240), 로우 디코더(250), 컬럼 디코더(260)를 더 포함한다.
명령 디코더(240), 로우 디코더(250) 및 컬럼 디코더(260)의 기본적인 동작은 통상의 메모리 장치에서와 동일하다.
본 실시예에서 명령 디코더(240)는 명령 신호를 통해 제공되는 메모리 명령뿐만 아니라 명령 신호를 통해 제공되는 PIM 명령을 디코딩하여 뱅크(210), 로우 디코더(250), 컬럼 디코더(260), 공유 버스(220), 연산 회로(300) 및 입출력 버퍼(230)를 모두 제어한다.
도 8에서 명령은 메모리 명령과 PIM 명령을 포함한다.
명령 디코더(240)는 PIM 비트를 참조하여 메모리 명령과 PIM 명령을 식별하고 메모리 장치(200)에 포함된 다른 구성들을 제어한다.
식별된 명령이 메모리 명령인 경우에는 종래와 같은 디코딩 기술을 사용하여 메모리 장치(200)에 포함된 다른 구성들을 제어한다.
식별된 명령이 PIM 명령인 경우에는 도 5의 표에 예시된 동작을 수행하기 위하여 메모리 장치(200)에 포함된 다른 구성들을 추가로 제어한다.
메모리 명령과 PIM 명령 등에 따른 메모리 장치(200)의 동작은 전술한 도 6의 상태 천이도를 통해 설명한 바와 같다.
연산 회로(300)는 뱅크(210) 또는 공유 버스(220)의 정보를 읽어 지정된 연산을 수행하고 연산 결과를 뱅크(210) 또는 공유 버스(220)에 기록한다.
본 실시예에서는 연산 회로(300)가 매트릭스와 벡터의 곱셈 연산을 수행하는 것으로 가정하나 구체적인 연산의 종류와 이에 따른 연산 회로(300)의 세부 구성은 실시예에 따라 다양하게 변경될 수 있다.
도 9는 본 발명의 일 실시예에 의한 연산 회로(300)를 나타내는 블록도이다.
본 실시예에서는 각 뱅크(210)에서 출력되는 데이터는 128비트의 폭을 가지고, 매트릭스와 벡터의 각 원소는 8비트로 표현되며, 매트릭스의 각 행과 벡터의 열은 각각 16개의 원소를 포함하는 것으로 가정한다.
연산 회로(300)는 버퍼0(310)과 버퍼1(311)을 포함하고 이들은 각각 뱅크(210) 또는 공유 버스(220)에서 전달된 128비트 정보를 저장한다.
연산 회로(300)는 파이프라인 동작을 위해 버퍼0(310)과 버퍼1(311)의 데이터를 저장하는 래치를 더 포함할 수 있다.
128비트의 정보는 8비트 단위의 정보를 16개 포함하며 16개의 정보는 각각 벡터 또는 매트릭스의 각 원소에 대응한다.
연산 회로(300)는 ALU(320)와 vACC(330)를 더 포함한다.
ALU(320)와 vACC(330)는 버퍼0(310)과 버퍼1(311)에 저장된 16개의 8비트 정보에 대해서 원소별 곱셈 동작을 수행하고 이를 기존의 값에 누적하는 동작을 수행한다.
즉, ALU(320)는 버퍼0(310)과 버퍼1(311)에 저장된 값의 곱셈 동작 및 곱셈 결과를 vACC(330) 값에 누적하는 동작을 수행하고, vACC(330)는 누적값을 저장한다.
예를 들어 16개의 원소 중 i번째 원소에 대해서 버퍼0(310)과 버퍼1(311)에 저장된 i번째 원소를 곱하고 이를 vACC(330)의 i번째 원소에 누적한 후 누적한 값을 vACC(330)의 i번째 원소로 저장하는 것이다.
연산 회로(300)는 리듀서(360)를 더 포함한다. 리듀서(360)는 vACC(330)에 저장된 16개의 8비트 원소를 모두 더하여 8비트 값을 생성한다.
연산 회로(300)는 제 1 선택부(340)를 더 포함한다. 제 1 선택부(340)는 뱅크(210) 또는 공유 버스(220)에서 전달된 128비트 정보에서 16개의 8비트 원소 중 하나의 8비트 원소를 출력한다.
이때 제 1 선택부(340)는 PIM 읽기 명령과 함께 제공되는 주소 정보를 이용하여 어느 하나의 원소를 선택할 수 있다.
연산 회로(300)는 덧셈기(350) 및 rACC(380)를 더 포함한다.
덧셈기(350)는 제 1 선택부(340)의 출력과 rACC(380)에 저장된 값을 더하여 rACC(380)의 값을 갱신한다.
연산 회로(300)는 제 2 선택부(370)를 더 포함하는데, 제 2 선택부(370)는 DST 필드의 1번 비트에 대응하여 제어되어 리듀서(360) 또는 덧셈기(350)의 출력을 선택하여 rACC(380)에 제공한다.
본 실시예에서 rACC(380)는 512비트의 정보를 저장한다. rACC(380)는 128비트 데이터를 4개까지 저장하여 버스트 쓰기 기능을 지원할 수 있다.
예를 들어 도 5에서 RADD 동작시 DST 필드가 "0X"인 경우에는 리듀서(360)의 출력이 선택되고, RADD 동작시 DST 필드가 "1X"인 경우에는 덧셈기(250)의 출력이 선택된다.
연산 회로(300)는 제 3 선택부(390)를 더 포함하며 제 3 선택부(390)는 rACC(380)에 저장된 512비트를 4개의 그룹으로 나누었을 때 이중 하나를 선택하여 출력한다.
이때 제 3 선택부(390)는 PIM 쓰기 명령시 함께 제공되는 주소로부터 4개의 그룹 중 하나를 선택할 수 있다.
rACC(380)에 저장된 4개의 그룹은 버스트 쓰기 동작 시 순차적으로 선택되어 목적지의 주소에서부터 순차적으로 저장될 수 있다.
연산 회로(300)는 뱅크(210)에 연결되는 제 1 삼상 버퍼(301)와 공유 버스(220)에 연결되는 제 2 삼상 버퍼(302)를 더 포함하여 데이터 충돌을 방지할 수 있다.
도 10은 본 발명의 일 실시예에 의한 메모리 장치의 PIM 동작을 설명하는 설명도이다.
1번 동작은 PIM 읽기 명령 중 클리어(CLR) 동작으로서 SRC, DST 필드에 지정된 비트 정보에 따라 버퍼0(310), 버퍼1(311), vACC(330), rACC(380)를 리셋한다.
2번 동작은 PIM 읽기 명령 중 읽기(RD) 동작으로서 첫 번째 피연산자를 뱅크(210)에서 버퍼0(310)으로 읽어 오는 동작이다.
3번 동작은 PIM 읽기 명령 중 읽기(RD) 동작으로서 두 번째 피연산자를 뱅크(210)에서 버퍼1(311)로 읽어 오는 동작이다.
4번 동작은 PIM 읽기 명령 중 연산(MAC) 동작으로서 버퍼0(310)과 버퍼1(311)에 저장된 값을 원소별로 곱한 후 이를 vACC(330)의 각 원소에 누적하는 동작으로서 ALU(320)에서 수행된다.
연산 회로(300)의 연산 동작이 본 실시예와 같이 고정되는 경우에는 4번 동작을 위한 명령을 메모리 컨트롤러(100)가 별도로 보낼 필요 없이 메모리 장치(200)의 명령 디코더(240)는 2번과 3번 동작 후에 자동으로 4번 동작을 수행하도록 제어할 수 있다.
예를 들어 2 ~ 4번 동작이 반복되어 수행되는 상황을 가정하면 현재의 데이터를 기준으로 4번 동작을 수행하는 도중에 다음 차례의 2, 3번 동작을 함께 진행할 수 있으므로 병렬 처리로 인한 효율성이 향상될 수 있다.
5번 동작은 PIM 읽기 명령 중 리덕션(RADD) 동작으로서 vACC(330)의 각 원소들을 더하여 rACC(380)에 저장하는 동작이다.
리덕션 동작 중 vACC(330)의 각 원소를 더하는 동작은 리듀서(360)에서 수행되며 그 결과는 제 2 선택부(370)를 통해 rACC(380)에 저장된다.
6번 동작은 PIM 쓰기 명령으로서 rACC(380)의 값을 공유 버스(220)에 쓰는 동작이다.
6번 동작은 연산 회로에서 수행한 연산 결과를 연관되지 않은 다른 뱅크나 다른 연산 회로에 제공하는 경우 수행될 수 있다.
도 11은 본 발명의 일 실시예에 의한 메모리 장치의 PIM 동작을 설명하는 설명도이다.
도 11은 도 10의 동작에 5번과 6번 동작에 7번 동작을 더 포함한다.
7번 동작은 PIM 읽기 명령 중 리덕션(RADD) 동작으로서 공유 버스(220)에서 전달된 데이터를 선택하여 rACC(380)에 저장된 값을 갱신한다.
공유 버스(220)의 데이터는 현재 연산 회로(300)와 연관되지 않은 다른 뱅크나 다른 연산 회로에서 제공된 데이터일 수 있다.
도 12는 본 발명의 일 실시예에 의한 메모리 장치의 PIM 동작을 설명하는 설명도이다.
도 12는 도 11의 6번 동작 대신 8번 동작을 포함한다.
8번 동작은 PIM 쓰기 명령으로서 rACC(380)의 값을 뱅크(210)에 쓰는 동작이다.
본 발명의 권리범위는 이상의 개시로 한정되는 것은 아니다. 본 발명의 권리범위는 청구범위에 문언적으로 기재된 범위와 그 균등범위를 기준으로 해석되어야 한다.
10: 호스트 100: 메모리 컨트롤러
110: 요청 큐 120: 요청 스케줄러
130: 명령 생성기 140: 명령 큐
150: 명령 스케줄러 160: PIM 인스트럭션 큐
170: PIM 디코더 180: 경로 선택 회로
200: 메모리 장치 210: 뱅크
220: 공유 버스 230: 입출력 버퍼
240: 명령 디코더 250: 로우 디코더
260: 컬럼 디코더 300: 연산 회로
310: 버퍼0 311: 버퍼1
320: ALU 330: vACC
340: 제 1 선택부 350: 덧셈기
360: 리듀서 370: 제 2 선택부
380: rACC 390: 제 3 선택부

Claims (27)

  1. 메모리 장치에 대한 읽기 및 쓰기 요청을 포함하는 메모리 요청과 상기 메모리 장치 내부에서의 연산 동작을 지시하는 PIM 요청을 저장하는 요청 큐;
    상기 요청 큐에서 출력되는 메모리 요청으로부터 상기 메모리 장치에 전송할 메모리 명령을 생성하고 상기 요청 큐에서 출력되는 PIM 요청으로부터 상기 메모리 장치에 전송할 PIM 명령을 생성하는 명령 생성기;
    상기 명령 생성기에서 출력되는 메모리 명령 및 PIM 명령을 저장하는 명령 큐; 및
    상기 명령 큐에 저장된 메모리 명령 및 PIM 명령의 출력 순서 및 타이밍을 제어하는 명령 스케줄러
    를 포함하는 메모리 컨트롤러.
  2. 청구항 1에 있어서, 상기 요청 큐에 저장된 메모리 요청 및 PIM 요청의 출력 순서를 제어하는 요청 스케줄러를 더 포함하는 메모리 컨트롤러.
  3. 청구항 3에 있어서, 상기 명령 스케줄러는 타이밍 조건 및 상기 메모리 장치에 포함된 공유 버스의 상태를 고려하여 상기 출력 순서 및 타이밍을 제어하는 메모리 컨트롤러.
  4. 청구항 1에 있어서,
    PIM 인스트럭션으로부터 상기 PIM 요청을 생성하는 PIM 디코더; 및
    상기 PIM 인스트럭션을 저장하는 PIM 인스트럭션 큐
    를 더 포함하는 메모리 컨트롤러.
  5. 청구항 5에 있어서, 상기 PIM 인스트럭션은 상기 메모리 요청 중 쓰기 요청의 쓰기 데이터에 포함되고, 상기 메모리 요청은 상기 PIM 인스트럭션을 포함하는 쓰기 요청인지를 표시하는 정보를 포함하며,
    상기 정보에 따라 상기 메모리 요청을 상기 요청 큐에 전달하거나 상기 PIM 인스트럭션을 상기 PIM 인스트럭션 큐에 전달하는 경로 선택 회로
    를 더 포함하는 메모리 컨트롤러.
  6. 청구항 1에 있어서, 상기 메모리 명령, 상기 PIM 명령은 명령의 종류를 식별하기 위한 정보를 포함하는 메모리 컨트롤러.
  7. 청구항 6에 있어서, 상기 PIM 명령은 상기 메모리 장치 내부에서 수행할 동작의 종류를 표시하는 OPCODE 필드, 상기 메모리 장치 내부에서 데이터의 출발지를 표시하는 SRC 필드, 및 상기 메모리 장치 내부에서 데이터의 목적지를 표시하는 DST 필드를 포함하는 메모리 컨트롤러.
  8. 청구항 6에 있어서, 상기 PIM 명령은 PIM 읽기 명령과 PIM 쓰기 명령을 포함하고,
    상기 PIM 읽기 명령은 상기 SRC 필드에 지정된 구성에서 상기 DST 필드에 지정된 구성으로 데이터를 읽는 읽기 동작 명령과 상기 읽기 동작 명령에 의해 읽은 데이터에 대해서 연산을 수행하도록 지시하는 연산 동작 명령을 포함하고,
    상기 PIM 쓰기 명령은 상기 SRC 필드에 지정된 구성에서 상기 DST 필드에 지정된 구성으로 데이터를 쓰는 쓰기 동작 명령을 포함하는 메모리 컨트롤러.
  9. 청구항 8에 있어서,
    상기 읽기 동작 명령에 대해서 상기 SRC 필드는 상기 메모리 장치 내부의 뱅크 또는 공유 버스를 지시하고 상기 DST 필드는 상기 메모리 장치 내부의 버퍼를 지시하고, 상기 쓰기 동작 명령에 대해서 상기 DST 필드는 상기 메모리 장치 내부의 뱅크 또는 공유 버스를 지시하고 상기 SRC 필드는 상기 메모리 장치 내부의 버퍼를 지시하는 메모리 컨트롤러.
  10. 읽기 및 쓰기 동작을 지시하는 메모리 명령과 내부에서의 연산 동작을 지시하는 PIM 명령을 디코딩하는 명령 디코더;
    데이터를 저장하는 뱅크;
    외부와 데이터를 입출력하는 입출력 버퍼;
    상기 뱅크와 상기 입출력 버퍼 사이에서 데이터를 전달하는 공유 버스; 및
    상기 공유 버스와 상기 뱅크에 연결되어 상기 PIM 명령에 대응한 상기 명령 디코더의 제어에 따라 연산 동작을 수행하는 연산 회로
    를 포함하되,
    상기 연산 회로가 상기 PIM 명령에 따라 동작하는 동안 상기 뱅크는 상기 메모리 명령에 따라 동작할 수 있는 메모리 장치.
  11. 청구항 10에 있어서, 상기 명령 디코더는 상기 메모리 명령과 상기 PIM 명령을 디코딩하여 상기 메모리 장치를 제어하는 제어 신호를 출력하고,
    상기 메모리 장치는 상기 제어 신호에 따라 다수의 메모리 상태를 천이하면서 동작하고,
    상기 다수의 메모리 상태는 뱅크 액티브 상태, 쓰기 상태, 및 읽기 상태를 포함하는 메모리 장치.
  12. 청구항 11에 있어서,
    상기 메모리 장치가 상기 뱅크 액티브 상태, 상기 쓰기 상태 또는 상기 읽기 상태에 있는 경우에 상기 명령 디코더가 상기 메모리 명령을 디코딩하여 쓰기 명령을 출력하거나 상기 PIM 명령을 디코딩하여 PIM 쓰기 명령을 출력하는 경우 상기 쓰기 상태로 천이하거나 상기 쓰기 상태를 유지하고,
    상기 메모리 장치가 상기 뱅크 액티브 상태, 상기 읽기 상태 또는 상기 쓰기 상태에 있는 경우에 상기 명령 디코더가 메모리 명령을 디코딩하여 쓰기 명령을 출력하거나 상기 PIM 명령을 디코딩하여 PIM 쓰기 명령을 출력하는 경우 상기 읽기 상태로 천이하거나 상기 읽기 상태를 유지하는
    메모리 장치.
  13. 청구항 10에 있어서, 상기 연산 회로는
    상기 뱅크 또는 상기 공유 버스에서 제공된 데이터를 저장하는 두 개의 버퍼;
    상기 두 개의 버퍼에 저장된 데이터를 연산하는 ALU;
    상기 ALU의 연산 결과를 저장하며 상기 뱅크 또는 상기 공유 버스에 데이터를 제공하는 제 1 누적기
    를 포함하는 메모리 장치.
  14. 청구항 13에 있어서, 상기 연산 회로는
    상기 뱅크 또는 상기 공유 버스에 데이터를 제공하는 제 2 누적기;
    상기 제 2 누적기의 데이터와 상기 뱅크 또는 상기 공유 버스에서 추가로 제공받은 데이터를 덧셈하는 덧셈기;
    상기 덧셈기의 덧셈 결과를 저장하는 제 2 덧셈기
    를 더 포함하는 메모리 장치.
  15. 청구항 14에 있어서, 상기 두 개의 버퍼와 상기 제 1 누적기는 벡터 데이터를 저장하고, 상기 ALU는 벡터 연산을 수행하고, 상기 제 2 누적기는 스칼라 데이터를 저장하고, 상기 덧셈기는 스칼라 덧셈을 수행하는 메모리 장치.
  16. 청구항 15에 있어서, 상기 제 1 누적기에 저장된 벡터의 원소를 모두 더하는 리듀서와 상기 리듀서 또는 상기 덧셈기의 출력을 상기 제 2 누적기에 제공하는 선택부를 더 포함하는 메모리 장치.
  17. 청구항 10에 있어서, 상기 뱅크와 상기 연산 회로는 각각 다수 개가 포함되고, 상기 뱅크와 상기 연산 회로는 1:1로 대응하여 연결되는 메모리 장치.
  18. 메모리 장치; 및
    상기 메모리 장치에 대한 읽기 및 쓰기 요청을 포함하는 메모리 요청으로부터 메모리 명령을 생성하고 상기 메모리 장치 내부에서의 연산 동작을 지시하는 PIM 요청으로부터 상기 메모리 장치에 전송할 PIM 명령을 생성하며 상기 PIM 명령과 상기 메모리 명령을 함께 스케줄링하는 메모리 컨트롤러
    를 포함하되,
    상기 메모리 장치는 상기 메모리 컨트롤러에서 제공되는 메모리 명령에 따라 데이터 읽기 또는 쓰기 동작을 수행하고 상기 메모리 컨트롤러에서 제공되는 PIM 명령에 따라 연산 동작을 수행하되 상기 연산 동작을 수행하는 동안 상기 읽기 또는 쓰기 동작을 함께 수행할 수 있는 메모리 시스템.
  19. 청구항 18에 있어서, 상기 메모리 컨트롤러는
    상기 메모리 장치에 대한 읽기 및 쓰기 요청을 포함하는 메모리 요청과 상기 메모리 장치 내부에서의 연산 동작을 지시하는 PIM 요청을 저장하는 요청 큐;
    상기 요청 큐에서 출력되는 메모리 요청으로부터 상기 메모리 장치에 전송할 메모리 명령을 생성하고 상기 요청 큐에서 출력되는 PIM 요청으로부터 상기 메모리 장치에 전송할 PIM 명령을 생성하는 명령 생성기;
    상기 명령 생성기에서 출력되는 메모리 명령 및 PIM 명령을 저장하는 명령 큐; 및
    상기 명령 큐에 저장된 메모리 명령 및 PIM 명령의 출력 순서 및 타이밍을 제어하는 명령 스케줄러
    를 포함하는 메모리 시스템.
  20. 청구항 19에 있어서, 상기 메모리 컨트롤러는 상기 요청 큐에 저장된 메모리 요청 및 PIM 요청의 출력 순서를 함께 제어하는 요청 스케줄러를 더 포함하고,
    상기 명령 스케줄러는 타이밍 조건 및 상기 메모리 장치에 포함된 공유 버스의 상태를 고려하여 상기 출력 순서 및 타이밍을 제어하는 메모리 시스템.
  21. 청구항 18에 있어서, 상기 메모리 장치는
    상기 메모리 명령과 상기 PIM 명령을 디코딩하는 명령 디코더;
    데이터를 저장하는 뱅크;
    외부와 데이터를 입출력하는 입출력 버퍼;
    상기 뱅크와 상기 입출력 버퍼 사이에서 데이터를 전달하는 공유 버스; 및
    상기 공유 버스와 상기 뱅크에 연결되어 상기 PIM 명령에 대응한 상기 명령 디코더의 제어에 따라 연산 동작을 수행하는 연산 회로
    를 포함하는 메모리 시스템.
  22. 청구항 21에 있어서, 상기 명령 디코더는 상기 메모리 명령과 상기 PIM 명령을 디코딩하여 상기 메모리 장치를 제어하기 위한 제어 신호를 출력하고,
    상기 메모리 장치는 상기 제어 신호에 따라 다수의 메모리 상태를 천이하면서 동작하고,
    상기 다수의 메모리 상태는 뱅크 액티브 상태, 쓰기 상태, 및 읽기 상태를 포함하는 메모리 시스템.
  23. 청구항 22에 있어서,
    상기 메모리 장치가 상기 뱅크 액티브 상태, 상기 쓰기 상태 또는 읽기 상태에 있는 경우에 상기 명령 디코더가 상기 메모리 명령을 디코딩하여 쓰기 명령을 출력하거나 상기 PIM 명령을 디코딩하여 PIM 쓰기 명령을 출력하는 경우 상기 쓰기 상태로 천이하거나 상기 쓰기 상태를 유지하고,
    상기 메모리 장치가 상기 뱅크 액티브 상태, 상기 읽기 상태 또는 상기 쓰기 상태에 있는 경우에 상기 명령 디코더가 메모리 명령을 디코딩하여 쓰기 명령을 출력하거나 상기 PIM 명령을 디코딩하여 PIM 쓰기 명령을 출력하는 경우 상기 읽기 상태로 천이하거나 상기 읽기 상태를 유지하는
    메모리 시스템.
  24. 청구항 21에 있어서, 상기 연산 회로는
    상기 뱅크 또는 상기 공유 버스에서 제공된 데이터를 저장하는 두 개의 버퍼;
    상기 두 개의 버퍼에 저장된 데이터를 연산하는 ALU;
    상기 ALU의 연산 결과를 저장하며 상기 뱅크 또는 상기 공유 버스에 데이터를 제공하는 제 1 누적기
    를 포함하는 메모리 시스템.
  25. 청구항 24에 있어서, 상기 연산 회로는
    상기 뱅크 또는 상기 공유 버스에 데이터를 제공하는 제 2 누적기;
    상기 제 2 누적기의 데이터와 상기 뱅크 또는 상기 공유 버스에서 추가로 제공받은 데이터를 덧셈하는 덧셈기;
    상기 덧셈기의 덧셈 결과를 저장하는 제 2 덧셈기
    를 더 포함하는 메모리 시스템.
  26. 청구항 25에 있어서, 상기 두 개의 버퍼와 상기 제 1 누적기는 벡터 데이터를 저장하고, 상기 ALU는 벡터 연산을 수행하고, 상기 제 2 누적기는 스칼라 데이터를 저장하고, 상기 덧셈기는 스칼라 덧셈을 수행하는 메모리 시스템.
  27. 청구항 26에 있어서, 상기 제 1 누적기에 저장된 벡터의 원소를 모두 더하는 리듀서와 상기 리듀서 또는 상기 덧셈기의 출력을 상기 제 2 누적기에 제공하는 선택부를 더 포함하는 메모리 시스템.
KR1020190054844A 2019-05-10 2019-05-10 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 KR20200129843A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190054844A KR20200129843A (ko) 2019-05-10 2019-05-10 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
CN201910577662.8A CN111913652B (zh) 2019-05-10 2019-06-28 包括处理电路的存储器件、存储器控制器和存储系统
US16/711,274 US11379149B2 (en) 2019-05-10 2019-12-11 Memory device including a processing circuit, memory controller controlling the memory device and memory system including the memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190054844A KR20200129843A (ko) 2019-05-10 2019-05-10 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Publications (1)

Publication Number Publication Date
KR20200129843A true KR20200129843A (ko) 2020-11-18

Family

ID=73047173

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190054844A KR20200129843A (ko) 2019-05-10 2019-05-10 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Country Status (3)

Country Link
US (1) US11379149B2 (ko)
KR (1) KR20200129843A (ko)
CN (1) CN111913652B (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102365312B1 (ko) * 2021-06-17 2022-02-23 삼성전자주식회사 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법
TWI797022B (zh) * 2021-06-17 2023-03-21 南韓商三星電子股份有限公司 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法
US11868657B2 (en) 2021-02-08 2024-01-09 Samsung Electronics Co., Ltd. Memory controller, method of operating the memory controller, and electronic device including the memory controller
US11893278B2 (en) 2021-02-08 2024-02-06 Samsung Electronics Co., Ltd. Memory controller and memory control method for generating commands based on a memory request
US11907575B2 (en) 2021-02-08 2024-02-20 Samsung Electronics Co., Ltd. Memory controller and memory control method
US12032829B2 (en) 2021-07-21 2024-07-09 Samsung Electronics Co., Ltd. Memory device performing in-memory operation and method thereof

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11262949B2 (en) * 2020-05-28 2022-03-01 Advanced Micro Devices, Inc. Command throughput in PIM-enabled memory using available data bus bandwidth
US11874739B2 (en) * 2020-09-25 2024-01-16 Advanced Micro Devices, Inc. Error detection and correction in memory modules using programmable ECC engines
US11409674B2 (en) 2020-10-02 2022-08-09 Micron Technology, Inc. Memory with improved command/address bus utilization
KR20220067961A (ko) * 2020-11-18 2022-05-25 삼성전자주식회사 프로세싱-인-메모리 및 프로세싱-인-메모리를 이용한 인스트럭션 출력 방법
US20220206685A1 (en) * 2020-12-31 2022-06-30 Advanced Micro Devices, Inc. Reusing remote registers in processing in memory
US11922066B2 (en) * 2021-01-21 2024-03-05 Rambus Inc. Stacked device communication
US11468001B1 (en) 2021-03-30 2022-10-11 Advanced Micro Devices, Inc. Processing-in-memory concurrent processing system and method
KR20230095692A (ko) * 2021-12-22 2023-06-29 삼성전자주식회사 메모리 프로세서 제어 방법 및 장치
US20230205706A1 (en) * 2021-12-23 2023-06-29 Advanced Micro Devices, Inc. Approach for managing near-memory processing commands and non-near-memory processing commands in a memory controller
US11630605B1 (en) * 2022-08-10 2023-04-18 Recogni Inc. Methods and systems for processing read-modify-write requests
US20240103745A1 (en) * 2022-09-28 2024-03-28 Advanced Micro Devices, Inc. Scheduling Processing-in-Memory Requests and Memory Requests

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9904635B2 (en) * 2015-08-27 2018-02-27 Samsung Electronics Co., Ltd. High performance transaction-based memory systems
KR20170136382A (ko) * 2016-06-01 2017-12-11 주식회사 맴레이 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서
US10037150B2 (en) * 2016-07-15 2018-07-31 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
US10437482B2 (en) * 2017-07-25 2019-10-08 Samsung Electronics Co., Ltd. Coordinated near-far memory controller for process-in-HBM
US10741239B2 (en) * 2017-08-31 2020-08-11 Micron Technology, Inc. Processing in memory device including a row address strobe manager
US10346092B2 (en) * 2017-08-31 2019-07-09 Micron Technology, Inc. Apparatuses and methods for in-memory operations using timing circuitry
US10908820B2 (en) * 2017-09-14 2021-02-02 Samsung Electronics Co., Ltd. Host-based and client-based command scheduling in large bandwidth memory systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11868657B2 (en) 2021-02-08 2024-01-09 Samsung Electronics Co., Ltd. Memory controller, method of operating the memory controller, and electronic device including the memory controller
US11893278B2 (en) 2021-02-08 2024-02-06 Samsung Electronics Co., Ltd. Memory controller and memory control method for generating commands based on a memory request
US11907575B2 (en) 2021-02-08 2024-02-20 Samsung Electronics Co., Ltd. Memory controller and memory control method
KR102365312B1 (ko) * 2021-06-17 2022-02-23 삼성전자주식회사 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법
TWI797022B (zh) * 2021-06-17 2023-03-21 南韓商三星電子股份有限公司 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法
US11645011B2 (en) 2021-06-17 2023-05-09 Samsung Electronics Co., Ltd. Storage controller, computational storage device, and operational method of computational storage device
US12032829B2 (en) 2021-07-21 2024-07-09 Samsung Electronics Co., Ltd. Memory device performing in-memory operation and method thereof

Also Published As

Publication number Publication date
US11379149B2 (en) 2022-07-05
CN111913652B (zh) 2024-03-15
US20200356305A1 (en) 2020-11-12
CN111913652A (zh) 2020-11-10

Similar Documents

Publication Publication Date Title
KR20200129843A (ko) 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
JP4926963B2 (ja) 多重メモリアクセスレイテンシ時間をサポートするコンピュータメモリシステムにおける性能を改善するためのシステムおよび方法
JP6961997B2 (ja) 情報処理装置、メモリ制御装置および情報処理装置の制御方法
CN111656339B (zh) 存储器装置及其控制方法
CN114942831A (zh) 处理器、芯片、电子设备及数据处理方法
US20140344512A1 (en) Data Processing Apparatus and Memory Apparatus
JP2020087499A (ja) スタティックランダムアクセスメモリにアクセスするための方法、装置、機器及び記憶媒体
US9208002B2 (en) Equalizing bandwidth for multiple requesters using a shared memory system
CN105094691A (zh) 一种数据操作的方法、设备和系统
EP3097492B1 (en) Method and apparatus for preventing bank conflict in memory
US11748250B2 (en) Method and electronic device for data processing, and storage medium
US20120242673A1 (en) Register allocation for graphics processing
KR20100064563A (ko) 데이터 처리 장치 및 그 제어 방법
US8156260B2 (en) Data transfer device and method for selecting instructions retained in channel unit based on determined priorities due to the number of waiting commands/instructions
US10223260B2 (en) Compiler-generated memory mapping hints
JP6004463B2 (ja) 記憶装置及びその制御方法
CN117056255A (zh) 一种原子操作装置、方法、设备及介质
KR101306670B1 (ko) 기억 제어 장치 및 그 제어 방법
US11169937B2 (en) Memory control device
WO2020172988A1 (en) Shader alu outlet control
KR20220114449A (ko) 메모리 컨트롤러 및 메모리 제어 방법
US8898343B2 (en) Information processing apparatus and control method thereof
JP2021026769A (ja) ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム
CN107025190B (zh) 系统及其操作方法
JP2020140284A (ja) ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal