KR20200053052A - 스토리지 장치 및 스토리지 장치로 전송되는 데이터를 관리하는 전자 장치 - Google Patents

스토리지 장치 및 스토리지 장치로 전송되는 데이터를 관리하는 전자 장치 Download PDF

Info

Publication number
KR20200053052A
KR20200053052A KR1020180135853A KR20180135853A KR20200053052A KR 20200053052 A KR20200053052 A KR 20200053052A KR 1020180135853 A KR1020180135853 A KR 1020180135853A KR 20180135853 A KR20180135853 A KR 20180135853A KR 20200053052 A KR20200053052 A KR 20200053052A
Authority
KR
South Korea
Prior art keywords
data
storage device
page
size
memory
Prior art date
Application number
KR1020180135853A
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 KR1020180135853A priority Critical patent/KR20200053052A/ko
Priority to US16/456,988 priority patent/US20200142623A1/en
Priority to CN201911010771.8A priority patent/CN111158582A/zh
Publication of KR20200053052A publication Critical patent/KR20200053052A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/122File system administration, e.g. details of archiving or snapshots using management policies
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • 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
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 실시 예에 따른 전자 장치는 메모리 및 프로세서를 포함한다. 메모리는 스토리지 장치의 데이터 영역의 제 1 위치와 관련되도록 생성된 제 1 부분 데이터 및 데이터 영역의 제 2 위치와 관련되도록 생성된 제 2 부분 데이터를 저장한다. 프로세서는 제 1 페이지에 포함되는 제 1 부분 데이터의 크기가 기준 크기보다 작고 제 1 페이지와 상이한 제 2 페이지에 포함되는 제 2 부분 데이터의 크기가 기준 크기보다 작은 경우 제 1 부분 데이터 및 제 2 부분 데이터를 포함하는 하나 이상의 데이터 블록을 출력하고, 제 1 부분 데이터와 관련하여 제 1 위치에 대한 정보를 포함하는 제 1 메타데이터 및 제 2 부분 데이터와 관련하여 제 2 위치에 대한 정보를 포함하는 제 2 메타데이터를 출력한다. 하나 이상의 데이터 블록의 크기는 제 1 페이지의 크기 및 제 2 페이지의 크기의 합보다 작다.

Description

스토리지 장치 및 스토리지 장치로 전송되는 데이터를 관리하는 전자 장치{STORAGE DEVICE AND ELECTRONIC DEVICE MANAGING DATA TRANSMITTED TO STORAGE DEVICE}
본 발명은 스토리지 장치 및 전자 장치에 관한 것으로, 좀 더 상세하게는 스토리지 장치 및 스토리지 장치로 전송되는 데이터를 관리하는 전자 장치에 관한 것이다.
반도체 기술이 발전함에 따라 전자 장치의 기능이 다양해지고 있다. 스토리지 장치는 전자 장치가 기능을 수행하기 위해 필요한 동작들을 제공한다. 구체적으로, 스토리지 장치는 전자 장치가 기능을 수행하기 위해 필요한 데이터를 제공하거나, 전자 장치에서 처리된 데이터를 저장한다.
전자 장치는 호스트 장치를 이용하여 스토리지 장치에 접근한다. 호스트 장치는 CPU(Central Processing Unit), AP(Application Processor), GPU(Graphic Processing Unit)와 같은 프로세서일 수 있다. 호스트 장치는 전자 장치에서 처리된 데이터가 스토리지 장치에 저장되도록 처리된 데이터를 스토리지 장치로 전송한다.
스토리지 장치는 일정 단위로 데이터를 수신한다. 따라서, 호스트 장치는 일정 단위로 데이터를 출력한다. 예로서, 호스트 장치는 블록(block) 단위로 데이터를 출력한다. 따라서, 호스트 장치로부터 출력되는 데이터에 무의미한 데이터가 포함되는 경우가 발생한다. 또한, 호스트 장치로부터 스토리지 장치로 전송되는 데이터의 양이 불필요하게 증가하는 경우가 발생한다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명의 목적은 스토리지 장치로 전송되는 데이터의 양을 감소시키는 전자 장치를 제공하는 데 있다.
본 발명의 실시 예에 따른 전자 장치는 메모리 및 프로세서를 포함할 수 있다. 메모리는 스토리지 장치의 데이터 영역의 제 1 위치와 관련되도록 생성된 제 1 부분 데이터 및 데이터 영역의 제 2 위치와 관련되도록 생성된 제 2 부분 데이터를 저장할 수 있다. 프로세서는 제 1 페이지에 포함되는 제 1 부분 데이터의 크기가 기준 크기보다 작고 제 1 페이지와 상이한 제 2 페이지에 포함되는 제 2 부분 데이터의 크기가 기준 크기보다 작은 경우 제 1 부분 데이터 및 제 2 부분 데이터를 포함하는 하나 이상의 데이터 블록을 출력하고, 제 1 부분 데이터와 관련하여 제 1 위치에 대한 정보를 포함하는 제 1 메타데이터 및 제 2 부분 데이터와 관련하여 제 2 위치에 대한 정보를 포함하는 제 2 메타데이터를 출력할 수 있다. 하나 이상의 데이터 블록의 크기는 제 1 페이지의 크기 및 제 2 페이지의 크기의 합보다 작을 수 있다.
본 발명의 다른 실시 예에 따른 스토리지 장치는 제 1 메모리 및 제 2 메모리를 포함할 수 있다. 제 1 메모리는 페이지들에 각각 포함된 부분 데이터가 병합되어 생성된 하나 이상의 데이터 블록을 저장하고, 부분 데이터 중 제 1 위치와 관련되도록 생성된 제 1 부분 데이터에 대한 제 1 메타데이터를 저장할 수 있다. 제 2 메모리는 제 1 메타데이터를 이용하여 제 1 부분 데이터를 제 1 위치와 관련되는 제 2 위치에 저장할 수 있다. 하나 이상의 데이터 블록의 크기는 각각 페이지들의 크기보다 작을 수 있다.
본 발명의 다른 실시 예에 따른 스토리지 장치는 제 1 메모리 및 제 2 메모리를 포함할 수 있다. 제 1 메모리는 페이지들에 각각 포함된 부분 데이터가 병합되어 생성된 하나 이상의 데이터 블록을 수신하여 부분 데이터를 저장할 수 있다. 제 2 메모리는 제 1 메모리로 제 1 메모리의 제 1 위치에 대한 정보 및 제 2 위치에 대한 정보를 포함하는 신호가 수신되는 경우, 신호에 기초하여 부분 데이터 중 제 1 위치에 저장된 제 1 부분 데이터를 제 2 위치에 저장할 수 있다. 하나 이상의 데이터 블록의 크기는 페이지들의 크기보다 작을 수 있다. 부분 데이터의 크기는 각각 페이지들의 크기보다 작을 수 있다.
본 발명의 실시 예에 따르면, 전자 장치는 스토리지 장치로 전송되는 데이터의 양을 감소시킬 수 있다. 또한, 전자 장치는 스토리지 장치에서 쓰기 동작이 수행되는 횟수를 감소시킬 수 있다. 따라서, 스토리지 장치의 성능이 향상되고, 스토리지 장치의 수명이 길어질 수 있다.
도 1은 본 발명의 실시 예들에 따른 전자 장치의 예시적인 구성을 보여주는 블록도이다.
도 2는 본 발명의 실시 예들에 따른 전자 장치의 예시적인 구성을 보여주는 블록도이다.
도 3은 도 2에 도시된 프로세서가 데이터를 관리하는 방법을 설명하기 위한 개념도이다.
도 4는 도 2에 도시된 프로세서가 데이터를 관리하는 방법을 설명하기 위한 개념도이다.
도 5는 도 2에 도시된 프로세서가 데이터를 관리하는 방법을 설명하기 위한 개념도이다.
도 6은 도 2에 도시된 프로세서가 데이터를 관리하는 방법을 설명하기 위한 개념도이다.
도 7은 도 2에 도시된 프로세서가 데이터를 관리하는 방법을 설명하기 위한 개념도이다.
도 8은 도 2에 도시된 스토리지 장치에서 데이터를 저장하는 방법을 설명하기 위한 개념도이다.
도 9는 도 2에 도시된 스토리지 장치가 데이터 영역에 파일 데이터를 저장하는 방법을 설명하기 위한 개념도이다.
도 10은 도 2에 도시된 스토리지 장치가 데이터 영역에 파일 데이터를 저장하는 방법을 설명하기 위한 흐름도이다.
도 11은 도 2에 도시된 스토리지 장치가 파일 데이터를 읽는 방법을 설명하기 위한 개념도이다.
도 12는 본 발명의 실시 예들에 따른 전자 장치의 예시적인 구성을 보여주는 블록도이다.
도 13은 도 12에 도시된 스토리지 장치가 데이터 영역에 파일 데이터를 저장하는 방법을 설명하기 위한 개념도이다.
도 14는 도 12에 도시된 스토리지 장치가 데이터 영역에 파일 데이터를 저장하는 방법을 설명하기 위한 개념도이다.
도 15는 도 12에 도시된 스토리지 장치가 데이터 영역에 파일 데이터를 저장하는 방법을 설명하기 위한 흐름도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예들에 따른 전자 장치의 예시적인 구성을 보여주는 블록도이다.
전자 장치(1000)는 스마트 폰(smartphone), 태블릿 PC(tablet personal computer), 랩탑 PC(laptop personal computer), 전자 책 리더기, MP3 플레이어, 웨어러블(Wearable) 장치 등과 같은 다양한 유형의 전자 장치들 중 하나로 구현될 수 있다.
전자 장치(1000)는 다양한 전자 회로를 포함할 수 있다. 예로서, 전자 장치(1000)의 전자 회로들은 이미지 처리 블록(1100), 통신 블록(1200), 오디오 처리 블록(1300), 디스플레이 장치(1400), 메모리(200), 스토리지 장치(300), 유저 인터페이스(1600), 및 메인 프로세서(100)를 포함할 수 있다.
이미지 처리 블록(1100)은 렌즈(1110)를 통해 빛을 수신할 수 있다. 이미지 처리 블록(1100)에 포함되는 이미지 센서(1120) 및 이미지 신호 처리기(1130)는 수신되는 빛에 기초하여, 외부 객체와 관련되는 이미지 데이터를 생성할 수 있다.
통신 블록(1200)은 안테나(1210)를 통해 외부 장치/시스템과 신호를 교환할 수 있다. 통신 블록(1200)의 송수신기(1220) 및 MODEM(Modulator/Demodulator, 1230)은 다양한 무선 통신 규약에 따라, 외부 장치/시스템과 교환되는 신호를 처리할 수 있다.
오디오 처리 블록(1300)은 오디오 신호 처리기(1310)를 이용하여 소리 정보를 처리할 수 있고, 이로써 오디오를 재생하고 출력할 수 있다. 오디오 처리 블록(1300)은 마이크(1320)를 통해 오디오 입력을 수신할 수 있다. 오디오 처리 블록(1300)은 스피커(1330)를 통해, 재생되는 오디오를 출력할 수 있다.
디스플레이 장치(1400)는 외부 장치(예컨대, 메인 프로세서(100))로부터 데이터를 수신할 수 있다. 디스플레이 드라이버 회로(1420)는 디스플레이 장치(1400)로 수신된 데이터에 기초하여 디스플레이 패널(1410)에 영상을 표시할 수 있다.
메모리(200)는 전자 장치(1000)의 동작에 이용되는 데이터를 저장할 수 있다. 예로서, 메모리(200)는 메인 프로세서(100)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 예로서, 메모리(200)는 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리, 및/또는 PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
스토리지 장치(300)는 물리적인 스토리지 장치일 수 있다. 이 경우, 스토리지 장치(300)는 하나 이상의 불휘발성 메모리들, 메모리 컨트롤러, 및 버퍼를 포함할 수 있다. 불휘발성 메모리는 전력 공급과 무관하게 데이터를 저장할 수 있다. 예로서, 불휘발성 메모리는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등 중 적어도 하나를 포함할 수 있다. 예로서, 불휘발성 메모리는 SD(Secure Digital) 카드와 같은 착탈식 메모리, 및/또는 eMMC(Embedded Multimedia Card)와 같은 내장(Embedded) 메모리를 포함할 수 있다.
또한, 스토리지 장치(300)는 운영체제 내에서 가상의 스토리지 드라이버에 의해 운영되는 가상의 스토리지 장치일 수 있다. 이 경우, 스토리지 장치(300)는 물리적인 방법이나 실질적인 저장 장치에 구애 받지 않고 데이터를 저장할 수 있다.
유저 인터페이스(1600)는 사용자와 전자 장치(1000) 사이의 통신을 중재할 수 있다. 예로서, 유저 인터페이스(1600)는 키패드, 버튼, 터치 스크린, 터치 패드, 자이로스코프 센서, 진동 센서, 가속 센서 등과 같은 입력 인터페이스를 포함할 수 있다. 예로서, 유저 인터페이스(1600)는 모터, LED 램프 등과 같은 출력 인터페이스를 포함할 수 있다.
메인 프로세서(100)는 전자 장치(1000)의 구성 요소들의 전반적인 동작들을 제어할 수 있다. 메인 프로세서(100)는 전자 장치(1000)를 동작시키기 위해 다양한 연산을 처리할 수 있다. 예로서, 메인 프로세서(100)는 범용(General-purpose) 프로세서, 전용(Special-purpose) 프로세서, 어플리케이션(Application) 프로세서, 마이크로프로세서 등과 같이, 하나 이상의 프로세서 코어를 포함하는 연산 처리 장치/회로로 구현될 수 있다.
메인 프로세서(100)는 메모리(200) 및/또는 스토리지 장치(300)에 저장된 데이터를 처리할 수 있다. 메인 프로세서(100)는 처리된 데이터가 메모리(200) 및/또는 스토리지 장치(300)에 저장되도록 메모리(200) 및/또는 스토리지 장치(300)를 제어할 수 있다. 메인 프로세서(100)는 스토리지 장치(300)로 전송되는 데이터의 양을 감소시키기 위해 데이터를 관리할 수 있다. 메인 프로세서(100)가 데이터를 관리하는 방법은 도 3 내지 도 7을 참조하여 자세하게 설명될 것이다.
다만, 도 1에 나타낸 예시적인 구성 요소들은 더 나은 이해를 가능하게 하기 위해 제공되고, 본 발명을 한정하도록 의도되지는 않는다. 전자 장치(1000)는 도 1에 나타낸 구성 요소들 중 하나 이상을 포함하지 않을 수 있고, 추가로 또는 대안적으로 도 1에 나타내지 않은 적어도 하나의 구성 요소를 더 포함할 수 있다.
도 2는 본 발명의 실시 예들에 따른 전자 장치의 예시적인 구성을 보여주는 블록도이다.
전자 장치(1000a)는 프로세서(100a), 메모리(200a), 및 스토리지 장치(300a)를 포함할 수 있다.
프로세서(100a)는 도 1에 도시된 메인 프로세서(100)에 대응할 수 있다. 프로세서(100a)는 CPU(Central Processing Unit), AP(Application Processor), GPU(Graphic Processing Unit)와 같은 프로세서일 수 있다.
프로세서(100a)는 어플리케이션(110), 운영 체제(120) 및 파일 시스템(130)을 구동할 수 있다.
어플리케이션(110)은 운영 체제(120)에서 실행되는 프로그램일 수 있다.
운영 체제(120)는 어플리케이션(110)을 실행하기 위해 메모리(200a) 및/또는 스토리지 장치(300a)에 파일 데이터를 기록할 수 있다. 또한, 운영 체제(120)는 어플리케이션(110)을 실행하기 위해 메모리(200a) 및/또는 스토리지 장치(300a)에 기록된 파일 데이터를 읽을 수 있다. 이하 설명들에서, 파일 데이터는 프로세서(100a)로부터 메모리(200a) 및/또는 스토리지 장치(300a)로 전송되는 모든 데이터를 의미할 수 있다. 또한, 파일 데이터는 메모리(200a) 및/또는 스토리지 장치(300a)로부터 독출되는 모든 데이터를 의미할 수 있다.
운영 체제(120)는 파일 시스템(130)과 관련된 시스템 호출(system call)을 처리하는 소프트웨어 계층을 포함할 수 있다. 운영 체제(120)는 서로 다른 파일 시스템들 사이에서 범용 인터페이스(general-purpose interface)를 제공할 수 있다. 운영 체제(120)는 파일 시스템(130)을 이용하여 메모리(200a) 및/또는 스토리지 장치(300a)에 파일 데이터를 기록할 수 있다. 또한, 운영 체제(120)는 파일 시스템(130)을 이용하여 메모리(200a) 및/또는 스토리지 장치(300a)에 기록된 파일 데이터를 읽을 수 있다.
파일 시스템(130)은 메모리(200a) 및/또는 스토리지 장치(300a)에 파일 데이터를 기록하고, 기록된 파일 데이터를 체계적으로 관리하기 위한 시스템일 수 있다. 파일 시스템(130)은 FAT, NTFS, UFS, EXT 2, EXT 3, EXT4, LFS 등과 같은 시스템일 수 있다. 파일 시스템(130)은 파일의 속성과 관련된 메타데이터를 획득하여 저장할 수 있다. 구체적으로, 메타데이터는 파일 데이터의 크기 및 파일 데이터가 스토리지 장치(300a)의 어느 곳에 저장되는지 등 파일 데이터의 속성에 관한 것을 나타낼 수 있다.
프로세서(100a)는 가상 주소 공간을 할당받을 수 있다. 프로세서(100a)는 가상 주소 공간을 일정한 크기의 페이지들로 분할 수 있다. 예로서, 페이지의 크기는 4KB일 수 있다.
프로세서(100a)는 파일 시스템(130)을 이용하여 파일을 페이지 단위로 관리할 수 있다. 프로세서(100a)는 파일 데이터를 페이지 단위로 분할하여 페이지들에 저장할 수 있다. 프로세서(100a)는 프로세서(100a) 내에서 파일 데이터를 페이지 단위로 이동시키거나 처리할 수 있다.
프로세서(100a)는 파일 데이터를 메모리(200a) 및/또는 스토리지 장치(300a)로 블록 단위로 출력할 수 있다. 또한, 프로세서(100a)는 파일 데이터를 메모리(200a) 및/또는 스토리지 장치(300a)로부터 블록 단위로 수신할 수 있다. 프로세서(100a)는 파일 시스템(130)을 이용하여 페이지를 블록들로 분할할 수 있다. 블록의 크기는 페이지의 크기 이하일 수 있다. 예로서, 페이지의 크기가 4KB인 경우, 블록의 크기는 4KB 또는 512Byte일 수 있다. 이하 설명의 편의를 위해, 블록의 크기는 페이지의 크기의 절반인 것으로 가정된다. 이 경우, 프로세서(100a)는 하나의 페이지를 두 개의 블록으로 분할할 수 있다.
프로세서(100a)는 파일 데이터 뿐만 아니라 메타데이터를 메모리(200a) 및/또는 스토리지 장치(300a)로 출력할 수 있다. 파일 데이터를 관리하는 방법과 유사하게, 프로세서(100a)는 프로세서(100a)내에서 메타데이터를 페이지 단위로 관리할 수 있다. 또한, 프로세서(100a)는 메타데이터를 블록 단위로 출력할 수 있다.
본 발명의 실시 예에 따르면, 프로세서(100a)는 데이터를 관리할 수 있다. 이하 설명들에서, 프로세서(100a)가 관리하는 데이터는 파일 데이터 및 메타데이터를 의미한다. 프로세서(100a)는 스토리지 장치(300a)로 출력되는 데이터의 양이 감소되도록 데이터를 관리할 수 있다. 프로세서(100a)가 데이터를 관리하는 방법은 도 3 내지 도 7을 참조하여 자세하게 설명될 것이다.
메모리(200a)는 도 1에 도시된 메모리(200)에 대응할 수 있다. 예로서, 메모리(200a)의 일부 영역은 주 메모리(main memory)로 할당될 수 있다. 이하, 메모리(200a)는 DRAM인 것으로 설명될 수 있으나, 본 발명은 이에 한정되지 않는다.
메모리(200a)는 데이터를 저장할 수 있다. 데이터는 프로세서(100a)에 의해 처리된 데이터 또는 처리될 데이터일 수 있다. 예로서, 메모리(200a)는 파일 시스템(130)을 구동하기 위해 필요한 데이터를 저장할 수 있다.
스토리지 장치(300a)는 도 1에 도시된 스토리지 장치(300)에 대응할 수 있다. 스토리지 장치(300a)는 메모리(310) 및 메모리(320)를 포함할 수 있다. 메모리(310)는 SRAM, DRAM, SDRAM 등과 같은 휘발성 메모리일 수 있다. 메모리(320)는 PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리일 수 있다.
스토리지 장치(300a)는 데이터를 저장할 수 있다. 데이터는 프로세서(100a)에 의해 처리된 데이터 또는 처리될 데이터일 수 있다. 예로서, 데이터는 파일 데이터 및 메타데이터일 수 있다.
스토리지 장치(300a)는 프로세서(100a)로부터 파일 데이터 및 메타데이터를 블록 단위로 수신할 수 있다. 스토리지 장치(300a)는 파일 데이터 및 메타데이터가 수신되는 경우 파일 데이터 및 메타데이터를 메모리(310)에 저장할 수 있다. 메모리(310)는 프로세서(100a)에서 이용되는 가상 주소를 메모리(320)에서 이용되는 실제 주소로 맵핑하는데 이용되는 맵핑 테이블을 포함할 수 있다. 가상 주소를 실제 주소로 맵팽하는 것은 맵핑 테이블에 저장된 맵핑 정보를 이용하여 가상 주소를 실제 주소로 대응시키는 것을 의미한다.
스토리지 장치(300a)는 주기적으로 또는 특정 조건이 만족되는 경우 메모리(310)에 저장된 파일 데이터를 메모리(320)에 저장할 수 있다. 스토리지 장치(300a)는 맵핑 테이블 및 메타데이터를 이용하여 메모리(320)의 실제 주소에 파일 데이터를 저장할 수 있다.
도 3은 도 2에 도시된 프로세서가 데이터를 관리하는 방법을 설명하기 위한 개념도이다. 본 발명의 이해를 돕기 위해 도 2가 함께 참조된다.
도 1을 참조하여 설명된 것처럼, 프로세서(100a)는 페이지 단위로 데이터를 관리할 수 있다.
프로세서(100a)는 페이지에 저장된 데이터의 크기가 기준 크기보다 작은 경우 페이지에 힌트 데이터를 기록할 수 있다. 기준 크기는 페이지의 크기보다 작거나 같을 수 있다. 예로서, 기준 크기는 페이지의 크기일 수 있다. 다른 예로서, 기준 크기는 페이지의 크기의 절반일 수 있다. 즉, 기준 크기는 블록의 크기일 수 있다. 이하 설명들에서, 기준 크기는 페이지의 크기인 것으로 설명되지만, 본 발명은 이에 한정되지 않는다. 또한, 프로세서(100a)는 힌트 데이터를 별도의 페이지에 기록할 수 있다.
운영 체제(120)는 함수(예로서, write syscall)를 통해 파일 및/또는 파일 데이터에 대한 정보를 파일 시스템(130)으로 입력할 수 있다. 파일 시스템(130)은 운영 체제(120)로부터 함수가 입력되는 경우 함수에 기초하여 파일 데이터를 페이지에 기록할 수 있다.
특정 함수는 파일 설명자(file descriptor), 데이터의 주소, 카운트(count) 등에 대한 정보를 포함할 수 있다. 파일 설명자(file descriptor)는 파일 데이터와 관련된 파일을 나타낼 수 있다. 데이터의 주소는 파일 데이터가 저장될 페이지의 주소를 나타낼 수 있다. 데이터의 주소는 가상 주소로 표현될 수 있다. 카운트(count)는 파일 데이터의 크기를 나타낼 수 있다.
구체적으로 제 1 페이지를 참조하면, 파일 시스템(130)은 write syscall 함수를 입력받을 수 있다. 파일 시스템(130)은 함수에 기초하여 제 1 페이지에 32bytes만큼의 파일 데이터(141)를 기록할 수 있다. 이 경우, 제 1 페이지에 기록된 파일 데이터(141)의 크기는 제 1 페이지의 크기보다 작을 수 있다. 따라서, 파일 시스템(130)은 제 1 페이지에 힌트 데이터(151)를 기록할 수 있다. 즉, 힌트 데이터(151)는 제 1 페이지에 기록된 파일 데이터(141)가 제 1 페이지의 크기보다 작음을 나타낼 수 있다.
힌트 데이터(151)는 파일 데이터(141)의 오프셋(offset) 및 카운트(count)를 나타낼 수 있다. 오프셋(offset)은 제 1 페이지의 시작 주소를 기준으로 파일 데이터(141)가 기록되기 시작한 주소를 나타낼 수 있다. 카운트(count)는 제 1 페이지에서 기록된 파일 데이터(141)의 크기를 나타낼 수 있다. 예로서, 파일 데이터(141)가 제 1 페이지의 시작 주소로부터 32bytes만큼 기록된 경우, 힌트 데이터(151)의 오프셋 은 '0', 카운트 값은 '32'일 수 있다.
제 2 페이지를 참조하면, 파일 시스템(130)은 write syscall 함수 및 lseek syscall 함수를 입력받을 수 있다. 파일 시스템(130)은 함수에 기초하여 제 2 페이지의 시작 주소로부터 64bytes만큼 떨어진 주소에서부터 32bytes만큼의 파일 데이터(142)를 기록할 수 있다. 파일 시스템(130)은 파일 데이터(142)를 기록한 이후에 힌트 데이터(152)를 기록할 수 있다. 예로서, 힌트 데이터(152)는 오프셋 값은 '64', 카운트 값은 '32'일 수 있다.
또한, 파일 시스템(130)은 파일 데이터(142)를 기록한 이후에, 함수에 기초하여 파일 데이터(143)를 기록할 수 있다. 파일 데이터(143)는 파일 데이터(142)의 기록이 완료된 주소로부터 3100bytes만큼 떨어진 주소에서부터 32bytes만큼 기록될 수 있다. 파일 시스템(130)은 파일 데이터(143)를 기록한 이후에 힌트 데이터(153)를 기록할 수 있다. 예로서, 힌트 데이터(152)는 오프셋 값은 '3196', 카운트 값은 '32'일 수 있다.
즉, 파일 시스템(130)은 운영 체제(120)로부터 복수의 쓰기 요청이 있는 경우, 제 2 페이지에 두 세트의 힌트 데이터(152, 153)를 기록할 수 있다. 다만, 본 발명은 이에 한정되지 않고, 파일 시스템(130)은 운영 체제(120)로부터 복수의 쓰기 요청이 있는 경우에도 한 세트의 힌트 데이터만을 기록할 수 있다. 이 경우, 한 세트의 힌트 데이터의 오프셋 값은 가장 처음에 기록된 파일 데이터(142)의 오프셋 값 '64'일 수 있다. 한 세트의 힌트 데이터의 카운트 값은 파일 데이터(143)가 기록된 이후의 오프셋 값('3228')과 가장 처음에 기록된 파일 데이터(142)의 오프셋 값('64')의 차이 값('3164')일 수 있다.
제 3 페이지를 참조하면, 파일 시스템(130)은 write syscall 함수를 입력받을 수 있다. 파일 시스템(130)은 함수에 기초하여 제 3 페이지에 4096bytes만큼의 파일 데이터(144)를 기록할 수 있다. 이 경우, 제 3 페이지에 기록된 파일 데이터(144)의 크기는 제 3 페이지의 크기와 동일할 수 있다. 따라서, 파일 시스템(130)은 제 3 페이지에 힌트 데이터를 기록하지 않을 수 있다.
프로세서(100a)는 힌트 데이터(151, 152, 153)에 기초하여 페이지의 크기보다 작은 파일 데이터를 포함하는 페이지들을 식별할 수 있다. 구체적으로, 힌트 데이터(151)를 포함하는 제 1 페이지는 제 1 페이지의 크기보다 작은 파일 데이터(141)를 포함하는 것으로 식별될 수 있다. 힌트 데이터를 포함하지 않는 제 3 페이지는 제 3 페이지의 크기와 동일한 파일 데이터(144)를 포함하는 것으로 식별될 수 있다.
다만, 본 발명은 이에 한정되지 않고, 파일 시스템(130)은 모든 페이지에 힌트 데이터를 기록할 수 있다. 이 경우, 프로세서(100a)는 카운트 값을 이용하여 페이지의 크기보다 작은 크기의 파일 데이터를 포함하는 페이지를 식별할 수 있다. 구체적으로, 카운트 값이 제 1 페이지의 크기보다 작은 경우, 제 1 페이지는 제 1 페이지의 크기보다 작은 파일 데이터(141)를 포함하는 것으로 식별될 수 있다. 카운트 값이 제 3 페이지의 크기와 동일한 경우, 제 3 페이지는 제 3 페이지의 크기와 동일한 파일 데이터(144)를 포함하는 것으로 식별될 수 있다.
도 4는 도 2에 도시된 프로세서가 데이터를 관리하는 방법을 설명하기 위한 개념도이다. 본 발명의 이해를 돕기 위해 도 2가 함께 참조된다.
도 2를 참조하여 설명된 것처럼, 프로세서(100a)는 프로세서(100a) 내에서 파일 데이터(141a, 142a, 143a)를 페이지 단위로 관리할 수 있다. 다만, 프로세서(100a)는 파일 데이터(141a, 142a, 143a)를 메모리(200a) 및/또는 스토리지 장치(300a)로 출력하기 위해, 페이지를 블록들로 분할할 수 있다.
프로세서(100a)는 하나의 페이지를 블록들로 분할할 수 있다. 블록의 크기는 페이지의 크기보다 작을 수 있다. 이하 설명들에서, 블록의 크기는 페이지의 크기의 절반으로 가정된다. 프로세서(100a)는 하나의 페이지를 두 개의 블록으로 분할할 수 있다. 제 1 페이지는 제 1 블록 및 제 2 블록으로 분할될 수 있다. 제 1 블록은 파일 데이터(141a)를 포함할 수 있다. 파일 데이터(141a)는 파일 데이터(141)와 실질적으로 동일한 데이터일 수 있다. 제 2 블록은 파일 데이터를 포함하지 않을 수 있다.
제 2 페이지는 제 3 블록 및 제 4 블록으로 분할될 수 있다. 제 2 블록은 파일 데이터(142a)를 포함할 수 있다. 제 3 블록은 파일 데이터(143a)를 포함할 수 있다. 파일 데이터(141a, 142a)는 각각 파일 데이터(141, 142)와 실질적으로 동일한 데이터일 수 있다.
제 1 블록, 제 3 블록 및 제 4 블록에서 파일 데이터(141a, 142a, 143a)가 기록되지 않은 나머지 영역에는 무의미한 데이터가 기록될 수 있다. 프로세서(100a)는 블록 단위로 데이터를 출력할 수 있다. 따라서, 프로세서(100a)는 파일 데이터(141a, 142a, 143a)를 출력하기 위해 제 1 블록, 제 3 블록 및 제 4 블록이 출력될 수 있다. 제 1 블록, 제 3 블록 및 제 4 블록이 출력됨으로써, 무의미한 데이터도 메모리(200a) 및/또는 스토리지 장치(300a)로 출력될 수 있다. 이 경우, 프로세서(100a)는 프로그램을 실행하기 위해 실질적으로 필요한 파일 데이터(141a, 142a, 143a)의 양보다 훨씬 더 많은 양의 데이터를 출력할 수 있다. 프로세서(100a)와 메모리(200a) 및 스토리지 장치(300a)간에 많은 양의 데이터가 전송됨으로써, 데이터가 전송되는데 지연(delay)이 발생할 수 있다.
도 5는 도 2에 도시된 프로세서가 데이터를 관리하는 방법을 설명하기 위한 개념도이다. 본 발명의 이해를 돕기 위해 도 2가 함께 참조된다.
도 2를 참조하여 설명된 것처럼, 프로세서(100a)는 페이지를 블록들로 분할하여 파일 데이터(141b, 142b, 143b)를 메모리(200a) 및/또는 스토리지 장치(300a)로 출력할 수 있다. 도 4를 참조하여 설명된 것과 달리, 프로세서(100a)는 파일 데이터(141, 142, 143)를 병합하여 블록들을 생성할 수 있다. 구체적으로, 프로세서(100a)는 파일 데이터(141, 142, 143)를 빈 공간 없이 인접하여 병합하여 블록들을 생성할 수 있다.
제 1 페이지 및 제 2 페이지에는 힌트 데이터(151, 152, 153)를 포함할 수 있다. 프로세서(100a)는 힌트 데이터(151, 152, 153)에 기초하여 페이지의 크기보다 작은 크기의 파일 데이터를 포함하는 제 1 페이지 및 제 2 페이지를 식별할 수 있다.
프로세서(100a)는 식별된 제 1 페이지 및 식별된 제 2 페이지의 파일 데이터(141, 142, 143)를 병합하여 병합 블록을 생성할 수 있다. 도 5에서는 하나의 병합 블록이 도시되었으나 본 발명은 이에 한정되지 않는다. 파일 데이터(141, 142, 143)의 크기의 합이 병합 블록의 크기보다 큰 경우, 프로세서(100a)는 복수의 병합 블록을 생성할 수 있다.
프로세서(100a)는 힌트 데이터(151, 152, 153)를 이용하여 병합 블록을 생성할 수 있다.
프로세서(100a)는 힌트 데이터(151)를 이용하여 파일 데이터(141)를 읽을 수 있다. 구체적으로, 프로세서(100a)는 힌트 데이터(151)가 나타내는 오프셋 값 '0'으로부터 카운트 값 '32'만큼 데이터를 읽을 수 있다. 프로세서(100a)가 읽은 데이터는 파일 데이터(141)를 의미할 수 있다.
프로세서(100a)는 힌트 데이터(152, 153)를 이용하여 파일 데이터(142, 143)를 읽을 수 있다. 구체적으로, 프로세서(100a)s는 힌트 데이터(152)가 나타내는 오프셋 값 '64'으로부터 카운트 값 '32'만큼 데이터를 읽을 수 있다. 프로세서(100a)가 읽은 데이터는 파일 데이터(142)를 의미할 수 있다. 프로세서(100a)는 힌트 데이터(153)가 나타내는 오프셋 값 '3196' 으로부터 카운트 값 '32'만큼 데이터를 읽을 수 있다. 프로세서(100a)가 읽은 데이터는 파일 데이터(143)를 의미할 수 있다.
제 10 페이지는 파일 데이터(141, 142, 143)의 속성과 관련된 메타데이터(145)를 포함할 수 있다. 메타데이터(145)는 하나 이상의 파일과 관련될 수 있다. 메타데이터(145)는 하나 이상의 파일에 포함되는 파일 데이터의 크기, 파일 데이터가 저장되는 주소 및/또는 위치를 나타낼 수 있다.
도 3에서 설명된 방법과 유사하게, 프로세서(100a)는 제 10 페이지에도 힌트 데이터(154)를 기록할 수 있다. 예로서, 힌트 데이터(154)의 오프셋 값은 '0', 카운트 값은 '32'일 수 있다.
프로세서(100a)는 힌트 데이터(154)에 기초하여 페이지의 크기보다 작은 크기의 메타데이터(145)를 포함하는 제 10 페이지를 식별할 수 있다. 프로세서(100a)는 힌트 데이터(154)를 이용하여 메타데이터(145)를 읽을 수 있다. 구체적으로, 프로세서(100a)는 힌트 데이터(154)가 나타내는 오프셋 값 '0'으로부터 카운트 값 '32'만큼 데이터를 읽을 수 있다. 프로세서(100a)가 읽은 데이터는 메타데이터(145)를 의미할 수 있다.
프로세서(100a)는 파일 데이터(141, 142, 143) 및 메타데이터(145)를 병합하여 병합 블록을 생성할 수 있다. 구체적으로, 프로세서(100a)는 파일 데이터(141, 142, 143) 및 메타데이터(145)를 빈 공간 없이 인접하여 병합하여 병합 블록을 생성할 수 있다. 병합 블록의 크기는 제 1 페이지의 크기, 제 2 페이지의 크기 및 제 10 페이지의 크기의 합보다 작을 수 있다. 병합 블록은 메타 영역과 버퍼 영역으로 구성될 수 있다. 프로세서(100a)는 버퍼 영역에 파일 데이터(141b, 142b, 143b)를 저장할 수 있다. 프로세서(100a)는 메타 영역에 파일 데이터(141b, 142b, 143b)의 속성과 관련된 메타데이터(145b)가 저장되는 영역일 수 있다.
파일 데이터(141b, 142b, 143b) 및 메타데이터(145b)는 각각 파일 데이터(141, 142, 143) 및 메타데이터(145)와 실질적으로 동일한 데이터일 수 있다. 즉, 파일 데이터(141b, 142b, 143b)의 속성 정보는 파일 데이터(141, 142, 143)의 속성 정보와 동일할 수 있다. 파일 데이터(141, 142, 143)가 메모리(320)의 제 1 위치와 관련된 곳에 저장되도록 생성된 경우, 파일 데이터(141b, 142b, 143b)는 제 1 위치와 관련되는 곳에 저장될 수 있다. 이 경우, 메타 데이터(145, 145b)는 제 1 위치에 대한 정보를 포함할 수 있다.
도 4를 참조하여 설명된 방법에 따르면, 프로세서(100a)는 제 1 블록을 출력하는 경우, 제 1 페이지에 관련된 제 2 블록도 출력할 수 있다. 즉, 프로세서(100a)는 하나의 페이지에 관련된 블록들을 함께 출력할 수 있다. 이 경우, 프로세서(100a)는 파일 데이터(141b, 142b, 143b)를 스토리지 장치(300a)에 기록하기 위해 4개의 블록을 출력할 수 있다.
반면, 도 5를 참조하여 설명된 방법에 따르면, 프로세서(100a)는 파일 데이터(141b, 142b, 143b)를 메모리(200a) 및/또는 스토리지 장치(300a)에 기록하기 위해 하나의 병합 블록을 출력할 수 있다. 블록은 데이터로 구성된 집합체로써, 블록을 전송하는 것은 실질적으로 데이터를 전송하는 것을 의미한다. 따라서, 도 4에 도시된 블록들과 비교하면, 프로세서(100a)는 메모리(200a) 및/또는 스토리지 장치(300a)로 출력하는 데이터의 양을 감소시킬 수 있다. 전자 장치(1000a)가 스마트 폰(smartphone), 태블릿 PC(tablet personal computer), 웨어러블 장치 등과 같이 소형 전자 장치인 경우, 스토리지 장치(300a)에 작은 크기의 데이터를 기록하는 경우가 빈번하게 발생할 수 있다. 이 경우, 도 5를 참조하여 설명된 방법에 따르면, 프로세서(100a)는 무의미한 데이터가 출력되는 것을 줄일 수 있다. 즉, 프로세서(100a)는 스토리지 장치(300a)로 전송되는 데이터의 양이 불필요하게 증가하는 것을 방지할 수 있다.
도 6은 도 2에 도시된 프로세서가 데이터를 관리하는 방법을 설명하기 위한 개념도이다. 본 발명의 이해를 돕기 위해 도 2 및 도 5가 함께 참조된다.
도 6을 참조하여 설명되는 데이터를 관리하는 방법은 도 5를 참조하여 설명된 방법과 유사하다. 다만, 도 5를 참조하여 설명된 것과 달리, 프로세서(100a)는 메타데이터(145c)와 파일 데이터(141c, 142c, 143c)가 상이한 블록에 포함되도록 병합 버퍼 블록 및 병합 메타 블록을 생성할 수 있다. 메타데이터(145c)와 파일 데이터(141c, 142c, 143c)는 각각 메타데이터(145b)와 파일 데이터(141b, 142b, 143b)에 대응할 수 있다.
도 5를 참조하여 설명된 것처럼, 프로세서(100a)는 파일 데이터(141, 142, 143)를 병합하여 병합 버퍼 블록을 생성할 수 있다. 병합 버퍼 블록은 파일 데이터(141c, 142c, 143c)를 포함할 수 있다.
파일 데이터(141, 142, 143)를 병합하는 것과 유사한 방법으로, 프로세서(100a)는 메타데이터(145)를 이용하여 병합 메타 블록을 생성할 수 있다. 메타데이터(145c)는 병합 버퍼 블록에 포함되는 파일 데이터(141c, 142c, 143c)의 속성 정보를 포함할 수 있다. 메타데이터(145c)에 포함된 정보가 아래의 표 1을 참조하여 설명된다.
Index Final page address Offset Count
0 5000 0 32
1 2000 64 32
2 2000 3196 32
인덱스는 병합 버퍼 블록에 포함되는 데이터를 의미할 수 있다. 구체적으로 인덱스(0)는 파일 데이터(141c)를 의미할 수 있다. 최종 페이지 주소는 파일 데이터가 메모리(320)에 저장되는 위치를 나타낼 수 있다. 최종 페이지 주소는 가상 주소일 수 있다. 파일 데이터는 가상 주소에 대응하는 실제 주소에 저장될 수 있다. 구체적으로, 최종 페이지 주소(5000)는 파일 데이터(141c)가 최종 페이지 주소(5000)에 대응하는 실제 주소에 저장되는 것을 의미할 수 있다.
오프셋 및 카운트는 도 3에서 도시된 힌트 데이터에 포함된 오프셋 및 카운트와 실질적으로 동일할 수 있다.
프로세서(100a)는 병합 메타 블록 및 병합 버퍼 블록을 생성함으로써, 메타데이터(145) 및 파일 데이터(141c, 142c, 143c)를 독립적으로 관리할 수 있다. 이하 설명들에서, 프로세서(100a)는 병합 메타 블록 및 병합 버퍼 블록을 생성하는 것으로 가정된다.
도 7은 도 2에 도시된 프로세서가 데이터를 관리하는 방법을 설명하기 위한 개념도이다. 본 발명의 이해를 돕기 위해 도 3, 도 4 및 도 6이 함께 참조된다. 프로세서(100a)가 병합 메타 블록을 생성하는 방법은 병합 버퍼 블록을 생성하는 방법과 실질적으로 동일하다. 따라서, 도 7을 참조하여 프로세서(100a)가 병합 버퍼 블록을 생성하는 방법이 설명되고, 병합 메타 블록을 생성하는 방법은 생략된다.
S410 동작에서, 프로세서(100a)는 페이지에 파일 데이터를 기록할 수 있다. 도 3을 참조하면, 프로세서(100a)는 제 1 페이지에 파일 데이터(141)를 기록할 수 있다. 프로세서(100a)는 제 2 페이지에 파일 데이터(142, 143)를 기록할 수 있다. 프로세서(100a)는 제 3 페이지에 파일 데이터(144)를 기록할 수 있다.
S420 동작에서, 프로세서(100a)는 페이지에 기록되는 파일 데이터의 크기와 페이지의 크기를 비교할 수 있다.
페이지에 기록되는 파일 데이터의 크기가 페이지의 크기보다 작은 경우, S430 동작에서, 프로세서(100a)는 페이지에 힌트 데이터를 기록할 수 있다. 도 3을 참조하면, 프로세서(100a)는 제 1 페이지 및 제 2 페이지에 힌트 데이터(151, 152)를 기록할 수 있다.
페이지에 기록되는 파일 데이터의 크기가 페이지의 크기와 동일한 경우, 프로세서(100a)는 페이지에 힌트 데이터를 기록하지 않을 수 있다. 도 3을 참조하면, 프로세서(100a)는 제 3 페이지에 힌트 데이터를 기록하지 않을 수 있다.
S440 동작에서, 프로세서(440)는 파일 데이터를 페이지 단위로 관리할 수 있다.
S450 동작에서, 프로세서(100a)는 힌트 데이터를 포함하는 페이지를 식별할 수 있다.
페이지가 힌트 데이터를 포함하는 경우, S460 동작에서 프로세서(100a)는 페이지에 포함된 파일 데이터를 병합하여 병합 버퍼 블록을 생성할 수 있다. 도 6을 참조하면, 프로세서(100a)는 파일 데이터(141, 142, 153)를 병합하여 병합 버퍼 블록을 생성할 수 있다.
페이지가 힌트 데이터를 포함하지 않는 경우, S470 동작에서, 프로세서(100a)는 페이지를 블록들로 분할하여 블록들을 생성할 수 있다. 도 4를 참조하면, 제 3 페이지는 두 개의 블록들로 분할 될 수 있다.
S480 동작에서, 프로세서(100a)는 병합 버퍼 블록 및 블록들을 메모리(200a) 및/또는 스토리지 장치(300a)로 전송할 수 있다.
도 8은 도 2에 도시된 스토리지 장치에서 데이터를 저장하는 방법을 설명하기 위한 개념도이다. 본 발명의 이해를 돕기 위해, 도 6이 함께 참조된다.
프로세서(100a)는 스토리지 장치(300a)로 신호(s1)를 전송할 수 있다. 신호(s1)는 병합 메타 블록 및 병합 버퍼 블록을 포함할 수 있다. 스토리지 장치(300a)는 신호(s1)를 수신할 수 있다. 스토리지 장치(300a)는 신호(s1)에 기초하여 병합 메타 블록 및 병합 버퍼 블록을 저장할 수 있다.
신호(s1)에 포함된 병합 메타 블록 및 병합 버퍼 블록에 관한 정보 및/또는 요청은 병합 API(Merge Application Program Interface)로 정의될 수 있다. 스토리지 장치(300a)는 병합 API에 따라 메모리(310)에 병합 메타 블록 및 병합 버퍼 블록을 저장할 수 있다. 또한, 스토리지 장치(300a)는 병합 API에 따라 메모리(320)에 파일 데이터(141c, 142c, 143c)를 저장할 수 있다. 이하 도 9 내지 도 11을 참조하여, 스토리지 장치(300a)가 병합 API에 따라 파일 데이터(141c, 142c, 143c)를 저장하는 방법이 설명될 것이다.
구체적으로, 스토리지 장치(300a)는 신호(s1)가 수신되는 경우, 메모리(310)에 병합 메타 블록 및 병합 버퍼 블록을 저장할 수 있다. 도 2를 참조하여 설명된 것처럼, 메모리(310)는 맵핑 테이블을 저장할 수 있다. 맵핑 테이블은 가상 주소를 실제 주소로 맵핑하는데 이용될 수 있다. 맵핑 테이블은 가상 주소 및 가상 주소에 대응되는 실제 주소에 대한 맵핑 정보를 포함할 수 있다. 메타데이터(145c)는 파일 데이터(141c, 142c, 143c)의 가상 주소를 나타낼 수 있다. 스토리지 장치(300a)는 맵핑 테이블 및 메타데이터(145c)를 이용하여 파일 데이터(141c, 142c, 143c)의 가상 주소에 대응하는 실제 주소에 대한 정보를 획득할 수 있다.
프로세서(100a)는 스토리지 장치(300a)로 신호(s2)를 전송할 수 있다. 스토리지 장치(300a)는 신호(s2)를 수신할 수 있다. 스토리지 장치(300a)는 신호(s2)에 기초하여 메모리(310)에 저장된 메타데이터(145c)를 메모리(320)로 저널링할 수 있다. 전자 장치(1000a)로 공급되는 전력이 갑자기 차단되거나 전자 장치(1000a)가 비정상적으로 종료되는 경우, 메모리(310)는 저장된 데이터를 잃을 수 있다. 저널링은 이를 대비하여 메모리(310)에 저장된 메타데이터(145c)를 메모리(320)에 저장하는 것을 의미한다. 프로세서(100a)는 저널링이 주기적으로 수행되도록 신호(s2)를 출력할 수 있다. 예로서, 신호(s2)는 flush 명령일 수 있다. 또한, 스토리지 장치(300a)는 자체적으로 일정 주기마다 저널링을 수행할 수 있다.
도 5를 참조하여 설명된 것처럼, 전자 장치(1000a)가 소형 장치인 경우, 프로세서(100a)로부터 스토리지 장치(300a)로 작은 크기의 데이터가 빈번하게 전송될 수 있다. 이에 따라, 신호(s2)가 발생하는 횟수도 증가할 수 있다. 신호(s2)에 의해 저널링이 수행되는 경우, 스토리지 장치(300a)는 메타데이터(145c)를 포함하는 병합 메타 블록을 메타 영역으로 전송할 수 있다. 본 발명의 실시 예에 따르면, 병합 데이터 블록의 개수가 감소하는 것처럼 병합 메타 블록의 개수도 감소할 수 있다. 즉, 저널링이 수행되는 경우, 메모리(310)로부터 메모리(320)로 전송되는 데이터의 양이 감소될 수 있다.
메모리(320)는 메타 영역 및 데이터 영역을 포함할 수 있다. 이하 설명들에서, 메모리(320)는 낸드 플래시(NAND Flash)로 구성되는 것으로 설명되나, 본 발명은 이에 한정되지 않는다. 메모리(320)는 메모리(310)에 저장된 데이터를 메타 영역에 일시적으로 저장하고, 출력할 수 있다. 예로서, 메모리(320)는 저널링이 수행되는 경우 메타데이터(145c)를 저장할 수 있다. 메모리(320)는 전자 장치(1000a)로 공급되는 전력이 차단되었다가 다시 공급되는 경우 메타 영역에 저장된 메타데이터(145c)를 메모리(310)로 출력할 수 있다. 따라서, 메타 영역은 SLC(Single Level Cell)등과 같이 비교적 빠른 메모리로 구성될 수 있다. 반면, 데이터 영역에서 발생되는 데이터의 입출력의 횟수는 메타 영역에서 발생되는 데이터의 입출력의 횟수보다 적을 수 있다. 따라서, 데이터 영역은 MLC(Multi Level Cell), TLC(Triple Level cell) 등과 같이 비교적 느린 메모리로 구성될 수 있다.
스토리지 장치(310)는 경우에 따라 파일 데이터(141c, 142c, 143c)를 메타 영역에 저장할 수 있다. 예로서, 메모리(310)에 사용 가능한 저장 공간이 없는 경우, 스토리지 장치(310)는 파일 데이터(141c, 142c, 143c)를 메타 영역에 저장할 수 있다.
도 8에서는 파일 데이터(141c, 142c, 143c)가 메모리(310) 및 메타 영역에 저장된 것으로 도시되었지만, 본 발명은 이에 한정되지 않는다. 아래의 표 2는 파일 데이터(141c)가 메모리(310)에 저장되고, 파일 데이터(142c, 143c)가 메타 영역에 저장된 경우를 나타낸다. 메타데이터(145c)는 파일 데이터(141c, 142c, 143c)가 메모리(310)와 메타 영역 중 어느 곳에 저장되었는지를 나타내기 위한 정보를 포함할 수 있다. 메타데이터(145c)에 포함된 정보가 아래의 표 2를 참조하여 설명된다.
Index Current position Current address Final page address Offset Count
0 0 10 5000 0 32
1 1 50000 2000 64 32
2 1 51000 2000 3196 32
인덱스, 최종 페이지 주소, 오프셋 및 카운트는 표 1을 참조하여 설명되었으므로, 이하 중복되는 설명은 생략된다. 현재 위치는 파일 데이터가 메모리(310)와 메타 영역 중 어느 곳에 저장되었는지를 나타낼 수 있다. 현재 위치의 값이 '0'인 것은 파일 데이터가 메모리(310)에 저장됨을 의미할 수 있다. 현재 위치의 값이 '1'인 것은 파일 데이터가 메타 영역에 저장됨을 의미할 수 있다. 현재 주소는 파일 데이터가 현재 위치에서 저장된 주소를 나타낼 수 있다. 예로서, 메타데이터(145c)는 파일 데이터(141c)가 메모리(310)의 주소 '10'인 곳에 저장되었음을 나타낼 수 있다. 다른 예로서, 메타데이터(145c)는 파일 데이터(142c)가 메타 영역의 주소 '50000'인 곳에 저장되었음을 나타낼 수 있다.도 9는 도 2에 도시된 스토리지 장치가 데이터 영역에 파일 데이터를 저장하는 방법을 설명하기 위한 개념도이다.
도 8을 참조하여 설명된 것처럼, 스토리지 장치(300a)는 파일 데이터(141c, 142c, 143c)를 메모리(310) 및/또는 메타 영역에 저장할 수 있다. 스토리지 장치(300a)는 특정 조건이 만족되는 경우 메모리(310) 및/또는 메타 영역에 저장된 파일 데이터(141c, 142c, 143c)를 데이터 영역에 저장할 수 있다.
예로서, 스토리지 장치(300a)는 주기적으로 파일 데이터(141c, 142c, 143c)를 데이터 영역에 저장할 수 있다.
다른 예로서, 스토리지 장치(300a)는 메모리(310)에 새로운 메타데이터를 저장할 저장 공간이 없는 경우, 파일 데이터(141c, 142c, 143c)를 데이터 영역에 저장할 수 있다. 스토리지 장치(300a)는 파일 데이터(141c, 142c, 143c)를 데이터 영역에 저장한 후, 메타데이터(145c)를 삭제할 수 있다. 스토리지 장치(300a)는 메타데이터(145c)를 삭제함으로써 새로운 메타데이터를 저장할 저장 공간을 확보할 수 있다.
다른 예로서, 스토리지 장치(300a)는 메모리(310)에 새로운 파일 데이터를 저장할 저장 공간이 없는 경우 또는 메타 영역에 새로운 파일 데이터를 저장할 저장 공간이 없는 경우, 파일 데이터(141c, 142c, 143c)를 데이터 영역에 저장할 수 있다. 스토리지 장치(300a)는 파일 데이터(141c, 142c, 143c)를 데이터 영역에 저장한 후, 파일 데이터(141c, 142c, 143c)를 삭제할 수 있다. 스토리지 장치(300a)는 파일 데이터(141c, 142c, 143c)를 삭제함으로써 새로운 파일 데이터를 저장할 저장 공간을 확보할 수 있다.
다른 예로서, 스토리지 장치(300a)는 프로세서(100a)로부터 신호가 수신되지 않는 경우 또는 프로세서(100a)로부터 수신되는 신호가 적은 경우, 파일 데이터(141c, 142c, 143c)를 데이터 영역에 저장할 수 있다. 스토리지 장치(300a)는 스토리지 장치(300a)의 I/O 부하량을 측정할 수 있다. I/O 부하량은 프로세서(100a)로부터 수신된 신호에 의해 스토리지 장치(300a)가 수행하여야 하는 작업량을 의미한다. 또 다른 예로서, 스토리지 장치(300a)는 I/O 부하량이 적은 경우 파일 데이터(141c, 142c, 143c)를 데이터 영역에 저장할 수 있다. 이하, 스토리지 장치(300a)가 파일 데이터(141c, 142c, 143c)를 데이터 영역에 저장하는 동작을 저장 동작이라고 한다.
스토리지 장치(300a)로 수신되는 신호가 많을수록, I/O 부하량이 증가할 수 있다. 스토리지 장치(300a)가 저장 동작을 수행하는 동안 다른 동작들을 수행되지 않을 수 있다. 즉, 스토리지 장치(300a)가 저장 동작을 수행하는 동안 다른 동작들은 지연될 수 있다. 스토리지 장치(300a)는 수신되는 신호가 적고, I/O 부하량이 적은 동안에 저장 동작을 수행함으로써 다른 동작들이 지연되는 것에 대한 부담을 줄일 수 있다. 또한, 스토리지 장치(300a)는 I/O 부하량에 기초하여 저장 동작을 수행함으로써 스토리지 장치(300a)의 저장 공간이 부족해지는 것을 미연에 방지할 수 있다. 따라서, 스토리지 장치(300a)의 성능이 향상될 수 있다.
스토리지 장치(300a)는 특정 조건이 만족되는 경우 메타데이터(145c)를 탐색할 수 있다. 스토리지 장치(300a)는 메타데이터(145c)를 탐색하여 데이터 영역에 저장할 파일 데이터를 선정할 수 있다. 이하, 설명들에서 스토리지 장치(300a)는 파일 데이터(141c)를 선정한 것으로 가정된다.
도 8을 참조하여 설명된 것처럼, 스토리지 장치(300a)는 맵핑 테이블 및 메타데이터(145c)를 이용하여 파일 데이터(141c)가 저장될 실제 주소에 대한 정보를 획득할 수 있다. 실제 주소는 데이터 영역의 이전 페이지(old page)를 나타낼 수 있다. 이전 페이지는 파일 데이터(141c)와 관련된 파일 데이터(144c)가 기록된 페이지일 수 있다. 파일 데이터(144c)가 파일 데이터(141c)와 관련된다는 것은 파일 데이터(141c, 144c)가 동일한 프로그램을 실행하는데 이용되는 것을 의미할 수 있다.
스토리지 장치(300a)는 이전 페이지에 저장된 파일 데이터(144c)를 읽을 수 있다. 스토리지 장치(300a)는 메모리(310) 및/또는 메타 영역에 저장된 파일 데이터(141c)를 읽을 수 있다. 스토리지 장치(300a)는 메모리(310)에서 파일 데이터(141c, 144c)를 병합할 수 있다. 스토리지 장치(300a)는 데이터 영역에 새로운 페이지(new page)를 할당할 수 있다. 스토리지 장치(300a)는 병합된 파일 데이터(141c, 144c)를 새로운 페이지(new page)에 기록할 수 있다.
메모리(320)는 페이지 단위로 데이터를 읽거나 저장할 수 있다. 메모리(320)에서 이용되는 페이지의 크기는 프로세서(100a)에서 이용되는 페이지의 크기보다 클 수 있다. 예로서, 프로세서(100a)에서 이용되는 페이지의 크기가 4KB인 반면, 메모리(320)에서 이용되는 페이지의 크기는 16KB 또는 32KB일 수 있다. 따라서, 복수의 병합 버퍼 블록에 포함되는 파일 데이터가 데이터 영역의 하나의 페이지에 저장될 수 있다. 스토리지 장치(300a)는 데이터 영역에 파일 데이터를 저장할 때, 동일한 페이지에 저장될 파일 데이터를 데이터 영역에 한번에 기록할 수 있다. 따라서, 메모리(320)의 속도가 향상될 수 있다. 또한, 메모리(320)의 수명이 길어질 수 있다.
도 10은 도 2에 도시된 스토리지 장치가 데이터 영역에 파일 데이터를 저장하는 방법을 설명하기 위한 흐름도이다. 본 발명의 이해를 돕기 위해 도 9가 함께 참조된다.
스토리지 장치(300a)는 특정 조건이 만족되는 경우, S510 동작에서, 스토리지 장치(300a)는 데이터 영역에 저장할 파일 데이터(141c)를 선정할 수 있다.
S520 동작에서, 스토리지 장치(300a)는 맵핑 테이블 및 메타데이터(145c)를 이용하여 파일 데이터(141c)가 저장될 실제 주소에 대한 정보를 획득할 수 있다. 실제 주소는 데이터 영역의 이전 페이지를 나타낼 수 있다.
S530 동작에서, 스토리지 장치(300a)는 이전 페이지를 읽을 수 있다. 구체적으로, 스토리지 장치(300a)는 이전 페이지에 저장된 파일 데이터(144c)를 읽을 수 있다. 또한, 스토리지 장치(300a)는 메모리(310) 및/또는 메타 영역에 저장된 파일 데이터(141c)를 읽을 수 있다.
S540 동작에서, 스토리지 장치(300a)는 독출된 파일 데이터(141c, 144c)를 병합할 수 있다.
S550 동작에서, 스토리지 장치(300a)는 병합된 파일 데이터(141c, 144c)를 새로운 페이지에 기록하거나 프로그램 할 수 있다. 스토리지 장치(300a)는 메모리(310)에서 수행되는 동작들과 메모리(320)에서 수행되는 동작들을 병렬적으로 수행할 수 있다. 구체적으로, 스토리지 장치(300a)는 S540 동작 및/또는 S550 동작을 수행하면서, 메타 데이터(145c)를 탐색할 수 있다. 따라서, 스토리지 장치(300a)는 S540 동작 및/또는 S550 동작을 수행하면서, 파일 데이터(141c)가 저장된 이후에 데이터 영역에 저장될 파일 데이터를 선정할 수 있다. 따라서, 본 발명의 실시 예에 따르면, 스토리지 장치(300a)로 요구되는 동작들이 효율적으로 수행될 수 있다. 또한, 스토리지 장치(300a)의 성능이 향상될 수 있다.도 11은 도 2에 도시된 스토리지 장치가 파일 데이터를 읽는 방법을 설명하기 위한 개념도이다. 본 발명의 이해를 돕기 위해 도 8이 함께 참조된다.
스토리지 장치(300a)는 프로세서(100a)로부터 신호(s3)를 수신할 수 있다. 신호(s3)는 스토리지 장치(300a)로 읽기 동작을 요청하는 커맨드 및/또는 신호일 수 있다. 프로세서(100a)는 신호(s3)를 통해 스토리지 장치(300a)로 이전 페이지(old page)에 저장된 파일 데이터를 요구할 수 있다.
신호(s3)는 이전 페이지의 주소에 관한 정보를 포함할 수 있다. 스토리지 장치(300a)는 메타데이터(145c)에 포함된 최종 위치 주소와 신호(s3)가 나타내는 주소를 비교할 수 있다.
메타데이터(145c)에 포함된 최종 위치 주소 중에 신호(s3)가 나타내는 주소와 동일한 주소가 없는 경우, 스토리지 장치(300a)는 메모리(310)에 저장된 파일 데이터(141c, 142c, 143c)를 읽지 않을 수 있다. 스토리지 장치(300a)는 이전 페이지에 저장된 파일 데이터(144c)를 읽을 수 있다. 스토리지 장치(300a)는 파일 데이터(144c)를 프로세서(100a)로 전송할 수 있다. 즉, 스토리지 장치(300a)는 메모리(310)에 저장된 파일 데이터(141c, 142c, 143c)를 고려하지 않고, 데이터 영역에 저장된 파일 데이터(144c)만을 출력할 수 있다.
메타데이터(145c)에 포함된 최종 위치 주소 중에 신호(s3)가 나타내는 주소와 동일한 주소가 있는 경우, 스토리지 장치(300a)는 메모리(310)에 저장된 파일 데이터(141c, 142c, 143c)를 읽을 수 있다. 이하, 파일 데이터(141c)의 최종 위치 주소가 신호(s3)가 나타내는 주소와 동일한 것으로 가정된다. 스토리지 장치(300a)는 메모리(310)에 저장된 파일 데이터(141c)를 읽을 수 있다. 또한, 스토리지 장치(300a)는 이전 페이지에 저장된 파일 데이터(144c)를 읽을 수 있다. 도 10을 참조하여 설명된 것처럼, 스토리지 장치(300a)는 파일 데이터(141c, 144c)를 병합할 수 있다. 스토리지 장치(300a)는 병합된 파일 데이터(141c, 144c)를 프로세서(100a)로 전송할 수 있다. 즉, 스토리지 장치(300a)는 데이터 영역에 저장된 파일 데이터(144c) 뿐만 아니라 메모리(310)에 저장된 파일 데이터(141c, 142c, 143c)를 출력할 수 있다. 또한, 스토리지 장치(300a)는 병합된 파일 데이터(141c, 144c)를 새로운 페이지(new page)에 기록할 수 있다. 도 10을 참조하여 설명된 저장 동작과 유사하게, 읽기 동작도 병렬적으로 수행될 수 있다. 읽기 동작을 병렬적으로 수행함으로써, 스토리지 장치(300a)는 도 10을 참조하여 설명된 것과 동일한 효과를 발생시킬 수 있다. 이하, 중복되는 설명은 생략된다.
도 12는 본 발명의 실시 예들에 따른 전자 장치의 예시적인 구성을 보여주는 블록도이다. 본 발명의 이해를 돕기 위해, 도 2가 함께 참조된다.
전자 장치(1000b)는 프로세서(100b), 메모리(200b), 및 스토리지 장치(300b)를 포함할 수 있다. 프로세서(100b), 메모리(200b), 및 스토리지 장치(300b)는 도 2에 도시된 프로세서(100a), 메모리(200a), 및 스토리지 장치(300a)와 유사한 동작들 및 구성들을 제공할 수 있다. 다만, 도 2를 참조하여 설명된 것과 달리, 도 2의 메모리(310)가 제공하는 동작들이 메모리(200b)에서 제공될 수 있다. 예로써, 메모리(200b)는 운영체제 내에서 가상의 스토리지 드라이버에 의해 운영되는 가상의 스토리지 장치일 수 있다. 다른 예로서, 메모리(200b)는 ROM, RAM 등과 같은 물리적인 스토리지 장치로 구현될 수 있다.
도 2를 참조하여 설명된 것처럼, 프로세서(100b)는 메타데이터(145c)를 병합하여 병합 메타 블록을 생성할 수 있다. 프로세서(100b)는 파일 데이터(141c, 142c, 143c)를 병합하여 병합 버퍼 블록을 생성할 수 있다.
프로세서(100b)는 병합 메타 블록 및 병합 버퍼 블록을 메모리(200b)로 전송할 수 있다. 도 2를 참조하여 설명된 것과 달리, 메모리(200b)가 병합 메타 블록, 병합 버퍼 블록, 및 맵핑 테이블을 저장할 수 있다. 즉, 도 2에 도시된 메모리(310)에서 제공된 구성들 및 동작들이 메모리(200b)에서 구현될 수 있다
프로세서(100b)는 신호(s5)를 스토리지 장치(300b)로 전송할 수 있다. 신호(s5)는 도 8을 참조하여 설명된 신호(s2)에 대응할 수 있다. 다만, 신호(s2)와 달리, 신호(s5)는 병합 메타 블록을 포함하지 않을 수 있다.
스토리지 장치(300b)는 메모리(320b)를 포함할 수 있다. 메모리(320b)는 도 2에 도시된 메모리(320b)에 대응하는 구성들 및 동작들을 제공할 수 있다. 구체적으로, 메모리(320b)는 불휘발성 메모리일 수 있다.
메모리(320b)는 메타 영역 및 데이터 영역을 포함할 수 있다. 예로서, 메타 영역 및 데이터 영역은 각각 물리적으로 구분된 불휘발성 메모리들에 포함될 수 있다. 이 경우, 도 8을 참조하여 설명된 것과 유사한 이유로, 메타 영역은 SLC(Single Level Cell)등과 같이 비교적 빠른 메모리로 구성될 수 있다. 데이터 영역은 MLC(Multi Level Cell), TLC(Triple Level cell) 등과 같이 비교적 느린 메모리로 구성될 수 있다. 다른 예로서, 메타 영역 및 데이터 영역은 하나의 메모리에 포함될 수 있다. 이 경우, 메타 영역 및 데이터 영역은 논리적으로 구분된 영역들일 수 있다.
스토리지 장치(300b)는 신호(s5)를 수신할 수 있다. 스토리지 장치(300b)는 신호(s5)에 기초하여 병합 버퍼 블록에 포함된 파일 데이터(141c, 142c, 143c)를 메타 영역에 저장할 수 있다. 도 9를 참조하여 설명된 것처럼, 스토리지 장치(300b)는 페이지 단위로 파일 데이터(141c, 142c, 143c)를 저장할 수 있다. 파일 데이터(141c, 142c, 143c)는 메타 영역의 소스 페이지(source-page)에 저장될 수 있다.
도 13은 도 12에 도시된 스토리지 장치가 데이터 영역에 파일 데이터를 저장하는 방법을 설명하기 위한 개념도이다.
도 12를 참조하여 설명된 것처럼, 스토리지 장치(300b)는 메타 영역에 파일 데이터(141c, 142c, 143c)를 저장할 수 있다. 프로세서(100b)는 신호(s6)를 스토리지 장치(300b)로 전송할 수 있다. 스토리지 장치(300b)는 신호(s6)를 수신할 수 있다. 신호(s6)는 메타 영역에 저장된 파일 데이터(142c, 143c)를 데이터 영역에 저장하기 위해 필요한 정보를 포함할 수 있다.
신호(s6)는 메타 영역에 저장된 파일 데이터(141c, 142c, 143c) 중 데이터 영역에 저장하기 위한 파일 데이터(142c, 143c)에 대한 정보를 포함할 수 있다. 예로서, 신호(s6)는 파일 데이터(142c, 143c)를 포함하는 소스 페이지의 주소, 소스 페이지에서 파일 데이터(142c, 143c)가 저장된 위치 및 파일 데이터(142c, 143c)의 크기에 대한 정보를 포함 수 있다. 구체적으로, '100'의 주소를 갖는 소스 페이지에서 오프셋 값 '64'로부터 128 bytes만큼의 파일 데이터는 파일 데이터(142c, 143c)일 수 있다.
신호(s6)는 파일 데이터(142c, 143c)와 관련된 파일 데이터(148c)가 저장된 위치와 관련된 정보를 포함할 수 있다. 파일 데이터(148c)와 파일 데이터(142c, 143c)는 동일한 프로그램이 실행되는데 이용될 수 있다. 예로서, 신호(s6)는 파일 데이터(148c)가 저장된 원본 페이지의 주소 및 파일 데이터(148c)에 대한 정보를 포함할 수 있다. 구체적으로, 스토리지 장치(300b)는 '1000'의 주소를 갖는 원본 페이지의 시작 주소로부터 오프셋 값 '256'까지 읽음으로써 파일 데이터(148c)를 읽을 수 있다.
신호(s6)는 파일 데이터(142c, 143c)가 데이터 영역에 저장되는 위치에 대한 정보를 포함할 수 있다. 예로서, 신호(s6)는 파일 데이터(142c, 143c)가 저장될 최종 페이지의 주소를 포함할 수 있다. 스토리지 장치(300b)는 최종 페이지에 파일 데이터(142c, 143c, 148c)를 기록할 수 있다. 구체적으로, 스토리지 장치(300b)는 '2000'의 주소를 갖는 최종 페이지에 파일 데이터(142c, 143c, 148c)를 기록할 수 있다.
즉, 스토리지 장치(300b)는 스토리지 장치(300a)와 달리 신호(s6)에 포함된 정보에 기초하여 파일 데이터(142c, 143c, 148c)를 독출할 수 있다. 또한, 스토리지 장치(300b)는 스토리지 장치(300a)와 달리 신호(s6)에 포함된 정보에 기초하여 파일 데이터(142c, 143c, 148c)를 데이터 영역에 기록할 수 있다.
신호(s6)에 포함된 정보 및/또는 요청은 내부 병합 API(Internal Merge Application Program Interface)로 정의될 수 있다. 스토리지 장치(300b)는 내부 병합 API에 따라 파일 데이터(142c, 143c)를 데이터 영역에 저장할 수 있다.
예로서, 스토리지 장치(300b)는 신호(s6)가 수신되는 경우 곧바로 파일 데이터(142c, 143c)를 데이터 영역에 저장할 수 있다.
다른 예로서, 스토리지 장치(300b)는 특정 조건이 만족되는 경우, 신호(s6)에 기초하여 파일 데이터(141c, 142c, 143c)를 데이터 영역에 저장할 수 있다. 특정 조건은 도 9를 참조하여 설명된 특정 조건과 유사할 수 있다. 구체적으로, 스토리지 장치(300b)는 일정 주기마다 메타 영역에 저장된 파일 데이터(142c, 143c)를 데이터 영역에 저장할 수 있다. 스토리지 장치(300b)는 메타 영역에 새로운 파일 데이터를 저장할 저장 공간이 없는 경우 파일 데이터(142c, 143c)를 데이터 영역에 저장할 수 있다. 스토리지 장치(300b)는 파일 데이터(142c, 143c)를 데이터 영역에 저장한 이후에 소스 페이지에 저장된 파일 데이터(142c, 143c)를 삭제할 수 있다. 스토리지 장치(300b)는 프로세서(100b)로부터 신호가 수신되지 않는 경우 또는 프로세서(100b)로부터 수신되는 신호가 적은 경우, 파일 데이터(142c, 143c)를 데이터 영역에 저장할 수 있다. 스토리지 장치(300b)는 I/O 부하량이 적은 경우 파일 데이터(142c, 143c)를 데이터 영역에 저장할 수 있다.
본 발명의 실시 예에 따르면, 내부 병합 API에 의해, 프로세서(100b)로부터 스토리지 장치(300b)로 전송되는 데이터의 양이 감소될 수 있다. 구체적으로, 프로세서(100b)는 신호(s6)를 송신함으로써, 도 12에 도시된 병합 메타 블록을 송신하지 않을 수 있다. 따라서, 스토리지 장치(300b)에 저장되는 데이터의 양도 감소할 수 있다.
또한, 파일 데이터(141c)는 파일 데이터(142c, 143c)와 동일한 최종 페이지에 기록될 수 있다. 이 경우, 프로세서(100b)는 파일 데이터(141c)와 관련된 정보를 포함하여 신호(s6)를 출력할 수 있다. 따라서, 프로세서(100b)로부터 신호(s6)가 출력되는 횟수가 감소될 수 있다.
도 14는 도 12에 도시된 스토리지 장치가 데이터 영역에 파일 데이터를 저장하는 방법을 설명하기 위한 개념도이다. 본 발명의 이해를 돕기 위해 도 13이 함께 참조된다.
프로세서(100b)는 프로세서(100b)에서 이용하는 파일 시스템의 종류에 따라 원본 페이지와 최종 페이지를 동일하게 설정하거나 원본 페이지와 최종 페이지를 상이하게 설정할 수 있다. 프로세서(100b)는 원본 페이지와 최종 페이지가 동일한 경우, 신호(s7)를 출력할 수 있다. 신호(s7)는 신호(s6)와 달리 원본 페이지에 대한 정보를 포함하지 않을 수 있다. 다만, 본 발명은 이에 한정되지 않고, 신호(s7)는 원본 페이지에 대한 정보 및 최종 페이지에 대한 정보 중 하나의 정보를 포함할 수 있다.
스토리지 장치(300b)는 도 13에서 설명된 것과 유사한 방법으로 파일 데이터(142c, 143c, 148c)를 데이터 영역에 기록할 수 있다. 다만, 스토리지 장치(300b)는 도 13에서 설명된 것과 달리 원본 페이지에 파일 데이터(142c, 143c)를 덮어쓸 수 있다.
따라서, 도 13 및 도 14를 참조하면, 내부 병합 API는 프로세서(100b)에서 이용하는 파일 시스템의 종류와 무관하게 스토리지 장치(300b)에서 이용될 수 있다. 예로서, 프로세서(100b)가 LFS와 같은 파일 시스템을 이용하는 경우, 신호(s6)가 송신될 수 있다. 이 경우, 스토리지 장치(300b)는 도 13을 참조하여 설명된 방법을 통해 파일 데이터(142c, 143c)를 데이터 영역에 저장할 수 있다. 다른 예로서, 프로세서(100b)가 EXT 4와 같은 파일 시스템을 이용하는 경우, 신호(s7)가 송신될 수 있다. 이 경우, 스토리지 장치(300b)는 도 14를 참조하여 설명된 방법을 통해 파일 데이터(142c, 143c)를 데이터 영역에 저장할 수 있다.
도 15는 도 12에 도시된 스토리지 장치가 데이터 영역에 파일 데이터를 저장하는 방법을 설명하기 위한 흐름도이다. 본 발명의 이해를 돕기 위해, 도 13 및 도 14가 함께 참조된다.
S610 동작에서, 스토리지 장치(300b)는 프로세서(100b)로부터 신호를 수신할 수 있다.
S620 동작에서, 스토리지 장치(300b)는 신호(s6) 또는 신호(s7)를 수신할 수 있다. 신호(s6)가 수신되는 것은 원본 페이지와 최종 페이지가 상이한 것을 의미할 수 있다. 신호(s7)가 수신되는 것은 원본 페이지와 최종 페이지가 동일한 것을 의미할 수 있다.
원본 페이지와 최종 페이지가 상이한 경우, S630 동작에서, 스토리지 장치(300b)는 원본 페이지를 읽을 수 있다. 즉, 스토리지 장치(300b)는 파일 데이터(148c)를 독출할 수 있다. 또한, 스토리지 장치(300b)는 메타 영역에 저장된 파일 데이터(142c, 143c)를 독출할 수 있다.
S640 동작에서, 스토리지 장치(300b)는 파일 데이터(148c)와 파일 데이터(142c, 143c)를 병합할 수 있다.
S650 동작에서, 스토리지 장치(300b)는 병합된 파일 데이터(142c, 143c, 148c)를 최종 페이지에 기록할 수 있다.
원본 페이지와 최종 페이지가 동일한 경우, S660 동작에서, 스토리지 장치(300b)는 원본 페이지에 파일 데이터(142c, 143c)를 덮어쓸 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (10)

  1. 스토리지 장치의 데이터 영역의 제 1 위치와 관련되도록 생성된 제 1 부분 데이터 및 상기 데이터 영역의 제 2 위치와 관련되도록 생성된 제 2 부분 데이터를 저장하는 메모리; 및
    제 1 페이지에 포함되는 상기 제 1 부분 데이터의 크기가 기준 크기보다 작고 상기 제 1 페이지와 상이한 제 2 페이지에 포함되는 상기 제 2 부분 데이터의 크기가 상기 기준 크기보다 작은 경우 상기 제 1 부분 데이터 및 상기 제 2 부분 데이터를 포함하는 하나 이상의 데이터 블록을 출력하고, 상기 제 1 부분 데이터와 관련하여 상기 제 1 위치에 대한 정보를 포함하는 제 1 메타데이터 및 상기 제 2 부분 데이터와 관련하여 상기 제 2 위치에 대한 정보를 포함하는 제 2 메타데이터를 출력하는 프로세서를 포함하되,
    상기 하나 이상의 데이터 블록의 크기는 상기 제 1 페이지의 크기 및 상기 제 2 페이지의 크기의 합보다 작은 전자 장치.
  2. 제 1 항에 있어서,
    상기 프로세서는 상기 제 1 부분 데이터 및 상기 제 2 부분 데이터를 병합하여 상기 하나 이상의 데이터 블록을 생성하는 전자 장치.
  3. 제 1 항에 있어서,
    상기 프로세서는 상기 제 1 메타데이터 및 상기 제 2 메타데이터가 상기 하나 이상의 데이터 블록에 더 포함되도록 상기 하나 이상의 데이터 블록을 생성하는 전자 장치.
  4. 제 1 항에 있어서,
    상기 프로세서는 제 3 페이지에 포함되는 상기 제 1 메타데이터의 크기가 상기 기준 크기보다 작고, 제 4 페이지에 포함되는 상기 제 2 메타데이터의 크기가 상기 기준 크기 보다 작은 경우 상기 제 1 메타데이터 및 상기 제 2 메타데이터를 포함하는 하나 이상의 메타 블록을 생성하고,
    상기 하나 이상의 메타 블록의 크기는 상기 제 3 페이지의 크기 및 상기 제 4 페이지의 크기의 합보다 작은 전자 장치.
  5. 제 1 항에 있어서,
    상기 프로세서는 상기 제 1 부분 데이터의 상기 크기가 상기 기준 크기보다 작은 경우 제 1 힌트 데이터를 생성하고, 상기 제 2 부분 데이터의 상기 크기가 상기 기준 크기보다 작은 경우 제 2 힌트 데이터를 생성하는 전자 장치.
  6. 페이지들에 각각 포함된 부분 데이터가 병합되어 생성된 하나 이상의 데이터 블록을 저장하고, 상기 부분 데이터 중 제 1 위치와 관련되도록 생성된 제 1 부분 데이터에 대한 제 1 메타데이터를 저장하는 제 1 메모리; 및
    상기 제 1 메타데이터를 이용하여 상기 제 1 부분 데이터를 상기 제 1 위치와 관련되는 제 2 위치에 저장하는 제 2 메모리를 포함하되,
    상기 하나 이상의 데이터 블록의 크기는 각각 상기 페이지들의 크기보다 작은 스토리지 장치.
  7. 제 6 항에 있어서,
    상기 제 2 메모리는 상기 제 1 부분 데이터와 관련된 원본 데이터가 상기 제 1 위치에 저장되어 있는 경우, 상기 원본 데이터를 상기 제 2 위치에 저장하는 스토리지 장치.
  8. 제 6 항에 있어서,
    상기 제 2 메모리는 상기 제 1 부분 데이터를 상기 제 2 위치에 저장하는 경우, 상기 부분 데이터 중 상기 제 1 위치와 관련되도록 생성된 제 2 부분 데이터를 상기 제 2 위치에 저장하는 스토리지 장치.
  9. 페이지들에 각각 포함된 부분 데이터가 병합되어 생성된 하나 이상의 데이터 블록을 수신하여 상기 부분 데이터를 저장하는 제 1 메모리; 및
    상기 제 1 메모리로 상기 제 1 메모리의 제 1 위치에 대한 정보, 및 제 2 위치에 대한 정보를 포함하는 신호가 수신되는 경우, 상기 신호에 기초하여 상기 부분 데이터 중 상기 제 1 위치에 저장된 제 1 부분 데이터를 상기 제 2 위치에 저장하는 제 2 메모리를 포함하되,
    상기 하나 이상의 데이터 블록의 크기는 상기 페이지들의 크기보다 작고,
    상기 부분 데이터의 크기는 각각 상기 페이지들의 크기보다 작은 스토리지 장치.
  10. 제 9 항에 있어서,
    상기 제 2 메모리는 상기 신호가 상기 제 2 메모리의 상기 제 2 위치와 상이한 상기 제 2 메모리의 제 4 위치에 대한 정보를 포함하는 경우, 상기 제 1 부분 데이터 및 상기 제 4 위치에 저장되어 있는 원본 데이터를 상기 제 2 위치에 저장하는 스토리지 장치.
KR1020180135853A 2018-11-07 2018-11-07 스토리지 장치 및 스토리지 장치로 전송되는 데이터를 관리하는 전자 장치 KR20200053052A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180135853A KR20200053052A (ko) 2018-11-07 2018-11-07 스토리지 장치 및 스토리지 장치로 전송되는 데이터를 관리하는 전자 장치
US16/456,988 US20200142623A1 (en) 2018-11-07 2019-06-28 Storage device and electronic device managing data transmitted to storage device
CN201911010771.8A CN111158582A (zh) 2018-11-07 2019-10-23 存储装置和电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180135853A KR20200053052A (ko) 2018-11-07 2018-11-07 스토리지 장치 및 스토리지 장치로 전송되는 데이터를 관리하는 전자 장치

Publications (1)

Publication Number Publication Date
KR20200053052A true KR20200053052A (ko) 2020-05-18

Family

ID=70459788

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180135853A KR20200053052A (ko) 2018-11-07 2018-11-07 스토리지 장치 및 스토리지 장치로 전송되는 데이터를 관리하는 전자 장치

Country Status (3)

Country Link
US (1) US20200142623A1 (ko)
KR (1) KR20200053052A (ko)
CN (1) CN111158582A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220100773A (ko) * 2021-01-08 2022-07-18 주식회사 앤다스 블록 데이터 스토리지 시스템, 블록 데이터 스토리지 방법 및 기록 매체에 저장된 프로그램

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220100773A (ko) * 2021-01-08 2022-07-18 주식회사 앤다스 블록 데이터 스토리지 시스템, 블록 데이터 스토리지 방법 및 기록 매체에 저장된 프로그램

Also Published As

Publication number Publication date
CN111158582A (zh) 2020-05-15
US20200142623A1 (en) 2020-05-07

Similar Documents

Publication Publication Date Title
WO2016082196A1 (zh) 文件访问方法、装置及存储设备
TW201931123A (zh) 記憶體系統及控制方法
US10657048B2 (en) Garbage collection method for data storage device
US8909895B2 (en) Memory apparatus
US10296250B2 (en) Method and apparatus for improving performance of sequential logging in a storage device
JP2018049523A (ja) メモリシステムおよび制御方法
US20190391756A1 (en) Data storage device and cache-diversion method thereof
TW201802671A (zh) 對記憶體通道執行軟體調訓的電子裝置、其記憶體通道調訓方法及其系統
US10650877B2 (en) Memory device including volatile memory, nonvolatile memory and controller
US20160274819A1 (en) Memory system including host and a plurality of storage devices and data migration method thereof
US20190317688A1 (en) Controllers configured to perform secure deletion, key-value storage devices including said controllers, and methods of operation thereof
KR20210051921A (ko) 메모리 시스템 및 그것의 동작방법
US20200218667A1 (en) Operating method for data storage device
US20140219041A1 (en) Storage device and data processing method thereof
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20190042415A1 (en) Storage model for a computer system having persistent system memory
CN115168259A (zh) 一种数据存取方法、装置、设备和计算机可读存储介质
US10073851B2 (en) Fast new file creation cache
CN103229150A (zh) 数据控制方法及系统
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
CN115080457A (zh) 控制器及其操作方法
KR20200053052A (ko) 스토리지 장치 및 스토리지 장치로 전송되는 데이터를 관리하는 전자 장치
KR20150142250A (ko) 컨트롤러의 작동 방법과 상기 컨트롤러를 포함하는 장치의 작동 방법
US20210191887A1 (en) Hybrid memory system interface
KR20210016938A (ko) 데이터 처리 시스템 및 그것의 동작방법