KR102430982B1 - Data processing system and method for accessing heterogeneous memory system with processing units - Google Patents

Data processing system and method for accessing heterogeneous memory system with processing units Download PDF

Info

Publication number
KR102430982B1
KR102430982B1 KR1020210117942A KR20210117942A KR102430982B1 KR 102430982 B1 KR102430982 B1 KR 102430982B1 KR 1020210117942 A KR1020210117942 A KR 1020210117942A KR 20210117942 A KR20210117942 A KR 20210117942A KR 102430982 B1 KR102430982 B1 KR 102430982B1
Authority
KR
South Korea
Prior art keywords
hbm
memory
index value
data
data array
Prior art date
Application number
KR1020210117942A
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 CN202210651283.0A priority Critical patent/CN115469800A/en
Priority to EP22178305.3A priority patent/EP4102377A1/en
Priority to US17/837,286 priority patent/US11880590B2/en
Application granted granted Critical
Publication of KR102430982B1 publication Critical patent/KR102430982B1/en
Priority to US18/531,094 priority patent/US20240103755A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0661Format or protocol conversion arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Described are a data processing system accessing a heterogeneous memory system including a processing part, and a method thereof. The heterogeneous memory system comprises a high-bandwidth memory (HBM) including a memory module and a processing-in-memory (PIM) circuit, and is combined with a memory controller. The memory controller, when an operation is executed by the PIM circuit of the HBM, searches the memory module or the HBM for a data array required for the operation by using a border index value, and creates a memory module instruction set and an HBM instruction set, using designated physical address spaces, in the memory module and the HBM, respectively. Therefore, the present invention is capable of achieving efficiency in terms of capacity and bandwidth when compared to a single-memory system.

Description

프로세싱부를 포함하는 이종 메모리 시스템을 억세스하는 데이터 처리 시스템 및 방법 {Data processing system and method for accessing heterogeneous memory system with processing units}{Data processing system and method for accessing heterogeneous memory system with processing units}

본 발명은 장치들(apparatuses) 및 방법들(methods)에 관한 것으로서, 더욱 상세하게는 프로세싱부를 포함하는 이종 메모리 시스템을 억세스하는 데이터 처리 시스템 및 방법에 관한 것이다.The present invention relates to apparatuses and methods, and more particularly, to a data processing system and method for accessing a heterogeneous memory system including a processing unit.

전형적으로 메모리 프로세싱은 단일(single) 메모리에 대해서 수행되도록 구성된다. 메모리 프로세싱의 성능 및 특성이 단일 메모리에 의해 결정될 수 있다. 큰 메모리 용량을 요구하는 어플리케이션 프로세싱은 고용량의 메모리 모듈, 예컨대 DIMM(Dual In-line Memory Module)을 활용할 수 있다. 이에 대해, 높은 대역폭을 요구하는 어플리케이션 프로세싱은 고대역폭의 메모리 장치, 예컨대 HBM(High Bandwidth Memory)를 활용할 수 있다. 이처럼 단일 메모리는 고용량의 DIMM 또는 고대역폭의 HBM으로 활용될 수 있다.Typically memory processing is configured to be performed on a single memory. The performance and characteristics of memory processing may be determined by a single memory. Application processing that requires a large memory capacity may utilize a high-capacity memory module, such as a dual in-line memory module (DIMM). In contrast, application processing that requires high bandwidth uses a high bandwidth memory device, such as a high bandwidth memory (HBM). can be utilized As such, a single memory can be utilized as a high-capacity DIMM or a high-bandwidth HBM.

고용량의 DIMM으로 구현된 메모리를 활용하는 어플리케이션 프로세싱에서 간헐적으로 고대역폭 메모리 동작이 수행될 수 있다. 이를 지원하기 위해 다수의 DIMM들을 사용하게 되면 어플리케이션의 필요 용량 이상의 메모리 용량이 잉여될(excess) 수 있다. 이와 반대로, 고대역폭의 HBM으로 구현된 메모리를 활용하는 어플리케이션 프로세싱은 가끔의 고용량 메모리 동작을 수행할 수 있는데, 이를 지원하기 위해 다수의 HBM들을 사용하게 되면 어플리케이션이 요구하는 대역폭을 초과하게 되어 어플리케이션 실행 속도가 느려질(slow) 수 있다.High-bandwidth memory operations may be intermittently performed in application processing utilizing memory implemented with high-capacity DIMMs. When a plurality of DIMMs are used to support this, a memory capacity exceeding the required capacity of an application may be excessive. Conversely, application processing utilizing memory implemented with high-bandwidth HBM may perform occasional high-capacity memory operation. It can be slow.

이에 따라, 메모리 용량 및 대역폭 둘 다를 지원하기 위해 DIMM 및 HBM으로 구현된 이종 메모리 시스템이 요구된다.Accordingly, heterogeneous memory systems implemented with DIMMs and HBMs are required to support both memory capacity and bandwidth.

본 발명의 목적은 프로세싱부를 포함하는 이종 메모리 시스템을 억세스하는 데이터 처리 시스템 및 방법을 제공하는 데 있다.It is an object of the present invention to provide a data processing system and method for accessing a heterogeneous memory system including a processing unit.

본 발명의 실시예들에 따른 시스템은, 데이터를 저장하도록 구성되는 이종 메모리 시스템, 상기 이종 메모리 시스템은 메모리 모듈 및 메모리-내-처리(Processing-In-Memory: PIM) 회로를 포함하는 고대역 메모리(HBM)를 포함하고; 상기 시스템의 연산 작업들을 실행하도록 구성되는 호스트 프로세서, 상기 호스트 프로세서는 상기 연산 작업들 중 일부가 상기 PIM 회로에서 실행되도록 할당하고; 및 상기 호스트 프로세서에 의해 오프로드된 커널에 따른 연산 작업이 상기 HBM의 상기 PIM 회로에서 실행될 때, 상기 연산 작업에 요구되는 데이터 어레이가 존재하는 메모리를 판단하는 기준이 되는 보더 인덱스 값을 이용하여 상기 데이터 어레이를 상기 메모리 모듈 또는 상기 HBM으로부터 검색하는 메모리 콘트롤러를 포함한다.A system according to embodiments of the present invention includes a heterogeneous memory system configured to store data, wherein the heterogeneous memory system includes a high-bandwidth memory including a memory module and a Processing-In-Memory (PIM) circuit. (HBM); a host processor configured to execute computational tasks of the system, the host processor allocating some of the computational tasks to be executed in the PIM circuit; and when a calculation operation according to the kernel offloaded by the host processor is executed in the PIM circuit of the HBM, using a border index value as a criterion for determining a memory in which a data array required for the calculation operation exists and a memory controller that retrieves an array of data from the memory module or the HBM.

본 발명의 실시예들에 따른 장치는, 제1 데이터를 저장하도록 구성되는 메모리 모듈; 제2 데이터를 저장하도록 구성되는 고대역 메모리(HBM), 상기 HBM에는 다수의 메모리 다이들이 스택되고, 상기 메모리 다이들 각각은 연산 작업을 수행하는 메모리-내-처리(Processing-In-Memory: PIM) 회로를 포함하고; 및 상기 PIM 회로의 상기 연산 작업에 요구되는 데이터 어레이가 존재하는 메모리를 판단하는 기준이 되는 보더 인덱스 값을 이용하여 상기 데이터 어레이를 상기 메모리 모듈 또는 상기 HBM으로부터 검색하도록 구성되는 메모리 콘트롤러를 포함하고, 상기 메모리 콘트롤러는 상기 데이터 어레이와 관련하여 상기 메모리 모듈에 지정된 물리 주소 공간을 사용하는 메모리 모듈 명령어 세트 및 상기 HBM에 지정된 물리 주소 공간을 사용하는 HBM 명령어 세트를 생성한다.An apparatus according to embodiments of the present invention includes: a memory module configured to store first data; A high-bandwidth memory (HBM) configured to store a second data, the HBM stacked with a plurality of memory dies, each of the memory dies performing a computational operation in a Processing-In-Memory (PIM) ) comprising a circuit; and a memory controller configured to retrieve the data array from the memory module or the HBM using a border index value as a criterion for determining a memory in which the data array required for the operation of the PIM circuit exists, The memory controller generates, in relation to the data array, a memory module instruction set using a physical address space specified in the memory module and an HBM instruction set using a physical address space specified in the HBM.

본 발명의 실시예들에 따른 메모리 모듈 및 메모리-내-처리(Processing-In-Memory: PIM) 회로를 포함하는 고대역 메모리(HBM)를 포함하는 이종 메모리 시스템을 포함하는 시스템에서 구현되는 방법은, 호스트 프로세서에 의해 커널을 메모리 콘트롤러에 오프로드하는 단계; 상기 오프로드된 커널의 작업 코드의 실행에 따라 처리될 데이터 어레이가 존재하는 메모리를 판단하는 기준이 되는 보더 인덱스 값을, 상기 메모리 콘트롤러에 의해, 저장하는 단계; 상기 오프로드된 커널에 대한 정보를, 상기 메모리 콘트롤러에 의해, 수신하는 단계, 상기 오프로드된 커널에 대한 정보는 상기 데이터 어레이의 식별 번호와 상기 식별 번호에 해당하는 상기 데이터 어레이에 대한 베이스 어드레스, 인덱스 값 및 데이터 사이즈를 포함하고, 상기 인덱스 값은 상기 베이스 어드레스와의 오프셋을 나타내고; 상기 데이터 어레이의 상기 인덱스 값과 상기 보더 인덱스 값을, 상기 메모리 콘트롤러에 의해, 비교하는 단계; 비교 결과, 상기 인덱스 값이 상기 보더 인덱스 값 보다 작으면 상기 데이터 어레이가 상기 HBM에 존재하는 것으로 판단하고, 상기 인덱스 값이 상기 보더 인덱스 값 보다 크면 상기 데이터 어레이가 상기 메모리 모듈에 존재하는 것으로, 상기 메모리 콘트롤러에 의해, 판단하는 단계; 상기 메모리 모듈에 저장된 상기 데이터 어레이를 이용하여 상기 HBM의 상기 PIM 회로에서 상기 연산 작업을 실행하도록 지시하는 메모리 모듈 명령어 세트를, 상기 메모리 콘트롤러에 의해, 생성하는 단계; 및 상기 HBM에 저장된 상기 데이터 어레이를 이용하여 상기 HBM의 상기 PIM 회로에서 상기 연산 작업을 실행하도록 지시하는 HBM 명령어 세트를, 상기 메모리 콘트롤러에 의해, 생성하는 단계를 포함한다.A method implemented in a system including a heterogeneous memory system including a high-bandwidth memory (HBM) including a memory module and a Processing-In-Memory (PIM) circuit according to embodiments of the present invention , offloading the kernel to the memory controller by the host processor; storing, by the memory controller, a border index value serving as a criterion for determining a memory in which a data array to be processed according to the execution of the working code of the offloaded kernel exists; Receiving, by the memory controller, information on the offloaded kernel, the information on the offloaded kernel includes an identification number of the data array and a base address for the data array corresponding to the identification number; an index value and a data size, wherein the index value indicates an offset from the base address; comparing, by the memory controller, the index value of the data array and the border index value; As a result of comparison, if the index value is less than the border index value, it is determined that the data array exists in the HBM, and if the index value is greater than the border index value, the data array exists in the memory module, determining, by the memory controller; generating, by the memory controller, a memory module instruction set instructing to execute the arithmetic operation in the PIM circuit of the HBM using the data array stored in the memory module; and generating, by the memory controller, an HBM instruction set instructing to execute the arithmetic operation in the PIM circuit of the HBM using the data array stored in the HBM.

본 발명의 시스템은, 이종 메모리 시스템을 이용함에 따라 어플리케이션 실행 시간을 감소시키고 불필요한 용량의 확장을 피할 수 있다. 또한, 오프로드된 커널에 대하여 지정된 물리 주소 공간을 사용하는 메모리 모듈 명령어 세트와 HBM 명령어 세트를 생성함에 따라 별도의 주소 변환 과정을 필요로 하지 않는다. 이에 따라, 단일 메모리로 구성된 시스템 대비 용량 및 대역폭 측면에서 효율적이다.The system of the present invention can reduce application execution time and avoid unnecessary capacity expansion by using a heterogeneous memory system. In addition, since the memory module instruction set and the HBM instruction set using the physical address space specified for the offloaded kernel are generated, a separate address translation process is not required. Accordingly, it is more efficient in terms of capacity and bandwidth compared to a system configured with a single memory.

도 1은 본 발명의 예시적인 실시예에 따른 이종 메모리 시스템을 포함하는 데이터 처리 시스템을 나타내는 블록도이다.
도 2는 도 1의 메모리 모듈(들)을 설명하는 도면이다.
도 3은 도 1의 HBM을 설명하는 도면이다.
도 4는 도 1의 메모리 콘트롤러를 설명하는 블록 다이어그램이다.
도 5는 도 1의 이종 메모리 시스템에서 사용되는 명령어 세트들을 설명하는 도면이다.
도 6 내지 도 8은 도 4의 메모리 콘트롤러의 동작을 설명하는 플로우 다이어그램들이다.
도 9는 본 발명의 실시예들에 따른 이종 메모리 시스템을 포함하는 시스템을 나타내는 블록 다이어그램이다.
도 10은 발명의 실시예들에 따른 이종 메모리 시스템이 적용된 데이터 센터를 나타낸 도면이다.
1 is a block diagram illustrating a data processing system including a heterogeneous memory system according to an exemplary embodiment of the present invention.
FIG. 2 is a view for explaining the memory module(s) of FIG. 1 .
FIG. 3 is a view for explaining the HBM of FIG. 1 .
FIG. 4 is a block diagram illustrating the memory controller of FIG. 1 .
FIG. 5 is a diagram for explaining instruction sets used in the heterogeneous memory system of FIG. 1 .
6 to 8 are flow diagrams for explaining the operation of the memory controller of FIG. 4 .
9 is a block diagram illustrating a system including a heterogeneous memory system according to embodiments of the present invention.
10 is a diagram illustrating a data center to which a heterogeneous memory system according to embodiments of the present invention is applied.

도 1은 본 발명의 예시적인 실시예에 따른 이종 메모리 시스템을 포함하는 데이터 처리 시스템을 나타내는 블록도이다.1 is a block diagram illustrating a data processing system including a heterogeneous memory system according to an exemplary embodiment of the present invention.

도 1을 참조하면, 데이터 처리 시스템(100)은 심층 신경 망(deep neural networks)과 같은 러닝 시스템(learning systems)과 같은 어플리케이션들 또는 고성능 컴퓨팅(high-performance computing), 그래픽 동작 등과 같은 어플리케이션들을 실행하도록 구성될 수 있다. 이러한 어플리케이션들은 작업들(jobs) 또는 태스크들을 병렬 방식으로 협력하여 실행하고, 다른 데이터 세트들을 트레이닝하고, 높은 정확도로 학습하기 위하여 많은 연산 및 메모리 능력들을 필요로 하고, 전력 효율성 및 낮은 레이턴시를 중요시한다.Referring to FIG. 1 , a data processing system 100 executes applications such as learning systems such as deep neural networks or applications such as high-performance computing, graphic operations, and the like. can be configured to These applications require large computational and memory capabilities to run jobs or tasks cooperatively in a parallel fashion, train different data sets, and learn with high accuracy, and value power efficiency and low latency. .

데이터 처리 시스템(100)은 호스트 장치(110) 및 메모리 모듈(들)(200)과 HBM(300)으로 구성되는 이종 메모리 시스템(120)을 포함할 수 있다. 호스트 장치(110)는 전체적인 작업 또는 태스크가 많은 수의 컴퓨팅 엔티티들(예, 프로세서들, 프로세서들 내의 코어들, 및 메모리-내-처리(Processing-In-Memory: PIM) 회로(321))에서 병렬로 실행되는, 보다 작은 작업들로 분할되는 병렬 처리 접근법을 사용하여 전체적인 작업 또는 태스크를 해결하는 데 사용될 것이다. 태스크는 계층구조 등으로 구성되어 있는 다수의 작업들을 포함하고, 작업은 컴퓨팅 엔티티에 의해 실행되어야 하는 실행 가능 코드, 처리될 데이터, 컴퓨팅 엔티티에 의해 이종 메모리 시스템(120)으로부터 검색되고, 코드의 실행을 통해 조작되며, 이어서 저장될 데이터를 지칭할 수 있다.The data processing system 100 may include a host device 110 and a heterogeneous memory system 120 including the memory module(s) 200 and the HBM 300 . The host device 110 performs an overall task or task in a large number of computing entities (eg, processors, cores within processors, and Processing-In-Memory (PIM) circuitry 321 ). It will be used to solve an overall task or task using a parallel processing approach that is split into smaller tasks that run in parallel. A task includes a number of tasks organized in a hierarchical structure, etc., and the task is retrieved from the heterogeneous memory system 120 by the computing entity, executable code to be executed by the computing entity, data to be processed, and the execution of the code. It can refer to data to be manipulated and then to be stored.

호스트 장치(110)는 프로세서(들)(112) 및 메모리 콘트롤러(114)를 포함할 수 있다. 하나의 실시예에서, 확장 로직 회로(116)는 메모리 콘트롤러(114) 내에 구비될 수 있다. 프로세서(들)(112)은 명령어들을 처리하고 관리하는 데이터 처리 시스템(100)의 주된 구성(primary component)으로, 운영 체제(operating system) 및 어플리케이션들의 실행을 주로 담당한다. 또한, 프로세서(들)(112)은 복잡한 작업 또는 태스크를 해결하기 위해 작업 부하가 병렬 처리 되도록 다수의 컴퓨팅 엔티티들에 분산될 수 있게 한다. 프로세서(들)(112)은 중앙 처리 유닛(Central Processing Unit: CPU), 디지털 시그널 프로세서(Digital Signal Processor: DSP), 그래픽 처리 유닛(Graphic Processing Unit: GPU), 암호화 처리 유닛(encryption processing unit), 물리 처리 유닛(physics processing unit), 머신 러닝 처리 유닛(machine learning processing unit) 등과 같은 처리 유닛을 포함할 수 있다.The host device 110 may include a processor(s) 112 and a memory controller 114 . In one embodiment, the expansion logic circuit 116 may be included in the memory controller 114 . The processor(s) 112 is a primary component of the data processing system 100 that processes and manages instructions, and is mainly responsible for executing an operating system and applications. In addition, the processor(s) 112 may enable a workload to be distributed across multiple computing entities to be processed in parallel to solve a complex task or task. The processor(s) 112 may include a central processing unit (CPU), a digital signal processor (DSP), a graphics processing unit (GPU), an encryption processing unit, It may include a processing unit such as a physical processing unit, a machine learning processing unit, and the like.

프로세서(들)(112)은 다양한 연산 작업들, 명령어들, 또는 커널들(kernels)의 실행을 다른 프로세서로 분산하거나 이종 메모리 시스템(120)으로 오프로드하여 효율성을 향상시킬 수 있다. 커널은 함께 그룹화되어 작업 또는 정의 가능한 서브-작업(definable sub-task)을 실행하는 하나 또는 그 이상의 명령어들로서 정의된다. 프로세서(들)(112)에 의해 오프로드된 커널에 의해 HBM(300)의 PIM 회로(321)가 연산 처리를 수행하는 일 예가 설명될 것이다. 다양한 종류의 연산 처리 동작이 PIM 회로(321)에서 수행될 수 있으며, 일 예로서 인공 지능과 관련하여 뉴럴 네트워크 연산들 중 적어도 일부가 PIM 회로(321)에서 수행될 수 있다. 예컨대, 프로세서(들)(112)는 뉴럴 네트워크 연산들 중 적어도 일부가 PIM 회로(321)에 의해 수행될 수 있도록, 메모리 콘트롤러(114)를 통해 HBM(300)을 제어할 수 있을 것이다. 또한, 이하의 실시예에서는 확장 로직 회로(116)가 오프로드된 커널을 실행하기 위해 이종 메모리 시스템(120)을 제어하는 것으로 설명될 것이나, 본 발명의 실시예들은 이에 국한될 필요가 없다. 예컨대, 확장 로직 회로(116)는 메모리 콘트롤러(114) 내에 구비되는 구성에 해당하고, 메모리 콘트롤러(114)가 이종 메모리 시스템(120)을 제어하는 것으로 설명되어도 무방할 것이다.The processor(s) 112 may improve efficiency by distributing execution of various computational tasks, instructions, or kernels to other processors or offloading them to the heterogeneous memory system 120 . A kernel is defined as one or more instructions grouped together to execute a task or definable sub-task. An example in which the PIM circuit 321 of the HBM 300 performs arithmetic processing by a kernel offloaded by the processor(s) 112 will be described. Various types of arithmetic processing operations may be performed in the PIM circuit 321 , and as an example, at least some of neural network operations in relation to artificial intelligence may be performed in the PIM circuit 321 . For example, the processor(s) 112 may control the HBM 300 via the memory controller 114 such that at least some of the neural network operations may be performed by the PIM circuit 321 . Also, in the following embodiments, it will be described that the expansion logic circuit 116 controls the heterogeneous memory system 120 to execute an offloaded kernel, but embodiments of the present invention are not limited thereto. For example, the expansion logic circuit 116 corresponds to a configuration provided in the memory controller 114 , and the memory controller 114 may be described as controlling the heterogeneous memory system 120 .

메모리 콘트롤러(114)는 확장 로직 회로(116)을 포함할 수 있다. 메모리 콘트롤러(114)는 하드웨어 모듈, 드라이버 모듈 및/또는 파일 시스템 모듈을 포함할 수 있다. 여기서, 모듈은 각각 하드웨어, 소프트웨어, 미들웨어 중 적어도 하나의 형태로 구현될 수 있다. 예컨대, 확장 로직 회로(116)는 메모리 콘트롤러(114)에 로드되는 소프트웨어 블록일 수 있다.The memory controller 114 may include an expansion logic circuit 116 . The memory controller 114 may include a hardware module, a driver module, and/or a file system module. Here, each module may be implemented in the form of at least one of hardware, software, and middleware. For example, the expansion logic circuit 116 may be a software block loaded into the memory controller 114 .

확장 로직 회로(116)는 오프로드된 커널에 의해 HBM(300)의 PIM 회로(321)가 연산 처리를 수행할 때 연산 작업에 요구되는 데이터 어레이가 존재하는 메모리를 판단하는 보더 인덱스 값을 저장할 수 있다. 확장 로직 회로(116)는 보더 인덱스 값을 이용하여 데이터 어레이를 메모리 모듈(들)(200) 또는 HBM(300)으로부터 검색할 수 있다. 또한, 확장 로직 회로(116) 오프로드된 커널에 대해 별도의 주소 변환을 수행하지 않도록 하기 위해, 메모리 모듈(들)(200) 및 HBM(300) 각각에 지정된 물리 주소 공간을 사용하는 메모리 모듈 명령어 세트 및 HBM 명령어 세트를 생성할 수 있다.When the PIM circuit 321 of the HBM 300 performs arithmetic processing by the offloaded kernel, the extended logic circuit 116 may store a border index value that determines a memory in which a data array required for an arithmetic operation exists. have. The extension logic circuit 116 may retrieve the data array from the memory module(s) 200 or the HBM 300 using the border index value. In addition, in order not to perform separate address translation for the kernel offloaded from the expansion logic circuit 116 , a memory module instruction using a physical address space designated for each of the memory module(s) 200 and the HBM 300 . Sets and HBM instruction sets can be generated.

이종 메모리 시스템(120)은 메모리 모듈(들)(200)과 HBM(300)으로 구성되는 이종의 메모리 장치들을 포함할 수 있다. 메모리 모듈(들)(200)은 DDR(double data rate) 프로토콜을 통하여 호스트 장치(110)에 연결될 수 있다. DDR 프로토콜은 JEDEC(Joint Electron Device Engineering Council)의 메모리 표준 인터페이스 규격일 수 있다. 메모리 모듈(들)(200)은 DDR 인터페이스에 따라 호스트 장치(110)에 연결되지만, 본 발명은 여기에 제한되지 않을 것이다. 본 발명의 메모리 모듈(들)(200)은 DDR 인터페이스 이외의 다양한 종류의 통신 인터페이스를 통하여 호스트 장치(110)에 연결될 수 있다. 예를 들어, 통신 인터페이스는 ISA(Industry Standard Architecture), PCIe(Peripheral Component Interconnect Express), SATA(Serial Advanced Technology Attachment), SCSI(Small Computer System Interface), SAS(Serial Atached SCSI), UAS(USB(universal storage bus) Attached SCSI), iSCSI(internet Small Computer System Interface), Fiber Channel, FCoE(Fiber Channel over Ethernet) 등과 같은 것일 수 있다.The heterogeneous memory system 120 may include heterogeneous memory devices including the memory module(s) 200 and the HBM 300 . The memory module(s) 200 may be connected to the host device 110 through a double data rate (DDR) protocol. The DDR protocol may be a memory standard interface specification of a Joint Electron Device Engineering Council (JEDEC). The memory module(s) 200 are connected to the host device 110 according to the DDR interface, but the present invention will not be limited thereto. The memory module(s) 200 of the present invention may be connected to the host device 110 through various types of communication interfaces other than the DDR interface. For example, communication interfaces include Industry Standard Architecture (ISA), Peripheral Component Interconnect Express (PCIe), Serial Advanced Technology Attachment (SATA), Small Computer System Interface (SCSI), Serial Atached SCSI (SAS), universal storage bus) attached SCSI), Internet Small Computer System Interface (iSCSI), Fiber Channel, Fiber Channel over Ethernet (FCoE), and the like.

메모리 모듈(들)(200)은 듀얼 인-라인 메모리 모듈(dual in-line memory module)로 구현될 수 있다. 메모리 모듈(들)(200)은 적어도 하나의 DRAM(dynamic random access memory)를 포함할 수 있다. 이하에서, 설명의 편의를 위하여, 메모리 모듈(들)(200)은 DIMM(200)으로 혼용될 수 있다.The memory module(s) 200 may be implemented as a dual in-line memory module. The memory module(s) 200 may include at least one dynamic random access memory (DRAM). Hereinafter, for convenience of description, the memory module(s) 200 may be used interchangeably as the DIMM 200 .

HBM(300)은 JEDEC 표준의 HBM 프로토콜을 통하여 호스트 장치(110)에 연결될 수 있다. HBM 프로토콜은 3차원 적층 메모리들(예를 들어, DRAM)을 위한 고성능 랜덤 액세스 메모리(RAM) 인터페이스이다. HBM(300)은 일반적으로 다른 DRAM 기술들(예를 들어, DDR4, GDDR5 등)보다 실질적으로 더 작은 폼 팩터(form factor)에서, 더 적은 전력을 소비하면서, 더 넓은 대역폭을 달성한다. HBM(300)은 연산 능력을 제공하는 메모리-내-처리(Processing-In-Memory: PIM) 회로(321)를 포함할 수 있다.The HBM 300 may be connected to the host device 110 through the JEDEC standard HBM protocol. The HBM protocol is a high-performance random access memory (RAM) interface for three-dimensional stacked memories (eg, DRAM). The HBM 300 generally achieves a wider bandwidth, while consuming less power, in a substantially smaller form factor than other DRAM technologies (eg, DDR4, GDDR5, etc.). HBM 300 may include Processing-In-Memory (PIM) circuitry 321 that provides computational capabilities.

도 2는 도 1의 메모리 모듈(들)을 설명하는 도면이다.FIG. 2 is a view for explaining the memory module(s) of FIG. 1 .

도 1 및 도 2를 참조하면, 메모리 모듈(들)(200)은 레지스터 클럭 드라이버(210, RCD) 및 메모리 장치들(220)을 포함할 수 있다. 메모리 장치들(220)은 DRAM 장치들일 수 있다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 메모리 장치들(220)은 SDRAM (Synchronous DRAM), DDR SDRAM (Double Data Rate SDRAM), LPDDR SDRAM (Low Power Double Data Rate SDRAM), GDDR SDRAM (Graphics Double Data Rate SDRAM), DDR2 SDRAM, DDR3 SDRAM, DDR4 SDRAM, DDR5 SDRAM 등과 같은 휘발성 메모리 장치들 중 어느 하나일 수 있다. 이하, 설명의 편의를 위하여 메모리 장치들(220)은 DRAMs(220)로 통칭한다.1 and 2 , the memory module(s) 200 may include a register clock driver 210 (RCD) and memory devices 220 . The memory devices 220 may be DRAM devices. However, the scope of the present invention is not limited thereto, and the memory devices 220 include synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), low power double data rate SDRAM (LPDDR SDRAM), and GDDR SDRAM (Graphics). Double Data Rate SDRAM), DDR2 SDRAM, DDR3 SDRAM, DDR4 SDRAM, DDR5 SDRAM, etc. may be any one of volatile memory devices. Hereinafter, for convenience of description, the memory devices 220 are collectively referred to as DRAMs 220 .

RCD(210)는 호스트 장치(110)로부터 커맨드/어드레스 및 데이터를 수신하고 DRAMs(220)에 클럭 신호 및 커맨드/어드레스 신호를 제공할 수 있다. 메모리 모듈(들)(200)은 임의의 유형의 메모리 모듈로 구현될 수 있다. 예컨대, 메모리 모듈(들)(200)은 UDIMM(Unbuffered DIMM), RDIMM(Registered DIMM), LRDIMM(Load Reduced DIMM), FBDIMM(Fully Buffered DIMM), SODIMM(Small Outline DIMM) 등으로 구현될 수 있다.The RCD 210 may receive a command/address and data from the host device 110 and provide a clock signal and a command/address signal to the DRAMs 220 . Memory module(s) 200 may be implemented with any type of memory module. For example, the memory module(s) 200 may be implemented as an Unbuffered DIMM (UDIMM), Registered DIMM (RDIMM), Load Reduced DIMM (LRDIMM), Fully Buffered DIMM (FBDIMM), Small Outline DIMM (SODIMM), or the like.

메모리 용량을 증가시키기 위해 마더보드에 실장되는 DIMM(200)의 수를 증가시킬 수 있다. 하지만, DIMM(200)은 마더보드에 장착되는 커넥터들의 수에 의해 16 또는 32 비트의 데이터 입출력을 위한 구성들로 제한될 수 있다.In order to increase the memory capacity, the number of DIMMs 200 mounted on the motherboard may be increased. However, the DIMM 200 may be limited to configurations for data input/output of 16 or 32 bits by the number of connectors mounted on the motherboard.

도 3은 도 1의 HBM을 설명하는 도면이다.FIG. 3 is a view for explaining the HBM of FIG. 1 .

도 1 및 도 3을 참조하면, HBM(300)은 서로 독립된 인터페이스를 갖는 다수의 채널들(CH1~CH8)을 포함함으로써 높은 대역폭(Bandwidth)을 가질 수 있다. HBM(300)은 다수개의 다이들을 포함할 수 있으며, 일 예로서 버퍼 다이(또는, 로직 다이(310))와 버퍼 다이(310) 위에 적층된 하나 이상의 코어 다이들(320)을 포함할 수 있다. 도 3의 예에서는, 제1 내지 제4 코어 다이들이 HBM(300)에 구비되는 예가 도시되었으나, 상기 코어 다이들(320)의 개수는 다양하게 변경될 수 있다. 코어 다이들(320)은 메모리 다이들로 지칭될 수 있다.1 and 3 , the HBM 300 may have a high bandwidth by including a plurality of channels CH1 to CH8 having interfaces independent from each other. The HBM 300 may include a plurality of dies, and, as an example, may include a buffer die (or logic die 310 ) and one or more core dies 320 stacked on the buffer die 310 . . In the example of FIG. 3 , an example in which the first to fourth core dies are provided in the HBM 300 is illustrated, but the number of the core dies 320 may be variously changed. The core dies 320 may be referred to as memory dies.

코어 다이들(320) 각각은 하나 이상의 채널을 포함할 수 있다. 도 3에서는 코어 다이들(320) 각각이 두 개의 채널을 포함함에 따라 HBM(300)은 8 개의 채널들(CH1 ~ CH8)을 갖는 예가 도시된다. 예컨대, 제1 코어 다이는 제1 채널 및 제3 채널(CH1, CH3)을 포함하고, 제2 코어 다이는 제2 채널 및 제4 채널(CH2, CH4)을 포함하며, 제3 코어 다이는 제5 채널 및 제7 채널(CH5, CH7)을 포함하며, 제4 코어 다이는 제6 채널 및 제8 채널(CH6, CH8)을 포함할 수 있다.Each of the core dies 320 may include one or more channels. In FIG. 3 , as each of the core dies 320 includes two channels, an example in which the HBM 300 has eight channels CH1 to CH8 is illustrated. For example, the first core die includes a first channel and a third channel (CH1, CH3), the second core die includes a second channel and a fourth channel (CH2, CH4), and the third core die includes a second channel (CH2, CH4). Five channels and seventh channels CH5 and CH7 may be included, and the fourth core die may include sixth and eighth channels CH6 and CH8.

버퍼 다이(310)는 호스트 장치(110)와 통신하는 인터페이스 회로(311)를 포함할 수 있으며, 인터페이스 회로(311)를 통해 호스트 장치(110)로부터 커맨드/어드레스 및 데이터를 수신할 수 있다. 호스트 장치(110)는 채널에 대응하여 배치되는 버스들을 통해 커맨드/어드레스 및 데이터를 전송할 수 있으며, 채널 별로 버스가 구분되도록 형성되거나, 일부의 버스는 적어도 두 개의 채널들에 공유될 수도 있을 것이다. 인터페이스 회로(311)는 호스트 장치(110)가 메모리 동작 또는 연산 처리를 요청하는 채널로 커맨드/어드레스 및 데이터를 전달할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 코어 다이들(320) 각각 또는 채널들 각각은 PIM 회로(321)를 포함할 수 있다.The buffer die 310 may include an interface circuit 311 communicating with the host device 110 , and may receive commands/addresses and data from the host device 110 through the interface circuit 311 . The host device 110 may transmit a command/address and data through buses arranged to correspond to a channel, and the bus may be divided for each channel, or a part of the bus may be shared by at least two channels. The interface circuit 311 may transmit a command/address and data to a channel through which the host device 110 requests a memory operation or arithmetic processing. Further, each of the core dies 320 or each of the channels may include a PIM circuit 321 in accordance with an exemplary embodiment of the present invention.

호스트 장치(110)는 다수의 연산 작업들 또는 커널들 중 적어도 일부가 HBM(300)에서 수행될 수 있도록 커맨드/어드레스 및 데이터를 제공할 수 있으며, 호스트 장치(110)가 지정하는 채널의 PIM 회로(321)에서 연산 처리가 수행될 수 있다. 일 예로서, 수신된 커맨드/어드레스가 연산 처리를 지시하는 경우, 해당 채널의 PIM 회로(321)는 호스트 장치(110)로부터의 데이터 및/또는 해당 채널에서 독출된 데이터를 이용한 연산 처리를 수행할 수 있다. 다른 예로서, HBM(300)의 해당 채널로 수신된 커맨드/어드레스가 메모리 동작을 지시하는 경우에는 데이터에 대한 억세스 동작이 수행될 수 있다.The host device 110 may provide commands/addresses and data so that at least some of a plurality of arithmetic operations or kernels can be performed in the HBM 300 , and a PIM circuit of a channel designated by the host device 110 . In 321, arithmetic processing may be performed. As an example, when the received command/address indicates arithmetic processing, the PIM circuit 321 of the corresponding channel performs arithmetic processing using data from the host device 110 and/or data read from the corresponding channel. can As another example, when a command/address received through a corresponding channel of the HBM 300 indicates a memory operation, an access operation for data may be performed.

일 실시예에 따라, 채널들 각각은 다수 개의 뱅크들을 포함할 수 있고, 각각의 채널의 PIM 회로(321)에는 하나 이상의 프로세싱 소자들이 구비될 수 있다. 일 예로서, 각각의 채널에서 프로세싱 소자들의 개수는 뱅크들의 개수와 동일할 수 있으며, 또는 프로세싱 소자들의 개수가 뱅크들의 개수보다 적음에 따라 하나의 프로세싱 소자가 적어도 두 개의 뱅크들에 공유될 수도 있을 것이다. 각 채널의 PIM 회로(321)는 호스트 장치(110)에 의해 오프로드된 커널을 실행할 수 있다.According to an embodiment, each of the channels may include a plurality of banks, and the PIM circuit 321 of each channel may include one or more processing elements. As an example, the number of processing elements in each channel may be equal to the number of banks, or one processing element may be shared among at least two banks as the number of processing elements is less than the number of banks. will be. The PIM circuit 321 of each channel may execute a kernel offloaded by the host device 110 .

한편, 버퍼 다이(310)는 스루 실리콘 비아(Through Silicon Via: TSV) 영역(312), HBM 물리 계층 인터페이스(PHYsical layer interface: HBM PHY) 영역(313) 및 직렬화기/역직렬화기(SERializer/DESerializer: SERDES) 영역(314)을 더 포함할 수 있다. TSV 영역(312)은 코어 다이들(320)과의 통신을 위한 TSV가 형성되는 영역이다. 각각의 채널(CH1~CH8)이 128 비트의 대역폭(bandwidth)을 갖는 경우, TSV들은 1024 비트의 데이터 입출력을 위한 구성들을 포함할 수 있다.Meanwhile, the buffer die 310 includes a through silicon via (TSV) region 312 , an HBM physical layer interface (HBM PHY) region 313 , and a serializer/deserializer (SERializer/DESerializer). : SERDES) region 314 may be further included. The TSV region 312 is a region in which a TSV for communication with the core dies 320 is formed. When each channel CH1 to CH8 has a bandwidth of 128 bits, the TSVs may include configurations for data input/output of 1024 bits.

HBM PHY 영역(313)은 호스트 장치(110)와의 통신을 위해 다수의 입출력 회로를 포함할 수 있으며, 일 예로서 HBM PHY 영역(313)은 호스트 장치(110)와의 통신을 위한 하나 이상의 포트들을 포함할 수 있다. HBM PHY 영역(313)은 호스트 장치(110)와 HBM(300) 사이의 효율적인 통신에 요구되는 신호들, 주파수, 타이밍, 구동, 상세 동작 파라미터 및 기능성(functionality)을 위해 제공되는 물리적 또는 전기적 계층과 논리적 계층을 포함할 수 있다. HBM PHY 영역(313)은 메모리 셀에 대응하는 로우 및 칼럼을 선택하는 것, 메모리 셀에 데이터를 기입하는 것, 또는 기입된 데이터를 독출하는 것과 같은 메모리 인터페이싱을 수행할 수 있다. HBM PHY 영역(313)은 JEDEC 표준의 HBM 프로토콜의 특징들을 지원할 수 있다.The HBM PHY region 313 may include a plurality of input/output circuits for communication with the host device 110 , and as an example, the HBM PHY region 313 includes one or more ports for communication with the host device 110 . can do. The HBM PHY region 313 includes a physical or electrical layer provided for signals, frequency, timing, driving, detailed operating parameters and functionality required for efficient communication between the host device 110 and the HBM 300 and It can contain logical layers. The HBM PHY region 313 may perform memory interfacing such as selecting a row and column corresponding to a memory cell, writing data into the memory cell, or reading the written data. The HBM PHY region 313 may support features of the HBM protocol of the JEDEC standard.

SERDES 영역(314)은 호스트 장치(110)의 프로세서(들)(112)의 프로세싱 스루풋이 증가함에 따라, 그리고 메모리 대역폭에 대한 요구들이 증가함에 따라, JEDEC(Joint Electron Device Engineering Council) 표준의 SERDES 인터페이스를 제공하는 영역이다. SERDES 영역(314)은 SERDES 송신기 부분, SERDES 수신기 부분 및 제어기 부분을 포함할 수 있다. SERDES 송신기 부분은 병렬-투-직렬 회로 및 송신기를 포함하고, 병렬 데이터 스트림을 수신하고, 수신된 병렬 데이터 스트림을 직렬화 할 수 있다. SERDES 수신기 부분은 수신기 증폭기, 등화기, 클럭 및 데이터 복원 회로 및 직렬-투-병렬 회로를 포함하고, 직렬 데이터 스트림을 수신하고, 수신된 직렬 데이터 스트림을 병렬화 할 수 있다. 제어기 부분은 에러 검출 회로, 에러 정정 회로 및 FIFO(First In First Out)와 같은 레지스터들을 포함할 수 있다.The SERDES region 314 is a SERDES interface of the Joint Electron Device Engineering Council (JEDEC) standard as the processing throughput of the processor(s) 112 of the host device 110 increases, and as the demands on memory bandwidth increase. is an area that provides The SERDES region 314 may include a SERDES transmitter portion, a SERDES receiver portion, and a controller portion. The SERDES transmitter portion includes a parallel-to-serial circuit and a transmitter, and is capable of receiving a parallel data stream and serializing the received parallel data stream. The SERDES receiver portion includes a receiver amplifier, an equalizer, a clock and data recovery circuit and a serial-to-parallel circuit, and is capable of receiving a serial data stream and parallelizing the received serial data stream. The controller portion may include error detection circuitry, error correction circuitry and registers such as First In First Out (FIFO).

도 4는 도 1의 메모리 콘트롤러(114)를 설명하는 블록 다이어그램이다. 도 5는 도 1의 이종 메모리 시스템(120)에서 사용되는 명령어 세트들을 설명하는 도면이다.FIG. 4 is a block diagram illustrating the memory controller 114 of FIG. 1 . FIG. 5 is a diagram illustrating instruction sets used in the heterogeneous memory system 120 of FIG. 1 .

도 1 및 도 4를 참조하면, 메모리 콘트롤러(114)는 호스트 장치(110)의 장치 드라이버를 통해 오프로드된 커널이 이종 메모리 시스템(120)을 이용하여 커널 코드 및/또는 데이터와 관련되는 동작들을 수행하도록 구성되는 확장 로직 회로(116)를 포함할 수 있다. 장치 드라이버는 호스트 장치(110)의 운영 체계 및 하드웨어 장치 사이에 인터페이스를 정의(define) 및 설정하도록 운영 체계 내에 활용된다. 이하에서, 확장 로직 회로(116)는 오프로드된 커널을 실행하기 위한 하드웨어, 펌웨어, 소프트웨어 또는 이들의 결합 방식으로 구현되는 것을 통칭한다.1 and 4 , the memory controller 114 performs operations related to kernel code and/or data by using the heterogeneous memory system 120 by using the kernel offloaded through the device driver of the host device 110 . expansion logic circuitry 116 configured to do so. The device driver is utilized within the operating system to define and establish an interface between the operating system of the host device 110 and the hardware device. Hereinafter, the extension logic circuit 116 is collectively implemented in hardware, firmware, software, or a combination thereof for executing an offloaded kernel.

확장 로직 회로(116)는 프로세서(들)(112)에 의해 오프로드된 커널이 이종 메모리 시스템(120)의 HBM(300)의 PIM 회로(321)에서 실행하도록 구성될 수 있다. 또한, 확장 로직 회로(116)는 오프로드된 커널의 작업 코드의 실행에 따라 처리될 데이터를 DIMM(200) 및/또는 HBM(300)으로부터 검색하고, 코드의 실행을 통해 조작된 데이터를 재정렬하여 DIMM(200) 및/또는 HBM(300)에 할당하도록 구성될 수 있다.The extension logic circuit 116 may be configured such that a kernel offloaded by the processor(s) 112 executes in the PIM circuit 321 of the HBM 300 of the heterogeneous memory system 120 . In addition, the extension logic circuit 116 retrieves data to be processed according to the execution of the working code of the offloaded kernel from the DIMM 200 and/or the HBM 300, and rearranges the data manipulated through the execution of the code. It may be configured to allocate to DIMM 200 and/or HBM 300 .

오프로드된 커널은 데이터 어레이에 대해 수행될 수 있다. 데이터 어레이는 어레이와 같은 형태로 구성된 데이터 구조체를 말하며, 프로그래밍 언어에 있는 배열 형태의 데이터 구조 (예, array, set, map, deque 등)를 활용할 수 있다. 예컨대, 그래픽 프로세싱, 인공 지능(AI) 어플리케이션 등은 사용자의 데이터 접근이 특정 데이터에 편향적으로 쏠리는 경향이 있는데, 이러한 편향적인 선호는 일관성 및 지속성이 있어 추후 데이터 활용에 대한 활용 예측이 가능하다. 그리고, 확장 로직 회로(116)는 데이터 어레이의 활용 빈도에 따라 이종 메모리 시스템(120)의 재정렬을 실시할 수 있다. 예시적으로, 확장 로직 회로(116)는 높은 활용 빈도를 갖는 작은 용량의 데이터 어레이는 HBM(300)에 할당하고, 낮은 활용 빈도를 갖는 큰 용량의 데이터 어레이는 DIMM(200)에 할당하는 재정렬을 수행할 수 있다. 확장 로직 회로(116)에 의해 DIMM(200) 및/또는 HBM(300)에 데이터 어레이 형태로 연속적으로 할당됨에 따라 데이터 관리 및 주소 변환 과정이 간단해질 수 있다.An offloaded kernel may be run against the data array. A data array is a data structure composed of an array-like format, and an array-type data structure (eg, array, set, map, deque, etc.) in a programming language can be used. For example, in graphic processing and artificial intelligence (AI) applications, users' data access tends to be biased toward specific data, and this biased preference has consistency and persistence, making it possible to predict future data utilization. Also, the expansion logic circuit 116 may rearrange the heterogeneous memory system 120 according to the frequency of use of the data array. Exemplarily, the expansion logic circuit 116 allocates a small-capacity data array having a high utilization frequency to the HBM 300 , and allocates a large-capacity data array having a low utilization frequency to the DIMM 200 . can be done The data management and address translation process may be simplified as the data array form is successively allocated to the DIMM 200 and/or the HBM 300 by the expansion logic circuit 116 .

확장 로직 회로(116)는 인덱스 테이블 로직 회로(402), 어드레스 맵핑 테이블 로직 회로(404) 및 커맨드 발생 회로(406)를 포함할 수 있다. 인덱스 테이블 로직 회로(402)는 데이터 어레이의 활용 빈도를 구분하는 보더 인덱스(Border index) 값을 저장할 수 있다. 일 예로, 보더 인덱스 값은 어떤 어플리케이션 (예, 그래픽 프로세싱, 인공 지능(AI) 어플리케이션)이 실행되는 동안 특정 데이터 어레이에 대한 실측 활용 회수(number of actual utilization)와 예측 활용 회수(number of predicted utilization)에 기초하여 설정될 수 있다. 보더 인덱스 값은 예측 활용 회수 대비 실측 활용 회수의 비율로 계산된 제1 값으로 설정될 수 있다. 다른 예로, 보더 인덱스 값은 HBM(300)의 대역폭과 DIMM(200)의 대역폭에 기초하여 설정될 수도 있다. 보더 인덱스 값은 DIMM(200)의 대역폭(예, 24GB/sec 정도) 대비 HBM(300)의 대역폭(예, 1024GB/sec 정도)의 비율로 계산된 제2 값(예, 4 내지 6 정도)으로 설정될 수 있다. 또 다른 예로, 보더 인덱스 값은 예측 활용 회수 대비 실측 활용 회수의 비율로 계산된 제1 값과 DIMM(200)의 대역폭 대비 HBM(300)의 대역폭의 비율로 계산된 제2 값이 동일해지는 조건을 만족하도록 설정될 수 있다.The extension logic circuit 116 may include an index table logic circuit 402 , an address mapping table logic circuit 404 , and a command generation circuit 406 . The index table logic circuit 402 may store a border index value that identifies the frequency of use of the data array. As an example, the border index value represents the number of actual utilization and the number of predicted utilization for a specific data array while an application (eg, graphics processing, artificial intelligence (AI) application) is running. may be set based on The border index value may be set as a first value calculated as a ratio of the predicted utilization number to the actual measured utilization number. As another example, the border index value may be set based on the bandwidth of the HBM 300 and the bandwidth of the DIMM 200 . The border index value is a second value (eg, about 4 to 6) calculated as the ratio of the bandwidth of the HBM 300 (eg, about 1024 GB/sec) to the bandwidth of the DIMM 200 (eg, about 24 GB/sec) can be set. As another example, the border index value is a condition in which the first value calculated as the ratio of the predicted number of utilization to the actual number of utilization and the second value calculated as the ratio of the bandwidth of the HBM 300 to the bandwidth of the DIMM 200 are the same. can be set to be satisfied.

인덱스 테이블 로직 회로(402)는 오프로드된 커널에 대한 정보를 포함할 수 있다. 오프로드된 커널에 대한 정보는 오프로드된 커널과 관련된 데이터 어레이의 식별 번호와 식별 번호에 해당하는 데이터 어레이에 대한 베이스 어드레스, 인덱스 값 및/또는 데이터 사이즈를 포함할 수 있다. 베이스 어드레스는 해당 데이터 어레이가 저장되는 DIMM(200) 또는 HBM(300)의 첫번째 물리 주소를 나타내고, 인덱스 값은 베이스 어드레스와의 오프셋을 나타낸다. 인덱스 테이블 로직 회로(402)는 수신된 인덱스 값이 보더 인덱스 값 보다 작으면 해당 데이터 어레이가 HBM(300)에 존재한다고 판단하고, 크면 DIMM(200)에 존재한다고 판단할 수 있다. 그리고, 인덱스 테이블 로직 회로(402)는 베이스 어드레스와 인덱스 값에 기초하여 해당 데이터 어레이의 물리적 주소를 계산하는 어드레스 변환 동작이 수행되도록 구성될 수 있다.The index table logic circuit 402 may include information about an offloaded kernel. The information on the offloaded kernel may include an identification number of a data array related to the offloaded kernel and a base address, an index value, and/or a data size of the data array corresponding to the identification number. The base address indicates the first physical address of the DIMM 200 or HBM 300 in which the corresponding data array is stored, and the index value indicates an offset from the base address. The index table logic circuit 402 may determine that the corresponding data array exists in the HBM 300 if the received index value is smaller than the border index value, and may determine that the received index value exists in the DIMM 200 if it is larger. In addition, the index table logic circuit 402 may be configured to perform an address translation operation of calculating a physical address of a corresponding data array based on a base address and an index value.

어드레스 맵핑 테이블 로직 회로(404)는 DIMM 맵핑 테이블(420) 및 HBM 맵핑 테이블(430)을 포함할 수 있다. 맵핑 테이블들은 식별 번호에 해당하는 데이터 어레이와 베이스 어드레스와의 상관 관계를 저장하는 레지스터들(또는 저장 요소들)로 구현될 수 있다. DIMM 맵핑 테이블(420)은 DIMM(200)에 대한 해당 데이터 어레이의 베이스 어드레스를 저장하고, HBM 맵핑 테이블(430)은 HBM(300)에 대한 해당 데이터 어레이의 베이스 어드레스를 저장할 수 있다.The address mapping table logic circuit 404 may include a DIMM mapping table 420 and an HBM mapping table 430 . The mapping tables may be implemented as registers (or storage elements) that store a correlation between a data array corresponding to an identification number and a base address. The DIMM mapping table 420 may store a base address of a corresponding data array for the DIMM 200 , and the HBM mapping table 430 may store a base address of a corresponding data array for the HBM 300 .

확장 로직 회로(116)는 인덱스 테이블 로직 회로(402) 및 어드레스 맵핑 테이블 로직 회로(404)를 이용하여 해당 데이터 어레이의 물리 주소 공간을 계산할 수 있다. 확장 로직 회로(116)는 보더 인덱스 값과 수신된 인덱스 값을 비교하는 인덱스 비교부를 이용하여 해당 데이터 어레이가 저장되어 있는 곳이 HBM(300) 인지 또는 DIMM(200) 인지를 판단할 수 있다.The extension logic circuit 116 may calculate the physical address space of the corresponding data array using the index table logic circuit 402 and the address mapping table logic circuit 404 . The expansion logic circuit 116 may determine whether the location in which the corresponding data array is stored is the HBM 300 or the DIMM 200 using an index comparison unit that compares the border index value with the received index value.

예시적으로, 확장 로직 회로(116)는 수신된 인덱스 값이 보더 인덱스 값 보다 작으면 해당 데이터 어레이가 HBM(300)에 저장되어 있다고 판단할 수 있다. 확장 로직 회로(116)는 HBM 어드레스 계산부(416)을 이용하여 HBM 맵핑 테이블(430)에 저장된 HBM(300)의 베이스 어드레스로부터 인덱스 값 만큼 떨어진 위치에 대응하는 제1 어드레스에 해당 데이터 어레이가 저장되는 것으로 판단할 수 있다. 즉, 제1 어드레스는 (베이스 어드레스+인덱스 값)으로 계산될 수 있다. 그리고, HBM 어드레스 계산부(416) 는 제1 어드레스로부터 데이터 사이즈를 곱한 제2 어드레스까지의 물리 주소 공간에 해당 데이터 어레이가 HBM(300)에 저장되어 있는 것으로 판단할 수 있다. 즉, 제2 어드레스는 (베이스 어드레스+인덱스 값)*데이터 사이즈)로 계산될 수 있다.For example, when the received index value is smaller than the border index value, the expansion logic circuit 116 may determine that the corresponding data array is stored in the HBM 300 . The expansion logic circuit 116 stores the corresponding data array at a first address corresponding to a position separated by an index value from the base address of the HBM 300 stored in the HBM mapping table 430 using the HBM address calculator 416 . can be judged to be That is, the first address may be calculated as (base address + index value). In addition, the HBM address calculator 416 may determine that the corresponding data array is stored in the HBM 300 in the physical address space from the first address to the second address multiplied by the data size. That is, the second address may be calculated as (base address+index value)*data size).

