KR20180016660A - Data processing apparatus in storage and controlling method thereof - Google Patents

Data processing apparatus in storage and controlling method thereof Download PDF

Info

Publication number
KR20180016660A
KR20180016660A KR1020160099293A KR20160099293A KR20180016660A KR 20180016660 A KR20180016660 A KR 20180016660A KR 1020160099293 A KR1020160099293 A KR 1020160099293A KR 20160099293 A KR20160099293 A KR 20160099293A KR 20180016660 A KR20180016660 A KR 20180016660A
Authority
KR
South Korea
Prior art keywords
data
logical block
block address
transmitted
storage
Prior art date
Application number
KR1020160099293A
Other languages
Korean (ko)
Other versions
KR101831126B1 (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 KR1020160099293A priority Critical patent/KR101831126B1/en
Publication of KR20180016660A publication Critical patent/KR20180016660A/en
Application granted granted Critical
Publication of KR101831126B1 publication Critical patent/KR101831126B1/en

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/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/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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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

Abstract

The present invention relates to a data processing apparatus in storage, capable of enhancing the performance and durability of the storage. According to the present invention, the apparatus comprises: an operating system (OS) determining a logical block address of data to be written in generating a write request of an application program part to transmit the determined logical block address and the data to be written together with a write command, and using a transferred file identification (ID) number to search a logical block address of data to be permanently stored to generate and transmit a range flush command including the searched logical block address when a synchronization request is generated; and an apparatus control unit to store the data to be written transmitted with the write command in a buffer memory unit when the write command is transmitted from the OS, and to store data corresponding to the logical block address transmitted with the range flush command among data of the buffer memory unit in a position of the logical block address of a non-volatile storage unit when the range flush command is transmitted.

Description

스토리지 내의 데이터 처리 장치 및 그 제어 방법{DATA PROCESSING APPARATUS IN STORAGE AND CONTROLLING METHOD THEREOF}[0001] DATA PROCESSING APPARATUS IN STORAGE AND CONTROLLING METHOD THEREOF [0002]

본 발명은 스토리지 내의 데이터 처리 장치 및 그 제어 방법에 관한 것이다.The present invention relates to a data processing apparatus in a storage and a control method thereof.

파일 시스템(file system)과 디바이스 드라이버(device driver)가 구축된 운영체제(operating systems)를 이용하여 파일 관리를 실시하는 호스트(host)의 동작 제어부는 스토리지 인터페이스의 플러쉬 커맨드(FLUSH command)를 이용하여 전원 공급이 차단될 경우에도 저장된 데이터 중 변경된 부분이 안전하게 저장될 수 있도록 한다.An operation control unit of a host that manages a file using operating systems in which a file system and a device driver are built uses a FLUSH command of a storage interface Even when the supply is interrupted, the changed part of the stored data can be safely stored.

플러쉬 커맨드는 호스트에서 스토리지(storage)로 전달되어, 스토리지의 데이터 저장 동작을 제어하기 위한 명령어로서, 스토리지 내부에 존재하는 휘발성 버퍼 메모리부에 있는 모든 데이터를 스토리지의 비휘발성 저장부에 저장하기 위한 것이다.The flush command is a command for transferring data from the host to the storage and controlling the data storage operation of the storage. The command is for storing all the data in the volatile buffer memory portion existing in the storage in the nonvolatile storage portion of the storage .

이때, 호스트는 통상 중앙 처리장치(CPU)인 동작 제어부와 주 메모리(Main memory) 및 각종 입출력(I/O) 인터페이스로 구성된 부분을 의미하며, 스토리지는 하드 디스크(hard disk), SSD(solid state disk or solid state drive), 플래시 메모리(flash memory), 또는 비휘발성 메모리 (Non-volatile Memory) 등과 같은 비휘발성 저장 매체일 수 있다.In this case, the host generally refers to a part composed of an operation control unit, a central processing unit (CPU), a main memory and various input / output (I / O) interfaces. The storage includes a hard disk, a solid state disk or solid state drive, a flash memory, or a non-volatile memory.

호스트와 스토리지로 구성된 컴퓨터 시스템은 개인용 컴퓨터(personal computer), 서버(server) 또는 스마트 폰(smart phone)과 같은 모바일 기기(mobile devices) 등일 수 있다. A computer system composed of a host and storage may be a mobile computer, such as a personal computer, a server or a smart phone.

사용자의 동작 등에 의해 데이터 변경 후 일정 시간이 경과한 후 또는 명시적인 동기화 명령과 같이 영구적으로 데이터를 저장하는 명령이 운영체제에 요청되면, 호스트의 운영체제는 스토리지로 플러쉬 커맨드를 전송하고, 스토리지의 장치 제어부는 전송된 플러쉬 커맨드에 따라 버퍼 메모리부에 존재하는 모든 데이터를 비휘발성 저장부에 쓰기 동작을 실시하여 해당 데이터의 영구 저장 동작이 이루어지도록 한다.When an operating system requests an instruction to permanently store data, such as an explicit synchronization command, after a certain period of time has elapsed since the data was changed by the user's operation, the operating system of the host transmits a flush command to the storage, Writes all data present in the buffer memory unit to the nonvolatile storage unit in accordance with the transmitted flush command so that the data is permanently stored.

하지만, 현재 스토리지 구조에서는 특정 사용자 프로그램에 의해 촉발된 플러쉬 커맨드에 의해 쓰기 동작이 행해질 때 해당 프로그램에 속한 데이터뿐만 아니라 버퍼 메모리부에 존재하는 모든 데이터가 비휘발성 저장부에 쓰여지게 된다.However, in a current storage structure, when a write operation is performed by a flush command triggered by a specific user program, not only the data belonging to the program but also all data existing in the buffer memory are written to the nonvolatile storage unit.

이처럼, 즉시 영속성을 보장받지 않아도 되는 데이터까지 즉각적으로 비휘발성 저장부에 쓰는 동작은 버퍼링 효과를 감소시켜 불필요한 쓰기 트래픽(traffic)을 발생시킨다.As described above, the operation of immediately writing data to the nonvolatile storage unit that does not require immediate persistence reduces the buffering effect and generates unnecessary write traffic.

또한, 트래픽 증가로 인해, 스토리지의 데이터 처리시간이 지연되고 불필요한 쓰기 동작으로 스토리지의 수명이 저하되는 결과가 초래된다. In addition, due to the increase in traffic, the data processing time of the storage is delayed, and unnecessary write operation results in degradation of storage life.

한국 등록특허공보 등록번호 10-1450157(등록일자: 2014년 10월 06일, 발명의 명칭: 비휘발성 저널링 통합 버퍼 캐시와 비휘발성 스토리지를 위한 협동적 데이터 관리 장치 및 방법)Korean Registered Patent Publication No. 10-1450157 (Registered Date: Oct. 06, 2014, entitled "Nonvolatile Journaling Integrated Buffer Cache and Cooperative Data Management Device and Method for Nonvolatile Storage)

따라서 본 발명이 이루고자 하는 기술적 과제는 동기화가 요청된 데이터에 대한 정보를 호스트와 스토리지 간에 공유하여 불필요한 쓰기를 줄이고 스토리지의 성능 및 내구성을 향상시키는 것이다.SUMMARY OF THE INVENTION Accordingly, the present invention has been made to solve the above-mentioned problems occurring in the prior art, and it is an object of the present invention to provide a method and apparatus for synchronizing data between a host and a storage system.

본 발명의 한 특징에 따른 스토리지 내의 데이터 처리 장치는 응용 프로그램부의 쓰기 요청 발생 시 쓰여질 데이터의 논리 블록 주소를 판정하여 쓰기 커맨드와 함께 판정된 논리 블록 주소 및 쓰여질 데이터를 전송하고, 동기화 요청이 발생하면, 전송된 파일 식별 번호를 이용하여 영구 저장될 데이터의 논리 블록 주소를 검색하여 검색된 논리 블록 주소를 구비한 범위 플러쉬 커맨드를 생성해 전송하는 운영체제, 그리고 상기 운영체제로부터 쓰기 커맨드가 전송되면 상기 쓰기 커맨드와 함께 전송된 쓰여질 데이터를 버퍼 메모리부에 저장하고, 상기 범위 플러쉬 커맨드가 전송되면 상기 버퍼 메모리부의 데이터 중에서 상기 범위 플러쉬 커맨드와 함께 전송된 상기 논리 블록 주소에 해당하는 데이터를 비휘발성 저장부의 상기 논리 블록 주소의 위치에 기록하는 장치 제어부를 포함한다.A data processing apparatus in a storage according to an aspect of the present invention determines a logical block address of data to be written when a write request of an application program unit is generated and transmits a logical block address and data to be written together with a write command, An operating system for searching for a logical block address of data to be permanently stored by using the transferred file identification number, and generating and transmitting a range flush command having a retrieved logical block address, and when the write command is transmitted from the operating system, Wherein the data to be written together is stored in a buffer memory unit, and when the range flush command is transmitted, data corresponding to the logical block address transmitted together with the range flush command among the data in the buffer memory unit is written into the logical block Above address The device comprises a control unit for recording.

상기 영구 저장될 데이터의 논리 블록 주소는 특정 파일에 속한 모든 데이터의 논리 블록 주소, 특정 파일에서 변경된 데이터만의 논리 블록 주소, 또는 특정 파일과 무관하게 영구 저장될 변경된 데이터의 논리 블록 주소일 수 있다.The logical block address of the data to be permanently stored may be a logical block address of all data belonging to a specific file, a logical block address of only changed data in a specific file, or a logical block address of changed data to be permanently stored regardless of a specific file .

상기 운영체제는 더티 비트(dirty bit)를 이용하여 변경된 데이터를 판정할 수 있다.The operating system may determine changed data using a dirty bit.

본 발명의 다른 특징에 따른 스토리지 내의 데이터 처리 장치의 제어 방법은 응용 프로그램부는 쓰기 요청과 함께 쓰여질 데이터, 파일 식별 정보를 운영체제로 전송하는 단계, 상기 운영체제는 상기 쓰기 요청이 전송되면 파일 식별 정보를 이용하여 쓰여질 데이터의 논리 블록 주소를 판정한 후 쓰기 커맨드와 함께 쓰여질 데이터와 판정된 논리 블록 주소를 장치 제어부로 전송하는 단계, 상기 장치 제어부는 전송된 쓰여질 데이터를 버퍼 메모리부에 기록하는 단계, 상기 운영체제는 동기화 요청이 발생하거나 정해진 시간에 따라 영구 저장 요청이 발생하면, 응용 프로그램부로부터 전송된 파일 식별 정보를 이용하여 영구 저장될 데이터에 대한 논리 블록 주소를 검색하는 단계, 상기 운영체제는 검색된 영구 저장될 데이터에 대한 논리 블록 주소와 함께 범위 플러쉬 커맨드를 생성하여 상기 장치 제어부로 전송하는 단계, 그리고 상기 장치 제어부는 상기 버퍼 메모리부에 임시 저장되어 있는 데이터 중에서 영구 저장될 데이터에 대한 논리 블록 주소에 해당하는 데이터를 비휘발성 제어부의 논리 블록 주소에 영구적으로 저장하는 단계를 포함한다.According to another aspect of the present invention, there is provided a method of controlling a data processing apparatus in a storage, the method comprising: transmitting data and file identification information to be written along with a write request to an operating system; Determining a logical block address of data to be written and then transmitting the data to be written together with the write command and the determined logical block address to the device control unit, the device control unit recording the transferred data to be written in the buffer memory unit, Searching for a logical block address of data to be permanently stored using the file identification information transmitted from the application program unit when a synchronization request is generated or a permanent storage request is generated according to a predetermined time, The logical block address for the data Generating a range flush command, and transmitting the generated range flush command to the device control unit; and the device control unit transmits data corresponding to a logical block address of data to be permanently stored among the data temporarily stored in the buffer memory unit, And storing it permanently at the block address.

상기 영구 저장될 데이터의 논리 블록 주소는 특정 파일에 속한 모든 데이터의 논리 블록 주소, 특정 파일에서 변경된 데이터만의 논리 블록 주소, 또는 특정 파일과 무관하게 영구 저장될 변경된 데이터의 논리 블록 주소일 수 있다.The logical block address of the data to be permanently stored may be a logical block address of all data belonging to a specific file, a logical block address of only changed data in a specific file, or a logical block address of changed data to be permanently stored regardless of a specific file .

상기 운영체제는 더티 비트(dirty bit)를 이용하여 변경된 데이터를 판정할 수 있다.The operating system may determine changed data using a dirty bit.

이러한 특징에 따르면, 비휘발성 저장부에 즉시 동기화가 필요한 데이터만의 저장 동작이 이루어져 버퍼링 및 스케줄링의 효율성이 높아져 쓰기 동작을 실시해야 되는 데이터의 양이 감소하고 응답 시간이 줄어들어 처리 효율이 향상된다.According to this aspect, the storage operation of only data requiring immediate synchronization is performed in the nonvolatile storage unit, thereby increasing the efficiency of buffering and scheduling, thereby reducing the amount of data to be subjected to the write operation and reducing the response time, thereby improving the processing efficiency.

도 1은 본 발명의 한 실시예에 따른 스토리지 내의 데이터 처리 장치에 대한 개략적인 블록도이다.
도 2는 본 발명의 한 실시예에 따른 스토리지 내의 데이터 처리 장치에 대한 데이터 흐름도이다.
도 3는 본 발명의 한 실시예에 따른 스토리지 내의 데이터 처리 장치의 동작에 의한 스토리지 내로의 데이터 저장 동작에 대한 개념도이다.
1 is a schematic block diagram of a data processing apparatus in a storage according to an embodiment of the present invention.
2 is a data flow diagram for a data processing apparatus in a storage according to an embodiment of the present invention.
3 is a conceptual diagram illustrating an operation of storing data into a storage by operation of a data processing apparatus in the storage according to an embodiment of the present invention.

아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art can easily carry out the present invention. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. In order to clearly illustrate the present invention, parts not related to the description are omitted, and similar parts are denoted by like reference characters throughout the specification.

어떤 구성요소가 다른 구성요소에 "접속되어" 있다거나 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 접속되어 있거나 연결되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 한다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 접속되어" 있다거나 "직접 연결되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, but it should be understood that there may be other elements in between do. On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between.

그러면 첨부한 도면을 참고로 하여 본 발명의 한 실시예에 따른 스토리지 내의 데이터 처리 장치 및 그 제어 방법에 대하여 설명한다.An apparatus and method for controlling data in a storage according to an embodiment of the present invention will now be described with reference to the accompanying drawings.

먼저, 도 1을 참고로 하여 본 발명의 한 실시예에 따른 스토리지 내의 데이터 처리 장치에 대하여 상세하게 설명한다.First, a data processing apparatus in a storage according to an embodiment of the present invention will be described in detail with reference to FIG.

도 1에 도시한 본 발명의 한 실시예에 따른 스토리지 내의 데이터 처리 장치는 호스트(host)(100)와 호스트(100)와 연결되어 있는 스토리지(200)를 구비한다.The data processing apparatus in the storage according to an embodiment of the present invention shown in FIG. 1 includes a host 100 and a storage 200 connected to the host 100.

호스트(100)는 동작 제어부(110), 주 메모리(Main Memory)(120) 및 각종 입출력 인터페이스(도시하지 않음)가 구비되어 있는 시스템이다.The host 100 is a system having an operation control unit 110, a main memory 120, and various input / output interfaces (not shown).

이러한 호스트(100)는 동작 제어부(110)에 의해 주 메모리(120)와 입출력 인터페이스의 동작이 제어된다.In the host 100, the operations of the main memory 120 and the input / output interfaces are controlled by the operation control unit 110.

동작 제어부(110)는 특정 작업을 수행하는 응용 프로그램부(111), 그리고 응용 프로그램부(111)에서 전달되는 명령에 따라 대응되는 하드웨어 등의 동작이 이루어지도록 하는 운영체제(112)를 구비한다.The operation control unit 110 includes an application program unit 111 for performing a specific task and an operating system 112 for performing operations such as hardware corresponding to commands transmitted from the application program unit 111. [

주 메모리(120)는 컴퓨터 시스템인 데이터 처리 장치의 동작 시 접근하는 데이터를 임시적으로 저장하는 빠른 저장 공간이다. 이러한 주 메모리(120)는 스토리지(200)의 데이터를 캐슁(caching)하거나 버퍼링(buffering)하는 용도로 사용되며 통상 램(RAM, random access memory) 등과 같이 랜덤 액세스(random access)가 가능한 고속의 휘발성 또는 비휘발성 메모리일 수 있다.The main memory 120 is a fast storage area for temporarily storing data accessed when a data processing apparatus is a computer system. The main memory 120 is used for caching or buffering the data of the storage 200 and is a high speed volatile memory capable of random access such as a random access memory (RAM) Or non-volatile memory.

스토리지(200)는 호스트(100)의 명령에 따라 호스트(100)의 주 메모리(120)에 저장된 데이터를 전원이 차단되어도 영속적으로 저장하기 위한 저장 매체로서, 하드디스크, SSD 또는 플래시 메모리 등과 같은 비휘발성 저장 매체이다.The storage 200 is a storage medium for permanently storing data stored in the main memory 120 of the host 100 according to a command of the host 100 even when the power is turned off. The storage 200 is a nonvolatile memory such as a hard disk, an SSD, It is a volatile storage medium.

이러한 스토리지(200)는 스토리지(200)의 동작을 제어하는 장치 제어부(210)와 데이터를 영속적으로 저장하는 스토리지부(220)를 구비한다.The storage 200 includes a device control unit 210 for controlling the operation of the storage 200 and a storage unit 220 for storing the data permanently.

장치 제어부(210)는 호스트(100)로부터 전송되는 명령에 따라 스토리지부(220)의 데이터를 읽어온 후 호스트(100)로 전송하거나 호스트(100)로부터 전송되는 데이터를 스토리지부(220)의 해당 위치에 쓰기 동작한다.The device control unit 210 reads data from the storage unit 220 according to a command transmitted from the host 100 and transmits the data to the host 100 or transmits data transmitted from the host 100 to the storage unit 220 Write to the location.

스토리지부(220)는 장치 제어부(210)에 연결되어 있는 버퍼 메모리부(221)와 장치 제어부(210)에 연결되어 있는 비휘발성 저장부(222)를 구비한다.The storage unit 220 includes a buffer memory unit 221 connected to the device control unit 210 and a nonvolatile storage unit 222 connected to the device control unit 210.

버퍼 메모리부(221)는 호스트(100)의 동작 제어부(110)의 제어에 따라 전송되는 데이터를 임시 저장하고 있는 저장 공간이고, 비휘발성 저장부(222)는 데이터가 영구적으로 저장되는 물리적 저장 공간이다.The buffer memory unit 221 is a storage space for temporarily storing data to be transferred under the control of the operation control unit 110 of the host 100. The nonvolatile storage unit 222 is a physical storage space in which data is permanently stored to be.

이러한 구조를 갖는 데이터 처리 장치의 동작에 대하여 도 2를 참고로 하여 설명한다.The operation of the data processing apparatus having such a structure will be described with reference to FIG.

먼저, 동작 제어부(110)의 응용 프로그램부(111)는 사용자의 동작이나 정해진 동작 패턴에 따라 운영체제(112)로 쓰기 요청(write system call)과 함께 쓰기 동작이 행해질 데이터(즉, 쓰여질 데이터)와 파일 정보를 전송한다(S11). First, the application program unit 111 of the operation control unit 110 reads data (i.e., data to be written) to be written with a write system call to the operating system 112 according to a user operation or a predetermined operation pattern The file information is transmitted (S11).

응용 프로그램부(111)로부터 쓰기 요청이 전송되면, 운영체제(112)는 쓰기 요청과 함께 전송된 파일 정보와 데이터를 판독한다(S12).When the write request is transmitted from the application program unit 111, the operating system 112 reads the file information and the data transmitted together with the write request (S12).

이때, 응용 프로그램부(111)로부터 전송된 파일 정보는 전송된 데이터가 쓰여질 파일의 식별번호(ID) 즉, 파일 식별번호, 주 메모리(120)에 저장되어 있는 쓰여질 데이터의 위치, 전송된 데이터가 쓰여질 어드레스(address)의 시작 위치를 나타내는 오프셋(offset) 및 전송된 데이터가 쓰여질 어드레스의 크기를 나타내는 길이(length)를 포함한다.In this case, the file information transmitted from the application program unit 111 includes an identification number (ID) of a file to which the transmitted data is to be written, that is, a file identification number, a location of data to be written stored in the main memory 120, An offset indicating a start position of an address to be written, and a length indicating a size of an address to which the transmitted data is to be written.

따라서, 운영체제(112)는 전송된 파일 정보의 파일 식별번호를 이용하여 해당 파일을 판정하고 판정된 파일에 대한 메타 데이터(meta data)등을 이용하여 전송된 데이터가 쓰여질 스토리지(200) 내의 주소인 논리 블록 주소(LBA, Logical Block Address)를 판정한다(S13). Accordingly, the operating system 112 determines the corresponding file by using the file identification number of the transferred file information, and determines the address of the storage 200 to which the transmitted data is to be written using meta data for the determined file And determines a logical block address (LBA) (S13).

다음, 운영체제(112)는 쓰여질 데이터(즉, 전송된 데이터)와 논리 블록 주소를 스토리지(200)의 장치 제어부(210)로 쓰기 커맨드(write command)를 통해 전송한다(S14).Next, the operating system 112 transmits the data to be written (i.e., the transferred data) and the logical block address to the device control unit 210 of the storage 200 through a write command (S14).

이때, 쓰기 커맨드는 스토리지(200)와 호스트(100) 간에 정해진 인터페이스(interface)에서 정한 규약을 따라 생성되며, 이때, 인터페이스는 SATA[serial ATA(AT attachment)], SAS(single attachment station), SCSI(small computer system interface), 또는 NVMe[NVM(non-volatile memory) express], PCIe[PCI(peripheral component interconnect) express] 등의 표준 스토리지 인터페이스를 통칭한다. At this time, a write command is generated according to a protocol defined by an interface defined between the storage 200 and the host 100, and the interface may be a SATA (AT attachment), a SAS (single attachment station) , a small computer system interface (NVMe), a non-volatile memory (NVM) express, and a peripheral component interconnect (PCI) express.

스토리지(200)의 장치 제어부(210)는 쓰기 커맨드에 따라 전송된 쓰여질 데이터를 버퍼 메모리부(221)에 기록한다(S15). 이때, 버퍼 메모리부(221)의 기록 위치는 장치 제어부(210)에 의해 판정된 버퍼 메모리부(221)의 상태에 따라 정해진다.The device control unit 210 of the storage 200 writes the data to be written in the buffer memory unit 221 according to the write command (S15). At this time, the recording position of the buffer memory unit 221 is determined in accordance with the state of the buffer memory unit 221 determined by the apparatus control unit 210. [

이처럼, 운영체제(112)로부터 쓰기 커맨드가 전송되면, 장치 제어부(210)는 스토리지(200)의 쓰기 성능을 높이기 위하여 먼저 고속의 버퍼 메모리부(221)에 해당 데이터를 기록한다. In this way, when the write command is transmitted from the operating system 112, the device controller 210 first writes the data in the high-speed buffer memory 221 in order to improve the write performance of the storage 200.

이때, 버퍼 메모리부(221)에 기록된 데이터에 대한 주소 정보(Logical Block Address)는 장치 제어부(210)에서 관리하고 있다. 장치 제어부(210)의 제어에 따라 버퍼 메모리부(221)에 기록되어 있는 데이터는 장치 제어부(210)의 입출력의 성능을 최대화 시킬 수 있도록 제어하는 정책 등에 따라 비휘발성 저장부(222)에 기록될 수 있고, 비휘발성 저장부(222)에 기록되는 것은 임의의 시점에 이루어질 수 있다. At this time, the device controller 210 manages the address information (Logical Block Address) of the data recorded in the buffer memory unit 221. The data stored in the buffer memory unit 221 under the control of the device control unit 210 is written to the nonvolatile storage unit 222 according to a policy for controlling the performance of the device control unit 210 to maximize the input / And written to the nonvolatile storage 222 can be made at any time.

호스트(100)와 스토리지(200) 간의 쓰기 커맨드에 의해 스토리지(200)의 버퍼 메모리부(221)에는 해당 데이터에 대한 쓰기 동작이 행해져 스토리지(200)에 저장된다.A write operation is performed on the data in the buffer memory unit 221 of the storage 200 by the write command between the host 100 and the storage 200 and is stored in the storage 200. [

스토리지(200)의 버퍼 메모리(221)에 파일의 데이터가 저장되어 있는 상태에서, 정해진 시간이 경과하거나 응용 프로그램부(111)로부터 명시적인 동기화 요청이 발생하면(S16) 호스트(100)의 운영체제(112)는 영구적으로 저장될 데이터의 논리 블록 주소의 정보를 포함한 범위 플러쉬(Range FLUSH) 커맨드를 스토리지(200)의 장치 제어부(210)로 전송하게 된다. If a predetermined time has elapsed in the state where file data is stored in the buffer memory 221 of the storage 200 or if an explicit synchronization request is generated from the application program unit 111 at step S16, 112 transmits the Range FLUSH command including the information of the logical block address of the data to be permanently stored to the device control unit 210 of the storage 200.

응용 프로그램부(111)에 의한 동기화 요청은 fsync 또는 fdatasync와 같은 시스템 콜(system call)을 통해 발생하며 특정 파일에 속한 데이터를 즉시 영구적으로 저장하라는 의미로, 응용 프로그램부(111)는 저장 명령의 대상이 되는 파일에 대한 파일 식별번호를 운영체제(112)로 전송하게 된다.A synchronization request by the application program unit 111 is generated through a system call such as fsync or fdatasync and means that the data belonging to a specific file is immediately and permanently stored. And transmits the file identification number of the target file to the operating system 112.

운영체제(112)는 응용 프로그램부(111)로부터의 동기화 요청 발생하거나 정해진 시간에 따라 영구 저장 요청이 발생할 시(S16) 응용 프로그램부(111)로부터 전송된 파일 식별 번호에 대응하는 파일의 메타 데이터를 이용하여 영구 저장될 데이터들에 대한 논리 블록 주소를 검색한 후(S17), 검색된 논리 블록 주소와 함께 범위 플러쉬 커맨드(Range Flush)을 만들어 스토리지(200)의 장치 제어부(210)로 전송한다(S18, S19). The operating system 112 reads the metadata of the file corresponding to the file identification number transmitted from the application program unit 111 when a synchronization request from the application program unit 111 occurs or a persistent storage request is generated according to a predetermined time A range flush command is generated together with the searched logical block address and transmitted to the device controller 210 of the storage 200 (S18) , S19).

호스트(100)의 운영체제(112)로부터 범위 플러쉬 커맨드와 함께 동기화가 되어야 할 데이터의 논리 블록 주소가 전송되면(S19), 장치 제어부(210)는 버퍼 메모리부(221)에 임시 저장되어 있는 데이터들 중에서 전송된 논리 블록 주소에 해당하는 데이터를 판정하고(S20), 당 데이터를 비휘발성 저장부(222)의 해당 위치에 쓰기 동작을 실시하여 비휘발성 저장부(222)에 저장한다(S21).The device control unit 210 reads the data stored temporarily in the buffer memory unit 221 from the operating system 112 of the host 100 when the logical block address of the data to be synchronized with the range flush command is transmitted from the operating system 112 of the host 100 The data corresponding to the logical block address transmitted is determined (S20), and the corresponding data is written to the nonvolatile storage unit 222 at the corresponding position and stored in the nonvolatile storage unit 222 (S21).

운영체제(112)가 범위 플러쉬(Range Flush) 커맨드 전송 시 함께 보내는 비휘발성 저장부(222)에 저장되어야 할 데이터의 논리 블록 주소는 특정 파일에 속한 모든 데이터의 논리 블록 주소를 모두 보내는 방법, 특정 파일에서 변경된 데이터만을 판별하여 판별된 변경된 데이터만의 논리 블록 주소를 보내는 방법, 특정 파일과 무관하게 영구 저장될 변경된 데이터의 논리 블록 주소들을 지정하여 보내는 방법을 포함한다. The logical block address of the data to be stored in the nonvolatile storage unit 222 that the operating system 112 sends together with the range flush command includes a method of sending all logical block addresses of all data belonging to a specific file, A method of transmitting only a logical block address of only changed data that has been determined by discriminating only changed data in a specific file, and a method of designating and sending logical block addresses of changed data to be permanently stored regardless of a specific file.

운영체제(112)가 특정 파일에 속한 데이터 중 변경된 데이터를 판별하는 방법은 운영체제(112) 내에 유지하고 있는 스토리지(200)의 데이터에 대한 정보를 이용할 수 있으며, 이때 이용되는 스토리지(200)의 데이터에 대한 정보는 더티 비트(dirty bit) 등이 대표적인 예이지만, 이에 한정되지 않고 운영체제(112)가 변경된 데이터를 판별할 수 있는 다른 자료구조를 활용할 수 있다. 이 경우, 운영체제(112)는 더티 비트를 이용하여 비휘발성 저장부(222)에 영구 저장될 변경된 데이터의 논리 블록 주소를 판정하여 판정된 변경된 데이터에 대한 논리 블록 주소를 장치 제어부(210)로 전송하게 된다.A method for the operating system 112 to determine changed data among data belonging to a specific file may use information about data of the storage 200 held in the operating system 112 and may use the data of the storage 200 A dirty bit or the like is a typical example. However, the present invention is not limited to this, and the operating system 112 may utilize other data structures that can identify changed data. In this case, the operating system 112 determines the logical block address of the changed data to be permanently stored in the nonvolatile storage unit 222 using the dirty bit, and transmits the logical block address for the determined changed data to the device control unit 210 .

스토리지(200)의 장치 제어부(210)는 종래의 플러쉬 커맨드 대신 범위 플러쉬 커맨드가 전송되면 버퍼 메모리부(221)에 임시 저장되어 있는 모든 데이터를 비휘발성 저장부(222)에 저장하는 대신, 특정 논리 블록 주소에 해당하는 데이터만을 비휘발성 저장부(222)에 저장하게 된다.The device control unit 210 of the storage 200 may store all the data temporarily stored in the buffer memory unit 221 in the nonvolatile storage unit 222 when a range flush command is transmitted instead of the conventional flush command, Only the data corresponding to the block address is stored in the non-volatile storage unit 222.

예를 들어, 도 3과 같이, 범위 플러쉬 커맨드와 함께 '11'의 논리 블록 주소가 호스트(100)의 운영체제(112)로부터 전송되면, 장치 제어부(210)는 버퍼 메모리부(221)에서 '11'의 논리 블록 주소를 갖는 데이터(C')가 있다면 비휘발성 저장부(222)에서 '11'의 논리 블록 주소에 해당 데이터(C')를 기록하게 된다.For example, as shown in FIG. 3, when the logical block address of '11' is transmitted from the operating system 112 of the host 100 together with the range flush command, the device control unit 210 reads' The nonvolatile storage unit 222 records the data C 'at the logical block address of' 11 'if there is data C' having the logical block address of '11'.

이로 인해, 스토리지(200)의 비휘발성 저장부(222)에 즉시 동기화가 필요한 데이터만의 저장 동작이 이루어져 버퍼링 및 스케줄링의 효율성이 높아져 쓰기 동작을 실시해야 되는 데이터의 양이 감소하고 응답 시간이 줄어들어 처리 효율이 향상된다.Accordingly, only the data required to be immediately synchronized is stored in the non-volatile storage unit 222 of the storage 200, thereby increasing the efficiency of buffering and scheduling, thereby reducing the amount of data to be subjected to the write operation and reducing the response time The processing efficiency is improved.

이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments, It belongs to the scope of right.

100: 호스트 110: 동작 제어부
120: 주 메모리 111: 응용 프로그램부
112: 운영체제 200: 스토리지
210: 장치 제어부 220: 스토리지부
221: 버퍼 메모리부 222: 비휘발성 저장부
100: host 110: operation control unit
120: main memory 111: application program unit
112: Operating system 200: Storage
210: device control unit 220:
221: buffer memory unit 222: nonvolatile storage unit

Claims (6)

응용 프로그램부의 쓰기 요청 발생 시 쓰여질 데이터의 논리 블록 주소를 판정하여 쓰기 커맨드와 함께 판정된 논리 블록 주소 및 쓰여질 데이터를 전송하고, 동기화 요청이 발생하면, 전송된 파일 식별 번호를 이용하여 영구 저장될 데이터의 논리 블록 주소를 검색하여 검색된 논리 블록 주소를 구비한 범위 플러쉬 커맨드를 생성해 전송하는 운영체제, 그리고
상기 운영체제로부터 쓰기 커맨드가 전송되면 상기 쓰기 커맨드와 함께 전송된 쓰여질 데이터를 버퍼 메모리부에 저장하고, 상기 범위 플러쉬 커맨드가 전송되면 상기 버퍼 메모리부의 데이터 중에서 상기 범위 플러쉬 커맨드와 함께 전송된 상기 논리 블록 주소에 해당하는 데이터를 비휘발성 저장부의 상기 논리 블록 주소의 위치에 기록하는 장치 제어부를 포함하는 스토리지 내의 데이터 처리 장치.
The logical block address of the data to be written when the write request of the application program unit is generated is determined, and the logical block address and the data to be written together with the write command are transmitted together with the write command. When the synchronization request is generated, And generates and transmits a range flush command having the retrieved logical block address, and
Wherein when a write command is transmitted from the operating system, data to be written transmitted together with the write command is stored in a buffer memory unit, and when the range flush command is transmitted, the logical block address To a location of the logical block address of the non-volatile storage unit.
제1항에서,
상기 영구 저장될 데이터의 논리 블록 주소는 특정 파일에 속한 모든 데이터의 논리 블록 주소, 특정 파일에서 변경된 데이터만의 논리 블록 주소, 또는 특정 파일과 무관하게 영구 저장될 변경된 데이터의 논리 블록 주소인 스토리지 내의 데이터 처리 장치.
The method of claim 1,
The logical block address of the data to be permanently stored may be a logical block address of all data belonging to a specific file, a logical block address of only changed data in a specific file, or a logical block address of the changed data to be permanently stored irrespective of a specific file Data processing device.
제2항에서,
상기 운영체제는 더티 비트(dirty bit)를 이용하여 변경된 데이터를 판정하는 스토리지 내의 데이터 처리 장치.
3. The method of claim 2,
Wherein the operating system determines the changed data using a dirty bit.
응용 프로그램부는 쓰기 요청과 함께 쓰여질 데이터, 파일 식별 정보를 운영체제로 전송하는 단계,
상기 운영체제는 상기 쓰기 요청이 전송되면 파일 식별 정보를 이용하여 쓰여질 데이터의 논리 블록 주소를 판정한 후 쓰기 커맨드와 함께 쓰여질 데이터와 판정된 논리 블록 주소를 장치 제어부로 전송하는 단계,
상기 장치 제어부는 전송된 쓰여질 데이터를 버퍼 메모리부에 기록하는 단계,
상기 운영체제는 동기화 요청이 발생하거나 정해진 시간에 따라 영구 저장 요청이 발생하면, 응용 프로그램부로부터 전송된 파일 식별 정보를 이용하여 영구 저장될 데이터에 대한 논리 블록 주소를 검색하는 단계,
상기 운영체제는 검색된 영구 저장될 데이터에 대한 논리 블록 주소와 함께 범위 플러쉬 커맨드를 생성하여 상기 장치 제어부로 전송하는 단계, 그리고
상기 장치 제어부는 상기 버퍼 메모리부에 임시 저장되어 있는 데이터 중에서 영구 저장될 데이터에 대한 논리 블록 주소에 해당하는 데이터를 비휘발성 제어부의 논리 블록 주소에 영구적으로 저장하는 단계를 포함하는 스토리지 내의 데이터 처리 장치의 제어 방법.
The application program part transmits the data to be written together with the write request, the file identification information to the operating system,
Wherein the operating system determines a logical block address of data to be written using the file identification information when the write request is transmitted, and transmits data to be written together with a write command and a determined logical block address to a device controller,
Wherein the apparatus control unit records the transmitted data to be written in the buffer memory unit,
Wherein the operating system searches for a logical block address for data to be permanently stored using file identification information transmitted from an application program unit when a synchronization request is generated or a persistent storage request is generated according to a predetermined time,
The operating system generates a range flush command together with the logical block address of the retrieved permanently stored data and transmits the command to the device controller;
Wherein the apparatus control unit permanently stores data corresponding to a logical block address of data to be permanently stored in the buffer memory unit in the logical block address of the nonvolatile controller, / RTI >
제4항에서,
상기 영구 저장될 데이터의 논리 블록 주소는 특정 파일에 속한 모든 데이터의 논리 블록 주소, 특정 파일에서 변경된 데이터만의 논리 블록 주소, 또는 특정 파일과 무관하게 영구 저장될 변경된 데이터의 논리 블록 주소인 스토리지 내의 데이터 처리 장치의 제어 방법.
5. The method of claim 4,
The logical block address of the data to be permanently stored may be a logical block address of all data belonging to a specific file, a logical block address of only changed data in a specific file, or a logical block address of the changed data to be permanently stored irrespective of a specific file A method of controlling a data processing apparatus.
제5항에서,
상기 운영체제는 더티 비트(dirty bit)를 이용하여 변경된 데이터를 판정하는 스토리지 내의 데이터 처리 장치의 제어 방법.
The method of claim 5,
Wherein the operating system determines changed data by using a dirty bit.
KR1020160099293A 2016-08-04 2016-08-04 The controlling method of the data processing apparatus in storage KR101831126B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160099293A KR101831126B1 (en) 2016-08-04 2016-08-04 The controlling method of the data processing apparatus in storage

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160099293A KR101831126B1 (en) 2016-08-04 2016-08-04 The controlling method of the data processing apparatus in storage

Publications (2)

Publication Number Publication Date
KR20180016660A true KR20180016660A (en) 2018-02-19
KR101831126B1 KR101831126B1 (en) 2018-02-23

Family

ID=61387179

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160099293A KR101831126B1 (en) 2016-08-04 2016-08-04 The controlling method of the data processing apparatus in storage

Country Status (1)

Country Link
KR (1) KR101831126B1 (en)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104937564B (en) * 2013-03-28 2017-09-12 慧与发展有限责任合伙企业 The data flushing of group form

Also Published As

Publication number Publication date
KR101831126B1 (en) 2018-02-23

Similar Documents

Publication Publication Date Title
KR101790913B1 (en) Speculative prefetching of data stored in flash memory
EP3673377B1 (en) Logical to physical mapping
US10126981B1 (en) Tiered storage using storage class memory
JP5349897B2 (en) Storage system
KR20170088743A (en) Dynamic garbage collection p/e policies for redundant storage blocks and distributed software stacks
US20110231598A1 (en) Memory system and controller
US20100185806A1 (en) Caching systems and methods using a solid state disk
US11630767B2 (en) Garbage collection—automatic data placement
US9104578B2 (en) Defining address ranges used to cache speculative read data
US9396141B2 (en) Memory system and information processing device by which data is written and read in response to commands from a host
US11200178B2 (en) Apparatus and method for transmitting map data in memory system
KR20130112210A (en) Page replace method and memory system using the same
US11188256B2 (en) Enhanced read-ahead capability for storage devices
US10037281B2 (en) Method for disk defrag handling in solid state drive caching environment
KR20130024271A (en) Storage system including hdd and nvm
WO2015130315A1 (en) Delay destage of data based on sync command
US9927988B2 (en) Data move engine to move a block of data
JP2006099802A (en) Storage controller, and control method for cache memory
CN110515861B (en) Memory device for processing flash command and method thereof
WO2015170702A1 (en) Storage device, information processing system, storage control method and program
KR101831126B1 (en) The controlling method of the data processing apparatus in storage
JP7170093B2 (en) Improved read-ahead capabilities for storage devices
CN113254363A (en) Non-volatile memory controller with partial logical to physical address translation table
US11941246B2 (en) Memory system, data processing system including the same, and operating method thereof
JP6066831B2 (en) Computer system and cache control method

Legal Events

Date Code Title Description
AMND Amendment
AMND Amendment
X701 Decision to grant (after re-examination)