KR20230173059A - Smart memory module and operating method thereof - Google Patents

Smart memory module and operating method thereof Download PDF

Info

Publication number
KR20230173059A
KR20230173059A KR1020230175816A KR20230175816A KR20230173059A KR 20230173059 A KR20230173059 A KR 20230173059A KR 1020230175816 A KR1020230175816 A KR 1020230175816A KR 20230175816 A KR20230175816 A KR 20230175816A KR 20230173059 A KR20230173059 A KR 20230173059A
Authority
KR
South Korea
Prior art keywords
volatile memory
data
cxl
controller
smart
Prior art date
Application number
KR1020230175816A
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 KR1020230175816A priority Critical patent/KR20230173059A/en
Publication of KR20230173059A publication Critical patent/KR20230173059A/en

Links

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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명에 따른 스마트 메모리 모듈은, 적어도 하나의 휘발성 메모리 장치, 메쉬 구조로 연결된 복수의 비휘발성 메모리 장치들, 상기 적어도 하나의 휘발성 메모리 장치에서 상기 복수의 비휘발성 메모리 장치들을 데이터 전송을 수행하는 복수의 차일드 제어기들, 및 외부 장치와 CXL(Compute Express Link) 인터페이스를 통하여 통신하고, 상기 적어도 하나의 휘발성 메모리 장치 및 상기 복수의 차일드 제어기들을 제어하는 마더 제어기를 포함하고, 상기 복수의 차일드 제어기들의 각각은 상기 복수의 비휘발성 메모리 장치들 중에서 활성화 다이로 할당된 적어도 하나의 비휘발성 메모리 장치로 커맨드 및 DMA(Direct Memory Access) 인스트럭션 전송을 통하여 읽기 동작 혹은 쓰기 동작을 수행하는 것을 특징으로 한다.A smart memory module according to the present invention includes at least one volatile memory device, a plurality of non-volatile memory devices connected in a mesh structure, and a plurality of devices that perform data transfer between the plurality of non-volatile memory devices in the at least one volatile memory device. child controllers, and a mother controller that communicates with an external device through a CXL (Compute Express Link) interface and controls the at least one volatile memory device and the plurality of child controllers, each of the plurality of child controllers Characterized in that a read operation or a write operation is performed by transmitting a command and a DMA (Direct Memory Access) instruction to at least one non-volatile memory device allocated to an activation die among the plurality of non-volatile memory devices.

Description

스마트 메모리 모듈 및 그것의 동작 방법{SMART MEMORY MODULE AND OPERATING METHOD THEREOF} Smart memory module and operating method thereof {SMART MEMORY MODULE AND OPERATING METHOD THEREOF}

본 발명은 스마트 메모리 모듈 및 그것의 동작 방법에 관한 것이다.The present invention relates to a smart memory module and a method of operating the same.

일반적으로, Compute Express Link(CXL)는 고성능 컴퓨터 시스템에서 프로세서와 가속기(accelerator) 사이에 데이터를 공유하고 통신하기 위한 인터페이스 및 프로토콜입이다. CXL은 다음과 같은 중요한 특징을 가지고 있으며, 이를 통해 메모리 및 다른 저장 장치를 연결하고 사용할 수 있다. CXL은 캐시 일관성을 지원하여 프로세서와 가속기 간의 데이터 일관성을 유지한다. 이것은 데이터가 여러 장치에서 동시에 액세스되거나 수정될 때 발생하는 문제를 방지하며 데이터 무결성을 보장한다. CXL은 높은 대역폭을 가지고 있어 데이터를 매우 빠르게 전송할 수 있다. 이는 데이터 센터 및 고성능 컴퓨팅 환경에서 빅 데이터 분석, 기계 학습, 그래픽 처리 등과 같은 고성능 응용 프로그램에 적합하다. CXL을 사용하면 시스템의 메모리를 확장할 수 있다. 이를 통해 대용량 메모리를 사용하여 더 큰 데이터 세트를 처리하거나 메모리 집약적인 응용 프로그램을 지원할 수 있다. CXL은 표준 기반으로 설계되어 다양한 하드웨어 제조업체가 이 기술을 구현하고 지원할 수 있다. 이러한 표준화는 호환성과 이식성을 향상시키며 다양한 시스템 간에 상호 운용성을 제공한다. CXL은 다양한 응용 분야에서 사용될 수 있다. 예를 들어, 그래픽 카드, FPGAs(Field Programmable Gate Arrays), AI(Artificial Intelligence) 가속기 및 다른 가속기를 연결하여 고성능 컴퓨팅을 구현하거나, 데이터 센터에서 가상화 및 컨테이너화된 응용 프로그램을 지원하는 데 사용할 수 있다.In general, Compute Express Link (CXL) is an interface and protocol for sharing and communicating data between processors and accelerators in high-performance computer systems. CXL has the following important features, allowing it to connect and use memory and other storage devices: CXL supports cache coherence to maintain data consistency between processors and accelerators. This prevents problems that occur when data is accessed or modified on multiple devices simultaneously and ensures data integrity. CXL has high bandwidth and can transmit data very quickly. It is suitable for high-performance applications such as big data analysis, machine learning, graphics processing, etc. in data centers and high-performance computing environments. CXL allows you to expand your system's memory. This allows large amounts of memory to be used to process larger data sets or support memory-intensive applications. CXL is designed to be standards-based, allowing a variety of hardware manufacturers to implement and support the technology. This standardization improves compatibility and portability and provides interoperability between various systems. CXL can be used in a variety of applications. For example, it can be used to connect graphics cards, field programmable gate arrays (FPGAs), artificial intelligence (AI) accelerators, and other accelerators to enable high-performance computing, or to support virtualized and containerized applications in data centers.

본 발명의 목적은 신규한 스마트 메모리 모듈 및 그것의 동작 방법을 제공하는데 있다.The purpose of the present invention is to provide a novel smart memory module and a method of operating the same.

본 발명의 실시 예에 따른 스마트 메모리 모듈은: 적어도 하나의 휘발성 메모리 장치; 메쉬 구조로 연결된 복수의 비휘발성 메모리 장치들; 상기 적어도 하나의 휘발성 메모리 장치에서 상기 복수의 비휘발성 메모리 장치들을 데이터 전송을 수행하는 복수의 차일드 제어기들; 및 외부 장치와 CXL(Compute Express Link) 인터페이스를 통하여 통신하고, 상기 적어도 하나의 휘발성 메모리 장치 및 상기 복수의 차일드 제어기들을 제어하는 마더 제어기를 포함하고, 상기 복수의 차일드 제어기들의 각각은 상기 복수의 비휘발성 메모리 장치들 중에서 활성화 다이로 할당된 적어도 하나의 비휘발성 메모리 장치로 커맨드 및 DMA(Direct Memory Access) 인스트럭션 전송을 통하여 읽기 동작 혹은 쓰기 동작을 수행하는 것을 특징으로 한다.A smart memory module according to an embodiment of the present invention includes: at least one volatile memory device; A plurality of non-volatile memory devices connected in a mesh structure; a plurality of child controllers that perform data transfer from the at least one volatile memory device to the plurality of non-volatile memory devices; and a mother controller that communicates with an external device through a CXL (Compute Express Link) interface and controls the at least one volatile memory device and the plurality of child controllers, wherein each of the plurality of child controllers is configured to control the plurality of child controllers. It is characterized in that a read operation or a write operation is performed by transmitting a command and a DMA (Direct Memory Access) instruction to at least one non-volatile memory device allocated to an activation die among volatile memory devices.

스마트 메모리 모듈의 동작 방법은, 상기 스마트 메모리 모듈은 적어도 하나의 휘발성 메모리 장치, 메쉬 구조로 연결된 복수의 비휘발성 메모리 장치들, 상기 적어도 하나의 휘발성 메모리 장치의 데이터를 상기 복수의 비휘발성 메모리 장치로 전송하는 복수의 차일드 제어기, 및 상기 적어도 하나의 휘발성 메모리 장치 및 상기 복수의 차일드 제어기를 제어하는 마더 제어기를 포함하고, 상기 방법은, 상기 복수의 차일드 제어기들을 통하여 상기 적어도 하나의 휘발성 메모리 장치에서 상기 복수의 비휘발성 메모리 장치들로 데이터를 전송할 때, 상기 복수의 비휘발성 메모리 장치들의 각각의 활성화 및 비활성화를 관리하는 단계; 및 상기 마더 제어기에서 상기 복수의 비휘발성 메모리 장치들 중에서 적어도 하나의 비휘발성 메모리 장치에 대한 DMA(Direct Memory Access) 동작을 제어하는 단계를 포함할 수 있다.A method of operating a smart memory module includes at least one volatile memory device, a plurality of non-volatile memory devices connected in a mesh structure, and storing data of the at least one volatile memory device into the plurality of non-volatile memory devices. A plurality of child controllers that transmit data, and a mother controller that controls the at least one volatile memory device and the plurality of child controllers, wherein the method includes: When transmitting data to a plurality of non-volatile memory devices, managing activation and deactivation of each of the plurality of non-volatile memory devices; and controlling, by the mother controller, a Direct Memory Access (DMA) operation for at least one non-volatile memory device among the plurality of non-volatile memory devices.

본 발명의 실시 예에 따른 스마트 메모리 모듈 및 그것의 동작 방법은, 메쉬 구조로 연결된 비휘발성 메모리 장치들을 데이터 분산/수집 및 DMA 제어를 함으로써, 이종 장치 사이의 데이터 전송 대역폭 차이를 극복할 수 있다.The smart memory module and its operating method according to an embodiment of the present invention can overcome differences in data transmission bandwidth between heterogeneous devices by performing data distribution/collection and DMA control on non-volatile memory devices connected in a mesh structure.

본 발명의 실시 예에 따른 스마트 메모리 모듈 및 그것의 동작 방법은, 복수의 차일드 제어기를 통하여 비휘발성 메모리 장치들에 대한 읽기 동작과 쓰기 동작을 동시 수행 가능하다.The smart memory module and its operating method according to an embodiment of the present invention can simultaneously perform read and write operations on non-volatile memory devices through a plurality of child controllers.

본 발명의 실시 예에 따른 스마트 메모리 모듈 및 그것의 동작 방법은, 저장 제어기와 비휘발성 메모리 다이들 사이의 데이터 전송으로 입출력 버스가 점유되더라도, 특정한 비휘발성 메모리 다이로 데이터 접근 가능하다.The smart memory module and its operating method according to an embodiment of the present invention enable data access to a specific non-volatile memory die even if the input/output bus is occupied by data transfer between the storage controller and the non-volatile memory dies.

이하에 첨부되는 도면들은 본 실시 예에 관한 이해를 돕기 위한 것으로, 상세한 설명과 함께 실시 예들을 제공한다.
도 1은 종래의 스마트 메모리 모듈(100)을 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 스마트 메모리 모듈을 예시적으로 보여주는 도면이다.
도 3는 본 발명의 실시 예에 따른 스마트 메모리 모듈의 동작을 예시적으로 보여주는 흐름도이다.
도 4는 본 발명의 다른 실시 예에 따른 스마트 메모리 모듈(300)을 시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 6은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 7은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 8은 본 발명에 따른 컴퓨팅 시스템이 적용된 데이터 센터를 보여주는 블록도이다.
The drawings attached below are intended to aid understanding of the present embodiment and provide examples along with a detailed description.
FIG. 1 is a diagram illustrating a conventional smart memory module 100.
Figure 2 is a diagram illustrating a smart memory module according to an embodiment of the present invention.
Figure 3 is a flowchart exemplarily showing the operation of a smart memory module according to an embodiment of the present invention.
Figure 4 is a diagram visually showing a smart memory module 300 according to another embodiment of the present invention.
Figure 5 is a block diagram showing a computing system according to an embodiment of the present invention.
Figure 6 is a block diagram showing a computing system according to an embodiment of the present invention.
Figure 7 is a block diagram showing a computing system according to an embodiment of the present invention.
Figure 8 is a block diagram showing a data center to which a computing system according to the present invention is applied.

아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시 할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.Below, using the drawings, the content of the present invention will be described clearly and in detail so that a person skilled in the art can easily implement it.

본 발명의 실시 예에 따른 스마트 메모리 모듈(혹은, CXL(Compute Express Link) 저장 장치) 및 그것의 동작 방법은, 읽기/쓰기 동작 시, Block Storage 개념이 아닌 Byte Addressable 데이터 접근을 위한 Distributed & Aggregation DMA(Direct Memory Access) 기술로, storage와 메모리의 대역폭(bandwidth) 차이를 극복하도록 구현될 수 있다. 특히, 본 발명의 CXL 저장 장치는 제어기의 PCIe(Peripheral Component Interconnect Express) Generation과 Lane 개수로 인한 대역폭 제약을 극복할 수 있다.The smart memory module (or CXL (Compute Express Link) storage device) and its operating method according to an embodiment of the present invention use Distributed & Aggregation DMA for accessing Byte Addressable data rather than the Block Storage concept during read/write operations. (Direct Memory Access) technology can be implemented to overcome the difference in bandwidth between storage and memory. In particular, the CXL storage device of the present invention can overcome bandwidth limitations due to the controller's PCIe (Peripheral Component Interconnect Express) generation and number of lanes.

본 발명의 실시 예에 따른 스마트 메모리 모듈 및 그것의 동작 방법, 메모리 확장 응용을 고려하여 Byte-Addressable DMA split & aggregation을 하드웨어/소프트웨어적으로 구현함으로써, 메모리 응용으로 부족한 비휘발성 메모리 장치의 특성과 단점을 보강할 수 있다.A smart memory module and its operating method according to an embodiment of the present invention, Byte-Addressable DMA split & aggregation is implemented in hardware/software considering memory expansion applications, and the characteristics and disadvantages of non-volatile memory devices that are insufficient for memory applications can be reinforced.

도 1은 종래의 스마트 메모리 모듈(100)을 예시적으로 보여주는 도면이다. 도 1을 참조하면, 스마트 메모리 모듈(100)은 적어도 하나의 휘발성 메모리 장치(110, DRAM), 적어도 하나의 비휘발성 메모리 장치(120, NAND), 메인 제어기(130, Main CTRL), 및 저장 제어기(140, SSD CTRL)를 포함한다.FIG. 1 is a diagram illustrating a conventional smart memory module 100. Referring to FIG. 1, the smart memory module 100 includes at least one volatile memory device 110 (DRAM), at least one non-volatile memory device 120 (NAND), a main controller 130 (Main CTRL), and a storage controller. Includes (140, SSD CTRL).

적어도 하나의 휘발성 메모리 장치(110)는 적어도 하나의 DRAM(Dynamic Random Access Memory)로 구현될 수 있다. 적어도 하나의 비휘발성 메모리 장치(120, NAND)는 복수의 낸드 플래시 메모리(NAND flash memory)로 구현될 수 있다. 메인 제어기(130)는 CXL I/F to NVMe 인터페이스 변환, 메모리 커맨드(Load/Store) 변환 및 DRAM Management를 수행한다. 저장 제어기(140)는 적어도 하나의 비휘발성 메모리 장치(120)에 대한 읽기/쓰기, Error Handling, Power Loss 등의 기능을 수행한다.At least one volatile memory device 110 may be implemented with at least one dynamic random access memory (DRAM). At least one non-volatile memory device 120 (NAND) may be implemented with a plurality of NAND flash memories. The main controller 130 performs CXL I/F to NVMe interface conversion, memory command (Load/Store) conversion, and DRAM Management. The storage controller 140 performs functions such as reading/writing, error handling, and power loss for at least one non-volatile memory device 120.

일반적인 저장 장치에 탑재된 DRAM의 경우 L2P(Logical to Physical) Map, Data Buffer와 같이 저장 장치의 동작을 위해 이용된다. CXL 인터페이스가 적용된 스마트 메모리 모듈(100)은 기존의 DRAM 기능과 역할을 넘어 Host와 Data 송수신을 위한 CXL 메모리 Load/Store 기능까지 수행하고 있다. 그런데, 도 1에 도시된 바와 같이, CXL 인터페이스가 적용된 스마트 메모리 모듈(100)은 휘발성 메모리 장치(110, DRAM)과 내부 저장 제어기(140, SSD CTRL) 사이의 대역폭의 차이를 갖는다.In the case of DRAM mounted on general storage devices, it is used for the operation of the storage device, such as L2P (Logical to Physical) Map and Data Buffer. The smart memory module 100 with the CXL interface goes beyond the existing DRAM function and role and also performs the CXL memory Load/Store function for data transmission and reception with the host. However, as shown in FIG. 1, the smart memory module 100 to which the CXL interface is applied has a difference in bandwidth between the volatile memory device 110 (DRAM) and the internal storage controller 140 (SSD CTRL).

예를 들어, 스마트 메모리 모듈(100)의 내부에서 데이터 송수신을 위해 이종 간의 미디어 장치인 DRAM과 NAND가 동시에 이용될 경우, 두 개 미디어 장치 사이의 데이터 전송 대역폭(data transfer bandwidth) 차이가 존재한다. 이는 적용된 DRAM과 Host 장치와 연결된 CXL 인터페이스 대역폭의 제약을 야기한다. 예를 들어, CXL I/F=PCIe Gen5x8, NAND CTRL = PCIe Gen5 x 4L 인 경우일 때, DRAM 대역폭은 25.6GB/s이고, SSD 대역폭은 16GB/s (32Gbps x 4)이다. 이러한 문제를 해결하기 위해 마스터 제어기와 복수의 플래시 메모리 모듈 개념으로 성능을 향상하려는 특허 기술이 존재하지만 NAND Dies들이 특정 플래시 제어기에 바인딩(binding)된 구조로 인해 NAND Dies 이용의 제약과 NAND Dies 관리를 위한 많은 수의 플래시 제어기가 탑재되어야 한다.For example, when DRAM and NAND, which are heterogeneous media devices, are used simultaneously to transmit and receive data inside the smart memory module 100, there is a difference in data transfer bandwidth between the two media devices. This causes limitations in the bandwidth of the CXL interface connected to the applied DRAM and host device. For example, when CXL I/F = PCIe Gen5x8, NAND CTRL = PCIe Gen5 x 4L, the DRAM bandwidth is 25.6GB/s and the SSD bandwidth is 16GB/s (32Gbps x 4). To solve this problem, there is a patented technology to improve performance with the concept of a master controller and multiple flash memory modules, but due to the structure in which NAND Dies are bound to a specific flash controller, there are restrictions on the use of NAND Dies and management of NAND Dies. A large number of flash controllers must be installed for this purpose.

본 발명의 실시 예에 따른 CXL 인터페이스가 적용된 스마트 메모리 모듈은 마더 제어기와 복수의 차일드 제어기들을 이용하여, 휘발성 메모리 장치(예를 들어, DRAM)과 장치 제어기(예를 들어, SSD-CTRL) 사이에 존재하는 대역폭 차이(Bandwidth Gap)을 극복할 수 있다. 본 발명의 스마트 메모리 모듈은 복수의 차일드 제어기들을 통해 복수의 비휘발성 메모리 다이들(NAND Dies)로 읽기/쓰기 동시에 수행 가능하다. 또한, 본 발명의 스마트 메모리 모듈은 저장 제어기(SSD CTRL)와 특정 비휘발성 메모리 다이들(NAND Dies)와 데이터 전송으로 저장 제어기(SSD CTRL)의 입출력 버스(IO bus)가 점유된 상황에서도 사용되지 않는 비휘발성 메모리 다이들로 접근 및 데이터 전송을 가능하게 한다.A smart memory module to which a CXL interface is applied according to an embodiment of the present invention uses a mother controller and a plurality of child controllers between a volatile memory device (e.g., DRAM) and a device controller (e.g., SSD-CTRL). The existing bandwidth gap can be overcome. The smart memory module of the present invention can simultaneously read/write to a plurality of non-volatile memory dies (NAND Dies) through a plurality of child controllers. In addition, the smart memory module of the present invention cannot be used even in situations where the input/output bus (IO bus) of the storage controller (SSD CTRL) is occupied by data transfer with the storage controller (SSD CTRL) and specific non-volatile memory dies (NAND Dies). It enables access and data transfer to non-volatile memory dies.

도 2는 본 발명의 실시 예에 따른 스마트 메모리 모듈(200)을 예시적으로 보여주는 도면이다. 도 2를 참조하면, 스마트 메모리 모듈(200)은 적어도 하나의 휘발성 메모리 장치(210), 메쉬 구조(201)로 연결된 복수의 비휘발성 메모리 장치들(220), 복수의 차일드 제어기들(231, 232, 233, …, 23M), 마더 제어기(240), 및 비휘발성 메모리 다이 관리 및 DMA 제어기(250)를 포함할 수 있다.Figure 2 is a diagram illustrating a smart memory module 200 according to an embodiment of the present invention. Referring to FIG. 2, the smart memory module 200 includes at least one volatile memory device 210, a plurality of non-volatile memory devices 220 connected in a mesh structure 201, and a plurality of child controllers 231 and 232. , 233, ..., 23M), a mother controller 240, and a non-volatile memory die management and DMA controller 250.

적어도 하나의 휘발성 메모리 장치(210)는 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous RAM) 등 으로 구현될 수 있다.At least one volatile memory device 210 may be implemented with static random access memory (SRAM), dynamic RAM (DRAM), synchronous RAM (SDRAM), etc.

복수의 비휘발성 메모리 장치들(220)의 각각은 낸드 플래시 메모리, 노아 플래시 메모리, PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등으로 구현될 수 있다.Each of the plurality of non-volatile memory devices 220 includes NAND flash memory, Noah flash memory, PRAM (Phase-change RAM), MRAM (Magneto-resistive RAM), ReRAM (Resistive RAM), and FRAM (Ferro-electric RAM). It can be implemented as follows.

차일드 제어기들(231 ~ 23M)의 각각은 복수의 비휘발성 메모리 다이들과 메쉬 구조(201)로 연결될 수 있다. 차일드 제어기들(231 ~ 23M)의 각각은 DRAM to NAND로 데이터 전송을 위한 I/F 전환, 비휘발성 메모리 장치들(220)로 커맨드, 및 DMA 인스트럭션 전송을 통한 읽기/쓰기 동작을 수행하도록 구현될 수 있다.Each of the child controllers 231 to 23M may be connected to a plurality of non-volatile memory dies in a mesh structure 201. Each of the child controllers 231 to 23M will be implemented to perform I/F switching for data transfer to DRAM to NAND, commands to non-volatile memory devices 220, and read/write operations through DMA instruction transfer. You can.

마더 제어기(240)는 휘발성 메모리 장치(예를 들어, DRAM)과 비휘발성 메모리 장치(예를 들어, NAND) 사이의 데이터 전송을 관리하도록 구현될 수 있다. 특히 마더 제어기(240)는 메쉬 구조로 연결된 비휘발성 메모리 다이들(NAND Dies)와 차일드-제어기들(231 ~ 23M, 차일드 제어기s)사이에서 비휘발성 메모리 다이들(NAND Dies)의 Active & In-active Dies의 상태(status)를 모니터링 할 수 있다.Mother controller 240 may be implemented to manage data transfer between a volatile memory device (e.g., DRAM) and a non-volatile memory device (e.g., NAND). In particular, the mother controller 240 controls Active & In- You can monitor the status of active Dies.

또한, 마더 제어기(240)는 Active Dies를 할당하여 복수의 차일드-제어기들(231 ~ 23M)을 통하여 데이터 스트라이핑(striping; Sequential Address) 동작의 쓰기 동작을 가능하게 한다.In addition, the mother controller 240 allocates Active Dies to enable a write operation of data striping (Sequential Address) operation through a plurality of child-controllers 231 to 23M.

일반적으로 데이터 스트라이핑은 데이터를 여러 개의 물리적 저장 장치에 분산하여 저장하는 기술을 가리킨다. 이 기술은 주로 대용량의 데이터를 빠르게 읽고 쓸 수 있도록 하거나 데이터의 가용성과 내구성을 향상시키기 위해 사용된다. 주로 RAID(Redundant Array of Independent Disks)와 관련이 있으며, 파일 시스템 또는 데이터베이스에서도 사용될 수 있다. 대용량 데이터를 일정한 크기의 블록 또는 스트라이프로 나눈다. 각 스트라이프는 저장 장치에 저장된다. 이러한 스트라이프를 다른 물리적 저장 장치에 분산하여 저장합니다. 이때 여러 가용한 디스크나 드라이브에 데이터를 고르게 분배함으로써 데이터의 빠른 읽기와 쓰기 속도를 보장한다. 스트라이핑을 사용하면 여러 저장 장치에서 동시에 데이터를 읽고 쓸 수 있으므로 데이터 액세스 성능이 향상된다. 데이터 스트라이핑은 주로 RAID 레벨 0에서 사용된다.In general, data striping refers to a technology that stores data by distributing it across multiple physical storage devices. This technology is mainly used to quickly read and write large amounts of data or to improve data availability and durability. It is mainly associated with RAID (Redundant Array of Independent Disks), but can also be used in file systems or databases. Divide large amounts of data into blocks or stripes of a certain size. Each stripe is stored on a storage device. These stripes are distributed and stored across different physical storage devices. At this time, fast data read and write speeds are guaranteed by evenly distributing data across several available disks or drives. Striping improves data access performance by allowing data to be read and written to multiple storage devices simultaneously. Data striping is primarily used in RAID level 0.

또한, 스몰 정크(small chunk), QoS(Quality of Service) 크리티컬 데이터 관리 필요시, 마더 제어기(240)는 차일드-제어기들(231 ~ 23M) 없이 특정한 비휘발성 메모리 다이들로 직접 접근을 통하여 읽기 동작 혹은 쓰기 동작을 수행할 수 잇다.In addition, when small chunk, Quality of Service (QoS) critical data management is required, the mother controller 240 performs a read operation through direct access to specific non-volatile memory dies without child-controllers 231 to 23M. Or, you can perform a write operation.

비휘발성 메모리 다이 관리 및 DMA 제어기(250)는 제어기 칩 개발의 효율성(Cost, Power, Size 등)을 고려하여 비휘발성 메모리 장치들의 각각의 Active & In-Active 모니터링 및 DMA 역할을 수행하도록 구현될 수 있다. 한편, 비휘발성 메모리 다이 관리 및 DMA 제어기(250)는 마더 제어기(240)에 하드웨어/소프트웨어/펌웨어적으로 구현 가능하다.The non-volatile memory die management and DMA controller 250 can be implemented to perform Active & In-Active monitoring and DMA roles of each non-volatile memory device in consideration of the efficiency (Cost, Power, Size, etc.) of controller chip development. there is. Meanwhile, the non-volatile memory die management and DMA controller 250 can be implemented in the mother controller 240 in hardware/software/firmware.

본 발명의 실시 예에 따른 스마트 메모리 모듈(200)은 복수의 차일드 제어기들(231 ~ 23M)을 통해 복수의 비휘발성 메모리 장치들(220)로 읽기 동작 및 쓰기 동작을 동시에 수행할 수 있다. 또한, 본 발명의 스마트 메모리 모듈(200)은 저장 제어기와 특정한 비휘발성 메모리 장치의 데이터 전송으로 입출력 버스가 점유된 상황에서도, 사용되지 않는 비휘발성 메모리 장치로 접근 및 데이터 전송을 할 수 있다.The smart memory module 200 according to an embodiment of the present invention can simultaneously perform a read operation and a write operation with a plurality of non-volatile memory devices 220 through a plurality of child controllers 231 to 23M. In addition, the smart memory module 200 of the present invention can access and transmit data to an unused non-volatile memory device even in a situation where the input/output bus is occupied by the storage controller and data transmission of a specific non-volatile memory device.

도 3는 본 발명의 실시 예에 따른 스마트 메모리 모듈(200)의 동작을 예시적으로 보여주는 흐름도이다. 도 2 내지 도 3을 참조하면, 스마트 메모리 모듈(200)은 다음과 같이 동작할 수 있다. 스마트 메모리 모듈(200)의 비휘발성 메모리 다이 관리 및 DMA 제어기(250)는 비휘발성 메모리 장치들(220)의 각각의 활성화 및 비활성화를 관리할 수 있다(S110). 비휘발성 메모리 다이 관리 및 DMA 제어기(250)는 마더 제어기(240)의 제어에 따라 NAND DMA 동작을 제어할 수 있다(S120). 실시 예에 있어서, 복수의 차일드 제어기들의 중에서 적어도 하나는 쓰기 동작을 수행하면서, 다른 적어도 하나는 읽기 동작을 수행할 수 있다.Figure 3 is a flowchart illustrating the operation of the smart memory module 200 according to an embodiment of the present invention. Referring to Figures 2 and 3, the smart memory module 200 may operate as follows. The non-volatile memory die management and DMA controller 250 of the smart memory module 200 may manage activation and deactivation of each of the non-volatile memory devices 220 (S110). The non-volatile memory die management and DMA controller 250 may control NAND DMA operations according to the control of the mother controller 240 (S120). In an embodiment, at least one of the plurality of child controllers may perform a write operation while at least one other child controller may perform a read operation.

한편, 도 2 및 도 3에서 설명된 비휘발성 메모리 장치들(220)은 메쉬 구조로 연결되고 있지만, 본 발명에 여기에 제한될 필요는 없다. 본 발명의 비휘발성 메모리 장치들은 차일드 제어기들의 각각에 연결된 구조로 구현될 수 있다.Meanwhile, the non-volatile memory devices 220 described in FIGS. 2 and 3 are connected in a mesh structure, but the present invention is not limited thereto. The non-volatile memory devices of the present invention may be implemented in a structure connected to each of the child controllers.

도 4는 본 발명의 다른 실시 예에 따른 스마트 메모리 모듈(300)을 예시적으로 보여주는 도면이다. 도 4를 참조하면, 스마트 메모리 모듈(300)은 적어도 하나의 휘발성 메모리 장치(310), 복수의 비휘발성 메모리 장치들(320), 복수의 차일드 제어기들(331, 332, 333, …, 33N), 마더 제어기(340), 및 데이터 분산 및 수집 엔진(350)을 포함할 수 있다. 스마트 메모리 모듈(300)은 복수의 차일드 제어기들(331 ~ 33N)와 적어도 하나의 휘발성 메모리 장치(310) 사이의 공유 구조로 구현될 수 있다. 스마트 메모리 모듈(300)은 휘발성 메모리 장치(310)에서 복수의 차일드 제어기들(331 ~ 33N) 형태를 단일 장치에 적용하고 있다.Figure 4 is a diagram illustrating a smart memory module 300 according to another embodiment of the present invention. Referring to FIG. 4, the smart memory module 300 includes at least one volatile memory device 310, a plurality of non-volatile memory devices 320, and a plurality of child controllers 331, 332, 333, ..., 33N. , a mother controller 340, and a data distribution and collection engine 350. The smart memory module 300 may be implemented in a shared structure between a plurality of child controllers 331 to 33N and at least one volatile memory device 310. The smart memory module 300 applies a plurality of child controllers 331 to 33N in a single device in the volatile memory device 310.

복수의 차일드 제어기들(331 ~ 33N)의 각각은 복수의 비휘발성 메모리 장치들(320)을 제어하도록 구현될 수 있다.Each of the child controllers 331 to 33N may be implemented to control a plurality of non-volatile memory devices 320 .

마더 제어기(340)는 스마트 메모리 모듈(300)의 전반적인 관리를 하도록 구현될 수 있다. 마더 제어기(340)는 적어도 하나의 휘발성 메모리 장치(310) 및 복수의 차일드 제어기들(331 ~ 33N)을 제어하도록 구현될 수 있다.The mother controller 340 may be implemented to overall manage the smart memory module 300. The mother controller 340 may be implemented to control at least one volatile memory device 310 and a plurality of child controllers 331 to 33N.

데이터 분산 및 수집 엔진(350)은 Byte Addressable Data Distribution & Aggregation 수행하도록 구현될 수 있다. 데이터 분산 및 수집 엔진(350)은 데이터 스플릿(data split) 동작, 데이터 플레이스먼트(data placement) 동작을 수행할 수 있다. 데이터 스플릿 동작은 DRAM과 복수의 차일드 제어기들 사이 데이터 Load/Store 동작 시 복수의 차일드-제어기들로 데이터 분할하거나 합치는 기능을 DMA 동작 시 실행될 수 있다. 이러한 기능은 마더 제어기(340)에서 수행될 수 있다. 데이터 플레이스먼트 동작은 메모리 Store 동작 시 각 DRAM 내 데이터가 복수의 차일드 제어기들로 순차적인 데이터 스트라이핑 형태의 쓰기를 실행하고, 메모리 Load 동작 시 각 차일드 제어기에서 전송되는 데이터를 하나로 Aggregation 시킬 수 있다. 이는 Read와 Write Bandwidth 향상을 도모할 수 있다.The data distribution and collection engine 350 may be implemented to perform Byte Addressable Data Distribution & Aggregation. The data distribution and collection engine 350 may perform data split operations and data placement operations. The data split operation can be performed during a DMA operation by splitting or merging data into multiple child-controllers during a data load/store operation between DRAM and multiple child controllers. These functions may be performed in the mother controller 340. In the data placement operation, the data in each DRAM is written in the form of sequential data striping to multiple child controllers during the memory store operation, and the data transmitted from each child controller can be aggregated into one during the memory load operation. This can improve read and write bandwidth.

본 발명의 스마트 메모리 모듈(300)은 데이터 스트라이핑(data striping), 수집(aggregation)을 지원을 위한 마더-차일드 제어기들 형태로, 마더-차일드 제어기들 사이는 마스터-슬레이브 구조로 구현될 수 있다.The smart memory module 300 of the present invention can be implemented in the form of mother-child controllers to support data striping and aggregation, and a master-slave structure between the mother-child controllers.

본 발명의 스마트 메모리 모듈(300)은 휘발성 메모리 장치(310, DRAM)과 차일드 제어기들(331 ~ 33N)의 사이에 H/W 혹은 S/W 형태의 Data Split, Data Placement Engine을 배치시키고 해당 영역은 마더 제어기(340)에 의해 관리 수행될 수 있다.The smart memory module 300 of the present invention places a Data Split and Data Placement Engine in the form of H/W or S/W between the volatile memory device 310 (DRAM) and the child controllers 331 to 33N, and Can be managed by the mother controller 340.

일반적인 CXL 인터페이스 기반 저장 장치는 DRAM(휘발성 메모리)와 내부 SSD CTRL(저장 제어기) 사이의 대역폭 차이가 존재한다. 본 발명의 스마트 메모리 모듈은 SSD CTRL단의 부족한 대역폭을 극복함으로써, DRAM의 최대 성능 구현 가능하다. Byte addressable DMA split & aggregation을 통해 32/64/128 바이트 수준의 바이트 단위 읽기/쓰기에서 효율적으로 비휘발성 메모리를 사용함으로써, 시스템 성능 및 레이턴시가 개선될 수 있다.In typical CXL interface-based storage devices, there is a bandwidth difference between DRAM (volatile memory) and the internal SSD CTRL (storage controller). The smart memory module of the present invention can realize the maximum performance of DRAM by overcoming the insufficient bandwidth of the SSD CTRL stage. System performance and latency can be improved by efficiently using non-volatile memory in byte-level read/write at the 32/64/128 byte level through byte addressable DMA split & aggregation.

도 5는 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다. 도 5을 참조하면, 컴퓨팅 시스템(10)은 호스트(11), 복수의 메모리 장치들(12a, 12b), 및 저장 장치(13)를 포함할 수 있다. 호스트(11)는 컴퓨팅 시스템(10)의 제반 동작을 제어할 수 있다. 복수의 메모리 장치들(12a, 12b)은 호스트(11)의 동작 메모리 혹은 시스템 메모리로서 사용될 수 있다.Figure 5 is a block diagram showing a computing system according to an embodiment of the present invention. Referring to FIG. 5 , the computing system 10 may include a host 11, a plurality of memory devices 12a and 12b, and a storage device 13. The host 11 can control overall operations of the computing system 10. The plurality of memory devices 12a and 12b may be used as operating memory or system memory of the host 11.

저장 장치(13)는 저장 제어기(13a), 버퍼 메모리(13b), 및 비휘발성 메모리(13c)를 포함할 수 있다. 저장 제어기(13a)는 호스트(11)의 제어에 따라, 비휘발성 메모리(13c)에 데이터를 저장하거나 혹은 비휘발성 메모리(13c)에 저장된 데이터를 호스트(11)로 전송할 수 있다.Storage device 13 may include a storage controller 13a, buffer memory 13b, and non-volatile memory 13c. The storage controller 13a may store data in the non-volatile memory 13c or transmit data stored in the non-volatile memory 13c to the host 11 under the control of the host 11.

버퍼 메모리(13b)는 저장 장치(13)가 동작하는데 필요한 다양한 정보를 저장할 수 있다. 예를 들어, 저장 제어기(13a)는 맵 데이터를 사용하여 비휘발성 메모리(13c)에 저장된 데이터를 관리할 수 있다. 맵 데이터는 호스트(11)에 의해 관리되는 논리 블록 어드레스 및 비휘발성 메모리(13c)의 물리 블록 어드레스 사이의 관계에 대한 정보를 포함할 수 있다. 저장 제어기(13a)는 맵 데이터를 버퍼 메모리(13b)에 로드하여 사용할 수 있다.The buffer memory 13b can store various information necessary for the storage device 13 to operate. For example, storage controller 13a may use map data to manage data stored in non-volatile memory 13c. The map data may include information about the relationship between the logical block address managed by the host 11 and the physical block address of the non-volatile memory 13c. The storage controller 13a can load and use map data into the buffer memory 13b.

실시 예에 있어서, 버퍼 메모리(13b)는 DRAM과 같은 고속 메모리일 수 있다. 비휘발성 메모리(13c)의 용량이 증가함에 따라, 요구되는 맵 데이터의 크기가 증가할 수 있다. 그러나 단일 저장 장치(13)에 포함된 버퍼 메모리(13b)의 용량은 제한적이기 때문에, 비휘발성 메모리(13c)의 용량 증가에 따른 맵 데이터의 크기 증가에 대응할 수 없는 문제점이 있다.In an embodiment, the buffer memory 13b may be a high-speed memory such as DRAM. As the capacity of the non-volatile memory 13c increases, the size of required map data may increase. However, since the capacity of the buffer memory 13b included in the single storage device 13 is limited, there is a problem in that it cannot cope with an increase in the size of map data due to an increase in the capacity of the non-volatile memory 13c.

도 6은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다. 도 6을 참조하면, 컴퓨팅 시스템(400)은 호스트(401), 복수의 메모리 장치들(402a, 402b), CXL 스위치(SW_CXL), 복수의 CXL 저장 장치들(410_1~410_m), 및 복수의 CXL 메모리들(420_1~420_n)을 포함할 수 있다.Figure 6 is a block diagram showing a computing system according to an embodiment of the present invention. Referring to FIG. 6, the computing system 400 includes a host 401, a plurality of memory devices 402a and 402b, a CXL switch (SW_CXL), a plurality of CXL storage devices 410_1 to 410_m, and a plurality of CXLs. It may include memories 420_1 to 420_n.

호스트(401)는 복수의 메모리 장치들(402a, 402b)과 직접 연결될 수 있다. 호스트(401), 복수의 CXL 저장 장치들(410_1~410_m), 및 복수의 CXL 메모리들(420_1~420_n)은 CXL 스위치(SW_CXL)와 연결될 수 있고, 각각은 CXL 스위치(SW_CXL)를 통해 서로 통신할 수 있다. 복수의 CXL 저장 장치들(410_1~410_m)의 각각은 도 2 내지 도 4에서 설명된 CXL 인터페이스를 적용한 스마트 메모리 모듈로 구현될 수 있다.The host 401 may be directly connected to a plurality of memory devices 402a and 402b. The host 401, the plurality of CXL storage devices 410_1 to 410_m, and the plurality of CXL memories 420_1 to 420_n may be connected to the CXL switch (SW_CXL), and each communicates with each other through the CXL switch (SW_CXL). can do. Each of the plurality of CXL storage devices 410_1 to 410_m may be implemented as a smart memory module applying the CXL interface described in FIGS. 2 to 4.

실시 예에 있어서, 호스트(401)는 복수의 CXL 저장 장치들(410_1~410_m)을 하나의 저장 클러스터로 관리하고, 복수의 CXL 메모리들(420_1~420_n)을 하나의 메모리 클러스터로 관리할 수 있다. 호스트(401)는 하나의 저장 클러스터에 대하여, 메모리 클러스터의 일부 영역을 전용 영역(즉, 저장 클러스터의 맵 데이터를 저장하기 위한 영역)으로 할당할 수 있다. 혹은, 호스트(401)는 복수의 CXL 저장 장치들(410_1~410_m)에 대하여, 복수의 CXL 메모리들(420_1~420_m)의 영역들을 각각 전용 영역으로서 할당할 수 있다.In an embodiment, the host 401 may manage a plurality of CXL storage devices 410_1 to 410_m as one storage cluster and manage a plurality of CXL memories 420_1 to 420_n as one memory cluster. . For one storage cluster, the host 401 may allocate a portion of the memory cluster as a dedicated area (i.e., an area for storing map data of the storage cluster). Alternatively, the host 401 may allocate areas of the plurality of CXL memories 420_1 to 420_m to the plurality of CXL storage devices 410_1 to 410_m, respectively, as dedicated areas.

도 7은 본 발명의 실시 예에 따른 컴퓨팅 시스템(1000)을 보여주는 블록도이다. 도 7를 참조하면, 컴퓨팅 시스템(1000)은 제 1 CPU(1110), 제 2 CPU(1120), GPU(1130), NPU(1140), CXL 스위치(SW_CXL), CXL 저장 장치(1210), CXL 메모리 장치(1220), PCIe 장치(1310), 및 가속기(CXL 장치)(1320)를 포함할 수 있다.Figure 7 is a block diagram showing a computing system 1000 according to an embodiment of the present invention. Referring to FIG. 7, the computing system 1000 includes a first CPU 1110, a second CPU 1120, a GPU 1130, an NPU 1140, a CXL switch (SW_CXL), a CXL storage device 1210, and a CXL It may include a memory device 1220, a PCIe device 1310, and an accelerator (CXL device) 1320.

제 1 CPU(1110), 제 2 CPU(1120), GPU(1130), NPU(1140), CXL 저장 장치(1210), CXL 메모리 장치(1220), PCIe 장치(1310), 및 가속기(CXL 장치)(1320)는 CXL 스위치(SW_CXL)에 공통으로 연결될 수 있으며, 각각은 CXL 스위치(SW_CXL)를 통해 서로 통신할 수 있다. 실시 예에 있어서, 제 1 CPU(1110), 제 2 CPU(1120), GPU(1130), 및 NPU(1140) 각각은 개별적인 메모리 장치들과 직접 연결될 수 있다.First CPU 1110, second CPU 1120, GPU 1130, NPU 1140, CXL storage device 1210, CXL memory device 1220, PCIe device 1310, and accelerator (CXL device) 1320 may be commonly connected to the CXL switch (SW_CXL), and each may communicate with each other through the CXL switch (SW_CXL). In an embodiment, each of the first CPU 1110, the second CPU 1120, the GPU 1130, and the NPU 1140 may be directly connected to individual memory devices.

실시 예에 있어서, CXL 저장 장치(1210) 및 CXL 메모리 장치(1220)는, 제 1 CPU(1110), 제 2 CPU(1120), GPU(1130), 및 NPU(1140) 중 어느 하나 혹은 그 이상에 의해, CXL 메모리 장치(1220)의 적어도 일부 영역은 CXL 저장 장치(1210)를 위한 전용 영역으로 할당될 수 있다. 즉, CXL 저장 장치(1210) 및 CXL 메모리 장치(1220)는 컴퓨팅 시스템(1000)의 저장 공간(STR)으로서 사용될 수 있다. CXL 저장 장치(1210)는 도 2 내지 도 4에 설명된 바와 같이 복수의 차일드 제어기들을 통하여 비휘발성 메모리 다이들로 읽기 동작과 쓰기 동작을 동시에 수행하면서, 차일드 제어기들의 입출력 버스가 점유되더라도 마더 제어기가 사용되지 않는 비휘발성 메모리 다이들로 직접 접근 가능할 수 있다.In an embodiment, the CXL storage device 1210 and the CXL memory device 1220 are one or more of the first CPU 1110, the second CPU 1120, the GPU 1130, and the NPU 1140. By , at least a portion of the area of the CXL memory device 1220 may be allocated as a dedicated area for the CXL storage device 1210. That is, the CXL storage device 1210 and the CXL memory device 1220 may be used as a storage space (STR) of the computing system 1000. As described in FIGS. 2 to 4, the CXL storage device 1210 simultaneously performs read and write operations with non-volatile memory dies through a plurality of child controllers, and the mother controller operates even if the input/output bus of the child controllers is occupied. Unused non-volatile memory dies can be directly accessed.

실시 예에 있어서, CXL 스위치(SW_CXL)는 다양한 기능을 지원하도록 구성된 PCIe 장치(1310) 혹은 가속기(1320)와 연결될 수 있으며, PCIe 장치(1310) 혹은 가속기(1320)는 CXL 스위치(SW_CXL)를 통해 제 1 CPU(1110), 제 2 CPU(1120), GPU(1130), 및 NPU(1140) 각각과 통신하거나 혹은, CXL 저장 장치(1210) 및 CXL 메모리 장치(1220)를 포함하는 저장 공간(STR)을 액세스할 수 있다.In an embodiment, the CXL switch (SW_CXL) may be connected to a PCIe device 1310 or accelerator 1320 configured to support various functions, and the PCIe device 1310 or accelerator 1320 may be connected to the CXL switch (SW_CXL). A storage space (STR) that communicates with each of the first CPU 1110, the second CPU 1120, the GPU 1130, and the NPU 1140, or includes the CXL storage device 1210 and the CXL memory device 1220. ) can be accessed.

실시 예에 있어서, CXL 스위치(SW_CXL)는 외부 네트워크(network) 혹은 패브릭(Fabric)과 연결될 수 있으며, 외부 네트워크 혹은 패브릭(Fabric)을 통해 외부 서버와 통신하도록 구성될 수 있다.In an embodiment, the CXL switch (SW_CXL) may be connected to an external network or fabric, and may be configured to communicate with an external server through the external network or fabric.

