KR102177315B1 - 플러시 제어 로직을 포함하는 입출력 인터셉터 로직, 및 그 입출력 인터셉터 로직을 이용하여 컴퓨터로 구현되는 방법 - Google Patents

플러시 제어 로직을 포함하는 입출력 인터셉터 로직, 및 그 입출력 인터셉터 로직을 이용하여 컴퓨터로 구현되는 방법 Download PDF

Info

Publication number
KR102177315B1
KR102177315B1 KR1020150065399A KR20150065399A KR102177315B1 KR 102177315 B1 KR102177315 B1 KR 102177315B1 KR 1020150065399 A KR1020150065399 A KR 1020150065399A KR 20150065399 A KR20150065399 A KR 20150065399A KR 102177315 B1 KR102177315 B1 KR 102177315B1
Authority
KR
South Korea
Prior art keywords
write
input
output
outputs
flush
Prior art date
Application number
KR1020150065399A
Other languages
English (en)
Other versions
KR20160016562A (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 삼성전자주식회사
Publication of KR20160016562A publication Critical patent/KR20160016562A/ko
Application granted granted Critical
Publication of KR102177315B1 publication Critical patent/KR102177315B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

본 발명은 입출력 인터페이스, 하나 이상의 임시 쓰기 홀딩 버퍼들, 순서 변경 로직부, 및 플러시 제어 로직부를 포함하는 입출력 인터셉터 로직을 제공한다. 입출력 인터페이스는 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트한다. 임시 쓰기 홀딩 버퍼는 입출력 인터페이스로부터 제공받은 쓰기 입출력들을 저장한다. 순서 변경 로직부는 임시 쓰기 홀딩 버퍼에 저장된 쓰기 입출력들의 순서를 변경하고, 변경된 순서의 쓰기 입출력들을 결합하여 결합된 쓰기 입출력을 생성한다. 플러시 제어 로직부는 쓰기 입출력들을 불휘발성 스토리지 장치에 저장하기 전에 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션으로 알리고, 플러시 요청들 중에서 선택된 플러시 요청, 누적된 데이터의 문턱량, 설정된 시간의 만료 중 적어도 하나에 응답하여 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되게 한다. 본 발명에 따르면, 개별적인 쓰기 입출력들 각각에 의해 발생하는 오버헤드를 줄임으로써, 데이터 저장의 성능이 향상될 수 있다.

Description

플러시 제어 로직을 포함하는 입출력 인터셉터 로직, 및 그 입출력 인터셉터 로직을 이용하여 컴퓨터로 구현되는 방법{INPUT/OUTPUT INTERCEPTOR LOGIC INCLUDING FLUSH CONTROL LOGIC, AND COMPUTER-IMPLEMENTED METHOD USING THE INPUT/OUTPUT INTERCEPTOR LOGIC}
본 발명은 컴퓨터에 구비되는(Computerized) 저장 기법에 관한 것으로, 좀 더 구체적으로는 이동식 전화기, 태블릿과 같은 컴퓨터화된 장치의 스토리지 스택(Storage Stack)에 내장되는(Embedded) 플러시 컨트롤 로직(Flush Control Logic)을 이용하는 입출력 인터셉터(Interceptor) 로직에 관한 것이다.
이동식 전화기, 태블릿과 같은 이동식 장치의 성능 향상에 대한 요구가 증가하고 있다. 카메라, 계산기, 개인용 컴퓨터, 서버, GPS(Global Positioning System) 장치들 등과 같은 여러 가지의 별개 장치들에 의해 수행되던 기능들이 근래 통합되어 이동식 장치에 의해 다루어지고 있다. 이동식 장치에서, 프로세서의 성능 및 데이터의 무선 전송 속도가 꾸준히 향상되는 동안, 로컬 스토리지 스택(Local Storage Stack)의 성능은 그만큼 빠르게 향상되지 않았다. 데이터의 일관성(Consistency)을 보장하기 위해 이용되는 플러시 요청은 성능 향상에 장애가 되었다. 이는 플러시 명령이 실행되는 동안 입출력이 중단되기 때문이다. 결과적으로, 스토리지 스택 및 그와 관련된 로컬 스토리지 장치들은 모바일 장치의 성능의 병목(Bottleneck)으로 되어 왔다.
위와 같은 문제를 해결하기 위해, 플러시 컨트롤 로직을 이용하는 입출력 인터셉터 로직이 제공된다. 본 발명의 실시 예에서, 플러시 컨트롤 로직은 어플리케이션(Application)으로부터 발생하는 쓰기 입출력들을 불휘발성 스토리지 장치에 저장하기 전에 쓰기 입출력 완료를 어플리케이션으로 알릴 수 있다. 쓰기 입출력들은 어플리케이션의 플러시 요청들 중에서 선택된 N번째 플러시 요청이 발생할 때까지 임시 쓰기 홀딩 버퍼에 누적되고, 하나의 쓰기 입출력으로 결합될 수 있다. 플러시 컨트롤 로직은 선택된 N번째 플러시 요청에 응답하여, 결합된 쓰기 입출력을 불휘발성 스토리지 장치로 전달할 수 있다.
본 발명의 일 실시 예에 따른 입출력 인터셉터 로직은, 스토리지 스택과 통신하도록 연결되고, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하도록 구성되는 입출력 인터페이스; 입출력 인터페이스로부터 복수의 쓰기 입출력을 제공받고, 복수의 쓰기 입출력을 저장하도록 구성되는 하나 이상의 임시 쓰기 홀딩 버퍼들; 하나 이상의 임시 쓰기 홀딩 버퍼들과 통신하도록 연결되고, 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 복수의 쓰기 입출력의 순서를 변경하고 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하도록 구성되는 순서 변경 로직부; 및 입출력 인터페이스로부터 복수의 플러시 요청을 제공받고, 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리고, 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되게 하도록 구성되는 플러시 제어 로직부를 포함할 수 있다.
실시 예로서, 선택된 플러시 요청은 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고, N은 미리 선택된 양의 정수 값을 가질 수 있다.
실시 예로서, 선택된 플러시 요청은 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고, N은 3 이상의 정수일 수 있다.
실시 예로서, 입출력 인터페이스는: 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 1 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 2 플러시 요청, 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 복수의 플러시 요청 중 제 3 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 선택된 플러시 요청을 인터셉트하도록 구성될 수 있다.
실시 예로서, 순서 변경 로직부는: 데이터 쓰기 입출력의 제 1 서브셋, 메타데이터 쓰기 입출력의 제 1 서브셋, 데이터 쓰기 입출력의 제 2 서브셋, 및 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 복수의 쓰기 입출력의 순서를 변경하여 복수의 쓰기 입출력과 관련된 논리 블록 어드레스들을 오름차순 또는 내림차순으로 배열하고; 데이터 쓰기 입출력의 제 1 서브셋, 메타데이터 쓰기 입출력의 제 1 서브셋, 데이터 쓰기 입출력의 제 2 서브셋, 및 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하도록 구성될 수 있다.
실시 예로서, 순서 변경 로직부는: 복수의 쓰기 입출력, 헤더, 및 푸터를 재매핑 메모리부에 복사하여 결합된 쓰기 입출력을 생성하도록 구성되되, 결합된 쓰기 입출력에 포함되는 복수의 쓰기 입출력에 각각 대응하는 복수의 논리 블록 어드레스는 오름차순 또는 내림차순으로 배열되고, 결합된 쓰기 입출력에 포함되는 복수의 쓰기 입출력 각각은 재매핑 메모리부에서 물리적으로 서로 인접할 수 있다.
실시 예로서, 플러시 제어 로직부는: 선택된 플러시 요청에 응답하여, 각각이 물리적으로 서로 인접하는 복수의 쓰기 입출력을 포함하는 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되게 하도록 구성될 수 있다.
실시 예로서, 순서 변경 로직부는: 복수의 쓰기 입출력에 포함되는 무작위의 쓰기 입출력들을 순차적인 쓰기 입출력들로 변환하도록 구성될 수 있다.
본 발명의 다른 실시 예에 따른 입출력 인터셉터 로직은, 스토리지 스택과 통신하도록 연결되고, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하도록 구성되는 입출력 인터페이스; 입출력 인터페이스로부터 복수의 쓰기 입출력을 제공받고, 복수의 쓰기 입출력을 저장하도록 구성되는 복수의 임시 쓰기 홀딩 버퍼; 복수의 임시 쓰기 홀딩 버퍼를 홀드하도록 구성되는 멀티 버퍼 홀딩 큐; 및 입출력 인터페이스로부터 복수의 플러시 요청을 제공받고, 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리고, 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여 멀티 버퍼 홀딩 큐가 복수의 쓰기 입출력을 복수의 임시 쓰기 홀딩 버퍼로부터 불휘발성 스토리지 장치로 전달하게 하도록 구성되는 플러시 제어 로직부를 포함할 수 있다.
실시 예로서, 입출력 인터페이스는: 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 1 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 2 플러시 요청, 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 복수의 플러시 요청 중 제 3 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 선택된 플러시 요청을 인터셉트하도록 구성될 수 있다.
실시 예로서, 복수의 임시 쓰기 홀딩 버퍼는 제 1 임시 쓰기 홀딩 버퍼, 제 2 임시 쓰기 홀딩 버퍼, 제 3 임시 쓰기 홀딩 버퍼, 및 제 4 임시 쓰기 홀딩 버퍼를 포함할 수 있다. 나아가, 플러시 제어 로직부는: 데이터 쓰기 입출력의 제 1 서브셋이 제 1 임시 쓰기 홀딩 버퍼에 저장되게 하고, 메타데이터 쓰기 입출력의 제 1 서브셋이 제 2 임시 쓰기 홀딩 버퍼에 저장되게 하고, 데이터 쓰기 입출력의 제 2 서브셋이 제 3 임시 쓰기 홀딩 버퍼에 저장되게 하고, 메타데이터 쓰기 입출력의 제 2 서브셋이 제 4 임시 쓰기 홀딩 버퍼에 저장되게 하도록 구성될 수 있다.
본 발명의 또 다른 실시 예에 따라 입출력 인터셉터 로직을 이용하여 어플리케이션으로부터 입출력들을 인터셉트하기 위해 컴퓨터로 구현되는 방법은, 입출력 인터셉터 로직의 입출력 인터페이스에 의해, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 단계; 입출력 인터페이스에 의해 인터셉트된 복수의 쓰기 입출력을 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장하는 단계; 입출력 인터셉터 로직의 순서 변경 로직부에 의해, 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 복수의 쓰기 입출력의 순서를 변경하는 단계; 순서 변경 로직부에 의해, 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하는 단계; 입출력 인터셉터 로직의 플러시 제어 로직부에 의해, 입출력 인터페이스로부터 복수의 플러시 요청을 제공받는 단계; 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 플러시 제어 로직부에 의해, 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리는 단계; 및 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여, 플러시 제어 로직부에 의해, 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되도록 하는 단계를 포함할 수 있다.
실시 예로서, 인터셉트하는 단계는: 입출력 인터페이스에 의해, 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 1 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 2 플러시 요청, 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 복수의 플러시 요청 중 제 3 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 선택된 플러시 요청을 인터셉트하는 단계를 포함할 수 있다.
실시 예로서, 변경하는 단계는: 순서 변경 로직부에 의해, 데이터 쓰기 입출력의 제 1 서브셋, 메타데이터 쓰기 입출력의 제 1 서브셋, 데이터 쓰기 입출력의 제 2 서브셋, 및 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 복수의 쓰기 입출력의 순서를 변경하는 단계를 포함할 수 있다. 나아가, 생성하는 단계는: 순서 변경 로직부에 의해, 데이터 쓰기 입출력의 제 1 서브셋, 메타데이터 쓰기 입출력의 제 1 서브셋, 데이터 쓰기 입출력의 제 2 서브셋, 및 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성할 수 있다.
실시 예로서, 생성하는 단계는: 순서 변경 로직부에 의해, 복수의 쓰기 입출력, 헤더, 및 푸터를 재매핑 메모리부에 복사하여 결합된 쓰기 입출력을 생성하는 단계를 포함하되, 결합된 쓰기 입출력에 포함되는 복수의 쓰기 입출력에 각각 대응하는 복수의 논리 블록 어드레스는 오름차순 또는 내림차순으로 배열되고, 결합된 쓰기 입출력에 포함되는 복수의 쓰기 입출력 각각은 재매핑 메모리부에서 물리적으로 서로 인접할 수 있다.
실시 예로서, 저장되도록 하는 단계는: 선택된 플러시 요청에 응답하여, 플러시 제어 로직부에 의해, 각각이 물리적으로 서로 인접하는 복수의 쓰기 입출력을 포함하는 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되도록 하는 단계를 포함할 수 있다.
본 발명의 또 다른 실시 예에 따른 비일시적으로 컴퓨터로 읽히는 저장 매체는 컴퓨팅 장치 및 입출력 인터셉터 로직을 이용하여 처리되는 명령어를 저장할 수 있다. 저장된 명령어는: 입출력 인터셉터 로직의 입출력 인터페이스에 의해, 컴퓨팅 장치에서 실행되는 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 단계; 입출력 인터페이스에 의해 인터셉트된 복수의 쓰기 입출력을 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장하는 단계; 입출력 인터셉터 로직의 순서 변경 로직부에 의해, 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 복수의 쓰기 입출력의 순서를 변경하는 단계; 순서 변경 로직부에 의해, 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하는 단계; 입출력 인터셉터 로직의 플러시 제어 로직부에 의해, 입출력 인터페이스로부터 복수의 플러시 요청을 제공받는 단계; 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 플러시 제어 로직부에 의해, 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리는 단계; 및 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여, 플러시 제어 로직부에 의해, 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되도록 하는 단계를 컴퓨팅 장치에서 실행하도록 구성될 수 있다.
본 발명의 또 다른 실시 예에 따라 입출력 인터셉터 로직을 이용하여 어플리케이션으로부터 입출력들을 인터셉트하기 위해 컴퓨터로 구현되는 방법은, 입출력 인터셉터 로직의 입출력 인터페이스에 의해, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 단계; 입출력 인터페이스에 의해 인터셉트된 복수의 쓰기 입출력을 복수의 임시 쓰기 홀딩 버퍼에 저장하는 단계; 입출력 인터셉터 로직의 멀티 버퍼 홀딩 큐에 의해, 복수의 임시 쓰기 홀딩 버퍼를 홀드하는 단계; 입출력 인터셉터 로직의 플러시 제어 로직부에 의해, 입출력 인터페이스로부터 복수의 플러시 요청을 제공받는 단계; 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 플러시 제어 로직부에 의해, 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리는 단계; 및 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여, 플러시 제어 로직부에 의해, 멀티 버퍼 홀딩 큐가 복수의 쓰기 입출력을 복수의 임시 쓰기 홀딩 버퍼로부터 불휘발성 스토리지 장치로 전달하도록 하는 단계를 포함할 수 있다.
실시 예로서, 인터셉트하는 단계는: 입출력 인터페이스에 의해, 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 1 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 2 플러시 요청, 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 복수의 플러시 요청 중 제 3 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 선택된 플러시 요청을 인터셉트하는 단계를 포함할 수 있다.
실시 예로서, 복수의 임시 쓰기 홀딩 버퍼는 제 1 임시 쓰기 홀딩 버퍼, 제 2 임시 쓰기 홀딩 버퍼, 제 3 임시 쓰기 홀딩 버퍼, 및 제 4 임시 쓰기 홀딩 버퍼를 포함할 수 있다. 나아가, 저장하는 단계는: 플러시 제어 로직부에 의해, 데이터 쓰기 입출력의 제 1 서브셋이 제 1 임시 쓰기 홀딩 버퍼에 저장되게 하고, 메타데이터 쓰기 입출력의 제 1 서브셋이 제 2 임시 쓰기 홀딩 버퍼에 저장되게 하고, 데이터 쓰기 입출력의 제 2 서브셋이 제 3 임시 쓰기 홀딩 버퍼에 저장되게 하고, 메타데이터 쓰기 입출력의 제 2 서브셋이 제 4 임시 쓰기 홀딩 버퍼에 저장되게 하는 단계를 포함할 수 있다.
본 발명의 또 다른 실시 예에 따른 비일시적으로 컴퓨터로 읽히는 저장 매체는 컴퓨팅 장치 및 입출력 인터셉터 로직을 이용하여 처리되는 명령어를 저장할 수 있다. 저장된 명령어는: 입출력 인터셉터 로직의 입출력 인터페이스에 의해, 컴퓨팅 장치에서 실행되는 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 단계; 입출력 인터페이스에 의해 인터셉트된 복수의 쓰기 입출력을 복수의 임시 쓰기 홀딩 버퍼에 저장하는 단계; 입출력 인터셉터 로직의 멀티 버퍼 홀딩 큐에 의해, 복수의 임시 쓰기 홀딩 버퍼를 홀드하는 단계; 입출력 인터셉터 로직의 플러시 제어 로직부에 의해, 입출력 인터페이스로부터 복수의 플러시 요청을 제공받는 단계; 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 플러시 제어 로직부에 의해, 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리는 단계; 및 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여, 플러시 제어 로직부에 의해, 멀티 버퍼 홀딩 큐가 복수의 쓰기 입출력을 복수의 임시 쓰기 홀딩 버퍼로부터 불휘발성 스토리지 장치로 전달하도록 하는 단계를 컴퓨팅 장치에서 실행하도록 구성될 수 있다.
본 발명의 또 다른 실시 예에 따른 시스템은 어플리케이션 스페이스, 커널 스페이스, 및 하나 이상의 물리적인 하드웨어 장치들을 포함하는 이동식 장치; 및 커널 스페이스에서 동작하도록 구성되는 입출력 인터셉터 로직부를 포함할 수 있다. 이 실시 예에서, 입출력 인터셉터 로직부는: 스토리지 스택과 통신하도록 연결되고, 어플리케이션 스페이스의 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하도록 구성되는 입출력 인터페이스; 입출력 인터페이스로부터 복수의 쓰기 입출력을 제공받고, 복수의 쓰기 입출력을 저장하도록 구성되는 하나 이상의 임시 쓰기 홀딩 버퍼들; 하나 이상의 임시 쓰기 홀딩 버퍼들과 통신하도록 연결되고, 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 복수의 쓰기 입출력의 순서를 변경하고 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하도록 구성되는 순서 변경 로직부; 및 입출력 인터페이스로부터 복수의 플러시 요청을 제공받고, 복수의 쓰기 입출력을 하나 이상의 물리적인 하드웨어 장치들에 포함되는 불휘발성 스토리지 장치에 저장하지 않고 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리고, 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되게 하도록 구성되는 플러시 제어 로직부를 포함할 수 있다.
본 발명의 실시 예에 따르면, 개별적인 쓰기 입출력들 각각이 독립적으로 불휘발성 스토리지 장치로 전송됨에 따라 발생하는 오버헤드(Overhead)를 줄임으로써, 데이터 저장의 성능이 향상될 수 있다. 나아가, 데이터가 더 효율적으로 기록될 수 있기 때문에, 전력 소모(예컨대, 이동식 장치에 포함되는 배터리의 소모)가 감소할 수 있다.
도 1은 본 발명의 실시 예에 따른 시스템 스택(System Stack)을 보여주는 블록도이다.
도 2는 도 1의 시스템 스택에 포함되는 여러 구성 요소들을 보여주는 개념도이다.
도 3은 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 순서 변경(Re-order) 로직부 및 임시 쓰기 홀딩 버퍼(Temporary Write Holding Buffer)를 보여주는 개념도이다.
도 4는 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 순서 변경 로직부, 및 재매핑(Re-mapped) 메모리부를 보여주는 개념도이다.
도 5는 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 플러시 제어 로직부 및 임시 쓰기 홀딩 버퍼들을 보여주는 개념도이다.
도 6은 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 플러시 제어 로직부 및 임시 쓰기 홀딩 버퍼들을 보여주는 다른 개념도이다.
도 7 내지 도 12는 본 발명의 실시 예에 따른 도 1의 입출력 인터셉터 로직부가 내장될 수 있는 다양한 장치들을 보여주는 개념도들이다.
도 13은 본 발명의 실시 예에 따른 입출력 인터셉터 로직부를 이용하여 어플리케이션으로부터 입출력들을 인터셉트하는 방법을 설명하는 흐름도이다.
도 14는 본 발명의 실시 예에 따른 입출력 인터셉터 로직부를 이용하여 어플리케이션으로부터 입출력들을 인터셉트하는 다른 방법을 설명하는 흐름도이다.
도 15는 본 발명의 실시 예에 따른 입출력 인터셉터 로직부를 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 갖는다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다.
본 발명의 실시 예는 ARM 프로세서와 같은 프로세서에 의해 구현될 수 있다. 다른 종류의 프로세서 또는 ASICs(Application Specific Integrated Circuits) 및/또는 펌웨어(Firmware) 역시 본 발명의 실시 예를 구현하기 위해 이용될 수 있다. 본 발명의 실시 예는 스마트폰, 태블릿, 노트북 컴퓨터 등과 같은 다양한 이동식 장치, 또는 데스크톱 컴퓨터, 라우터 등과 같은 다양한 고정식 장치들의 프로세서 및/또는 메모리 모듈 내에 구현될 수 있다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.
도 1은 본 발명의 실시 예에 따른 시스템 스택(System Stack)을 보여주는 블록도이다. 시스템 스택(100)은 어플리케이션 스페이스(Application Space; 105), 커널 스페이스(Kernal Space; 110), 및 물리적인 하드웨어 장치들(115)을 포함할 수 있다. 본 발명의 일 실시 예에 따르면, 커널 스페이스(110) 내에서 입출력 인터셉터(Interceptor) 로직부(120)가 동작할 수 있다. 다른 실시 예에서, 입출력 인터셉터 로직부(120)는 어플리케이션 스페이스(105) 내에서 동작하거나, 다른 적당한 컴퓨팅 장치의 다른 부분 또는 스페이스에 내장되어 동작할 수 있다. 시스템 스택(100)은, 예로서, 스마트폰, 태블릿, 카메라, 랩톱, 컴퓨터 등과 같은 이동식 장치에 포함될 수 있는데, 이는 뒤에서 더 설명될 것이다.
도 1에 나타낸 것과 같이, 시스템 스택(100)은 스토리지 스택(Storage Stack; 125)을 포함할 수 있다. 스토리지 스택(125)은 어플리케이션 스페이스(105)의 하나 이상의 어플리케이션들(130; 예컨대, 어플리케이션(132))과 물리적인 하드웨어 장치들(115)의 하나 이상의 불휘발성 스토리지 장치들(135) 사이에서 입출력의 송신 및 수신을 가능하게 할 수 있다. 하나 이상의 불휘발성 스토리지 장치들(135)은 SSD(Solid State Drive; 140), 플래시 메모리(Flash Memory; 145), HDD(Hard Disk Drive; 150) 등을 포함할 수 있다.
입출력 인터셉터 로직부(120)는 입출력 인터페이스(Input/Output Interface; 155), 하나 이상의 임시 쓰기 홀딩 버퍼들(Temporary Write Holding Buffers; 160), 순서 변경(Re-order) 로직부(165), 및 플러시(Flush) 제어 로직부(170)를 포함할 수 있다. 입출력 인터페이스(155)는 스토리지 스택(125)과 연결되어 통신할 수 있다. 입출력 인터셉터 로직부(120)는 플러시 요청들을 포함하여, 어플리케이션들(130; 예컨대, 어플리케이션(132))로부터 발생하는 모든 입출력들을 인터셉트할 수 있다. 예로서, 입출력 인터페이스(155)는 어플리케이션들(130; 예컨대, 어플리케이션(132))로부터 발생하는 쓰기 입출력들, 읽기 입출력들, 및 플러시 요청들을 인터셉트할 수 있다.
하나 이상의 임시 쓰기 홀딩 버퍼들(160)은 입출력 인터페이스(155)로부터 쓰기 입출력들을 제공받고, 그 쓰기 입출력들을 저장할 수 있다. 하나 이상의 임시 쓰기 홀딩 버퍼들(160)은 시스템 메모리의 여유 공간으로부터 미리 할당될 수 있다.
순서 변경 로직부(165)는 하나 이상의 임시 쓰기 홀딩 버퍼들(160)과 연결되어 통신할 수 있다. 순서 변경 로직부(165)는 하나 이상의 임시 쓰기 홀딩 버퍼들(160)에 저장된 쓰기 입출력들의 순서를 변경할 수 있다. 순서 변경 로직부(165)는 변경된 순서의 쓰기 입출력들을 결합하여, 결합된 쓰기 입출력을 생성할 수 있는데, 이는 뒤에서 더 설명될 것이다.
플러시 제어 로직부(170)는 입출력 인터페이스(155)로부터 플러시 요청들을 제공받을 수 있다. 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들(135) 중 어딘가에 실제로 기록되지 않더라도, 플러시 제어 로직부(170)는 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션들(130; 예컨대, 어플리케이션(132))로 알릴 수 있다. 실제로는 쓰기 입출력들이 특정 시점에 하나 이상의 불휘발성 스토리지 장치들(135)로 전달되지 않은 동안, 어플리케이션(132)은 쓰기 입출력들이 완료된 것으로 인식할 수 있다. 다시 말해, 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들(135) 중 어딘가에 실제로 기록되기 전에, 플러시 제어 로직부(170)는 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션(132)으로 알릴 수 있다. 플러시 제어 로직부(170)는 플러시 요청들 중에서 선택된 N번째 플러시 요청에 응답하여(또는, 다른 기준에 따라서), 결합된 쓰기 입출력이 하나 이상의 불휘발성 스토리지 장치들(135)에 기록되도록 할 수 있는데, 이는 뒤에서 더 설명될 것이다.
도 2는 도 1의 시스템 스택에 포함되는 여러 구성 요소들을 보여주는 개념도이다. 도 2는 본 발명의 실시 예에 따라 시간의 흐름에 대해 발생하는 일련의 이벤트들을 보여준다.
입출력 인터페이스(155)는, 예로서, 어플리케이션(132)으로부터 발생하는 데이터 쓰기 입출력들(D1; 즉, W01 내지 Wn3), 메타데이터(Metadata) 쓰기 입출력들(M1; 즉, W04 내지 Wn6), 데이터 쓰기 입출력들(D2; 즉, W07 내지 Wn9), 메타데이터 쓰기 입출력들(M2; 즉, W010 내지 Wn12), 및 플러시 요청들(F0, F1, F2, F3, Fn)을 포함하는 쓰기 입출력들을 인터셉트할 수 있다. 하나 이상의 임시 쓰기 홀딩 버퍼들(160)은 입출력 인터페이스(155)로부터 쓰기 입출력들을 제공받고, 그 쓰기 입출력들을 저장할 수 있다. 하나 이상의 임시 쓰기 홀딩 버퍼들(160)에 데이터가 저장되어 있는 동안 어플리케이션(132)으로부터 읽기 입출력이 제공된 경우, 입출력 인터셉터 로직부(120)는 하나 이상의 임시 쓰기 홀딩 버퍼들(160)에 저장되어 있는 데이터의 사본을 이용하여 읽기 입출력 요청을 처리하거나, 또는, 재매핑된(Re-mapped) 메모리 위치를 이용할 수 있는데, 이는 뒤에서 더 설명될 것이다.
순서 변경 로직부(165)는 하나 이상의 임시 쓰기 홀딩 버퍼들(160)에 저장된 쓰기 입출력들의 순서를 변경할 수 있는데, 이는 뒤에서 더 설명될 것이다. 순서 변경 로직부(165)는 무작위의(Random) 쓰기 입출력들을 순차적인(Sequential) 쓰기 입출력들로 변환할 수 있다. 순서 변경 로직부(165)는 변경된 순서의 쓰기 입출력들(예컨대, D1, M1, D2, 및 M2)을 결합하여, 결합된 쓰기 입출력(CW)을 생성할 수 있다.
플러시 제어 로직부(170)는 입출력 인터페이스(155)로부터 플러시 요청들(F0, F1, F2, F3, Fn)을 제공받을 수 있다. 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들(135) 중 어딘가에 실제로 기록되지 않더라도, 플러시 제어 로직부(170)는 쓰기 입출력들에 대응하는 완료 메시지들(CM0, CM1, CM2, CM3, CMn)을 이용하여 쓰기 입출력 완료를 어플리케이션(132)으로 알릴 수 있다. 다시 말해, 플러시 제어 로직부(170)는 플러시 요청들 각각에 대해 거의 즉시 응답할 수 있다. 이로써, 어플리케이션(132)은, 불휘발성 스토리지 장치들(135) 중 하나에 대해 플러시 요청이 실제로 완료되는 것을 기다릴 필요 없이, 추가의 쓰기 입출력들을 계속 전송할 수 있다. 따라서, 어플리케이션(132)의 성능이 현저히 향상될 수 있다. 다시 말해, 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들(135) 중 어딘가에 실제로 기록되기 전에, 플러시 제어 로직부(170)는 쓰기 입출력들에 대응하는 완료 메시지들(CM0, CM1, CM2, CM3, CMn)을 이용하여 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션(132)으로 알릴 수 있다.
쓰기 입출력들이 하나 이상의 임시 쓰기 홀딩 버퍼들(160)에 저장되기 때문에, 플러시 제어 로직부(170)는 시간이 조금 더 흐른 뒤 결합된 쓰기 입출력(CW)이 하나 이상의 불휘발성 스토리지 장치들(135)로 전달된 플러시(CFn)에 실제로 기록되도록 할 수 있다. 다시 말해, 플러시 제어 로직부(170)는 선택적인 플러시 기법을 구현할 수 있다. 전달된 플러시(CFn)는 동기식의(Synchronous) 동작일 수 있다.
결합된 쓰기 입출력(CW)의 크기는 개별적인 쓰기 입출력들의 크기보다 크기 때문에, 개별적인 쓰기 입출력들 각각이 독립적으로 불휘발성 스토리지 장치들(135)로 전송됨에 따라 발생하는 오버헤드(Overhead)를 줄임으로써, 스토리지의 성능이 향상된다. 나아가, 쓰기 입출력들이 불휘발성 스토리지 장치들(135)보다 현저히 높은 성능(즉, 높은 처리량 및 낮은 레이턴시(Latency))을 갖는 시스템 메모리에서 완료될 수 있기 때문에, 어플리케이션의 성능이 현저히 향상된다.
게다가, 결합된 쓰기 입출력(CW)의 전달된 플러시(CFn)는 플러시 바운더리(Flush Boundary; Fn)와 함께 또는 플러시 바운더리(Fn)보다 조금 뒤에(예컨대, 선택된 N번째 플러시(Fn)에 응답하여) 발생하기 때문에, 데이터는 일관성을 유지할 수 있다. 갑작스러운(Sudden) 전력 손실이 발생하여 데이터가 손실되더라도, 불휘발성 스토리지 장치들(135)의 데이터는 일관성을 유지할 수 있다. 어플리케이션은 데이터의 손실을 수용할 수 있다. 왜냐하면, 어플리케이션은 불휘발성 스토리지 장치들(135)에 저장된 데이터를 읽을 수 있고, 그 저장된 데이터에 기초하여 어플리케이션의 상태를 복구하거나 다른 방식으로 롤백(Roll Back)할 수 있기 때문이다. 그런데, 데이터의 비일관성(Inconsistency)은 보통 어플리케이션에 의해 수용되지 않고, 예측하기 어려운 행위들을 야기하거나 심지어 어플리케이션이 동작할 수 없도록 만들 수 있다. 본 발명의 실시 예에 따르면, 전달된 플러시들(예컨대, CF0 및 CFn) 사이에 쓰기 입출력들을 누적한 뒤 결합된 쓰기 입출력의 데이터를 불휘발성 스토리지 장치들(135)로 플러시함으로써, 데이터의 일관성이 보장된다.
하나 이상의 불휘발성 스토리지 장치들(135)은 플러시 확인 메시지(CFM0, CFMn)를 반환(Return)할 수 있다. 플러시 확인 메시지(CFM0, CFMn)는 입출력 인터셉터 로직부(120)로 제공되어, 불휘발성 스토리지 장치들(135)로 전달된 플러시들(CF0, CFn) 각각의 트랜잭션(Transaction)이 완료되었음을 확인하기 위해 이용될 수 있다. 이로써, 동기식의 플러시 동작들이 제공될 수 있다. 다시 말해, 특정의 동기식의 플러시 동작 동안, 쓰기 입출력들(D1, M1, D2, M2) 및 그 특정의 플러시 동작을 구성하지 않고 전달되지 않은 플러시 요청들(F1, F2, F3)은 그 특정의 플러시 동작에 이어지는 다른 동기식의 플러시 동작이 수행되기 전까지 누적되지만 불휘발성 스토리지 장치들(135)로 실제로 플러시되지는 않는다.
어떤 시점에 갑작스러운 전력 손실이 발생하여도, 데이터는 일관성을 유지할 수 있다. 다시 말해, 데이터와 쌍을 이루는 메타데이터가 언제나 하나 이상의 불휘발성 스토리지 장치들(135)에 저장될 수 있다. 다시 말해, 메타데이터가 그것에 대응하는 데이터 없이 하나 이상의 불휘발성 스토리지 장치들(135)에 저장되는 경우는 생길 수 없다. 결과적으로, 본 발명의 실시 예에 따르면, 어플리케이션 및 스토리지 스택의 성능을 현저히 향상시키면서도 데이터의 일관성이 유지될 수 있다.
나아가, 원래 전달될 플러시 요청인 것들(예컨대, F1, F2, 및 F3)이 전달되지 않을 플러시 요청으로 변환될 수 있기 때문에, 쓰기 입출력들의 순서를 변경하기 위한 기회의 폭이 확장된다. 보통, 쓰기 입출력들의 순서는 플러시 바운더리들 사이(예컨대, F0와 F1 사이)에서만 변경될 수 있다. 그러나, 본 발명의 실시 예에서, 보통의 플러시 요청들(예컨대, F1, F2, 및 F3)은 전달되지 않을 플러시 요청들로 변경되고, 쓰기 입출력들의 순서는 전달되지 않을 플러시 요청들의 바운더리들을 걸쳐(즉, F1, F2, 및 F3를 걸쳐 F0와 Fn 사이에서) 변경될 수 있다. 실제로 전달되는 플러시들(예컨대, CF0 및 CFn)은 확장된 시간 폭에서 발생하기 때문이다.
다시 말해, 두 개의 전달된 플러시들(예컨대, CF0 및 CFn) 사이의 쓰기 입출력들의 개수는 좀 더 짧은 시간 폭에서 자주 발생하는 두 개의 전달되지 않은 플러시 요청들 사이(예컨대, F0와 F1 사이, F1과 F2 사이, F2와 F3 사이 등)의 쓰기 입출력들의 개수보다 많다. 쓰기 입출력들의 순서를 변경할 기회의 폭을 확장함으로써, 성능이 더욱 향상될 수 있다. 왜냐하면, 쓰기 입출력들이 불휘발성 스토리지 장치들(135)에 좀 더 효율적으로 기록될 수 있도록, 그리고 더 큰 크기의 하나의 쓰기 입출력으로 결합될 수 있도록, 쓰기 입출력들의 순서가 변경될 수 있기 때문이다.
플러시 제어 로직부(170)는 플러시 요청들 중에서 선택된 N번째 플러시 요청(예컨대, Fn)에 응답하여 결합된 쓰기 입출력(CW)이 하나 이상의 불휘발성 스토리지 장치들(135)에 기록되도록 할 수 있다. 예로서, 선택될 N번째 플러시 요청은 미리 정해질 수 있고, N은 미리 정해진 양의 정수일 수 있다. 예로서, N은 3 이상의 정수일 수 있다. 예로서, N은 4, 5, 8, 10, 16, 20, 32, 64, 100 등과 같은 정수일 수 있다. N은 양의 정수들 중 적당한 어떤 값으로든 설정될 수 있다. 전달된 플러시(CFn)가 발생하기 전에 누적된 N개의 플러시 요청들의 개수는 동작 전에 미리 정해질 수 있다. 또는, 전달된 플러시(CFn)가 발생하기 전에 누적된 N개의 플러시 요청들의 개수는 사용자 또는 시스템 관리자에 의해 수정될 수 있는 설정 가능한 값을 가질 수 있다.
또는, 플러시 제어 로직부(170)는 누적된 데이터의 문턱량(Threshold Amount)에 응답하여 전달된 플러시(CFn)가 결합된 쓰기 입출력(CW)을 하나 이상의 불휘발성 스토리지 장치들(135)에 기록하도록 할 수 있다. 다시 말해, 누적된 데이터의 양이 문턱량에 도달한 경우, 플러시 제어 로직부(170)는 전달될 플러시(CFn)를 발생시킬 수 있다.
또는, 플러시 제어 로직부(170)는 설정된 시간의 만료에 응답하여 전달된 플러시(CFn)가 결합된 쓰기 입출력(CW)을 하나 이상의 불휘발성 스토리지 장치들(135)에 기록하도록 할 수 있다. 설정된 시간은, 예로서, 5초, 10초, 30초, 60 등과 같이 초 단위로 설정될 수 있다. 이는 갑작스러운 전력 손실이 발생했을 때 데이터가 손실될 가능성을 줄여주면서도 성능을 향상시키고 데이터의 일관성을 유지시키도록 한다.
또는, 플러시 제어 로직부(170)는 누적된 데이터의 문턱량에 관한 제 1 기준(Criteria)의 만족 및 그것에 뒤이어 선택된 N번째 플러시 요청에 관한 제 2 기준의 만족에 응답하여 전달된 플러시(CFn)가 결합된 쓰기 입출력(CW)을 하나 이상의 불휘발성 스토리지 장치들(135)에 기록하도록 할 수 있다. 다시 말해, 두 개의 기준이 모두 만족된 경우 전달된 플러시(CFn)가 발생할 수 있다.
입출력 인터셉터 로직부(120)의 입출력 인터페이스(155)는 데이터 쓰기 입출력들의 제 1 서브셋(D1), 제 1 플러시 요청(F1), 메타데이터 쓰기 입출력들의 제 1 서브셋(M1), 제 2 플러시 요청(F2), 데이터 쓰기 입출력들의 제 2 서브셋(D2), 제 3 플러시 요청(F3), 메타데이터 쓰기 입출력들의 제 2 서브셋(M2), 및 선택된 N번째 플러시 요청(Fn)을 제공받을 수 있다.
순서 변경 로직부(165)는 데이터 쓰기 입출력들의 제 1 서브셋(D1), 메타데이터 쓰기 입출력들의 제 1 서브셋(M1), 데이터 쓰기 입출력들의 제 2 서브셋(D2), 및 메타데이터 쓰기 입출력들의 제 2 서브셋(M2)에 포함되는 쓰기 입출력들의 순서를 변경할 수 있다. 다시 말해, 순서 변경 로직부(165)는 각각의 서브셋에 포함되는 쓰기 입출력들의 순서를 변경하거나, 여러 서브셋들에 걸쳐 쓰기 입출력들의 순서를 변경할 수 있다. 순서 변경 로직부(165)는 데이터 쓰기 입출력들의 제 1 서브셋(D1), 메타데이터 쓰기 입출력들의 제 1 서브셋(M1), 데이터 쓰기 입출력들의 제 2 서브셋(D2), 및 메타데이터 쓰기 입출력들의 제 2 서브셋(M2)을 결합하여 결합된 쓰기 입출력(CW)을 생성할 수 있다. 순서 변경 로직부(165)는 결합된 쓰기 입출력(225)에 헤더(Header; HDR) 및 푸터(Footer; FTR)를 삽입할 수 있는데, 이는 뒤에서 더 설명될 것이다.
도 3은 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 순서 변경 로직부 및 임시 쓰기 홀딩 버퍼를 보여주는 개념도이다. 위에서 설명된 것과 같이, 순서 변경 로직부(165)는 각각의 서브셋에 포함되는 쓰기 입출력들의 순서를 변경하거나, 여러 서브셋들에 걸쳐 쓰기 입출력들의 순서를 변경할 수 있다.
도 3의 실시 예에서, 쓰기 입출력(W01)은 6번 논리 블록 어드레스(Logical Block Address, 이하 "LBA")에 대응하고, 쓰기 입출력(W12)은 12번 LBA에 대응하고, 쓰기 입출력(Wn3)은 9번 LBA에 대응하고, 쓰기 입출력(W04)은 7번 LBA에 대응하고, 쓰기 입출력(W15)은 10번 LBA에 대응하고, 쓰기 입출력(Wn6)은 11번 LBA에 대응하고, 쓰기 입출력(W07)은 5번 LBA에 대응하고, 쓰기 입출력(W18)은 4번 LBA에 대응하고, 쓰기 입출력(Wn9)은 8번 LBA에 대응하고, 쓰기 입출력(W010)은 2번 LBA에 대응하고, 쓰기 입출력(W111)은 3번 LBA에 대응하고, 쓰기 입출력(Wn12)은 1번 LBA에 대응할 수 있다. LBA들은 여러 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들(135)에 저장된 논리적 위치들에 각각 대응한다.
순서 변경 로직부(165)는 여러 쓰기 입출력들의 순서를 변경할 수 있다. 이로써, 쓰기 입출력들은 결합된 쓰기 입출력(CW)의 쓰기 입출력들에 각각 대응하는 LBA들이 오름차순 또는 내림차순으로 정렬되도록 결합된 쓰기 입출력(CW)에 배열될 수 있다. 예로서, 쓰기 입출력들은 최초에 W01/6번 LBA, W12/12번 LBA, Wn3/9번 LBA, W04/7번 LBA, W15/10번 LBA, Wn6/11번 LBA, W07/5번 LBA, W18/4번 LBA, Wn9/8번 LBA, W010/2번 LBA, W111/3번 LBA, Wn12/1번 LBA의 순서로 제공될 수 있다. 위 LBA 값들은 단지 예시일 뿐이고, 본 발명을 제한하기 위한 것은 아니다.
순서 변경 로직부(165)는 쓰기 입출력들이 임시 쓰기 홀딩 버퍼(160) 내에서 Wn12/1번 LBA, W010/2번 LBA, W111/3번 LBA, W18/4번 LBA, W07/5번 LBA, W01/6번 LBA, W04/7번 LBA, Wn9/8번 LBA, Wn3/9번 LBA, W15/10번 LBA, Wn6/11번 LBA, W12/12번 LBA의 순서를 갖도록 쓰기 입출력들의 순서를 변경할 수 있다. 이러한 방식으로, LBA들이 오름차순 또는 내림차순으로 배열될 수 있다. 이로써, 결합된 쓰기 입출력(CW)을 하나 이상의 불휘발성 스토리지 장치들(135; 도 1 및 도 2 참조)에 더 효율적으로 기록할 수 있다.
도 4는 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 순서 변경 로직부, 및 재매핑 메모리부를 보여주는 개념도이다. 재매핑 메모리부(405)는 시스템 메모리로부터 할당되거나 본 발명의 실시 예에 따른 입출력 인터셉터 로직부(120; 도 1 참조) 내에 할당될 수 있다. 일반적으로 LBA들은 넓게 분산되기 때문에, LBA들을 오름차순, 내림차순, 또는 연속된 그룹으로 재정렬하는 것은 단순하지 않다. 예로서, 쓰기 입출력들은 최초에 W01/50번 LBA, W12/11번 LBA, Wn3/18번 LBA, W04/65번 LBA, W15/99번 LBA, Wn6/10번 LBA, W07/41번 LBA, W18/34번 LBA, Wn9/77번 LBA, W010/19번 LBA, W111/55번 LBA, Wn12/100번 LBA의 순서로 제공될 수 있다. 위 LBA 값들은 단지 예시일 뿐이고, 본 발명을 제한하기 위한 것은 아니다.
순서 변경 로직부(165)는 헤더(HDR) 및 푸터(FTR)를 앞뒤로 연결하고 쓰기 입출력들을 재매핑 메모리부(405)로 재매핑함으로써 쓰기 입출력들의 순서를 변경할 수 있다. 다시 말해, 순서 변경 로직부(165)는 쓰기 입출력들, 헤더(HDR), 및 푸터(FTR)를 복사하여 결합된 쓰기 입출력(CW)을 생성할 수 있다. 이로써, 결합된 쓰기 입출력(CW)의 여러 쓰기 입출력들에 각각 대응하는 여러 LBA들은 오름차순 또는 내림차순으로 배열될 수 있다. 나아가, 결합된 쓰기 입출력(CW)의 쓰기 입출력들 각각은 재매핑 메모리부(405)에서 다른 쓰기 입출력과 물리적으로 인접하도록 배열될 수 있다. 순서 변경 로직부(165)는 무작위의 쓰기 입출력들을 순차적인 쓰기 입출력들로 변환할 수 있다.
예로서, 재매핑 메모리부(405)의 결합된 쓰기 입출력(CW)은 헤더/0번 LBA, Wn12/1번 LBA, W010/2번 LBA, W111/3번 LBA, W18/4번 LBA, W07/5번 LBA, W01/6번 LBA, W04/7번 LBA, Wn9/8번 LBA, Wn3/9번 LBA, W15/10번 LBA, Wn6/11번 LBA, W12/12번 LBA, 푸터/13번 LBA의 순서로 재매핑되어 배열된 쓰기 입출력들을 포함할 수 있다. 이러한 방식으로, LBA들이 연속되는 형식으로 배열될 수 있다. 이로써, 결합된 쓰기 입출력(CW)을 하나 이상의 불휘발성 스토리지 장치들(135; 도 1 및 도 2 참조)에 더 효율적으로 기록할 수 있다.
몇몇 실시 예에서, 재매핑 메모리부(405)는 입출력 인터셉터 로직부(120)에 의해서만 인식될 수 있다. 헤더(HDR) 및/또는 푸터(FTR)는 재매핑 변환 정보를 포함할 수 있다. 헤더(HDR) 및/또는 푸터(FTR)는 결합된 쓰기 입출력(CW)이 유효함을 나타내는 정보를 포함할 수 있다. 하나 이상의 불휘발성 스토리지 장치들(135)에 헤더(HDR)를 포함하지만 푸터(FTR)를 포함하지 않는 결합된 쓰기 입출력(CW)은 유효하지 않은 것으로 취급될 수 있다. 이러한 경우는 전달된 플러시(CFn)에 관한 동작이 수행되는 동안 갑작스러운 전력 손실이 발생한 경우에 생길 수 있다. 이러한 경우, 결합된 쓰기 입출력(CW)은 유효하지 않은 것으로 결정되어 폐기(Discard)될 수 있다. 유효한 결합된 쓰기 입출력(CW)을 읽기 입출력 동작에서 읽기 위해 유효한 결합된 쓰기 입출력(CW)이 하나 이상의 불휘발성 스토리지 장치들(135)로부터 읽히는 경우, 헤더(HDR) 및/또는 푸터(FTR)에 저장된 재매핑 변환 정보는 예상되는 데이터 및/또는 LBA 정보를 어플리케이션(132)으로 제공하기 위해 입출력 인터셉터 로직부(120)에 의해 이용될 수 있다.
플러시 제어 로직부(170)는 선택된 N번째 플러시 요청 또는 다른 기준에 응답하여, 물리적으로 연속하는 결합된 쓰기 입출력(CW)이 하나 이상의 불휘발성 스토리지 장치들(135)에 기록되도록 할 수 있다.
도 5는 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 플러시 제어 로직부 및 임시 쓰기 홀딩 버퍼들을 보여주는 개념도이다.
순서 변경 로직부(165)는 입출력 인터셉터 로직부(120)에 포함될 필요는 없다. 대신, 실시 예로서, 플러시 제어 로직부(170)가 0번 버퍼, 1번 버퍼, 2번 버퍼, 및 N번 버퍼와 같은 복수의 임시 쓰기 홀딩 버퍼(160)를 관리할 수 있다. 임시 쓰기 홀딩 버퍼들(160)은 도 1 및 도 2의 입출력 인터페이스(155)로부터 쓰기 입출력들을 제공받고, 그 쓰기 입출력들을 저장할 수 있다. 멀티 버퍼 홀딩 큐(Multi-Buffer Holding Queue; 505)는 임시 쓰기 홀딩 버퍼들을 홀드할(Hold) 수 있다.
플러시 제어 로직부(170)는 입출력 인터페이스(155)로부터 복수의 플러시 요청(예컨대, F0, F1, F2 등)을 제공받을 수 있다. 쓰기 입출력들이 도 1 및 도 2의 하나 이상의 불휘발성 스토리지 장치들(135)에 기록되지 않더라도, 플러시 제어 로직부(170)는 쓰기 입출력들에 관한 입출력 완료의 메시지(예컨대, 도 2의 CM0, CM1, CM2, CM3, 및 CMn)를 어플리케이션(예컨대, 도 1 및 도 2의 어플리케이션(132))으로 전달할 수 있다. 다시 말해, 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들(135) 중 어딘가에 실제로 기록되기 전에, 플러시 제어 로직부(170)는 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션(132)으로 알릴 수 있다
플러시 제어 로직부(170)는 데이터 쓰기 입출력들의 제 1 서브셋(예컨대, 도 2의 D1)이 임시 쓰기 홀딩 버퍼들(160)의 0번 버퍼(B0)에 저장되도록 하고, 메타데이터 쓰기 입출력들의 제 1 서브셋(예컨대, 도 2의 M1)이 임시 쓰기 홀딩 버퍼들(160)의 1번 버퍼(B1)에 저장되도록 하고, 데이터 쓰기 입출력들의 제 2 서브셋(예컨대, 도 2의 D2)이 임시 쓰기 홀딩 버퍼들(160)의 2번 버퍼(B2)에 저장되도록 하고, 메타데이터 쓰기 입출력들의 제 2 서브셋(예컨대, 도 2의 M2)이 임시 쓰기 홀딩 버퍼들(160)의 N번 버퍼(BN)에 저장되도록 할 수 있다.
플러시 제어 로직부(170)는 선택된 N번째 플러시 요청에 응답하여, 멀티 버퍼 홀딩 큐(505)가 쓰기 입출력들을 전달받은 순서대로 임시 쓰기 홀딩 버퍼들(160)로부터 하나 이상의 불휘발성 스토리지 장치들(135)로 전달하도록 할 수 있다. 이 실시 예에서, 쓰기 입출력들의 순서 변경 및 재매핑이 수행되지 않고, 추가의 헤더들 또는 푸터들이 필요하지 않다. 반면, 위에서 설명된 실시 예에 비해, 성능은 크게 향상되지 않는다. 왜냐하면, LBA들이 사실상 무작위의 순서로 하나 이상의 불휘발성 스토리지 장치들(135)로 전달되기 때문이다. 갑작스러운 전력 손실이 발생한 경우에는, 어플리케이션(132)이 데이터를 기록하고자 했던 순서가 보존되기 때문에, 데이터의 일관성은 여전히 유지된다.
도 6은 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 플러시 제어 로직부 및 임시 쓰기 홀딩 버퍼들을 보여주는 다른 개념도이다.
도 6은 도 5와 유사하지만, 도 6에서는 LBA들이 넓게 분포한다는 차이가 있다. 그럼에도, 이 실시 예의 동작은 도 5를 참조하여 설명된 것과 동일하거나 유사하다. 따라서, 중복되는 설명은 생략된다. LBA들이 넓게 분포하는 것을 보여주는 도 6의 실시 예 역시 본 발명의 실시 예에 포함되고, 도 5를 참조하여 설명된 것과 동일하거나 유사하게 구현될 수 있다.
도 7 내지 도 12는 본 발명의 실시 예에 따른 도 1의 입출력 인터셉터 로직부가 내장될 수 있는 다양한 장치들을 보여주는 개념도들이다.
예로서, 도 7에 나타낸 것과 같이, 스마트폰(705)은 위에서 설명된 입출력 인터셉터 로직부(120)를 포함할 수 있다. 유사하게, 도 8에 나타낸 태블릿(805), 도 9에 나타낸 노트북 컴퓨터(905), 도 10에 나타낸 이동식 전화기(1005), 도 11에 나타낸 카메라(1105), 및 도 12에 나타낸 데스크탑 컴퓨터(1205)는 위에서 설명된 입출력 인터셉터 로직부(120)를 포함할 수 있다. 불휘발성 스토리지를 이용하는 장치는 위에서 설명된 입출력 인터셉터 로직부(120)를 포함하고 그것을 이용하여 동작할 수 있다.
도 13은 본 발명의 실시 예에 따른 입출력 인터셉터 로직부를 이용하여 어플리케이션으로부터 입출력들을 인터셉트하는 방법을 설명하는 흐름도이다.
도 13의 방법은 S1305 단계에서 시작된다. S1305 단계에서, 입출력 인터셉터 로직부의 입출력 인터페이스에 의해, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청이 인터셉트될 수 있다.
S1310 단계에서, 입출력 인터페이스에 의해 인터셉트된 복수의 쓰기 입출력이 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장될 수 있다.
S1315 단계에서, 순서 변경 로직부는 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 복수의 쓰기 입출력의 순서를 변경할 수 있다.
S1320 단계에서, 순서 변경 로직부는 변경된 순서의 쓰기 입출력들을 결합하여 결합된 쓰기 입출력을 생성할 수 있다.
S1325 단계에서, 플러시 제어 로직부는 입출력 인터페이스로부터 복수의 플러시 요청을 제공받을 수 있다.
S1330 단계에서, 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 플러시 제어 로직부는 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알릴 수 있다. 다시 말해, 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들 중 어딘가에 실제로 기록되기 전에, 플러시 제어 로직부는 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션으로 알릴 수 있다.
S1335 단계에서, 플러시 제어 로직부는 복수의 플러시 요청 중에서 선택된 N번째 플러시 요청, 누적된 데이터의 문턱량, 및 설정된 시간의 만료 중 적어도 하나에 응답하여, 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 기록되도록 할 수 있다.
도 14는 본 발명의 실시 예에 따른 입출력 인터셉터 로직부를 이용하여 어플리케이션으로부터 입출력들을 인터셉트하는 다른 방법을 설명하는 흐름도이다.
도 14의 방법은 S1405 단계에서 시작된다. S1405 단계에서, 입출력 인터셉터 로직부의 입출력 인터페이스에 의해, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청이 인터셉트될 수 있다.
S1410 단계에서, 입출력 인터페이스에 의해 인터셉트된 복수의 쓰기 입출력이 복수의 임시 쓰기 홀딩 버퍼에 저장될 수 있다.
S1415 단계에서, 멀티 버퍼 홀딩 큐는 복수의 임시 쓰기 홀딩 버퍼를 홀드할 수 있다.
S1420 단계에서, 플러시 제어 로직부는 입출력 인터페이스로부터 복수의 플러시 요청을 제공받을 수 있다.
S1425 단계에서, 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 플러시 제어 로직부는 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알릴 수 있다. 다시 말해, 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들 중 어딘가에 실제로 기록되기 전에, 플러시 제어 로직부는 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션으로 알릴 수 있다.
S1430 단계에서, 플러시 제어 로직부는 복수의 플러시 요청 중에서 선택된 N번째 플러시 요청, 누적된 데이터의 문턱량, 및 설정된 시간의 만료 중 적어도 하나에 응답하여, 멀티 버퍼 홀딩 큐가 복수의 쓰기 입출력을 복수의 임시 쓰기 홀딩 버퍼로부터 불휘발성 스토리지 장치로 전달하도록 할 수 있다.
도 15는 본 발명의 실시 예에 따른 입출력 인터셉터 로직부를 포함하는 컴퓨팅 시스템을 보여주는 블록도이다. 도 15를 참조하면, 컴퓨팅 시스템(1500)은 클록(1510), RAM(Random Access Memory; 1515), 유저 인터페이스(User Interface; 1520), 기저 대역 칩셋(Baseband Chipset)과 같은 모뎀(MODEM; 1525), SSD(1540), 메모리 컨트롤러(1545), 및 배터리(1535)를 포함할 수 있다. 도 15에는 나타내지 않았으나, 컴퓨팅 시스템(1500)은 AP(Application Processor) 칩셋, CIS(Camera Image Sensor), 이동식 DRAM(Dynamic RAM) 등을 더 포함할 수 있다.
클록(1510), RAM(1515), 유저 인터페이스(1520), 기저 대역 칩셋(1525), SSD(1540), 메모리 컨트롤러(1545), 및 배터리(1535)의 일부 또는 전부는 시스템 버스(1505)에 전기적으로 연결될 수 있다. 입출력 인터셉터 로직부(1530)는 도 1 내지 도 12의 입출력 인터셉터 로직부(120)에 대응할 수 있다. 입출력 인터셉터 로직부(1530) 역시 시스템 버스(1505)에 전기적으로 연결될 수 있다.
컴퓨팅 시스템(1500)이 이동식 장치인 경우, 배터리(1535)는 컴퓨팅 시스템(1500)에 전력을 공급할 수 있다. 위에서 설명된 본 발명의 실시 예가 구현되면, 스토리지(예컨대, SSD(1540))에 데이터를 더 효율적으로 기록할 수 있기 때문에, 배터리 소모가 감소할 수 있다.
실시 예로서, 컴퓨팅 시스템(1500)은 컴퓨터, 휴대용 컴퓨터, UMPC(Ultra Mobile Personal Computer), 워크스테이션(Workstation), 넷북(Net-book), PDA(Personal Digital Assistant), 웹 태블릿, 무선 전화기, 이동식 전화기, 스마트폰, 전자책(Electronic Book), PMP(Portable Multimedia Player), 디지털 카메라, 디지털 오디오 레코더/플레이어, 디지털 영상/비디오 레코더/플레이어, 휴대용 게임기, 내비게이션 시스템, 블랙박스, 3차원 텔레비전, 무선 환경에서 정보를 송수신할 수 있는 장치, 홈 네트워크를 구성하는 여러 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 여러 전자 장치들 중 하나, 텔레매틱스(Telematics) 네트워크를 구성하는 여러 전자 장치들 중 하나, RFID(Radio Frequency Identification), 또는 컴퓨팅 시스템을 구성하는 여러 전자 장치들 중 하나로 이용될 수 있다.
이하의 논의는 본 발명의 실시 예가 구현될 수 있는 적당한 기기에 관하여 간략하고 일반적인 설명을 제공하기 위한 것이다. 기기는 프로세서들, 메모리(예컨대, RAM, ROM(Read-only Memory), 또는 그 외 상태를 보존할 수 있는 매체), 스토리지 장치들, 비디오 인터페이스, 입출력 인터페이스 포트(Port)들이 연결된 시스템 버스를 포함한다. 기기는 키보드, 마우스 등과 같은 입력 장치들로부터 제공되는 입력은 물론, 다른 기기, 가상 현실(Virtual Reality) 환경과의 상호작용(Interaction), 생체(Biometric) 신호, 또는 그 외 다른 입력 신호를 통해 제공되는 입력에 의해 제어될 수 있다.
여기서, "기기"라는 용어는 단일의 기기, 버추얼 머신(Virtual Machine), 서로 통신하도록 연결된 기기들이나 버추얼 머신들의 시스템, 또는 함께 동작하는 장치들 등을 폭넓게 포함하기 위해 이용되었다. 예로서, 기기는 개인용 컴퓨터, 워크스테이션, 서버, 휴대용 컴퓨터, 소형 장치, 전화기, 태블릿 등과 같은 컴퓨팅 장치는 물론, 개인용의(Private) 또는 공용의(Public) 교통 수단(예컨대, 자동차, 기차, 택시 등)과 같은 이동 수단을 포함한다.
기기는 프로그램 가능한(Programmable) 또는 프로그램되지 않는(Non-programmable) 논리 장치들 또는 어레이(Array)들, ASICs(Application Specific Integrated Circuits) 등과 같은 내장형(Embedded) 컨트롤러들을 포함할 수 있다. 기기는 네트워크 인터페이스, 모뎀, 또는 그 외 통신용 연결을 통해 하나 이상의 원격 기기들과의 연결을 활용할 수 있다. 기기는 인트라넷(Intranet), 인터넷, LAN(Local Area Network), WAN(Wide Area Network) 등과 같은 물리적인 및/또는 논리적인 네트워크를 이용하여 다른 기기와 연결될 수 있다. 네트워크 통신은 RF(Radio Frequency), 위성, 마이크로파(Microwave), IEEE(Institute of Electrics and Electronics Engineers) 545.11, 블루투스(Bluetooth), 광(Optics), 적외광(Infrared), 케이블, 레이저 등과 같은 단거리 또는 장거리의 유무선 캐리어(Carrier) 또는 프로토콜(Protocol)을 활용하여 구현될 수 있다.
본 발명의 실시 예는 함수(Function), 프로시저(Procedure), 데이터 구조(Data Structure), 응용 프로그램(Application Program) 등을 포함하는 데이터 형태로 구현될 수 있다. 본 발명의 실시 예를 구현한 데이터가 기기에 의해 접근되는 경우, 기기는 본 발명의 실시 예에 대응하는 작업들을 수행하거나, 추상 데이터형(Abstract Data Type) 또는 하위 레벨 하드웨어 컨텍스트(Low-level Hardware Context)를 정의할 수 있다.
본 발명의 실시 예를 구현한 데이터는, 예로서, RAM, ROM 등과 같은 휘발성 및/또는 불휘발성 메모리, 또는 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 생체 스토리지 등과 같은 스토리지 장치에 저장될 수 있다. 본 발명의 실시 예를 구현한 데이터는 물리적인 및/또는 논리적인 네트워크 등과 같은 통신 환경을 통해 패킷(Packet), 직렬 데이터(Serial Data), 병렬 데이터(Parallel Data), 전파 신호(Propagated Signal) 등의 형태로 전송되어, 압축된(Compressed) 또는 암호화된(Encrypted) 형태로 이용될 수 있다. 본 발명의 실시 예를 구현한 데이터는 분산(Distributed) 환경에서 이용될 수 있고, 기기의 접근을 위해 로컬(Local) 및/또는 원격(Remote)의 위치에 저장될 수 있다.
본 발명의 실시 예는 하나 이상의 프로세서들에 의해 실행 가능한(Excutable) 명령어(Instruction)를 포함하는 비일시적으로(Non-transitory) 기계로 읽을 수 있는 매체(Machine-readable Medium)에 구현될 수 있다. 이 명령어는 위에서 설명된 본 발명의 실시 예의 과정들을 수행하기 위한 명령들을 포함할 수 있다.
각각의 개념도에 나타낸 구성은 단지 개념적인 관점에서 이해되어야 한다. 본 발명의 이해를 돕기 위해, 개념도에 나타낸 구성 요소 각각의 형태, 구조, 크기 등은 과장 또는 축소되어 표현되었다. 실제로 구현되는 구성은 각각의 개념도에 나타낸 것과 다른 물리적 형상을 가질 수 있다. 각각의 개념도는 구성 요소의 물리적 형상을 제한하기 위한 것이 아니다.
각각의 블록도에 나타낸 장치 구성은 발명의 이해를 돕기 위한 것이다. 각각의 블록은 기능에 따라 더 작은 단위의 블록들로 형성될 수 있다. 또는, 복수의 블록들은 기능에 따라 더 큰 단위의 블록을 형성할 수 있다. 즉, 본 발명의 기술 사상은 블록도에 도시된 구성에 의해 한정되지 않는다.
이상에서 본 발명에 대한 실시 예를 중심으로 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니다.
100 : 시스템 스택 105 : 어플리케이션 스페이스
110 : 커널 스페이스 115 : 물리적인 하드웨어 장치들
120 : 입출력 인터셉터 로직부 125 : 스토리지 스택
130 : 하나 이상의 어플리케이션들
132 : 어플리케이션
135 : 하나 이상의 불휘발성 스토리지 장치들
140 : SSD 145 : 플래시 메모리
150 : HDD 155 : 입출력 인터페이스
160 : 이미 쓰기 홀딩 버퍼 165 : 순서 변경 로직부
170 : 플러시 제어 로직부
405 : 재매핑 메모리부 505 : 멀티 버퍼 홀딩 큐
705 : 스마트폰 805 : 태블릿
905 : 노트북 컴퓨터 1005 : 이동식 전화기
1105 : 카메라 1205 : 데스크탑 컴퓨터
1500 : 컴퓨팅 시스템 1505 : 시스템 버스
1510 : 클록 1515 : RAM
1520 : 유저 인터페이스 1525 : 모뎀
1530 : 입출력 인터셉터 로직부
1535 : 배터리 1540 : SSD
1545 : 메모리 컨트롤러

Claims (20)

  1. 스토리지 스택과 통신하도록 연결되고, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 입출력 인터페이스;
    상기 입출력 인터페이스로부터 상기 복수의 쓰기 입출력을 제공받고, 상기 복수의 쓰기 입출력을 저장하는 하나 이상의 임시 쓰기 홀딩 버퍼들;
    상기 하나 이상의 임시 쓰기 홀딩 버퍼들과 통신하도록 연결되고, 상기 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 상기 복수의 쓰기 입출력의 순서를 변경하고, 상기 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하는 순서 변경 로직부; 및
    상기 입출력 인터페이스로부터 상기 복수의 플러시 요청을 제공받고, 상기 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고 상기 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 상기 어플리케이션으로 알리고, 상기 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여 상기 결합된 쓰기 입출력을 상기 불휘발성 스토리지 장치에 저장하는 플러시 제어 로직부를 포함하는 입출력 인터셉터 로직.
  2. 제 1 항에 있어서,
    상기 선택된 플러시 요청은 상기 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고,
    상기 N은 미리 선택된 양의 정수 값을 갖는 입출력 인터셉터 로직.
  3. 제 1 항에 있어서,
    상기 선택된 플러시 요청은 상기 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고,
    상기 N은 3 이상의 정수인 입출력 인터셉터 로직.
  4. 제 1 항에 있어서,
    상기 입출력 인터페이스는:
    상기 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 상기 복수의 플러시 요청 중 제 1 플러시 요청, 상기 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 복수의 플러시 요청 중 제 2 플러시 요청, 상기 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 상기 복수의 플러시 요청 중 제 3 플러시 요청, 상기 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 상기 복수의 플러시 요청 중 상기 선택된 플러시 요청을 인터셉트하는 입출력 인터셉터 로직.
  5. 제 4 항에 있어서,
    상기 순서 변경 로직부는:
    상기 데이터 쓰기 입출력의 제 1 서브셋, 상기 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 데이터 쓰기 입출력의 제 2 서브셋, 및 상기 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 상기 복수의 쓰기 입출력의 순서를 변경하여 상기 복수의 쓰기 입출력과 관련된 논리 블록 어드레스들을 오름차순 또는 내림차순으로 배열하고;
    상기 데이터 쓰기 입출력의 제 1 서브셋, 상기 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 데이터 쓰기 입출력의 제 2 서브셋, 및 상기 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 상기 변경된 순서의 복수의 쓰기 입출력을 결합하여 상기 결합된 쓰기 입출력을 생성하는 입출력 인터셉터 로직.
  6. 제 4 항에 있어서,
    상기 순서 변경 로직부는:
    상기 복수의 쓰기 입출력, 헤더, 및 푸터를 재매핑 메모리부에 복사하여 상기 결합된 쓰기 입출력을 생성하되,
    상기 결합된 쓰기 입출력에 포함되는 상기 복수의 쓰기 입출력에 각각 대응하는 복수의 논리 블록 어드레스는 오름차순 또는 내림차순으로 배열되고,
    상기 결합된 쓰기 입출력에 포함되는 상기 복수의 쓰기 입출력 각각은 상기 재매핑 메모리부에서 물리적으로 서로 인접하는 입출력 인터셉터 로직.
  7. 제 6 항에 있어서,
    상기 플러시 제어 로직부는:
    상기 선택된 플러시 요청에 응답하여, 각각이 물리적으로 서로 인접하는 상기 복수의 쓰기 입출력을 포함하는 상기 결합된 쓰기 입출력을 상기 불휘발성 스토리지 장치에 저장하는 입출력 인터셉터 로직.
  8. 제 1 항에 있어서,
    상기 순서 변경 로직부는:
    상기 복수의 쓰기 입출력에 포함되는 무작위의 쓰기 입출력들을 순차적인 쓰기 입출력들로 변환하는 입출력 인터셉터 로직.
  9. 스토리지 스택과 통신하도록 연결되고, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 입출력 인터페이스;
    상기 입출력 인터페이스로부터 상기 복수의 쓰기 입출력을 제공받고, 상기 복수의 쓰기 입출력을 저장하는 복수의 임시 쓰기 홀딩 버퍼;
    상기 복수의 임시 쓰기 홀딩 버퍼를 홀드하는 멀티 버퍼 홀딩 큐; 및
    상기 입출력 인터페이스로부터 상기 복수의 플러시 요청을 제공받고, 상기 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고 상기 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 상기 어플리케이션으로 알리고, 상기 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여 상기 멀티 버퍼 홀딩 큐가 상기 복수의 쓰기 입출력을 상기 복수의 임시 쓰기 홀딩 버퍼로부터 상기 불휘발성 스토리지 장치로 전달하게 하는 플러시 제어 로직부를 포함하는 입출력 인터셉터 로직.
  10. 제 9 항에 있어서,
    상기 선택된 플러시 요청은 상기 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고,
    상기 N은 미리 선택된 양의 정수 값을 갖는 입출력 인터셉터 로직.
  11. 제 9 항에 있어서,
    상기 선택된 플러시 요청은 상기 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고,
    상기 N은 3 이상의 정수인 입출력 인터셉터 로직.
  12. 제 9 항에 있어서,
    상기 입출력 인터페이스는:
    상기 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 상기 복수의 플러시 요청 중 제 1 플러시 요청, 상기 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 복수의 플러시 요청 중 제 2 플러시 요청, 상기 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 상기 복수의 플러시 요청 중 제 3 플러시 요청, 상기 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 상기 복수의 플러시 요청 중 상기 선택된 플러시 요청을 인터셉트하는 입출력 인터셉터 로직.
  13. 제 12 항에 있어서,
    상기 복수의 임시 쓰기 홀딩 버퍼는 제 1 임시 쓰기 홀딩 버퍼, 제 2 임시 쓰기 홀딩 버퍼, 제 3 임시 쓰기 홀딩 버퍼, 및 제 4 임시 쓰기 홀딩 버퍼를 포함하고,
    상기 플러시 제어 로직부는:
    상기 데이터 쓰기 입출력의 제 1 서브셋을 상기 제 1 임시 쓰기 홀딩 버퍼에 저장하고, 상기 메타데이터 쓰기 입출력의 제 1 서브셋을 상기 제 2 임시 쓰기 홀딩 버퍼에 저장하고, 상기 데이터 쓰기 입출력의 제 2 서브셋을 상기 제 3 임시 쓰기 홀딩 버퍼에 저장하고, 상기 메타데이터 쓰기 입출력의 제 2 서브셋을 상기 제 4 임시 쓰기 홀딩 버퍼에 저장하는 입출력 인터셉터 로직.
  14. 입출력 인터셉터 로직을 이용하여 어플리케이션으로부터 입출력들을 인터셉트하기 위해 컴퓨터로 구현되는 방법에 있어서:
    상기 입출력 인터셉터 로직의 입출력 인터페이스에 의해, 상기 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 단계;
    상기 입출력 인터페이스에 의해 인터셉트된 상기 복수의 쓰기 입출력을 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장하는 단계;
    상기 입출력 인터셉터 로직의 순서 변경 로직부에 의해, 상기 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 상기 복수의 쓰기 입출력의 순서를 변경하는 단계;
    상기 순서 변경 로직부에 의해, 상기 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하는 단계;
    상기 입출력 인터셉터 로직의 플러시 제어 로직부에 의해, 상기 입출력 인터페이스로부터 상기 복수의 플러시 요청을 제공받는 단계;
    상기 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 상기 플러시 제어 로직부에 의해, 상기 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 상기 어플리케이션으로 알리는 단계; 및
    상기 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여, 상기 플러시 제어 로직부에 의해, 상기 결합된 쓰기 입출력을 상기 불휘발성 스토리지 장치에 저장하는 단계를 포함하는 방법.
  15. 제 14 항에 있어서,
    상기 선택된 플러시 요청은 상기 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고,
    상기 N은 미리 선택된 양의 정수 값을 갖는 방법.
  16. 제 14 항에 있어서,
    상기 선택된 플러시 요청은 상기 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고,
    상기 N은 3 이상의 정수인 방법.
  17. 제 14 항에 있어서,
    상기 인터셉트하는 단계는:
    상기 입출력 인터페이스에 의해, 상기 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 상기 복수의 플러시 요청 중 제 1 플러시 요청, 상기 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 복수의 플러시 요청 중 제 2 플러시 요청, 상기 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 상기 복수의 플러시 요청 중 제 3 플러시 요청, 상기 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 상기 복수의 플러시 요청 중 상기 선택된 플러시 요청을 인터셉트하는 단계를 포함하는 방법.
  18. 제 17 항에 있어서,
    상기 변경하는 단계는:
    상기 순서 변경 로직부에 의해, 상기 데이터 쓰기 입출력의 제 1 서브셋, 상기 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 데이터 쓰기 입출력의 제 2 서브셋, 및 상기 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 상기 복수의 쓰기 입출력의 순서를 변경하는 단계를 포함하고,
    상기 생성하는 단계는:
    상기 순서 변경 로직부에 의해, 상기 데이터 쓰기 입출력의 제 1 서브셋, 상기 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 데이터 쓰기 입출력의 제 2 서브셋, 및 상기 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 상기 변경된 순서의 복수의 쓰기 입출력을 결합하여 상기 결합된 쓰기 입출력을 생성하는 단계를 포함하는 방법.
  19. 제 17 항에 있어서,
    상기 생성하는 단계는:
    상기 순서 변경 로직부에 의해, 상기 복수의 쓰기 입출력, 헤더, 및 푸터를 재매핑 메모리부에 복사하여 상기 결합된 쓰기 입출력을 생성하는 단계를 포함하되,
    상기 결합된 쓰기 입출력에 포함되는 상기 복수의 쓰기 입출력에 각각 대응하는 복수의 논리 블록 어드레스는 오름차순 또는 내림차순으로 배열되고,
    상기 결합된 쓰기 입출력에 포함되는 상기 복수의 쓰기 입출력 각각은 상기 재매핑 메모리부에서 물리적으로 서로 인접하는 방법.
  20. 제 19 항에 있어서,
    상기 불휘발성 스토리지 장치에 저장하는 단계는:
    상기 선택된 플러시 요청에 응답하여, 상기 플러시 제어 로직부에 의해, 각각이 물리적으로 서로 인접하는 상기 복수의 쓰기 입출력을 포함하는 상기 결합된 쓰기 입출력을 상기 불휘발성 스토리지 장치에 저장하는 단계를 포함하는 방법.
KR1020150065399A 2014-07-31 2015-05-11 플러시 제어 로직을 포함하는 입출력 인터셉터 로직, 및 그 입출력 인터셉터 로직을 이용하여 컴퓨터로 구현되는 방법 KR102177315B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462031842P 2014-07-31 2014-07-31
US62/031,842 2014-07-31
US14/536,567 2014-11-07
US14/536,567 US9495102B2 (en) 2014-07-31 2014-11-07 Input/output (I/O) interceptor that re-orders a plurality of write I/O into combined with I/O with intelligent flush control logic

Publications (2)

Publication Number Publication Date
KR20160016562A KR20160016562A (ko) 2016-02-15
KR102177315B1 true KR102177315B1 (ko) 2020-11-10

Family

ID=55180056

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150065399A KR102177315B1 (ko) 2014-07-31 2015-05-11 플러시 제어 로직을 포함하는 입출력 인터셉터 로직, 및 그 입출력 인터셉터 로직을 이용하여 컴퓨터로 구현되는 방법

Country Status (4)

Country Link
US (1) US9495102B2 (ko)
JP (1) JP6594057B2 (ko)
KR (1) KR102177315B1 (ko)
CN (1) CN105320640B (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10282324B2 (en) 2015-07-13 2019-05-07 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US10656838B2 (en) 2015-07-13 2020-05-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
US11461010B2 (en) 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US10474570B2 (en) * 2015-11-24 2019-11-12 Cisco Technology, Inc. Flashware usage mitigation
US10866905B2 (en) 2016-05-25 2020-12-15 Samsung Electronics Co., Ltd. Access parameter based multi-stream storage device access
US10534709B2 (en) * 2016-08-31 2020-01-14 Sandisk Technologies Llc Flush command consolidation
US10289552B2 (en) * 2017-05-03 2019-05-14 Western Digital Technologies, Inc. Storage system and method for flush optimization
US10446174B2 (en) * 2017-05-26 2019-10-15 Microsoft Technology Licensing, Llc File system for shingled magnetic recording (SMR)
US10521115B2 (en) 2017-09-05 2019-12-31 International Business Machines Corporation Handling cache and non-volatile storage (NVS) out of sync writes
US11314659B2 (en) 2017-09-05 2022-04-26 International Business Machines Corporation Using real segments and alternate segments in non-volatile storage
US10761744B2 (en) * 2017-09-05 2020-09-01 International Business Machines Corporation Synchronously performing commit records operations
CN111615327B (zh) 2017-12-18 2023-02-28 株式会社久保田 作业车辆以及拖拉机
US11561717B2 (en) * 2020-05-26 2023-01-24 Western Digital Technologies, Inc. Data integrity protection of SSDs utilizing streams
US20210182187A1 (en) * 2020-12-24 2021-06-17 Intel Corporation Flushing Cache Lines Involving Persistent Memory
US11500579B1 (en) * 2021-04-23 2022-11-15 EMC IP Holding Company, LLC Consolidated write system and method
US20230214157A1 (en) * 2021-12-30 2023-07-06 Micron Technology, Inc. NVMe COMMAND COMPLETION MANAGEMENT FOR HOST SYSTEM MEMORY
US11954348B2 (en) 2022-04-08 2024-04-09 Netapp, Inc. Combining data block I/O and checksum block I/O into a single I/O operation during processing by a storage stack

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010020774A (ja) 2008-07-11 2010-01-28 Samsung Electronics Co Ltd キャッシュフラッシュ制御方法及び装置並びにこれを利用したデータ保存システム
JP2010198368A (ja) 2009-02-25 2010-09-09 Hitachi Information & Communication Engineering Ltd 補助記憶装置用フィルタドライバ手段を備えた電子計算機、補助記憶装置用フィルタドライバプログラム、及び、補助記憶装置用フィルタドライバプログラムの記録媒体
JP2011238176A (ja) 2010-05-13 2011-11-24 Toshiba Corp 情報処理装置およびドライバ

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101531523B1 (ko) * 2007-09-21 2015-06-29 엘지전자 주식회사 패킷 재정렬 방법 및 패킷 재전송 방법
US9003118B2 (en) 2009-01-09 2015-04-07 Dell Products L.P. Systems and methods for non-volatile cache control
US8161241B2 (en) 2010-01-12 2012-04-17 International Business Machines Corporation Temperature-aware buffered caching for solid state storage
US8468318B2 (en) * 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US10592416B2 (en) * 2011-09-30 2020-03-17 Oracle International Corporation Write-back storage cache based on fast persistent memory
US9367480B2 (en) 2012-08-07 2016-06-14 Dell Products L.P. System and method for updating data in a cache
US9311240B2 (en) * 2012-08-07 2016-04-12 Dell Products L.P. Location and relocation of data within a cache
US9454487B2 (en) 2012-08-27 2016-09-27 Vmware, Inc. Transparent host-side caching of virtual disks located on shared storage
US9584637B2 (en) * 2014-02-19 2017-02-28 Netronome Systems, Inc. Guaranteed in-order packet delivery

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010020774A (ja) 2008-07-11 2010-01-28 Samsung Electronics Co Ltd キャッシュフラッシュ制御方法及び装置並びにこれを利用したデータ保存システム
JP2010198368A (ja) 2009-02-25 2010-09-09 Hitachi Information & Communication Engineering Ltd 補助記憶装置用フィルタドライバ手段を備えた電子計算機、補助記憶装置用フィルタドライバプログラム、及び、補助記憶装置用フィルタドライバプログラムの記録媒体
JP2011238176A (ja) 2010-05-13 2011-11-24 Toshiba Corp 情報処理装置およびドライバ

Also Published As

Publication number Publication date
CN105320640A (zh) 2016-02-10
JP6594057B2 (ja) 2019-10-23
US9495102B2 (en) 2016-11-15
JP2016035743A (ja) 2016-03-17
US20160034188A1 (en) 2016-02-04
CN105320640B (zh) 2020-06-23
KR20160016562A (ko) 2016-02-15

Similar Documents

Publication Publication Date Title
KR102177315B1 (ko) 플러시 제어 로직을 포함하는 입출력 인터셉터 로직, 및 그 입출력 인터셉터 로직을 이용하여 컴퓨터로 구현되는 방법
US10102081B2 (en) Memory controller system with non-volatile backup storage
KR20180059342A (ko) 저장 장치의 i/o 성능 개선을 위한 시스템 및 방법
KR102137761B1 (ko) 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법
TWI715926B (zh) 在一儲存備份記憶體封裝中之韌體更新
EP3161622B1 (en) Accelerating boot time zeroing of memory based on non-volatile memory (nvm) technology
US10152280B2 (en) Storage device and control method
US20190272099A1 (en) Data Operating Method, Device, and System
KR20140142793A (ko) 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 시스템
US20120144094A1 (en) Data storage apparatus and method for controlling flash memory
EP3147797A1 (en) Data management method, node and system for database cluster
US9547460B2 (en) Method and system for improving cache performance of a redundant disk array controller
US9934100B2 (en) Method of controlling memory swap operation and data processing system using same
US9971549B2 (en) Method of operating a memory device
TWI688864B (zh) 儲存設備及儲存方法
CN107656702B (zh) 加速硬盘读写的方法及其系统、以及电子设备
KR102195069B1 (ko) 패킷 송신기 및 이를 포함하는 인터페이스 장치
US11783893B2 (en) Utilizing NAND buffer for DRAM-less multilevel cell programming
US20160266974A1 (en) Memory controller, data storage device and data write method
JP6312837B2 (ja) コンピューティングデバイスにおける消費電力の低減
CN109997095B (zh) 在多个阶段中实现存储器装置的功能
JP2012205100A (ja) メモリシステム、メモリコントローラ、及び同期化装置
CN102073459B (zh) 基于固态硬盘的计算机系统及固态硬盘
JP5231496B2 (ja) 情報処理装置及びそのサスペンド/リジューム方法
US9483185B2 (en) Gradual context saving in a data storage device

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant