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 PDF

Info

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
Application number
KR1020190161674A
Other languages
Korean (ko)
Inventor
이석한
강신행
김남승
오성일
유학수
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to CN202010147089.XA priority Critical patent/CN111679785A/en
Priority to DE102020106356.3A priority patent/DE102020106356A1/en
Priority to US16/814,462 priority patent/US11663008B2/en
Priority to TW109107967A priority patent/TW202044043A/en
Priority to SG10202002231WA priority patent/SG10202002231WA/en
Publication of KR20200108773A publication Critical patent/KR20200108773A/en
Priority to US18/194,174 priority patent/US20230236836A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7864Architectures of general purpose stored program computers comprising a single central processing unit with memory on more than one IC chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing

Abstract

Disclosed are a memory device for performing operation processing to improve operation efficiency and performance in operation processing that uses a PIM circuit in the memory device, and a data processing system including the same. According to an aspect of the technical idea of the present disclosure, the memory device comprises: a memory bank including one or more banks, wherein each bank includes memory cells; a PIM circuit including a command memory for performing operation processing by using at least one of data provided from a host and data read from the memory bank, and storing at least one command provided from the host; and a control logic that decodes a command/address received from the host and controls a memory operation for the memory bank based on a decoding result or performs a control operation so that the PIM circuit performs operation processing, wherein the counting value of a program counter indicating the position of the command memory is adjusted as the command/address instructs the operation processing.

Description

연산 처리를 수행하는 메모리 장치, 이를 포함하는 데이터 처리 시스템 및 메모리 장치의 동작방법{Memory Device performing calculation process, Data Processing System having the same and Operation Method of Memory Device}A memory device performing calculation processing, a data processing system including the same, and an operating method of the memory device

본 개시의 기술적 사상은 메모리 장치에 관한 것으로서, 상세하게는 연산 처리를 수행하는 메모리 장치, 이를 포함하는 데이터 처리 시스템 및 메모리 장치의 동작방법에 관한 것이다.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 memory system 10 may include a memory controller 100 and a memory device 200. The memory controller 100 may include a memory interface 110 and an address map 120, and provide various signals to the memory device 200 through the memory interface 110 to control memory operations such as writing and reading. can do. For example, the memory controller 100 may provide a command CMD and an address ADD to the memory device 200 to access the data DATA of the memory device 200. The command CMD may include a write command WR for requesting data write and a read command RD for requesting data read.

메모리 컨트롤러(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 memory controller 100 may access the memory device 200 according to a request from the host HOST, and the memory interface 110 may provide an interface with the memory device 200. The memory controller 100 may communicate with a host using various protocols, for example, the memory controller 100 may be configured with PCI-E (Peripheral Component Interconnect-Express), ATA (Advanced Technology Attachment), SATA (Serial ATA), and PATA. It is possible to communicate with the host using an interface protocol such as (Parallel ATA) or serial attached SCSI (SAS). In addition, various other interface protocols such as USB (Universal Serial Bus), MMC (Multi-Media Card), ESDI (Enhanced Small Disk Interface), or IDE (Integrated Drive Electronics) are applied to the protocol between the host and the memory controller 100. I can. Alternatively, according to exemplary embodiments, the memory controller 100 may correspond to a host, or the memory controller 100 may correspond to a configuration included in the host.

메모리 장치(200)는 메모리 뱅크(210), PIM (Processor in Memory) 회로(220) 및 제어 로직(230)을 포함할 수 있으며, 제어 로직(230)은 커맨드 디코더(231)를 포함할 수 있다. 또한, 메모리 뱅크(210)는 다수 개의 뱅크들(BANK 1 ~ BANK N)을 포함할 수 있으며, 뱅크들(BANK 1 ~ BANK N) 각각은 다수의 메모리 셀들(또는, 메모리 셀들을 포함하는 셀 어레이)을 포함할 수 있다. 뱅크는 다양하게 정의될 수 있으며, 일 예로서 메모리 셀들을 포함하는 구성으로 정의될 수 있고, 또는 메모리 셀들에 함께 하나 이상의 주변 회로들을 포함하는 구성으로 정의될 수도 있을 것이다. The memory device 200 may include a memory bank 210, a processor in memory (PIM) circuit 220 and a control logic 230, and the control logic 230 may include a command decoder 231. . Further, the memory bank 210 may include a plurality of banks BANK 1 to BANK N, and each of the banks BANK 1 to BANK N is a plurality of memory cells (or a cell array including memory cells). ) Can be included. The bank may be defined in various ways, and as an example, may be defined as a configuration including memory cells, or may be defined as a configuration including one or more peripheral circuits together with the memory cells.

메모리 컨트롤러(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 memory controller 100, and memory cells in the bank may be selected. In addition, the command decoder 231 may perform a decoding operation on the command/address (CMD/ADD) from the memory controller 100, and the control logic 230 may perform a memory operation according to the decoding result. An internal control operation for 200 may be performed.

한편, 메모리 장치(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 memory device 200 may include 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), etc. It may be a dynamic random access memory (DRAM). However, embodiments of the present invention need not be limited thereto, and as an example, the memory device 200A includes flash memory, magnetic RAM (MRAM), ferroelectric RAM (FeRAM), phase change RAM (PRAM), and ReRAM. It can be implemented with nonvolatile memory such as (Resistive RAM).

또한, 메모리 장치(200)는 하나의 반도체 칩에 해당하거나, 또는 독립적인 인터페이스를 갖는 다수의 채널들을 포함하는 메모리 장치에서 하나의 채널에 상응하는 구성일 수도 있다. 또는, 메모리 장치(200)는 메모리 모듈에 상응하는 구성일 수 있으며, 또는 메모리 모듈이 다수의 메모리 칩들을 포함하고 도 1의 메모리 장치(200)는 모듈 보드 상에 장착되는 하나의 메모리 칩에 해당할 수도 있다.Also, the memory device 200 may correspond to one semiconductor chip, or may have a configuration corresponding to one channel in a memory device including a plurality of channels having independent interfaces. Alternatively, the memory device 200 may have a configuration corresponding to a memory module, or the memory module includes a plurality of memory chips, and the memory device 200 of FIG. 1 corresponds to one memory chip mounted on a module board. You may.

이하에서는, 본 발명의 예시적인 실시예들에 따라, 메모리 장치(200)의 PIM 회로(220)가 연산 처리를 수행하는 일 예가 설명된다. 다양한 종류의 연산 처리 동작이 메모리 장치(200) 내에서 수행될 수 있으며, 일 예로서 인공 지능과 관련하여 뉴럴 네트워크 연산들 중 적어도 일부가 메모리 장치(200) 내에서 수행될 수 있다. 예컨대, 호스트(HOST)는 뉴럴 네트워크 연산들 중 적어도 일부가 메모리 장치(200)에 의해 수행될 수 있도록, 메모리 컨트롤러(100)를 통해 메모리 장치(200)를 제어할 수 있을 것이다. 또한, 이하의 실시예에서는 메모리 컨트롤러(100)가 메모리 장치(200)를 제어하는 것으로 설명될 것이나, 본 발명의 실시예들은 이에 국한될 필요가 없다. 예컨대, 메모리 컨트롤러(100)는 호스트(HOST) 내에 구비되는 구성에 해당하고, 호스트(HOST)가 메모리 장치(200)를 제어하는 것으로 설명되어도 무방할 것이다.Hereinafter, an example in which the PIM circuit 220 of the memory device 200 performs arithmetic processing according to exemplary embodiments of the present invention will be described. Various types of arithmetic processing operations may be performed in the memory device 200, and as an example, at least some of neural network operations related to artificial intelligence may be performed in the memory device 200. For example, the host HOST may control the memory device 200 through the memory controller 100 so that at least some of the neural network operations may be performed by the memory device 200. Further, in the following embodiments, the memory controller 100 will be described as controlling the memory device 200, but embodiments of the present invention need not be limited thereto. For example, the memory controller 100 corresponds to a configuration included in the host HOST, and it may be described that the host HOST controls the memory device 200.

메모리 컨트롤러(100)는 데이터를 이용한 연산 처리를 수행하기 위하여 하나 이상의 명령어들(Inst)을 메모리 장치(200)로 전송할 수 있다. 메모리 장치(200)는 명령어(Inst)들을 수신하고 이를 내부에 저장할 수 있다. 일 예로서, PIM 회로(220)는 하나 이상의 프로세싱 소자들(221)과, 명령어(Inst)들을 저장하기 위한 명령어 메모리(미도시)를 포함할 수 있으며, 이후 메모리 컨트롤러(100)로부터 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)가 수신될 때, 프로세싱 소자들(221)은 명령어 메모리로부터 독출된 명령어(Inst)에 대응하는 연산을 수행할 수 있다. The memory controller 100 may transmit one or more instructions Inst to the memory device 200 in order to perform operation processing using data. The memory device 200 may receive commands Inst and store them therein. As an example, the PIM circuit 220 may include one or more processing elements 221 and an instruction memory (not shown) for storing instructions Inst, and then processing an operation from the memory controller 100. When the indicated command/address CMD/ADD is received, the processing elements 221 may perform an operation corresponding to the instruction Inst read from the instruction memory.

본 발명의 예시적인 실시예들에 따라, 메모리 컨트롤러(100)는 다수의 연산 처리들이 일련하게 수행될 수 있도록 다수의 명령어(Inst)들을 메모리 장치(200)로 전송할 수 있다. 일 예로서, 실제 연산 처리가 수행되기 전에 다수의 명령어(Inst)들을 명령어 메모리(미도시)에 로딩하기 위한 모드(예컨대, 명령어 로딩 모드)가 수행될 수 있으며, 명령어 로딩 모드 동안 다수의 명령어(Inst)들이 메모리 장치(200)의 명령어 메모리에 로딩될 수 있다.According to exemplary embodiments of the present invention, the memory controller 100 may transmit a plurality of instructions Inst to the memory device 200 so that a plurality of operation processes can be sequentially performed. As an example, a mode (eg, instruction loading mode) for loading a plurality of instructions (Inst) into an instruction memory (not shown) before actual operation processing is performed may be performed, and during the instruction loading mode, a plurality of instructions ( Inst) may be loaded into the command memory of the memory device 200.

한편, 메모리 컨트롤러(100)는 노멀 메모리 동작에 관련된 커맨드들을 이용하여 메모리 장치(200)가 연산 처리를 수행하도록 제어 동작을 수행할 수 있다. 예컨대, 메모리 컨트롤러(100)로부터 제공되는 어드레스(ADD)의 비트 값은 다수의 범위들로 분류될 수 있으며, 일 예로서 그 비트 값에 따라 상기 어드레스(ADD)는 메모리 동작을 지시하는 제1 범위에 속하거나 또는 연산 처리를 지시하는 제2 범위에 속할 수 있다. 메모리 컨트롤러(100)는 어드레스 맵(120)을 관리할 수 있으며, 어드레스 맵(120)은 제1 범위에 속하는 어드레스들과 제2 범위에 속하는 어드레스들을 관리할 수 있다. 또한, 어드레스 맵(120)에 포함되는 어드레스들의 정보는 메모리 컨트롤러(100) 내의 소정의 메모리에 저장될 수 있다. Meanwhile, the memory controller 100 may perform a control operation so that the memory device 200 performs arithmetic processing by using commands related to the normal memory operation. For example, the bit value of the address ADD provided from the memory controller 100 may be classified into a plurality of ranges. As an example, the address ADD is a first range indicating a memory operation according to the bit value. It may belong to or may belong to a second range instructing operation processing. The memory controller 100 may manage the address map 120, and the address map 120 may manage addresses belonging to a first range and addresses belonging to a second range. Also, information on addresses included in the address map 120 may be stored in a predetermined memory in the memory controller 100.

메모리 장치(200)는 메모리 컨트롤러(100)로부터의 커맨드/어드레스(CMD/ADD)에 응답하여 메모리 동작 또는 연산 처리 동작을 선택적으로 수행할 수 있다. 일 예로서, 메모리 장치(200)는 메모리 컨트롤러(100)로부터의 데이터 기록또는 독출 커맨드(WR/RD)에 응답하여 연산 처리를 수행할 수 있다.The memory device 200 may selectively perform a memory operation or an operation processing operation in response to a command/address CMD/ADD from the memory controller 100. As an example, the memory device 200 may perform operation processing in response to a data write or read command WR/RD from the memory controller 100.

일 동작 예로서, 메모리 컨트롤러(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 memory controller 100 may transmit an address ADD belonging to the first range to the memory device 200 together with a data write or read command WR/RD. In this case, the command decoder 231 of the memory device 200 performs a decoding operation on the received command/address CMD/ADD, and as the value of the address ADD falls within the first range, the memory bank A memory operation of writing data DATA or reading data DATA at a location indicated by the address ADD of 210 may be performed. On the other hand, as the value of the address ADD falls within the second range, the PIM circuit 220 enters the arithmetic processing mode and performs arithmetic processing based on the result of decoding the command/address (CMD/ADD). I can. As an example, the processing elements 221 of the PIM circuit 220 perform arithmetic processing using data DATA provided from the memory controller 100, or the data DATA read from the memory cell array 210 ) Can be used to perform arithmetic processing.

또한, 일 예로서, 어드레스(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 circuit 220 reads data DATA through information indicating the location of the memory bank 210 at the address ADD, and performs an operation processing using the read data DATA. I can.

상기와 같은 본 발명의 실시예에 따르면, 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 PIM circuit 220 is not performed by the memory device 200 itself regardless of the host, but the command/address (CMD/ ADD), it is possible to prevent a conflict between a memory operation request from the memory controller 100 and an operation processing operation of the memory device 200 itself. For example, a row of the memory bank 210 may be activated for memory operation or operation processing, and the memory controller 100 may determine the timing of providing commands/addresses (CMD/ADD) for memory operation and operation processing. Also, a location of a bank, a location of an active row, and a location of an accessed column may be determined by the memory controller 100.

또한 본 발명의 실시예에 따르면, 메모리 장치(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 memory controller 100 while the memory device 200 itself performs an operation process, the memory The operation may be delayed, or the memory operation may be delayed for a time required to stop the operation processing, but according to embodiments of the present invention, the memory controller 100 or a host including the same may occur. Since the operation processing timing of the memory device 200 can be controlled, performance degradation due to the above-described collision can be prevented.

한편, 도 1에 도시된 실시예에서 프로세싱 소자들(221)은 다양한 개수의 프로세싱 소자를 포함할 수 있다. 일 예로서, 각각의 프로세싱 소자가 하나의 뱅크에 대응하여 배치될 수도 있으며, 또는 각각의 프로세싱 소자가 두 개 이상의 뱅크들에 대응하여 배치될 수도 있을 것이다. Meanwhile, in the embodiment shown in FIG. 1, the processing elements 221 may include a variety of processing elements. As an example, each processing element may be disposed corresponding to one bank, or each processing element may be disposed corresponding to two or more banks.

한편, 연산 처리에 수행될 데이터(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 memory device 200 may be implemented so that the location of data to be used for operation processing is indicated based on a combination of information stored in the instruction Inst and information stored in the address ADD.

도 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 PIM circuit 220 may include processing elements 221, a processing controller 222, a program counter 223, and an instruction memory 224. As an example, the processing elements 221 may include a plurality of processing elements PE corresponding to a plurality of banks BANK 1 to BANK N, and an instruction Inst loaded in the instruction memory 224 It is possible to perform arithmetic processing corresponding to them. In addition, each of the plurality of processing elements PE may include a register (not shown) therein, and an operand corresponding to an operation processing target and/or an operation result may be temporarily stored in the register. I can.

한편, 프로세싱 제어기(222)는 메모리 장치(200) 내의 연산 처리에 관련된 전반적인 동작을 제어할 수 있다. 프로세싱 제어기(222)는 메모리 컨트롤러(100)로부터 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)가 수신됨에 따라 명령어 메모리(224)에 저장된 명령어(Inst)에 대한 독출 동작을 수행할 수 있고, 독출된 명령어(Inst)에 대응하는 연산 처리가 수행될 수 있도록 프로세싱 소자(PE)들을 제어할 수 있다. Meanwhile, the processing controller 222 may control an overall operation related to operation processing in the memory device 200. The processing controller 222 may perform a read operation on the instruction Inst stored in the instruction memory 224 as a command/address (CMD/ADD) instructing an operation process is received from the memory controller 100, The processing elements PE may be controlled so that an operation process corresponding to the read instruction Inst is performed.

한편, 명령어 메모리(224)에는 다수 개의 명령어(Inst 0 ~ Inst n-1)들이 저장되고 순차적으로 독출될 수 있다. 일 동작 예로서, 프로그램 카운터(223)는 프로그램 카운팅 동작을 수행하여 명령어 메모리(224)에서 독출될 명령어를 지시할 수 있다. 예컨대, 메모리 컨트롤러(100)로부터 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)를 수신함에 응답하여, 프로그램 카운터(223)의 현재 카운팅 값에 대응하는 위치의 명령어가 독출되고, 카운팅 동작에 기반하여 카운팅 값을 증가시킬 수 있다. 또는, 다양한 실시예들에 따라, 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)에 응답하여 프로그램 카운터(223)의 현재 카운팅 값을 증가시키고, 증가된 카운팅 값에 대응하는 위치로부터 명령어가 독출될 수도 있을 것이다.Meanwhile, a plurality of instructions Inst 0 to Inst n-1 may be stored in the instruction memory 224 and read sequentially. As an example of operation, the program counter 223 may indicate an instruction to be read from the instruction memory 224 by performing a program counting operation. For example, in response to receiving a command/address (CMD/ADD) instructing operation processing from the memory controller 100, a command at a position corresponding to the current counting value of the program counter 223 is read out, based on the counting operation. Thus, you can increase the counting value. Alternatively, according to various embodiments, the current counting value of the program counter 223 is increased in response to a command/address (CMD/ADD) instructing an operation process, and a command is read from a position corresponding to the increased counting value. It could be.

명령어 메모리(224)에 명령어(Inst 0 ~ Inst n-1)들을 저장함에 있어서 다양한 방식들이 적용될 수 있다. 일 예로서, 명령어 메모리(224)에 어드레스가 할당되고, 할당된 어드레스가 명령어 로딩 과정에서 메모리 컨트롤러(100)에 의해 제공될 수 있다. 또한, 순환 큐(circular queue) 기반의 저장 방식을 적용하여, 명령어를 오버라이트(overwrite)함으로써 명령어 메모리(224)의 사이즈를 감소시킬 수 있다. Various methods can be applied to storing the instructions Inst 0 to Inst n-1 in the instruction memory 224. As an example, an address may be allocated to the instruction memory 224 and the allocated address may be provided by the memory controller 100 during an instruction loading process. In addition, by applying a storage method based on a circular queue, the size of the instruction memory 224 may be reduced by overwriting the instruction.

한편, 프로세싱 제어기(222)는 디코딩된 커맨드/어드레스(CMD/ADD)에 기반하여 연산 처리에 수행될 데이터(DATA)의 이동 경로를 제어할 수 있다. 일 예로서, 메모리 장치(200) 내에는 메모리 뱅크(210)로 제공되거나 메모리 뱅크(210)로부터 독출된 데이터(DATA)의 이동 경로를 제어하는 회로들(미도시)이 포함될 수 있고, 연산에 이용될 데이터(DATA)가 프로세싱 소자(PE)들로 제공될 수 있도록 상기 회로들이 제어될 수 있다. 다양한 실시예들에 따라, 프로세싱 제어기(222)의 제어에 기반하거나 제어 로직(230)의 제어에 기반하여 호스트(HOST)로부터의 데이터(DATA)가 프로세싱 소자(PE)들로 제공될 수 있으며, 또는 메모리 뱅크(210)의 어드레스(ADD)가 지시하는 위치로부터 데이터(DATA)가 독출되어 프로세싱 소자(PE)들로 제공될 수 있다.Meanwhile, the processing controller 222 may control a movement path of the data DATA to be performed in an operation process based on the decoded command/address CMD/ADD. As an example, circuits (not shown) for controlling a movement path of data DATA provided to or read from the memory bank 210 may be included in the memory device 200. The circuits may be controlled so that the data DATA to be used may be provided to the processing elements PE. According to various embodiments, data DATA from the host HOST may be provided to the processing elements PE based on the control of the processing controller 222 or based on the control of the control logic 230, Alternatively, data DATA may be read from a location indicated by the address ADD of the memory bank 210 and provided to the processing elements PE.

도 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 memory device 200 itself performs arithmetic processing, address information needs to be stored in advance in the memory device 200 in order to perform arithmetic processing according to a plurality of instructions, but implementation of the present invention According to examples, since the memory device 200 does not need to store address information for performing an operation process in advance, it is possible to reduce the size of a storage space required for an operation process.

한편, 상기한 실시예들에 따르면, 호스트로부터 제공된 명령어(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 commands Inst 0 to Inst n-1 may be stored in the command memory 224 regardless of the order of the commands Inst 0 to Inst n-1 provided from the host. . For example, when the instructions (Inst 0 to Inst n-1) perform the same type of operation, the operand to be actually performed may be indicated by an address indicated by the host, so the executed instructions (Inst 0 Regardless of the order of ~ Inst n-1), the operation processing required by the host is performed, and an operation result may be generated.

도 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 data processing system 300 may include an application processor 310 and a memory device 320, and the application processor 310 is a memory communicating with the memory device 320. It may include a control module 311. As an example, the application processor 310 and the memory device 320 may configure a memory system.

한편, 어플리케이션 프로세서(310)는 도 1에서의 호스트의 기능을 수행할 수 있으며, 전술한 실시예들에 따라 메모리 동작에 관련된 제1 어드레스들과 연산처리에 관련된 제2 어드레스들을 관리하는 어드레스 맵(312)을 포함할 수 있다. 도 3에는 어드레스 맵(312)이 메모리 컨트롤 모듈(311)의 외부에 구비된 것으로 도시되었으나, 전술한 실시예에서와 같이 어드레스 맵(312)은 메모리 컨트롤 모듈(311)에 구비되어도 무방할 것이다.Meanwhile, the application processor 310 may perform the function of a host in FIG. 1, and according to the above-described embodiments, an address map for managing first addresses related to memory operation and second addresses related to operation processing ( 312) may be included. 3 shows that the address map 312 is provided outside the memory control module 311, the address map 312 may be provided in the memory control module 311 as in the above-described embodiment.

한편, 어플리케이션 프로세서(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 application processor 310 may be implemented as a System on Chip (SoC) including a system bus (not shown). As a standard standard for a system bus, the AMBA (Advanced Microcontroller Bus Architecture) protocol of ARM (Advanced RISC Machine) can be applied. The bus type of the AMBA protocol may include Advanced High-Performance Bus (AHB), Advanced Peripheral Bus (APB), Advanced eXtensible Interface (AXI), AXI4, AXI Coherency Extensions (ACE), and the like. In addition, other types of protocols such as uNetwork of Sonics Inc., CoreConnect of IBM, and Open Core Protocol of OCP-IP may be applied.

메모리 컨트롤 모듈(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 memory control module 310 may perform the function of a memory controller in the above-described embodiment, and control a memory operation by transmitting a command/address (CMD/ADD) to the memory device 320 or control a memory operation. ), you can control the operation processing within. According to the above-described embodiments, the memory device 300 may include a memory bank 321, a processor in memory (PIM) circuit 322, and a control logic 323, and the PIM circuit 322 is a processing element. The elements 322_1 are included, and the control logic 323 may include a command decoder 323_1. The application processor 310 may provide a plurality of instructions (Inst) to the memory device 320 for processing operations inside the memory device 320, and may be stored in an instruction memory (not shown) inside the memory device 320. The plurality of instructions Inst may be stored. In addition, when a command/address (CMD/ADD) instructing operation processing is provided to the memory device 320, the processing elements 322_1 may include data DATA from the application processor 310 and/or a memory bank ( Operation processing may be performed using the data DATA read from the 321.

도 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 data processing system 400 may include a host 410 and a memory device 420. Although not shown in FIG. 4, the host 410 is a memory controller in the above-described embodiments. May include, and may further include an address map 411. As an example, the host 410 may manage an address range for instructing a memory operation and an address range for instructing an operation processing operation as row addresses. Accordingly, the address map 411 may be referred to as a row address map. I can. The address map 411 may be stored in a memory (not shown) provided in the host 410.

전술한 실시예에서와 같이, 메모리 동작을 지시하기 위한 제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 address map 411, and the row addresses of the second range are different from the address map 411. It may be stored in one area (eg, PE area).

호스트(410)는 다수의 버스(BUS)들을 통해 메모리 장치(420)와 통신할 수 있으며, 일 예로서 커맨드/어드레스 버스(CA BUS), 메모리 동작을 위한 데이터 버스(DQ BUS for BANK) 및 연산 처리 동작을 위한 데이터 버스(DQ BUS for PE)를 포함할 수 있다. 메모리 장치(420)는 메모리 뱅크(421), 커맨드 디코더(또는, 제어 로직(422)), 프로세싱 소자들(423), 프로세싱 제어기(424), 프로그램 카운터(425) 및 명령어 메모리(426)를 포함할 수 있다. 도 4에 도시된 각종 구성 요소들 중 일부는 전술한 실시예에서의 PIM 회로를 구성할 수 있다. The host 410 may communicate with the memory device 420 through a plurality of buses, and as an example, a command/address bus (CA BUS), a data bus for memory operation (DQ BUS for BANK), and operation It may include a data bus (DQ BUS for PE) for processing operation. The memory device 420 includes a memory bank 421, a command decoder (or control logic 422), processing elements 423, a processing controller 424, a program counter 425, and an instruction memory 426. can do. Some of the various components shown in FIG. 4 may constitute the PIM circuit in the above-described embodiment.

커맨드 디코더(422)는 커맨드/어드레스(CMD/ADD)를 수신하고, 커맨드/어드레스(CMD/ADD)에 대한 디코딩 동작을 수행할 수 있다. 수신된 어드레스(ADD)가 뱅크 영역에 포함되는 제1 범위의 어드레스에 해당하는 경우, 메모리 장치(420)는 커맨드/어드레스(CMD/ADD)의 디코딩 결과에 기반하여 데이터(DATA)를 메모리 뱅크(421)에서 선택된 뱅크 내에 저장할 수 있다. The command decoder 422 may receive the command/address CMD/ADD and perform a decoding operation on the command/address CMD/ADD. When the received address ADD corresponds to an address in the first range included in the bank area, the memory device 420 stores the data DATA in the memory bank based on the decoding result of the command/address CMD/ADD. 421) can be stored in the selected bank.

한편, 수신된 어드레스(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 command decoder 422 may transmit the command/address CMD/ADD to the processing controller 424. According to various embodiments, the command decoder 422 transfers the received command/address (CMD/ADD) to the processing controller 424, or transmits a decoding result for the command/address (CMD/ADD) to the processing controller ( 424).

프로세싱 제어기(424)는 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)를 수신함에 따라, 프로그램 카운터(425)에 의해 지시되는 영역에 저장된 명령어(Inst)를 독출함과 함께, 프로그램 카운터(425)의 카운팅 동작을 제어할 수 있다. 또한, 프로세싱 제어기(424)는 커맨드/어드레스(CMD/ADD)와 명령어(Inst)에 기반하여 연산을 수행할 프로세싱 소자(PE)를 선택하고 이를 제어할 수 있다. 또한, 연산 처리를 위한 데이터 버스(DQ BUS for PE)를 통해 수신되는 데이터(DATA)가 선택된 프로세싱 소자(PE)로 제공되어 연산 처리가 수행될 수 있다. As the processing controller 424 receives the command/address (CMD/ADD) instructing the operation process, the processing controller 424 reads the instruction Inst stored in the area indicated by the program counter 425 and reads the program counter 425 ) Counting operation can be controlled. Also, the processing controller 424 may select and control the processing element PE to perform the operation based on the command/address CMD/ADD and the instruction Inst. In addition, data DATA received through the data bus DQ BUS for PE for arithmetic processing is provided to the selected processing element PE to perform arithmetic processing.

또는, 수신된 어드레스(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 processing controller 424 and/or the command decoder 422 may determine the received address ADD. The control operation may be performed so that the data DATA read out from the memory bank 421 is provided to the selected processing element PE through an internal bus. The processing element PE may store a result of operation processing using data DATA provided from the host HOST or read from the memory bank 421 in a register (not shown) therein.

도 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 HBM 500 may have an increased bandwidth by including a plurality of channels having independent interfaces from each other. 5, the HBM 500 may include a plurality of dies, and as an example, may include a buffer die (or logic die 510) and one or more core dies 520 stacked thereon. have. In the example of FIG. 5, an example in which first to fourth core dies are provided in the HBM 500 is illustrated, but the number of the core dies 520 may be variously changed.

또한, 코어 다이들(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 HBM 500 has eight channels (CH1). An example with ~CH8) is shown. For example, a first core die includes a first channel and a third channel (CH1, CH3), a second core die includes a second channel and a fourth channel (CH2, CH4), and the third core die It includes five channels and seventh channels CH5 and CH7, and the fourth core die may include sixth and eighth channels CH6 and CH8.

버퍼 다이(510)는 호스트(또는, 메모리 컨트롤러)와 통신하는 인터페이스 회로(511)를 포함할 수 있으며, 인터페이스 회로(511)를 통해 호스트로부터 커맨드/어드레스 및 데이터를 수신할 수 있다. 호스트는 채널에 대응하여 배치되는 버스들을 통해 커맨드/어드레스 및 데이터를 전송할 수 있으며, 채널 별로 버스가 구분되도록 형성되거나, 일부의 버스는 적어도 두 개의 채널들에 공유될 수도 있을 것이다. 인터페이스 회로(511)는 호스트가 메모리 동작 또는 연산 처리를 요청하는 채널로 커맨드/어드레스 및 데이터를 전달할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 코어 다이들(520) 각각 또는 채널들 각각은 PIM 회로(521)와 커맨드 디코더(522)를 포함할 수 있으며, 커맨드 디코더(522)는 수신된 커맨드/어드레스에 대한 디코딩 동작을 제어할 수 있다.The buffer die 510 may include an interface circuit 511 that communicates with a host (or a memory controller), and may receive commands/addresses and data from the host through the interface circuit 511. The host may transmit commands/addresses and data through buses arranged corresponding to the channels, and the buses may be divided for each channel, or some buses may be shared among at least two channels. The interface circuit 511 may transmit a command/address and data to a channel for which the host requests memory operation or operation processing. Further, according to an exemplary embodiment of the present invention, each of the core dies 520 or each of the channels may include a PIM circuit 521 and a command decoder 522, and the command decoder 522 is /Can control the decoding operation for the address.

호스트는 다수의 연산들 중 적어도 일부의 연산들이 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 HBM 500, and operation processing may be performed by the PIM circuit 521 of a channel indicated by the host. have. As an example, according to the above-described embodiments, when a received command/address indicates a memory operation, an access operation for data may be performed. On the other hand, when the received command/address instructs an operation process, the PIM circuit 521 may perform an operation process using data from the host and/or data read from a corresponding channel.

일 실시예에 따라, 채널들 각각은 다수 개의 뱅크들을 포함할 수 있고, 각각의 채널의 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 PIM circuit 521 of each channel. As an example, the number of processing elements in each channel may be the same as the number of banks of the channel, or as the number of processing elements is less than the number of banks, one processing element is shared among at least two banks. It could be.

한편, 버퍼 다이(510)는 TSV 영역(512), 물리(PHY) 영역(513) 및 다이렉트 억세스 영역(DA, 514)을 더 포함할 수 있다. 도 5에 도시되지는 않았으나, 데이터의 이동 경로의 제어 등 HBM(500)의 전반적인 동작을 제어하는 프로세서가 버퍼 다이(510)에 더 포함될 수도 있을 것이다.Meanwhile, the buffer die 510 may further include a TSV area 512, a physical (PHY) area 513, and a direct access area DA and 514. Although not shown in FIG. 5, a processor that controls the overall operation of the HBM 500, such as control of a moving path of data, may be further included in the buffer die 510.

TSV 영역(512)은 코어 다이들(520)과의 통신을 위한 TSV가 형성되는 영역이다. 또한, 물리(PHY) 영역(513)은 외부의 호스트와의 통신을 위해 다수의 입출력 회로를 포함할 수 있으며, 일 예로서 물리(PHY) 영역(513)은 호스트와의 통신을 위한 하나 이상의 포트들을 포함할 수 있다. 한편, 다이렉트 억세스 영역(514)은 HBM(500)에 대한 테스트 모드에서 HBM(500)의 외면에 배치되는 도전 수단을 통해 외부의 테스터와 직접 통신하기 위해 배치될 수 있다. The TSV area 512 is an area in which a TSV for communication with the core dies 520 is formed. In addition, the physical (PHY) region 513 may include a plurality of input/output circuits for communication with an external host, and as an example, the physical (PHY) region 513 is one or more ports for communication with the host. Can include. Meanwhile, the direct access area 514 may be disposed to directly communicate with an external tester through a conductive means disposed on the outer surface of the HBM 500 in a test mode for the HBM 500.

도 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 memory device 600 may include a plurality of banks 610_1 to 610_N, and the banks 610_1 to 610_N may be implemented identically to each other. Taking the first bank 610_1 as an example, the first bank 610_1 includes a cell array 611, a row decoder 612, a column decoder 613, a sense amplifier/write driver 614, and a processing element ( 615). That is, each bank may be defined as including memory cells and various peripheral circuits related to a memory operation.

한편, 메모리 장치(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 memory device 600 includes a command decoder 621, a bank controller 622, an address register 623, a processing element controller 631, a PE command queue 632, a PE control register 633, and a data gating unit. It may include 641 and a data buffer 642. In connection with the above-described embodiments, various components shown in FIG. 9 may variously correspond to the components in the above-described embodiment. As an example, the command decoder 621, the bank controller 622, the address register 623, etc. may be a configuration provided in the control logic in the above-described embodiment, and the processing element controller 631 and/or the PE control The register 633 may be a component provided in the PIM circuit in the above-described embodiment. Meanwhile, the PE command queue 632 may have a configuration corresponding to the command memory in the above-described embodiment, and the PE command from the PE command queue 632 may correspond to the command in the above-described embodiments.

로우 디코더(612)는 워드라인(WL)을 통해 제1 뱅크(610_1)의 로우를 선택하고, 칼럼 디코더(613)는 칼럼 선택 라인(CSL)을 통해 제1 뱅크(610_1)의 칼럼을 선택할 수 있다. 또한, 센스앰프/기록 드라이버(614)는 글로벌 입출력 라인(GIO)을 통해 메모리 셀들(611)에 접근하고, 기록 데이터 및 독출 데이터가 센스앰프/기록 드라이버(614)와 데이터 게이팅부(641) 사이에서 전달될 수 있다. The row decoder 612 may select a row of the first bank 610_1 through the word line WL, and the column decoder 613 may select a column of the first bank 610_1 through the column selection line CSL. have. In addition, the sense amplifier/write driver 614 accesses the memory cells 611 through a global input/output line (GIO), and write data and read data are transferred between the sense amplifier/write driver 614 and the data gating unit 641. Can be delivered in.

예시적인 실시예들에 따라, 명령어(또는, 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 memory device 600. In addition, the host may provide various PE control information related to operation control of the processing element 615 to the memory device 600 through the data input/output pad DQ, and the processing element controller 631 is the PE control register 633 The processing element 615 may be controlled based on the information stored in ). In addition, commands stored in the PE command queue 632 may be provided to the processing element 615 based on the control of the processing element controller 631.

전술한 실시예들에 따라, 호스트로부터 제공되는 커맨드/어드레스(CMD/ADD)에 기반하여 커맨드 디코더(621) 및/또는 프로세싱 소자 제어기(631)가 메모리 장치(600)의 전반적인 동작을 제어할 수 있고, 이에 따라 메모리 장치(600)는 노멀 모드 또는 연산 처리 모드에서 동작할 수 있다.According to the above-described embodiments, the command decoder 621 and/or the processing element controller 631 may control the overall operation of the memory device 600 based on the command/address (CMD/ADD) provided from the host. Accordingly, the memory device 600 may operate in a normal mode or an operation processing mode.

도 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 memory device 700, and some of the operations in the host when executing a neural network are ) May be performed by hardware and/or dedicated hardware. On the other hand, at least some of the operations included in the neural network may be performed by the memory device 700 according to embodiments of the present invention. Alternatively, according to various embodiments, all of a plurality of operations included in the neural network may be performed by the memory device 700.

도 11을 참조하면, 메모리 장치(700)는 셀 어레이(710), 프로세싱 소자(711), 프로세싱 제어기(712) 및 명령어 메모리(713)를 포함할 수 있다. 일 예로서, 프로세싱 소자(711), 프로세싱 제어기(712) 및 명령어 메모리(713)는 전술한 실시예들에서의 PIM 회로 내에 포함되는 구성일 수 있다. 또한, 다양한 실시예들에 따라 구성 요소들은 메모리 장치(700) 내의 다양한 위치에 구현될 수 있으며, 일 예로서 메모리 셀 어레이(710)와 프로세싱 소자(711)는 동일한 뱅크에 포함되는 구성일 수 있다.Referring to FIG. 11, the memory device 700 may include a cell array 710, a processing element 711, a processing controller 712, and a command memory 713. As an example, the processing element 711, the processing controller 712, and the instruction memory 713 may be components included in the PIM circuit in the above-described embodiments. In addition, according to various embodiments, components may be implemented in various locations within the memory device 700, and as an example, the memory cell array 710 and the processing element 711 may be included in the same bank. .

뉴럴 네트워크 연산들은 데이터(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 cell array 710 is illustrated, but embodiments of the present invention need not be limited thereto. For example, data DATA may also be stored in the cell array 710 and read from the cell array 710 for calculation, and a weight may be provided from the host.

연산 처리를 위한 커맨드/어드레스가 수신될 때마다 명령어 메모리(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 instruction memory 713 is performed, and the processing element 711 calculates data and weight according to the instruction. You can perform the used operation processing. In addition, the operation result Res_P may be stored in a register in the PIM circuit. As an example, FIG. 11 shows an example in which a register is provided in the processing element 711.

예시적인 실시예들에 따라, 메모리 장치(700)는 다수 개의 뱅크들에 대응하여 다수 개의 프로세싱 소자들을 포함하고, 상기 다수 개의 프로세싱 소자들에 의해 연산 처리가 병렬하게 수행될 수 있다. 일 동작 예로서, 뉴럴 네트워크 연산은 동일한 데이터(DATA)를 서로 다른 다수의 가중치(weight)와 연산하는 동작을 포함할 수 있으며, 다수 개의 뱅크들에 서로 다른 가중치가 각각 저장될 수 있다. 또한, 데이터(DATA)(예컨대, 호스트로부터 제공된 데이터)는 상기한 다수 개의 프로세싱 소자들에 공통하게 제공될 수 있으며, 이에 따라 상기한 다수 개의 프로세싱 소자들은 동일한 데이터(DATA)를 서로 다른 가중치(weight)와 연산하는 동작을 병렬하게 수행할 수 있을 것이다.According to example embodiments, the memory device 700 includes a plurality of processing elements corresponding to a plurality of banks, and arithmetic processing may be performed in parallel by the plurality of processing elements. As an example of operation, the neural network operation may include an operation of calculating the same data DATA with a plurality of different weights, and different weights may be stored in a plurality of banks, respectively. In addition, data (DATA) (for example, data provided from a host) may be provided in common to the plurality of processing elements, and accordingly, the plurality of processing elements described above give the same data (DATA) from different weights. ) And operations can be performed in parallel.

도 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 data processing system 800 includes a host 810 and a memory device 820, and the host 810 includes a memory controller 810 and MC, thereby communicating with the memory device 820. can do. Also, the memory device 820 may include one or more banks 821, a PIM circuit 822, and a multiplexer (MUX) as the path selector 813. In addition, the memory device 820 may further include various components for a memory operation and an operation processing operation, but illustration of the components is omitted for convenience of description.

호스트(810)와 메모리 장치(820) 사이에서의 정보 전송 경로, 그리고 메모리 장치(820) 내부에서의 정보 전송 경로의 일 예를 설명하면 다음과 같다. 경로 선택기(813) 내에는 메모리 장치(820)에 구비되는 다수의 버스들 사이의 연결 관계를 제어하기 위한 스위치들(미도시)이 구비될 수 있으며, 메모리 장치 내의 구성 요소들에 의해 상기 스위치들이 제어될 수 있을 것이다. 일 예로서, 메모리 장치(820) 내의 커맨드 디코더(미도시) 및/또는 PIM 회로(822) 내의 프로세싱 제어기 등의 제어 동작에 기반하여 상기 스위치들이 제어될 수도 있을 것이다.An example of an information transmission path between the host 810 and the memory device 820 and an information transmission path inside the memory device 820 will be described as follows. Switches (not shown) for controlling a connection relationship between a plurality of buses provided in the memory device 820 may be provided in the path selector 813, and the switches may be provided by components in the memory device. It will be able to be controlled. As an example, the switches may be controlled based on a control operation such as a command decoder (not shown) in the memory device 820 and/or a processing controller in the PIM circuit 822.

뱅크(821)에서 독출된 정보는 일반 데이터에 해당하거나 연산 처리 결과에 해당할 수 있고, 또는 전술한 실시예에서의 연산 처리에 이용되는 정보(예컨대, 가중치 정보)에 해당할 수도 있다. 또한, 호스트(810)로부터 제공되는 데이터는 뱅크(821)에 저장될 수 있으며, 또는 연산 처리를 위해 PIM 회로(822)로 직접 제공될 수 있다.The information read from the bank 821 may correspond to general data or a result of operation processing, or may correspond to information (eg, weight information) used for operation processing in the above-described embodiment. In addition, data provided from the host 810 may be stored in the bank 821 or may be directly provided to the PIM circuit 822 for arithmetic processing.

호스트(810)로부터 커맨드/어드레스가 메모리 장치(820)로 제공됨에 따라, 메모리 장치(820) 내에서 커맨드/어드레스에 대한 디코딩 동작이 수행되고, 디코딩 결과에 따라 경로 선택기(813)의 스위치들의 스위칭 상태가 변동될 수 있다. 일 예로서, 커맨드/어드레스가 뱅크(821)에 대한 독출 요청에 해당하는 경우, 뱅크(821)로부터 독출된 데이터는 경로 a를 따라 호스트(810)로 제공될 수 있다. 반면에, 커맨드/어드레스가 뱅크(821)에 저장된 데이터를 이용한 연산 처리 요청에 해당하는 경우에는 뱅크(821)로부터 독출된 데이터는 경로 b를 따라 PIM 회로(822)로 제공될 수 있다.As the command/address is provided from the host 810 to the memory device 820, a decoding operation for the command/address is performed in the memory device 820, and the switches of the path selector 813 are switched according to the decoding result. The state can change. As an example, when the command/address corresponds to a read request for the bank 821, data read from the bank 821 may be provided to the host 810 along the path a. On the other hand, when the command/address corresponds to an operation processing request using data stored in the bank 821, the data read from the bank 821 may be provided to the PIM circuit 822 along the path b.

한편, 커맨드/어드레스가 뱅크(821)에 대한 기록 요청에 해당하는 경우, 호스트(810)로부터의 데이터는 경로 c를 따라 뱅크(821)로 제공될 수 있다. 반면에, 커맨드/어드레스가 호스트(810)로부터의 데이터를 이용한 연산 처리 요청에 해당하는 경우에는, 호스트(810)로부터의 데이터는 경로 d를 따라 PIM 회로(822)로 제공될 수 있다.Meanwhile, when the command/address corresponds to a write request for the bank 821, data from the host 810 may be provided to the bank 821 along the path c. On the other hand, when the command/address corresponds to an operation processing request using data from the host 810, data from the host 810 may be provided to the PIM circuit 822 along the path d.

한편, 커맨드/어드레스가 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 PIM circuit 822 is transmitted to the host 810 along the path f. ) Can be provided. On the other hand, the command/address may correspond to a request to store information in the PIM circuit 822 in the bank 821, and in this case, the information stored in the PIM circuit 822 is provided to the bank 821 along the path e. Can be.

도 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 memory device 900 related to execution of the loop instruction in the above example is illustrated. The memory device 900 may include a processing controller 910, an instruction memory 920, and a program counter 930, and the instruction memory 920 includes first to nth instructions (Inst 0 to Inst n-1). An example in which) is stored is shown. In addition, the current program counting value corresponds to 1, and accordingly, the second command Inst 1 may be read in response to the command/address CMD/ADD, and according to the present embodiment, the second command Inst Along with 1), a third instruction Inst 2 corresponding to a loop instruction indicated by the next program counting value (eg, PC=2) may be read together.

프로세싱 제어기(910)는 명령어에 대한 디코딩 동작을 수행하는 명령어 디코더(911)와 루프 카운팅 값을 생성하는 루프 카운터(912)를 포함할 수 있고, 명령어 디코더(911)는 독출된 제3 명령어(Inst 2)에 대한 프리 디코딩 동작을 수행할 수 있다. 또한, 제3 명령어(Inst 2)가 루프 명령어에 해당함에 따라 루프의 반복 횟수를 나타내는 필드(times)의 상응하는 정보에 대응하여 루프 카운팅 값이 설정될 수 있고, 루프 카운터(912)는 루프가 1 회 수행될 때마다 상기 루프 카운팅 값을 증가 또는 감소시킬 수 있다. 일 예로서, 루프 카운터(912)가 다운 카운팅 동작에 기반하는 카운팅을 수행하는 경우, 루프가 수행될 때마다 상기 루프 카운팅 값이 1 만큼 감소될 수 있다.The processing controller 910 may include an instruction decoder 911 that performs a decoding operation on an instruction and a loop counter 912 that generates a loop counting value, and the instruction decoder 911 may include a read third instruction (Inst A pre-decoding operation for 2) can be performed. Further, as the third instruction (Inst 2) corresponds to the loop instruction, a loop counting value may be set in response to corresponding information in a field indicating the number of repetitions of the loop, and the loop counter 912 Each time it is performed, the loop counting value may be increased or decreased. As an example, when the loop counter 912 performs counting based on a down counting operation, the loop counting value may be decreased by 1 each time a loop is performed.

프로세싱 제어기(910)는 프리 디코딩 결과에 기반하여 다음에 독출될 명령어가 루프 명령어임을 미리 판단할 수 있고, 프로그램 카운팅 값이 타겟에 해당하는 명령어를 지시하도록 프로그램 카운터(930)를 제어할 수 있다. 이에 따라, 다음의 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)가 수신될 때, 제3 명령어(Inst 2)를 재차 독출하고 이를 실행할 필요가 없이 타겟에 해당하는 명령어가 지시됨으로써 루프가 수행될 수 있다.The processing controller 910 may determine in advance that the instruction to be read next is a loop instruction based on the pre-decoding result, and control the program counter 930 so that the program counting value indicates the instruction corresponding to the target. Accordingly, when the command/address (CMD/ADD) instructing the next operation processing is received, the third instruction (Inst 2) is read again and the instruction corresponding to the target is instructed without the need to execute it, thereby executing the loop. Can be.

도 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 second instruction Inst 1 performing a function B and a third instruction Inst 2 executing a movement FJUMP for executing a loop may be included. In addition, the third command Inst 2 may include information (@0) related to the position of the target and information (n) indicating the number of loops. In addition, according to the above-described embodiments, when the current program counting value indicates 1, a pre-decoding operation is performed as the second instruction Inst 1 is read and the third instruction Inst 2 is read together. Can be.

한편, 도 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 second instruction Inst 1 for performing a function B and a third instruction Inst 2 for performing a NOP (MNOP 4) during a multi-cycle may be included. In addition, the third instruction Inst 2 may include information indicating that it corresponds to the NOP instruction and information indicating the number of cycles to perform the NOP. In the example of Fig. 16A, an example in which NOP is performed during four cycles is shown. In executing the basic block shown in FIG. 16A, the pre-decoding operation according to the above-described embodiment may be applied, or only one instruction may be read in one operation processing cycle.

멀티 사이클 동안 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 server system 1000 may include a manager 1010 and a plurality of servers 1020_1 to 1020_K. Each of the plurality of servers 1020_1 to 1020_K may correspond to the data processing system described in the above-described embodiments. A plurality of servers 1020_1 to 1020_K are connected to each other through a bus supporting a predetermined protocol (eg, PCI, PCIe, etc.), and as an example, a plurality of servers 1020_1 to 1020_K are controlled by the manager 1010 Can communicate with each other through a P2P connection structure.

어느 하나의 서버(예컨대, 제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 server system 1000 corresponds to a neural network server system, and the first server 1020_1 performs at least some of the operations by the memory device MEM in performing a vast amount of neural network operations. It will be possible to perform a control operation on the memory device MEM so that it is possible.

이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.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 범위에 속할 때 상기 메모리 동작을 수행하고, 상기 어드레스의 비트 값이 상기 제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.
제2항에 있어서,
상기 어드레스는 메모리 동작 모드 또는 연산 처리 모드를 나타내는 모드 정보와, 상기 메모리 뱅크의 위치를 나타내는 어드레스 정보를 포함하고,
상기 모드 정보의 비트 값에 따라 상기 어드레스가 상기 제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.
제1항에 있어서,
상기 커맨드는 독출 커맨드 또는 기록 커맨드 중 어느 하나인 것을 특징으로 하는 메모리 장치.
The method of claim 1,
The memory device, wherein the command is either a read command or a write command.
제4항에 있어서,
상기 커맨드가 독출 커맨드에 해당할 때, 상기 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.
제1항에 있어서,
상기 어드레스는 어느 하나의 뱅크의 로우를 지시하는 로우 어드레스와 칼럼을 지시하는 칼럼 어드레스를 포함하고, 상기 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.
제1항에 있어서, 상기 PIM 회로는,
상기 프로그램 카운터의 카운팅 값이 지시하는 명령어에 대응하는 연산 처리가 수행되도록 제어 동작을 수행하는 프로세싱 제어기; 및
상기 프로세싱 제어기의 제어에 기반하여 상기 연산 처리를 수행하는 다수의 프로세싱 소자들을 더 포함하는 것을 특징으로 하는 메모리 장치.
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.
제7항에 있어서,
상기 프로세싱 소자들 각각은 상기 뱅크들 각각에 대응하여 배치되는 것을 특징으로 하는 메모리 장치.
The method of claim 7,
Wherein each of the processing elements is disposed corresponding to each of the banks.
제7항에 있어서,
상기 프로세싱 소자들 각각은 적어도 두 개의 뱅크들에 공유되는 것을 특징으로 하는 메모리 장치.
The method of claim 7,
Each of the processing elements is shared among at least two banks.
제1항에 있어서,
상기 연산 처리를 지시하는 커맨드/어드레스가 수신될 때, 프로그램 카운터의 현재의 카운팅 값이 가리키는 제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.
제10항에 있어서,
상기 제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.
제1항에 있어서,
상기 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.
제13항에 있어서,
상기 명령어를 독출하는 단계는, 상기 다수의 명령어들이 저장된 명령어 메모리의 위치를 가리키는 프로그램 카운터의 카운팅 값을 확인하는 단계를 포함하고,
상기 연산 처리를 지시하는 커맨드/어드레스에 응답하여 상기 프로그램 카운터의 카운팅이 수행되는 것을 특징으로 하는 메모리 장치의 동작방법.
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.
제13항에 있어서,
상기 어드레스의 적어도 일부의 비트는, 상기 뱅크에 저장된 데이터의 위치를 나타내는 어드레스 정보를 포함하고,
상기 연산 처리를 수행하는 단계는, 상기 어드레스 정보에 의해 지시되는 위치로부터 독출된 데이터를 이용하여 상기 연산 처리를 수행하는 것을 특징으로 하는 메모리 장치의 동작방법.
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.
제13항에 있어서,
상기 커맨드는 독출 커맨드 또는 기록 커맨드 중 어느 하나인 것을 특징으로 하는 메모리 장치의 동작방법.
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.
제17항에 있어서,
상기 호스트는, 상기 메모리 동작 및 상기 연산 처리를 지시함에 있어서, 기록 커맨드 또는 독출 커맨드를 더 출력하는 것을 특징으로 하는 데이터 처리 시스템.
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.
제17항에 있어서,
상기 데이터 처리 시스템은, 상기 다수의 뱅크들을 포함하는 메모리 장치를 더 구비하고,
상기 메모리 장치는,
상기 호스트로부터 제공된 데이터 및 상기 뱅크들로부터 독출된 데이터 중 적어도 하나를 이용하여 연산 처리를 수행하는 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.
제19항에 있어서,
상기 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.
KR1020190161674A 2019-03-11 2019-12-06 Memory Device performing calculation process, Data Processing System having the same and Operation Method of Memory Device KR20200108773A (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (3)

* Cited by examiner, † Cited by third party
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