KR20170010810A - 플래시 메모리 내에 데이터를 판독/기록하기 위한 방법, 장치 및 사용자 장비 - Google Patents
플래시 메모리 내에 데이터를 판독/기록하기 위한 방법, 장치 및 사용자 장비 Download PDFInfo
- Publication number
- KR20170010810A KR20170010810A KR1020167035646A KR20167035646A KR20170010810A KR 20170010810 A KR20170010810 A KR 20170010810A KR 1020167035646 A KR1020167035646 A KR 1020167035646A KR 20167035646 A KR20167035646 A KR 20167035646A KR 20170010810 A KR20170010810 A KR 20170010810A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- flash memory
- buffer
- data area
- size
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/06—Address interface arrangements, e.g. address buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 플래시 메모리로부터 데이터를 판독하고, 플래시 메모리에 데이터를 기록하기 위한 방법과 장치, 그리고 사용자 장비에 관한 것이다. 방법은, 플래시 메모리의 판독 대상 데이터의 크기 및 판독 대상 데이터의 물리적 어드레스(physical address)를 포함하는 데이터 판독 지시를 수신하는 단계, 버퍼에서 물리적 어드레스를 검색하는 단계, 버퍼에서 물리적 어드레스가 발견되지 않는 때, 판독 대상 데이터의 크기 및 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리에서 버퍼 데이터 영역을 분할하는 단계, 물리적 어드레스에 따라 플래시 메모리로부터 판독 대상 데이터를 판독하고, 버퍼 데이터 영역으로 판독 대상 데이터를 버퍼링(buffering)하는 단계를 포함한다. 따라서, 플래시 메모리의 낮은 판독 및 기록 효율 및 플래시 메모리의 짧은 서비스 수명의 문제가 해결될 수 있다.
Description
본 발명은 데이터 처리 분야에 관한 것으로서, 특히 플래시 메모리로부터 데이터를 판독하고, 플래시 메모리에 데이터를 기록하기 위한 방법과 장치, 그리고 사용자 장비에 관한 것이다.
현재, 임베디드 멀티미디어 카드 (eMMC: Embedded Multi Media Card)는 휴대 전화의 주요 저장 매체로 널리 사용되고 있으며, eMMC의 내부 저장 장치는, 약어로 플래시 메모리로 지칭되는 비선형 플래시 메모리(NAND 플래시)이다. NAND 플래시는 페이지 단위로 데이터를 판독하고 기록하며, 블록 단위로 데이터를 소거한다. 처음에, NAND 플래시의 페이지는 512 바이트이다. 그러나, NAND 플래시 공정의 개발에 따라, NAND 플래시의 용량은 점점 더 커지고, 페이지의 크기도 8 킬로 바이트(8KB 또는 짧게 8K) 또는 16K로 증가된다. eMMC는 표준 프로토콜이고, 균일한 프로토콜이며, 지정된 판독/기록 단위는 512 바이트이다. 그 결과, 기록 증폭 팩터(write amplification factor)가 증가하고 eMMC의 작동 효율 및 수명이 영향을 받는다.
종래 기술에서, 상이한 제조업체 및 상이한 유형의 eMMC와 호환되기 위해, 리눅스 시스템에서, eMMC 드라이버를 사용하여, 물리적 블록은 예를 들어 512 바이트와 같이 크기가 균일하다. 이러한 방식으로, NAND 플래시의 판독/기록 단위가 페이지, 즉, 8KB 또는 16KB이기 때문에, eMMC가 512 바이트를 판독/기록하지만, NAND 플래시에 대해서는 8K 또는 16K로 동작이 증폭되고, eMMC의 낮은 판독 및 기록 효율 및 eMMC의 짧은 서비스 수명의 문제로 이끈다.
본 발명의 실시예는 플래시 메모리의 낮은 판독/기록 효율 및 플래시 메모리의 짧은 서비스 수명의 문제를 해결할 수 있는, 플래시 메모리로부터 데이터를 판독하고, 플래시 메모리에 데이터를 기록하기 위한 방법과 장치, 및 사용자 장비를 제공한다.
제1 측면에 따르면, 플래시 메모리로부터 데이터를 판독하기 위한 방법이 제공되고, 여기서 방법은 판독 대상 데이터의 크기 및 플래시 메모리의 판독 대상 데이터의 물리적 어드레스(physical address)를 포함하는 데이터 판독 지시를 수신하는 단계, 버퍼에서 물리적 어드레스를 검색하는 단계, 버퍼에서 물리적 어드레스가 발견되지 않는 때, 판독 대상 데이터의 크기 및 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리에서 버퍼 데이터 영역을 분할하는 단계, 그리고 물리적 어드레스에 따라 플래시 메모리로부터 판독 대상 데이터를 판독하고, 버퍼 데이터 영역으로 판독 대상 데이터를 버퍼링(buffering)하는 단계를 포함한다.
제1 측면을 참조하여, 제1 측면의 제1 구현 방식으로, 버퍼 데이터 영역의 크기는 판독 대상 데이터의 크기보다 더 크고, 버퍼 데이터 영역의 크기는 플래시 메모리의 실제 물리적 블록 크기의 정수배이다.
제1 측면을 참조하여, 제1 측면의 제2 구현 방식으로, 버퍼 데이터 영역의 크기는 판독 대상 데이터의 크기와 동일하고, 버퍼 데이터 영역의 크기는 플래시 메모리의 실제 물리적 블록 크기의 정수배이다.
제1 측면의 제1 구현 방식 또는 제1 측면의 제2 구현 방식을 참조하여, 제1 측면의 제3 구현 방식으로, 내부 메모리에서 버퍼 데이터 영역을 분할하는 단계 이후 그리고 물리적 어드레스에 따라 플래시 메모리로부터 판독 대상 데이터를 판독하기 이전에, 내부 메모리로부터 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하고, 버퍼 헤더로 버퍼 데이터 영역의 속성 정보 및 물리적 어드레스를 버퍼링하는 단계를 더 포함하고, 버퍼 데이터 영역의 속성 정보는 버퍼 데이터 영역의 어드레스 및 버퍼 데이터 영역의 크기를 포함한다.
제1 측면 또는 제1 측면의 전술한 세 개의 구현 방식을 참조하여, 제1 측면의 제4 구현 방식으로, 플래시 메모리의 실제 물리적 블록 사이즈는, 플래시 메모리의 식별 정보 CID(Card Identity)에 따라, 플래시 메모리의 식별 정보 CID 및 플래시 메모리의 실제 물리적 블록 크기 사이의 대응 관계 테이블로부터 플래시 메모리의 드라이버 계층(driver layer)에 의해 획득된다.
제1 측면을 참조하여, 제1 측면의 제5 구현 방식으로, 데이터 판독 지시를 수신하는 단계 이전에, 플래시 메모리의 블록 장치 계층을 사용하여 플래시 메모리의 드라이버 계층에 의해 전송된 플래시 메모리의 실제 물리적 블록 크기를 수신하는 단계를 더 포함한다.
제2 측면에 따르면, 플래시 메모리에 데이터를 기록하기 위한 방법이 제공되고, 여기서 방법은 기록 대상 데이터, 기록 대상 데이터의 크기, 및 플래시 메모리 내의 기록 대상 데이터의 물리적 어드레스를 포함하는 데이터 기록 지시를 수신하는 단계, 기록 대상 데이터 및 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리로부터 버퍼 데이터 영역을 분할하고, 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하는 단계, 버퍼 데이터 영역으로 기록 대상 데이터를 버퍼링하고, 버퍼 헤더로 버퍼 데이터 영역의 속성 정보 및 물리적 어드레스를 버퍼링하는 단계, 그리고 물리적 어드레스에 따라 플래시 메모리에 기록 대상 데이터를 기록하는 단계를 포함하고, 버퍼 데이터 영역의 속성 정보는 버퍼 데이터 영역의 어드레스 및 버퍼 데이터 영역의 크기를 포함한다.
제2 측면을 참조하여, 제2 측면의 제1 구현 방식으로, 버퍼 데이터 영역에 식별자 정보를 부가하고, 버퍼 데이터 영역 내의 데이터가 플래시 메모리 내의 데이터와 일치하지 않는 때, 식별자 정보를 더티 데이터(dirty data)를 지시하는 정보로서 식별하는 단계, 그리고 내부 메모리의 점유율이 미리 설정된 제1 임계치보다 큰 경우, 더티 데이터를 지시하는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역 내의 데이터를 플래시 메모리에 기록하거나, 또는 버퍼 데이터 영역이 상주하는 시간이 미리 설정된 제2 임계치보다 큰 경우, 더티 데이터를 지시하는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역 내의 데이터를 플래시 메모리에 기록하는 단계를 더 포함한다.
제3 측면에 따르면, 플래시 메모리로부터 데이터를 판독하기 위한 장치가 제공되고, 여기서 장치는 플래시 메모리의 판독 대상 데이터의 크기 및 판독 대상 데이터의 물리적 어드레스(physical address)를 포함하는 데이터 판독 지시를 수신하도록 구성된 수신 유닛, 버퍼에서 수신 유닛에 의해 수신된 물리적 어드레스를 검색하도록 구성된 검색 유닛, 검색 유닛이 버퍼에서 물리적 어드레스를 발견하지 않는 때, 판독 대상 데이터의 크기 및 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리에서 버퍼 데이터 영역을 분할하도록 구성된 분할 유닛, 그리고 물리적 어드레스에 따라 플래시 메모리로부터 판독 대상 데이터를 판독하고, 분할 유닛에 의해 분할된 버퍼 데이터 영역으로 판독 대상 데이터를 버퍼링(buffer)하도록 구성된 버퍼링 유닛을 포함한다.
제3 측면을 참조하여, 제3 측면의 제1 구현 방식으로, 분할 유닛은 내부 메모리로부터 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하고, 버퍼 헤더에 버퍼 데이터 영역의 속성 정보 및 물리적 어드레스를 버퍼링하며, 버퍼 데이터 영역의 속성 정보는 버퍼 데이터 영역의 어드레스 및 버퍼 데이터 영역의 크기를 포함하고, (1) 버퍼 데이터 영역의 크기는 판독 대상 데이터의 크기보다 더 크고, 버퍼 데이터 영역의 크기는 플래시 메모리의 실제 물리적 블록 크기의 정수배이거나, 또는 (2) 버퍼 데이터 영역의 크기는 판독 대상 데이터의 크기와 동일하고, 버퍼 데이터 영역의 크기는 플래시 메모리의 실제 물리적 블록 크기의 정수배이며, 플래시 메모리의 실제 물리적 블록 사이즈는 플래시 메모리의 식별 정보 CID(Card Identity)에 따라 플래시 메모리의 식별 정보 CID 및 플래시 메모리의 실제 물리적 블록 크기 사이의 대응 관계 테이블로부터 플래시 메모리의 드라이버 계층(driver layer)에 의해 획득된다.
제3 측면 또는 제3 측면의 제1 구현 방식을 참조하여, 제3 측면의 제2 구현 방식으로, 수신 유닛은 플래시 메모리의 블록 장치 계층을 사용하여 플래시 메모리의 드라이버 계층에 의해 전송된 플래시 메모리의 실제 물리적 블록 크기를 수신하도록 더 구성된다.
제4 측면에 따르면, 플래시 메모리에 데이터를 기록하기 위한 장치가 제공되고, 여기서 장치는 기록 대상 데이터, 기록 대상 데이터의 크기, 및 플래시 메모리 내의 기록 대상 데이터의 물리적 어드레스를 포함하는 데이터 기록 지시를 수신하도록 구성된 수신 유닛, 수신 유닛에 의해 수신된 기록 대상 데이터 및 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리로부터 버퍼 데이터 영역을 분할하고, 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하도록 구성된 분할 유닛, 분할 유닛에 의해 분할된 버퍼 데이터 영역으로 기록 대상 데이터를 버퍼링하고, 분할 유닛에 의해 분할된 버퍼 헤더로 버퍼 데이터 영역의 속성 정보 및 물리적 어드레스를 버퍼링하도록 구성된 버퍼링 유닛, 그리고 물리적 어드레스에 따라 플래시 메모리에 기록 대상 데이터를 기록하도록 구성된 기록 유닛을 포함하고, 버퍼 데이터 영역의 속성 정보는 버퍼 데이터 영역의 어드레스 및 버퍼 데이터 영역의 크기를 포함한다.
제4 측면을 참조하여, 제4 측면의 제1 구현 방식으로, 장치는 버퍼 데이터 영역에 식별자 정보를 부가하고, 버퍼 데이터 영역 내의 데이터가 플래시 메모리 내의 데이터와 일치하지 않는 때, 식별자 정보를 더티 데이터(dirty data)를 지시하는 정보로서 식별하도록 구성된 부가(adding) 유닛을 더 포함하고, 부가 유닛은 (1) 내부 메모리의 점유율이 미리 설정된 제1 임계치보다 큰 경우, 부가 유닛에 의해 부가된 정보로서 더티 데이터를 지시하는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역 내의 데이터를 플래시 메모리에 기록하거나, 또는 (2) 버퍼 데이터 영역이 상주하는 시간이 미리 설정된 제2 임계치보다 큰 경우, 부가 유닛에 의해 부가된 정보로서 더티 데이터를 지시하는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역 내의 데이터를 플래시 메모리에 기록하도록 더 구성된다.
제5 측면에 따르면, 사용자 장비가 제공되고, 여기서 장비는 네트워크 인터페이스, 하나 이상의 프로세서, 내부 메모리 및 플래시 메모리를 포함하는 스토리지, 그리고 스토리지에 저장되고, 하나 이상의 프로세서에 의해 실행되도록 구성된 하나 이상의 프로그램을 포함하고, 하나 이상의 프로그램은, 플래시 메모리의 판독 대상 데이터의 크기 및 판독 대상 데이터의 물리적 어드레스(physical address)를 포함하는 데이터 판독 지시를 수신하는 단계, 버퍼에서 물리적 어드레스를 검색하는 단계, 버퍼에서 물리적 어드레스가 발견되지 않는 때, 판독 대상 데이터의 크기 및 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리에서 버퍼 데이터 영역을 분할하는 단계, 그리고 물리적 어드레스에 따라 플래시 메모리로부터 판독 대상 데이터를 판독하고, 버퍼 데이터 영역으로 판독 대상 데이터를 버퍼링(buffering)하는 단계를 포함한다.
제5 측면을 참조하여, 제5 측면의 제1 구현 방식으로, 버퍼 데이터 영역의 크기는 판독 대상 데이터의 크기보다 더 크고, 버퍼 데이터 영역의 크기는 플래시 메모리의 실제 물리적 블록 크기의 정수배이다.
제5 측면을 참조하여, 제5 측면의 제2 구현 방식으로, 버퍼 데이터 영역의 크기는 판독 대상 데이터의 크기와 동일하고, 버퍼 데이터 영역의 크기는 플래시 메모리의 실제 물리적 블록 크기의 정수배이다.
제5 측면의 제1 구현 방식 또는 제5 측면의 제2 구현 방식을 참조하여, 제5 측면의 제3 구현 방식으로, 하나 이상의 프로그램은 내부 메모리로부터 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하고, 버퍼 헤더로 버퍼 데이터 영역의 속성 정보 및 물리적 어드레스를 버퍼링하는 단계를 더 포함하고, 버퍼 데이터 영역의 속성 정보는 버퍼 데이터 영역의 어드레스 및 버퍼 데이터 영역의 크기를 포함한다.
제5 측면 또는 제5 측면의 전술한 세 개의 구현 방식을 참조하여, 제5 측면의 제4 구현 방식으로, 플래시 메모리의 실제 물리적 블록 사이즈는 플래시 메모리의 식별 정보 CID(Card Identity)에 따라 플래시 메모리의 식별 정보 CID 및 플래시 메모리의 실제 물리적 블록 크기 사이의 대응 관계 테이블로부터 플래시 메모리의 드라이버 계층(driver layer)에 의해 획득된다.
제5 측면을 참조하여, 제5 측면의 제5 구현 방식으로, 하나 이상의 프로그램은 플래시 메모리의 블록 장치 계층을 사용하여 플래시 메모리의 드라이버 계층에 의해 전송된 플래시 메모리의 실제 물리적 블록 크기를 수신하는 단계를 더 포함한다.
제6 측면에 따르면, 사용자 장비가 제공되고, 여기서 장비는 네트워크 인터페이스, 하나 이상의 프로세서, 내부 메모리 및 플래시 메모리를 포함하는 스토리지, 그리고 스토리지에 저장되고, 하나 이상의 프로세서에 의해 실행되도록 구성된 하나 이상의 프로그램을 포함하고, 하나 이상의 프로그램은, 기록 대상 데이터, 기록 대상 데이터의 크기, 및 플래시 메모리 내의 기록 대상 데이터의 물리적 어드레스를 포함하는 데이터 기록 지시를 수신하는 단계, 기록 대상 데이터 및 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리로부터 버퍼 데이터 영역을 분할하고, 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하는 단계, 버퍼 데이터 영역으로 기록 대상 데이터를 버퍼링하고, 버퍼 헤더로 버퍼 데이터 영역의 속성 정보 및 물리적 어드레스를 버퍼링하는 단계, 그리고 물리적 어드레스에 따라 플래시 메모리에 기록 대상 데이터를 기록하는 단계를 포함하고, 버퍼 데이터 영역의 속성 정보는 버퍼 데이터 영역의 어드레스 및 버퍼 데이터 영역의 크기를 포함한다.
제6 측면을 참조하여, 제6 측면의 제1 구현 방식으로, 하나 이상의 프로그램은, 버퍼 데이터 영역에 식별자 정보를 부가하고, 버퍼 데이터 영역 내의 데이터가 플래시 메모리 내의 데이터와 일치하지 않는 때, 식별자 정보를 더티 데이터(dirty data)를 지시하는 정보로서 식별하는 단계, 그리고 내부 메모리의 점유율이 미리 설정된 제1 임계치보다 큰 경우, 더티 데이터를 지시하는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역 내의 데이터를 플래시 메모리에 기록하거나, 또는 버퍼 데이터 영역이 상주하는 시간이 미리 설정된 제2 임계치보다 큰 경우, 더티 데이터를 지시하는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역 내의 데이터를 플래시 메모리에 기록하는 단계를 더 포함한다.
본 발명의 실시예들에 의해 제공된 플래시 메모리로부터 데이터를 판독하고, 플래시 메모리에 데이터를 기록하기 위한 방법과 장치, 및 사용자 장비에서, 버퍼 데이터 영역은 플래시 메모리의 실제 물리적 블록 크기에 따라 적용되어, 버퍼 데이터 영역을 동적으로 조정하는 것, 즉, 프로세서에 의해, 플래시 메모리로부터 데이터를 판독하고, 플래시 메모리에 데이터를 기록하는 단위 및 플래시 메모리 내부의 데이터를 판독/기록하는 단위를 통합하는 것의 목적을 달성하므로, 플래시 메모리의 낮은 판독/기록 효율 및 플래시 메모리의 짧은 서비스 수명의 문제를 해결한다.
도 1은 본 발명의 제1 실시예에 따라 플래시 메모리로부터 데이터를 판독하는 방법의 순서도이다.
도 2는 본 발명에 따른 버퍼의 논리 개략도이다.
도 3은 본 발명의 제2 실시예에 따라 플래쉬 메모리에 데이터를 기록하는 방법의 순서도이다.
도 4는 본 발명에 따라 식별자 정보가 부가된 후의 버퍼의 논리 개략도이다.
도 5는 본 발명의 제3 실시예에 따라 플래시 메모리로부터 데이터를 판독하는 장치의 개략도이다.
도 6은 본 발명의 제4 실시예에 따라 플래시 메모리에 데이터를 기록하는 장치의 개략도이다.
도 7은 본 발명의 제5 실시예에 따른 사용자 장비의 개략도이다.
도 8은 본 발명의 제6 실시예에 따른 사용자 장비의 개략도이다.
도 2는 본 발명에 따른 버퍼의 논리 개략도이다.
도 3은 본 발명의 제2 실시예에 따라 플래쉬 메모리에 데이터를 기록하는 방법의 순서도이다.
도 4는 본 발명에 따라 식별자 정보가 부가된 후의 버퍼의 논리 개략도이다.
도 5는 본 발명의 제3 실시예에 따라 플래시 메모리로부터 데이터를 판독하는 장치의 개략도이다.
도 6은 본 발명의 제4 실시예에 따라 플래시 메모리에 데이터를 기록하는 장치의 개략도이다.
도 7은 본 발명의 제5 실시예에 따른 사용자 장비의 개략도이다.
도 8은 본 발명의 제6 실시예에 따른 사용자 장비의 개략도이다.
본 발명의 실시예들의 목적, 기술적 솔루션 및 장점들을 보다 명확하게 하기 위해, 다음은 본 발명의 실시예들에서 첨부된 도면들을 참조하여 본 발명의 실시예들에서의 기술적 솔루션을 명확하고 완전하게 설명한다. 명백하게, 설명된 실시예들은 본 발명의 실시예들의 전부가 아닌 일부이다. 창의적인 노력없이 본 발명의 실시예에 기초하여 당업자에 의해 획득된 다른 모든 실시예는 본 발명의 보호 범위 내에 있다.
본 발명의 완전한 이해를 제공하기 위해, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다. 전술한 실시예들은 본 발명의 보호 범위를 제한하지 않는다.
도 1은 본 발명의 제1 실시예에 따라 플래시 메모리로부터 데이터를 판독하는 방법의 순서도이다. 도 1에 도시된 바와 같이, 이 방법은 구체적으로 다음을 포함한다.
단계(S110): 사용자 장비가 판독 대상 데이터의 크기 및 플래시 메모리 내의 판독 대상 데이터의 물리적 어드레스를 포함하는 데이터 판독 지시를 수신한다.
특히, 단계(S110)는 사용자 장비의 프로세서에 의해 수행될 수 있다.
플래시 메모리는 전기적으로 소거 가능한 프로그래머블(programmable) 판독 전용 메모리의 형태이고, 동작 중에 소거 또는 기록이 여러 번 허용되며, 플래시 메모리는 비휘발성 메모리이다. 플래시 메모리는 사용자 장비가 영구적으로 데이터를 저장하는 데 사용하는 저장 매체이다. 본 명세서에서, 플래시 메모리가 NAND 플래시인 예가 설명을 위해 사용되고, NAND 플래시가 eMMC에 내장된다. 사용자 장비가 플래시 메모리로부터 데이터를 판독하는 때, 플래시 메모리의 데이터는 먼저 내부 메모리에 버퍼링되어야 한다. 또는 사용자 장비가 플래시 메모리에 데이터를 기록하는 때, 데이터는 또한 내부 메모리에 버퍼링되어야 하며, 그 다음에 데이터는 플래시 메모리에 기록된다.
다른 제조업체의 eMMC의 경우, eMMC에 대응하는 플래시 메모리의 실제 물리적 블록 크기(Block sizes)가 상이하다는 것을 유의해야 한다. 또한, 여러 유형의 eMMC에 대해, eMMC에 대응하는 플래시 메모리의 실제 물리적 블록 크기도 상이하다. 플래시 메모리의 실제 물리적 블록 크기는 eMMC 내부의 데이터 판독/기록 단위를 나타내기 위해 사용되며, 값이 클수록 eMMC 내부의 데이터 판독/기록의 더 나은 성능을 나타낸다.
단계(S120): 사용자 장비가 버퍼에서 물리적 어드레스를 검색한다.
특히, 단계(S120)는 사용자 장비의 프로세서에 의해 수행될 수 있다.
버퍼(buffer_cache)는 내부 메모리의 일부이며, Linux 시스템에서, 사용 가능한 모든 내부 메모리를 버퍼로서 사용될 수 있음을 유의해야 한다. 버퍼는 플래시 메모리에 데이터를 저장하는 데 사용되므로, 프로세서가 플래시 메모리 내의 데이터에 액세스하는 속도가 빨라진다. 도 2는 본 발명에 따른 버퍼의 논리 개략도이고, 버퍼는 주로 두 부분: 버퍼 헤더(buffer_head) 및 버퍼 데이터 영역(buffer_data)을 포함하며, 여기서 버퍼 헤더는 버퍼를 동작시키기 위해 프로세서에 의해 요구되는 모든 정보를 포함한다. 구체적으로, 버퍼 헤더는 물리적 어드레스 포인터(b_blocknr), 다음 버퍼를 가리키는 포인터(b_reqnext), 및 버퍼 데이터 영역 포인터(b_data)를 포함하고, 여기서 b_blocknr은 플래시 메모리 내의 버퍼 데이터 영역의 데이터의 물리적 어드레스를 저장하는 데 사용되고, b_reqnext는 다음 버퍼의 어드레스를 저장하는 데 사용되며, b_data는 버퍼 데이터 영역의 어드레스 및 버퍼 데이터 영역의 크기를 저장하는 데 사용된다. buffer_data는 버퍼 헤더에 대응하고, 데이터를 저장하는 데 사용되는 버퍼 데이터 영역이고, 버퍼 데이터 영역의 데이터는 플래시 메모리의 블록에 대응한다. 각 buffer_data의 크기는 고정되어 있지 않다. 데이터를 판독하는 과정에서 버퍼 헤더 및 버퍼 데이터 영역이 동적으로 확립되고, 버퍼 헤더에 대한 정보 및 버퍼 데이터 영역에 버퍼링된 데이터도 동적으로 채워지는(filled) 것을 유의해야 한다. 프로세서가 데이터 판독을 위해 다수의 상이한 지시를 처리해야 하는 때(즉, 상이한 데이터 조각들을 여러 번 판독해야 함), 다수의 버퍼가 확립되어야 한다. 따라서, 프로세서가 처음으로 데이터 판독 지시를 수신하는 때, 내부 메모리에 버퍼가 존재하지 않는다.
프로세서가 다수의 상이한 데이터 조각을 이미 판독하는 때, 다수의 버퍼가 확립되고, 각 버퍼는 버퍼 헤더 및 버퍼 데이터 영역을 포함한다는 것을 유의해야 한다. 프로세서가 데이터 판독 지시를 다시 수신하면, 프로세서는 확립된 버퍼 헤더를 순서대로 스캔하고, 확립된 버퍼 헤더 내에 버퍼링된 물리적 어드레스를 새로 수신된 데이터 판독 지시 내의 물리적 어드레스와 비교하며, 비교 결과가 동일하면, 버퍼 헤더에 대응하는 버퍼 데이터 영역에 데이터를 직접적으로 반환하고, 비교 결과가 상이하면, 확립된 버퍼 헤더 내에 물리적 어드레스가 발견되지 않는다는 것을 나타낸다.
단계(S130): 사용자 장비가 버퍼에서 물리적 어드레스를 발견하지 못하는 때, 판독 대상 데이터의 크기와 플래시 메모리의 실제 물리 블록 크기에 따라 내부 메모리에서 버퍼 영역을 분할한다.
특히, 단계(S130)은 사용자 장비의 프로세서에 의해 수행될 수 있다.
플래시 메모리의 실제 물리적 블록 크기는 플래시 메모리의 식별 정보 CID(Card Identity)에 따라 플래시 메모리의 식별 정보 CID 및 플래시 메모리의 실제 물리적 블록 크기 사이의 대응 관계 테이블로부터 플래시 메모리의 드라이버 계층(driver layer)에 의해 획득된다. 플래시 메모리의 식별자 정보(CID)와 플래시 메모리의 실제 물리 블록 크기 사이의 대응 관계의 테이블은 미리 확립된다. 구체적인 확립 과정은, 표준 커맨드를 사용하여 제조업체의 데이터 시트(Data sheet)로부터 플래시 메모리의 미리 설정된 식별자 정보가 획득되고, 획득된 플래시 메모리의 프리셋 식별자 정보로부터 제조업체 ID가 획득되며, 제조업체 ID가 획득된 후에, 제조업체 ID에 따라 CID로부터 플래시 메모리의 모델을 더 획득하고, 플래시 메모리의 모델이 룩업 테이블(Look-Up-Table) 내에 있는지 여부가 결정되며, 만약 그렇다면, LUT 테이블 내의 플래시 메모리의 실제 물리적 블록 크기가 반환되고, 만약 그렇지 않으면, 기본값 512 바이트가 반환된다. 플래시 메모리의 실제의 물리 블록 크기 또는 디폴트 값을 획득한 후, 플래시 메모리의 식별자 정보 CID와 실제의 플래시 메모리의 물리 블록 크기와의 대응표를 작성할 수 있다.
선택적으로, 플래시 메모리의 실제 물리적 블록 크기를 획득한 후, 플래시 메모리의 드라이버 계층은 획득된 플래시 메모리의 실제 물리적 블록 크기를 플래시 메모리의 블록 장치 계층(Block Layer)에 피드백하고, submit_bio 인터페이스 기능을 사용하여 블록 장치 계층을 프로세서에 사용함으로써 최종적으로 플래시 메모리의 실제 물리적 블록 크기를 전송한다.
버퍼 데이터 영역은 내부 메모리에서 분할되고, 즉, 버퍼 데이터 영역이 확립된다. 구체적으로, 버퍼 데이터 영역으로서 내부 메모리의 부분 공간이 사용되고, 시작 어드레스 및 종료 어드레스를 사용하여 공간을 지시한다. 예를 들어, 내부 메모리의 크기는 4G이고, 여기서 어드레스 2000KB와 어드레스 4000KB 사이에 데이터가 저장되지 않으므로, 프로세서는 공간에서 2000KB 내지 2008KB를 분할할 수 있고, 총 8KB의 공간은 버퍼 데이터 영역으로서 사용된다.
구체적으로, 버퍼에 물리적 어드레스가 존재하지 않는 경우, 프로세서는 전에 판독 대상 데이터를 판독하지 않는 것, 즉, 판독 대상 데이터가 버퍼 데이터 영역에 버퍼링되어 있지 않음을 나타낸다. 프로세서는 버퍼를 확립해야 하고, 여기서 버퍼의 버퍼 데이터 영역의 크기가 판독 대상 데이터의 크기보다 크고, 버퍼 데이터 영역의 크기가 플래시 메모리의 실제 물리적 블록의 정수배이거나, 또는 버퍼 데이터 영역의 크기가 판독 대상 데이터의 크기와 동일하고, 버퍼 데이터 영역의 크기가 플래시 메모리의 실제 물리적 블록 크기의 정수배이다. 예를 들면, 플래시 메모리의 실제 물리적 블록 크기는 8K이다. 그러나, 판독 대상 데이터의 크기가 2K라면, 내부 메모리에서 분할된 버퍼 데이터 영역의 크기는 8K이고, 버퍼 데이터 영역의 크기는 플래시 메모리의 실제 물리적 블록 크기의 1 배이다. 그리고 판독 대상 데이터의 크기가 22K인 경우, 내부 메모리에서 분할된 버퍼 데이터 영역의 크기는 24K이고, 버퍼 데이터 영역의 크기는 플래시 메모리 의 실제 물리 블록 크기의 3 배이다.
선택적으로, 내부 메모리에서 버퍼 데이터 영역을 분할하는 단계 이후 그리고 물리적 어드레스에 따라 플래시 메모리로부터 판독 대상 데이터를 판독하기 이전에, 방법은 내부 메모리로부터 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하고, 버퍼 헤더로 버퍼 데이터 영역의 속성 정보 및 물리적 어드레스를 버퍼링하는 단계를 더 포함한다. 예를 들어, 버퍼 데이터 영역의 시작 어드레스가 200K이고, 크기가 24K이면, 버퍼 데이터 영역에 대응하는 버퍼 헤더 내에 시작 어드레스 200K 및 크기 24K가 저장된다.
단계(S140): 사용자 장비가 물리적 어드레스에 따라 플래시 메모리로부터 판독 대상 데이터를 판독하고, 판독 대상 데이터를 버퍼 데이터 영역에 버퍼링한다.
특히, 단계(S140)은 사용자 장비의 프로세서에 의해 수행될 수 있다.
특히, 프로세서는 submit_bio 인터페이스 기능을 사용하여 블록 장치 판독 요청을 플래시 메모리의 드라이버 계층에 전송하고, 판독 요청은 물리적 어드레스를 포함한다. 플래시 메모리의 블록 장치 계층은 mmc_request 인터페이스 기능을 사용하여 블록 장치 판독 요청을 수신하고, 블록 장치 판독 요청을 수신한 후, 플래시 메모리의 블록 장치 계층은 플래시 메모리의 드라이버 계층에 판독 명령을 전송하며, 여기서 판독 명령은 물리적 어드레스를 포함하고, 플래시 메모리의 드라이버 계층은 수신된 판독 명령 내의 물리적 어드레스에 따라 플래시 메모리로부터 판독 대상 데이터를 획득한다.
판독 대상 데이터를 획득한 후, 플래시 메모리의 드라이버 계층은 판독 대상 데이터를 플래시 메모리의 블록 장치 계층에 전송하고, 판독 대상 데이터를 수신한 후, 플래시 메모리의 블록 장치 계층은 판독 대상 데이터를 물리적 버퍼에 버퍼링하며, 판독 대상 데이터를 프로세서에 전달하고, 판독 대상 데이터를 수신한 후, 프로세서는 분할 데이터 영역에 판독 대상 데이터를 버퍼링하고, 판독 대상 데이터를 상위 계층 애플리케이션으로 반환한다.
요약하면, 본 발명의 실시예에 의해 제공된 플래시 메모리로부터 데이터를 판독하는 방법에서, 플래시 메모리의 실제 물리적 블록 크기에 따라 버퍼 데이터 영역이 적용되어, 버퍼 데이터 영역을 동적으로 조정하는 것, 즉, 프로세서에 의해, 플래시 메모리로부터 데이터를 판독하는 단위 및 플래시 메모리 내부의 데이터를 판독하는 단위를 통합하는 것의 목적을 달성하므로, 플래시 메모리의 낮은 판독 효율 및 플래시 메모리의 짧은 서비스 수명의 문제를 해결한다.
도 3은 본 발명의 제2 실시예에 따라 플래시 메모리에 데이터를 기록하는 방법의 순서도이다. 도 3을 참조하면, 이 방법은 구체적으로 다음을 포함한다.
단계(S310): 사용자 장비가 기록 대상 데이터, 기록 대상 데이터의 크기, 및 플래시 메모리 내의 기록 대상 데이터의 물리적 어드레스를 포함하는 데이터 기록 지시를 수신한다.
특히, 단계(S310)는 사용자 장비의 프로세서에 의해 수행될 수 있다.
플래시 메모리는 전기적으로 소거 가능한 프로그래머블(programmable) 판독 전용 메모리의 형태이고, 동작 중에 소거 또는 기록이 여러 번 허용되며, 플래시 메모리는 비휘발성 메모리이다. 플래시 메모리는 사용자 장비가 영구적으로 데이터를 저장하는 데 사용하는 저장 매체이다. 본 명세서에서, 플래시 메모리가 NAND 플래시인 예가 설명을 위해 사용되고, NAND 플래시가 eMMC에 내장된다. 사용자 장비가 플래시 메모리로부터 데이터를 판독하는 때, 플래시 메모리의 데이터는 먼저 내부 메모리에 버퍼링되어야 한다. 또는 사용자 장비가 플래시 메모리에 데이터를 기록하는 때, 데이터는 또한 내부 메모리에 버퍼링되어야 하며, 그 다음에 데이터는 플래시 메모리에 기록된다.
단계(S320): 사용자 장비가 기록 대상 데이터의 크기와 플래시 메모리의 실제 물리적 블록 크기에 따라 버퍼 데이터 영역을 내부 메모리에서 분할하고, 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할한다.
특히, 단계(S320)는 사용자 장비의 프로세서에 의해 수행될 수 있다.
플래시 메모리에 데이터를 기록하는 과정에서 버퍼 헤더 및 버퍼 데이터 영역이 동적으로 확립되고, 버퍼 헤더에 대한 정보 및 버퍼 데이터 영역에 버퍼링된 데이터도 동적으로 채워지는(filled) 것을 유의해야 한다. 프로세서가 데이터 기록을 위해 다수의 상이한 지시를 처리해야 하는 때(즉, 상이한 데이터 조각들을 여러 번 기록해야 함), 다수의 버퍼가 확립되어야 한다. 따라서, 프로세서가 처음으로 데이터 기록 지시를 수신하는 때, 내부 메모리에 버퍼가 존재하지 않는다. 프로세서가 다수의 상이한 데이터 조각을 플래시 메모리에 이미 기록하는 때, 다수의 버퍼가 확립되고, 각 버퍼는 버퍼 헤더 및 버퍼 데이터 영역을 포함한다
(1) 버퍼의 버퍼 데이터 영역의 크기가 기록 대상 데이터의 크기보다 크고, 버퍼 데이터 영역의 크기가 플래시 메모리의 실제 물리적 블록의 정수배이거나, 또는 (2) 버퍼 데이터 영역의 크기가 기록 대상 데이터의 크기와 동일하고, 버퍼 데이터 영역의 크기가 플래시 메모리의 실제 물리적 블록 크기의 정수배인 것을 유의해야 한다.
단계(S330): 사용자 장비가 버퍼 데이터 영역으로 기록 대상 데이터를 버퍼링하고, 버퍼 헤더로 버퍼 데이터 영역의 속성 정보 및 물리적 어드레스를 버퍼링하고, 여기서 버퍼 데이터 영역의 속성 정보는 버퍼 데이터 영역의 어드레스 및 버퍼 데이터 영역의 크기를 포함한다.
특히, 단계(S330)은 사용자 장비의 프로세서에 의해 수행될 수 있다.
예를 들어, 버퍼 데이터 영역의 시작 어드레스가 200K이고, 크기가 24K이면, 버퍼 데이터 영역에 대응하는 버퍼 헤더 내에 시작 어드레스 200K 및 크기 24K가 저장된다.
단계(S340): 사용자 장비가 물리적 어드레스에 따라 플래시 메모리에 기록 대상 데이터를 기록한다.
특히, 단계(S340)은 사용자 장비의 프로세서에 의해 수행될 수 있다.
물리적 어드레스에 따라 기록 대상 데이터를 플래시 메모리에 기록하는 것은 구체적으로 다음과 같다.
프로세서는 submit_bio 인터페이스 기능을 사용하여 플래시 메모리의 드라이버 계층에 블록 장치 쓰기 요청을 전송하고, 여기서 기록 요청은 물리적 어드레스를 포함한다. 플래시 메모리의 블록 장치 계층은 mmc_request 인터페이스 기능을 사용하여 블록 장치 쓰기 요청을 수신하고, 블록 장치 쓰기 요청을 수신한 후, 플래시 메모리의 블록 장치 계층은 블록 장치 쓰기 요청을 플래시 메모리의 드라이버 계층에 전달하며, 마지막으로, 플래시 메모리와 관련된 드라이버 계층은 물리적 어드레스에 따라 기록 대상 데이터를 기록하고, 플래시 메모리의 블록 장치 계층에 기록이 성공적임을 나타내는 정보를 반환한다.
기록이 성공적임을 나타내는 정보를 수신한 후, 플래시 메모리의 블록 장치 계층은 기록이 성공적임을 나타내는 정보를 프로세서에 전달한다. 마지막으로, 프로세서는 기록이 성공적임을 나타내는 정보를 상위 계층 애플리케이션에 반환하고 다음 데이터 기록 지시의 수신을 대기한다.
요약하면, 본 발명의 실시예에 의해 제공된 플래시 메모리에 데이터를 기록하는 방법에서, 플래시 메모리의 실제 물리적 블록 크기에 따라 버퍼 데이터 영역이 적용되어, 버퍼 데이터 영역을 동적으로 조정하는 것, 즉, 프로세서에 의해, 플래시 메모리에 데이터를 기록하는 단위 및 플래시 메모리 내부의 데이터를 기록하는 단위를 통합하는 것의 목적을 달성하므로, 플래시 메모리의 낮은 기록 효율 및 플래시 메모리의 짧은 서비스 수명의 문제를 해결한다.
선택적으로, 방법은 다음 단계들을 더 포함 할 수 있다.
단계(S350): 식별자 정보를 버퍼 데이터 영역에 추가하고, 버퍼 데이터 영역의 데이터가 플래시 메모리의 데이터와 일치하지 않는 때, 식별자 정보를 더티 데이터를 나타내는 정보로서 식별한다.
버퍼의 버퍼링 기능 때문에, 데이터 기록의 동작이 실제로 지연되고, 버퍼 데이터 영역의 데이터가 플래시 메모리의 데이터보다 새로운 경우, 데이터는 더티 데이터로 지칭된다. 본 발명의 특정 구현 방식에서, 버퍼 데이터 영역에 식별자 정보를 부가하기 위해, 도 4에 도시된, 식별자 정보가 부가된 후의 버퍼의 논리 개략도를 참조한다. 도 4에 도시된 바와 같이, 3개의 버퍼가 포함되고, 각 버퍼는 버퍼 헤더 (buffer_head)와 버퍼 데이터 영역(buffer_data)을 포함하며, 여기서 버퍼 헤더는 b_blocknr, b_reqnext, 식별자 정보(dirty), 및 b_data를 포함하며, 여기서 b_blocknr은 플래시 메모리 내의 대응하는 버퍼 데이터 영역의 데이터의 물리적 어드레스를 저장하는 데 사용되고, b_reqnext는 다음 버퍼의 어드레스를 저장하는 데 사용되며, 더티(dirty)는 새롭게 부가된 식별자 정보이고, 식별자 정보가 0인 경우, 대응하는 버퍼 데이터 영역은 노멀 데이터인 것을 나타내며, 식별자 정보가 1인 경우, 대응하는 버퍼 데이터 영역의 데이터가 더티 데이터인 것을 나타내고, b_data는 대응하는 버퍼 데이터 영역의 어드레스 및 크기를 저장하는데 사용되며, buffer_data는 대응하는 버퍼 데이터 영역이고 데이터를 저장하는 데 사용되며, 각 buffer_data의 크기는 고정되어 있지 않지만, buffer_data는 플래시 메모리의 실제 물리적 블록 크기를 단위로서 사용한다.
부가 식별자 정보를 버퍼 데이터 영역에 부가하는 것은, 구체적으로는 플래시 메모리의 실제의 물리 블록 크기를 단위로하여 식별자 정보를 버퍼 데이터 영역에 부가하는 것이다. 도 4에 도시된 바와 같이, 플래시 메모리의 실제 물리적 블록 크기는 8K인 것으로 가정하면, 8K가 플래시 메모리의 실제 물리적 블록 크기의 1배이므로, 하나의 식별자 정보가 부가된다. 16K는 플래시 메모리의 실제 물리적 블록 크기의 2배이며, 두 개의 식별자 정보가 부가된다. 24K가 플래시 메모리의 실제 물리 블록 크기의 3배인 경우, 세 개의 식별자 정보가 추가된다.
단계(S360): 내부 메모리의 점유율이 미리 설정된 제1 임계치보다 큰 경우, 더티 데이터를 지시하는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역 내의 데이터를 플래시 메모리에 기록하거나, 또는 버퍼 데이터 영역이 상주하는 시간이 미리 설정된 제2 임계치보다 큰 경우, 더티 데이터를 지시하는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역 내의 데이터를 플래시 메모리에 기록한다.
도 4에서, 버퍼 데이터 영역이 더티 데이터를 지시하는 정보로서 식별되는 때, 즉, 버퍼 데이터 영역의 더티 값이 0인 때, 버퍼 데이터 영역의 데이터가 플래시 메모리에 다시 기록되는 2 가지 경우가 있다.
1) 내부 메모리의 점유율이 미리 설정된 제1 임계치보다 큰 때, 더티 데이터를 지시하는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역의 데이터가 플래시 메모리에 기록된다.
2) 버퍼 데이터 영역이 내부 메모리에 상주하는 시간이 미리 설정된 제2 임계치보다 큰 때, 더티 데이터를 지시하는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역의 데이터가 플래시 메모리에 기록된다.
전술한 두 가지 방식에 의해, 버퍼 데이터 영역의 데이터가 내부 메모리에 무기한으로 상주하지 않도록 보장될 수 있다.
플러시 데몬(Flush daemon)은 버퍼 데이터 영역의 데이터가 플래시 메모리에 기록될 수 있도록, 동시에 버퍼 헤더 내의 더티 데이터를 지시하는 정보로서 식별되는 모든 버퍼 데이터 영역을 검출할 수 있음을 유의해야 한다.
도 5는 본 발명의 제3 실시예에 따라 플래시 메모리로부터 데이터를 판독하기 위한 장치의 개략도이다. 장치는 도 1에 도시된 방법을 수행하는 데 사용될 수 있다. 도 5에서, 장치는 수신 유닛(501), 검색 유닛(502), 분할 유닛(503), 및 버퍼링 유닛(504)을 포함한다.
수신 유닛(501)은 데이터 판독 지시를 수신하도록 구성되며, 여기서 데이터 판독 지시는 판독 대상 데이터의 크기 및 플래시 메모리 내의 판독 대상 데이터의 물리적 어드레스를 포함한다.
검색 유닛(502)은 수신 유닛(501)에 의해 수신된 물리적 어드레스를 버퍼에서 검색하도록 구성된다.
분할 유닛(503)은 검색 유닛(502)이 버퍼에서 물리적 어드레스가 발견되지 않는 때, 판독 대상 데이터의 크기 및 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리에서 버퍼 데이터 영역을 분할하도록 구성된다.
버퍼링 유닛(504)은 물리적 어드레스에 따라 플래시 메모리로부터 판독 대상 데이터를 판독하고, 분할 유닛(503)에 의해 분할된 버퍼 데이터 영역으로 판독 대상 데이터를 버퍼링하도록 구성된다.
선택적으로, 분할 유닛(503)은 내부 메모리로부터 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하고, 버퍼 헤더에 버퍼 데이터 영역의 속성 정보 및 물리적 어드레스를 버퍼링하도록 더 구성되며, 버퍼 데이터 영역의 속성 정보는 버퍼 데이터 영역의 어드레스 및 버퍼 데이터 영역의 크기를 포함하고, 버퍼 데이터 영역의 크기는 판독 대상 데이터의 크기보다 더 크고, (1) 버퍼 데이터 영역의 크기는 플래시 메모리의 실제 물리적 블록 크기의 정수배이거나, (2) 버퍼 데이터 영역의 크기는 판독 대상 데이터의 크기와 동일하고, 버퍼 데이터 영역의 크기는 플래시 메모리의 실제 물리적 블록 크기의 정수배이며, 플래시 메모리의 실제 물리적 블록 사이즈는 플래시 메모리의 식별 정보 CID(Card Identity)에 따라 플래시 메모리의 식별 정보 CID 및 플래시 메모리의 실제 물리적 블록 크기 사이의 대응 관계 테이블로부터 플래시 메모리의 드라이버 계층(driver layer)에 의해 획득된다.
선택적으로, 수신 유닛(501)은 플래시 메모리의 블록 장치 계층을 사용하여 플래시 메모리의 드라이버 계층에 의해 전송된 플래시 메모리의 실제 물리적 블록 크기를 수신하도록 더 구성된다.
도 6은 본 발명의 제4 실시예에 따른 플래시 메모리에 데이터를 기록하기 위한 장치의 개략도이다. 장치는 도 3에 도시된 방법을 수행하는 데 사용될 수 있다. 도 6에 도시된 바와 같이, 장치는 수신 유닛(601), 분할 유닛(602), 버퍼링 유닛(603), 및 기록 유닛(604)을 포함한다.
수신 유닛(601)은 기록 대상 데이터, 기록 대상 데이터의 크기, 및 플래시 메모리 내의 기록 대상 데이터의 물리적 어드레스를 포함하는 데이터 기록 지시를 수신하도록 구성된다.
분할 유닛(602) 수신 유닛(601)에 의해 수신된 기록 대상 데이터 및 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리로부터 버퍼 데이터 영역을 분할하고, 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하도록 구성된다.
버퍼링 유닛(603)은, 분할 유닛(602)에 의해 분할된 버퍼 데이터 영역으로 기록 데이터를 버퍼링하고, 분할 유닛에 의해 분할된 버퍼 헤더로 버퍼 데이터 영역의 속성 정보 및 물리적 어드레스를 버퍼링하도록 구성되고, 여기서 버퍼 데이터 영역의 속성 정보는 버퍼 데이터 영역의 어드레스 및 버퍼 데이터 영역의 크기를 포함한다.
기록 유닛(604)은 물리적 어드레스에 따라 플래시 메모리에 기록 대상 데이터를 기록하도록 구성된다.
선택적으로, 장치는 식별자 정보를 버퍼 데이터 영역에 부가하고, 버퍼 데이터 영역의 데이터가 플래시 메모리의 데이터와 일치하지 않는 때, 식별자 정보를 더티 데이터를 나타내는 정보로서 식별하도록 구성된 부가 유닛(605)을 더 포함한다.
기록 유닛(604)은 내부 메모리의 점유율이 미리 설정된 제1 임계치보다 큰 때, 부가 유닛에 의해 부가된 정보로서, 더티 데이터를 지시하는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역의 데이터를 플래시 메모리에 기록하거나, 또는 버퍼 데이터 영역이 상주하는 시간이 미리 설정된 제2 임계치보다 큰 때, 부가 유닛에 의해 부가된 정보로서, 더티 데이터를 나타내는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역의 데이터를 플래시 메모리에 기록하도록 더 구성된다.
본 발명의 실시예에 의해 제공된 플래시 메모리로부터 데이터를 판독하는 장치 및 플래시 메모리에 데이터를 기록하는 장치에서, 버퍼 데이터 영역은 플래시 메모리의 실제 물리적 블록 크기에 따라 적용되어, 버퍼 데이터 영역을 동적으로 조정하는 것, 즉, 프로세서에 의해, 플래시 메모리로부터 데이터를 판독하고, 플래시 메모리에 데이터를 기록하는 단위 및 플래시 메모리 내부의 데이터를 판독/기록하는 단위를 통합하는 것의 목적을 달성하므로, 플래시 메모리의 낮은 판독/기록 효율 및 플래시 메모리의 짧은 서비스 수명의 문제를 해결한다.
도 7은 본 발명의 제5 실시예에 따른 사용자 장비의 개략도이다. 도 7에 도시된 바와 같이, 장비는 네트워크 인터페이스(701), 하나 이상의 프로세서(702), 스토리지(703), 및 네트워크 인터페이스(701), 프로세서(702), 및 스토리지(703)를 연결하도록 구성된 시스템 버스(704)를 포함한다.
예를 들어, 프로세서(702)는 CPU일 수 있다.
네트워크 인터페이스(701)는 다른 장치와 통신하도록 구성된다.
스토리지(703)는 내부 메모리 및 플래시 메모리를 포함한다. 하나 이상의 프로그램은 스토리지(703)에 저장되고, 하나 이상의 프로세서 (702)에 의해 실행되도록 구성되며, 하나 이상의 프로그램은 다음의, 플래시 메모리의 판독 대상 데이터의 크기 및 판독 대상 데이터의 물리적 어드레스를 포함하는 데이터 판독 지시를 수신하는 단계, 버퍼에서 물리적 어드레스를 검색하는 단계, 버퍼에서 물리적 어드레스가 발견되지 않는 때, 판독 대상 데이터의 크기 및 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리에서 버퍼 데이터 영역을 분할하는 단계, 그리고 물리적 어드레스에 따라 플래시 메모리로부터 판독 대상 데이터를 판독하고, 버퍼 데이터 영역으로 판독 대상 데이터를 버퍼링하는 단계를 포함한다.
선택적으로, 버퍼 데이터 영역의 크기는 판독 대상 데이터의 크기보다 더 크고, 버퍼 데이터 영역의 크기는 플래시 메모리의 실제 물리적 블록 크기의 정수배이다.
선택적으로, 버퍼 데이터 영역의 크기는 판독 대상 데이터의 크기와 동일하고, 버퍼 데이터 영역의 크기는 플래시 메모리의 실제 물리적 블록 크기의 정수배이다.
또한, 하나 이상의 프로그램은 내부 메모리로부터 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하고, 버퍼 헤더로 버퍼 데이터 영역의 속성 정보 및 물리적 어드레스를 버퍼링하는 단계를 더 포함하고, 버퍼 데이터 영역의 속성 정보는 버퍼 데이터 영역의 어드레스 및 버퍼 데이터 영역의 크기를 포함한다.
선택적으로, 플래시 메모리의 실제 물리적 블록 사이즈는 플래시 메모리의 식별 정보 CID에 따라 플래시 메모리의 식별 정보 CID 및 플래시 메모리의 실제 물리적 블록 크기 사이의 대응 관계 테이블로부터 플래시 메모리의 드라이버 계층에 의해 획득된다.
또한, 하나 이상의 프로그램은 플래시 메모리의 블록 장치 계층을 사용하여 플래시 메모리의 드라이버 계층에 의해 전송된 플래시 메모리의 실제 물리적 블록 크기를 수신하는 단계를 더 포함한다.
도 8은 본 발명의 제6 실시예에 따른 사용자 장비의 개략도이다. 도 8에 도시된 바와 같이, 장비는 네트워크 인터페이스(801), 하나 이상의 프로세서(802), 메모리(803), 및 네트워크 인터페이스(801), 프로세서(802), 및 스토리지(803)을 연결하도록 구성된 시스템 버스(804)를 포함한다.
예를 들어, 프로세서(802)는 CPU일 수 있다.
네트워크 인터페이스(801)는 다른 장치와 통신하도록 구성된다.
스토리지(803)는 내부 메모리 및 플래시 메모리를 포함한다. 하나 이상의 프로그램은 스토리지(803)에 저장되고 하나 이상의 프로세서 (802)에 의해 실행되도록 구성되며, 하나 이상의 프로그램은 다음의, 기록 대상 데이터, 기록 대상 데이터의 크기, 및 플래시 메모리 내의 기록 대상 데이터의 물리적 어드레스를 포함하는 데이터 기록 지시를 수신하는 단계, 기록 대상 데이터 및 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리로부터 버퍼 데이터 영역을 분할하고, 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하는 단계, 버퍼 데이터 영역으로 기록 대상 데이터를 버퍼링하고, 버퍼 헤더로 버퍼 데이터 영역의 속성 정보 및 물리적 어드레스를 버퍼링하는 단계, 그리고 물리적 어드레스에 따라 플래시 메모리에 기록 대상 데이터를 기록하는 단계를 포함한다.
또한, 하나 이상의 프로그램은, 버퍼 데이터 영역에 식별자 정보를 부가하고, 버퍼 데이터 영역 내의 데이터가 플래시 메모리 내의 데이터와 일치하지 않는 때, 식별자 정보를 더티 데이터(dirty data)를 지시하는 정보로서 식별하는 단계, 그리고 내부 메모리의 점유율이 미리 설정된 제1 임계치보다 큰 경우, 더티 데이터를 지시하는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역 내의 데이터를 플래시 메모리에 기록하거나, 또는 버퍼 데이터 영역이 상주하는 시간이 미리 설정된 제2 임계치보다 큰 경우, 더티 데이터를 지시하는 정보인 식별자 정보에 대응하는 버퍼 데이터 영역 내의 데이터를 플래시 메모리에 기록하는 단계를 더 포함한다.
본 발명의 실시예에 의해 제공되는 사용자 장비에서, 버퍼 데이터 영역은 플래시 메모리의 실제 물리적 블록 크기에 따라 적용되어, 버퍼 데이터 영역을 동적으로 조정하는 것, 즉, 프로세서에 의해, 플래시 메모리로부터 데이터를 판독하고, 플래시 메모리에 데이터를 기록하는 단위 및 플래시 메모리 내부의 데이터를 판독/기록하는 단위를 통합하는 것의 목적을 달성하므로, 플래시 메모리의 낮은 판독/기록 효율 및 플래시 메모리의 짧은 서비스 수명의 문제를 해결한다.
당업자는 본 명세서에 개시된 실시예들에서 설명된 예들과 결합하여, 유닛들 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합에 의해 구현될 수 있다는 것을 더 인지할 수 있다. 하드웨어와 소프트웨어 간의 상호 호환성을 명확하게 설명하기 위해, 앞에서는 일반적으로 기능에 따라 각 예의 구성과 단계를 설명했다. 하드웨어 또는 소프트웨어에 의해 기능이 수행되는지 여부는 기술적 솔루션의 특정 애플리케이션 및 설계 제약 조건에 따른다. 당업자는 각 특정 애플리케이션에 대해 설명된 기능을 구현하기 위해 상이한 방법을 사용할 수 있지만, 구현이 본 발명의 범위를 벗어나는 것으로 고려되어서는 안된다.
본 명세서에 개시된 실시예들에서 설명된 방법 또는 알고리즘의 단계들은 하드웨어, 프로세서에 의해 실행되는 소프트웨어 모듈, 또는 이들의 조합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM(random access memory), 메모리, ROM, 전기적으로 프로그램 가능한 ROM, 전기적으로 소거 가능한 프로그래머블 ROM, 레지스터, 하드 디스크, 제거 가능한 디스크, CD-ROM, 또는 당 업계에 공지된 임의의 다른 형태의 저장 매체에 저장될 수 있다.
전술한 특정 구현 방식에서, 본 발명의 목적, 기술적 솔루션 및 이점이 더 상세히 설명된다. 전술한 설명은 본 발명의 특정 구현 방식일 뿐이며, 본 발명의 보호 범위를 제한하려는 의도는 아니라는 것을 이해해야 한다. 본 발명의 사상 및 원리를 벗어나지 않는 한 임의의 수정, 동등한 대체 또는 개선이 본 발명의 보호 범위 내에 있어야 한다.
Claims (21)
- 플래시 메모리로부터 데이터를 판독하기 위한 방법으로서,
판독 대상 데이터의 크기 및 상기 플래시 메모리의 상기 판독 대상 데이터의 물리적 어드레스(physical address)를 포함하는 데이터 판독 지시를 수신하는 단계,
버퍼에서 상기 물리적 어드레스를 검색하는 단계,
상기 버퍼에서 상기 물리적 어드레스가 발견되지 않는 때, 상기 판독 대상 데이터의 크기 및 상기 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리에서 버퍼 데이터 영역을 분할하는 단계, 그리고
상기 물리적 어드레스에 따라 상기 플래시 메모리로부터 상기 판독 대상 데이터를 판독하고, 상기 버퍼 데이터 영역으로 상기 판독 대상 데이터를 버퍼링(buffering)하는 단계
를 포함하는 방법. - 제1항에 있어서,
상기 버퍼 데이터 영역의 크기는 상기 판독 대상 데이터의 크기보다 더 크고, 상기 버퍼 데이터 영역의 크기는 상기 플래시 메모리의 실제 물리적 블록 크기의 정수배인,
방법. - 제1항에 있어서,
상기 버퍼 데이터 영역의 크기는 상기 판독 대상 데이터의 크기와 동일하고, 상기 버퍼 데이터 영역의 크기는 상기 플래시 메모리의 실제 물리적 블록 크기의 정수배인,
방법. - 제2항 또는 제3항에 있어서,
상기 내부 메모리에서 버퍼 데이터 영역을 분할하는 단계 이후 그리고 상기 물리적 어드레스에 따라 상기 플래시 메모리로부터 상기 판독 대상 데이터를 판독하기 이전에, 상기 내부 메모리로부터 상기 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하고, 상기 버퍼 헤더로 상기 버퍼 데이터 영역의 속성 정보 및 상기 물리적 어드레스를 버퍼링하는 단계
를 더 포함하고, 상기 버퍼 데이터 영역의 속성 정보는 상기 버퍼 데이터 영역의 어드레스 및 상기 버퍼 데이터 영역의 크기를 포함하는,
방법. - 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 플래시 메모리의 실제 물리적 블록 사이즈는, 상기 플래시 메모리의 식별 정보 CID(Card Identity)에 따라, 상기 플래시 메모리의 식별 정보 CID 및 상기 플래시 메모리의 실제 물리적 블록 크기 사이의 대응 관계 테이블로부터 상기 플래시 메모리의 드라이버 계층(driver layer)에 의해 획득되는,
방법. - 제1항에 있어서,
상기 데이터 판독 지시를 수신하는 단계 이전에, 상기 플래시 메모리의 블록 장치 계층을 사용하여 상기 플래시 메모리의 드라이버 계층에 의해 전송된 상기 플래시 메모리의 실제 물리적 블록 크기를 수신하는 단계
를 더 포함하는 방법. - 플래시 메모리에 데이터를 기록하기 위한 방법으로서,
기록 대상 데이터, 상기 기록 대상 데이터의 크기, 및 상기 플래시 메모리 내의 상기 기록 대상 데이터의 물리적 어드레스를 포함하는 데이터 기록 지시를 수신하는 단계,
상기 기록 대상 데이터 및 상기 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리로부터 버퍼 데이터 영역을 분할하고, 상기 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하는 단계,
상기 버퍼 데이터 영역으로 상기 기록 대상 데이터를 버퍼링하고, 상기 버퍼 헤더로 상기 버퍼 데이터 영역의 속성 정보 및 상기 물리적 어드레스를 버퍼링하는 단계, 그리고
상기 물리적 어드레스에 따라 상기 플래시 메모리에 상기 기록 대상 데이터를 기록하는 단계
를 포함하고, 상기 버퍼 데이터 영역의 속성 정보는 상기 버퍼 데이터 영역의 어드레스 및 상기 버퍼 데이터 영역의 크기를 포함하는,
방법. - 제7항에 있어서,
상기 버퍼 데이터 영역에 식별자 정보를 부가하고, 상기 버퍼 데이터 영역 내의 데이터가 상기 플래시 메모리 내의 데이터와 일치하지 않는 때, 상기 식별자 정보를 더티 데이터(dirty data)를 지시하는 정보로서 식별하는 단계, 그리고
상기 내부 메모리의 점유율이 미리 설정된 제1 임계치보다 큰 경우, 상기 더티 데이터를 지시하는 정보인 상기 식별자 정보에 대응하는 상기 버퍼 데이터 영역 내의 데이터를 상기 플래시 메모리에 기록하거나, 또는 상기 버퍼 데이터 영역이 상주하는 시간이 미리 설정된 제2 임계치보다 큰 경우, 상기 더티 데이터를 지시하는 정보인 상기 식별자 정보에 대응하는 상기 버퍼 데이터 영역 내의 데이터를 상기 플래시 메모리에 기록하는 단계
를 더 포함하는 방법. - 플래시 메모리로부터 데이터를 판독하기 위한 장치로서,
상기 플래시 메모리의 판독 대상 데이터의 크기 및 상기 판독 대상 데이터의 물리적 어드레스(physical address)를 포함하는 데이터 판독 지시를 수신하도록 구성된 수신 유닛,
버퍼에서 상기 수신 유닛에 의해 수신된 상기 물리적 어드레스를 검색하도록 구성된 검색 유닛,
상기 검색 유닛이 상기 버퍼에서 상기 물리적 어드레스를 발견하지 않는 때, 상기 판독 대상 데이터의 크기 및 상기 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리에서 버퍼 데이터 영역을 분할하도록 구성된 분할 유닛, 그리고
상기 물리적 어드레스에 따라 상기 플래시 메모리로부터 상기 판독 대상 데이터를 판독하고, 상기 분할 유닛에 의해 분할된 상기 버퍼 데이터 영역으로 상기 판독 대상 데이터를 버퍼링(buffer)하도록 구성된 버퍼링 유닛
을 포함하는 장치. - 제9항에 있어서,
상기 분할 유닛은 상기 내부 메모리로부터 상기 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하고, 상기 버퍼 헤더에 상기 버퍼 데이터 영역의 속성 정보 및 상기 물리적 어드레스를 버퍼링하며, 상기 버퍼 데이터 영역의 속성 정보는 상기 버퍼 데이터 영역의 어드레스 및 상기 버퍼 데이터 영역의 크기를 포함하고,
(1) 상기 버퍼 데이터 영역의 크기는 상기 판독 대상 데이터의 크기보다 더 크고, 상기 버퍼 데이터 영역의 크기는 상기 플래시 메모리의 실제 물리적 블록 크기의 정수배이거나, 또는 (2) 상기 버퍼 데이터 영역의 크기는 상기 판독 대상 데이터의 크기와 동일하고, 상기 버퍼 데이터 영역의 크기는 상기 플래시 메모리의 실제 물리적 블록 크기의 정수배이며,
상기 플래시 메모리의 실제 물리적 블록 사이즈는 상기 플래시 메모리의 식별 정보 CID(Card Identity)에 따라 상기 플래시 메모리의 식별 정보 CID 및 상기 플래시 메모리의 실제 물리적 블록 크기 사이의 대응 관계 테이블로부터 상기 플래시 메모리의 드라이버 계층(driver layer)에 의해 획득되는,
장치. - 제9항 또는 제10항에 있어서,
상기 수신 유닛은 상기 플래시 메모리의 블록 장치 계층을 사용하여 상기 플래시 메모리의 드라이버 계층에 의해 전송된 상기 플래시 메모리의 실제 물리적 블록 크기를 수신하도록 더 구성된,
장치. - 플래시 메모리에 데이터를 기록하기 위한 장치로서,
기록 대상 데이터, 상기 기록 대상 데이터의 크기, 및 상기 플래시 메모리 내의 상기 기록 대상 데이터의 물리적 어드레스를 포함하는 데이터 기록 지시를 수신하도록 구성된 수신 유닛,
상기 수신 유닛에 의해 수신된 상기 기록 대상 데이터 및 상기 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리로부터 버퍼 데이터 영역을 분할하고, 상기 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하도록 구성된 분할 유닛,
상기 분할 유닛에 의해 분할된 상기 버퍼 데이터 영역으로 상기 기록 대상 데이터를 버퍼링하고, 상기 분할 유닛에 의해 분할된 상기 버퍼 헤더로 상기 버퍼 데이터 영역의 속성 정보 및 상기 물리적 어드레스를 버퍼링하도록 구성된 버퍼링 유닛, 그리고
상기 물리적 어드레스에 따라 상기 플래시 메모리에 상기 기록 대상 데이터를 기록하도록 구성된 기록 유닛
을 포함하고, 상기 버퍼 데이터 영역의 속성 정보는 상기 버퍼 데이터 영역의 어드레스 및 상기 버퍼 데이터 영역의 크기를 포함하는,
장치. - 제12항에 있어서,
상기 버퍼 데이터 영역에 식별자 정보를 부가하고, 상기 버퍼 데이터 영역 내의 데이터가 상기 플래시 메모리 내의 데이터와 일치하지 않는 때, 상기 식별자 정보를 더티 데이터(dirty data)를 지시하는 정보로서 식별하도록 구성된 부가(adding) 유닛을 더 포함하고,
상기 부가 유닛은 (1) 상기 내부 메모리의 점유율이 미리 설정된 제1 임계치보다 큰 경우, 상기 부가 유닛에 의해 부가된 정보로서 상기 더티 데이터를 지시하는 정보인 상기 식별자 정보에 대응하는 상기 버퍼 데이터 영역 내의 데이터를 상기 플래시 메모리에 기록하거나, 또는 (2) 상기 버퍼 데이터 영역이 상주하는 시간이 미리 설정된 제2 임계치보다 큰 경우, 상기 부가 유닛에 의해 부가된 정보로서 상기 더티 데이터를 지시하는 정보인 상기 식별자 정보에 대응하는 상기 버퍼 데이터 영역 내의 데이터를 상기 플래시 메모리에 기록하도록 더 구성된,
장치. - 네트워크 인터페이스,
하나 이상의 프로세서,
내부 메모리 및 플래시 메모리를 포함하는 스토리지, 그리고
상기 스토리지에 저장되고, 상기 하나 이상의 프로세서에 의해 실행되도록 구성된 하나 이상의 프로그램
을 포함하고, 상기 하나 이상의 프로그램은,
상기 플래시 메모리의 판독 대상 데이터의 크기 및 상기 판독 대상 데이터의 물리적 어드레스(physical address)를 포함하는 데이터 판독 지시를 수신하는 단계,
버퍼에서 상기 물리적 어드레스를 검색하는 단계,
상기 버퍼에서 상기 물리적 어드레스가 발견되지 않는 때, 상기 판독 대상 데이터의 크기 및 상기 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리에서 버퍼 데이터 영역을 분할하는 단계, 그리고
상기 물리적 어드레스에 따라 상기 플래시 메모리로부터 상기 판독 대상 데이터를 판독하고, 상기 버퍼 데이터 영역으로 상기 판독 대상 데이터를 버퍼링(buffering)하는 단계를 포함하는,
사용자 장비. - 제14항에 있어서,
상기 버퍼 데이터 영역의 크기는 상기 판독 대상 데이터의 크기보다 더 크고, 상기 버퍼 데이터 영역의 크기는 상기 플래시 메모리의 실제 물리적 블록 크기의 정수배인,
사용자 장비. - 제14항에 있어서,
상기 버퍼 데이터 영역의 크기는 상기 판독 대상 데이터의 크기와 동일하고, 상기 버퍼 데이터 영역의 크기는 상기 플래시 메모리의 실제 물리적 블록 크기의 정수배인,
사용자 장비. - 제15항 또는 제16항에 있어서,
상기 하나 이상의 프로그램은 상기 내부 메모리로부터 상기 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하고, 상기 버퍼 헤더로 상기 버퍼 데이터 영역의 속성 정보 및 상기 물리적 어드레스를 버퍼링하는 단계를 더 포함하고, 상기 버퍼 데이터 영역의 속성 정보는 상기 버퍼 데이터 영역의 어드레스 및 상기 버퍼 데이터 영역의 크기를 포함하는,
사용자 장비. - 제14항 내지 제17항 중 어느 한 항에 있어서,
상기 플래시 메모리의 실제 물리적 블록 사이즈는 상기 플래시 메모리의 식별 정보 CID(Card Identity)에 따라 상기 플래시 메모리의 식별 정보 CID 및 상기 플래시 메모리의 실제 물리적 블록 크기 사이의 대응 관계 테이블로부터 상기 플래시 메모리의 드라이버 계층(driver layer)에 의해 획득되는,
사용자 장비. - 제14항에 있어서,
상기 하나 이상의 프로그램은 상기 플래시 메모리의 블록 장치 계층을 사용하여 상기 플래시 메모리의 드라이버 계층에 의해 전송된 상기 플래시 메모리의 실제 물리적 블록 크기를 수신하는 단계
를 더 포함하는 사용자 장비. - 네트워크 인터페이스,
하나 이상의 프로세서,
내부 메모리 및 플래시 메모리를 포함하는 스토리지, 그리고
상기 스토리지에 저장되고, 상기 하나 이상의 프로세서에 의해 실행되도록 구성된 하나 이상의 프로그램
을 포함하고, 상기 하나 이상의 프로그램은,
기록 대상 데이터, 상기 기록 대상 데이터의 크기, 및 상기 플래시 메모리 내의 상기 기록 대상 데이터의 물리적 어드레스를 포함하는 데이터 기록 지시를 수신하는 단계,
상기 기록 대상 데이터 및 상기 플래시 메모리의 실제 물리적 블록 크기에 따라 내부 메모리로부터 버퍼 데이터 영역을 분할하고, 상기 버퍼 데이터 영역에 대응하는 버퍼 헤더를 분할하는 단계,
상기 버퍼 데이터 영역으로 상기 기록 대상 데이터를 버퍼링하고, 상기 버퍼 헤더로 상기 버퍼 데이터 영역의 속성 정보 및 상기 물리적 어드레스를 버퍼링하는 단계, 그리고
상기 물리적 어드레스에 따라 상기 플래시 메모리에 상기 기록 대상 데이터를 기록하는 단계를 포함하고,
상기 버퍼 데이터 영역의 속성 정보는 상기 버퍼 데이터 영역의 어드레스 및 상기 버퍼 데이터 영역의 크기를 포함하는,
사용자 장비. - 제20항에 있어서,
상기 하나 이상의 프로그램은,
상기 버퍼 데이터 영역에 식별자 정보를 부가하고, 상기 버퍼 데이터 영역 내의 데이터가 상기 플래시 메모리 내의 데이터와 일치하지 않는 때, 상기 식별자 정보를 더티 데이터(dirty data)를 지시하는 정보로서 식별하는 단계, 그리고
상기 내부 메모리의 점유율이 미리 설정된 제1 임계치보다 큰 경우, 상기 더티 데이터를 지시하는 정보인 상기 식별자 정보에 대응하는 상기 버퍼 데이터 영역 내의 데이터를 상기 플래시 메모리에 기록하거나, 또는 상기 버퍼 데이터 영역이 상주하는 시간이 미리 설정된 제2 임계치보다 큰 경우, 상기 더티 데이터를 지시하는 정보인 상기 식별자 정보에 대응하는 상기 버퍼 데이터 영역 내의 데이터를 상기 플래시 메모리에 기록하는 단계를 더 포함하는,
사용자 장비.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/080686 WO2015196378A1 (zh) | 2014-06-25 | 2014-06-25 | 读写闪存中数据的方法、装置及用户设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20170010810A true KR20170010810A (ko) | 2017-02-01 |
Family
ID=54936449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167035646A KR20170010810A (ko) | 2014-06-25 | 2014-06-25 | 플래시 메모리 내에 데이터를 판독/기록하기 위한 방법, 장치 및 사용자 장비 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10152274B2 (ko) |
EP (1) | EP3142014B1 (ko) |
JP (1) | JP2017527877A (ko) |
KR (1) | KR20170010810A (ko) |
CN (1) | CN105393228B (ko) |
WO (1) | WO2015196378A1 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110119248B (zh) * | 2016-12-05 | 2021-10-15 | 华为技术有限公司 | 数据读写命令的控制方法、存储设备和系统 |
US10769075B2 (en) * | 2018-05-10 | 2020-09-08 | Sap Se | Storage of database dictionary structures in non-volatile memory |
CN109614048B (zh) * | 2018-12-10 | 2022-11-11 | 深圳市硅格半导体有限公司 | 基于闪存的数据读写方法、装置及计算机可读存储介质 |
CN111694769A (zh) * | 2019-03-15 | 2020-09-22 | 上海寒武纪信息科技有限公司 | 数据读取方法及装置 |
CN111857578A (zh) * | 2020-06-30 | 2020-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种数据信息的读写方法、装置、设备及存储介质 |
TWI761983B (zh) * | 2020-07-16 | 2022-04-21 | 慧榮科技股份有限公司 | 主機效能加速模式的資料讀取方法及裝置 |
CN112131144B (zh) * | 2020-09-27 | 2023-09-26 | 芯天下技术股份有限公司 | 串行接口nand存储芯片及从其中读取数据的方法 |
US11977485B2 (en) | 2021-05-13 | 2024-05-07 | Samsung Electronics Co., Ltd. | Method of cache management based on file attributes, and cache management device operating based on file attributes |
CN115766627A (zh) * | 2022-11-09 | 2023-03-07 | 上海航天计算机技术研究所 | 一种星载高速交换存储一体化缓存控制方法及装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6016472A (en) * | 1997-09-29 | 2000-01-18 | Lucent Technologies Inc. | System and method for interfacing a digital audio processor to a low-speed serially addressable storage device |
JP2005128596A (ja) * | 2003-10-21 | 2005-05-19 | Sony Corp | 情報処理装置および方法、記録媒体、プログラム、並びにコンテンツ関連データ |
US7173863B2 (en) | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
US7383375B2 (en) | 2003-12-30 | 2008-06-03 | Sandisk Corporation | Data run programming |
EP2225643B1 (en) * | 2007-12-28 | 2020-05-06 | Toshiba Memory Corporation | Semiconductor storage device |
CN101533662B (zh) * | 2009-04-09 | 2011-08-10 | 成都市华为赛门铁克科技有限公司 | 一种闪存读写方法与闪存设备 |
US8688897B2 (en) * | 2010-05-28 | 2014-04-01 | International Business Machines Corporation | Cache memory management in a flash cache architecture |
JP5756622B2 (ja) | 2010-11-30 | 2015-07-29 | 株式会社日立製作所 | 半導体装置 |
US9122631B2 (en) | 2011-11-07 | 2015-09-01 | Peking University | Buffer management strategies for flash-based storage systems |
CN103064803B (zh) * | 2012-12-10 | 2015-11-25 | 华为技术有限公司 | 一种NAND Flash存储设备的数据读写方法和装置 |
CN103425602B (zh) * | 2013-08-15 | 2017-09-08 | 深圳市江波龙电子有限公司 | 一种闪存存储设备数据读写的方法、装置及主机系统 |
CN103559146B (zh) | 2013-11-05 | 2016-03-30 | 山东大学 | 一种提高NAND flash控制器读写速度的方法 |
-
2014
- 2014-06-25 WO PCT/CN2014/080686 patent/WO2015196378A1/zh active Application Filing
- 2014-06-25 KR KR1020167035646A patent/KR20170010810A/ko not_active Application Discontinuation
- 2014-06-25 US US15/319,166 patent/US10152274B2/en active Active
- 2014-06-25 EP EP14895589.1A patent/EP3142014B1/en active Active
- 2014-06-25 JP JP2016575098A patent/JP2017527877A/ja active Pending
- 2014-06-25 CN CN201480036355.4A patent/CN105393228B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
EP3142014A4 (en) | 2017-06-28 |
EP3142014B1 (en) | 2023-05-17 |
EP3142014A1 (en) | 2017-03-15 |
CN105393228B (zh) | 2019-09-03 |
CN105393228A (zh) | 2016-03-09 |
JP2017527877A (ja) | 2017-09-21 |
US20170153850A1 (en) | 2017-06-01 |
US10152274B2 (en) | 2018-12-11 |
WO2015196378A1 (zh) | 2015-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20170010810A (ko) | 플래시 메모리 내에 데이터를 판독/기록하기 위한 방법, 장치 및 사용자 장비 | |
US8417901B2 (en) | Combining write commands to overlapping addresses or to a specific page | |
US10409502B2 (en) | Method and apparatus for writing metadata into cache | |
EP2631916B1 (en) | Data deletion method and apparatus | |
US9015695B2 (en) | Information processing apparatus and information processing method | |
TW201931132A (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 | |
US20170123712A1 (en) | Data Deduplication Method and Apparatus | |
KR101730151B1 (ko) | 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템 | |
CN109522154B (zh) | 数据恢复方法及相关设备与系统 | |
EP3364303B1 (en) | Data arrangement method, storage apparatus, storage controller and storage array | |
CN112799595B (zh) | 数据处理方法、设备及存储介质 | |
EP2919120A1 (en) | Memory monitoring method and related device | |
KR20140093505A (ko) | 단말기의 메모리 확장 장치 및 방법 | |
CN110888602A (zh) | 基于固态硬盘的读性能提升方法、装置及计算机设备 | |
CN105138481A (zh) | 存储数据的处理方法、装置和系统 | |
CN114089915B (zh) | 基于flash存储器的文件追加写操作方法及装置 | |
US9524236B1 (en) | Systems and methods for performing memory management based on data access properties | |
WO2014153931A1 (zh) | 文件存储方法、装置、访问客户端及元数据服务器系统 | |
CN112181275A (zh) | 一种数据处理器及数据处理方法 | |
CN110187837B (zh) | 一种文件存取方法、装置及文件系统 | |
CN104252423A (zh) | 基于多内核处理器的一致性处理方法和装置 | |
CN108984432B (zh) | 一种处理io请求的方法及装置 | |
CN107870736B (zh) | 支持大于4gb非线性闪存的方法及装置 | |
US10642494B2 (en) | Method, electronic device and computer program product for data processing | |
CN110825714A (zh) | 文件存储控制方法及其装置、文件存储装置、电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |