KR20230169885A - Persistent memory and computing system - Google Patents

Persistent memory and computing system Download PDF

Info

Publication number
KR20230169885A
KR20230169885A KR1020230169037A KR20230169037A KR20230169885A KR 20230169885 A KR20230169885 A KR 20230169885A KR 1020230169037 A KR1020230169037 A KR 1020230169037A KR 20230169037 A KR20230169037 A KR 20230169037A KR 20230169885 A KR20230169885 A KR 20230169885A
Authority
KR
South Korea
Prior art keywords
data
controller
sub
main controller
storage device
Prior art date
Application number
KR1020230169037A
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 KR1020230169037A priority Critical patent/KR20230169885A/en
Publication of KR20230169885A publication Critical patent/KR20230169885A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/0026PCI express

Abstract

효율이 향상된 영구 메모리 장치 및 컴퓨팅 시스템이 제공된다. 영구 메모리 장치는 CXL 인터페이스를 통해 데이터를 수신 및 전송하는 메인 컨트롤러, 메인 컨트롤러로부터 데이터를 수신하여 저장하고, 메인 컨트롤러에 데이터를 전송하는 버퍼 메모리, 복수의 제1 비휘발성 메모리 및 복수의 제1 비휘발성 메모리를 제어하는 제1 서브 컨트롤러를 포함하는 제1 스토리지 장치, 복수의 제2 비휘발성 메모리 및 복수의 제2 비휘발성 메모리를 제어하는 제1 서브 컨트롤러와 다른 제2 서브 컨트롤러를 포함하는 제2 스토리지 장치를 포함하되, 메인 컨트롤러는 호스트 장치로부터 버퍼 메모리에 저장된 데이터를 제1 스토리지 장치 및 제2 스토리지 장치에 플러싱하는 방법에 관한 정보를 수신하여, 이를 기초로 제1 서브 컨트롤러 및 제2 서브 컨트롤러의 동작을 제어한다.Persistent memory devices and computing systems with improved efficiency are provided. The persistent memory device includes a main controller for receiving and transmitting data through a CXL interface, a buffer memory for receiving and storing data from the main controller and transmitting data to the main controller, a plurality of first non-volatile memories, and a plurality of first non-volatile memories. A first storage device including a first sub-controller for controlling volatile memories, a plurality of second non-volatile memories and a second sub-controller different from the first sub-controller for controlling the plurality of second non-volatile memories. It includes a storage device, wherein the main controller receives information about how to flush data stored in the buffer memory to the first storage device and the second storage device from the host device, and based on this, the first sub-controller and the second sub-controller Controls the operation of

Description

영구 메모리 장치 및 컴퓨팅 시스템{PERSISTENT MEMORY AND COMPUTING SYSTEM}Persistent memory device and computing system {PERSISTENT MEMORY AND COMPUTING SYSTEM}

본 발명은 영구 메모리 장치, 컴퓨팅 시스템에 관한 것이다.The present invention relates to persistent memory devices and computing systems.

CXL(Compute express link) 인터페이스를 활용하여 낸드 플래시 등을 적용한 장치가 메모리 장치로 활용될 경우 종래의 낸드 플래시를 이용한 스토리지 장치 이상의 고가용성(HA, High Avilability) 및 내구성 보장이 필요하다.When a device using NAND flash using the CXL (Compute express link) interface is used as a memory device, high availability (HA) and durability must be guaranteed beyond that of storage devices using conventional NAND flash.

본 발명이 해결하고자 하는 기술적 과제는 효율이 향상된 영구 메모리 장치 및 컴퓨팅 시스템을 제공하는 것이다.The technical problem to be solved by the present invention is to provide a persistent memory device and computing system with improved efficiency.

본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The technical problems of the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those skilled in the art from the description below.

상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 영구 메모리 장치는 CXL 인터페이스를 통해 데이터를 수신 및 전송하는 메인 컨트롤러, 메인 컨트롤러로부터 데이터를 수신하여 저장하고, 메인 컨트롤러에 데이터를 전송하는 버퍼 메모리, 복수의 제1 비휘발성 메모리 및 복수의 제1 비휘발성 메모리를 제어하는 제1 서브 컨트롤러를 포함하는 제1 스토리지 장치, 복수의 제2 비휘발성 메모리 및 복수의 제2 비휘발성 메모리를 제어하는 제1 서브 컨트롤러와 다른 제2 서브 컨트롤러를 포함하는 제2 스토리지 장치를 포함하되, 메인 컨트롤러는 호스트 장치로부터 버퍼 메모리에 저장된 데이터를 제1 스토리지 장치 및 제2 스토리지 장치에 플러싱하는 방법에 관한 정보를 수신하여, 이를 기초로 제1 서브 컨트롤러 및 제2 서브 컨트롤러의 동작을 제어한다.A persistent memory device according to some embodiments of the present invention for achieving the above technical problem includes a main controller that receives and transmits data through a CXL interface, a buffer that receives and stores data from the main controller, and transmits data to the main controller. A first storage device including a memory, a plurality of first non-volatile memories and a first sub-controller for controlling the plurality of first non-volatile memories, a plurality of second non-volatile memories and a first sub-controller for controlling the plurality of second non-volatile memories. A second storage device including a second sub-controller different from the first sub-controller, wherein the main controller receives information about how to flush data stored in the buffer memory from the host device to the first storage device and the second storage device. It is received, and the operations of the first sub-controller and the second sub-controller are controlled based on this.

상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 컴퓨팅 시스템은 호스트 장치 및 CXL 인터페이스를 통해 데이터를 수신 및 전송하고, 호스트로부터 GPF 커맨드를 수신하는 메인 컨트롤러와, 메인 컨트롤러로부터 데이터를 수신하여 저장하고, 메인 컨트롤러에 데이터를 전송하는 버퍼 메모리와, 제1 스토리지 장치와, 제2 스토리지 장치를 포함하는 영구 메모리 장치를 포함하고, 호스트 장치는 영구 메모리 장치의 동작 모드를 결정하고, GPF 커맨드를 통해 영구 메모리 장치의 플러싱 동작을 제어하고, 메인 컨트롤러는 제1 스토리지 장치 및 제2 스토리지 장치의 동작을 제어하고, 호스트 장치로부터 GPF 커맨드를 수신하여 버퍼 메모리에 저장된 데이터의 적어도 일부를 제1 스토리지 장치 및 제2 스토리지 장치로 플러싱한다.A computing system according to some embodiments of the present invention for achieving the above technical problem includes a main controller that receives and transmits data through a host device and a CXL interface, a main controller that receives a GPF command from the host, and a main controller that receives data from the main controller. a persistent memory device including a buffer memory for storing and transmitting data to a main controller, a first storage device, and a second storage device, wherein the host device determines an operation mode of the persistent memory device and issues a GPF command. The main controller controls the operation of the first storage device and the second storage device, and receives a GPF command from the host device to transfer at least part of the data stored in the buffer memory to the first storage device. and flushing to the second storage device.

기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.Specific details of other embodiments are included in the detailed description and drawings.

도 1은 몇몇 실시예에 따른 영구 메모리 장치가 적용된 컴퓨팅 시스템을 설명하기 위한 예시적인 도면이다.
도 2 내지 도 6은 몇몇 실시예에 따른 영구 메모리 장치의 동작을 설명하기 위한 예시적인 도면이다.
도 7은 몇몇 실시예에 따른 영구 메모리 장치가 적용된 서버 시스템을 설명하기 위한 예시적인 도면이다.
1 is an exemplary diagram for explaining a computing system to which a persistent memory device is applied according to some embodiments.
2 to 6 are exemplary diagrams for explaining the operation of a persistent memory device according to some embodiments.
FIG. 7 is an exemplary diagram for explaining a server system to which a persistent memory device is applied according to some embodiments.

이하, 첨부된 도면을 참조하여 본 발명의 기술적 사상에 따른 실시예들에 대해 설명한다.Hereinafter, embodiments according to the technical idea of the present invention will be described with reference to the attached drawings.

도 1은 몇몇 실시예에 따른 영구 메모리 장치가 적용된 컴퓨팅 시스템을 설명하기 위한 예시적인 도면이다.1 is an exemplary diagram for explaining a computing system to which a persistent memory device is applied according to some embodiments.

도 1을 참조하면, 컴퓨팅 시스템(1000)은 호스트 장치(10), CXL 인터페이스(200) 및 영구 메모리 장치(100)를 포함할 수 있다. 몇몇 실시예에서, 컴퓨팅 시스템(1000)은 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기, 디지털 카메라 등과 같은 사용자 장치들, 또는 내비게이션(navigation), 블랙 박스, 차량용 전장 장치 등과 같은 차량용 장비(automotive device)에 포함될 수 있다. 또는, 컴퓨팅 시스템(1000)은 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 pc(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다.Referring to FIG. 1 , the computing system 1000 may include a host device 10, a CXL interface 200, and a persistent memory device 100. In some embodiments, computing system 1000 may be used for user devices such as a personal computer, laptop computer, server, media player, digital camera, etc., or for navigation, a black box, or a vehicle. It may be included in automotive devices such as electronic devices. Alternatively, the computing system 1000 may be a mobile device such as a portable communication terminal (mobile phone), a smart phone, a tablet personal computer (PC), a wearable device, a healthcare device, or an IOT (internet of things) device. ) may be a system.

호스트 장치(10)는 호스트 프로세서(11), 호스트 메모리(12) 및 CXL 호스트 인터페이스 회로(13)를 포함할 수 있다. 호스트 프로세서(11)는 컴퓨팅 시스템(1000)의 제반 동작을 제어할 수 있다. 몇몇 실시예에서, 호스트 프로세서(11)는 각각 CPU(central processing unit), GPU(graphics processing unit), NPU(neural processing unit), DPU(data processing unit) 등과 같은 다양한 프로세서들 중 하나일 수 있다. 몇몇 실시예에서, 호스트 프로세서(11)는 각각 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다. 몇몇 실시예에서, 호스트 프로세서(11)는 애플리케이션 프로세서(application processor; AP)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(system on chip; SOC)으로 구현될 수 있다. The host device 10 may include a host processor 11, a host memory 12, and a CXL host interface circuit 13. The host processor 11 can control overall operations of the computing system 1000. In some embodiments, the host processor 11 may be one of various processors, such as a central processing unit (CPU), a graphics processing unit (GPU), a neural processing unit (NPU), a data processing unit (DPU), etc. In some embodiments, host processor 11 may each include a single core processor or a multi-core processor. In some embodiments, the host processor 11 may be one of a number of modules included in an application processor (AP), and the application processor may be implemented as a system on chip (SOC). You can.

호스트 메모리(12)는 동작 메모리(working memory)로서, 호스트 프로세서(11)의 동작에 필요한 명령, 프로그램 또는 데이터 등을 저장할 수 있다. 또는 호스트 메모리(12)는 영구 메모리 장치(100) 및/또는 CXL 스토리지 장치(미도시)로 전송될 데이터, 또는 영구 메모리 장치(100) 및/또는 CXL 스토리지 장치로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다. 호스트 프로세서(11)가 AP로 구현되는 경우, 호스트 메모리(12)는 상기 AP 내에 구비되는 임베디드 메모리이거나, 또는 상기 AP의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다. 몇몇 실시예에 따라, 호스트 프로세서(11)와 호스트 메모리(12)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예에서, 호스트 프로세서(11)와 호스트 메모리(12)는 동일한 반도체 칩에 집적될 수 있다. The host memory 12 is a working memory and can store instructions, programs, or data necessary for the operation of the host processor 11. Alternatively, the host memory 12 may temporarily store data to be transferred to the persistent memory device 100 and/or the CXL storage device (not shown), or data transferred from the persistent memory device 100 and/or the CXL storage device. It can function as a buffer memory for When the host processor 11 is implemented as an AP, the host memory 12 may be an embedded memory provided within the AP, or may be a non-volatile memory or memory module disposed outside the AP. According to some embodiments, the host processor 11 and the host memory 12 may be implemented as separate semiconductor chips. Alternatively, in some embodiments, the host processor 11 and the host memory 12 may be integrated into the same semiconductor chip.

CXL 호스트 인터페이스 회로(13)는 CXL 인터페이스(200)를 통해 영구 메모리 장치(100) 및 CXL 스토리지 장치와 통신할 수 있다.CXL host interface circuit 13 may communicate with persistent memory device 100 and CXL storage device through CXL interface 200.

영구 메모리 장치(100)는 메인 컨트롤러(110), 버퍼 메모리(120), 제1 스토리지 장치(130) 및 제2 스토리지 장치(140)를 포함할 수 있다. 영구 메모리 장치(100)는 컴퓨팅 시스템(1000)의 메인 메모리 또는 시스템 메모리로서 사용될 수 있다. 영구 메모리 장치(100)는 CXL 인터페이스(200)를 통해 호스트 장치(10)와 연결될 수 있다. 메인 컨트롤러(110)는 CXL 인터페이스(200)를 통해 호스트 장치(10)로부터 데이터를 수신하거나 호스트 장치(10)에게 전송할 수 있다. 메인 컨트롤러(110)는 CXL 인터페이스(200)를 통해 호스트 장치(10)로부터 커맨드를 수신할 수 있다. 버퍼 메모리(120)는 메인 컨트롤러(110)로부터 데이터를 수신하여 저장할 수 있다. 버퍼 메모리(120)는 메인 컨트롤러(110)에 데이터를 전송할 수 있다. 제1 스토리지 장치(130)는 제1 서브 컨트롤러(131) 및 복수의 제1 비휘발성 메모리(132_1 내지 132_3)를 포함할 수 있다. 도 1에는 3개의 제1 비휘발성 메모리가 도시되었으나 실시예는 이에 제한되지 않는다. 제1 서브 컨트롤러(131)는 메인 컨트롤러(110)의 제어에 따라 복수의 제1 비휘발성 메모리(132_1 내지 132_3)를 관리할 수 있다. 제1 서브 컨트롤러(131)는 메인 컨트롤러(110)의 제어에 따라 버퍼 메모리(120)에 저장된 데이터를 제1 비휘발성 메모리(132_1 내지 132_3)에 플러싱(flushing)할 수 있다. 제2 스토리지 장치(140)는 제2 서브 컨트롤러(141) 및 복수의 제2 비휘발성 메모리(142_1 내지 142_3)를 포함할 수 있다. 도 1에는 3개의 제2 비휘발성 메모리가 도시되었으나 실시예는 이에 제한되지 않는다. 제2 서브 컨트롤러(141)는 메인 컨트롤러(110)의 제어에 따라 복수의 제2 비휘발성 메모리(142_1 내지 142_3)를 관리할 수 있다. 제2 서브 컨트롤러(141)는 메인 컨트롤러(110)의 제어에 따라 버퍼 메모리(120)에 저장된 데이터를 복수의 제2 비휘발성 메모리(142_1 내지 142_3)에 플러싱(flushing)할 수 있다.The persistent memory device 100 may include a main controller 110, a buffer memory 120, a first storage device 130, and a second storage device 140. The persistent memory device 100 may be used as main memory or system memory of the computing system 1000. The persistent memory device 100 may be connected to the host device 10 through the CXL interface 200. The main controller 110 may receive data from or transmit data to the host device 10 through the CXL interface 200. The main controller 110 may receive commands from the host device 10 through the CXL interface 200. The buffer memory 120 can receive data from the main controller 110 and store it. The buffer memory 120 may transmit data to the main controller 110. The first storage device 130 may include a first sub-controller 131 and a plurality of first non-volatile memories 132_1 to 132_3. Although three first non-volatile memories are shown in FIG. 1, the embodiment is not limited thereto. The first sub-controller 131 may manage a plurality of first non-volatile memories 132_1 to 132_3 under the control of the main controller 110. The first sub-controller 131 may flush data stored in the buffer memory 120 to the first non-volatile memories 132_1 to 132_3 under the control of the main controller 110. The second storage device 140 may include a second sub-controller 141 and a plurality of second non-volatile memories 142_1 to 142_3. Although three second non-volatile memories are shown in FIG. 1, the embodiment is not limited thereto. The second sub-controller 141 may manage a plurality of second non-volatile memories 142_1 to 142_3 under the control of the main controller 110. The second sub-controller 141 may flush data stored in the buffer memory 120 to the plurality of second non-volatile memories 142_1 to 142_3 under the control of the main controller 110.

도시되진 않았으나, 컴퓨팅 시스템(1000)은 CXL 스토리지 장치를 더 포함할 수 있다. CXL 스토리지 장치는 CXL 스토리지 컨트롤러와 비휘발성 메모리들을 포함할 수 있다. CXL 스토리지 컨트롤러는 호스트 장치(10)의 제어에 따라, 각 비휘발성 메모리들에 데이터를 저장하거나 또는 각 비휘발성 메모리들에 저장된 데이터를 호스트 장치(10)로 전송할 수 있다. 몇몇 실시예에서, 비휘발성 메모리들은 낸드 플래시 메모리(nand flash memory)일 수 있으나, 이에 제한되는 것은 아니다.Although not shown, computing system 1000 may further include a CXL storage device. A CXL storage device may include a CXL storage controller and non-volatile memories. The CXL storage controller may store data in each non-volatile memory or transmit data stored in each non-volatile memory to the host device 10 under the control of the host device 10. In some embodiments, the non-volatile memories may be, but are not limited to, NAND flash memory.

몇몇 실시예에서, 호스트 장치(10), 영구 메모리 장치(100) 및 CXL 스토리지 장치는 동일한 인터페이스를 서로 공유하도록 구성될 수 있다. 예를 들어, 호스트 장치(10), 영구 메모리 장치(100) 및 CXL 스토리지 장치는 CXL 인터페이스(200, compute express link interface)를 통해 서로 통신할 수 있다. 몇몇 실시예에서, CXL 인터페이스(200)는 일관성(coherency), 메모리 액세스(memory access), 및 입출력 프로토콜(IO protocol)의 동적 프로토콜의 다중화(dynamic protocol muxing)를 지원하여 가속기들(accelerator), 메모리 장치들, 또는 다양한 전자 장치들 사이의 다양한 연결을 가능하게 하는 저지연(low-latency) 및 고대역폭(high-bandwidth) 링크를 의미할 수 있다.In some embodiments, host device 10, persistent memory device 100, and CXL storage device may be configured to share the same interface with each other. For example, the host device 10, persistent memory device 100, and CXL storage device may communicate with each other through a CXL interface 200 (compute express link interface). In some embodiments, the CXL interface 200 supports coherency, memory access, and dynamic protocol muxing of the input/output protocol (IO protocol) to support accelerators, memory It may refer to a low-latency and high-bandwidth link that enables various connections between devices or various electronic devices.

이하에서, 설명의 편의를 위해, 호스트 장치(10), 영구 메모리 장치(100) 및 CXL 스토리지 장치는 CXL 인터페이스(200)를 통해 서로 통신하는 것으로 가정한다. 그러나, 실시예가 이에 제한되는 것은 아니며, 호스트 장치(10), 영구 메모리 장치(100) 및 CXL 스토리지 장치는 GEN-Z 프로토콜, NVLink 프로토콜, CCIX 프로토콜, Open CAPI 프로토콜 등과 같은 다양한 컴퓨팅 인터페이스를 기반으로 서로 통신할 수 있다.Hereinafter, for convenience of explanation, it is assumed that the host device 10, the persistent memory device 100, and the CXL storage device communicate with each other through the CXL interface 200. However, the embodiment is not limited thereto, and the host device 10, persistent memory device 100, and CXL storage device are connected to each other based on various computing interfaces such as GEN-Z protocol, NVLink protocol, CCIX protocol, Open CAPI protocol, etc. Can communicate.

CXL 인터페이스(200)는 하위 프로토콜 CXL.io을 포함할 수 있고, CXL.cache, CXL.mem을 포함할 수 있다. CXL.io 프로토콜은 PCIe 트랜잭션 계층으로, 컴퓨팅 시스템(1000)에서 장치 검색, 인터럽트 관리, 레지스터에 의한 액세스 제공, 초기화 처리 및 신호 오류 처리 등에 사용될 수 있다. CXL.cache 프로토콜은 가속기(예를 들어, GPU 또는 FPGA(field programmable gate array)가 호스트 메모리(12)에 엑세스 할때 사용될 수 있다. CXL.mem 프로토콜은 호스트 장치(10)가 가속기의 전용 메모리 또는 영구 메모리 장치(100)의 버퍼 메모리(120)에 액세스할 때 사용될 수 있다.The CXL interface 200 may include a sub-protocol CXL.io, CXL.cache, and CXL.mem. The CXL.io protocol is a PCIe transaction layer and can be used in the computing system 1000 to discover devices, manage interrupts, provide access by registers, handle initialization, and handle signal errors. The CXL.cache protocol can be used when an accelerator (e.g., a GPU or a field programmable gate array (FPGA)) accesses the host memory 12. The CXL.mem protocol allows the host device 10 to access the accelerator's dedicated memory or It may be used when accessing the buffer memory 120 of the persistent memory device 100.

몇몇 실시예에서, 호스트 장치(10), 영구 메모리 장치(100) 및 CXL 스토리지 장치는 입출력 프로토콜인 CXL.io를 사용하여 서로 통신할 수 있다. CXL.io는 PCIe 기반의 비일관성 입출력 프로토콜을 가질 수 있다. 호스트 장치(10), 영구 메모리 장치(100) 및 CXL 스토리지 장치는 CXL.io를 사용하여 서로 사용자 데이터를 비롯한 다양한 정보들을 주고받을 수 있다.In some embodiments, host device 10, persistent memory device 100, and CXL storage device may communicate with each other using CXL.io, an input/output protocol. CXL.io may have an inconsistent input/output protocol based on PCIe. The host device 10, persistent memory device 100, and CXL storage device can exchange various information including user data with each other using CXL.io.

도 2는 몇몇 실시예에 따른 영구 메모리 장치의 동작을 설명하기 위한 예시적인 도면이다.FIG. 2 is an example diagram for explaining the operation of a persistent memory device according to some embodiments.

도 2를 참조하면, 버퍼 메모리(120), 제1 스토리지 장치(130)가 도시되어 있다. 도 2에는 제1 스토리지 장치(130)만을 도시하였으나, 제1 스토리지 장치(130)에 대한 설명은 제2 스토리지 장치(140)에도 동일하게 적용될 수 있다.Referring to FIG. 2, a buffer memory 120 and a first storage device 130 are shown. Although only the first storage device 130 is shown in FIG. 2, the description of the first storage device 130 may be equally applied to the second storage device 140.

제1 스토리지 장치(130)의 제1 서브 컨트롤러(131)는 제1 서브 인터페이스 회로(131_1), 제1 서브 프로세서(131_2), 제1 서브 메모리(131_3), 제1 플래시 변환 계층(Flash translation layer; FTL)(131_4) 및 제1 에러 정정 코드(Error correction code; ECC) 엔진(131_5)(이하, ECC엔진이라 한다)을 포함할 수 있다. 제1 서브 컨트롤러(131)는 제1 서브 인터페이스 회로(131_1)를 통해 버퍼 메모리(120) 및 메인 컨트롤러(110)와 연결될 수 있다. 제1 서브 컨트롤러(131)는 제1 서브 인터페이스 회로(131_1)를 통해 메인 컨트롤러(110)로부터 각종 커맨드(command)를 받을 수 있고, 버퍼 메모리(120)는 제1 서브 인터페이스 회로(131_1)를 통해 복수의 제1 비휘발성 메모리(132_1 내지 132_3)에 데이터를 플러싱할 수 있다. 제1 서브 인터페이스 회로(131_1)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다. 제1 서브 프로세서(131_2)는 제1 서브 컨트롤러(131)의 제반 동작을 제어하도록 구성될 수 있다. 제1 서브 메모리(131_3)는 논리 주소(Logical block address)를 비휘발성 메모리의 물리 주소(Physical block address)로 변환할 수 있는 정보가 저장된 어드레스 매핑 테이블(Address mapping table)을 저장할 수 있다. 제1 서브 메모리(131_3)는 빠른 접근을 위해, DRAM과 같은 고속 메모리일 수 있다. 제1 플래시 변환 계층(131_4)은 복수의 제1 비휘발성 메모리(132_1 내지 132_3)를 효율적으로 사용하기 위한 다양한 관리 동작을 수행할 수 있다. 예를 들어, 제1 플래시 변환 계층(131_4)은 어드레스 매핑 테이블을 기반으로 호스트 장치(10)에 의해 관리되는 논리 주소 및 복수의 제1 비휘발성 메모리(132_1 내지 132_3)에서 사용되는 물리 주소 사이의 어드레스 변환을 수행할 수 있다. 제1 플래시 변환 계층(131_4)은 제1 비휘발성 메모리(132_1 내지 132_3)에 대한 배드 블록 관리 동작을 수행할 수 있다. 제1 플래시 변환 계층(131_4)은 비휘발성 메모리(NVM)에 대한 마모도 관리 동작(wear leveling operation)을 수행할 수 있다. 또한, 제1 플래시 변환 계층(131_4)은 복수의 제1 비휘발성 메모리(132_1 내지 132_3)에 대한 가비지 콜렉션 동작(garbage collection operation)을 수행할 수 있다.The first sub-controller 131 of the first storage device 130 includes a first sub-interface circuit 131_1, a first sub-processor 131_2, a first sub-memory 131_3, and a first flash translation layer. ; FTL) (131_4) and a first error correction code (ECC) engine (131_5) (hereinafter referred to as ECC engine). The first sub-controller 131 may be connected to the buffer memory 120 and the main controller 110 through the first sub-interface circuit 131_1. The first sub-controller 131 can receive various commands from the main controller 110 through the first sub-interface circuit 131_1, and the buffer memory 120 can receive various commands through the first sub-interface circuit 131_1. Data may be flushed to the plurality of first non-volatile memories 132_1 to 132_3. The first sub-interface circuit 131_1 may be implemented to comply with standard protocols such as Toggle or Open NAND Flash Interface (ONFI). The first subprocessor 131_2 may be configured to control overall operations of the first subcontroller 131. The first sub-memory 131_3 may store an address mapping table that stores information that can convert a logical block address into a physical address of non-volatile memory. The first sub-memory 131_3 may be a high-speed memory such as DRAM for fast access. The first flash conversion layer 131_4 may perform various management operations to efficiently use the plurality of first non-volatile memories 132_1 to 132_3. For example, the first flash conversion layer 131_4 converts the logical address managed by the host device 10 based on the address mapping table and the physical address used in the plurality of first non-volatile memories 132_1 to 132_3. Address conversion can be performed. The first flash conversion layer 131_4 may perform a bad block management operation on the first non-volatile memories 132_1 to 132_3. The first flash conversion layer 131_4 may perform a wear leveling operation on non-volatile memory (NVM). Additionally, the first flash conversion layer 131_4 may perform a garbage collection operation on the plurality of first non-volatile memories 132_1 to 132_3.

몇몇 실시예에서, 제1 플래시 변환 계층(131_4)은 소프트웨어, 하드웨어, 펌웨어, 또는 그것들의 조합을 기반으로 구현될 수 있다. 제1 플래시 변환 계층(131_4)이 소프트웨어 또는 펌웨어 형태로 구현되는 경우, 제1 플래시 변환 계층(131_4)과 관련된 프로그램 코드들은 제1 서브 메모리(131_3)에 저장될 수 있고, 제1 서브 프로세서(131_2)에 의해 구동될 수 있다. 제1 플래시 변환 계층(131_4)이 하드웨어로 구현되는 경우, 전술된 다양한 관리 동작을 수행하도록 구성된 하드웨어 구성들이 제1 스토리지 장치(130) 내에 구현될 수 있다.In some embodiments, the first flash conversion layer 131_4 may be implemented based on software, hardware, firmware, or a combination thereof. When the first flash conversion layer 131_4 is implemented in the form of software or firmware, program codes related to the first flash conversion layer 131_4 may be stored in the first sub-memory 131_3, and the first sub-processor 131_2 ) can be driven by. When the first flash conversion layer 131_4 is implemented as hardware, hardware configurations configured to perform the various management operations described above may be implemented in the first storage device 130.

제1 ECC 엔진(131_5)은 복수의 제1 비휘발성 메모리(132_1 내지 132_3)에 저장된 데이터에 대한 오류 검출 및 정정을 수행할 수 있다. 예를 들어, 제1 ECC 엔진(131_5)은 복수의 제1 비휘발성 메모리(132_1 내지 132_3)에 저장될 데이터에 대한 패리티 비트(parity bit)를 생성할 수 있고, 생성된 패리티 비트들은 데이터와 함께 복수의 제1 비휘발성 메모리(132_1 내지 132_3)에 저장될 수 있다. 복수의 제1 비휘발성 메모리(132_1 내지 132_3)로부터 데이터가 독출되는 경우, 제1 ECC 엔진(131_5)은 독출된 데이터와 함께 복수의 제1 비휘발성 메모리(132_1 내지 132_3)로부터 독출된 패리티 비트들을 사용하여, 데이터의 에러를 검출하고 정정할 수 있다.The first ECC engine 131_5 may detect and correct errors on data stored in the plurality of first non-volatile memories 132_1 to 132_3. For example, the first ECC engine 131_5 may generate parity bits for data to be stored in the plurality of first non-volatile memories 132_1 to 132_3, and the generated parity bits may be stored together with the data. It may be stored in a plurality of first non-volatile memories 132_1 to 132_3. When data is read from the plurality of first non-volatile memories 132_1 to 132_3, the first ECC engine 131_5 reads the parity bits read from the plurality of first non-volatile memories 132_1 to 132_3 together with the read data. Using this, you can detect and correct errors in data.

제1 스토리지 장치(130)의 복수의 제1 비휘발성 메모리(132_1 내지 132_3)는 플래시 메모리를 포함할 수 있다. 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 복수의 제1 비휘발성 메모리는 다른 다양한 종류의 비휘발성 메모리일 수 있다. 예를 들어, 복수의 제1 비휘발성 메모리(132_1 내지 132_3)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리일 수 있다.The plurality of first non-volatile memories 132_1 to 132_3 of the first storage device 130 may include flash memory. Flash memory may include a 2D NAND memory array or a 3D (or vertical) NAND (VNAND) memory array. As another example, the plurality of first non-volatile memories may be various types of non-volatile memories. For example, the plurality of first non-volatile memories (132_1 to 132_3) include Magnetic RAM (MRAM), Spin-Transfer Torque MRAM (MRAM), Conductive bridging RAM (CBRAM), Ferroelectric RAM (FeRAM), and PRAM ( It can be Phase RAM, Resistive RAM, and various other types of memory.

도 3은 몇몇 실시예에 따른 영구 메모리 장치의 동작을 설명하기 위한 예시적인 도면이다.FIG. 3 is an example diagram for explaining the operation of a persistent memory device according to some embodiments.

도 3을 참조하면, 버퍼 메모리(120), 제1 스토리지 장치(130a) 및 제2 스토리지 장치(140a)가 도시되어 있다. 버퍼 메모리(120)는 메인 컨트롤러(110)로부터 복수의 데이터를 수신하여 저장할 수 있다. 메인 컨트롤러(110)는 호스트 장치(10)로부터 GPF(Global persistent flush) 커맨드를 받아 버퍼 메모리(120)에 저장된 데이터의 일부를 제1 서브 컨트롤러(131a)를 통해 복수의 제1 비휘발성 메모리(132a_1 내지 132a_3)에 플러싱할 수 있다. 메인 컨트롤러(110)는 호스트 장치(10)로부터 GPF(Global persistent flush) 커맨드를 받아 버퍼 메모리(120)에 저장된 데이터의 일부를 제2 서브 컨트롤러(141a)를 통해 복수의 제2 비휘발성 메모리(142a_1 내지 142a_3)에 플러싱할 수 있다.Referring to FIG. 3, a buffer memory 120, a first storage device 130a, and a second storage device 140a are shown. The buffer memory 120 may receive a plurality of data from the main controller 110 and store them. The main controller 110 receives a global persistent flush (GPF) command from the host device 10 and transfers part of the data stored in the buffer memory 120 to a plurality of first non-volatile memories 132a_1 through the first sub-controller 131a. to 132a_3) can be flushed. The main controller 110 receives a global persistent flush (GPF) command from the host device 10 and transfers part of the data stored in the buffer memory 120 to a plurality of second non-volatile memories 142a_1 through the second sub-controller 141a. to 142a_3) can be flushed.

몇몇 실시예에 따르면, 호스트 장치(10)는 영구 메모리 장치(100)의 메인 컨트롤러(110)에 영구 메모리 장치(100)를 제1 동작 모드로 동작하라는 커맨드(CMD_MODE1)를 전송할 수 있다. 메인 컨트롤러(110)는 CMD_MODE1 커맨드를 수신하여 버퍼 메모리(120)에 저장된 복수의 데이터 중 제1 데이터(DATA_1)를 제1 서브 컨트롤러(131a) 및 제2 서브 컨트롤러(141a)를 통해 복수의 제1 비휘발성 메모리(132a_1 내지 132a_3) 및 복수의 제2 비휘발성 메모리(142a_1 내지 142a_3)에 플러싱할 수 있다. 제1 스토리지 장치 또는 제2 스토리지 장치가 제1 동작 모드로 정상적으로 동작하는 환경에서, 복수의 제1 비휘발성 메모리(132a_1 내지 132a_3) 및 복수의 제2 비휘발성 메모리(142a_1 내지 142a_3)에 플러싱된 데이터는 동일할 수 있다. 여기서의 '정상적으로 동작하는 환경'이란, 제1 스토리지 장치(130a)의 제1 서브 컨트롤러(131a) 또는 복수의 제1 비휘발성 메모리(132a_1 내지 132a_3) 또는 제1 스토리지 장치(130a)의 다른 구성들이 오류를 일으켜, 버퍼 메모리(120)에 저장된 복수의 데이터를 제1 비휘발성 메모리(132a_1 내지 132a_3)에 플러싱할 수 없는 상황이 아닌 것을 가리킨다. 제2 스토리지 장치(140a)의 경우도 마찬가지이다. 이하, '정상적으로 동작하는 환경'에 대한 설명은 생략한다.According to some embodiments, the host device 10 may transmit a command (CMD_MODE1) to the main controller 110 of the persistent memory device 100 to operate the persistent memory device 100 in a first operation mode. The main controller 110 receives the CMD_MODE1 command and transfers the first data (DATA_1) among the plurality of data stored in the buffer memory 120 to the plurality of first data through the first sub-controller 131a and the second sub-controller 141a. Flushing may be performed in the non-volatile memories 132a_1 to 132a_3 and the plurality of second non-volatile memories 142a_1 to 142a_3. In an environment where the first storage device or the second storage device operates normally in the first operation mode, data flushed to the plurality of first non-volatile memories 132a_1 to 132a_3 and the plurality of second non-volatile memories 142a_1 to 142a_3 may be the same. Here, the 'normally operating environment' refers to the first sub-controller 131a of the first storage device 130a, the plurality of first non-volatile memories 132a_1 to 132a_3, or other components of the first storage device 130a. This indicates that an error has occurred and a plurality of data stored in the buffer memory 120 cannot be flushed to the first non-volatile memories 132a_1 to 132a_3. The same applies to the second storage device 140a. Hereinafter, description of 'normally operating environment' will be omitted.

도 4는 몇몇 실시예에 따른 영구 메모리 장치의 동작을 설명하기 위한 예시적인 도면이다.FIG. 4 is an example diagram for explaining the operation of a persistent memory device according to some embodiments.

도 4를 참조하면, 몇몇 실시예에 따라, 제1 스토리지 장치(130a)가 정상적으로 동작하지 못할 수 있다. 예를 들어, 제1 스토리지 장치(130a)의 제1 서브 컨트롤러(131a)가 파손되거나 기타 이유로 버퍼 메모리(120)에 저장된 복수의 데이터를 복수의 제1 비휘발성 메모리(132a_1 내지 132a_3)에 플러싱할 수 없을 수 있고, 복수의 제1 비휘발성 메모리(132a_1 내지 132a_3)를 구성하는 메모리 셀이 열화되거나 기타 이유로 데이터를 저장하지 못할 수 있다. 메인 컨트롤러(110)는 제1 모드로 동작하는 중에 제1 스토리지 장치(130a)가 정상적으로 동작하지 못할 경우, 이를 감지하여 정상적으로 동작하는 제2 스토리지 장치(140a)의 제2 서브 컨트롤러(141a)에게 관리 이관(Management Transfer; MF) 커맨드(CMD_MF)를 전송할 수 있다. 또한 메인 컨트롤러(110)는 정상적으로 동작하는 제2 스토리지 장치(140a)의 제2 서브 컨트롤러(141a)에게 제1 서브 컨트롤러(131a)의 제1 서브 메모리(도 2의 131_3)에 저장된 어드레스 매핑 테이블에 있는 정보 중 마지막으로 매핑(Mapping)한 데이터의 물리 주소(Physical address)를 상기 제2 서브 컨트롤러(141a)에 전송할 수 있다. 이후 메인 컨트롤러(110)는 정상적으로 동작하지 못하는 제1 서브 컨트롤러(131a)를 비활성화 시킬 수 있다. 정상적으로 동작하는 제2 스토리지 장치(140a)의 제2 서브 컨트롤러(141a)는 CMD_MF 커맨드 및 마지막으로 매핑(Mapping)한 데이터의 물리 주소(Physical address)를 수신하여 복수의 제1 비휘발성 메모리(132a_1 내지 132a_3)로부터 마지막으로 매핑(Mapping)한 데이터를 로드(load)할 수 있다. 이에 따라, 제2 서브 컨트롤러(141a)는 복수의 제1 비휘발성 메모리(132a_1 내지 132a_3) 및 복수의 제2 비휘발성 메모리(142a_1 내지 142a_3)를 관리할 수 있다.Referring to FIG. 4 , according to some embodiments, the first storage device 130a may not operate normally. For example, if the first sub-controller 131a of the first storage device 130a is damaged or for other reasons, a plurality of data stored in the buffer memory 120 may be flushed to the plurality of first non-volatile memories 132a_1 to 132a_3. memory cells constituting the plurality of first non-volatile memories 132a_1 to 132a_3 may be deteriorated or may not be able to store data for other reasons. If the first storage device 130a does not operate normally while operating in the first mode, the main controller 110 detects this and manages it to the second sub-controller 141a of the second storage device 140a that operates normally. A Management Transfer (MF) command (CMD_MF) can be transmitted. Additionally, the main controller 110 provides the second sub-controller 141a of the normally operating second storage device 140a with an address mapping table stored in the first sub-memory (131_3 in FIG. 2) of the first sub-controller 131a. The physical address of the last mapped data among the existing information can be transmitted to the second sub-controller 141a. Thereafter, the main controller 110 may deactivate the first sub-controller 131a, which does not operate normally. The second sub-controller 141a of the normally operating second storage device 140a receives the CMD_MF command and the physical address of the last mapped data and operates the plurality of first non-volatile memories 132a_1 to 132a_1. The last mapped data from 132a_3) can be loaded. Accordingly, the second sub-controller 141a can manage the plurality of first non-volatile memories 132a_1 to 132a_3 and the plurality of second non-volatile memories 142a_1 to 142a_3.

몇몇 실시예에 따르면, 메인 컨트롤러(110)는 동일한 데이터를 두개의 스토리지 장치에 플러싱함으로서, 하나의 스토리지 장치에 장애가 발생해 장애가 발생한 스토리지 장치의 데이터가 소실되더라도 동일한 데이터가 다른 스토리지 장치에 보존되어 있으므로 영구 메모리 장치(100)의 고가용성(High Availability)을 보장할 수 있다.According to some embodiments, the main controller 110 flushes the same data to two storage devices, so that even if one storage device fails and the data in the failed storage device is lost, the same data is preserved in the other storage device. High availability of the persistent memory device 100 can be guaranteed.

몇몇 실시예에 따르면, 메인 컨트롤러(110)는 장애가 발생한 스토리지 장치의 복수의 비휘발성 메모리들에 대한 관리를 정상적으로 작동하는 스토리지 장치에 이관함으로서, 스토리지 장치의 장애로 인한 메모리 공간의 낭비를 방지할 수 있다.According to some embodiments, the main controller 110 transfers management of a plurality of non-volatile memories of a failed storage device to a normally operating storage device, thereby preventing waste of memory space due to a storage device failure. there is.

도 5는 몇몇 실시예에 따른 영구 메모리 장치의 동작을 설명하기 위한 예시적인 도면이다.FIG. 5 is an example diagram for explaining the operation of a persistent memory device according to some embodiments.

도 5를 참조하면, 버퍼 메모리(120), 제1 스토리지 장치(130b) 및 제2 스토리지 장치(140b)가 도시되어 있다. 버퍼 메모리(120)는 메인 컨트롤러(110)로부터 복수의 데이터를 수신하여 저장할 수 있다. 메인 컨트롤러(110)는 호스트 장치(10)로부터 GPF(Global persistent flush) 커맨드를 받아 버퍼 메모리(120)에 저장된 데이터의 일부를 제1 서브 컨트롤러(131b)를 통해 복수의 제1 비휘발성 메모리(132b_1 내지 132b_3)에 플러싱할 수 있다. 메인 컨트롤러(110)는 호스트 장치(10)로부터 GPF(Global persistent flush) 커맨드를 받아 버퍼 메모리(120)에 저장된 데이터의 일부를 제2 서브 컨트롤러(141b)를 통해 복수의 제2 비휘발성 메모리(142b_1 내지 142b_3)에 플러싱할 수 있다.Referring to FIG. 5, a buffer memory 120, a first storage device 130b, and a second storage device 140b are shown. The buffer memory 120 may receive a plurality of data from the main controller 110 and store them. The main controller 110 receives a global persistent flush (GPF) command from the host device 10 and transfers part of the data stored in the buffer memory 120 to a plurality of first non-volatile memories 132b_1 through the first sub-controller 131b. to 132b_3) can be flushed. The main controller 110 receives a global persistent flush (GPF) command from the host device 10 and transfers part of the data stored in the buffer memory 120 to a plurality of second non-volatile memories 142b_1 through the second sub-controller 141b. to 142b_3) can be flushed.

몇몇 실시예에 따르면, 호스트 장치(10)는 영구 메모리 장치(100)의 메인 컨트롤러(110)에 영구 메모리 장치(100)를 제2 동작 모드로 동작하라는 커맨드(CMD_MODE2)를 전송할 수 있다. 메인 컨트롤러(110)는 CMD_MODE2 커맨드를 수신하여 버퍼 메모리(120)에 저장된 복수의 데이터 중 제2 데이터(DATA_2)를 제1 서브 컨트롤러(131b)를 통해 복수의 제1 비휘발성 메모리(132b_1 내지 132b_3)에 플러싱할 수 있다. 메인 컨트롤러(110)는 CMD_MODE2 커맨드를 수신하여 버퍼 메모리(120)에 저장된 복수의 데이터에 대한 스냅샷을 특정 주기마다 생성하여 제2 서브 컨트롤러(141b)를 통해 복수의 제2 비휘발성 메모리(142b_1 내지 142b_3)에 생성된 스냅샷을 플러싱할 수 있다. 메인 컨트롤러(110)는 CXL 인터페이스(200)를 통해 호스트 장치(10)로부터 스냅샷을 생성할 특정 주기에 대한 정보를 수신할 수 있다. 제2 동작 모드로 동작 중, 제1 스토리지 장치(130b)가 정상적으로 동작하지 못할 수 있다. 이 경우 제2 스토리지 장치(140b)는 앞서 설명한 제1 동작 모드와 동일하게 동작할 수 있다. 이에 대해서는 앞에서 설명했으므로 자세한 설명은 생략한다.According to some embodiments, the host device 10 may transmit a command (CMD_MODE2) to the main controller 110 of the persistent memory device 100 to operate the persistent memory device 100 in a second operation mode. The main controller 110 receives the CMD_MODE2 command and transfers the second data (DATA_2) among the plurality of data stored in the buffer memory 120 to the plurality of first non-volatile memories 132b_1 to 132b_3 through the first sub-controller 131b. Can be flushed. The main controller 110 receives the CMD_MODE2 command, generates snapshots of the plurality of data stored in the buffer memory 120 at specific cycles, and generates a plurality of second non-volatile memories 142b_1 to 142b_1 through the second sub-controller 141b. Snapshots created in 142b_3) can be flushed. The main controller 110 may receive information about a specific period for creating a snapshot from the host device 10 through the CXL interface 200. While operating in the second operation mode, the first storage device 130b may not operate normally. In this case, the second storage device 140b may operate in the same manner as the first operation mode described above. Since this has been explained previously, detailed explanation will be omitted.

낸드 플래시 메모리의 경우, 내부의 메모리 셀들은 메모리 셀들의 열화로 인해 쓰기 가능 횟수에 제한이 있을 수 있다. 몇몇 실시예에 따르면, 제2 스토리지 장치(140b)의 복수의 제2 비휘발성 메모리(142b_1 내지 142b_3)에는 데이터가 실시간으로 플러싱 되는 것이 아닌 특정 주기마다 플러싱될 수 있다. 이에 따라, 제2 스토리지 장치(140b)의 쓰기 횟수를 줄일 수 있으며, 이를 통해 제2 스토리지 장치(140b)의 내구성을 상승시킬 수 있다. 결과적으로, 영구 메모리 장치(100)의 고가용성(High Availability)을 보장할 수 있다.In the case of NAND flash memory, the number of times internal memory cells can be written may be limited due to deterioration of the memory cells. According to some embodiments, data may be flushed to the plurality of second non-volatile memories 142b_1 to 142b_3 of the second storage device 140b at specific cycles rather than in real time. Accordingly, the number of writes of the second storage device 140b can be reduced, and through this, the durability of the second storage device 140b can be increased. As a result, high availability of the persistent memory device 100 can be guaranteed.

몇몇 실시예에 따르면, 제2 스토리지 장치(140b)의 복수의 제2 비휘발성 메모리(142b_1 내지 142b_3)에는 데이터가 실시간으로 플러싱 되는 것이 아닌 특정 주기마다 플러싱될 수 있다. 이를 통해 실시간으로 플러싱 하는 경우에 비해 플러싱에 필요한 전력 사용량이 줄어들 수 있다.According to some embodiments, data may be flushed to the plurality of second non-volatile memories 142b_1 to 142b_3 of the second storage device 140b at specific cycles rather than in real time. Through this, the power usage required for flushing can be reduced compared to flushing in real time.

도 6은 몇몇 실시예에 따른 영구 메모리 장치의 동작을 설명하기 위한 예시적인 도면이다.FIG. 6 is an example diagram for explaining the operation of a persistent memory device according to some embodiments.

도 6을 참조하면, 버퍼 메모리(120), 제1 스토리지 장치(130c) 및 제2 스토리지 장치(140c)가 도시되어 있다. 버퍼 메모리(120)는 메인 컨트롤러(110)로부터 복수의 데이터를 수신하여 저장할 수 있다. 메인 컨트롤러(110)는 호스트 장치(10)로부터 GPF(Global persistent flush) 커맨드를 받아 버퍼 메모리(120)에 저장된 데이터의 일부를 제1 서브 컨트롤러(131c)를 통해 복수의 제1 비휘발성 메모리(132c_1 내지 132c_3)에 플러싱할 수 있다. 메인 컨트롤러(110)는 호스트 장치(10)로부터 GPF(Global persistent flush) 커맨드를 받아 버퍼 메모리(120)에 저장된 데이터의 일부를 제2 서브 컨트롤러(141c)를 통해 복수의 제2 비휘발성 메모리(142c_1 내지 142c_3)에 플러싱할 수 있다.Referring to FIG. 6, a buffer memory 120, a first storage device 130c, and a second storage device 140c are shown. The buffer memory 120 may receive a plurality of data from the main controller 110 and store them. The main controller 110 receives a global persistent flush (GPF) command from the host device 10 and transfers part of the data stored in the buffer memory 120 to a plurality of first non-volatile memories 132c_1 through the first sub-controller 131c. to 132c_3) can be flushed. The main controller 110 receives a global persistent flush (GPF) command from the host device 10 and transfers part of the data stored in the buffer memory 120 to a plurality of second non-volatile memories 142c_1 through the second sub-controller 141c. to 142c_3) can be flushed.

몇몇 실시예에 따르면, 호스트 장치(10)는 영구 메모리 장치(100)의 메인 컨트롤러(110)에 영구 메모리 장치(100)를 제3 동작 모드로 동작하라는 커맨드(CMD_MODE3)를 전송할 수 있다. 메인 컨트롤러(110)는 CMD_MODE3 커맨드를 수신하여 버퍼 메모리(120)에 저장된 복수의 데이터 중 제3 데이터(DATA_3)를 제1 서브 컨트롤러(131c)를 통해 복수의 제1 비휘발성 메모리(132c_1 내지 132c_3)에 플러싱할 수 있다. 메인 컨트롤러(110)는 CMD_MODE3 커맨드를 수신하여 버퍼 메모리(120)에 저장된 복수의 데이터 중 제3 데이터(DATA_3)와 다른 제4 데이터(DATA_4)를 제2 서브 컨트롤러(141c)를 통해 복수의 제2 비휘발성 메모리(142c_1 내지 142c_3)에 플러싱할 수 있다.According to some embodiments, the host device 10 may transmit a command (CMD_MODE3) to the main controller 110 of the persistent memory device 100 to operate the persistent memory device 100 in a third operation mode. The main controller 110 receives the CMD_MODE3 command and transfers the third data (DATA_3) among the plurality of data stored in the buffer memory 120 to the plurality of first non-volatile memories 132c_1 to 132c_3 through the first sub-controller 131c. Can be flushed. The main controller 110 receives the CMD_MODE3 command and transfers the third data (DATA_3) and the fourth data (DATA_4), which are different from the plurality of data stored in the buffer memory 120, to the plurality of second data through the second sub-controller 141c. Flushing may be performed to non-volatile memory (142c_1 to 142c_3).

몇몇 실시예에 따르면, 앞서 설명했듯, 제1 스토리지 장치(130c)가 정상적으로 동작하지 못할 수 있다. 이 경우 제2 스토리지 장치(140c)는 앞서 설명한 제1 동작 모드와 동일하게 동작할 수 있다. 이에 대해서는 앞에서 설명했으므로 자세한 설명은 생략한다.According to some embodiments, as described above, the first storage device 130c may not operate normally. In this case, the second storage device 140c may operate in the same manner as the first operation mode described above. Since this has been explained previously, detailed explanation will be omitted.

낸드 플래시 등의 비휘발성 메모리들의 경우, 일반적으로 DRAM 등의 휘발성 메모리보다 읽기/쓰기 속도가 느린 것은 잘 알려져 있다. 몇몇 실시예에 따르면, 각 스토리지 장치들이 서로 다른 데이터를 플러싱하므로, 버퍼 메모리(120)에서 스토리지 장치로 데이터를 플러싱하는 쓰기 속도 및 스토리지 장치에서 버퍼 메모리(120)로 데이터를 로드하는 읽기 속도를 이론적으로 두 배 상승시킬 수 있다. 결론적으로, 버퍼 메모리(120)와 스토리지 장치 간의 대역폭 차이로 인한 속도 저하를 방지할 수 있다.It is well known that non-volatile memories such as NAND flash generally have slower read/write speeds than volatile memories such as DRAM. According to some embodiments, since each storage device flushes different data, the write speed of flushing data from the buffer memory 120 to the storage device and the read speed of loading data from the storage device to the buffer memory 120 are theoretically can be doubled. In conclusion, it is possible to prevent speed reduction due to the difference in bandwidth between the buffer memory 120 and the storage device.

몇몇 실시예에 따르면, 메인 컨트롤러(110)는 장애가 발생한 스토리지 장치의 복수의 비휘발성 메모리들에 대한 관리를 정상적으로 작동하는 스토리지 장치에 이관함으로서, 스토리지 장치의 장애로 인한 메모리 공간의 낭비를 방지할 수 있다.According to some embodiments, the main controller 110 transfers management of a plurality of non-volatile memories of a failed storage device to a normally operating storage device, thereby preventing waste of memory space due to a storage device failure. there is.

도 7은 몇몇 실시예에 따른 영구 메모리 장치가 적용된 서버 시스템을 설명하기 위한 예시적인 도면이다.FIG. 7 is an exemplary diagram for explaining a server system to which a persistent memory device is applied according to some embodiments.

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

어플리케이션 서버(3100) 또는 데이터 저장 서버(3200)는 프로세서(3110, 3210) 및 메모리(3120, 3220) 중 적어도 하나를 포함할 수 있다. 데이터 저장 서버(3200)를 예시로 설명하면, 프로세서(3210)는 데이터 저장 서버(3200)의 전반적인 동작을 제어할 수 있고, 메모리(3220)에 액세스하여 메모리(3220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 프로세서(3210)는 예를 들어, 앞서 설명한 호스트 장치(도 1의 10)일 수 있다. 메모리(3220)는 예를 들어, 앞서 설명한 영구 메모리 장치(도 1의 100), 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)의 개수는 다양하게 선택될 수 있다. The application server 3100 or the data storage server 3200 may include at least one of processors 3110 and 3210 and memories 3120 and 3220. Taking the data storage server 3200 as an example, the processor 3210 can control the overall operation of the data storage server 3200, accesses the memory 3220, and executes instructions and/or instructions loaded into the memory 3220. Data can be run. The processor 3210 may be, for example, the host device (10 in FIG. 1) described above. The memory 3220 may include, for example, the previously described persistent memory device (100 in FIG. 1), Double Data Rate Synchronous DRAM (DDR SDRAM), High Bandwidth Memory (HBM), Hybrid Memory Cube (HMC), and Dual In-Memory (DIMM). line Memory Module), Optane DIMM, or Non-Volatile DIMM (NVMDIMM). Depending on the embodiment, the number of processors 3210 and memories 3220 included in the data storage server 3200 may be selected in various ways.

몇몇 실시예에서, 프로세서(3210)와 메모리(3220)는 프로세서-메모리 페어를 제공할 수 있다. 몇몇 실시예에서, 프로세서(3210)와 메모리(3220)의 개수는 서로 다를 수도 있다. 프로세서(3210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 데이터 저장 서버(3200)에 대한 상기 설명은, 어플리케이션 서버(3100)에도 유사하게 적용될 수 있다. 실시예에 따라, 어플리케이션 서버(3100)는 서버 데이터 저장 장치(3150)를 포함하지 않을 수도 있다. 데이터 저장 서버(3200)는 적어도 하나 이상의 서버 데이터 저장 장치(3250)를 포함할 수 있다. 데이터 저장 서버(3200)에 포함되는 서버 데이터 저장 장치(3250)의 개수는 실시예에 따라 다양하게 선택될 수 있다.In some embodiments, processor 3210 and memory 3220 may provide a processor-memory pair. In some embodiments, the number of processors 3210 and memories 3220 may be different. Processor 3210 may include a single core processor or a multi-core processor. The above description of the data storage server 3200 can be similarly applied to the application server 3100. Depending on the embodiment, the application server 3100 may not include the server data storage device 3150. The data storage server 3200 may include at least one server data storage device 3250. The number of server data storage devices 3250 included in the data storage server 3200 may be selected in various ways depending on the embodiment.

어플리케이션 서버들(3100 내지 3100n) 및 데이터 저장 서버들(3200 내지 3200m)은 네트워크(3300)를 통해 서로 통신할 수 있다. 네트워크(3300)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(3300)의 액세스 방식에 따라 데이터 저장 서버들(3200 내지 3200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.Application servers 3100 to 3100n and data storage servers 3200 to 3200m may communicate with each other through a network 3300. The network 3300 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 access method of the network 3300, the data 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 some embodiments, 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 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 other embodiments, network 3300 may be a general 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 description will focus on the application server 3100 and the data storage server 3200. The description of the application server 3100 may also be applied to other application servers 3100n, and the description of the data storage server 3200 may also be applied to other data storage servers 3200m.

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

어플리케이션 서버(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 a memory 3120n or a server data storage device 3150n included in another application server 3100n through the network 3300, or a data storage server (3150n) through the network 3300. You can access embedded memory (3220-3220m) or server data storage (3250-3250m). Accordingly, the application server 3100 can perform various operations on data stored in the application servers 3100-3100n and/or the data storage servers 3200-3200m. For example, the application server 3100 may execute a command to move or copy data between the application servers 3100-3100n and/or the data storage servers 3200-3200m. At this time, the data passes from the server data storage devices (3250-3250m) of the data storage servers (3200-3200m) through the memories (3220-3220m) of the data storage servers (3200-3200m), or directly to the application servers. (3100-3100n) can be moved to memory (3120-3120n). 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) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.Taking the data storage server 3200 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 Direct Attached Storage (DAS) method that directly connects the server data storage device 3250 with a dedicated cable. Additionally, for example, the interface 3254 may include Advanced Technology Attachment (ATA), Serial ATA (SATA), external SATA (e-SATA), Small Computer Small Interface (SCSI), Serial Attached SCSI (SAS), and Peripheral ATA (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 can be implemented in various interface methods such as Universal Flash Storage (UFS), embedded Universal Flash Storage (eUFS), and compact flash (CF) card interface.

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

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

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

서버 데이터 저장 장치(3150-3150m, 3250-3250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(3252-3252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(3252-3252m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)를 생성할 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.The server data storage devices 3150-3150m and 3250-3250m may transmit control signals and command/address signals to the NAND flash memory devices 3252-3252m in response to read commands received from the processor. Accordingly, when reading data from the NAND flash memory device (3252-3252m), the RE (Read Enable) signal is input as a data output control signal and can serve to output data to the DQ bus. DQS (Data Strobe) can be generated using the RE signal. Command and address signals can be latched in the page buffer depending on the rising edge or falling edge of the WE (Write Enable) 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 can generally control the operation of the server data 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 a write command, or may read data from the NAND flash 3252 in response to a read command. For example, the write command and/or read command may be transmitted to processor 3210 in data storage server 3200, processor 3210m in another data storage server 3200m, or processor 3110, 3110n in application server 3100, 3100n. ) can be provided from. The DRAM 3253 may temporarily store (buffer) data to be written to the NAND flash 3252 or data read from the NAND flash 3252. Additionally, the DRAM 3253 can store metadata. Here, metadata is data generated by the controller 3251 to manage user data or NAND flash 3252. The server data storage device 3250 may include a Secure Element (SE) for security or privacy.

몇몇 실시예에서, 메모리(3120 내지 3120n)는 애플리케이션 서버(3100)의 메인 메모리 또는 시스템 메모리로 사용될 수 있다. 메모리(3220 내지 3220n)는 데이터 저장 서버(3200)의 메인 메모리 또는 시스템 메모리로 사용될 수 있다. 어플리케이션 서버(3100)를 예를 들어 설명하면, 메모리(3120)는 CXL 인터페이스(도 1의 200)를 통해 프로세서(3110)와 연결될 수 있다. 메모리(3120)는 CXL 인터페이스(도 1의 200)를 통해 프로세서(3110)로부터 데이터를 수신하거나 프로세서(3110)에게 전송할 수 있다. 메모리(3120)는 CXL 인터페이스(200)를 통해 프로세서(3110)로부터 커맨드를 수신할 수 있다.In some embodiments, memories 3120 to 3120n may be used as main memory or system memory of the application server 3100. The memories 3220 to 3220n may be used as main memory or system memory of the data storage server 3200. Taking the application server 3100 as an example, the memory 3120 may be connected to the processor 3110 through a CXL interface (200 in FIG. 1). The memory 3120 may receive data from or transmit data to the processor 3110 through the CXL interface (200 in FIG. 1). The memory 3120 may receive commands from the processor 3110 through the CXL interface 200.

메모리(3120)는 NAND 플래시 메모리와 같은 비휘발성 메모리 셀을 포함할 수 있다. 프로세서(3110)는 메모리(3120)의 동작 모드를 결정할 수 있다. 예를 들어, 프로세서(3110)는 메모리(3120)가 앞서 설명한 제1 동작 모드 내지 제3 동작 모드 중 어느 하나의 모드로 작동하도록 제어할 수 있다. 메모리(3120)는 프로세서(3110)에 의한 결정된 모드에 따라 데이터를 비휘발성 메모리 셀에 플러싱(flushing)할 수 있다. Memory 3120 may include non-volatile memory cells, such as NAND flash memory. The processor 3110 may determine the operation mode of the memory 3120. For example, the processor 3110 may control the memory 3120 to operate in any one of the first to third operation modes described above. The memory 3120 may flush data into non-volatile memory cells according to a mode determined by the processor 3110.

이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.Although embodiments of the present invention have been described above with reference to the attached drawings, the present invention is not limited to the above embodiments and can be manufactured in various different forms, and can be manufactured in various different forms by those skilled in the art. It will be understood by those who understand that the present invention can be implemented in other specific forms without changing its technical spirit or essential features. Therefore, the embodiments described above should be understood in all respects as illustrative and not restrictive.

호스트 장치: 10 영구 메모리 장치: 100
CXL 인터페이스: 200 컴퓨팅 시스템: 1000
서버 시스템: 3000
Host devices: 10 Persistent memory devices: 100
CXL interface: 200 Compute system: 1000
Server systems: 3000

Claims (10)

CXL 인터페이스를 통해 데이터를 수신 및 전송하는 메인 컨트롤러;
상기 메인 컨트롤러로부터 데이터를 수신하여 저장하고, 상기 메인 컨트롤러에 데이터를 전송하는 버퍼 메모리;
복수의 제1 비휘발성 메모리 및 상기 복수의 제1 비휘발성 메모리를 제어하는 제1 서브 컨트롤러를 포함하는 제1 스토리지 장치; 및
복수의 제2 비휘발성 메모리 및 상기 복수의 제2 비휘발성 메모리를 제어하는 상기 제1 서브 컨트롤러와 서로 다른 제2 서브 컨트롤러를 포함하는 제2 스토리지 장치를 포함하되,
상기 메인 컨트롤러는,
호스트 장치로부터 상기 버퍼 메모리에 저장된 데이터를 상기 제1 스토리지 장치 및 제2 스토리지 장치에 플러싱하는 방법에 관한 정보를 수신하여, 이를 기초로 상기 제1 서브 컨트롤러 및 상기 제2 서브 컨트롤러의 동작을 제어하는 영구 메모리 장치.
A main controller that receives and transmits data through the CXL interface;
a buffer memory that receives and stores data from the main controller and transmits data to the main controller;
a first storage device including a plurality of first non-volatile memories and a first sub-controller that controls the plurality of first non-volatile memories; and
A second storage device including a plurality of second non-volatile memories and a second sub-controller that is different from the first sub-controller that controls the plurality of second non-volatile memories,
The main controller is,
Receiving information on how to flush data stored in the buffer memory to the first storage device and the second storage device from a host device, and controlling the operations of the first sub-controller and the second sub-controller based on this information Permanent memory device.
제1 항에 있어서,
상기 제1 서브 컨트롤러 및 상기 제2 서브 컨트롤러는,
각각 어드레스 매핑 테이블을 저장하는 제1 서브 메모리 및 제2 서브 메모리를 포함하고,
상기 메인 컨트롤러는,
상기 제1 서브 컨트롤러의 동작이 불가능할 경우, 상기 제2 서브 컨트롤러에게 관리 이관 커맨드를 전송하고, 상기 제1 서브 컨트롤러의 제1 서브 메모리에 저장된 마지막으로 매핑한 데이터의 물리 어드레스를 상기 제2 서브 컨트롤러에 전송하는 영구 메모리 장치.
According to claim 1,
The first sub-controller and the second sub-controller are:
Includes a first sub-memory and a second sub-memory each storing an address mapping table,
The main controller is,
If the operation of the first sub-controller is impossible, a management transfer command is transmitted to the second sub-controller, and the physical address of the last mapped data stored in the first sub-memory of the first sub-controller is transferred to the second sub-controller. Permanent memory transfer to a device.
제2 항에 있어서,
상기 메인 컨트롤러는,
상기 관리 이관 커맨드를 수신한 상기 제2 서브 컨트롤러가 상기 복수의 제1 비휘발성 메모리 및 상기 복수의 제2 비휘발성 메모리를 제어하도록 제어하는 영구 메모리 장치.
According to clause 2,
The main controller is,
A persistent memory device wherein the second sub-controller, which has received the management transfer command, controls the plurality of first non-volatile memories and the plurality of second non-volatile memories.
제1 항에 있어서,
상기 버퍼 메모리는,
메인 컨트롤러로부터 제1 데이터를 포함하는 복수의 데이터를 수신하여 저장하고,
상기 메인 컨트롤러는,
상기 복수의 제1 비휘발성 메모리에 상기 제1 데이터를 플러싱하는 영구 메모리 장치.
According to claim 1,
The buffer memory is,
Receiving and storing a plurality of data including first data from the main controller,
The main controller is,
A persistent memory device for flushing the first data to the plurality of first non-volatile memories.
제4 항에 있어서,
상기 메인 컨트롤러는,
상기 복수의 제2 비휘발성 메모리에 상기 제1 데이터를 플러싱하는 영구 메모리 장치.
According to clause 4,
The main controller is,
A persistent memory device for flushing the first data to the plurality of second non-volatile memories.
제4 항에 있어서,
상기 메인 컨트롤러는,
상기 버퍼 메모리에 저장된 복수의 데이터의 스냅샷을 생성하고,
상기 복수의 제2 비휘발성 메모리에 상기 복수의 데이터의 스냅샷을 플러싱하는 영구 메모리 장치.
According to clause 4,
The main controller is,
Create a snapshot of a plurality of data stored in the buffer memory,
A persistent memory device for flushing snapshots of the plurality of data to the plurality of second non-volatile memories.
제6 항에 있어서,
상기 메인 컨트롤러는,
호스트 장치로부터 상기 버퍼 메모리에 저장된 복수의 데이터의 스냅샷을 생성하는 주기에 대한 정보를 수신하는 영구 메모리 장치.
According to clause 6,
The main controller is,
A persistent memory device that receives information about a cycle for generating snapshots of a plurality of data stored in the buffer memory from a host device.
제1 항에 있어서,
상기 버퍼 메모리는,
메인 컨트롤러로부터 제2 데이터 및 제3 데이터를 포함하는 복수의 데이터를 수신하여 저장하고,
상기 메인 컨트롤러는,
상기 복수의 제1 비휘발성 메모리에 상기 제2 데이터를 플러싱하고,
상기 복수의 제2 비휘발성 메모리에 상기 제2 데이터와 서로 다른 상기 제3 데이터를 플러싱하는 영구 메모리 장치.
According to claim 1,
The buffer memory is,
Receiving and storing a plurality of data including second data and third data from the main controller,
The main controller is,
Flushing the second data into the plurality of first non-volatile memories,
A persistent memory device for flushing the third data that is different from the second data into the plurality of second non-volatile memories.
호스트 장치; 및
CXL 인터페이스를 통해 데이터를 수신 및 전송하고, 호스트로부터 GPF 커맨드를 수신하는 메인 컨트롤러와,
메인 컨트롤러로부터 데이터를 수신하여 저장하고, 메인 컨트롤러에 데이터를 전송하는 버퍼 메모리와,
제1 스토리지 장치와, 제2 스토리지 장치를 포함하는 영구 메모리 장치를 포함하고,
상기 호스트 장치는,
상기 영구 메모리 장치의 동작 모드를 결정하고, 상기 GPF 커맨드를 통해 상기 영구 메모리 장치의 플러싱 동작을 제어하고,
상기 메인 컨트롤러는,
상기 제1 스토리지 장치 및 상기 제2 스토리지 장치의 동작을 제어하고, 상기 호스트 장치로부터 상기 GPF 커맨드를 수신하여 상기 버퍼 메모리에 저장된 데이터의 적어도 일부를 상기 제1 스토리지 장치 및 상기 제2 스토리지 장치로 플러싱하는 컴퓨팅 시스템.
host device; and
A main controller that receives and transmits data through the CXL interface and receives GPF commands from the host,
A buffer memory that receives and stores data from the main controller and transmits data to the main controller,
a persistent memory device including a first storage device and a second storage device;
The host device is,
Determining an operation mode of the persistent memory device and controlling a flushing operation of the persistent memory device through the GPF command,
The main controller is,
Controlling operations of the first storage device and the second storage device, receiving the GPF command from the host device and flushing at least a portion of data stored in the buffer memory to the first storage device and the second storage device A computing system that does.
제9 항에 있어서,
상기 호스트 장치는,
상기 영구 메모리 장치가 상기 동작 모드 중 제2 동작 모드로 동작할 때, 상기 버퍼 메모리에 저장된 데이터의 스냅샷을 생성하는 주기를 결정하는 컴퓨팅 시스템.
According to clause 9,
The host device is,
A computing system that determines a period for generating a snapshot of data stored in the buffer memory when the persistent memory device operates in a second operation mode among the operation modes.
KR1020230169037A 2023-11-29 2023-11-29 Persistent memory and computing system KR20230169885A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230169037A KR20230169885A (en) 2023-11-29 2023-11-29 Persistent memory and computing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230169037A KR20230169885A (en) 2023-11-29 2023-11-29 Persistent memory and computing system

Publications (1)

Publication Number Publication Date
KR20230169885A true KR20230169885A (en) 2023-12-18

Family

ID=89309439

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230169037A KR20230169885A (en) 2023-11-29 2023-11-29 Persistent memory and computing system

Country Status (1)

Country Link
KR (1) KR20230169885A (en)

Similar Documents

Publication Publication Date Title
US10540303B2 (en) Module based data transfer
US11741034B2 (en) Memory device including direct memory access engine, system including the memory device, and method of operating the memory device
KR20140044070A (en) Data storage device including a buffer memory device
CN115495389B (en) Memory controller, calculation memory device, and operation method of calculation memory device
US20230409420A1 (en) Node coherency for storage related data
US20230325277A1 (en) Memory controller performing selective and parallel error correction, system including the same and operating method of memory device
US20240037027A1 (en) Method and device for storing data
US20230376216A1 (en) Memory device, storage device, and computing system including memory device and storage device
US20230153006A1 (en) Data processing method and data processing device
US20220147470A1 (en) System, device, and method for accessing memory based on multi-protocol
US11662949B2 (en) Storage server, a method of operating the same storage server and a data center including the same storage server
KR20230169885A (en) Persistent memory and computing system
KR102435910B1 (en) Storage device and operation method thereof
US20230084539A1 (en) Computational storage device and storage system including the computational storage device
US11809341B2 (en) System, device and method for indirect addressing
US20230393959A1 (en) Out-of-band management method for storage apparatus, baseboard management controller and storage apparatus
US11907587B2 (en) Managing persistent memory regions across multiple protocols
US20230350832A1 (en) Storage device, memory device, and system including storage device and memory device
EP4246330A1 (en) Storage device and operating method thereof
US11914879B2 (en) Storage controller and storage system comprising the same
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
US20240045597A1 (en) Storage device and operation method thereof
US20230153237A1 (en) Method and device for storing data
US20230376238A1 (en) Computing system for managing distributed storage devices, and method of operating the same
KR20230144434A (en) Operation method of operating host device, and operation method of storage device