KR20200030325A - 스토리지 장치 및 시스템 - Google Patents
스토리지 장치 및 시스템 Download PDFInfo
- Publication number
- KR20200030325A KR20200030325A KR1020180109068A KR20180109068A KR20200030325A KR 20200030325 A KR20200030325 A KR 20200030325A KR 1020180109068 A KR1020180109068 A KR 1020180109068A KR 20180109068 A KR20180109068 A KR 20180109068A KR 20200030325 A KR20200030325 A KR 20200030325A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- storage device
- host
- memory
- virtual address
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/0626—Reducing size or complexity of storage 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/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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
- 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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
-
- 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
- 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/0638—Organizing or formatting or addressing of data
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0656—Data buffering arrangements
-
- 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/0658—Controller construction arrangements
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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/0662—Virtualisation aspects
- G06F3/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
-
- 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
-
- 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/60—Details of cache memory
- G06F2212/6024—History based prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
제1 가상 어드레스를 이용하여 액세스되는 제1 데이터가 저장된 스토리지 영역 및 스토리지 영역에 저장된 데이터를 제어하는 메모리 컨트롤러를 포함하되, 메모리 컨트롤러는 제1 가상 어드레스를 바탕으로 제2 가상 어드레스를 이용한 액세스가 예정된 제2 데이터를 예측하고 제2 데이터를 외부로 프리 패치(prefetch)하고 제2 가상 어드레스에 매핑되는 물리 어드레스를 프리 패치된 제2 데이터를 액세스 할 수 있도록 수정하는 스토리지 장치가 제공된다.
Description
본 발명은 스토리지 장치 및 시스템의 데이터 액세스에 관한 것이다.
시스템에는 빠른 액세스가 가능하지만 크기가 작고 가격이 비싼 주 기억장치와 상대적으로 액세스가 느리지만 용량이 크고 가격이 싼 보조기억장치가 있다. 주 기억장치의 예로는 DRAM(Dynamic Random-Access Memory)이 있다. 보조 기억장치의 예로는 HDD(Hard Disk Drive), SSD(Solid-State Drive) 등의 블록 스토리지와 PRAM(Phase-change Memory Random-Access Memory), STT-MRAM(Spin-Transfer Torque Magnetic Random-Access Memory) 등의 바이트 접근 스토리지가 있다.
주 기억장치의 빠른 액세스를 활용하기 위해, 예를 들어, 자주 접근하는 보조 기억장치의 데이터를 스토리지에서 읽어와 주 기억장치에 프리 패치(prefetch)할 수 있다. 이러한 프리 패치 기법들의 예로는, 프리 패치된 주 기억장치로의 액세스를 위해 호스트, 어플리케이션을 수정하거나 별도의 레이어를 추가하는 방법이 있다. 그런데, 이러한 기법들은 그 운용에 있어 추가적인 리소스가 소모되거나, 별도의 레이어가 요구되므로, 이를 개선하기 위한 연구가 진행되고 있다.
본 발명이 해결하고자 하는 기술적 과제는 동작 성능이 향상된 스토리지 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 동작 성능이 향상된 스토리지 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 스토리지 장치는, 제1 가상 어드레스를 이용하여 액세스되는 제1 데이터가 저장된 스토리지 영역 및 스토리지 영역에 저장된 데이터를 제어하는 메모리 컨트롤러를 포함하되, 메모리 컨트롤러는 제1 가상 어드레스를 바탕으로 제2 가상 어드레스를 이용한 액세스가 예정된 제2 데이터를 예측하고, 제2 데이터를 외부로 프리 패치(prefetch)하고, 제2 가상 어드레스에 매핑되는 물리 어드레스를 프리 패치된 제2 데이터를 액세스 할 수 있도록 수정한다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 스토리지 시스템은 호스트로부터 제1 가상 어드레스를 이용하여 제1 속도로 그 내부에 저장된 데이터가 액세스되는 제1 스토리지 장치 및 호스트로부터 제1 가상 어드레스와 다른 제2 가상 어드레스를 이용하여 제1 속도와 다른 제2 속도로 그 내부에 저장된 데이터가 액세스되는 제2 스토리지 장치를 포함하되 제2 스토리지 장치는 제2 가상 어드레스를 바탕으로 상기 호스트가 액세스할 데이터를 예측하고 예측된 데이터를 제1 스토리지 장치로 프리 패치(prefetch)한다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 스토리지 시스템은 호스트로부터 제1 가상 어드레스를 이용하여 그 내부에 저장된 데이터가 액세스되는 제1 스토리지 장치 및 호스트로부터 제1 가상 어드레스와 다르고 서로 인접한 제2 및 제3 가상 어드레스를 이용하여 그 내부에 저장된 데이터가 액세스되는 제2 스토리지 장치를 포함하되 제2 스토리지 장치는 제2 및 제3 가상 어드레스를 바탕으로 호스트가 제3 가상 어드레스와 인접한 제4 가상 어드레스를 이용하여 접근할 데이터를 예측하고, 예측된 데이터를 제1 스토리지 장치로 프리 패치(prefetch)한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 호스트가 메모리 장치를 액세스할 때 어드레스 변환 동작을 설명하기 위한 블록도이다.
도 2는 페이지 테이블을 이용한 주소 변환을 설명하기 위한 도면이다.
도 3은 몇몇 실시예에 따른 스토리지 장치의 블록도이다.
도 4는 스토리지 장치의 프리 패치 동작을 설명하기 위한 순서도이다.
도 5는 스토리지 장치가 호스트로부터 데이터 리드를 요청받은 경우의 동작을 설명하기 위한 순서도이다.
도 6은 도 4의 어드레스 예측 동작 단계를 설명하기 위한 순서도이다.
도 7은 도 6의 어드레스 예측 동작을 설명하기 위한 블록도이다.
도 8은 물리 어드레스 수정 단계를 설명하기 위한 블록도이다.
도 9은 몇몇 실시예에 따른 도 4의 메모리 컨트롤러가 물리 어드레스를 수정하는 단계를 설명하기 위한 또다른 블록도이다.
도 10는 몇몇 실시예에 따른 도 4의 메모리 컨트롤러가 물리 어드레스를 수정하는 단계의 동작을 설명하기 위한 블록도이다.
도 11은 도 4를 통해 설명한 프리 패치 동작에 따른 호스트의 예측된 데이터에 대한 액세스 과정을 설명하는 블록도이다.
도 12는 몇몇 실시예에 따른 스토리지 장치의 구성을 나타내는 블록도이다.
도 13은 도 12의 스토리지 장치의 동작을 설명하는 순서도이다.
도 14는 몇몇 실시예에 따른 스토리지 장치의 구성을 나타내는 블록도이다.
도 15는 도 14의 스토리지 장치의 동작을 설명하는 순서도이다.
도 16은 몇몇 실시예에 따른 스토리지 시스템의 블록도이다.
도 17은 도 16의 스토리지 시스템의 동작을 설명하기 위한 순서도이다.
도 18은 스토리지 시스템의 프리 패치 동작을 설명하기 위한 블록도이다.
도 19는 스토리지 시스템의 물리 어드레스 수정 동작을 설명하기 위한 블록도이다.
도 20은 몇몇 실시예에 따른 스토리지 시스템의 블록도이다.
도 21은 몇몇 실시예에 따른 스토리지 시스템의 블록도이다.
도 2는 페이지 테이블을 이용한 주소 변환을 설명하기 위한 도면이다.
도 3은 몇몇 실시예에 따른 스토리지 장치의 블록도이다.
도 4는 스토리지 장치의 프리 패치 동작을 설명하기 위한 순서도이다.
도 5는 스토리지 장치가 호스트로부터 데이터 리드를 요청받은 경우의 동작을 설명하기 위한 순서도이다.
도 6은 도 4의 어드레스 예측 동작 단계를 설명하기 위한 순서도이다.
도 7은 도 6의 어드레스 예측 동작을 설명하기 위한 블록도이다.
도 8은 물리 어드레스 수정 단계를 설명하기 위한 블록도이다.
도 9은 몇몇 실시예에 따른 도 4의 메모리 컨트롤러가 물리 어드레스를 수정하는 단계를 설명하기 위한 또다른 블록도이다.
도 10는 몇몇 실시예에 따른 도 4의 메모리 컨트롤러가 물리 어드레스를 수정하는 단계의 동작을 설명하기 위한 블록도이다.
도 11은 도 4를 통해 설명한 프리 패치 동작에 따른 호스트의 예측된 데이터에 대한 액세스 과정을 설명하는 블록도이다.
도 12는 몇몇 실시예에 따른 스토리지 장치의 구성을 나타내는 블록도이다.
도 13은 도 12의 스토리지 장치의 동작을 설명하는 순서도이다.
도 14는 몇몇 실시예에 따른 스토리지 장치의 구성을 나타내는 블록도이다.
도 15는 도 14의 스토리지 장치의 동작을 설명하는 순서도이다.
도 16은 몇몇 실시예에 따른 스토리지 시스템의 블록도이다.
도 17은 도 16의 스토리지 시스템의 동작을 설명하기 위한 순서도이다.
도 18은 스토리지 시스템의 프리 패치 동작을 설명하기 위한 블록도이다.
도 19는 스토리지 시스템의 물리 어드레스 수정 동작을 설명하기 위한 블록도이다.
도 20은 몇몇 실시예에 따른 스토리지 시스템의 블록도이다.
도 21은 몇몇 실시예에 따른 스토리지 시스템의 블록도이다.
도 1은 호스트가 메모리 장치를 액세스할 때 어드레스 변환 동작을 설명하기 위한 블록도이다. 도 2는 페이지 테이블을 이용한 주소 변환을 설명하기 위한 도면이다.
도 1 및 도 2를 참조하면, 호스트(100)가 메모리(124)에 접근하기 위해서는 예를 들어, 메모리 매니지먼트 유닛(104), 페이지 테이블(150)의 도움이 필요할 수 있다.
호스트(100)는 호스트 프로세서, 집적 회로(integrated circuit(IC)), 마더보드(motherboard), 시스템 온 칩(system on chip(SoC)), 어플리케이션 프로세서(application processor(AP)), 모바일(mobile) AP, 웹(web) 서버, 데이터 서버, 또는 데이터베이스 서버로 구현될 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
호스트(100)가 메모리(124)에 접근할 때, 예를 들어, CPU(Central Processing Unit)(130)가 가상 메모리 주소를 메모리 매니지먼트 유닛(104)에 보낼 수 있다. 이러한, 메모리 매니지먼트 유닛(104)은 예를 들어, 하드웨어로 구현될 수 있다. 그러나, 실시예들이 이에 제한되는 것은 아니며, 메모리 매니지먼트 유닛(104)은 특정 기능을 수행하기 위한 소프트웨어로 구현되는 것도 가능하다.
메모리 매니지먼트 유닛(104)은 가상 어드레스를 물리 어드레스로 변환하며, 메모리 보호, 캐시 관리, 버스 중재 등의 역할을 담당할 수 있다. 또한, 몇몇 실시예에서, 메모리 매니지먼트 유닛(104)은 간단한 8비트 아키텍처에서는 뱅크 스위칭을 담당할 수도 있다.
커널(110)은 하드웨어의 자원을 자원이 필요한 프로세스에 나눠줄 수 있다. 커널(110)은 프로세스 제어, 메모리 제어, 프로그램이 운영체제에 요구하는 시스템 콜 등을 수행하는 부분으로, 운영체제 하부에서 동작할 수 있다. 커널(110)은 또한 시스템 내의 주 기억장치 및 보조 기억장치 등의 메모리 장치들을 가상 어드레스 공간에서 관리할 수 있다. 즉, 호스트(100)가 장치들에 접근할 때, 물리 어드레스로 접근하는 것이 아니라 커널(110)에서 제공하는 가상 어드레스로 접근할 수 있다.
가상 어드레스는 시스템이 실제 물리 메모리 공간보다 더 큰 가상 메모리 공간을 효과적으로 생성할 수 있게 할 수 있다. 실제 물리 메모리 공간을 가상 메모리 공간으로 분해하는 프로세스를 페이징(paging)이라 한다.
커널(110)은 메모리 매니지먼트 유닛(104)을 활용하여 가상 어드레스와 물리 어드레스 간의 변환을 수행할 수 있다. 커널(110)은 예를 들어, 가상 어드레스 공간의 매핑 단위를 2N(N은 자연수) 비트 크기(예를 들어, 4KB)의 페이지로 나누어 관리할 수 있다. 일부 가상 페이지는 물리 어드레스의 한 페이지와 대응될 수 있다. 호스트(100)가 액세스 요청을 하면 CPU(130)는 가상 어드레스를 메모리 매니지먼트 유닛(104)에 보낼 수 있다.
메모리(124)에 저장된 데이터에 접근하기 위해, 가상 어드레스가 물리 어드레스로 변환되어야 하는데, 그 중 한가지 방법은 시스템 메모리 내에 저장된 변환 표(translation tables)인 페이지 테이블(page table)(150)을 이용하는 것일 수 있다. 페이지 테이블(150)은 그 크기가 크기 때문에 시스템 메모리 내(예를 들어, 메모리 매니지먼트 유닛(104))에 저장될 수 있다. 이 때, 메모리 매니지먼트 유닛(104)은 가상 어드레스를 물리 어드레스로 바꿀 수 있다.
페이지 테이블(150)은 페이징 기법에서 사용되는 자료 구조일 수 있다. 페이지 테이블(150)은 프로세스의 페이지 정보를 저장하고 있는 테이블일 수 있다. 하나의 프로세스는 하나의 페이지 테이블(150)을 가질 수 있다. 페이지 테이블(150)에는 페이지 번호에 해당하는 색인이 있을 수 있다. 또한 페이지 테이블(150)에는 해당 페이지에 할당된 물리 메모리 어드레스가 포함된 정보가 저장될 수 있다. 이러한 페이지 테이블(150)의 동작은 아키텍처와 운영체제에 따라 서로 다를 수 있다.
시스템 메모리 내(예를 들어, 메모리 매니지먼트 유닛(104))에 저장된 페이지 테이블(150)을 접근하는 것은 전체 시스템 성능의 속도를 저하시키는 요인이 될 수 있다. 이에 따라, 메모리 매니지먼트 유닛(104)은 최근에 사용된 페이지 테이블(150)의 일부를 변환 참조 버퍼(TLB; Translation Lookaside Buffer)(108)에 캐싱(caching)할 수 있다. 변환 참조 버퍼(108)에 캐싱함으로써 페이지 테이블(150)로의 접근 지연을 감소시킬 수 있다. 변환 참조 버퍼(108)는 메모리(124)에 저장된 데이터에 대한 물리 어드레스 정보 또는 색인 정보를 포함할 수 있다. 예를 들어, CPU(130)는 액세스될 데이터가 메모리(124)에 존재하는지 판별하기 위해 변환 참조 버퍼(108)를 스캔할 수 있다.
변환 참조 버퍼(108)는 특별한 타입의 캐시 메모리일 수 있다. 다른 타입의 캐시 메모리와 마찬가지로, 변환 참조 버퍼(108)는 신속하게 접근 가능하도록 특별히 설계된 비교적 적은 용량의 메모리 저장 장치로 이루어질 수 있다. 따라서, 변환 참조 버퍼(108)가 모두 사용되는 경우 기존 변환 정보를 제거하고 새로운 변환 정보를 추가하는 작업이 수반될 수 있다.
변환 참조 버퍼(108)는 캐시 메모리 내에 제공된 태그 어레이(tag array)와 데이터 어레이를 모두 포함할 수 있다. 태그 어레이 내에서, 각각의 태그 라인은 가상 어드레스를 저장한다. 다음에 이러한 태그 라인은 가상 어드레스에 대한 물리 어드레스 변환이 저장되어 있는 데이터 어레이 내의 해당되는 데이터 라인과 연관될 수 있다.
호스트(100)가 메모리(124)에 액세스하는 경우를 가정한다. CPU(130)는 메모리 매니지먼트 유닛(104)을 통해 빠르게 접근할 수 있는 변환 참조 버퍼(108)에 해당 가상 어드레스에 매핑되는 물리 어드레스로의 변환 정보가 담긴 페이지 테이블(150)이 있는지 확인할 수 있다. 확인 결과, 변환 참조 버퍼(108)에 변환 정보가 담긴 페이지 테이블(150)이 존재한다면 호스트(100)는 해당 페이지 테이블(150)을 통해 변환된 물리 어드레스로 액세스할 수 있다.
만약, 변환 참조 버퍼(108) 내에 페이지 테이블(150)이 존재하지 않는다면(변환 참조 버퍼 미스(miss)), 변환 참조 버퍼(108)와 메모리 매니지먼트 유닛(104)은 페이지 테이블(150)을 공유하므로, CPU(130)는 메모리 매니지먼트 유닛(104) 내의 페이지 테이블(150)을 이용하여 변환된 물리 어드레스로 액세스할 수 있다.
이와 같이, 변환 참조 버퍼(108) 내 페이지 테이블(150)이 있는 경우 변환된 물리 어드레스로 고속의 접근이 가능하다.
CPU(130)가 페이지 테이블(150)을 통해서 물리 메모리 어드레스를 가져오지 못하는 경우가 있을 수 있다. 이런 경우를 페이지 실패(page fault)라 한다. 대부분의 경우 페이지 실패는 가상 어드레스 공간의 페이지가 메모리(124)에 없기 때문에 발생할 수 있다. 이 경우 운영체제(도시되어 있지 않음)가 그 처리를 담당할 수 있다. 운영 체제는 비어 있는 메모리 공간에 페이지를 할당할 수 있다. 운영 체제는 비어 있는 메모리 공간이 없는 경우 실제 메모리의 한 페이지를 빼내 보조 기억장치에 저장하고(페이징), 그 자리에 요구받은 페이지를 할당할 수 있다.
버스(120)는 호스트(100)와 메모리(124) 사이를 연결할 수 있다. 즉, 데이터 및 요청의 이동은 버스(120)를 통해서 이루어질 수 있다. 따라서, 호스트(100)는 버스(120)를 통해 메모리(124) 내 물리 어드레스로 접근할 수 있다.
이하에서 호스트(100)가 액세스한다고 간단히 서술되는 동작은 앞서 설명한 이러한 동작들이 수행되는 것을 의미한다.
도 3은 몇몇 실시예에 따른 스토리지 장치의 블록도이다.
스토리지 장치(200)는 인터페이스(205), 스토리지 영역(210), 및 메모리 컨트롤러(215)를 포함할 수 있다.
호스트(100)는 앞서 설명한 가상 어드레스를 이용하여 스토리지 장치(200)로 액세스할 수 있다.
스토리지 장치(200)는 인터페이스(205)를 통해서 호스트(100)와 명령 및/또는 데이터를 주고받을 수 있다.
인터페이스(205)는 예를 들어, PCI(peripheral component interconnect) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, NVMe(non-volatile memory Express) 인터페이스, DIMM(Dual In-line Memory Module) 인터페이스 등 바이트 접근 가능 기능을 제공하는 인터페이스들로 구현될 수 있으나 이에 제한되는 것은 아니다. 인터페이스(205)는 전기 신호들 또는 광 신호들을 전송할 수 있다.
스토리지 영역(210)은 데이터를 저장하는 영역일 수 있다. 이러한 스토리지 영역(210)은 PRAM(Phase-change Random-Access Memory), RRAM(Resistive Random-Access Memory), MRAM(Magnetic Random-Access Memory), STT-MRAM(Spin-Transfer Torque Magnetic Random-Access Memory), FeRAM(Ferroelectric Random-Access Memory), 노어 플래쉬 메모리(NOR flash memory) 또는 낸드 플래쉬 메모리(NAND flash memory)를 포함할 수 있다.
몇몇 실시예에서, 스토리지 영역(210)은 블록 스토리지를 포함할 수 있다. 또한, 몇몇 실시예에서, 인터페이스(205)는 PCIe 인터페이스와 같이 바이트 접근 가능 기능을 제공하는 바이트 접근 가능 인터페이스일 수 있다. 이 경우, 스토리지 영역(210)은 바이트 단위 데이터 접근이 가능한 저장 장치를 포함할 수 있다.
스토리지 영역(210)에 저장된 데이터는 메모리 컨트롤러(215)에 의해 제어될 수 있다. 메모리 컨트롤러(215)는 인터페이스(205)를 통해 호스트(100)로부터 액세스 요청을 받아 스토리지 영역(210)에 액세스할 수 있다. 이를 통해서, 메모리 컨트롤러(215)는 명령 및/또는 데이터의 전송 또는 처리를 제어할 수 있다.
몇몇 실시예에서, 메모리 컨트롤러(215)는 프리 패처(220) 및 어드레스 예측 모듈(225)을 포함할 수 있다.
프리 패처(220)는 호스트(100)가 자주 사용하는 데이터 및/또는 호스트(100)의 다음 사용이 예측된 데이터를 다른 저장 영역(예를 들어, 외부의 다른 메모리)에 프리 패치시켜 호스트(100)의 액세스 시간을 줄여줄 수 있다.
어드레스 예측 모듈(225)은 호스트(100)가 다음에 액세스할 데이터를 미리 예측할 수 있다. 그리고, 앞서 설명한 프리 패처(220)는 이러한 어드레스 예측 모듈(225)에 의해 예측된 데이터를 다른 공간에 프리 패치할 수 있다.
이하, 도 3 내지 도 10을 참조하여, 몇몇 실시예에 따른 스토리지 장치의 동작에 대해 설명한다.
도 4는 스토리지 장치의 프리 패치 동작을 설명하기 위한 순서도이다. 도 5는 스토리지 장치가 호스트로부터 데이터 리드를 요청받은 경우의 동작을 설명하기 위한 순서도이다. 도 6은 도 4의 어드레스 예측 동작 단계를 설명하기 위한 순서도이다. 도 7은 도 6의 어드레스 예측 동작을 설명하기 위한 블록도이다. 도 8은 물리 어드레스 수정 단계를 설명하기 위한 블록도이다. 도 9은 몇몇 실시예에 따른 도 4의 메모리 컨트롤러가 물리 어드레스를 수정하는 단계를 설명하기 위한 또다른 블록도이다. 도 10는 몇몇 실시예에 따른 도 4의 메모리 컨트롤러가 물리 어드레스를 수정하는 단계의 동작을 설명하기 위한 블록도이다.
먼저, 도 4를 참조하면, 호스트가 스토리지 장치에 가상 어드레스를 통해 액세스한다(S200). 몇몇 실시예에서, 호스트는 스토리지 장치에 액세스하여 데이터를 요청하고, 스토리지 장치는 요청받은 데이터를 호스트에 리턴할 수 있다. 이하에서는 도 3 및 도 5를 참조하여, 이러한 동작에 대해 보다 구체적으로 설명한다.
먼저, 도 5를 참조하면, 스토리지 장치의 인터페이스는 호스트로부터 명령 및/또는 데이터를 수신한다(S210). 구체적으로 도 3을 참조하면, 호스트(100)가 스토리지 장치(200)에 접근하면 스토리지 장치(200)의 인터페이스(205)는 호스트(100)의 명령을 읽고 메모리 컨트롤러(215)에 전송할 수 있다.
다시 도 5를 참조하면, 메모리 컨트롤러는 호스트로부터 수신된 명령 및/또는 데이터가 스토리지 영역에 있는지 스캔한다(S220). 구체적으로 도 3을 참조하면, 인터페이스(205)로부터 호스트(100)의 명령을 전송받은 메모리 컨트롤러(215)는 스토리지 영역(210)에 호스트(100)의 명령에 대응하는 대상 데이터가 존재하는지 확인할 수 있다.
다시 도 5를 참조하면, 만약, 스토리지 영역에 호스트가 액세스하는 데이터가 없다면 메모리 컨트롤러는 인터페이스를 통해 호스트에 액세스 실패 메시지를 전달한다(S230). 구체적으로 도 3을 참조하면, 스토리지 영역(210)에 호스트(100)가 액세스하려는 데이터를 메모리 컨트롤러(215)가 스캔하지 못한다면 메모리 컨트롤러(215)는 인터페이스(205)를 통해 호스트(100)에 액세스 실패 메시지를 전달할 수 있다.
다시 도 5를 참조하면, 스토리지 영역에 호스트가 액세스 하는 데이터가 있다면 메모리 컨트롤러는 스토리지 영역으로부터 데이터를 읽어와 인터페이스를 통해 호스트에 데이터를 전송한다(S250). 구체적으로 도 3을 참조하면, 메모리 컨트롤러(215)가 스토리지 영역(210)에 호스트(100)가 액세스하고자 하는 데이터를 발견한다면 해당 데이터를 인터페이스(205)를 통해 호스트(100)에 전송할 수 있다.
다음, 다시 도 4를 참조하면, 호스트가 가상 어드레스를 통해 액세스한(S200) 데이터를 바탕으로 메모리 컨트롤러의 어드레스 예측 모듈이 호스트가 다음 액세스할 데이터를 예측한다(S300).
구체적으로 도 6을 참조하여 단계(S300)에 대해 보다 구체적으로 설명한다. 호스트가 스토리지 장치의 데이터에 액세스를 하고 어드레스 예측 모듈이 다음 데이터를 예측하는 동작이 시작된다(S310). 이 동작(S310)은 앞서 도 4를 참조하여 설명한 동작(S200)일 수도 있고, 실시예에 따라 앞서 도 4를 참조하여 설명한 동작(S200)과 별개의 동작일 수도 있다.
더욱 구체적으로 도 7을 참조하면, 호스트(100)가 스토리지 장치(820)에 가상 어드레스를 통해 접근할 때 스토리지 장치(820)에 읽기 명령을 전달할 수 있다. 인터페이스(도시되지 않음)는 해당 명령을 메모리 컨트롤러(800)에 전송할 수 있으며, 이후 메모리 컨트롤러(800)의 어드레스 예측 모듈(830)이 호스트(100)의 다음 액세스할 데이터에 대한 예측 동작을 시작할 수 있다.
다시 도 6을 참조하면, 호스트의 요청이 시퀀셜 요청(Sequential request)인지 랜덤 요청(Random request)인지 판단한다(S315). 구체적으로 도 3을 참조하면, 호스트(100)는 스토리지 장치(200)에 액세스할 때 시퀀셜 요청 또는 랜덤 요청으로 액세스할 수 있다. 따라서, 메모리 컨트롤러(215)는 호스트(100)의 액세스가 연속인지 랜덤인지 결정할 수 있다.
먼저, 호스트의 스토리지 장치에 대한 액세스가 시퀀셜 요청인 경우에 대해 설명한다(S315-Y).
도 6을 참조하면, 메모리 컨트롤러는 호스트의 스토리지 장치에 대한 시퀀셜한 요청이 "k" 번 이상 이루어졌는지 확인(S320)한 후, 시퀀셜한 요청이 "k"번 이상이면(S320-Y), "k+1"번째 데이터를 외부 스토리지 장치에 프리 패치할 수 있다(S330). 더 구체적으로 도 7을 참조하면, 호스트(100)가 스토리지 장치(820)에 1번째 데이터의 물리 어드레스로부터 연속적으로(예를 들어, 1번, 2번, 3번으로 연속적인) "k"번째 데이터의 물리 어드레스까지 액세스한 경우, 어드레스 예측 모듈(830)은 호스트(100)가 다음에 액세스할 데이터를 "k+1"번 데이터라고 예측할 수 있다. 따라서, 어드레스 예측 모듈(830)은 "k+1"번째 데이터의 물리 어드레스를 갖는 데이터를 프리 패처(810)를 통해 다른 스토리지 장치(850)(예를 들어, 주 기억 장치)에 프리 패치할 수 있다. 이를 통해, 호스트(100)의 스토리지 장치(200)로 액세스 요청에 대한 응답 속도를 높일 수 있다.
다음, 도 6을 참조하여, 호스트의 스토리지 장치에 대한 시퀀셜한 요청이 "k"번 이상 이루어지지 않은 경우에 대해 설명한다(S320-N). 구체적으로 도 7을 참조하면, 호스트(100)가 스토리지 장치(820)에 "k-1"번째 데이터까지만 접근한다면, 스토리지 장치(820)의 프리 패처(810)는 "k+1"번째 데이터에 대해 다른 스토리지 장치(850)로 프리 패치하지 않을 수 있다.
다음, 다시 도 6을 참조하여, 호스트의 스토리지 장치에 대한 액세스가 랜덤 요청인 경우(S315-N)에 대해 설명한다.
호스트의 스토리지 장치에 대한 액세스가 랜덤 요청인 경우(S315-N), 메모리 컨트롤러는 랜덤한 요청들에 대해 데이터 베이스를 구축하고(S340), 구축된 데이터 베이스를 통해 랜덤한 요청들의 "k"번째 요청까지의 데이터들의 물리 어드레스가 규칙을 갖고 있는지 확인(S345)한다. 만약, 랜덤한 요청들의 "k"번째 요청까지의 데이터들의 물리 어드레스가 규칙을 갖고 있다면(S345-Y), 해당 규칙에 따른 "k+1"번째 데이터를 외부 스토리지 장치에 프리 패치할 수 있다(S350).
다시, 도 6을 참조하여, 호스트의 스토리지 장치에 대한 랜덤 요청이 "k"번 이상 이루어지지 않은 경우에 대해 설명한다(S345-N). 구체적으로 도 7을 참조하면, 호스트(100)가 스토리지 장치(820)에 "k-1"번째 데이터까지만 접근한다면, 스토리지 장치(820)의 프리 패처(810)는 "k+1"번째 데이터에 대해 다른 스토리지 장치(850)로 프리 패치하지 않을 수 있다.
구체적으로 도 7을 참조하면, 호스트(100)가 스토리지 장치(820)에 랜덤 요청을 하는 경우, 어드레스 예측 모듈(830)이 현재의 액세스 요청에 이어지는 다음 액세스 요청 데이터를 예측하기 쉽지 않을 수 있다. 그러나, 몇몇 실시예에서, 랜덤 요청도 일정한 패턴을 갖는 경우를 포함할 수 있다. 랜덤 요청에 대한 일정한 패턴을 어드레스 예측 모듈(830)이 인식하면(예를 들어, 학습 하면) 현재의 액세스 요청에 대한 이어지는 다음 액세스 요청을 예측할 수 있다.
어드레스 예측 모듈(830)은 호스트(100)로부터 액세스되는 요청의 패턴들에 대한 학습 기능을 구비할 수 있다. 어드레스 예측 모듈(830)은 학습 기능을 제공하기 위해 호스트(100)로부터 액세스되는 데이터의 물리 어드레스를 데이터 베이스화 할 수 있다. 즉, 어드레스 예측 모듈(830)은 현재 액세스되는 데이터의 물리 어드레스와 다음 액세스될 데이터의 물리 어드레스 사이에 규칙을 검출할 수 있다.
더 자세히는, 어드레스 예측 모듈(830)이 데이터 베이스화 된 데이터의 물리 어드레스들의 "k"번째까지 액세스되는 데이터의 물리 어드레스들 사이의 규칙을 인식할 수 있다(예를 들어, 1번, 5번, 9번, ? 같이 4씩 증가하는 규칙을 갖는 물리 어드레스 등). 어드레스 예측 모듈(830)은 호스트(100)가 "k+1"번째 액세스할 데이터를 "k"번째 액세스되는 데이터의 물리 어드레스와 인식된 규칙을 갖고 인접한 데이터라고 예측할 수 있다. 어드레스 예측 모듈(830)은 예측된 "k+1"번째 물리 어드레스를 갖는 데이터를 프리 패처(810)를 통해 다른 스토리지 장치(850)(예를 들어, 주 기억 장치)에 프리 패치할 수 있다. 이를 통해, 호스트(100)의 스토리지 장치(820)로 액세스 요청에 대한 응답 속도를 높일 수 있다.
몇몇 실시예에서, 어드레스 예측 모듈(830)은 "k"번째까지의 데이터 액세스를 벌크 리드(Bulk read)로 간주하여 "k+1"번째 데이터를 다른 스토리지 공간에 프리 패치할 수 있다(도 6의 단계(S330) 및 단계(350)). 연속적인 액세스 혹은 랜덤하지만 규칙적인 액세스가 "k"번 보다 작게 일어나는 경우, 예측된 데이터를 프리 패치하지 않을 수 있다. 호스트(100)의 액세스가 일정한 반복 횟수 이상이 되어야 그 다음의 예측 데이터의 정확도가 높아질 수 있기 때문에 벌크 리드(Bulk read)로 간주된 액세스에 대해서만 예측된 데이터를 프리 패치할 수 있다.
다시 도 4를 참조하면, 메모리 컨트롤러가 단계(S300)를 통해 예측된 데이터를 다른 스토리지 장치(예를 들어, 주 기억 장치)에 프리 패치한다(S400). 구체적으로, 도 3을 참조하면, 메모리 컨트롤러(215)의 어드레스 예측 모듈(225)을 통해, 호스트(100)가 다음에 접근할 데이터에 대한 예측이 수행되면, 메모리 컨트롤러(215)의 프리 패처(220)는 예측된 데이터를 스토리지 장치(200)보다 빠른 속도를 갖는 외부 스토리지 장치(예를 들어, 주 기억 장치(도시되지 않음))에 프리 패치할 수 있다.
다시 도 4를 참조하면, 메모리 컨트롤러는 물리 어드레스를 수정한다(S500).
구체적으로, 도 8을 참조하면, 메모리 컨트롤러(215)는 메모리 매니지먼트 유닛(104) 내 페이지 테이블(150)을 이용하여 페이지 테이블(105)을 수정할 수 있다.
또한 도 9를 참조하면, 메모리 컨트롤러(215)는 매니지먼트 유닛(104) 혹은 변환 참조 버퍼(108) 내 페이지 테이블(150)을 이용하여 페이지 테이블(105)을 수정할 수 있다.
메모리 매니지먼트 유닛(104) 및 변환 참조 버퍼(108)에 대한 설명은 앞서 도 1에서 설명한 바와 같다.
도 10을 참조하면, 메모리 컨트롤러(215)는 페이지 테이블(155)의 물리 어드레스를 프리 패치되기 전 스토리지 영역(210)에 대응되는 물리 어드레스로부터, 프리 패치된 후 외부 스토리지 장치에 대응되는 물리 어드레스로 수정할 수 있다.
도 11은 도 4를 통해 설명한 프리 패치 동작에 따른 호스트의 예측된 데이터에 대한 액세스 과정을 설명하는 블록도이다.
도 11을 참조하면, 도 1에 설명된 바와 같이, 호스트(100)에서 메모리(124)로 액세스할 때 CPU(130)가 가상 어드레스를 메모리 매니지먼트 유닛(104)에 보낼 수 있다. 이 때, 메모리 매니지먼트 유닛(104)의 페이지 테이블(도 10의 155)은 도 4에서 설명한 바와 같이 메모리 컨트롤러(215)가 수정할 수 있다. 즉, 호스트(100)의 관여 없이(예를 들어, 어플리케이션의 수정 또는 별도의 layer 추가 없이) 물리 어드레스를 수정할 수 있다. 이를 통해, 호스트(100)는 예측된 데이터가 다른 스토리지 장치로 프리 패치되었음을 인식할 필요없이, 예측된 데이터가 프리 패치되기 전 저장되었던 스토리지 장치에 액세스하면 메모리 컨트롤러(215)가 수정한 물리 어드레스를 따라 다른 스토리지 장치(예를 들어, 속도가 빠른 주 기억 장치)에 저장된 예측 데이터에 액세스할 수 있다. 즉, 어플리케이션의 수정 혹은 별도의 레이어(layer) 추가가 필요 없이 프리 패치 후의 데이터에 액세스함으로써 호스트의 액세스 속도 향상을 가져올 수 있다.
구체적으로 도 10을 참조하면, 호스트(100)의 액세스가 종료되는 경우 메모리 컨트롤러(215)는 페이지 테이블(155)의 물리 어드레스를 원래 값으로 다시 업데이트할 수 있다. 즉, 메모리 컨트롤러(215)는 프리 패치된 후 외부 스토리지 장치에 대응되는 물리 어드레스로부터 프리 패치되기 전 스토리지 영역(210)에 대응되는 물리 어드레스로 페이지 테이블(155)을 수정하여 물리 어드레스를 원래 값으로 리스토어(restore)할 수 있다.
도 12는 몇몇 실시예에 따른 스토리지 장치의 구성을 나타내는 블록도이다. 도 13은 도 12의 스토리지 장치의 동작을 설명하는 순서도이다.
이하에서는 앞서 설명한 실시예와 동일한 설명은 생략하고 차이점을 위주로 설명한다.
도 12를 참조하면, 스토리지 장치(230)는, DMA 엔진(260)을 이용해 프리 패치할 수 있다.
스토리지 장치(230)는 DMA 엔진(260)을 통해 외부(예를 들어, 다른 스토리지 장치, 하드디스크, 그래픽 카드, 네트워크 카드, 사운드 카드 등)와 직접 접근하여 데이터를 읽거나 쓸 수 있다. DMA 엔진(260)은 버스가 지원하는 기능일 수 있다. 스토리지 장치(230)의 일정 부분이 DMA 엔진(260)에 사용될 영역으로 지정될 수 있다. DMA 엔진(260)을 이용하여 CPU(130)가 데이터 전송에 관여하지 않을 수 있다. 따라서, 더 큰 대역폭으로 데이터를 전송할 수 있어 스토리지 장치(230)의 성능이 향상될 수 있다. DMA 엔진(260)에는 예를 들어, 데이터를 통신할 대상, 통신될 데이터의 위치(예를 들어, 어드레스), 통신될 데이터의 사이즈 등의 정보가 프로그램 또는 설정될 수 있다. DMA 엔진(260)은 프로그램 또는 설정에 따라 외부와 통신할 수 있다. 메모리 컨트롤러(245)는 DMA 엔진(260)을 통해 더 큰 대역폭으로 데이터를 다른 스토리지 영역으로 전송하여 스토리지 장치(230)의 속도를 향상시킬 수 있다.
도 13을 참조하면, 호스트가 가상 어드레스를 통해 액세스한(S600) 데이터를 바탕으로 메모리 컨트롤러의 어드레스 예측 모듈이 호스트가 다음 액세스할 데이터를 예측한다(S610). 이러한 동작은 도 4의 단계(S300)까지의 설명과 같으므로 중복된 설명을 생략한다.
스토리지 장치의 메모리 컨트롤러는 어드레스 예측 모듈에 의해 예측된 데이터를 프리 패처를 통해 외부 스토리지 장치로 프리 패치하되, 프리 패처는 DMA 엔진을 통해 외부 스토리지 장치로 프리 패치한다(S620).
구체적으로 도 12를 참조하면 프리 패처(250)는 메모리 컨트롤러(245)의 어드레스 예측 모듈(225)이 예측한 데이터를 DMA 엔진(260)을 통해 외부로 프리 패치할 수 있다.
다시 도13을 참조하면, DMA 엔진이 프리 패치를 완료한 후 스토리지 장치에 프리 패치 완료 메시지를 알린다(S630).
구체적으로 도 12를 참조하면 DMA 엔진(260)이 프리 패처(250)로부터 프리 패치된 데이터에 대한 통신을 수행하는 동안 스토리지 장치(230)는 다른 작업을 수행할 수 있다. 통신이 완료되면, DMA 엔진(260)은 인터럽트를 통해, 통신이 완료되었음을 스토리지 장치(230)에 알릴 수 있다.
다시 도 13을 참조하면, 프리 패치 완료 후 메모리 컨트롤러는 매핑 테이블을 프리 패치 된 외부 스토리지 장치의 물리 어드레스로 수정한다(S640).
구체적으로 도 12를 참조하면 프리 패치가 완료된 후, 메모리 컨트롤러(245)는 프리 패치된 외부 스토리지 장치(도시되지 않음)의 물리 어드레스로 매핑 테이블을 수정하여, 추후 호스트(100)가 예측된 데이터에 액세스 시 프리 패치된 외부 스토리지 장치로 접근할 수 있다.
도 14는 몇몇 실시예에 따른 스토리지 장치의 구성을 나타내는 블록도이다. 도 15는 도 14의 스토리지 장치의 동작을 설명하는 순서도이다.
이하에서도 앞서 설명한 실시예들과 동일한 설명은 생략하고 차이점을 위주로 설명한다.
도 14을 참조하면, 스토리지 장치(265)의 스토리지 영역(275)은 대용량의 메모리 장치(280)와 용량은 작지만 접근 속도가 빠른 버퍼 메모리(285)를 포함할 수 있다.
메모리 장치(280)는 PRAM, RRAM, MRAM, STT-MRAM, FeRAM, 노어 플래쉬 메모리 또는 낸드 플래쉬 메모리를 포함할 수 있다. 이종의 메모리 소자들이 혼용될 수도 있다. 메모리 장치(280)는 또한 블록 스토리지를 포함할 수 있다. 이때, 인터페이스(270)는 PCIe 인터페이스와 같이 바이트 접근 가능 기능을 제공하는 바이트 접근 가능 인터페이스일 수 있다.
호스트(100)의 버스 포맷에 의한 데이터 전송 속도는 스토리지 영역(275)의 메모리 장치(280)의 전송 속도보다 월등히 빠를 수 있다. 즉, 호스트(100)의 인터페이스 속도가 월등히 높은 경우, 버퍼 메모리(285)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 최소화시킬 수 있다. 버퍼 메모리(285)는 대용량의 보조 기억장치로 사용되는 스토리지 장치(265)에서 충분한 버퍼링을 제공하기 위해 예를 들어, 동기식 DRAM으로 제공될 수 있다. 하지만, 실시예들이 이에 제한되는 것은 아니다.
버퍼 메모리(285)는 메모리 장치(280)에 저장된 데이터의 적어도 일부를 저장할 수 있다. 버퍼 메모리(285)에는 호스트(100)로부터 제공되는 쓰기 데이터가 일시 저장될 수 있다. 버퍼 메모리(285)는 또한 호스트(100)의 읽기 요청에 응답하여 메모리 장치(280)로부터 프리 패치된 데이터가 일시 저장될 수 있다. 호스트(100)의 읽기 요청시에 메모리 장치(280)에 존재하는 데이터가 버퍼 메모리(285)에 캐시되어 있는 경우, 버퍼 메모리(285)는 캐시된 데이터를 직접 호스트(100)로 제공하는 캐시 기능을 지원할 수 있다. 이때, 호스트(100)의 메모리 장치(280)로의 액세스는 발생하지 않을 수 있다. 이를 통해 스토리지 장치(265)는 향상된 속도를 가질 수 있다.
도 15를 참조하면, 호스트가 가상 어드레스를 통해 액세스한(S700) 데이터를 바탕으로 메모리 컨트롤러의 어드레스 예측 모듈이 호스트가 다음 액세스할 데이터를 예측한다(S610). 이러한 동작은 앞서 도 4의 단계(S300)까지의 설명과 같으므로 중복된 설명을 생략한다.
메모리 컨트롤러의 어드레스 예측 모듈이 예측한 데이터를 스토리지 장치 내 버퍼 메모리에 캐시한다(S720).
구체적으로 도 14를 참조하면 메모리 컨트롤러(290)는 어드레스 예측 모듈(298)이 예측한 데이터를 버퍼 메모리(285)에 캐시할 수 있다.
다시 도 15를 참조하면 버퍼 메모리에 캐싱된 예측된 데이터를 외부 스토리지 장치로 프리 패치한다(S730).
구체적으로 도 14를 참조하면 프리 패처(295)는 버퍼 메모리(285)에 캐시된 데이터를 다른 스토리지 장치로 프리 패치할 수 있다.
다시 도 15를 참조하면 메모리 컨트롤러는 매핑 페이지의 버퍼 메모리 물리 어드레스를 프리 패치가 완료된 후의 외부 스토리지 장치의 물리 어드레스로 수정한다(S740).
구체적으로 도 14를 참조하면 프리 패치가 완료된 후 메모리 컨트롤러(290)는 프리 패치된 외부 공간의 물리 어드레스로 매핑 테이블을 수정하여, 추후 호스트(100)가 예측된 데이터 액세스 시 프리 패치된 외부 스토리지 장치로 접근할 수 있다.
도 16은 몇몇 실시예에 따른 스토리지 시스템의 블록도이다.
도 16을 참조하면, 호스트(100)와 스토리지 시스템(335)은 서로 연결되어 하나의 데이터 처리 시스템을 구현할 수 있다. 이러한 데이터 처리 시스템은 예를 들어, PC(personal computer), 워크스테이션(workstation), 데이터 센터, 인터넷 데이터 센터(internet data center(IDC)), DAS(direct attached storage) 시스템, SAN(storage area network) 시스템, NAS(network attached storage) 시스템, RAID(redundant array of inexpensive disks, or redundant array of independent disks) 시스템, 또는 모바일 장치로 구현될 수 있으나 이에 제한되는 것은 아니다.
또한, 모바일 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 드론(drone), 또는 e-북(e-book)으로 구현될 수 있으나, 이에 제한되는 것은 아니다.
스토리지 시스템(335)은 제1 스토리지 장치(315), 도 3에서 설명한 프리 패치 동작을 수행하는 제2 스토리지 장치(325), 버스(330)를 포함할 수 있다.
제1 스토리지 장치(315)와 제2 스토리지 장치(325)는 각각 제1 인터페이스(310)와 제2 인터페이스(320)를 포함할 수 있다. 몇몇 실시예들에 따라, 제1 및 제2 인터페이스들(310, 320)은 호스트(100)와 각각의 제1 및 제2 스토리지 장치들(315, 325) 사이의 명령 및/또는 데이터의 전송 경로일 수 있다.
제1 및 제2 인터페이스들(310, 320)은 예를 들어, PCI 인터페이스, PCIe 인터페이스, NVMe 인터페이스, DIMM 인터페이스 등 바이트 접근 가능 기능을 제공하는 인터페이스들로 구현될 수 있으나 이에 제한되는 것은 아니다. 제1 및 제2 인터페이스들(310, 320)은 전기 신호들 또는 광 신호들을 전송할 수 있다.
호스트(100)는 도시된 것과 같이 가상 메모리 어드레스를 이용하여 제1 스토리지 장치(315) 혹은 제2 스토리지 장치(325)에 접근할 수 있다.
몇몇 실시예에서, 호스트(100)는 제1 스토리지 장치(315)에 저장된 데이터에 제1 속도(v1)로 액세스할 수 있고, 제2 스토리지 장치(325)에 저장된 데이터에 제2 속도(v2)로 액세스할 수 있다. 여기서, 제1 속도(v1)와 제2 속도(v2)는 서로 다를 수 있다. 구체적으로, 제1 속도(v1)는 제2 속도(v2)보다 빠를 수 있다. 이러한 특성을 갖는 호스트(100), 제1 스토리지 장치(315) 및 제2 스토리지 장치(325)는 다양한 방법을 통해 구현이 가능할 수 있다.
먼저, 호스트(100)와 제1 스토리지 장치(315)를 연결하는 제1 인터페이스(310)와, 호스트(100)와 제2 스토리지 장치(325)를 연결하는 제2 인터페이스(320)가 서로 달라, 제1 속도(v1)와 제2 속도(v2)가 서로 다를 수 있다.
또한, 호스트(100)와 제1 스토리지 장치(315)를 연결하는 제1 인터페이스(310)와, 호스트(100)와 제2 스토리지 장치(325)를 연결하는 제2 인터페이스(320)는 서로 동일하나, 제1 스토리지 장치(315)와 제2 스토리지 장치(325)의 종류가 달라, 제1 속도(v1)와 제2 속도(v2)가 서로 다를 수 있다.
이러한 예시적인 구성에 관한 보다 구체적인 설명은 후술한다.
도 17은 도 16의 스토리지 시스템의 동작을 설명하기 위한 순서도이다. 도 18은 스토리지 시스템의 프리 패치 동작을 설명하기 위한 블록도이다. 도 19는 스토리지 시스템의 물리 어드레스 수정 동작을 설명하기 위한 블록도이다.
도 17을 참조하면, 호스트가 가상 어드레스를 통해 데이터에 접근한다(S800). 구체적으로, 도 16를 참조하면, 호스트(100)는 제2 가상 어드레스(305)를 통해 제2 스토리지 장치(325)에 액세스할 수 있다.
다음 도 17을 참조하면, 어드레스 예측 모듈이 다음 데이터를 예측한다(S810). 구체적으로 도 16를 참조하면, 제2 인터페이스(320)는 호스트(100)의 액세스된 정보를 제2 스토리지 장치(325)에 전송할 수 있다. 그리고, 제2 스토리지 장치(325)는 호스트(100)의 액세스 패턴을 분석하여 다음 액세스할 데이터를 예측할 수 있다.
다시 도 17을 참조하면, 메모리 컨트롤러가 다음 데이터를 제1 스토리지 장치로 프리 패치한다(S820). 구체적으로 도 16을 참조하면, 제2 스토리지 장치(325)는 예측된 데이터를 버스(330)를 통해 제1 스토리지 장치(315)로 프리 패치할 수 있다. 몇몇 실시예 중 하나인 도 18을 참조하면, 제2 스토리지 장치(625)는 DMA 엔진(640)을 통해 제1 스토리지 장치(615)로 프리 패치할 수 있다. DMA 엔진(640)에 대한 자세한 설명은 도 12에 설명한 바와 같다.
다음 도 17을 참조하면, 메모리 컨트롤러가 물리 어드레스를 수정한다(S830). 구체적으로 도 19을 참조하면, 제2 스토리지 장치(725)가 제1 스토리지 장치(715)로 예측된 데이터를 버스(730)를 통해 프리 패치한 후, 제2 스토리지 장치(725)의 메모리 컨트롤러(도시되지 않음)가 메모리 매니지먼트 유닛(740)을 통해 도 10의 설명과 같이 페이지 테이블 내 물리 어드레스를 수정할 수 있다.
마지막으로 다시 도 17을 참조하면, 호스트는 수정된 물리 어드레스를 통해 예측된 데이터에 접근한다(S840). 이에 대한 구체적인 동작은 도 11에 설명된 바와 같다.
도 20은 몇몇 실시예에 따른 스토리지 시스템의 블록도이다.
도 20을 참조하면, 제1 스토리지 장치(415)의 인터페이스는 DIMM 인터페이스(410)이고 제 2 스토리지 장치(425)의 인터페이스는 PCIe 인터페이스(420)를 포함할 수 있으나 이에 제한되는 것은 아니다.
PCIe 인터페이스(420)는 호스트(100)와 제2 스토리지 장치(425)의 통신을 위해서 점 대 점 유형의 직렬 상호연결을 구현할 수 있다. 복수의 PCIe 인터페이스(420)들은 스위치들을 사용하여 상호연결될 수 있으며, 이는 시스템에서 실제로 많은 수의 장치들을 함께 연결할 수 있음을 의미할 수 있다. 몇몇 실시예에서, PCIe 인터페이스(420)의 송신 및 수신 데이터 레이트는 2.5 Gbits/sec일 수 있으나 실시예들이 이에 제한되지 않는다.
PCIe 인터페이스(420)는 직렬 상호연결에 따라 장치 패키지당 몇 개의 핀들만 사용되므로 PCIe 인터페이스(420) 칩 및 보드 설계 비용을 감소시키며 보드 설계 복잡성을 감소시킬 수 있다. PCIe 인터페이스(420) 수행 또한 확장 가능할 수 있다.
도 21은 몇몇 실시예에 따른 스토리지 시스템의 블록도이다.
도 21을 참조하면, 스토리지 시스템(535)의 제1 스토리지 장치(515)는 DRAM을 포함하고, 제2 스토리지 장치(525)는 NVRAM을 포함할 수 있다.
제1 및 제2 인터페이스들(510, 520)은 서로 동일한 DIMM 인터페이스를 포함할 수 있으나 이에 제한되는 것은 아니다.
NVRAM은 PRAM, RRAM, MRAM, STT-MRAM, FeRAM를 포함할 수 있다. 이종의 메모리 소자들이 혼용될 수도 있으나 이에 제한되는 것은 아니다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 호스트
104: 메모리 매니지먼트 유닛
108: 변환 참조 버퍼 150, 155: 페이지 테이블
200, 230, 265, 820: 스토리지 장치
205, 235, 270: 인터페이스 210, 240, 275: 스토리지 영역
215, 800: 메모리 컨트롤러 220, 250, 295, 810: 프리 패처
225, 255, 298, 830: 어드레스 예측 모듈
335, 435, 535, 635, 735, 840: 스토리지 시스템
108: 변환 참조 버퍼 150, 155: 페이지 테이블
200, 230, 265, 820: 스토리지 장치
205, 235, 270: 인터페이스 210, 240, 275: 스토리지 영역
215, 800: 메모리 컨트롤러 220, 250, 295, 810: 프리 패처
225, 255, 298, 830: 어드레스 예측 모듈
335, 435, 535, 635, 735, 840: 스토리지 시스템
Claims (10)
- 제1 가상 어드레스를 이용하여 액세스되는 제1 데이터가 저장된 스토리지 영역; 및
상기 스토리지 영역에 저장된 데이터를 제어하는 메모리 컨트롤러를 포함하되,
상기 메모리 컨트롤러는,
상기 제1 가상 어드레스를 바탕으로 제2 가상 어드레스를 이용한 액세스가 예정된 제2 데이터를 예측하고,
상기 제2 데이터를 외부로 프리 패치(prefetch)하고,
상기 제2 가상 어드레스에 매핑(mapping)되는 물리 어드레스를 상기 프리 패치된 제2 데이터를 액세스 할 수 있도록 수정하는 스토리지 장치. - 제 1항에 있어서,
상기 메모리 컨트롤러는,
DMA(Direct Memory Access) 엔진을 통해 상기 제2 데이터를 상기 외부로 프리 패치하는 스토리지 장치. - 제 1항에 있어서,
상기 메모리 컨트롤러는,
호스트의 메모리 매니지먼트 유닛(MMU; Memory Management Unit)을 통해 상기 프리 패치된 제2 데이터가 액세스될 수 있도록 상기 메모리 매니지먼트 유닛을 제어하는 스토리지 장치. - 제 3항에 있어서,
상기 메모리 컨롤러는,
상기 호스트의 변환 참조 버퍼(TLB; Translation Lookaside Buffer) 내의 페이지 테이블에 등록된 물리 어드레스를 수정하는 스토리지 장치. - 제 1항에 있어서,
상기 스토리지 영역은, 데이터를 저장하는 메모리 소자와, 상기 메모리 소자에 저장된 데이터의 적어도 일부를 저장하는 버퍼 메모리를 포함하고,
상기 제2 데이터는 상기 외부로 프리 패치되기 전에 상기 버퍼 메모리에 저장되는 스토리지 장치. - 제 1항에 있어서,
상기 제1 가상 어드레스는 서로 연속된 제3 및 제4 가상 어드레스를 포함하고,
상기 제2 가상 어드레스는 상기 제4 가상 어드레스와 연속하고 상기 제3 가상 어드레스와 다른 가상 어드레스인 스토리지 장치. - 호스트로부터 제1 가상 어드레스를 이용하여 제1 속도로 그 내부에 저장된 데이터가 액세스되는 제1 스토리지 장치; 및
상기 호스트로부터 상기 제1 가상 어드레스와 다른 제2 가상 어드레스를 이용하여 상기 제1 속도와 다른 제2 속도로 그 내부에 저장된 데이터가 액세스되는 제2 스토리지 장치를 포함하되,
상기 제2 스토리지 장치는,
상기 제2 가상 어드레스를 바탕으로 상기 호스트가 액세스할 데이터를 예측하고,
상기 예측된 데이터를 상기 제1 스토리지 장치로 프리 패치(prefetch)하는 스토리지 시스템. - 제 7항에 있어서,
상기 제1 속도는 상기 제2 속도보다 빠른 스토리지 시스템. - 호스트로부터 제1 가상 어드레스를 이용하여 그 내부에 저장된 데이터가 액세스되는 제1 스토리지 장치; 및
상기 호스트로부터 상기 제1 가상 어드레스와 다르고 서로 인접한 제2 및 제3 가상 어드레스를 이용하여 그 내부에 저장된 데이터가 액세스되는 제2 스토리지 장치를 포함하되,
상기 제2 스토리지 장치는,
상기 제2 및 제3 가상 어드레스를 바탕으로 상기 호스트가 상기 제3 가상 어드레스와 인접한 제4 가상 어드레스를 이용하여 접근할 데이터를 예측하고, 상기 예측된 데이터를 상기 제1 스토리지 장치로 프리 패치(prefetch)하는 스토리지 시스템. - 제 9항에 있어서,
상기 제2, 제3 및 제4 가상 어드레스는 서로 일정한 간격을 갖도록 이격된 가상 어드레스인 스토리지 시스템.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180109068A KR102518095B1 (ko) | 2018-09-12 | 2018-09-12 | 스토리지 장치 및 시스템 |
US16/408,850 US10896136B2 (en) | 2018-09-12 | 2019-05-10 | Storage system including secondary memory that predicts and prefetches data |
CN201910676122.5A CN110895446A (zh) | 2018-09-12 | 2019-07-25 | 存储设备以及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180109068A KR102518095B1 (ko) | 2018-09-12 | 2018-09-12 | 스토리지 장치 및 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200030325A true KR20200030325A (ko) | 2020-03-20 |
KR102518095B1 KR102518095B1 (ko) | 2023-04-04 |
Family
ID=69719185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180109068A KR102518095B1 (ko) | 2018-09-12 | 2018-09-12 | 스토리지 장치 및 시스템 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10896136B2 (ko) |
KR (1) | KR102518095B1 (ko) |
CN (1) | CN110895446A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220033976A (ko) * | 2020-09-10 | 2022-03-17 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 저장 디바이스들에 대한 강화된 선판독 능력 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10796729B2 (en) | 2019-02-05 | 2020-10-06 | Micron Technology, Inc. | Dynamic allocation of a capacitive component in a memory device |
US11194726B2 (en) | 2019-02-25 | 2021-12-07 | Micron Technology, Inc. | Stacked memory dice for combined access operations |
US11860782B2 (en) * | 2019-08-13 | 2024-01-02 | Neuroblade Ltd. | Compensating for DRAM activation penalties |
US11650742B2 (en) * | 2019-09-17 | 2023-05-16 | Micron Technology, Inc. | Accessing stored metadata to identify memory devices in which data is stored |
US11269780B2 (en) * | 2019-09-17 | 2022-03-08 | Micron Technology, Inc. | Mapping non-typed memory access to typed memory access |
US11494311B2 (en) | 2019-09-17 | 2022-11-08 | Micron Technology, Inc. | Page table hooks to memory types |
US10963396B1 (en) | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
US11294808B2 (en) | 2020-05-21 | 2022-04-05 | Micron Technology, Inc. | Adaptive cache |
CN113703660B (zh) * | 2020-05-22 | 2024-03-19 | 超聚变数字技术有限公司 | 数据预取方法和数据预取装置 |
US20210390053A1 (en) * | 2020-06-15 | 2021-12-16 | Micron Technology, Inc. | Host-Assisted Memory-Side Prefetcher |
US20210397380A1 (en) * | 2020-06-23 | 2021-12-23 | Micron Technology, Inc. | Dynamic page activation |
US11422934B2 (en) | 2020-07-14 | 2022-08-23 | Micron Technology, Inc. | Adaptive address tracking |
US11409657B2 (en) | 2020-07-14 | 2022-08-09 | Micron Technology, Inc. | Adaptive address tracking |
US11693779B2 (en) | 2021-04-30 | 2023-07-04 | International Business Machines Corporation | Prefetch of random data using application tags |
US20230057633A1 (en) * | 2021-08-20 | 2023-02-23 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for transferring data between interconnected devices |
US20230063123A1 (en) * | 2021-08-26 | 2023-03-02 | SK Hynix Inc. | Memory module, memory system including memory module, and method of operating the same |
US12079493B2 (en) * | 2021-11-17 | 2024-09-03 | Samsung Electronics Co., Ltd. | Storage devices and methods of operating storage devices |
US11989142B2 (en) * | 2021-12-10 | 2024-05-21 | Samsung Electronics Co., Ltd. | Efficient and concurrent model execution |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105939A1 (en) * | 2001-11-30 | 2003-06-05 | Cooksey Robert N. | Method and apparatus for next-line prefetching from a predicted memory address |
KR20170088933A (ko) * | 2014-11-28 | 2017-08-02 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 파일 액세스 방법 및 장치 및 스토리지 디바이스 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040088490A1 (en) * | 2002-11-06 | 2004-05-06 | Subir Ghosh | Super predictive fetching system and method |
US8806177B2 (en) * | 2006-07-07 | 2014-08-12 | International Business Machines Corporation | Prefetch engine based translation prefetching |
US8024547B2 (en) * | 2007-05-01 | 2011-09-20 | Vivante Corporation | Virtual memory translation with pre-fetch prediction |
JP5154200B2 (ja) | 2007-11-09 | 2013-02-27 | 株式会社日立製作所 | データ読出し方法、データ管理システム及びストレージシステム |
KR20100039179A (ko) | 2008-10-07 | 2010-04-15 | 삼성전자주식회사 | 메모리 장치의 상태를 검사하는 메모리 시스템, 저장 장치,그리고 메모리 컨트롤러 |
US8327066B2 (en) * | 2008-09-30 | 2012-12-04 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
JP5036078B2 (ja) | 2010-04-12 | 2012-09-26 | ルネサスエレクトロニクス株式会社 | 記憶装置 |
US9092358B2 (en) * | 2011-03-03 | 2015-07-28 | Qualcomm Incorporated | Memory management unit with pre-filling capability |
US9110677B2 (en) * | 2013-03-14 | 2015-08-18 | Sandisk Technologies Inc. | System and method for predicting and improving boot-up sequence |
CN105359115A (zh) * | 2013-07-01 | 2016-02-24 | 惠普发展公司,有限责任合伙企业 | 包含虚拟地址空间和物理地址空间之间的映射的数据结构的查找 |
US9785545B2 (en) * | 2013-07-15 | 2017-10-10 | Cnex Labs, Inc. | Method and apparatus for providing dual memory access to non-volatile memory |
JP5999536B2 (ja) | 2013-08-29 | 2016-09-28 | 株式会社日立製作所 | 計算機及びデータ読み出し方法 |
WO2015039352A1 (zh) * | 2013-09-23 | 2015-03-26 | 华为技术有限公司 | 缓存数据的方法和存储系统 |
KR102614631B1 (ko) * | 2013-10-21 | 2023-12-19 | 에프엘씨 글로벌 리미티드 | 최종 레벨 캐시 시스템 및 이에 대응하는 방법 |
US9582204B2 (en) | 2014-01-07 | 2017-02-28 | Apple Inc. | Speculative prefetching of data stored in flash memory |
US9529722B1 (en) * | 2014-07-31 | 2016-12-27 | Sk Hynix Memory Solutions Inc. | Prefetch with localities and performance monitoring |
US20170024145A1 (en) * | 2015-07-23 | 2017-01-26 | Qualcomm Incorporated | Address translation and data pre-fetch in a cache memory system |
US9990296B2 (en) | 2015-07-31 | 2018-06-05 | Oracle International Corporation | Systems and methods for prefetching data |
-
2018
- 2018-09-12 KR KR1020180109068A patent/KR102518095B1/ko active IP Right Grant
-
2019
- 2019-05-10 US US16/408,850 patent/US10896136B2/en active Active
- 2019-07-25 CN CN201910676122.5A patent/CN110895446A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105939A1 (en) * | 2001-11-30 | 2003-06-05 | Cooksey Robert N. | Method and apparatus for next-line prefetching from a predicted memory address |
KR20170088933A (ko) * | 2014-11-28 | 2017-08-02 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 파일 액세스 방법 및 장치 및 스토리지 디바이스 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220033976A (ko) * | 2020-09-10 | 2022-03-17 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 저장 디바이스들에 대한 강화된 선판독 능력 |
Also Published As
Publication number | Publication date |
---|---|
CN110895446A (zh) | 2020-03-20 |
US10896136B2 (en) | 2021-01-19 |
US20200081848A1 (en) | 2020-03-12 |
KR102518095B1 (ko) | 2023-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102518095B1 (ko) | 스토리지 장치 및 시스템 | |
JP6796304B2 (ja) | 最終レベルキャッシュシステム及び対応する方法 | |
KR102683696B1 (ko) | 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법 | |
US11379381B2 (en) | Main memory device having heterogeneous memories, computer system including the same, and data management method thereof | |
US20180074757A1 (en) | Switch and memory device | |
KR20050005553A (ko) | 내부 캐쉬 및/또는 메모리 액세스 예측을 지닌 메모리 허브 | |
US8984225B2 (en) | Method to improve the performance of a read ahead cache process in a storage array | |
CN111143234A (zh) | 存储设备、包括这种存储设备的系统及其操作方法 | |
CN115495389B (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
US10459662B1 (en) | Write failure handling for a memory controller to non-volatile memory | |
CN112445423A (zh) | 存储器系统、计算机系统及其数据管理方法 | |
WO2023125524A1 (zh) | 数据存储方法、系统、存储访问配置方法及相关设备 | |
CN114546902A (zh) | 基于多协议访问存储器的系统、设备和方法 | |
US10528474B2 (en) | Pre-allocating cache resources for a range of tracks in anticipation of access requests to the range of tracks | |
US10235054B1 (en) | System and method utilizing a cache free list and first and second page caches managed as a single cache in an exclusive manner | |
CN113468083B (zh) | 一种双端口NVMe控制器及控制方法 | |
CN112703481B (zh) | 混合式存储器系统接口 | |
US11868270B2 (en) | Storage system and storage device, and operating method thereof | |
US10180904B2 (en) | Cache memory and operation method thereof | |
CN116340203A (zh) | 数据预读取方法、装置、处理器及预取器 | |
JP7067256B2 (ja) | データ転送装置およびデータ転送方法 | |
US20240211406A1 (en) | Systems, methods, and apparatus for accessing data from memory or storage at a storage node | |
US11809341B2 (en) | System, device and method for indirect addressing | |
CN116049031B (zh) | 数据处理方法、装置、电子设备和存储介质 | |
US20240086110A1 (en) | Data storage method, storage apparatus and host |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |