KR20200108773A - Memory Device performing calculation process, Data Processing System having the same and Operation Method of Memory Device - Google Patents
Memory Device performing calculation process, Data Processing System having the same and Operation Method of Memory Device Download PDFInfo
- Publication number
- KR20200108773A KR20200108773A KR1020190161674A KR20190161674A KR20200108773A KR 20200108773 A KR20200108773 A KR 20200108773A KR 1020190161674 A KR1020190161674 A KR 1020190161674A KR 20190161674 A KR20190161674 A KR 20190161674A KR 20200108773 A KR20200108773 A KR 20200108773A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- command
- address
- memory device
- processing
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7864—Architectures of general purpose stored program computers comprising a single central processing unit with memory on more than one IC chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
Abstract
Description
본 개시의 기술적 사상은 메모리 장치에 관한 것으로서, 상세하게는 연산 처리를 수행하는 메모리 장치, 이를 포함하는 데이터 처리 시스템 및 메모리 장치의 동작방법에 관한 것이다.The technical idea of the present disclosure relates to a memory device, and more particularly, to a memory device that performs arithmetic processing, a data processing system including the same, and a method of operating the memory device.
고성능 전자 시스템에 널리 사용되고 있는 반도체 메모리 장치(semiconductor memory device)는 그 용량 및 속도가 증가하고 있다. 메모리 장치의 일 예로서 DRAM(Dynamic Random Access Memory)은 휘발성 메모리(volatile-memory)로서, 커패시터에 저장되어 있는 전하(charge)에 의해 데이터를 판정하는 메모리이다.Semiconductor memory devices widely used in high-performance electronic systems are increasing in capacity and speed. As an example of a memory device, a DRAM (Dynamic Random Access Memory) is a volatile memory and is a memory that determines data based on a charge stored in a capacitor.
DRAM을 포함하는 메모리 장치는 다양한 용도로 이용될 수 있으며, 일 예로서 뉴럴 네트워크(neural network) 연산 등 다양한 종류의 연산 처리에 이용되는 데이터를 저장하거나 연산 처리 결과를 저장하기 위해 이용될 수 있다. 이 때, 방대한 양의 연산을 효율적으로 수행하기 위해 적어도 일부의 연산 동작이 메모리 장치 내의 PIM (Processor in Memory) 회로에서 수행되는 방안이 제안되고 있다. A memory device including a DRAM may be used for various purposes, and as an example, may be used to store data used for various types of operation processing, such as a neural network operation, or to store operation results. In this case, in order to efficiently perform a vast amount of operations, a scheme in which at least some of the operation operations are performed in a PIM (Processor in Memory) circuit in a memory device has been proposed.
본 발명의 기술적 사상이 해결하려는 과제는, 메모리 장치 내의 PIM 회로를 이용한 연산 처리에서 그 연산 효율 및 성능을 향상할 수 있는 메모리 장치, 이를 포함하는 데이터 처리 시스템 및 메모리 장치의 동작방법을 제공하는 데 있다.The problem to be solved by the technical idea of the present invention is to provide a memory device capable of improving its operation efficiency and performance in operation processing using a PIM circuit in a memory device, a data processing system including the same, and a method of operating the memory device. have.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 메모리 장치는, 하나 이상의 뱅크들을 포함하고, 각각의 뱅크는 메모리 셀들을 포함하는 메모리 뱅크와, 호스트로부터 제공된 데이터 및 상기 메모리 뱅크로부터 독출된 데이터 중 적어도 하나를 이용하여 연산 처리를 수행하고, 상기 호스트로부터 제공된 적어도 하나의 명령어를 저장하는 명령어 메모리를 포함하는 PIM 회로 및 상기 호스트로부터 수신된 커맨드/어드레스를 디코딩하고, 디코딩 결과에 기반하여 상기 메모리 뱅크에 대한 메모리 동작을 제어하거나 상기 PIM 회로가 연산 처리를 수행하도록 제어 동작을 수행하는 제어 로직을 구비하고, 상기 커맨드/어드레스가 상기 연산 처리를 지시함에 따라 상기 명령어 메모리의 위치를 가리키는 프로그램 카운터의 카운팅 값이 조절되는 것을 특징으로 한다.In order to achieve the above object, a memory device according to an aspect of the inventive concept includes one or more banks, each bank including a memory bank including memory cells, data provided from a host, and the memory. A PIM circuit including an instruction memory for performing operation processing using at least one of the data read from the bank and storing at least one instruction provided from the host, and decoding a command/address received from the host, and a decoding result And a control logic for controlling a memory operation for the memory bank or performing a control operation so that the PIM circuit performs an operation process based on, and the position of the command memory as the command/address instructs the operation process It is characterized in that the counting value of the program counter pointing to is adjusted.
본 발명의 기술적 사상의 메모리 장치, 이를 포함하는 데이터 처리 시스템 및 메모리 장치의 동작방법에 따르면, PIM 회로를 포함하는 메모리 장치가 메모리 동작 및 연산 처리를 호스트로부터의 요청에 의해 수동적으로 수행하고, 이를 통해 메모리 동작과 연산 처리 사이의 충돌을 감소함으로써 메모리 동작이 과도하게 딜레이되는 문제를 방지할 수 있다.According to the memory device of the technical idea of the present invention, a data processing system including the same, and a method of operating the memory device, a memory device including a PIM circuit passively performs memory operation and operation processing at a request from a host, and Through this, it is possible to prevent the problem of excessively delayed memory operation by reducing the collision between the memory operation and the operation processing.
한편, 본 발명의 기술적 사상의 메모리 장치, 이를 포함하는 데이터 처리 시스템 및 메모리 장치의 동작방법에 따르면, 호스트로부터의 노멀 리드 또는 노멀 라이트 커맨드에 응답하여 연산 처리가 수행될 수 있으므로, 정의되는 커맨드의 개수를 감소할 수 있고, 연산 처리에 이용되는 데이터의 위치가 호스트로부터의 어드레스 정보에 의해 지시될 수 있으므로 상기 어드레스 정보가 메모리 장치에 미리 저장될 필요가 없는 효과가 있다.On the other hand, according to the memory device according to the technical idea of the present invention, a data processing system including the same, and an operating method of the memory device, arithmetic processing may be performed in response to a normal read or normal write command from a host. Since the number can be reduced, and the location of data used for arithmetic processing can be indicated by address information from the host, there is an effect that the address information does not need to be stored in advance in the memory device.
도 1은 본 발명의 예시적인 실시예에 따른 메모리 장치를 포함하는 데이터 처리 시스템을 나타내는 블록도이다.
도 2는 도 1의 메모리 장치의 PIM 회로의 일 구현 예를 나타내는 블록도이다.
도 3은 본 발명의 예시적인 실시예의 메모리 장치를 포함하는 데이터 처리 시스템을 나타내는 블록도이다.
도 4는 본 발명의 예시적인 실시예에 따른 데이터 처리 시스템의 구현 예를 나타내는 블록도이다.
도 5는 본 발명의 예시적인 실시예의 메모리 장치가 HBM(high bandwidth memory)을 포함하는 예를 나타내는 블록도이다.
도 6은 본 발명의 예시적인 실시예에 따른 메모리 시스템의 동작 예를 나타내는 개념도이다.
도 7 및 도 8은 본 발명의 예시적인 실시예에 따른 메모리 장치의 동작방법을 나타내는 플로우차트이다.
도 9는 본 발명의 예시적인 실시예에 따른 메모리 장치의 전체적인 구현 예를 나타내는 블록도이다.
도 10은 호스트에 구비되는 어드레스 맵의 일 구현 예를 나타내는 블록도이다.
도 11은 본 발명의 예시적인 실시예들에 따른 메모리 장치가 뉴럴 네트워크 연산을 수행하는 예를 나타내는 도면이다.
도 12는 본 발명의 예시적인 실시예의 메모리 장치에서 정보의 전송 경로의 일 예를 나타내는 블록도이다.
도 13a,b는 본 발명의 실시예의 메모리 장치에서 실행되는 명령어의 일 구현 예 및 메모리 장치의 동작방법을 나타내는 플로우차트이다.
도 14는 본 발명의 예시적인 실시예의 메모리 장치가 루프 명령어를 실행하는 동작 예를 나타내는 플로우차트이다.
도 15a,b는 본 발명의 예시적인 실시예들에 따라 루프를 수행하는 명령어들의 기본 블록 및 동작 예를 나타내는 도면이다.
도 16a,b 및 도 17는 본 발명의 실시예의 따른 명령어의 일 구현 예 및 동작방법을 나타내는 도면이다.
도 18은 본 발명의 실시예에 따른 데이터 처리 시스템을 포함하는 서버 시스템을 나타내는 블록도이다.1 is a block diagram of a data processing system including a memory device according to an exemplary embodiment of the present invention.
FIG. 2 is a block diagram illustrating an example implementation of the PIM circuit of the memory device of FIG. 1.
3 is a block diagram showing a data processing system including a memory device according to an exemplary embodiment of the present invention.
Fig. 4 is a block diagram showing an implementation example of a data processing system according to an exemplary embodiment of the present invention.
5 is a block diagram illustrating an example in which a memory device according to an exemplary embodiment of the present invention includes a high bandwidth memory (HBM).
6 is a conceptual diagram illustrating an example of an operation of a memory system according to an exemplary embodiment of the present invention.
7 and 8 are flowcharts illustrating a method of operating a memory device according to an exemplary embodiment of the present invention.
9 is a block diagram illustrating an overall implementation example of a memory device according to an exemplary embodiment of the present invention.
10 is a block diagram illustrating an example implementation of an address map provided in a host.
11 is a diagram illustrating an example in which a memory device performs a neural network operation according to exemplary embodiments of the present invention.
12 is a block diagram illustrating an example of an information transmission path in a memory device according to an exemplary embodiment of the present invention.
13A and 13B are flowcharts illustrating an example implementation of an instruction executed in a memory device and a method of operating the memory device according to an embodiment of the present invention.
14 is a flowchart showing an example of an operation of executing a loop instruction by a memory device according to an exemplary embodiment of the present invention.
15A and 15B are diagrams showing basic blocks and examples of operations of instructions for performing a loop according to exemplary embodiments of the present invention.
16A, B, and 17 are diagrams illustrating an example implementation and a method of operating a command according to an embodiment of the present invention.
18 is a block diagram showing a server system including a data processing system according to an embodiment of the present invention.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.
도 1은 본 발명의 예시적인 실시예에 따른 메모리 장치를 포함하는 데이터 처리 시스템을 나타내는 블록도이다. 1 is a block diagram of a data processing system including a memory device according to an exemplary embodiment of the present invention.
도 1을 참조하면, 메모리 시스템(10)은 메모리 컨트롤러(100) 및 메모리 장치(200)를 포함할 수 있다. 메모리 컨트롤러(100)는 메모리 인터페이스(110) 및 어드레스 맵(120)을 포함할 수 있으며, 메모리 인터페이스(110)를 통해 각종 신호를 메모리 장치(200)로 제공하여 기록 및 독출 등의 메모리 동작을 제어할 수 있다. 예컨대, 메모리 컨트롤러(100)는 커맨드(CMD) 및 어드레스(ADD)를 메모리 장치(200)로 제공하여 메모리 장치(200)의 데이터(DATA)를 억세스할 수 있다. 커맨드(CMD)는 데이터 기록을 요청하는 기록 커맨드(WR)와, 데이터 독출을 요청하는 독출 커맨드(RD)를 포함할 수 있다. Referring to FIG. 1, the
메모리 컨트롤러(100)는 호스트(HOST)로부터의 요청에 따라 메모리 장치(200)를 억세스할 수 있으며, 메모리 인터페이스(110)는 메모리 장치(200)와 인터페이스를 제공할 수 있다. 메모리 컨트롤러(100)는 다양한 프로토콜을 사용하여 호스트와 통신할 수 있으며, 예컨대 메모리 컨트롤러(100)는 PCI-E(Peripheral Component Interconnect - Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA) 또는 SAS(serial attached SCSI)와 같은 인터페이스 프로토콜을 사용하여 호스트와 통신할 수 있다. 이외에도, USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface) 또는 IDE(Integrated Drive Electronics) 등과 같은 다른 다양한 인터페이스 프로토콜들이 호스트와 메모리 컨트롤러(100) 사이의 프로토콜에 적용될 수 있다. 또는, 예시적인 실시예들에 따라, 메모리 컨트롤러(100)는 호스트(HOST)에 상응하거나, 또는 메모리 컨트롤러(100)는 호스트(HOST) 내부에 구비되는 구성에 해당할 수도 있을 것이다.The
메모리 장치(200)는 메모리 뱅크(210), PIM (Processor in Memory) 회로(220) 및 제어 로직(230)을 포함할 수 있으며, 제어 로직(230)은 커맨드 디코더(231)를 포함할 수 있다. 또한, 메모리 뱅크(210)는 다수 개의 뱅크들(BANK 1 ~ BANK N)을 포함할 수 있으며, 뱅크들(BANK 1 ~ BANK N) 각각은 다수의 메모리 셀들(또는, 메모리 셀들을 포함하는 셀 어레이)을 포함할 수 있다. 뱅크는 다양하게 정의될 수 있으며, 일 예로서 메모리 셀들을 포함하는 구성으로 정의될 수 있고, 또는 메모리 셀들에 함께 하나 이상의 주변 회로들을 포함하는 구성으로 정의될 수도 있을 것이다. The
메모리 컨트롤러(100)로부터의 어드레스(ADD)에 의해 데이터 억세스가 수행될 뱅크가 선택될 수 있으며, 또한 뱅크 내의 메모리 셀들이 선택될 수 있다. 또한, 커맨드 디코더(231)는 메모리 컨트롤러(100)로부터의 커맨드/어드레스(CMD/ADD)에 대한 디코딩 동작을 수행할 수 있으며, 제어 로직(230)은 디코딩 결과에 따라 메모리 동작이 수행되도록 메모리 장치(200)에 대한 내부 제어 동작을 수행할 수 있다.A bank in which data access is to be performed may be selected by an address ADD from the
한편, 메모리 장치(200)는 DDR SDRAM (Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR (Low Power Double Data Rate) SDRAM, GDDR (Graphics Double Data Rate) SDRAM, RDRAM (Rambus Dynamic Random Access Memory) 등과 같은 동적 랜덤 억세스 메모리(Dynamic Random Access Memory, DRAM)일 수 있다. 그러나, 본 발명의 실시예들은 이에 국한될 필요가 없으며, 일 예로서 메모리 장치(200A)는 플래시(flash) 메모리, MRAM(Magnetic RAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM) 및 ReRAM(Resistive RAM) 등의 불휘발성 메모리로 구현되어도 무방하다.Meanwhile, the
또한, 메모리 장치(200)는 하나의 반도체 칩에 해당하거나, 또는 독립적인 인터페이스를 갖는 다수의 채널들을 포함하는 메모리 장치에서 하나의 채널에 상응하는 구성일 수도 있다. 또는, 메모리 장치(200)는 메모리 모듈에 상응하는 구성일 수 있으며, 또는 메모리 모듈이 다수의 메모리 칩들을 포함하고 도 1의 메모리 장치(200)는 모듈 보드 상에 장착되는 하나의 메모리 칩에 해당할 수도 있다.Also, the
이하에서는, 본 발명의 예시적인 실시예들에 따라, 메모리 장치(200)의 PIM 회로(220)가 연산 처리를 수행하는 일 예가 설명된다. 다양한 종류의 연산 처리 동작이 메모리 장치(200) 내에서 수행될 수 있으며, 일 예로서 인공 지능과 관련하여 뉴럴 네트워크 연산들 중 적어도 일부가 메모리 장치(200) 내에서 수행될 수 있다. 예컨대, 호스트(HOST)는 뉴럴 네트워크 연산들 중 적어도 일부가 메모리 장치(200)에 의해 수행될 수 있도록, 메모리 컨트롤러(100)를 통해 메모리 장치(200)를 제어할 수 있을 것이다. 또한, 이하의 실시예에서는 메모리 컨트롤러(100)가 메모리 장치(200)를 제어하는 것으로 설명될 것이나, 본 발명의 실시예들은 이에 국한될 필요가 없다. 예컨대, 메모리 컨트롤러(100)는 호스트(HOST) 내에 구비되는 구성에 해당하고, 호스트(HOST)가 메모리 장치(200)를 제어하는 것으로 설명되어도 무방할 것이다.Hereinafter, an example in which the
메모리 컨트롤러(100)는 데이터를 이용한 연산 처리를 수행하기 위하여 하나 이상의 명령어들(Inst)을 메모리 장치(200)로 전송할 수 있다. 메모리 장치(200)는 명령어(Inst)들을 수신하고 이를 내부에 저장할 수 있다. 일 예로서, PIM 회로(220)는 하나 이상의 프로세싱 소자들(221)과, 명령어(Inst)들을 저장하기 위한 명령어 메모리(미도시)를 포함할 수 있으며, 이후 메모리 컨트롤러(100)로부터 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)가 수신될 때, 프로세싱 소자들(221)은 명령어 메모리로부터 독출된 명령어(Inst)에 대응하는 연산을 수행할 수 있다. The
본 발명의 예시적인 실시예들에 따라, 메모리 컨트롤러(100)는 다수의 연산 처리들이 일련하게 수행될 수 있도록 다수의 명령어(Inst)들을 메모리 장치(200)로 전송할 수 있다. 일 예로서, 실제 연산 처리가 수행되기 전에 다수의 명령어(Inst)들을 명령어 메모리(미도시)에 로딩하기 위한 모드(예컨대, 명령어 로딩 모드)가 수행될 수 있으며, 명령어 로딩 모드 동안 다수의 명령어(Inst)들이 메모리 장치(200)의 명령어 메모리에 로딩될 수 있다.According to exemplary embodiments of the present invention, the
한편, 메모리 컨트롤러(100)는 노멀 메모리 동작에 관련된 커맨드들을 이용하여 메모리 장치(200)가 연산 처리를 수행하도록 제어 동작을 수행할 수 있다. 예컨대, 메모리 컨트롤러(100)로부터 제공되는 어드레스(ADD)의 비트 값은 다수의 범위들로 분류될 수 있으며, 일 예로서 그 비트 값에 따라 상기 어드레스(ADD)는 메모리 동작을 지시하는 제1 범위에 속하거나 또는 연산 처리를 지시하는 제2 범위에 속할 수 있다. 메모리 컨트롤러(100)는 어드레스 맵(120)을 관리할 수 있으며, 어드레스 맵(120)은 제1 범위에 속하는 어드레스들과 제2 범위에 속하는 어드레스들을 관리할 수 있다. 또한, 어드레스 맵(120)에 포함되는 어드레스들의 정보는 메모리 컨트롤러(100) 내의 소정의 메모리에 저장될 수 있다. Meanwhile, the
메모리 장치(200)는 메모리 컨트롤러(100)로부터의 커맨드/어드레스(CMD/ADD)에 응답하여 메모리 동작 또는 연산 처리 동작을 선택적으로 수행할 수 있다. 일 예로서, 메모리 장치(200)는 메모리 컨트롤러(100)로부터의 데이터 기록또는 독출 커맨드(WR/RD)에 응답하여 연산 처리를 수행할 수 있다.The
일 동작 예로서, 메모리 컨트롤러(100)는 데이터 기록 또는 독출 커맨드(WR/RD)와 함께, 제1 범위에 속하는 어드레스(ADD)를 메모리 장치(200)로 전송할 수 있다. 이 경우, 메모리 장치(200)의 커맨드 디코더(231)는 수신된 커맨드/어드레스(CMD/ADD)에 대한 디코딩 동작을 수행하고, 어드레스(ADD)의 값이 제1 범위에 속함에 따라, 메모리 뱅크(210)의 상기 어드레스(ADD)에 의해 지시되는 위치에 데이터(DATA)를 기록하거나 데이터(DATA)를 독출하는 메모리 동작을 수행할 수 있다. 반면에, 어드레스(ADD)의 값이 제2 범위에 속함에 따라, 커맨드/어드레스(CMD/ADD)에 대한 디코딩 결고에 기반하여 PIM 회로(220)는 연산 처리 모드로 진입하여 연산 처리를 수행할 수 있다. 일 예로서, PIM 회로(220)의 프로세싱 소자들(221)은 메모리 컨트롤러(100)로부터 제공된 데이터(DATA)를 이용하여 연산 처리를 수행하거나, 또는 메모리 셀 어레이(210)로부터 독출된 데이터(DATA)를 이용하여 연산 처리를 수행할 수 있다.As an example of operation, the
또한, 일 예로서, 어드레스(ADD)는 다수 개의 비트들을 포함하고, 특정 위치의 하나 이상의 비트의 값에 따라 상기 어드레스(ADD)는 제1 범위 또는 제2 범위에 속할 수 있다. 또한, 어드레스(ADD)의 상기 특징 위치의 비트를 제외한 나머지 비트들 중 적어도 일부는 데이터(DATA)의 위치를 지시하기 위한 정보(예컨대, 로우 어드레스 및 칼럼 어드레스)를 포함할 수 있다. 일 동작 예로서, PIM 회로(220)는 어드레스(ADD)에서 상기 메모리 뱅크(210)의 위치를 나타내는 정보를 통해 데이터(DATA)를 독출하고, 독출된 데이터(DATA)를 이용한 연산 처리를 수행할 수 있다.In addition, as an example, the address ADD includes a plurality of bits, and the address ADD may belong to a first range or a second range according to a value of one or more bits at a specific position. In addition, at least some of the remaining bits of the address ADD except for the bit of the feature position may include information (eg, a row address and a column address) for indicating the position of the data DATA. As an example of operation, the
상기와 같은 본 발명의 실시예에 따르면, PIM 회로(220)에 의한 연산 처리가 호스트와 무관하게 메모리 장치(200) 자체적으로 수행되는 것이 아니라, 메모리 컨트롤러(100)로부터의 커맨드/어드레스(CMD/ADD)에 응답하여 수행되므로, 메모리 컨트롤러(100)로부터의 메모리 동작 요청과 메모리 장치(200) 자체적인 연산 처리 동작이 충돌되는 것이 방지될 수 있다. 예컨대, 메모리 동작이나 연산 처리를 위하여 메모리 뱅크(210)의 로우가 액티브될 수 있는데, 메모리 컨트롤러(100)가 메모리 동작 및 연산 처리를 위한 커맨드/어드레스(CMD/ADD)의 제공 타이밍을 결정할 수 있으며, 또한 뱅크의 위치, 액티브되는 로우의 위치 및 억세스되는 칼럼의 위치가 메모리 컨트롤러(100)에 의해 결정될 수 있다.According to the embodiment of the present invention as described above, the operation processing by the
또한 본 발명의 실시예에 따르면, 메모리 장치(200) 자체적으로 연산 처리를 수행하는 도중에 메모리 컨트롤러(100)로부터 메모리 동작을 위한 트랜잭션(transaction)이 발생되는 경우에는, 연산 처리가 완료될 때 까지 메모리 동작이 지연되거나, 또는 연산 처리를 중단하기 위해 소요되는 시간 동안 메모리 동작이 지연되는 등의 발생될 수 있으나, 본 발명의 실시예들에 따르면 메모리 컨트롤러(100) 또는 이를 포함하는 호스트(HOST)가 메모리 장치(200)의 연산 처리 타이밍을 제어할 수 있으므로, 상기한 충돌에 따른 성능 저하가 방지될 수 있다.In addition, according to an embodiment of the present invention, when a transaction for a memory operation occurs from the
한편, 도 1에 도시된 실시예에서 프로세싱 소자들(221)은 다양한 개수의 프로세싱 소자를 포함할 수 있다. 일 예로서, 각각의 프로세싱 소자가 하나의 뱅크에 대응하여 배치될 수도 있으며, 또는 각각의 프로세싱 소자가 두 개 이상의 뱅크들에 대응하여 배치될 수도 있을 것이다. Meanwhile, in the embodiment shown in FIG. 1, the
한편, 연산 처리에 수행될 데이터(DATA)의 위치는 다양한 방식을 통해 지시될 수 있다. 예컨대, 전술한 바와 같이 연산 처리를 위한 커맨드(CMD)에 수반하는 어드레스(ADD)에 뱅크 선택에 관련된 정보가 포함될 수 있으며, 또는 각각의 명령어(Inst)에 연산에 이용될 데이터(DATA)가 위치하는 뱅크의 정보가 포함될 수도 있을 것이다. 또는, 명령어(Inst)에 저장된 정보와 어드레스(ADD)에 저장된 정보의 조합에 기반하여 연산 처리에 이용될 데이터의 위치가 지시되도록 메모리 장치(200)가 구현될 수도 있을 것이다.Meanwhile, the position of the data DATA to be performed in the operation process may be indicated through various methods. For example, as described above, information related to bank selection may be included in the address ADD accompanying the command CMD for operation processing, or the data DATA to be used for operation may be located in each command Inst. It may also contain information of the bank that is doing. Alternatively, the
도 2는 도 1의 메모리 장치의 PIM 회로의 일 구현 예를 나타내는 블록도이다.FIG. 2 is a block diagram illustrating an example implementation of the PIM circuit of the memory device of FIG. 1.
도 1 및 도 2를 참조하면, PIM 회로(220)는 프로세싱 소자들(221), 프로세싱 제어기(222), 프로그램 카운터(223) 및 명령어 메모리(224)를 포함할 수 있다. 일 예로서, 프로세싱 소자들(221)은 다수의 뱅크들(BANK 1 ~ BANK N)에 대응하여 다수 개의 프로세싱 소자(PE)들을 포함할 수 있으며, 명령어 메모리(224)에 로딩된 명령어(Inst)들에 대응하는 연산 처리를 수행할 수 있다. 또한, 다수 개의 프로세싱 소자(PE)들 각각은 그 내부에 레지스터(미도시)를 포함할 수 있으며, 연산 처리의 대상에 해당하는 피연산자(operand) 및/또는 연산 처리 결과가 레지스터에 임시적으로 저장될 수 있다.1 and 2, the
한편, 프로세싱 제어기(222)는 메모리 장치(200) 내의 연산 처리에 관련된 전반적인 동작을 제어할 수 있다. 프로세싱 제어기(222)는 메모리 컨트롤러(100)로부터 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)가 수신됨에 따라 명령어 메모리(224)에 저장된 명령어(Inst)에 대한 독출 동작을 수행할 수 있고, 독출된 명령어(Inst)에 대응하는 연산 처리가 수행될 수 있도록 프로세싱 소자(PE)들을 제어할 수 있다. Meanwhile, the
한편, 명령어 메모리(224)에는 다수 개의 명령어(Inst 0 ~ Inst n-1)들이 저장되고 순차적으로 독출될 수 있다. 일 동작 예로서, 프로그램 카운터(223)는 프로그램 카운팅 동작을 수행하여 명령어 메모리(224)에서 독출될 명령어를 지시할 수 있다. 예컨대, 메모리 컨트롤러(100)로부터 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)를 수신함에 응답하여, 프로그램 카운터(223)의 현재 카운팅 값에 대응하는 위치의 명령어가 독출되고, 카운팅 동작에 기반하여 카운팅 값을 증가시킬 수 있다. 또는, 다양한 실시예들에 따라, 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)에 응답하여 프로그램 카운터(223)의 현재 카운팅 값을 증가시키고, 증가된 카운팅 값에 대응하는 위치로부터 명령어가 독출될 수도 있을 것이다.Meanwhile, a plurality of
명령어 메모리(224)에 명령어(Inst 0 ~ Inst n-1)들을 저장함에 있어서 다양한 방식들이 적용될 수 있다. 일 예로서, 명령어 메모리(224)에 어드레스가 할당되고, 할당된 어드레스가 명령어 로딩 과정에서 메모리 컨트롤러(100)에 의해 제공될 수 있다. 또한, 순환 큐(circular queue) 기반의 저장 방식을 적용하여, 명령어를 오버라이트(overwrite)함으로써 명령어 메모리(224)의 사이즈를 감소시킬 수 있다. Various methods can be applied to storing the
한편, 프로세싱 제어기(222)는 디코딩된 커맨드/어드레스(CMD/ADD)에 기반하여 연산 처리에 수행될 데이터(DATA)의 이동 경로를 제어할 수 있다. 일 예로서, 메모리 장치(200) 내에는 메모리 뱅크(210)로 제공되거나 메모리 뱅크(210)로부터 독출된 데이터(DATA)의 이동 경로를 제어하는 회로들(미도시)이 포함될 수 있고, 연산에 이용될 데이터(DATA)가 프로세싱 소자(PE)들로 제공될 수 있도록 상기 회로들이 제어될 수 있다. 다양한 실시예들에 따라, 프로세싱 제어기(222)의 제어에 기반하거나 제어 로직(230)의 제어에 기반하여 호스트(HOST)로부터의 데이터(DATA)가 프로세싱 소자(PE)들로 제공될 수 있으며, 또는 메모리 뱅크(210)의 어드레스(ADD)가 지시하는 위치로부터 데이터(DATA)가 독출되어 프로세싱 소자(PE)들로 제공될 수 있다.Meanwhile, the
도 2에 도시된 실시예에서와 같이, 연산 처리를 위한 다수의 명령어들이 미리 로딩되고, 호스트(HOST)로부터 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)가 수신됨에 응답하여 독출된 명령어에 대응하는 연산 처리가 수행될 수 있다. 또한, 연산 처리 동작에 이용되는 데이터(DATA)를 지시하기 위한 어드레스 정보(예컨대, 로우 어드레스 및 칼럼 어드레스)가 호스트(HOST)로부터의 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)에 포함될 수 있다. 즉, 메모리 장치(200) 자체적으로 연산 처리를 수행하는 경우에는, 다수의 명령어들에 따른 연산 처리를 수행하기 위해 어드레스 정보가 메모리 장치(200) 내부에 미리 저장될 필요가 있으나, 본 발명의 실시예들에 따르면 메모리 장치(200)는 연산 처리를 수행하기 위한 어드레스 정보가 미리 저장될 필요가 없으므로, 연산 처리에 필요로 되는 저장 공간의 사이즈를 감소시킬 수 있다. As in the embodiment shown in FIG. 2, a plurality of instructions for arithmetic processing are pre-loaded, and a command/address (CMD/ADD) instructing an arithmetic process is received from the host. Corresponding arithmetic processing can be performed. In addition, address information (e.g., row address and column address) for indicating data DATA used in the operation processing operation may be included in the command/address CMD/ADD indicating operation processing from the host (HOST). have. That is, when the
한편, 상기한 실시예들에 따르면, 호스트로부터 제공된 명령어(Inst 0 ~ Inst n-1)의 순서와 무관하게 명령어 메모리(224)에 명령어들(Inst 0 ~ Inst n-1)이 저장될 수 있다. 예컨대, 상기 명령어들(Inst 0 ~ Inst n-1)이 동일한 종류의 연산을 수행하는 경우, 실제 연산이 수행될 피연산자는 호스트로부터 지시되는 어드레스에 의해 지시될 수 있으므로, 실행되는 명령어들(Inst 0 ~ Inst n-1)의 순서에 무관하게 호스트가 필요로 하는 연산 처리가 수행되고 또한 연산 결과가 발생될 수 있다.Meanwhile, according to the above-described embodiments, the
도 3은 본 발명의 예시적인 실시예의 메모리 장치를 포함하는 데이터 처리 시스템을 나타내는 블록도이다. 도 3에 도시된 바와 같이, 데이터 처리 시스템(300)은 어플리케이션 프로세서(Application Processor, 310)와 메모리 장치(320)를 포함할 수 있으며, 어플리케이션 프로세서(310)는 메모리 장치(320)와 통신하는 메모리 컨트롤 모듈(311)을 포함할 수 있다. 일 예로서, 어플리케이션 프로세서(310)와 메모리 장치(320)가 메모리 시스템을 구성할 수 있다. 3 is a block diagram showing a data processing system including a memory device according to an exemplary embodiment of the present invention. As shown in FIG. 3, the
한편, 어플리케이션 프로세서(310)는 도 1에서의 호스트의 기능을 수행할 수 있으며, 전술한 실시예들에 따라 메모리 동작에 관련된 제1 어드레스들과 연산처리에 관련된 제2 어드레스들을 관리하는 어드레스 맵(312)을 포함할 수 있다. 도 3에는 어드레스 맵(312)이 메모리 컨트롤 모듈(311)의 외부에 구비된 것으로 도시되었으나, 전술한 실시예에서와 같이 어드레스 맵(312)은 메모리 컨트롤 모듈(311)에 구비되어도 무방할 것이다.Meanwhile, the
한편, 어플리케이션 프로세서(310)는 시스템 버스(미도시)를 포함하는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 시스템 버스의 표준 규격으로서, ARM(Advanced RISC Machine) 사의 AMBA(Advanced Microcontroller Bus Architecture) 프로토콜이 적용될 수 있다. AMBA 프로토콜의 버스 타입에는 AHB(Advanced High-Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface), AXI4, ACE(AXI Coherency Extensions) 등이 포함될 수 있다. 이외에도, 소닉사(SONICs Inc.)의 uNetwork 이나 IBM의 CoreConnect, OCP-IP의 오픈 코어 프로토콜(Open Core Protocol) 등 다른 타입의 프로토콜이 적용되어도 무방하다. Meanwhile, the
메모리 컨트롤 모듈(310)은 전술한 실시예에서의 메모리 컨트롤러의 기능을 수행할 수 있으며, 커맨드/어드레스(CMD/ADD)를 메모리 장치(320)로 전송함으로써 메모리 동작을 제어하거나 또는 메모리 장치(320) 내에서의 연산 처리 동작을 제어할 수 있다. 전술한 실시예들에 따라, 메모리 장치(300)는 메모리 뱅크(321), PIM (Processor in Memory) 회로(322) 및 제어 로직(323)를 포함할 수 있으며, PIM 회로(322)는 프로세싱 소자들(322_1)을 포함하고, 제어 로직(323)은 커맨드 디코더(323_1)를 포함할 수 있다. 어플리케이션 프로세서(310)는 메모리 장치(320) 내부에서의 연산 처리를 위해 다수의 명령어(Inst)들을 메모리 장치(320)로 제공할 수 있으며, 메모리 장치(320) 내부의 명령어 메모리(미도시)에 상기 다수의 명령어(Inst)들이 저장될 수 있다. 또한, 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)가 메모리 장치(320)로 제공될 때, 프로세싱 소자들(322_1)은 어플리케이션 프로세서(310)로부터의 데이터(DATA) 및/또는 메모리 뱅크(321)로부터 독출된 데이터(DATA)를 이용하여 연산 처리를 수행할 수 있다.The
도 4는 본 발명의 예시적인 실시예에 따른 데이터 처리 시스템의 구현 예를 나타내는 블록도이다. Fig. 4 is a block diagram showing an implementation example of a data processing system according to an exemplary embodiment of the present invention.
도 4를 참조하면, 데이터 처리 시스템(400)은 호스트(410)와 메모리 장치(420)를 포함할 수 있으며, 도 4에 도시되지는 않았으나 호스트(410)는 전술한 실시예들에서의 메모리 컨트롤러를 포함할 수 있으며, 또한 어드레스 맵(411)을 더 포함할 수 있다. 일 예로서, 호스트(410)는 메모리 동작을 지시하기 위한 어드레스 범위와 연산 처리 동작을 지시하기 위한 어드레스 범위를 로우 어드레스로서 관리할 수 있으며, 이에 따라 어드레스 맵(411)은 로우 어드레스 맵으로 지칭될 수 있다. 상기 어드레스 맵(411)은 호스트(410) 내에 구비되는 메모리(미도시)에 저장될 수 있다.Referring to FIG. 4, the
전술한 실시예에서와 같이, 메모리 동작을 지시하기 위한 제1 범위의 로우 어드레스의 값이 정의되고, 또한 연산 처리를 지시하기 위한 제2 범위의 로우 어드레스의 값이 정의될 수 있으며, 상기 호스트(410)는 제1 및 제2 범위의 로우 어드레스들을 관리할 수 있다. 일 예로서, 로우 어드레스는 다수의 비트들을 포함하고, 상기 다수의 비트들 중 적어도 하나의 비트의 값에 따라 제1 범위와 제2 범위가 분류될 수 있다. 또한, 상기 다수의 비트들 중 나머지 비트들은 다수의 로우들을 포함하는 뱅크에서 액티브되는 로우의 위치를 나타내는 정보를 포함할 수 있다. 또한, 예시적인 실시예에 따라, 제1 범위의 로우 어드레스는 어드레스 맵(411)의 어느 하나의 영역(예컨대, 뱅크 영역)에 저장되고, 제2 범위의 로우 어드레스는 어드레스 맵(411)의 다른 하나의 영역(예컨대, PE 영역)에 저장될 수 있다.As in the above-described embodiment, a value of a row address of a first range for instructing a memory operation may be defined, a value of a row address of a second range for instructing an operation process may be defined, and the host ( 410 may manage row addresses of the first and second ranges. As an example, a row address may include a plurality of bits, and a first range and a second range may be classified according to a value of at least one of the plurality of bits. In addition, the remaining bits among the plurality of bits may include information indicating a position of a row active in a bank including a plurality of rows. Further, according to an exemplary embodiment, the row addresses of the first range are stored in any one area (eg, a bank area) of the
호스트(410)는 다수의 버스(BUS)들을 통해 메모리 장치(420)와 통신할 수 있으며, 일 예로서 커맨드/어드레스 버스(CA BUS), 메모리 동작을 위한 데이터 버스(DQ BUS for BANK) 및 연산 처리 동작을 위한 데이터 버스(DQ BUS for PE)를 포함할 수 있다. 메모리 장치(420)는 메모리 뱅크(421), 커맨드 디코더(또는, 제어 로직(422)), 프로세싱 소자들(423), 프로세싱 제어기(424), 프로그램 카운터(425) 및 명령어 메모리(426)를 포함할 수 있다. 도 4에 도시된 각종 구성 요소들 중 일부는 전술한 실시예에서의 PIM 회로를 구성할 수 있다. The
커맨드 디코더(422)는 커맨드/어드레스(CMD/ADD)를 수신하고, 커맨드/어드레스(CMD/ADD)에 대한 디코딩 동작을 수행할 수 있다. 수신된 어드레스(ADD)가 뱅크 영역에 포함되는 제1 범위의 어드레스에 해당하는 경우, 메모리 장치(420)는 커맨드/어드레스(CMD/ADD)의 디코딩 결과에 기반하여 데이터(DATA)를 메모리 뱅크(421)에서 선택된 뱅크 내에 저장할 수 있다. The
한편, 수신된 어드레스(ADD)가 PE 영역에 포함되는 제2 범위의 어드레스에 해당하는 경우, 커맨드 디코더(422)는 커맨드/어드레스(CMD/ADD)를 프로세싱 제어기(424)로 전달할 수 있다. 다양한 실시예들에 따라, 커맨드 디코더(422)는 수신된 커맨드/어드레스(CMD/ADD)를 프로세싱 제어기(424)로 전달하거나, 또는 커맨드/어드레스(CMD/ADD)에 대한 디코딩 결과를 프로세싱 제어기(424)로 전달할 수도 있을 것이다.Meanwhile, when the received address ADD corresponds to an address in the second range included in the PE region, the
프로세싱 제어기(424)는 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)를 수신함에 따라, 프로그램 카운터(425)에 의해 지시되는 영역에 저장된 명령어(Inst)를 독출함과 함께, 프로그램 카운터(425)의 카운팅 동작을 제어할 수 있다. 또한, 프로세싱 제어기(424)는 커맨드/어드레스(CMD/ADD)와 명령어(Inst)에 기반하여 연산을 수행할 프로세싱 소자(PE)를 선택하고 이를 제어할 수 있다. 또한, 연산 처리를 위한 데이터 버스(DQ BUS for PE)를 통해 수신되는 데이터(DATA)가 선택된 프로세싱 소자(PE)로 제공되어 연산 처리가 수행될 수 있다. As the
또는, 수신된 어드레스(ADD)에는 연산 처리가 수행될 데이터(DATA)가 저장된 위치를 나타내는 정보가 포함될 수 있으며, 프로세싱 제어기(424) 및/또는 커맨드 디코더(422)는 수신된 어드레스(ADD)를 이용하여 메모리 뱅크(421)로부터 독출된 데이터(DATA)가 내부 버스를 통해 선택된 프로세싱 소자(PE)로 제공되도록 제어 동작을 수행할 수 있다. 프로세싱 소자(PE)는 호스트(HOST)로부터 제공되거나 메모리 뱅크(421)로부터 독출된 데이터(DATA)를 이용한 연산 처리 결과를 그 내부의 레지스터(미도시)에 저장할 수 있다.Alternatively, the received address ADD may include information indicating a location where the data DATA to be processed is stored, and the
도 5는 본 발명의 예시적인 실시예의 메모리 장치가 HBM(high bandwidth memory)을 포함하는 예를 나타내는 블록도이다. 5 is a block diagram illustrating an example in which a memory device according to an exemplary embodiment of the present invention includes a high bandwidth memory (HBM).
HBM(500)는 서로 독립된 인터페이스를 갖는 다수의 채널들을 포함함으로써 증가된 대역폭(Bandwidth)을 가질 수 있다. 도 5를 참조하면, HBM(500)는 다수 개의 다이들을 포함할 수 있으며, 일 예로서 버퍼 다이(또는, 로직 다이(510))와 이에 적층된 하나 이상의 코어 다이들(520)을 포함할 수 있다. 도 5의 예에서는, 제1 내지 제4 코어 다이들이 HBM(500)에 구비되는 예가 도시되었으나, 상기 코어 다이들(520)의 개수는 다양하게 변경될 수 있다.The
또한, 코어 다이들(520) 각각은 하나 이상의 채널을 포함할 수 있으며, 도 5의 예에서는 코어 다이들(520) 각각이 두 개의 채널을 포함함에 따라 HBM(500)가 8 개의 채널들(CH1 ~ CH8)을 갖는 예가 도시된다. 예컨대, 제1 코어 다이가 제1 채널 및 제3 채널(CH1, CH3)을 포함하고, 제2 코어 다이가 제2 채널 및 제4 채널(CH2, CH4)을 포함하며, 제3 코어 다이가 제5 채널 및 제7 채널(CH5, CH7)을 포함하며, 제4 코어 다이가 제6 채널 및 제8 채널(CH6, CH8)을 포함할 수 있다.In addition, each of the core dies 520 may include one or more channels, and in the example of FIG. 5, since each of the core dies 520 includes two channels, the
버퍼 다이(510)는 호스트(또는, 메모리 컨트롤러)와 통신하는 인터페이스 회로(511)를 포함할 수 있으며, 인터페이스 회로(511)를 통해 호스트로부터 커맨드/어드레스 및 데이터를 수신할 수 있다. 호스트는 채널에 대응하여 배치되는 버스들을 통해 커맨드/어드레스 및 데이터를 전송할 수 있으며, 채널 별로 버스가 구분되도록 형성되거나, 일부의 버스는 적어도 두 개의 채널들에 공유될 수도 있을 것이다. 인터페이스 회로(511)는 호스트가 메모리 동작 또는 연산 처리를 요청하는 채널로 커맨드/어드레스 및 데이터를 전달할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 코어 다이들(520) 각각 또는 채널들 각각은 PIM 회로(521)와 커맨드 디코더(522)를 포함할 수 있으며, 커맨드 디코더(522)는 수신된 커맨드/어드레스에 대한 디코딩 동작을 제어할 수 있다.The buffer die 510 may include an
호스트는 다수의 연산들 중 적어도 일부의 연산들이 HBM(500)에서 수행될 수 있도록 커맨드/어드레스 및 데이터를 제공할 수 있으며, 호스트가 지시하는 채널의 PIM 회로(521)에서 연산 처리가 수행될 수 있다. 일 예로서, 전술한 실시예들에 따라, 수신된 커맨드/어드레스가 메모리 동작을 지시하는 경우에는 데이터에 대한 억세스 동작이 수행될 수 있다. 반면에, 수신된 커맨드/어드레스가 연산 처리를 지시하는 경우에는, PIM 회로(521)가 호스트로부터의 데이터 및/또는 해당 채널에서 독출된 데이터를 이용한 연산 처리를 수행할 수 있다.The host may provide commands/addresses and data so that at least some of the plurality of operations can be performed by the
일 실시예에 따라, 채널들 각각은 다수 개의 뱅크들을 포함할 수 있고, 각각의 채널의 PIM 회로(521)에는 하나 이상의 프로세싱 소자들이 구비될 수 있다. 일 예로서, 각각의 채널에서 프로세싱 소자들의 개수는 상기 채널의 뱅크들의 개수와 동일할 수 있으며, 또는 프로세싱 소자들의 개수가 뱅크들의 개수보다 적음에 따라 하나의 프로세싱 소자가 적어도 두 개의 뱅크들에 공유될 수도 있을 것이다.According to an embodiment, each of the channels may include a plurality of banks, and one or more processing elements may be provided in the
한편, 버퍼 다이(510)는 TSV 영역(512), 물리(PHY) 영역(513) 및 다이렉트 억세스 영역(DA, 514)을 더 포함할 수 있다. 도 5에 도시되지는 않았으나, 데이터의 이동 경로의 제어 등 HBM(500)의 전반적인 동작을 제어하는 프로세서가 버퍼 다이(510)에 더 포함될 수도 있을 것이다.Meanwhile, the buffer die 510 may further include a
TSV 영역(512)은 코어 다이들(520)과의 통신을 위한 TSV가 형성되는 영역이다. 또한, 물리(PHY) 영역(513)은 외부의 호스트와의 통신을 위해 다수의 입출력 회로를 포함할 수 있으며, 일 예로서 물리(PHY) 영역(513)은 호스트와의 통신을 위한 하나 이상의 포트들을 포함할 수 있다. 한편, 다이렉트 억세스 영역(514)은 HBM(500)에 대한 테스트 모드에서 HBM(500)의 외면에 배치되는 도전 수단을 통해 외부의 테스터와 직접 통신하기 위해 배치될 수 있다. The
도 6은 본 발명의 예시적인 실시예에 따른 메모리 시스템의 동작 예를 나타내는 개념도이다. 도 6에서는 메모리 장치가 호스트(HOST)와 통신하는 예가 도시되며, 호스트(HOST)에는 메모리 장치와의 통신을 수행하는 메모리 컨트롤러(또는, 메모리 컨트롤 모듈)이 구비될 수 있다.6 is a conceptual diagram illustrating an example of an operation of a memory system according to an exemplary embodiment of the present invention. 6 illustrates an example in which a memory device communicates with a host HOST, and a memory controller (or a memory control module) that communicates with the memory device may be provided in the host.
도 6을 참조하면, 호스트(HOST)는 메모리 장치의 각종 동작 모드를 제어할 수 있으며, 메모리 장치가 명령어 로딩 모드로 동작함에 따라 호스트(HOST)는 연산 처리에 필요한 다수의 명령어들을 메모리 장치로 전송할 수 있으며, 전송된 명령어는 메모리 장치 내에 저장될 수 있다. 일 예로서, 가산, 감산, 곱셈 연산 등 다양한 종류들의 연산 처리가 메모리 장치에서 수행될 수 있으며, PIM 회로는 연산 처리 모드에서 명령어를 독출하고 이를 디코딩함으로써 명령어에 대응하는 연산 종류를 판단할 수 있다. Referring to FIG. 6, the host (HOST) can control various operation modes of the memory device, and as the memory device operates in the command loading mode, the host (HOST) transmits a number of commands required for operation processing to the memory device. And the transmitted command may be stored in the memory device. As an example, various types of operation processing, such as addition, subtraction, and multiplication operations, may be performed in the memory device, and the PIM circuit may determine the type of operation corresponding to the instruction by reading the instruction and decoding it in the operation processing mode. .
호스트(HOST)는 메모리 장치가 노멀 모드에서 동작하도록 제어 동작을 수행할 수 있으며, 일 예로서 호스트(HOST)는 메모리 동작을 지시하기 위한 제1 범위의 어드레스를 포함하는 커맨드/어드레스를 메모리 장치로 전송할 수 있다. 메모리 장치는 수신된 커맨드/어드레스를 디코딩하고, 제1 범위에 속하는 어드레스에 응답하여 메모리 동작을 수행할 수 있다. 또한, 메모리 동작의 처리가 완료됨에 따라 메모리 동작 결과를 호스트(HOST)로 출력할 수 있으며, 일 예로서 독출 커맨드에 응답하여 독출된 데이터를 호스트(HOST)로 출력할 수 있으며, 또는 기록 커맨드에 응답하여 데이터 기록 동작이 완료되었음을 나타내는 응답을 호스트(HOST)로 출력할 수 있다.The host HOST may perform a control operation so that the memory device operates in the normal mode, and as an example, the host transmits a command/address including an address of a first range for instructing a memory operation to the memory device. Can be transmitted. The memory device may decode the received command/address and perform a memory operation in response to an address belonging to the first range. In addition, as the processing of the memory operation is completed, the result of the memory operation may be output to the host. As an example, the read data may be output to the host in response to a read command, or a write command. In response, a response indicating that the data writing operation has been completed may be output to the host.
한편, 호스트(HOST)는 연산 처리를 지시하기 위해 제2 범위의 어드레스를 포함하는 커맨드/어드레스를 메모리 장치로 전송할 수 있다. 메모리 장치는 수신된 커맨드/어드레스를 디코딩하고, 제2 범위에 속하는 어드레스에 응답하여 연산 처리 모드로 진입할 수 있다. 일 예로서, 호스트(HOST)로부터 커맨드/어드레스와 함께 데이터가 수신됨에 따라, 호스트(HOST)로부터 수신된 데이터를 이용한 연산 처리가 수행될 수 있다. 또한, 연산 처리 결과가 호스트(HOST)로 전송될 수 있으며, 일 예로서 연산 처리 동작이 완료된 후 그 결과가 호스트(HOST)로 전송될 수 있을 것이다. 또는, 예시적인 실시예에 따라, 연산 처리 결과는 프로세싱 소자 내의 레지스터에 저장되거나 또는 뱅크의 셀 어레이에 저장될 수 있으며, 호스트(HOST)는 연산 처리 결과를 독출하기 위한 커맨드/어드레스를 메모리 장치로 전송할 수도 있을 것이다.Meanwhile, the host HOST may transmit a command/address including an address in the second range to the memory device in order to instruct an operation process. The memory device may decode the received command/address and enter an operation processing mode in response to an address belonging to the second range. As an example, as data is received together with a command/address from the host HOST, an operation process using the data received from the host HOST may be performed. In addition, the operation processing result may be transmitted to the host HOST, and as an example, the result may be transmitted to the host after the operation processing operation is completed. Alternatively, according to an exemplary embodiment, the operation processing result may be stored in a register in the processing element or in a cell array of a bank, and the host transmits a command/address for reading the operation processing result to the memory device. It could also be transmitted.
도 7 및 도 8은 본 발명의 예시적인 실시예에 따른 메모리 장치의 동작방법을 나타내는 플로우차트이다.7 and 8 are flowcharts illustrating a method of operating a memory device according to an exemplary embodiment of the present invention.
도 7을 참조하면, 메모리 장치는 명령어 로딩 모드에서 호스트로부터 제공된 명령어를 수신하고 이를 저장할 수 있다(S11). 메모리 장치는 호스트로부터 다양한 종류의 커맨드들을 수신하고 그 디코딩 결과를 이용하여 다양한 기능들을 수행할 수 있다. 일 예로서, 메모리 장치는 호스트로부터 기록/독출 커맨드(WR/RD)를 수신함과 함께 이에 대응하는 어드레스를 수신할 수 있다(S12). 또한, 메모리 장치는 수신된 커맨드/어드레스에 대한 디코딩 동작을 수행할 수 있다(S13).Referring to FIG. 7, the memory device may receive and store a command provided from a host in the command loading mode (S11). The memory device may receive various types of commands from the host and perform various functions using the decoding result. As an example, the memory device may receive a write/read command WR/RD from a host and an address corresponding thereto (S12). In addition, the memory device may perform a decoding operation on the received command/address (S13).
메모리 장치는 디코딩 결과에 기반하여 연산 처리 모드에서 동작할 것인지를 판단할 수 있다(S14). 일 예로서, 전술한 실시예들에 따라 수신된 어드레스는 제1 범위 또는 제2 범위에 속하는 비트 값을 가질 수 있으며, 수신된 어드레스의 비트 값이 제1 범위에 속함에 따라 메모리 장치는 수신된 커맨드/어드레스에 대응하는 노멀 기록/독출 동작을 수행할 수 있다(S15). 반면에, 수신된 어드레스의 비트 값이 제2 범위에 속함에 따라 메모리 장치는 연산 처리 모드로 진입할 수 있다.The memory device may determine whether to operate in the operation processing mode based on the decoding result (S14). As an example, a received address according to the above-described embodiments may have a bit value belonging to a first range or a second range, and as the bit value of the received address falls within the first range, the memory device is A normal write/read operation corresponding to the command/address can be performed (S15). On the other hand, as the bit value of the received address falls within the second range, the memory device may enter the operation processing mode.
연산 처리 모드에서, 메모리 장치 내에 구비되는 PIM 회로는 연산 처리를 위한 일련의 동작들을 수행할 수 있다. 먼저, 호스트로부터의 커맨드/어드레스가 PIM 회로로 제공될 수 있고, PIM 회로는 명령어 메모리 내에 저장된 명령어들 중 프로그램 카운터에 의해 지시되는 명령어를 독출하고, 또한 프로그램 카운팅 동작을 수행할 수 있다(S16). 상기와 같은 동작에 따라 명령어 메모리에 저장된 명령어들이 순차적으로 독출될 수 있다.In the arithmetic processing mode, the PIM circuit provided in the memory device may perform a series of operations for arithmetic processing. First, a command/address from the host may be provided to the PIM circuit, and the PIM circuit may read a command indicated by a program counter among commands stored in the command memory, and may also perform a program counting operation (S16). . According to the above-described operation, commands stored in the command memory may be sequentially read.
한편, 연산 처리를 지시하기 위한 커맨드/어드레스에는 연산에 이용될 데이터가 저장된 위치를 나타내는 어드레스 정보가 포함될 수 있으며, 메모리 장치 내부의 제어 동작에 기반하여, 수신된 어드레스에 대응하는 위치로부터 데이터가 독출되어 PIM 회로로 제공될 수 있고(S17), PIM 회로는 상기 독출된 데이터를 이용한 연산 처리를 수행할 수 있다.Meanwhile, the command/address for instructing the operation process may include address information indicating a location where data to be used for operation is stored, and data is read from a location corresponding to the received address based on a control operation inside the memory device. As a result, it may be provided as a PIM circuit (S17), and the PIM circuit may perform arithmetic processing using the read data.
한편, 도 8을 참조하면, 호스트와 메모리 장치 사이에 연산 처리 동작을 위한 다양한 커맨드들이 정의될 수 있으며, 기록 커맨드 및 독출 커맨드를 이용하여 연산 처리를 수행함에 있어서 커맨드에 따라 연산 처리 방식이 다르게 설정될 수 있다.Meanwhile, referring to FIG. 8, various commands for arithmetic processing operations may be defined between the host and the memory device, and when arithmetic processing is performed using a write command and a read command, the arithmetic processing method is set differently according to the command. Can be.
일 실시예에 따라, 호스트는 독출 커맨드를 연산 처리를 위한 커맨드로서 메모리 장치로 제공할 수 있으며, 메모리 장치는 호스트로부터 독출 커맨드 및 어드레스를 수신할 수 있다(S21). 메모리 장치는 커맨드/어드레스에 대한 디코딩 동작에 기반하여 연산 처리를 수행할 수 있고, 다양한 방식을 통해 연산 처리 모드로의 진입을 위한 커맨드/어드레스가 정의될 수 있다. 예컨대, 전술한 실시예들에 따라, 어드레스의 비트 값이 제1 범위 또는 제2 범위에 속할 수 있고, 제1 범위에 속하는 어드레스가 메모리 장치로 제공되는 경우에 메모리 장치는 연산 처리 모드에서 동작할 수 있다.According to an embodiment, the host may provide a read command as a command for operation processing to the memory device, and the memory device may receive a read command and an address from the host (S21). The memory device may perform arithmetic processing based on a decoding operation for a command/address, and a command/address for entering the arithmetic processing mode may be defined through various methods. For example, according to the above-described embodiments, when a bit value of an address may belong to a first range or a second range, and an address belonging to the first range is provided to the memory device, the memory device may operate in an operation processing mode. I can.
독출 커맨드가 메모리 장치로 제공되는 경우, 메모리 셀 어레이로부터 독출된 데이터를 이용한 연산 처리가 수행될 수 있으며, 독출 커맨드에 수반되는 어드레스에는 상기 메모리 셀 어레이로부터 독출될 데이터가 저장된 위치의 정보(예컨대, 뱅크 어드레스, 로우 어드레스 및 칼럼 어드레스 등)가 포함될 수 있다. 메모리 장치는 수신된 어드레스에 대응하는 위치의 데이터를 독출하고(S22), 독출된 데이터가 PIM 회로로 제공됨에 따라 독출된 데이터를 이용한 연산 처리가 수행될 수 있다(S23).When a read command is provided to a memory device, operation processing using data read from the memory cell array may be performed, and information on a location where data to be read from the memory cell array is stored at an address accompanying the read command (e.g., Bank address, row address, column address, etc.) may be included. The memory device reads data at a location corresponding to the received address (S22), and as the read data is provided to the PIM circuit, operation processing using the read data may be performed (S23).
한편, 기록 커맨드가 메모리 장치로 제공되는 경우, 호스트로부터 제공되는 데이터를 이용한 연산 처리가 수행되도록 메모리 장치가 제어될 수 있다. 예컨대, 메모리 장치는 기록 커맨드와 어드레스를 수신하고(S24), 이에 대한 디코딩 동작을 수행할 수 있다. 메모리 장치는 호스트로부터 데이터를 수신하고(S25), 수신된 데이터가 PIM 회로로 제공될 수 있으며, PIM 회로는 호스트로부터 수신된 데이터를 이용한 연산 처리를 수행할 수 있다(S26). 또한, 연산 처리 결과는 PIM 회로 내의 레지스터에 임시적으로 저장될 수 있다.Meanwhile, when the write command is provided to the memory device, the memory device may be controlled to perform an operation process using data provided from the host. For example, the memory device may receive a write command and an address (S24) and perform a decoding operation thereon. The memory device may receive data from the host (S25), the received data may be provided to the PIM circuit, and the PIM circuit may perform an operation process using the data received from the host (S26). Further, the result of the operation processing can be temporarily stored in a register in the PIM circuit.
예시적인 실시예에 따라, 기록 커맨드에 수반하여 수신된 어드레스에는 데이터의 위치를 지시하기 위한 정보가 포함될 수 있다. 일 예로서, 기록 커맨드가 메모리 장치로 제공되는 경우, 메모리 장치는 호스트로부터의 데이터를 이용한 연산 처리를 수행하고, 그 처리 결과가 수신된 어드레스에 의해 지시되는 위치에 저장되도록 메모리 장치가 구현될 수도 있을 것이다.According to an exemplary embodiment, information for indicating the location of data may be included in an address received with the write command. As an example, when a write command is provided to the memory device, the memory device may be implemented such that the memory device performs an operation process using data from the host, and the processing result is stored in a location indicated by the received address. There will be.
도 9는 본 발명의 예시적인 실시예에 따른 메모리 장치의 전체적인 구현 예를 나타내는 블록도이다. 도 9에 도시된 구성요소들 중 일부는 선택적인 구성에 해당할 수 있으며, 이에 따라 도 9에 도시된 일부의 구성 요소는 제거될 수도 있을 것이다. 또는, 도 9에 도시된 일부의 구성 요소는 그 기능적인 측면에서 적어도 두 개의 구성으로 구분되어 도시되어도 무방하며, 또는 두 개 이상의 구성 요소들이 하나의 구성 요소로 합쳐져서 도시되어도 무방할 것이다. 즉, 본 발명의 실시예의 메모리 장치는 동일 또는 유사한 기능을 수행하는 한에서 다양하게 구현될 수 있을 것이다.9 is a block diagram illustrating an overall implementation example of a memory device according to an exemplary embodiment of the present invention. Some of the components shown in FIG. 9 may correspond to optional components, and accordingly, some of the components shown in FIG. 9 may be removed. Alternatively, some of the constituent elements shown in FIG. 9 may be divided into at least two elements in terms of their functionality, or two or more constituent elements may be combined into one constituent element. That is, the memory device of the embodiment of the present invention may be variously implemented as long as it performs the same or similar functions.
도 9를 참조하면, 메모리 장치(600)는 다수 개의 뱅크들(610_1 ~ 610_N)을 포함할 수 있으며, 뱅크들(610_1 ~ 610_N)은 서로 동일하게 구현될 수 있다. 일 예로서 제1 뱅크(610_1)를 예로 들면, 제1 뱅크(610_1)는 셀 어레이(611), 로우 디코더(612), 칼럼 디코더(613), 센스앰프/기록 드라이버(614) 및 프로세싱 소자(615)를 포함할 수 있다. 즉, 각각의 뱅크는 메모리 셀들과 함께, 메모리 동작에 관련된 다양한 주변 회로들을 포함하는 것으로 정의될 수 있다.Referring to FIG. 9, the
한편, 메모리 장치(600)는 커맨드 디코더(621), 뱅크 컨트롤러(622), 어드레스 레지스터(623), 프로세싱 소자 제어기(631), PE 커맨드 큐(632), PE 제어 레지스터(633), 데이터 게이팅부(641) 및 데이터 버퍼(642)를 포함할 수 있다. 전술한 실시예들과 관련하여, 도 9에 도시된 각종 구성 요소들은 전술한 실시예에서의 구성들에 다양하게 대응될 수 있다. 일 예로서, 커맨드 디코더(621), 뱅크 컨트롤러(622) 및 어드레스 레지스터(623) 등은 전술한 실시예에서 제어 로직에 구비되는 구성일 수 있고, 또한 프로세싱 소자 제어기(631) 및/또는 PE 제어 레지스터(633)는 전술한 실시예에서의 PIM 회로에 구비되는 구성일 수 있다. 한편, PE 커맨드 큐(632)는 전술한 실시예에서의 명령어 메모리에 상응하는 구성일 수 있고, PE 커맨드 큐(632)로부터의 PE 커맨드는 전술한 실시예들에서의 명령어에 상응할 수도 있다.Meanwhile, the
로우 디코더(612)는 워드라인(WL)을 통해 제1 뱅크(610_1)의 로우를 선택하고, 칼럼 디코더(613)는 칼럼 선택 라인(CSL)을 통해 제1 뱅크(610_1)의 칼럼을 선택할 수 있다. 또한, 센스앰프/기록 드라이버(614)는 글로벌 입출력 라인(GIO)을 통해 메모리 셀들(611)에 접근하고, 기록 데이터 및 독출 데이터가 센스앰프/기록 드라이버(614)와 데이터 게이팅부(641) 사이에서 전달될 수 있다. The
예시적인 실시예들에 따라, 명령어(또는, PE 커맨드)는 메모리 장치(600)의 데이터 입출력 패드(DQ)를 통해 호스트로부터 제공될 수 있다. 또한, 호스트는 프로세싱 소자(615)의 동작 제어와 관련된 다양한 PE 제어 정보를 데이터 입출력 패드(DQ)를 통해 메모리 장치(600)로 제공될 수 있으며, 프로세싱 소자 제어기(631)는 PE 제어 레지스터(633)에 저장된 정보를 기초로 프로세싱 소자(615)를 제어할 수 있다. 또한, 프로세싱 소자 제어기(631)의 제어에 기반하여 PE 커맨드 큐(632)에 저장된 명령어가 프로세싱 소자(615)로 제공될 수 있다.According to example embodiments, a command (or PE command) may be provided from the host through the data input/output pad DQ of the
전술한 실시예들에 따라, 호스트로부터 제공되는 커맨드/어드레스(CMD/ADD)에 기반하여 커맨드 디코더(621) 및/또는 프로세싱 소자 제어기(631)가 메모리 장치(600)의 전반적인 동작을 제어할 수 있고, 이에 따라 메모리 장치(600)는 노멀 모드 또는 연산 처리 모드에서 동작할 수 있다.According to the above-described embodiments, the
도 10은 호스트에 구비되는 어드레스 맵의 일 구현 예를 나타내는 블록도이다.10 is a block diagram illustrating an example implementation of an address map provided in a host.
도 10을 참조하면, 호스트는 어드레스 맵(예컨대, 로우 어드레스 맵)을 포함하고, 이를 통해 다양한 모드들을 지시하기 위한 로우 어드레스들을 관리할 수 있으며, 로우 어드레스는 그 비트 값에 따라 다양한 범위들에 속할 수 있다. 전술한 실시예들에서는 노멀 모드와 연산 처리 모드가 예시되었으나, 다양한 모드들이 어드레스 맵을 관리함에 의해 수행될 수 있다.Referring to FIG. 10, a host includes an address map (eg, a row address map), and through this, can manage row addresses for indicating various modes, and the row addresses fall into various ranges according to the bit values. I can. In the above-described embodiments, a normal mode and an operation processing mode have been exemplified, but various modes may be performed by managing an address map.
예컨대, 로우 어드레스의 일부 비트(예컨대, 상위의 일부 비트)의 값에 따라 그 속하는 범위가 설정될 수 있으며, 일 예로서 호스트는 상기한 일부 비트의 값이 00x0에 해당하는 로우 어드레스를 제공함으로써 메모리 장치가 노멀 모드(예컨대, 기록 및 독출 동작)로 동작할 수 있다. 또한, 예시적인 실시예에서, 확장된 어드레스 모드의 경우 메모리 장치의 다수의 뱅크들이 동시에 선택되는 모드를 나타낼 수 있으며, 일 예로서 다수의 뱅크들에 대한 프리차지 동작을 함께 수행하기 위해 상기한 확장된 어드레스 모드가 선택될 수도 있다.For example, a range to which a range belongs may be set according to the value of some bits of the row address (eg, some upper bit). As an example, the host provides a row address corresponding to the value of the some bits 00x0, The device may operate in a normal mode (eg, write and read operations). In addition, in the exemplary embodiment, in the case of the extended address mode, it may represent a mode in which a plurality of banks of a memory device are selected at the same time. The addressed mode may be selected.
또한, 연산 처리와 관련하여, 호스트는 커맨드 레지스터 파일(command register file, CRF) 억세스 모드를 선택하고, 이를 통해 다수의 명령어들을 메모리 장치로 전송하는 동작을 수행할 수 있다. 예컨대, 커맨드 레지스터 파일은 전술한 실시예에서의 명령어들을 저장하는 명령어 메모리에 상응할 수 있고, 호스트는 메모리 장치의 커맨드 레지스터 파일을 접근할 수 있다. 또한, 호스트는 메모리 장치가 연산 모드에서 동작하도록 어드레스를 제공할 수 있으며, 이에 따라 메모리 장치 내에 구비되는 프로세싱 소자를 통해 실제 연산 처리가 수행될 수 있다.In addition, in relation to operation processing, the host may perform an operation of selecting a command register file (CRF) access mode and transmitting a plurality of commands to the memory device through this. For example, the command register file may correspond to a command memory storing commands in the above-described embodiment, and the host may access the command register file of the memory device. Also, the host may provide an address so that the memory device operates in an operation mode, and accordingly, an actual operation process may be performed through a processing element included in the memory device.
도 11은 본 발명의 예시적인 실시예들에 따른 메모리 장치가 뉴럴 네트워크 연산을 수행하는 예를 나타내는 도면이다. 11 is a diagram illustrating an example in which a memory device performs a neural network operation according to exemplary embodiments of the present invention.
뉴럴 네트워크(neural network) 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 하나 이상의 뉴럴 네트워크 모델을 이용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 진행되고 있다. 일 예로, 딥 러닝 알고리즘 등 다양한 종류의 뉴럴 네트워크들이 존재하고, 각각의 뉴럴 네트워크는 다양한 종류의 연산들을 수행할 수 있다. 뉴럴 네트워크 연산은 CPU나 GPU 등의 일반(general) 하드웨어나, 특정 소프트웨어에 최적화된 전용 하드웨어 등 다양한 종류의 하드웨어(또는, 프로세서)들에 의해 실행될 수 있다. 일 예로, 전용 하드웨어는 ASIC, NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등 다양한 종류의 하드웨어들을 포함할 수 있다. As neural network technology develops, research is being conducted to analyze input data and extract valid information using one or more neural network models in various types of electronic systems. As an example, there are various types of neural networks such as deep learning algorithms, and each neural network may perform various types of operations. The neural network operation may be executed by various types of hardware (or processors) such as general hardware such as a CPU or GPU, or dedicated hardware optimized for specific software. As an example, the dedicated hardware may include various types of hardware such as an ASIC, a neural processing unit (NPU), a tensor processing unit (TPU), and a neural engine.
본 발명의 예시적인 실시예에 따라, 데이터 처리 시스템은 호스트(미도시)와 메모리 장치(700)를 포함할 수 있으며, 호스트에서 뉴럴 네트워크를 실행함에 있어서 연산들 중 일부는 호스트 내부의 일반(general) 하드웨어 및/또는 전용 하드웨어에 의해 수행될 수 있다. 반면에, 뉴럴 네트워크에 포함되는 적어도 일부의 연산들은 본 발명의 실시예들에 따른 메모리 장치(700)에서 수행될 수 있다. 또는, 다양한 실시예들에 따라, 뉴럴 네트워크에 포함된 다수의 연산들이 모두 메모리 장치(700)에서 수행될 수도 있을 것이다.According to an exemplary embodiment of the present invention, the data processing system may include a host (not shown) and a
도 11을 참조하면, 메모리 장치(700)는 셀 어레이(710), 프로세싱 소자(711), 프로세싱 제어기(712) 및 명령어 메모리(713)를 포함할 수 있다. 일 예로서, 프로세싱 소자(711), 프로세싱 제어기(712) 및 명령어 메모리(713)는 전술한 실시예들에서의 PIM 회로 내에 포함되는 구성일 수 있다. 또한, 다양한 실시예들에 따라 구성 요소들은 메모리 장치(700) 내의 다양한 위치에 구현될 수 있으며, 일 예로서 메모리 셀 어레이(710)와 프로세싱 소자(711)는 동일한 뱅크에 포함되는 구성일 수 있다.Referring to FIG. 11, the
뉴럴 네트워크 연산들은 데이터(DATA)와 가중치(weight)를 이용한 연산을 포함할 수 있으며, 상기 연산에 이용되는 각종 정보들은 호스트(HOST)로부터 제공되거나 또는 메모리 장치 내에 저장될 수 있다. 일 예로서, 도 11에서는 데이터(DATA)가 호스트(HOST)로부터 제공되고 가중치(weight)가 셀 어레이(710)에 뱅크에 저장된 예가 도시되었으나, 본 발명의 실시예들은 이에 국한될 필요가 없다. 예컨대, 데이터(DATA) 또한 셀 어레이(710)에 저장되고, 연산을 위해 셀 어레이(710)로부터 독출될 수도 있으며, 또한 가중치(weight)가 호스트(HOST)로부터 제공될 수도 있을 것이다.Neural network operations may include operations using data DATA and weights, and various types of information used for the operations may be provided from a host or stored in a memory device. As an example, in FIG. 11, an example in which data DATA is provided from a host and a weight is stored in a bank in the
연산 처리를 위한 커맨드/어드레스가 수신될 때마다 명령어 메모리(713)에 저장된 명령어를 선택하기 위한 프로그램 카운팅 동작이 수행되고, 명령어에 따라 프로세싱 소자(711)는 데이터(DATA)와 가중치(weight)를 이용한 연산 처리를 수행할 수 있다. 또한, 연산 결과(Res_P)는 PIM 회로 내의 레지스터에 저장될 수 있으며, 일 예로서 도 11에는 레지스터가 프로세싱 소자(711) 내에 구비되는 예가 도시된다.Whenever a command/address for operation processing is received, a program counting operation for selecting an instruction stored in the
예시적인 실시예들에 따라, 메모리 장치(700)는 다수 개의 뱅크들에 대응하여 다수 개의 프로세싱 소자들을 포함하고, 상기 다수 개의 프로세싱 소자들에 의해 연산 처리가 병렬하게 수행될 수 있다. 일 동작 예로서, 뉴럴 네트워크 연산은 동일한 데이터(DATA)를 서로 다른 다수의 가중치(weight)와 연산하는 동작을 포함할 수 있으며, 다수 개의 뱅크들에 서로 다른 가중치가 각각 저장될 수 있다. 또한, 데이터(DATA)(예컨대, 호스트로부터 제공된 데이터)는 상기한 다수 개의 프로세싱 소자들에 공통하게 제공될 수 있으며, 이에 따라 상기한 다수 개의 프로세싱 소자들은 동일한 데이터(DATA)를 서로 다른 가중치(weight)와 연산하는 동작을 병렬하게 수행할 수 있을 것이다.According to example embodiments, the
도 12는 본 발명의 예시적인 실시예의 메모리 장치에서 정보의 전송 경로의 일 예를 나타내는 블록도이다. 도 12에는 설명의 편의 상 개략적인 구성만이 간략히 도시된다.12 is a block diagram illustrating an example of an information transmission path in a memory device according to an exemplary embodiment of the present invention. In FIG. 12, only a schematic configuration is shown briefly for convenience of description.
도 12를 참조하면, 데이터 처리 시스템(800)은 호스트(810)와 메모리 장치(820)를 포함하고, 호스트(810)는 메모리 컨트롤러(810, MC)를 포함함에 따라 메모리 장치(820)와 통신할 수 있다. 또한, 메모리 장치(820)는 하나 이상의 뱅크(821), PIM 회로(822) 및 경로 선택기(813)로서 멀티플렉서(MUX)를 포함할 수 있다. 이외에도, 메모리 장치(820)는 메모리 동작 및 연산 처리 동작을 위한 다양한 구성 요소들을 더 포함할 수 있으나, 설명의 편의 상 상기 구성 요소들의 도시는 생략된다.Referring to FIG. 12, the
호스트(810)와 메모리 장치(820) 사이에서의 정보 전송 경로, 그리고 메모리 장치(820) 내부에서의 정보 전송 경로의 일 예를 설명하면 다음과 같다. 경로 선택기(813) 내에는 메모리 장치(820)에 구비되는 다수의 버스들 사이의 연결 관계를 제어하기 위한 스위치들(미도시)이 구비될 수 있으며, 메모리 장치 내의 구성 요소들에 의해 상기 스위치들이 제어될 수 있을 것이다. 일 예로서, 메모리 장치(820) 내의 커맨드 디코더(미도시) 및/또는 PIM 회로(822) 내의 프로세싱 제어기 등의 제어 동작에 기반하여 상기 스위치들이 제어될 수도 있을 것이다.An example of an information transmission path between the
뱅크(821)에서 독출된 정보는 일반 데이터에 해당하거나 연산 처리 결과에 해당할 수 있고, 또는 전술한 실시예에서의 연산 처리에 이용되는 정보(예컨대, 가중치 정보)에 해당할 수도 있다. 또한, 호스트(810)로부터 제공되는 데이터는 뱅크(821)에 저장될 수 있으며, 또는 연산 처리를 위해 PIM 회로(822)로 직접 제공될 수 있다.The information read from the
호스트(810)로부터 커맨드/어드레스가 메모리 장치(820)로 제공됨에 따라, 메모리 장치(820) 내에서 커맨드/어드레스에 대한 디코딩 동작이 수행되고, 디코딩 결과에 따라 경로 선택기(813)의 스위치들의 스위칭 상태가 변동될 수 있다. 일 예로서, 커맨드/어드레스가 뱅크(821)에 대한 독출 요청에 해당하는 경우, 뱅크(821)로부터 독출된 데이터는 경로 a를 따라 호스트(810)로 제공될 수 있다. 반면에, 커맨드/어드레스가 뱅크(821)에 저장된 데이터를 이용한 연산 처리 요청에 해당하는 경우에는 뱅크(821)로부터 독출된 데이터는 경로 b를 따라 PIM 회로(822)로 제공될 수 있다.As the command/address is provided from the
한편, 커맨드/어드레스가 뱅크(821)에 대한 기록 요청에 해당하는 경우, 호스트(810)로부터의 데이터는 경로 c를 따라 뱅크(821)로 제공될 수 있다. 반면에, 커맨드/어드레스가 호스트(810)로부터의 데이터를 이용한 연산 처리 요청에 해당하는 경우에는, 호스트(810)로부터의 데이터는 경로 d를 따라 PIM 회로(822)로 제공될 수 있다.Meanwhile, when the command/address corresponds to a write request for the
한편, 커맨드/어드레스가 PIM 회로(822) 내에 저장된 정보(예컨대, 연산 처리 결과 등)에 대한 독출 요청에 해당할 수 있고, 이 경우 PIM 회로(822) 내에 저장된 정보는 경로 f를 따라 호스트(810)로 제공될 수 있다. 반면에, 커맨드/어드레스가 PIM 회로(822) 내의 정보를 뱅크(821)에 저장하는 요청에 해당할 수 있고, 이 경우 PIM 회로(822) 내에 저장된 정보는 경로 e를 따라 뱅크(821)로 제공될 수 있다.On the other hand, the command/address may correspond to a read request for information stored in the PIM circuit 822 (for example, an operation processing result, etc.), and in this case, the information stored in the
도 13a,b는 본 발명의 실시예의 메모리 장치에서 실행되는 명령어의 일 구현 예 및 메모리 장치의 동작방법을 나타내는 플로우차트이다.13A and 13B are flowcharts illustrating an example implementation of an instruction executed in a memory device and a method of operating the memory device according to an embodiment of the present invention.
명령어는 다양한 종류들을 포함할 수 있으며, 일 예로서 루프(Loop)를 수행하기 위한 루프 명령어가 정의될 수 있다. 이 때, 루프 명령어를 수행하는 과정에서 분기 조건(branch condition) 처리 등을 위해 추가적인 레이턴시 오버헤드가 발생될 수 있으며, 이는 명령어를 실행함에 있어서 그 효율성을 저하하는 문제를 야기할 수 있다. 반면에, 명령어들을 실행함에 있어서 루프 풀기(loop unrolling)를 적용하는 경우에는 루프 기본 블록(loop basic block)의 사이즈가 커지기 때문에 명령어들을 저장하는 메모리의 사이즈가 증가하는 문제가 있다.The instruction may include various types, and as an example, a loop instruction for performing a loop may be defined. In this case, in the process of executing the loop instruction, additional latency overhead may be generated for processing a branch condition, etc., which may cause a problem of deteriorating the efficiency of executing the instruction. On the other hand, when loop unrolling is applied when executing instructions, there is a problem that the size of a memory storing instructions increases because the size of a loop basic block increases.
본 실시예에서는 상기와 같은 루프 명령어 수행과 관련된 명령어 집합 구조(Instruction Standard Architecture, ISA)가 제안된다. 도 13a를 참조하면, 루프 명령어는 다양한 필드들을 포함할 수 있으며, 본 발명의 예시적인 실시예에 따라 루프 명령에 해당함을 나타내는 필드(FJUMP)와, 루프의 반복 횟수를 나타내는 필드(times) 및 이동할 명령어의 위치를 나타내는 필드(target)를 포함할 수 있다. 상기와 같은 필드 정보들을 포함함에 따라 정해진 횟수의 루프가 실행될 수 있다.In this embodiment, the instruction set structure related to the execution of the loop instruction as described above (Instruction Standard Architecture, ISA) is proposed. Referring to FIG. 13A, the loop instruction may include various fields, and according to an exemplary embodiment of the present invention, a field (FJUMP) indicating corresponding to a loop instruction, a field indicating the number of repetitions of the loop (times) and moving Can include a field (target) indicating the location of the command. By including the field information as described above, a predetermined number of loops may be executed.
도 13b를 참조하면, 상기한 예에서의 루프 명령어의 실행에 관련된 메모리 장치(900)의 동작 예가 도시된다. 메모리 장치(900)는 프로세싱 제어기(910), 명령어 메모리(920) 및 프로그램 카운터(930)를 포함할 수 있으며, 명령어 메모리(920)에는 제1 내지 제n 명령어들(Inst 0 ~ Inst n-1)이 저장된 예가 도시된다. 또한, 현재의 프로그램 카운팅 값이 1에 해당하고, 이에 따라 커맨드/어드레스(CMD/ADD)에 응답하여 제2 명령어(Inst 1)가 독출될 수 있으며, 본 실시예에 따라 상기 제2 명령어(Inst 1)와 함께 다음의 프로그램 카운팅 값(예컨대, PC=2)이 지시하는 루프 명령어에 해당하는 제3 명령어(Inst 2)가 함께 독출될 수 있다.Referring to FIG. 13B, an operation example of the
프로세싱 제어기(910)는 명령어에 대한 디코딩 동작을 수행하는 명령어 디코더(911)와 루프 카운팅 값을 생성하는 루프 카운터(912)를 포함할 수 있고, 명령어 디코더(911)는 독출된 제3 명령어(Inst 2)에 대한 프리 디코딩 동작을 수행할 수 있다. 또한, 제3 명령어(Inst 2)가 루프 명령어에 해당함에 따라 루프의 반복 횟수를 나타내는 필드(times)의 상응하는 정보에 대응하여 루프 카운팅 값이 설정될 수 있고, 루프 카운터(912)는 루프가 1 회 수행될 때마다 상기 루프 카운팅 값을 증가 또는 감소시킬 수 있다. 일 예로서, 루프 카운터(912)가 다운 카운팅 동작에 기반하는 카운팅을 수행하는 경우, 루프가 수행될 때마다 상기 루프 카운팅 값이 1 만큼 감소될 수 있다.The
프로세싱 제어기(910)는 프리 디코딩 결과에 기반하여 다음에 독출될 명령어가 루프 명령어임을 미리 판단할 수 있고, 프로그램 카운팅 값이 타겟에 해당하는 명령어를 지시하도록 프로그램 카운터(930)를 제어할 수 있다. 이에 따라, 다음의 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)가 수신될 때, 제3 명령어(Inst 2)를 재차 독출하고 이를 실행할 필요가 없이 타겟에 해당하는 명령어가 지시됨으로써 루프가 수행될 수 있다.The
도 14는 본 발명의 예시적인 실시예의 메모리 장치가 루프 명령어를 실행하는 동작 예를 나타내는 플로우차트이다.14 is a flowchart showing an example of an operation of executing a loop instruction by a memory device according to an exemplary embodiment of the present invention.
도 14를 참조하면, 전술한 실시예들에 따라 프로그램 카운팅 동작에 기반하여 명령어들이 독출될 수 있으며, 예컨대 호스트로부터의 연산 처리를 요청하는 커맨드/어드레스에 기반하여 명령어 메모리에 저장된 명령어가 독출될 수 있다(S31). 또한, 다음의 프로그램 카운팅 값이 지시하는 명령어가 미리 독출되고 이에 대한 프리 디코딩(pre decoding) 동작이 수행될 수 있으며, 다음의 명령어가 루프를 실행하는 명령어(FJUMP)에 해당하는 지가 판단될 수 있다(S32). 만약 다음의 명령어가 루프를 실행하는 명령어(FJUMP)가 아닌 경우에는, 프로그램 카운팅 값(예컨대, 현재의 프로그램 카운팅 값)이 다음의 명령어를 가리키는 값을 가질 수 있고(S33), 이에 따라 다음의 연산 처리를 지시하는 커맨드/어드레스가 수신되면 상기한 다음의 명령어가 순차적으로 수행될 수 있다. Referring to FIG. 14, according to the above-described embodiments, instructions may be read based on a program counting operation. For example, instructions stored in the instruction memory may be read based on a command/address requesting an operation process from a host. Yes (S31). In addition, a command indicated by the next program counting value may be read in advance and a pre decoding operation may be performed, and it may be determined whether the next command corresponds to a command for executing a loop (FJUMP). (S32). If the next instruction is not a loop execution instruction (FJUMP), the program counting value (eg, the current program counting value) may have a value indicating the next instruction (S33), and accordingly the next operation When a command/address instructing processing is received, the following commands may be sequentially executed.
반면에, 전술한 판단 동작에서 명령어(FJUMP)로 판단된 경우에는, 루프의 실행 횟수를 참조하기 위해 루프 카운터를 확인하는 동작이 수행되고(S34), 루프 카운팅 값(LC)이 0에 해당하는 지가 판단될 수 있다(S35). 루프 카운팅 값(LC)이 0에 해당하지 않는 경우에는 루프 카운터의 다운 카운팅 동작이 수행됨에 따라 루프 카운팅 값(LC)을 감소시키고(S36), 프로그램 카운팅 값은 루프 명령어에 포함된 타겟에 대응하는 명령어를 지시할 수 있다(S37). 이에 따라, 다음의 연산 처리를 지시하는 커맨드/어드레스가 수신되면 루프 명령어를 재차 실행함이 없이 타겟에 상응하는 명령어가 실행될 수 있다.On the other hand, when it is determined as the instruction (FJUMP) in the above-described determination operation, the operation of checking the loop counter to refer to the number of executions of the loop is performed (S34), and the loop counting value (LC) is 0. It can be determined (S35). If the loop counting value LC does not correspond to 0, the loop counting value LC is decreased (S36) as the down counting operation of the loop counter is performed, and the program counting value corresponds to the target included in the loop instruction. A command can be instructed (S37). Accordingly, when a command/address instructing the next operation process is received, an instruction corresponding to the target can be executed without executing the loop instruction again.
반면에, 루프 카운팅 값(LC)이 0에 해당하는 경우에는 정해진 횟수만큼 루프가 모두 실행됨을 나타낼 수 있으며, 이에 따라 프로그램 카운팅 값은 다음의 명령어를 가리키도록 그 값이 변동될 수 있다(S38).On the other hand, when the loop counting value LC is 0, it may indicate that all loops are executed a predetermined number of times, and accordingly, the value of the program counting value may change to indicate the next instruction (S38). .
도 15a,b는 본 발명의 예시적인 실시예들에 따라 루프를 수행하는 명령어들의 기본 블록 및 동작 예를 나타내는 도면이다.15A and 15B are diagrams showing basic blocks and examples of operations of instructions for performing a loop according to exemplary embodiments of the present invention.
도 15a를 참조하면, 기본 블록(Basic Block)은 하나 이상의 명령어들을 포함하고, 일 예로서 기본 블록(Basic Block)에는 제1 기능(Function A)을 수행하는 제1 명령어(Inst 0), 제2 기능(Function B)을 수행하는 제2 명령어(Inst 1), 루프 실행을 위한 이동(FJUMP)을 실행하는 제3 명령어(Inst 2)가 포함될 수 있다. 또한, 상기 제3 명령어(Inst 2)에는 타겟의 위치에 관련된 정보(@0)와 루프 횟수를 나타내는 정보(n)가 포함될 수 있다. 또한, 전술한 실시예들에 따라, 현재의 프로그램 카운팅 값이 1을 가리킬 때, 제2 명령어(Inst 1)가 독출됨과 함께, 제3 명령어(Inst 2)가 함께 독출됨에 따라 프리 디코딩 동작이 수행될 수 있다.Referring to FIG. 15A, a basic block includes one or more instructions. As an example, a basic block includes a first instruction (Inst 0) and a second instruction for performing a first function (Function A). A
한편, 도 15b에는 일반적인 경우에서의 루프 명령어를 포함하는 명령어들을 처리하는 경우와 본 발명의 예시적인 실시예에서의 루프 명령어를 포함하는 명령어들을 처리하는 경우가 예시된다. Meanwhile, FIG. 15B illustrates a case of processing instructions including a loop instruction in a general case and a case of processing instructions including a loop instruction in an exemplary embodiment of the present invention.
도 15b를 참조하면, 일반적인 방법으로 도 15a의 기본 블록(Basic Block)을 실행하는 경우에는, 각 연산 타이밍에서 하나의 명령어가 독출되고, 이에 따라 제1 기능(Function A), 제2 기능(Function B) 및 이동 기능(JUMP)이 순차적으로 수행될 수 있다. 반면에, 본 발명의 예시적인 실시예에 따르면, 현재의 프로그램 카운팅 값이 제2 명령어(Inst 1)를 지시하는 경우에 제3 명령어(Inst 2)에 대한 프리 디코딩 동작이 수행되고, 이에 따라 이동 기능(JUMP)이 별개로 실행될 필요가 없이 정해진 횟수만큼 제1 기능(Function A) 및 제2 기능(Function B)이 반복하게 수행될 수 있을 것이다.Referring to FIG. 15B, when the basic block of FIG. 15A is executed in a general manner, one instruction is read at each operation timing, and accordingly, a first function (Function A) and a second function (Function) are read. B) and the movement function (JUMP) may be sequentially performed. On the other hand, according to an exemplary embodiment of the present invention, when the current program counting value indicates the second instruction (Inst 1), the pre-decoding operation for the third instruction (Inst 2) is performed, and the movement accordingly. The first function (Function A) and the second function (Function B) may be repeatedly performed a predetermined number of times without the need for the function (JUMP) to be separately executed.
도 16a,b 및 도 17는 본 발명의 실시예의 따른 명령어의 일 구현 예 및 동작방법을 나타내는 도면이다. 도 16a,b 및 도 17에서는 소정의 정해진 횟수만큼 NOP(No Operation)를 실행하는 명령어(예컨대, 멀티 사이클 NOP 명령어)가 예시된다.16A, B, and 17 are diagrams illustrating an example implementation and a method of operating a command according to an embodiment of the present invention. 16A, B and 17 illustrate an instruction (eg, a multi-cycle NOP instruction) for executing NOP (No Operation) a predetermined number of times.
도 16a를 참조하면, 기본 블록(Basic Block)은 하나 이상의 명령어들을 포함하고, 일 예로서 기본 블록(Basic Block)에는 제1 기능(Function A)을 수행하는 제1 명령어(Inst 0), 제2 기능(Function B)을 수행하는 제2 명령어(Inst 1), 멀티 사이클 동안 NOP(MNOP 4)를 수행하는 제3 명령어(Inst 2)가 포함될 수 있다. 또한, 제3 명령어(Inst 2)에는 NOP 명령에 해당함을 나타내는 정보와, NOP 를 수행할 사이클 횟수를 나타내는 정보가 포함될 수 있다. 도 16a의 예에서는, 4 개의 사이클 동안 NOP 가 수행되는 예가 도시된다. 상기 도 16a에 도시된 기본 블록(Basic Block)을 실행함에 있어서, 전술한 실시예에 따른 프리 디코딩 동작이 적용되어도 무방하며, 또는 하나의 연산 처리 사이클에서 하나의 명령어만 독출되어도 무방하다.Referring to FIG. 16A, a basic block includes one or more instructions, and as an example, a basic block includes a first instruction (Inst 0) and a second instruction for performing a first function (Function A). A
멀티 사이클 동안 NOP 를 수행하기 위해서 다수의 명령어들이 메모리에 저장되는 경우에 비해, 도 16a에 도시된 실시예에 따라 멀티 사이클 NOP 명령어를 정의함으로써 기본 블록(Basic Block)의 사이즈가 감소될 수 있다. 일 예로서, NOP 는 명령어 처리에 소정의 딜레이를 제공하거나 다른 다양한 용도를 위해 실행될 수 있고, 이에 따라 다수 횟수의 NOP 수행을 위한 다수의 명령어들의 저장이 필요로 되나, 상기한 본 발명의 실시예에 따른 멀티 사이클 NOP 명령어를 정의함으로써 명령어 메모리가 효율적으로 활용될 수 있다.Compared to a case where a plurality of instructions are stored in a memory to perform NOP during a multi-cycle, the size of a basic block may be reduced by defining a multi-cycle NOP instruction according to the embodiment shown in FIG. 16A. As an example, the NOP may provide a predetermined delay to command processing or be executed for various other purposes, and thus, it is necessary to store a plurality of commands for performing a number of NOPs, but the embodiment of the present invention described above. By defining the multi-cycle NOP instruction according to the instruction memory can be efficiently utilized.
한편, 도 16b는 멀티 사이클 NOP 명령어에 따라 다수 횟수의 NOP가 수행되는 예를 나타내며, 제1 기능(Function A), 제2 기능(Function B)이 수행되고 난 후 다수 횟수의 NOP 가 수행될 수 있다. 일 동작 예로서, 프로세싱 제어기는 멀티 사이클 NOP 명령어를 디코딩한 결과에 기반하여 프로그램 카운팅 값을 증가시킴이 없이 소정의 횟수 동안 현재의 프로그램 카운팅 값을 유지하고, 이를 통해 NOP가 멀티 사이클 동안 수행될 수 있다. Meanwhile, FIG. 16B shows an example in which a number of NOPs are performed according to a multi-cycle NOP instruction, and a number of NOPs may be performed after the first function (Function A) and the second function (Function B) are performed. have. As an example of operation, the processing controller maintains the current program counting value for a predetermined number of times without increasing the program counting value based on the result of decoding the multi-cycle NOP instruction, and through this, the NOP can be performed during multi-cycles. have.
도 17은 멀티 사이클 NOP 명령어에 따른 메모리 장치의 일 동작 예를 나타낸다. 일 예로서, 현재의 프로그램 카운터가 지시하는 명령어를 독출하고 디코딩하며(S41), 현재의 명령어가 멀티 사이클 NOP 명령어(MNOP)에 해당하는 지가 판단될 수 있다(S42). 만약, 멀티 사이클 NOP 명령어(MNOP)에 해당하지 않는 경우에는 프로그램 카운팅 값(예컨대, 현재의 프로그램 카운팅 값)이 다음의 명령어를 가리키는 값을 가질 수 있고(S43), 이에 따라 다음의 연산 처리를 지시하는 커맨드/어드레스가 수신되면 상기한 다음의 명령어가 순차적으로 수행될 수 있다.17 shows an example of an operation of a memory device according to a multi-cycle NOP instruction. As an example, an instruction indicated by a current program counter is read and decoded (S41), and it may be determined whether the current instruction corresponds to a multi-cycle NOP instruction (MNOP) (S42). If it does not correspond to the multi-cycle NOP instruction (MNOP), the program counting value (e.g., the current program counting value) may have a value indicating the next instruction (S43), and accordingly, the next operation processing is indicated. When a command/address to be executed is received, the following commands may be sequentially executed.
반면에, 현재의 명령어가 멀티 사이클 NOP 명령어에 해당함에 따라 NOP 처리의 실행 횟수를 참조하기 위해 루프 카운터를 확인하는 동작이 수행되고(S44), 루프 카운팅 값(LC)이 0에 해당하는 지가 판단될 수 있다(S45). 루프 카운팅 값(LC)이 0에 해당하지 않는 경우에는 다운 카운팅 동작에 기반하여 루프 카운팅 값(LC)을 감소시키고(S46), NOP 처리를 수행함과 함께 프로그램 카운팅 값을 현재의 값으로 유지시킬 수 있다(S47). 반면에, 루프 카운팅 값(LC)이 0에 해당하는 경우에는 정해진 횟수만큼 NOP 처리가 모두 실행됨을 나타낼 수 있으며, 이에 따라 프로그램 카운팅 값은 다음의 명령어를 가리키도록 그 값이 변동될 수 있다(S48).On the other hand, as the current instruction corresponds to the multi-cycle NOP instruction, the operation of checking the loop counter to refer to the number of executions of the NOP processing is performed (S44), and it is determined whether the loop counting value (LC) corresponds to 0. Can be (S45). If the loop counting value (LC) does not correspond to 0, the loop counting value (LC) is reduced based on the down counting operation (S46), and the NOP processing is performed and the program counting value can be maintained at the current value. Yes (S47). On the other hand, when the loop counting value LC corresponds to 0, it may indicate that all NOP processing is executed a predetermined number of times, and accordingly, the value of the program counting value may change to indicate the next instruction (S48). ).
도 18은 본 발명의 실시예에 따른 데이터 처리 시스템을 포함하는 서버 시스템을 나타내는 블록도이다.18 is a block diagram showing a server system including a data processing system according to an embodiment of the present invention.
도 18을 참조하면, 서버 시스템(1000)은 관리자(1010) 및 복수의 서버들(1020_1 ~ 1020_K)을 포함할 수 있다. 복수의 서버들(1020_1 ~ 1020_K) 각각은 전술한 실시예들에서 설명된 데이터 처리 시스템에 해당할 수 있다. 복수의 서버들(1020_1 ~ 1020_K)은 소정의 프로토콜(예컨대, PCI, PCIe 등)을 지원하는 버스를 통해 서로 연결되고, 일 예로서 복수의 서버들(1020_1 ~ 1020_K)은 관리자(1010)의 제어에 기반하여 P2P 연결 구조를 통해 서로 통신할 수 있다.Referring to FIG. 18, the
어느 하나의 서버(예컨대, 제1 서버(1020_1))를 참조하면, 제1 서버(1020_1)는 전술한 실시예들에 따른 호스트 및 하나 이상의 메모리 장치들을 포함하고, 서버의 기능에 따른 다양한 종류의 연산 처리를 수행하고 그 처리 결과를 저장할 수 있다. 일 실시예에 따라, 제1 서버(1020_1)는 호스트 측에서 어드레스 맵(ADD Map)을 포함하고, 또한 메모리 장치(MEM)는 전술한 실시예들에 따른 프로세싱 소자들을 포함할 수 있으며, 호스트가 메모리 장치(MEM)의 연산 처리 타이밍을 제어할 수 있다. 또한, 전술한 실시예들에 따라 메모리 장치(MEM)는 호스트로부터의 커맨드/어드레스를 디코딩함으로써 연산 처리 타이밍을 판단할 수 있다. 다양한 실시예들에서, 서버 시스템(1000)은 뉴럴 네트워크 서버 시스템에 해당하고, 제1 서버(1020_1)는 방대한 양의 뉴럴 네트워크 연산들을 수행함에 있어서 적어도 일부의 연산들이 메모리 장치(MEM)에 의해 수행될 수 있도록 메모리 장치(MEM)에 대한 제어 동작을 수행할 수 있을 것이다.Referring to any one server (eg, the first server 1020_1), the first server 1020_1 includes a host and one or more memory devices according to the above-described embodiments, and various types of You can perform arithmetic processing and store the processing result. According to an embodiment, the first server 1020_1 includes an address map at the host side, and the memory device MEM may include processing elements according to the above-described embodiments, and the host The timing of operation processing of the memory device MEM can be controlled. Also, according to the above-described embodiments, the memory device MEM may determine the operation processing timing by decoding a command/address from the host. In various embodiments, the
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.As described above, exemplary embodiments have been disclosed in the drawings and specifications. In the present specification, embodiments have been described using specific terms, but these are only used for the purpose of describing the technical idea of the present disclosure, and are not used to limit the meaning or the scope of the present disclosure described in the claims. . Therefore, those of ordinary skill in the art will understand that various modifications and equivalent other embodiments are possible therefrom. Therefore, the true technical scope of the present disclosure should be determined by the technical spirit of the appended claims.
Claims (20)
하나 이상의 뱅크들을 포함하고, 각각의 뱅크는 메모리 셀들을 포함하는 메모리 뱅크;
호스트로부터 제공된 데이터 및 상기 메모리 뱅크로부터 독출된 데이터 중 적어도 하나를 이용하여 연산 처리를 수행하고, 상기 호스트로부터 제공된 적어도 하나의 명령어를 저장하는 명령어 메모리를 포함하는 PIM (Processor in Memory) 회로; 및
상기 호스트로부터 수신된 커맨드/어드레스를 디코딩하고, 디코딩 결과에 기반하여 상기 메모리 뱅크에 대한 메모리 동작을 제어하거나 상기 PIM 회로가 연산 처리를 수행하도록 제어 동작을 수행하는 제어 로직을 구비하고,
상기 커맨드/어드레스가 상기 연산 처리를 지시함에 따라 상기 명령어 메모리의 위치를 가리키는 프로그램 카운터의 카운팅 값이 조절되는 것을 특징으로 하는 메모리 장치.In the memory device,
A memory bank including one or more banks, each bank including memory cells;
A PIM (Processor in Memory) circuit including an instruction memory for performing operation processing using at least one of data provided from a host and data read from the memory bank, and storing at least one instruction provided from the host; And
A control logic for decoding a command/address received from the host, controlling a memory operation for the memory bank or performing a control operation so that the PIM circuit performs arithmetic processing based on the decoding result,
And a counting value of a program counter indicating a location of the command memory is adjusted as the command/address instructs the operation processing.
상기 메모리 장치는, 상기 커맨드/어드레스의 디코딩 결과에 기반하여, 상기 어드레스의 비트 값이 제1 범위에 속할 때 상기 메모리 동작을 수행하고, 상기 어드레스의 비트 값이 상기 제1 범위와는 상이한 제2 범위에 속할 때 상기 연산 처리를 수행하는 것을 특징으로 하는 메모리 장치.The method of claim 1,
The memory device performs the memory operation when a bit value of the address falls within a first range based on a result of decoding the command/address, and a second memory device having a bit value of the address different from the first range The memory device, characterized in that to perform the operation processing when within a range.
상기 어드레스는 메모리 동작 모드 또는 연산 처리 모드를 나타내는 모드 정보와, 상기 메모리 뱅크의 위치를 나타내는 어드레스 정보를 포함하고,
상기 모드 정보의 비트 값에 따라 상기 어드레스가 상기 제1 범위 또는 제2 범위에 속하는 것을 특징으로 하는 메모리 장치.The method of claim 2,
The address includes mode information indicating a memory operation mode or an operation processing mode, and address information indicating a location of the memory bank,
Wherein the address falls within the first range or the second range according to a bit value of the mode information.
상기 커맨드는 독출 커맨드 또는 기록 커맨드 중 어느 하나인 것을 특징으로 하는 메모리 장치.The method of claim 1,
The memory device, wherein the command is either a read command or a write command.
상기 커맨드가 독출 커맨드에 해당할 때, 상기 PIM 회로는 상기 메모리 뱅크의 상기 어드레스에 상응하는 위치로부터 독출된 데이터를 이용하여 상기 연산 처리를 수행하고,
상기 커맨드가 기록 커맨드에 해당할 때, 상기 PIM 회로는 상기 호스트로부터 제공되는 데이터를 이용하여 상기 연산 처리를 수행하는 것을 특징으로 하는 메모리 장치.The method of claim 4,
When the command corresponds to a read command, the PIM circuit performs the operation processing using data read from a location corresponding to the address of the memory bank,
And when the command corresponds to a write command, the PIM circuit performs the operation processing by using data provided from the host.
상기 어드레스는 어느 하나의 뱅크의 로우를 지시하는 로우 어드레스와 칼럼을 지시하는 칼럼 어드레스를 포함하고, 상기 PIM 회로는 상기 로우 어드레스 및 상기 칼럼 어드레스에 의해 지시되는 위치로부터 독출된 데이터를 이용하여 상기 연산 처리를 수행하는 것을 특징으로 하는 메모리 장치.The method of claim 1,
The address includes a row address indicating a row of any one bank and a column address indicating a column, and the PIM circuit performs the operation using data read from the row address and the position indicated by the column address. A memory device, characterized in that to perform processing.
상기 프로그램 카운터의 카운팅 값이 지시하는 명령어에 대응하는 연산 처리가 수행되도록 제어 동작을 수행하는 프로세싱 제어기; 및
상기 프로세싱 제어기의 제어에 기반하여 상기 연산 처리를 수행하는 다수의 프로세싱 소자들을 더 포함하는 것을 특징으로 하는 메모리 장치.The method of claim 1, wherein the PIM circuit,
A processing controller that performs a control operation to perform an operation process corresponding to an instruction indicated by the counting value of the program counter; And
And a plurality of processing elements that perform the operation processing based on the control of the processing controller.
상기 프로세싱 소자들 각각은 상기 뱅크들 각각에 대응하여 배치되는 것을 특징으로 하는 메모리 장치.The method of claim 7,
Wherein each of the processing elements is disposed corresponding to each of the banks.
상기 프로세싱 소자들 각각은 적어도 두 개의 뱅크들에 공유되는 것을 특징으로 하는 메모리 장치.The method of claim 7,
Each of the processing elements is shared among at least two banks.
상기 연산 처리를 지시하는 커맨드/어드레스가 수신될 때, 프로그램 카운터의 현재의 카운팅 값이 가리키는 제1 명령어와 함께, 다음의 카운팅 값이 가리키는 제2 명령어가 함께 독출되고,
상기 제2 명령어에 대한 프리 디코딩 동작이 수행되는 것을 특징으로 하는 메모리 장치.The method of claim 1,
When a command/address instructing the operation processing is received, a first command indicated by the current counting value of the program counter and a second command indicated by the next counting value are read together,
And performing a pre-decoding operation on the second command.
상기 제2 명령어가 루프 명령어에 해당할 때, 상기 제2 명령어에는 이동할 제3 명령어의 위치를 나타내는 정보가 포함되고,
다음의 연산 처리를 지시하는 커맨드/어드레스가 수신됨에 따라, 상기 PIM 회로는 상기 제2 명령어를 실행함이 없이 상기 제3 명령어를 실행하는 것을 특징으로 하는 메모리 장치.The method of claim 10,
When the second instruction corresponds to a loop instruction, the second instruction includes information indicating the position of the third instruction to be moved,
And the PIM circuit executes the third command without executing the second command as a command/address instructing a next operation process is received.
상기 PIM 회로는 뉴럴 네트워크 처리를 위한 다수의 연산들 중 적어도 일부를 처리하고,
상기 PIM 회로는 상기 호스트로부터의 데이터와 상기 메모리 뱅크 내의 가중치 정보를 이용한 연산 처리를 수행하는 것을 특징으로 하는 메모리 장치.The method of claim 1,
The PIM circuit processes at least some of a plurality of operations for processing a neural network,
Wherein the PIM circuit performs operation processing using data from the host and weight information in the memory bank.
연산 처리와 관련하여 호스트로부터 수신된 다수의 명령어들을 저장하는 단계;
상기 호스트로부터 수신된 커맨드/어드레스를 디코딩하는 단계;
상기 디코딩 결과에 기반하여, 상기 어드레스가 메모리 동작을 지시하는 제1 범위에 속할 때 상기 수신된 커맨드/어드레스에 대응하는 메모리 동작을 수행하는 단계;
상기 디코딩 결과에 기반하여, 상기 어드레스가 연산 처리를 지시하는 제2 범위에 속할 때 상기 다수의 명령어들 중 지시되는 명령어를 독출하는 단계; 및
상기 메모리 장치에 구비되는 PIM (Processor in Memory) 회로에서, 상기 독출된 명령어에 상응하는 연산 처리를 수행하는 단계를 구비하는 것을 특징으로 하는 메모리 장치의 동작방법. In the method of operating a memory device including a plurality of banks,
Storing a plurality of instructions received from the host in connection with the operation processing;
Decoding the command/address received from the host;
Performing a memory operation corresponding to the received command/address when the address falls within a first range indicating a memory operation based on the decoding result;
Reading a command indicated from among the plurality of commands when the address falls within a second range indicating operation processing based on the decoding result; And
And performing an operation processing corresponding to the read command in a PIM (Processor in Memory) circuit provided in the memory device.
상기 명령어를 독출하는 단계는, 상기 다수의 명령어들이 저장된 명령어 메모리의 위치를 가리키는 프로그램 카운터의 카운팅 값을 확인하는 단계를 포함하고,
상기 연산 처리를 지시하는 커맨드/어드레스에 응답하여 상기 프로그램 카운터의 카운팅이 수행되는 것을 특징으로 하는 메모리 장치의 동작방법.The method of claim 13,
The reading of the command includes checking a counting value of a program counter indicating a location of the command memory in which the plurality of commands are stored,
And counting the program counter in response to a command/address instructing the operation process.
상기 어드레스의 적어도 일부의 비트는, 상기 뱅크에 저장된 데이터의 위치를 나타내는 어드레스 정보를 포함하고,
상기 연산 처리를 수행하는 단계는, 상기 어드레스 정보에 의해 지시되는 위치로부터 독출된 데이터를 이용하여 상기 연산 처리를 수행하는 것을 특징으로 하는 메모리 장치의 동작방법.The method of claim 13,
At least some bits of the address include address information indicating a location of data stored in the bank,
The performing of the operation process comprises performing the operation process using data read from a position indicated by the address information.
상기 커맨드는 독출 커맨드 또는 기록 커맨드 중 어느 하나인 것을 특징으로 하는 메모리 장치의 동작방법.The method of claim 13,
The method of operating a memory device, wherein the command is either a read command or a write command.
상기 호스트는,
상기 다수의 뱅크들에 대한 메모리 동작을 지시하기 위한 제1 범위에 속하는 다수의 어드레스들과, 상기 다수의 뱅크들 중 선택된 뱅크로부터 독출된 데이터를 이용한 연산 처리를 지시하기 위한 제2 범위에 속하는 다수의 어드레스들을 저장하는 어드레스 맵 메모리; 및
상기 제1 범위에 속하는 어드레스를 출력함으로써 상기 메모리 동작을 지시하고, 상기 제2 범위에 속하는 어드레스를 출력함으로써 상기 연산 처리를 지시하는 메모리 인터페이스를 구비하는 것을 특징으로 하는 데이터 처리 시스템.In the data processing system, the data processing system includes a host for controlling memory operations of a plurality of banks,
The host,
A plurality of addresses belonging to a first range for indicating a memory operation for the plurality of banks, and a plurality of addresses belonging to a second range for instructing an operation processing using data read from a selected bank among the plurality of banks An address map memory for storing addresses of; And
And a memory interface for instructing the memory operation by outputting an address belonging to the first range, and instructing the operation processing by outputting an address belonging to the second range.
상기 호스트는, 상기 메모리 동작 및 상기 연산 처리를 지시함에 있어서, 기록 커맨드 또는 독출 커맨드를 더 출력하는 것을 특징으로 하는 데이터 처리 시스템.The method of claim 17,
And the host further outputs a write command or a read command when instructing the memory operation and the operation process.
상기 데이터 처리 시스템은, 상기 다수의 뱅크들을 포함하는 메모리 장치를 더 구비하고,
상기 메모리 장치는,
상기 호스트로부터 제공된 데이터 및 상기 뱅크들로부터 독출된 데이터 중 적어도 하나를 이용하여 연산 처리를 수행하는 PIM (Processor in Memory) 회로; 및
상기 호스트로부터 수신된 커맨드/어드레스를 디코딩하고, 디코딩 결과에 기반하여 상기 뱅크들에 대한 메모리 동작을 제어하거나 상기 PIM 회로가 상기 연산 처리를 수행하도록 제어 동작을 수행하는 제어 로직을 구비하는 것을 특징으로 하는 메모리 시스템.The method of claim 17,
The data processing system further includes a memory device including the plurality of banks,
The memory device,
A PIM (Processor in Memory) circuit for performing an operation process using at least one of data provided from the host and data read from the banks; And
And a control logic that decodes the command/address received from the host and controls memory operations for the banks based on a decoding result or performs a control operation so that the PIM circuit performs the operation processing. Memory system.
상기 PIM 회로는,
상기 호스트로부터 제공되는 다수의 명령어들을 저장하는 명령어 메모리; 및
상기 명령어 메모리의 위치를 가리키는 카운팅 값을 출력하는 프로그램 카운터를 포함하고,
상기 연산 처리를 지시하는 상기 커맨드/어드레스의 수신에 응답하여 상기 프로그램 카운터의 카운팅이 수행되는 것을 특징으로 하는 메모리 시스템.
The method of claim 19,
The PIM circuit,
An instruction memory for storing a plurality of instructions provided from the host; And
Includes a program counter for outputting a counting value indicating the location of the instruction memory,
And counting the program counter in response to receiving the command/address instructing the operation process.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010147089.XA CN111679785A (en) | 2019-03-11 | 2020-03-05 | Memory device for processing operation, operating method thereof and data processing system |
DE102020106356.3A DE102020106356A1 (en) | 2019-03-11 | 2020-03-09 | A storage device for a processing operation, a data processing system comprising the same and a method of operating the storage device |
US16/814,462 US11663008B2 (en) | 2019-03-11 | 2020-03-10 | Managing memory device with processor-in-memory circuit to perform memory or processing operation |
TW109107967A TW202044043A (en) | 2019-03-11 | 2020-03-11 | Memory device, data processing system, and method of operating memory device |
SG10202002231WA SG10202002231WA (en) | 2019-03-11 | 2020-03-11 | Memory device for processing operation, data processing system including the same, and method of operating the memory device |
US18/194,174 US20230236836A1 (en) | 2019-03-11 | 2023-03-31 | Memory device for processing operation, data processing system including the same, and method of operating the memory device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962816509P | 2019-03-11 | 2019-03-11 | |
US62/816,509 | 2019-03-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200108773A true KR20200108773A (en) | 2020-09-21 |
Family
ID=72707900
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190151617A KR20200108768A (en) | 2019-03-11 | 2019-11-22 | Memory Device performing calculation process and Operation Method thereof |
KR1020190161673A KR20200108772A (en) | 2019-03-11 | 2019-12-06 | Method of performing internal processing operations with pre-defined protocol interface of memory device |
KR1020190161674A KR20200108773A (en) | 2019-03-11 | 2019-12-06 | Memory Device performing calculation process, Data Processing System having the same and Operation Method of Memory Device |
KR1020200013303A KR20200108774A (en) | 2019-03-11 | 2020-02-04 | Memory Device including instruction memory based on circular queue and Operation Method thereof |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190151617A KR20200108768A (en) | 2019-03-11 | 2019-11-22 | Memory Device performing calculation process and Operation Method thereof |
KR1020190161673A KR20200108772A (en) | 2019-03-11 | 2019-12-06 | Method of performing internal processing operations with pre-defined protocol interface of memory device |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200013303A KR20200108774A (en) | 2019-03-11 | 2020-02-04 | Memory Device including instruction memory based on circular queue and Operation Method thereof |
Country Status (3)
Country | Link |
---|---|
KR (4) | KR20200108768A (en) |
SG (3) | SG10202002231WA (en) |
TW (2) | TW202111540A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11281583B1 (en) | 2020-09-24 | 2022-03-22 | Hughes Network Systems, Llc | Unified memory management for a multiple processor system |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW202141290A (en) | 2020-01-07 | 2021-11-01 | 韓商愛思開海力士有限公司 | Processing-in-memory (pim) system and operating methods of the pim system |
US11908541B2 (en) | 2020-01-07 | 2024-02-20 | SK Hynix Inc. | Processing-in-memory (PIM) systems |
US11537323B2 (en) | 2020-01-07 | 2022-12-27 | SK Hynix Inc. | Processing-in-memory (PIM) device |
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 |
US20230207038A1 (en) * | 2021-12-29 | 2023-06-29 | Advanced Micro Devices, Inc. | Dram specific interface calibration via programmable training sequences |
-
2019
- 2019-11-22 KR KR1020190151617A patent/KR20200108768A/en active Search and Examination
- 2019-12-06 KR KR1020190161673A patent/KR20200108772A/en active Search and Examination
- 2019-12-06 KR KR1020190161674A patent/KR20200108773A/en unknown
-
2020
- 2020-02-04 KR KR1020200013303A patent/KR20200108774A/en unknown
- 2020-03-09 TW TW109107592A patent/TW202111540A/en unknown
- 2020-03-11 SG SG10202002231WA patent/SG10202002231WA/en unknown
- 2020-03-11 SG SG10202002213RA patent/SG10202002213RA/en unknown
- 2020-03-11 SG SG10202002232UA patent/SG10202002232UA/en unknown
- 2020-03-11 TW TW109107967A patent/TW202044043A/en unknown
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11281583B1 (en) | 2020-09-24 | 2022-03-22 | Hughes Network Systems, Llc | Unified memory management for a multiple processor system |
WO2022066850A1 (en) * | 2020-09-24 | 2022-03-31 | Hughes Network Systems, Llc | Unified memory management for a multiple processor system |
US11636036B2 (en) | 2020-09-24 | 2023-04-25 | Hughes Network Systems, Llc | Unified memory management for a multiple processor system |
Also Published As
Publication number | Publication date |
---|---|
TW202111540A (en) | 2021-03-16 |
TW202044043A (en) | 2020-12-01 |
KR20200108774A (en) | 2020-09-21 |
KR20200108772A (en) | 2020-09-21 |
SG10202002231WA (en) | 2020-10-29 |
SG10202002232UA (en) | 2020-10-29 |
SG10202002213RA (en) | 2020-10-29 |
KR20200108768A (en) | 2020-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11663008B2 (en) | Managing memory device with processor-in-memory circuit to perform memory or processing operation | |
US11482278B2 (en) | Method of performing internal processing operation of memory device | |
US11094371B2 (en) | Memory device for processing operation and method of operating the same | |
US11482260B2 (en) | Apparatuses and methods for scatter and gather | |
KR20200108773A (en) | Memory Device performing calculation process, Data Processing System having the same and Operation Method of Memory Device | |
US9805802B2 (en) | Memory device, memory module, and memory system | |
US11416178B2 (en) | Memory device performing parallel calculation processing, operating method thereof, and operating method of memory controller controlling the memory device | |
US20180046405A1 (en) | Apparatuses and methods for data movement | |
US9343127B1 (en) | Memory device having an adaptable number of open rows | |
KR20160116533A (en) | Memory controller and memory system managing refresh operation and operating method thereof | |
KR20190142416A (en) | Apparatus and method for controlling memory operation on a buffer | |
WO2018075290A1 (en) | Apparatuses and methods for an operating system cache in a solid state device | |
KR20220127601A (en) | Memory system, memory device of performing internal processing operations with interface, operation method of the memory device having the same | |
KR20220045480A (en) | Memory device for performing in-memory processing | |
US20170228175A1 (en) | Memory controller, memory system managing refresh operation and operating method of the memory controller | |
US20200293452A1 (en) | Memory device and method including circular instruction memory queue | |
US20190096459A1 (en) | Memory devices for performing multiple write operations and operating methods thereof | |
US10185510B2 (en) | Bank interleaving controller and semiconductor device including the same | |
US20230168818A1 (en) | Memory device having reduced power noise in refresh operation and operating method thereof | |
EP3933605A1 (en) | Memory device for performing in-memory processing | |
KR20230082529A (en) | Memory device reducing power noise in refresh operation and Operating Method thereof | |
WO2023191919A1 (en) | Dynamic program caching |