[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20240118633A - Memory device and an operation method thereof - Google Patents

Memory device and an operation method thereof Download PDF

Info

Publication number
KR20240118633A
KR20240118633A KR1020230068327A KR20230068327A KR20240118633A KR 20240118633 A KR20240118633 A KR 20240118633A KR 1020230068327 A KR1020230068327 A KR 1020230068327A KR 20230068327 A KR20230068327 A KR 20230068327A KR 20240118633 A KR20240118633 A KR 20240118633A
Authority
KR
South Korea
Prior art keywords
data
pim
memory device
memory
row
Prior art date
Application number
KR1020230068327A
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 US18/499,551 priority Critical patent/US20240257851A1/en
Priority to EP24152862.9A priority patent/EP4407620A1/en
Priority to CN202410097342.3A priority patent/CN118412029A/en
Publication of KR20240118633A publication Critical patent/KR20240118633A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)

Abstract

메모리 장치 및 그 동작 방법이 개시된다. 일 실시예에 따른 메모리 장치는 복수의 메모리 뱅크들을 포함하는 메모리 뱅크부, 복수의 PIM 블록들을 포함하는 연산부, 및 메모리 뱅크부에 행 주소(row address) 및 열 주소(column address)를 공급하는 메모리 컨트롤러를 포함하고, 메모리 뱅크는 복수의 행과 복수의 열로 배열된 메모리 셀들의 어레이, 복수의 행들 중 행 주소에 대응하는 행의 데이터를 저장하는 행 버퍼(row buffer), 및 행 버퍼에 저장된 데이터 중에서, 열 주소에 대응하는 제1 데이터 및 제2 데이터를 선택하는 선택부를 포함하고, 제1 데이터 및 제2 데이터 각각이 독립적으로 PIM 블록에 전달될 수 있도록 선택부와 PIM 블록 사이에 데이터 경로(data path)가 연결될 수 있다.A memory device and method of operating the same are disclosed. A memory device according to an embodiment includes a memory bank unit including a plurality of memory banks, an operation unit including a plurality of PIM blocks, and a memory that supplies a row address and a column address to the memory bank unit. It includes a controller, and the memory bank includes an array of memory cells arranged in a plurality of rows and a plurality of columns, a row buffer that stores data in a row corresponding to a row address among the plurality of rows, and data stored in the row buffer. Among them, it includes a selection unit for selecting first data and second data corresponding to the column address, and a data path between the selection unit and the PIM block so that each of the first data and second data can be independently transmitted to the PIM block. data path) can be connected.

Description

메모리 장치 및 그 동작 방법{MEMORY DEVICE AND AN OPERATION METHOD THEREOF}Memory device and method of operation thereof {MEMORY DEVICE AND AN OPERATION METHOD THEREOF}

실시예들은 메모리 장치 및 그 동작 방법에 관한 것이다.Embodiments relate to memory devices and methods of operating the same.

심층 신경망(Deep Neural Network; DNN)의 활용은 AI(Artificial Intelligence)를 기반으로 한 산업 혁명으로 이어지고 있다. 심층 신경망 중 하나인 컨볼루션 신경망(Convolution Neural Network; CNN)은 예를 들어, 인간의 시신경을 모방한 영상 및 신호 처리, 객체 인식, 컴퓨터 비전 등과 같은 다양한 응용 분야들에서 폭넓게 사용되고 있다. 컨볼루션 신경망은 매우 많은 수의 행렬을 이용하여 곱셉과 덧셈을 반복하는 MAC 연산(Multiple and Accumulation)을 수행하도록 구성될 수 있다. 범용의 프로세서들을 사용하여 컨볼루션 신경망의 애플리케이션을 실행하는 경우, 연산량이 매우 많지만, 예를 들어, 두 벡터들을 내적하고 그 값들을 누적 합산하는 MAC(Multiplication and Accumulation) 연산과 같은 복잡하지 않은 연산은 프로세싱 인-메모리(PIM: Processing In Memory)을 통해 수행될 수 있다.The use of Deep Neural Network (DNN) is leading to an industrial revolution based on AI (Artificial Intelligence). Convolution Neural Network (CNN), one of the deep neural networks, is widely used in various application fields such as image and signal processing, object recognition, and computer vision that mimic the human optic nerve. A convolutional neural network can be configured to perform a MAC operation (Multiple and Accumulation) that repeats multiplication and addition using a very large number of matrices. When executing a convolutional neural network application using general-purpose processors, the amount of computation is very large, but simple operations such as the dot product of two vectors and the MAC (Multiplication and Accumulation) operation, which accumulates and adds the values, are difficult to perform. This can be performed through Processing In Memory (PIM).

위에서 설명한 배경기술은 발명자가 본원의 개시 내용을 도출하는 과정에서 보유하거나 습득한 것으로서, 반드시 본 출원 전에 일반 공중에 공개된 공지기술이라고 할 수는 없다.The background technology described above is possessed or acquired by the inventor in the process of deriving the disclosure of the present application, and cannot necessarily be said to be known technology disclosed to the general public before this application.

일 실시예에 따른 메모리 장치는 복수의 메모리 뱅크들을 포함하는 메모리 뱅크부; 및 복수의 PIM 블록들을 포함하는 연산부를 포함하고, 상기 메모리 뱅크는 복수의 행과 복수의 열로 배열된 메모리 셀들의 어레이; 상기 복수의 행들 중 행 주소에 대응하는 행의 데이터를 저장하는 행 버퍼(row buffer); 및 상기 행 버퍼에 저장된 데이터 중에서, 열 주소에 대응하는 제1 데이터 및 제2 데이터를 선택하는 선택부를 포함하고, 상기 선택부와 상기 PIM 블록 사이에 연결된 제1 데이터 경로(data path)를 통해 상기 제1 데이터가 상기 PIM 블록으로 전달되고, 상기 선택부와 상기 PIM 블록 사이에 연결된 제2 데이터 경로를 통해 상기 제2 데이터가 상기 PIM 블록으로 전달될 수 있다.A memory device according to an embodiment includes a memory bank unit including a plurality of memory banks; and an operation unit including a plurality of PIM blocks, wherein the memory bank includes: an array of memory cells arranged in a plurality of rows and a plurality of columns; a row buffer storing data of a row corresponding to a row address among the plurality of rows; and a selection unit for selecting first data and second data corresponding to a column address from among the data stored in the row buffer, through a first data path connected between the selection unit and the PIM block. First data may be transmitted to the PIM block, and the second data may be transmitted to the PIM block through a second data path connected between the selection unit and the PIM block.

상기 열 주소는 제1 서브 열 주소 및 제2 서브 열 주소를 포함하고, 상기 제1 서브 열 주소에는 제1 열 그룹 비트(column group bit)가 할당되고, 상기 제2 서브 열 주소에는 제2 열 그룹 비트가 할당될 수 있다.The column address includes a first sub-column address and a second sub-column address, a first column group bit is assigned to the first sub-column address, and a second column group bit is assigned to the second sub-column address. Group bits may be assigned.

상기 선택부는 상기 제1 서브 열 주소에 기초하여, 상기 제1 데이터를 선택하는 제1 선택기; 및 상기 제2 서브 열 주소에 기초하여, 상기 제2 데이터를 선택하는 제2 선택기를 포함할 수 있다.The selection unit includes a first selector that selects the first data based on the first sub-column address; and a second selector that selects the second data based on the second sub-column address.

상기 제1 선택기와 상기 PIM 블록은 상기 제1 데이터 경로로 연결되고, 상기 제2 선택기와 상기 PIM 블록은 상기 제2 데이터 경로로 연결될 수 있다.The first selector and the PIM block may be connected to the first data path, and the second selector and the PIM block may be connected to the second data path.

상기 PIM 블록은 상기 제1 선택기로부터 상기 제1 데이터를 제1 피연산자로 수신하고, 상기 제2 선택기로부터 상기 제2 데이터를 제2 피연산자로 수신하고, 상기 제1 피연산자 및 상기 제2 피연산자 사이의 연산을 수행할 수 있다.The PIM block receives the first data as a first operand from the first selector, receives the second data as a second operand from the second selector, and performs an operation between the first operand and the second operand. can be performed.

상기 행 주소에 대응하는 행의 데이터에는 상기 제1 피연산자와 상기 제2 피연산자가 쌍(pair)으로 배치될 수 있다.The first operand and the second operand may be arranged as a pair in the data of the row corresponding to the row address.

상기 PIM 블록은 상기 제1 피연산자와 상기 제2 피연산자를 동시에 수신할 수 있다.The PIM block may receive the first operand and the second operand simultaneously.

일 실시예에 따른 메모리 장치는 상기 제1 열 그룹 비트 또는 제2 열 그룹 비트를 제어 신호로 수신하여, 상기 제1 데이터 또는 상기 제2 데이터를 상기 메모리 장치 외부로 출력하는 제3 멀티플렉서(multiplexer)를 더 포함할 수 있다.A memory device according to an embodiment includes a third multiplexer that receives the first row group bits or the second row group bits as a control signal and outputs the first data or the second data to the outside of the memory device. may further include.

상기 PIM 블록은 레지스터; 및 상기 레지스터에 저장된 데이터 및 상기 선택부에서 출력되는 제1 데이터 중 어느 하나를 제1 피연산자로 선택하는 제4 멀티플렉서를 포함할 수 있다.The PIM block includes registers; and a fourth multiplexer that selects one of the data stored in the register and the first data output from the selection unit as a first operand.

상기 PIM 블록은 상기 레지스터에 저장된 데이터 및 상기 선택부에서 출력되는 제2 데이터 중 어느 하나를 제2 피연산자로 선택하는 제5 멀티플렉서; 및 상기 제1 피연산자 및 상기 제2 피연산자 사이의 연산을 수행하는 연산기를 포함할 수 있다.The PIM block includes a fifth multiplexer that selects one of data stored in the register and second data output from the selection unit as a second operand; and an operator that performs an operation between the first operand and the second operand.

상기 메모리 뱅크부는 복수의 동적 랜덤 액세스 메모리(DRAM) 뱅크들을 포함할 수 있다.The memory bank unit may include a plurality of dynamic random access memory (DRAM) banks.

일 실시예에 따른 메모리 장치는 상기 복수의 메모리 뱅크들로부터 상기 복수의 메모리 뱅크들 각각에 대응하는 제1 데이터들을 수신하여, 제1 피연산자를 상기 PIM 블록으로 전달하는 제6 멀티플렉서; 및 상기 복수의 메모리 뱅크들로부터 상기 복수의 메모리 뱅크들 각각에 대응하는 제2 데이터들을 수신하여, 제2 피연산지를 상기 PIM 블록으로 전달하는 제7 멀티플렉서를 더 포함할 수 있다.A memory device according to an embodiment includes a sixth multiplexer that receives first data corresponding to each of the plurality of memory banks and transmits a first operand to the PIM block; and a seventh multiplexer that receives second data corresponding to each of the plurality of memory banks from the plurality of memory banks and transmits a second operand to the PIM block.

일 실시예에 따른 메모리 뱅크 및 PIM 블록을 포함하는 메모리 장치의 동작 방법은 행 주소(row address) 및 열 주소(column address)를 수신하는 단계; 상기 행 주소에 대응하는 행의 데이터를 상기 메모리 뱅크의 행 버퍼에 저장하는 단계; 상기 행 버퍼에 저장된 데이터 중에서, 상기 열 주소에 대응하는 제1 데이터 및 제2 데이터를 선택하는 단계; 상기 메모리 뱅크와 상기 PIM 블록 사이에 연결된 제1 데이터 경로(data path)를 통해 상기 제1 데이터가 상기 PIM 블록으로 전달하는 단계; 및 상기 메모리 뱅크와 상기 PIM 블록 사이에 연결된 제2 데이터 경로를 통해 상기 제2 데이터가 상기 PIM 블록으로 전달하는 단계를 포함할 수 있다.A method of operating a memory device including a memory bank and a PIM block according to an embodiment includes receiving a row address and a column address; storing row data corresponding to the row address in a row buffer of the memory bank; selecting first data and second data corresponding to the column address from data stored in the row buffer; transferring the first data to the PIM block through a first data path connected between the memory bank and the PIM block; and transmitting the second data to the PIM block through a second data path connected between the memory bank and the PIM block.

상기 열 주소는 제1 서브 열 주소 및 제2 서브 열 주소를 포함하고, 상기 제1 서브 열 주소에는 제1 열 그룹 비트(column group bit)가 할당되고, 상기 제2 서브 열 주소에는 제2 열 그룹 비트가 할당될 수 있다.The column address includes a first sub-column address and a second sub-column address, a first column group bit is assigned to the first sub-column address, and a second column group bit is assigned to the second sub-column address. Group bits may be assigned.

상기 선택하는 단계는 상기 제1 서브 열 주소에 기초하여, 상기 제1 데이터를 선택하는 단계; 및 상기 제2 서브 열 주소에 기초하여, 상기 제2 데이터를 선택하는 단계를 포함할 수 있다.The selecting step includes selecting the first data based on the first sub-column address; and selecting the second data based on the second sub-column address.

일 실시예에 따른 메모리 장치의 동작 방법은 상기 PIM 블록에서, 상기 제1 데이터를 제1 피연산자로 수신하는 단계; 상기 PIM 블록에서, 상기 제2 데이터를 제2 피연산자로 수신하는 단계; 및 상기 PIM 블록에서, 상기 제1 피연산자 및 상기 제2 피연산자 사이의 연산을 수행하는 단계를 더 포함할 수 있다.A method of operating a memory device according to an embodiment includes receiving the first data as a first operand from the PIM block; In the PIM block, receiving the second data as a second operand; and performing an operation between the first operand and the second operand in the PIM block.

상기 행 주소에 대응하는 행의 데이터에는 상기 제1 피연산자와 상기 제2 피연산자가 쌍(pair)으로 배치될 수 있다.The first operand and the second operand may be arranged as a pair in the data of the row corresponding to the row address.

상기 PIM 블록은 상기 제1 피연산자와 상기 제2 피연산자를 동시에 수신할 수 있다.The PIM block may receive the first operand and the second operand simultaneously.

일 실시예에 따른 메모리 장치의 동작 방법은 상기 제1 열 그룹 비트 또는 제2 열 그룹 비트를 제어 신호로 수신하여, 상기 제1 데이터 또는 상기 제2 데이터를 상기 메모리 장치 외부로 출력하는 단계를 더 포함할 수 있다.A method of operating a memory device according to an embodiment further includes receiving the first column group bit or the second column group bit as a control signal and outputting the first data or the second data to the outside of the memory device. It can be included.

상기 메모리 뱅크는 복수의 동적 랜덤 액세스 메모리(DRAM) 뱅크들을 포함할 수 있다.The memory bank may include a plurality of dynamic random access memory (DRAM) banks.

일 실시예에 따른 메모리 장치는 데이터 연산을 수행하는 로직 회로를 포함하는 연산기; 복수의 행과 복수의 열로 배열된 메모리 셀들; 상기 메모리 셀의 행 데이터를 저장하는 행 버퍼; 상기 행 버퍼와 상기 연산기를 연결하는 제1 경로; 상기 행 버퍼와 상기 연산기를 연결하는, 상기 제1 경로와 독립된 제2 경로; 및 상기 행 버퍼에 저장된 제1 데이터를 선택하여 상기 제1 경로로 전달하고, 상기 행 버퍼에 저장된 상기 제1 데이터와 다른 제2 데이터를 선택하여 상기 제2 경로로 전달하는 선택부를 포함할 수 있다.A memory device according to an embodiment includes an operator including a logic circuit that performs data operations; Memory cells arranged in a plurality of rows and a plurality of columns; a row buffer storing row data of the memory cells; a first path connecting the row buffer and the operator; a second path independent of the first path connecting the row buffer and the operator; and a selection unit that selects first data stored in the row buffer and transmits it to the first path, and selects second data different from the first data stored in the row buffer and transmits it to the second path. .

일 실시예에 따른 메모리 장치는 상기 제1 경로에 연결된 제1 멀티플렉서; 상기 제2 경로에 연결된 제2 멀티플렉서; 및 상기 제1 멀티플렉서 및 상기 제2 멀티플렉서와 연결된 레지스터를 더 포함할 수 있다.A memory device according to an embodiment includes a first multiplexer connected to the first path; a second multiplexer connected to the second path; and a register connected to the first multiplexer and the second multiplexer.

상기 레지스터는 상기 제1 경로에 연결되고, 상기 제2 경로에는 연결되지 않을 수 있다.The register may be connected to the first path and not connected to the second path.

일 실시예에 따른 메모리 장치는 상기 제1 경로 및 상기 제2 경러와 연결되고 상기 제1 데이터 또는 상기 제2 데이터를 상기 메모리 장치 외부로 출력하는 멀티플렉서를 더 포함할 수 있다.The memory device according to one embodiment may further include a multiplexer connected to the first path and the second path and outputting the first data or the second data to the outside of the memory device.

상기 선택부는 상기 제1 데이터를 선택하는 제1열 디코더 및 상기 제2 데이터를 선택하는 제2열 디코더를 포함할 수 있다.The selection unit may include a first row decoder that selects the first data and a second row decoder that selects the second data.

도 1은 일 실시예에 따른 메모리 장치의 블록도를 도시한 도면이다.
도 2a는 몇몇 비교되는 메모리 시스템의 동작을 설명하기 위한 도면이다.
도 2b는 일 실시예에 따른 PIM 블록과 연결된 메모리 뱅크의 개략적인 블록도이다.
도 2c는 본 발명의 일 실시예에 따른 DRAM 셀의 예를 나타내는 회로도이다.
도 3은 일 실시예에 따른 피연산자 쌍을 연산기에 동시에 입력하기 위한 열 주소의 구조를 설명하기 위한 도면이다.
도 4a는 일 실시예에 따른 메모리 장치가 PIM 명령어를 수신할 경우의 동작을 설명하기 위한 도면이다.
도 4b는 일 실시예에 따른 메모리 장치치가 정규 명령어를 수신할 경우의 동작을 설명하기 위한 도면이다.
도 5a는 일 실시예에 따른 PIM 블록을 포함하는 메모리 장치의 예를 도시한 도면이다.
도 5b는 일 실시예에 따른 복수의 메모리 뱅크들과 PIM 블록이 연결된 메모리 장치의 예를 도시한 도면이다.
도 6은 일 실시예에 따른 메모리 장치의 동작 방법을 설명하기 위한 순서도이다.
FIG. 1 is a block diagram of a memory device according to an embodiment.
FIG. 2A is a diagram for explaining the operation of several compared memory systems.
Figure 2b is a schematic block diagram of a memory bank connected to a PIM block according to one embodiment.
Figure 2c is a circuit diagram showing an example of a DRAM cell according to an embodiment of the present invention.
FIG. 3 is a diagram illustrating the structure of a column address for simultaneously inputting a pair of operands into an operator according to an embodiment.
FIG. 4A is a diagram illustrating operations when a memory device receives a PIM command, according to an embodiment.
FIG. 4B is a diagram for explaining operations when a memory device receives a regular command according to an embodiment.
FIG. 5A is a diagram illustrating an example of a memory device including a PIM block according to an embodiment.
FIG. 5B is a diagram illustrating an example of a memory device in which a plurality of memory banks and a PIM block are connected, according to an embodiment.
FIG. 6 is a flowchart illustrating a method of operating a memory device according to an embodiment.

본 명세서에서 개시되어 있는 특정한 구조적 또는 기능적 설명들은 단지 기술적 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 실제로 구현된 형태는 다양한 다른 모습을 가질 수 있으며 본 명세서에 설명된 실시예로만 한정되지 않는다. Specific structural or functional descriptions disclosed in this specification are merely illustrative for the purpose of explaining embodiments according to technical concepts, and actual implementations may have various other appearances and are limited only to the embodiments described in this specification. It doesn't work.

제1 또는 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 이해되어야 한다. 예를 들어 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.Terms such as first or second may be used to describe various components, but these terms should be understood only for the purpose of distinguishing one component from another component. For example, a first component may be named a second component, and similarly, the second component may also be named a first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~간의"와 "바로~간의" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.When a component is said to be "connected" or "connected" to another component, it is understood that it may be directly connected to or connected to the other component, but that other components may exist in between. It should be. On the other hand, when it is mentioned that a component is “directly connected” or “directly connected” to another component, it should be understood that there are no other components in between. Expressions that describe the relationship between components, such as “between” and “immediately between” or “neighboring to” and “directly adjacent to”, should be interpreted similarly.

단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.Singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, terms such as “comprise” or “have” are intended to designate the presence of implemented features, numbers, steps, operations, components, parts, or combinations thereof, but are not intended to indicate the presence of one or more other features or numbers. It should be understood that this does not preclude the existence or addition of steps, operations, components, parts, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by a person of ordinary skill in the art. Terms as defined in commonly used dictionaries should be interpreted as having meanings consistent with the meanings they have in the context of the related technology, and unless clearly defined in this specification, should not be interpreted in an idealized or overly formal sense. No.

실시예들은 퍼스널 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 텔레비전, 스마트 가전 기기, 지능형 자동차, 키오스크, 웨어러블 장치 등 다양한 형태의 제품으로 구현될 수 있다. 이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Embodiments may be implemented in various types of products such as personal computers, laptop computers, tablet computers, smart phones, televisions, smart home appliances, intelligent vehicles, kiosks, and wearable devices. Hereinafter, embodiments will be described in detail with reference to the attached drawings. The same reference numerals in each drawing indicate the same members.

도 1은 일 실시예에 따른 메모리 장치의 블록도를 도시한 도면이다.FIG. 1 is a block diagram of a memory device according to an embodiment.

도 1을 참조하면, 도 1에 도시된 바와 같이, 본 개시의 실시예는 PIM(PIM: Processing In Memory) 메모리 시스템을 제공한다. 메모리 시스템은 메모리 장치(110)에 통합될 추가적인 컴퓨팅 리소스를 지원한다. 메모리 시스템은 그래픽 처리 장치(GPU) 또는 중앙 처리 장치(CPU)와 같은 호스트 프로세서(150)에 연결된 메모리 장치(110)를 포함한다. 메모리 장치(110)는 벡터 간 엘리먼트와이즈(Elementwise) 연산을 가속할 수 있고, 이를 이용한 AI(Artificial Intelligence) 및 HPC(High-Performance Computing) 응용에 대해 적용이 가능하고, 메모리 시스템은 서버 및 휴대기기에 적용될 수 있다.Referring to FIG. 1, as shown in FIG. 1, an embodiment of the present disclosure provides a Processing In Memory (PIM) memory system. The memory system supports additional computing resources to be incorporated into memory device 110. The memory system includes a memory device 110 coupled to a host processor 150, such as a graphics processing unit (GPU) or a central processing unit (CPU). The memory device 110 can accelerate elementwise calculations between vectors and can be applied to AI (Artificial Intelligence) and HPC (High-Performance Computing) applications, and the memory system can be used in servers and mobile devices. It can be applied to .

일 실시예에서, 메모리 장치(110)는 메모리 다이(120)를 포함한다. 호스트 프로세서(150)는 메모리 장치(110)와 인터페이스하기 위한 호스트 메모리 컨트롤러(160)(또는, 호스트 컨트롤러)를 포함할 수 있다. 그러나 본 개시가 이에 한정되는 것은 아니다. 예를 들어, 호스트 메모리 컨트롤러(160)는 호스트 프로세서(150)와 분리될 수도 있다(예를 들어, 호스트 프로세서(160)와 별도의 다이 또는 동일한 다이로서). 또는, 메모리 장치(110)는 메모리 컨트롤러를 포함할 수 있고, 메모리 다이(120)는 내부 메모리 버스를 통해 메모리 컨트롤러와 연결될 수 있다.In one embodiment, memory device 110 includes memory die 120. The host processor 150 may include a host memory controller 160 (or host controller) to interface with the memory device 110. However, the present disclosure is not limited to this. For example, the host memory controller 160 may be separate from the host processor 150 (e.g., as a separate die or the same die as the host processor 160). Alternatively, the memory device 110 may include a memory controller, and the memory die 120 may be connected to the memory controller through an internal memory bus.

호스트 메모리 컨트롤러(160)는 호스트 프로세서(150)로부터의 명령들의 실행을 조정하도록 구성될 수 있다. 명령어는 정규 명령어와 PIM 명령어를 모두 포함할 수 있다. 예를 들어, 정규 명령들(예를 들어, 메모리 내 기능 명령들이 아닌 전통적인 로드(읽기) 및 저장(쓰기) 기능들)은 호스트 메모리 컨트롤러(160)에 의해 전송되고, 통상적인 방식으로 실행될 수 있다. 예를 들어, 정규 명령은 외부 버스를 통해 수신된 데이터를 메모리 다이(120)에 저장하는 명령 및 메모리 다이(120)로부터 데이터를 검색하고 외부 버스를 통해 호스트 프로세서(150)로 데이터를 전송하는 명령을 포함할 수 있다.Host memory controller 160 may be configured to coordinate execution of instructions from host processor 150. Instructions can include both regular instructions and PIM instructions. For example, regular instructions (e.g., traditional load (read) and store (write) functions rather than in-memory function instructions) may be transmitted by the host memory controller 160 and executed in a conventional manner. . For example, regular instructions include an instruction to store data received through an external bus in the memory die 120 and an instruction to retrieve data from the memory die 120 and transmit the data to the host processor 150 through an external bus. may include.

일부 실시예에서, 정규 명령 및 PIM 명령은 메모리 다이(120)의 특정 위치(예를 들어, 특정 뱅크(bank)의 특정 페이지)에 데이터를 저장하는 동작을 포함할 수 있다. 이들 데이터는 2개의 상이한 피연산자를 포함할 수 있고, 여기서 각각의 피연산자는 다수의 값(예를 들어, 부동 소수점(floating point) 또는 정수(integer) 값)을 포함할 수 있다.In some embodiments, regular instructions and PIM instructions may include storing data in a specific location of the memory die 120 (eg, a specific page of a specific bank). These data may include two different operands, where each operand may include multiple values (e.g., floating point or integer values).

본 개시의 실시예의 양태는 인-메모리 컴퓨팅(IMC; In Memory Computing)의 사용에 관한 것으로, 일 실시예에 따른 메모리 시스템은 메모리 다이(120) 내부의 메모리 뱅크부(121)와 연산부(123)를 포함할 수 있다. 몇몇 비교되는 메모리 시스템(예: PNM(process near memory)은 메모리 다이 외부의 연산기(예: 산술 논리 유닛(ALU))를 포함하고, 연산기가 외부 버스를 통과하지 않고, 메모리 다이에 저장된 데이터에 대한 연산(operation)(예를 들어, 산술 연산(arithmetic operations))을 수행할 수 있도록 메모리 다이의 메모리 뱅크에 의해 공유된다.An aspect of an embodiment of the present disclosure relates to the use of in-memory computing (IMC), and the memory system according to an embodiment includes a memory bank unit 121 and an operation unit 123 inside the memory die 120. may include. Some comparable memory systems (e.g., process near memory (PNM)) include operators external to the memory die (e.g., an arithmetic logic unit (ALU)), in which the operators do not pass through an external bus, but rather have access to data stored on the memory die. It is shared by the memory banks of the memory die so that operations (e.g., arithmetic operations) can be performed.

본 개시의 실시예의 일부 양태는 연산부(123)를 메모리 다이(120)의 메모리 뱅크부(121)에 통합함으로써 메모리 경계 연산을 가속시키는 것에 관한 것이다. 예를 들어, 연산부(123)는 데이터를 보유한 메모리 뱅크부(121)와 동일한 물리적 반도체 다이에 있을수 있다. 메모리 뱅크에 저장된 데이터에 대해 컴퓨팅이 수행될 수 있도록 연산부(123)와 PIM 블록이 연관될 수 있다.Some aspects of embodiments of the present disclosure relate to accelerating memory boundary operations by integrating the operation unit 123 into the memory bank unit 121 of the memory die 120. For example, the operation unit 123 may be on the same physical semiconductor die as the memory bank unit 121 holding data. The calculation unit 123 and the PIM block may be associated so that computing can be performed on data stored in the memory bank.

일 실시예에 따른 메모리 시스템의 구조를 설명하기 전에, 도 2a를 참조하여 몇몇 비교되는 메모리 시스템에 대하여 설명한다.Before describing the structure of a memory system according to an embodiment, several compared memory systems will be described with reference to FIG. 2A.

도 2a를 참조하면, 몇몇 비교되는 메모리 시스템은 멀티플렉서(281), 레지스터(283), 멀티플렉서(285) 및 연산기(287)를 포함할 수 있다. 멀티플렉서(281)는 행 버퍼에 저장된 행 데이터 중에서, 열의 일 서브 세트를 선택하여 레지스터(283)에 공급할 수 있고, 레지스터(283)는 연산기(287)의 제1 피연산자 입력에 연결될 수 있다.Referring to Figure 2A, some compared memory systems may include a multiplexer 281, a register 283, a multiplexer 285, and an operator 287. The multiplexer 281 may select a subset of columns from among the row data stored in the row buffer and supply it to the register 283, and the register 283 may be connected to the first operand input of the operator 287.

도 2a의 메모리 시스템은 레지스터(283)의 2개의 피연산자 사이의 제1 벡터 연산 또는 레지스터(283)의 피연산자와 메모리 뱅크의 피연산자 사이의 제2 벡터 연산을 수행할 수 있다.The memory system of FIG. 2A may perform a first vector operation between two operands of the register 283 or a second vector operation between an operand of the register 283 and an operand of a memory bank.

레지스터(283)의 인덱스(index)는 PIM 블록 내에 있는 인스트럭션 레지스터(instruction register)에 사전에 정의된 대로 동작하지만, 메모리 뱅크 내의 피연산자가 위치하는 주소는 호스트 메모리 컨트롤러(160)에 의해 입력 받을 수 있다. 따라서, 메모리 뱅크에서 PIM 블록으로 하나의 연산 블록 크기(예: 피연산자 단위)만을 이동할 수 있다.The index of the register 283 operates as predefined in the instruction register in the PIM block, but the address where the operand in the memory bank is located can be input by the host memory controller 160. . Therefore, only one operation block size (e.g., operand unit) can be moved from the memory bank to the PIM block.

예를 들어, 제1 벡터 연산을 수행하기 위하여, 첫 번째 단계(phase)(또는, 스텝(step), 싸이클(cycle))에서, 레지스터(283)는 제1 피연산자를 로드(load)하고, 두 번째 단계에서 제1 피연산자 및 제2 피연산자가 연산기(287)의 입력으로 입력될 수 있다. 제2 피연산자의 경우, 멀티플렉서서(285)를 통해 연산기(287)의 입력으로 선택될 수 있다.For example, to perform a first vector operation, in the first phase (or step, cycle), the register 283 loads the first operand and two In the second step, the first and second operands may be input to the operator 287. In the case of the second operand, it can be selected as an input to the operator 287 through the multiplexer 285.

제2 벡터 연산을 수행하기 위하여, 첫 번째 단계에서, 레지스터(283)는 제1 피연산자를 로드(load)하고, 두 번째 단계에서 제1 피연산자 및 행 버퍼에 저장된 제2 피연산자가 연산기(287)의 입력으로 입력될 수 있다. 다시 말해, 도 2a의 메모리 시스템에는, 벡터 연산이 두 단계로 진행되기 때문에 연산기의 성능(utilization)을 절반 밖에 사용하지 못할 수 있다.To perform the second vector operation, in the first step, the register 283 loads the first operand, and in the second step, the first operand and the second operand stored in the row buffer are used by the operator 287. It can be entered as input. In other words, in the memory system of FIG. 2A, because vector operations are performed in two stages, only half of the performance (utilization) of the operator may be used.

도 2b는 일 실시예에 따른 PIM 블록과 연결된 메모리 뱅크의 개략적인 블록도이다. 도 1을 참조하여 설명한 내용은 도 2c에 동일하게 적용될 수 있고, 중복되는 내용은 생략될 수 있다.Figure 2b is a schematic block diagram of a memory bank connected to a PIM block according to one embodiment. The content described with reference to FIG. 1 can be applied equally to FIG. 2C, and overlapping content can be omitted.

도 2b를 참조하면, 일 실시예에 따른 메모리 뱅크(210)는 셀 어레이(220), 행 버퍼(230) 및 선택부(240)를 포함할 수 있다. 이하 사용되는 '. 부', '. 기' 등의 용어는 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어, 또는, 하드웨어및 소프트웨어의 결합으로 구현될 수 있다.Referring to FIG. 2B, the memory bank 210 according to one embodiment may include a cell array 220, a row buffer 230, and a selection unit 240. Hereinafter used '. wealth', '. Terms such as 'unit' refer to a unit that processes a function or operation, and can be implemented through hardware, software, or a combination of hardware and software.

메모리 뱅크(210)는 행(row) 및 열(column)(또는 페이지 및 열)로 배열된 메모리 셀의 어레이(이하, 셀 어레이(220))를 포함할 수 있다. 예를 들어, 메모리 뱅크(210)는 n개의 행(또는 페이지) 및 m개의 열로 배열된 DRAM 셀을 포함할 수 있다(여기서, n과 m은 자연수). 복수의 비트 라인들(예: B1 내지 Bm)(bitlines)은 열 방향을 따라 연장되고, 복수의 행 인에이블 라인들(예: R1 내지 Rn)(row enable lines)은 어레이의 행 방향을 따라 연장되고 비트 라인들을 가로 지를 수 있다. 각 비트 라인은 해당 열의 모든 셀에 연결될 수 있다(예를 들어, 배열의 i 번째 열에 있는 모든 셀은 비트 라인 Bi에 연결됨). 마찬가지로, 각 행 인에이블 라인(예: R1 내지 Rn)은 대응하는 행의 각 메모리 셀에 연결될 수 있다(예: 어레이의 j 번째 행 또는 페이지의 모든 셀은 행 인에이블 라인(Rj)에 연결됨). 메모리 뱅크(210)의 행의 메모리 셀은 또한 메모리 페이지라고 지칭될 수 있다.The memory bank 210 may include an array of memory cells (hereinafter referred to as cell array 220) arranged in rows and columns (or pages and columns). For example, the memory bank 210 may include DRAM cells arranged in n rows (or pages) and m columns (where n and m are natural numbers). A plurality of bit lines (e.g., B1 to Bm) (bitlines) extend along the column direction, and a plurality of row enable lines (e.g., R1 to Rn) (row enable lines) extend along the row direction of the array. and can cross bit lines. Each bit line can be connected to every cell in that column (for example, every cell in the ith column of the array is connected to bit line Bi). Likewise, each row enable line (e.g., R1 through Rn) can be connected to each memory cell in the corresponding row (e.g., the jth row of an array or all cells in a page are connected to a row enable line (Rj)). . A row of memory cells in memory bank 210 may also be referred to as a memory page.

도 2c는 본 발명의 일 실시예에 따른 DRAM 셀의 예를 나타내는 회로도이다.Figure 2c is a circuit diagram showing an example of a DRAM cell according to an embodiment of the present invention.

도 2c를 참조하면, 각각의 DRAM 메모리 셀은 일반적으로 데이터 전압을 저장하기 위한 커패시터(212)(예를 들어, 비트 값, 여기서 각 커패시터는 0 비트를 나타내는 전압 또는 1 비트를 나타내는 전압을 저장할 수 있음) 및 커패시터(212)에 데이터 전압을 전송하기 위한 스위치(214)를 포함하는 것으로 모델링 될 수 있다. 도 2c에 도시된 특정 DRAM 셀은 어레이의 i 번째 열 및 j 번째 행에 있을 수 있다. 따라서, 도 2b에 도시된 DRAM 셀의 스위치(214)는 i 번째 비트 라인(Bi)과 커패시터(212)의 일 단자 사이에 연결되고, 커패시터(212)의 다른 단자는 접지에 연결될 수 있다. 도 2c에 도시된 바와 같이, DRAM 셀의 스위치(214)의 게이트 전극은 j 번째 행 인에이블 라인(Rj)에 연결되어, 스위치(214)가 턴-온 될 때 커패시터(212)가 비트 라인(Bi)에 연결될 수 있다. 다만, 일 실시예에 따른 메모리 셀은 DRAM 메모리 셀에 한정되는 것은 아니다. 설계에 따라 다양한 종류의 메모리 셀이 채택될 수 있다.Referring to Figure 2C, each DRAM memory cell typically has a capacitor 212 for storing data voltages (e.g., bit values, where each capacitor can store a voltage representing a 0 bit or a voltage representing a 1 bit). It can be modeled as including a switch 214 for transmitting the data voltage to the capacitor 212) and a capacitor 212. The particular DRAM cell shown in Figure 2C may be in the ith column and jth row of the array. Accordingly, the switch 214 of the DRAM cell shown in FIG. 2B may be connected between the ith bit line Bi and one terminal of the capacitor 212, and the other terminal of the capacitor 212 may be connected to ground. As shown in FIG. 2C, the gate electrode of the switch 214 of the DRAM cell is connected to the j-th row enable line (Rj), so that when the switch 214 is turned on, the capacitor 212 is connected to the bit line ( Bi) can be connected. However, memory cells according to one embodiment are not limited to DRAM memory cells. Depending on the design, various types of memory cells can be adopted.

다시 도 2b를 참조하면, 메모리 뱅크(210)는 행 인에이블 라인들(예: R1 내지 Rn)에 연결된 행 디코더(미도시)를 포함하고, 행 디코더는 예를 들어, 호스트 메모리 컨트롤러(160)로부터 공급된 행 어드레스에 대응하는 행 인에이블 라인 중 특정된 하나에 행 인에이블 신호를 공급하도록 구성될 수 있다. 메모리 셀의 특정 행에 데이터를 쓰거나 또는 읽을 때, 행 디코더는 특정 행에 대응하는 행 인에이블 라인에 행 인에이블 신호를 공급할 수 있다. 데이터를 기록할 때, 기록될 데이터에 대응하는 전압이 특정 행이 인 에이블되는 동안 비트 라인(예: B1 내지 Bm)에 공급될 수 있다.Referring again to FIG. 2B, the memory bank 210 includes a row decoder (not shown) connected to row enable lines (e.g., R1 to Rn), and the row decoder is, for example, connected to the host memory controller 160. It may be configured to supply a row enable signal to a specified one of the row enable lines corresponding to the row address supplied from. When writing or reading data to a specific row of a memory cell, the row decoder may supply a row enable signal to the row enable line corresponding to the specific row. When writing data, a voltage corresponding to the data to be written may be supplied to a bit line (eg, B1 to Bm) while a specific row is enabled.

유사하게, 셀 어레이(220)의 특정 행으로부터 데이터를 읽을 때, 커패시터(212)에 저장된 전압들에 대응하는 전압들은 비트 라인들(예: B1 내지 Bm)을 따라 전송되고 행 버퍼(230)에 의해 읽혀질 수 있다. 행 버퍼(230)는 비트 라인들 중 대응하는 하나에 연결될 수 있다. 예를 들어, 일 실시예에서, 셀 어레이(220)는 8,192개의 열 및 8,192개의 대응하는 행 버퍼(230)에 연결된 8,192 개의 대응하는 비트 라인(예를 들어, 비트 라인 B1 내지 B8192)을 포함할 수 있다(예를 들어, 각 페이지는 8,192 비트 또는 8 Kibit의 데이터를 저장할 수 있다). 행 버퍼(230)는 "프치 차지(precharge)"명령에 의해 소거될 때까지 현재 행(또는 페이지)으로부터 읽혀진 데이터를 저장할 수 있다.Similarly, when reading data from a specific row of the cell array 220, voltages corresponding to the voltages stored in the capacitor 212 are transmitted along the bit lines (e.g., B1 to Bm) and stored in the row buffer 230. can be read by Row buffer 230 may be connected to a corresponding one of the bit lines. For example, in one embodiment, cell array 220 may include 8,192 corresponding bit lines (e.g., bit lines B1 through B8192) coupled to 8,192 column and 8,192 corresponding row buffers 230. (For example, each page can store 8,192 bits or 8 Kibit of data). The row buffer 230 can store data read from the current row (or page) until it is erased by a “precharge” command.

선택부(240)는 복수의 선택기들을 포함할 수 있다. 선택기는 행 버퍼(230)에 저장된 데이터 중에서, 열 주소에 대응하는 데이터를 선택하는 장치로, 예를 들어, 멀티플렉서일 수 있다. 그러나, 선택기는 멀티플렉서로 한정되는 것은 아니며, 선택기는 복수의 데이터들 중 특정 데이터를 선택할 수 있는 다양한 장치들을 포함할 수 있다. 아래에서, 설명의 편의를 위하여 제1 멀티플렉서 및 제2 멀티플렉서로 구성된 선택부(240)를 기준으로 설명한다. 나아가, 선택부(240)는 열 디코더로 지칭될 수도 있다.The selection unit 240 may include a plurality of selectors. The selector is a device that selects data corresponding to a column address from among the data stored in the row buffer 230, and may be, for example, a multiplexer. However, the selector is not limited to a multiplexer, and the selector may include various devices that can select specific data from a plurality of data. Below, for convenience of explanation, the description will be based on the selection unit 240 composed of a first multiplexer and a second multiplexer. Furthermore, the selection unit 240 may also be referred to as a column decoder.

선택부(240)는 제1 멀티플렉서 및 제2 멀티플렉서를 사용하여 데이터 열의 일 서브 세트(subset)를 선택하는데 사용될 수 있고, 데이터에 대한 컴퓨팅을 수행하기 위해, 읽혀진 데이터는 글로벌 IO 계층을 통해 인-메모리 컴퓨팅(IMC) 모듈에 공급될 수 있다. The selection unit 240 may be used to select a subset of the data string using the first multiplexer and the second multiplexer, and to perform computing on the data, the read data is in- It can be fed into a memory computing (IMC) module.

아래에서 상세히 설명하겠으나, 일 실시예에 따른 선택부(240)는 연산기(270)의 복수(예: 2개)의 입력에 대한 데이터 흐름을 제어하기 위해 사용될 수 있다(예를 들어, 연산기(270)에 대한 제1 피연산자(operand) 및 제2 피연산자로서). 선택부는 행 버퍼(230)에 저장된 데이터 중에서, 열 주소에 대응하는 복수의 데이터(예: 제1 데이터 및 제2 데이터)를 선택할 수 있다. 연산기(270)는 연산(예를 들어, 벡터 곱셈 연산)을 수행하고, 연산 결과는 셀 어레이(220)로 다시 기록되거나 IO 모듈을 통해 호스트 프로세서로 전송될 수 있다. 예를 들어, 연산기(270)는 FPU(floating point unit), ALU, 덧셈기(adder) 또는 곱셈기(multiplier) 등을 포함할 수 있다.As will be described in detail below, the selection unit 240 according to one embodiment may be used to control the data flow for a plurality (e.g., two) inputs of the operator 270 (e.g., the operator 270 ) as the first and second operands for ). The selection unit may select a plurality of data (eg, first data and second data) corresponding to a column address from among the data stored in the row buffer 230. The operator 270 performs an operation (eg, a vector multiplication operation), and the operation result may be written back to the cell array 220 or transmitted to the host processor through the IO module. For example, the operator 270 may include a floating point unit (FPU), an ALU, an adder, or a multiplier.

일 실시예에 따른 메모리 장치는 메모리 뱅크(210)에 있는 복수(예: 2개)의 뱅크 주소를 따로 여러 번(예: 2번)에 걸쳐 받을 필요가 없이 하나의 뱅크 주소만 받도록, 피연산자들이 세트(예: 쌍(pair))로 작동할 수 있다. 메모리 뱅크(210)와 PIM 블록(260) 사이에 다수의 데이터 경로를 이용하여 동시에 다수의 피연산자를 연산기(270)의 입력으로 집어 넣어 한번에 계산할 수 있다. 아래에서, 도 3을 참조하여 피연산자들이 세트(예: 쌍)로 작동하기 위한 열 주소의 구조에 대하여 설명한다.The memory device according to one embodiment allows the operands to receive only one bank address without the need to receive multiple (e.g., two) bank addresses in the memory bank 210 separately multiple times (e.g., twice). Can operate in sets (e.g. pairs). By using multiple data paths between the memory bank 210 and the PIM block 260, multiple operands can be simultaneously input to the input of the operator 270 and calculated at once. Below, the structure of a column address for operands to operate as a set (e.g., a pair) will be described with reference to FIG. 3.

도 3은 일 실시예에 따른 피연산자 세트를 연산기에 동시에 입력하기 위한 열 주소의 구조를 설명하기 위한 도면이다.FIG. 3 is a diagram illustrating the structure of a column address for simultaneously inputting a set of operands to an operator according to an embodiment.

메모리 뱅크(예: 도 2a의 210) 내의 복수 개(예: 2개)의 피연산자를 동시에 사용하기 위해서는, 메모리 컨트롤러(예: 도 1의 140)에 의해 PIM 연산에 사용 할 피연산자에 대한 복수 개(예: 2개)의 열 주소를 한번에 받을 수 있어야한다. 아래에서, 설명의 편의를 위하여 2개의 피연산자를 동시에 처리하는 메모리 장치를 기준으로 설명한다.In order to simultaneously use a plurality of operands (e.g., two) in a memory bank (e.g., 210 in FIG. 2A), a plurality of operands (e.g., two) for the operands to be used in the PIM operation are required by the memory controller (e.g., 140 in FIG. 1). For example: You must be able to receive two (2) column addresses at once. Below, for convenience of explanation, the description will be based on a memory device that processes two operands simultaneously.

메모리 뱅크의 제1 피연산자와 메모리 뱅크의 제2 피연산자 사이의 벡터 연산을 할 경우에, 메모리 컨트롤러에서 들어오는 행 주소 및 행 주소 내 열 주소를 각각 받는다면, 피연산자 주소를 2번에 걸쳐 받기 때문에 가속 성능을 보기 힘들 수 있다. 이를 해결 하기 위해, 일 실시예에 따른 열 주소는 같은 행 내에 존재하는 복수의 열 데이터들을 복수(예: 2개)의 그룹으로 미리 나뉠 수 있다.When performing a vector operation between the first operand of the memory bank and the second operand of the memory bank, if the row address and the column address within the row address are received from the memory controller, acceleration performance is improved because the operand address is received twice. may be difficult to see. To solve this problem, the column address according to one embodiment may pre-divide a plurality of column data existing in the same row into a plurality of groups (e.g., two).

도 3을 참조하면, 메모리 컨트롤러로부터 공급된 열 주소는 제1 서브 열 주소와 제2 서브 열 주소로 각각 나누어 지고, 각각에 대응하는 열 데이터는 PIM 블록 연산의 2개의 피연산자로 사용될 수 있다. 제1 서브 열 주소 및 제2 서브 열 주소는 각각 열 주소 0(Column Address 0) 및 열 주소 1(Column Address 1)로 지칭될 수 있다.Referring to FIG. 3, the column address supplied from the memory controller is divided into a first sub-column address and a second sub-column address, and the column data corresponding to each can be used as two operands of the PIM block operation. The first sub-column address and the second sub-column address may be referred to as Column Address 0 and Column Address 1, respectively.

제1 서브 열 주소에는 제1 열 그룹 비트(column group bit)가 할당되고, 제2 서브 열 주소에는 제2 열 그룹 비트가 할당될 수 있다. 예를 들어, 제1 서브 열 주소에는 '0'이 제1 열 그룹 비트로 할당될 수 있고, 제2 서브 열 주소에는 '1'이 제2 열 그룹 비트로 할당될 수 있다. A first column group bit may be assigned to the first sub-column address, and a second column group bit may be assigned to the second sub-column address. For example, '0' may be assigned to the first sub-column address as a first column group bit, and '1' may be assigned to the second sub-column address as a second column group bit.

일례로, 열 주소가 제1 서브 열 주소 및 제2 서브 열 주소로 분할된 후, 제1 서브 열 주소의 특정 위치(예: 최상위 비트)에는 제1 열 그룹 비트가 추가될 수 있고, 제2 서브 열 주소의 특정 위치(예: 최상위 비트)에는 제2 열 그룹 비트가 추가될 수 있다.For example, after the column address is divided into a first sub-column address and a second sub-column address, a first column group bit may be added to a specific position (e.g., most significant bit) of the first sub-column address, and a second column group bit may be added. A second row group bit may be added to a specific position (e.g., most significant bit) of the sub-row address.

예를 들어, 제n 행의 사이즈가 4,056bits이고, 열의 사이즈가 256 bits라고 한다면, 한 행내에 16개의 열이 존재할 수 있다. 0 내지 7번 열은 첫번째 데이터 경로의 입력으로, 8 내지 15번 열은 두번째 데이터 경로의 입력으로 사용될 수 있다.For example, if the nth row size is 4,056 bits and the column size is 256 bits, there can be 16 columns in one row. Columns 0 to 7 can be used as inputs for the first data path, and columns 8 to 15 can be used as inputs for the second data path.

열 주소가 제1 서브 열 주소 및 제2 서브 열 주소로 분할된 후, 제1 서브 열 주소는 선택부의 제1 멀티플렉서의 입력으로 들어가고, 제2 서브 열 주소는 선택부의 제2 멀티플렉서의 입력으로 들어갈 수 있다. 제1 서브 열 주소에 대응하는 제1 데이터(예: 0번 열 데이터)는 제2 서브 열 주소에 대응하는 제2 데이터(예: 8번 열 데이터)와 쌍을 이뤄 벡터 연산의 피연산자로 사용될 수 있다. 이와 동일하게 (1,9), (2, 10) … (7, 15)이 쌍으로 벡터 연산의 피연산자로 사용될 수 있다((a,b)에서, a는 a번 열 데이터를, b는 b번 열 데이터를 의미한다). 위와 같이, 동일한 행에 포함된 열 데이터 쌍을 피연산자로 사용하기 위해서는, 한 행에 연산에 사용할 2개의 피연산자가 배치될 수 있다. 이를 통해 행 버퍼 히트 비율(Row Buffer Hit Ratio)을 높일 수 있어, 반복되는 PRE-ACT의 시간을 줄여서 추가적인 성능 향상이 가능할 수 있다.After the column address is divided into the first sub-column address and the second sub-column address, the first sub-column address enters the input of the first multiplexer of the selection section, and the second sub-column address enters the input of the second multiplexer of the selection section. You can. The first data (e.g., column 0 data) corresponding to the first sub-column address can be paired with the second data (e.g., column 8 data) corresponding to the second sub-column address and used as an operand of a vector operation. there is. Likewise, (1,9), (2, 10) … (7, 15) can be used as a pair as operands for vector operations (in (a,b), a refers to data in column a and b refers to data in column b). As above, in order to use a column data pair included in the same row as an operand, two operands to be used for the operation can be placed in one row. Through this, the Row Buffer Hit Ratio can be increased, which may lead to additional performance improvement by reducing the time of repeated PRE-ACT.

도 3에서 설명의 편의를 위하여 2개의 피연산자를 동시에 처리하는 메모리 장치를 기준으로 설명하나 이에 한정되지 않고, 일 실시예에 따른 메모리 장치는 복수 개(예: 2개)의 피연산자를 동시에 처리할 수 있다.In FIG. 3 , for convenience of explanation, the description is based on a memory device that processes two operands simultaneously, but the memory device according to an embodiment is not limited thereto and can process a plurality of operands (e.g., two) simultaneously. there is.

이를 위해, 메모리 컨트롤러로부터 공급된 열 주소는 제1 서브 열 주소 내지 제n(n은 2 이상의 자연수) 서브 열 주소로 각각 나누어 지고, 각각에 대응하는 열 데이터는 PIM 블록 연산의 n개의 피연산자로 사용될 수 있다. 제1 서브 열 주소 내지 제n 서브 열 주소는 각각 열 주소 0(Column Address 0) 내지 열 주소 n(Column Address n)으으로 지칭될 수 있다.For this purpose, the column address supplied from the memory controller is divided into the first sub-column address to the n-th sub-column address (n is a natural number of 2 or more), and the corresponding column data is used as n operands of the PIM block operation. You can. The first to nth sub-column addresses may be referred to as Column Address 0 to Column Address n, respectively.

열 주소가 제1 서브 열 주소 내지 제n서브 열 주소로 분할된 후, 제1 서브 열 주소는 선택부의 제1 멀티플렉서의 입력으로 들어가고, 제n 서브 열 주소는 선택부의 제n 멀티플렉서의 입력으로 들어갈 수 있다. 제1 서브 열 주소에 대응하는 제1 데이터 내지 제n 서브 열 주소에 대응하는 제n 데이터는 하나의 세트로 벡터 연산의 피연산자로 사용될 수 있다.After the column address is divided into the first sub-column address to the n-th sub-column address, the first sub-column address enters the input of the first multiplexer of the selection section, and the n-th sub-column address enters the input of the n-th multiplexer of the selection section. You can. The first data corresponding to the first sub-column address to the n-th data corresponding to the n-th sub-column address can be used as an operand of a vector operation as one set.

도 4a는 일 실시예에 따른 메모리 장치가 PIM 명령어를 수신할 경우의 동작을 설명하기 위한 도면이다.FIG. 4A is a diagram illustrating operations when a memory device receives a PIM command, according to an embodiment.

도 4a를 참조하면, 일 실시예에 따른 메모리 장치(예: 도 1의 메모리 장치(110))는 호스트 프로세서(예: 도 1의 호스트 프로세서(150))로부터의 PIM 명령어를 수신하여, 해당 명령어의 실행을 조정할 수 있다.Referring to FIG. 4A, a memory device (e.g., memory device 110 of FIG. 1) according to an embodiment receives a PIM instruction from a host processor (e.g., host processor 150 of FIG. 1) and executes the corresponding instruction. execution can be adjusted.

메모리 장치치는 열 주소를 수신하여, 제1 서브 열 주소와 제2 서브 열 주소를 각각 제1 멀티플렉서(240)와 제2 멀티플렉서(250)에 할당할 수 있다.The memory device may receive the row address and allocate the first sub-row address and the second sub-row address to the first multiplexer 240 and the second multiplexer 250, respectively.

제1 멀티플렉서(240)는 행 버퍼(230)에 포함된 행 데이터 중, 제1 서브 열 주소에 대응하는 제1 데이터를 선택할 수 있고, 제2 멀티플렉서(250)는 행 버퍼(230)에 포함된 행 데이터 중, 제2 서브 열 주소에 대응하는 제2 데이터를 선택할 수 있다. 이하에서, 제1 멀티플렉서(240)는 제1 선택기로, 제2 멀티플렉서(250)는 제2 선택기로 지칭될 수도 있다.The first multiplexer 240 may select first data corresponding to the first sub-column address among the row data included in the row buffer 230, and the second multiplexer 250 may select the first data corresponding to the first sub-column address from among the row data included in the row buffer 230. Among the row data, the second data corresponding to the second sub-column address can be selected. Hereinafter, the first multiplexer 240 may be referred to as a first selector, and the second multiplexer 250 may be referred to as a second selector.

제1 멀티플렉서(240)와 PIM 블록(260)은 제1 데이터 경로(201)로 연결되고, 제2 멀티플렉서(250)와 PIM 블록(260)은 제2 데이터 경로(203)로 연결될 수 있다. 보다 구체적으로, 제1 멀티플렉서(240)와 PIM 블록(260)의 연산기(270)는 제1 데이터 경로(201)로 연결되어 제1 데이터가 제1 피연산자로 제1 멀티플렉서(240)에서 연산기(270)로 전달될 수 있고, 제2 멀티플렉서(250)와 PIM 블록(260)의 연산기(270)는 제2 데이터 경로(203)로 연결되어 제2 데이터가 제2 피연산자로 제2 멀티플렉서(250)에서 연산기(270)로 전달될 수 있다. 다시 말해, 일 실시예에 따른 메모리 장치는 하나의 열 주소를 수신하여, 제1 피연산자 및 제2 피연산자를 동시에 독립적으로 연산기(270)에 전달하여, 되어 메모리 내부 대역폭(Internal Bandwidth)를 도 2c의 메모리 장치 대비 2배 사용할 수 있다.The first multiplexer 240 and the PIM block 260 may be connected to the first data path 201, and the second multiplexer 250 and the PIM block 260 may be connected to the second data path 203. More specifically, the first multiplexer 240 and the operator 270 of the PIM block 260 are connected to the first data path 201, so that the first data is used as the first operand in the operator 270 of the first multiplexer 240. ), and the second multiplexer 250 and the operator 270 of the PIM block 260 are connected to the second data path 203, so that the second data is transmitted from the second multiplexer 250 as the second operand. It may be transmitted to the calculator 270. In other words, the memory device according to one embodiment receives one column address and simultaneously and independently transfers the first and second operands to the operator 270, thereby reducing the memory internal bandwidth as shown in FIG. 2C. It can be used twice as much as memory devices.

도 4b는 일 실시예에 따른 메모리 장치가 정규 명령어를 수신할 경우의 동작을 설명하기 위한 도면이다.FIG. 4B is a diagram illustrating an operation of a memory device when receiving a regular command, according to an embodiment.

도 4b를 참조하면, 일 실시예에 따른 메모리 장치(예: 도 1의 메모리 장치(110))는 호스트 프로세서(예: 도 1의 호스트 프로세서(150))로부터의 정규 명령어를 수신하여, 해당 명령어의 실행을 조정할 수 있다.Referring to FIG. 4B, a memory device (e.g., memory device 110 of FIG. 1) according to an embodiment receives a regular instruction from a host processor (e.g., host processor 150 of FIG. 1) and executes the corresponding instruction. execution can be adjusted.

메모리 장치치는 열 주소를 수신하여, 제1 서브 열 주소와 제2 서브 열 주소를 각각 제1 멀티플렉서(240)와 제2 멀티플렉서(250)에 할당할 수 있다. 제1 멀티플렉서(240)는 행 버퍼(230)에 포함된 행 데이터 중, 제1 서브 열 주소에 대응하는 제1 데이터를 선택할 수 있고, 제2 멀티플렉서(250)는 행 버퍼(230)에 포함된 행 데이터 중, 제2 서브 열 주소에 대응하는 제2 데이터를 선택할 수 있다. The memory device may receive the row address and allocate the first sub-row address and the second sub-row address to the first multiplexer 240 and the second multiplexer 250, respectively. The first multiplexer 240 may select first data corresponding to the first sub-column address among the row data included in the row buffer 230, and the second multiplexer 250 may select the first data corresponding to the first sub-column address from among the row data included in the row buffer 230. Among the row data, the second data corresponding to the second sub-column address can be selected.

일 실시예에 따른 메모리 장치는 외부 채널과의 데이터 이동을 위한 제3 멀티플렉서(280)를 더 포함할 수 있다. 제3 멀티플렉서(280)는 제1 열 그룹 비트 또는 제2 열 그룹 비트를 제어 신호로 수신하여, 제1 데이터 또는 제2 데이터를 메모리 장치 외부로 출력할 수 있다. 예를 들어, 제3 멀티플렉서(280)는 제1 열 그룹 비트를 제어 신호로 수신할 경우, 제1 데이터를 메모리 장치 외부로 출력할 수 있고, 제2 열 그룹 비트를 제어 신호로 수신할 경우, 제2 데이터를 메모리 장치 외부로 출력할 수 있다.The memory device according to one embodiment may further include a third multiplexer 280 for data movement with external channels. The third multiplexer 280 may receive the first row group bits or the second row group bits as a control signal and output the first data or second data to the outside of the memory device. For example, when the third multiplexer 280 receives the first row group bits as a control signal, it can output the first data to the outside of the memory device, and when it receives the second row group bits as a control signal, The second data may be output to the outside of the memory device.

도 5a는 일 실시예에 따른 PIM 블록을 포함하는 메모리 장치의 예를 도시한 도면이다. 도 4a 내지 도 4b를 참조하여 설명한 내용은 도 5a에도 동일하게 적용될 수 있고, 중복되는 내용은 생략될 수 있다.FIG. 5A is a diagram illustrating an example of a memory device including a PIM block according to an embodiment. Contents described with reference to FIGS. 4A to 4B can be applied equally to FIG. 5A and overlapping content can be omitted.

도 5a를 참조하면, 일 실시예에 따른 PIM 블록은 레지스터(310), 제4 멀티플렉서(320), 제5 멀티플렉서(330) 및 연산기(340)를 포함할 수 있다.Referring to FIG. 5A, the PIM block according to one embodiment may include a register 310, a fourth multiplexer 320, a fifth multiplexer 330, and an operator 340.

일 실시예에 따른 메모리 시스템은 전술한 바와 같이 메모리 뱅크의 2개의 피연산자 사이의 벡터 연산을 수행할 수 있다. 나아가, 메모리 시스템은 행렬과 벡터 사이의 연산을 수행할 수 있다. 행렬과 벡터의 사이즈가 다르기 때문에 행렬과 벡터 사이의 연산은 한번에 수행할 수 없다. 이에, 일 실시예에 따른 메모리 시스템은 레지스터(310)에 벡터를 저장해두고, 레지스터(310)에서 연산기(340)로 하나씩 전달하는 방법을 통해 행렬과 벡터 사이의 연산을 수행할 수 있다.The memory system according to one embodiment may perform a vector operation between two operands of a memory bank as described above. Furthermore, the memory system can perform operations between matrices and vectors. Because the sizes of matrices and vectors are different, operations between matrices and vectors cannot be performed at once. Accordingly, the memory system according to one embodiment can perform operations between matrices and vectors by storing vectors in the register 310 and transferring them one by one from the register 310 to the operator 340.

레지스터(310)의 2개의 피연산자 사이의 제1 연산(예: 벡터 간 연산), 레지스터(310)의 피연산자와 메모리 뱅크의 피연산자 사이의 제2 연산(예: 행렬과 벡터 사이의 연산) 또한 수행할 수 있다. 예를 들어, 제1 벡터 연산을 수행하기 위하여, 연산기(340)는 제4 멀티플렉서(320)를 통해 레지스터(310)의 제1 피연산자 및 제2 피연산자를 수신할 수 있다. 제2 연산을 수행하기 위하여, 연산기(340)는 제4 멀티플렉서(320)를 통해 레지스터(310)의 제1 피연산자를 수신하고, 제5 멀티플렉서(330)를 통해 행 버퍼의 제2 피연산자를 수신할 수 있다.A first operation between two operands of the register 310 (e.g., an operation between vectors) and a second operation between an operand of the register 310 and an operand of a memory bank (e.g., an operation between a matrix and a vector) may also be performed. You can. For example, to perform the first vector operation, the operator 340 may receive the first and second operands of the register 310 through the fourth multiplexer 320. To perform the second operation, operator 340 may receive the first operand of the register 310 through the fourth multiplexer 320 and the second operand of the row buffer through the fifth multiplexer 330. You can.

도 5b는 일 실시예에 따른 복수의 메모리 뱅크들과 PIM 블록이 연결된 메모리 장치의 예를 도시한 도면이다. 도 4a 내지 도 4b를 참조하여 설명한 내용은 도 5b에도 동일하게 적용될 수 있고, 중복되는 내용은 생략될 수 있다.FIG. 5B is a diagram illustrating an example of a memory device in which a plurality of memory banks and a PIM block are connected, according to an embodiment. Contents described with reference to FIGS. 4A to 4B can be applied equally to FIG. 5B, and overlapping content can be omitted.

도 5b를 참조하면 메모리 뱅크(210-1)의 제1 멀티플렉서(240-1) 및 제2 멀티플렉서(250-1)는 각각 제6 멀티플렉서(510) 및 제7 멀티플렉서(520)에 연결될 수 있다. 마찬가지로, 메모리 뱅크(210-n)의 제1 멀티플렉서(240-n) 및 제2 멀티플렉서(250-n)는 각각 제6 멀티플렉서(510) 및 제7 멀티플렉서(520)에 연결될 수 있다.Referring to FIG. 5B, the first multiplexer 240-1 and the second multiplexer 250-1 of the memory bank 210-1 may be connected to the sixth multiplexer 510 and the seventh multiplexer 520, respectively. Likewise, the first multiplexer 240-n and the second multiplexer 250-n of the memory bank 210-n may be connected to the sixth multiplexer 510 and the seventh multiplexer 520, respectively.

복수의 메모리 뱅크들(210-1 내지 210-n)을 PIM 블록(260)과 연결하여 PIM 블록(260)의 프리퀀시(frequency)를 높일 수도 있고, 이를 통해 연산(예: 벡터 간 연산, 행렬과 벡터 간 연산 또는 행렬 간 연산)을 가속할 수 있다.The frequency of the PIM block 260 may be increased by connecting a plurality of memory banks 210-1 to 210-n with the PIM block 260, and through this, operations (e.g., inter-vector operations, matrix and It can accelerate inter-vector operations or inter-matrix operations.

PIM 블록(260)의 프리퀀시에 맞추어서 데이터를 입력량의 증가가 필요하나, 메모리 코어의 프리퀀시는 올리기 힘들기 때문에, 메모리 뱅크들(210-1 내지 210-n)에서 PIM 블록(260)으로 보내는 입력의 병렬성을 증가시킬 수 있다.It is necessary to increase the amount of data input in accordance with the frequency of the PIM block 260, but since it is difficult to increase the frequency of the memory core, the amount of input sent from the memory banks 210-1 to 210-n to the PIM block 260 is increased. Parallelism can be increased.

도 6은 일 실시예에 따른 메모리 장치의 동작 방법을 설명하기 위한 순서도이다.FIG. 6 is a flowchart illustrating a method of operating a memory device according to an embodiment.

설명의 편의를 위해, 단계들(610 내지 640)은 도 1에 도시된 메모리 장치(110)를 사용하여 수행되는 것으로 기술된다. 그러나 이 단계들(610 내지 640)은 어떤 다른 적절한 전자 기기를 통해, 그리고 어떤 적절한 시스템 내에서도 사용될 수 있을 것이다.For convenience of explanation, steps 610 to 640 are described as being performed using the memory device 110 shown in FIG. 1 . However, these steps 610-640 may be used via any other suitable electronic device and within any suitable system.

나아가, 도 6의 동작은 도시된 순서 및 방식으로 수행될 수 있지만, 도시된 실시예의 사상 및 범위를 벗어나지 않으면서 일부 동작의 순서가 변경되거나 일부 동작이 생략될 수 있다. 도 6에 도시된 다수의 동작은 병렬로 또는 동시에 수행될 수 있다.Furthermore, although the operations of FIG. 6 may be performed in the order and manner shown, the order of some operations may be changed or some operations may be omitted without departing from the spirit and scope of the illustrated embodiment. Multiple operations shown in Figure 6 may be performed in parallel or simultaneously.

단계(610)에서, 일 실시예에 따른 메모리 장치(110)는 행 주소 및 열 주소를 수신할 수 있다. 열 주소는 제1 서브 열 주소 및 제2 서브 열 주소를 포함하고, 제1 서브 열 주소에는 제1 열 그룹 비트가 할당되고, 제2 서브 열 주소에는 제2 열 그룹 비트가 할당될 수 있다.In step 610, the memory device 110 according to one embodiment may receive a row address and a column address. The column address includes a first sub-column address and a second sub-column address, and a first column group bit may be assigned to the first sub-column address, and a second column group bit may be assigned to the second sub-column address.

단계(620)에서, 일 실시예에 따른 메모리 장치(110)는 행 주소에 대응하는 행의 데이터를 메모리 뱅크의 행 버퍼에 저장할 수 있다.In step 620, the memory device 110 according to an embodiment may store data of the row corresponding to the row address in the row buffer of the memory bank.

단계(630)에서, 일 실시예에 따른 메모리 장치(110)는 행 버퍼에 저장된 데이터 중에서, 열 주소에 대응하는 제1 데이터 및 제2 데이터를 선택할 수 있다. 메모리 장치(110)는 제1 서브 열 주소에 기초하여, 제1 데이터를 선택하고, 제2 서브 열 주소에 기초하여, 제2 데이터를 선택할 수 있다.In step 630, the memory device 110 according to an embodiment may select first data and second data corresponding to the column address from data stored in the row buffer. The memory device 110 may select first data based on the first sub-row address and select second data based on the second sub-row address.

단계(640)에서, 일 실시예에 따른 메모리 장치(110)는 메모리 뱅크와 PIM 블록 사이에 연결된 제1 데이터 경로를 통해 제1 데이터가 PIM 블록으로 전달할 수 있다.In step 640, the memory device 110 according to an embodiment may transmit first data to the PIM block through a first data path connected between the memory bank and the PIM block.

단계(650)에서, 일 실시예에 따른 메모리 장치(110)는 메모리 뱅크와 PIM 블록 사이에 연결된 제2 데이터 경로를 통해 제2 데이터가 PIM 블록으로 전달할 수 있다.In step 650, the memory device 110 according to an embodiment may transmit second data to the PIM block through a second data path connected between the memory bank and the PIM block.

제1 데이터 및 제2 데이터를 동시에 PIM 블록에 전달할 수 있다. PIM 블록은 제1 데이터를 제1 피연산자로 수신할 수 있고, 제2 데이터를 제2 피연산자로 수신하여, 제1 피연산자 및 제2 피연산자 사이의 연산을 수행할 수 있다.The first data and the second data can be transmitted to the PIM block at the same time. The PIM block may receive first data as a first operand, receive second data as a second operand, and perform an operation between the first and second operands.

이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The embodiments described above may be implemented with hardware components, software components, and/or a combination of hardware components and software components. For example, the devices, methods, and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, and a field programmable gate (FPGA). It may be implemented using a general-purpose computer or a special-purpose computer, such as an array, programmable logic unit (PLU), microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and software applications that run on the operating system. Additionally, a processing device may access, store, manipulate, process, and generate data in response to the execution of software. For ease of understanding, a single processing device may be described as being used; however, those skilled in the art will understand that a processing device includes multiple processing elements and/or multiple types of processing elements. It can be seen that it may include. For example, a processing device may include a plurality of processors or one processor and one controller. Additionally, other processing configurations, such as parallel processors, are possible.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.Software may include computer programs, code, instructions, or combinations thereof, that configure a processing unit to operate as desired, or that operate independently or collectively. You can command. Software and/or data may be used on any type of machine, component, physical device, virtual equipment, computer storage medium or device to be interpreted by or to provide instructions or data to a processing device. , or may be permanently or temporarily embodied in a transmitted signal wave. Software may be distributed over networked computer systems and stored or executed in a distributed manner. Software and data may be stored on a computer-readable recording medium.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer-readable medium. Computer-readable media may include program instructions, data files, data structures, etc., singly or in combination. Program instructions recorded on the medium may be specially designed and configured for the embodiment or may be known and available to those skilled in the art of computer software. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic media such as floptical disks. -Includes optical media (magneto-optical media) and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, etc. Examples of program instructions include machine language code, such as that produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter, etc.

이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.Although the embodiments have been described with limited drawings as described above, those skilled in the art can apply various technical modifications and variations based on the above. For example, the described techniques are performed in a different order than the described method, and/or components of the described system, structure, device, circuit, etc. are combined or combined in a different form than the described method, or other components are used. Alternatively, appropriate results may be achieved even if substituted or substituted by an equivalent.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents of the claims also fall within the scope of the claims described below.

Claims (26)

복수의 메모리 뱅크들을 포함하는 메모리 뱅크부; 및
복수의 PIM 블록들을 포함하는 연산부;
를 포함하고,
상기 메모리 뱅크는
복수의 행과 복수의 열로 배열된 메모리 셀들의 어레이;
상기 복수의 행들 중 행 주소에 대응하는 행의 데이터를 저장하는 행 버퍼(row buffer); 및
상기 행 버퍼에 저장된 데이터 중에서, 열 주소에 대응하는 제1 데이터 및 제2 데이터를 선택하는 선택부
를 포함하고,
상기 선택부와 상기 PIM 블록 사이에 연결된 제1 데이터 경로(data path)를 통해 상기 제1 데이터가 상기 PIM 블록으로 전달되고, 상기 선택부와 상기 PIM 블록 사이에 연결된 제2 데이터 경로를 통해 상기 제2 데이터가 상기 PIM 블록으로 전달되는, 메모리 장치.
A memory bank section including a plurality of memory banks; and
A computational unit comprising multiple PIM blocks;
Including,
The above memory bank
An array of memory cells arranged in multiple rows and multiple columns;
A row buffer for storing data of a row corresponding to a row address among the above plurality of rows; and
A selection unit that selects the first data and the second data corresponding to the column address among the data stored in the above row buffer.
Including,
A memory device, wherein the first data is transferred to the PIM block through a first data path connected between the selection unit and the PIM block, and the second data is transferred to the PIM block through a second data path connected between the selection unit and the PIM block.
제1항에 있어서,
상기 열 주소는
제1 서브 열 주소 및 제2 서브 열 주소를 포함하고,
상기 제1 서브 열 주소에는 제1 열 그룹 비트(column group bit)가 할당되고, 상기 제2 서브 열 주소에는 제2 열 그룹 비트가 할당되는, 메모리 장치.
According to paragraph 1,
The above column address is
Includes a first sub-column address and a second sub-column address,
A first column group bit is assigned to the first sub-column address, and a second column group bit is assigned to the second sub-column address.
제2항에 있어서,
상기 선택부는
상기 제1 서브 열 주소에 기초하여, 상기 제1 데이터를 선택하는 제1 선택기; 및
상기 제2 서브 열 주소에 기초하여, 상기 제2 데이터를 선택하는 제2 선택기
를 포함하는, 메모리 장치.
According to paragraph 2,
The selection section
a first selector that selects the first data based on the first sub-column address; and
A second selector for selecting the second data based on the second sub-column address.
A memory device containing.
제3항에 있어서,
상기 제1 선택기와 상기 PIM 블록은 상기 제1 데이터 경로로 연결되고, 상기 제2 선택기와 상기 PIM 블록은 상기 제2 데이터 경로로 연결되는, 메모리 장치.
According to paragraph 3,
The first selector and the PIM block are connected to the first data path, and the second selector and the PIM block are connected to the second data path.
제3항에 있어서,
상기 PIM 블록은
상기 제1 선택기로부터 상기 제1 데이터를 제1 피연산자로 수신하고, 상기 제2 선택기로부터 상기 제2 데이터를 제2 피연산자로 수신하고, 상기 제1 피연산자 및 상기 제2 피연산자 사이의 연산을 수행하는, 메모리 장치.
According to paragraph 3,
The PIM block is
Receiving the first data as a first operand from the first selector, receiving the second data as a second operand from the second selector, and performing an operation between the first operand and the second operand, memory device.
제5항에 있어서,
상기 행 주소에 대응하는 행의 데이터에는
상기 제1 피연산자와 상기 제2 피연산자가 쌍(pair)으로 배치되는, 메모리 장치.
According to clause 5,
In the data of the row corresponding to the above row address,
A memory device in which the first operand and the second operand are arranged as a pair.
제5항에 있어서,
상기 PIM 블록은
상기 제1 피연산자와 상기 제2 피연산자를 동시에 수신하는, 메모리 장치.
According to clause 5,
The PIM block is
A memory device that simultaneously receives the first operand and the second operand.
제2항에 있어서,
상기 제1 열 그룹 비트 또는 제2 열 그룹 비트를 제어 신호로 수신하여, 상기 제1 데이터 또는 상기 제2 데이터를 상기 메모리 장치 외부로 출력하는 제3 멀티플렉서(multiplexer)
를 더 포함하는, 메모리 장치.
According to paragraph 2,
A third multiplexer that receives the first row group bits or the second row group bits as a control signal and outputs the first data or the second data to the outside of the memory device.
A memory device further comprising:
제1항에 있어서,
상기 PIM 블록은
레지스터; 및
상기 레지스터에 저장된 데이터 및 상기 선택부에서 출력되는 제1 데이터 중 어느 하나를 제1 피연산자로 선택하는 제4 멀티플렉서
를 포함하는 메모리 장치.
According to paragraph 1,
The PIM block is
register; and
A fourth multiplexer that selects one of the data stored in the register and the first data output from the selection unit as the first operand.
A memory device containing a.
제9항에 있어서,
상기 PIM 블록은
상기 레지스터에 저장된 데이터 및 상기 선택부에서 출력되는 제2 데이터 중 어느 하나를 제2 피연산자로 선택하는 제5 멀티플렉서; 및
상기 제1 피연산자 및 상기 제2 피연산자 사이의 연산을 수행하는 연산기
를 포함하는, 메모리 장치.
According to clause 9,
The PIM block is
a fifth multiplexer that selects one of the data stored in the register and the second data output from the selection unit as a second operand; and
An operator that performs an operation between the first operand and the second operand
A memory device containing.
제1항에 있어서,
상기 메모리 뱅크부는
복수의 동적 랜덤 액세스 메모리(DRAM) 뱅크들을 포함하는, 메모리 장치.
According to paragraph 1,
The memory bank unit is
A memory device comprising a plurality of dynamic random access memory (DRAM) banks.
제1항에 있어서,
상기 복수의 메모리 뱅크들로부터 상기 복수의 메모리 뱅크들 각각에 대응하는 제1 데이터들을 수신하여, 제1 피연산자를 상기 PIM 블록으로 전달하는 제6 멀티플렉서; 및
상기 복수의 메모리 뱅크들로부터 상기 복수의 메모리 뱅크들 각각에 대응하는 제2 데이터들을 수신하여, 제2 피연산지를 상기 PIM 블록으로 전달하는 제7 멀티플렉서
를 더 포함하는, 메모리 장치.
According to paragraph 1,
a sixth multiplexer that receives first data corresponding to each of the plurality of memory banks from the plurality of memory banks and transmits a first operand to the PIM block; and
A seventh multiplexer that receives second data corresponding to each of the plurality of memory banks from the plurality of memory banks and delivers a second operand to the PIM block
A memory device further comprising:
메모리 뱅크 및 PIM 블록을 포함하는 메모리 장치의 동작 방법에 있어서,
행 주소(row address) 및 열 주소(column address)를 수신하는 단계;
상기 행 주소에 대응하는 행의 데이터를 상기 메모리 뱅크의 행 버퍼에 저장하는 단계;
상기 행 버퍼에 저장된 데이터 중에서, 상기 열 주소에 대응하는 제1 데이터 및 제2 데이터를 선택하는 단계;
상기 메모리 뱅크와 상기 PIM 블록 사이에 연결된 제1 데이터 경로(data path)를 통해 상기 제1 데이터가 상기 PIM 블록으로 전달하는 단계; 및
상기 메모리 뱅크와 상기 PIM 블록 사이에 연결된 제2 데이터 경로를 통해 상기 제2 데이터가 상기 PIM 블록으로 전달하는 단계
를 포함하는 메모리 장치의 동작 방법.
In a method of operating a memory device including a memory bank and a PIM block,
Receiving a row address and a column address;
storing row data corresponding to the row address in a row buffer of the memory bank;
selecting first data and second data corresponding to the column address from data stored in the row buffer;
transferring the first data to the PIM block through a first data path connected between the memory bank and the PIM block; and
Passing the second data to the PIM block through a second data path connected between the memory bank and the PIM block.
A method of operating a memory device comprising:
제13항에 있어서,
상기 열 주소는
제1 서브 열 주소 및 제2 서브 열 주소를 포함하고,
상기 제1 서브 열 주소에는 제1 열 그룹 비트(column group bit)가 할당되고, 상기 제2 서브 열 주소에는 제2 열 그룹 비트가 할당되는, 메모리 장치의 동작 방법.
According to clause 13,
The above column address is
Includes a first sub-column address and a second sub-column address,
A method of operating a memory device, wherein a first column group bit is assigned to the first sub-column address, and a second column group bit is assigned to the second sub-column address.
제14항에 있어서,
상기 선택하는 단계는
상기 제1 서브 열 주소에 기초하여, 상기 제1 데이터를 선택하는 단계; 및
상기 제2 서브 열 주소에 기초하여, 상기 제2 데이터를 선택하는 단계
를 포함하는, 메모리 장치의 동작 방법.
According to clause 14,
The above selection steps are
selecting the first data based on the first sub-column address; and
Selecting the second data based on the second sub-column address
A method of operating a memory device, including.
제15항에 있어서,
상기 PIM 블록에서, 상기 제1 데이터를 제1 피연산자로 수신하는 단계;
상기 PIM 블록에서, 상기 제2 데이터를 제2 피연산자로 수신하는 단계; 및
상기 PIM 블록에서, 상기 제1 피연산자 및 상기 제2 피연산자 사이의 연산을 수행하는 단계
를 더 포함하는, 메모리 장치의 동작 방법.
According to clause 15,
In the PIM block, receiving the first data as a first operand;
In the PIM block, receiving the second data as a second operand; and
In the PIM block, performing an operation between the first operand and the second operand.
A method of operating a memory device further comprising:
제16항에 있어서,
상기 행 주소에 대응하는 행의 데이터에는
상기 제1 피연산자와 상기 제2 피연산자가 쌍(pair)으로 배치되는, 메모리 장치의 동작 방법.
According to clause 16,
The data of the row corresponding to the above row address includes
A method of operating a memory device in which the first operand and the second operand are arranged as a pair.
제16항에 있어서,
상기 PIM 블록은
상기 제1 피연산자와 상기 제2 피연산자를 동시에 수신하는, 메모리 장치의 동작 방법.
According to clause 16,
The PIM block is
A method of operating a memory device, receiving the first operand and the second operand simultaneously.
제14항에 있어서,
상기 제1 열 그룹 비트 또는 제2 열 그룹 비트를 제어 신호로 수신하여, 상기 제1 데이터 또는 상기 제2 데이터를 상기 메모리 장치 외부로 출력하는 단계
를 더 포함하는, 메모리 장치의 동작 방법.
According to clause 14,
Receiving the first column group bit or the second column group bit as a control signal and outputting the first data or the second data to the outside of the memory device.
A method of operating a memory device further comprising:
제13항에 있어서,
상기 메모리 뱅크는
복수의 동적 랜덤 액세스 메모리(DRAM) 뱅크들을 포함하는, 메모리 장치의 동작 방법.
According to clause 13,
The memory bank is
A method of operating a memory device comprising a plurality of dynamic random access memory (DRAM) banks.
하드웨어와 결합되어 제13항 내지 제20항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
A computer program combined with hardware and stored in a medium to execute the method of any one of claims 13 to 20.
데이터 연산을 수행하는 로직 회로를 포함하는 연산기;
복수의 행과 복수의 열로 배열된 메모리 셀들;
상기 메모리 셀의 행 데이터를 저장하는 행 버퍼;
상기 행 버퍼와 상기 연산기를 연결하는 제1 경로;
상기 행 버퍼와 상기 연산기를 연결하는, 상기 제1 경로와 독립된 제2 경로; 및
상기 행 버퍼에 저장된 제1 데이터를 선택하여 상기 제1 경로로 전달하고, 상기 행 버퍼에 저장된 상기 제1 데이터와 다른 제2 데이터를 선택하여 상기 제2 경로로 전달하는 선택부
를 포함하는 메모리 장치.
an operator including logic circuits that perform data operations;
Memory cells arranged in a plurality of rows and a plurality of columns;
a row buffer storing row data of the memory cells;
a first path connecting the row buffer and the operator;
a second path independent of the first path connecting the row buffer and the operator; and
A selection unit that selects first data stored in the row buffer and transmits it to the first path, and selects second data different from the first data stored in the row buffer and transmits it to the second path.
A memory device containing a.
제22항에 있어서,
상기 제1 경로에 연결된 제1 멀티플렉서;
상기 제2 경로에 연결된 제2 멀티플렉서; 및
상기 제1 멀티플렉서 및 상기 제2 멀티플렉서와 연결된 레지스터
를 더 포함하는 메모리 장치
According to clause 22,
a first multiplexer connected to the first path;
a second multiplexer connected to the second path; and
Registers connected to the first multiplexer and the second multiplexer
A memory device further comprising
제23항에 있어서,
상기 레지스터는 상기 제1 경로에 연결되고, 상기 제2 경로에는 연결되지 않는, 메모리 장치.
According to clause 23,
The register is coupled to the first path and not coupled to the second path.
제22항에 있어서,
상기 제1 경로 및 상기 제2 경러와 연결되고 상기 제1 데이터 또는 상기 제2 데이터를 상기 메모리 장치 외부로 출력하는 멀티플렉서를 더 포함하는, 메모리 장치.
According to clause 22,
The memory device further includes a multiplexer connected to the first path and the second path and outputting the first data or the second data to the outside of the memory device.
제22항에 있어서,
상기 선택부는 상기 제1 데이터를 선택하는 제1열 디코더 및 상기 제2 데이터를 선택하는 제2열 디코더를 포함하는, 메모리 장치.
According to clause 22,
The selection unit includes a first row decoder that selects the first data and a second row decoder that selects the second data.
KR1020230068327A 2023-01-27 2023-05-26 Memory device and an operation method thereof KR20240118633A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US18/499,551 US20240257851A1 (en) 2023-01-27 2023-11-01 Memory device and method of operating the same
EP24152862.9A EP4407620A1 (en) 2023-01-27 2024-01-19 Memory device and method of operating the same
CN202410097342.3A CN118412029A (en) 2023-01-27 2024-01-23 Memory device and method of operating the same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20230010611 2023-01-27
KR1020230010611 2023-01-27

Publications (1)

Publication Number Publication Date
KR20240118633A true KR20240118633A (en) 2024-08-05

Family

ID=92378837

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230068327A KR20240118633A (en) 2023-01-27 2023-05-26 Memory device and an operation method thereof

Country Status (1)

Country Link
KR (1) KR20240118633A (en)

Similar Documents

Publication Publication Date Title
US12019895B2 (en) Apparatuses and methods for data movement
US11693657B2 (en) Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems
US10153042B2 (en) In-memory computational device with bit line processors
US10976943B2 (en) Apparatuses and methods to change data category values
US12067401B2 (en) Stream processor with low power parallel matrix multiply pipeline
US11550742B2 (en) Apparatus and methods for in data path compute operations
CN111656339B (en) Memory device and control method thereof
US11934824B2 (en) Methods for performing processing-in-memory operations, and related memory devices and systems
CN111353575A (en) Tiled format for convolutional neural networks
US11605420B2 (en) Memory with artificial intelligence mode
JP7550614B2 (en) METHOD FOR DATA PLACEMENT FOR IN-MEMORY COMPUTING AND MEMORY MODULE HAVING APPLIED THERETO
EP3846036B1 (en) Matrix storage method, matrix access method, apparatus and electronic device
CN111338974A (en) Tiling algorithm for matrix math instruction set
KR20240118633A (en) Memory device and an operation method thereof
EP4407620A1 (en) Memory device and method of operating the same
CN118412029A (en) Memory device and method of operating the same

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right