KR20180059342A - 저장 장치의 i/o 성능 개선을 위한 시스템 및 방법 - Google Patents

저장 장치의 i/o 성능 개선을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20180059342A
KR20180059342A KR1020170121413A KR20170121413A KR20180059342A KR 20180059342 A KR20180059342 A KR 20180059342A KR 1020170121413 A KR1020170121413 A KR 1020170121413A KR 20170121413 A KR20170121413 A KR 20170121413A KR 20180059342 A KR20180059342 A KR 20180059342A
Authority
KR
South Korea
Prior art keywords
write
logic section
volatile storage
flush
holding
Prior art date
Application number
KR1020170121413A
Other languages
English (en)
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 KR20180059342A publication Critical patent/KR20180059342A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/0656Data buffering arrangements
    • 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)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 저장 스택과 결합된 I/O 인터페이스를 갖는 입력/출력(I/O) 인터셉터 로직 섹션을 포함한다. 상기 I/O 인터페이스는 응용 프로그램으로부터 쓰기 I/O, 판독 I/O 및 플러시 요청들을 인터셉트한다. 다른 종류의 비휘발성 저장 장치들에 연결된 쓰기 홀딩 버퍼들은 상기 쓰기 I/O들을 저장할 수 있다. 리-오더 로직 섹션은 상기 쓰기 I/O들의 순서를 변경할 수 있고, 재정렬된 쓰기 I/O를 결합 쓰기 I/O에 결합시킬 수 있다. 동적 이기종 플러시 제어 로직 섹션은 상기 I/O 인터페이스로부터 플러시 요청들을 수신하고, 비휘발성 저장 장치에 쓰기 I/O들을 기입할 필요 없이, 응용 프로그램에 상기 쓰기 I/O들의 쓰기 I/O 완료를 통지하며, 동적 플러시 임계, 산출된 데이터의 임계량, 또는 기 설정된 시간 구간의 만료에 응답하여 비휘발성 저장 장치에 기입될 결합 쓰기 I/O를 발생시킬 수 있다.

Description

저장 장치의 I/O 성능 개선을 위한 시스템 및 방법{SYSTEM AND METHOD FOR IMPROVING STORAGE DEVICE I/O PERFORMANCE}
본 발명은 저장 장치의 입력/출력(I/O) 기술에 관한 것이며, 더욱 상세하게는, 서버와 같은 컴퓨팅 장치의 저장 스택에 내장된 동적 이기종(heterogeneous) 플러시(flush) 제어 로직을 갖는 입력/출력(I/O) 인터셉터(interceptor)를 사용하여 저장 장치의 I/O 성능을 개선하기 위한 시스템 및 방법에 관한 것이다.
엔터프라이즈(enterprise) 서버와 같은 컴퓨팅 장치에서 요구하는 성능이 증가하고 있다. 컴퓨터 서버 장치의 프로세서와 네트워킹 성능이 안정적으로 개선되는 반면, 모바일 장치의 로컬 저장 스택은 빠르게 개선되지 못했다. 오늘날 컴퓨터들은 서버 또는 서버 랙 내부 또는 그와 연결된 다수의 이기종 스토리지 장치를 구비한다. 플러시 명령 도중에는 I/O가 차단되기 때문에, 데이터 일관성을 확보하기 위하여 일반적으로 사용되는 플러시 요청은 성능에 장애가 되고, 다양한 종류의 저장 장치들 사이에 구별이 없어, 이들 시스템들의 전반적인 성능에 더 영향을 미친다. 결국, 저장 스택 및 이런 서버 시스템의 관련 로컬 저장 장치들은 성능 병목 현상이 되었다.
본 발명의 목적은 저장 스택 및 서버 시스템의 관련 로컬 저장 장치들의 성능 병목 현상을 해결하기 위한 시스템 및 방법을 제공하는 것이다.
실시예들은 입력/출력(I/O) 인터셉터 로직 섹션을 포함할 수 있다. 상기 I/O 인터셉터 로직 섹션은 저장 스택과 통신 가능하도록 결합되고, 응용 프로그램으로부터의 다수의 쓰기 I/O 및 다수의 플러시 요청을 인터셉트하는 I/O 인터페이스를 포함할 수 있다. 상기 I/O 인터셉터 로직 섹션은 다수의 비휘발성 저장 장치들 중 대응하는 비휘발성 저장 장치와 각각 연결된 다수의 쓰기 홀딩 버퍼들을 포함하고, 상기 쓰기 홀딩 버퍼들 각각은 상기 I/O 인터페이스로부터 상기 다수의 쓰기 I/O들의 서브셋(subset)을 수신하고, 쓰기 I/O들의 서브셋을 저장한다. 상기 I/O 인터셉터 로직 섹션은 상기 I/O 인터페이스로부터 상기 다수의 플러시 요청들을 수신하고, 상기 다수의 비휘발성 저장 장치들 중 대응하는 비휘발성 저장 장치에 상기 다수의 쓰기 홀딩 버퍼들로부터의 다수의 쓰기 I/O들을 기입하지 않고, 응용 프로그램에 상기 다수의 쓰기 I/O들의 쓰기 I/O 완료를 통지하는 동적 이기종 플러시 제어 로직 섹션을 포함할 수 있다.
실시예들은 저장 스택과 통신 가능하도록 결합되고 응용 프로그램으로부터 다수의 쓰기 I/O들 및 다수의 플러시 요청들을 인터셉트하는 I/O 인터페이스를 포함하는 입력/출력(I/O) 인터셉터 로직 섹션을 포함할 수 있다. 상기 I/O 인터셉터 로직 섹션은 상기 I/O 인터페이스로부터 상기 다수의 쓰기 I/O들을 수신하고, 상기 다수의 쓰기 I/O들을 저장하기 위한 다수의 쓰기 홀딩 버퍼들을 포함할 수 있다. 상기 쓰기 홀딩 버퍼들 각각은 다수의 쓰기 홀딩 버퍼들을 홀딩시키기 위한 다중-버퍼 홀딩 큐(queue)를 포함할 수 있다. 상기 I/O 인터셉터 로직 섹션은 상기 I/O 인터페이스로부터 상기 다수의 플러시 요청을 수신하고, 다수의 비휘발성 저장 장치에 다수의 쓰기 I/O를 기입하지 않고, 상기 응용 프로그램에 상기 다수의 쓰기 I/O들의 쓰기 I/O 완료를 통지하는 동적 이기종 플러시 제어 로직 섹션을 포함할 수 있다. 상기 동적 이기종 플러시 제어 로직 섹션은 다수의 플러시 요청들 중 동적 플러시 임계보다 크거나 같은 플러시 요청들에 응답하여 상기 다수의 버퍼 홀딩 서브 버퍼들로부터 상기 비휘발성 저장 장치까지 상기 다수의 쓰기 I/O들을 비우도록 상기 다중-버퍼 홀딩 큐를 발생시킨다.
본 발명에 따르면, 저장 스택에 내장된 동적 이기종(heterogeneous) 플러시(flush) 제어 로직을 갖는 입력/출력(I/O) 인터셉터(interceptor)를 사용하여 저장 장치의 I/O 성능 현저하게 개선할 수 있고, 데이터 일관성을 유지시킬 수 있다.
본 발명의 앞서 언급한 추가적인 특징들 및 장점들은 관련 도면들을 참조하여 이루어진 다음 상세한 설명에 의해서 좀더 명확해질 것이다:
도 1a는 본 발명의 실시예에 따른 호스트, 물리적 하드웨어 장치 및 I/O 인터셉터 로직 섹션을 포함하는 시스템의 블록도이다.
도 1b는 본 발명의 실시예에 따른 I/O 인터셉터 로직 섹션을 포함하는 호스트 및 비휘발성 쓰기 홀딩 버퍼들을 포함하는 물리적 하드웨어 장치를 포함하는 시스템 스택을 나타낸 블럭도이다.
도 2a는 각각이 다른 종류의 물리적 비휘발성 저장 장치와 연결된 또는 이에 다르게 연결된 다중 임시 쓰기 홀딩 버퍼들을 포함하는 본 발명의 실시예에 따른 도 1a의 상기 I/O 인터셉터 로직 섹션을 나타낸 블록도이다.
도 2b는 각각이 다른 종류의 물리적 비휘발성 저장 장치와 연결된 또는 이에 다르게 연결된 다중 임시 쓰기 홀딩 버퍼들을 포함하는 본 발명의 실시예에 따른 도 1b의 상기 I/O 인터셉터 로직 섹션을 나타낸 블록도이다.
도 3은 시간과 관련된 일련의 사건들을 포함하는 본 발명의 실시예에 따른 도 1a의 시스템 스택의 다른 구성 요소들을 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른 도 1a 및 도 1b의 상기 I/O 인터셉터 로직 섹션의 리-오더 로직 섹션 및 상기 I/O 인터셉터 로직 섹션의 쓰기 홀딩 버퍼를 나타낸 도면이다.
도 5는 본 발명의 실시예에 따른 도 1a 및 도 1b의 상기 I/O 인터셉터 로직 섹션의 리-오더 로직 섹션 및 상기 I/O 인터셉터 로직 섹션의 리-매핑 메모리 섹션을 나타낸 도면이다.
도 6은 본 발명의 실시예에 따른 도 1a 및 도 1b의 상기 I/O 인터셉터 로직 섹션의 동적 이기종 플러시 제어 로직 섹션 및 상기 I/O 인터셉터 로직 섹션의 쓰기 홀딩 버퍼를 나타낸 도면이다.
도 7은 본 발명의 실시예에 따른 도 1a 및 도 1b의 상기 I/O 인터셉터 로직 섹션의 동적 이기종 플러시 제어 로직 섹션 및 상기 I/O 인터셉터 로직 섹션의 쓰기 홀딩 버퍼의 다른 예를 나타낸 도면이다.
도 8은 본 발명의 실시예에 따른 도 1a 및 도 1b의 상기 I/O 인터셉터 로직 섹션을 포함하는 서버 랙을 나타낸 개략도이다.
도 9는 본 발명의 실시예에 따른 도 1a 및 도 1b의 상기 I/O 인터셉터 로직 섹션을 포함하는 컴퓨터 서버를 나타낸 개략도이다.
도 10은 본 발명의 실시예에 따른 I/O 인터셉터 로직 섹션을 사용한 응용 프로그램으로부터 I/O들을 인터셉트하기 위한 기술을 설명하는 흐름도이다.
도 11은 본 발명의 실시예에 따른 I/O 인터셉터 로직 섹션을 사용한 응용 프로그램으로부터 I/O들을 인터셉트하기 위한 다른 기술을 설명하기 위한 흐름도이다.
도 12는 본 발명의 실시예에 따른 I/O 인터셉터 로직 섹션을 포함하는 컴퓨팅 시스템을 나타낸 블록도이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시 예를 상세히 설명한다. 다음의 상세한 설명에서, 본 발명의 개념을 완전히 이해할 수 있도록 많은 특정 세부 사항이 제시된다. 그러나, 당업자는 이러한 특정 세부 사항 없이 본 발명의 개념을 실시할 수 있는 것으로 이해될 것이다. 다른 예들에서, 공지된 방법들, 절차들, 구성 요소들, 회로들 및 네트워크들은 실시 예들을 불필요하게 모호하게 하지 않기 위해 상세하게 설명되지 않을 것이다.
제1, 제2 등의 용어가 본 명세서에서 다양한 구성 요소를 설명하기 위해 사용될 수 있지만, 이들 구성 요소는 이들 용어에 의해 제한되어서는 안될 것이다. 이들 용어는 하나의 요소를 다른 요소와 구별하기 위해서만 사용된다. 예를 들어, 제1 전력 스위치 셀은 제2 전력 스위치 셀로 지칭될 수 있고, 유사하게, 제2 전력 스위치 셀은 본 발명 개념의 범위를 벗어나지 않고 제1 전력 스위치 셀로 지칭될 수 있다.
본 발명의 개념의 설명에 사용된 용어는 단지 특정 실시 예를 설명하기 위한 것이며, 본 발명의 개념을 제한하려는 것은 아니다. 본 발명의 개념 및 첨부된 특허 청구 범위의 설명에 사용된 바와 같이, 단수 형태의 표현은 문맥에 달리 명시되지 않는 한 복수 형태를 포함하는 것으로 의도된다. 본 명세서에서 사용되는 "및/또는"이라는 용어는 하나 이상의 관련된 열거 항목의 임의의 그리고 모든 가능한 조합을 나타내고 포괄하는 것으로 이해될 수 있다. 본 명세서에서 사용되는 "포함한다" 및/또는 "포함하는"이라는 용어는 명시된 특징, 정수, 단계, 동작, 구성 요소 및/또는 부품들의 존재를 나타내지만, 그 존재 또는 하나 이상의 다른 특징, 정수, 단계, 동작, 구성 요소, 부품 및/또는 이들의 그룹을 추가하는 것을 배제하지 않는 것으로 이해될 수 있다. 도면의 구성 요소 및 특징은 반드시 축척하여 도시할 필요는 없다.
도 1a는 호스트(105) 및 물리적 하드웨어 장치(115)를 포함하는 시스템 스택(100)을 나타낸 블럭도이다. 본 발명의 실시예에 따르면, 입력/출력(I/O) 인터셉터 로직 섹션(120)은 상기 호스트(105) 내부에서 동작될 수 있다. 다른 실시예로, 상기 I/O 인터셉터 로직 섹션(120)은 상기 저장 스택(125)의 물리층 내에 또는 다른 적합한 컴퓨팅 장치의 다른 섹션 또는 공간에 인스턴스화될(instantiated) 수 있다. 상기 시스템 스택(100)은 예를 들어, 이하에서 추가로 설명되는 바와 같은 컴퓨터 서버, 컴퓨터 워크스테이션, 컴퓨터 서버 랙(rack), 랩탑(laptap), 다른 적합한 컴퓨터 등에 포함될 수 있다.
도 1a에 도시된 바와 같이, 상기 시스템 스택(100)은 저장 스택(125)을 포함할 수 있다. 상기 저장 스택(125)은 응용 프로그램(132)과 같은 상기 호스트(105)의 하나 이상의 응용 프로그램들(130) 사이 및 물리적 하드웨어 장치(115)의 하나 이상의 비휘발성 저장 장치들(135) 사이에서 입력/출력(I/O)의 송수신을 용이하게 할 수 있다. 상기 하나 이상의 비휘발성 저장 장치들(135)은 솔리드 스테이트 드라이브(solid state drive: SSD)(140), 플래시 메모리(145), 3D 크로스 포인트(XPoint) 메모리(144), 자기 저항 랜덤 엑세스 메모리(magnetoresistive random-access memory: MRAM)(146), 상 변화 메모리(phase change memory: PRAM)(148), 저항 랜덤 엑세스 메모리(resistive random access memory: RRAM)(152), 강유전체 랜덤 엑세스 메모리(ferroelectric random access memory: FRAM)(154), 광학 저장 장치(156), 테이프 장치(158), 하드 디스크 드라이브(150) 등을 포함할 수 있다.
상기 I/O 인터셉터 로직 섹션(120)은 I/O 인터페이스(155), 하나 이상의 임시 쓰기 홀딩 버퍼들(160), 리-오더 로직 섹션(165) 및 동적 이기종 플러시 제어 로직 섹션(170)을 포함할 수 있다. 상기 I/O 인터페이스(155)는 상기 저장 스택(125)에 통신 가능하도록 연결될 수 있다. 상기 I/O 인터셉터 로직 섹션(120)은 플러시 요청들을 포함하는 모든 I/O들을 상기 응용 프로그램(132)으로부터 인터셉트할 수 있다. 예를 들어, 상기 I/O 인터페이스(155)는 쓰기 I/O들, 읽기 I/O들 및 플러시 요청들을 응용 프로그램(132)으로부터 인터셉트할 수 있다. 상기 임시 쓰기 홀딩 버퍼들(160)은 상기 I/O 인터페이스(155)로부터 상기 쓰기 I/O들을 수신하고, 상기 쓰기 I/O들을 저장할 수 있다. 상기 임시 쓰기 홀딩 버퍼들(160)은 여유 시스템 메모리로부터 사전 할당될 수 있다.
상기 리-오더 로직 섹션(165)은 상기 임시 쓰기 홀딩 버퍼(160)와 통신 가능하도록 연결될 수 있다. 상기 리-오더 로직 섹션(165)은 상기 임시 쓰기 홀딩 버퍼들(160) 각각에 저장된 상기 쓰기 I/O들의 순서를 변경할 수 있다. 상기 리-오더 로직 섹션(165)은 후술하는 바와 같이 상기 리-오더된 쓰기 I/O들을 상기 임시 쓰기 홀딩 버퍼들(160) 각각에 대한 결합 쓰기 I/O에 결합할 수 있다. 상기 동적 이기종 플러시 제어 로직 섹션(170)은 상기 I/O 인터페이스(155)로부터 상기 플러시 요청들을 수신할 수 있다. 상기 동적 이기종 플러시 제어 로직 섹션(170)은 상기 하나 이상의 비휘발성 저장 장치들(135) 중 임의의 하나에 실질적으로 쓰기 I/O가 기입되지 않고, 상기 응용 프로그램(132)에 상기 쓰기 I/O들의 쓰기 I/O 완료를 통지할 수 있다.
응용 프로그램의 관점에서, 상기 쓰기 I/O가 완료되었지만, 실제로 상기 쓰기 I/O가 이 시점에 비휘발성 저장 장치에 저장되지는 않는다. 다시 말하면, 상기 동적 이기종 플러시 제어 로직 섹션(170)은 하나 이상의 비휘발성 저장 장치들(135) 중 임의의 하나에 실질적으로 상기 쓰기 I/O가 기입되기 전에, 상기 응용 프로그램(132)에 상기 쓰기 I/O들의 쓰기 I/O 완료를 통지할 수 있다. 또한, 후술하는 바와 같이, 상기 동적 이기종 플러시 제어 로직 섹션(170)은 동적 플러시 임계 또는 다른 기준보다 크거나 같은 플러시 요청들에 응답하여 결합 쓰기 I/O를 대응하는 비휘발성 저장 장치(135)에 기입할 수 있다.
도 1b는 본 발명의 실시예에 따른 I/O 인터셉터 로직 섹션(120)을 포함하는 호스트(105) 및 비휘발성 쓰기 홀딩 버퍼(162)를 포함하는 물리적 하드웨어 장치(115)를 포함하는 시스템 스택(102)을 나타낸 블록도이다. 상기 시스템 스택(102)은 상기 비휘발성 쓰기 홀딩 버퍼(162)가 비휘발성 메모리 장치 상에 인스턴스화되고, 물리적 하드웨어 장치들(115) 사이에 구비된다는 주목할만한 차이점을 갖지만 도 1a에 서술된 상기 시스템 스택(100)과 유사하다. 예를 들어, 상기 비휘발성 쓰기 홀딩 버퍼(162)는 하나 이상의 물리적 비휘발성 저장 장치들, 바람직하게 PRAM, MRAM, 또는 3D 크로스 포인트 장치들과 같은 고속 장치들에 구비될 수 있다. 다시 말하면, 상기 PRAM, MRAM 또는 3D 크로스 포인트 장치들은 DRAM의 대체제로 사용될 수 있다.
상기 버퍼들(162)을 홀딩시키기 위해 사용되는 비휘발성 저장 장치들의 속성은 후술하는 바와 같이 동적 플러시들을 결정하는데 사용될 수 있다. 예를 들어, PRAM, MRAM 또는 3D 크로스 포인트 장치들과 같은 비휘발성 장치들을 사용하여 상기 비휘발성 쓰기 홀딩 버퍼들(162)을 통합하면, 데이터 손실의 위험이 적고, 경우에 따라 용량이 달라지거나 커질 수 있다. 결국, 상기 비휘발성 쓰기 홀딩 버퍼들(162)은 덜 빈번하게 플러시될 수 있다. 비록 물리적 비휘발성 쓰기 홀딩 버퍼들(162)을 저장하는 물리적 비휘발성 장치들이 물리적 하드웨어 장치(115)들 사이에 있지만, 상기 비휘발성 쓰기 홀딩 버퍼들(162)의 논리적 제어는 상기 호스트(105)에 인스턴스화된 상기 I/O 인터셉터 로직 섹션(120)에 남아있을 수 있다.
일부 실시예에서, 상기 비휘발성 쓰기 홀딩 버퍼들(162)을 저장하는 상기 물리적 장치들(예를 들어, PRAM, MRAM, 또는 3D 크로스 포인트 메모리 장치들)은 최종 플러시 타겟으로 사용되는 물리적 장치들(135)과 동일하지 않아도 될 수 있다. 일부 실시예에서, 상기 비휘발성 쓰기 홀딩 버퍼들(162)을 저장하는 상기 물리적 장치들(예를 들어, PRAM, MRAM, 또는 3D 크로스 포인트 메모리 장치들)은 계층형 시스템에서 최종 플러시 타겟으로 사용되는 물리적 장치들(135) 중 적어도 일부와 동일할 수 있다.
서술된 상기 시스템 스택(100)과 동일 참조 부호를 갖는 구성 요소에 대해서는 반복하여 상세하게 설명하지 않는다.
도 2a는 다수의 임시 쓰기 홀딩 버퍼들(예를 들어, 160A, 160B 내지 160N)을 포함하고, 홀딩 버퍼들 각각이 다른 종류의 물리적 비휘발성 저장 장치(예를 들어, 135A, 135B 내지 135N)에 연결된 본 발명의 실시예에 따른 도 1a의 상기 I/O 인터셉터 로직 섹션(120)을 나타낸 블럭도이다. 선택적 또는 추가적으로, 상기 임시 쓰기 홀딩 버퍼들(예를 들어, 160A, 160B 내지 160N) 각각은 유사하거나 같은 종류이지만 다른 방식으로 연결된 물리적 비휘발성 저장 장치(예를 들어, 135A, 135B 내지 135N는 유사하거나 또는 같은 종류의 비휘발성 저장 장치임)에 연결될 수 있다. 예를 들어, 하나의 비휘발성 저장 장치(예를 들어, 135A)와의 연결은 이더넷 연결을 수반할 수 있으나, 다른 유사한 종류의 비휘발성 저장 장치(예를 들어, 135B)와의 연결은 PCIe 연결을 통한 플래시를 수반할 수 있다.
일부 실시예에서, 상기 임시 쓰기 홀딩 버퍼들(예를 들어, 160A, 160B 내지 160N) 각각은 대응하는 비휘발성 저장 장치(예를 들어, 135A, 135B 내지 135N)에 연관되거나 결합될 수 있다. 또한, 상기 임시 쓰기 홀딩 버퍼들(예를 들어, 160A, 160B 내지 160N) 각각은 상기 I/O 인터페이스(155)로부터 상기 쓰기 I/O 서브셋을 수신하고, 상기 쓰기 I/O의 서브셋을 일시적으로 저장할 수 있다. 상기 동적 이기종 플러시 제어 로직 섹션(170)은 상기 I/O 인터페이스(155)로부터 플러시 요청들을 수신할 수 있다. 상기 동적 이기종 플러시 제어 로직 섹션(170)은 상기 쓰기 I/O들을 상기 임시 쓰기 홀딩 버퍼들(예를 들어, 160A, 160B 내지 160N)로부터 상기 대응하는 비휘발성 저장 장치(예를 들어, 135A, 135B 내지 135N)에 기입하지 않고, 상기 응용 프로그램(도 1a의 132)에 상기 쓰기 I/O의 쓰기 I/O 완료를 통지할 수 있다.
일부 실시예들에서, 상기 비휘발성 저장 장치들(예를 들어, 135A, 135B 내지 135N) 각각은 다른 종류 즉 이종 성질을 가질 수 있다. 예를 들어, 상기 비휘발성 저장 장치들(예를 들어, 135A, 135B 내지 135N)은 도 1a를 참조하여 설명된 다양한 종류의 비휘발성 저장 징치(135)에 대응할 수 있다. 결국, 상기 비휘발성 저장 장치들(예를 들어, 135A, 135B 내지 135N) 각각은 용량, 블록 사이즈, 로컬 캐싱(caching) 특성, 판독 또는 기입 레이턴시(latency), 최적 버스트(burst) 사이즈, 처리량 등과 같은 특성들을 포함하여 서로 다른 특성을 가질 수 있다. 일부 실시예에서, 상기 비휘발성 저장 장치들(예를 들어, 135A, 135B 내지 135N) 각각은 같거나 유사한 종류일 수 있으나, 이더넷 또는 PCIe와 같은 다른 유형의 연결을 사용할 수 있다. 다른 유형의 연결은 판독 또는 기입 레이턴시(latency), 최적 버스트(burst) 사이즈, 처리량 등과 같은 다른 동작 특성들을 유발할 수 있다.
후술하는 바와 같이, 동적 이기종 플러시 제어 로직 섹션(170)은 상기 쓰기 I/O가 어떤 유형의 비휘발성 저장 장치에 보내지는지 및/또는 상기 쓰기 I/O가 어떤 종류의 연결을 통해 보내지는지에 따라 플러시 임계를 동적으로 변화시킬 수 있다. 달리 말하면, 동적 플러시 임계는 대응하는 비휘발성 저장 장치의 종류 또는 결합 쓰기 I/O가 전송되는 연결의 종류에 따라 결정될 수 있다. 즉, 플러시 임계는 기본 캐시의 특성 및/또는 기본 최종 물리적 저장 장치의 특성을 포함하는 기본 저장 장치 또는 연결의 특성에 근거하여 변경될 수 있다. 실제 커밋된(committed) 플러시 속도는 상기 쓰기 I/O들 및 플러시들이 전송되는 기본 물리적 저장 장치의 유형에 따라 달라질 수 있다. 실제 커밋된 플러시들은 드라이브 마다 또는 비휘발성 저장 장치마다 달라질 수 있다.
상기 동적 이기종 플러시 제어 로직 섹션(170)은 각각이 비휘발성 저장 장치(예를 들어, 135A, 135B 내지 135N)들 중 대응하는 하나와 연결되는 다수의 플러시 임계(예를 들어, 172A, 172B 내지 172N)를 포함할 수 있다. 일부 실시예에서, 상기 플러시 임계들(예를 들어, 172A, 172B 내지 172N) 각각은 서로 상대적으로 다르고, 기본 비휘발성 저장 장치의 종류 또는 이와 관련된 연결에 기초한다. 상기 동적 이기종 플러시 제어 로직 섹션(170)은 대응하는 플러시 임계(예를 들어, 172A, 172B 내지 172N)보다 크거나 같은 플러시 요청들에 응답하여 상기 임시 쓰기 홀딩 버퍼들(예를 들어, 160A, 160B 내지 160N) 각각으로부터의 상기 쓰기 I/O들이 대응하는 비휘발성 저장 장치(예를 들어 135A, 135B 내지 135N)에 기입되도록 한다.
상기 임시 쓰기 홀딩 버퍼들(160)은 제1 임시 쓰기 홀딩 버퍼(160A), 제2 임시 쓰기 홀딩 버퍼(160B), 제N 임시 쓰기 홀딩 버퍼(160N) 등을 포함한다. 상기 비휘발성 저장 장치(135)는 제1 비휘발성 저장 장치(135A), 제2 비휘발성 저장 장치(135B), 제N 비휘발성 저장 장치(135N) 등을 포함한다. 상기 제1 임시 쓰기 홀딩 버퍼(160A)는 상기 제1 비휘발성 저장 장치(135A)에 연결될 수 있다. 상기 제2 임시 쓰기 홀딩 버퍼(160B)는 상기 제2 비휘발성 저장 장치(135B)에 연결될 수 있다. 상기 제N 임시 쓰기 홀딩 버퍼(160N)는 상기 제N 비휘발성 저장 장치(135N)에 연결될 수 있다.
상기 동적 이기종 플러시 제어 로직 섹션(170)은 대응하는 제1 플러시 임계(172A)보다 크거나 같은 상기 제1 비휘발성 저장 장치(135A)와 관련된 여러 플러시 요청들에 응답하여 상기 제1 임시 쓰기 홀딩 버퍼(160A)로부터의 쓰기 I/O 서브셋이 상기 제1 비휘발성 저장 장치(135A)에 기입되도록 할 수 있다. 상기 동적 이기종 플러시 제어 로직 섹션(170)은 대응하는 제2 플러시 임계(172B)보다 크거나 같은 상기 제2 비휘발성 저장 장치(135B)와 관련된 여러 플러시 요청들에 응답하여 상기 제2 임시 쓰기 홀딩 버퍼(160B)로부터의 쓰기 I/O 서브셋이 상기 제2 비휘발성 저장 장치(135B)에 기입되도록 할 수 있다. 상기 동적 이기종 플러시 제어 로직 섹션(170)은 대응하는 제N 플러시 임계(172N)보다 크거나 같은 상기 제N 비휘발성 저장 장치(135N)와 관련된 여러 플러시 요청들에 응답하여 상기 제N 임시 쓰기 홀딩 버퍼(160N)로부터의 쓰기 I/O 서브셋이 상기 제N 비휘발성 저장 장치(135N)에 기입되도록 할 수 있다.
도 2b는 본 발명의 실시예에 따른 도 1b의 상기 I/O 인터셉터 로직 섹션(120) 및 각각이 다른 종류의 물리적 비휘발성 저장 장치(예를 들어, 135A, 135B 내지 135N)에 연결되고 또는 이에 다르게 연결된 다수의 비휘발성 쓰기 홀딩 버퍼들(예를 들어, 162A, 162B 내지 162N)의 블록도이다. 상기 비휘발성 쓰기 홀딩 버퍼들(예를 들어, 162A, 162B 내지 162N)은 도 2a에 도시된 임시 쓰기 홀딩 버퍼(예를 들어, 160A, 160B 내지 160N)와 유사하고, 도 2b의 비휘발성 쓰기 홀딩 버퍼들(예를 들어, 162A, 162B 내지 162N)가 물리적 하드웨어 장치(115)에 존재하고, 비휘발성 특성을 갖는다는 주된 차이점이 있다. 예를 들어, 비휘발성 쓰기 홀딩 버퍼들(예를 들어, 162A, 162B 내지 162N)은 하나 이상의 물리적 비휘발성 저장 장치들, 바람직하게 PRAM, MRAM 또는 3D 크로스포인트 장치와 같은 고속 장치들에 구비될 수 있다.
상기 버퍼들(예를 들어, 162A, 162B 내지 162N)을 홀딩하기 위해 사용되는 비휘발성 저장 장치들의 속성은 동적 플러시 임계들(예를 들어, 172A, 172B 내지 172N)을 결정하는데 사용될 수 있다. 예를 들어, PRAM, MRAM 또는 3D 크로스 포인트 장치들과 같은 비휘발성 장치들을 사용하여 상기 비휘발성 쓰기 홀딩 버퍼들(예를 들어, 162A, 162B 내지 162N)을 통합하면, 전력 장애로 인한 데이터 손실의 위험이 적고 경우에 따라 이들 장치들은 다른/높은 용량을 가질 수 있다. 결국, 상기 비휘발성 쓰기 홀딩 버퍼들(예를 들어, 162A, 162B 내지 162N)은 덜 자주 플러시될 수 있다. 한편, 상기 I/O 인터셉터 로직 섹션(120)은 도 2a를 참조한 상기한 설명과 유사한 방식으로 동작할 수 있다.
도 3은 본 발명의 실시예에 따른 타임 라인(302)에 의해 도시된 바와 같이 시간과 관련된 일련의 사건들을 포함하는 도 1a 및 도 1b의 상기 시스템 스택(100)의 다양한 구성 요소들을 나타낸 블록도(300)이다.
주어진 쓰기 홀딩 버퍼(예를 들어, 160A 또는 162A)에 대해서, 상기 I/O 인터페이스(155)는 예를 들어 상기 응용 프로그램(132)으로부터 데이터 쓰기 I/O(305)(즉, W01 내지 Wn3), 메타 데이터(metadata) 쓰기 I/O(310)(즉, W04 내지 Wn6), 데이터 쓰기 I/O(315)(즉, W07 내지 Wn9), 메타 데이터 쓰기 I/O(320)(즉, W010 내지 Wn12)를 포함하는 쓰기 I/O들 및 플러시 요청(예를 들어, F0 내지 Fn)을 인터셉트할 수 있다. 상기 쓰기 홀딩 버퍼(예를 들어, 160A 또는 162A)는 상기 I/O 인터페이스(155)로부터 상기 쓰기 I/O들을 수신하고, 상기 쓰기 I/O들을 저장할 수 있다. 만약, 데이터가 상기 쓰기 홀딩 버퍼(예를 들어, 160A 또는 162A)에 상주하는 동안 판독 I/O가 상기 응용 프로그램(132)으로부터 수신되면, 상기 I/O 인터셉터 로직 섹션(120)은 후술하는 바와 같이 상기 쓰기 홀딩 버퍼(예를 들어, 160A 또는 162A)에 상주하는 카피(copy)로부터 또는 리-매핑 메모리 위치로부터 상기 판독 I/O 요청을 제공할 수 있다. 상기 리-오더 로직 섹션(165)은 후술하는 바와 같이 상기 쓰기 홀딩 버퍼들(160 또는 162) 각각에 저장된 상기 쓰기 I/O들의 순서를 변경할 수 있다. 상기 리-오더 로직 섹션(165)은 랜덤 쓰기 I/O들을 순차 쓰기 I/O들로 변환할 수 있다. 상기 리-오더 로직 섹션(165)은 상기 재정렬된 쓰기 I/O들(예를 들어, 305, 310, 315, 320)을 상기 쓰기 홀딩 버퍼들(예를 들어, 160A 또는 162A) 각각에 대한 결합 쓰기 I/O들(예를 들어, 325)에 결합시킬 수 있다.
상기 동적 이기종 플러시 제어 로직 섹션(170)은 상기 I/O 인터페이스(155)로부터 플러시 요청(예를 들어, F0 내지 Fn)을 수신할 수 있다. 상기 동적 이기종 플러시 제어 로직 섹션(170)은 상기 쓰기 I/O들을 하나 이상의 비휘발성 저장 장치(135) 중 어느 하나에 기입하지 않고, 상기 응용 프로그램(예를 들어, 132)에 상기 쓰기 I/O들의 대응하는 완료 메시지를 통해 쓰기 I/O 완료를 통지할 수 있다. 다시 말해, 상기 동적 이기종 플러시 제어 로직 섹션(170)은 상기 응용 프로그램(132)이 대응하는 플러시 요청이 비휘발성 저장 장치들(135)중 하나에 실제로 완료되는 것을 기다릴 필요없이 추가적인 쓰기 I/O를 계속 전송할 수 있도록, 실질적으로 바로 각 플러시 요청에 응답할 수 있고 이로써 상기 응용 프로그램(132)의 성능을 현저히 개선할 수 있다. 다시 말해, 상기 동적 이기종 플러시 제어 로직 섹션(170)은 상기 쓰기 I/O가 하나 이상의 비휘발성 저장 장치(135) 중 어느 하나에 실제로 쓰여지기 전에, 상기 응용 프로그램(132)에 상기 쓰기 I/O의 쓰기 I/O 완료 (330)를 통지할 수 있다. 상기 쓰기 I/O는 상기 쓰기 홀딩 버퍼들(160 또는 162)에 저장되기 때문에, 상기 동적 이기종 플러시 제어 로직 섹션(170)은 나중에 대응하는 비휘발성 저장 장치(135)에 커밋된 플러시(CFn)로 상기 결합 쓰기 I/O(325)가 실제 쓰여지도록 할 수 있다.다시 말해, 상기 동적 이기종 플러시 제어 로직 섹션(170)은 선택적으로 플러시 기술을 수행할 수 있다. 상기 커밋된 플러시(CFn)은 동기적으로 동작할 수 있다. 상기 결합 쓰기 I/O 사이즈가 각각의 쓰기 I/O들보다 크기 대문에, 상기 비휘발성 저장 장치에 개별적으로 전송되는 각 쓰기 I/O들과 관련된 오버 헤드를 감소시킴으로써, 저장 성능이 개선된다. 또한, 상기 쓰기 I/O들이 비휘발성 저장 장치보다 상당히 높은 성능(즉, 높은 처리량 및 낮은 대기 시간)을 갖는 시스템 메모리에서 쓰기 I/O가 완료될 수 있기 때문에, 응용 프로그램의 성능이 현저하게 향상된다.
더욱이, 상기 결합된 쓰기 I/O(325) 중 커밋된 플러시(CFn)가 플러시 경계(Fn) 상에 또는 바로 다음에(예를 들어, 동적 플러시 임계보다 크거나 같은 다수의 플러시 요청에 응답하여) 발생하기 때문에, 상기 데이터는 일관성을 유지할 수 있다. 갑작스러운 전력 손실이 발생하여, 비록 데이터의 손실이 발생하더라도, 데이터는 비휘발성 저장 장치(135)에서 계속 남아있을 것이다. 응용 프로그램이 비휘발성 장치에 존재하는 데이터를 판독할 수 있고, 저장된 데이터에 근거하여 그 상태를 회복 또는 되돌릴 수 있기 때문에, 데이터의 손실은 응용 프로그램에서 허용될 수 있다. 그러나, 데이터의 비일관성은 일반적으로 응용 프로그램에 용인되지 않으며, 예측할 수 없는 동작을 유발하거나 응용 프로그램을 작동 불능 상태로 만들 수 있다. 본 발명의 실시예들은 커밋된 플러시들(예를 들어, CF0 및 CFn) 사이에서 쓰기 I/O들을 축적함으로써, 데이터의 일관성을 확보하고, 그 다음 여기에 서술된 바와 같이 결합 쓰기 I/O의 데이터를 상기 비휘발성 저장 장치로 플러싱한다.
하나 이상의 비휘발성 저장 장치(135)는 상기 I/O 인터셉터 로직 섹션(120)에 의해 수신되고 비휘발성 저장 장치에 각 커밋된 플러스 트랜잭션(transaction)의 완료를 확인하는데 사용될 수 있는 커밋된 플러시 확인 메시지(예를 들어, 175)를 반환할 수 있으며, 이로써 동기 커밋된 플러시 동작을 제공할 수 있다. 다시 말해, 특정 커밋된 플러시 동작의 동기화가 이루어지는 동안, 다른 쓰기 I/O 및 특정 커밋된 플러시 동작의 일부가 아닌 비커밋된 플러시 요청은 누적되어, 후속 동기식 커밋된 플러시 동작까지 비휘발성 저장 장치에 실제로 플러시될 수 없다.
갑작스런 전력 손실은 임의의 시점에서 발생할 수 있으나, 데이터는 일관성을 유지할 것이다. 다시 말해, 하나 이상의 비휘발성 저장 장치(135)의 데이터와 쌍을 이루는 메타 데이터가 항상 존재할 것이다. 즉, 하나 이상의 비휘발성 저장 장치(135)에 대응하는 데이터가 없는 메타 데이터가 존재하는 상황은 있을 수 없을 것이다. 결국, 본 발명의 실시예에 따르면, 응용 프로그램과 저장 스택의 성능을 현저하게 개선하면서, 데이터 일관성이 유지될 수 있다.
또한, 일반적인 커밋된(committed) 플러시 요청들이 비커밋된(non-committed) 플러시 요청들로 전환될 수 있기 때문에, 쓰기 I/O들을 재정렬할 기회의 창이 확장된다. 일반적으로, 쓰기 I/O들은 플러시 경계들(예를 들어, F0와 Fn 사이) 사이에서만 재정렬될 수 있다. 그러나, 본 발명의 실시예들에 따르면, 실제 커밋된 플러시들(예를 들어, CF0 및 CFn)이 확장된 타임 스케일 상에서 발생될 수 있기 때문에 일반적인 플러시 요청은 비커밋된 요청으로 전환되고, 쓰기 I/O들은 비커밋된 플러스 경계(예를 들어, F0 및 Fn 사이 및 F1, F2 및 F3에 걸쳐서)를 지나면서 재정렬될 수 있다. 다시 말해, 두 개의 커밋된 플러스들(CF0 및 CFn)의 사이에서의 쓰기 I/O들의 개수는 두 개의 비커밋된 플러스 요청들(예를 들어, F0 및 F1, F1 및 F2, 또는 F2 및 F3 등) 사이에서의 쓰기 I/O들의 개수보다 커서, 더 자주 그리고 더 짧은 타임 스케일로 발생한다. 쓰기 I/O들의 재정렬 기회의 창을 확장함으로써, 비휘발성 저장 장치에 더 효율적으로 쓰여지고, 하나의 결합(즉, 보다 큰) 쓰기 I/O로 그룹화하여 더 효율적으로 기입되도록, 쓰기 I/O들을 정렬시킬 수 있기 때문에, 추가적인 성능 증가를 달성할 수 있다.
상기 동적 이기종 플러시 제어 로직 섹션(170)은 플러시 요청들 중으로부터 동적 플러시 임계보다 크거나 같은 일부 플러시 요청들(예를 들어, F0, F1, F2, F3, 및 Fn)에 응답하여, 대응하는 비휘발성 저장 장치(135)에 결합 쓰기 I/O(325)가 기입되도록 할 수 있다. 상기 동적 플러시 임계는 2, 3, 4, 5, 8, 10, 16, 20, 32, 64, 100 등의 정수일 수 있고, 상기 쓰기 I/O(325)가 전송되는 특정 비휘발성 저장 장치(예를 들어, 135A)에 기초하여 다양하게 변경될 수 있다. 커밋된 플러시(CFn)를 발생시키기 전에 얼마나 많은 플러시를 누적할 것인지 제어하는 상기 동적 플러시 임계는 비휘발성 저장 장치(예를 들어, 135A)의 각 종류에 맞게 구성할 수 있으며, 동작 전에 미리 정의(미리 결정 및 설정)될 수 있다. 일부 실시예에서, 상기 동적 플러시 임계는 사용자 또는 시스템 관리자에 의해서 변경될 수 있도록 구성 가능한 설정일 수 있다. 일부 실시예에서, 상기 동적 플러시 임계는 기본 물리적 비휘발성 저장 장치의 특성에 근거하여 상기 동적 이기종 플러시 제어 로직 섹션(170)에 의해서 자동적으로 결정될 수 있다.
선택적 또는 추가적으로, 상기 동적 이기종 플러시 제어 로직 섹션(170)은 누적된 데이터의 임계량에 응답하여, 상기 커밋된 플러시(CFn)가 상기 결합 쓰기 I/O(325)를 하나 이상의 비휘발성 저장 장치(135)에 기입하게 할 수 있다. 다시 말해, 데이터의 임계량에 도달하면, 상기 동적 이기종 플러시 제어 로직 섹션(170)은 다음 플러시 요청시 상기 커밋된 플러시(CFn)를 발생할 수 있다. 상기 데이터의 임계량은 상기 기본 물리적 비휘발성 저장 장치의 특성에 따라 변화될 수 있다. 선택적 또는 추가적으로, 상기 동적 이기종 플러시 제어 로직 섹션(170)은 미리 정의된 시간 기간의 만료에 응답하여 하나 이상의 비휘발성 저장 장치(135)에 상기 결합 쓰기 I/O를 기입하기 위한 상기 커밋된 플러시(CFn)를 발생할 수 있다. 미리 정의된 시간 기간은 예를 들어, 5초, 10초, 30초, 60초 등 초단위 가 될 수 있다. 임계 시간 기간은 상기 기본 물리적 비휘발성 저장 장치의 특성에 따라 가변될 수 있다. 이것은 성능을 부스팅시키고 데이터의 일관성을 유지하면서, 갑작스런 전력 손실 상황에서 데이터 손실 기회를 감소시킬 수 있다. 선택적 또는 추가적으로, 상기 동적 이기종 플러시 제어 로직 섹션(170)은 축적된 데이터 임계량인 제1 기준에 응답하고, 그 다음 순차적으로 동적 플러시 임계를 만족하는 제2 조건에 응답하여, 하나 이상의 비휘발성 저장 장치(135)에 상기 결합 쓰기 I/O(325)를 기입하기 위한 상기 커핏된 플러시(CFn)를 발생시킬 수 있다. 다시 말해, 상기 기준 중 어느 하나 또는 양쪽 모두가 만족될 때 상기 커밋된 플러시(CFn)가 발생할 수 있다.
상기 I/O 인터셉터 로직 섹션(120)의 상기 I/O 인터페이스(155)는 데이터 쓰기 I/O들(예를 들어 305)의 제1 서브셋, 제1 플러시 요청(예를 들어, F1), 메타 데이터 쓰기 I/O들(예를 들어 310)의 제1 서브셋, 제2 플러시 요청(예를 들어 F2), 데이터 쓰기 I/O들(예를 들어 315)의 제2 서브셋, 제3 플러시 요청(예를 들어 F3), 메타 데이터 쓰기 I/O들(예를 들어 320)의 제2 서브셋, 및 제4 플러시 요청(예를 들어 F4)를 수신할 수 있다. 상기 리-오더 로직 섹션(165)은 쓰기 데이터 I/O들의 순서를 데이터 쓰기 I/O들(305)의 제1 서브셋, 메타 데이터 쓰기 I/O들(310)의 제1 서브셋, 데이터 쓰기 I/O들(315)의 제2 서브셋, 메타 데이터 쓰기 I/O들(320)의 제2 서브셋내에서 변경할 수 있다. 다시 말해, 상기 리-오더 로직 섹션(165)은 개별적인 쓰기 I/O들의 순서를 각 서브셋내에서 변경 및/또는 개별 쓰기 I/O들의 순서를 다양한 서브셋에 걸쳐 변경할 수 있다. 상기 리-오더 로직 섹션(165)은 데이터 쓰기 I/O들(305)의 제1 서브셋, 메타 데이터 쓰기 I/O들(310)의 제1 서브셋, 데이터 쓰기 I/O들(315)의 제2 서브셋, 메타 데이터 쓰기 I/O들(320)의 제2 서브셋을 상기 결합 쓰기 I/O(325)에 결합시킬 수 있다. 상기 리-오더 로직 섹션(165)은 후술하는 바와 같이 헤더(HDR) 및 푸터(FTR)를 상기 결합 쓰기 I/O(325)에 삽입 또는 부착시킬 수 있다.
도 4는 본 발명의 실시예에 따른 상기 I/O 인터셉터 로직 섹션(120, 도 1a 및 도 1b의)의 리-오더 로직 섹션(165) 및 상기 I/O 인터셉터 로직 섹션(120, 도 1a 및 도 1b의)의 쓰기 홀딩 버퍼(예를 들어, 160A, 162A)를 나타낸 도면이다. 상술한 바와 같이, 상기 리-오더 로직 섹션(165)은 개별적인 쓰기 I/O들의 순서를 각 서브셋내에서 변경 및/또는 개별 쓰기 I/O들의 순서를 다양한 서브셋에 걸쳐 변경할 수 있다. 이 실시예에서, 쓰기 I/O(W01)는 로직 블록 어드레스(LBA6)에 대응하고, 쓰기 I/O(W12)는 LBA12에 대응하며, 쓰기 I/O(Wn3)는 LBA9에 대응하고, 쓰기 I/O(W04)는 LBA7에 대응하며, 쓰기 I/O(W15)는 LBA10에 대응하고, 쓰기 I/O(Wn6)는 LBA11에 대응하고, 쓰기 I/O(W07)은 LBA5에 대응하며, 쓰기 I/O(W18)은 LBA4에 대응하고, 쓰기 I/O(Wn9)는 LBA8에 대응하고, 쓰기 I/O(W010)은 LBA2에 대응하며, 쓰기 I/O(W111)는 LBA3에 대응하고, 쓰기 I/O(Wn12)은 LBA1에 대응한다. 다양한 LBA들은 다양한 대응하는 쓰기 IO들이 저장될 하나 이상의 비휘발성 저장 장치(135)에서 로직 블록 어드레스와 대응한다.
상기 리-오더 로직 섹션(165)은 상기 결합 쓰기 I/O(325)의 쓰기 I/O들(예를 들어, Wn12, W010, W111 등)중 대응하는 하나와 관련된 LBA들(예를 들어, LBA1, LBA2, LBA3 등) 각각이 오름차순 또는 내림차순으로 정렬되는 방식으로 다양한 쓰기 I/O들이 결합 쓰기 I/O(325)에서 배열될 수 있도록, 다양한 쓰기 I/O들의 순서를 변경할 수 있다. 예를 들어, 상기 쓰기 I/O들은 다음과 같은 관련된 LBA들을 갖는 다음 순서로 도착할 수 있다: W01/LBA6, W12/LBA12, Wn3/LBA9, W04/LBA7, W15/LBA10, Wn6/LBA11, W07/LBA5, W18/LBA4, Wn9/LBA8, W010/LBA2, W111/LBA3, 및 Wn12/LBA1. 이들 LBA 값들은 여기에 구체적으로 기술되지 않은 다른 LBA가 여기에 기술된 본 발명의 개념의 다양한 실시예들에 포함될 수 있기 때문에 한정적이 아니라 예로서 이해될 것이다. 상기 리-오더 로직 섹션(165)은 다음 순서를 갖도록 상기 쓰기 홀딩 버퍼(160 또는 162)의 개별 쓰기 I/O들의 순서를 변경할 수 있다: 도 4에 도시된 바와 같은 Wn12/LBA1, W010/LBA2, W111/LBA3, W18/LBA4, W07/LBA5, W01/LBA6, W04/LBA7, Wn9/LBA8, Wn3/LBA9, W15/LBA10, Wn6/LBA11, 및 W12/LBA12. 이러한 방식으로, LBA들은 상기 결합 쓰기 I/O(325)가 하나 이상의 비휘발성 저장 장치(135)(도 1a 및 도 1b의)에 더 효과적으로 기입되도록 오름차순 또는 내림차순으로 정렬될 수 있다.
도 5는 본 발명의 실시예에 따른 I/O 인터셉터 로직 섹션(120)(도 1a 및 도 1b의)의 리-오더 로직 섹션(165), 및 리-매핑 메모리 섹션(405)을 나타낸 도면이다. 상기 리-매핑 메모리 섹션(405)은 본 발명의 실시예들에 따른 시스템 메모리로부터 및/또는 I/O 인터셉터 로직 섹션(120)에 할당될 수 있다. 상기 LBA들의 심한 격차로 인해 상기 LBA들이 단순히 오름차순, 내림차순 및/또는 인접한 그룹으로 재정렬되지 않는 것은 일반적인 것이다. 예를 들어, 상기 쓰기 I/O들이 다음 관련 LBA들을 갖는 다음 순서로 최초로 도착할 수 있다: W01/LBA50, W12/LBA11, Wn3/LBA18, W04/LBA65, W15/LBA99, Wn6/LBA10, W07/LBA41, W18/LBA34, Wn9/LBA77, W010/LBA19, W111/LBA55, 및 Wn12/LBA100. 이들 LBA 값들은 여기에 구체적으로 기술되지 않은 다른 LBA가 여기에 기술된 본 발명의 개념의 다양한 실시예들에 포함될 수 있기 때문에 한정적이 아니라 예로서 이해될 것이다.
상기 리-오더 로직 섹션(165)은 헤더(HDR)를 추가하고, 푸터(FTR)를 첨부하며, 상기 개별 쓰기 I/O를 상기 리-매핑 메모리 섹션(405)에 재매핑함으로써, 개별적 쓰기 I/O들의 순서를 변경할 수 있다. 다시 말하면, 상기 리-오더 로직 섹션(165)은 상기 결합 쓰기 I/O(325)의 상기 복수의 쓰기 I/O들(예를 들어, Wn12, W010, W111 등) 중 대응하는 하나와 관련된 다수의 로직 블록 어드레스들(LBAs)(예를 들어 1, 2, 3 등) 각각이 오름차순 또는 내림차순으로 정렬되도록, 그리고 상기 결합된 쓰기 I/O(325)의 다수의 쓰기 I/O들(예를 들어, Wn12, W010, W111 등) 각각이 상기 리-매핑 메모리 섹션(405)에서 상기 결합 쓰기 I/O(325)의 다른 다수의 쓰기 I/O들(예를 들어, Wn12, W010, W111 등)에 물리적으로 인접하도록, 상기 결합 쓰기 I/O(325)를 형성하기 위하여 상기 개별적 쓰기 I/O들, 헤더(HDR), 및 푸터(FTR)를 복사할 수 있다. 상기 리-오더 로직 섹션(165)은 랜덤 쓰기 I/O들을 순차 쓰기 I/O들로 변환할 수 있다.
예를 들어, 상기 리-매핑 메모리 섹션(405)내에서 상기 결합된 쓰기 I/O(325)는 다음 순서로 재매핑 및 정렬된 개별적 쓰기 I/O들을 가질 수 있다: 도 5에 도시된 바와 같은 HDR/LBA0, Wn12/LBA1, W010/LBA2, W111/LBA3, W18/LBA4, W07/LBA5, W01/LBA6, W04/LBA7, Wn9/LBA8, Wn3/LBA9, W15/LBA10, Wn6/LBA11, W12/LBA12, 및 FTR/LBA13. 이러한 방식으로, LBA들은 상기 결합 쓰기 I/O(325)가 하나 이상의 비휘발성 저장 장치(135)(도 1a 및 도 1b의)에 더 효과적으로 기입되도록 인접한 방식으로 정렬될 수 있다.
일부 실시예에서, 상기 리-매핑 메모리 섹션(405)은 단지 상기 I/O 인터셉터 로직 섹션(120)에만 알려질 수 있다. 상기 헤더(HDR) 및/또는 푸터(FTR)는 재매핑 변환 정보를 포함할 수 있다. 선택적 또는 추가로, 상기 헤더(HDR) 및/또는 푸터(FTR)는 상기 결합 쓰기 I/O(325)가 유효하다는 것을 나타내는 정보를 포함할 수 있다. 헤더(HDR)를 갖지만 푸터(FTR)를 갖지 않는 어느 결합 쓰기 I/O(325)는 하나 이상의 비휘발성 저장 장치(135)에서 유효하지 않은 것으로 간주될 수 있다. 이러한 시나리오는 커밋된 플러시 동작(CFn) 동안 갑작스런 전력 손실에 의해 야기될 수 있다. 이러한 시나리오에서, 상기 결합 쓰기 I/O(325)는 유효하지 않은 것으로 판별되어 폐기될 수 있다. 판독 I/O 동작에서 판독되기 위해 유효한 결합 쓰기 I/O(325)가 하나 이상의 비휘발성 저장 장치(135)로부터 나중에 검색되면, 상기 헤더(HDR) 및/또는 상기 푸터(FTR)에 저장된 상기 재매핑 변환 정보는 상기 응용 프로그램(132)에 기대 데이터 및/또는 관련된 기대 LBA 정보를 제공하기 위하여 상기 I/O 인터셉터 로직 섹션(120)에 의해 사용될 수 있다.
상기 동적 이기종 플러시 제어 로직 섹션(170)은 후술될 상기 동적 플러시 임계, 또는 다른 기준보다 크거나 같은 일부 플러시 요청에 응답하여 대응하는 비휘발성 저장 장치(135)에 기입되도록 물리적인 인접한 결합 쓰기 I/O(325)를 생성할 수 있다.
도 6은 본 발명의 실시예에 따른 I/O 인터셉터 로직 섹션(120)(도 1a 및 도 1b의)의 동적 이기종 플러시 제어 로직 섹션(170), 및 상기 I/O 인터셉터 로직 섹션(120)의 쓰기 홀딩 버퍼(예를 들어, 160A 또는 162A)를 나타낸 도면이다.
상기 리-오더 로직 섹션(165)은 상기 I/O 인터셉터 로직 섹션(120)에 포함될 필요가 없다. 오히려, 이 실시예에서, 상기 동적 이기종 플러시 제어 로직 섹션(170)은 다수의 쓰기 홀딩 서브 버퍼들(도 6에 도시된 Sub-Buffer 0, Sub-Buffer 1, Sub-Buffer 2, 및 Sub-Buffer N와 같은)을 관리할 수 있다. 상기 쓰기 홀딩 서브 버퍼들은 상기 쓰기 I/O들(예를 들어, W01, W12, Wn3 등)을 상기 I/O 인터페이스(155)(도 1a 및 도 1b의)로부터 수신할 수 있고, 상기 쓰기 I/O들을 저장할 수 있다. 다중-버퍼 홀딩 큐(505)는 상기 쓰기 홀딩 서브 버퍼들을 홀딩시킬 수 있다.
상기 동적 이기종 플러시 제어 로직 섹션(170)은 다수의 플러시 요청(F0, F1, F2, 등)을 상기 I/O 인터페이스(155)(도 1a 및 도 1b의)로부터 수신할 수 있고, 하나 이상의 비휘발성 저장 장치(135)에 상기 쓰기 I/O들이 기입될 필요 없이, 상기 쓰기 I/O(예를 들어, W01, W12, Wn3 등)의 쓰기 I/O 완료(예를 들어, 도 3의 330)를 상기 응용 프로그램(예를 들어, 132, 도 1a 및 도 1b의)에 통지할 수 있다. 예를 들어, 상기 동적 이기종 플러시 제어 로직 섹션(170)은 상기 쓰기 I/O들을 실제 어느 비휘발성 저장 장치(135)에 기입하기 전에, 응용 프로그램(132)에 상기 쓰기 I/O들의 쓰기 I/O 완료를 통지할 수 있다.
상기 동적 이기종 플러시 제어 로직 섹션(170)은 상기 제1 쓰기 홀딩 서브 버퍼(Sub-Buffer 0)에 저장되기 위한 상기 데이터 쓰기 I/O들(예를 들어, 도 3의 305)의 제1 서브셋, 상기 제2 쓰기 홀딩 서브 버퍼(Sub-Buffer 1)에 저장되기 위한 상기 메타 데이터 쓰기 I/O들(예를 들어, 도 3의 310)의 제1 서브셋, 상기 제3 쓰기 홀딩 서브 버퍼(Sub-Buffer 2)에 저장되기 위한 상기 데이터 쓰기 I/O들(예를 들어, 도 3의 315)의 제2 서브셋, 및 상기 제4 쓰기 홀딩 서브 버퍼(Sub-Buffer N)에 저장되기 위한 상기 메타 데이터 쓰기 I/O들(예를 들어, 도 3의 320)의 제2 서브셋을 생성할 수 있다.
상기 동적 이기종 플러시 제어 로직 섹션(170)은 수신된 순서로 동적 플러스 임계보다 크거나 같은 일부 플러시 요청에 응답하여 대응하는 비휘발성 저장 장치(예를 들어 135A)에 상기 쓰기 홀딩 서브 버퍼들(예를 들어, Sub-Buffer 0, Sub-Buffer 1, Sub-Buffer 2, 및 Sub-Buffer N)로부터의 쓰기 I/O들을 비우기 위하여, 다중-버퍼 홀딩 큐(505)를 생성할 수 있다. 이 실시예에서, 상기 쓰기 I/O들의 재정렬 및 재매핑을 피할 수 있고, 추가적인 헤더 또는 푸터가 필요하지 않다. 한편, LBA들이 랜덤 방식으로 하나 이상의 비휘발성 저장 장치(135)에 전송되기 때문에, 성능 증가는 앞서 서술한 실시예들 만큼 뛰어나지 않다. 갑작스런 전력 손실이 발생하는 경우에는, 데이터를 기입하려고 하는 응용 프로그램의 순서가 유지되기 때문에, 데이터 일관성이 유지될 수 있다.
도 7은 본 발명의 실시예에 따른 상기 I/O 인터셉터 로직 섹션(120)(도 1a 및 도 1b의)의 동적 이기종 플러시 제어 로직 섹션(170) 및 상기 I/O 인터셉터 로직 섹션의 쓰기 홀딩 버퍼(예를 들어, 160A 또는 162A)의 다른 예를 나타낸 도면이다. 도 7은 도 6의 그것과 유사하나 LBA들이 심한 격차를 갖는다는 주목할만한 차이점이있다. 이 실시예의 동작은 도 6을 참조한 설명과 동일하거나 유사하기 때문에, 상세한 설명은 반복하지 않는다. LBA 값들이 심한 편차를 갖는 도 7의 실시예는 본 발명의 컨셉 내에 있으며, 상술한 도 6을 참조하여 설명한 것과 동일 또는 유사한 방법으로 실행될 수 있는 것으로 이해될 수 있다.
도 8은 본 발명의 실시예에 따른 상기 I/O 인터셉터 로직 섹션(120)(도 1a 및 도 1b의)을 포함하는 서버 랙(805)을 나타낸 개략도이다. 위에 서술한 바와 같이, 상기 I/O 인터셉터 로직 섹션(120)은 상기 서버 랙(805)에 위치하는 하나 이상의 서버들(810)에 대한 I/O들을 인터셉트 및 처리할 수 있다. 이것은 비휘발성 저장 장치를 사용한 서버 랙(805) 내의 어느 적절한 장치가 상술한 바와 같이 상기 I/O 인터셉터 로직 섹션(120)을 포함하거나 상기 I/O 인터셉터 로직 섹션(120)과 동작할 수 있다는 것으로 이해될 수 있다.
도 9는 본 발명의 실시예에 따른 상기 I/O 인터셉터 로직 섹션(120)(도 1a 및 도 1b의)을 포함하는 컴퓨터 서버(905)를 나타낸 개략도이다. 상기 서버(905)의 상기 I/O 인터셉터 로직 섹션(120)은 상술한 바와 같이 상기 서버(905)에 대한 I/O들을 인터셉트 및 처리할 수 있다. 이것은 비휘발성 저장 장치를 사용한 어느 적절한 장치가 상술한 바와 같이 상기 I/O 인터셉터 로직 섹션(120)을 포함하거나 상기 I/O 인터셉터 로직 섹션(120)과 동작할 수 있다는 것으로 이해될 수 있다.
도 10은 본 발명의 실시예에 따른 I/O 인터셉터 로직 섹션(120)(도 1a 및 도 1b의)을 사용한 응용 프로그램으로부터 I/O들을 인터셉트하기 위한 기술을 설명하는 흐름도(1000)이다. 상기 기술은 응용 프로그램으로부터 상기 I/O 인터셉터 로직 섹션의 I/O 인터페이스에 의해서 다수의 쓰기 I/O들 및 다수의 플러시 요청들이 인터셉트되는 1005 단계에서 시작된다. 1010단계에서, 상기 I/O 인터페이스에 의해 인터셉트된 상기 다수의 쓰기 I/O들은 다수의 쓰기 홀딩 버퍼에 저장될 수 있다. 상기 쓰기 홀딩 버퍼들 각각은 대응하는 비휘발성 저장 장치와 관련 또는 결합될 수 있다. 1015 단계에서, 리-오더 로직 섹션은 상기 쓰기 홀딩 버퍼들 각각에 저장된 다수의 쓰기 I/O들의 순서를 변경할 수 있다. 1020 단계에서, 상기 리-오더 로직 섹션은 상기 재정렬된 다수의 쓰기 I/O들을 상기 쓰기 홀딩 버퍼들 각각에 대한 결합 쓰기 I/O에 결합시킬 수 있다.
1025 단계에서, 동적 이기종 플러시 제어 로직 섹션은 상기 I/O 인터페이스로부터 다수의 플러시 요청들을 수신할 수 있다. 1030 단계에서, 상기 동적 이기종 플러시 제어 로직 섹션은 비휘발성 저장 장치에 다수의 쓰기 I/O들을 기입할 필요 없이, 응용 프로그램에 상기 다수의 쓰기 I/O들의 쓰기 I/O 완료를 통지할 수 있다. 다시 말해, 상기 동적 이기종 플러시 제어 로직 섹션은 상기 쓰기 I/O들을 하나 이상의 비휘발성 저장 장치(135) 어디에 실제 기입하기 전에, 응용 프로그램에 상기 쓰기 I/O의 쓰기 I/O 완료를 통지할 수 있다. 1035 단계에서, 상기 동적 이기종 플러시 제어 로직 섹션은 다수의 플러시 요청들 중 플러시 임계, 축적된 데이터의 임계량, 및/또는 기 설정된 시간 구간의 만료보다 크거나 같은 일부 플러시 요청에 응답하여 대응하는 비휘발성 저장 장치에 기입될 결합 쓰기 I/O를 발생시킬 수 있다.
도 11은 본 발명의 실시예에 따른 I/O 인터셉터 로직 섹션(120)(도 1a 및 도 1b의)을 사용한 응용 프로그램으로부터 I/O들을 인터셉트하기 위한 다른 기술을 설명하기 위한 흐름도(1100)이다. 상기 기술은 응용 프로그램으로부터 상기 I/O 인터셉터 로직 섹션의 I/O 인터페이스에 의해서 다수의 쓰기 I/O들 및 다수의 플러시 요청들이 수신되는 1105 단계에서 시작된다. 1110단계에서, 상기 I/O 인터페이스에 의해 인터셉트된 상기 다수의 쓰기 I/O들은 다수의 쓰기 홀딩 버퍼에 저장될 수 있다. 1115 단계에서, 상기 다중-버퍼 홀딩 큐는 다수의 쓰기 홀딩 서브 버퍼들을 홀딩시킬 수 있다.
1120 단계에서, 상기 동적 이기종 플러시 제어 로직 섹션은 상기 I/O 인터페이스로부터 다수의 플러시 요청들을 수신할 수 있다. 1125 단계에서, 상기 동적 이기종 플러시 제어 로직 섹션은 비휘발성 저장 장치에 다수의 쓰기 I/O들을 기입할 필요 없이, 응용 프로그램에 상기 다수의 쓰기 I/O들의 쓰기 I/O 완료를 통지할 수 있다. 다시 말해, 상기 동적 이기종 플러시 제어 로직 섹션은 상기 쓰기 I/O들을 하나 이상의 비휘발성 저장 장치(135) 어디에 실제 기입하기 전에, 응용 프로그램에 상기 쓰기 I/O의 쓰기 I/O 완료를 통지할 수 있다. 1130 단계에서, 상기 동적 이기종 플러시 제어 로직 섹션은 다수의 플러시 요청들 중 플러시 임계, 축적된 데이터의 임계량, 및/또는 기 설정된 시간 구간의 만료보다 크거나 같은 적어도 하나의 플러시 요청에 응답하여 다수의 쓰기 홀딩 서브 버퍼들로부터 비휘발성 저장 장치까지 상기 다수의 쓰기 I/O들을 비우기 위한 다중-버퍼 홀딩 큐를 발생시킬 수 있다.
도 12는 여기에 기술된 본 발명의 실시예들에 따른 I/O 인터셉터 로직 섹션(1230)을 포함하는 컴퓨팅 시스템(1200)을 나타낸 블록도이다. 도 12를 참조하면, 상기 컴퓨팅 시스템(1200)은 또한 클럭(1210), 랜덤 엑세스 메모리(RAM)(1215), 유저 인터페이스(1220), 베이스밴드 칩셋과 같은 모뎀(1225), 솔리드 스테이트 드라이브/디스크(SSD)(1240), 메모리 컨트롤러(1245), 및/또는 배터리(1235)를 포함할 수 있고, 이들 중 일부 도는 전부가 시스템 버스(1205)에 전기적으로 연결될 수 있다. 상기 I/O 인터셥터 로직 섹션(1230)은 앞서 서술한 도면 부호 120에 대응할 수 있고, 여기서 설명한 바와 같이 상기 시스템 버스(1205)에 전기적으로 결합될 수 있다.
상기 컴퓨팅 시스템(1200)이 모바일 장치이면, 상기 배터리(1235)는 상기 컴퓨터 시스템(1200)에 파워를 공급할 수 있고, 데이터가 더 효율적으로 저장 장치에 기입되기 때문에 여기에 서술된 본 발명의 실시예들의 구현에 의해 배터리 드레인은 감소될 수 있다. 도 2에 도시되지는 않았지만, 상기 컴퓨팅 시스템(1200)은 응용 프로그램 칩셋, 카메라 이미지 프로세서(CIS), 모바일 DRAM 등을 더 포함할 수 있다.
실시예들에서, 상기 컴퓨팅 시스템(1200)은 컴퓨터, 컴퓨터 서버, 서버 랙, 휴대용 컴퓨터, 울트라 모바일 PC(Ultra Mobile PC: UMPC), 워크스테이션, 넷북, PDA, 웹 테블릿, 무선 폰, 모바일 폰, 스마트 폰, e-book, 휴대용 멀티미디어 플레이어(Potable multimedia player: PMP), 디지털 카메라, 디지털 오디오 리코더/플레이어, 디지털 사진/비디오 리코더/플레이어, 휴대용 게임기, 네비게이션 시스템, 블랙 박스, 3D TV, 유선 통신으로 정보를 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 기기들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 기기들 중 하나, 컴퓨터 통신 네트워크를 구성하는 다양한 전자 기기들 중 하나, 또는 컴퓨팅 시스템을 구성하는 다양한 전자 기기들 중 하나로 사용될 수 있다.
다음 설명은 본 발명의 특성 측면이 구현될 수 있는 적절한 장치 또는 장치들의 간략하고 일반적인 설명을 제공하기 위한 것이다. 일반적으로 장치 또는 장치들은 프로세서들, 메모리, 예를 들어 랜덤 엑세스 메모리(RAM), 판독 전용 메모리(read only memory: ROM), 또는 다른 상태 보존 매체, 저장 장치, 비디오 인터페이스, 및 입출력 인터페이스 포트들이 부착된 시스템 버스를 포함한다. 상기 장치 또는 장치들은 종래의 입력 장치 예를 들어, 키보드, 마이크 등으로부터의 입력, 뿐만 아니라 가상 현실(VR) 환경, 생체 인식 피드백, 또는 다른 입력 신호들과의 상호 작용을 통해 다른 장치로부터 수신된 명령에 의해서 적어도 부분적으로 제어될 수 있다. 여기에 사용된 바와 같이, "장치"라는 용어는 단일 기계, 가상 기계, 또는 통신적으로 결합된 기계들, 가상 기계들 또는 함께 동작하는 장치들의 시스템을 포괄적으로 포함하고자 한다. 예시적으로 장치는 개인 컴퓨터, 워크 스테이션, 서버, 휴대용 컴퓨터, 핸드 헬드(handheld) 장치, 전화기, 타블릿 등과 같은 컴퓨팅 장차, 뿐만 아니라 예를 들어 자동차, 기차, 택시 등의 사설 또는 대중 교통과 같은 운송 장치를 포함한다.
상기 장치 또는 장치들은 프로그래머블 또는 비프로그래머블 로직 장치 또는 어레이와 같은 임베디드 컨트롤러, ASIC(application specific integrated circuit), 임베디드 컴퓨터, 스마트 카드 등을 포함할 수 있다. 상기 장치 또는 장치들은 네트워크 인터페이스, 모뎀, 또는 다른 통신적 결합과 같은 하나 이상의 원격 장치와의 하나 이상의 연결을 활용할 수 있다. 장치들은 인트라넷, 인터넷, 로컬 영역 네트워크, 광역 네트워크 등과 같은 물리적 및/또는 논리적 네트워크를 통해 상호 연결될 수 있다. 당업자라면, 네트워크 통신으로 라디오 주파수(RF), 위성, 마이크로웨이브, IEEE(institute of electrical and electronic engineers) 545.11, 블루투스?, 광학, 적외선, 케이블, 레이저 등을 포함하는 다양한 유선 및/또는 무선 근거리 또는 장거리 캐리어 및 프로토콜을 이용할 수 있습니다.
본 발명의 실시예들은 업무를 처리하고, 추상 데이터 유형 또는 로우 레벨 하드웨어 컨텍스트를 정의한 장치에서 장치 결과에 의해 엑세스될 때, 기능, 절차, 데이터 구조, 응용 프로그램 등을 포함하는 관련 데이터를 참조하거나 또는 관련하여 서술될 수 있다. 관련 데이터는 예를 들어, 휘발성 및/또는 비휘발성 메모리, 예를 들어 RAM, ROM 등, 또는 다른 저장 장치 및 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 생물학적 스토리지 등을 포함하는 그들의 관련 저장 매체에 저장될 수 있다. 관련 데이터는 패킷, 직렬 데이터, 병렬 데이터, 전파 신호, 등의 형태로 물리적 및/또는 논리적 네트워크를 포함하는 전송 환경을 통해 전달될 수 있으며, 압축 또는 암호화된 형식으로 사용될 수 있다. 관련 데이터는 분산 환경에서 사용될 수 있으며, 장치 엑세스를 위하여 로컬 및/또는 원격으로 저장될 수 있다.
예시된 실시에들을 참조하여 본 발명의 원리를 설명하고 예시하였으나, 도시된 실시예들은 이러한 원리를 벗어나지 않는 범위 내에서 배열 및 세부 사항이 수정될 수 있고, 임의의 원하는 방식으로 조합될 수 있다. 그리고, 앞서 서술한 설명은 특정 실시예에 초점을 맞추었으나, 다른 구성들을 고려할 수 있다. 특히, "본 발명의 실시예에 따른" 등과 같은 표현이 본 명세서에서 사용되더라도, 이러한 문구는 일반적으로 실시예 가능성을 나타내는 것을 의미하며, 본 발명을 특성 실시예 구성으로 한정하고자 한 것은 아니다. 여기에 사용된 바와 같이, 이들 용어들은 다른 실시예들과 조합 가능한 동일 또는 다른 실시예들을 나타낼 수 있을 것이다.
본 발명의 실시예들은 하나 이상의 프로세서에 의해서 실행 가능한 명령을 포함하는 비일시적 기계 판독 가능 매체를 포함하고, 상기 명령은 여기에 서술된 본 발명의 구성 요소들을 수행하기 위한 명령들을 포함한다.
앞서 서술된 실시예들은 본 발명을 제한하는 것으로 해석되어서는 안된다. 비록 몇몇 실시예들이 설명되었으나, 당업자는 본 발명의 신규한 교시 및 이점과 실질적으로 벗어나지 않고 이들 실시예들에 많은 수정이 가능하다는 것을 용이하게 이해할 수 있을 것이다. 따라서, 모든 이러한 수정은 청구된 본 발명의 범위 내에서 포함된 것으로 간주된다.

Claims (10)

  1. 저장 스택과 통신 결합되고, 응용 프로그램으로부터 다수의 쓰기 I/O들 및 다수의 플러시 요청들을 인터셉트하도록 구성된 I/O 인터페이스;
    각각이 다수의 비휘발성 저장 장치들 중 대응하는 비휘발성 저장 장치와 연관되고, 각각이 상기 I/O 인터페이스로부터 상기 다수의 쓰기 I/O들의 서브셋을 수신하고, 상기 쓰기 I/O들의 상기 서브셋을 저장하는 다수의 쓰기 홀딩 버퍼; 및
    상기 I/O 인터페이스로부터 다수의 플러시 요청들을 수신하고, 상기 다수의 비휘발성 저장 장치들 중 대응하는 비휘발성 저장 장치에 다수의 쓰기 홀딩 버퍼들로부터의 다수의 쓰기 I/O들을 기입하지 않고, 응용 프로그램에 다수의 쓰기 I/O들의 쓰기 I/O 완료를 통지하는 동적 이기종 플러시 제어 로직 섹션을 포함하는 것을 특징으로 하는 입력/출력(I/O) 인터셉터 로직 섹션.
  2. 제1항에 있어서, 상기 다수의 비휘발성 저장 장치들 각각은 다른 종류로 이루어진 것을 특징으로 하는 I/O 인터셉터 로직 섹션.
  3. 제2항에 있어서, 상기 동적 이기종 플러시 제어 로직 섹션은 비휘발성 저장 장치들 중 대응하는 하나에 각각 결합된 다수의 플러시 임계들을 포함하는 것을 특징으로 하는 I/O 인터셉터 로직 섹션.
  4. 제3항에 있어서, 상기 플러시 임계들 각각은 서로 상대적으로 상이하며, 상기 비휘발성 저장 장치들 중 대응하는 하나의 종류에 기초하는 것을 특징으로 하는 I/O 인터셉터 로직 섹션.
  5. 제4항에 있어서, 상기 동적 이기종 플러시 제어 로직 섹션은 다수의 플러시 요청들 중 상기 다수의 플러시 임게들 중 대응하는 플러시 임계보다 크거나 같은 일부 플러시 요청들에 응답하여 대응하는 비휘발성 저장 장치에 기입되도록 쓰기 홀딩 버퍼들 각각으로부터의 상기 쓰기 I/O들을 생성하는 것을 특징으로 하는 I/O 인터셉터 로직 섹션.
  6. 제2항에 있어서, 상기 다수의 쓰기 홀딩 버퍼들은 제1 쓰기 홀딩 버퍼 및 제2 쓰기 홀딩 버퍼를 포함하고;
    상기 다수의 비휘발성 저장 장치들은 제1 비휘발성 저장 장치 및 제2 비휘발성 저장 장치를 포함하며;
    상기 제1 쓰기 홀딩 버퍼는 상기 제1 비휘발성 저장 장치에 연결되고;
    상기 제2 쓰기 홀딩 버퍼는 상기 제2 비휘발성 저장 장치에 연결되며;
    상기 동적 이기종 플러시 제어 로직 섹션은 상기 다수의 플러시 요청들 중 대응하는 플러시 임계보다 크거나 같은 상기 제1 비휘발성 저장 장치와 결합된 일부 플러시 요청들에 응답하여 상기 제1 비휘발성 저장 장치에 기입되기 위한 상기 제1 쓰기 홀딩 버퍼로부터의 쓰기 I/O들의 서브셋을 생성하고; 및
    상기 동적 이기종 플러시 제어 로직 섹션은 상기 다수의 플러시 요청들 중 대응하는 플러시 임계보다 크거나 같은 상기 제2 비휘발성 저장 장치와 결합된 일부 플러시 요청들에 응답하여 상기 제2 비휘발성 저장 장치에 기입되기 위한 상기 제2 쓰기 홀딩 버퍼로부터의 쓰기 I/O들의 서브셋을 생성하는 것을 특징으로 하는 I/O 인터셉터 로직 섹션.
  7. 제6항에 있어서, 상기 다수의 쓰기 홀딩 버퍼들은 제3 쓰기 홀딩 버퍼를 포함하고;
    상기 다수의 비휘발성 저장 장치들은 제3 비휘발성 저장 장치를 포함하며;
    상기 제3 쓰기 홀딩 버퍼는 상기 제3 비휘발성 저장 장치와 연결되며; 및
    상기 동적 이기종 플러시 제어 로직 섹션은 상기 다수의 플러시 요청들 중 대응하는 플러시 임계보다 크거나 같은 상기 제3 비휘발성 저장 장치와 결합된 일부 플러시 요청들에 응답하여 상기 제3 비휘발성 저장 장치에 기입되기 위한 상기 제3 쓰기 홀딩 버퍼로부터의 쓰기 I/O들의 서브셋을 생성하는 것을 특징으로 하는 I/O 인터셉터 로직 섹션.
  8. 제1항에 있어서, 상기 다수의 쓰기 홀딩 버퍼들 각각은 상기 다수의 비휘발성 저장 장치들 중 대응하는 비휘발성 저장 장치에 저장되는 것을 특징으로 하는 I/O 인터셉터 로직 섹션.
  9. 제1항에 있어서, 상기 다수의 쓰기 홀딩 버퍼들에 통신 가능하도록 결합되고, 상기 쓰기 홀딩 버퍼들 각각에 저장된 쓰기 I/O의 서브셋의 순서를 변경하며, 상기 쓰기 홀딩 버퍼들 각각에 대해서 재정렬된 쓰기 I/O를 결합 쓰기 I/O에 결합시키는 리-오더 로직 섹션을 더 포함하고,
    상기 동적 이기종 플러시 제어 로직 섹션은 동적 플러시 임계보다 크거나 같은 일부 플러시 요청들에 응답하여 상기 다수의 비휘발성 저장 장치들 중 대응하는 비휘발성 저장 장치에 기입되는 상기 쓰기 홀딩 버퍼들 각각에 대한 결합 쓰기 I/O를 생성하는 것을 특징으로 하는 I/O 인터셉터 로직 섹션.
  10. 제9항에 있어서, 상기 리-오더 로직 섹션은 상기 다수의 쓰기 I/O들 중 랜덤 쓰기 I/O들을 순차 쓰기 I/O들로 변환하는 것을 특징으로 하는 I/O 인터셉터 로직 섹션.
KR1020170121413A 2016-11-25 2017-09-20 저장 장치의 i/o 성능 개선을 위한 시스템 및 방법 KR20180059342A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662426421P 2016-11-25 2016-11-25
US62/426,421 2016-11-25
US15/456,462 US20180150220A1 (en) 2016-11-25 2017-03-10 System and method for improving storage device i/o performance
US15/456,462 2017-03-10

Publications (1)

Publication Number Publication Date
KR20180059342A true KR20180059342A (ko) 2018-06-04

Family

ID=62192776

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170121413A KR20180059342A (ko) 2016-11-25 2017-09-20 저장 장치의 i/o 성능 개선을 위한 시스템 및 방법

Country Status (2)

Country Link
US (1) US20180150220A1 (ko)
KR (1) KR20180059342A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200008476A (ko) * 2018-07-16 2020-01-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200072261A (ko) * 2018-12-12 2020-06-22 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20220102540A (ko) * 2021-01-13 2022-07-20 삼성전자주식회사 호스트 메모리 버퍼를 이용하는 프로세서 및 이를 포함하는 스토리지 시스템

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11138076B2 (en) * 2017-06-30 2021-10-05 Redis Ltd. Methods, systems, and media for controlling append-only file rewrites
US10423349B2 (en) * 2017-08-23 2019-09-24 Western Digital Technologies, Inc. Logical and physical address field size reduction by alignment-constrained writing technique
CN111176568B (zh) * 2019-12-26 2021-12-10 苏州浪潮智能科技有限公司 一种数据分析的方法和装置
US11561717B2 (en) * 2020-05-26 2023-01-24 Western Digital Technologies, Inc. Data integrity protection of SSDs utilizing streams
CN114764310A (zh) * 2021-01-13 2022-07-19 三星电子株式会社 使用主机存储缓冲器的处理器和包括该处理器的存储系统
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

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2446172B (en) * 2007-01-30 2009-01-21 Hewlett Packard Development Co Control of data transfer
US8585251B2 (en) * 2008-12-12 2013-11-19 Bridgelux, Inc. Light emitting diode lamp
US9223713B2 (en) * 2013-05-30 2015-12-29 Hewlett Packard Enterprise Development Lp Allocation of cache to storage volumes
GB2519549A (en) * 2013-10-24 2015-04-29 Ibm Write cache destaging
US9760480B1 (en) * 2013-11-01 2017-09-12 Amazon Technologies, Inc. Enhanced logging using non-volatile system memory
WO2016112957A1 (en) * 2015-01-13 2016-07-21 Hitachi Data Systems Engineering UK Limited Computer program product, method, apparatus and data storage system for managing defragmentation in file systems
US10713276B2 (en) * 2016-10-03 2020-07-14 Ocient, Inc. Data transition in highly parallel database management system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200008476A (ko) * 2018-07-16 2020-01-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200072261A (ko) * 2018-12-12 2020-06-22 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20220102540A (ko) * 2021-01-13 2022-07-20 삼성전자주식회사 호스트 메모리 버퍼를 이용하는 프로세서 및 이를 포함하는 스토리지 시스템

Also Published As

Publication number Publication date
US20180150220A1 (en) 2018-05-31

Similar Documents

Publication Publication Date Title
KR20180059342A (ko) 저장 장치의 i/o 성능 개선을 위한 시스템 및 방법
KR102177315B1 (ko) 플러시 제어 로직을 포함하는 입출력 인터셉터 로직, 및 그 입출력 인터셉터 로직을 이용하여 컴퓨터로 구현되는 방법
US10579270B2 (en) Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes
US11687446B2 (en) Namespace change propagation in non-volatile memory devices
CN109791519B (zh) 具有集成计算引擎的非易失性存储系统和本地快速存储器的优化用途
EP3477461A1 (en) Devices and methods for data storage management
US20210303206A1 (en) FTL Flow Control For Hosts Using Large Sequential NVM Reads
US11010056B2 (en) Data operating method, device, and system
US10949120B2 (en) Host defined bandwidth allocation for SSD tasks
KR20180051703A (ko) Raid 방식으로 데이터를 저장하는 스토리지 장치
US10152244B2 (en) Programmable memory command sequencer
US10592165B1 (en) Method, apparatus and computer program product for queueing I/O requests on mapped RAID
US11294600B2 (en) Storage device interfacing with host device and operating method of the storage device
US11803468B2 (en) Data storage system with write back cache
US11901032B2 (en) Memory device and memory system capable of using redundancy memory cells
US10289550B1 (en) Method and system for dynamic write-back cache sizing in solid state memory storage
EP4020220A1 (en) Utilizing nand buffer for dram-less multilevel cell programming
CN113190168B (zh) 完成对象输入输出的方法和系统
KR20220006458A (ko) 키-밸류 저장 장치 및 키 분류 방법
US11687275B2 (en) Method for assigning plurality of channels of storage device for stream data writing, storage device and storage medium
US11734131B2 (en) Memory device having redundant media management capabilities
US20140068139A1 (en) Data transfer system and method