도 8은 본 발명에 따른 컴퓨팅 시스템이 적용된 데이터 센터를 보여주는 블록도이다. 도 8을 참조하면, 데이터 센터(2000)는 다양한 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 저장 센터라고 지칭될 수도 있다. 데이터 센터(2000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 혹은 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(2000)는 애플리케이션 서버들(2110 내지 21m0) 및 저장 서버들(2210 내지 22n0)을 포함할 수 있다. 애플리케이션 서버들의 개수 및 저장 서버들의 개수는 실시 예에 따라 다양하게 선택될 수 있고, 애플리케이션 서버들의 개수 및 저장 서버들의 개수는 서로 다를 수 있다.Figure 8 is a block diagram showing a data center to which a computing system according to the present invention is applied. Referring to FIG. 8, the data center 2000 is a facility that collects various data and provides services, and may also be referred to as a data storage center. The data center 2000 may be a system for operating a search engine and database, and may be a computing system used in companies such as banks or government agencies. Data center 2000 may include application servers 2110 to 21m0 and storage servers 2210 to 22n0. The number of application servers and the number of storage servers may be selected in various ways depending on the embodiment, and the number of application servers and the number of storage servers may be different.

아래에서는, 제 1 저장 서버(2210)의 구성이 중점으로 설명된다. 애플리케이션 서버들(2110 내지 21m0) 및 저장 서버들(2210 내지 22n0) 각각은 서로 유사한 구조를 가질 수 있으며, 애플리케이션 서버들(2110 내지 21m0) 및 저장 서버들(2210 내지 22n0)은 네트워크(NT)를 통해, 서로 통신할 수 있다.Below, the configuration of the first storage server 2210 is mainly explained. Each of the application servers 2110 to 21m0 and the storage servers 2210 to 22n0 may have a similar structure, and the application servers 2110 to 21m0 and the storage servers 2210 to 22n0 operate the network NT. Through this, they can communicate with each other.

제 1 저장 서버(2210)는 프로세서(2211), 메모리(2212), 스위치(2213), 저장 장치(2215), CXL 메모리(2214), 및 네트워크 인터페이스 카드(NIC; 2216)를 포함할 수 있다. 프로세서(2211)는 제 1 저장 서버(2210)의 전반적인 동작을 제어할 수 있고, 메모리(2212)를 액세스하여, 메모리(2212)에 로딩된 명령어를 실행하거나 혹은 데이터를 처리할 수 있다. 메모리(2212)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 및/혹은 NVDIMM(Non-Volatile DIMM)일 수 있다. 프로세서(2211) 및 메모리(2212)는 직접 연결될 수 있으며, 하나의 저장 서버(2210)에 포함된 프로세서(2211)의 개수 및 메모리(2212)의 개수는 다양하게 선택될 수 있다.The first storage server 2210 may include a processor 2211, a memory 2212, a switch 2213, a storage device 2215, a CXL memory 2214, and a network interface card (NIC) 2216. The processor 2211 can control the overall operation of the first storage server 2210 and access the memory 2212 to execute instructions loaded into the memory 2212 or process data. The memory 2212 is DDR SDRAM (Double Data Rate Synchronous DRAM), HBM (High Bandwidth Memory), HMC (Hybrid Memory Cube), DIMM (Dual In-line Memory Module), Optane DIMM, and/or NVDIMM (Non-Volatile DIMM). ) can be. The processor 2211 and the memory 2212 may be directly connected, and the number of processors 2211 and memories 2212 included in one storage server 2210 may be selected in various ways.

실시 예에 있어서, 프로세서(2211)와 메모리(2212)는 프로세서-메모리 페어를 제공할 수 있다. 실시 예에 있어서, 프로세서(2211)와 메모리(2212)의 개수는 서로 다를 수도 있다. 프로세서(2211)는 단일 코어 프로세서 혹은 다중 코어 프로세서를 포함할 수 있다. 저장 서버(2210)에 대한 상술된 설명은, 애플리케이션 서버들(2110~21m0) 각각에도 유사하게 적용될 수 있다.In an embodiment, the processor 2211 and the memory 2212 may provide a processor-memory pair. In an embodiment, the number of processors 2211 and memories 2212 may be different. The processor 2211 may include a single core processor or a multi-core processor. The above description of the storage server 2210 can be similarly applied to each of the application servers 2110 to 21m0.

스위치(2213)는 제 1 저장 서버(2210)에 포함된 다양한 구성 요소들 사이의 통신을 중재 혹은 라우팅하도록 구성될 수 있다. 실시 예에 있어서, 스위치(2213)는 CXL 스위치(SW_CXL)일 수 있다. 즉, 스위치(2213)는 CXL 프로토콜을 기반으로 구현된 스위치일 수 있다.The switch 2213 may be configured to mediate or route communication between various components included in the first storage server 2210. In an embodiment, switch 2213 may be a CXL switch (SW_CXL). That is, the switch 2213 may be a switch implemented based on the CXL protocol.

CXL 메모리(2214)는 스위치(2213)와 연결될 수 있다. 실시 예에 있어서, CXL 메모리(2214)는 프로세서(2211)에 대한 메모리 확장기(memory expander)로서 사용될 수 있다. 혹은 CXL 메모리(2214)는 저장 장치(2215)에 대한 전용 메모리 혹은 버퍼 메모리로서 할당될 수 있다.CXL memory 2214 may be connected to switch 2213. In an embodiment, the CXL memory 2214 may be used as a memory expander for the processor 2211. Alternatively, the CXL memory 2214 may be allocated as a dedicated memory or buffer memory for the storage device 2215.

저장 장치(2215)는 CXL 인터페이스 회로(CXL_IF), 제어기(CTRL), 및 낸드 플래시(NAND)를 포함할 수 있다. 저장 장치(2215)는 프로세서(2211)의 요청에 따라 데이터를 저장하거나 혹은 저장된 데이터를 출력할 수 있다. 실시 예에 있어서, 저장 장치(2215)는 설명된 CXL 저장일 수 있다. 실시 예에 있어서, 저장 장치(2215)는 CXL 메모리(2214)의 적어도 일부 영역을 전용 영역으로 할당 받을 수 있고, 전용 영역을 버퍼 메모리로서 사용(즉, 맵 데이터가 CXL 메모리(2214)에 저장됨)할 수 있다. 저장 장치(2215)는 도 2 내지 도 7에서 설명된 스마트 메모리 모듈 및 그것의 동작 방법으로 구현될 수 있다.The storage device 2215 may include a CXL interface circuit (CXL_IF), a controller (CTRL), and NAND flash (NAND). The storage device 2215 may store data or output the stored data according to a request from the processor 2211. In an embodiment, storage device 2215 may be the CXL storage described. In an embodiment, the storage device 2215 may allocate at least a portion of the CXL memory 2214 as a dedicated area and use the dedicated area as a buffer memory (i.e., map data is stored in the CXL memory 2214). )can do. The storage device 2215 may be implemented with the smart memory module and its operating method described in FIGS. 2 to 7.

실시 예에 있어서, 애플리케이션 서버들(2110~21m0)은 저장 장치(2215)를 포함하지 않을 수도 있다. 저장 서버(2210)는 적어도 하나 이상의 저장 장치(2215)를 포함할 수 있다. 저장 서버(2210)에 포함되는 저장 장치(2215)의 개수는 실시 예에 따라 다양하게 선택될 수 있다.In an embodiment, the application servers 2110 to 21m0 may not include the storage device 2215. The storage server 2210 may include at least one storage device 2215. The number of storage devices 2215 included in the storage server 2210 may be selected in various ways depending on the embodiment.

네트워크 인터페이스 카드(NIC; network interface card)(2216)는 CXL 스위치(SW_CXL)와 연결될 수 있다. NIC(2216)는 네트워크(NT)를 통해, 다른 저장 서버들(2220~22n0) 혹은 다른 애플리케이션 서버들(2110~21m0)과 통신할 수 있다.A network interface card (NIC) 2216 may be connected to the CXL switch (SW_CXL). The NIC 2216 may communicate with other storage servers 2220 to 22n0 or other application servers 2110 to 21m0 through a network (NT).

실시 예에 있어서 NIC(2216)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(2216)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(NT)에 연결될 수 있다. NIC(2216)는 내부 메모리, DSP(Digital Signal Processor), 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(2211) 및/혹은 스위치(2213) 등과 연결될 수 있다. 실시 예에 있어서, NIC(2216)는 프로세서(2211), 스위치(2213), 저장 장치(2215) 중 적어도 하나와 통합될 수도 있다.In an embodiment, the NIC 2216 may include a network interface card, a network adapter, etc. The NIC 2216 may be connected to the network NT by a wired interface, a wireless interface, a Bluetooth interface, an optical interface, etc. The NIC 2216 may include internal memory, a digital signal processor (DSP), a host bus interface, etc., and may be connected to the processor 2211 and/or the switch 2213 through the host bus interface. In an embodiment, the NIC 2216 may be integrated with at least one of the processor 2211, the switch 2213, and the storage device 2215.

실시 예에 있어서, 네트워크(NT)는 FC(Fiber Channel) 혹은 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(NT)의 액세스 방식에 따라 저장 서버들은 파일 저장, 블록 저장, 혹은 오브젝트 저장으로써 제공될 수 있다.In an embodiment, the network (NT) may be implemented using Fiber Channel (FC) or Ethernet. At this time, FC is a medium used for relatively high-speed data transmission, and an optical switch that provides high performance/high availability can be used. Depending on the network (NT) access method, storage servers can provide file storage, block storage, or object storage.

실시 예에 있어서, 네트워크(NT)는 SAN(Storage Area Network)와 같은 저장 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예를 들어, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 혹은 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 실시 예에 있어서, 네트워크(NT)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(NT)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.In an embodiment, the network NT 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 the 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 an embodiment, the network NT may be a general network such as a TCP/IP network. For example, the network (NT) may be implemented according to protocols such as FC over Ethernet (FCoE), Network Attached Storage (NAS), and NVMe over Fabrics (NVMe-oF).

실시 예에 있어서, 애플리케이션 서버들(2110~21m0) 중 적어도 하나는 사용자 혹은 클라이언트가 저장 요청한 데이터를 네트워크(NT)를 통해 저장 서버들(2210~22n0) 중 하나에 저장할 수 있다. 애플리케이션 서버들(2110~21m0) 중 적어도 하나는 사용자 혹은 클라이언트가 읽기 요청한 데이터를 저장 서버들(2210~22n0) 중 하나로부터 네트워크(NT)를 통해 획득할 수 있다. 예를 들어, 애플리케이션 서버들(2110~21m0) 중 적어도 하나는 웹 서버 혹은 DBMS(Database Management System) 등으로 구현될 수 있다.In an embodiment, at least one of the application servers 2110 to 21m0 may store data requested by a user or client to be stored in one of the storage servers 2210 to 22n0 through the network NT. At least one of the application servers 2110 to 21m0 may obtain data requested to be read by a user or client from one of the storage servers 2210 to 22n0 through the network NT. For example, at least one of the application servers 2110 to 21m0 may be implemented as a web server or a database management system (DBMS).

실시 예에 있어서, 애플리케이션 서버들(2110~21m0) 중 적어도 하나는 네트워크(NT)를 통해 다른 애플리케이션 서버에 포함된 메모리, CXL 메모리, 혹은 저장 장치에 액세스할 수 있고, 혹은 네트워크(NT)를 통해 저장 서버들(2210~22n0)에 포함된 메모리들, CXL 메모리들, 혹은 저장 장치들에 액세스할 수 있다. 이로써, 애플리케이션 서버들(2110~21m0) 중 적어도 하나는 다른 애플리케이션 서버들 및/혹은 저장 서버들에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 애플리케이션 서버들(2110~21m0) 중 적어도 하나는 다른 애플리케이션 서버들 및/혹은 저장 서버들 사이에서 데이터를 이동 혹은 카피(copy)하기 위한 명령어를 실행할 수 있다. 이때 데이터는 저장 서버들의 저장 장치로부터 저장 서버들의 메모리들 혹은 CXL 메모리들을 거쳐서, 혹은 바로 애플리케이션 서버들의 메모리 혹은 CXL 메모리로 이동될 수 있다. 네트워크를 통해 이동하는 데이터는 보안 혹은 프라이버시를 위해 암호화된 데이터일 수 있다.In an embodiment, at least one of the application servers 2110 to 21m0 may access memory, CXL memory, or a storage device included in another application server through the network NT, or through the network NT. It is possible to access memories, CXL memories, or storage devices included in the storage servers 2210 to 22n0. Accordingly, at least one of the application servers 2110 to 21m0 can perform various operations on data stored in other application servers and/or storage servers. For example, at least one of the application servers 2110 to 21m0 may execute a command to move or copy data between other application servers and/or storage servers. At this time, data may be moved from the storage devices of the storage servers through the memories of the storage servers or CXL memories, or directly to the memory of the application servers or CXL memories. Data moving over a network may be encrypted for security or privacy.

실시 예에 있어서, 애플리케이션 서버들(2110~21m0) 및 저장 서버들(2210~22n0) 중 적어도 하나에 포함된 저장 장치는 애플리케이션 서버들(2110~21m0) 및 저장 서버들(2210~22n0) 중 적어도 하나에 포함된 CXL 메모리를 전용 영역으로서 할당 받을 수 있으며, 저장 장치는 할당된 전용 영역을 버퍼 메모리로서 사용(즉, 맵 데이터를 저장)할 수 있다. 예를 들어, 저장 서버(2210)에 포함된 저장 장치(2215)는 다른 저장 서버(예를 들어, 22n0)에 포함된 CXL 메모리를 할당 받을 수 있고, 스위치(2213) 및 NIC(2216)를 통해, 다른 저장 서버(예를 들어, 22n0)에 포함된 CXL 메모리를 액세스할 수 있다. 이 경우, 제 1 저장 서버(2210)의 저장 장치(2215)에 대한 맵 데이터는 다른 저장 서버(22n0)의 CXL 메모리에 저장될 수 있다. 즉, 본 발명에 따른 데이터 센터의 저장 장치들 및 CXL 메모리들은 다양한 방식으로 연결 및 구현될 수 있다.In an embodiment, the storage device included in at least one of the application servers 2110 to 21m0 and the storage servers 2210 to 22n0 is at least one of the application servers 2110 to 21m0 and the storage servers 2210 to 22n0. The CXL memory included in one can be allocated as a dedicated area, and the storage device can use the allocated dedicated area as a buffer memory (i.e., store map data). For example, the storage device 2215 included in the storage server 2210 may be allocated the CXL memory included in another storage server (e.g., 22n0), through the switch 2213 and the NIC 2216. , it is possible to access CXL memory contained in another storage server (e.g., 22n0). In this case, map data for the storage device 2215 of the first storage server 2210 may be stored in the CXL memory of the other storage server 22n0. That is, storage devices and CXL memories of a data center according to the present invention can be connected and implemented in various ways.

상술된 실시 예 들에서, 제 1, 제 2, 제 3 등의 용어들을 사용하여 본 발명의 기술적 사상에 따른 구성 요소들이 설명되었다. 그러나 제 1, 제 2, 제 3 등과 같은 용어들은 구성 요소들을 서로 구별하기 위해 사용되며, 본 발명을 한정하지 않는다. 예를 들어, 제 1, 제 2, 제 3 등과 같은 용어들은 순서 혹은 임의의 형태의 수치적 의미를 내포하지 않는다.In the above-described embodiments, components according to the technical idea of the present invention have been described using terms such as first, second, third, etc. However, terms such as first, second, third, etc. are used to distinguish components from each other and do not limit the present invention. For example, terms such as first, second, third, etc. do not imply an order or any form of numerical meaning.

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

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

본 발명의 실시 예에 따른 스마트 메모리 모듈은 여러 개의 Flash Memory Controller와 모든 NAND Dies 들이 서로 연결된 Mesh 구조 형태로 구현될 수 있다.A smart memory module according to an embodiment of the present invention may be implemented in the form of a mesh structure in which multiple Flash Memory Controllers and all NAND Dies are connected to each other.

실시 예에 있어서, Flash Memory CTRL-NAND Dies가 H/W적으로 Dedicated 된 경우에서 Flash Memory CTRL가 동작 중인 경우 해당 CTRL에 Dedicated 되고, 사용되지 않은 NAND Dies로의 접근이 가능하다. 실시 예에 있어서, Mesh 구조를 통해 Child CTRL의 가감이 가능하며 기존 특허 대비 불필요한 NAND CTRL 개수를 줄여 Cost Saving 가능하다. Mother CTRL to NAND Dies로의 직접 Access & Data Read/Write 가능 NAND dies가 존재한다.In an embodiment, in the case where Flash Memory CTRL-NAND Dies are H/W dedicated, if the Flash Memory CTRL is operating, it is dedicated to the corresponding CTRL and access to unused NAND Dies is possible. In an embodiment, child CTRLs can be added or subtracted through the mesh structure, and cost saving is possible by reducing the number of unnecessary NAND CTRLs compared to existing patents. There are NAND dies that allow direct access and data read/write to Mother CTRL to NAND Dies.

한편, 상술된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.Meanwhile, the contents of the present invention described above are only specific examples for carrying out the invention. The present invention will include not only concrete and practically usable means, but also technical ideas, which are abstract and conceptual ideas that can be used as technology in the future.

200: 스마트 메모리 모듈
210: 휘발성 메모리 장치
220: 비휘발성 메모리 장치들
231, 232, 232, 23M: 차일드 제어기
240: 마더 제어기
250: 비휘발성 다이 관리 및 DMA 제어기
200: Smart memory module
210: volatile memory device
220: Non-volatile memory devices
231, 232, 232, 23M: Child controller
240: Mother controller
250: Non-volatile die management and DMA controller

Claims (10)

적어도 하나의 휘발성 메모리 장치;
메쉬 구조로 연결된 복수의 비휘발성 메모리 장치들;
상기 적어도 하나의 휘발성 메모리 장치에서 상기 복수의 비휘발성 메모리 장치들을 데이터 전송을 수행하는 복수의 차일드 제어기들; 및
외부 장치와 CXL(Compute Express Link) 인터페이스를 통하여 통신하고, 상기 적어도 하나의 휘발성 메모리 장치 및 상기 복수의 차일드 제어기들을 제어하는 마더 제어기를 포함하고,
상기 복수의 차일드 제어기들의 각각은 상기 복수의 비휘발성 메모리 장치들 중에서 활성화 다이로 할당된 적어도 하나의 비휘발성 메모리 장치로 커맨드 및 DMA(Direct Memory Access) 인스트럭션 전송을 통하여 읽기 동작 혹은 쓰기 동작을 수행하는 것을 특징으로 하는 스마트 메모리 모듈.
at least one volatile memory device;
A plurality of non-volatile memory devices connected in a mesh structure;
a plurality of child controllers that perform data transfer from the at least one volatile memory device to the plurality of non-volatile memory devices; and
Comprising a mother controller that communicates with an external device through a CXL (Compute Express Link) interface and controls the at least one volatile memory device and the plurality of child controllers,
Each of the plurality of child controllers performs a read or write operation by transmitting a command and a direct memory access (DMA) instruction to at least one non-volatile memory device allocated to an activation die among the plurality of non-volatile memory devices. A smart memory module characterized in that.
제 1 항에 있어서,
상기 마더 제어기는 상기 복수의 비휘발성 메모리 장치들의 각각의 활성화 및 비활성화 상태를 모니터링 하고, 비활성화된 다이들을 할당함으로써 상기 복수의 차일드 제어기들을 통하여 데이터 스트라이핑(striping) 동작을 수행하는 것을 특징으로 하는 스마트 메모리 모듈.
According to claim 1,
The mother controller monitors the activation and deactivation status of each of the plurality of non-volatile memory devices, and performs a data striping operation through the plurality of child controllers by allocating deactivated dies. Smart memory module.
제 1 항에 있어서,
상기 마더 제어기는 상기 복수의 비휘발성 메모리 장치들 중에서 적어도 하나에 직접 접근을 통하여 읽기/쓰기 동작을 수행하는 것을 특징으로 하는 스마트 메모리 모듈.
According to claim 1,
A smart memory module, wherein the mother controller performs a read/write operation through direct access to at least one of the plurality of non-volatile memory devices.
제 1 항에 있어서,
상기 복수의 비휘발성 메모리 장치들의 각각의 활성화 및 비활성화를 모니터링 하고, 할당된 다이의 DMA 동작을 제어하는 비휘발성 다이 관리 및 DMA 제어기를 더 포함하는 스마트 메모리 모듈.
According to claim 1,
A smart memory module further comprising a non-volatile die management and DMA controller that monitors activation and deactivation of each of the plurality of non-volatile memory devices and controls DMA operations of assigned dies.
제 4 항에 있어서,
상기 비휘발성 다이 관리 및 DMA 제어기는 상기 복수의 비휘발성 메모리 장치들 중에서 적어도 하나의 읽기/쓰기 동작에서 데이터를 분산하거나 데이터를 수집하는 것을 제어하는 것을 특징으로 하는 스마트 메모리 모듈.
According to claim 4,
A smart memory module, wherein the non-volatile die management and DMA controller controls distributing data or collecting data in at least one read/write operation among the plurality of non-volatile memory devices.
제 4 항에 있어서,
상기 비휘발성 다이 관리 및 DMA 제어기는 상기 마더 제어기에 의해 상기 복수의 비휘발성 메모리 장치들 중에서 적어도 하나에 직접 데이터를 쓰거나 직접 데이터를 읽도록 제어하는 것을 특징으로 하는 스마트 메모리 모듈.
According to claim 4,
A smart memory module, wherein the non-volatile die management and DMA controller controls the mother controller to directly write data to or read data directly from at least one of the plurality of non-volatile memory devices.
제 1 항에 있어서,
스몰 정크(small chunk) 혹은 서비스 품질 관련 중요 데이터의 관리가 필요할 때, 상기 복수의 차일드 제어기들과 상관 없이 사전에 결정된 적어도 하나의 비휘발성 메모리 장치로 상기 마더 제어기가 직접 접근함으로써 읽기/쓰기 동작이 수행되는 것을 특징으로 하는 스마트 메모리 모듈.
According to claim 1,
When management of small chunk or service quality-related important data is required, read/write operations are performed by the mother controller directly accessing at least one predetermined non-volatile memory device regardless of the plurality of child controllers. A smart memory module, characterized in that:
제 1 항에 있어서,
상기 복수의 차일드 제어기들을 통하여 상기 읽기 동작과 상기 쓰기 동작은 동시에 수행되는 것을 특징으로 하는 스마트 메모리 모듈.
According to claim 1,
A smart memory module, wherein the read operation and the write operation are performed simultaneously through the plurality of child controllers.
스마트 메모리 모듈의 동작 방법에 있어서, 상기 스마트 메모리 모듈은 적어도 하나의 휘발성 메모리 장치, 메쉬 구조로 연결된 복수의 비휘발성 메모리 장치들, 상기 적어도 하나의 휘발성 메모리 장치의 데이터를 상기 복수의 비휘발성 메모리 장치로 전송하는 복수의 차일드 제어기, 및 상기 적어도 하나의 휘발성 메모리 장치 및 상기 복수의 차일드 제어기를 제어하는 마더 제어기를 포함하고, 상기 방법은,
상기 복수의 차일드 제어기들을 통하여 상기 적어도 하나의 휘발성 메모리 장치에서 상기 복수의 비휘발성 메모리 장치들로 데이터를 전송할 때, 상기 복수의 비휘발성 메모리 장치들의 각각의 활성화 및 비활성화를 관리하는 단계; 및
상기 마더 제어기에서 상기 복수의 비휘발성 메모리 장치들 중에서 적어도 하나의 비휘발성 메모리 장치에 대한 DMA(Direct Memory Access) 동작을 제어하는 단계를 포함하는 방법.
In a method of operating a smart memory module, the smart memory module includes at least one volatile memory device, a plurality of non-volatile memory devices connected in a mesh structure, and data of the at least one volatile memory device to the plurality of non-volatile memory devices. a plurality of child controllers that transmit data to the device, and a mother controller that controls the at least one volatile memory device and the plurality of child controllers, the method comprising:
Managing activation and deactivation of each of the plurality of non-volatile memory devices when transferring data from the at least one volatile memory device to the plurality of non-volatile memory devices through the plurality of child controllers; and
A method comprising controlling, by the mother controller, a Direct Memory Access (DMA) operation for at least one non-volatile memory device among the plurality of non-volatile memory devices.
제 9 항에 있어서,
상기 복수의 차일드 제어기들의 중에서 적어도 하나는 쓰기 동작을 수행하면서, 다른 적어도 하나는 읽기 동작을 수행하는 것을 특징으로 하는 방법.
According to clause 9,
A method wherein at least one of the plurality of child controllers performs a write operation and at least one other child controller performs a read operation.
KR1020230175816A 2023-12-06 2023-12-06 Smart memory module and operating method thereof KR20230173059A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230175816A KR20230173059A (en) 2023-12-06 2023-12-06 Smart memory module and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230175816A KR20230173059A (en) 2023-12-06 2023-12-06 Smart memory module and operating method thereof

Publications (1)

Publication Number Publication Date
KR20230173059A true KR20230173059A (en) 2023-12-26

Family

ID=89320566

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230175816A KR20230173059A (en) 2023-12-06 2023-12-06 Smart memory module and operating method thereof

Country Status (1)

Country Link
KR (1) KR20230173059A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230297520A1 (en) * 2022-03-21 2023-09-21 Micron Technology, Inc. Compute express link memory and storage module

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230297520A1 (en) * 2022-03-21 2023-09-21 Micron Technology, Inc. Compute express link memory and storage module

Similar Documents

Publication Publication Date Title
US11029853B2 (en) Dynamic segment allocation for write requests by a storage system
TWI710912B (en) Memory systems and methods implemented in a memory system, and non-transitory computer storage medium
US11726701B2 (en) Memory expander, heterogeneous computing device using memory expander, and operation method of heterogenous computing
US11741034B2 (en) Memory device including direct memory access engine, system including the memory device, and method of operating the memory device
US9330055B2 (en) Modular architecture for extreme-scale distributed processing applications
CN104049906A (en) System, method and computer-readable medium for dynamic cache sharing
CN104903872A (en) Systems, methods, and interfaces for adaptive persistence
CA2872019A1 (en) Pooling of memory resources across multiple nodes
US10789253B2 (en) Computing system and server
US20230028071A1 (en) Memory module, system including the same, and operation method of memory module
KR20230173059A (en) Smart memory module and operating method thereof
US20230221897A1 (en) Implementing coherency and page cache support for a storage system spread across multiple data centers
US12079506B2 (en) Memory expander, host device using memory expander, and operation method of sever system including memory expander
TW201816624A (en) Independent resource allocation system for solving conflicts of distributed hadoop in virtualization and cloud serving system
US20220276804A1 (en) Information processing apparatus
US20230376238A1 (en) Computing system for managing distributed storage devices, and method of operating the same
EP4283457A2 (en) Computing system for managing distributed storage devices, and method of operating the same
US11899585B2 (en) In-kernel caching for distributed cache
US20230359578A1 (en) Computing system including cxl switch, memory device and storage device and operating method thereof
US11481147B1 (en) Buffer allocation techniques
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
US20230359389A1 (en) Operation method of host configured to communicate with storage devices and memory devices, and system including storage devices and memory devices
US20230359379A1 (en) Computing system generating map data, and method of operating the same
US20240281402A1 (en) Computing systems having congestion monitors therein and methods of controlling operation of same
WO2024088150A1 (en) Data storage method and apparatus based on open-channel solid state drive, device, medium, and product