KR20200108768A - Memory Device performing calculation process and Operation Method thereof - Google Patents
Memory Device performing calculation process and Operation Method thereof Download PDFInfo
- Publication number
- KR20200108768A KR20200108768A KR1020190151617A KR20190151617A KR20200108768A KR 20200108768 A KR20200108768 A KR 20200108768A KR 1020190151617 A KR1020190151617 A KR 1020190151617A KR 20190151617 A KR20190151617 A KR 20190151617A KR 20200108768 A KR20200108768 A KR 20200108768A
- Authority
- KR
- South Korea
- Prior art keywords
- bank
- data
- memory
- processing
- memory device
- 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/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- 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
- 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/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/10—Decoders
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System (AREA)
- Dram (AREA)
- Computing Systems (AREA)
- Executing Machine-Instructions (AREA)
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 and an operating method thereof.
고성능 전자 시스템에 널리 사용되고 있는 반도체 메모리 장치(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.
본 발명의 기술적 사상이 해결하려는 과제는, 연산 처리를 수행하는 메모리 장치에서 최적화된 데이터 전달 경로를 제공함으로써 데이터의 충돌을 방지할 수 있는 연산 처리를 수행하는 메모리 장치 및 그 동작방법을 제공하는 데 있다.The problem to be solved by the technical idea of the present invention is to provide a memory device that performs calculation processing capable of preventing data collisions by providing an optimized data transfer path in a memory device that performs calculation processing, and an operating method thereof. have.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 메모리 장치는, 적어도 하나의 뱅크 그룹을 포함하고, 각각의 뱅크 그룹은 다수의 뱅크들을 포함하는 메모리 뱅크와, 상기 뱅크 그룹에 대응하여 배치되는 제1 프로세싱 소자를 포함하고, 상기 제1 프로세싱 소자는 호스트로부터 제공된 데이터 및 상기 뱅크 그룹으로부터 독출된 데이터 중 적어도 하나를 이용하여 연산 처리를 수행하는 PIM 회로와, 상기 뱅크 그룹의 상기 다수의 뱅크들 각각에 대해 배치되는 뱅크 로컬 입출력 라인(IO)과, 상기 뱅크 그룹에 대해 배치되는 뱅크 그룹 입출력 라인(IO) 사이의 전기적 연결을 제어하는 프로세싱 소자 입출력(PEIO) 게이팅 회로 및 상기 호스트로부터 수신된 커맨드/어드레스에 대한 디코딩 결과에 기반하여, 상기 메모리 뱅크에 대한 메모리 동작이 수행되거나 상기 PIM 회로에 의한 연산 처리가 수행되도록 제어 동작을 수행하는 제어 로직을 구비하고, 상기 제1 프로세싱 소자에 의해 연산 처리가 수행될 때, 상기 PEIO 게이팅 회로는 상기 뱅크 로컬 IO와 상기 뱅크 그룹 IO 사이의 전기적 연결을 차단하는 것을 특징으로 한다.In order to achieve the above object, a memory device according to an aspect of the inventive concept includes at least one bank group, each bank group including a memory bank including a plurality of banks, and the bank group And a first processing element disposed in correspondence with the first processing element, wherein the first processing element includes a PIM circuit that performs an operation process using at least one of data provided from a host and data read from the bank group, and the bank group A processing element input/output (PEIO) gating circuit for controlling electrical connection between a bank local input/output line (IO) disposed for each of the plurality of banks and a bank group input/output line (IO) disposed for the bank group, and the A control logic for performing a control operation such that a memory operation for the memory bank is performed or an operation processing by the PIM circuit is performed based on a result of decoding a command/address received from the host, and the first processing When arithmetic processing is performed by an element, the PEIO gating circuit is characterized in that it blocks an electrical connection between the bank local IO and the bank group IO.
한편, 본 개시의 기술적 사상의 다른 일측면에 따른 메모리 장치는, 뱅크 그룹을 포함하고, 상기 뱅크 그룹은 제1 및 제2 뱅크들을 포함하는 메모리 뱅크와, 상기 뱅크 그룹에 대응하여 배치되고, 외부의 호스트와 상기 뱅크 그룹 사이에서의 데이터 전달 경로를 포함하는 뱅크 그룹 입출력 라인(IO)과, 상기 제1 뱅크에 대응하여 배치되고, 상기 제1 뱅크로 제공되는 데이터 및 상기 제1 뱅크로부터 독출된 데이터의 전달 경로를 포함하는 제1 뱅크 로컬 입출력 라인(IO)과, 상기 뱅크 그룹 IO 및 상기 제1 뱅크 로컬 IO에 연결되고, 상기 호스트로부터 제공된 데이터 및 상기 제1 뱅크로부터 독출된 데이터 중 적어도 하나를 이용하여 연산 처리를 수행하는 제1 프로세싱 소자 및 상기 제1 프로세싱 소자에 의한 연산 처리가 수행되는 경우, 상기 호스트로부터의 데이터가 상기 메모리 뱅크로 제공됨이 없이 상기 제1 프로세싱 소자로 제공되도록 데이터 전달 경로를 제어하는 제1 프로세싱 소자 입출력(PEIO) 게이팅 회로를 구비하는 것을 특징으로 한다.Meanwhile, a memory device according to another aspect of the technical idea of the present disclosure includes a bank group, wherein the bank group is a memory bank including first and second banks, and is disposed corresponding to the bank group, and A bank group input/output line (IO) including a data transfer path between the host of the host and the bank group, and data provided to the first bank and read from the first bank, arranged corresponding to the first bank. At least one of a first bank local input/output line (IO) including a data transfer path, and connected to the bank group IO and the first bank local IO, and data provided from the host and data read from the first bank When the first processing element and the first processing element to perform an operation process are performed, data is transferred so that data from the host is provided to the first processing element without being provided to the memory bank. And a first processing element input/output (PEIO) gating circuit for controlling the path.
본 발명의 기술적 사상의 연산 처리를 수행하는 메모리 장치 및 그 동작방법에 따르면, 메모리 장치 내에서의 연산 처리를 호스트가 제어할 수 있으므로, 메모리 동작과 연산 처리 동작 사이의 충돌을 감소함으로써 메모리 동작이 과도하게 딜레이되는 문제를 방지할 수 있다.According to a memory device for performing arithmetic processing according to the technical idea of the present invention and an operation method thereof, since the host can control the arithmetic processing in the memory device, the memory operation is reduced by reducing the collision between the memory operation and the arithmetic processing operation. It can prevent the problem of excessive delay.
또한, 본 발명의 기술적 사상의 연산 처리를 수행하는 메모리 장치 및 그 동작방법에 따르면, 연산 처리에 이용되는 데이터의 전달 경로를 최적화할 수 있으므로 연산 처리에 이용되는 데이터들이 서로 충돌하는 것을 방지할 수 있는 효과가 있다.In addition, according to the memory device for performing computational processing according to the technical idea of the present invention and the operating method thereof, it is possible to optimize a transmission path of data used for computational processing, and thus data used for computational processing can be prevented from colliding with each other There is an effect.
도 1은 본 발명의 예시적인 실시예에 따른 메모리 장치를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 2는 도 1의 메모리 장치의 일 구현 예를 나타내는 블록도이다.
도 3은 본 발명의 예시적인 실시예의 메모리 장치를 포함하는 데이터 처리 시스템을 나타내는 블록도이다.
도 4는 본 발명의 예시적인 실시예에 따른 메모리 시스템의 동작 예를 나타내는 개념도이다.
도 5는 메모리 장치에 구비되는 다양한 구성 요소들의 일 예를 나타내는 블록도이다.
도 6 및 도 7은 연산 처리에 관련하여 메모리 장치에 포함되는 구성들의 일 예를 나타내는 블록도이다.
도 8은 본 발명의 예시적인 실시예의 메모리 장치가 HBM을 포함하는 예를 나타내는 블록도이다.
도 9는 본 발명의 예시적인 실시예에 따른 메모리 장치의 동작방법을 나타내는 플로우차트이다.
도 10a,b,c는 본 발명의 일 실시예에 따른 메모리 장치에서 정의되는 연산 커맨드들의 일 예를 나타내는 도면이다.
도 11은 본 발명의 실시예들에 따른 메모리 장치에서 일련하게 수행되는 연산 처리의 예를 나타내는 파형도이다.
도 12a,b 내지 도 14a,b는 본 발명의 다양한 실시예들에 따른 메모리 장치의 구현 예들을 나타내는 도면이다.
도 15는 본 발명의 변형 가능한 실시예에 따른 메모리 장치의 일 구현 예를 나타내는 도면이다.
도 16은 본 발명의 실시예에 따른 데이터 처리 시스템을 포함하는 서버 시스템을 나타내는 블록도이다.1 is a block diagram illustrating a memory 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 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.
4 is a conceptual diagram illustrating an example of an operation of a memory system according to an exemplary embodiment of the present invention.
5 is a block diagram illustrating an example of various components included in a memory device.
6 and 7 are block diagrams illustrating examples of configurations included in a memory device in relation to operation processing.
8 is a block diagram illustrating an example in which a memory device according to an exemplary embodiment of the present invention includes an HBM.
9 is a flowchart showing a method of operating a memory device according to an exemplary embodiment of the present invention.
10A, B, and C are diagrams illustrating examples of operation commands defined in a memory device according to an embodiment of the present invention.
11 is a waveform diagram illustrating an example of operation processing sequentially performed in a memory device according to embodiments of the present invention.
12A,B through 14A,B are diagrams illustrating implementation examples of a memory device according to various embodiments of the present disclosure.
15 is a diagram illustrating an example implementation of a memory device according to a deformable embodiment of the present invention.
16 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 illustrating a memory system including a memory device according to an exemplary embodiment of the present invention.
도 1을 참조하면, 메모리 시스템(10)은 메모리 컨트롤러(100) 및 메모리 장치(200)를 포함할 수 있다. 메모리 컨트롤러(100)는 메모리 인터페이스(110)를 포함할 수 있으며, 메모리 인터페이스(110)를 통해 각종 신호를 메모리 장치(200)로 제공하여 기록 및 독출 등의 메모리 동작을 제어할 수 있다. 예컨대, 메모리 컨트롤러(100)는 커맨드(CMD) 및 어드레스(ADD)를 메모리 장치(200)로 제공하여 메모리 장치(200)의 데이터(DATA)를 억세스할 수 있다. 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) 사이의 프로토콜에 적용될 수 있다. The
예시적인 실시예들에 따라, 메모리 컨트롤러(100)는 호스트(HOST)에 상응하거나, 또는 메모리 컨트롤러(100)는 호스트(HOST) 내부에 구비되는 구성에 해당할 수도 있을 것이다. 호스트(HOST)와 메모리 장치(200)는 데이터 처리 시스템을 구성할 수 있으며, 이에 따라 메모리 시스템(10)은 데이터 처리 시스템에 상응하거나, 또는 데이터 처리 시스템에 포함되는 구성으로 정의될 수 있을 것이다.According to exemplary embodiments, the
메모리 장치(200)는 메모리 뱅크(210), PIM (Processor in Memory) 회로(220), 프로세싱 소자 입출력 게이팅 회로(이하, PEIO 게이팅 회로로 지칭됨(230)) 및 제어 로직(240)을 포함할 수 있으며, 제어 로직(240)은 커맨드/어드레스 디코더(241)를 포함할 수 있다. 또한, 메모리 뱅크(210)는 다수 개의 뱅크들(BANK 0 ~ BANK N-1)을 포함할 수 있으며, 뱅크들(BANK 0 ~ BANK N-1) 각각은 다수의 메모리 셀들을 포함하는 셀 어레이를 구비할 수 있다. 뱅크는 다양하게 정의될 수 있으며, 일 예로서 메모리 셀들을 포함하는 구성으로 정의될 수 있고, 또는 메모리 셀들과 함께 하나 이상의 주변 회로들을 포함하는 구성으로 정의될 수도 있을 것이다. The
한편, 두 개 이상의 뱅크들이 하나의 뱅크 그룹으로 분류될 수 있고, 동일한 뱅크 그룹에 포함되는 뱅크들은 공통한 뱅크 그룹 입출력 라인(이하, 뱅크 그룹 IO로 지칭됨)을 통해 메모리 컨트롤러(100)와 데이터(DATA)를 송수신할 수 있다. 또한, 셀 어레이를 억세스하기 위한 로컬 경로로서, 뱅크들(BANK 0 ~ BANK N-1) 각각에 대응하여 뱅크 로컬 입출력 라인(이하, 뱅크 로컬 IO로 지칭됨)이 배치될 수 있다. Meanwhile, two or more banks may be classified into one bank group, and the banks included in the same bank group are provided with the
메모리 컨트롤러(100)로부터의 어드레스(ADD)에 의해 데이터 억세스가 수행될 뱅크가 선택될 수 있으며, 또한 뱅크 내의 메모리 셀들이 선택될 수 있다. 또한, 커맨드/어드레스 디코더(241)는 메모리 컨트롤러(100)로부터의 커맨드/어드레스(CMD/ADD)에 대한 디코딩 동작을 수행할 수 있으며, 제어 로직(240)은 디코딩 결과에 따라 메모리 동작이 수행되도록 메모리 장치(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)들을 수신하고 이를 저장할 수 있다. 도 1에서는 명령어(Inst)들 및 데이터(DATA)의 전송이 별개로 도시되었으나, 본 발명의 실시예에서 명령어(Inst)들 및 데이터(DATA)는 다양한 형태로 송수신이 가능하다. 일 예로, 명령어(Inst)들은 데이터(DATA)와 무관한 별도의 라인을 통해 전송될 수도 있으며, 또는 데이터(DATA)를 전송하는 라인(데이터 라인)을 통해 전송될 수도 있을 것이다. The
일 구현 예로서, PIM 회로(220)는 하나 이상의 프로세싱 소자들(221)과, 명령어(Inst)들을 저장하기 위한 명령어 메모리(미도시)를 포함할 수 있으며, 이후 메모리 컨트롤러(100)로부터 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)가 수신될 때, 명령어 메모리로부터 독출된 명령어(Inst)에 대응하는 연산이 수행될 수 있다. 메모리 컨트롤러(100)가 커맨드/어드레스(CMD/ADD)를 제공함으로써 메모리 장치(200) 내에서 연산 처리가 수행될 수 있으므로, 메모리 컨트롤러(100)는 노멀 메모리 동작과 연산 처리 동작의 충돌이 발생되지 않도록 메모리 장치(200)를 제어할 수 있다. As an implementation example, the
한편, 연산 처리를 지시하기 위한 커맨드/어드레스(CMD/ADD)는 다양하게 정의될 수 있다. 일 예로서, 데이터 기록/독출 등의 메모리 동작에 관련된 커맨드와 별개로 연산 커맨드(CMD_PE)가 정의될 수 있다. 메모리 장치(200)는 커맨드/어드레스(CMD/ADD)에 대한 디코딩 동작에 기반하여 메모리 동작 또는 연산 처리 동작을 선택적으로 수행할 수 있으며, 또한 어드레스(ADD)에 기반하여 연산 처리에 이용될 데이터의 위치나, 연산 결과가 저장될 위치 등이 판단될 수 있다. Meanwhile, a command/address CMD/ADD for instructing an operation process may be variously defined. As an example, an operation command CMD_PE may be defined separately from a command related to a memory operation such as data writing/reading. The
한편, 프로세싱 소자들(221)은 다양한 개수의 프로세싱 소자들을 포함할 수 있다. 일 예로서, 각각의 프로세싱 소자가 하나의 뱅크에 대응하여 배치될 수도 있으며, 또는 각각의 프로세싱 소자가 두 개 이상의 뱅크들에 대응하여 배치될 수도 있을 것이다. 프로세싱 소자들(221) 각각은 메모리 컨트롤러(100)로부터 제공되는 데이터(DATA), 메모리 뱅크(210)로부터 독출된 데이터(DATA), 프로세싱 소자 내에 구비되는 레지스터(미도시)에 저장된 정보 중 적어도 하나를 이용하여 연산 처리를 수행할 수 있다.Meanwhile, the
PEIO 게이팅 회로(230)는 데이터 등의 정보의 전달 경로를 제어하는 기능을 수행할 수 있다. 일 예로서, PEIO 게이팅 회로(230)는 뱅크들(BANK 0 ~ BANK N-1) 각각에 대응하여 배치될 수 있으며, 뱅크들 각각에 대응하여 다수의 데이터 라인들이 배치되는 경우에 PEIO 게이팅 회로(230)는 다수의 스위치들(미도시)을 포함하고, 스위치들의 스위칭 상태에 따라 데이터의 전달 경로가 제어될 수 있다. 메모리 장치(200)의 메모리 동작 시에는, PEIO 게이팅 회로(230)에 의하여 메모리 컨트롤러(100)와 뱅크들(BANK 0 ~ BANK N-1) 사이에서 데이터(DATA)가 송수신될 수 있다. 반면에, 메모리 장치(200)의 연산 처리시에는, PEIO 게이팅 회로(230)에 의하여 메모리 컨트롤러(100)와 프로세싱 소자들(221) 사이에서 데이터(DATA)가 송수신될 수 있고, 또한 뱅크들(BANK 0 ~ BANK N-1)과 프로세싱 소자들(221) 사이에서 데이터(DATA)가 송수신될 수 있다.The
일 구현 예로서, PEIO 게이팅 회로(230)는 뱅크들(BANK 0 ~ BANK N-1) 각각에 대응하는 뱅크 로컬 IO와 뱅크 그룹에 대응하는 뱅크 그룹 IO 사이에 배치될 수 있다. PEIO 게이팅 회로(230)의 스위칭 동작에 기반하여, 뱅크 로컬 IO와 뱅크 그룹 IO가 전기적으로 연결됨에 따라, 뱅크들(BANK 0 ~ BANK N-1)에 대한 데이터 기록 및 데이터 독출 등의 메모리 동작이 수행될 수 있다.As an implementation example, the
한편, 프로세싱 소자들(221)의 연산 처리 동작과 관련하여, 어느 하나의 프로세싱 소자(예컨대, 제1 뱅크(BANK0))에 대응하는 제1 프로세싱 소자)를 참조하여 설명하면 다음과 같다.Meanwhile, the operation of the
제1 프로세싱 소자는 메모리 컨트롤러(100)로부터의 데이터(DATA)를 이용한 연산 처리를 수행할 수 있으며, 이 경우 뱅크 그룹 IO 를 통해 전달되는 데이터(DATA)는 제1 뱅크(BANK0)에 연결된 뱅크 로컬 IO 로 제공될 필요가 없다. 또한, 제1 프로세싱 소자는 제1 뱅크(BANK0)로부터 독출된 데이터(DATA)를 이용한 연산 처리를 수행할 수 있고, 이 경우 데이터(DATA)는 뱅크 그룹 IO 로 제공될 필요가 없다. 또한, 제1 프로세싱 소자는 메모리 컨트롤러(100)로부터의 데이터(DATA)와 제1 뱅크(BANK0)로부터 독출된 데이터(DATA)를 함께 이용한 연산 처리를 수행할 수 있고, 이 경우 뱅크 로컬 IO 와 뱅크 그룹 IO 는 전기적으로 분리될 필요가 있다. 이에 따라, 연산 처리 동작에서 PEIO 게이팅 회로(230)의 스위칭 동작에 의해 뱅크 그룹 IO 와 뱅크 로컬 IO 사이의 전기적 연결이 차단된 상태에서 연산 처리가 수행될 수 있다. The first processing element may perform operation processing using data DATA from the
상기와 같은 본 발명의 실시예에 따르면, 뱅크 그룹 IO 와 뱅크 로컬 IO 구조를 갖는 메모리 장치(200)에서, 메모리 동작과 연산 처리를 위한 데이터(DATA)의 전달 경로가 최적으로 설정될 수 있다. 또한, PIM 회로(220)가 다양한 데이터(DATA)들을 이용하여 연산 처리를 수행함에 있어서, 상기한 다양한 데이터(DATA)들의 충돌을 방지할 수 있다. 또한 본 발명의 실시예에 따르면, 메모리 장치(200)가 자체적으로 연산 처리를 수행하는 것이 아니라 메모리 컨트롤러(100)로부터의 요청에 의해 연산 처리가 수행되므로, 메모리 컨트롤러(100) 또는 이를 포함하는 호스트(HOST)가 메모리 장치(200)의 연산 처리 타이밍을 제어할 수 있고, 메모리 동작과 연산 처리 동작이 서로 충돌함에 따른 성능 저하가 방지될 수 있다.According to the embodiment of the present invention as described above, in the
한편, 도 1에는 도시되지 않았으나 본 발명의 실시예들에 따른 PIM 회로(220)는 다양하게 정의될 수 있으며, 이에 따라 PIM 회로(220)는 다양한 구성 요소들을 포함할 수 있다. 일 예로서, PIM 회로(220)는 전술한 프로세싱 소자들(221)과 함께, 연산 처리에 관련된 다른 다양한 구성 요소들을 포함하는 것으로 정의될 수 있다. 예컨대, 연산 처리의 전반적인 동작을 제어하는 제어기, 명령어(Inst)들을 저장하는 명령어 메모리(또는, 명령어 큐), 명령어 디코딩 등 다양한 구성 요소들이 PIM 회로(220)에 구비될 수 있다.Meanwhile, although not shown in FIG. 1, the
한편, 프로세싱 소자들(221)로 전달되는 피연산자(operand)들은 데이터(DATA), 가중치 정보, 상수 등 다양한 종류의 정보들을 포함할 수 있으며, 이하의 실시예들에서 상기 용어들은 혼용될 수 있을 것이나, 본 발명의 실시예들은 상기와 같은 용어들에 한정될 필요는 없을 것이다.Meanwhile, operands transmitted to the
도 2는 도 1의 메모리 장치(200)의 일 구현 예를 나타내는 블록도이다. 도 2의 메모리 장치(200)의 구성 및 동작을 설명함에 있어서, 제1 뱅크(BANK 0) 및 제2 뱅크(BANK 1)를 예로 들어 설명한다. 한편, 도 2에서는 제1 내지 제4 뱅크들(BANK 0 ~ BANK 3)이 하나의 뱅크 그룹(BG)으로 정의되고, 이에 따라 제1 내지 제4 뱅크들(BANK 0 ~ BANK 3)이 뱅크 그룹 IO(BGIO)를 공유하는 예가 도시된다. 뱅크 그룹 IO(BGIO)는 호스트와 뱅크 그룹(BG) 사이에서 데이터를 양방향으로 전달할 수 있다.FIG. 2 is a block diagram illustrating an example implementation of the
도 1 및 도 2를 참조하면, 메모리 장치(200)는 메모리 동작에 관련된 다양한 구성들을 더 포함할 수 있고, 일 예로서 제1 뱅크(BANK 0)에 대응하여 센스 앰프(251), 기록 드라이버(252) 및 뱅크 그룹 입출력 게이팅 회로(이하, BGIO 게이팅 회로로 지칭됨(253))를 포함할 수 있다. 또한, 센스 앰프(251) 및 기록 드라이버(252)는 뱅크 로컬 IO (BLIO) 상에 배치될 수 있고, BGIO 게이팅 회로(253)는 뱅크 로컬 IO (BLIO) 의 데이터 전달 방향을 선택하기 위해 배치될 수 있다. 도 2에서는 BGIO 게이팅 회로(253)가 기록 드라이버(252)를 통해 데이터(DATA)가 전달되는 경로에 배치되는 예가 도시되었으나, 본 발명의 실시예는 이에 국한될 필요가 없다. 일 예로서, BGIO 게이팅 회로(253)는 센스 앰프(251)를 통해 데이터(DATA)가 출력되는 경로에 배치되도록 메모리 장치(200)가 구현될 수도 있을 것이다.Referring to FIGS. 1 and 2, the
한편, PEIO 게이팅 회로(230)는 제1 뱅크(BANK 0)에 대응하여 배치되는 제1 PEIO 게이팅 회로(231)와 제2 뱅크(BANK 1)에 대응하여 배치되는 제2 PEIO 게이팅 회로(232)를 포함할 수 있다. 제1 및 제2 PEIO 게이팅 회로들(231, 232)은 연산 처리 동작에서 데이터(DATA)의 이동 경로를 제어하기 위해 배치될 수 있다. Meanwhile, the
메모리 동작에서, 제1 PEIO 게이팅 회로(231)는 뱅크 로컬 IO (BLIO)와 뱅크 그룹 IO(BGIO)을 전기적으로 연결하고, 이에 따라 제1 뱅크(BANK 0)로부터의 데이터(DATA)가 뱅크 그룹 IO(BGIO)로 제공되거나, 또는 메모리 컨트롤러(100)로부터의 데이터(DATA)가 BGIO 게이팅 회로(253)를 통해 제1 뱅크(BANK 0)로 제공될 수 있다. 반면에, 연산 처리 동작에서 제1 PEIO 게이팅 회로(231)는 뱅크 로컬 IO (BLIO)와 뱅크 그룹 IO(BGIO)을 전기적으로 차단하고, 이에 따라 메모리 컨트롤러(100)로부터의 데이터(DATA)가 뱅크 로컬 IO (BLIO)로 제공됨이 없이 제1 프로세싱 소자(PE0)로 제공될 수 있다. 또한, 제1 뱅크(BANK 0)로부터의 데이터(DATA)가 뱅크 그룹 IO(BGIO)로 제공됨이 없이 제1 프로세싱 소자(PE0)로 제공될 수 있다.In the memory operation, the first
한편, 도 2에 도시된 바와 같이 제1 프로세싱 소자(PE0)는 적어도 두 개의 뱅크들에 대응하여 배치될 수 있으며, 일 예로서 제1 프로세싱 소자(PE0)는 제2 뱅크(BANK 1)에 연결될 수 있다. 제1 프로세싱 소자(PE0)가 제1 뱅크(BANK 0) 및 제2 뱅크(BANK 1)로부터의 데이터(DATA)를 이용하여 연산 처리를 수행하는 경우, 제2 뱅크(BANK 1)에 대응하여 배치되는 제2 PEIO 게이팅 회로(232)는 뱅크 그룹 IO(BGIO)와 제2 뱅크(BANK 1)에 대응하는 뱅크 로컬 IO (BLIO)의 전기적 연결을 차단할 수 있다. Meanwhile, as shown in FIG. 2, the first processing element PE0 may be disposed corresponding to at least two banks, and as an example, the first processing element PE0 is connected to the
또한, 예시적인 실시예들에서, 제1 프로세싱 소자(PE0)가 다수의 뱅크들에 공유되는 경우, 어느 하나의 뱅크의 데이터(DATA)를 이용한 연산 처리 결과는 다른 뱅크에 저장될 수도 있을 것이다. 일 예로서, 제1 뱅크(BANK 0)로부터 독출된 데이터(DATA)가 피연산자로서 제1 프로세싱 소자(PE0)로 제공되고, 제1 프로세싱 소자(PE0)로부터의 연산 결과는 제2 뱅크(BANK 1)에 저장될 수 있을 것이다.In addition, in example embodiments, when the first processing element PE0 is shared among a plurality of banks, the result of operation processing using data DATA of any one bank may be stored in another bank. As an example, data DATA read from the
도 3은 본 발명의 예시적인 실시예의 메모리 장치를 포함하는 데이터 처리 시스템을 나타내는 블록도이다. 도 3에 도시된 바와 같이, 데이터 처리 시스템(300)은 어플리케이션 프로세서(Application Processor, 310)와 메모리 장치(320)를 포함할 수 있으며, 어플리케이션 프로세서(310)는 메모리 장치(320)와 통신하는 메모리 컨트롤 모듈(311)을 포함할 수 있다. 일 예로서, 메모리 컨트롤 모듈(311)과 메모리 장치(320)가 메모리 시스템을 구성할 수 있다. 어플리케이션 프로세서(310)는 도 1에서의 호스트의 기능을 수행할 수 있다.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)는 시스템 버스(미도시)를 포함하는 시스템 온 칩(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) 등 다른 타입의 프로토콜이 적용되어도 무방하다.The
메모리 컨트롤 모듈(311)은 전술한 실시예에서의 메모리 컨트롤러의 기능을 수행할 수 있으며, 커맨드/어드레스(CMD/ADD)를 메모리 장치(320)로 전송함으로써 메모리 동작을 제어하거나 또는 메모리 장치(320) 내에서의 연산 처리 동작을 제어할 수 있다. 전술한 실시예들에 따라, 메모리 장치(300)는 메모리 뱅크(321), PIM 회로(322), PEIO 게이팅 회로(323) 및 제어 로직(324)을 포함할 수 있으며, PIM 회로(322)는 프로세싱 소자들(322_1)을 포함하고, 제어 로직(324)은 커맨드/어드레스 디코더(미도시)를 포함할 수 있다. 또한, 어플리케이션 프로세서(310)는 메모리 장치(320) 내부에서의 연산 처리를 위해 다수의 명령어(Inst)들을 메모리 장치(320)로 제공할 수 있으며, 메모리 장치(320) 내부의 명령어 메모리(미도시)에 상기 다수의 명령어(Inst)들이 저장될 수 있다. The
또한, 전술한 실시예에 따라, 어플리케이션 프로세서(310)는 연산 처리를 지시하는 커맨드(CMD_PE)를 메모리 장치(320)로 제공할 수 있다. 제어 로직(324)은 수신된 커맨드/어드레스(CMD/ADD)의 디코딩 결과에 기반하여 연산 처리 모드를 판단할 수 있고, 이에 기반하여 PEIO 게이팅 회로(323)의 스위칭 상태가 제어될 수 있다. 예컨대, 연산 처리 동작에서 PEIO 게이팅 회로(323)의 스위칭 상태에 따라 뱅크 로컬 IO와 뱅크 그룹 IO 사이의 전기적 연결이 차단될 수 있고, 이에 따라 피연산자(operand)로서 연산 처리에 이용되는 데이터(DATA)들의 충돌이 방지될 수 있다.In addition, according to the above-described embodiment, the
도 4는 본 발명의 예시적인 실시예에 따른 메모리 시스템의 동작 예를 나타내는 개념도이다. 도 4에서는 메모리 장치가 호스트(HOST)와 통신하는 예가 도시되며, 호스트(HOST)에는 메모리 장치와의 통신을 수행하는 메모리 컨트롤러(또는, 메모리 컨트롤 모듈)이 구비될 수 있다.4 is a conceptual diagram illustrating an example of an operation of a memory system according to an exemplary embodiment of the present invention. In FIG. 4, an example in which a memory device communicates with a host HOST is shown, and a memory controller (or a memory control module) performing communication with the memory device may be provided in the host.
도 4를 참조하면, 호스트(HOST)는 메모리 장치의 각종 동작 모드를 제어할 수 있으며, 메모리 장치가 명령어 로딩 모드로 동작함에 따라 호스트(HOST)는 연산 처리에 필요한 다수의 명령어들을 메모리 장치로 전송할 수 있으며, 전송된 명령어는 메모리 장치 내의 명령어 메모리에 로딩될 수 있다. 일 예로서, 가산, 감산, 곱셈 연산 등 다양한 종류들의 연산 처리가 메모리 장치에서 수행될 수 있으며, PIM 회로는 연산 처리 모드에서 명령어를 독출하고 이를 디코딩함으로써 명령어에 대응하는 연산 종류를 판단할 수 있다. Referring to FIG. 4, a host (HOST) can control various operation modes of a memory device, and as the memory device operates in an instruction loading mode, the host (HOST) transmits a number of commands necessary for operation processing to the memory device. The transmitted command may be loaded into the command memory 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)는 메모리 동작을 지시하기 위한 커맨드/어드레스(CMD/ADD)를 메모리 장치로 전송할 수 있다. 메모리 장치는 수신된 커맨드/어드레스(CMD/ADD)를 디코딩하고, 커맨드(CMD)가 기록 커맨드(CMD_WR) 및 독출 커맨드(CMD_RD) 등의 메모리 동작을 지시하는 경우 해당하는 메모리 동작을 수행할 수 있다. 또한, 메모리 동작의 처리가 완료됨에 따라 메모리 동작 결과를 호스트(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 may transmit a command/address CMD/ADD for instructing a memory operation to the memory device. . The memory device may decode the received command/address CMD/ADD and perform a corresponding memory operation when the command CMD instructs a memory operation such as a write command CMD_WR and a read command CMD_RD. . In addition, as the processing of the memory operation is completed, a result of the memory operation may be output to the host.
한편, 호스트(HOST)는 연산 처리를 지시하기 위한 커맨드/어드레스(CMD/ADD)를 메모리 장치로 전송할 수 있다. 연산 커맨드(CMD_PE)가 메모리 장치로 제공됨에 따라, 커맨드/어드레스(CMD/ADD) 디코딩 동작에 기반하여 메모리 장치는 연산 처리를 수행할 수 있다. 일 예로서, 메모리 장치는 연산 처리 모드에서 선택된 뱅크에 대응하여 배치되는 PEIO 게이팅 회로를 제어함으로써 뱅크 로컬 IO (BLIO)와 뱅크 그룹 IO(BGIO)의 전기적 연결을 차단한 상태에서 연산 처리를 수행할 수 있다. 일 예로서, PIM 회로 내의 프로세싱 소자는 호스트로부터의 데이터, 선택된 뱅크로부터 독출된 데이터, 프로세싱 소자 내에 저장된 정보 중 적어도 하나를 이용한 연산 처리를 수행할 수 있고, 연산 처리 결과가 호스트(HOST)로 전송될 수 있을 것이다. 또는, 예시적인 실시예에 따라, 연산 처리 결과는 프로세싱 소자 내의 레지스터에 저장되거나 또는 뱅크의 셀 어레이에 저장될 수 있으며, 호스트(HOST)는 연산 처리 결과를 독출하기 위한 커맨드/어드레스를 메모리 장치로 전송할 수도 있을 것이다.Meanwhile, the host HOST may transmit a command/address CMD/ADD for instructing operation processing to the memory device. As the calculation command CMD_PE is provided to the memory device, the memory device may perform calculation processing based on a command/address (CMD/ADD) decoding operation. As an example, the memory device controls the PEIO gating circuit disposed in response to the bank selected in the operation processing mode, thereby performing operation processing in a state in which the electrical connection between the bank local IO (BLIO) and the bank group IO (BGIO) is cut off. I can. As an example, the processing element in the PIM circuit can perform operation processing using at least one of data from the host, data read from the selected bank, and information stored in the processing element, and the result of the operation is transmitted to the host. Can be. 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.
도 5는 메모리 장치에 구비되는 다양한 구성 요소들의 일 예를 나타내는 블록도이다. 도 5에서는 메모리 장치가 다수의 채널들(예컨대, 제1 및 제2 채널들(CH1, CH2))을 포함하는 예가 도시되며, 각각의 채널은 외부의 호스트와 통신하는 서로 별개의 입출력 라인(IO)을 포함할 수 있다. 5 is a block diagram illustrating an example of various components included in a memory device. In FIG. 5, an example in which a memory device includes a plurality of channels (eg, first and second channels CH1 and CH2) is shown, and each channel is a separate input/output line (IO) communicating with an external host. ) Can be included.
제1 채널(CH1)을 예로 들면, 제1 채널(CH1)은 다수 개의 뱅크 그룹들(예컨대, 제1 및 제2 뱅크 그룹들(BG0, BG1))을 포함할 수 있고, 제1 및 제2 뱅크 그룹들(BG0, BG1) 각각은 다수의 뱅크들을 포함할 수 있다. 일 예로서, 제1 뱅크 그룹(BG0)은 제1 내지 제4 뱅크들(BANK 0 ~ BANK 3)을 포함할 수 있으며, 두 개의 뱅크들에 대해 하나의 프로세싱 소자가 공유됨에 따라, 제1 및 제2 프로세싱 소자들(PE0, PE1)이 제1 뱅크 그룹(BG0)에 대응하여 배치될 수 있다. 또한, 도 5에는 도시되지 않았으나, 뱅크 그룹 IO가 제1 뱅크 그룹(BG1)에 대응하여 배치될 수 있고, 제1 내지 제4 뱅크들(BANK 0 ~ BANK 3) 각각은 대응하는 뱅크 로컬 IO에 연결될 수 있다.Taking the first channel CH1 as an example, the first channel CH1 may include a plurality of bank groups (eg, first and second bank groups BG0 and BG1), and the first and second Each of the bank groups BG0 and BG1 may include a plurality of banks. As an example, the first bank group BG0 may include first to fourth banks BANK 0 to
데이터 버스는 제1 채널(CH1)에서 억세스되는 데이터를 전달하기 위한 경로를 포함할 수 있으며, 뱅크 제어기는 제1 채널(CH1)에 포함된 뱅크들의 데이터를 억세스하기 위한 뱅크 제어 동작을 수행할 수 있다. 일 구현 예로서, 하나의 뱅크에 대응하여 하나의 뱅크 제어기가 배치될 수 있다. 뱅크 제어기는 대응하는 뱅크에 포함되는 로우들에 대한 액티브(active) 동작, 프리차지 동작을 제어할 수 있으며, 또한 데이터 억세스를 위한 칼럼 선택 동작을 제어할 수 있다.The data bus may include a path for transmitting data accessed in the first channel CH1, and the bank controller may perform a bank control operation for accessing data of banks included in the first channel CH1. have. As an implementation example, one bank controller may be disposed corresponding to one bank. The bank controller may control an active operation and a precharge operation for rows included in a corresponding bank, and may also control a column selection operation for data access.
한편, 프로세싱 소자 제어기(이하, PE 제어기로 지칭함)는 프로세싱 소자들(PE0 ~ PE3)을 제어할 수 있다. PE 제어기는 다양한 방식으로 배치될 수 있으며, 일 예로서 뱅크 그룹에 대응하여 PE 제어기가 배치되거나 또는 채널에 대응하여 PE 제어기가 배치될 수도 있을 것이다. 또한, 커맨드/어드레스(CMD/ADD) 디코더는 호스트로부터의 커맨드/어드레스에 대한 디코딩 동작을 수행하고, 디코딩 결과에 기반하여 메모리 동작 또는 연산 처리 동작이 제어될 수 있다. 일 예로서, PE 제어기는 커맨드/어드레스(CMD/ADD) 디코더의 디코딩 동작에 기반하여 연산 처리에 관련된 각종 제어 동작을 수행할 수 있을 것이다.Meanwhile, a processing element controller (hereinafter referred to as a PE controller) may control the processing elements PE0 to PE3. The PE controller may be disposed in various ways, and as an example, a PE controller may be disposed corresponding to a bank group or a PE controller may be disposed corresponding to a channel. In addition, the command/address (CMD/ADD) decoder may perform a decoding operation on a command/address from a host, and control a memory operation or an operation processing operation based on a decoding result. As an example, the PE controller may perform various control operations related to arithmetic processing based on a decoding operation of a command/address (CMD/ADD) decoder.
PE 제어기는 프로세싱 소자의 인에이블을 제어하거나 프로세싱 소자의 연산 처리 동작을 제어함과 함께, 전술한 실시예들에 따른 데이터의 전달 경로를 제어할 수 있다. 일 예로서, 하나 이상의 PEIO 게이팅 회로가 메모리 장치에 배치될 수 있고, PE 제어기는 PEIO 게이팅 회로의 스위칭 동작을 제어하기 위한 제어 신호들을 생성할 수 있다.The PE controller may control the enable of the processing element or control the operation of the processing element and control the transmission path of data according to the above-described embodiments. As an example, one or more PEIO gating circuits may be disposed in the memory device, and the PE controller may generate control signals for controlling the switching operation of the PEIO gating circuit.
한편, 도 5에 도시된 실시예에서 뱅크 그룹은 다양하게 정의될 수 있다. 예컨대, 전술한 실시예에서 뱅크 그룹은 다수의 뱅크들의 셀 어레이를 포함하는 것으로 설명되었으나, 뱅크 그룹은 상기한 셀 어레이와 함께 메모리 동작 및 연산 처리 동작에 관련된 구성 요소들을 더 포함하는 것으로 정의될 수도 있을 것이다. 일 예로서, 하나 이상의 프로세싱 소자(PE)들, PEIO 게이팅 회로가 뱅크 그룹에 포함되는 것으로 정의되어도 무방할 것이다.Meanwhile, in the embodiment illustrated in FIG. 5, bank groups may be variously defined. For example, in the above-described embodiment, the bank group has been described as including a cell array of a plurality of banks, but the bank group may be defined as further including elements related to memory operation and operation processing operation together with the above-described cell array. There will be. As an example, one or more processing elements (PE), PEIO gating circuit may be defined as being included in the bank group.
도 6 및 도 7은 연산 처리에 관련하여 메모리 장치에 포함되는 구성들의 일 예를 나타내는 블록도이다. 6 and 7 are block diagrams illustrating examples of configurations included in a memory device in relation to operation processing.
도 5 내지 도 7을 참조하면, 메모리 장치(400)는 다수의 프로세싱 소자들을 포함할 수 있으며, 도 6에 도시된 프로세싱 소자(예컨대, 제1 PE(PE0))는 입력 선택기(410), 연산기(420), 레지스터 파일(430) 및 출력 선택기(440)를 포함할 수 있다. 도 6에서는 연산기(420)의 일 예로서 SIMD(single instruction multi data) 연산기가 예시되나, 본 발명의 실시예들은 이에 국한될 필요가 없이 다양한 종류의 연산기가 제1 PE(PE0)에 적용될 수 있을 것이다. 또한, 연산에 이용되는 각종 정보가 N 비트를 포함하는 예가 도시되었으나, 비트 수는 다양하게 변경될 수도 있을 것이다.5 to 7, the
레지스터 파일(430)은 연산 처리와 관련된 다양한 정보들을 저장할 수 있다. 일 예로서, 레지스터 파일(430)에는 연산에 이용되는 피연산자, 연산 결과, 미리 설정된 각종 정보들(예컨대, 스케일링(scaling)을 위한 상수 값 등)을 포함하는 데이터가 저장될 수 있고, 이를 위해 레지스터 파일(430)는 하나 이상의 레지스터들을 포함할 수 있다. The
입력 선택기(410)는 입력 제어신호(INPUT_CTRL)에 응답하여 연산에 이용될 데이터들을 연산기(420)로 제공할 수 있다. 제1 PE(PE0)를 예로 들면, 입력 선택기(410)는 제1 뱅크(BANK 0)로부터의 데이터와 제2 뱅크(BANK 1)로부터의 데이터를 뱅크 로컬 IO(BLIO)를 통해 수신할 수 있고, 호스트로부터의 데이터를 뱅크 그룹 IO(BGIO)를 통해 수신할 수 있으며, 또한 레지스터 파일(430)에 저장된 데이터(예컨대, 레지스터 출력(reg_out))를 수신할 수 있고, 입력 제어신호(INPUT_CTRL)에 응답하여 적어도 하나의 데이터를 연산기(420)로 제공할 수 있다.The
연산기(420)는 연산 제어신호(CAL_CTRL)에 응답하여 연산을 수행할 수 있으며, 연산 결과(result)를 레지스터 파일(430)의 입력(reg_in)으로서 제공할 수 있다. 연산 결과(result)는 레지스터 파일(430)에 저장될 수 있고, 레지스터 파일(430)은 레지스터 제어신호(REG_CTRL)에 응답하여 저장된 정보(예컨대, 연산 결과(result))를 출력 선택기(440)로 제공할 수 있다. 또한, 출력 선택기(440)는 출력 제어신호(OUTPUT_CTRL)에 응답하여 연산 결과(result)를 다양한 경로를 통해 출력할 수 있으며, 일 예로서 뱅크 로컬 IO(BLIO)를 통해 제1 뱅크(BANK 0) 또는 제2 뱅크(BANK 1)로 제공하거나, 또는 뱅크 그룹 IO(BGIO)를 통해 호스트로 제공할 수 있으며, 또는 연산 동작을 위해 입력 선택기(410)의 입력으로 제공할 수도 있다.The
한편, 도 7은 PE 제어기의 일 구현 예를 나타내며, 도 7에 도시된 바와 같이 메모리 장치(400)는 PE 제어기(450)와 함께, 명령어 메모리에 해당하는 명령어 큐(460), 명령어 디코더(470) 및 커맨드/어드레스 디코더(480)를 더 포함할 수 있다. 도 6 및 도 7에 도시된 다양한 구성 요소들이 전술한 실시예에서 설명된 PIM 회로 내에 구비되는 구성인 것으로 정의될 수 있고, 일 예로서 명령어 큐(460), 명령어 디코더(470)는 PIM 회로에 구비되는 구성일 수 있다.Meanwhile, FIG. 7 shows an example of an implementation of the PE controller. As shown in FIG. 7, the
PE 제어기(450)는 커맨드/어드레스(CMD/ADD) 또는 그 디코딩 결과에 기반하여 연산 처리에 관련된 각종 제어 동작들을 수행할 수 있다. 상기 어드레스(ADD)는 뱅크 어드레스(BA), 로우 어드레스(RA) 및 칼럼 어드레스(CA)를 포함할 수 있다. 또한, PE 제어기(450)는 디코딩된 커맨드/어드레스(CMD/ADD)를 기반으로 전술한 각종 제어신호들(INPUT_CTRL, CAL_CTRL, REG_CTRL, OUTPUT_CTRL)을 생성할 수 있으며, 또한 전술한 실시예들에 따라 PEIO 게이팅 회로의 스위칭 상태를 제어함으로써 뱅크 로컬 IO(BLIO)와 뱅크 그룹 IO(BGIO) 사이의 전기적 연결을 제어하기 위한 PEIO 제어신호(PEIO_CTRL)를 출력할 수 있다.The
한편, 연산 처리는 가산, 감산, 곱셈 연산 등 다양한 종류의 연산들을 포함할 수 있고, 명령어에 대한 디코딩 동작을 통해 연산 종류가 판단될 수 있다. 명령어 큐(460)는 호스트로부터 다수의 명령어(Inst)들을 수신할 수 있고, 일 예로서 데이터 버스를 통해 수신되는 명령어(Inst)들을 저장할 수 있다. PE 제어기(450)는 명령어 제어신호(INST_CTRL)를 명령어 큐(460)로 제공함으로써, 명령어 큐(460)에 명령어(Inst)가 저장되거나 명령어(Inst)가 독출되는 동작을 제어할 수 있다. 또한, 명령어 큐(460)로부터 독출된 명령어(Inst)는 명령어 디코더(470)로 제공될 수 있고, 명령어 디코더(470)는 이에 대한 디코딩 처리를 수행할 수 있다.Meanwhile, the operation processing may include various types of operations such as addition, subtraction, and multiplication operations, and the type of operation may be determined through a decoding operation for an instruction. The
도 8은 본 발명의 예시적인 실시예의 메모리 장치가 HBM(high bandwidth memory)을 포함하는 예를 나타내는 블록도이다. 8 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))와 이에 적층된 하나 이상의 코어 다이들을 포함할 수 있다. 도 5의 예에서는, 4 개의 코어 다이들이 HBM(500)에 구비되는 예가 도시되었으나, 코어 다이들의 개수는 다양하게 변경될 수 있다. 코어 다이들 중 제1 코어 다이(520)를 참조하여 도 8의 구성을 설명하면 다음과 같다.The
제1 코어 다이(520)는 하나 이상의 채널을 포함할 수 있으며, 도 8의 예에서는 제1 코어 다이(520)가 두 개의 채널들(CH1, CH2)을 포함하는 경우가 예시된다. 버퍼 다이(510)는 호스트(또는, 메모리 컨트롤러)와 통신하는 인터페이스 회로(미도시)를 포함할 수 있으며, 버퍼 다이(510)를 통해 호스트로부터 커맨드/어드레스 및 데이터를 수신할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 제1 코어 다이(520)의 채널들(CH1, CH2) 각각은 커맨드/어드레스 디코더(521) 및 PIM 회로(522)를 포함할 수 있으며, PIM 회로(522)는 커맨드/어드레스에 대한 디코딩 결과에 기반하여 내부 연산 처리를 제어할 수 있다. 또한, 도 8에 도시되지는 않았으나 전술한 실시예들에서 설명된 연산 처리에 관련된 각종 구성 요소들이 채널들(CH1, CH2) 각각에 구비될 수 있을 것이다. 일 예로서, 채널들(CH1, CH2) 각각은 다수의 뱅크들을 포함하는 뱅크 그룹, 뱅크 로컬 IO(BLIO)와 뱅크 그룹 IO(BGIO)을 포함할 수 있고, 뱅크 로컬 IO(BLIO)와 뱅크 그룹 IO(BGIO) 사이의 전기적 연결을 제어하기 위한 PEIO 게이팅 회로를 포함할 수 있을 것이다. The first core die 520 may include one or more channels, and in the example of FIG. 8, a case where the first core die 520 includes two channels CH1 and CH2 is illustrated. The buffer die 510 may include an interface circuit (not shown) that communicates with a host (or a memory controller), and may receive commands/addresses and data from the host through the buffer die 510. Further, according to an exemplary embodiment of the present invention, each of the channels CH1 and CH2 of the first core die 520 may include a command/
한편, 도 8에서는 HBM(500)의 각각의 채널이 적어도 두 개의 의사 채널들(pseudo channel)을 포함하는 구현 예가 개시된다. 일 예로서, 제1 코어 다이(520)의 제1 채널(CH1)는 두 개의 의사 채널들(PC0, PC1)을 포함할 수 있으며, 두 개의 의사 채널들(PC0, PC1)에 대응하여 데이터 버스가 서로 별개로 구현되는 반면에, 상기 두 개의 의사 채널들(PC0, PC1)은 커맨드/어드레스 디코더(521)를 공유할 수 있다. 또한, 다양한 실시예들에 따라 PIM 회로(522)에 구비되는 다양한 구성 요소들 중 적어도 하나는 두 개의 의사 채널들(PC0, PC1)에 공유될 수도 있을 것이다. 즉, 의사 채널들(PC0, PC1)은 서로 별개의 데이터 버스를 통해 호스트와 인터페이스할 수 있는 반면에, 공통한 커맨드/어드레스 버스를 통해 호스트와 인터페이스할 수 있을 것이다.Meanwhile, in FIG. 8, an implementation example in which each channel of the
도 9는 본 발명의 예시적인 실시예에 따른 메모리 장치의 동작방법을 나타내는 플로우차트이다.9 is a flowchart showing a method of operating a memory device according to an exemplary embodiment of the present invention.
도 9을 참조하면, 메모리 장치는 호스트로부터 제공된 명령어들을 수신하고 이를 저장할 수 있으며, 호스트로부터의 요청에 따라 자체적으로 연산 처리를 수행할 수 있다. 메모리 장치는 호스트로부터 커맨드/어드레스를 수신할 수 있으며, 수신된 커맨드/어드레스에 대한 디코딩 처리를 수행할 수 있다(S11). 또한, 디코딩 결과에 따라 메모리 장치는 연산 처리 모드에서 동작할 수 있으며, 일 예로서 전술한 실시예들에 따라 연산 처리를 위한 별도의 커맨드가 정의되거나, 또는 커맨드/어드레스에 포함되는 다수의 비트들의 값에 기반하여 연산 처리 모드가 선택될 수도 있을 것이다.Referring to FIG. 9, the memory device may receive commands provided from a host and store them, and may perform operation processing by itself according to a request from the host. The memory device may receive a command/address from the host and may perform decoding processing on the received command/address (S11). In addition, according to the decoding result, the memory device may operate in an operation processing mode. As an example, a separate command for operation processing is defined according to the above-described embodiments, or a plurality of bits included in the command/address The arithmetic processing mode may be selected based on the value.
디코딩 결과에 기반하여 연산 처리 모드에 해당하는지가 판단되고(S12), 연산 처리 모드에 해당하지 않는 경우에는 노멀 메모리 동작을 위해 선택된 뱅크의 뱅크 로컬 IO(BLIO)와 뱅크 그룹 IO(BGIO)가 전기적으로 연결되고(S13), 메모리 동작이 수행됨에 따라 선택된 뱅크로 데이터가 제공되거나 또는 선택된 뱅크로부터 데이터가 독출될 수 있다(S14).Based on the decoding result, it is determined whether it corresponds to the operation processing mode (S12), and if it does not correspond to the operation processing mode, the bank local IO (BLIO) and the bank group IO (BGIO) of the bank selected for normal memory operation are electrically As the memory operation is performed (S13), data may be provided to the selected bank or data may be read from the selected bank (S14).
한편, 연산 처리 모드에 해당하는 경우에는 연산 처리 동작을 위해 뱅크 로컬 IO(BLIO)와 뱅크 그룹 IO(BGIO)가 전기적으로 차단되고(S15), 연산 처리를 위한 데이터 및/또는 정보가 프로세싱 소자(PE)로 제공될 수 있다. 일 예로서, 호스트로부터의 데이터가 뱅크 그룹 IO(BGIO)를 통해 프로세싱 소자(PE)로 제공될 수 있으며(S16), 또한 선택된 뱅크로부터 독출된 데이터가 뱅크 로컬 IO(BLIO)를 통해 프로세싱 소자(PE)로 제공될 수 있다(S17). 프로세싱 소자(PE)는 수신된 데이터를 이용하여 연산 처리를 수행할 수 있다(S18).On the other hand, in the case of the operation processing mode, the bank local IO (BLIO) and the bank group IO (BGIO) are electrically cut off for the operation processing operation (S15), and data and/or information for the operation processing is transferred to the processing element ( PE). As an example, data from the host may be provided to the processing element PE through the bank group IO (BGIO) (S16), and data read out from the selected bank may be provided through the bank local IO (BLIO) through the processing element ( PE) may be provided (S17). The processing element PE may perform arithmetic processing using the received data (S18).
한편, 전술한 실시예들의 프로세싱 소자(PE)에서 수행되는 연산 처리는 뉴럴 네트워크(neural network) 연산들을 포함할 수 있다. 일 예로서, 딥 러닝 알고리즘 등 다양한 종류의 뉴럴 네트워크들이 존재하고, 뉴럴 네트워크 연산들은 CPU나 GPU 등의 일반(general) 하드웨어나, 특정 소프트웨어에 최적화된 전용 하드웨어 등 다양한 종류의 하드웨어(또는, 프로세서)들에 의해 실행될 수 있다. 일 예로, 전용 하드웨어는 ASIC, NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등 다양한 종류의 하드웨어들을 포함할 수 있다. Meanwhile, the operation processing performed by the processing element PE according to the above-described embodiments may include neural network operations. As an example, there are various types of neural networks such as deep learning algorithms, and neural network operations are various types of hardware (or processors) such as general hardware such as CPU or GPU, or dedicated hardware optimized for specific software. Can be implemented by 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.
본 발명의 예시적인 실시예에 따라, 뉴럴 네트워크 연산들 중 적어도 일부의 연산들은 본 발명의 실시예들에 따른 메모리 장치에서 수행될 수 있다. 뉴럴 네트워크 연산들은 데이터와 가중치(weight)를 이용한 연산을 포함할 수 있으며, 상기 연산에 이용되는 데이터 및 가중치(weight)는 호스트(HOST)로부터 제공되거나 또는 메모리 장치 내에 저장될 수 있다. 일 예로서, 데이터는 호스트(HOST)로부터 제공되고 가중치(weight)는 메모리 장치의 뱅크에 저장된 경우, 전술한 도 9의 실시에에서 데이터는 뱅크 그룹 IO(BGIO)를 통해 프로세싱 소자(PE)로 제공될 수 있으며, 가중치(weight)는 선택된 뱅크로부터 독출되어 뱅크 로컬 IO(BLIO)를 통해 프로세싱 소자(PE)로 제공될 수 있다.According to an exemplary embodiment of the present invention, at least some of the neural network operations may be performed in a memory device according to embodiments of the present invention. Neural network operations may include operations using data and weights, and data and weights used in the operations may be provided from a host or stored in a memory device. As an example, when data is provided from a host and a weight is stored in a bank of a memory device, data is transferred to the processing element PE through the bank group IO (BGIO). The weight may be provided, and the weight may be read from the selected bank and provided to the processing element PE through the bank local IO BLIO.
도 10a,b,c는 본 발명의 일 실시예에 따른 메모리 장치에서 정의되는 연산 커맨드들의 일 예를 나타내는 도면이다. 10A, B, and C are diagrams illustrating examples of operation commands defined in a memory device according to an embodiment of the present invention.
본 발명의 실시예들에 따라, 도 10a,b,c에 도시된 바와 같이 연산 처리와 관련하여 다양한 연산 커맨드들(PERW, PERD, PEWR)이 정의될 수 있으며, 메모리 장치는 연산 커맨드들(PERW, PERD, PEWR)이 수신되는 경우에, 명령어 메모리에 기 저장된 명령어를 디코딩함으로써 연산 처리를 수행할 수 있다. 또한, 연산 커맨드들(PERW, PERD, PEWR)의 종류에 따라 연산에 이용되는 데이터의 전달 경로가 상이할 수 있으며, 일 구현 예로서 연산 커맨드들(PERW, PERD, PEWR)의 디코딩 결과에 기반하여 연산 처리에 이용되는 데이터를 전달하는 경로가 서로 다르게 제어될 수 있다.According to embodiments of the present invention, various operation commands (PERW, PERD, PEWR) may be defined in relation to operation processing as shown in FIGS. 10A, B, and C, and the memory device includes operation commands PERW , PERD, PEWR) is received, it is possible to perform operation processing by decoding the instruction previously stored in the instruction memory. In addition, the transmission path of data used for calculation may be different depending on the type of calculation commands (PERW, PERD, PEWR), and as an implementation example, based on the decoding result of calculation commands (PERW, PERD, PEWR). Paths for transmitting data used for operation processing may be controlled differently.
일 예로서, 도 10a를 참조하면, 제1 연산 커맨드(PERW)가 호스트로부터 메모리 장치로 제공될 수 있으며, 제1 연산 커맨드(PERW)에 응답하여 호스트로부터의 데이터와 메모리 장치 내의 데이터를 이용한 연산이 수행될 수 있다. 도 10a,b,c에서는 도시되지 않았으나 하나 이상의 뱅크가 선택되어 뱅크 내의 로우가 액티브 상태를 가질 수 있으며, 어드레스(ADD)에 포함된 칼럼 어드레스 정보(COL)에 따라 뱅크로부터 데이터가 독출되어 뱅크 로컬 IO(BLIO)를 통해 프로세싱 소자(PE)로 제공될 수 있다. 또한, 소정의 레이턴시 후에 호스트로부터 데이터(DATA)가 뱅크 그룹 IO(BGIO)을 통해 전달되어 프로세싱 소자(PE)로 제공될 수 있으며, 프로세싱 소자(PE)는 수신된 데이터들을 이용한 연산 처리를 수행할 수 있다.As an example, referring to FIG. 10A, a first operation command PERW may be provided from a host to a memory device, and an operation using data from the host and data in the memory device in response to the first operation command PERW This can be done. Although not shown in FIGS. 10A, B, and C, one or more banks are selected so that a row in the bank may have an active state, and data is read from the bank according to the column address information COL included in the address ADD, so that the bank is local. It may be provided to the processing element PE through IO (BLIO). In addition, after a predetermined latency, data (DATA) from the host may be transmitted through the bank group IO (BGIO) and provided to the processing element PE, and the processing element PE may perform operation processing using the received data. I can.
한편, 도 10b를 참조하면, 제2 연산 커맨드(PERD)가 호스트로부터 메모리 장치로 제공될 수 있으며, 제2 연산 커맨드(PERD)에 응답하여 메모리 장치 내의 데이터를 이용한 연산이 수행될 수 있다. 일 예로서, 칼럼 어드레스 정보(COL)에 따라 뱅크로부터 데이터가 독출되어 뱅크 로컬 IO(BLIO)를 통해 프로세싱 소자(PE)로 제공되고, 프로세싱 소자(PE)는 뱅크로부터의 데이터를 이용하여 연산 처리를 수행할 수 있다. 일 동작 예로서, 뱅크로부터 독출된 데이터는 뉴럴 네트워크 연산의 가중치(weight)에 해당하고, 상기 가중치(weight)의 값을 스케일링하기 위한 정보(예컨대, 소정의 상수 값)가 프로세싱 소자(PE) 내의 레지스터에 저장된 경우, 프로세싱 소자(PE)는 상기 가중치(weight)와 상수 값을 연산하는 동작을 수행할 수 있을 것이다. Meanwhile, referring to FIG. 10B, a second operation command PERD may be provided from a host to a memory device, and an operation using data in the memory device may be performed in response to the second operation command PERD. As an example, data is read from the bank according to the column address information (COL) and provided to the processing element PE through the bank local IO (BLIO), and the processing element PE processes an operation using data from the bank. You can do it. As an example of operation, data read from a bank corresponds to a weight of a neural network operation, and information (eg, a predetermined constant value) for scaling a value of the weight is included in the processing element PE. When stored in a register, the processing element PE may perform an operation of calculating the weight and the constant value.
한편, 도 10c를 참조하면, 제3 연산 커맨드(PEWR)가 호스트로부터 메모리 장치로 제공될 수 있으며, 제3 연산 커맨드(PEWR)에 응답하여 프로세싱 소자(PE) 내의 레지스터에 저장된 정보(예컨대, 연산 결과)가 뱅크에 기록되는 동작이 수행될 수 있다. 일 예로서, 커맨드/어드레스의 디코딩 결과에 기반하여 프로세싱 소자(PE) 내의 레지스터의 정보가 독출되고, 독출된 정보는 뱅크 로컬 IO(BLIO)를 통해 뱅크의 칼럼 어드레스 정보(COL)에 대응하는 위치로 제공될 수 있을 것이다.Meanwhile, referring to FIG. 10C, a third operation command PEWR may be provided from a host to a memory device, and information stored in a register in the processing element PE in response to the third operation command PEWR (eg, operation The operation in which the result) is written to the bank can be performed. As an example, information on a register in the processing element PE is read based on a result of decoding a command/address, and the read information is a position corresponding to the column address information COL of the bank through the bank local IO (BLIO). Can be provided with.
전술한 도 10a,b,c에서는 본 발명의 실시예들에서 수행 가능한 연산들 중 일부만이 언급되었으나, 본 발명의 메모리 장치는 다른 다양한 종류의 연산들을 수행할 수도 있을 것이다. 일 예로서, 연산 커맨드들(PERW, PERD, PEWR)에 응답하여 독출된 명령어에 따른 다양한 종류의 연산들이 수행될 수 있고, 상기한 연산 커맨드들(PERW, PERD, PEWR)의 종류는 데이터의 전달 경로를 제어하는 데 이용될 수 있을 것이다. 예컨대, 호스트는 제3 연산 커맨드(PEWR)를 제공함과 함께 데이터를 더 제공할 수 있고, 프로세싱 소자(PE)는 제3 연산 커맨드(PEWR)에 응답하여 호스트로부터 제공된 데이터를 이용한 연산 처리를 수행할 수도 있을 것이다.Although only some of the operations that can be performed in embodiments of the present invention are mentioned in FIGS. 10A, B, and C described above, the memory device of the present invention may also perform various other types of operations. As an example, various types of operations may be performed according to a command read in response to operation commands (PERW, PERD, PEWR), and the types of the operation commands (PERW, PERD, PEWR) are data transfer. It could be used to control the path. For example, the host may further provide data while providing the third operation command PEWR, and the processing element PE may perform operation processing using data provided from the host in response to the third operation command PEWR. Maybe.
한편, 호스트는 일련의 연산 처리를 위한 명령어들을 순차적으로 메모리 장치로 제공할 수 있고, 이에 따라 각각의 연산 타이밍에서 수행될 연산 처리의 종류를 판단할 수 있다. 호스트는, 각각의 연산 타이밍에서 수행되는 연산 처리의 종류를 기반으로 하여, 전술한 연산 커맨드들(PERW, PERD, PEWR)을 적합한 커맨드를 선택하여 메모리 장치로 제공할 수 있을 것이다.Meanwhile, the host may sequentially provide instructions for processing a series of operations to the memory device, and accordingly, determine the type of operation to be performed at each operation timing. The host may select an appropriate command and provide the above-described operation commands PERW, PERD, and PEWR to the memory device based on the type of operation processing performed at each operation timing.
도 11은 본 발명의 실시예들에 따른 메모리 장치에서 일련하게 수행되는 연산 처리의 예를 나타내는 파형도이다. 도 11에서는 다수의 뱅크들의 로우들이 동시에 선택되고, 다수의 프로세싱 소자들에 의해 병렬하게 연산 처리가 수행되는 예가 도시된다.11 is a waveform diagram illustrating an example of operation processing sequentially performed in a memory device according to embodiments of the present invention. In FIG. 11, an example in which rows of a plurality of banks are simultaneously selected and arithmetic processing is performed in parallel by a plurality of processing elements is shown.
도 11을 참조하면, 다수의 뱅크들에 포함되는 다수의 로우들을 함께 액티브하기 위한 액티브 커맨드(PEACT)가 정의될 수 있고, 호스트가 액티브 커맨드(PEACT)를 메모리 장치로 제공함에 따라 다수의 뱅크들 각각의 로우(예컨대, 제1 로우(row0))가 액티브될 수 있다. Referring to FIG. 11, an active command PEACT for activating a plurality of rows included in a plurality of banks together may be defined, and as a host provides an active command PEACT to a memory device, a plurality of banks Each row (eg, a first row (row0)) may be active.
호스트는, 메모리 장치에서 연산 처리가 일련하게 수행될 수 있도록 하나 이상의 연산 커맨드들을 메모리 장치로 제공할 수 있고, 일 예로서 전술한 실시예들에서 언급된 제1 내지 제3 연산 커맨드들(PERW, PERD, PEWR)이 메모리 장치로 제공될 수 있다. 일 예로, 메모리 장치의 데이터 및/또는 정보의 전달 경로는 제1 내지 제3 연산 커맨드들(PERW, PERD, PEWR)의 디코딩 결과에 기반하여 제어될 수 있고, 명령어 메모리로부터 독출된 명령어(예컨대, 제1 명령어(Inst 0))의 디코딩 동작에 기반하여 연산 처리의 종류가 판단될 수 있다.The host may provide one or more operation commands to the memory device so that operation processing may be performed in series in the memory device. As an example, the first to third operation commands PERW and PERD, PEWR) can be provided as a memory device. As an example, the transmission path of data and/or information of the memory device may be controlled based on the decoding result of the first to third operation commands (PERW, PERD, PEWR), and a command read from the command memory (eg, The type of operation processing may be determined based on the decoding operation of the first instruction (Inst 0).
일 예로서, 메모리 장치는 제3 연산 커맨드(PEWR)와 함께 제1 칼럼(col 0)을 나타내는 어드레스를 수신하고, 제1 명령어(Inst 0)의 디코딩 결과(mov)에 따라 프로세싱 소자(PE) 내의 레지스터(미도시)에 데이터 및/또는 정보를 기록할 수 있다. 일 예로서, 다수의 뱅크들의 로우들이 액티브됨에 따라 다수의 프로세싱 소자(PE)들이 병렬하게 연산을 수행할 수 있고, 일 예로서 제3 연산 커맨드(PEWR)에 응답하여 데이터 버스로부터의 데이터가 레지스터 입력(reg_in)으로서 다수의 프로세싱 소자(PE)들에 병렬하게 제공될 수 있다.As an example, the memory device receives an address indicating a first column (col 0) together with a third operation command (PEWR), and according to the decoding result (mov) of the first command (Inst 0), the processing element PE Data and/or information can be written to a register (not shown). As an example, as rows of a plurality of banks are active, a plurality of processing elements PE may perform an operation in parallel. As an example, data from a data bus is registered in response to a third operation command PEWR. As an input reg_in, it may be provided to multiple processing elements PE in parallel.
또한, 메모리 장치는 호스트로부터 제1 연산 커맨드(PERW) 및 제2 칼럼(col 1)을 나타내는 어드레스를 수신하고, 이에 응답하여 제2 명령어(Inst 1)를 독출하고 디코딩할 수 있으며, 제2 명령어(Inst 1)의 디코딩 결과(mac)에 따라 다수의 프로세싱 소자(PE)들 각각은 레지스터에 저장된 정보(예컨대, 호스트로부터 제공되어 레지스터에 저장된 정보)와 뱅크의 제2 칼럼(col 1)으로부터 독출된 데이터를 이용한 연산 처리(예컨대, MAC(Multiplication and Accumulation) 처리)를 수행할 수 있다. In addition, the memory device may receive an address indicating the first operation command PERW and the
상기와 같은 다수의 프로세싱 소자(PE)들에 의한 병렬한 연산 처리가 완료되고 나면, 뱅크들의 로우들을 프리차지하기 위해 호스트로부터 프리차지 커맨드(PEPRE)가 메모리 장치로 제공될 수 있다. 또한, 일 동작 예에 따라, 다수의 프로세싱 소자(PE)들에 저장된 연산 처리 결과가 뱅크들에 기록될 수 있으며, 이를 위해 호스트는 액티브 커맨드(PEACT)와 함께 로우(예컨대, 제2 로우(row1))를 메모리 장치로 제공할 수 있고, 메모리 장치는 제3 연산 커맨드(PEWR) 및 어드레스(예컨대, 제1 칼럼(col 0))를 수신할 수 있다. 메모리 장치는 제3 연산 커맨드(PEWR)에 응답하여 제3 명령어(Inst 2)를 독출하고 디코딩할 수 있으며, 디코딩 결과(store)에 따라 다수의 프로세싱 소자(PE)들에 저장된 연산 처리 결과가 각각 대응하는 뱅크에 저장될 수 있다. 이후, 호스트로부터 프리차지 커맨드(PEPRE)에 따라 메모리 장치의 뱅크들의 로우들이 프리차지 될 수 있다.After the parallel operation processing by the plurality of processing elements PE is completed, a precharge command PEPRE may be provided from the host to the memory device to precharge the rows of the banks. In addition, according to an operation example, operation results stored in a plurality of processing elements PE may be written to the banks. To this end, a host may write a row (eg, a second row) together with an active command PEACT. )) may be provided to the memory device, and the memory device may receive a third operation command PEWR and an address (eg, a first column (col 0)). The memory device may read and decode the
도 12a,b 내지 도 14a,b는 본 발명의 다양한 실시예들에 따른 메모리 장치의 구현 예들을 나타내는 도면이다. 12A,B through 14A,B are diagrams illustrating implementation examples of a memory device according to various embodiments of the present disclosure.
도 12a,b를 참조하면, 메모리 장치(600A)는 하나 이상의 뱅크 그룹들을 포함할 수 있고, 일 예로서 제1 뱅크 그룹(BG0)은 다수 개의 뱅크들(BANK 0 ~ BANK 3)을 포함할 수 있으며, 프로세싱 소자들은 뱅크들(BANK 0 ~ BANK 3) 각각에 대응하여 배치될 수 있다. 일 예로서, 도 12a에는 제1 및 제2 뱅크들(BANK 0, BANK 1)에 대응하여 제1 및 제2 프로세싱 소자들(611A, 612A)이 배치되는 예가 도시되고, 제1 PEIO 게이팅 회로(621A)는 뱅크 그룹 IO(BGIO)와 제1 뱅크(BANK 0)의 뱅크 로컬 IO (BLIO)의 연결을 제어하기 위해 배치될 수 있고, 제2 PEIO 게이팅 회로(622A)는 뱅크 그룹 IO(BGIO)와 제2 뱅크(BANK 1)의 뱅크 로컬 IO (BLIO)의 연결을 제어하기 위해 배치될 수 있다.Referring to FIGS. 12A and 12B, the
한편, 도 12b를 참조하면, 메모리 장치(600A)는 다수의 채널들(예컨대, 제1 및 제2 채널들(CH1, CH2))을 포함할 수 있고, 각각의 채널은 하나 이상의 뱅크 그룹들을 포함할 수 있다. 일 예로서, 도 12a에 도시된 구성 요소들은 메모리 장치(600A)의 제1 채널(CH1)에 포함된 구성일 수 있다. 또한, 전술한 실시예에서와 같이, 각각의 채널에 대해 메모리 동작 및 연산 처리 동작을 제어하기 위한 다양한 구성 요소들이 메모리 장치(600A)에 구비될 수 있으며, 일 예로서 도 12b에는 데이터 버스, 뱅크 제어기, PE 제어기 및 커맨드/어드레스 디코더 등이 예시된다.Meanwhile, referring to FIG. 12B, the
도 12a,b에 도시된 실시예에 따르면, 뱅크들(BANK 0 ~ BANK 3) 각각에 저장된 데이터를 이용한 병렬 연산 처리가 수행될 수 있다. 뱅크들(BANK 0 ~ BANK 3)에 저장된 가중치 정보를 이용한 뉴럴 네트워크 연산을 예로 들면, 호스트로부터의 데이터가 도 12a에 도시된 프로세싱 소자들(PE0 ~ PE3)에 공통하게 제공되고, 프로세싱 소자들(PE0 ~ PE3)은 동일한 데이터를 이용하여 서로 다른 값을 갖는 가중치들을 이용한 연산을 병렬하게 수행할 수 있을 것이다.According to the embodiment shown in FIGS. 12A and 12B, parallel operation processing may be performed using data stored in each of the banks BANK 0 to
도 13a,b에서는 메모리 장치(600B)가 하나 이상의 뱅크 그룹들을 포함하고, 하나의 뱅크 그룹(예컨대, 제1 뱅크 그룹(BG0))에 대응하여 하나의 프로세싱 소자(610B)가 배치되는 예가 도시된다. 또한, 제1 뱅크 그룹(BG0)의 뱅크들(BANK 0 ~ BANK 3)에 대응하여 PEIO 게이팅 회로들(621B ~ 624B)이 배치될 수 있다.13A and 13B illustrate an example in which the
연산 처리 종류(또는, 연산 처리에 이용되는 피연산자들)에 따라 뱅크들(BANK 0 ~ BANK 3) 중 적어도 하나의 뱅크로부터의 데이터가 프로세싱 소자(610B)로 제공될 수 있으며, 연산 처리에 이용되는 데이터 및/또는 정보에 따라 PEIO 게이팅 회로들(621B ~ 624B)의 연결 상태가 제어될 수 있다. 또한, 도 13b에서는 메모리 장치(600B)가 도 13a에 도시된 바와 같은 구성 요소들을 포함하는 경우에, 메모리 장치(600B)에 구비되는 다수의 채널들(예컨대, 제1 및 제2 채널들(CH1, CH2))의 일 구현 예가 도시된다.Data from at least one bank among the banks (
한편, 도 14a에서는 하나의 프로세싱 소자가 하나의 뱅크 그룹에 대응하여 배치되고, 상기 프로세싱 소자는 뱅크 그룹 IO(BGIO) 상에 배치되는 구성 예가 도시된다.Meanwhile, in FIG. 14A, an example of a configuration in which one processing element is disposed corresponding to one bank group, and the processing element is disposed on the bank group IO (BGIO) is shown.
도 14a,b를 참조하면, 메모리 장치(700)는 다수의 뱅크들(BANK 0 ~ BANK 3)을 포함하는 제1 뱅크 그룹(BG0)을 구비하고, 제1 뱅크 그룹(BG0)에 대응하여 배치되는 프로세싱 소자(710)는 뱅크 그룹 IO(BGIO) 를 통해 다수의 뱅크들(BANK 0 ~ BANK 3)로부터 데이터를 수신하고, 또한 데이터 버스를 통해 외부의 호스트로부터 데이터를 수신할 수 있다. 또한, 메모리 장치(700)는 제1 뱅크 그룹(BG0)에 대응하여 배치되는 PEIO 게이팅 회로(720)를 더 포함하고, 상기 PEIO 게이팅 회로(720)는 뱅크 그룹 IO(BGIO)와 데이터 버스 사이의 전기적 연결을 제어할 수 있다.Referring to FIGS. 14A and 14B, the
일 동작 예로서, 연산 처리 동작 시 PEIO 게이팅 회로(720)는 뱅크 그룹 IO(BGIO)와 데이터 버스 사이의 전기적 연결을 차단할 수 있고, 프로세싱 소자(710)로 제공되는 호스트로부터의 데이터와 뱅크 그룹 IO(BGIO)을 통한 데이터가 충돌되는 것을 방지할 수 있다. 한편, 도 14b에서는 메모리 장치(700)가 도 14a에 도시된 바와 같은 구성 요소들을 포함하는 경우에, 메모리 장치(700)에 구비되는 다수의 채널들(예컨대, 제1 및 제2 채널들(CH1, CH2))의 일 구현 예가 도시된다. 일 예로서, 전술한 실시예들과는 달리 프로세싱 소자(710, (PE0))는 제1 뱅크 그룹(BG0)의 뱅크 그룹 IO(BGIO)와 데이터 버스 사이에 연결되는 구조를 가질 수 있다.As an example of operation, during an operation processing operation, the
도 15는 본 발명의 변형 가능한 실시예에 따른 메모리 장치의 일 구현 예를 나타내는 도면이다. 도 15에서는, 메모리 장치의 뱅크 그룹에 포함되는 다수의 뱅크들 중 어느 하나의 뱅크의 셀 어레이에 저장되는 정보의 일 예가 도시된다.15 is a diagram illustrating an example implementation of a memory device according to a deformable embodiment of the present invention. In FIG. 15, an example of information stored in a cell array of any one bank among a plurality of banks included in a bank group of a memory device is illustrated.
예시적인 실시예들에 따라, 메모리 장치는 그 내부에 PIM 회로를 구비하고, 메모리 컨트롤러(또는, 호스트)로부터의 노멀 커맨드에 응답하여 연산 처리를 수행할 수 있다. 일 예로서, 노멀 커맨드는 메모리 동작을 지시하는 기록 커맨드 및 독출 커맨드 등을 포함할 수 있으며, 셀 어레이의 일부 영역은 연산 처리를 수행하기 위한 명령어와 함께, PIM 회로를 제어하기 위한 제어 정보를 저장하는 PIM 영역으로 이용될 수 있다. 도 15에서는 셀 어레이의 제1 로우(Row 0)에 상기한 명령어 및 제어 정보가 저장되는 예가 도시되나, 본 발명의 실시예들은 이에 국한될 필요가 없이 PIM 영역은 다양하게 설정될 수 있다.According to example embodiments, the memory device may include a PIM circuit therein, and may perform operation processing in response to a normal command from a memory controller (or host). As an example, the normal command may include a write command and a read command for instructing a memory operation, and a portion of the cell array stores control information for controlling the PIM circuit along with a command for performing an operation process. It can be used as a PIM area. 15 illustrates an example of storing the above command and control information in the first row (Row 0) of the cell array, embodiments of the present invention need not be limited thereto, and the PIM area may be variously set.
예시적인 실시예에 따라, 호스트는 셀 어레이의 PIM 영역에 대한 독출을 지시함으로써 메모리 장치가 연산 처리를 수행하도록 제어 동작을 수행할 수 있다. 메모리 장치는 전술한 실시예에서의 명령어에 상응하는 정보와, 연산 처리를 위한 각종 제어 정보들을 독출하고 이를 이용한 연산 처리를 수행할 수 있다. 일 예로서, 메모리 장치는 독출된 명령어를 기반으로 하여 연산 종류(예컨대, 데이터의 이동, MAC 연산 등)를 판단할 수 있고, 독출된 제어 정보를 기반으로 액티브/프리차지 동작을 제어하거나, 프로세싱 소자의 인에이블 여부, 그리고 전술한 실시예들에서의 각종 경로의 제어 동작을 수행할 수 있을 것이다.According to an exemplary embodiment, the host may perform a control operation so that the memory device performs operation processing by instructing to read the PIM region of the cell array. The memory device may read information corresponding to a command in the above-described embodiment and various control information for operation processing, and perform operation processing using the information. As an example, the memory device may determine an operation type (e.g., data movement, MAC operation, etc.) based on a read command, and control or process an active/precharge operation based on the read control information. Whether the device is enabled, and control operations of various paths in the above-described embodiments may be performed.
도 16은 본 발명의 실시예에 따른 데이터 처리 시스템을 포함하는 서버 시스템을 나타내는 블록도이다.16 is a block diagram showing a server system including a data processing system according to an embodiment of the present invention.
도 16을 참조하면, 서버 시스템(800)은 관리자(810) 및 복수의 서버들(820_1 ~ 820_K)을 포함할 수 있다. 복수의 서버들(820_1 ~ 820_K) 각각은 전술한 실시예들에서 설명된 데이터 처리 시스템에 해당할 수 있다. 복수의 서버들(820_1 ~ 820_K)은 소정의 프로토콜(예컨대, PCI, PCIe 등)을 지원하는 버스를 통해 서로 연결되고, 일 예로서 복수의 서버들(820_1 ~ 820_K)은 관리자(810)의 제어에 기반하여 P2P 연결 구조를 통해 서로 통신할 수 있다.Referring to FIG. 16, the
어느 하나의 서버(예컨대, 제1 서버(820_1))를 참조하면, 제1 서버(820_1)는 전술한 실시예들에 따른 호스트 및 하나 이상의 메모리 장치(MEM)들을 포함하고, 서버의 기능에 따른 다양한 종류의 연산 처리를 수행하고 그 처리 결과를 저장할 수 있다. 일 실시예에 따라, 메모리 장치(MEM)들 각각은 다수의 뱅크들 및 이에 대응하여 배치되는 프로세싱 소자들을 포함할 수 있으며, 호스트가 연산 커맨드를 제공함으로써 메모리 장치(MEM)의 연산 처리 타이밍을 제어할 수 있다. 또한, 전술한 실시예들에 따라 메모리 장치(MEM)는 다수의 뱅크들과 관련하여 뱅크 로컬 IO(BLIO) 및 뱅크 그룹 IO(BGIO)가 배치되는 특징을 가질 수 있고, 연산 처리 과정에서 뱅크 로컬 IO(BLIO)과 뱅크 그룹 IO(BGIO) 사이의 전기적 연결을 차단하기 위한 구성들을 포함할 수 있다. 다양한 실시예들에서, 서버 시스템(800)은 뉴럴 네트워크 서버 시스템에 해당하고, 제1 서버(820_1)는 방대한 양의 뉴럴 네트워크 연산들을 수행함에 있어서 적어도 일부의 연산들이 메모리 장치(MEM)에 의해 수행될 수 있도록 메모리 장치(MEM)에 대한 제어 동작을 수행할 수 있을 것이다.Referring to any one server (eg, the first server 820_1), the first server 820_1 includes a host and one or more memory devices MEM according to the above-described embodiments, and It can perform various types of operation processing and store the processing result. According to an embodiment, each of the memory devices MEM may include a plurality of banks and processing elements arranged corresponding thereto, and the host provides an operation command to control the operation processing timing of the memory device MEM can do. In addition, according to the above-described embodiments, the memory device MEM may have a feature in that the bank local IO (BLIO) and the bank group IO (BGIO) are arranged in relation to a plurality of banks. Components for blocking electrical connection between the IO (BLIO) and the bank group IO (BGIO) may be included. 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 (10)
적어도 하나의 뱅크 그룹을 포함하고, 각각의 뱅크 그룹은 다수의 뱅크들을 포함하는 메모리 뱅크;
상기 뱅크 그룹에 대응하여 배치되는 제1 프로세싱 소자를 포함하고, 상기 제1 프로세싱 소자는 호스트로부터 제공된 데이터 및 상기 뱅크 그룹으로부터 독출된 데이터 중 적어도 하나를 이용하여 연산 처리를 수행하는 PIM (Processor in Memory) 회로;
상기 뱅크 그룹의 상기 다수의 뱅크들 각각에 대해 배치되는 뱅크 로컬 입출력 라인(IO)과, 상기 뱅크 그룹에 대해 배치되는 뱅크 그룹 입출력 라인(IO) 사이의 전기적 연결을 제어하는 프로세싱 소자 입출력(PEIO) 게이팅 회로; 및
상기 호스트로부터 수신된 커맨드/어드레스에 대한 디코딩 결과에 기반하여, 상기 메모리 뱅크에 대한 메모리 동작이 수행되거나 상기 PIM 회로에 의한 연산 처리가 수행되도록 제어 동작을 수행하는 제어 로직을 구비하고,
상기 제1 프로세싱 소자에 의해 연산 처리가 수행될 때, 상기 PEIO 게이팅 회로는 상기 뱅크 로컬 IO와 상기 뱅크 그룹 IO 사이의 전기적 연결을 차단하는 것을 특징으로 하는 메모리 장치.In the memory device,
A memory bank including at least one bank group, each bank group including a plurality of banks;
A PIM (Processor in Memory) that performs an operation process using at least one of data provided from a host and data read from the bank group, wherein the first processing element is disposed corresponding to the bank group. ) Circuit;
Processing element input/output (PEIO) controlling electrical connection between a bank local input/output line (IO) disposed for each of the plurality of banks of the bank group and a bank group input/output line (IO) disposed for the bank group Gating circuit; And
A control logic for performing a control operation to perform a memory operation for the memory bank or an operation process by the PIM circuit based on a result of decoding the command/address received from the host,
When an operation process is performed by the first processing element, the PEIO gating circuit cuts off an electrical connection between the bank local IO and the bank group IO.
상기 제1 프로세싱 소자는, 상기 호스트로부터의 데이터, 상기 뱅크 그룹에서 독출된 데이터 및 내부의 레지스터에 저장된 데이터 중 적어도 하나를 이용한 연산 처리를 수행하는 것을 특징으로 하는 메모리 장치.The method of claim 1,
Wherein the first processing element performs operation processing using at least one of data from the host, data read from the bank group, and data stored in an internal register.
상기 뱅크 그룹은 제1 뱅크 및 제2 뱅크를 포함하고,
상기 PEIO 게이팅 회로는, 상기 제1 뱅크에 대응하는 제1 뱅크 로컬 IO 에 배치되는 제1 PEIO 게이팅 회로와, 상기 제2 뱅크에 대응하는 제2 뱅크 로컬 IO 에 배치되는 제2 PEIO 게이팅 회로를 포함하며,
상기 제1 프로세싱 소자는, 상기 제1 뱅크 및 상기 제2 뱅크 중 적어도 하나로부터 데이터를 수신하여 상기 연산 처리를 수행하는 것을 특징으로 하는 메모리 장치.The method of claim 1,
The bank group includes a first bank and a second bank,
The PEIO gating circuit includes a first PEIO gating circuit disposed in a first bank local IO corresponding to the first bank, and a second PEIO gating circuit disposed in a second bank local IO corresponding to the second bank. And
Wherein the first processing element receives data from at least one of the first bank and the second bank to perform the operation processing.
상기 제1 프로세싱 소자에 의해 연산 처리가 수행될 때, 상기 제1 및 제2 뱅크 로컬 IO 들과 상기 뱅크 그룹 IO 사이의 전기적 연결이 차단되는 것을 특징으로 하는 메모리 장치. The method of claim 3,
When an operation process is performed by the first processing element, an electrical connection between the first and second bank local IOs and the bank group IO is cut off.
상기 메모리 장치는, 상기 호스트로부터 제공된 적어도 하나의 명령어를 저장하는 명령어 메모리를 더 구비하고,
상기 호스트로부터 상기 연산 처리를 지시하는 커맨드/어드레스가 수신될 때, 상기 PIM 회로는 상기 명령어 메모리로부터 독출된 명령어에 대응하는 연산 처리를 수행하는 것을 특징으로 하는 메모리 장치.The method of claim 1,
The memory device further includes a command memory for storing at least one command provided from the host,
And when a command/address instructing the arithmetic process is received from the host, the PIM circuit performs arithmetic processing corresponding to the command read out from the command memory.
상기 명령어에 대한 저장 및 독출을 제어하고, 상기 연산 처리에 관련하여 상기 제1 프로세싱 소자를 제어하기 위한 제어 신호들을 생성하는 프로세싱 소자(PE) 제어기를 포함하는 것을 특징으로 하는 메모리 장치.The method of claim 5, wherein the PIM circuit,
And a processing element (PE) controller for controlling storage and reading of the instruction and generating control signals for controlling the first processing element in connection with the operation processing.
상기 뱅크 로컬 IO를 통해 전달되는 데이터와 상기 뱅크 그룹 IO를 통해 전달되는 데이터를 수신하고, 연산에 이용될 데이터를 출력하는 입력 선택기;
상기 입력 선택기로부터 제공되는 하나 이상의 데이터들에 대한 연산을 수행하는 연산기; 및
상기 연산기에 의한 연산 결과를 저장하는 레지스터 파일을 포함하는 것을 특징으로 하는 메모리 장치.The method of claim 6, wherein the first processing element,
An input selector for receiving data transmitted through the bank local IO and data transmitted through the bank group IO, and outputting data to be used for operation;
An operator that performs an operation on one or more data provided from the input selector; And
And a register file storing the result of the operation by the operator.
뱅크 그룹을 포함하고, 상기 뱅크 그룹은 제1 및 제2 뱅크들을 포함하는 메모리 뱅크;
상기 뱅크 그룹에 대응하여 배치되고, 외부의 호스트와 상기 뱅크 그룹 사이에서의 데이터 전달 경로를 포함하는 뱅크 그룹 입출력 라인(IO);
상기 제1 뱅크에 대응하여 배치되고, 상기 제1 뱅크로 제공되는 데이터 및 상기 제1 뱅크로부터 독출된 데이터의 전달 경로를 포함하는 제1 뱅크 로컬 입출력 라인(IO);
상기 뱅크 그룹 IO 및 상기 제1 뱅크 로컬 IO에 연결되고, 상기 호스트로부터 제공된 데이터 및 상기 제1 뱅크로부터 독출된 데이터 중 적어도 하나를 이용하여 연산 처리를 수행하는 제1 프로세싱 소자; 및
상기 제1 프로세싱 소자에 의한 연산 처리가 수행되는 경우, 상기 호스트로부터의 데이터가 상기 메모리 뱅크로 제공됨이 없이 상기 제1 프로세싱 소자로 제공되도록 데이터 전달 경로를 제어하는 제1 프로세싱 소자 입출력(PEIO) 게이팅 회로를 구비하는 것을 특징으로 하는 메모리 장치.In the memory device,
A memory bank including a bank group, the bank group including first and second banks;
A bank group input/output line (IO) disposed corresponding to the bank group and including a data transmission path between an external host and the bank group;
A first bank local input/output line (IO) disposed corresponding to the first bank and including a transmission path of data provided to the first bank and data read from the first bank;
A first processing element connected to the bank group IO and the first bank local IO and performing an operation process using at least one of data provided from the host and data read from the first bank; And
First processing element input/output (PEIO) gating for controlling a data transfer path so that data from the host is provided to the first processing element without being provided to the memory bank when an operation process is performed by the first processing element A memory device comprising a circuit.
상기 제1 PEIO 게이팅 회로는 상기 뱅크 그룹 IO와 상기 제1 뱅크 로컬 IO 사이에 배치되고,
상기 제1 프로세싱 소자에 의한 연산 처리가 수행되는 경우, 상기 제1 PEIO 게이팅 회로는 상기 뱅크 그룹 IO와 상기 제1 뱅크 로컬 IO 사이의 연결을 차단하는 것을 특징으로 하는 메모리 장치.The method of claim 8,
The first PEIO gating circuit is disposed between the bank group IO and the first bank local IO,
When the operation processing by the first processing element is performed, the first PEIO gating circuit cuts off a connection between the bank group IO and the first bank local IO.
상기 제1 PEIO 게이팅 회로는 상기 뱅크 그룹 IO와 상기 호스트로부터의 데이터를 전달하는 데이터 버스 사이에 배치되고,
상기 제1 프로세싱 소자에 의한 연산 처리가 수행되는 경우, 상기 제1 PEIO 게이팅 회로는 상기 뱅크 그룹 IO와 상기 데이터 버스 사이의 연결을 차단하는 것을 특징으로 하는 메모리 장치.
The method of claim 8,
The first PEIO gating circuit is disposed between the bank group IO and a data bus transferring data from the host,
And the first PEIO gating circuit cuts off a connection between the bank group IO and the data bus when operation processing is performed by the first processing element.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/810,344 US11094371B2 (en) | 2019-03-11 | 2020-03-05 | Memory device for processing operation and method of operating the same |
CN202010165077.XA CN111694514B (en) | 2019-03-11 | 2020-03-11 | Memory device for processing operations and method of operating the same |
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 |
---|---|
KR20200108768A true KR20200108768A (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 After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
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 |
Country Status (2)
Country | Link |
---|---|
KR (4) | KR20200108768A (en) |
SG (3) | SG10202002213RA (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230014614A (en) * | 2021-07-21 | 2023-01-30 | 고려대학교 산학협력단 | Memory device performing in-memory operation and method thereof |
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 (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11537323B2 (en) | 2020-01-07 | 2022-12-27 | SK Hynix Inc. | Processing-in-memory (PIM) device |
US11908541B2 (en) | 2020-01-07 | 2024-02-20 | SK Hynix Inc. | Processing-in-memory (PIM) systems |
TW202141290A (en) | 2020-01-07 | 2021-11-01 | 韓商愛思開海力士有限公司 | Processing-in-memory (pim) system and operating methods of the pim system |
US11281583B1 (en) | 2020-09-24 | 2022-03-22 | Hughes Network Systems, Llc | Unified memory management for a multiple processor system |
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 |
KR20230034634A (en) | 2021-09-03 | 2023-03-10 | 에스케이하이닉스 주식회사 | Memory system and operating method thereof |
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 not_active Application Discontinuation
- 2019-12-06 KR KR1020190161674A patent/KR20200108773A/en unknown
-
2020
- 2020-02-04 KR KR1020200013303A patent/KR20200108774A/en unknown
- 2020-03-11 SG SG10202002213RA patent/SG10202002213RA/en unknown
- 2020-03-11 SG SG10202002231WA patent/SG10202002231WA/en unknown
- 2020-03-11 SG SG10202002232UA patent/SG10202002232UA/en unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230014614A (en) * | 2021-07-21 | 2023-01-30 | 고려대학교 산학협력단 | Memory device performing in-memory operation and method thereof |
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 |
---|---|
KR20200108773A (en) | 2020-09-21 |
KR20200108774A (en) | 2020-09-21 |
SG10202002231WA (en) | 2020-10-29 |
TW202044043A (en) | 2020-12-01 |
TW202111540A (en) | 2021-03-16 |
KR20200108772A (en) | 2020-09-21 |
SG10202002213RA (en) | 2020-10-29 |
SG10202002232UA (en) | 2020-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111694514B (en) | Memory device for processing operations and method of operating the same | |
KR20200108768A (en) | Memory Device performing calculation process and Operation Method thereof | |
US11482278B2 (en) | Method of performing internal processing operation of memory device | |
US11416178B2 (en) | Memory device performing parallel calculation processing, operating method thereof, and operating method of memory controller controlling the memory device | |
US10083722B2 (en) | Memory device for performing internal process and operating method thereof | |
US12106107B2 (en) | Memory device for processing operation, data processing system including the same, and method of operating the memory device | |
KR102152281B1 (en) | Apparatus and method for simultaneously accessing multiple partitions of nonvolatile memory | |
US12099455B2 (en) | Memory device with internal processing interface | |
CN114153373A (en) | Memory system for performing data operation in memory device and method of operating the same | |
US20190042162A1 (en) | Back-end memory channel that resides between first and second dimm slots and applications thereof | |
US20200293452A1 (en) | Memory device and method including circular instruction memory queue | |
US9176906B2 (en) | Memory controller and memory system including the same | |
EP4375840A1 (en) | Memory controller, electronic system including the same and method of controlling memory access | |
TWI757300B (en) | Memory device for performing internal process and operating method thereof | |
KR102345539B1 (en) | Memory Device performing internal process and Operating Method thereof | |
US11620088B2 (en) | Dual speed memory | |
US11762582B2 (en) | Background operations in memory | |
US20190096459A1 (en) | Memory devices for performing multiple write operations and operating methods thereof | |
TWI856072B (en) | Memory device, data processing system, and method of operating memory device | |
US12056371B2 (en) | Memory device having reduced power noise in refresh operation and operating method thereof | |
US11531490B2 (en) | Data transfer in port switch memory | |
KR20230082529A (en) | Memory device reducing power noise in refresh operation and Operating Method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |