KR20100121389A - Storage device based on a flash memory and user device including the same - Google Patents
Storage device based on a flash memory and user device including the same Download PDFInfo
- Publication number
- KR20100121389A KR20100121389A KR1020090106106A KR20090106106A KR20100121389A KR 20100121389 A KR20100121389 A KR 20100121389A KR 1020090106106 A KR1020090106106 A KR 1020090106106A KR 20090106106 A KR20090106106 A KR 20090106106A KR 20100121389 A KR20100121389 A KR 20100121389A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- controller
- deleted
- memory
- invalidation
- Prior art date
Links
Images
Classifications
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- 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
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
Abstract
Description
본 발명은 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치에 관한 것이다.The present invention relates to a storage device based on a flash memory and a user device including the same.
사용자 장치(user device)는 퍼스널 컴퓨터, 디지털 카메라, 캠코더, 휴대 전화, MP3, PMP, PDA 등과 같은 호스트뿐만 아니라, 메모리 카드, USB 메모리, 솔리드 스테이트 드라이브(SSD), 하드 디스크 드라이브(HDD) 등과 같은 저장 장치를 포함할 수 있다. 사용자 장치는 호스트 내부에 저장 장치를 포함할 수도 있다. 저장 장치는 DRAM, SRAM 등과 같은 휘발성 메모리와 EEPROM, FRAM, PRAM, MRAM, Flash Memory 등과 같은 불휘발성 메모리를 포함할 수 있다. User devices are not only hosts such as personal computers, digital cameras, camcorders, mobile phones, MP3, PMPs, PDAs, etc., but also memory cards, USB memories, solid state drives (SSDs), hard disk drives (HDDs), etc. It may include a storage device. The user device may include a storage device inside the host. The storage device may include volatile memory such as DRAM, SRAM, and the like, and nonvolatile memory such as EEPROM, FRAM, PRAM, MRAM, and Flash Memory.
저장 장치에 저장된 데이터는 사용자의 명령에 의해 삭제될 수 있다. 일반적으로 삭제 동작은 호스트의 파일 시스템(예를 들면, FAT 등)을 통해 수행된다. 파일 시스템은 저장 장치에 삭제 명령(delete command)을 인가한다. 또한, 파일 시스템은 일정 조건 하에서 삭제된 데이터를 복구할 수 있다. 파일 시스템은 데이터를 복구하기 위해 복구 명령(recovery command)을 인가한다. Data stored in the storage device may be deleted by a user's command. Generally, the delete operation is performed through the host's file system (for example, FAT). The file system issues a delete command to the storage device. In addition, the file system can recover deleted data under certain conditions. The file system authorizes a recovery command to recover the data.
본 발명의 목적은 호스트 명령에 대한 응답 속도를 향상시킬 수 있는 저장 장치 및 그것을 포함한 사용자 장치를 제공하는 데 있다. 본 발명의 다른 목적은 보안 데이터의 노출을 방지할 수 있는 저장 장치 및 그것을 포함한 사용자 장치를 제공하는 데 있다.An object of the present invention is to provide a storage device and a user device including the same that can improve the response speed to the host command. Another object of the present invention is to provide a storage device capable of preventing the exposure of secure data and a user device including the same.
본 발명에 따른 사용자 장치는 데이터를 저장하기 위한 저장 매체; 및 상기 저장 매체를 제어하기 위한 컨트롤러를 포함하되, 상기 컨트롤러는 삭제될 데이터의 크기가 기준 크기를 초과하는지의 여부에 따라, 무효화 동작 또는 로깅 동작을 선택적으로 수행할 수 있다. 상기 기준 크기는 펌웨어 업데이트를 통해 가변 가능하다. A user device according to the present invention includes a storage medium for storing data; And a controller for controlling the storage medium, wherein the controller may selectively perform an invalidation operation or a logging operation according to whether the size of data to be deleted exceeds a reference size. The reference size is variable through a firmware update.
실시 예로서, 사용자 장치는 파일 시스템을 이용하여 파일 데이터를 관리하는 호스트를 더 포함하고, 상기 컨트롤러는 상기 호스트의 파일 시스템 정보를 이용하여 무효화 동작을 수행할 수 있다. 상기 저장 매체는 상기 파일 시스템 정보를 저장하기 위한 영역을 포함할 수 있다.In an embodiment, the user device may further include a host that manages file data using a file system, and the controller may perform invalidation using the file system information of the host. The storage medium may include an area for storing the file system information.
다른 실시 예로서, 사용자 장치는 무효화 명령을 제공하기 위한 호스트; 및 상기 저장 매체에 저장될 데이터를 임시로 저장하기 위한 버퍼 메모리를 더 포함하고, 상기 컨트롤러는 상기 무효화 명령에 응답하여 상기 버퍼 메모리에 저장된 데이터를 무효화할 수 있다. 상기 컨트롤러는 상기 버퍼 메모리에 저장된 데이터를 무효화하기 위한 맵핑 테이블을 포함할 수 있다. 상기 컨트롤러는 상기 무효화 명령에 응답하여 상기 맵핑 테이블을 갱신할 수 있다.In another embodiment, a user device includes a host for providing an invalidation command; And a buffer memory for temporarily storing data to be stored in the storage medium, wherein the controller may invalidate data stored in the buffer memory in response to the invalidation command. The controller may include a mapping table for invalidating data stored in the buffer memory. The controller may update the mapping table in response to the invalidation command.
또 다른 실시 예로서, 사용자 장치는 상기 저장 매체에 저장될 데이터를 임시로 저장하기 위한 버퍼 메모리를 갖는 호스트를 더 포함하고, 상기 호스트는 상기 버퍼 메모리에 대한 무효화 동작을 수행할 수 있다. 상기 호스트는 상기 버퍼 메모리에 저장된 데이터를 무효화하기 위한 맵핑 테이블을 포함할 수 있다.In another embodiment, the user device may further include a host having a buffer memory for temporarily storing data to be stored in the storage medium, and the host may perform an invalidation operation on the buffer memory. The host may include a mapping table for invalidating data stored in the buffer memory.
또 다른 실시 예로서, 상기 컨트롤러는 쓰기 동작이 요청될 때, 상기 쓰기 동작이 메타 데이터와 관련된 것인지 여부를 판별하고, 판별 결과에 따라 사용자 데이터의 맵핑 정보를 갱신할 수 있다. 상기 쓰기 동작이 파티션 메타 데이터와 관련된 것으로 판별될 때, 상기 컨트롤러는 상기 파티션 메타 데이터에 대응하는 사용자 데이터가 무효화되도록 상기 맵핑 정보를 갱신할 수 있다.As another embodiment, when a write operation is requested, the controller may determine whether the write operation is related to metadata and update the mapping information of the user data according to the determination result. When it is determined that the write operation is related to partition metadata, the controller may update the mapping information so that user data corresponding to the partition metadata is invalidated.
또 다른 실시 예로서, 사용자 장치의 컨트롤러는 삭제될 데이터에 대한 소거 동작을 지연시킬 수 있다. 상기 컨트롤러는 삭제될 데이터에 대한 무효화 동작을 지연하기 위한 무효 지연 큐(invalid delay queue)를 포함할 수 있다. 상기 무효 지연 큐에는 삭제될 데이터가 순차적으로 등록되고, 선입선출 방식에 따라 순차적으로 무효화 될 수 있다.As another example, the controller of the user device may delay an erase operation on data to be deleted. The controller may include an invalid delay queue for delaying an invalidation operation on data to be deleted. Data to be deleted may be sequentially registered in the invalid delay queue, and may be sequentially invalidated according to a first-in first-out method.
본 발명의 실시 예에 따른 사용자 장치의 다른 일면은 데이터를 저장하기 위한 저장 매체; 및 상기 저장 매체를 제어하기 위한 컨트롤러를 포함하되, 상기 컨트롤러는 삭제될 데이터가 보안이 필요한 데이터인지 여부를 판별하고, 판별 결과에 따라 무효화 동작을 선택적으로 수행할 수 있다. 여기에서, 상기 삭제될 데이터 가 보안을 필요로 하지 않는 경우에, 상기 컨트롤러는 삭제될 데이터의 크기가 기준 크기를 초과하는지의 여부에 따라, 무효화 동작 또는 로깅 동작을 선택적으로 수행할 수 있다. 상기 삭제될 데이터가 보안을 필요로 하는 경우에, 상기 컨트롤러는 지연 없이 무효화 동작을 수행할 수 있다.Another aspect of the user device according to an embodiment of the present invention is a storage medium for storing data; And a controller for controlling the storage medium, wherein the controller may determine whether the data to be deleted is data that requires security, and selectively perform an invalidation operation according to the determination result. Here, when the data to be deleted does not require security, the controller may selectively perform an invalidation operation or a logging operation according to whether the size of the data to be deleted exceeds a reference size. When the data to be deleted requires security, the controller can perform an invalidation operation without delay.
실시 예로서, 사용자 장치는 파일 시스템을 이용하여 파일 데이터를 관리하는 호스트를 더 포함하고, 상기 컨트롤러는 상기 호스트의 파일 시스템 정보를 이용하여 무효화 동작을 수행할 수 있다.In an embodiment, the user device may further include a host that manages file data using a file system, and the controller may perform invalidation using the file system information of the host.
다른 실시 예로서, 사용자 장치는 무효화 명령을 제공하기 위한 호스트; 및 상기 저장 매체에 저장될 데이터를 임시로 저장하기 위한 버퍼 메모리를 더 포함하고, 상기 컨트롤러는 상기 무효화 명령에 응답하여 상기 버퍼 메모리에 저장된 데이터를 무효화할 수 있다.In another embodiment, a user device includes a host for providing an invalidation command; And a buffer memory for temporarily storing data to be stored in the storage medium, wherein the controller may invalidate data stored in the buffer memory in response to the invalidation command.
또 다른 실시 예로서, 상기 컨트롤러는 쓰기 동작이 요청될 때, 상기 쓰기 동작이 메타 데이터와 관련된 것인지 여부를 판별하고, 판별 결과에 따라 사용자 데이터의 맵핑 정보를 갱신할 수 있다.As another embodiment, when a write operation is requested, the controller may determine whether the write operation is related to metadata and update the mapping information of the user data according to the determination result.
또 다른 실시 예로서, 상기 컨트롤러는 삭제될 데이터에 대한 무효화 동작을 지연하기 위한 무효 지연 큐(invalid delay queue)를 포함할 수 있다.In another embodiment, the controller may include an invalid delay queue for delaying an invalidation operation on data to be deleted.
본 발명에 따르면, 호스트 명령에 대한 응답 속도를 향상시킬 수 있고, 본 발명의 다른 목적은 보안 데이터의 노출을 방지할 수 있다.According to the present invention, the response speed to the host command can be improved, and another object of the present invention can be prevented from exposing security data.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 맵핑을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described with reference to the accompanying drawings so that those skilled in the art may easily implement the technical mapping of the present invention. .
사용자 장치(user device)는 호스트(host)와 저장 장치(storage device)를 포함한다. 사용자 장치는 하드웨어로 프로세서, 메인 메모리, 그리고 저장 매체를 포함할 수 있다. 여기에서, 프로세서나 메인 메모리는 호스트에 포함될 수 있고, 저장 매체(예를 들면, 플래시 메모리나 PRMA 등)는 저장 장치에 포함될 수 있다. 또한, 사용자 장치는 소프트웨어로, 사용자 애플리케이션(user application), O/S, 파일 시스템, FTL(Flash Translation Layer) 등을 포함할 수 있다.A user device includes a host and a storage device. The user device may include a processor, main memory, and a storage medium in hardware. Here, the processor or the main memory may be included in the host, and the storage medium (eg, flash memory or PRMA, etc.) may be included in the storage device. In addition, the user device may be software, and may include a user application, an O / S, a file system, a flash translation layer (FTL), and the like.
호스트에서 생성된 파일(들)은 파일 시스템에 의해서 관리된다. 호스트의 프로세서 (예를 들면, CPU)의 제어에 따라, 파일 데이터는 저장 장치로 전송된다. 전송된 데이터는 저장 장치의 저장 매체 (예를 들면, 플래시 메모리나 PRAM 등)에 저장될 것이다. 한편, 호스트에 의해서 요청된 파일 데이터는 저장 장치에서 호스트의 메인 메모리로 전송될 것이다.File (s) created on the host are managed by the file system. Under the control of the host's processor (eg, CPU), the file data is transferred to the storage device. The transferred data will be stored in a storage medium of the storage device (eg flash memory or PRAM, etc.). Meanwhile, file data requested by the host will be transferred from the storage device to the host's main memory.
호스트에서 임의의 파일이 삭제될 경우, 파일 시스템에 의해서 그러한 파일은 삭제된 파일로 처리될 것이다. 파일이 삭제되었음은 파일 시스템 관리 데이터로서 삭제된 파일의 메타 데이터가 변경되었음을 의미한다. 호스트에서 파일이 삭제되더라도(다시 말해서, 삭제된 파일의 메타 데이터가 파일 시스템에 의해서 변경되더라도), 저장 장치는 무효한 파일인지의 여부를 판단할 수 없다. If any file is deleted from the host, the file system will treat the file as deleted. Deleting a file means that the metadata of the deleted file is changed as file system management data. Even if a file is deleted from the host (in other words, even if the deleted file's metadata is changed by the file system), the storage device cannot determine whether the file is invalid.
그러한 까닭에, 무효한 파일에 대한 머지 동작(merge operation)이나 가비지 컬렉션 동작(Garbage Collection operation)이 수행되며, 이는 저장 장치의 동작 성능이 저하됨을 의미한다. 또한, 무효한 파일이 마치 유효한 데이터처럼 저장 장치에 저장되어 있으며, 이는 저장 장치의 유효한 저장 공간이 감소함을 의미한다.Therefore, a merge operation or garbage collection operation is performed on the invalid file, which means that the performance of the storage device is degraded. In addition, the invalid file is stored in the storage device as if it is valid data, which means that the effective storage space of the storage device is reduced.
본 발명의 실시 예에 따른 저장 장치 또는 그것을 포함하는 사용자 장치는 무효화 동작을 통해, 무효 데이터에 대한 머지 동작이나 가비지 컬렉션 동작 등을 줄일 수 있다. 본 발명에 의하면, 저장 장치나 사용자 장치의 동작 성능을 향상시킬 수 있고, 저장 장치의 저장 공간이나 사용 수명을 늘릴 수 있다. 이하에서는 무효화 동작을 수행하는 사용자 장치의 다양한 실시 예가 설명될 것이다. The storage device or the user device including the same according to an exemplary embodiment of the present invention may reduce a merge operation or garbage collection operation on invalid data through an invalidation operation. According to the present invention, the operating performance of the storage device or the user device can be improved, and the storage space and the service life of the storage device can be increased. Hereinafter, various embodiments of a user device performing an invalidation operation will be described.
Ⅰ. Ⅰ. 로깅Logging 방식을 이용하여 무효화 동작을 수행하는 사용자 장치 User device that performs invalidation using
도 1은 로깅 방식을 이용하여 무효화 동작을 수행하는 사용자 장치를 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 실시 예에 따른 사용자 장치(1000)는 호스트(1100)와 저장 장치(1200)를 포함한다.1 is a block diagram illustrating an example of a user device performing an invalidation operation using a logging scheme. Referring to FIG. 1, a
호스트(1100)는 저장 장치(1200)를 제어하도록 구성될 것이다. 호스트(1100)는, 예를 들면, 개인용/휴대용 컴퓨터, PDA, PMP, MP3 플레이어 등과 같은 휴대용 전자 장치를 포함한다. 저장 장치(1200)에 저장된 데이터의 내용(예를 들면, 파일들)이 호스트(1100)에서 삭제되는 경우, 호스트(1100)는 삭제된 내용의 파일에 관련된 메타 데이터를 처리함으로써, 삭제된 내용의 파일을 무효화시킨다. The
호스트(1100)는 필요에 따라 파일들의 무효화(또는, 삭제)를 저장 장치(1200)로 통보한다. 이는 호스트(1100)가 특정 명령을 저장 장치(1200)로 전송함 으로써 달성될 것이다. 이하, 그러한 특정 명령을 "무효화 명령"(invalidity command)이라 칭한다. 무효화 명령에는 삭제될 영역을 지정하기 위한 정보(예를 들면, 어드레스 정보)가 포함될 수 있다. 무효화 명령은 파일 삭제 명령(file delete command), 트림 명령(invalidity command), 무효화 명령(unwrite command), 삭제 명령(deletion command) 등 다양한 이름으로 쓰일 수 있다.The
삭제될 파일에 대한 메타 데이터의 처리는 호스트(1100)의 파일 시스템에 의해서 행해질 것이다. 파일 시스템은 빠른 동작을 위해서, 파일의 내용을 삭제하는 것이 아니라 파일의 메타 데이터만을 삭제할 것이다. 파일 시스템 중에 FAT 파일 시스템의 예로서, 삭제된 파일을 가리키기 위한 파일명의 첫 문자로 하나의 특수한 코드가 사용될 수 있다. 예를 들면, 파일명의 첫 글자의 자리에 십육진수 바이트 코드인 'E5h'를 위치시킨다. 이것은 하나의 특별한 꼬리표로서, '이 파일은 삭제되었습니다.'라는 것을 말해준다. Processing of the metadata for the file to be deleted will be done by the file system of the
임의의 파일이 삭제될 때, 파일 시스템은 삭제된 파일의 파일명의 첫 문자에 하나의 특수한 코드를 위치시킬 것이다. 파일 시스템에 의해서 삭제될 파일의 메타 데이터가 처리되는 경우, 삭제될 파일의 내용이 파일 시스템에서는 무효한 데이터로 처리되는 반면에 저장 장치(1200)에서는 유효한 데이터로 남아있게 된다. When any file is deleted, the file system will place one special code in the first character of the file name of the deleted file. When the metadata of a file to be deleted is processed by the file system, the content of the file to be deleted is treated as invalid data in the file system, while the
이러한 이유로, 저장 장치(1200)는 삭제된 파일의 데이터를 포함한 메모리 블록을 유효한 블록으로 인식할 것이다. 따라서, 머지 동작이나 가비지 컬렉션 동작 등과 같은 작업이 메모리 블록(삭제된 파일의 데이터를 포함함)에 대해서 행해지며, 그 결과 저장 장치(1200) 또는 사용자 장치의 성능이 저하될 것이다. 이를 방지하기 위해서, 호스트(1100)의 파일 시스템은 삭제된 파일의 내용이 저장 장치(1200)에서 실질적으로 무효화되도록 저장 장치(1200)로 무효화 명령을 제공할 것이다.For this reason, the
계속해서 도 1을 참조하면, 저장 장치(1200)는 호스트(1100)의 제어에 응답하여 동작할 것이다. 저장 장치(1200)는 전원이 차단되더라도 저장된 데이터를 유지할 것이다. 저장 장치(1200)는, 예를 들면, 솔리드 스테이트 드라이브(Solid-State Drive: SSD)일 것이다. 하지만, 저장 장치(1200)가 SSD에 국한되지 않음은 잘 이해될 것이다. 1, the
저장 장치(1200)는 SSD 컨트롤러(1220A)와 저장 매체(1240)를 포함할 것이다. SSD 컨트롤러(1220A)는 호스트(1100)로부터의 요청에 응답하여 저장 매체(1240)를 제어할 것이다. SSD 컨트롤러(1220A)는 복수의 채널들(CH1∼CHn)을 통해 저장 매체(1240)와 연결될 것이다. 저장 매체(1240)는 복수의 불휘발성 메모리 칩들로 구성될 것이다. 채널들(CH1∼CHn) 각각에는 복수의 불휘발성 메모리 칩들이 공통으로 연결될 것이다. The
저장 매체(1240)는, 예를 들면, 복수의 플래시 메모리 칩들로 구성될 것이다. 하지만, 저장 매체(1240)가 플래시 메모리 칩들 대신 다른 불휘발성 메모리 칩들(예를 들면, PRAM, FRAM, MRAM 등)로 구성될 수 있다. 저장 매체(1240)를 구성하는 플래시 메모리 칩들 각각은 셀 당 1-비트 데이터 또는 M-비트 데이터(M은 2 또는 그보다 큰 정수)를 저장할 것이다.The
본 발명의 실시 예에 따른 사용자 장치(1000)에 의하면, 호스트(1100)로부터 무효화 명령이 제공될 때, 저장 장치(1200)는 무효화 명령에 따라 삭제될 영역(또는 파일들)의 위치만을 기록/저장하고, 요청된 명령의 실행이 완료되었음을 호스트(1100)에 통지한다. According to the
다시 말해서, 저장 장치(1200)는 삭제될 파일들의 영역을 바로 무효화시키는 것이 아니라, 무효한 파일들의 영역의 위치만을 기록/저장할 것이다. 이는 이하 상세히 설명될 것이다. 이러한 경우, 호스트(1100)의 요청을 빠른 시간 내에 처리하는 것이 가능하다. 즉, 호스트(1100)의 요청에 대한 응답 시간을 단축할 수 있다. 뿐만 아니라, 빠른 응답을 통해 저장 장치(1200) 또는 사용자 장치(1000)의 성능을 향상시키는 것이 가능하다.In other words, the
도 2는 도 1에 도시된 SSD 컨트롤러를 개략적으로 보여주는 블록도이다. 도 2를 참조하면, SSD 컨트롤러(1220A)는 호스트 인터페이스(1222), 플래시 인터페이스(1224), 처리 유닛(1226), 그리고 버퍼 메모리(1228)를 포함할 것이다. SSD 컨트롤러(1220A)의 구성 요소들이 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 예를 들면, SSD 컨트롤러(1220A)가 저장 매체(1240)에 저장된 데이터의 에러를 검출 및 정정하기 위한 에러 정정 블록을 더 포함함은 잘 이해될 것이다.FIG. 2 is a block diagram schematically illustrating the SSD controller shown in FIG. 1. Referring to FIG. 2, the
호스트 인터페이스(1222)는 호스트(1100)와의 인터페이스를 제공하고, 플래시 인터페이스(1224)는 저장 매체(1240)와의 인터페이스를 제공할 것이다. 처리 유닛(1226)은 SSD 컨트롤러(1220A)의 동작을 전반적으로 제어하며, 버퍼 메모리(1228)는 저장 매체(1240)에 저장될 또는 저장 매체(1240)로부터 읽혀진 데이터를 임시 저장하는 데 사용될 것이다. 또한, 버퍼 메모리(1228)는 앞서 설명된 이 력(무효화 명령에 따라 삭제될 영역의 기록)을 저장하는 데 사용될 것이다. The
예시적인 실시 예에 있어서, 앞서 언급된 이력을 저장하기 위해서, 버퍼 메모리(1228) 대신 추가적인 휘발성/불휘발성 메모리(또는, 레지스터)가 사용될 수 있다. 하지만, 무효화 명령에 따라 삭제될 영역의 위치를 기록하기 위한 매체가 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다.In an exemplary embodiment, an additional volatile / nonvolatile memory (or register) may be used instead of the
도 3은 도 1에 도시된 SSD 컨트롤러의 다른 실시 예를 보여주는 블록도이다. 도 3을 참조하면, SSD 컨트롤러(1220B)는 호스트 인터페이스(1222), 플래시 인터페이스(1224), 복수의 처리 유닛(1226_1~1226_N), 그리고 버퍼 메모리(1228)를 포함할 것이다. SSD 컨트롤러(1220B)의 구성 요소들이 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 예를 들면, SSD 컨트롤러(1220B)가 저장 매체(1240)에 저장된 데이터의 에러를 검출 및 정정하기 위한 에러 정정 블록을 더 포함함은 잘 이해될 것이다.3 is a block diagram illustrating another embodiment of the SSD controller shown in FIG. 1. Referring to FIG. 3, the
SSD 컨트롤러(1220B)는 복수의 처리 유닛(1226_1~1226_N)을 통해 제반 동작을 수행할 수 있다. SSD 컨트롤러(1220B)는 여러 제어 동작을 나눈 후에, 각각의 처리 유닛에 해당하는 제어 동작을 할당할 수 있다. SSD 컨트롤러(1220B)가 낮은 주파수 클록에 의해 구동된다고 하더라도, 복수의 처리 유닛(1226_1~1226_N)을 포함하는 SSD 컨트롤러(1220B)의 성능은 향상될 수 있다.The
도 4는 본 발명의 실시 예에 따른 사용자 장치의 동작을 설명하기 위한 순서도이다. 이하, 발명의 실시 예에 따른 사용자 장치의 동작이 참조 도면들에 의거하여 상세히 설명될 것이다.4 is a flowchart illustrating an operation of a user device according to an exemplary embodiment of the present invention. Hereinafter, the operation of the user device according to an embodiment of the present invention will be described in detail with reference to the accompanying drawings.
호스트(1100)는 필요에 따라 저장 장치(1200)로 무효화 명령을 제공할 것이다. 예를 들면, 무효화 명령은 저장 장치(1200)에 저장된 파일들 중 무효한 내용을 갖는 파일들을 삭제하는 데 사용될 것이다. The
먼저, S1100 단계에서, 호스트(1100)에서 저장 장치(1200)로 무효화 명령이 전송될 것이다. 앞서 언급된 바와 같이, 무효화 명령은 무효한 내용을 갖는 파일들의 영역을 알리는 정보(예를 들면, 어드레스 정보)를 포함할 것이다. First, in operation S1100, an invalidation command will be transmitted from the
S1110 단계에서, 저장 장치(1200) 즉, SSD 컨트롤러(1220)는 무효화 명령에 따라 삭제될 영역의 용량이 기준 용량을 초과하는 지의 여부를 판별할 것이다. 만약, 삭제될 영역의 용량이 기준 용량을 초과하는 것으로 판별되면, S1120 단계에서, SSD 컨트롤러(1220)는 삭제될 영역의 위치를 기록/저장할 것이다. 이러한 동작은 "로깅"(logging)이라 불린다. 삭제될 영역의 위치가 기록된 후, S1130 단계에서, SSD 컨트롤러(1220)는 무효화 명령의 실행이 완료되었음을 호스트(1100)에 통지할 것이다. 이후, 절차는 종료될 것이다.In operation S1110, the
실시 예에 있어서, SSD 컨트롤러(1220A)는 버퍼 메모리(예를 들면, DRAM)를 포함하며, 버퍼 메모리에는 삭제될 영역의 위치를 나타내는 정보가 기록될 것이다. 삭제될 영역의 위치는 각 비트가 기준 용량을 초과하는 삭제될 영역을 나타내는 비트맵 구조를 이용하여 기록될 수 있다. 하지만, 로깅 방식이 삭제될 영역의 위치를 기록하는 방식에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 삭제될 영역의 어드레스 정보를 기록하는 것이 가능하다. In an embodiment, the
삭제될 영역의 위치가 기록된 이력(history)은 주어진 시간마다 또는 필요에 따라 저장 매체(1240)에 저장될 수 있다. 그렇게 저장된 이력은 파워-온 시 SSD 컨트롤러(1220)에 로드될 것이다. 이에 반해서, 삭제될 영역의 위치가 기록된 이력은 버퍼 메모리를 이용하여 관리될 수 있다. 유휴 시간이 생기면, SSD 컨트롤러(1220)는 버퍼 메모리 또는 저장 매체(1240)에 저장된 이력을 이용하여 삭제될 영역을 무효화시킨다.The history in which the location of the region to be deleted is recorded may be stored in the
여기서, 무효화란 삭제될 영역에 기록된 데이터를 무효한 데이터로 처리하는 것을 의미한다. 이러한 무효화는 저장 매체(1240)의 물리적인 블록들과 논리적인 블록들 사이의 맵핑이 기록된 맵핑 테이블을 관리함으로써 행해질 수 있다. 예를 들면, 그러한 무효화는 삭제될 영역에 대한 맵핑 정보를 맵핑 테이블에서 제외(map-out)함으로써 또는 삭제될 영역을 맵핑 테이블에 표시(marking)함으로써 행해질 수 있다. 하지만, 무효화가 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. In this case, the invalidation means processing the data recorded in the area to be deleted as invalid data. This invalidation can be done by managing a mapping table in which the mapping between the physical and logical blocks of the
저장 매체(1240)를 구성하는 플래시 메모리 칩들은 SSD 컨트롤러(1220)에 의해서 실행되는 플래시 변환 계층(Flash Translation Layer: FTL)에 의해서 관리된다. 맵핑 테이블의 관리는, 예를 들면, 그러한 FTL에 의해서 행해질 것이다. 저장 매체(1240)의 무효화된 영역 즉, 무효화된 메모리 블록들은 필요에 따라 소거될 것이다.The flash memory chips constituting the
실시 예에 있어서, 기준 용량은 하드웨어적으로 또는 소프트웨어적으로 가변 가능하도록 설정될 것이다. 예를 들면, 기준 용량은 저장 장치(1200)의 펌웨어(FTL)의 업데이트를 통해 가변 가능하도록 설정될 것이다. 또는, 기준 용량은 호 스트(1100)에 의해서 가변 가능하도록 설정될 것이다. 이러한 경우, 호스트(1100)와 저장 장치(1200) 사이의 인식 절차 동안 호스트 인터페이스(1222)의 레지스터(기준 용량을 저장하는 데 사용됨)에 기준 용량을 나타내는 특정 값을 저장함으로써 기준 용량을 설정하는 것이 가능할 것이다. 삭제될 영역은 논리적인 영역을 나타내며, FTL에 의해서 저장 매체(1240)의 물리적인 영역으로 변환될 것이다.In an embodiment, the reference capacity will be set to be variable in hardware or software. For example, the reference capacity may be set to be variable through an update of the firmware (FTL) of the
실시 예에 있어서, 무효화 명령에 따라 삭제될 영역의 용량이 저장 장치(1200)에 따라 제한될 수도 있다. 이러한 경우, 저장 장치(1200)에는 무효화 명령을 통해 삭제될 영역의 최대 용량이 기록되며, 호스트(1100)는 저장 장치(1200)에 기록된 삭제될 영역의 최대 용량을 나타내는 정보를 이용하여 무효화 명령을 발생할 것이다.According to an embodiment, the capacity of the region to be deleted according to the invalidation command may be limited according to the
S1110 단계로 돌아가서, 만약 삭제될 영역의 용량이 기준 용량을 초과하지 않는 것으로 판별되면, 절차는 S1140 단계로 진행할 것이다. S1140 단계에서, SSD 컨트롤러(1220)는 삭제될 영역의 위치의 기록 없이 삭제될 영역에 기록된 데이터를 바로 무효한 데이터로 처리할 것이다. 이러한 무효화는, 앞서 언급된 바와 같이, 삭제될 영역에 대한 맵핑 정보를 맵핑 테이블에서 제외(map-out)함으로써 또는 맵핑 테이블에 삭제될 영역을 표시(marking)함으로써 행해질 수 있다. Returning to step S1110, if it is determined that the capacity of the area to be deleted does not exceed the reference capacity, the procedure will proceed to step S1140. In operation S1140, the
삭제될 영역에 기록된 데이터를 바로 무효한 데이터로 처리한 후, S1130 단계에서, SSD 컨트롤러(1220)는 무효화 명령의 실행이 완료되었음을 호스트(1100)에 통지할 것이다. 이후, 절차는 종료될 것이다.After immediately processing the data recorded in the area to be deleted as invalid data, in step S1130, the
본 발명의 실시 예에 따른 저장 장치(1200)는 앞서 언급된 로깅 방식을 통해 삭제될 영역의 용량에 관계없이 무효화 명령을 호스트(1100)의 주어진/제한된 시간(예를 들면, 호스트로부터의 명령을 처리하는 데 걸리는 시간) 내에 빠르게 처리할 수 있다. 또한, 무효화된 영역에 대한 프로그램 및 소거 동작들이 불필요하게 수행되는 것을 방지하는 것이 가능하다. The
저장 장치(1200)는 호스트(1100)의 주어진/제한된 시간 내에 명령을 빠르게 처리할 때 생기는 여분의 시간(주어진/제한된 시간과 실질적인 명령 처리 시간의 차) 동안 백그라운드 동작을 수행하도록 구현될 수 있다. 이러한 경우, 주어진/제한된 시간이 지나기 이전에 요청된 명령에 대한 응답이 행해질 것이다.The
저장 장치(1200)가 플래시 메모리 칩들로 구성되는 경우, 비록 저장 매체(1240)의 특정 영역에 저장된 데이터가 호스트(1100)의 요청(예를 들면, 무효화 명령)에 따라 무효화되더라도, 저장 매체(1240)의 특정 영역에 저장된 데이터는 덮어쓰기를 지원하지 않는 저장 매체(1240)의 특성으로 인해 실질적으로 그대로 유지된다. 이는 저장 매체(1240)의 물리적인 영역이 실질적으로 관리되는 것이 아니라 FTL을 통해 맵핑 정보만이 관리되기 때문이다. When the
저장 장치(1200)가 보안을 필요로 하는 장치(예를 들면, 프린터)에 사용될 수 있다. 이러한 경우, 보안을 필요로 하는 데이터가 처리된 후 그러한 데이터는 저장 장치(1200)에 그대로 유지될 것이다. 이는 보안 데이터가 원치 않게 노출될 수 있음을 의미한다. 보안을 필요로 하는 데이터를 삭제하고자 하는 경우, 본 발명의 실시 예에 따른 사용자 장치에 있어서, 호스트(1100)는 보안 무효화 명령을 또는 보안 데이터의 삭제를 알리는 정보를 포함한 무효화 명령을 저장 장치(1200)로 제공할 것이다. 이는 이후 도 5를 참조하여 상세히 설명될 것이다.
도 5는 본 발명의 다른 실시 예에 따른 사용자 장치의 동작을 설명하기 위한 순서도이다. 이하, 발명의 실시 예에 따른 사용자 장치의 동작이 참조 도면들에 의거하여 상세히 설명될 것이다.5 is a flowchart illustrating an operation of a user device according to another exemplary embodiment. Hereinafter, the operation of the user device according to an embodiment of the present invention will be described in detail with reference to the accompanying drawings.
호스트(1100)는 필요에 따라 저장 장치(1200)로 무효화 명령을 제공할 것이다. 무효화 명령은 일반적인 데이터와 보안이 필요한 데이터(이하, 보안 데이터라 칭함)에 따라 구분될 수 있다. 예를 들면, 호스트(1100)는 일반적인 데이터에 대한 삭제를 요청할 때 무효화 명령을 그리고 보안 데이터에 대한 삭제를 요청할 때 보안 무효화 명령(secure invalidity command)을 저장 장치(1200)로 제공할 수 있다. 또는, 호스트(1100)는 일반적인 데이터에 대한 삭제 또는 보안 데이터에 대한 삭제를 나타내는 정보를 포함한 무효화 명령을 저장 장치(1200)로 제공할 수 있다.The
먼저, S1200 단계에서, 호스트(1100)에서 저장 장치(1200)로 명령이 전송될 것이다. 설명의 편의상, 삭제될 영역을 알리는 명령이 입력된다고 가정하자. 만약 그러한 명령과 다른 명령이 입력되면, 그에 대응하는 동작이 수행될 것이다. S1210 단계에서, 저장 장치(1200) 즉, SSD 컨트롤러(1220)는 입력된 명령이 무효화 명령인지 또는 보안 무효화 명령인 지의 여부를 판별할 것이다. 다른 예로서, SSD 컨트롤러(1220)는 입력된 무효화 명령의 특정 비트(들)이 일반 데이터에 대한 삭제를 나타내는지 또는 보안 데이터에 대한 삭제를 나타내는 지의 여부를 판별할 것이다.First, in operation S1200, a command may be transmitted from the
만약, 입력된 명령이 무효화 명령인 것으로 판별되면, 절차는 S1220로 진행할 것이다. S1220 단계에서, SSD 컨트롤러(1220)는 무효화 명령에 따라 삭제될 영 역의 용량이 기준 용량을 초과하는 지의 여부를 판별할 것이다. 만약 삭제될 영역의 용량이 기준 용량을 초과하는 것으로 판별되면, S1230 단계에서, SSD 컨트롤러(1220)는 삭제될 영역의 위치를 버퍼 메모리에 기록/저장할 것이다. 삭제될 영역의 위치가 기록된 후, 절차는 S1250 단계로 진행할 것이다. If it is determined that the input command is an invalidation command, the procedure proceeds to S1220. In operation S1220, the
만약, 삭제될 영역의 용량이 기준 용량을 초과하지 않는 것으로 판별되면, 절차는 S1240 단계로 진행할 것이다. S1240 단계에서, SSD 컨트롤러(1220)는 삭제될 영역의 위치의 기록 없이 삭제될 영역에 기록된 데이터를 바로 무효한 데이터로 처리할 것이다. 이러한 무효화는, 앞서 언급된 바와 같이, 삭제될 영역에 대한 맵핑 정보를 맵핑 테이블에서 제외(map-out)함으로써 또는 맵핑 테이블에 삭제될 영역을 표시(marking)함으로써 행해질 수 있다. If it is determined that the capacity of the region to be deleted does not exceed the reference capacity, the procedure will proceed to step S1240. In operation S1240, the
삭제될 영역에 기록된 데이터를 바로 무효한 데이터로 처리한 후, 절차는 S1250 단계로 진행할 것이다. S1250 단계에서, SSD 컨트롤러(1220)는 무효화 명령의 실행이 완료되었음을 호스트(1100)에 통지할 것이다. 이후, 절차는 종료될 것이다.After immediately processing the data recorded in the area to be deleted as invalid data, the procedure will proceed to step S1250. In operation S1250, the
다시 S1210 단계로 돌아가서, 만약 입력된 명령이 보안 무효화 명령인 것으로 판별되면, 절차는 S1260로 진행할 것이다. S1260 단계에서, SSD 컨트롤러(1220)는 삭제될 영역에 기록된 데이터를 바로 무효한 데이터로 처리할 것이다. 또한, SSD 컨트롤러(1220)는 삭제될 영역에 대응하는 저장 매체(1240)의 메모리 블록(들)이 실질적으로 소거되도록 저장 매체(1240)를 제어할 것이다. 즉, 저장 매체(1240)에 저장된 보안 데이터는 소거(또는 소실/제거)될 것이다. 이후, S1250 단계에서, SSD 컨트롤러(1220)는 입력 명령의 실행이 완료되었음을 호스트(1100)에 통지할 것이다. 이후, 절차는 종료될 것이다.Returning to step S1210 again, if it is determined that the entered command is a security invalidation command, the procedure will proceed to S1260. In step S1260, the
본 발명의 실시 예에 따른 저장 장치(1200)는 앞서 언급된 로깅 방식을 통해 삭제될 영역의 용량에 관계없이 무효화 명령을 호스트(1100)의 주어진/제한된 시간(예를 들면, 호스트로부터의 명령을 처리하는 데 걸리는 시간) 내에 빠르게 처리할 수 있다. 또한, 보안 데이터의 삭제를 알리는 명령이 입력될 때 바로/지연 없이 저장 매체(1240)에 대한 소거 동작을 수행함으로써 저장 장치(1200)의 보안 데이터의 노출을 방지하는 것이 가능하다.The
본 발명의 실시 예에 따른 저장 장치(1200)에 있어서, 도 4 및 도 5에서 설명된 것과 달리, 무효화 명령에 따라 삭제될 영역의 용량에 관계없이(또는, 삭제될 영역의 용량이 기준 용량을 초과하는 지의 여부를 판별하지 않고) 삭제될 영역의 위치를 버퍼 메모리에 기록/저장할 수 있다. 다시 말해서, 저장 장치(1200)는 무효화 명령이 입력될 때마다 삭제될 영역의 위치를 버퍼 메모리에 기록하도록 구현될 수 있다. 로깅된 영역에 대한 무효화는 유휴 시간 동안 행해질 것이다.In the
실시 예에 있어서, 앞서 설명된 무효화는 삭제될 영역에 대응하는 저장 매체(1240)의 메모리 블록(들)에 무효 블록을 나타내는 정보가 기록되는 동작을 선택적으로 수반할 수 있다. 또는, 앞서 설명된 무효화는 삭제될 영역에 대응하는 저장 매체(1240)의 메모리 블록(들)에 무효 블록을 나타내는 정보가 기록되는 동작을 수반할 수 있다.In an embodiment, the invalidation described above may optionally involve an operation in which information indicating an invalid block is recorded in the memory block (s) of the
Ⅱ. 파일 시스템 정보를 이용하여 무효화 동작을 수행하는 사용자 장치II. User device performing invalidation operation using file system information
도 6은 파일 시스템 정보를 이용하여 무효화 동작을 수행하는 사용자 장치의 실시 예를 보여주는 블록도이다. 도 6에 도시된 사용자 장치(2000)는 호스트(2100) 및 데이터 저장 장치(2200)를 포함한다.6 is a block diagram illustrating an embodiment of a user device for performing an invalidation operation using file system information. The
호스트(2100)의 입장에서 볼 때, 데이터 저장 장치(2200)는 마치 하드 디스크처럼 읽기(read), 쓰기(write), 그리고 소거(erase) 동작이 자유로운 저장 매체로 인식된다. 데이터 저장 장치(2200)는 플래시 메모리(2210)와 컨트롤러(2220)를 포함할 수 있다. 여기에서, 플래시 메모리(2210) 대신에 다른 불휘발성 메모리(예를 들면, PRAM, FRAM, MRAM 등)가 사용될 수 있다From the standpoint of the host 2100, the
플래시 메모리(2210)는 스트링 구조(string structure)를 갖는 많은 수의 메모리 셀들(memory cells)로 이루어진다. 이러한 메모리 셀들의 집합을 셀 어레이(cell array)라고 부른다. 플래시 메모리(2210)의 메모리 셀 어레이는 복수의 블록들(Blocks)로 구성된다. 각각의 블록은 복수의 페이지들(Pages)로 구성된다. 각각의 페이지는 하나의 워드라인을 공유하는 복수의 메모리 셀들(Memory Cells)로 구성된다. 플래시 메모리(2210)는 블록 단위로 소거 동작이 이루어지며, 페이지 단위로 읽기 및 쓰기 동작이 이루어진다.The
이와 같이 플래시 메모리(2210)는 읽기/쓰기 동작의 단위와 소거 동작의 단위가 다르다. 또한, 플래시 메모리(2210)는 다른 반도체 메모리 장치와 달리 겹쳐쓰기(over write)가 되지 않는다. 따라서 플래시 메모리(2210)는 쓰기 동작을 수행하기 전에 반드시 소거 동작을 수행하게 된다. As described above, the
플래시 메모리(2210)의 이러한 특성들로 인해, 데이터 저장 장치(2200)는 플래시 메모리(2210)를 하드 디스크처럼 사용하기 위해서는 읽기, 쓰기, 그리고 소거 동작의 단위에 대한 관리가 별도로 필요하다. 플래시 변환 레이어(Flash Translation Layer; 이하 FTL이라 함)는 이러한 목적으로 개발된 시스템 소프트웨어이다.Due to these characteristics of the
도 6을 참조하면, 플래시 메모리(2210)는 FAT 영역(2211), 데이터 영역(2212), 로그 영역(2213), 그리고 메타 영역(2214)을 포함한다. 여기에서, FAT 영역(2211)은 파일 시스템 영역의 일종이다.Referring to FIG. 6, the
FAT 영역(2211)에는 파일 시스템 정보(예를 들면, FAT 정보)가 저장된다. 로그 영역(2213)의 로그 블록들은 데이터 영역(2212)의 데이터 블록들 중 일부 데이터 블록들에 각각 지정된다. 즉, 데이터 영역(2212)의 데이터 블록에 데이터를 쓰고자 하는 경우, 데이터는 데이터 블록에 직접 쓰이는 것이 아니라 로그 영역(2213)의 대응하는 로그 블록에 저장된다. In the
그러나 데이터 영역(2212)의 데이터 블록에 대응하는 로그 영역(2213)의 로그 블록이 지정되어 있지 않은 경우, 또는 로그 영역(2213)의 로그 블록에 빈 페이지(empty page)가 없는 경우, 또는 호스트(2100)의 요청이 있는 경우에는 머지 동작이 수행된다. 머지 동작을 통해, 로그 블록의 유효한 페이지와 데이터 블록의 유효한 페이지가 새로운 데이터 블록 또는 로그 블록으로 복사된다. 머지 동작이 수행되면, 맵핑 정보가 변경되는데, 변경된 맵핑 정보는 메타 영역(2214)에 저장된다.However, if a log block of the
컨트롤러(2220)는 호스트(2100)로부터 액세스 요청이 있을 때 플래시 메모리(2120)를 제어하도록 구성된다. 도 6에 도시된 바와 같이, 컨트롤러(2220)는 제어 로직(2221)과 워크 메모리(work memory)(2222)를 포함한다. 워크 메모리(2222)에는 플래시 변환 레이어(FTL)가 저장된다. 제어 로직(2221)은 호스트(2100)로부터의 액세스 요청이 있을 때, 워크 메모리(2222)에 저장된 플래시 변환 레이어(FTL)가 동작하도록 한다. The
도 7은 도 6에 도시된 사용자 장치의 머지 방법을 보여주는 개념도이다. 도 7을 참조하면, 사용자 장치(200)는 파일 시스템 정보(예를 들면, FAT 정보)를 이용하여 무효화 동작을 수행한다. FIG. 7 is a conceptual diagram illustrating a merge method of the user device illustrated in FIG. 6. Referring to FIG. 7, the user device 200 performs an invalidation operation using file system information (eg, FAT information).
도 6을 참조하면, 로그 블록(2510)의 유효한 페이지(2511, 2513) 및 데이터 블록(2520)의 유효한 페이지(2522)는 새로운 데이터 블록(2530)으로 복사된다. 로그 블록(2510)의 제 1 및 제 3 페이지(2511, 2513)는 새로운 데이터 블록(2530)의 제 1 및 제 3 페이지(2531, 2533)로 각각 복사된다. 그리고 데이터 블록(2520)의 제 2 페이지(2522)는 새로운 데이터 블록(2530)의 제 2 페이지(2532)로 복사된다.Referring to FIG. 6,
여기에서, 본 발명에 따른 데이터 저장 장치의 머지 방법은 FAT 정보(2540)를 참조하여 데이터 블록(2520)의 유효한 페이지들을 선택적으로 새로운 데이터 블록(2530)으로 복사한다. Here, the merge method of the data storage device according to the present invention selectively copies valid pages of the data block 2520 to a
도 7을 참조하면, 플래시 메모리(도 6 참조, 2210)에 저장된 FAT 정보(2540)는 데이터 블록(2520)의 해당 페이지의 할당(Allocation) 여부에 대한 정보를 저장한다. 예를 들어, 데이터 블록(2520)의 제 1 페이지(2521)는 파일을 저장하는데 사 용되지 않은 페이지이므로, FAT 정보(2540)에 NA(Not Allocation)로 표시되어 있다. 데이터 블록(2520)의 제 2 페이지(2522)는 파일을 저장하고 있는 유효한 페이지이므로, FAT 정보(2540)에 할당(Allocate)을 나타내는 A로 표시되어 있다. 데이터 블록(2520)의 제 3 및 제 5 페이지(2523, 2525)에 해당하는 FAT 정보(2540)에는 NA로 표시되어 있다. Referring to FIG. 7, the
그리고 데이터 블록(2520)의 제 4 페이지(2524)는 파일을 저장하고 있는 유효한 페이지이지만, 파일 시스템 관점에서는 지워진 페이지이므로 삭제(Delete)를 나타내는 D로 표시되어 있다. 즉, 데이터 블록(2520)의 제 4 페이지(2524)에 저장된 데이터는 FTL 관점에서는 유효한 페이지이지만, 파일 시스템 관점에서는 삭제된 더 이상 유효하지 않은 페이지이다. 따라서 데이터 블록(2520)의 제 4 페이지(2524)가 파일 시스템 관점에서 지워진 데이터를 갖는다면, 해당 페이지의 데이터는 새로운 데이터 블록(2530)으로 복사되지 않는다.The
따라서 본 발명의 실시 예에 따른 사용자 장치(2000)는 파일 시스템 정보(예를 들면, FAT 정보)를 참조하여 더 이상 유효하지 않은 데이터의 머지 동작을 방지함으로 무효화 동작을 수행한다. 본 발명에 따른 사용자 장치(2000)에 의하면, 파일 시스템 관점에서 필요하지 않은 페이지의 복사를 수행하지 않음으로써 전체 머지 동작 시간을 줄일 수 있다.Accordingly, the
도 8은 도 6에 도시된 사용자 장치의 무효화 동작을 보여주는 순서도이다. FIG. 8 is a flowchart illustrating an invalidation operation of the user device illustrated in FIG. 6.
S2610 단계에서는, 새로운 데이터 블록(도 7 참조, 2530)의 물리적 페이지를 논리적 페이지로 변환한다. S2620 단계에서는, FTL이 플래시 메모리(도 6 참조, 2210)의 FAT 영역(2211)에서 FAT 정보를 읽는다. S2630 단계에서는, FAT 정보를 참조하여 데이터 블록의 해당 페이지가 복사의 대상이 되는 유효한 페이지인지를 판단한다. 즉, FAT 영역의 해당 페이지가 파일을 저장하는데 할당되어 있는지를 판단한다. 만약, 파일이 저장되어 있지 않은 페이지이거나 삭제된 페이지이면, 새로운 데이터 블록으로 복사하지 않고 다음 단계(S2650)를 진행한다. In operation S2610, the physical page of the new data block (see FIG. 7) 2530 is converted into a logical page. In step S2620, the FTL reads FAT information from the
S2640 단계에서는, 데이터 블록의 해당 페이지가 파일이 저장되어 있는 유효한 페이지이면, 새로운 데이터 블록으로 복사를 한다. S2650 단계에서는, 데이터 블록의 나머지 페이지에 대해서 S2630 단계 내지 S2640 단계를 반복 수행한다. 데이터 블록의 페이지 복사가 모두 수행된 다음에는, 로그 블록의 페이지 복사를 수행하고 머지 동작을 종료한다.In operation S2640, if the corresponding page of the data block is a valid page in which the file is stored, the page is copied to a new data block. In step S2650, steps S2630 to S2640 are repeated for the remaining pages of the data block. After all the page copy of the data block is performed, the page copy of the log block is performed and the merge operation ends.
이상에서 살펴 본 바와 같이, 본 발명의 실시 예에 따른 사용자 장치(2000)는 데이터를 복사하는 과정에서 파일 시스템 정보 (예를 들면, FAT 정보)를 참조하여 파일 시스템 관점에서 유효하지 않은 데이터의 복사를 방지하여 머지 동작 시간을 줄일 수 있다. 머지 동작에서 가장 많은 시간을 소요하는 부분은 데이터 블록의 페이지 데이터를 복사하는 구간이다. 본 발명은 데이터 블록의 페이지에 대해 선택적으로 복사를 함으로써 복사 구간의 시간을 줄일 수 있다.As described above, in the process of copying data, the
예를 들어, 로그 블록에 유효한 페이지가 x개이고, 데이터 블록에 데이터가 존재하는 페이지가 y개이며, 한 페이지를 복사하는데 소요되는 시간을 z라고 하면, 머지 동작에 소요되는 전체 시간은 (x+y)*z가 된다. 이때 파일 시스템의 관점에서 삭제된 페이지의 수가 i개라고 하면, 머지 수행 시간 중에서 i*z 시간은 불필요한 시간이라고 할 수 있다. 따라서 본 발명에 따른 사용자 장치 및 머지 방법에 의해 줄어 든 머지 수행 시간은 (i*z-(FAT 영역을 읽는 시간))이 된다. For example, if there are x valid pages in the log block, y pages in which data exists in the data block, and z is the time taken to copy one page, the total time required for the merge operation is (x + y) * z In this case, if the number of deleted pages is i from the viewpoint of the file system, i * z time is unnecessary time in the merge execution time. Therefore, the merge execution time reduced by the user device and the merge method according to the present invention becomes (i * z- (time to read the FAT area)).
한편, 도 6에 도시된 사용자 장치(2000)는 앞서 언급된 로깅 방식을 사용하여 무효화 동작을 수행할 수 있다. 즉, 사용자 장치(2000)는 삭제될 데이터의 크기가 기준 크기를 초과하면 삭제될 영역의 위치를 기록하는 로깅 방식을 적용하며, 기준 크기를 초과하지 않으면 삭제될 데이터를 바로 무효화할 수 있다. 또한, 사용자 장치(2000)는 도 5에서 설명한 바와 같이, 일반 데이터에 대한 삭제인지 보안 데이터에 대한 삭제인지 여부에 따라 무효화 동작을 수행할 수도 있다.Meanwhile, the
Ⅲ. 버퍼 메모리의 데이터를 무효화하는 사용자 장치III. User device invalidating data in buffer memory
도 9는 버퍼 메모리의 데이터를 무효화하는 사용자 장치를 예시적으로 보여주는 블록도이다. 도 9를 참조하면, 사용자 장치(3000)는 호스트(3100)와 저장 장치(3200)를 포함한다. 호스트(3100)와 저장 장치(3200)는 USB, SCSI, ESDI, SATA, PCI-express, 또는 IDE 인터페이스와 같은 표준 인터페이스(standardized interface)에 의해서 연결될 수 있다.9 is a block diagram illustrating an example of a user device for invalidating data in a buffer memory. Referring to FIG. 9, the
호스트(3100)는 중앙처리장치(CPU, 3110)와 메모리(3120)를 포함한다. 메모리(3120)의 적어도 일부분은 호스트(3100)의 메인 메모리를 포함한다. 또는, 메모리(3120)는 호스트(3100)의 메인 메모리로 구성될 수도 있다. The
응용 프로그램(3121) 및 파일 시스템(3122)이 메모리(3120) 내에 각각 제공된다. 파일 시스템(3122)은 파일 할당 테이블(file allocation table: FAT) 파일 시스템을 포함하는 모든 파일 시스템들을 포함한다. 하지만, 파일 시스템이 이에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
응용 프로그램(3121)에 의해서 처리되는 파일 데이터의 전부 또는 일부가 삭제될 때, 중앙처리장치(3110)는 무효화 명령(invalidity command)을 저장 장치(3200)로 제공할 수 있다. 무효화 명령과 함께 삭제된 데이터를 지정하기 위한 어드레스 정보 및 데이터 크기 정보가 저장 장치(3200)로 전송될 수 있다.When all or part of the file data processed by the
FAT 파일 시스템은 마스터 부트 리코드(master boot record: MBR), 파티션 부트 리코드(partition boot record: PBR), 제 1 및 제 2 파일 할당 테이블들(primary FAT, copy FAT), 그리고 루트 디렉토리를 포함할 수 있다. 저장 장치(3200)에 저장된/저장될 파일은 2가지의 정보를 사용하여 확인될 수 있다. 그 정보는 파일의 파일명과 파일이 저장된 곳에 도달하기 위해 통과하는 디렉토리 트리의 경로이다.The FAT file system includes a master boot record (MBR), partition boot record (PBR), first and second file allocation tables (primary FAT, copy FAT), and root directory. can do. The file to be stored / stored in the
하나의 디렉토리에서 각 엔트리는, 예를 들면, 32-바이트 길이를 가지며, 파일명, 확장자, 파일 속성 바이트, 최종적으로 변경된 날짜/시간, 파일 크기, 그리고 시동 클러스터로의 연결 등과 같은 정보를 저장하고 있다. 특히, 파일명에 있어서, 삭제된 파일을 가리키기 위한 파일명의 첫 문자로 하나의 특수한 코드가 사용된다. Each entry in a directory is, for example, 32-bytes long and stores information such as file name, extension, file attribute byte, date / time last changed, file size, and connection to the startup cluster. . In particular, in the file name, one special code is used as the first character of the file name to indicate the deleted file.
예를 들면, 파일명의 첫 글자의 자리에 십육진수 바이트 코드인 E5h를 위치시킨다. 이것은 하나의 특별한 꼬리표로서, '이 파일은 삭제되었습니다.'라는 것을 시스템에 말해준다. 임의의 파일이 삭제될 때, 중앙처리장치(3110)는 삭제된 파일 의 파일명의 첫 문자에 하나의 특수한 코드를 위치시킴과 아울러 삭제된 파일에 대응하는 무효화 명령 (또는 삭제된 파일 데이터에 대한 무효 정보)을 저장 장치(3200)로 출력한다.For example, place the hexadecimal byte code E5h in place of the first letter of the file name. This is a special tag that tells the system that this file has been deleted. When any file is deleted, the
계속해서 도 9를 참조하면, 저장 장치(3200)는 저장 매체(3220), 버퍼 메모리(3240), 그리고 컨트롤러(3260)를 포함한다. 저장 장치(3200)는 외부로부터 무효 정보(예를 들면, 무효화 명령, 저장 장치의 상위 레벨에서 삭제된 파일 데이터의 어드레스 정보, 그리고 삭제된 데이터의 크기 정보를 포함함)가 입력될 때, 버퍼 메모리(3220)의 데이터(저장 장치의 상위 레벨에서 이미 삭제된 데이터를 나타냄)가 저장 매체(3260)에 쓰이는 것을 방지하도록 구성된다. 이는 이후 상세히 설명될 것이다.9, the
저장 매체(3220)는 데이터(문서 데이터, 영상 데이터, 음악 데이터, 그리고 프로그램과 같은 저장 가능한 모든 형식의 데이터를 포함함)를 저장하기 위한 것으로, 마그네틱 디스크 또는 플래시 메모리와 같은 불휘발성 메모리로 구성될 수 있다. 하지만, 저장 매체(3220)가 여기에 개시된 것에 제한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.The
계속해서, 버퍼 메모리(3240)는 호스트(3100)와 저장 매체(3220) 사이의 원활한 데이터 전송을 위해 사용되며, DRAM 또는 SRAM과 같은 고속 휘발성 메모리 또는 MRAM, PRAM, FRAM, NAND 플래시 메모리, 또는 NOR 플래시 메모리와 같은 불휘발성 메모리로 구성될 수 있다. 예로서, 저장 매체(3220) 및 버퍼 메모리(3240)는 플래시 메모리와 같은 메모리로 동일하게 구성될 수 있다.Subsequently,
버퍼 메모리(3240)는 쓰기 버퍼로 동작할 수 있다. 예를 들면, 버퍼 메모리(3240)는 호스트(3100)의 요청에 따라 저장 매체(3220)에 쓰일 데이터를 임시 저장하기 위한 쓰기 버퍼로 동작할 수 있다. 또한, 쓰기 버퍼의 기능은 선택적으로 사용될 수 있다. 예컨대, 경우에 따라, 호스트(3100)에서 전달된 데이터는 쓰기 버퍼 즉, 버퍼 메모리(3240)를 경유하지 않고 저장 매체(3220)로 직접 전송될 수 있다. 저장 장치(3200)의 이러한 기능은 쓰기 바이패스 기능(write bypass function)이라 불린다. The
또는, 버퍼 메모리(3240)는 읽기 버퍼로 동작할 수 있다. 예를 들면, 버퍼 메모리(3240)는 호스트(3100)의 요청에 따라 저장 매체(3220)에서 읽혀진 데이터를 임시 저장하기 위한 읽기 버퍼로서 동작할 수 있다. 도면에는 단지 하나의 버퍼 메모리가 도시되어 있지만, 2개 또는 그보다 많은 버퍼 메모리들이 제공될 수 있다. 이 경우, 각 버퍼 메모리는 쓰기 버퍼, 읽기 버퍼 또는 2개의 기능을 모두 갖는 버퍼로서 사용될 수 있다.Alternatively, the
컨트롤러(3260)는 저장 매체(3220) 및 버퍼 메모리(3240)를 제어하도록 구성된다. 호스트(3100)로부터 읽기 명령이 입력될 때, 컨트롤러(3260)는 저장 매체(3220)에 저장된 데이터가 호스트(3100)로 이동되도록 저장 매체(3220)를 제어한다. 또는, 호스트(3100)로부터 읽기 명령이 입력될 때, 컨트롤러(3260)는 저장 매체(3220)에 저장된 데이터가 버퍼 메모리(3240)를 통해 호스트(3100)로 이동되도록 저장 매체(3220) 및 버퍼 메모리(3240)를 제어한다. The
호스트(3100)로부터 쓰기 명령이 입력될 때, 컨트롤러(3260)는 쓰기 명령과 관련된 데이터가 버퍼 메모리(3240)에 임시 저장되게 한다. 버퍼 메모리(3240)에 임시 저장된 데이터의 전부 또는 일부는 버퍼 메모리(3240)의 여유 공간이 부족할 때 또는 유휴 시간(호스트로부터 요청이 없을 때 생기는 컨트롤러(3260)의 유휴 시간)이 생길 때 컨트롤러(3260)의 제어에 따라 저장 매체(3220)로 옮겨진다. When a write command is input from the
이상의 동작을 수행하기 위해서, 컨트롤러(3260)는 저장 매체(3220)와 버퍼 메모리(3240) 사이의 어드레스 맵핑 정보(address mapping information) 및 버퍼 메모리(3240)에 저장된 데이터가 유효한 정보인지의 여부를 나타내는 쓰기 상태 정보를 저장하기 위한 맵핑 테이블(3261)을 포함한다. In order to perform the above operation, the
쓰기 상태 정보는 외부로부터 제공되는 무효 정보에 따라 갱신되며, 이는 이후 상세히 설명될 것이다. 컨트롤러(3260)는 맵핑 테이블(3261)의 쓰기 상태 정보에 따라 버퍼 메모리(3240)에 저장된 데이터의 전부 또는 일부가 저장 매체(3220)에 쓰이도록 저장 매체(3220) 및 버퍼 메모리(3240)를 제어하며, 이는 이후 상세히 설명될 것이다.The write status information is updated according to invalid information provided from the outside, which will be described later in detail. The
이상의 설명으로부터 알 수 있듯이, 저장 장치(3200)는 버퍼 메모리(3240)의 여유 공간이 부족할 때 또는 유휴 시간(호스트로부터 요청이 없을 때 생기는 컨트롤러(3260)의 유휴 시간)이 생길 때 맵핑 테이블(3261)의 쓰기 상태 정보를 참조하여 버퍼 메모리(3240)에 저장된 데이터의 전부 또는 일부를 저장 매체(3220)로 옮기지 않는다.As can be seen from the above description, the
즉, 저장 장치(3200)는 버퍼 메모리(3240)에 저장된 데이터가 유효한 데이터인지 또는 무효한 데이터인지를 나타내는 무효 정보를 저장 장치(3200)의 외부(예 를 들면, 호스트)로부터 입력받고 입력된 정보를 참조하여 버퍼 메모리(3240)에 저장된 데이터 중 무효한 데이터가 저장 매체(3220)에 쓰이는 것을 방지한다. That is, the
다시 말해서, 저장 장치(3200)는 버퍼 메모리(3240)에 저장된 데이터에 유효/무효 정보의 꼬리표를 달아 저장 매체(3220)로의 데이터 옮겨 쓰기 동작을 선별적으로 제어한다. 따라서, 저장 장치(3200)의 쓰기 성능이 향상되고, 불필요한 쓰기 동작으로 인한 저장 매체(3220)의 수명이 단축되는 것을 방지할 수 있으며, 불필요한 쓰기 동작으로 인한 전력 소모를 줄일 수 있다.In other words, the
도 10 및 도 11은 도 9에 도시된 컨트롤러(3260)의 맵핑 테이블을 예시적으로 보여주는 도면들이다. 도 10 및 도 11을 참조하면, 부호 "BBN"은 버퍼 메모리(3240)의 블록 번호를 나타내고, 부호 "DCN"은 저장 매체(3220)의 클러스터 번호를 나타내며, 부호 "WSI"는 버퍼 메모리(3240)에 저장된 데이터가 유효한 데이터인지의 여부를 나타내는 쓰기 상태 정보를 나타낸다. 10 and 11 exemplarily illustrate mapping tables of the
설명의 편의상, 버퍼 메모리(3240)의 블록 크기가 복수의 섹터로 구성되는 클러스터의 크기와 같다고 가정하자. 하지만, 저장 매체(3220)의 할당 단위(allocation unit)가 여기에 개시된 것에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 예를 들면, 저장 매체(3220)의 할당 단위가 마그네틱 디스크의 섹터로 또는 플래시 메모리의 페이지, 섹터, 또는 블록으로 지정될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 도 10 및 도 11에 있어서, 무효 데이터는 'X'로 표시되어 있고, 유효 데이터는 'V'로 표시되어 있다.For convenience of explanation, assume that the block size of the
도 10에 도시된 바와 같이, 버퍼 메모리(3240)에 3개의 파일들(FILE1, FILE2, FILE3)과 관련된 데이터가 유효한 데이터로서 저장되어 있다고 가정하자. 각 데이터는 저장 매체(3220)로부터 읽혀진 데이터로 호스트(3100)에 의해서 갱신되고 저장 매체(3220)에 아직 저장되지 않는 데이터일 수 있다. 또는, 호스트(3100)에서 전달되고 저장 매체(3220)에 아직 저장되지 않은 데이터일 수 있다. As shown in FIG. 10, assume that data associated with three files FILE1, FILE2, and FILE3 are stored as valid data in the
버퍼 메모리(3240)에 저장된 파일 데이터(FILE1, FILE2, FILE3)는, 앞서 언급된 바와 같이, 버퍼 메모리(3240)의 여유 공간이 부족할 때 또는 유휴 시간이 생길 때 컨트롤러(3260)의 제어에 따라 저장 매체(3220)로 이동될 것이다. 컨트롤러(3260)는 호스트(3100)로부터 전달되는 무효 정보에 따라 저장된 파일들 데이터(FILE1, FILE2, FILE3)의 쓰기 상태 정보를 갱신하도록 구성된다. As described above, the file data FILE1, FILE2, and FILE3 stored in the
예를 들면, 파일 데이터(FILE2)가 저장 장치(3200)의 상위 레벨로서 호스트(3100)에서 삭제되었다는 무효 정보가 호스트(3100)로부터 입력되면, 도 11에 도시된 바와 같이, 컨트롤러(3260)는 무효 데이터를 나타내도록 파일 데이터(FILE2)의 쓰기 상태 정보를 'X'로 표시한다. 또한, 컨트롤러(3260)는 무효 데이터를 나타내도록 저장 매체(3220)에 쓰인 데이터의 쓰기 상태 정보를 'X'로 표시한다.For example, if invalid information is input from the
도 12는 도 9에 도시된 사용자 장치의 버퍼 메모리 데이터를 무효화하는 동작을 설명하기 위한 순서도이다. 도 9에 도시된 사용자 장치(3000)의 무효화 동작은, 무효화 명령이 저장 장치(3200)의 외부로부터 인가되었는 지의 여부를 판별하는 S3100 단계와, 무효화 명령이 입력될 때 버퍼 메모리(3240)에 임시 저장된 데이터 전부 또는 일부를 무효화시키는 S3120 단계를 포함한다. 이후, 무효화된 데이터 는 저장 매체(3220)에 쓰이지 않는다.FIG. 12 is a flowchart for describing an operation of invalidating buffer memory data of the user device illustrated in FIG. 9. The invalidation operation of the
도 13 내지 도 15는 도 9에 도시된 사용자 장치의 무효화 동작을 설명하기 위한 도면들이다. 앞서 설명된 바와 같이, 저장 장치(3200)의 컨트롤러(3260)는 버퍼 메모리(3240)의 여유 공간을 확보하기 위해서 또는 유휴 시간을 활용하기 위해서 맵핑 테이블(3261)을 참조하여 버퍼 메모리(3240)에 저장되어 있는 데이터 파일들을 저장 매체(3220)로 옮겨놓는다.13 to 15 are diagrams for describing an invalidation operation of the user device illustrated in FIG. 9. As described above, the
도 13에 도시된 바와 같이, 버퍼 메모리(3240)에는 3개의 파일 데이터(FILE1-FILE3)가 유효한 데이터로서 저장되어 있다고 가정하자. 특정 시점에서 저장 장치(3200)의 컨트롤러(3260)는 저장된 파일 데이터(FILE1-FILE3)와 관련된 맵핑 테이블(3261)의 쓰기 상태 정보(WSI)를 참조하여 어떤 데이터가 무효한 데이터인 지의 여부를 판별한다. As shown in FIG. 13, assume that three file data FILE1-FILE3 are stored as valid data in the
도 13에 도시된 바와 같이, 모든 파일 데이터(FILE1-FILE3)가 맵핑 테이블(3261)에서 유효한 데이터로서 표시되어 있기 때문에, 컨트롤러(3260)는 정해진 방식에 따라 파일 데이터(FILE1-FILE3)가 저장 매체(3220)의 대응하는 공간으로 옮겨지도록 저장 매체(3220) 및 버퍼 메모리(3240)를 제어한다.As shown in Fig. 13, since all file data FILE1-FILE3 are represented as valid data in the mapping table 3331, the
만약, 저장 매체(3220)로의 데이터 옮겨 쓰기 동작 이전에 저장 장치(3200)의 외부로부터 무효 정보(무효화 명령, 무효한 데이터 파일의 어드레스 정보, 그리고 무효한 파일 데이터의 크기 정보를 포함함)가 입력되면, 저장 장치(3200)의 컨트롤러(3260)는 무효 정보와 관련된 파일 데이터(예를 들면, FILE2)를 무효화시킨다.If invalid information (including an invalidation command, address information of an invalid data file, and size information of invalid file data) is input from the outside of the
즉, 도 14에 도시된 바와 같이, 파일 데이터(FILE2)와 관련된 맵핑 테이블(3261)의 쓰기 상태 정보(WSI)는 무효 데이터를 나타내도록 컨트롤러(3260)의 제어에 따라 갱신된다. 이후, 특정 시점에서 저장 장치(3200)의 컨트롤러(3260)는 저장된 파일 데이터(FILE1-FILE3)와 관련된 맵핑 테이블(3261)의 쓰기 상태 정보(WSI)를 참조하여 어떤 데이터 파일들이 무효한 데이터인 지의 여부를 판별한다. That is, as shown in FIG. 14, the write state information WSI of the mapping table 3331 associated with the file data FILE2 is updated under the control of the
도 14에 도시된 바와 같이, 파일 데이터(FILE1, FILE3)만이 맵핑 테이블(3261)에서 유효한 데이터로서 표시되어 있기 때문에, 컨트롤러(3260)는 정해진 방식에 따라 파일 데이터(FILE1, FILE3)가 저장 매체(3220)의 대응하는 공간으로 옮겨지도록 저장 매체(3220) 및 버퍼 메모리(3240)를 제어한다. 즉, 컨트롤러(3260)는 파일 데이터(FILE2)가 저장 매체(220)의 대응하는 공간으로 옮겨지는 것을 방지한다. 무효 파일 데이터로 처리된 버퍼 메모리(3240)의 공간은 이후 행해지는 쓰기/읽기 동작을 위해서 사용될 수 있다.As shown in Fig. 14, since only the file data FILE1 and FILE3 are displayed as valid data in the mapping table 3331, the
또 다른 예로서, 도 15에 도시된 바와 같이, 단지 하나의 파일 데이터(FILE1)만이 버퍼 메모리(3240)에 저장되어 있다고 가정하자. 만약 저장 매체(3220)로의 데이터 옮겨 쓰기 동작 이전에 저장 장치(3200)의 외부로부터 무효화 명령이 입력되면, 저장 장치(3200)의 컨트롤러(3260)는 입력된 무효화 명령과 관련된 데이터(FILE1)를 무효화시킨다. As another example, assume that only one file data FILE1 is stored in the
즉, 도 15에 도시된 바와 같이, 데이터(FILE1)와 관련된 맵핑 테이블(3261)의 쓰기 상태 정보(WSI)는 무효 데이터를 나타내도록 컨트롤러(3260)의 제어에 따라 갱신된다. 이후, 특정 시점에서 저장 장치(3200)의 컨트롤러(3260)는 저장된 데 이터(FILE1)와 관련된 맵핑 테이블(3261)의 쓰기 상태 정보(WSI)를 참조하여 저장된 데이터가 무효한 데이터인지의 여부를 판별한다. That is, as shown in FIG. 15, the write state information WSI of the mapping table 3331 associated with the data FILE1 is updated under the control of the
도 15에 도시된 바와 같이, 맵핑 테이블(3261)에서 유효한 데이터로서 표시되어 있는 데이터가 존재하지 않기 때문에, 저장 장치(3200)에서는 어떠한 옮겨 쓰기 동작도 일어나지 않는다. 특히, 유휴 상태에서의 무효한 데이터의 옮겨 쓰기 동작이 방지될 수 있다. 무효 데이터로 처리된 버퍼 메모리(3240)의 공간은 이후 행해지는 쓰기 동작을 위해서 사용될 수 있다.As shown in FIG. 15, since there is no data displayed as valid data in the mapping table 3331, no rewrite operation occurs in the
비록 무효 데이터로 표시된 데이터가 저장 매체(3220)에 쓰이더라도, 저장 매체(3220)에 저장된 데이터인 무효 데이터와 관련된 파일은 어떠한 영향도 받지 않음에 주의해야 한다. 게다가, 무효 처리된 데이터는 컨트롤러(3260)의 제어에 따라 선별적으로 저장 매체(3220)로 옮겨질 수 있다. 예컨대, 무효화 명령에 따라 버퍼 메모리(3240)의 데이터가 무효화되더라도, 컨트롤러(3260)는 선별적으로 무효화된 데이터의 옮겨 쓰기 동작을 수행하도록 구성될 수 있다.Although data marked as invalid data is written to the
도 9에 도시된 저장 장치(3200)는 버퍼 메모리(3240)에 저장된 데이터가 무효한 데이터인 지의 여부를 나타내는 쓰기 상태 정보(WSI)를 포함하는 맵핑 테이블을 참조하여, 버퍼 메모리(3240)에 임시 저장된 데이터를 저장 매체(3220)에 옮기는 동작을 제어한다. 앞서 언급된 바와 같이, 데이터의 쓰기 상태 정보는 저장 장치(3200)의 외부로부터 제공되는 것으로, 그 데이터는 저장 장치(3200)의 외부에서 생성되어 전달된 데이터이다. The
또는, 그 데이터는 저장 매체(3220)에서 읽혀지고 저장 장치(3200)의 외부에 서 변경된 새로운 데이터일 수 있다. 이러한 저장 장치(3200)는 사용자 장치뿐만 아니라 데이터를 저장하고자 하는 장치들(예를 들면, 하드 디스크 또는 플래시 메모리를 기반으로 한 MP3 플레이어, 휴대용 전자 장치들, 또는 그와 같은 것)에 적용될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.Alternatively, the data may be new data read from the
도 16은 버퍼 메모리의 데이터를 무효화하는 사용자 장치의 다른 실시 예를 보여주는 블록도이다. 도 16을 참조하면, 사용자 장치(4000)는 호스트(4100) 및 외부 저장 장치(4200)를 포함한다.16 is a block diagram illustrating another embodiment of a user device for invalidating data in a buffer memory. Referring to FIG. 16, the
호스트(4100)는 프로세싱 유닛(4110), 메모리(4120), 그리고 버퍼 메모리(4130)를 포함한다. 프로세싱 유닛(4100)은 중앙처리장치(CPU), 마이크로프로세서, 그리고 그와 같은 것을 포함할 것이다. 바람직하게, 프로세싱 유닛(4110)은 중앙처리장치로 구현될 것이다. 프로세싱 유닛(4110)은 호스트(4100)의 전반적인 동작을 제어하도록 구성될 것이다. The
호스트(4100)는 도 8에서 설명된 컨트롤러(3260)의 역할을 수행하도록 구성될 것이다. 예를 들면, 프로세싱 유닛(4110)은 버퍼 메모리(4130)의 데이터가 메모리(4120)의 맵핑 테이블(4124)에 따라 외부 저장 장치(4200)에 쓰이는 것을 방지하도록 구성될 것이다. 이는 이후 상세히 설명될 것이다.The
계속해서 도 16을 참조하면, 메모리(4120)의 적어도 일부분은 호스트(4100)의 메인 메모리를 포함한다. 또는, 메모리(4120)는 호스트(4100)의 메인 메모리를 구성한다. 메모리(4120)에는 응용 프로그램(4121) 및 파일 시스템(4122)이 각각 제공된다. 파일 시스템(4122)은 FAT 파일 시스템을 포함하는 모든 파일 시스템들을 포함한다. 하지만, 파일 시스템이 이에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. With continued reference to FIG. 16, at least a portion of the
메모리(4120)에는, 또한, 디바이스 드라이버(4123) 및 맵핑 테이블(4124)이 더 제공될 것이다. 디바이스 드라이버(4123)는 외부 저장 장치(4200)의 제어 및 인터페이스를 위해서 사용된다. 프로세싱 유닛(4110)은 디바이스 드라이버(4123)를 이용하여 외부 저장 장치(4200)와의 인터페이스를 제어할 것이다. In the
또한, 프로세싱 유닛(4110)은 디바이스 드라이버(4123)를 이용하여 외부 저장 장치(4200)와 버퍼 메모리(4130) 사이의 어드레스 맵핑을 관리하도록 구성될 것이다. 메모리(4120)에 저장된 맵핑 테이블(4124)은 외부 저장 장치(4200)와의 인터페이스 정보, 외부 저장 장치(4200)와 버퍼 메모리(4130) 사이의 어드레스 맵핑 정보, 그리고 버퍼 메모리(4130)에 저장된 데이터가 유효한 정보인 지의 여부를 나타내는 쓰기 상태 정보를 저장하는 데 사용될 것이다. In addition, the
쓰기 상태 정보는 프로세싱 유닛(4110)에 의해서 갱신될 것이다. 예를 들면, 응용 프로그램(4121)에 의해서 처리되는 파일의 데이터 전부가 삭제될 때 또는 응용 프로그램(4121)에 의해서 처리되는 파일의 일부가 삭제될 때, 프로세싱 유닛(4110)은 디바이스 드라이버(4123)에 의거하여 맵핑 테이블(4124)의 쓰기 상태 정보를 갱신한다. The write status information will be updated by the
프로세싱 유닛(4110)은 맵핑 테이블(4124)의 쓰기 상태 정보에 따라 버퍼 메모리(4130)에 저장된 데이터의 전부 또는 일부가 외부 저장 장치(4200)에 쓰이도록 버퍼 메모리(4130) 및 외부 저장 장치(4200)를 제어할 것이다. 따라서, 이미 삭제 된 데이터에 대응하는 버퍼 메모리(4130)의 데이터가 외부 저장 장치(4200)에 쓰이는 것을 방지하는 것이 가능하다.The
계속해서, 버퍼 메모리(4130)는 사용자 장치(4100)와 외부 저장 장치(4200) 사이의 원활한 데이터 전송을 위해 사용되며, DRAM 또는 SRAM과 같은 고속 휘발성 메모리 또는 MRAM, PRAM, FRAM, 낸드 플래시 메모리, 또는 노어 플래시 메모리와 같은 불휘발성 메모리로 구성될 수 있다. 바람직하게, 버퍼 메모리(4130)는 낸드 플래시 메모리로 구현될 것이다. Subsequently, the
버퍼 메모리(4130)는 쓰기 버퍼로서 사용될 수 있다. 예를 들면, 버퍼 메모리(4130)는 프로세싱 유닛(4110)의 요청에 따라 외부 저장 장치(4200)에 쓰일 데이터를 임시 저장하기 위한 쓰기 버퍼로서 사용될 수 있다. 또한, 쓰기 버퍼의 기능은 선택적으로 사용될 수 있다. 예컨대, 경우에 따라, 프로세싱 유닛(4110)에 의해서 처리된 데이터는 쓰기 버퍼 즉, 버퍼 메모리(4130)를 경유하지 않고 외부 저장 장치(4200)로 직접 전송될 수 있다. The
버퍼 메모리(4130)는 읽기 버퍼로서 사용될 수 있다. 예를 들면, 버퍼 메모리(4130)는 프로세싱 유닛(4110)의 요청에 따라 외부 저장 장치(4200)에서 읽혀진 데이터를 임시 저장하기 위한 읽기 버퍼로서 사용될 수 있다. 도면에는 단지 하나의 버퍼 메모리가 도시되어 있지만, 2개 또는 그보다 많은 버퍼 메모리들이 제공될 수 있다. 이 경우, 각 버퍼 메모리는 쓰기 버퍼, 읽기 버퍼 또는 2개의 기능을 모두 갖는 버퍼로서 사용될 수 있다.The
계속해서 도 16을 참조하면, 외부 저장 장치(4200)는 데이터(문서 데이터, 영상 데이터, 음악 데이터, 그리고 프로그램과 같은 저장 가능한 모든 형식의 데이터를 포함)를 저장하기 위한 것으로, 마그네틱 디스크 또는 플래시 메모리와 같은 불 휘발성 반도체 메모리로 구성될 수 있다. 16, the
외부 저장 장치(4200)에는 버퍼 메모리가 제공되지 않을 것이다. 이는 호스트(4100)의 버퍼 메모리가 쓰기 버퍼/읽기 버퍼인 캐쉬 메모리로서 사용되기 때문이다. 이러한 경우, 버퍼 메모리(4130)와 외부 저장 장치(4200)는 하이브리드 하드 디스크(Hybrid Hard Disk: HHD)로서 기능할 것이다.The buffer memory will not be provided to the
계속해서 도 16을 참조하면, 프로세싱 유닛(4110)은 외부 저장 장치(4200)와 버퍼 메모리(4130)를 제어하도록 구성된다. 프로세싱 유닛(4110)은 필요에 따라 외부 저장 장치(4200)에 저장된 데이터가 호스트(4100)로 이동되도록 디바이스 드라이버(4123)를 이용하여 외부 저장 장치(4200)를 제어한다. 또는, 프로세싱 유닛(4110)은 필요에 따라 외부 저장 장치(4200)에 저장된 데이터가 버퍼 메모리(4130)를 통해 호스트(4100)로 이동되도록 디바이스 드라이버(4123)를 이용하여 외부 저장 장치(4200) 및 버퍼 메모리(4130)를 제어한다. With continued reference to FIG. 16, the
프로세싱 유닛(4110)은 외부 저장 장치(4200)에 저장될 데이터가 버퍼 메모리(4130)에 임시 저장되게 한다. 버퍼 메모리(4130)에 임시 저장된 데이터의 전부 또는 일부는 버퍼 메모리(4130)의 여유 공간이 부족할 때 또는 프로세싱 유닛(4110)의 유휴 시간이 생길 때, 프로세싱 유닛(4110)의 제어에 따라 외부 저장 장치(4200)로 옮겨진다. The
이상의 동작을 수행하기 위해서, 앞서 언급된 바와 같이, 프로세싱 유 닛(4110)은 외부 저장 장치(4200)와 버퍼 메모리(4130) 사이의 어드레스 맵핑 정보 및 버퍼 메모리(4130)에 저장된 데이터가 유효한 정보인지의 여부를 나타내는 쓰기 상태 정보를 저장하기 위한 맵핑 테이블(4124)을 관리한다.In order to perform the above operation, as mentioned above, the
호스트(4100)와 외부 저장 장치(4200)는 ATA, SATA, USB, SCSI, ESDI, PCE-express, 또는 IDE 인터페이스와 같은 표준 인터페이스 (standardized interface)에 의해서 연결될 수 있다. 하지만, 호스트(4100)와 외부 저장 장치(4200)를 연결하기 위한 인터페이스 방식이 이에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.The
이상의 설명으로부터 알 수 있듯이, 본 발명의 실시 예에 따른 사용자 장치(4000)는 버퍼 메모리(4130)의 여유 공간이 부족할 때 또는 프로세싱 유닛(4110)의 유휴 시간이 생길 때 맵핑 테이블(4124)의 쓰기 상태 정보를 참조하여 버퍼 메모리(4130)에 저장된 데이터의 전부 또는 일부를 외부 저장 장치(4200)로 옮기지 않는다. As can be seen from the above description, the
즉, 본 발명의 실시 예에 따른 사용자 장치(4000)는 버퍼 메모리(4130)에 저장된 데이터가 유효한 데이터인 지 또는 무효한 데이터 인지를 나타내는 맵핑 테이블(4124)의 쓰기 상태 정보에 의거하여, 버퍼 메모리(4130)에 저장된 데이터 중 무효한 데이터가 외부 저장 장치(4200)에 쓰이는 것을 방지한다. That is, the
다시 말해서, 본 발명의 실시 예에 따른 사용자 장치(4000)는 버퍼 메모리(4130)에 저장된 데이터에 유효/무효 정보의 꼬리표를 달아 외부 저장 장치(4200)로의 데이터 옮겨 쓰기 동작을 선별적으로 제어한다. 버퍼 메모리(4130)에 저장된 데이터를 외부 저장 장치(4200)에 옮겨 쓰는 동작은 도 10 내지 도 15에서 설명된 것과 동일하다. 따라서, 사용자 장치(4000)의 쓰기 성능이 향상되고, 불필요한 쓰기 동작으로 인한 외부 저장 장치(4200)의 수명이 단축되는 것을 방지할 수 있다. 또한, 불필요한 쓰기 동작으로 인한 전력 소모를 줄임으로써 배터리 수명을 연장할 수 있다.In other words, the
몇몇 실시 예에 있어서, 버퍼 메모리(4130)는 온-보드 타입으로 호스트(4100)에 실장 될 수 있다. 또는, 버퍼 메모리(4130)는 PCI 버스 또는 PCI-E 버스를 통해 호스트(4100)와 연결될 수 있다. 하지만, 버퍼 메모리(4130)의 연결 방법이 여기에 개시된 것에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 예를 들면, 데스크 탑 컴퓨터 및 노트북컴퓨터의 가능한 인터페이스들이 모두 사용될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.In some embodiments, the
버퍼 메모리(4130)가 낸드 플래시 메모리 또는 노어 플래시 메모리와 같은 불휘발성 메모리로 구현되는 경우, 버퍼 메모리(4130)는 다양하게 사용될 수 있다. 예를 들면, 버퍼 메모리(4130)는 부팅 시에 사용되는 부트 코드를 저장하기 위한 부트-업 메모리로서 사용될 수 있다. 이는 도 9에 도시된 버퍼 메모리(3240) 역시 부트-업 메모리로서 사용될 수 있음을 의미한다. 게다가, 시스템 성능의 향상을 위해서 중요한 소프트웨어가 버퍼 메모리(4130)에 저장될 수 있다.When the
한편, 도 9 또는 도 16에 도시된 사용자 장치(3000 또는 4000)는 앞서 언급된 로깅 방식을 사용하여 무효화 동작을 수행할 수 있다. 즉, 사용자 장치(3000 또 는 4000)는 버퍼 메모리에 저장된 삭제될 데이터의 크기가 기준 크기를 초과하면 삭제될 영역의 위치를 기록하는 로깅 방식을 적용하며, 기준 크기를 초과하지 않으면 삭제될 데이터를 바로 무효화할 수 있다. 또한, 사용자 장치(3000 또는 4000)는 도 5에서 설명한 바와 같이, 일반 데이터에 대한 삭제인지 보안 데이터에 대한 삭제인지 여부에 따라 무효화 동작을 수행할 수도 있다.Meanwhile, the
Ⅳ. 무효화 명령을 이용하여 무효화 동작을 수행하는 사용자 장치Ⅳ. User device performing an invalidation operation by using an invalidation command
도 17은 파일 삭제 명령을 이용하여 무효화 동작을 수행하는 사용자 장치를 예시적으로 보여주는 블록도이다. 도 17을 참조하면, 사용자 장치(5000)는 인터페이스(5210)를 통해 연결된 호스트(5200) 및 저장 장치(5205))를 포함한다. 17 is a block diagram illustrating an example of a user device performing an invalidation operation using a file delete command. Referring to FIG. 17, the
인터페이스(5210)는 ATA, SATA, PATA, USB, SCSI, ESDI, IEEE 1394, IDE, PCI-express 및/또는 카드 인터페이스와 같은 표준 인터페이스일 수 있다. 호스트(5200)는 어드레스/데이터 버스(5225)를 통해 메모리(5220)와 통신하는 프로세서(5215)를 포함한다. The
예시적으로, 프로세서(5215)는 상업적으로 이용 가능한 또는 맞춤형(custom) 프로세서일 수 있다. 메모리(5220)는 사용자 장치(5000)를 동작시키기 위한 소프트웨어 및 데이터를 포함하는 하나 또는 그 이상의 일반적인 메모리 장치이다. 메모리(5220)는 캐시, ROM, PROM, EPROM, EEPROM, PRAM, 플래시 메모리, SRAM, 그리고 DRAM과 같은 형태의 장치를 포함할 수 있다.By way of example,
도 17에 도시된 바와 같이, 메모리(5220)는 다섯 또는 그 이상의 소프트웨어 및/또는 데이터 카테고리를 포함한다. 소프트웨어 및/또는 데이터 카테고리는 운영 체제(OS; Operating System, 5228), 어플리케이션(application, 5230), 파일 시스템(5235), 메모리 매니저(memory manager, 5240), 그리고 입출력 드라이버(5245)일 수 있다. As shown in FIG. 17,
운영 체제(5228)는 호스트(5200)의 동작을 제어한다. 더 상세하게는, 운영 체제(5228)는 호스트(5200)의 소프트웨어 및/또는 하드웨어 자원(resource)을 제어할 수 있으며, 프로세서(5215)에 의한 프로그램 실행을 제어할 수 있다. 어플리케이션(5230)은 호스트(5200)에서 실행되는 다양한 응용 프로그램들을 나타낸다.
파일 시스템(5235)은 컴퓨터 파일들 및/또는 데이터를 메모리(5220) 및/또는 저장 장치(5205)와 같은 저장 영역에 저장하거나 조직화한다. 파일 시스템(5235)은 호스트(5200)에서 실행되는 특정한 운영 체제(5228)에 따라 사용된다. 메모리 매니저(5240)는 메모리(5220)에서 수행되는 메모리 액세스 동작 및/또는 저장 장치(5205)와 같은 외부 장치에서 수행되는 메모리 액세스 동작을 제어한다. 입출력 드라이버(5245)는 저장 장치(5205)와 같은 다른 장치, 컴퓨터 시스템, 또는 네트워크(예를 들면, 인터넷) 및 호스트(5200) 사이의 정보 전달을 수행한다.
본 발명의 다양한 실시 예에 따르면, 호스트(5200)는 PDA(personal digital assistance), 컴퓨터, 디지털 오디오 플레이어, 디지털 카메라, 그리고 모바일 터미널일 수 있다.According to various embodiments of the present disclosure, the host 5200 may be a personal digital assistance (PDA), a computer, a digital audio player, a digital camera, and a mobile terminal.
저장 장치(5205)는 어드레스/데이터 버스(5260)를 통해 메모리(5255)와 통신하는 컨트롤러(5250)를 포함한다. 메모리(5255)는 쓰기 동작 전에 소거 동작이 수 행되는 다양한 형태의 메모리일 수 있다. 예시적으로, 본 발명에 따른 저장 장치(5205)는 메모리 카드 장치, SSD 장치, ATA 버스 장치, SATA 버스 장치, 멀티미디어 카드 장치, SD 장치, 메모리 스틱 장치, 하드 디스크 드라이브 장치, 하이브리드 드라이브 장치, 또는 범용 직렬 버스 플래시 장치일 수 있다. The
컨트롤러(5250)는 어드레스/데이터 버스(5275)를 통해 로컬 메모리(5270)와 통신하는 프로세서(5265)를 포함한다. 예시적으로, 프로세서(5265)는 상업적으로 이용 가능한 또는 맞춤형 마이크로 프로세서일 수 있다.
로컬 메모리(5270)는 본 발명에 따른 저장 장치(5205)를 동작시키기 위한 소프트웨어 및 데이터를 포함하는 하나 또는 그 이상의 일반적인 메모리 장치일 수 있다. 로컬 메모리(5270)는 캐시, ROM, PROM, EPROM, EEPROM, PRAM, 플래시 메모리, SRAM, 그리고 DRAM을 포함할 수 있다.
도 17에 도시된 바와 같이, 로컬 메모리(5270)는 셋 또는 그 이상의 소프트웨어 및/또는 데이터 카테고리를 포함한다. 소프트웨어 및/또는 데이터 카테고리는 운영 체제(5278), 플래시 변환 계층(FTL; Flash Transition Layer) 모듈(5280), 그리고 테이블(5285)일 수 있다. 운영 체제(5278)는 저장 장치(5205)의 일반적인 동작을 제어한다. 더 상세하게는, 운영 체제(5278)는 저장 장치(5205)의 소프트웨어 및/또는 하드웨어 자원을 제어할 수 있으며, 프로세서(5265)에 의한 프로그램 실행을 제어할 수 있다. 한편, 발명의 실시 예에 따라, 로컬 메모리(5270)는 운영 체제(5278)를 포함하지 않을 수도 있다.As shown in FIG. 17,
플래시 변환 계층 모듈(5280)은 플래시 메모리 장치에서 사용될 수 있다. 상 술한 바와 같이, 플래시 칩은 블록 단위로 소거된다. 일반적인 플래시 메모리 장치는 블록당 약 100,000번의 소거 동작을 수행할 수 있다. 플래시 메모리의 일부 블록들이 다른 블록들보다 빠르게 마모되는 것을 방지하기 위해, 플래시 메모리 장치는 소거 사이클을 메모리 전체에 분산한다. 이는 마모도 관리라고 불린다. 마모도 관리를 위해, 플래시 변환 계층 모듈(5280)은 메모리(5255)의 파일/데이터의 저장 장소 및 파일 시스템(5235) 사이를 인터페이싱한다. 따라서, 파일 시스템(5235)은 메모리(5255)의 파일/데이터의 실제 저장 장소의 트랙(track)을 유지할 필요가 없다. The flash
테이블(5285)은 플래시 변환 계층 모듈(5280)에 의해 유지될 수 있으며, 메모리(5255)의 메모리 할당 유닛의 물리적 어드레스를 메모리 할당 유닛이 무효 데이터를 포함하는지를 나타내는 지표와 연관시키기 위해 사용될 수 있다.Table 5285 may be maintained by flash
도 18은 저장 장치(5205)의 메모리 할당 유닛들을 메모리 할당 유닛들이 유효 또는 무효 데이터 중 어느 것을 포함하는지를 나타내는 지표와 연관시키는, 본 발명에 따른 데이터 구조를 보여주는 다이어그램이다. 도 18에서, 메모리 할당 유닛은 페이지이며, 블록은 4 개의 페이지들을 포함하는 것으로 도시되어 있다. 18 is a diagram illustrating a data structure in accordance with the present invention that associates memory allocation units of
도 17 및 18을 참조하면, 테이블(5285)은 플래시 메모리(5255)의 페이지들의 물리적 어드레스를 파일 시스템(5235)에 의해 사용되는 논리적 어드레스들과 연관시킨다. 또한, 테이블(5285)은 플래시 메모리(5255)의 특정 페이지가 무효 데이터 또는 유효 데이터 중 어느 것을 포함하는지를 나타내는 열을 포함한다. Referring to FIGS. 17 and 18, table 5285 associates the physical addresses of pages of
도 18에 도시된 실시 예에서, 논리적 어드레스 0-3을 포함하는 페이지들의 블록은 무효 데이터를 포함하므로, 소거될 수 있다. 블록 내의 모든 페이지들이 무효 데이터를 포함하는 때에 소거 동작을 시작하기 위해, 테이블(5285)이 이용될 수 있다.In the embodiment illustrated in FIG. 18, a block of pages including logical addresses 0-3 includes invalid data and thus may be erased. Table 5285 may be used to start an erase operation when all pages in a block contain invalid data.
종래의 예에서, 논리적 페이지 어드레스(0)에 두 번째 쓰기 동작이 시도되는 경우, 논리적 페이지 어드레스(0)가 무효 데이터를 포함하는지의 여부가 판별될 수 있다. 그러나 논리적 페이지 어드레스 1-3 또한 무효 데이터를 포함하는지의 여부는 불명확하다. 따라서, 논리적 페이지 어드레스(0)에 쓰기 동작을 수행하기 위해서는 논리적 페이지 어드레스들(0-3)을 포함하는 블록 전체가 소거되어야 하므로, 논리적 페이지 어드레스들(1-3) 내의 데이터는 다른 저장 장소로 복사되어야 한다. 논리적 페이지 어드레스(1-3)가 무효 데이터를 포함하는 경우, 이러한 복사 동작은 요구되지 않을 수 있다. In the conventional example, when a second write operation is attempted to the
상술한 바와 같은 불필요한 복사 동작을 줄이기 위해, 테이블(5285)은 무효 데이터를 포함하는 페이지들을 나타내는 지표를 제공할 수 있다. 도 18에서, 본 발명에 따른 데이터 구조는 테이블 형태인 것으로 도시되어 있지만, 본 발명에 따른 데이터 구조는 다른 형태의 데이터 구조로 다양하게 구현될 수 있다는 것이 이해될 것이다.To reduce unnecessary copying operations as described above, table 5285 may provide an indicator that indicates pages containing invalid data. In FIG. 18, the data structure according to the present invention is shown in the form of a table, but it will be understood that the data structure according to the present invention can be variously implemented in other forms of data structure.
도 17을 참조하여 설명된 사용자 장치의 동작을 수행하기 위한 컴퓨터 프로그램 코드는 JAVA, C, 및/또는 C++와 같은 하이-레벨(high level) 프로그램 언어로 작성될 수 있다. 또한, 본 발명의 실시 예에 따른 동작을 수행하기 위한 컴퓨터 프로그램 코드는 해석 언어(interpreted language)로 작성될 수 있다. 동작 성능 및/ 또는 메모리 사용을 개선하기 위해, 일부 모듈들 또는 루틴들은 어셈블리 언어(assembly language) 또는 마이크로 코드(micro-code)로 작성될 수 있다. 일부 또는 모든 프로그램 모듈들의 기능은 개별적인 하드웨어 구성요소들, 하나 또는 그 이상의 주문형 반도체(ASIC, application specific integrated circuits), 또는 프로그램된 디지털 신호 프로세서 또는 마이크로 컨트롤러로 구현될 수 있다.Computer program code for performing operations of the user device described with reference to FIG. 17 may be written in a high level programming language such as JAVA, C, and / or C ++. In addition, the computer program code for performing an operation according to an embodiment of the present invention may be written in an interpreted language. In order to improve operating performance and / or memory usage, some modules or routines may be written in assembly language or micro-code. The functionality of some or all of the program modules may be implemented as individual hardware components, one or more application specific integrated circuits (ASICs), or programmed digital signal processors or microcontrollers.
이하에서, 본 발명의 실시 예에 따른 방법, 시스템, 장치, 및/또는 컴퓨터 프로그램 제품을 보여주는 메시지의 흐름, 순서도 및/또는 블록도를 참조하여, 본 발명이 설명된다. 메시지의 흐름, 순서도 및/또는 블록도는 외부 데이터 저장 장치를 포함하는 데이터 프로세싱 시스템을 동작시키기 위한 일반적인 동작들을 보여준다. 메시지의 흐름, 순서도 및/또는 블록도의 도면들 각각 및 이들의 조합은 컴퓨터 프로그램 명령어 및/또는 하드웨어 동작에 의해 구현될 수 있다. 컴퓨터 프로그램 명령어는 범용 컴퓨터(general purpose computer), 특수 목적 컴퓨터(special purpose computer), 또는 다른 프로그램 가능한 데이터 프로세싱 기구의 프로세서에 제공될 수 있다. 컴퓨터 프로그램 명령어는 컴퓨터 또는 프로그램 가능한 데이터 프로세싱 기구를 통해 수행되어, 메시지의 흐름, 순서도 및/또는 블록도에 기술된 기능들을 구현하기 위한 수단을 제공할 수 있다.In the following, with reference to the flow, flowchart and / or block diagram of a message showing a method, system, apparatus and / or computer program product according to an embodiment of the invention, the invention is described. The flow, flow chart and / or block diagram of the messages illustrate common operations for operating a data processing system including an external data storage device. Each of the figures in the flow, flow and / or block diagrams of messages and combinations thereof may be implemented by computer program instructions and / or hardware operations. The computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus. Computer program instructions may be performed through a computer or programmable data processing apparatus to provide a means for implementing the functions described in the flow, flow, and / or block diagram of a message.
컴퓨터 프로그램 명령어들은 컴퓨터에 의해 사용 가능한 또는 컴퓨터가 읽을 수 있는 메모리에 저장될 수 있으며, 컴퓨터 또는 다른 프로그램 가능한 데이터 프로세싱 기구들이 특정한 방법으로 동작하게 할 수 있다. 즉, 컴퓨터가 사용 가능한 또는 컴퓨터가 읽을 수 있는 메모리에 저장되어 있는 명령어들은 메시지의 흐름, 순서도 및/또는 블록도에 기술된 기능을 구현하는 명령어들을 제공할 수 있다.Computer program instructions may be stored in a memory usable or computer readable, and may cause the computer or other programmable data processing instruments to operate in a particular manner. That is, instructions stored on a computer usable or computer readable memory may provide instructions that implement the functionality described in the flow, flow, and / or block diagram of a message.
컴퓨터 또는 다른 프로그램 가능한 기구에서 수행될 일련의 동작 단계들을 유발하여, 컴퓨터로 수행되는 프로세스를 제공하기 위해, 컴퓨터 프로그램 명령어들은 컴퓨터 또는 다른 프로그램 가능한 데이터 프로세싱 기구에 로딩될 수 있다. 즉, 컴퓨터 또는 다른 프로그램 가능한 기구에서 수행되는 명령어들은 메시지의 흐름, 순서도 및/또는 블록도에 기술된 기능들을 구현하기 위한 동작 단계들을 제공한다.Computer program instructions may be loaded into a computer or other programmable data processing apparatus to provide a process to be performed by the computer, inducing a series of operational steps to be performed on the computer or other programmable instrument. In other words, instructions executed on a computer or other programmable instrument provide the operational steps for implementing the functions described in the flow, flow and / or block diagram of a message.
도 19 내지 23은 도 17에 도시된 사용자 장치의 동작들을 설명하기 위한 순서도이다. 도 19를 참조하면, 단계(S5400)에서, 호스트(5200)는 하나 또는 그 이상의 파일들에 대한 무효화 명령(invalidity command)을 외부 저장 장치(5205)에 전달한다. 외부 저장 장치는, 플래시 메모리 장치와 같이, 쓰기 동작 전에 소거 동작이 수행되는 메모리 장치를 포함한다.19 to 23 are flowcharts for describing operations of the user device illustrated in FIG. 17. Referring to FIG. 19, in operation S5400, the host 5200 transmits an invalidity command for one or more files to the
도 20에 도시된 본 발명의 실시 예에 따르면, 단계(S5500)에서, 무효화 동작이 호스트(5200)에서 검출된다. 예를 들면, 검출 동작은 파일 시스템과 연관된 메타 데이터가 삭제된 파일에 대한 삭제 코드로 업데이트 되는 것을 검출함으로써 수행될 수 있다. 호스트(5200)에서 무효화 동작이 검출되면, 단계(S5505)에서, 무효화 명령이 외부 저장 장치(5205)에 전달된다. 무효화 명령은 삭제된 파일과 연관된 논리적 어드레스 및 무효화될 데이터를 나타낼 수 있다.According to the embodiment of the present invention illustrated in FIG. 20, in operation S5500, an invalidation operation is detected at the host 5200. For example, the detection operation may be performed by detecting that metadata associated with the file system is updated with a delete code for the deleted file. When the invalidation operation is detected at the host 5200, in operation S5505, the invalidation command is transmitted to the
도 21을 참조하면, 단계(S5600)에서, 호스트(5200)로부터 무효화 명령이 수신되면, 외부 저장 장치(5205)에서 무효화 동작이 시작된다. 무효화 명령은 하나 또는 그 이상의 파일들의 논리적 어드레스 및 무효화된 데이터를 나타낼 수 있다. 단계(S5605)에서, 논리적 어드레스 및 무효화될 데이터에 따라, 저장 장치(5205)는 메모리(5255)의 하나 또는 그 이상의 메모리 할당 유닛들이 무효 데이터를 포함하는지 식별한다.Referring to FIG. 21, in operation S5600, when an invalidation command is received from the host 5200, an invalidation operation is started in the
도 22를 참조하면, 단계(S5700)에서, 플래시 변환 계층 모듈(5280)은 도 18에 도시된 테이블(5285)과 같은 데이터 구조를 유지한다. 데이터 구조는 메모리(5255)의 메모리 할당 유닛들의 논리적 어드레스 및 물리적 어드레스를 연관시킨다. 또한, 데이터 구조는 다양한 메모리 할당 유닛들이 무효 데이터를 포함하는지의 여부를 나타내는 지표를 포함할 수 있다. 단계(S5705)에서, 메모리 할당 유닛의 물리적 어드레스가 무효화된 파일과 연관되어 있는 것으로 식별되면, 플래시 변환 계층 모듈(5280)은 식별된 메모리 할당 유닛이 무효 데이터를 포함하는 것을 나타내도록 데이터 구조를 업데이트 한다.Referring to FIG. 22, in step S5700, the flash
저장 장치에서 다양한 메모리 동작들이 수행되므로, 사용 가능하며 인접한 메모리 블록들을 더 확보하기 위해, 가비지 컬렉션(garbage collection) 동작이 요구된다. 본 발명의 실시 예에 따르면, 플래시 변환 계층 모듈(5280)은, 호스트(5200)의 운영 체제(5228) 또는 저장 장치(5205)의 운영 체제(5278)가 주기적인 가비지 컬렉션 동작을 수행할 때까지 대기하지 않고, 테이블(5285)을 이용하여 무효 데이터를 포함하는 메모리 유닛들을 수집할 타이밍을 결정할 수 있다.Since various memory operations are performed on the storage device, a garbage collection operation is required to further free up available and adjacent memory blocks. According to an embodiment of the present disclosure, the flash
도 23을 참조하면, 단계(S5800)에서, 플래시 변환 계층 모듈(5280)은 읽기/쓰기 동작 유닛들 각각이 무효 데이터 필드인지 판별하여, 소거 동작 단위(예를 들 면, 플래시 메모리 장치의 블록) 내의 모든 읽기/쓰기 동작 단위(예를 들면, 플래시 메모리 장치의 페이지)가 무효 데이터를 포함하는지 판별한다. Referring to FIG. 23, in step S5800, the flash
단계(S5805)에서, 소거 동작 단위 내의 모든 읽기/쓰기 동작 단위가 무효 데이터를 포함하는 것으로 판별되면, 소거 동작 단위의 소거 동작이 수행될 수 있다. 이와 같은 방법으로, 소거 동작 단위가 소거 준비되면, 실제 물리적 파일 데이터가 소거될 수 있다. 즉, 본 발명에 따라 저장 장치 내의 파일에 대해 물리적 소거를 수행하는 것은, 저장 장치에서 수행되는 중복 파일 기입 동작으로 인해 물리적 소거가 수행되는 것을 기다리는 것보다 빠르게 수행된다. 따라서, 개인적 또는 민감한 데이터를 포함하는 어플리케이션에 응용될 수 있다.In operation S5805, when it is determined that all read / write operation units in the erase operation unit include invalid data, the erase operation of the erase operation unit may be performed. In this manner, when the erase operation unit is ready to erase, the actual physical file data may be erased. That is, performing physical erase on a file in a storage device in accordance with the present invention is performed faster than waiting for the physical erase to be performed due to a duplicate file write operation performed on the storage device. Thus, it can be applied to applications containing personal or sensitive data.
도 19 내지 23의 순서도들은 외부 저장 장치를 포함하는 사용자 장치를 동작시키기 위한 방법, 시스템, 그리고 컴퓨터 프로그램 제품의 구조, 기능, 그리고 동작의 본 발명에 따른 실시 예들을 보여준다. 이와 관련하여, 각각의 블록은 모듈, 세그먼트(segment), 또는 코드의 일부를 나타낸다. 모듈, 세그먼트, 또는 코드의 일부는 특정한 논리적 기능을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령어들을 포함한다. 블록들에서 수행되는 기능들의 순서는 도 19 내지 23에 도시된 것과 다를 수 있다. 예를 들면, 연속적으로 도시된 두 개의 블록들은 기능에 따라 동시에 또는 반대의 순서로 수행될 수 있다.The flowcharts of FIGS. 19 through 23 illustrate embodiments of the method, system, and structure, function, and operation of a computer program product for operating a user device including an external storage device. In this regard, each block represents a module, segment, or part of code. A module, segment, or portion of code includes one or more executable instructions for implementing a particular logical function. The order of the functions performed in the blocks may differ from that shown in FIGS. 19 to 23. For example, two blocks shown in succession may be performed simultaneously or in reverse order, depending on the function.
한편, 도 17에 도시된 사용자 장치(5000)는 앞서 언급된 로깅 방식을 사용하여 무효화 동작을 수행할 수 있다. 즉, 사용자 장치(5000)는 삭제될 데이터의 크기가 기준 크기를 초과하면 삭제될 영역의 위치를 기록하는 로깅 방식을 적용하며, 기준 크기를 초과하지 않으면 삭제될 데이터를 바로 무효화할 수 있다. 또한, 사용자 장치(5000)는 도 5에서 설명한 바와 같이, 일반 데이터에 대한 삭제인지 보안 데이터에 대한 삭제인지 여부에 따라 무효화 동작을 수행할 수도 있다.Meanwhile, the
Ⅴ. 자체 무효화 동작을 수행하는 사용자 장치Ⅴ. User Device Performing Self Invalidation Behavior
도 24는 호스트 개입 없이 자체 무효화 동작을 수행하는 저장 장치를 보여주는 블록도이다. 도 24에서는, 저장 장치의 예로서, 솔리드 스테이트 드라이브(SSD)가 설명될 것이다. 도 24를 참조하면, SSD(6000)는 SSD 컨트롤러(6200) 및 불휘발성 저장 매체(6400)를 포함한다. SSD 컨트롤러(6200)는 제 1 및 제 2 인터페이스들(6210, 6230), 컨트롤러(6220), 그리고 메모리(6240)를 포함한다.24 is a block diagram illustrating a storage device that performs self invalidation operation without host intervention. In FIG. 24, as an example of a storage device, a solid state drive (SSD) will be described. Referring to FIG. 24, the
제 1 인터페이스(6210)는 호스트와의 데이터 입출력 인터페이스로서의 기능을 수행한다. 제 1 인터페이스(6210)는 제한되지 않는 실시 예로, 유니버설 시리얼 버스(USB) 인터페이스, ATA 인터페이스, SATA 인터페이스, SCSI 인터페이스, PCI-express 등이 있다.The
제 2 인터페이스(6230)는 불휘발성 저장 매체(6400)와의 데이터 입출력 인터페이스 기능을 수행한다. 특히, 제 2 인터페이스(6230)는 불휘발성 저장 매체(6400)로/로부터의 다양한 명령들, 어드레스들 그리고 데이터를 송/수신하는데 이용된다. 제 2 인터페이스(6230)의 서로 다른 구조들 및 구성들의 다양성이 가능하고, 그리고 그것의 상세한 설명은 간결성을 위하여 여기에서는 생략한다. The
컨트롤러(6220) 및 메모리(6240)는 제 1 및 제 2 인터페이스들(6210, 6230) 사이에 연결되고, 그리고 모두 호스트(도시되지 않음)와 불휘발성 저장 매체(6400) 간의 데이터의 흐름을 제어/관리하는 기능을 갖는다. 메모리(6240)는, 예를 들어, DRAM이나 SRAM 등을 포함한다. 컨트롤러(6220)는, 예를 들어, 중앙 처리 유닛(CPU), 직접 메모리 액세스(DMA) 컨트롤러, 및 에러 정정 제어(ECC) 엔진을 포함한다.The
계속해서 도 24를 참조하면, 이러한 실시 예의 불휘발성 저장 매체(6400)는 고속 불휘발성 메모리(6410) 및 저속 불휘발성 메모리(6420)를 포함할 수 있다. 그러나 여기에서 상술한 실시 예는 듀얼-스피드 메모리들을 갖는 구조들에 제한되지 않는다. 즉, 불휘발성 저장 매체(6400)는 단일 스피드에 동작하는 단일 종류의 메모리로 구성될 수 있다. 고속 불휘발성 메모리(6410)는 저속 불휘발성 메모리(6420)와 비교할 때 상대적으로 고속(예를 들어, 임의 쓰기 속도)으로 동작 가능하다.24, the
실시 예로서, 고속 불휘발성 메모리(6410)는 싱글-레벨 셀(SLC) 플래시 메모리이고, 그리고 저속 불휘발성 메모리(6420)는 멀티-레벨 셀(MLC) 플래시 메모리일 수 있다. 그러나 본 발명은 이것에 제한되지 않는다. 예를 들어, 고속 불휘발성 메모리(6410)는 상 변화 랜덤 액세스 메모리(PRAM), 혹은 셀마다 1 비트를 저장하는 MLC 플래시 메모리일 수 있다. 고속 불휘발성 메모리(6410) 및 저속 불휘발성 메모리(6420)는 동일 종류의 메모리로 구성될 수 있다. 여기서 동작 속도는 고속 불휘발성 메모리(6410)에 파인-그레인(fine-grain) 매핑하고 저속 불휘발성 메모리(6420)에 코스-그레인(coarse-grain) 매핑함에 따라 차이가 있다. In an embodiment, the high speed
일반적으로, 고속 불휘발성 메모리(6410)는 메타 데이터와 같은 자주 액세스되는(쓰여진) 데이터를 저장하는데 이용되고, 저속 불휘발성 메모리(6420)는 미디어 데이터와 같이 상대적으로 덜 액세스된(쓰인) 데이터를 저장하는데 이용된다. In general, high speed
즉, 고속 불휘발성 메모리(6410)에서 데이터 쓰기 주파수는 저속 불휘발성 메모리(6420)에서 데이터 쓰기 주파수보다 통계적으로 높다. 또한, 저장된 각각의 데이터의 본성에 따라, 저속 불휘발성 메모리(6420)의 저장 능력은 전형적으로 고속 불휘발성 메모리(6410)의 그것보다 높다. 그러나 다시 말해, 여기의 상술한 실시 예는 서로 다른 속도로 동작하는 두 개 혹은 그 이상의 메모리들의 사용에 제한되지 않는다.That is, the data write frequency in the high speed
도 25는 불휘발성 저장 매체(6400)의 저장 영역을 논리적으로 분할하는 예를 보여준다. 도 25를 참조하면, 솔리드 스테이트 드라이브의 처음 섹터는 마스터 부트 레코드(MBR)를 포함하고, 나머지 섹터들은 복수의 파티션들로 분할된다. 게다가, 파티션들 각각은 일반적으로 논리 앞 단 끝에 부트 레코드를 포함한다. 25 illustrates an example of logically partitioning a storage area of the
도 26은 도 25에 도시된 MBR의 잘 알려진 512 바이트 예를 보여준다. 일반적으로 MBR은, 예를 들어, 솔리드 스테이트 드라이브(SSD)의 주요 파티션 테이블을 유지하는데 사용된다. 이는 또한 사용자 장치의 바이어스 전송 실행 이후에 MBR 내에 존재하는 코드 지시들을 수행하기 위한 부트 스트랩핑 동작들에 사용된다. MBR은 또한 개별적인 저장 미디어를 유일하게 인식하는데 사용된다.FIG. 26 shows a well-known 512 byte example of the MBR shown in FIG. 25. In general, the MBR is used to maintain, for example, the primary partition table of a solid state drive (SSD). It is also used in boot strapping operations to perform code instructions present in the MBR after a bias transmission execution of the user device. MBR is also used to uniquely recognize individual storage media.
도 27은 도 26에 도시된 MBR의 단일 16 바이트 파티션 레코드의 레이아웃의 예를 보여준다. IBM 파티션 테이블 표준의 예에서, 도 27에 도시된 파티션 레코드 들의 4개는 MBR의 파티션 테이블을 포함한다.FIG. 27 shows an example of the layout of a single 16 byte partition record of the MBR shown in FIG. 26. In the example of the IBM partition table standard, four of the partition records shown in FIG. 27 include the partition table of the MBR.
도 28은 파티션 종류들 및 대응하는 ID 값들을 보여주는 테이블이다. 이 점에서, 운영 체제(OS)는 추가적으로 상세화된 주요 파티션에서 복수의 파티션을 만들 수 있다. 이러한 파티션들은 “확장된 파티션”으로 언급된다. 확장된 파티션에 만들어진 각 파티션은 소위 논리적 파티션으로 불리고, 그리고 각 논리적 파티션은 동일하거나 혹은 서로 다른 파일 시스템을 개조한다.28 is a table showing partition types and corresponding ID values. In this regard, the operating system (OS) can create multiple partitions from further detailed primary partitions. These partitions are referred to as "extended partitions". Each partition created on an extended partition is called a logical partition, and each logical partition remodels the same or different file systems.
상술된 MBR 기술은 점점 발전하는 산업에서 몇몇 표준들 중에 하나이다. 예를 들어, 확장 가능한 펌웨어 인터페이스(EFI) 표준은 PC 바이어스 표준을 위한 대체 기술이다. 반면에 PC 바이어스는 상술된 MBR 기술을 이용하고, EFI 표준은 논리적으로 파티션된 솔리드 스테이트 드라이브에서 파티션 테이블의 레이아웃을 위한 표준으로 GUID 파티션 테이블(GPT)을 사용한다. 본 발명은 어떠한 특정 파티션 표준에 제한되지 않는다.The MBR technology described above is one of several standards in an increasingly developing industry. For example, the Extensible Firmware Interface (EFI) standard is an alternative technology for the PC bias standard. PC bias, on the other hand, uses the MBR technique described above, and the EFI standard uses GUID Partition Table (GPT) as the standard for the layout of partition tables in logically partitioned solid state drives. The invention is not limited to any particular partition standard.
도 26의 MBR(혹은 GUID) 파티션 테이블에 포함된 데이터는 “저장-레벨” 메타 데이터의 예이다. 예를 들어, 솔리드 스테이트 드라이브(SSD)의 논리 저장 영역들과 연관된 메타 데이터이다. 이는 사용자 장치(또는, 컴퓨터 시스템)의 파일 시스템과 연관된 메타 데이터인 “파일 시스템 레벨” 메타 데이터와 대조된다. 파일 시스템의 예들은 파일 할당 테이블(FAT), 뉴 테크놀로지 파일 시스템(NTFS), 제 2 및 제 3 확장 파일 시스템(ext2 및 ext3)을 포함한다. Data included in the MBR (or GUID) partition table of FIG. 26 is an example of "storage-level" metadata. For example, metadata associated with logical storage areas of a solid state drive (SSD). This is in contrast to “file system level” metadata, which is metadata associated with the file system of the user device (or computer system). Examples of file systems include file allocation tables (FAT), new technology file systems (NTFS), second and third extended file systems (ext2 and ext3).
즉, 사용자가 불휘발성 저장 매체(6400)에서 파일을 삭제하면, 시스템에서 동작하는 파일 시스템은 무효화 명령을 처리한다. 이때, 사용자의 관점에서는 불휘 발성 저장 매체(6400)의 파일은 삭제되는 것으로 나타난다. 그러나 실제로는, 파일 시스템은 물리적 메모리의 파일 데이터를 변경하지 않고, 대신에 “무효”로 간주한다. 호스트는 파일 시스템과 통신하기 위한 응용 프로그램을 포함한다. 플래시 변환 계층(FTL)은 파일들 각각에 연관된 불휘발성 저장 매체(6400)의 메모리 단위들의 물리적 위치를 추적 및 유지한다. 따라서, 파일 시스템은 단지 논리 메모리 단위들만 참조하면 된다. That is, when a user deletes a file from
아래에서 좀더 자세히 설명될, 본 발명의 실시 예들은 솔리드 스테이트 드라이브(SSD)에 저장된 무효 데이터의 위치들을 검색하기 위하여 갱신된 메타 데이터를 최소한 부분적으로 모니터링하도록 제어된다. Embodiments of the invention, described in greater detail below, are controlled to at least partially monitor updated metadata to retrieve locations of invalid data stored in a solid state drive (SSD).
모니터된 메타 데이터는 저장 레벨 메타 데이터 혹은 파일 시스템 레벨 메타 데이터가 될 것이다. 예를 들어, 저장 레벨 메타 데이터의 경우에는, 메타 데이터가 파티션 테이블에 포함될 것이고, 그리고 무효 데이터는 파티션 테이블의 메타 데이터 안에서 변화들에 따라 검색된다.The monitored metadata may be storage level metadata or file system level metadata. For example, in the case of storage level metadata, metadata will be included in the partition table, and invalid data is retrieved according to changes in the metadata of the partition table.
하나의 실시 예에 있어서, 솔리드 스테이트 드라이브(SSD)의 파티션 메타 데이터가 변경되었는지가 검출되고, 만일 그렇게 될 때, 솔리드 스테이트 드라이브(SSD)에 저장된 무효 데이터의 위치를 검색하도록 파티션 메타 데이터가 분석된다. 이 분석은 파티션의 파일 시스템 종류가 변화되었는지를 결정하는 것과, 그리고 변경된 파일 시스템 종류에 대응하는 데이터를 무효화시키는 것을 포함한다. 택일적으로, 혹은 추가적으로, 분석은 파티션이 변화되었는지 결정하는 것과, 그리고 변경된 파티션에 대응하여 데이터를 무효화시키는 것을 포함한다.In one embodiment, it is detected whether the partition metadata of the solid state drive (SSD) has changed, and if so, the partition metadata is analyzed to retrieve the location of invalid data stored in the solid state drive (SSD). . This analysis includes determining if the file system type of the partition has changed and invalidating the data corresponding to the changed file system type. Alternatively, or in addition, the analysis may include determining if the partition has changed and invalidating the data in response to the changed partition.
본 발명의 실시 예에 따라 솔리드 스테이트 드라이브(SSD)의 삭제된 데이터 영역을 무효화시키는 방법에 관하여 도 29 및 도 30이 참조된다. 29 and 30 are described with reference to a method of invalidating an erased data area of a solid state drive (SSD) according to an exemplary embodiment of the present invention.
일반적으로, 이 실시 예는 BIOS 시스템에서 MBR의 프라이머리 파티션들의 표준 테이블과 같은 파티션 테이블에 포함된 메타 데이터의 모니터링에 관한 것이다. 도 29의 S6510 단계 및 S6520 단계에서, MBR 어드레스 영역은 MBR 어드레스가 액세스되었는지 결정하도록 모니터링된다. MBR, 프라이머리 파티션들, 및 파티션 레코드의 예들은 도 30에 도시되어 있다.In general, this embodiment relates to the monitoring of metadata contained in a partition table, such as a standard table of primary partitions of an MBR in a BIOS system. In steps S6510 and S6520 of FIG. 29, the MBR address area is monitored to determine whether the MBR address has been accessed. Examples of MBR, primary partitions, and partition record are shown in FIG.
MBR 어드레스가 액세스된 것으로 판단되면, S6530 단계에서 파티션 테이블이 변경되었는지 검색된다. 예를 들어, 파티션 테이블은 파티션이 분할된 상태에서 변경될 것이다. 이 경우에 있어서, 분할된 파티션의 모든 데이터가 무효화 된다. If it is determined that the MBR address is accessed, it is searched whether the partition table has been changed in step S6530. For example, the partition table may change while the partition is partitioned. In this case, all data of the divided partition is invalidated.
S6530 단계에서 Yes 결정의 경우, 파티션의 시작 위치 및 파일 시스템(파티션 종류)의 종류가 S6540 단계에서 구성된다. 그러면 S6550 단계에서, 메타 데이터는 파일 시스템 종류에 따라 분석되고, 그리고 삭제된 데이터 영역은 무효화 된다.In the case of Yes determination in step S6530, the starting position of the partition and the type of file system (partition type) are configured in step S6540. Then, in step S6550, the metadata is analyzed according to the file system type, and the deleted data area is invalidated.
본 발명의 실시 예에 따라 솔리드 스테이트 드라이브(SSD)의 삭제된 데이터 영역을 무효화시키는 방법이 도 31 및 도 32에서 설명될 것이다.A method of invalidating an erased data area of a solid state drive (SSD) according to an exemplary embodiment of the present invention will be described with reference to FIGS. 31 and 32.
일반적으로, 이 실시 예는 파일 할당 테이블(FAT)에 포함된 메타 데이터의 모니터링에 관한 것이다. 특히, 클러스터 연계(혹은 그것의 결여)를 검사함으로써, 클러스터와 연계된 데이터가 삭제된 데이터인지가 결정된다.In general, this embodiment relates to the monitoring of metadata contained in a file allocation table (FAT). In particular, by checking the cluster association (or lack thereof), it is determined whether the data associated with the cluster is deleted data.
일반적으로, 플래시형 솔리드 스테이트 드라이브(SSD)에서 파일들을 저장하는데 사용될 파일 시스템은 파일을 유지하도록 할당될 수 있는 디스크 공간의 가장 작은 논리적 양을 설명하도록 정의된 메모리 할당 유닛을 갖는다. 예를 들어, 파일 할당 테이블(FAT)로 알려진 MS-DOS 파일 시스템은 이러한 메모리 할당 유닛을 클러스터(Cluster)라고 부른다.In general, the file system to be used for storing files in a flash solid state drive (SSD) has a memory allocation unit defined to account for the smallest logical amount of disk space that can be allocated to hold a file. For example, an MS-DOS file system known as a file allocation table (FAT) calls such a memory allocation unit a cluster.
도 31의 방법에서, 파일 엔트리는 S6610 단계 및 S6620 단계에서 초기적으로 점검되고, 파일 엔트리가 [00 00 00 00]인지 판단된다. 만일, S6620 단계에서의 판단이 Yes라면, S6630 단계에서 매치된 클러스터들은 연결되지 않고, 그리고 그것의 데이터는 무효화 된다.In the method of FIG. 31, the file entry is initially checked in steps S6610 and S6620, and it is determined whether the file entry is [00 00 00 00]. If the determination in step S6620 is Yes, the clusters matched in step S6630 are not connected, and its data is invalidated.
본 발명의 실시 예에 따라 솔리드 스테이트 드라이브(SSD)의 삭제된 데이터 영역을 무효화시키는 방법에 관하여 도 33 및 도 34가 참조된다.33 and 34 are described with reference to a method of invalidating an erased data area of a solid state drive (SSD) according to an embodiment of the present invention.
일반적으로, 이 실시 예는 뉴테크놀로지 파일 시스템(NTFS)에 포함된 메타 데이터의 모니터링에 관한 것이다. 초기에, S6710 단계에서, NTFS 부트 레코드로부터 마스터 파일 테이블(이하, MFT)의 시작은 점검된다. 이 예로써, S6720 단계에서 MFT의 6번째 엔트리인 비트맵이 검색되고, 그 다음에 S6730 단계에서 비트맵 테이블이 점검된다. S6740 단계에서 비트맵 테이블에 삭제된 데이터가 존재하는 지가 결정되고, 그리고 만일 대답이 Yes이면, 매치된 데이터 영역은 무효화된다. In general, this embodiment relates to the monitoring of metadata contained in the New Technology File System (NTFS). Initially, in step S6710, the start of the master file table (hereinafter MFT) from the NTFS boot record is checked. In this example, the bitmap, which is the sixth entry of the MFT, is retrieved in step S6720, and then the bitmap table is checked in step S6730. In step S6740, it is determined whether there is deleted data in the bitmap table, and if the answer is yes, the matched data area is invalidated.
상술된 바와 같이 데이터 및 데이터 영역들을 무효화함으로써, 무효 데이터의 복사 없이 솔리드 스테이트 드라이브(SSD) 내에서 머지 동작이 가능하다. 추가로, 예를 들어, 가비지 컬렉션 동작들이 좀더 효율적으로 이루어질 수 있다.By invalidating the data and data regions as described above, a merge operation is possible in the solid state drive SSD without copying the invalid data. In addition, garbage collection operations can be made more efficient, for example.
도 35는 본 발명의 실시 예에 따른 사용자 장치(6800)의 블록도이다. 보여진 대로, 사용자 장치(6800)는 버스 시스템(6810), 그리고 버스 시스템 (6810)에 연결 되고 사용자 장치(6800)를 초기화하는데 사용되는 소프트웨어(예들 들어, BIOS)를 저장하는 읽기 전용 메모리(ROM)를 포함한다. 35 is a block diagram of a
사용자 장치(6800)는 또한 워킹 메모리로써 기능을 수행하는 랜덤 액세스 메모리(6830), 중앙 처리 유닛(6840), 그리고 솔리드 스테이트 드라이브(SSD) 시스템(6850)을 포함하되, 모두가 버스 시스템(6810)에 연결된다. 솔리드 스테이트 드라이브(SSD) 시스템(6850)은 솔리드 스테이트 드라이브(SSD) 및 컨트롤러(예들 들어, 도 24 참조)를 포함한다. 또한, 도 35에서 도시된 예에서, 솔리드 스테이트 드라이브(SSD) 시스템(6850)은 마스터 부트 레코드를 포함하고, 복수의 파티션들로 논리적으로 분할된다.
한편, 도 24에 도시된 저장 장치(6000)는 앞서 언급된 로깅 방식을 사용하여 자체 무효화 동작을 수행할 수 있다. 즉, 저장 장치(6000)는 삭제될 데이터의 크기가 기준 크기를 초과하면 삭제될 영역의 위치를 기록하는 로깅 방식을 적용하며, 기준 크기를 초과하지 않으면 삭제될 데이터를 바로 무효화할 수 있다. 또한, 저장 장치(6000)는 도 5에서 설명한 바와 같이, 일반 데이터에 대한 삭제인지 보안 데이터에 대한 삭제인지 여부에 따라 무효화 동작을 수행할 수도 있다.Meanwhile, the
Ⅵ. VI. 복구화Recovery 동작을 수행하는 사용자 장치 User device performing the action
파일 시스템에 의해 직접 제어를 받는 하드 디스크의 경우, 삭제된 데이터는 겹쳐쓰기 된 경우를 제외하고 파일 시스템의 복구(recovery) 명령에 의해 복구될 수 있다. 그런데 플래시 메모리 장치의 경우 삭제 동작이 파일 시스템과 플래시 변 환 계층 모두를 통해 수행된다. 따라서, 파일 시스템 레벨에서 데이터의 복구가 가능한 경우에도 플래시 변환 계층 레벨에서 데이터 복구가 불가능한 경우가 발생할 수 있다. 결국, 플래시 메모리 장치와 같이 변환 계층을 사용하는 반도체 메모리 장치에서의 데이터 복구 방법이 문제될 수 있다. In the case of a hard disk directly controlled by the file system, the deleted data can be recovered by a recovery command of the file system except when overwritten. However, in the case of a flash memory device, an erase operation is performed through both a file system and a flash conversion layer. Accordingly, even when data is recoverable at the file system level, data recovery may not be possible at the flash translation layer level. As a result, a data recovery method in a semiconductor memory device using a conversion layer such as a flash memory device may be problematic.
도 36은 복구화 동작을 수행하는 사용자 장치의 소프트웨어 구조를 보여주는 블록도이다. 도 36을 참조하면, 사용자 장치의 소프트웨어 구조(7100)는 애플리케이션(7110), 파일 시스템(7120), 플래시 변환 계층(7130), 그리고 플래시 메모리(7140) 순으로 소프트웨어 계층 구조를 갖는다. 36 is a block diagram showing a software structure of a user device performing a recovery operation. Referring to FIG. 36, a
파일 시스템(7120)은 애플리케이션(7110)으로부터 명령을 입력받는다. 애플리케이션(7110)으로부터의 명령은 데이터 저장(store) 명령, 데이터 읽기(read) 명령, 데이터 이동(move) 명령, 데이터 삭제(delete) 명령, 그리고 데이터 복구(recovery) 명령을 포함한다. 파일 시스템(7120)은 처리될 데이터의 논리 어드레스(logical address)를 플래시 변환 계층(7130)에 전달한다.
플래시 변환 계층(7130)은 파일 시스템(7120)으로부터 논리 어드레스를 입력받는다. 플래시 변환 계층(7130)은 논리 어드레스를 물리 어드레스(physical address)로 변환한다. 플래시 변환 계층(7130)은 어드레스 변환을 위해 어드레스 맵핑 테이블(mapping table)을 참조한다. 어드레스 맵핑 테이블은 복수의 맵핑 데이터를 포함한다. 각각의 맵핑 데이터는 논리 주소와 물리 주소의 대응 관계를 정의한다. 물리 어드레스는 플래시 메모리(7140)로 제공된다. The
플래시 메모리(7110)는 메타 데이터 영역(meta data area)과 유저 데이터 영 역(user data area)으로 구분된다. 유저 데이터 영역에는 텍스트, 영상, 음성 등의 유저 데이터(user data)가 저장된다. 메타 데이터 영역에는 유저 데이터에 관한 정보가 저장된다. 예를 들어, 메타 데이터 영역에는 유저 데이터의 위치 정보(location information)가 저장된다. 따라서, 파일 시스템(7120)은 메타 데이터 영역을 참조함으로써 유저 데이터의 저장 위치를 파악할 수 있다. The
본 발명에 따른 실시 예에 있어서, 플래시 변환 계층(7130)은 큐(queue, 7132)를 구비한다. 큐는 선입선출(FIFO; First-In First-Out) 방식으로 데이터를 처리하는 일종의 버퍼(buffer)이다. 즉, 먼저 입력된 데이터가 먼저 출력된다. 플래시 변환 계층(7130)은 머지(merge) 또는 소거(erase) 동작에 의해 데이터가 소실되는 것을 막기 위해 별도의 큐(7132)를 구비한다. 이에 대해서는 후술될 도면을 참조하여 자세하게 설명할 것이다. In an embodiment according to the present disclosure, the
도 37은 복구화 동작을 수행하는 사용자 장치의 하드웨어 구조를 보여주는 블록도이다. 도 37을 참조하면, 사용자 장치(7200)는 호스트(7280), 메모리 컨트롤러(7270), 그리고 플래시 메모리 장치(7210~7260)를 포함한다. 플래시 메모리 장치(7210~7260)는 메모리 셀 어레이(7210), 페이지 버퍼(7220), 행 선택 회로(7230), 열 선택 회로(7240), 데이터 입출력 회로(7250), 그리고 제어 로직(7260)을 포함한다. 37 is a block diagram illustrating a hardware structure of a user device performing a recovery operation. Referring to FIG. 37, the
메모리 셀 어레이(7210)는 복수의 메모리 셀로 구성된다. 메모리 셀 어레이(7210)는 유저 데이터 영역(7211)과 메타 데이터 영역(7212)으로 구분된다. 유저 데이터 영역(7211)에는 텍스트, 음성, 및 영상 등의 유저 데이터(user data)가 저 장된다. 메타 데이터 영역(7212)에는 유저 데이터에 관한 메타 데이터(meta data)가 저장된다. 예를 들어, 메타 데이터는 유저 데이터의 저장 위치(location information)를 저장한다. 비록 도면에는 도시되지 않았지만, 메모리 셀 어레이(7210)는 행들(또는 워드 라인들) 및 열들(또는 비트 라인들)의 매트릭스(Matrix) 형태로 배열된 메모리 셀들로 구성될 것이다. 메모리 셀들은 낸드(NAND) 구조를 갖도록 또는 노어(NOR) 구조를 갖도록 배열될 것이다. The
페이지 버퍼 회로(7220)는 감지 증폭기(Sense Amplifier)로서 또는 기입 드라이버(Write Driver)로서 동작한다. 읽기 동작시, 페이지 버퍼 회로(7220)는 메모리 셀 어레이(7210)로부터 데이터를 읽어낸다. 프로그램 동작시, 페이지 버퍼 회로(7220)는 열 선택 회로(7240)를 통해 입력되는 데이터에 따라 비트 라인들을 전원전압 또는 접지전압으로 각각 구동한다. The
행 선택 회로(7230)는 워드 라인을 통해 메모리 셀 어레이(7210)에 연결된다. 행 선택 회로(7230)는 제어 로직(7260)에 의해서 제어된다. 행 선택 회로(7230)는 행 어드레스(Row Address)에 응답하여 선택된(Selected) 행 및 비선택된(Unselected) 행들을 대응하는 워드 라인 전압들로 각각 구동한다. 예를 들면, 프로그램 동작시, 행 선택 회로(7230)는 선택된 행을 프로그램 전압(Vpgm)으로, 그리고 비선택된 행들을 패스 전압(Vpass)으로 각각 구동한다. 읽기 동작시, 행 선택 회로(7230)는 선택된 행을 읽기 전압(Vread)으로, 그리고 비선택된 행들을 패스 전압(Vpass)으로 각각 구동한다.The row
열 선택 회로(7240)는 열 어드레스 발생회로(도면에는 도시되지 않음)로부터 인가된 열 어드레스(Column Address)에 응답하여 페이지 버퍼 회로(7220)에 래치된 데이터를 읽거나, 페이지 버퍼 회로(7220)에 데이터를 전달한다. The column
데이터 입출력 버퍼(7250)는 메모리 컨트롤러(7270)로부터 입력된 데이터를 열 선택 회로(7240)에 전달한다. 또는, 데이터 입출력 버퍼(7250)는 열 선택 회로(7240)로부터 입력된 데이터를 메모리 컨트롤러(7270)에 전달한다.The data input /
제어 로직(7260)은 플래시 메모리 장치의 전반적인 동작을 제어하도록 구성된다. 예를 들면, 제어 로직(7260)은 플래시 메모리 장치의 프로그램(Program), 읽기(Read) 동작, 소거(Erase) 동작 등을 제어하도록 구성된다.
메모리 컨트롤러(7270)는 맵핑 테이블(7271)과 큐(7272)를 포함한다. 도 35에 도시된 플래시 변환 계층(7130)은 메모리 컨트롤러(7270) 상에서 펌웨어의 형태로 수행된다. 맵핑 테이블(7271)은 논리 어드레스와 물리 어드레스의 대응 관계들을 저장한다. 맵핑 테이블(7271)은 플래시 변환 계층(7130)이 호스트(7280)로부터 입력된 논리 어드레스(logical address)를 물리 어드레스(physical address)로 변환하기 위해 사용된다. 플래시 변환 계층(7130)은 물리 어드레스를 플래시 메모리 장치에 전달한다. The
큐(7272)는 선입선출(FIFO; First-In First-Out) 방식으로 데이터를 저장하는 일종의 버퍼(buffer)이다. 즉, 큐(7132)에 먼저 입력된 데이터는 먼저 출력된다. 큐(7132)의 크기는 필요에 따라 변경될 수 있다. 본 발명에 있어서, 큐(7132)는 맵핑 데이터의 무효화를 지연시키고, 머지 및 소거 동작에 의해 데이터가 소실되는 것을 막기 위해 구비된다.The queue 7726 is a type of buffer that stores data in a first-in first-out (FIFO) manner. That is, the data first input to the queue 7122 is output first. The size of the queue 7122 can be changed as needed. In the present invention, the queue 7122 is provided to delay invalidation of the mapping data and to prevent the data from being lost by the merge and erase operations.
본 발명의 실시 예에 따른 사용자 장치(7200)는 삭제된 데이터를 복구할 수 있다. 이하, 본 발명에 따른 데이터 복구 방법이 도면을 참조하여 자세히 설명될 것이다.The
도 38은 데이터 삭제 동작을 보여주기 위한 순서도이다. 도 38을 참조하면, 데이터 삭제 동작은 3 단계(S7110~S7130)로 구분된다. 38 is a flowchart illustrating a data deletion operation. Referring to FIG. 38, the data deletion operation is divided into three steps S7110 to S7130.
S7110 단계에서, 애플리케이션(7110)으로부터 무효화 명령(invalidity command)이 입력된다. 애플리케이션(7110)은 도 37의 호스트(7280) 상에서 수행된다. In operation S7110, an invalidity command is input from the
S7120 단계에서, 파일 시스템(7120)은 무효화 명령에 응답하여 삭제될 데이터의 메타 데이터(meta data)를 삭제한다. 파일 시스템(7120)은 도 37의 호스트(7280) 상에서 수행된다. 파일 시스템(7120)은 운영 체제(operating system)에 포함될 수 있다. In operation S7120, the
S7130 단계에서, 플래시 변환 계층(7130)은 삭제될 데이터에 대응하는 맵핑 테이블을 무효화(invalid)시킨다. 이하, 메타 데이터가 삭제되는 방법과 삭제될 데이터에 대응하는 맵핑 데이터가 무효화되는 방법이 도면을 참조하여 자세히 설명될 것이다. In operation S7130, the
도 39는 데이터 삭제 시, 메타 데이터가 삭제되는 방법을 설명하기 위한 개념도이다. 도 39(a)는 메타 데이터가 삭제되기 전을 보여주고, 도 39(b)는 메타 데이터가 삭제된 후를 보여준다. 39 is a conceptual view illustrating a method of deleting meta data when data is deleted. 39 (a) shows before the metadata is deleted, and FIG. 39 (b) shows after the metadata is deleted.
도 39(a)를 참조하면, 유저 데이터 영역(user data area)에는 "Movie.avi"와 "Music.mp3"라는 이름의 유저 데이터들이 저장된다. 메타 데이터 영역(meta data area)에는 유저 데이터들에 각각 대응하는 메타 데이터들이 저장된다. 각각의 메타 데이터는 대응하는 유저 데이터의 저장 위치에 관한 정보를 포함할 것이다. 따라서, 파일 시스템(7120)은 메타 데이터를 참조하여 유저 데이터에 접근할 수 있다. Referring to Fig. 39A, user data named "Movie.avi" and "Music.mp3" are stored in the user data area. Meta data corresponding to user data is stored in the meta data area. Each metadata will contain information about the storage location of the corresponding user data. Accordingly, the
애플리케이션(7110)으로부터 "Movie.avi"라는 이름의 유저 데이터를 삭제하라는 명령이 입력되는 경우, 파일 시스템(7120)은 유저 데이터에 대응하는 메타 데이터만을 삭제한다. 파일 시스템(7120)은 유저 데이터를 삭제하지 않는다. 도 39(b)를 참조하면, 메타 데이터만이 삭제된 것을 알 수 있다. 따라서, 파일 시스템(7120)은 "Movie.avi"라는 이름의 유저 데이터가 삭제된 것으로 인식한다. 즉, 삭제 후에도 유저 데이터는 유저 데이터 영역(user data area)에 존재한다. 이 경우, 메타 데이터와 유저 데이터의 대응 관계만이 파괴될 뿐이다. 따라서, 데이터의 복원이 요구되는 경우, 삭제된 메타 데이터를 복구하면 정상적으로 유저 데이터가 액세스될 수 있다.When a command is input from the
도 40은 데이터 삭제 동작 시, 삭제될 데이터에 대응하는 맵핑 데이터가 무효화되는 방법을 보여주기 위한 블록도이다. 도 40(a)는 데이터 삭제 전의 맵핑 테이블을 보여주고, 도 40(b)는 데이터 삭제 후의 맵핑 테이블을 보여준다. 40 is a block diagram illustrating a method of invalidating mapping data corresponding to data to be deleted during a data deletion operation. 40 (a) shows a mapping table before data deletion, and FIG. 40 (b) shows a mapping table after data deletion.
실시 예에 있어서, 삭제될 데이터에 물리 섹터 1 내지 물리 섹터 10(PSN 1~PSN 10)이 대응되는 것으로 가정한다. 다시 말하면, 삭제될 데이터는 물리 섹터 1 내지 물리 섹터 10(PSN 1~PSN 10)에 저장된다. 도 40(a)를 참조하면, 플래시 변환 계층(7130)은 맵핑 테이블(7131)을 참조하여 논리 섹터 번호를 물리 섹터 번호 에 대응시킨다. 예를 들어, 논리 섹터 1(LSN 1)은 물리 섹터 1(PSN 1)에 대응된다. 또한, 맵핑 테이블은 물리 섹터의 유효 여부를 저장한다. 예를 들어, 물리 섹터 1 내지 물리 섹터 10(PSN 1~PSN 10)은 유효(valid)한 것으로 지정된다. In an embodiment, it is assumed that
파일 시스템(7120)으로부터 데이터의 무효화 명령이 입력되는 경우, 플래시 변환 계층(7130)은 삭제될 데이터에 대응하는 맵핑 데이터를 무효화시킨다. 도 40(b)를 참조하면, 물리 섹터 1 내지 물리 섹터 10(PSN 1~PSN 10)이 무효화(invalid)된 것을 알 수 있다. 따라서, 플래시 변환 계층(7130)은 논리 섹터 1 내지 논리 섹터 10(LSN 1~LSN 10)을 물리 섹터 1 내지 10(PSN 1~PSN 10)으로 변환시킬 수 없게 된다. 또한, 이는 플래시 변환 계층이 물리 섹터 1 내지 물리 섹터 10을 다른 데이터의 저장을 위해 할당할 수 있음을 의미한다. When a data invalidation command is input from the
삭제 동작에 의해 물리 섹터만이 무효화되기 때문에 물리 섹터에 저장된 데이터는 실제로 소거되지 않는다. 결국, 삭제 후에도 데이터는 존재한다. 따라서, 데이터의 복구가 요구되는 경우, 무효화된 물리 섹터를 유효화시키면 정상적으로 데이터가 복구될 수 있다. Since only the physical sector is invalidated by the erase operation, data stored in the physical sector is not actually erased. As a result, data exists even after deletion. Thus, when data recovery is required, validating the invalidated physical sectors can normally recover the data.
상술한 바와 같이, 데이터를 삭제하는 경우 파일 시스템(7120)에 의한 메타 데이터의 삭제와 플래시 변환 계층(7130)에 의한 맵핑 데이터의 무효화가 동시에 이루어진다. 결국, 유저 데이터가 실제로 삭제되는 것이 아니라 메타 데이터의 삭제와 맵핑 데이터의 무효화를 통해 삭제 동작이 수행된다. 따라서, 메타 데이터를 복구하고 맵핑 데이터를 유효화시킴으로써 유저 데이터를 복구하는 것이 가능하다.As described above, when data is deleted, the metadata is deleted by the
그런데 무효된 물리 섹터가 증가하면 플래시 메모리 장치의 용량이 감소된 다. 따라서, 플래시 메모리 장치는 저장 용량을 증가시키기 위해 내부적으로 유효한 물리 섹터를 모아서 다른 물리 섹터에 저장하고, 무효된 물리 섹터를 소거한다. 이를 머지 동작(merge operation)이라 한다. 또한, 외부로부터의 소거 명령(deletion command)에 의해 물리 섹터에 저장된 데이터가 소실될 수 있다. However, as the number of invalid physical sectors increases, the capacity of the flash memory device decreases. Accordingly, the flash memory device collects internally valid physical sectors in another physical sector and erases invalid physical sectors to increase storage capacity. This is called a merge operation. In addition, data stored in the physical sector may be lost by a deletion command from the outside.
도 41은 머지 동작을 설명하기 위한 개념도이다. 도 41(a)는 머지 전의 맵핑 테이블을 보여주고, 도 41(b)는 머지 후의 맵핑 테이블을 보여준다. 도 41(a)를 참조하면, 삭제 동작에 의해 제 1 블록(Block 1)의 제 1 및 제 3 물리 섹터, 제 2 블록(Block 2)의 제 7 및 제 8 물리 섹터가 무효화된 것으로 가정된다. 무효화된 블록들은 머지 동작의 대상이 된다.41 is a conceptual diagram for explaining a merge operation. FIG. 41A shows the mapping table before merge and FIG. 41B shows the mapping table after merge. Referring to FIG. 41A, it is assumed that the first and third physical sectors of the
도 41(b)를 참조하면, 머지 동작에 의해 제 1 블록(Block 1) 및 제 2 블록(Block 2)의 유효 섹터들만이 제 3 블록(Block 3)에 저장되고 제 1 블록(Block 1) 및 제 2 블록(Block 2)은 소거된다. 머지 동작에 의해 물리 섹터가 소거되는 경우, 기존의 데이터는 영구히 소실된다. 소거된 블록들은 플래시 변환 계층(7130)에 의해 다른 데이터의 저장을 위해 할당될 수 있다. Referring to FIG. 41 (b), only the effective sectors of the
그런데 머지 동작은 파일 시스템(7120)과 무관하게 수행된다. 시스템의 성능 향상을 위해서 머지 동작은 파일 시스템(7120)으로부터의 명령이 없는 동안(background time)에 수행될 수 있다. 따라서, 무효화된 섹터는 언제든지 머지 동작에 의해 소거될 수 있는 위험에 처해 있다. 따라서, 물리 섹터에 저장된 데이터를 복구하기 위해서는 물리 섹터에 대한 머지 동작의 수행이 억제되어야 한다.However, the merge operation is performed regardless of the
본 발명의 실시 예에 따른 사용자 장치(7200)는 맵핑 데이터의 무효화를 지 연시킨다. 또는, 사용자 장치(7200)는 무효된 물리 섹터가 머지 및 소거되는 것을 방지한다. 따라서, 물리 섹터에 저장된 데이터가 복구될 수 있다.The
본 발명에 있어서, 맵핑 데이터의 무효화를 지연시키기 위해 무효 지연 큐(invalid delay queue)가 사용된다. 무효 지연 큐에는 무효될 물리 섹터가 순차적으로 등록된다. 무효 지연 큐가 가득 차면 선입선출(FIFO) 방식에 따라 가장 먼저 등록된 물리 섹터의 등록이 해제된다. 등록이 해제된 물리 섹터는 무효화된다. 상술한 바와 같이 맵핑 데이터의 무효화를 지연시킴으로써 물리 섹터에 저장된 데이터가 복구될 수 있다. 무효 지연 큐의 크기는 변경될 수 있다. 예를 들어, 무효 지연 큐의 크기가 크면 맵핑 데이터의 무효화가 오랫동안 지연될 것이다. 반대로, 무효 지연 큐의 크기가 작으면 맵핑 데이터의 무효화가 짧은 시간 동안 지연될 것이다. In the present invention, an invalid delay queue is used to delay invalidation of mapping data. Physical sectors to be invalidated are sequentially registered in the invalid delay queue. When the invalid delay queue is full, the first registered physical sector is deregistered according to the first in, first out (FIFO) method. Deregistered physical sectors are invalidated. As described above, the data stored in the physical sector can be recovered by delaying invalidation of the mapping data. The size of the invalid delay queue can be changed. For example, if the size of the invalid delay queue is large, invalidation of the mapping data will be delayed for a long time. Conversely, if the size of the invalid delay queue is small, invalidation of the mapping data will be delayed for a short time.
도 42는 무효 지연 큐의 운용 방법을 설명하기 위한 개념도이다. 도 42를 참조하면, 데이터 삭제 동작에 의해 물리 섹터 1, 3, 7, 8(PSN 1, 3, 7, 8)이 순서대로 무효화 되는 것이 가정된다. 본 발명에 따른 실시 예에 있어서, 물리 섹터 1, 3, 7, 8(PSN 1, 3, 7, 8)은 삭제 동작에 의해 바로 무효화 되지 않고 무효 지연 큐에 등록된다. 자세히 설명하면, 먼저 물리 섹터 1(PSN 1)이 무효 지연 큐에 등록된다. 이때, 물리 섹터 1(PSN 1)에 저장된 데이터가 무효 지연 큐에 저장되는 것이 아니라 물리 섹터 1의 위치만이 저장된다. 동일한 방법으로 물리 섹터 3, 7, 8(PSN 3, 7, 8)이 순차적으로 무효 지연 큐에 등록된다.42 is a conceptual diagram for explaining a method of operating an invalid delay queue. Referring to FIG. 42, it is assumed that
플래시 변환 계층(7130)은 무효 지연 큐에 등록된 물리 섹터를 무효화시키지 않는다. 따라서, 물리 섹터 1, 3, 7, 8(PSN 1, 3, 7, 8)은 유효한 것으로 유지된다. 만약, 무효 지연 큐가 가득 차면, 선입선출(FIFO) 방식에 따라 최초에 등록된 물리 섹터(PSN 1)의 등록이 해제된다. 무효 지연 큐로부터 등록이 해제된 물리 섹터는 무효화된다. 무효화된 물리 섹터는 머지 및 소거 동작의 대상이 된다. The
도 43은 도 42의 무효 지연 큐를 사용한 데이터 복구 방법을 설명하기 위한 순서도이다. 도 43을 참조하면, 본 발명에 따른 데이터 복구 방법은 4단계(S7210~S7240)로 구분된다. FIG. 43 is a flowchart illustrating a data recovery method using the invalid delay queue of FIG. 42. Referring to FIG. 43, a data recovery method according to the present invention is divided into four steps S7210 to S7240.
S7210 단계에서, 애플리케이션(7110)은 데이터 복구 명령(data recovery command)을 파일 시스템(7120)에 인가한다. 파일 시스템(7120)은 데이터 복구 명령을 플래시 변환 계층(7130)에 전달한다. S7220 단계에서, 플래시 변환 계층(7130)은 무효 지연 큐에 복구될 데이터에 대응하는 맵핑 데이터가 등록되었는지 여부를 판단한다. 무효 지연 큐에 복구될 데이터에 대응하는 맵핑 데이터가 등록되어 있는 경우에는 S7230 간계가 수행되고, 등록되어 있지 않은 경우에는 데이터 복구가 종료된다. S7230 단계에서, 플래시 변환 계층(7130)은 무효 지연 큐로부터 복구될 데이터에 대응하는 맵핑 데이터의 등록을 해제한다. S7240 단계에서, 파일 시스템(7120)은 복구될 데이터의 메타 데이터를 복구한다.In operation S7210, the
상술한 방법을 통해 삭제된 데이터에 대응하는 메타 데이터를 복구함으로써 데이터의 안정적인 복구가 가능해진다. 메타 데이터의 복구와 무효 지연 큐의 갱신 순서는 변경될 수 있다. 예를 들어, 메타 데이터가 먼저 복구된 후에 무효 지연 큐가 갱신될 수 있다. By restoring the metadata corresponding to the deleted data through the above-described method, stable recovery of the data is possible. The order of recovery of the metadata and update of the invalid delay queue may be changed. For example, the invalid delay queue may be updated after the metadata is recovered first.
위의 실시 예에서는 무효 지연 큐를 사용하여 맵핑 데이터의 무효화를 지연하였다. 그러나 이미 무효화된 물리 섹터의 경우에는 머지 및 소거 동작의 수행을 방지함으로써 물리 섹터에 저장된 데이터를 보호할 수 있다. In the above embodiment, invalidation of the mapping data is delayed by using an invalid delay queue. However, in the case of a physical sector that is already invalidated, data stored in the physical sector can be protected by preventing the merge and erase operations from being performed.
본 발명의 다른 실시 예에서는 무효화된 물리 섹터에 대한 머지 및 소거 동작을 방지하기 위해 머지/소거 방지 큐(merge/erase protection queue)를 사용한다. 머지/소거 방지 큐에 등록된 무효된 물리 섹터는 머지 및 소거되지 않는다. 따라서, 물리 섹터에 저장된 데이터가 유지될 수 있다. 머지/소거 방지 큐의 크기는 변경될 수 있다. 예를 들어, 머지/소거 방지 큐의 크기가 크면 무효화된 물리 섹터의 머지 및 소거 동작이 오랫동안 방지될 것이다. 반대로, 머지/소거 방지 큐의 크기가 작으면 무효화된 물리 섹터의 머지 및 소거 동작이 짧은 시간 동안 방지될 것이다.Another embodiment of the present invention uses a merge / erase protection queue to prevent merge and erase operations on invalidated physical sectors. Invalid physical sectors registered in the merge / erase prevention queue are not merged and erased. Thus, data stored in the physical sector can be maintained. The size of the merge / erase prevention queue can be changed. For example, a large merge / erase prevention queue will prevent merge and erase operations of invalidated physical sectors for a long time. Conversely, if the size of the merge / erase prevention queue is small, the merge and erase operations of the invalidated physical sectors will be prevented for a short time.
도 44는 머지/소거 방지 큐의 운용 방법을 보여주는 개념도이다. 도 44를 참조하면, 데이터 삭제 동작에 의해 물리 섹터 1, 3, 7, 8(PSN 1, 3, 7, 8)이 순서대로 무효화 된 것으로 가정한다. 본 발명에 따른 실시 예에 있어서, 물리 섹터 1, 3, 7, 8(PSN 1, 3, 7, 8)은 삭제 동작에 의해 무효화된 후에 머지/소거 방지 큐에 순차적으로 등록된다. 자세히 설명하면, 먼저 무효화된 물리 섹터 1(PSN 1)이 머지/소거 방지 큐에 등록된다. 이때, 물리 섹터 1(PSN 1)에 저장된 데이터가 머지/소거 방지 큐에 저장되는 것이 아니라 물리 섹터 1(PSN 1)의 위치만이 저장된다. 동일한 방법으로 물리 섹터 3, 7, 8(PSN 3, 7, 8)이 순차적으로 머지/소거 방지 큐에 등록된다.44 is a conceptual diagram illustrating a method of operating a merge / erase prevention queue. Referring to FIG. 44, it is assumed that
플래시 변환 계층(7130)은 머지/소거 방지 큐에 등록된 물리 섹터를 머지 및 소거 동작의 대상에서 제외한다. 따라서, 물리 섹터 1, 3, 7, 8에 저장된 데이터는 머지 및 소거되지 않는다. 만약, 머지/소거 방지 큐가 가득 차면, 선입선출(FIFO) 방식에 따라 최초에 등록된 물리 섹터의 등록이 해제된다. 무효 지연 큐로부터 등록이 해제된 물리 섹터는 머지 및 소거 동작의 대상이 된다. The
도 45는 도 44의 머지/소거 방지 큐를 이용한 데이터 복구 방법을 설명하기 위한 순서도이다. 도 45를 참조하면, 본 발명에 따른 데이터 복구 방법은 모두 5 단계로 구분된다. 45 is a flowchart illustrating a data recovery method using the merge / erase prevention queue of FIG. 44. Referring to FIG. 45, the data recovery method according to the present invention is divided into five steps.
S7310 단계에서, 애플리케이션(7110)으로부터 파일 시스템(7120)으로 데이터 복구 명령이 입력된다. 파일 시스템(7120)은 데이터 복구 명령을 플래시 변환 계층(7130)에 전달한다. S7320 단계에서, 플래시 변환 계층(7130)은 머지/소거 방지 큐에 복구될 데이터에 대응하는 맵핑 데이터가 등록되었는지 여부를 판단한다. 머지/소거 방지 큐에 복구될 데이터에 대응하는 맵핑 데이터가 등록되어 있는 경우에는 S7330 단계가 수행되고, 등록되어 있지 않은 경우에는 데이터 복구가 종료된다.In operation S7310, a data recovery command is input from the
S7330 단계에서, 플래시 변환 계층(7130)은 맵핑 테이블을 통해 복구될 데이터에 대응하는 맵핑 데이터를 유효화시킨다. S7340 단계에서, 플래시 변환 계층은 머지/소거 방지 큐로부터 복구될 데이터에 대응하는 맵핑 데이터의 등록을 해제한다. S7350 단계에서, 파일 시스템(7120)은 복구될 데이터의 삭제된 메타 데이터를 복구한다. 상술한 방법을 통해 무효화된 물리 섹터의 머지 및 소거 동작을 방지함으로써 데이터가 손실되는 것이 방지된다. 결국, 데이터의 안정적인 복구가 가능해 진다.In operation S7330, the
본 발명의 다른 실시 예에서는 무효 지연 큐와 머지/소거 방지 큐가 함께 사용된다. 먼저, 무효 지연 큐를 통해 맵핑 데이터의 무효화를 지연시킨다. 그 다음에 무효된 물리 섹터를 머지/소거 방지 큐에 등록함으로써 무효된 물리 섹터에 대한 머지 및 소거 동작을 방지한다. In another embodiment of the present invention, the invalid delay queue and the merge / erase prevention queue are used together. First, the invalidation of the mapping data is delayed through the invalid delay queue. The invalid physical sectors are then registered in the merge / erase prevention queue to prevent merge and erase operations on the invalid physical sectors.
도 46은 무효 지연 큐 및 머지/소거 방지 큐가 동시에 사용되는 경우의 운용 방법을 설명하기 위한 개념도이다. 도 46(a)는 무효 지연 큐만이 사용된 경우를 보여주고, 도 46(b)는 무효 지연 큐와 머지/소거 방지 큐가 함께 사용된 경우를 보여준다.46 is a conceptual diagram for explaining an operation method when an invalid delay queue and a merge / erase prevention queue are used at the same time. 46 (a) shows a case where only an invalid delay queue is used, and FIG. 46 (b) shows a case where an invalid delay queue and a merge / erase prevention queue are used together.
본 발명의 실시 예에 있어서, 삭제될 데이터에 대응하는 맵핑 데이터는 무효 지연 큐에 등록됨으로써 무효화가 지연된다. 무효 지연 큐가 가득 차면, 선입선출(FIFO) 방식에 따라 먼저 등록된 물리 섹터의 등록이 해제된다. 무효 지연 큐로부터 등록이 해제된 맵핑 데이터는 머지/소거 방지 큐에 등록된다. 머지/소거 방지 큐에 등록된 맵핑 데이터는 머지/소거의 대상이 되지 않는다. 따라서, 물리 섹터에 저장된 데이터가 일정 시간 동안 머지 및 소거에 의해 소실되지 않는다.In an embodiment of the present invention, the mapping data corresponding to the data to be deleted is delayed by being registered in the invalid delay queue. When the invalid delay queue becomes full, the registration of the first registered physical sector is released according to the first in, first out (FIFO) method. The mapping data deregistered from the invalid delay queue is registered in the merge / erase prevention queue. The mapping data registered in the merge / erase prevention queue is not the target of merge / erase. Therefore, data stored in the physical sector is not lost by merge and erase for a certain time.
먼저, 도 46(a)를 참조하면, 물리 섹터 1, 2, 4, 5(PSN 1, 2, 4, 5)가 순차적으로 무효화되는 경우가 가정된다. 본 발명에 따른 실시 예에 있어서, 물리 섹터들은 무효화되기 전에 무효 지연 큐에 등록된다. 무효 지연 큐에 등록된 물리 섹터들은 무효화되지 않는다. 이때, 머지/소거 방지 큐는 사용되지 않은 상태이다. First, referring to FIG. 46 (a), it is assumed that
도 46(b)는 물리 섹터 7(PSN 7)이 무효 지연 큐에 등록되는 경우를 보여준 다. 무효 지연 큐가 가득 차게 되는 경우, 선입선출 방식에 따라 가장 먼저 등록된 물리 섹터 1(PSN 1)의 등록이 해제된다. 무효 지연 큐로부터 등록이 해제된 물리 섹터 1(PSN 1)은 무효화된다. 무효화된 물리 섹터 1(PSN 1)은 머지/소거 방지 큐에 등록된다. 머지/소거 방지 큐에 등록된 물리 섹터는 머지 및 소거 동작의 대상에서 제외된다.46 (b) shows a case in which physical sector 7 (PSN 7) is registered in the invalid delay queue. When the invalid delay queue becomes full, registration of the first registered physical sector 1 (PSN 1) is released according to the first-in first-out method. Physical sector 1 (PSN 1) deregistered from the invalid delay queue is invalidated. The invalidated physical sector 1 (PSN 1) is registered in the merge / erase prevention queue. Physical sectors registered in the merge / erase prevention queue are excluded from the merge and erase operations.
도 47은 도 46의 무효 지연 큐와 머지/소거 방지 큐를 모두 사용한 데이터 복구 방법을 설명하기 위한 순서도이다. 도 47을 참조하면, 본 발명에 따른 데이터 복구 방법은 7 단계로 구분된다. FIG. 47 is a flowchart illustrating a data recovery method using both an invalid delay queue and a merge / erase prevention queue of FIG. 46. Referring to FIG. 47, the data recovery method according to the present invention is divided into seven steps.
S7410 단계에서, 애플리케이션(7110)으로부터 파일 시스템(7120)으로 데이터 복구 명령이 입력된다. 파일 시스템(7120)은 데이터 복구 명령을 플래시 변환 계층(7130)으로 전달한다. S7420 단계에서, 플래시 변환 계층(7130)은 무효 지연 큐에 복구될 데이터에 대응하는 맵핑 데이터가 등록되었는지 여부를 판단한다. 무효 지연 큐에 복구될 데이터에 대응하는 맵핑 데이터가 등록되어 있는 경우에는 S7430 단계가 수행되고, 등록되어 있지 않은 경우에는 S7440 단계가 수행된다.In operation S7410, a data recovery command is input from the
S7430 단계에서, 플래시 변환 계층(7130)은 무효 지연 큐에서 복구될 데이터에 대응하는 맵핑 데이터의 등록을 해제한다. S7440 단계에서, 머지/소거 방지 큐에 복구될 데이터에 대응하는 맵핑 데이터가 등록되었는지 여부가 판단된다. 머지/소거 방지 큐에 복구될 데이터에 대응하는 맵핑 데이터가 등록되어 있는 경우에는 S7450 단계가 수행되고, 등록되어 있지 않은 경우에는 데이터 복구가 종료된다.In operation S7430, the
S7450 단계에서, 플래시 변환 계층(7130)은 맵핑 테이블을 통해 무효화된 물 리 섹터를 유효화시킨다. S7460 단계에서, 플래시 변환 계층(7130)은 머지/소거 방지 큐에서 복구될 데이터에 대응하는 맵핑 데이터의 등록을 해제한다. S7470 단계에서, 파일 시스템(7120)은 복구될 데이터의 삭제된 메타 데이터를 복구한다. In operation S7450, the
상술한 방법을 통해 삭제된 데이터에 대응하는 블록의 무효화를 지연시키고, 무효화된 데이터에 대응하는 물리 섹터의 머지 및 소거 동작을 방지함으로써 데이터가 손실되는 것이 방지된다. 결국, 데이터의 안정적인 복구가 가능해진다.Through the above method, data is prevented from being lost by delaying invalidation of the block corresponding to the deleted data and preventing merge and erase operations of the physical sector corresponding to the invalidated data. As a result, stable recovery of data becomes possible.
도 48은 본 발명의 실시 예에 따른 반도체 메모리 장치를 포함하는 사용자 장치(7300)를 간략히 보여주는 블록도이다. 도 48을 참조하면, 본 발명에 따른 사용자 장치(7300)는 불휘발성 메모리 장치(7311) 및 메모리 컨트롤러(7312)로 구성되는 반도체 메모리 장치(7310), 시스템 버스(7350)에 전기적으로 연결된 중앙처리장치(7330), 사용자 인터페이스(7340), 전원 공급 장치(7320)를 포함한다. 48 is a block diagram schematically illustrating a
불휘발성 메모리 장치(7311)에는 사용자 인터페이스(7340)를 통해서 제공되거나 또는, 중앙처리장치(7330)에 의해서 처리된 데이터가 메모리 컨트롤러(7312)를 통해 저장된다. 반도체 메모리 장치(7310)는 솔리드 스테이트 드라이브(SSD)로 구성될 수 있으며, 솔리드 스테이트 드라이브는 삭제된 데이터의 복구를 지원한다. 또한, 최근 하드디스크 드라이브(HDD)를 교체해 나갈 것으로 예상되는 SSD(Solid State Drive) 제품이 차세대 메모리시장에서 각광을 받고 있다. SSD는 기계적으로 움직이는 하드디스크 드라이브에 비해 속도가 빠르고 외부 충격에 강하며, 소비전력도 낮다는 장점을 가진다. In the
비록 도면에는 도시되지 않았지만, 본 발명에 따른 사용자 장치에는 응용 칩 셋(Application Chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.Although not shown in the drawings, the user device according to the present invention may further be provided with an application chip set, a camera image processor (CIS), a mobile DRAM, and the like. Self-explanatory to those who have learned.
본 발명에 따른 저장 장치는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 플래시 메모리 및/또는 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장될 수 있다. The storage device according to the present invention may be mounted using various types of packages. For example, flash memory and / or controllers may include Package on Package (PoP), Ball grid arrays (BGAs), Chip scale packages (CSPs), Plastic Leaded Chip Carrier (PLCC), Plastic Dual In-Line Package (PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board (COB), Ceramic Dual In-Line Package (CERDIP), Plastic Metric Quad Flat Pack (MQFP), Thin Quad Flatpack (TQFP), Small Outline (SOIC), Shrink Small Outline Package (SSOP), Thin Small Outline (TSOP), Thin Quad Flatpack (TQFP), System In Package (SIP), Multi Chip Package (MCP), Wafer-level Fabricated Package (WFP), Wafer-Level Processed Stack Package It may be implemented using packages such as (WSP).
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 예를 들어, 본 발명의 범위는 플래시 메모리 장치에 한정되지 않는다. 본 발명은 변환 계층에 의한 주소 변환이 사용되는 모든 저장 장치에 적용될 수 있다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다. Meanwhile, in the detailed description of the present invention, specific embodiments have been described, but various modifications are possible without departing from the scope of the present invention. For example, the scope of the present invention is not limited to the flash memory device. The present invention can be applied to any storage device in which address translation by the translation layer is used. Therefore, the scope of the present invention should not be limited to the above-described embodiments, but should be defined by the equivalents of the claims of the present invention as well as the following claims.
도 1은 로깅 방식을 이용하여 무효화 동작을 수행하는 사용자 장치를 예시적으로 보여주는 블록도이다. 1 is a block diagram illustrating an example of a user device performing an invalidation operation using a logging scheme.
도 2는 도 1에 도시된 SSD 컨트롤러를 개략적으로 보여주는 블록도이다. FIG. 2 is a block diagram schematically illustrating the SSD controller shown in FIG. 1.
도 3은 도 1에 도시된 SSD 컨트롤러의 다른 실시 예를 보여주는 블록도이다. 3 is a block diagram illustrating another embodiment of the SSD controller shown in FIG. 1.
도 4는 본 발명의 실시 예에 따른 사용자 장치의 동작을 설명하기 위한 순서도이다. 4 is a flowchart illustrating an operation of a user device according to an exemplary embodiment of the present invention.
도 5는 본 발명의 다른 실시 예에 따른 사용자 장치의 동작을 설명하기 위한 순서도이다. 5 is a flowchart illustrating an operation of a user device according to another exemplary embodiment.
도 6은 파일 시스템 정보를 이용하여 무효화 동작을 수행하는 사용자 장치의 실시 예를 보여주는 블록도이다. 6 is a block diagram illustrating an embodiment of a user device for performing an invalidation operation using file system information.
도 7은 도 6에 도시된 사용자 장치의 머지 방법을 보여주는 개념도이다. FIG. 7 is a conceptual diagram illustrating a merge method of the user device illustrated in FIG. 6.
도 8은 도 6에 도시된 사용자 장치의 무효화 동작을 보여주는 순서도이다. FIG. 8 is a flowchart illustrating an invalidation operation of the user device illustrated in FIG. 6.
도 9는 버퍼 메모리의 데이터를 무효화하는 사용자 장치를 예시적으로 보여주는 블록도이다. 9 is a block diagram illustrating an example of a user device for invalidating data in a buffer memory.
도 10 및 도 11은 도 9에 도시된 컨트롤러(3260)의 맵핑 테이블을 예시적으로 보여주는 도면들이다. 10 and 11 exemplarily illustrate mapping tables of the
도 12는 도 9에 도시된 사용자 장치의 버퍼 메모리 데이터를 무효화하는 동작을 설명하기 위한 순서도이다. FIG. 12 is a flowchart for describing an operation of invalidating buffer memory data of the user device illustrated in FIG. 9.
도 13 내지 도 15는 도 9에 도시된 사용자 장치의 무효화 동작을 설명하기 위한 도면들이다. 13 to 15 are diagrams for describing an invalidation operation of the user device illustrated in FIG. 9.
도 16은 버퍼 메모리의 데이터를 무효화하는 사용자 장치의 다른 실시 예를 보여주는 블록도이다. 16 is a block diagram illustrating another embodiment of a user device for invalidating data in a buffer memory.
도 17은 파일 삭제 명령을 이용하여 무효화 동작을 수행하는 사용자 장치를 예시적으로 보여주는 블록도이다. 17 is a block diagram illustrating an example of a user device performing an invalidation operation using a file delete command.
도 18은 저장 장치의 메모리 할당 유닛들을 메모리 할당 유닛들이 유효 또는 무효 데이터 중 어느 것을 포함하는지를 나타내는 지표와 연관시키는, 본 발명에 따른 데이터 구조를 보여주는 다이어그램이다. 18 is a diagram showing a data structure in accordance with the present invention that associates memory allocation units of a storage device with an indicator indicating whether memory allocation units contain valid or invalid data.
도 19 내지 23은 도 17에 도시된 사용자 장치의 동작들을 설명하기 위한 순서도이다. .19 to 23 are flowcharts for describing operations of the user device illustrated in FIG. 17. .
도 24는 호스트 개입 없이 자체 무효화 동작을 수행하는 저장 장치를 보여주는 블록도이다. 24 is a block diagram illustrating a storage device that performs self invalidation operation without host intervention.
도 25는 불휘발성 저장 매체의 저장 영역을 논리적으로 분할하는 예를 보여준다. 25 shows an example of logically partitioning a storage area of a nonvolatile storage medium.
도 26은 도 25에 도시된 MBR의 잘 알려진 512 바이트 예를 보여준다. FIG. 26 shows a well-known 512 byte example of the MBR shown in FIG. 25.
도 27은 도 26에 도시된 MBR의 단일 16 바이트 파티션 레코드의 레이아웃의 예를 보여준다. FIG. 27 shows an example of the layout of a single 16 byte partition record of the MBR shown in FIG. 26.
도 28은 파티션 종류들 및 대응하는 ID 값들을 보여주는 테이블이다. 28 is a table showing partition types and corresponding ID values.
도 29 내지 도 34는 본 발명의 실시 예에 따라 솔리드 스테이트 드라이브(SSD)의 삭제된 데이터 영역을 무효화시키는 방법을 보여준다. 29 to 34 illustrate a method of invalidating an erased data area of a solid state drive (SSD) according to an exemplary embodiment of the present invention.
도 35는 본 발명의 실시 예에 따른 사용자 장치의 블록도이다. 35 is a block diagram of a user device according to an embodiment of the present invention.
도 36은 복구화 동작을 수행하는 사용자 장치의 소프트웨어 구조를 보여주는 블록도이다. 36 is a block diagram showing a software structure of a user device performing a recovery operation.
도 37은 복구화 동작을 수행하는 사용자 장치의 하드웨어 구조를 보여주는 블록도이다.37 is a block diagram illustrating a hardware structure of a user device performing a recovery operation.
도 38은 데이터 삭제 동작을 보여주기 위한 순서도이다. 38 is a flowchart illustrating a data deletion operation.
도 39는 데이터 삭제 시, 메타 데이터가 삭제되는 방법을 설명하기 위한 개념도이다. 도 39(a)는 메타 데이터가 삭제되기 전을 보여주고, 도 39(b)는 메타 데이터가 삭제된 후를 보여준다. 39 is a conceptual view illustrating a method of deleting meta data when data is deleted. 39 (a) shows before the metadata is deleted, and FIG. 39 (b) shows after the metadata is deleted.
도 40은 데이터 삭제 동작 시, 삭제될 데이터에 대응하는 맵핑 데이터가 무효화되는 방법을 보여주기 위한 블록도이다. 도 40(a)는 데이터 삭제 전의 맵핑 테이블을 보여주고, 도 40(b)는 데이터 삭제 후의 맵핑 테이블을 보여준다. 40 is a block diagram illustrating a method of invalidating mapping data corresponding to data to be deleted during a data deletion operation. 40 (a) shows a mapping table before data deletion, and FIG. 40 (b) shows a mapping table after data deletion.
도 41은 머지 동작을 설명하기 위한 개념도이다. 도 41(a)는 머지 전의 맵핑 테이블을 보여주고, 도 41(b)는 머지 후의 맵핑 테이블을 보여준다. 41 is a conceptual diagram for explaining a merge operation. FIG. 41A shows the mapping table before merge and FIG. 41B shows the mapping table after merge.
도 42는 무효 지연 큐의 운용 방법을 설명하기 위한 개념도이다. 42 is a conceptual diagram for explaining a method of operating an invalid delay queue.
도 43은 도 42의 무효 지연 큐를 사용한 데이터 복구 방법을 설명하기 위한 순서도이다. FIG. 43 is a flowchart illustrating a data recovery method using the invalid delay queue of FIG. 42.
도 44는 머지/소거 방지 큐의 운용 방법을 보여주는 개념도이다. 44 is a conceptual diagram illustrating a method of operating a merge / erase prevention queue.
도 45는 도 44의 머지/소거 방지 큐를 이용한 데이터 복구 방법을 설명하기 위한 순서도이다. 45 is a flowchart illustrating a data recovery method using the merge / erase prevention queue of FIG. 44.
도 46은 무효 지연 큐 및 머지/소거 방지 큐가 동시에 사용되는 경우의 운용 방법을 설명하기 위한 개념도이다. 도 46(a)는 무효 지연 큐만이 사용된 경우를 보여주고, 도 46(b)는 무효 지연 큐와 머지/소거 방지 큐가 함께 사용된 경우를 보여준다.46 is a conceptual diagram for explaining an operation method when an invalid delay queue and a merge / erase prevention queue are used at the same time. 46 (a) shows a case where only an invalid delay queue is used, and FIG. 46 (b) shows a case where an invalid delay queue and a merge / erase prevention queue are used together.
도 47은 도 46의 무효 지연 큐와 머지/소거 방지 큐를 모두 사용한 데이터 복구 방법을 설명하기 위한 순서도이다. FIG. 47 is a flowchart illustrating a data recovery method using both an invalid delay queue and a merge / erase prevention queue of FIG. 46.
도 48은 본 발명의 실시 예에 따른 반도체 메모리 장치를 포함하는 사용자 장치를 간략히 보여주는 블록도이다. 48 is a block diagram schematically illustrating a user device including a semiconductor memory device according to an embodiment of the present invention.
Claims (22)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20090040404 | 2009-05-08 | ||
KR1020090040404 | 2009-05-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100121389A true KR20100121389A (en) | 2010-11-17 |
KR101596833B1 KR101596833B1 (en) | 2016-02-24 |
Family
ID=43406742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090106106A KR101596833B1 (en) | 2009-05-08 | 2009-11-04 | Storage device based on a flash memory and user device including the same |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101596833B1 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101243999B1 (en) * | 2011-02-11 | 2013-03-15 | 주식회사 태진인포텍 | Ararm-based backup and restoration for a semiconductor storage device |
US9032138B2 (en) | 2011-11-23 | 2015-05-12 | Samsung Electronics Co., Ltd. | Storage device based on a flash memory and user device including the same |
WO2019156309A1 (en) * | 2018-02-09 | 2019-08-15 | 연세대학교 산학협력단 | Key-value-based data access device and method using internal parallelism of flash storage device |
CN112328513A (en) * | 2020-10-14 | 2021-02-05 | 合肥芯碁微电子装备股份有限公司 | Scanning type exposure system and data caching and scheduling method and device thereof |
CN112951305A (en) * | 2019-12-10 | 2021-06-11 | 北京兆易创新科技股份有限公司 | Storage device and control method and control device thereof |
CN114153379A (en) * | 2021-10-29 | 2022-03-08 | 尧云科技(西安)有限公司 | High-performance hybrid FTL method and solid-state storage device |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080075707A (en) * | 2007-02-13 | 2008-08-19 | 삼성전자주식회사 | Computing system capable of transferring delete information to flash storage |
-
2009
- 2009-11-04 KR KR1020090106106A patent/KR101596833B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080075707A (en) * | 2007-02-13 | 2008-08-19 | 삼성전자주식회사 | Computing system capable of transferring delete information to flash storage |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101243999B1 (en) * | 2011-02-11 | 2013-03-15 | 주식회사 태진인포텍 | Ararm-based backup and restoration for a semiconductor storage device |
US8954798B2 (en) | 2011-02-11 | 2015-02-10 | Taejin Info Tech Co., Ltd. | Alarm-based backup and restoration for a semiconductor storage device |
US9032138B2 (en) | 2011-11-23 | 2015-05-12 | Samsung Electronics Co., Ltd. | Storage device based on a flash memory and user device including the same |
WO2019156309A1 (en) * | 2018-02-09 | 2019-08-15 | 연세대학교 산학협력단 | Key-value-based data access device and method using internal parallelism of flash storage device |
KR20190100537A (en) | 2018-02-09 | 2019-08-29 | 연세대학교 산학협력단 | Apparatus for Accessing Data Using Internal Parallelism of Flash Storage based on Key-Value and Method thereof |
CN112951305A (en) * | 2019-12-10 | 2021-06-11 | 北京兆易创新科技股份有限公司 | Storage device and control method and control device thereof |
CN112328513A (en) * | 2020-10-14 | 2021-02-05 | 合肥芯碁微电子装备股份有限公司 | Scanning type exposure system and data caching and scheduling method and device thereof |
CN112328513B (en) * | 2020-10-14 | 2024-02-02 | 合肥芯碁微电子装备股份有限公司 | Scanning exposure system and data caching and scheduling method and device thereof |
CN114153379A (en) * | 2021-10-29 | 2022-03-08 | 尧云科技(西安)有限公司 | High-performance hybrid FTL method and solid-state storage device |
Also Published As
Publication number | Publication date |
---|---|
KR101596833B1 (en) | 2016-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8122193B2 (en) | Storage device and user device including the same | |
US11726661B2 (en) | Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device | |
US9841911B2 (en) | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance | |
US9928167B2 (en) | Information processing system and nonvolatile storage unit | |
TWI437431B (en) | Memory system and method of controlling memory system | |
US7802054B2 (en) | Apparatus and methods using invalidity indicators for buffered memory | |
US20110208898A1 (en) | Storage device, computing system, and data management method | |
US9367444B2 (en) | Non-volatile memory device, control method for information processing device, and information processing device | |
US11487630B2 (en) | Storage device and data processing method thereof | |
KR20110107856A (en) | Logical address offset | |
JP2010186340A (en) | Memory system | |
KR101596833B1 (en) | Storage device based on a flash memory and user device including the same | |
JP6094677B2 (en) | Information processing apparatus, memory dump method, and memory dump program | |
US20230004320A1 (en) | Method of managing debugging log in storage device | |
CN112306898A (en) | Storage device, operation method thereof and electronic device comprising same | |
KR20050062638A (en) | Method and apparatus for resolving physical blocks associated with a common logical block | |
JP5649709B2 (en) | MEMORY SYSTEM, NONVOLATILE MEMORY DEVICE, NONVOLATILE MEMORY DEVICE CONTROL METHOD AND PROGRAM | |
US10712941B2 (en) | Leveraging temporal locality to link files together and bypass accessing a central inode list | |
US10521156B2 (en) | Apparatus and method of managing multi solid state disk system | |
US20240126435A1 (en) | Storage system and method of data management of the same | |
US10817215B2 (en) | Data storage system and control method for non-volatile memory | |
KR20230027957A (en) | Storage system including host and storage device and operation method thereof | |
KR20110096814A (en) | Storage device and computing system, and data management method thereof | |
KR20110096813A (en) | Storage device and computing system, and data management method thereof | |
JP2009211218A (en) | Memory system and hit judgment method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20200131 Year of fee payment: 5 |