예시적으로, 확장 로직 회로(116)는 수신된 인덱스 값이 보더 인덱스 값 보다 크면 해당 데이터 어레이가 DIMM(200)에 저장되어 있다고 판단할 수 있다. 확장 로직 회로(116)는 DIMM 어드레스 계산부(412)을 이용하여 DIMM 맵핑 테이블(420)의 DIMM(200)의 베이스 어드레스로부터 인덱스 값에서 보더 인덱스 값을 뺀 만큼 떨어진 위치에 대응하는 제3 어드레스에 데이터 어레이가 저장되는 것으로 판단할 수 있다. 즉, 제3 어드레스는 (베이스 어드레스+(인덱스 값-보더 인덱스 값))으로 계산될 수 있다. 그리고, DIMM 어드레스 계산부(412)는 제3 어드레스로부터 데이터 사이즈를 곱한 제4 어드레스까지의 물리 주소 공간에 해당 데이터 어레이가 DIMM(200)에 저장되어 있는 것으로 판단할 수 있다. 즉, 제4 어드레스는 ((베이스 어드레스+(인덱스 값- 보더 인덱스 값)*데이터 사이즈)로 계산될 수 있다.For example, when the received index value is greater than the border index value, the expansion logic circuit 116 may determine that the corresponding data array is stored in the DIMM 200 . The expansion logic circuit 116 uses the DIMM address calculator 412 to obtain a third address corresponding to a position separated from the base address of the DIMM 200 in the DIMM mapping table 420 by subtracting the border index value from the index value. It may be determined that the data array is stored. That is, the third address may be calculated as (base address+(index value-border index value)). Also, the DIMM address calculator 412 may determine that the corresponding data array is stored in the DIMM 200 in the physical address space from the third address to the fourth address multiplied by the data size. That is, the fourth address may be calculated as ((base address+(index value−border index value)*data size)).

오프로드된 커널이 HBM(300)의 PIM 회로(321)에서 실행될 수 있다. PIM 회로(321)는 커널 코드에 따른 데이터 어레이가 HBM(300)에 저장되어 있는 경우 HBM(300)을 직접 억세스하여 데이터를 가져올 수 있다. 그런데, 커널 코드에 따른 데이터 어레이가 DIMM(200)에 저장되어 있는 경우, PIM 회로(321)는 DIMM(200)과 직접 연결된 인터페이스가 없기 때문에 DIMM(200)을 직접 억세스할 수 없다. 이에 따라, PIM 회로(321)는 메모리 콘트롤러(114)를 통해 DIMM(200)의 데이터를 제공받을 수 있다.The offloaded kernel may be executed in the PIM circuit 321 of the HBM 300 . When the data array according to the kernel code is stored in the HBM 300 , the PIM circuit 321 may directly access the HBM 300 to obtain data. However, when the data array according to the kernel code is stored in the DIMM 200 , the PIM circuit 321 cannot directly access the DIMM 200 because there is no interface directly connected to the DIMM 200 . Accordingly, the PIM circuit 321 may receive data of the DIMM 200 through the memory controller 114 .

확장 로직 회로(116)에 의해 해당 데이터 어레이가 HBM(300)에 저장되어 있다고 판단되면, 커맨드 발생 회로(406)는 HBM(300) 어드레스를 오퍼랜드(operand)로 사용할 수 있는 HBM(300)에 대한 명령어 세트를 생성할 수 있다. HBM(300)에 대한 명령어 세트(530)는, 도 5a에 도시된 바와 같이, 오피코드 파라미터, 벡터 사이즈 파라미터, 소스 파라미터, 및 목적지 파라미터를 포함할 수 있다.When it is determined by the expansion logic circuit 116 that the corresponding data array is stored in the HBM 300, the command generation circuit 406 uses the HBM 300 address as an operand for the HBM 300 that can be used as an operand. You can create instruction sets. The instruction set 530 for the HBM 300 may include an opcode parameter, a vector size parameter, a source parameter, and a destination parameter, as shown in FIG. 5A .

오피코드 파라미터는 오프로드된 커널의 명령어과 동일하게 표기될 수 있다. 명령어 종류에는 x86, RISC-V 등을 포함하고, 각 명령어 별로 오피코드 파라미터가 설정될 수 있다. 벡터 사이즈 파라미터는 호스트 장치(110) 내 DRAM 캐시 라인의 데이터 입출력 수와 데이터 어레이의 데이터 입출력 수와의 상관 관계를 나타낸다. 예컨대, DRAM 캐시 라인이 64B(byte)이고 데이터 어레이가 256B 인 경우, 벡터 사이즈 파라미터는 4로 설정될 수 있다. 즉, 64B DRAM 캐시 라인을 4개 가져오는 것과 동일하게 표기될 수 있다. 소스 파라미터는 데이터 어레이를 가져오는 소스 어드레스를 나타내고, HBM(300)의 어드레스로 표기될 수 있다. 목적지 파라미터는 HBM(300)의 PIM 회로(321)에서 연산 처리를 실행할 때 중간 결과 값을 저장하는 레지스터의 식별 번호를 표기할 수 있다. 예컨대, 레지스터는 메모리 콘트롤러(114)에 포함될 수 있고, 4번째 레지스터인 경우 4로 표기될 수 있다.The opcode parameter may be expressed in the same way as the instruction of the offloaded kernel. Instruction types include x86, RISC-V, and the like, and opcode parameters may be set for each instruction. The vector size parameter indicates a correlation between the number of data input/outputs of DRAM cache lines in the host device 110 and the number of data input/outputs of the data array. For example, if the DRAM cache line is 64B (byte) and the data array is 256B, the vector size parameter may be set to 4. That is, it can be expressed as fetching 4 64B DRAM cache lines. The source parameter indicates a source address from which the data array is retrieved, and may be expressed as an address of the HBM 300 . The destination parameter may indicate an identification number of a register storing an intermediate result value when the PIM circuit 321 of the HBM 300 executes arithmetic processing. For example, the register may be included in the memory controller 114 , and in the case of the fourth register, it may be denoted as 4 .

확장 로직 회로(116)에 의해 해당 데이터 어레이가 DIMM(200)에 저장되어 있다고 판단되면, 커맨드 발생 회로(406)는 DIMM(200)에 대한 명령어 세트를 생성할 수 있다. DIMM(200)에 대한 명령어 세트(520)는, 도 5b에 도시된 바와 같이, 오피코드 파라미터, 벡터 사이즈 파라미터, 벡터 포지션 파라미터, 이미디어트 밸류 파라미터, 및 목적지 파라미터를 포함할 수 있다.When it is determined by the expansion logic circuit 116 that the corresponding data array is stored in the DIMM 200 , the command generation circuit 406 may generate a command set for the DIMM 200 . The instruction set 520 for the DIMM 200 may include an opcode parameter, a vector size parameter, a vector position parameter, an immediate value parameter, and a destination parameter, as shown in FIG. 5B .

오피코드 파라미터는 오프로드된 커널의 명령어과 동일하게 표기될 수 있다. 명령어 종류에는 x86, RISC-V 등을 포함하고, 각 명령어 별로 오피코드 파라미터가 설정될 수 있다. 벡터 사이즈 파라미터는 호스트 장치(110) 내 DRAM 캐시 라인의 데이터 입출력 수와 데이터 어레이의 데이터 입출력 수와의 상관 관계를 나타낸다. 예컨대, DRAM 캐시 라인이 64B이고 데이터 어레이가 256B 인 경우, 벡터 사이즈 파라미터는 4로 설정될 수 있다. 즉, 64B DRAM 캐시 라인을 4개 가져오는 것과 동일하게 표기될 수 있다. 벡터 포지션 파라미터는 현재 명령어에서 활용하는 64B 데이터의 위치를 표기할 수 있다. 예컨대, 256B 데이터 어레이 중에서 64B-128B에 해당하는 2번째 데이터를 가져올 경우, 벡터 포지션 파라미터는 2로 표기될 수 있다. 이미디어트 밸류 파라미터는 DIMM(200)에서 가지고 온 캐시 라인 64B 만큼의 데이터 값 자체를 저장할 수 있다. 목적지 파라미터는 DIMM(200)에서 가지고 온 데이터를 이용하여 연산 처리를 실행할 때 중간 결과 값을 저장하는 레지스터의 식별 번호를 표기할 수 있다. 예컨대, 레지스터는 메모리 콘트롤러(114)에 포함될 수 있고, 4번째 레지스터인 경우 4로 표기될 수 있다.The opcode parameter may be expressed in the same way as the instruction of the offloaded kernel. Instruction types include x86, RISC-V, and the like, and opcode parameters may be set for each instruction. The vector size parameter indicates a correlation between the number of data input/outputs of DRAM cache lines in the host device 110 and the number of data input/outputs of the data array. For example, if the DRAM cache line is 64B and the data array is 256B, the vector size parameter may be set to 4. That is, it can be expressed as fetching 4 64B DRAM cache lines. The vector position parameter may indicate the position of 64B data used in the current instruction. For example, when bringing the second data corresponding to 64B-128B from among the 256B data array, the vector position parameter may be expressed as 2. The immediate value parameter may store the data value itself as much as the cache line 64B brought from the DIMM 200 . The destination parameter may indicate an identification number of a register that stores an intermediate result value when an arithmetic process is executed using data brought from the DIMM 200 . For example, the register may be included in the memory controller 114 , and in the case of the fourth register, it may be denoted as 4 .

도 5a 및 도 5b에서 설명된 HBM(300)에 대한 명령어 세트(530)와 DIMM(200)에 대한 명령어 세트(520)에서, 목적지 파라미터와 관련된 레지스터 할당을 위하여, 확장 로직 회로(116)는 레지스터 할당기(414)를 더 포함할 수 있다. 레지스터 할당기(414)는 레지스터에 대한 점유를 확인할 수 있는 SRAM 테이블을 포함하는 로직 회로로 구현될 수 있다. 레지스터 할당기는 어떤 레지스터가 프로세싱 동작에 할당되고 어떤 레지스터가 현재 활용이 안되고 있는지를 표기할 수 있다.In the instruction set 530 for the HBM 300 and the instruction set 520 for the DIMM 200 described in FIGS. 5A and 5B , for allocating registers related to destination parameters, the extension logic circuit 116 provides a register It may further include an allocator 414 . The register allocator 414 may be implemented as a logic circuit including an SRAM table that can check occupancy for a register. The register allocator can indicate which registers are allocated for processing operations and which registers are currently unused.

도 6 내지 도 8은 도 4의 메모리 콘트롤러의 동작을 설명하는 플로우 다이어그램들이다.6 to 8 are flow diagrams for explaining the operation of the memory controller of FIG. 4 .

도 1 내지 도 6을 참조하면, 단계 S610에서 호스트 장치(110)의 프로세서(들)(112)은 연산 작업의 효율성을 향상시키기 위하여, 커널의 실행을 다른 프로세서로 분산하거나 이종 메모리 시스템(120)으로 오프로드할 수 있다. 프로세서(들)(112)은 오프로드된 커널과 관련된 정보, 예컨대 데이터 어레이의 식별 번호와 식별 번호에 해당하는 데이터 어레이에 대한 베이스 어드레스, 인덱스 값 및/또는 데이터 사이즈를 장치 드라이버를 통해 메모리 콘트롤러(114)로 제공할 수 있다. 메모리 콘트롤러(114)는 프로세서(들)(112)에 의해 오프로드된 커널이 HBM(300)의 PIM 회로(321)에서 연산 처리 동작을 수행하도록 제어할 수 있다.1 to 6 , in step S610 , the processor(s) 112 of the host device 110 distributes execution of the kernel to other processors or a heterogeneous memory system 120 in order to improve the efficiency of a computational operation. can be offloaded to The processor(s) 112 transmits information related to the offloaded kernel, for example, the identification number of the data array and the base address, index value, and/or data size for the data array corresponding to the identification number, to the memory controller ( 114) can be provided. The memory controller 114 may control the kernel offloaded by the processor(s) 112 to perform an arithmetic processing operation in the PIM circuit 321 of the HBM 300 .

단계 S620에서, 메모리 콘트롤러(114)는 인덱스 테이블 로직 회로(402)에 저장된 보더 인덱스 값을 읽을 수 있다. 보더 인덱스 값은 오프로드된 커널과 관련된 데이터 어레이가 존재하는 메모리를 판단하는 기준으로 설정될 수 있다. 본 실시예는 보더 인덱스 값이 오프로드된 커널과 관련된 데이터 어레이의 활용 빈도 비율 및 DIMM(200)과 HBM(300)의 대역폭 비율에 기초하여 설정되는 예가 설명되지만, 실시예에 따라, 오프로드된 커널과 관련된 다른 정보를 이용하여 설정될 수 있다.In operation S620 , the memory controller 114 may read the border index value stored in the index table logic circuit 402 . The border index value may be set as a criterion for determining the memory in which the data array related to the offloaded kernel exists. In this embodiment, an example in which the border index value is set based on the utilization frequency ratio of the data array related to the offloaded kernel and the bandwidth ratio of the DIMM 200 and the HBM 300 is described, but according to the embodiment, the offloaded It can be configured using other information related to the kernel.

단계 S630에서, 메모리 콘트롤러(114)는 단계 S610에서 수신된 인덱스 값과 보더 인덱스 값을 비교하여 해당 데이터 어레이가 존재하는 메모리를 판단할 수 있다. 메모리 콘트롤러(114)는 수신된 인덱스 값이 보더 인덱스 값 보다 크면(YES) 단계 S650로 이동하고, 작으면(NO) 단계 S640로 이동할 수 있다. 단계 S640에서, 메모리 콘트롤러(114)는 해당 데이터 어레이가 HBM(300)에 존재한다고 판단하고 HBM(300)에 대한 메모리 동작을 수행할 수 있다. 단계 S650에서, 메모리 콘트롤러(114)는 해당 데이터 어레이가 DIMM(200)에 존재한다고 판단하고 DIMM(200)에 대한 메모리 동작을 수행할 수 있다.In operation S630 , the memory controller 114 compares the index value received in operation S610 with the border index value to determine the memory in which the corresponding data array exists. The memory controller 114 may move to step S650 if the received index value is greater than the border index value (YES), and may move to step S640 if it is smaller (NO). In operation S640 , the memory controller 114 may determine that the corresponding data array exists in the HBM 300 and perform a memory operation on the HBM 300 . In operation S650 , the memory controller 114 may determine that the corresponding data array exists in the DIMM 200 and perform a memory operation on the DIMM 200 .

메모리 콘트롤러(114)는, 단계 S630의 비교 결과, 해당 데이터 어레이가 HBM(300)에 존재한다고 판단되면, 도 7에 도시된 바와 같이, 단계 S710 내지 단계 S750을 포함하는 단계 S640의 HBM(300)에 대한 메모리 동작을 수행할 수 있다. S710 단계에서, 메모리 콘트롤러(114)는 단계 S610에서 수신된 오프로드된 커널의 데이터 어레이에 대한 베이스 어드레스에 대응하는 HBM 맵핑 테이블(430)에 저장된 HBM(300)의 베이스 어드레스를 읽을 수 있다.The memory controller 114, as a result of the comparison of step S630, if it is determined that the corresponding data array exists in the HBM 300, as shown in FIG. 7 , the HBM 300 of step S640 including steps S710 to S750 as shown in FIG. A memory operation can be performed for . In step S710 , the memory controller 114 may read the base address of the HBM 300 stored in the HBM mapping table 430 corresponding to the base address of the data array of the offloaded kernel received in step S610 .

단계 S720에서, 메모리 콘트롤러(114)는 데이터 어레이가 존재하는 HBM(300)의 물리 어드레스들을 계산할 수 있다. 메모리 콘트롤러(114)는 HBM(300)의 베이스 어드레스로부터 인덱스 값 만큼 떨어진 위치에 대응하는 제1 어드레스를 계산할 수 있다. 즉, 제1 어드레스는 (베이스 어드레스+인덱스 값)으로 계산될 수 있다. 그리고, 메모리 콘트롤러(114)는 제1 어드레스로부터 데이터 사이즈를 곱한 값에 대응하는 제2 어드레스를 계산할 수 있다. 즉, 제2 어드레스는 (베이스 어드레스+인덱스 값)*데이터 사이즈)로 계산될 수 있다. 메모리 콘트롤러(114)는 오프로드된 커널의 데이터 어레이가 HBM(300)의 제1 어드레스로부터 제2 어드레스까지의 물리 주소 공간에 저장되어 있는 것으로 판단할 수 있다.In step S720 , the memory controller 114 may calculate physical addresses of the HBM 300 in which the data array exists. The memory controller 114 may calculate a first address corresponding to a position separated by an index value from the base address of the HBM 300 . That is, the first address may be calculated as (base address + index value). In addition, the memory controller 114 may calculate a second address corresponding to a value obtained by multiplying the data size by the first address. That is, the second address may be calculated as (base address+index value)*data size). The memory controller 114 may determine that the data array of the offloaded kernel is stored in the physical address space from the first address to the second address of the HBM 300 .

단계 S730에서, 메모리 콘트롤러(114)는 오프로드된 커널에 따라 연산 처리가 HBM(300)의 PIM 회로(321)에서 실행될 때 중간 결과 값을 저장하는 레지스터를 할당할 수 있다. 이것은 HBM 명령어 세트(530)에 포함되는 목적지 파라미터와 관련된다.In step S730 , the memory controller 114 may allocate a register for storing the intermediate result value when the arithmetic processing is executed in the PIM circuit 321 of the HBM 300 according to the offloaded kernel. This relates to the destination parameter included in the HBM instruction set 530 .

단계 S740에서, 메모리 콘트롤러(114)는 HBM(300)에 대한 명령어 세트(530)를 생성할 수 있다. HBM(300)에 대한 명령어 세트(530)는, 도 5a에서 설명된 오피코드 파라미터, 벡터 사이즈 파라미터, 소스 파라미터, 및 목적지 파라미터를 포함할 수 있다. 오피코드 파라미터는 오프로드된 커널의 명령어과 동일하게 표기되고, 벡터 사이즈 파라미터는 호스트 장치(110) 내 DRAM 캐시 라인의 데이터 입출력 수와 데이터 어레이의 데이터 입출력 수와의 상관 관계를 표시할 수 있다. 소스 파라미터는 데이터 어레이를 가져오는 HBM(300)의 어드레스로 표기되고, 목적지 파라미터는 단계 S730에서 할당된 레지스터의 식별 번호를 표기할 수 있다.In step S740 , the memory controller 114 may generate an instruction set 530 for the HBM 300 . The instruction set 530 for the HBM 300 may include the opcode parameters, vector size parameters, source parameters, and destination parameters described in FIG. 5A . The opcode parameter may be expressed the same as the offloaded kernel command, and the vector size parameter may indicate a correlation between the number of data input/outputs of the DRAM cache line in the host device 110 and the number of data input/outputs of the data array. The source parameter may indicate the address of the HBM 300 that brings the data array, and the destination parameter may indicate the identification number of the register allocated in step S730.

단계 S750에서, 메모리 콘트롤러(114)는 단계 S740에서 생성된 HBM(300)에 대한 명령어 세트(530)를 HBM(300)의 PIM 회로(321)로 전송할 수 있다. 이 후, HBM(300)의 PIM 회로(321)는 HBM(300)에 대한 명령어 세트(530)에 따라 연산 처리 동작을 수행할 것이다(단계 S660).In operation S750 , the memory controller 114 may transmit the instruction set 530 for the HBM 300 generated in operation S740 to the PIM circuit 321 of the HBM 300 . Thereafter, the PIM circuit 321 of the HBM 300 will perform an arithmetic processing operation according to the instruction set 530 for the HBM 300 (step S660).

메모리 콘트롤러(114)는, 단계 S630의 비교 결과, 해당 데이터 어레이가 DIMM(200)에 존재한다고 판단되면, 도 8에 도시된 바와 같이, 단계 S810 내지 단계 S850을 포함하는 단계 S650의 DIMM(200)에 대한 메모리 동작을 수행할 수 있다. S810 단계에서, 메모리 콘트롤러(114)는 단계 S610에서 수신된 오프로드된 커널의 데이터 어레이에 대한 베이스 어드레스에 대응하는 DIMM 맵핑 테이블(420)에 저장된 DIMM(200)의 베이스 어드레스를 읽을 수 있다.As a result of the comparison in step S630, if the memory controller 114 determines that the corresponding data array exists in the DIMM 200, as shown in FIG. 8, the DIMM 200 of step S650 including steps S810 to S850. A memory operation can be performed for . In step S810 , the memory controller 114 may read the base address of the DIMM 200 stored in the DIMM mapping table 420 corresponding to the base address of the data array of the offloaded kernel received in step S610 .

단계 S820에서, 메모리 콘트롤러(114)는 데이터 어레이가 존재하는 DIMM(200)의 물리 어드레스들을 계산할 수 있다. 메모리 콘트롤러(114)는 DIMM 맵핑 테이블(420)의 DIMM(200)의 베이스 어드레스로부터 인덱스 값에서 보더 인덱스 값을 뺀 만큼 떨어진 위치에 대응하는 제3 어드레스를 계산할 수 있다. 즉, 제3 어드레스는 (베이스 어드레스+(인덱스 값-보더 인덱스 값))으로 계산될 수 있다. 그리고, 메모리 콘트롤러(114)는 제3 어드레스로부터 데이터 사이즈를 곱한 값에 대응하는 제4 어드레스를 계산할 수 있다. 즉, 제4 어드레스는 ((베이스 어드레스+(인덱스 값-보더 인덱스 값)*데이터 사이즈)로 계산될 수 있다. 메모리 콘트롤러(114)는 오프로드된 커널의 데이터 어레이가 DIMM(200)의 제3 어드레스로부터 제4 어드레스까지의 물리 주소 공간에 저장되어 있는 것으로 판단할 수 있다.In operation S820 , the memory controller 114 may calculate physical addresses of the DIMM 200 in which the data array exists. The memory controller 114 may calculate a third address corresponding to a position spaced apart from the base address of the DIMM 200 in the DIMM mapping table 420 by subtracting the border index value from the index value. That is, the third address may be calculated as (base address+(index value-border index value)). In addition, the memory controller 114 may calculate a fourth address corresponding to a value obtained by multiplying the data size by the third address. That is, the fourth address may be calculated as ((base address+(index value-border index value)*data size). The memory controller 114 determines that the data array of the offloaded kernel is the third of the DIMM 200 . It may be determined that the data is stored in the physical address space from the address to the fourth address.

단계 S825에서, 메모리 콘트롤러(114)는 단계 S820에서 계산된 DIMM(200)의 물리 어드레스들을 이용하여 DIMM(200)에 저장된 데이터 어레이를 독출할 수 있다. 이것은 HBM(300)의 PIM 회로(321)가 DIMM(200)과 직접 연결된 인터페이스가 없기 때문에 DIMM(200)을 직접 억세스할 수 없어서, 메모리 콘트롤러(114)를 통해 DIMM(200)의 데이터를 PIM 회로(321)로 제공하기 위함이다.In operation S825 , the memory controller 114 may read the data array stored in the DIMM 200 using the physical addresses of the DIMM 200 calculated in operation S820 . This is because the PIM circuit 321 of the HBM 300 cannot directly access the DIMM 200 because there is no interface directly connected to the DIMM 200, so the data of the DIMM 200 is transferred to the PIM circuit through the memory controller 114. (321) to provide.

단계 S830에서, 메모리 콘트롤러(114)는 오프로드된 커널에 따라 연산 처리가 HBM(300)의 PIM 회로(321)에서 실행될 때 중간 결과 값을 저장하는 레지스터를 할당할 수 있다. 이것은 DIMM 명령어 세트(520)에 포함되는 목적지 파라미터와 관련된다.In step S830 , the memory controller 114 may allocate a register for storing an intermediate result value when an arithmetic process is executed in the PIM circuit 321 of the HBM 300 according to the offloaded kernel. This relates to the destination parameter included in the DIMM instruction set 520 .

단계 S840에서, 메모리 콘트롤러(114)는 DIMM(200)에 대한 명령어 세트(520)를 생성할 수 있다. DIMM(200)에 대한 명령어 세트(520)는, 도 5b에서 설명된 오피코드 파라미터, 벡터 사이즈 파라미터, 벡터 포지션 파라미터, 이미디어트 밸류 파라미터, 및 목적지 파라미터를 포함할 수 있다. 오피코드 파라미터는 오프로드된 커널의 명령어과 동일하게 표기되고, 벡터 사이즈 파라미터는 호스트 장치(110) 내 DRAM 캐시 라인의 데이터 입출력 수와 데이터 어레이의 데이터 입출력 수와의 상관 관계를 표시할 수 있다. 벡터 포지션 파라미터는 현재 명령어에서 활용하는 64B 데이터의 위치가 256B 데이터 어레이 중에서 몇번째 데이터 인지를 표기하고, 이미디어트 밸류 파라미터는 DIMM(200)에서 가지고 온 캐시 라인 64B 만큼의 데이터 값 자체를 나타낸다. 목적지 파라미터는 단계 S830에서 할당된 레지스터의 식별 번호를 표기할 수 있다.In step S840 , the memory controller 114 may generate the instruction set 520 for the DIMM 200 . The instruction set 520 for the DIMM 200 may include the opcode parameter, vector size parameter, vector position parameter, immediate value parameter, and destination parameter described in FIG. 5B . The opcode parameter may be expressed the same as the offloaded kernel command, and the vector size parameter may indicate a correlation between the number of data input/outputs of the DRAM cache line in the host device 110 and the number of data input/outputs of the data array. The vector position parameter indicates the position of the 64B data used in the current instruction among the 256B data array, and the immediate value parameter indicates the data value itself as much as the cache line 64B brought from the DIMM 200 . The destination parameter may indicate the identification number of the register allocated in step S830.

단계 S850에서, 메모리 콘트롤러(114)는 단계 S840에서 생성된 DIMM(200)에 대한 명령어 세트(520)를 HBM(300)의 PIM 회로(321)로 전송할 수 있다. 이 후, HBM(300)의 PIM 회로(321)는 DIMM(200)에 대한 명령어 세트(520)에 따라 연산 처리 동작을 수행할 것이다(S660)In step S850 , the memory controller 114 may transmit the command set 520 for the DIMM 200 generated in step S840 to the PIM circuit 321 of the HBM 300 . Thereafter, the PIM circuit 321 of the HBM 300 will perform an arithmetic processing operation according to the instruction set 520 for the DIMM 200 (S660).

도 9는 본 발명의 실시예들에 따른 이종 메모리 시스템을 포함하는 시스템(1000)을 나타내는 블록 다이어그램이다.9 is a block diagram illustrating a system 1000 including a heterogeneous memory system according to embodiments of the present invention.

도 9를 참조하면, 시스템(1000)은 카메라(1100), 디스플레이(1200), 오디오 처리부(1300), 모뎀(1400), DRAM들(1500a, 1500b), 플래시 메모리들(1600a, 1600b), I/O 디바이스들(1700a, 1700b) 및 어플리케이션 프로세서(Application Processor, 1800, 이하 "AP"라고 칭함)를 포함할 수 있다. 시스템(1000)은 랩탑(laptop) 컴퓨터, 휴대용 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기, 또는 IOT(Internet Of Things) 기기로 구현될 수 있다. 또한, 시스템(1000)은 서버(Server), 또는 개인용 컴퓨터(Personal Computer)로 구현될 수도 있다.Referring to FIG. 9 , the system 1000 includes a camera 1100 , a display 1200 , an audio processing unit 1300 , a modem 1400 , DRAMs 1500a and 1500b , flash memories 1600a and 1600b , I It may include /O devices 1700a and 1700b and an application processor (Application Processor 1800, hereinafter referred to as “AP”). The system 1000 is implemented as a laptop computer, a mobile phone, a smart phone, a tablet personal computer (PC), a wearable device, a healthcare device, or an Internet Of Things (IOT) device. can be Also, the system 1000 may be implemented as a server or a personal computer.

카메라(1100)는 사용자의 제어에 따라 정지 영상 또는 동영상을 촬영하고, 쵤영한 이미지/영상 데이터를 저장하거나 디스플레이(1200)로 전송할 수 있다. 오디오 처리부(1300)는 플래시 메모리 장치들(1600a, 1600b)나 네트워크의 컨텐츠에 포함된 오디오 데이터를 처리할 수 있다. 모뎀(1400)는 유/무선데이터 송수신을 위하여 신호를 변조하여 송신하고, 수신측에서 원래의 신호로 복구하기 위해 복조할 수 있다. I/O 디바이스들(1700a, 1700b)는 USB(Universal Serial Bus)나 스토리지, 디지털 카메라, SD(Secure Digital) 카드, DVD(Digital Versatile Disc), 네트워크 어댑터(Network adapter), 터치 스크린 등과 같은 디지털 입력 및/또는 출력 기능을 제공하는 기기들을 포함할 수 있다.The camera 1100 may take a still image or a moving picture according to a user's control, and may store the captured image/video data or transmit it to the display 1200 . The audio processing unit 1300 may process audio data included in the content of the flash memory devices 1600a and 1600b or the network. The modem 1400 modulates and transmits a signal to transmit/receive wired/wireless data, and may demodulate to restore the original signal at the receiving end. The I/O devices 1700a and 1700b are digital inputs such as a Universal Serial Bus (USB) or storage, a digital camera, a Secure Digital (SD) card, a Digital Versatile Disc (DVD), a network adapter, and a touch screen. and/or devices providing an output function.

AP(1800)는 시스템(1000)의 전반적인 동작을 제어할 수 있다. AP(1800)는 플래시 메모리 장치들(1600a, 1600b)에 저장된 컨텐츠의 일부가 디스플레이(1200)에 표시되도록 디스플레이(1200)를 제어할 수 있다. AP(1800)는 I/O 디바이스들(1700a, 1700b)을 통하여 사용자 입력이 수신되면, 사용자 입력에 대응하는 제어 동작을 수행할 수 있다. AP(1800)는 AI(Artifitial Intelligence) 데이터 연산을 위한 전용 회로인 엑셀레이터(Accelerator) 블록을 포함하거나, AP(1800)와 별개로 엑셀레이터 칩(1820)을 구비할 수 있다. 엑셀레이터 블록 또는 엑셀레이터 칩(1820)에 추가적으로 DRAM(1500b)이 장착될 수 있다. 엑셀레이터는 AP(1800)의 특정 기능을 전문적으로 수행하는 기능 블록으로, 엑셀레이터는 그래픽 데이터 처리를 전문적으로 수행하는 기능 블럭인 GPU, AI 계산과 인퍼런스(Inference)를 전문적으로 수행하기 위한 블럭인 NPU(Neural Processing Unit), 데이터 전송을 전문적으로 하는 블록인 DPU(Data Processing Unit)를 포함할 수 있다The AP 1800 may control the overall operation of the system 1000 . The AP 1800 may control the display 1200 so that a part of the content stored in the flash memory devices 1600a and 1600b is displayed on the display 1200 . When a user input is received through the I/O devices 1700a and 1700b, the AP 1800 may perform a control operation corresponding to the user input. The AP 1800 may include an accelerator block, which is a dedicated circuit for artificial intelligence (AI) data operation, or may include an accelerator chip 1820 separately from the AP 1800 . A DRAM 1500b may be additionally mounted to the accelerator block or accelerator chip 1820 . The accelerator is a function block that professionally performs a specific function of the AP 1800, and the accelerator is a function block that professionally performs graphic data processing, a GPU, and a block for professionally performing AI calculation and inference. It may include a Neural Processing Unit (NPU), a Data Processing Unit (DPU), which is a block that specializes in data transfer.

시스템(1000)은 복수의 DRAM들(1500a, 1500b)을 포함할 수 있다. AP(1800)는 JEDEC(Joint Electron Device Engineering Council) 표준 규격에 맞는 커맨드와 모드 레지스터(MRS) 셋팅을 통하여 DRAM들(1500a, 1500b)을 제어하거나, 저전압/고속/신뢰성 등 업체 고유 기능 및 CRC(Cyclic Redundancy Check)/ECC(Error Correction Code) 기능을 사용하기 위하여 DRAM 인터페이스 규약을 설정하여 통신할 수 있다. 예를 들어 AP(1800)는 LPDDR4, LPDDR5 등의 JEDEC 표준 규격에 맞는 인터페이스로 DRAM(1500a)과 통신할 수 있으며, 엑셀레이터 블록 또는 엑셀레이터 칩(1820)는 DRAM(1500a)보다 높은 대역폭을 가지는 엑셀레이터용 DRAM(1500b)을 제어하기 위하여 새로운 DRAM 인터페이스 규약을 설정하여 통신할 수 있다.The system 1000 may include a plurality of DRAMs 1500a and 1500b. The AP 1800 controls the DRAMs 1500a and 1500b through a command and mode register (MRS) setting conforming to the Joint Electron Device Engineering Council (JEDEC) standard, or uses company-specific functions such as low voltage/high speed/reliability and CRC ( In order to use the Cyclic Redundancy Check)/ECC (Error Correction Code) function, the DRAM interface protocol can be set for communication. For example, the AP 1800 may communicate with the DRAM 1500a through an interface conforming to JEDEC standards such as LPDDR4 and LPDDR5, and the accelerator block or accelerator chip 1820 is for an accelerator having a higher bandwidth than the DRAM 1500a. In order to control the DRAM 1500b, a new DRAM interface protocol may be established for communication.

도 9에서는 DRAM들(1500a, 1500b)만을 도시하였으나, 이에 한정되지 않고 AP(1800)이나 엑셀레이터 칩(1820) 대역폭과 반응 속도, 전압 조건들을 만족한다면 PRAM이나 SRAM, MRAM, RRAM, FRAM 또는 Hybrid RAM의 메모리 등 어떤 메모리라도 사용 가능하다. DRAM들(1500a, 1500b)은 I/O 디바이스들(1700a, 1700b)이나 플래시 메모리들(1600a, 1600b) 보다 상대적으로 작은 레이턴시(latency)와 대역폭(bandwidth)를 가지고 있다. DRAM들(1500a, 1500b)은 시스템(1000)의 파워 온 시점에 초기화되고, 운영 체제와 어플리케이션 데이터가 로딩되어 운영 체제와 어플리케이션 데이터의 임시 저장 장소로 사용되거나 각종 소프트웨어 코드의 실행 공간으로 사용될 수 있다.Although only the DRAMs 1500a and 1500b are illustrated in FIG. 9 , it is not limited thereto, and if the bandwidth, response speed, and voltage conditions of the AP 1800 or the accelerator chip 1820 are satisfied, PRAM, SRAM, MRAM, RRAM, FRAM or Hybrid RAM Any memory, such as the memory of The DRAMs 1500a and 1500b have relatively smaller latency and bandwidth than the I/O devices 1700a and 1700b or the flash memories 1600a and 1600b. The DRAMs 1500a and 1500b may be initialized when the system 1000 is powered on, loaded with an operating system and application data, and may be used as temporary storage locations for the operating system and application data or as execution spaces for various software codes. .

DRAM들(1500a, 1500b) 내에서는 더하기/빼기/곱하기/나누기 사칙 연산과 벡터 연산, 어드레스 연산, 또는 FFT(Fast Fourier Transform) 연산이 수행될 수 있다. 또한, DRAM들(1500a, 1500b) 내에서는 인퍼런스(inference)에 사용되는 수행을 위한 함수 기능(function)이 수행될 수 있다. 여기서, 인퍼런스는 인공 신경망(artificial neural network)을 이용한 딥러닝 알고리즘에서 수행될 수 있다. 딥러닝 알고리즘은 다양한 데이터를 통해 모델을 학습하는 트레이닝(training) 단계와 학습된 모델로 데이터를 인식하는 인퍼런스 단계를 포함할 수 있다. 실시예로서, 사용자가 카메라(1100)를 통해 촬영한 이미지는 신호 처리되어 DRAM(1500b) 내에 저장이 되며, 엑셀레이터 블록 또는 엑셀레이터 칩(1820)은 DRAM(1500b)에 저장된 데이터와 인퍼런스에 사용되는 함수를 이용하여 데이터를 인식하는 AI 데이터 연산을 수행할 수 있다.In the DRAMs 1500a and 1500b, addition/subtraction/multiplication/division operations, vector operations, address operations, or FFT (Fast Fourier Transform) operations may be performed. In addition, a function for execution used for inference may be performed in the DRAMs 1500a and 1500b. Here, the inference may be performed in a deep learning algorithm using an artificial neural network. The deep learning algorithm may include a training step of learning a model through various data and an inference step of recognizing data with the learned model. As an embodiment, an image captured by the user through the camera 1100 is signal-processed and stored in the DRAM 1500b, and the accelerator block or accelerator chip 1820 is used for inference with data stored in the DRAM 1500b. AI data operation that recognizes data can be performed using a function that is

시스템(1000)에서, DRAM들(1500a, 1500b)은 도 1 내지 도 8에서 설명된 DIMM(200) 및 PIM 회로(321)를 포함하는 HBM(300)으로 구성되는 이종 메모리 시스템으로 구현될 수 있다. DRAM들(1500a, 1500b)은 AP(1800)에서 오프로드되는 커널에 따른 연산 작업을 수행할 수 있다. 메모리 콘트롤러(1810)는 HBM(300)의 PIM 회로(321)에서 연산 작업이 실행될 때, 연산 작업에 요구되는 데이터 어레이가 존재하는 메모리를 판단하는 기준이 되는 보더 인덱스 값을 이용하여 데이터 어레이를 DIMM(200) 또는 HBM(300)으로부터 검색할 수 있다. 또한, 메모리 콘트롤러(1810)는 오프로드된 커널에 대해 별도의 주소 변환을 수행하지 않도록 하기 위해, DIMM(200) 및 HBM(300) 각각에 지정된 물리 주소 공간을 사용하는 DIMM 명령어 세트 및 HBM 명령어 세트를 생성할 수 있다.In the system 1000 , the DRAMs 1500a and 1500b may be implemented as a heterogeneous memory system including the HBM 300 including the DIMM 200 and the PIM circuit 321 described in FIGS. 1 to 8 . . The DRAMs 1500a and 1500b may perform an operation operation according to a kernel offloaded from the AP 1800 . When an operation operation is executed in the PIM circuit 321 of the HBM 300, the memory controller 1810 uses the border index value as a criterion for determining the memory in which the data array required for the operation operation exists to DIMM the data array. (200) or from HBM (300). In addition, in order to prevent the memory controller 1810 from performing separate address translation for the offloaded kernel, the DIMM instruction set and HBM instruction set using the physical address space specified for each of the DIMM 200 and the HBM 300 . can create

시스템(1000)은 DRAM들(1500a, 1500b) 보다 큰 용량을 가진 복수의 스토리지 또는 복수의 플래시 메모리들(1600a, 1600b)을 포함할 수 있다. 엑셀레이터 블록 또는 엑셀레이터 칩(1820)은 플래시 메모리들(1600a, 1600b)를 이용하여 트레이닝(training) 단계와 AI 데이터 연산을 수행할 수 있다. 일 실시예로, 플래시 메모리들(1600a, 1600b)은 메모리 콘트롤러(1610) 내에 구비된 연산 장치를 사용하여 AP(1800) 및/내지 엑셀레이터 칩(1820)이 수행하는 트레이닝(training) 단계과 인퍼런스 AI 데이터 연산을 보다 효율적으로 수행할 수 있다. 플래시 메모리들(1600a, 1600b)은 카메라(1100)를 통하여 찍은 사진을 저장하거나, 데이터 네트워크로 전송 받은 데이터를 저장할 수 있다. 예를 들어, 증강 현실(Augmented Reality)/가상 현실(Virtual Reality), HD(High Definition) 또는 UHD(Ultra High Definition) 컨텐츠를 저장할 수 있다.The system 1000 may include a plurality of storage or a plurality of flash memories 1600a and 1600b having a larger capacity than the DRAMs 1500a and 1500b. The accelerator block or accelerator chip 1820 may perform a training step and AI data operation by using the flash memories 1600a and 1600b. In an embodiment, the flash memories 1600a and 1600b may use a computing device included in the memory controller 1610 to perform a training step and inference performed by the AP 1800 and/or the accelerator chip 1820 . AI data operation can be performed more efficiently. The flash memories 1600a and 1600b may store pictures taken through the camera 1100 or data transmitted through a data network. For example, augmented reality/virtual reality, HD (High Definition), or UHD (Ultra High Definition) content may be stored.

도 10은 발명의 일 실시예에 따른 이종 메모리 시스템이 적용된 데이터 센터를 나타낸 도면이다.10 is a diagram illustrating a data center to which a heterogeneous memory system according to an embodiment of the present invention is applied.

도 10을 참조하면, 데이터 센터(3000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(3000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(3000)는 어플리케이션 서버들(3100 내지 3100n) 및 스토리지 서버들(3200 내지 3200m)을 포함할 수 있다. 어플리케이션 서버들(3100 내지 3100n)의 개수 및 스토리지 서버들(3200 내지 3200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 어플리케이션 서버들(3100 내지 3100n)의 개수 및 스토리지 서버들(3200 내지 3200m)의 개수는 서로 다를 수 있다.Referring to FIG. 10 , a data center 3000 is a facility that collects various types of data and provides services, and may also be referred to as a data storage center. The data center 3000 may be a system for operating a search engine and a database, and may be a computing system used in a business such as a bank or a government institution. The data center 3000 may include application servers 3100 to 3100n and storage servers 3200 to 3200m. The number of application servers 3100 to 3100n and the number of storage servers 3200 to 3200m may be variously selected according to embodiments, and the number of application servers 3100 to 3100n and storage servers 3200 to 3200m 3200m) may be different.

어플리케이션 서버(3100) 또는 스토리지 서버(3200)는 프로세서(3110, 3210) 및 메모리(3120, 3220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(3200)를 예시로 설명하면, 프로세서(3210)는 스토리지 서버(3200)의 전반적인 동작을 제어할 수 있고, 메모리(3220)에 액세스하여 메모리(3220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(3220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(3200)에 포함되는 프로세서(3210)의 개수 및 메모리(3220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)의 개수는 서로 다를 수도 있다. 프로세서(3210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(3200)에 대한 상기 설명은, 어플리케이션 서버(3100)에도 유사하게 적용될 수 있다. 실시예에 따라, 어플리케이션 서버(3100)는 스토리지 장치(3150)를 포함하지 않을 수도 있다. 스토리지 서버(3200)는 적어도 하나 이상의 스토리지 장치(3250)를 포함할 수 있다. 스토리지 서버(3200)에 포함되는 스토리지 장치(3250)의 개수는 실시예에 따라 다양하게 선택될 수 있다.The application server 3100 or the storage server 3200 may include at least one of processors 3110 and 3210 and memories 3120 and 3220 . If the storage server 3200 is described as an example, the processor 3210 may control the overall operation of the storage server 3200 , and access the memory 3220 to execute instructions and/or data loaded into the memory 3220 . can run The memory 3220 may be a DDR Double Data Rate Synchronous DRAM (SDRAM), High Bandwidth Memory (HBM), Hybrid Memory Cube (HMC), Dual In-line Memory Module (DIMM), Optane DIMM, or Non-Volatile DIMM (NVMDIMM). can According to an embodiment, the number of processors 3210 and the number of memories 3220 included in the storage server 3200 may be variously selected. In one embodiment, processor 3210 and memory 3220 may provide a processor-memory pair. In one embodiment, the number of processors 3210 and memory 3220 may be different from each other. The processor 3210 may include a single-core processor or a multi-core processor. The above description of the storage server 3200 may be similarly applied to the application server 3100 . According to an embodiment, the application server 3100 may not include the storage device 3150 . The storage server 3200 may include at least one or more storage devices 3250 . The number of storage devices 3250 included in the storage server 3200 may be variously selected according to embodiments.

어플리케이션 서버(3100) 또는 스토리지 서버(3200)에서, 메모리(3120, 3220)는 도 1 내지 도 8에서 설명된 DIMM(200) 및 PIM 회로(321)를 포함하는 HBM(300)으로 구성되는 이종 메모리 시스템으로 구현될 수 있다. 메모리(3120, 3220)는 프로세서(3110, 3210)에서 오프로드되는 커널에 따른 연산 작업을 수행하도록 제어하는 메모리 콘트롤러와 결합될 수 있다. 메모리 콘트롤러는 HBM(300)의 PIM 회로(321)에서 연산 작업이 실행될 때, 연산 작업에 요구되는 데이터 어레이가 존재하는 메모리를 판단하는 기준이 되는 보더 인덱스 값을 이용하여 데이터 어레이를 DIMM(200) 또는 HBM(300)으로부터 검색할 수 있다. 또한, 메모리 콘트롤러는 오프로드된 커널에 대해 별도의 주소 변환을 수행하지 않도록 하기 위해, DIMM(200) 및 HBM(300) 각각에 지정된 물리 주소 공간을 사용하는 DIMM 명령어 세트 및 HBM 명령어 세트를 생성할 수 있다.In the application server 3100 or the storage server 3200 , the memories 3120 and 3220 are heterogeneous memories composed of the HBM 300 including the DIMM 200 and the PIM circuit 321 described in FIGS. 1 to 8 . It can be implemented as a system. The memories 3120 and 3220 may be combined with a memory controller that controls to perform an arithmetic operation according to the kernel offloaded from the processors 3110 and 3210 . When the operation operation is executed in the PIM circuit 321 of the HBM 300, the memory controller converts the data array to the DIMM 200 using the border index value as a criterion for determining the memory in which the data array required for the operation operation exists. Alternatively, it may be retrieved from the HBM 300 . In addition, in order not to perform separate address translation for the offloaded kernel, the memory controller generates a DIMM instruction set and an HBM instruction set using the physical address space specified for each of the DIMM 200 and HBM 300. can

어플리케이션 서버들(3100 내지 3100n) 및 스토리지 서버들(3200 내지 3200m)은 네트워크(3300)를 통해 서로 통신할 수 있다. 네트워크(3300)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(3300)의 액세스 방식에 따라 스토리지 서버들(3200 내지 3200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.The application servers 3100 to 3100n and the storage servers 3200 to 3200m may communicate with each other through the network 3300 . The network 3300 may be implemented using Fiber Channel (FC) or Ethernet. In this case, FC is a medium used for relatively high-speed data transmission, and an optical switch providing high performance/high availability may be used. Depending on the access method of the network 3300 , the storage servers 3200 to 3200m may be provided as file storage, block storage, or object storage.

일 실시예에서, 네트워크(3300)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예를 들어, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(3300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(3300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.In one embodiment, network 3300 may be a storage-only network, such as a storage area network (SAN). For example, the SAN may be an FC-SAN that uses an FC network and is implemented according to FC Protocol (FCP). As another example, the SAN may be an IP-SAN that uses a TCP/IP network and is implemented according to the iSCSI (SCSI over TCP/IP or Internet SCSI) protocol. In other embodiments, network 3300 may be a generic network, such as a TCP/IP network. For example, the network 3300 may be implemented according to protocols such as FC over Ethernet (FCoE), Network Attached Storage (NAS), and NVMe over Fabrics (NVMe-oF).

이하에서는, 어플리케이션 서버(3100) 및 스토리지 서버(3200)를 중심으로 설명하기로 한다. 어플리케이션 서버(3100)에 대한 설명은 다른 어플리케이션 서버(3100n)에도 적용될 수 있고, 스토리지 서버(3200)에 대한 설명은 다른 스토리지 서버(3200m)에도 적용될 수 있다.Hereinafter, the application server 3100 and the storage server 3200 will be mainly described. A description of the application server 3100 may be applied to other application servers 3100n, and a description of the storage server 3200 may also be applied to other storage servers 3200m.

어플리케이션 서버(3100)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(3300)를 통해 스토리지 서버들(3200 내지 3200m) 중 하나에 저장할 수 있다. 또한, 어플리케이션 서버(3100)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(3200 내지 3200m) 중 하나로부터 네트워크(3300)를 통해 획득할 수 있다. 예를 들어, 어플리케이션 서버(3100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.The application server 3100 may store data requested to be stored by a user or a client in one of the storage servers 3200 to 3200m through the network 3300 . Also, the application server 3100 may obtain data read requested by the user or the client from one of the storage servers 3200 to 3200m through the network 3300 . For example, the application server 3100 may be implemented as a web server or DBMS (Database Management System).

어플리케이션 서버(3100)는 네트워크(3300)를 통해 다른 어플리케이션 서버(3100n)에 포함된 메모리(3120n) 또는 스토리지 장치(3150n)에 액세스할 수 있고, 또는 네트워크(3300)를 통해 스토리지 서버(3200-3200m)에 포함된 메모리(3220-3220m) 또는 스토리지 장치(3250-3250m)에 액세스할 수 있다. 이로써, 어플리케이션 서버(3100)는 어플리케이션 서버들(3100-3100n) 및/또는 스토리지 서버들(3200-3200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 어플리케이션 서버(3100)는 어플리케이션 서버들(3100-3100n) 및/또는 스토리지 서버들(3200-3200m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(3200-3200m)의 스토리지 장치(3250-3250m)로부터 스토리지 서버들(3200-3200m)의 메모리들(3220-3220m)을 거쳐서, 또는 바로 어플리케이션 서버들(3100-3100n)의 메모리(3120-3120n)로 이동될 수 있다. 네트워크(3300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.The application server 3100 may access the memory 3120n or the storage device 3150n included in another application server 3100n through the network 3300 , or the storage server 3200-3200m through the network 3300 . ) contained in memory 3220-3220m or storage device 3250-3250m. Accordingly, the application server 3100 may perform various operations on data stored in the application servers 3100-3100n and/or the storage servers 3200-3200m. For example, the application server 3100 may execute a command for moving or copying data between the application servers 3100-3100n and/or the storage servers 3200-3200m. At this time, data is transferred from the storage device 3250-3250m of the storage servers 3200-3200m through the memories 3220-3220m of the storage servers 3200-3200m, or directly to the application servers 3100-3100n. may be moved to the memory 3120-3120n of Data moving through the network 3300 may be encrypted data for security or privacy.

스토리지 서버(3200)를 예시로 설명하면, 인터페이스(3254)는 프로세서(3210)와 콘트롤러(3251)의 물리적 연결 및 NIC(3240)와 콘트롤러(3251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(3254)는 스토리지 장치(3250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(3254)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.If the storage server 3200 is described as an example, the interface 3254 may provide a physical connection between the processor 3210 and the controller 3251 and a physical connection between the NIC 3240 and the controller 3251 . For example, the interface 3254 may be implemented in a DAS (Direct Attached Storage) method for directly connecting the storage device 3250 with a dedicated cable. Also, for example, the interface 3254 may be an Advanced Technology Attachment (ATA), Serial ATA (SATA), external SATA (e-SATA), Small Computer Small Interface (SCSI), Serial Attached SCSI (SAS), Peripheral (PCI) Component Interconnection), PCIe (PCI express), NVMe (NVM express), IEEE 1394, USB (universal serial bus), SD (secure digital) card, MMC (multi-media card), eMMC (embedded multi-media card), It may be implemented in various interface methods such as Universal Flash Storage (UFS), embedded Universal Flash Storage (eUFS), and a compact flash (CF) card interface.

스토리지 서버(3200)는 스위치(3230) 및 NIC(3240)을 더 포함할 수 있다. 스위치(3230)는 프로세서(3210)의 제어에 따라 프로세서(3210)와 스토리지 장치(3250)를 선택적으로 연결시키거나, NIC(3240)과 스토리지 장치(3250)를 선택적으로 연결시킬 수 있다.The storage server 3200 may further include a switch 3230 and a NIC 3240 . The switch 3230 may selectively connect the processor 3210 and the storage device 3250 or the NIC 3240 and the storage device 3250 under the control of the processor 3210 .

일 실시예에서 NIC(3240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(3240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(3300)에 연결될 수 있다. NIC(3240)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(3210) 및/또는 스위치(3230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(3254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(3240)는 프로세서(3210), 스위치(3230), 스토리지 장치(3250) 중 적어도 하나와 통합될 수도 있다.In one embodiment, the NIC 3240 may include a network interface card, a network adapter, and the like. The NIC 3240 may be connected to the network 3300 by a wired interface, a wireless interface, a Bluetooth interface, an optical interface, or the like. The NIC 3240 may include an internal memory, a DSP, a host bus interface, and the like, and may be connected to the processor 3210 and/or the switch 3230 through the host bus interface. The host bus interface may be implemented as one of the examples of interface 3254 described above. In an embodiment, the NIC 3240 may be integrated with at least one of the processor 3210 , the switch 3230 , and the storage device 3250 .

어플리케이션 서버(3100-3100n) 또는 스토리지 서버(3200-3200m)에서 프로세서는 스토리지 장치(3150-3150n, 3250-3250m) 또는 메모리(3120-3120n, 3220-3220m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.In the application server (3100-3100n) or storage server (3200-3200m), the processor sends commands to the storage device (3150-3150n, 3250-3250m) or memory (3120-3120n, 3220-3220m) to program or read data can do. In this case, the data may be error-corrected data through an ECC (Error Correction Code) engine. The data is data that has been processed by Data Bus Inversion (DBI) or Data Masking (DM), and may include Cyclic Redundancy Code (CRC) information. The data may be encrypted data for security or privacy.

스토리지 장치(3150-3150n, 3250-3250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(3252-3252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(3252-3252m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)를 생성할 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.The storage devices 3150-3150n and 3250-3250m may transmit a control signal and a command/address signal to the NAND flash memory devices 3252-3252m in response to a read command received from the processor. Accordingly, when data is read from the NAND flash memory device 3252-3252m, a read enable (RE) signal may be input as a data output control signal to output data to the DQ bus. A data strobe (DQS) may be generated using the RE signal. The command and address signals may be latched in the page buffer according to a rising edge or a falling edge of a write enable (WE) signal.

콘트롤러(3251)는 스토리지 장치(3250)의 동작을 전반적으로 제어할 수 있다. 일 실시예에서, 콘트롤러(3251)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 콘트롤러(3251)는 기입 커맨드에 응답하여 낸드 플래시(3252)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 낸드 플래시(3252)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 스토리지 서버(3200) 내의 프로세서(3210), 다른 스토리지 서버(3200m) 내의 프로세서(3210m) 또는 어플리케이션 서버(3100, 3100n) 내의 프로세서(3110, 3110n)로부터 제공될 수 있다. DRAM(3253)은 낸드 플래시(3252)에 기입될 데이터 또는 낸드 플래시(3252)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(3253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(3252)를 관리하기 위해 콘트롤러(3251)에서 생성된 데이터이다. 스토리지 장치(3250)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 포함할 수 있다.The controller 3251 may control overall operations of the storage device 3250 . In one embodiment, the controller 3251 may include static random access memory (SRAM). The controller 3251 may write data to the NAND flash 3252 in response to the write command, or may read data from the NAND flash 3252 in response to the read command. For example, a write command and/or a read command may be sent from a processor 3210 in a storage server 3200, a processor 3210m in another storage server 3200m, or a processor 3110, 3110n in an application server 3100, 3100n. can be provided. The DRAM 3253 may temporarily store (buffer) data to be written to the NAND flash 3252 or data read from the NAND flash 3252 . Also, the DRAM 3253 may store metadata. Here, the metadata is user data or data generated by the controller 3251 to manage the NAND flash 3252 . The storage device 3250 may include a Secure Element (SE) for security or privacy.

본 발명은 도면에 도시된 제한된 수의 실시예들과 관련하여 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변경들 및 변형들, 그리고 균등한 다른 실시예들이 가능하다는 점을 인식할 것이다. 따라서, 첨부된 청구항들은 본 발명의 진정한 사상 및 범위 내에 속하는 바와 같은 모든 그러한 변경들 및 변형들을 커버하는 것을 의도한다.Although the present invention has been described with reference to a limited number of embodiments shown in the drawings, these are merely exemplary, and various modifications and variations thereof, and other equivalent implementations by those of ordinary skill in the art. It will be appreciated that examples are possible. Accordingly, the appended claims are intended to cover all such modifications and variations as fall within the true spirit and scope of the present invention.

Claims (10)

시스템에 있어서,
데이터를 저장하도록 구성되는 이종 메모리 시스템, 상기 이종 메모리 시스템은 메모리 모듈 및 메모리-내-처리(Processing-In-Memory: PIM) 회로를 포함하는 고대역 메모리(HBM)를 포함하고;
상기 시스템의 연산 작업들을 실행하도록 구성되는 호스트 프로세서, 상기 호스트 프로세서는 상기 연산 작업들 중 일부가 상기 PIM 회로에서 실행되도록 할당하고; 및
상기 호스트 프로세서에 의해 오프로드된 커널에 따른 연산 작업이 상기 HBM의 상기 PIM 회로에서 실행될 때, 상기 연산 작업에 요구되는 데이터 어레이가 존재하는 메모리를 판단하는 기준이 되는 보더 인덱스 값을 이용하여 상기 데이터 어레이를 상기 메모리 모듈 또는 상기 HBM으로부터 검색하는 메모리 콘트롤러를 포함하는 시스템.
In the system,
A heterogeneous memory system configured to store data, the heterogeneous memory system comprising a high-bandwidth memory (HBM) including a memory module and Processing-In-Memory (PIM) circuitry;
a host processor configured to execute computational tasks of the system, the host processor allocating some of the computational tasks to be executed in the PIM circuit; and
When a calculation operation according to the kernel offloaded by the host processor is executed in the PIM circuit of the HBM, the data is obtained using a border index value as a criterion for determining a memory in which a data array required for the operation operation exists. and a memory controller that retrieves an array from the memory module or the HBM.
제1항에 있어서,
상기 보더 인덱스 값은 상기 데이터 어레이의 활용 빈도 비율 또는 상기 메모리 모듈과 상기 HBM의 대역폭 비율에 기초하여 설정되는 시스템.
According to claim 1,
The border index value is set based on a utilization frequency ratio of the data array or a bandwidth ratio between the memory module and the HBM.
제1항에 있어서,
상기 메모리 콘트롤러는, 상기 호스트 프로세서로부터 상기 오프로드된 커널에 대한 정보를 수신하고,
상기 오프로드된 커널에 대한 정보는 상기 데이터 어레이의 식별 번호와 상기 식별 번호에 해당하는 상기 데이터 어레이에 대한 베이스 어드레스, 인덱스 값 및 데이터 사이즈를 포함하고, 상기 인덱스 값은 상기 베이스 어드레스와의 오프셋을 나타내는 시스템.
According to claim 1,
The memory controller receives information about the offloaded kernel from the host processor,
The information on the offloaded kernel includes an identification number of the data array and a base address, an index value, and a data size for the data array corresponding to the identification number, and the index value indicates an offset from the base address. representing the system.
제3항에 있어서,
상기 메모리 콘트롤러는 상기 인덱스 값과 상기 보더 인덱스 값을 비교하여 상기 인덱스 값이 상기 보더 인덱스 값 보다 작으면 상기 데이터 어레이가 상기 HBM에 존재하는 것으로 판단하는 시스템.
4. The method of claim 3,
and the memory controller compares the index value with the border index value and determines that the data array exists in the HBM if the index value is less than the border index value.
제4항에 있어서,
상기 메모리 콘트롤러는 HBM 맵핑 테이블을 포함하고, 상기 데이터 어레이에 대한 상기 베이스 어드레스에 대응하는 상기 HBM의 베이스 어드레스를 상기 HBM 맵핑 테이블에서 읽는 시스템.
5. The method of claim 4,
wherein the memory controller includes an HBM mapping table, and reading a base address of the HBM corresponding to the base address for the data array from the HBM mapping table.
제5항에 있어서,
상기 메모리 콘트롤러는 상기 HBM의 상기 베이스 어드레스로부터 상기 인덱스 값 만큼 떨어진 위치에 대응하는 제1 어드레스를 계산하고, 상기 제1 어드레스로부터 상기 데이터 사이즈를 곱한 값에 대응하는 제2 어드레스를 계산하고, 상기 HBM의 상기 제1 어드레스로부터 상기 제2 어드레스까지의 물리 주소 공간에 상기 데이터 어레이가 저장되어 있는 것으로 판단하는 시스템.
6. The method of claim 5,
The memory controller calculates a first address corresponding to a position separated by the index value from the base address of the HBM, calculates a second address corresponding to a value obtained by multiplying the data size from the first address, and the HBM determining that the data array is stored in a physical address space from the first address to the second address of
제6항에 있어서,
상기 메모리 콘트롤러는 상기 HBM에 저장된 상기 데이터 어레이를 이용하여 상기 HBM의 상기 PIM 회로에서 실행되는 연산 처리에 의해 생성되는 중간 결과 값을 저장하는 레지스터를 할당하는 시스템.
7. The method of claim 6,
and the memory controller uses the data array stored in the HBM to allocate a register for storing an intermediate result value generated by an arithmetic process executed in the PIM circuit of the HBM.
제7항에 있어서,
상기 메모리 콘트롤러는 상기 HBM의 상기 PIM 회로에서 상기 연산 처리를 실행하도록 지시하는 HBM 명령어 세트를 생성하고,
상기 HBM 명령어 세트는 오피코드 파라미터, 벡터 사이즈 파라미터, 소스 파라미터, 및 목적지 파라미터를 포함하고,
상기 오피코드 파라미터는 상기 오프로드된 커널의 명령어과 동일하게 표기되고, 상기 벡터 사이즈 파라미터는 상기 호스트 프로세서와 결합되는 DRAM 캐시 라인의 데이터 입출력 수와 상기 데이터 어레이의 데이터 입출력 수와의 상관 관계를 표시하고, 상기 소스 파라미터는 상기 데이터 어레이에 대응하는 상기 HBM의 어드레스로 표기되고, 상기 목적지 파라미터는 상기 할당된 레지스터의 식별 번호를 표기하는 시스템.
8. The method of claim 7,
the memory controller generates an HBM instruction set instructing to execute the arithmetic processing in the PIM circuit of the HBM;
the HBM instruction set includes an opcode parameter, a vector size parameter, a source parameter, and a destination parameter;
The opcode parameter is expressed the same as the instruction of the offloaded kernel, and the vector size parameter indicates a correlation between the number of data input/output of a DRAM cache line coupled to the host processor and the number of data input/output of the data array, , the source parameter is indicated by an address of the HBM corresponding to the data array, and the destination parameter is indicated by an identification number of the allocated register.
제3항에 있어서,
상기 메모리 콘트롤러는 상기 인덱스 값과 상기 보더 인덱스 값을 비교하여 상기 인덱스 값이 상기 보더 인덱스 값 보다 크면 상기 데이터 어레이가 상기 메모리 모듈에 존재하는 것으로 판단하는 시스템.
4. The method of claim 3,
and the memory controller compares the index value with the border index value and determines that the data array exists in the memory module if the index value is greater than the border index value.
메모리 모듈 및 메모리-내-처리(Processing-In-Memory: PIM) 회로를 포함하는 고대역 메모리(HBM)를 포함하는 이종 메모리 시스템을 포함하는 시스템에서 구현되는 방법으로서,
호스트 프로세서에 의해 커널을 메모리 콘트롤러에 오프로드하는 단계;
상기 오프로드된 커널의 작업 코드의 실행에 따라 처리될 데이터 어레이가 존재하는 메모리를 판단하는 기준이 되는 보더 인덱스 값을, 상기 메모리 콘트롤러에 의해, 저장하는 단계;
상기 오프로드된 커널에 대한 정보를, 상기 메모리 콘트롤러에 의해, 수신하는 단계, 상기 오프로드된 커널에 대한 정보는 상기 데이터 어레이의 식별 번호와 상기 식별 번호에 해당하는 상기 데이터 어레이에 대한 베이스 어드레스, 인덱스 값 및 데이터 사이즈를 포함하고, 상기 인덱스 값은 상기 베이스 어드레스와의 오프셋을 나타내고;
상기 데이터 어레이의 상기 인덱스 값과 상기 보더 인덱스 값을, 상기 메모리 콘트롤러에 의해, 비교하는 단계;
비교 결과, 상기 인덱스 값이 상기 보더 인덱스 값 보다 작으면 상기 데이터 어레이가 상기 HBM에 존재하는 것으로 판단하고, 상기 인덱스 값이 상기 보더 인덱스 값 보다 크면 상기 데이터 어레이가 상기 메모리 모듈에 존재하는 것으로, 상기 메모리 콘트롤러에 의해, 판단하는 단계;
상기 메모리 모듈에 저장된 상기 데이터 어레이를 이용하여 상기 HBM의 상기 PIM 회로에서 연산 작업을 실행하도록 지시하는 메모리 모듈 명령어 세트를, 상기 메모리 콘트롤러에 의해, 생성하는 단계; 및
상기 HBM에 저장된 상기 데이터 어레이를 이용하여 상기 HBM의 상기 PIM 회로에서 상기 연산 작업을 실행하도록 지시하는 HBM 명령어 세트를, 상기 메모리 콘트롤러에 의해, 생성하는 단계를 포함하고,
상기 보더 인덱스 값은 상기 데이터 어레이의 활용 빈도 비율 또는 상기 메모리 모듈과 상기 HBM의 대역폭 비율에 기초하여 설정되는 방법.
A method implemented in a system comprising a heterogeneous memory system comprising a high-bandwidth memory (HBM) comprising a memory module and a Processing-In-Memory (PIM) circuit, the method comprising:
offloading the kernel to the memory controller by the host processor;
storing, by the memory controller, a border index value serving as a criterion for determining a memory in which a data array to be processed according to the execution of the working code of the offloaded kernel exists;
Receiving, by the memory controller, information on the offloaded kernel, the information on the offloaded kernel includes an identification number of the data array and a base address for the data array corresponding to the identification number; an index value and a data size, wherein the index value indicates an offset from the base address;
comparing, by the memory controller, the index value of the data array and the border index value;
As a result of comparison, if the index value is less than the border index value, it is determined that the data array exists in the HBM, and if the index value is greater than the border index value, the data array exists in the memory module, determining, by the memory controller;
generating, by the memory controller, a memory module instruction set instructing to execute an arithmetic operation in the PIM circuit of the HBM using the data array stored in the memory module; and
generating, by the memory controller, an HBM instruction set instructing to execute the computational task in the PIM circuit of the HBM using the data array stored in the HBM;
The border index value is set based on a utilization frequency ratio of the data array or a bandwidth ratio between the memory module and the HBM.
KR1020210117942A 2021-06-10 2021-09-03 Data processing system and method for accessing heterogeneous memory system with processing units KR102430982B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202210651283.0A CN115469800A (en) 2021-06-10 2022-06-09 Data processing system and method for accessing heterogeneous memory system
EP22178305.3A EP4102377A1 (en) 2021-06-10 2022-06-10 Data processing system and method for accessing heterogeneous memory system
US17/837,286 US11880590B2 (en) 2021-06-10 2022-06-10 Data processing system and method for accessing heterogeneous memory system including processing unit
US18/531,094 US20240103755A1 (en) 2021-06-10 2023-12-06 Data processing system and method for accessing heterogeneous memory system including processing unit

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210075745 2021-06-10
KR20210075745 2021-06-10

Publications (1)

Publication Number Publication Date
KR102430982B1 true KR102430982B1 (en) 2022-08-11

Family

ID=82803404

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210117942A KR102430982B1 (en) 2021-06-10 2021-09-03 Data processing system and method for accessing heterogeneous memory system with processing units

Country Status (1)

Country Link
KR (1) KR102430982B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190017639A (en) * 2017-08-10 2019-02-20 삼성전자주식회사 Intelligent high bandwidth memory appliance
KR20190072404A (en) * 2017-12-15 2019-06-25 삼성전자주식회사 Hbm based memory lookup engine for deep learning accelerator
KR20190100632A (en) * 2018-02-21 2019-08-29 삼성전자주식회사 Memory device supporting skip calculation mode and method of operating the same
KR20200039930A (en) * 2018-10-08 2020-04-17 삼성전자주식회사 Memory device performing in-memory prefetching and system including the same

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190017639A (en) * 2017-08-10 2019-02-20 삼성전자주식회사 Intelligent high bandwidth memory appliance
KR20190072404A (en) * 2017-12-15 2019-06-25 삼성전자주식회사 Hbm based memory lookup engine for deep learning accelerator
KR20190100632A (en) * 2018-02-21 2019-08-29 삼성전자주식회사 Memory device supporting skip calculation mode and method of operating the same
KR20200039930A (en) * 2018-10-08 2020-04-17 삼성전자주식회사 Memory device performing in-memory prefetching and system including the same

Similar Documents

Publication Publication Date Title
KR102365312B1 (en) Storage controller, computational storage device, and operation method of computational storage device
US11741034B2 (en) Memory device including direct memory access engine, system including the memory device, and method of operating the memory device
US10540303B2 (en) Module based data transfer
US20240103755A1 (en) Data processing system and method for accessing heterogeneous memory system including processing unit
US11921639B2 (en) Method for caching data, a host device for caching data, and a storage system for caching data
US11157191B2 (en) Intra-device notational data movement system
US20220147470A1 (en) System, device, and method for accessing memory based on multi-protocol
KR20230016110A (en) Memory module, system including the same, and operation method of memory module
US20230376414A1 (en) Memory systems and controllers for generating a command address and methods of operating same
US20230229357A1 (en) Storage controller, computational storage device, and operational method of computational storage device
KR102430982B1 (en) Data processing system and method for accessing heterogeneous memory system with processing units
EP4156186A2 (en) Memory device for reducing timing parameters and power consumption for internal processing operation and method of implementing the same
EP4095701A9 (en) Memory device and method of controlling row hammer
US20240096395A1 (en) Device, operating method, memory device, and cxl memory expansion device
US11809341B2 (en) System, device and method for indirect addressing
US20230222067A1 (en) Apparatus and method for cache-coherence
US20170031633A1 (en) Method of operating object-oriented data storage device and method of operating system including the same
US20230214329A1 (en) Storage system and storage device, and operating method thereof
US20240201858A1 (en) Memory device and scheduling method thereof
US20220147458A1 (en) Semiconductor device
US20230084539A1 (en) Computational storage device and storage system including the computational storage device
US20220129383A1 (en) Electronic device, automotive device, and data center
US20230359394A1 (en) Operating method of memory device for managing map data of each of plurality of storage devices, computing system including memory device, and operating method of computing system
US20230376427A1 (en) Memory system and computing system including the same
US20240053891A1 (en) Chipset Attached Random Access Memory

Legal Events

Date Code Title Description
GRNT Written decision to grant