KR20180044635A - 저장 시스템 및 그것의 동작 방법 - Google Patents
저장 시스템 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR20180044635A KR20180044635A KR1020160138401A KR20160138401A KR20180044635A KR 20180044635 A KR20180044635 A KR 20180044635A KR 1020160138401 A KR1020160138401 A KR 1020160138401A KR 20160138401 A KR20160138401 A KR 20160138401A KR 20180044635 A KR20180044635 A KR 20180044635A
- Authority
- KR
- South Korea
- Prior art keywords
- memory device
- volatile memory
- cache
- byte
- address space
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Abstract
저장 시스템은 저장 장치 및 호스트를 포함한다. 저장 장치는 제1 사이즈를 갖는 비휘발성 메모리 장치 및 제1 사이즈보다 작은 제2 사이즈를 갖고 비휘발성 메모리 장치에 대한 캐시 메모리로 동작하는 제1 휘발성 메모리 장치를 포함하고, 제2 사이즈와 동일한 사이즈를 갖는 바이트 접근 주소 공간(byte access address space)을 사용하여 제1 휘발성 메모리 장치에 저장된 캐시 데이터에 대해 바이트 단위의 접근을 허용하는 바이트 접근 인터페이스(byte accessible interface)를 제공한다. 호스트는 제1 휘발성 메모리 장치에 저장된 캐시 데이터의 정보에 상응하는 캐시 테이블을 생성하고, 캐시 테이블에 기초하여 바이트 접근 주소 공간을 통해 제1 휘발성 메모리 장치에 저장된 캐시 데이터를 바이트 단위로 독출한다.
Description
본 발명은 저장 시스템에 관한 것으로, 보다 상세하게는 호스트 및 저장 장치를 포함하는 저장 시스템에서 상기 저장 장치의 캐시 구현 방법에 관한 것이다.
일반적으로 저장 장치는 비휘발성 메모리 장치를 저장 매체로 사용하므로, 저장 장치로부터 데이터를 독출하는 데에는 많은 시간이 소요된다.
이러한 문제를 해결하기 위해, 일반적으로 저장 장치는 하드웨어 캐시(hardware cache)를 포함하여 구성된다. 이 경우, 저장 장치는 비휘발성 메모리 장치에 저장된 데이터 중에서 접근 빈도가 높은 데이터를 캐시 메모리에 저장함으로써 호스트가 저장 장치에 저장된 데이터를 독출하는 데에 소요되는 시간을 감소시킬 수 있다.
그런데 저장 장치에 포함되는 비휘발성 메모리 장치의 용량이 증가함에 따라, 저장 장치에 포함되는 하드웨어 캐시를 구현하는 데에 필요한 비용 역시 증가한다는 문제점이 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 호스트(host) 레벨 캐시(cache)를 포함하는 저장 시스템을 제공하는 것이다.
본 발명의 다른 목적은 호스트 레벨 캐시를 포함하는 저장 시스템의 동작 방법을 제공하는 것이다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 저장 시스템은 저장 장치 및 호스트를 포함한다. 상기 저장 장치는 제1 사이즈를 갖는 비휘발성 메모리 장치 및 상기 제1 사이즈보다 작은 제2 사이즈를 갖고 상기 비휘발성 메모리 장치에 대한 캐시 메모리로 동작하는 제1 휘발성 메모리 장치를 포함하고, 상기 제2 사이즈와 동일한 사이즈를 갖는 바이트 접근 주소 공간(byte access address space)을 사용하여 상기 제1 휘발성 메모리 장치에 저장된 캐시 데이터에 대해 바이트 단위의 접근을 허용하는 바이트 접근 인터페이스(byte accessible interface)를 제공한다. 상기 호스트는 상기 제1 휘발성 메모리 장치에 저장된 상기 캐시 데이터의 정보에 상응하는 캐시 테이블을 생성하고, 상기 캐시 테이블에 기초하여 상기 바이트 접근 주소 공간을 통해 상기 제1 휘발성 메모리 장치에 저장된 상기 캐시 데이터를 바이트 단위로 독출한다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 제1 사이즈를 갖는 비휘발성 메모리 장치 및 상기 제1 사이즈보다 작은 제2 사이즈를 갖고 상기 비휘발성 메모리 장치에 대한 캐시 메모리로 동작하는 제1 휘발성 메모리 장치를 포함하는 저장 장치 및 호스트를 포함하는 저장 시스템의 동작 방법에 있어서, 상기 저장 장치가 상기 제2 사이즈와 동일한 사이즈를 갖는 바이트 접근 주소 공간(byte access address space)을 사용하여 상기 제1 휘발성 메모리 장치에 저장된 캐시 데이터에 대해 바이트 단위의 접근을 허용하는 바이트 접근 인터페이스(byte accessible interface)를 상기 호스트에게 제공하고, 상기 호스트가 상기 제1 휘발성 메모리 장치에 저장된 상기 캐시 데이터의 정보에 상응하는 캐시 테이블에 기초하여 상기 바이트 접근 주소 공간을 통해 상기 제1 휘발성 메모리 장치에 저장된 상기 캐시 데이터를 바이트 단위로 독출한다.
본 발명의 실시예들에 따른 저장 시스템은 저장 장치 내부에 하드웨어 캐시를 포함하고 있지 않음에도 불구하고, 호스트는 내부적으로 저장하는 캐시 테이블을 사용하여 제1 휘발성 메모리 장치를 통해 비휘발성 메모리 장치에 저장된 데이터를 바이트 단위로 독출할 수 있다.
도 1은 본 발명의 일 실시예에 따른 저장 시스템을 나타내는 블록도이다.
도 2는 도 1의 저장 시스템에 포함되는 호스트의 일 예를 나타내는 블록도이다.
도 3은 도 2의 호스트에 포함되는 제1 휘발성 메모리 장치에 저장되는 캐시 테이블의 일 예를 나타내는 도면이다.
도 4는 도 1에 도시된 저장 시스템의 데이터 독출 과정을 설명하기 위한 순서도이다.
도 5는 도 1의 저장 시스템에 포함되는 저장 장치의 일 예를 나타내는 블록도이다.
도 6은 도 1에 도시된 저장 시스템의 동작의 일 예를 설명하기 위한 도면이다.
도 7은 도 1에 도시된 저장 시스템의 동작의 다른 예를 설명하기 위한 도면이다.
도 8은 도 1에 도시된 저장 시스템의 일 예를 나타내는 블록도이다.
도 9는 도 1에 도시된 저장 시스템의 동작의 또 다른 예를 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시예에 따른 저장 시스템의 동작 방법을 나타내는 순서도이다.
도 11은 도 10에 도시된 호스트가 캐시 테이블에 기초하여 바이트 접근 주소 공간을 통해 제1 휘발성 메모리 장치에 저장된 캐시 데이터를 바이트 단위로 독출하는 단계의 일 예를 나타내는 순서도이다.
도 2는 도 1의 저장 시스템에 포함되는 호스트의 일 예를 나타내는 블록도이다.
도 3은 도 2의 호스트에 포함되는 제1 휘발성 메모리 장치에 저장되는 캐시 테이블의 일 예를 나타내는 도면이다.
도 4는 도 1에 도시된 저장 시스템의 데이터 독출 과정을 설명하기 위한 순서도이다.
도 5는 도 1의 저장 시스템에 포함되는 저장 장치의 일 예를 나타내는 블록도이다.
도 6은 도 1에 도시된 저장 시스템의 동작의 일 예를 설명하기 위한 도면이다.
도 7은 도 1에 도시된 저장 시스템의 동작의 다른 예를 설명하기 위한 도면이다.
도 8은 도 1에 도시된 저장 시스템의 일 예를 나타내는 블록도이다.
도 9는 도 1에 도시된 저장 시스템의 동작의 또 다른 예를 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시예에 따른 저장 시스템의 동작 방법을 나타내는 순서도이다.
도 11은 도 10에 도시된 호스트가 캐시 테이블에 기초하여 바이트 접근 주소 공간을 통해 제1 휘발성 메모리 장치에 저장된 캐시 데이터를 바이트 단위로 독출하는 단계의 일 예를 나타내는 순서도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 저장 시스템을 나타내는 블록도이다.
도 1을 참조하면, 저장 시스템(10)은 호스트(100) 및 저장 장치(200)를 포함한다.
저장 장치(200)는 비휘발성 메모리 장치(NVM)(210) 및 제1 휘발성 메모리 장치(VM1)(220)를 포함한다.
일 실시예에 있어서, 저장 장치(200)는 솔리드 스테이트 드라이브(Solid State Drive; SSD) 장치에 상응할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 실시예에 따라서 저장 장치(200)는 임의의 종류의 저장 장치일 수 있다.
비휘발성 메모리 장치(210)의 저장 용량(storage capacity)은 제1 사이즈에 상응할 수 있다.
일 실시예에 있어서, 비휘발성 메모리 장치(210)는 플래시 메모리 장치일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 실시예에 따라서 비휘발성 메모리 장치(210)는 PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 이와 유사한 메모리로 구현될 수도 있다.
제1 휘발성 메모리 장치(220)의 저장 용량은 상기 제1 사이즈보다 작은 제2 사이즈에 상응할 수 있다. 또한, 제1 휘발성 메모리 장치(220)는 비휘발성 메모리 장치(210)에 대한 캐시(cache) 메모리로 동작할 수 있다.
일 실시예에 있어서, 제1 휘발성 메모리 장치(220)는 DRAM(Dynamic Random Access Memory) 장치에 상응할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 실시예에 따라서 제1 휘발성 메모리 장치(220)는 SRAM(Static Random Access Memory) 장치 등과 같은 임의의 종류의 휘발성 메모리 장치를 포함할 수 있다.
일 실시예에 있어서, 저장 장치(200)에 포함되는 제1 휘발성 메모리 장치(220)는 PCIe(Peripheral Component Interconnect Express) 버스(300)를 통해 호스트(100)와 연결될 수 있다.
또한, 저장 장치(200)는 제1 휘발성 메모리 장치(220)의 저장 용량인 상기 제2 사이즈와 동일한 사이즈를 갖는 바이트 접근 주소 공간(byte access address space)(310)을 사용하여 제1 휘발성 메모리 장치(220)에 저장된 캐시 데이터에 대해 바이트 단위의 접근을 허용하는 바이트 접근 인터페이스(byte accessible interface)를 호스트(100)에 제공할 수 있다. 즉, 바이트 접근 주소 공간(310)은 제1 휘발성 메모리 장치(220)의 저장 용량인 상기 제2 사이즈와 동일한 사이즈를 가질 수 있다.
호스트(100)는 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터의 정보에 상응하는 캐시 테이블(101)을 생성할 수 있다. 호스트(100)는 캐시 테이블(101)에 기초하여 PCIe 버스(300)의 바이트 접근 주소 공간(310)을 사용하여 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터를 바이트 단위로 독출할 수 있다.
도 1을 참조하여 상술한 바와 같이, 저장 장치(200)에 포함되는 제1 휘발성 메모리 장치(220)는 비휘발성 메모리 장치(210)에 대한 캐시 메모리로 동작하고, 호스트(100)는 내부적으로 생성되는 캐시 테이블(101)에 기초하여 PCIe 버스(300)의 바이트 접근 주소 공간(310)을 사용하여 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터를 바이트 단위로 독출할 수 있다.
즉, 본 발명에 따른 저장 시스템(10)에서, 저장 장치(200)는 내부적으로 하드웨어 캐시를 포함하고 있지 않음에도 불구하고, 호스트(100)가 저장 장치(200)에 포함되는 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터의 정보에 상응하는 캐시 테이블(101)을 생성하고, 캐시 테이블(101)에 기초하여 PCIe 버스(300)의 바이트 접근 주소 공간(310)을 사용하여 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터를 바이트 단위로 독출할 수 있다.
따라서 본 발명에 따른 저장 시스템(10)에서, 저장 장치(200)는 내부적으로 하드웨어 캐시를 포함하고 있지 않음에도 불구하고, 호스트(100)는 내부적으로 저장하는 캐시 테이블(101)을 사용하여 제1 휘발성 메모리 장치(220)를 통해 비휘발성 메모리 장치(210)에 저장된 데이터를 바이트 단위로 독출할 수 있다.
도 2는 도 1의 저장 시스템에 포함되는 호스트의 일 예를 나타내는 블록도이다.
도 2를 참조하면, 호스트(100)는 중앙 처리 장치(Central Processing Unit; CPU)(110), 제2 휘발성 메모리 장치(VM2)(120), 및 캐시 컨트롤러(130)를 포함할 수 있다.
중앙 처리 장치(110)는 저장 시스템(10)의 전반적인 동작을 제어한다. 예를 들어, 중앙 처리 장치(110)는 인터넷 브라우저, 게임, 동영상 등을 제공하는 어플리케이션들을 실행할 수 있다.
실시예에 따라, 중앙 처리 장치(110)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 예를 들어, 중앙 처리 장치(110)는 듀얼 코어(Dual-Core), 쿼드 코어(Quad-Core), 헥사 코어(Hexa-Core) 등의 멀티 코어(Multi-Core)를 포함할 수 있다. 또한, 실시예에 따라, 중앙 처리 장치(110)는 내부 또는 외부에 위치한 캐시 메모리(Cache Memory)를 더 포함할 수 있다.
중앙 처리 장치(110)는 상기 어플리케이션들을 실행하는 과정에서, 저장 장치(200)에 포함되는 비휘발성 메모리 장치(210)의 저장 용량인 상기 제1 사이즈와 동일한 사이즈를 갖는 가상 주소 공간(140)을 사용하여 비휘발성 메모리 장치(210)에 저장된 데이터를 바이트 단위로 독출하기 위한 독출 명령(READ_C)을 생성할 수 있다.
캐시 컨트롤러(130)는 중앙 처리 장치(110)에 가상 주소 공간(140)을 제공할 수 있다.
또한, 캐시 컨트롤러(130)는 PCIe 버스(300)의 바이트 접근 주소 공간(310)을 사용하여 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터를 바이트 단위로 독출할 수 있다.
캐시 컨트롤러(130)는 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터에 상응하는 바이트 접근 주소 공간(310)에서의 제1 주소와 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터에 상응하는 가상 주소 공간(140)에서의 제2 주소를 서로 연관시켜 저장하는 캐시 테이블(101)을 생성할 수 있다. 캐시 컨트롤러(130)는 캐시 테이블(101)을 제2 휘발성 메모리 장치(120)에 저장할 수 있다.
일 실시예에 있어서, 제2 휘발성 메모리 장치(120)는 DRAM(Dynamic Random Access Memory) 장치에 상응할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 실시예에 따라서 제2 휘발성 메모리 장치(120)는 SRAM(Static Random Access Memory) 장치 등과 같은 임의의 종류의 휘발성 메모리 장치를 포함할 수 있다.
도 3은 도 2의 호스트에 포함되는 제1 휘발성 메모리 장치에 저장되는 캐시 테이블의 일 예를 나타내는 도면이다.
도 3을 참조하면, 캐시 테이블(101)은 가상 주소 컬럼(V_ADDR_C) 및 물리 주소 컬럼(P_ADDR_C)을 포함할 수 있다.
캐시 테이블(101)은 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터에 상응하는 가상 주소 공간(140)에서의 가상 주소와 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터에 상응하는 바이트 접근 주소 공간(310)에서의 물리 주소를 서로 연관시켜 저장할 수 있다.
예를 들어, 도 3에 도시된 바와 같이, 제1 휘발성 메모리 장치(220)에 저장된 제1 캐시 데이터에 상응하는 가상 주소 공간(140)에서의 가상 주소는 ADDR_a이고, 상기 제1 캐시 데이터에 상응하는 바이트 접근 주소 공간(310)에서의 물리 주소는 ADDR_A일 수 있다.
마찬가지로, 제1 휘발성 메모리 장치(220)에 저장된 제2 캐시 데이터에 상응하는 가상 주소 공간(140)에서의 가상 주소는 ADDR_b이고, 상기 제2 캐시 데이터에 상응하는 바이트 접근 주소 공간(310)에서의 물리 주소는 ADDR_B일 수 있다.
다시 도 2를 참조하면, 캐시 컨트롤러(130)가 중앙 처리 장치(110)로부터 독출 명령(READ_C)을 수신하는 경우, 캐시 컨트롤러(130)는 제2 휘발성 메모리 장치(120)에 저장된 캐시 테이블(101)을 사용하여 독출 명령(READ_C)에 포함되는 가상 주소 공간(140)에서의 가상 주소를 바이트 접근 주소 공간(310)에서의 물리 주소로 변환하고, 상기 물리 주소를 사용하여 제1 휘발성 메모리 장치(220)로부터 비휘발성 메모리 장치(210)에 저장된 상기 가상 주소에 상응하는 데이터의 복사본을 바이트 단위로 독출할 수 있다.
중앙 처리 장치(110)로부터 수신되는 독출 명령(READ_C)에 포함되는 상기 가상 주소가 캐시 테이블(101)에 존재하는 경우, 캐시 컨트롤러(130)는 캐시 테이블(101)로부터 독출 명령(READ_C)에 포함되는 상기 가상 주소에 상응하는 상기 물리 주소를 독출하고, 제1 휘발성 메모리 장치(220)의 상기 물리 주소에 상응하는 영역에 대해 바이트 단위로 독출 동작을 수행할 수 있다. 따라서 제1 휘발성 메모리 장치(220)로부터 바이트 단위로 독출된 데이터는 비휘발성 메모리 장치(210)에 저장된 상기 가상 주소에 상응하는 데이터의 복사본에 상응할 수 있다.
중앙 처리 장치(110)로부터 수신되는 독출 명령(READ_C)에 포함되는 상기 가상 주소가 캐시 테이블(101)에 존재하지 않는 경우, 캐시 컨트롤러(130)는 비휘발성 메모리 장치(210)에 저장된 상기 가상 주소에 상응하는 데이터를 제1 휘발성 메모리 장치(220)로 로드할 것을 요구하는 로드 요청 신호를 저장 장치(200)에게 제공할 수 있다.
이 경우, 저장 장치(200)는 상기 로드 요청 신호에 응답하여 비휘발성 메모리 장치(210)에 저장된 상기 가상 주소에 상응하는 데이터를 제1 휘발성 메모리 장치(220)에 상기 캐시 데이터로서 로드할 수 있다.
캐시 컨트롤러(130)는 제1 휘발성 메모리 장치(220)에서 비휘발성 메모리 장치(210)로부터 상기 캐시 데이터가 로드된 영역의 물리 주소를 상기 가상 주소와 연관시켜 캐시 테이블(101)에 저장하고, 제1 휘발성 메모리 장치(220)의 상기 물리 주소에 상응하는 영역에 대해 바이트 단위로 독출 동작을 수행할 수 있다. 따라서 제1 휘발성 메모리 장치(220)로부터 바이트 단위로 독출된 데이터는 비휘발성 메모리 장치(210)에 저장된 상기 가상 주소에 상응하는 데이터의 복사본에 상응할 수 있다.
이후, 캐시 컨트롤러(130)는 제1 휘발성 메모리 장치(220)로부터 바이트 단위로 독출된 비휘발성 메모리 장치(210)에 저장된 상기 가상 주소에 상응하는 데이터의 복사본을 중앙 처리 장치(110)에 제공할 수 있다.
도 4는 도 1에 도시된 저장 시스템의 데이터 독출 과정을 설명하기 위한 순서도이다.
도 1 내지 4를 참조하면, 중앙 처리 장치(110)는 가상 주소 공간(140)을 사용하여 비휘발성 메모리 장치(210)에 저장된 데이터를 바이트 단위로 독출하기 위한 독출 명령(READ_C)을 생성할 수 있다(단계 S110).
이 경우, 캐시 컨트롤러(130)는 독출 명령(READ_C)에 포함되는 가상 주소 공간(140)에서의 가상 주소가 제2 휘발성 메모리 장치(120)에 저장된 캐시 테이블(101)에 존재하는지 여부를 판단할 수 있다(단계 S120).
중앙 처리 장치(110)로부터 수신되는 독출 명령(READ_C)에 포함되는 상기 가상 주소가 캐시 테이블(101)에 존재하는 경우(단계 S120; 예), 캐시 컨트롤러(130)는 캐시 테이블(101)로부터 독출 명령(READ_C)에 포함되는 상기 가상 주소에 상응하는 상기 물리 주소를 독출하고(단계 S130), 제1 휘발성 메모리 장치(220)의 상기 물리 주소에 상응하는 영역에 대해 바이트 단위로 독출 동작을 수행할 수 있다(단계 S140).
한편, 중앙 처리 장치(110)로부터 수신되는 독출 명령(READ_C)에 포함되는 상기 가상 주소가 캐시 테이블(101)에 존재하지 않는 경우(단계 S120; 아니오), 캐시 컨트롤러(130)는 비휘발성 메모리 장치(210)에 저장된 상기 가상 주소에 상응하는 데이터를 제1 휘발성 메모리 장치(220)로 로드할 것을 요구하는 로드 요청 신호를 저장 장치(200)에 제공할 수 있다(단계 S150).
이 경우, 저장 장치(200)는 상기 로드 요청 신호에 응답하여 비휘발성 메모리 장치(210)에 저장된 상기 가상 주소에 상응하는 데이터를 제1 휘발성 메모리 장치(220)에 상기 캐시 데이터로서 로드할 수 있다(단계 S160).
이후, 캐시 컨트롤러(130)는 제1 휘발성 메모리 장치(220)에서 비휘발성 메모리 장치(210)로부터 상기 캐시 데이터가 로드된 영역의 물리 주소를 상기 가상 주소와 연관시켜 캐시 테이블(101)에 저장하고(단계 S170), 제1 휘발성 메모리 장치(220)의 상기 물리 주소에 상응하는 영역에 대해 바이트 단위로 독출 동작을 수행할 수 있다(단계 S180).
도 5는 도 1의 저장 시스템에 포함되는 저장 장치의 일 예를 나타내는 블록도이다.
도 5를 참조하면, 저장 장치(200)는 비휘발성 메모리 장치(210), 제2 휘발성 메모리 장치(220), 및 저장 컨트롤러(230)를 포함할 수 있다.
저장 컨트롤러(230)는 호스트(100)에 포함되는 캐시 컨트롤러(130)로부터 커맨드 신호(CMD)를 수신할 수 있다. 저장 컨트롤러(230)는 커맨드 신호(CMD)에 기초하여 비휘발성 메모리 장치(210)에 저장된 데이터를 제1 휘발성 메모리 장치(220)에 상기 캐시 데이터로서 로드하는 로드 동작, 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터를 비휘발성 메모리 장치(210)에 저장하는 클린 동작, 및 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터를 삭제하는 무효화(invalidate) 동작 중의 적어도 하나를 수행할 수 있다.
도 6은 도 1에 도시된 저장 시스템의 동작의 일 예를 설명하기 위한 도면이다.
일 실시예에 있어서, 도 6에 도시된 바와 같이, 캐시 컨트롤러(130)는 바이트 접근 주소 공간(310)을 통해 제1 휘발성 메모리 장치(220)의 미리 정해진 영역에 커맨드 신호(CMD)를 저장할 수 있다.
이 경우, 저장 컨트롤러(230)는 제1 휘발성 메모리 장치(220)의 상기 미리 정해진 영역에 저장된 커맨드 신호(CMD)에 기초하여 상기 로드 동작, 상기 클린 동작, 및 상기 무효화 동작 중의 적어도 하나를 수행할 수 있다.
도 7은 도 1에 도시된 저장 시스템의 동작의 다른 예를 설명하기 위한 도면이다.
일 실시예에 있어서, 도 7에 도시된 바와 같이, 캐시 컨트롤러(130)는 제2 휘발성 메모리 장치(120)에 저장된 캐시 테이블(101)을 바이트 접근 주소 공간(310)을 통해 제1 휘발성 메모리 장치(220)의 미리 정해진 영역에 복사할 수 있다.
이 경우, 저장 컨트롤러(230)는 저장 시스템(10)의 파워-오프 시에 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터 및 제1 휘발성 메모리 장치(220)의 상기 미리 정해진 영역에 저장된 캐시 테이블(101)을 비휘발성 메모리 장치(210)에 백업할 수 있다.
따라서 저장 시스템(10)이 파워-오프되는 경우에도 비휘발성 메모리 장치(210)에 대한 캐시 메모리로 동작하는 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터 및 캐시 테이블(101)은 비휘발성 메모리 장치(210)에 안전하게 백업될 수 있다.
한편, 저장 컨트롤러(230)는 저장 장치(200)의 파워-온 시에 비휘발성 메모리 장치(210)에 백업된 상기 캐시 데이터를 제1 휘발성 메모리 장치(220)로 복원할 수 있다. 또한, 저장 컨트롤러(230)는 저장 장치(200)의 파워-온 시에 비휘발성 메모리 장치(210)에 백업된 캐시 테이블(101)을 제1 휘발성 메모리 장치(220)의 상기 미리 정해진 영역으로 복원하고, 캐시 컨트롤러(130)는 바이트 접근 주소 공간(310)을 통해 제1 휘발성 메모리 장치(220)의 상기 미리 정해진 영역에 복원된 캐시 테이블(101)을 제2 휘발성 메모리 장치(120)에 복사할 수 있다.
따라서 저장 시스템(10)이 파워-온 되는 경우, 파워-오프 되기 이전에 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터 및 제2 휘발성 메모리 장치(120)에 저장된 캐시 테이블(101)이 비휘발성 메모리 장치(210)에서 제1 휘발성 메모리 장치(220) 및 제2 휘발성 메모리 장치(120)로 각각 안전하게 복원될 수 있다.
따라서 중앙 처리 장치(110)는 제1 휘발성 메모리 장치(220) 및 제2 휘발성 메모리 장치(120)에 각각 복원된 상기 캐시 데이터 및 캐시 테이블(101)을 사용하여 비휘발성 메모리 장치(210)에 저장된 데이터를 빠르게 바이트 단위로 독출할 수 있다.
도 8은 도 1에 도시된 저장 시스템의 일 예를 나타내는 블록도이다.
일 실시예에 있어서, 저장 장치(200)에 포함되는 비휘발성 메모리 장치(210)는 SATA(Serial Advanced Technology Attachment) 버스(400)를 통해 호스트(100)에 포함되는 중앙 처리 장치(110)와 연결될 수 있다.
다른 실시예에 있어서, 저장 장치(200)에 포함되는 비휘발성 메모리 장치(210)는 NVMe(Non-Volatile Memory Express) 버스(400)를 통해 호스트(100)에 포함되는 중앙 처리 장치(110)와 연결될 수 있다.
또 다른 실시예에 있어서, 저장 장치(200)에 포함되는 비휘발성 메모리 장치(210)는 SAS(Serial Attached SCSI) 버스(400)를 통해 호스트(100)에 포함되는 중앙 처리 장치(110)와 연결될 수 있다.
또한, 저장 장치(200)는 비휘발성 메모리 장치(210)의 상기 제1 사이즈에 상응하는 블록 접근 주소 공간(block accessible address space)(410)을 사용하여 비휘발성 메모리 장치(210)에 저장된 데이터에 대해 블록 단위의 접근을 허용하는 블록 접근 인터페이스(block accessible interface)를 호스트(100)에 제공할 수 있다.
따라서 중앙 처리 장치(110)는 블록 접근 주소 공간(410)을 사용하여 SATA 버스(400), NVMe 버스(400) 또는 SAS 버스(400)를 통해 비휘발성 메모리 장치(210)에 저장된 데이터를 블록 단위로 접근할 수 있다.
도 9는 도 1에 도시된 저장 시스템의 동작의 또 다른 예를 설명하기 위한 도면이다.
일 실시예에 있어서, 도 9에 도시된 바와 같이, 캐시 컨트롤러(130)는 블록 접근 주소 공간(410)을 통해 커맨드 신호(CMD)를 저장 컨트롤러(230)에 제공할 수 있다.
이 경우, 저장 컨트롤러(230)는 캐시 컨트롤러(130)로부터 상기 블록 접근 인터페이스를 통해 수신되는 커맨드 신호(CMD)에 기초하여 상기 클린 동작, 상기 로드 동작, 및 상기 무효화 동작 중의 적어도 하나를 수행할 수 있다.
도 1 내지 9를 참조하여 상술한 바와 같이, 본 발명의 실시예들에 따른 저장 시스템(10)에서, 저장 장치(200)에 포함되는 제1 휘발성 메모리 장치(220)는 비휘발성 메모리 장치(210)에 대한 캐시 메모리로 동작하고, 호스트(100)는 내부적으로 생성되는 캐시 테이블(101)에 기초하여 PCIe 버스(300)의 바이트 접근 주소 공간(310)을 사용하여 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터를 바이트 단위로 독출할 수 있다.
즉, 본 발명에 따른 저장 시스템(10)에서, 저장 장치(200)는 내부적으로 하드웨어 캐시를 포함하고 있지 않음에도 불구하고, 호스트(100)가 저장 장치(200)에 포함되는 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터의 정보에 상응하는 캐시 테이블(101)을 생성하고, 캐시 테이블(101)에 기초하여 PCIe 버스(300)의 바이트 접근 주소 공간(310)을 사용하여 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터를 바이트 단위로 독출할 수 있다.
이와 같이, 본 발명에 따른 저장 시스템(10)에서, 저장 장치(200)는 내부적으로 하드웨어 캐시를 포함하고 있지 않음에도 불구하고, 호스트(100)에서 호스트 레벨 캐시를 구현함으로써, 호스트(100)는 저장 장치(200)에 포함되는 비휘발성 메모리 장치(210)에 저장된 데이터를 바이트 단위로 독출할 수 있다.
따라서 본 발명에 따른 저장 시스템(10)은 호스트(100)가 저장 장치(200)에 저장된 데이터를 바이트 단위로 독출할 수 있는 캐시 시스템을 적은 비용으로 구현할 수 있다.
도 10은 본 발명의 일 실시예에 따른 저장 시스템의 동작 방법을 나타내는 순서도이다.
도 10에 도시된 저장 시스템의 동작 방법은 도 1에 도시된 저장 시스템(10)을 통해 수행될 수 있다.
이하, 도 1 내지 10을 참조하여, 저장 시스템(10)의 동작 방법에 대해 설명한다.
저장 장치(200)는 제1 휘발성 메모리 장치(220)의 상기 제2 사이즈와 동일한 사이즈를 갖는 바이트 접근 주소 공간(310)을 사용하여 제1 휘발성 메모리 장치(220)에 저장된 캐시 데이터에 대해 바이트 단위의 접근을 허용하는 바이트 접근 인터페이스(byte accessible interface)를 호스트(100)에 제공할 수 있다(단계 S210).
호스트(100)는 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터의 정보에 상응하는 캐시 테이블(101)에 기초하여 바이트 접근 주소 공간(310)을 통해 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터를 바이트 단위로 독출할 수 있다(단계 S220).
도 11은 도 10에 도시된 호스트가 캐시 테이블에 기초하여 바이트 접근 주소 공간을 통해 제1 휘발성 메모리 장치에 저장된 캐시 데이터를 바이트 단위로 독출하는 단계의 일 예를 나타내는 순서도이다.
도 11을 참조하면, 캐시 컨트롤러(130)는 제1 휘발성 메모리 장치(220)에 저장된 상기 캐시 데이터에 상응하는 바이트 접근 주소 공간(310)에서의 물리 주소와 상기 캐시 데이터에 상응하는 가상 주소 공간(140)에서의 가상 주소를 서로 연관시켜 저장하는 캐시 테이블(101)을 생성할 수 있다(단계 S221).
중앙 처리 장치(110)는 상기 제1 사이즈에 상응하는 가상 주소 공간(140)을 사용하여 비휘발성 메모리 장치(210)에 저장된 데이터를 바이트 단위로 독출하기 위한 독출 명령(READ_C)을 생성할 수 있다(단계 S223).
캐시 컨트롤러(130)는 캐시 테이블(101)을 사용하여 독출 명령(READ_C)에 포함되는 가상 주소 공간(140)에서의 가상 주소를 바이트 접근 주소 공간(310)에서의 물리 주소로 변환할 수 있다(단계 S225).
이후, 캐시 컨트롤러(130)는 상기 물리 주소를 사용하여 제1 휘발성 메모리 장치(220)로부터 비휘발성 메모리 장치(210)에 저장된 상기 가상 주소에 상응하는 데이터의 복사본을 바이트 단위로 독출할 수 있다(단계 S227).
따라서 본 발명의 실시예들에 따른 저장 시스템(10)의 동작 방법에 따르면, 저장 장치(200)는 내부적으로 하드웨어 캐시를 포함하고 있지 않음에도 불구하고, 호스트(100)에서 호스트 레벨 캐시를 구현함으로써, 호스트(100)는 저장 장치(200)에 포함되는 비휘발성 메모리 장치(210)에 저장된 데이터를 바이트 단위로 독출할 수 있다.
도 1에 도시된 저장 시스템(10)의 구성 및 동작에 대해서는 도 1 내지 9를 참조하여 상세히 설명하였으므로, 도 10 및 11에 도시된 저장 시스템(10)의 동작 방법에 포함되는 각 단계들에 대한 상세한 설명은 생략한다.
본 발명은 저장 장치를 구비하는 임의의 저장 시스템에 유용하게 이용될 수 있다. 예를 들어, 본 발명은 저장 장치를 구비하는 랩탑 컴퓨터, 서버 컴퓨터 등에 적용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
Claims (10)
- 제1 사이즈를 갖는 비휘발성 메모리 장치 및 상기 제1 사이즈보다 작은 제2 사이즈를 갖고 상기 비휘발성 메모리 장치에 대한 캐시 메모리로 동작하는 제1 휘발성 메모리 장치를 포함하고, 상기 제2 사이즈와 동일한 사이즈를 갖는 바이트 접근 주소 공간(byte access address space)을 사용하여 상기 제1 휘발성 메모리 장치에 저장된 캐시 데이터에 대해 바이트 단위의 접근을 허용하는 바이트 접근 인터페이스(byte accessible interface)를 제공하는 저장 장치; 및
상기 제1 휘발성 메모리 장치에 저장된 상기 캐시 데이터의 정보에 상응하는 캐시 테이블을 생성하고, 상기 캐시 테이블에 기초하여 상기 바이트 접근 주소 공간을 통해 상기 제1 휘발성 메모리 장치에 저장된 데이터를 바이트 단위로 독출하는 호스트를 포함하는 저장 시스템. - 제1 항에 있어서, 상기 호스트는,
상기 제1 사이즈와 동일한 사이즈를 갖는 가상 주소 공간을 사용하여 상기 비휘발성 메모리 장치에 저장된 상기 데이터를 바이트 단위로 독출하기 위한 독출 명령을 생성하는 중앙 처리 장치;
상기 제1 휘발성 메모리 장치에 저장된 상기 캐시 데이터에 상응하는 상기 바이트 접근 주소 공간에서의 제1 주소와 상기 캐시 데이터에 상응하는 상기 가상 주소 공간에서의 제2 주소를 서로 연관시켜 저장하는 상기 캐시 테이블을 저장하는 제2 휘발성 메모리 장치; 및
상기 중앙 처리 장치에 상기 가상 주소 공간을 제공하고, 상기 캐시 테이블을 사용하여 상기 중앙 처리 장치로부터 수신되는 상기 독출 명령에 포함되는 상기 가상 주소 공간에서의 가상 주소를 상기 바이트 접근 주소 공간에서의 물리 주소로 변환하고, 상기 물리 주소를 사용하여 상기 제1 휘발성 메모리 장치로부터 상기 비휘발성 메모리 장치에 저장된 상기 가상 주소에 상응하는 데이터의 복사본을 바이트 단위로 독출하는 캐시 컨트롤러를 포함하는 저장 시스템. - 제2 항에 있어서, 상기 중앙 처리 장치로부터 수신되는 상기 독출 명령에 포함되는 상기 가상 주소가 상기 캐시 테이블에 존재하는 경우, 상기 캐시 컨트롤러는 상기 캐시 테이블로부터 상기 가상 주소에 상응하는 상기 물리 주소를 독출하고, 상기 제1 휘발성 메모리 장치의 상기 물리 주소에 상응하는 영역에 대해 바이트 단위로 독출 동작을 수행하는 저장 시스템.
- 제2 항에 있어서, 상기 중앙 처리 장치로부터 수신되는 상기 독출 명령에 포함되는 상기 가상 주소가 상기 캐시 테이블에 존재하지 않는 경우, 상기 캐시 컨트롤러는 상기 비휘발성 메모리 장치에 저장된 상기 가상 주소에 상응하는 데이터를 상기 제1 휘발성 메모리 장치로 로드할 것을 요구하는 로드 요청 신호를 상기 저장 장치에게 제공하고,
상기 저장 장치는 상기 로드 요청 신호에 응답하여 상기 비휘발성 메모리 장치에 저장된 상기 가상 주소에 상응하는 데이터를 상기 제1 휘발성 메모리 장치에 상기 캐시 데이터로서 로드하고,
상기 캐시 컨트롤러는 상기 제1 휘발성 메모리 장치에서 상기 비휘발성 메모리 장치로부터 상기 캐시 데이터가 로드된 영역의 물리 주소를 상기 가상 주소와 연관시켜 상기 캐시 테이블에 저장하고, 상기 제1 휘발성 메모리 장치의 상기 물리 주소에 상응하는 영역에 대해 바이트 단위로 독출 동작을 수행하는 저장 시스템. - 제2 항에 있어서, 상기 저장 장치는,
상기 캐시 컨트롤러로부터 커맨드 신호를 수신하고, 상기 커맨드 신호에 기초하여 상기 비휘발성 메모리 장치에 저장된 데이터를 상기 제1 휘발성 메모리 장치에 상기 캐시 데이터로서 로드하는 로드 동작, 상기 제1 휘발성 메모리 장치에 저장된 상기 캐시 데이터를 상기 비휘발성 메모리 장치에 저장하는 클린 동작, 및 상기 제1 휘발성 메모리 장치에 저장된 상기 캐시 데이터를 삭제하는 무효화(invalidate) 동작 중의 적어도 하나를 수행하는 저장 컨트롤러를 더 포함하는 저장 시스템. - 제5 항에 있어서, 상기 캐시 컨트롤러는 상기 바이트 접근 주소 공간을 통해 상기 제1 휘발성 메모리 장치의 미리 정해진 영역에 상기 커맨드 신호를 저장하고,
상기 저장 컨트롤러는 상기 제1 휘발성 메모리 장치의 상기 미리 정해진 영역에 저장된 상기 커맨드 신호에 기초하여 상기 로드 동작, 상기 클린 동작, 및 상기 무효화 동작 중의 적어도 하나를 수행하는 저장 시스템. - 제5 항에 있어서, 상기 저장 장치는 상기 제1 사이즈에 상응하는 블록 접근 주소 공간을 통해 상기 비휘발성 메모리 장치에 저장된 데이터에 대해 블록 단위의 접근을 허용하는 블록 접근 인터페이스(block accessible interface)를 더 제공하고,
상기 캐시 컨트롤러는 상기 블록 접근 인터페이스를 통해 상기 커맨드 신호를 상기 저장 컨트롤러에 제공하고,
상기 저장 컨트롤러는 상기 캐시 컨트롤러로부터 상기 블록 접근 인터페이스를 통해 수신되는 상기 커맨드 신호에 기초하여 상기 클린 동작, 상기 로드 동작, 및 상기 무효화 동작 중의 적어도 하나를 수행하는 저장 시스템. - 제5 항에 있어서, 상기 캐시 컨트롤러는 상기 제2 휘발성 메모리 장치에 저장된 상기 캐시 테이블을 상기 바이트 접근 주소 공간을 통해 상기 제1 휘발성 메모리 장치의 미리 정해진 영역에 주기적으로 복사하고,
상기 저장 컨트롤러는 상기 저장 장치의 파워-오프 시에 상기 제1 휘발성 메모리 장치의 상기 미리 정해진 영역에 저장된 상기 캐시 테이블을 상기 비휘발성 메모리 장치에 백업하고, 상기 저장 장치의 파워-온 시에 상기 비휘발성 메모리 장치에 백업된 상기 캐시 테이블을 상기 제1 휘발성 메모리 장치의 상기 미리 정해진 영역으로 복원하고,
상기 저장 장치의 파워-온 시에 상기 캐시 컨트롤러는 상기 바이트 접근 주소 공간을 통해 상기 제1 휘발성 메모리 장치의 상기 미리 정해진 영역에 복원된 상기 캐시 테이블을 상기 제2 휘발성 메모리 장치에 복사하는 저장 시스템. - 제1 사이즈를 갖는 비휘발성 메모리 장치 및 상기 제1 사이즈보다 작은 제2 사이즈를 갖고 상기 비휘발성 메모리 장치에 대한 캐시 메모리로 동작하는 제1 휘발성 메모리 장치를 포함하는 저장 장치 및 호스트를 포함하는 저장 시스템의 동작 방법에 있어서,
상기 저장 장치가 상기 제2 사이즈와 동일한 사이즈를 갖는 바이트 접근 주소 공간(byte access address space)을 사용하여 상기 제1 휘발성 메모리 장치에 저장된 캐시 데이터에 대해 바이트 단위의 접근을 허용하는 바이트 접근 인터페이스(byte accessible interface)를 상기 호스트에게 제공하는 단계; 및
상기 호스트가 상기 제1 휘발성 메모리 장치에 저장된 상기 캐시 데이터의 정보에 상응하는 캐시 테이블에 기초하여 상기 바이트 접근 주소 공간을 통해 상기 제1 휘발성 메모리 장치에 저장된 상기 캐시 데이터를 바이트 단위로 독출하는 단계를 포함하는 저장 시스템의 동작 방법. - 제9 항에 있어서, 상기 호스트가 상기 캐시 테이블에 기초하여 상기 바이트 접근 주소 공간을 통해 상기 제1 휘발성 메모리 장치에 저장된 상기 캐시 데이터를 바이트 단위로 독출하는 단계는,
상기 제1 휘발성 메모리 장치에 저장된 상기 캐시 데이터에 상응하는 상기 바이트 접근 주소 공간에서의 제1 주소와 상기 캐시 데이터에 상응하는 상기 가상 주소 공간에서의 제2 주소를 서로 연관시켜 저장하는 상기 캐시 테이블을 생성하는 단계;
상기 제1 사이즈에 상응하는 가상 주소 공간을 사용하여 상기 비휘발성 메모리 장치에 저장된 상기 데이터를 바이트 단위로 독출하기 위한 독출 명령을 생성하는 단계;
상기 캐시 테이블을 사용하여 상기 독출 명령에 포함되는 상기 가상 주소 공간에서의 가상 주소를 상기 바이트 접근 주소 공간에서의 물리 주소로 변환하는 단계; 및
상기 물리 주소를 사용하여 상기 제1 휘발성 메모리 장치로부터 상기 비휘발성 메모리 장치에 저장된 상기 가상 주소에 상응하는 데이터의 복사본을 바이트 단위로 독출하는 단계를 포함하는 저장 시스템의 동작 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160138401A KR20180044635A (ko) | 2016-10-24 | 2016-10-24 | 저장 시스템 및 그것의 동작 방법 |
US15/789,424 US11579775B2 (en) | 2016-10-24 | 2017-10-20 | Storage system and method of operating the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160138401A KR20180044635A (ko) | 2016-10-24 | 2016-10-24 | 저장 시스템 및 그것의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180044635A true KR20180044635A (ko) | 2018-05-03 |
Family
ID=61971436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160138401A KR20180044635A (ko) | 2016-10-24 | 2016-10-24 | 저장 시스템 및 그것의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11579775B2 (ko) |
KR (1) | KR20180044635A (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020180574A1 (en) * | 2019-03-01 | 2020-09-10 | Micron Technology, Inc. | Command bus in memory |
KR102560109B1 (ko) * | 2023-03-20 | 2023-07-27 | 메티스엑스 주식회사 | 바이트 어드레서블 장치 및 이를 포함하는 컴퓨팅 시스템 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200019513A (ko) * | 2018-08-14 | 2020-02-24 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그 동작 방법 |
CN110955488A (zh) * | 2019-09-10 | 2020-04-03 | 中兴通讯股份有限公司 | 一种持久性内存的虚拟化方法及系统 |
US11531622B2 (en) | 2019-09-20 | 2022-12-20 | Micron Technology, Inc. | Managing data dependencies for out of order processing in a hybrid DIMM |
US11494306B2 (en) | 2019-09-20 | 2022-11-08 | Micron Technology, Inc. | Managing data dependencies in a transfer pipeline of a hybrid dimm |
US11397683B2 (en) * | 2019-09-20 | 2022-07-26 | Micron Technology, Inc. | Low latency cache for non-volatile memory in a hybrid DIMM |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6834325B1 (en) | 1999-07-16 | 2004-12-21 | Storage Technology Corporation | System and method for providing client-directed staging to improve non-sequential access performance in a caching disk storage system |
US8452912B2 (en) | 2007-10-11 | 2013-05-28 | Super Talent Electronics, Inc. | Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read |
US8397024B2 (en) | 2008-10-25 | 2013-03-12 | Sandisk 3D Llc | Page buffer program command and methods to reprogram pages without re-inputting data to a memory device |
US8723877B2 (en) | 2010-05-20 | 2014-05-13 | Apple Inc. | Subbuffer objects |
JP5780795B2 (ja) * | 2011-03-24 | 2015-09-16 | オリンパス株式会社 | データ処理装置およびデータ処理方法 |
US8620886B1 (en) | 2011-09-20 | 2013-12-31 | Netapp Inc. | Host side deduplication |
US9215283B2 (en) | 2011-09-30 | 2015-12-15 | Alcatel Lucent | System and method for mobility and multi-homing content retrieval applications |
US9645917B2 (en) | 2012-05-22 | 2017-05-09 | Netapp, Inc. | Specializing I/O access patterns for flash storage |
US9454487B2 (en) | 2012-08-27 | 2016-09-27 | Vmware, Inc. | Transparent host-side caching of virtual disks located on shared storage |
US9274865B2 (en) | 2013-08-01 | 2016-03-01 | HGST Netherlands B.V. | Implementing enhanced buffer management for data storage devices |
KR20150062646A (ko) * | 2013-11-29 | 2015-06-08 | 삼성전자주식회사 | 전자 시스템 및 이의 동작 방법 |
US9563382B2 (en) * | 2014-06-05 | 2017-02-07 | Sandisk Technologies Llc | Methods, systems, and computer readable media for providing flexible host memory buffer |
-
2016
- 2016-10-24 KR KR1020160138401A patent/KR20180044635A/ko active Search and Examination
-
2017
- 2017-10-20 US US15/789,424 patent/US11579775B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020180574A1 (en) * | 2019-03-01 | 2020-09-10 | Micron Technology, Inc. | Command bus in memory |
US11301403B2 (en) | 2019-03-01 | 2022-04-12 | Micron Technology, Inc. | Command bus in memory |
KR102560109B1 (ko) * | 2023-03-20 | 2023-07-27 | 메티스엑스 주식회사 | 바이트 어드레서블 장치 및 이를 포함하는 컴퓨팅 시스템 |
US11940910B1 (en) | 2023-03-20 | 2024-03-26 | Metisx Co., Ltd. | Byte-addressable device and computing system including same |
Also Published As
Publication number | Publication date |
---|---|
US11579775B2 (en) | 2023-02-14 |
US20180113629A1 (en) | 2018-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20180044635A (ko) | 저장 시스템 및 그것의 동작 방법 | |
US10037158B2 (en) | Vertically integrated storage | |
CN107632939B (zh) | 用于存储装置的映射表 | |
KR102553261B1 (ko) | 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 스토리지 장치, 및 상기 메모리 컨트롤러의 동작 방법 | |
US7412565B2 (en) | Memory optimization for a computer system having a hibernation mode | |
US20190324859A1 (en) | Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive | |
US10891074B2 (en) | Key-value storage device supporting snapshot function and operating method thereof | |
CN108351816B (zh) | 用于在数据存储设备上执行数据拷贝操作的方法 | |
US20190317892A1 (en) | Memory system, data processing system, and operating method of memory system | |
TW201737097A (zh) | 用於在資料儲存裝置上管理不可變資料之技術 | |
KR20200113992A (ko) | 메모리 시스템의 복구 동작 중 비휘발성 메모리 오픈 블록의 셀 디스터브를 줄이는 방법 및 장치 | |
KR20180044095A (ko) | 전자 시스템 및 그것의 동작 방법 | |
US20140219041A1 (en) | Storage device and data processing method thereof | |
US20190042152A1 (en) | Atomic cross-media writes on a storage device | |
US10936045B2 (en) | Update memory management information to boot an electronic device from a reduced power mode | |
JP2021149374A (ja) | データ処理装置 | |
CN111625187A (zh) | 一种存储器及其控制方法与存储系统 | |
US10490237B2 (en) | Data storage device and method of operating the same | |
KR20140128823A (ko) | 멀티-트랜잭션의 아토믹 라이트 방법 | |
US9904559B2 (en) | Information processing apparatus and activation method therefor for processing data of a hibernation image | |
CN113190469B (zh) | 一种存储器、数据写入方法及存储系统 | |
CN114595095A (zh) | 存储器系统及存储器系统的控制器 | |
US10795771B2 (en) | Information handling system with reduced data loss in block mode | |
CN108509295B (zh) | 存储器系统的操作方法 | |
JP6788566B2 (ja) | コンピューティングシステム及びその動作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |