KR20140128819A - 아토믹 라이트 방법 - Google Patents

아토믹 라이트 방법 Download PDF

Info

Publication number
KR20140128819A
KR20140128819A KR1020130047770A KR20130047770A KR20140128819A KR 20140128819 A KR20140128819 A KR 20140128819A KR 1020130047770 A KR1020130047770 A KR 1020130047770A KR 20130047770 A KR20130047770 A KR 20130047770A KR 20140128819 A KR20140128819 A KR 20140128819A
Authority
KR
South Korea
Prior art keywords
storage
host
data chunks
buffering area
data
Prior art date
Application number
KR1020130047770A
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 삼성전자주식회사
Priority to KR1020130047770A priority Critical patent/KR20140128819A/ko
Priority to US14/262,834 priority patent/US20140325125A1/en
Publication of KR20140128819A publication Critical patent/KR20140128819A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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

Abstract

호스트의 아토믹 라이트 데이터 전송 방법은 스토리지의 버퍼링 영역에 라이트될 아토믹 라이트에 관련된 헤더를 호스트가 상기 스토리지로 전송하는 단계와, 상기 버퍼링 영역에 라이트될 상기 아토믹 라이트에 관련된 데이터 청크들을 상기 호스트가 상기 스토리지로 순차적으로 전송하는 단계를 포함한다.

Description

아토믹 라이트 방법{ATOMIC WRITE METHOD}
본 발명의 개념에 따른 실시 예는 아토믹 라이트 방법에 관한 것으로, 특히호스트가 아토믹 라이트에 관련된 아토믹 라이트 데이터를 스토리지로 전송하는 방법과 상기 스토리지의 아토믹 라이트 방법에 관한 것이다.
아토믹 라이트(atomic write) 또는 아토믹 라이트 동작은 전부 또는 전무 (all or nothing)를 만족하는 라이트 동작이다.
예컨대, 아토믹 라이트 동안, 데이터의 일부가 스토리지(storage)에 라이트되는 도중에 상기 스토리지로의 전력 공급이 차단되고 상기 스토리지로 다시 전력이 공급될 때, 상기 스토리지는 상기 데이터의 전부가 저장된 상태 또는 상기 데이터의 일부가 라이트되기 이전 상태를 만족해야 한다.
또한, 아토믹 라이트는 데이터가 저장될 물리적 영역들이 서로 떨어져 있는 경우에도 전부 또는 전무를 만족해야 한다.
본 발명이 이루고자 하는 기술적인 과제는 호스트가 아토믹 라이트에 관련된 아토믹 라이트 데이터를 스토리지로 전송하는 방법과 상기 스토리지의 아토믹 라이트 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 아토믹 라이트 데이터 구조는 호스트로부터 전송되고 스토리지(storage)의 버퍼링 영역에 순차적으로 라이트될 아토믹 라이트에 관련된 헤더와 데이터 청크들을 포함한다.
상기 헤더는 상기 데이터 청크들의 개수, 상기 데이터 청크들 각각이 아토믹하게 저장될 스토리지 미디어의 저장 영역들(storage areas) 각각의 시작 어드레스, 및 상기 데이터 청크들 각각의 길이를 포함한다.
본 발명의 실시 예에 따른 호스트의 아토믹 라이트 데이터 전송 방법은 스토리지의 버퍼링 영역에 라이트될 아토믹 라이트에 관련된 헤더를 호스트가 상기 스토리지로 전송하는 단계와, 상기 버퍼링 영역에 라이트될 상기 아토믹 라이트에 관련된 데이터 청크들을 상기 호스트가 상기 스토리지로 순차적으로 전송하는 단계를 포함한다.
상기 헤더는 상기 데이터 청크들의 개수, 상기 데이터 청크들 각각이 아토믹하게 저장될 스토리지 미디어의 저장 영역들 각각의 시작 어드레스, 및 상기 데이터 청크들 각각의 길이를 포함한다.
실시 예에 따라 상기 방법은 상기 호스트가 상기 버퍼링 영역의 설정에 관련된 정보를 상기 스토리지로 전송하는 단계와, 상기 호스트가 상기 정보에 기초하여 상기 헤더와 상기 데이터 청크들의 라이트에 관련된 상기 버퍼링 영역의 어드레스들을 상기 스토리지로 순차적으로 전송하는 단계를 더 포함한다.
다른 실시 예에 따라 상기 방법은 상기 호스트가 상기 버퍼링 영역의 정보를 상기 스토리지로부터 수신하는 단계와, 상기 호스트가 상기 정보에 기초하여 상기 헤더와 상기 데이터 청크들의 라이트에 관련된 상기 버퍼링 영역의 어드레스들을 상기 스토리지로 순차적으로 전송하는 단계를 더 포함한다.
또 다른 실시 예에 따라 상기 방법은 상기 호스트가 상기 버퍼링 영역을 설정하기 위해 상기 스토리지와 협상하는 단계와, 상기 호스트가 상기 버퍼링 영역의 정보에 기초하여 상기 헤더와 상기 데이터 청크들의 라이트에 관련된 상기 버퍼링 영역의 어드레스들을 상기 스토리지로 순차적으로 전송하는 단계를 더 포함한다.
상기 방법은 상기 호스트가 상기 데이터 청크들 중의 마지막 데이터 청크에 대한 상기 스토리지의 응답에 기초하여 상기 아토믹 라이트의 완료 여부를 판단하는 단계를 더 포함한다.
상기 방법은 상기 호스트의 애플리케이션이 애플리케이션 프로그래밍 인터페이스 (application programming interface(API))를 이용하여 스토리지 드라이버로 상기 아토믹 라이트에 대한 요청을 직접 전송하는 단계와, 상기 스토리지 드라이버가 상기 요청에 응답하여 상기 헤더와 상기 데이터 청크들을 순차적으로 상기 스토리지로 전송하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 스토리지의 아토믹 라이트 방법은 저장 영역과 별도의 버퍼링 영역을 설정하는 단계와, 호스트로부터 전송된 아토믹 라이트에 관련된 헤더와 데이터 청크들을 상기 버퍼링 영역에 순차적으로 라이트하는 단계를 포함한다.
상기 버퍼링 영역은 상기 호스트에 의해 설정될 수 있다.
상기 헤더는 상기 데이터 청크들의 개수, 상기 데이터 청크들 각각이 아토믹하게 저장될 스토리지 미디어의 저장 영역들 각각의 시작 어드레스, 및 상기 데이터 청크들 각각의 길이를 포함한다.
상기 방법은 상기 헤더의 수신을 상기 데이터 청크들의 전송에 관련된 트랜잭션 라이트의 시작 명령으로 판단하는 단계를 더 포함한다.
상기 방법은 상기 데이터 청크들 중의 마지막 데이터 청크의 수신을 상기 데이터 청크들의 전송에 관련된 트랜잭션 라이트의 완료 명령으로 판단하는 단계를 더 포함한다.
상기 방법은 상기 버퍼링 영역에 라이트된 상기 데이터 청크들을 아토믹하게 상기 저장 영역에 라이트한 후, 상기 아토믹 라이트의 완료를 지시하는 응답을 상기 호스트로 전송하는 단계를 더 포함한다.
상기 저장 영역과 상기 버퍼링 영역은 서로 다른 저장 장치에 구현될 수 있다.
본 발명의 실시 예에 따른 호스트와 스토리지를 포함하는 시스템의 동작 방법은 상기 호스트가 상기 스토리지의 버퍼링 영역에 라이트될 아토믹 라이트에 관련된 헤더를 상기 스토리지로 전송하는 단계와, 상기 호스트가 상기 버퍼링 영역에 라이트될 상기 아토믹 라이트에 관련된 데이터 청크들을 상기 스토리지로 순차적으로 전송하는 단계를 포함한다.
본 발명의 실시 예에 따른 호스트와 스토리지를 포함하는 시스템의 동작 방법은 상기 스토리지에 버퍼링 영역을 설정하는 단계와, 상기 호스트가 트랜잭션 라이트를 이용하여 아토믹 라이트에 관련된 데이터를 상기 버퍼링 영역으로 전송하는 단계와, 상기 스토리지가 상기 버퍼링 영역에 저장된 상기 데이터를 아토믹하게 상기 버퍼링 영역과 다른 저장 영역에 라이트하는 단계를 포함한다.
본 발명의 실시 예에 따른 아토믹 라이트 방법은 아토믹 라이트에 관련된 아토믹 라이트 데이터를 호스트(host)로부터 스토리지(storage)로 전송할 수 있는 효과가 있다.
상기 아토믹 라이트 방법은 기존 OS(operating system)의 레이어들(layers)을 변경하지 않고도 아토믹 라이트에 관련된 아토믹 라이트 데이터를 호스트로부터 스토리지로 전송할 수 있으므로, 상기 데이터의 전송에 관련된 애플리케이션 (application)의 실행 속도를 향상시키고 상기 스토리지의 수명을 증가시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 시스템의 블록도를 나타낸다.
도 2는 본 발명의 실시 예에 따라 기존 OS의 각 레이어를 변경하지 않고도 아토믹 라이트 요청을 스토리지로 전송하는 방법을 설명하기 위한 개념도이다.
도 3은 본 발명의 실시 예에 따른 애플리케이션 프로그래밍 인터페이스 (application programming interface(API))의 실시 예를 나타낸다.
도 4는 도 3의 API를 이용한 아토믹 라이트를 개략적으로 나타낸다.
도 5는 본 발명의 실시 예에 따른 시스템에서 수행되는 아토믹 라이트의 일 실시 예를 설명하기 위한 데이터의 흐름을 나타낸다.
도 6은 도 5의 트랜잭션 라이트와 아토믹 라이트를 설명하기 위한 개념도이다.
도 7은 본 발명의 실시 예에 따른 시스템에서 수행되는 아토믹 라이트의 다른 실시 예를 설명하기 위한 데이터의 흐름을 나타낸다.
도 8은 본 발명의 실시 예에 따른 시스템에서 수행되는 아토믹 라이트의 또 다른 실시 예를 설명하기 위한 데이터의 흐름을 나타낸다.
도 9는 도 1의 시스템에 포함된 호스트의 동작을 설명하기 위한 플로우차트이다.
도 10부터 도 13은 본 발명의 다른 실시 예들에 따른 시스템의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 시스템의 블록도를 나타낸다.
도 1을 참조하면, 본 발명의 실시 예에 따른 아토믹 라이트(atomic write)를 수행할 수 있는 시스템(100)은 스토리지 호스트(이하, 간단히 '호스트'라 한다. 200)와 스토리지(또는 데이터 저장 장치; 300)를 포함한다.
시스템(100)은 PC(personal computer), 서버(server), 데이터 서버, 웹 서버, 또는 휴대용 전자 장치로 구현될 수 있다.
상기 휴대용 전자 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트폰(smartphone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID)), 또는 e-북(e-book)으로 구현될 수 있다.
호스트(200)는 CPU(210), 저장 장치(220), 및 스토리지 호스트 컨트롤러 (230)를 포함한다.
아토믹 라이트는 게더드 아토믹 라이트(gathered atomic write)는 포함한다. 상기 게더드 아토믹 라이트는 각 데이터 청크(Data Chunk1(DC1)~Data Chunkk(DCk), k는 자연수)가 저장된 호스트(200)의 저장 장치(220)의 각 물리적인 저장 영역이 서로 떨어져 있는 경우라도, 상기 각 물리적인 저장 영역에 저장된 각 데이터 청크(DC1~DCk)를 모아서(gather) 스토리지(300)의 스토리지 미디어(330)에 아토믹하게 라이트하는 동작을 의미한다.
또한, 상기 게더드 아토믹 라이트는 호스트(200)로부터 스토리지(300)로 전송된 각 데이터 청크(DC1~DCk)가 라이트될 스토리지(300)의 스토리지 미디어(330)의 저장 영역(331)의 각 물리적인 단위 저장 영역이 서로 떨어져 있는 경우라도 각 데이터 청크(DC1~DCk)를 아토믹하게 상기 각 물리적인 단위 저장 영역에 라이트하는 동작을 의미한다.
또한, 게더드 아토믹 라이트는 스토리지(300)의 복수의 단위 저장 영역들에 대한 라이트 요구(write request)를 아토믹하게, 즉 전부 또는 전무로 라이트하는 동작을 의미한다.
CPU(210)는 그 명칭에 무관하게 호스트(200)의 동작을 전반적으로 제어할 수 있는 제어 회로를 의미한다. 따라서, CPU(210)는 프로세서 또는 멀티-코어 프로세서로 대체될 수 있다.
저장 장치(220)는 아토믹 라이트에 관련된 데이터 청크들(DC1~DCk)을 저장할 수 있다.
저장 장치(220)는 휘발성 메모리 장치 또는 불휘발성 메모리 장치로 구현될 수 있다.
상기 휘발성 메모리 장치는 RAM(random access memory), DRAM(dynamic RAM), SRAM(static RAM), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM (Twin Transistor RAM)로 구현될 수 있다.
상기 불휘발성 메모리 장치는 ROM(read only memory), EEPROM(electrically erasable programmable ROM), NOR 플래시(flash) 메모리, NAND 플래시 메모리, MRAM(Magnetic RAM), 스핀-전달 토크 MRAM(spin-transfer torque MRAM(STT-MRAM)), conductive bridging RAM(CBRAM), FeRAM(ferroelectric RAM), PRAM(phase change RAM), 저항 메모리(resistive RAM: RRAM), 나노튜브 RRAM(nanotube RRAM), 폴리머 RAM(polymer RAM: PoRAM), 나노 부유 게이트 메모리(nano floating gate memory(NFGM)), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자 (molecular electronics memory device), 또는 절연 저항 변화 메모리(insulator resistance change memory)로 구현될 수 있다.
또한, 상기 불휘발성 메모리 장치는 하드디스크 드라이브(hard disk drive(HDD)) 또는 솔리드 스테이트 드라이브(SSD)로 구현될 수 있다.
CPU(210)의 제어에 따라 스토리지 호스트 컨트롤러(230)는 호스트(200)와 스토리지(230) 사이의 통신을 제어할 수 있다.
CPU(210), 저장 장치(220), 및 스토리지 호스트 컨트롤러(230)는 인터커넥트 (interconnect), 예컨대 대응되는 버스를 통하여 서로 통신할 수 있다.
데이터를 저장할 수 있는 스토리지(300)는 스토리지 컨트롤러(310), 저장 장치(320), 및 스토리지 미디어(330)를 포함한다. 스토리지(300)는 스토리지(300)의 동작을 제어할 수 있는 CPU를 더 포함할 수 있다. 상기 CPU는 스토리지 컨트롤러 (310), 저장 장치(320), 및 스토리지 미디어(330) 중에서 적어도 하나의 동작을 제어할 수 있다.
스토리지 컨트롤러(310), 저장 장치(320), 및 스토리지 미디어(330)는 인터커넥트(interconnect), 예컨대 대응되는 버스(bus)를 통하여 서로 통신할 수 있다.
스토리지 컨트롤러(310)는 호스트(200)와 스토리지(230) 사이의 통신을 제어할 수 있다.
예컨대, 스토리지 컨트롤러(310)는 트랜잭션 라이트(transaction write)에 기초하여 아토믹 라이트 데이터를 버퍼링 영역에 라이트하는 동작과, 아토믹 라이트에 기초하여 상기 버퍼링 영역에 라이트된 아토믹 라이트 데이터를 스토리지 미디어(330)에 아토믹하게 라이트하는 동작을 제어할 수 있다.
저장 장치(320)는 상술한 휘발성 메모리 장치 또는 상술한 불휘발성 메모리 장치로 구현될 수 있다.
스토리지 미디어(330)는 상술한 휘발성 메모리 장치 또는 상술한 불휘발성 메모리 장치로 구현될 수 있다.
예컨대, 스토리지(300)는 데이터베이스, SSD, 유니버셜 플래시 스토리지 (universal flash storage(UFS)), 플래시 USB 드라이브(flash universal serial bus drive), SD(secure digital) 카드, MMC(multimedia card), 임베디드 MMC (embedded MMC), 스마트 카드(smart card), 또는 메모리 카드(memory card)로 구현될 수 있다.
도 2는 본 발명의 실시 예에 따라 기존 OS의 각 레이어를 변경하지 않고도 아토믹 라이트 요청을 스토리지로 전송하는 방법을 설명하기 위한 개념도이다.
도 2에는 호스트(200)의 애플리케이션(201)이 아토믹 라이트에 관련된 요청을 스토리지(300)로 전송하기 위해 통과(또는 경유)해야 하는 소프트웨어들의 스택(stack)이 도시되어 있다. 예컨대, 호스트(200)에 인스톨된 각 소프트웨어는 CPU (210)에 의해 실행될 수 있다.
애플리케이션(201)은 애플리케이션 프로그래밍 인터페이스(application programming interface(API))를 이용하여 스토리지 드라이버(203)로 아토믹 라이트에 대한 요청(이하, '아토믹 라이트 요청(atomic write request)'이라 한다)을 직접 전송할 수 있다. 즉, API는 경로(PATH2)를 이용하여 스토리지 드라이버(203)로 직접 전송된다. 경로(PATH2)는 데이터 터널(data tunnel)로 불릴 수 있다.
애플리케이션(201)은 각 경로(PATH1과 PATH2)를 통해 아토믹 라이트 요청을 스토리지 드라이버(203)로 직접 전송할 수 있다.
스토리지 드라이버(203)는 상기 아토믹 라이트 요청에 응답하여 아토믹 라이트에 관련된 데이터를 경로(PATH3) 또는 호스트 인터페이스를 통해 스토리지(300)의 스토리지 펌웨어(311)로 전송할 수 있다.
예컨대, 스토리지 드라이버(203)는 아토믹 라이트에 관련된 데이터를 스토리지 호스트 컨트롤러(230)를 통해 스토리지(300)의 스토리지 컨트롤러(310)로 전송할 수 있다. 예컨대, 스토리지 펌웨어(311)는 스토리지 컨트롤러(310)를 제어할 수 있다.
호스트(200)와 스토리지(300)는 호스트 인터페이스, 예컨대 통신 프로토콜을 이용하여 통신할 수 있다. 예컨대, 상기 호스트 인터페이스는 SATA(serial advanced technology attachment) 프로토콜 또는 SAS(Serial Attached SCSI) 프로토콜을 지원할 수 있다.
종래의 OS(operating system)는 본 발명의 실시 예에 따른 아토믹 라이트를 수행할 수 없었기 때문에, 상기 종래의 OS가 애플리케이션(201)으로부터 스토리지 드라이버(203)로 아토믹 라이트 요청을 전송하기 위해서는 상기 종래의 OS의 각 레이어가 변경되어야 한다.
즉, 아토믹 라이트를 위한 아토믹 라이트 요청을 전송하기 위한 API는 상기 종래의 OS의 각 레이어, 예컨대 시스템 콜 레이어(System Call Layer), 가상 파일 시스템(Virtual File System), 및 블록 레이어(block layer)에 추가되어야만 한다.
그러나, 본 발명의 실시 예에 따른 아토믹 라이트를 제어할 수 있는 애플리케이션(201)은 OS의 각 레이어를 변경하지 않고도 데이터 터널(PATH2)을 이용하여 아토믹 라이트 요청을 스토리지 드라이버(203)로 전송할 수 있는 효과가 있다.
또한, 스토리지 드라이버(203)는 상기 아토믹 라이트 요청에 기초하여 아토믹 라이트에 관련된 데이터, 즉 헤더와 데이터 청크들을 스토리지(300)로 전송할 수 있는 효과가 있다.
도 3은 본 발명의 실시 예에 따른 애플리케이션 프로그래밍 인터페이스 (application programming interface(API))의 실시 예를 나타낸다.
호스트(200)에서 실행중인 애플리케이션(201)은 도 3에 예시적으로 도시된 API를 이용하여 아토믹 라이트, 예컨대 게더드 아토믹 라이트를 스토리지(300)로 요청할 수 있다.
여기서, 'fd'는 아토믹 라이트에 관련된 데이터, 예컨대 데이터 청크들 (DC1~DCk)이 라이트될 스토리지를 의미한다. 데이터 청크(data chunk)는 스토리지, 예컨대 스토리지 미디어(330)에서 섹터 어드레스(sector address)를 기준으로 연속적으로 저장될 데이터를 의미한다.
스토리지는 섹터 단위로 라이트 동작 또는 리드 동작을 수행한다. 섹터의 크기는 스토리지마다 다를 수 있다. 섹터의 크기는 일반적으로 512-바이트(byte)이다. 스토리지의 크기가 N(N은 자연수)이라면, 스토리지의 각 섹터는 순차적인 섹터 번호로 접근할 수 있다.
'io_vector'에는 라이트될 데이터, 예컨대 데이터 청크들과 상기 데이터 청크들이 라이트될 위치들에 대한 정보가 어레이(array) 형태로 저장된다.
'io_count'는 라이트될 데이터, 예컨대 데이터 청크들의 개수이다.
'total_data'는 데이터될 데이터의 전체 길이를 나타낸다. 실시 예들에 따라, total_data는 API에 포함될 수도 있고 포함되지 않을 수도 있다.
도 4는 도 3의 API를 이용한 아토믹 라이트를 개략적으로 나타낸다.
도 3과 도 4에 도시된 바와 같이, io_vector에는 라이트될 데이터, 예컨대 데이터 청크들에 대한 정보가 포함되어 있다.
도 4는 게더드 아토믹 라이트를 단위 저장 영역의 주소, 예컨대 섹터 주소 (sector address)를 사용하는 개념적으로 설명하는 것으로서, 'WR1~WRk'는 서로 다른 저장 영역들, 예컨대 서로 다른 섹터 주소에 따라 정의된 단위 저장 영역들에 대한 라이트 요구들을 의미하다.
'BT'는 트랜잭션 라이트(transaction write)의 시작, 예컨대 시작 트랜잭션 명령(begin transaction commit command)을 의미하고, 'ET'는 상기 트랜잭션 라이트의 끝, 예컨대 끝 트랜잭션 명령(end transaction commit command)을 의미한다.
상기 트랜잭션 라이트는 아토믹 라이트에 관련된 데이터, 예컨대 데이터 청크들을 호스트(200)로부터 스토리지(300)로 전송하는 동작을 의미할 수 있다.
도 4에 도시된 바와 같이, 아토믹 라이트는 시작 트랜잭션 명령(BT)과 끝 트랜잭션 명령(ET) 사이의 라이트 요구들(WR1~WRk)에 대한 원자성(atomicity)을 만족한다. 즉, 데이터 청크들(DC1~DCk)은 아토믹하게 스토리지 미디어(330)의 저장 영역(331)에 저장될 수 있다.
도 5는 본 발명의 실시 예에 따른 시스템에서 수행되는 아토믹 라이트의 일 실시 예를 설명하기 위한 데이터의 흐름을 나타내고, 도 6은 도 5의 트랜잭션 라이트와 아토믹 라이트를 설명하기 위한 개념도이다.
아토믹 라이트 데이터 구조는 호스트(200)로부터 전송되고 스토리지(300)의 버퍼링 영역(BA)에 순차적으로 라이트될 아토믹 라이트에 관련된 헤더(HEADER)와 데이터 청크들(DC1~DCk)을 포함한다.
버퍼링 영역(buffering area(BA))은 아토믹 라이트에 관련된 데이터, 예컨대 헤더(HEADER)와 데이터 청크들(DC1~DCk)이 일시적으로 라이트될 수 있는 저장 영역이다. 버퍼링 영역(BA)은 데이터 청크들(DC1~DCk) 각각이 아토믹하게 저장될 스토리지 미디어(330)에 포함된 저장 영역(331)과는 다른 저장 영역을 의미할 수 있다.
실시 예들에 따라, 버퍼링 영역(BA)은 스토리지 미디어(330)의 일부에 구현될 수 있고 스토리지 미디어(330)와 다른 저장 장치에 구현될 수 있다. 예컨대, 버퍼링 영역(BA)은 버퍼를 의미할 수도 있다.
예컨대, 버퍼링 영역(BA)은 DRAM(dynamic random access memory)과 같은 저장 장치(320)에 구현될 수도 있고 스토리지 미디어(330)의 일부에 구현될 수도 있다.
도 1부터 도 6을 참조하면, 호스트(200)는 버퍼링 영역(BA)의 설정에 관련된 정보, 예컨대 버퍼링 영역 설정 정보(BASI)를 스토리지(300)로 전송한다(S110).
첫 번째 방법에 따라 버퍼링 영역(BA)은 호스트(200)에 의해 설정되므로, 호스트(200)는 필요에 따라 버퍼링 영역(BA)의 위치 및/또는 크기를 설정할 수 있다.
예컨대, 호스트(200)는 저장 장치(320)와 스토리지 미디어(330) 중 어느 하나에 설정된 버퍼링 영역(BA)을 저장 장치(320)와 스토리지 미디어(330) 중 다른 하나로 변경할 수 있다.
스토리지(300)는 버퍼링 영역 설정 정보(BASI)에 기초하여 버퍼링 영역(SA)을 설정한다(S120). 상술한 바와 같이, 버퍼링 영역(BA)은 스토리지 미디어(330)의 일부에 설정되거나 또는 스토리지 미디어(330)와 다른 저장 장치(예컨대, 320)에 설정될 수 있다.
예컨대, 버퍼링 영역 설정 정보(BASI)는 어드레스들(LBA0~LBAk)에 대한 정보를 포함할 수 있다.
호스트(200)는 헤더(HEADER)의 라이트에 관련된 버퍼링 영역(BA)의 어드레스 (LBA0)와 헤더(HEADER)를 스토리지(300)로 전송한다(S130). 어드레스(LBA0)는 섹터 어드레스를 의미할 수 있다.
헤더(HEADER)는 데이터 청크들(DC1~DCk)의 개수, 데이터 청크들(DC1~DCk) 각각이 아토믹하게 저장될 저장 영역(330)의 단위 저장 영역들(331-1~331-k) 각각의 시작 어드레스(SSA1~SSAk), 및 데이터 청크들(DC1~DCk) 각각의 길이를 포함한다.
각 시작 어드레스(SSA1~SSAk)는 시작 섹터 어드레스일 수 있다.
헤더(HEADER)는 부가적인 메타 데이터를 더 포함할 수 있다.
스토리지(300)는 어드레스(LBA0)를 분석하고, 분석 결과에 따라 현재 트랜잭션 라이트(TW)가 게더드 아토믹 라인트를 위한 트랜잭션임을 판단할 수 있다. 그러나, 호스트(200)로부터 전송된 어드레스가 버퍼링 영역(BA)과 무관한 어드레스일 때, 스토리지(300)는 게더드 아토믹 라인트를 수행하지 않는다.
실시 예에 따라 스토리지(300)의 스토리지 컨트롤러(310)는 헤더(HEADER)의 수신을 데이터 청크들(DC1~DCk)의 전송에 관련된 트랜잭션 라이트(TW)의 시작 명령(이하, '시작 트랜잭션 라이트 명령'이라 한다.)으로 판단할 수 있다.
다른 실시 예에 따라, 스토리지(300)의 스토리지 컨트롤러(310)는 헤더 (HEADER)가 버퍼링 영역(BA)의 헤더 영역(321-0)에 라이트되는 시점을 트랜잭션 라이트(WT)의 시작 시점으로 판단할 수 있다. 이때, 헤더 영역(321-0)은 어드레스 (LBA0)에 상응하는 버퍼링 영역(BA)의 저장 영역을 의미한다.
즉, 스토리지(300)는 헤더(HEADER)의 수신에 응답하여 트랜잭션 라이트(TW)를 시작하고, 헤더(HEADER)를 버퍼링 영역(BA)의 헤더 영역(321-0)에 라이트한다 (S131).
스토리지(300)는 헤더(HEADER)를 헤더 영역(321-0)에 라이트한 후 응답 (ACK0)을 호스트(200)로 전송한다(S133).
호스트(200)는 제1데이터 청크(DC1)의 라이트에 관련된 버퍼링 영역(BA)의 어드레스(LBA1)와 제1데이터 청크(DC1)를 스토리지(300)로 전송한다(S140).
스토리지(300)는 어드레스(LBA1)에 기초하여 제1데이터 청크(DC1)를 버퍼링 영역(BA)의 제1데이터 청크 영역(321-1)에 라이트한다(S141).
스토리지(300)는 제1데이터 청크(DC1)를 제1데이터 청크 영역(321-1)에 라이트한 후 응답(ACK1)을 호스트(200)로 전송한다(S143).
호스트(200)는 제2데이터 청크(DC2)의 라이트에 관련된 버퍼링 영역(BA)의 어드레스(LBA2)와 제2데이터 청크(DC2)를 스토리지(300)로 전송한다(S150).
스토리지(300)는 어드레스(LBA2)에 기초하여 제2데이터 청크(DC2)를 버퍼링 영역(BA)의 제2데이터 청크 영역(321-2)에 라이트한다(S151).
스토리지(300)는 제2데이터 청크(DC2)를 제2데이터 청크 영역(321-2)에 라이트한 후 응답(ACK2)을 호스트(200)로 전송한다(S153).
호스트(200)는 제k번째 데이터 청크(DCk)의 라이트에 관련된 버퍼링 영역 (BA)의 어드레스(LBAk)와 제k번째 데이터 청크(DCk)를 스토리지(300)로 전송한다 (S160).
스토리지(300)의 스토리지 컨트롤러(310)는 제k번째 데이터 청크(DCk)의 수신을 데이터 청크들(DC1~DCk)의 전송에 관련된 트랜잭션 라이트(TW)의 완료 명령으로 판단할 수 있다.
스토리지(300)의 스토리지 컨트롤러(310)는 어드레스(LBAk)에 기초하여 제k번째 데이터 청크(DCk)를 버퍼링 영역(BA)의 제k번째 데이터 청크 영역(321-k)에 라이트한다(S161).
트랜잭션 라이트(TW) 동안, 헤더(HEADER)와 데이터 청크들(DC1~DCk) 각각은 버퍼링 영역(BA)의 각 저장 영역(321-0~321-k)에 순차적으로 라이트된다.
버퍼링 영역(BA)에 대한 트랜잭션 라이트(TW)가 종료된 후, 스토리지(300)는 데이터 청크들(DC1~DCk)을 스토리지 미디어(330)의 저장 영역(331)에 아토믹하게 라이트한다.
즉, 버퍼링 영역(BA)에 저장된 제1데이터 청크(DC1)는 시작 어드레스(SSA1)에 의해 지정된 단위 저장 영역(331-1)에 라이트되고, 제2데이터 청크(DC2)는 시작 어드레스(SSA2)에 의해 지정된 단위 저장 영역(331-2)에 라이트되고, 제k번째 데이터 청크(DCk)는 시작 어드레스(SSAk)에 의해 지정된 단위 저장 영역(331-k)에 라이트된다.
각 단위 저장 영역(331-1~331-k)은 물리적으로 서로 떨어져 있을 수도 있고 서로 인접할 수도 있다.
도 7은 본 발명의 실시 예에 따른 시스템에서 수행되는 아토믹 라이트의 다른 실시 예를 설명하기 위한 데이터의 흐름을 나타낸다.
도 7에 도시된 바와 같이, 두 번째 방법에 따라 버퍼링 영역(BA)은 스토리지 (300)에 의해 설정되고(S101), 버퍼링 영역(BA)을 정의하는 어드레스들(LBA0~LBAk)에 대한 정보를 포함하는 버퍼링 영역 설정 정보(BASI)는 스토리지(300)에 의해 호스트(200)로 전송된다(S111). 예컨대, 버퍼링 영역(BA)은 디폴트로 제조업자에 의해 설정될 수 있다.
게더드 아토믹 라이트가 필요할 때, 호스트(200)는 버퍼링 영역 설정 정보 (BASI)에 기초하여 상기 게더드 아토믹 라이트에 관련된 데이터, 즉 헤더(HEADER)와 데이터 청크들(DC1~DCk)을 순차적으로 스토리지(300)로 전송할 수 있다.
즉, 호스트(200)는 스토리지(300)의 버퍼링 영역(BA)에 대한 트랜잭션 라이트(TW)를 수행할 수 있다.
트랜잭션 라이트(TW) 동안, 헤더(HEADER)와 데이터 청크들(DC1~DCk) 각각은 버퍼링 영역(BA)의 각 저장 영역(321-0~321-k)에 순차적으로 라이트된다. 각 저장 영역(321-0~321-k)은 LBA(local block address)를 기준으로 서로 인접하는 버퍼링 영역일 수 있다.
버퍼링 영역(BA)의 각 저장 영역(321-0~321-k)에 순차적으로 저장된 데이터 청크들(DC1~DCk) 각각은 아토믹 라이트 동안 스토리지 미디어(330)의 저장 영역 (331)의 각 단위 저장 영역(331-1~331-k)에 아토믹하게 저장된다.
도 8은 본 발명의 실시 예에 따른 시스템에서 수행되는 아토믹 라이트의 또 다른 실시 예를 설명하기 위한 데이터의 흐름을 나타낸다.
세 번째 방법에 따라 버퍼링 영역(BA)은 호스트(200)와 스토리지(300) 쌍방의 협상에 의해 결정된다(S113).
스토리지(300)는 협상에 따라 결정된 버퍼링 영역(BA)을 설정한다(S121).
트랜잭션 라이트(TW) 동안, 헤더(HEADER)와 데이터 청크들(DC1~DCk) 각각은 버퍼링 영역(BA)의 각 저장 영역(321-0~321-k)에 순차적으로 라이트된다.
버퍼링 영역(BA)의 각 저장 영역(321-0~321-k)에 순차적으로 저장된 데이터 청크들(DC1~DCk) 각각은 아토믹 라이트 동안 스토리지 미디어(330)의 저장 영역 (331)의 각 단위 저장 영역(331-1~331-k)에 아토믹하게 라이트된다.
도 9는 도 1의 시스템에 포함된 호스트의 동작을 설명하기 위한 플로우차트이다.
도 2를 참조하여 설명한 바와 같이, 애플리케이션(201)은 API를 이용하여 직접 스토리지 드라이버(203)로 아토믹 라이트 요청을 전송한다(S210).
스토리지 드라이버(203)는 상기 아토믹 라이트 요청에 응답하여 아토믹 라이트에 관련된 헤더(HEADER)와 데이터 청크들(DC1~DCk)이 스토리지(300)의 버퍼링 영역(BA)에 순차적으로 라이트될 수 있도록 헤더(HEADER)와 데이터 청크들(DC1~DCk)을 순차적으로 스토리지(300)로 전송한다(S220).
도 10부터 도 13은 본 발명의 다른 실시 예들에 따른 시스템의 블록도를 나타낸다.
도 10을 참조하면, 시스템(400)은 호스트(200)와 솔리드 스테이트 드라이브 (solid state drive(SSD); 300A)를 포함한다.
SSD(300A)는 호스트 인터페이스 로직(410), SSD 컨트롤러(420), 저장 장치 (430), 및 플래시 메모리 장치들(440)을 포함한다. 저장 장치(430)는 상술한 휘발성 메모리 장치 또는 상술한 불휘발성 메모리 장치로 구현될 수 있다.
호스트 인터페이스 로직(410)은 호스트(200)와 SSD 컨트롤러(420)가 주고받는 데이터를 인터페이스한다.
SSD 컨트롤러(420)는 호스트 인터페이스 로직(410), 저장 장치(430), 및 플래시 메모리 장치들(440) 사이에서 주고받는 데이터를 제어한다.
SSD 컨트롤러(420)는 프로세서(421), 버퍼 매니저(423), 및 플래시 컨트롤러 (425)를 포함한다.
프로세서(421)는 SSD 컨트롤러(420)의 동작을 전반적으로 제어한다. 예컨대, 프로세서(421)는 버퍼 매니저(423)와 플래시 컨트롤러(425)의 동작을 제어한다.
버퍼 매니저(423)는 호스트 인터페이스 로직(410)과 플래시 컨트롤러(425) 사이에서 주고받는 데이터의 버퍼링을 제어한다.
플래시 컨트롤러(425)는 플래시 메모리 장치들(440)과 버퍼 매니저(423) 사이에서 주고받는 데이터를 제어한다.
버퍼링 영역(BA)은 플래시 메모리 장치들(440) 중에서 적어도 하나에 구현되거나 저장 장치(430)에 구현될 수 있다.
플래시 메모리 장치들(440) 중 적어도 하나는 버퍼링 영역(BA)에 저장된 데이터 청크들(DC1~DCk)을 아토믹하게 라이트하기 위한 저장 영역(331)의 기능을 수행할 수 있다.
도 11을 참조하면, 시스템(500)은 호스트(200)와 스토리지(300B)를 포함한다.
스토리지(300B)는 NVMe(NVM(non-volatile memory) Express)를 지원할 수 있는 SSD 컨트롤러(510), 저장 장치(520), 및 불휘발성 메모리들(530)을 포함한다.
SSD 컨트롤러(510)는 임베드된 프로세서(511), NVM 익스프레스 서브 시스템 (513), 및 NVM 메모리 컨트롤러(515)를 포함한다.
임베드된 프로세서(511)는 NVM 익스프레스 서브 시스템(513)과 NVM 메모리 컨트롤러(515)의 동작을 제어한다.
NVM 익스프레스 서브 시스템(513)은 호스트(200)로부터 출력된 아토믹 라이트에 관련된 데이터를 수신하고 처리한다.
NVM 익스프레스 서브 시스템(513)과 NVM 메모리 컨트롤러(515) 각각은 저장 장치(520)를 액세스할 수 있다. 저장 장치(520)는 DRAM(dynamic random access memory)과 같은 휘발성 메모리로 구현될 수 있다.
버퍼링 영역(BA)은 불휘발성 메모리들(530) 중에서 적어도 하나에 또는 저장 장치(520)에 구현될 수 있다.
NVM 메모리 컨트롤러(515)의 제어에 따라, 버퍼링 영역(BA)에 라이트된 게더드 아토믹 라이트에 관련된 데이터는 아토믹하게 불휘발성 메모리들(530) 중에서 적어도 하나에 라이트될 수 있다.
도 12를 참조하면, 시스템(600)은 호스트(200), 레이드(redundant array of independent disks(RAID)) 컨트롤러(610), 및 복수의 SSD들(300A 또는 300B)을 포함한다.
버퍼링 영역(BA)은 복수의 SSD들(300A 또는 300B) 중 적어도 하나에 구현될 수 있다. 버퍼링 영역(BA)에 라이트된 게더드 아토믹 라이트에 관련된 데이터는 아토믹하게 복수의 SSD들(300A 또는 300B) 중에서 적어도 하나에 라이트될 수 있다.
도 13을 참조하면, 시스템(700)은 애플리케이션 웹 서버(710), 복수의 클라이언트들(720~723), 및 스토리지(740)를 포함한다.
애플리케이션 웹 서버(710)와 복수의 클라이언트들(720~723)은 인터넷(701)을 통해 통신 네트워크를 형성한다.
애플리케이션 웹 서버(710)는 호스트(200)의 기능을 수행할 수 있고 스토리지(740)는 스토리지(300)의 기능을 수행할 수 있다.
경우 1(CASE1)에 따라 애플리케이션 웹 서버(710)는 스토리지(740)의 버퍼링 영역으로 게더드 아토믹 라이트에 관련된 데이터를 트랙잭션 라이트를 통해 전송하고, 스토리지(740)는 상기 버퍼링 영역에 저장된 데이터를 스토리지 미디어에 아토믹하게 라이트할 수 있다.
경우 II(CASE II)에 따라, 시스템(700)은 데이터베이스 서버(730)를 더 포함할 수 있다. 이 경우, 애플리케이션 웹 서버(710)와 데이터베이스 서버(730)는 인터넷 또는 인트라넷(703)을 통해 접속될 수 있다.
이 경우, 데이터베이스 서버(730)는 호스트(200)의 기능을 수행할 수 있고 스토리지(740)는 스토리지(300)의 기능을 수행할 수 있다. 따라서, 데이터베이스 서버(730)는 스토리지(740)의 버퍼링 영역으로 게더드 아토믹 라이트에 관련된 데이터를 트랙잭션 라이트를 통해 전송하고, 스토리지(740)는 상기 버퍼링 영역에 저장된 데이터를 스토리지 미디어에 아토믹하게 라이트할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100; 시스템
200; 호스트
210; CPU
220; 저장 장치
230; 호스트 스토리지 컨트롤러
300; 스토리지
310; 스토리지 컨트롤러
320; 저장 장치
330; 스토리지 미디어
340; 저장 영역

Claims (22)

  1. 호스트로부터 전송되고 스토리지(storage)의 버퍼링 영역에 순차적으로 라이트될 아토믹 라이트에 관련된 헤더와 데이터 청크들을 포함하는 아토믹 라이트 데이터 구조.
  2. 제1항에 있어서, 상기 헤더는,
    상기 데이터 청크들의 개수, 상기 데이터 청크들 각각이 아토믹하게 저장될 스토리지 미디어의 저장 영역들(storage areas) 각각의 시작 어드레스, 및 상기 데이터 청크들 각각의 길이를 포함하는 아토믹 라이트 데이터 구조.
  3. 스토리지의 버퍼링 영역에 라이트될 아토믹 라이트에 관련된 헤더를 호스트가 상기 스토리지로 전송하는 단계; 및
    상기 버퍼링 영역에 라이트될 상기 아토믹 라이트에 관련된 데이터 청크들을 상기 호스트가 상기 스토리지로 순차적으로 전송하는 단계를 포함하는 호스트의 아토믹 라이트 데이터 전송 방법.
  4. 제3항에 있어서,
    상기 헤더는 상기 데이터 청크들의 개수, 상기 데이터 청크들 각각이 아토믹하게 저장될 스토리지 미디어의 저장 영역들 각각의 시작 어드레스, 및 상기 데이터 청크들 각각의 길이를 포함하는 호스트의 아토믹 라이트 데이터 전송 방법.
  5. 제4항에 있어서,
    상기 호스트가 상기 버퍼링 영역의 설정에 관련된 정보를 상기 스토리지로 전송하는 단계; 및
    상기 호스트가 상기 정보에 기초하여 상기 헤더와 상기 데이터 청크들의 라이트에 관련된 상기 버퍼링 영역의 어드레스들을 상기 스토리지로 순차적으로 전송하는 단계를 더 포함하는 호스트의 아토믹 라이트 데이터 전송 방법.
  6. 제4항에 있어서,
    상기 호스트가 상기 버퍼링 영역의 정보를 상기 스토리지로부터 수신하는 단계; 및
    상기 호스트가 상기 정보에 기초하여 상기 헤더와 상기 데이터 청크들의 라이트에 관련된 상기 버퍼링 영역의 어드레스들을 상기 스토리지로 순차적으로 전송하는 단계를 더 포함하는 호스트의 아토믹 라이트 데이터 전송 방법.
  7. 제4항에 있어서,
    상기 호스트가 상기 버퍼링 영역을 설정하기 위해 상기 스토리지와 협상하는 단계; 및
    상기 호스트가 상기 버퍼링 영역의 정보에 기초하여 상기 헤더와 상기 데이터 청크들의 라이트에 관련된 상기 버퍼링 영역의 어드레스들을 상기 스토리지로 순차적으로 전송하는 단계를 더 포함하는 호스트의 아토믹 라이트 데이터 전송 방법.
  8. 제3항에 있어서,
    상기 호스트가 상기 데이터 청크들 중의 마지막 데이터 청크에 대한 상기 스토리지의 응답에 기초하여 상기 아토믹 라이트의 완료 여부를 판단하는 단계를 더 포함하는 호스트의 아토믹 라이트 데이터 전송 방법.
  9. 제3항에 있어서,
    상기 호스트의 애플리케이션이 애플리케이션 프로그래밍 인터페이스 (application programming interface(API))를 이용하여 스토리지 드라이버로 상기 아토믹 라이트에 대한 요청을 직접 전송하는 단계; 및
    상기 스토리지 드라이버가 상기 요청에 응답하여 상기 헤더와 상기 데이터 청크들을 순차적으로 상기 스토리지로 전송하는 단계를 더 포함하는 호스트의 아토믹 라이트 데이터 전송 방법.
  10. 저장 영역과 별도의 버퍼링 영역을 설정하는 단계; 및
    호스트로부터 전송된 아토믹 라이트에 관련된 헤더와 데이터 청크들을 상기 버퍼링 영역에 순차적으로 라이트하는 단계를 포함하는 스토리지의 아토믹 라이트 방법.
  11. 제10항에 있어서,
    상기 버퍼링 영역은 상기 호스트에 의해 설정되는 스토리지의 아토믹 라이트 방법.
  12. 제10항에 있어서,
    상기 헤더는 상기 데이터 청크들의 개수, 상기 데이터 청크들 각각이 아토믹하게 저장될 상기 저장 영역에 포함된 단위 저장 영역들 각각의 시작 어드레스, 및 상기 데이터 청크들 각각의 길이를 포함하는 스토리지의 아토믹 라이트 방법.
  13. 제10항에 있어서,
    상기 헤더의 수신을 상기 데이터 청크들의 전송에 관련된 트랜잭션 라이트의 시작 명령으로 판단하는 단계를 더 포함하는 스토리지의 아토믹 라이트 방법.
  14. 제10항에 있어서,
    상기 데이터 청크들 중의 마지막 데이터 청크의 수신을 상기 데이터 청크들의 전송에 관련된 트랜잭션 라이트의 완료 명령으로 판단하는 단계를 더 포함하는 스토리지의 아토믹 라이트 방법.
  15. 제10항에 있어서,
    상기 버퍼링 영역에 라이트된 상기 데이터 청크들을 아토믹하게 상기 저장 영역에 라이트한 후,
    상기 아토믹 라이트의 완료를 지시하는 응답을 상기 호스트로 전송하는 단계를 더 포함하는 스토리지의 아토믹 라이트 방법.
  16. 제10항에 있어서,
    상기 저장 영역과 상기 버퍼링 영역은 서로 다른 저장 장치에 구현되는 스토리지의 아토믹 라이트 방법.
  17. 호스트와 스토리지를 포함하는 시스템의 동작 방법에 있어서,
    상기 호스트가 상기 스토리지의 버퍼링 영역에 라이트될 아토믹 라이트에 관련된 헤더를 상기 스토리지로 전송하는 단계; 및
    상기 호스트가 상기 버퍼링 영역에 라이트될 상기 아토믹 라이트에 관련된 데이터 청크들을 상기 스토리지로 순차적으로 전송하는 단계를 포함하는 시스템의 동작 방법.
  18. 제17항에 있어서,
    상기 호스트의 애플리케이션이 애플리케이션 프로그래밍 인터페이스 (application programming interface(API))를 이용하여 스토리지 드라이버로 상기 아토믹 라이트에 대한 요청을 직접 전송하는 단계; 및
    상기 스토리지 드라이버가 상기 요청에 응답하여 상기 헤더와 상기 데이터 청크들을 순차적으로 상기 스토리지로 전송하는 단계를 더 포함하는 시스템의 동작 방법.
  19. 제17항에 있어서,
    상기 스토리지가 상기 헤더의 수신을 상기 데이터 청크들의 전송에 관련된 트랜잭션 라이트의 시작 명령으로 판단하는 단계를 더 포함하는 시스템의 동작 방법.
  20. 제17항에 있어서,
    상기 스토리지가 상기 데이터 청크들 중의 마지막 데이터 청크의 수신을 상기 데이터 청크들의 전송에 관련된 트랜잭션 라이트의 완료 명령으로 판단하는 단계를 더 포함하는 시스템의 동작 방법.
  21. 제17항에 있어서,
    상기 버퍼링 영역에 라이트된 상기 데이터 청크들을 아토믹하게 상기 저장 영역에 라이트한 후,
    상기 아토믹 라이트의 완료를 지시하는 응답을 상기 호스트로 전송하는 단계를 더 포함하는 시스템의 동작 방법.
  22. 호스트와 스토리지를 포함하는 시스템의 동작 방법에 있어서,
    상기 스토리지에 버퍼링 영역을 설정하는 단계;
    상기 호스트가 트랜잭션 라이트를 이용하여 아토믹 라이트에 관련된 데이터를 상기 버퍼링 영역으로 전송하는 단계; 및
    상기 스토리지가 상기 버퍼링 영역에 저장된 상기 데이터를 아토믹하게 상기 버퍼링 영역과 다른 저장 영역에 라이트하는 단계를 포함하는 시스템의 동작 방법.
KR1020130047770A 2013-04-29 2013-04-29 아토믹 라이트 방법 KR20140128819A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130047770A KR20140128819A (ko) 2013-04-29 2013-04-29 아토믹 라이트 방법
US14/262,834 US20140325125A1 (en) 2013-04-29 2014-04-28 Atomic write methods

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130047770A KR20140128819A (ko) 2013-04-29 2013-04-29 아토믹 라이트 방법

Publications (1)

Publication Number Publication Date
KR20140128819A true KR20140128819A (ko) 2014-11-06

Family

ID=51790293

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130047770A KR20140128819A (ko) 2013-04-29 2013-04-29 아토믹 라이트 방법

Country Status (2)

Country Link
US (1) US20140325125A1 (ko)
KR (1) KR20140128819A (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9218279B2 (en) 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US9170938B1 (en) 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device
US9471448B2 (en) * 2014-12-10 2016-10-18 Intel Corporation Performing an atomic write operation across multiple storage devices
US20170039142A1 (en) * 2015-08-03 2017-02-09 Sandisk Technologies Llc Persistent Memory Manager
US9977626B2 (en) 2016-06-30 2018-05-22 Seagate Technology Llc Implementing scattered atomic I/O writes

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI109620B (fi) * 1999-10-26 2002-09-13 Tellabs Oy Menetelmä ja järjestely atomaaristen päivitysten toteuttamiseksi loogista flashmuistilaitetta käyttäen
US9170938B1 (en) * 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device

Also Published As

Publication number Publication date
US20140325125A1 (en) 2014-10-30

Similar Documents

Publication Publication Date Title
US9690700B2 (en) Host-driven garbage collection
US9928167B2 (en) Information processing system and nonvolatile storage unit
US9460006B2 (en) Nonvolatile memory system, system including the same, and method of adaptively adjusting user storage region in the same
EP2598996B1 (en) Apparatus, system, and method for conditional and atomic storage operations
KR101769448B1 (ko) 주석이 달린 극소 기록 작동을 수행하기 위한 방법 및 장치
US8918580B2 (en) Storage device with buffer memory including non-volatile RAM and volatile RAM
TWI492061B (zh) 經由主機傳輸速率偵測之操作模式或特徵之選擇性啟用
US20140095555A1 (en) File management device and method for storage system
EP3989052B1 (en) Method of operating storage device and method of operating storage system using the same
JP2022522595A (ja) ホストベースのフラッシュメモリメンテナンス技術
US20140325168A1 (en) Management of stored data based on corresponding attribute data
KR20140128819A (ko) 아토믹 라이트 방법
KR20170110810A (ko) 데이터 처리 시스템 및 그것의 동작 방법
CN112445716A (zh) Nand存储的重映射技术
US10642531B2 (en) Atomic write method for multi-transaction
US20220300377A1 (en) Managing storage reduction and reuse in the presence of storage device failures
KR102425470B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US20230152968A1 (en) Storage devices including non-volatile memory devices
KR20230060065A (ko) 스토리지 장치 및 전자 시스템
KR20210051803A (ko) 메모리 시스템 및 컨트롤러
KR20230092173A (ko) 호스트 장치의 동작 방법, 저장 장치의 동작 방법, 및 전자 장치
KR20230071005A (ko) 스토리지 장치
CN116009765A (zh) 操作存储装置的方法以及使用该方法操作存储系统的方法
CN116893877A (zh) 主机装置的操作方法及存储装置的操作方法
KR20170110808A (ko) 데이터 저장 장치를 포함하는 데이터 처리 시스템

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid