KR20120125950A - Flash memory device, memory control device, memory control method, and storage system - Google Patents

Flash memory device, memory control device, memory control method, and storage system Download PDF

Info

Publication number
KR20120125950A
KR20120125950A KR1020120043660A KR20120043660A KR20120125950A KR 20120125950 A KR20120125950 A KR 20120125950A KR 1020120043660 A KR1020120043660 A KR 1020120043660A KR 20120043660 A KR20120043660 A KR 20120043660A KR 20120125950 A KR20120125950 A KR 20120125950A
Authority
KR
South Korea
Prior art keywords
write
block
data
address
size
Prior art date
Application number
KR1020120043660A
Other languages
Korean (ko)
Inventor
히데아끼 오꾸보
게이따 가와무라
도시후미 니시우라
히로아끼 야마조에
Original Assignee
소니 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 소니 주식회사 filed Critical 소니 주식회사
Priority to KR1020120043660A priority Critical patent/KR20120125950A/en
Publication of KR20120125950A publication Critical patent/KR20120125950A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

PURPOSE: A flash memory device, a memory controlling device, a memory controlling method and a storage system are provided to effectively reduce a generation rate of a garbage collection and implement high speed recording. CONSTITUTION: A storage system is composed by a flash memory device(1) and a host device(5). The host device executes a reading and recording of data recorded in the flash memory device by transmitting a read command and a write command about the flash memory device. The flash memory device comprises a flash memory(4), an external interface(2) and a memory controller(3). A user data recording area(4A) and a management information recording area(4B) are existed in the flash memory. The memory controller is composed of a microcomputer including a CPU, ROM, and RAM. [Reference numerals] (1) Flash memory device; (2) External interface; (3) Memory controller; (4) Flash memory; (4A) User data recording area; (4B) Management information recording area; (5) Host device

Description

플래시 메모리 장치, 메모리 제어 장치, 메모리 제어 방법, 스토리지 시스템{FLASH MEMORY DEVICE, MEMORY CONTROL DEVICE, MEMORY CONTROL METHOD, AND STORAGE SYSTEM}Flash memory device, memory control device, memory control method, storage system {FLASH MEMORY DEVICE, MEMORY CONTROL DEVICE, MEMORY CONTROL METHOD, AND STORAGE SYSTEM}

본 발명은, 플래시 메모리를 구비한 플래시 메모리 장치와, 플래시 메모리에 관한 메모리 제어 장치와 그 방법, 및 스토리지 시스템에 관한 것이다.The present invention relates to a flash memory device having a flash memory, a memory control device related to the flash memory, a method thereof, and a storage system.

예를 들면 동화상이나 정지 화상의 촬영을 행하는 디지털 카메라 장치 등에는, 촬영 데이터의 기록 미디어로서 플래시 메모리를 탑재한 메모리 카드를 이용하는 것이 있다. 특히, 동화상 기록에서 이용되는 메모리 카드에 관해서는, 데이터 기록의 고속화가 요구되고 있다.For example, a digital camera apparatus for capturing a moving image or a still image, etc., uses a memory card equipped with a flash memory as a recording medium for photographing data. In particular, with respect to the memory card used for moving picture recording, there is a demand for speeding up data recording.

플래시 메모리를 탑재한 메모리 카드에서는, 플래시 메모리 상의 데이터를, Block-Level(블록 레벨) 관리와 Page-Level(페이지 레벨) 관리의 2종류의 관리 방법에 의해 관리하게 되어 있다.In a memory card equipped with a flash memory, data on the flash memory is managed by two types of management methods: block-level (block level) management and page-level (page level) management.

주지와 같이, Block-Level 관리에서는, 플래시 메모리의 블록 사이즈에 따른 단위로 데이터를 관리하고, Page-Level 관리에서는 플래시 메모리의 페이지 사이즈에 따른 단위로 데이터의 관리를 행한다. 블록은 복수의 페이지로 구성되고, 따라서 「블록 사이즈>페이지 사이즈」이다.As is well known, in block-level management, data is managed in units according to the block size of the flash memory, and in page-level management, data is managed in units according to the page size of the flash memory. A block is composed of a plurality of pages, and thus "block size> page size".

여기서, Page-Level 관리에서는, Block-Level 관리보다도 작은 데이터 사이즈 단위에서의 관리가 가능하지만, Block-Level 관리와 Page-Level 관리의 각각에서 메모리 카드에 필요한 워킹 메모리를 비교한 경우에는, Page-Level 관리 쪽이, 보다 큰 사이즈의 워킹 메모리를 필요로 하는 것으로 되어 있다. 따라서, 메모리 카드 내부의 플래시 메모리를 모두 Page-Level 관리에서 관리하기 위해서는, 큰 워킹 메모리가 필요하게 되어 버린다. 이 때문에, 플래시 메모리를 구비하는 메모리 카드에서는, 일부의 데이터를 Page-Level 관리에 의해 관리하고, 그 이외의 데이터를 Block-Level 관리에서 관리하게 되어 있다.Here, in page-level management, it is possible to manage on a smaller data size unit than block-level management. However, when the working memory required for the memory card is compared in each of the block-level management and the page-level management, the page-level management is performed. The level management requires a larger working memory. Therefore, in order to manage all the flash memories in the memory card by Page-Level management, a large working memory is required. For this reason, in a memory card having a flash memory, some data is managed by Page-Level management, and other data is managed by Block-Level management.

구체적으로, 플래시 메모리를 구비한 메모리 카드에서는, 호스트 장치(예를 들면 상기 디지털 카메라 장치) 측으로부터 기입을 요구받은 데이터의 사이즈가 작은 경우에는, 수신한 데이터를 Page-Level 관리에서 관리하고, 데이터 사이즈가 큰 경우에는 Block-Level 관리에서 관리를 행하게 된다.Specifically, in a memory card having a flash memory, when the size of data requested for writing from a host device (for example, the digital camera device) is small, the received data is managed by Page-Level Management, and the data If the size is large, it is managed by Block-Level Management.

또한, 호스트 장치로부터 기입된 작은 사이즈의 데이터의 총량이, Page-Level 관리에서 관리 가능한 사이즈를 초과한 경우에는, 일부의 데이터를 Page-Level 관리로부터 Block-Level 관리로 관리 단위를 변경시킨다. 소위, 가비지 컬렉션(Garbage Collection)이다(예를 들면 하기 각 특허 문헌을 참조).In addition, when the total amount of small size data written from the host apparatus exceeds the size manageable in Page-Level management, the management unit is changed from Page-Level management to Block-Level management. It is what is called a garbage collection (for example, refer each patent document below).

특허 문헌 1 : 일본 특허 출원 공개 제 2007-193883호 공보Patent Document 1: Japanese Patent Application Publication No. 2007-193883 특허 문헌 2 : 일본 특허 출원 공개 제 2007-58840호 공보Patent Document 2: Japanese Patent Application Publication No. 2007-58840

그러나, 가비지 컬렉션의 발생은, 메모리 카드의 퍼포먼스(기록 속도)를 저하시키는 요인이 된다. 따라서 고속 기록의 실현을 위해서는, 가비지 컬렉션의 발생 빈도를 가능한 한 줄이는 것이 바람직하다.However, the generation of garbage collection is a factor that degrades the performance (writing speed) of the memory card. Therefore, in order to realize high-speed recording, it is desirable to reduce the frequency of garbage collection as much as possible.

또 한편, 플래시 메모리의 블록 사이즈는, 플래시 메모리의 세대가 진행할 때마다 확대화하는 경향이 있다. 블록 사이즈를 대로 하면, 그만큼, 보다 고속인 데이터 기입을 실현할 수 있기 때문이다.On the other hand, the block size of the flash memory tends to increase whenever the generation of the flash memory advances. This is because a higher data writing speed can be achieved by setting the block size as it is.

단, 이와 같이 블록 사이즈를 대로 해서 보다 고속인 기입을 실현하고자 한 경우에는, 기입 데이터의 송출측인 호스트 장치측에서는, 이것에 대응시켜 데이터 송출용의 버퍼 메모리의 사이즈를 크게 해야 한다. 확대한 블록 사이즈에 상기 버퍼 메모리의 사이즈가 충분하지 못한 경우, 그 호스트 장치와의 조합으로는, 메모리 카드측에서 블록 레벨 관리에 의한 데이터 기입을 행할 수 없어, 페이지 레벨 관리 하에서의 기록이 되어 버리고, 결과로서 고속 기록의 실현이 도모되지 않게 된다.However, in the case where a faster writing is to be achieved with the same block size as described above, the host device on the sending side of the write data must correspond to this in order to increase the size of the buffer memory for sending data. If the size of the buffer memory is not sufficient for the enlarged block size, data cannot be written by the block level management on the memory card side in combination with the host device, and recording is performed under the page level management. As a result, high speed recording cannot be realized.

본 기술은 상기 문제점을 감안하여 이루어진 것으로서, 플래시 메모리를 구비한 메모리 장치(플래시 메모리 장치)에 대해서, 가비지 컬렉션의 발생 빈도를 효과적으로 줄임과 함께 기록의 고속화를 도모함으로써, 호스트 장치측에서 기입 데이터 송출용의 버퍼 메모리의 사이즈를 확대하지 않더라도 고속 기록의 실현이 도모되도록 하는 것을 그 과제로 한다.The present technology has been made in view of the above-mentioned problems. For the memory device (flash memory device) equipped with the flash memory, the frequency of occurrence of garbage collection is effectively reduced and the recording speed is increased, thereby sending the write data from the host device side. The object of the present invention is to realize high-speed writing even if the size of the buffer memory for the memory is not increased.

본 기술의 플래시 메모리 장치는, 플래시 메모리부를 구비함과 함께, 상기 플래시 메모리부의 블록 사이즈 미만의 데이터가, 상기 플래시 메모리부에 시퀀스 기입되도록 제어하는 제어부를 구비하는 것이다.The flash memory device of the present technology includes a flash memory unit and a control unit for controlling data of less than the block size of the flash memory unit to be sequenced into the flash memory unit.

또한, 본 기술의 메모리 제어 장치는, 플래시 메모리부의 블록 사이즈 미만의 데이터가, 상기 플래시 메모리부에 시퀀스 기입되도록 제어하는 것이다.In addition, the memory control device of the present technology controls the data so that data smaller than the block size of the flash memory unit is written in sequence to the flash memory unit.

또한, 본 기술의 스토리지 시스템은, 플래시 메모리부와, 상기 플래시 메모리부에의 데이터의 기입을 지시하는 지시부와, 상기 기입 지시부에 의해 기입이 지시된, 상기 플래시 메모리부의 블록 사이즈 미만의 데이터가, 상기 플래시 메모리부에 시퀀스 기입되도록 제어하는 제어부를 구비하는 것이다.The storage system of the present technology further includes a flash memory unit, an instruction unit instructing writing of data into the flash memory unit, and data smaller than the block size of the flash memory unit instructed to be written by the write instruction unit. And a control unit for controlling the sequence write to the flash memory unit.

본 기술에 따르면, 블록 레벨(Block-Level) 관리에 의한 기록을 행할 수 없는 블록 사이즈 미만의 데이터에 대해서, 플래시 메모리부에 시퀀스 기입을 행할 수 있다. 여기서, 시퀀스 기입이란, 기입 대상 데이터를 소정의 기입 단위로 대상 물리 블록에 대해서 논리 어드레스순으로 기입하는 것을 의미한다. 블록 레벨 관리와 페이지 레벨(Page-Level) 관리의 2종의 관리에서 데이터 기입을 행하는 종래의 플래시 메모리 장치에서는, 기입해야 할 데이터가 블록 사이즈와 일치하는 경우에는 블록 레벨 관리에 의한 기록을 행하고, 블록 사이즈 미만의 데이터에 대해서는 페이지 레벨 관리에 의한 기입을 행하게 되어 있다. 이 때문에, 예를 들면 블록 사이즈 미만의 데이터에 대해서, 그들이 논리 어드레스적으로 연속하고 있는 개개의 데이터라고 해도, 그들 데이터에 대해서는 페이지 레벨 관리에 의한 기입이 행하여지고 있었다. 이것에 대해서, 시퀀스 기입을 가능하게 한 본 기술에 따르면, 블록 사이즈 미만의 데이터에 대해서 시퀀스 기입을 할 수 있다. 즉, 예를 들면 상기한 바와 같은 케이스에 있어서, 페이지 레벨 관리 하에서의 기입과 같이 개개의 데이터가 서로 다른 물리 블록으로 분산해서 기록되게 되는 것을 효과적으로 방지할 수 있다.According to the present technology, a sequence write can be performed in a flash memory unit for data smaller than a block size in which writing by block-level management cannot be performed. Here, the sequence writing means writing the write target data in a logical address order to the target physical block in a predetermined write unit. In the conventional flash memory device which writes data in two types of management, block level management and page-level management, when the data to be written matches the block size, writing is performed by block level management. For data smaller than the block size, writing by page level management is performed. For this reason, for example, for data smaller than the block size, even though they are individual data that are logically contiguous, the data has been written by page level management. On the other hand, according to this technique which enabled sequence writing, sequence writing can be performed for data smaller than the block size. That is, in the case described above, for example, it is possible to effectively prevent individual data from being distributed and recorded in different physical blocks such as writing under page level management.

즉, 시퀀스 기입을 가능하게 한 본 기술에 따르면, 블록 사이즈 미만의 데이터에 대해서 페이지 레벨 관리에 의한 기입 밖에는 선택 방법이 없는 종래와 비교하여, 가비지 컬렉션의 발생 빈도를 효과적으로 줄일 수 있다. 결과, 종래보다도 기록 속도의 면에서 퍼포먼스 향상이 도모된다.In other words, according to the present technology enabling the sequence writing, the frequency of garbage collection can be effectively reduced as compared with the conventional method in which only the writing method by page level management is used for data smaller than the block size. As a result, the performance can be improved in terms of the recording speed compared with the prior art.

또한, 상술한 바와 같이 종래에서는, 호스트 장치측에서 블록 사이즈보다도 작은 사이즈의 버퍼 메모리만 구비되어 있는 경우에는, 호스트 장치측은 블록 사이즈 미만의 데이터만 송출할 수 있다. 따라서 이 경우도, 데이터가 논리 어드레스적으로 연속되고 있어도, 종래의 플래시 메모리 장치에서는 페이지 레벨 관리에 의한 기입이 선택되어 버리게 된다.As described above, conventionally, when only the buffer memory having a size smaller than the block size is provided on the host device side, the host device side can transmit only data smaller than the block size. Therefore, even in this case, writing by page level management is selected in the conventional flash memory device even if data is continuously concatenated logically.

이에 반해서, 시퀀스 기입을 가능하게 한 본 기술에 따르면, 호스트 장치측에서 블록 사이즈 미만의 데이터만 송출할 수 있는 경우에도, 그들 데이터를 시퀀스 기입하는, 즉, 소정의 물리 블록에 논리 어드레스순으로 기록할 수 있다. 이것에 따르면, 페이지 레벨 관리에 의한 기록이 행하여지는 경우와는 달리, 가비지 컬렉션의 발생 빈도를 저하시킬 수 있어, 이런 점에서도 퍼포먼스 향상이 도모된다.On the contrary, according to the present technology enabling the sequence writing, even when only the data smaller than the block size can be sent from the host device side, the data is written in sequence, that is, the predetermined physical blocks are written in logical address order. can do. According to this, unlike the case where recording by page level management is performed, the frequency of garbage collection can be reduced, and performance is also improved in this respect.

이 기술에 따르면, 종래보다도 가비지 컬렉션의 발생을 효과적으로 줄이는 것에 의해 기록 속도의 향상을 도모할 수 있다.According to this technique, the recording speed can be improved by reducing the generation of garbage collection more effectively than before.

또한, 데이터 전송용의 버퍼 메모리 사이즈가 작은 호스트 장치로부터의 기입이 행하여지는 경우에도, 고속인 데이터 기록을 실현할 수 있다.In addition, even when writing from a host device having a small buffer memory size for data transfer is performed, high-speed data recording can be realized.

도 1은 실시 형태의 스토리지 시스템의 구성을 도시한 도면.
도 2는 플래시 메모리에서 사용하는 물리 어드레스의 개요를 도시한 도면.
도 3은 논리 섹터 어드레스, 논리 페이지 어드레스, 논리 블록 어드레스의 개요를 도시한 도면.
도 4는 Block-Level 관리 블록의 데이터 구조를 도시한 도면.
도 5는 Page-Level 관리 블록의 데이터 구조를 도시한 도면.
도 6은 시퀀스 기입 관리 블록의 데이터 구조를 도시한 도면.
도 7은 관리 정보 블록의 데이터 구조를 도시한 도면.
도 8은 Block-Level 관리 테이블의 데이터 구조를 도시한 도면.
도 9는 Page-Level 관리 테이블의 데이터 구조를 도시한 도면.
도 10은 Page-Level 맵의 데이터 구조를 도시한 도면.
도 11은 시퀀스 기입 블록 관리 테이블의 데이터 구조를 도시한 도면.
도 12는 무효 데이터 블록 관리 테이블의 데이터 구조를 도시한 도면.
도 13은 호스트 장치측으로부터 플래시 메모리 장치측에 행하여지는 기입 지시의 일례를 도시한 도면.
도 14는 Write 커맨드 실행 처리의 플로우차트.
도 15는 도 14에 도시한 논리 블록내 기입 처리(S103)로서 실행해야 할 구체적인 처리 내용을 도시한 플로우차트.
도 16은 블록 레벨 기입을 위한 처리 내용을 도시한 플로우차트.
도 17은 시퀀스 기입 블록의 가비지 컬렉션에 의한 물리 레벨에서의 데이터의 이행의 모습의 예를 모식적으로 도시한 도면.
도 18은 도 17에 도시하는 데이터 이행 전에 있어서의 시퀀스 기입 블록 관리 테이블, Block-Level 관리 테이블, Page-Level 관리 테이블, Page-Level 맵의 내용을 예시한 도면.
도 19는 도 17에 도시하는 데이터 이행 후의 시퀀스 기입 블록 관리 테이블, Block-Level 관리 테이블, Page-Level 관리 테이블, Page-Level 맵의 내용을 예시한 도면.
도 20은 시퀀스 기입과 그 후의 시퀀스 기입 블록 관리 테이블의 내용을 예시한 도면.
도 21은 페이지 레벨 기입을 위한 처리 내용을 도시한 플로우차트.
도 22는 Page-Level 관리 블록의 가비지 컬렉션에 의한 물리 레벨에서의 데이터의 이행의 모습의 예를 모식적으로 도시한 도면.
도 23은 도 22에 도시하는 데이터 이행 전에 있어서의 Block-Level 관리 테이블, Page-Level 관리 테이블, Page-Level 맵의 내용을 예시한 도면.
도 24는 도 22에 도시하는 데이터 이행 후의 Block-Level 관리 테이블, Page-Level 관리 테이블, Page-Level 맵의 내용을 예시한 도면.
도 25는 Page-Level 관리 블록에의 기입으로서 행하여지는 데이터 기입의 예와, 그 후의 Page-Level 맵의 갱신 실행 후의 Page-Level 맵의 예를 도시한 도면.
도 26은 제2 실시 형태에 있어서의 호스트 장치가 플래시 메모리 장치에 시퀀스 기입을 실행시키는 경우에 있어서 행하는 기입 지시의 예를 도시한 도면.
도 27은 시퀀스 기입 개시 커맨드 대응 처리의 내용을 도시한 플로우차트.
도 28은 시퀀스 기입 종료 커맨드 대응 처리의 내용을 도시한 플로우차트.
도 29는 제2 실시 형태의 경우에 있어서의 논리 블록내 기입 처리의 내용을 도시한 플로우차트다.
1 is a diagram illustrating a configuration of a storage system of an embodiment.
2 is a diagram showing an outline of physical addresses used in a flash memory;
3 is a diagram showing an outline of a logical sector address, a logical page address, and a logical block address.
4 illustrates a data structure of a Block-Level Management Block.
5 shows a data structure of a page-level management block;
6 is a diagram showing a data structure of a sequence write management block.
7 shows a data structure of a management information block.
8 shows a data structure of a Block-Level Management Table.
Fig. 9 is a diagram showing the data structure of the Page-Level Management Table.
Fig. 10 shows the data structure of a Page-Level map.
11 is a diagram showing a data structure of a sequence write block management table.
Fig. 12 is a diagram showing the data structure of the invalid data block management table.
Fig. 13 is a diagram showing an example of a write instruction issued from the host device side to the flash memory device side.
Fig. 14 is a flowchart of Write command execution processing.
FIG. 15 is a flowchart showing specific processing contents to be executed as the in-block write processing (S103) shown in FIG.
Fig. 16 is a flowchart showing the processing contents for block level writing.
Fig. 17 is a diagram schematically showing an example of how data is transitioned at the physical level by garbage collection of a sequence write block.
FIG. 18 is a diagram illustrating the contents of a sequence write block management table, a Block-Level management table, a Page-Level management table, and a Page-Level map before data transfer shown in FIG. 17;
FIG. 19 is a diagram illustrating the contents of a sequence write block management table, a Block-Level management table, a Page-Level management table, and a Page-Level map after data transition shown in FIG. 17;
Fig. 20 illustrates the contents of a sequence write and subsequent sequence write block management table.
Fig. 21 is a flowchart showing processing contents for page level writing.
Fig. 22 is a diagram schematically showing an example of how data is transitioned at the physical level by garbage collection of a Page-Level management block.
FIG. 23 is a diagram illustrating the contents of a Block-Level management table, a Page-Level management table, and a Page-Level map before data transfer shown in FIG. 22;
FIG. 24 is a diagram illustrating the contents of a Block-Level management table, a Page-Level management table, and a Page-Level map after data transition shown in FIG. 22;
Fig. 25 is a diagram showing an example of data writing performed as writing to a Page-Level management block and an example of a Page-Level map after updating of a subsequent Page-Level map.
Fig. 26 is a diagram showing an example of a write instruction to be performed when the host apparatus in the second embodiment executes sequence writing to a flash memory device.
Fig. 27 is a flowchart showing the contents of the sequence write start command correspondence process.
Fig. 28 is a flowchart showing the contents of the sequence write end command correspondence process.
29 is a flowchart showing the contents of the write processing in the logical block in the case of the second embodiment.

이하, 본 기술에 따른 실시 형태에 대해서 설명한다.EMBODIMENT OF THE INVENTION Hereinafter, embodiment which concerns on this technique is described.

또한, 설명은 이하의 순서로 행한다. The description will be made in the following order.

<1. 제1 실시 형태> <1. First embodiment>

[1-1. 스토리지 시스템의 구성] [1-1. Configuration of Storage System]

[1-2. 데이터 관리 방법에 대해서] [1-2. Data management method]

[1-3. 제1 실시 형태로서의 메모리 제어 방법] [1-3. Memory Control Method as First Embodiment]

<2. 제2 실시 형태> <2. Second Embodiment>

<3. 변형예> <3. Modifications>

여기서, 제1 실시 형태는, 호스트측이 플래시 메모리 장치측에 Write 커맨드로 지정한 기입 데이터에 관한 논리 어드레스와 데이터 사이즈를 바탕으로, 플래시 메모리 장치 자신이 데이터의 기입 방법을 바꾸는 실시 형태이며, 제2 실시 형태는, 호스트측이 Write 커맨드로 플래시 메모리 장치에 기입 방법의 절환을 명시적으로 통지하고, 이것에 따라 플래시 메모리 장치가 데이터의 관리 방법을 바꾸는 실시 형태로 된다.Here, the first embodiment is an embodiment in which the flash memory device itself changes the data writing method based on the logical address and data size of the write data designated by the write command to the flash memory device side by the host side. The embodiment is an embodiment in which the host side explicitly notifies the flash memory device of the write method switching with the Write command, and the flash memory device changes the data management method accordingly.

<1. 제1 실시 형태> <1. First embodiment>

[1-1. 스토리지 시스템의 구성][1-1. Configuration of Storage System]

도 1은, 실시 형태의 스토리지 시스템의 구성을 도시한 도면이다.1 is a diagram illustrating a configuration of a storage system of an embodiment.

실시 형태의 스토리지 시스템은, 플래시 메모리 장치(1)와 호스트 장치(5)를 갖고 구성된다.The storage system of the embodiment is configured with a flash memory device 1 and a host device 5.

호스트 장치(5)는, 플래시 메모리 장치(1)에 대해서 Read 커맨드, Write 커맨드를 송신해서 플래시 메모리 장치(1)에 기록된 데이터의 읽어내기, 데이터의 기입을 실행시키는 장치가 된다.The host device 5 is a device which sends a read command and a write command to the flash memory device 1 to read data written to the flash memory device 1 and to write data.

본 예의 경우, 호스트 장치(5)는 예를 들면 정지 화상이나 동화상을 촬영해서 그들 데이터의 기록/재생을 행하는 디지털 카메라 장치인 것으로 한다.In the case of this example, the host device 5 is assumed to be a digital camera device for capturing still images or moving images and recording / reproducing those data, for example.

플래시 메모리 장치(1)는, 도면과 같이 플래시 메모리(4), 외부 인터페이스(2) 및 메모리 컨트롤러(3)를 구비하고 있다.The flash memory device 1 includes a flash memory 4, an external interface 2, and a memory controller 3 as shown in the figure.

플래시 메모리(4)는, NAND형의 플래시 메모리로 되고, 메모리 컨트롤러(3)에 의한 제어에 의해 데이터의 기록(기입)/재생(읽어내기)이 행하여진다.The flash memory 4 is a NAND flash memory, and data writing (writing) / reproducing (reading) is performed under the control of the memory controller 3.

플래시 메모리(4) 내에는, 유저 데이터 기록 영역(4A)과 관리 정보 기록 영역(4B)이 존재한다. 유저 데이터 기록 영역(4A)에서는, 데이터가 기입된 물리 블록으로서, 후술하는 Block-Level(블록 레벨) 관리 블록(30), Page-Level(페이지 레벨) 관리 블록(40), 시퀀스 기입 관리 블록(50)의 3종류의 블록이 존재하게 된다.In the flash memory 4, the user data recording area 4A and the management information recording area 4B exist. In the user data recording area 4A, as a physical block to which data is written, a block-level (block level) management block 30, a page-level (page level) management block 40, a sequence write management block (to be described later) There are three kinds of blocks (50).

또한, 관리 정보 기록 영역(4B)에서는, 이들 Block-Level 관리 블록(30), Page-Level 관리 블록(40), 시퀀스 기입 관리 블록(50)을 관리하기 위한 데이터를 기록하는 관리 정보 블록(60)이 존재하게 된다.In the management information recording area 4B, a management information block 60 for recording data for managing these Block-Level management blocks 30, Page-Level management blocks 40, and sequence write management blocks 50 is also provided. ) Will exist.

메모리 컨트롤러(3)는, CPU(Central Processing Unit)나 ROM(Read Only Memory), RAM(Random Access Memory)을 구비한 마이크로컴퓨터로 구성되고, 예를 들면 상기 ROM에 저장된 프로그램에 따른 처리를 실행함으로써, 플래시 메모리 장치의 전체 제어를 행한다.The memory controller 3 is composed of a microcomputer having a CPU (Central Processing Unit), a ROM (Read Only Memory), and a RAM (Random Access Memory). For example, the memory controller 3 executes a process according to a program stored in the ROM. The entire control of the flash memory device is performed.

구체적으로는, 외부 인터페이스(2)가 수신한 커맨드의 해석이나, 후술하는 각종 관리 정보를 이용한 논리 어드레스로부터 물리 어드레스로의 변환 처리, 플래시 메모리(4)에 대한 데이터의 기입과 읽어내기, 플래시 메모리(4)에의 데이터 기입 시의 ECC(Error Correction Code) 데이터의 생성?부가, 판독 시의 ECC 에러 정정 처리 등을 행한다.Specifically, analysis of commands received by the external interface 2, conversion processing from logical addresses to physical addresses using various management information described later, writing and reading data to and from the flash memory 4, and flash memory ECC (Error Correction Code) data generation and addition at the time of data writing to (4) performs ECC error correction processing at reading.

외부 인터페이스(2)는, 호스트 장치(5)와 메모리 컨트롤러(3) 사이에서 각종 데이터의 송수신을 가능하게 하기 위해서 설치되고, 호스트 장치(5)로부터의 커맨드 수신이나 데이터의 송수신 등을 행한다.The external interface 2 is provided in order to enable transmission and reception of various data between the host device 5 and the memory controller 3, and performs command reception, data transmission and the like from the host device 5, and the like.

여기서, 호스트 장치(5)는, 플래시 메모리(4)의 데이터 판독 시에는, 메모리 컨트롤러(3)에 대해서, Read 커맨드로서, 읽어내기 데이터가 존재하는 선두 논리 어드레스(적어도 논리 블록 어드레스 및 논리 페이지 어드레스의 조로 특정됨)와 데이터 사이즈를 지정한 커맨드를 송출한다. 이것에 따라 메모리 컨트롤러(3)는, 지정된 논리 어드레스로부터 지정된 사이즈의 데이터를 읽어내고, 이것을 호스트 장치(5)에 대해서 송출한다.Here, when the data of the flash memory 4 is read, the host device 5, as a Read command, the head logical address (at least a logical block address and a logical page address) at which the read data exists as the Read command. And data size are specified. As a result, the memory controller 3 reads out data of the designated size from the designated logical address and sends it to the host device 5.

또한, 호스트 장치(5)는, 데이터 기입 시에는, Write 커맨드로서, 데이터의 기입처의 선두 논리 어드레스와 데이터 사이즈를 지정한 커맨드를 송출한다. 이것에 따라 메모리 컨트롤러(3)는, 지정된 논리 어드레스에 지정된 사이즈의 데이터가 기록된 상태로 되도록, 플래시 메모리(4)에 대한 기입을 행한다.In addition, when writing data, the host device 5 sends a command specifying the head logical address and data size of the data write destination as a write command. As a result, the memory controller 3 writes to the flash memory 4 so that the data of the specified size is written in the designated logical address.

[1-2 .데이터 관리 방법에 대해서] [1-2 .About data management method]

이하, 플래시 메모리(4)에 기록되는 데이터의 관리 방법에 대해서 설명한다.Hereinafter, a method of managing data recorded in the flash memory 4 will be described.

우선은, 물리 어드레스와 논리 어드레스에 대해서 설명해 둔다.First, the physical address and logical address will be described.

플래시 메모리(4)에서는, 플래시 메모리(4) 내부에 기록된 데이터의 위치 정보를 나타내는 어드레스로서, 물리 어드레스가 사용된다.In the flash memory 4, a physical address is used as an address indicating positional information of data recorded in the flash memory 4.

도 2는, 플래시 메모리(4)에서 사용하는 물리 어드레스의 개요를 나타내고 있다.2 shows an outline of physical addresses used in the flash memory 4.

플래시 메모리(4)에서는, 물리 어드레스로서, 물리 블록 어드레스, 물리 페이지 어드레스, 물리 섹터 어드레스의 3종류의 어드레스가 사용된다.In the flash memory 4, three types of addresses, a physical block address, a physical page address, and a physical sector address, are used as the physical address.

도 2에 있어서, 물리 블록(10)은, 플래시 메모리(4)에서 사용되는 NAND 플래시 메모리의 최소 소거 단위인 블록에 대응하고, 플래시 메모리(4)에서 데이터의 Read가 실행된다. In FIG. 2, the physical block 10 corresponds to a block which is the minimum erase unit of the NAND flash memory used in the flash memory 4, and data read is performed in the flash memory 4.

도 2에서는, 데이터의 Read/Program/Erase가 실행되는 블록 수를 b라 하고, 0으로부터 b-1까지의 물리 블록 어드레스를 할당하고 있다.In Fig. 2, the number of blocks on which data Read / Program / Erase is executed is b, and physical block addresses from 0 to b-1 are allocated.

물리 블록(10)은, 물리 페이지(11)로 분할된다. 물리 페이지(11)는 NAND 플래시 메모리의 최소 프로그램 단위인 페이지에 대응한다. 물리 블록(10) 내의 페이지 각각에, 선두 페이지로부터 올림차순으로 물리 페이지 어드레스가 1개 할당된다.The physical block 10 is divided into physical pages 11. The physical page 11 corresponds to a page which is the minimum program unit of the NAND flash memory. Each page in the physical block 10 is assigned one physical page address in ascending order from the first page.

도 2에서는 물리 블록(10) 내에 존재하는 물리 페이지(11)의 수를 p라 하고, 0으로부터 p-1까지의 물리 페이지 어드레스를 할당하고 있다.In FIG. 2, the number of physical pages 11 present in the physical block 10 is p, and a physical page address from 0 to p-1 is assigned.

물리 섹터(12)는, 호스트 장치(5)가 사용하는 논리 어드레스에서 지정되는 최소의 영역(섹터)의 사이즈와 일치한다. 물리 페이지(11)는, 복수의 물리 섹터(12)로 분할되고, 각각의 물리 섹터(12)에 물리 섹터 어드레스가 오름차순으로 할당된다.The physical sector 12 coincides with the size of the smallest area (sector) specified by the logical address used by the host device 5. The physical page 11 is divided into a plurality of physical sectors 12, and physical sector addresses are assigned to each physical sector 12 in ascending order.

도 2에서는 물리 페이지(11)가 s개의 물리 섹터(12)로 분할되는 것으로 하고 있고, 이 경우, 0으로부터 s-1까지의 물리 섹터 어드레스가 할당된다.In FIG. 2, it is assumed that the physical page 11 is divided into s physical sectors 12. In this case, physical sector addresses from 0 to s-1 are allocated.

플래시 메모리 장치(1)에서는, 데이터의 논리 어드레스에 대해서 물리 어드레스를 대응짓는다. 논리 어드레스와 물리 어드레스를 대응짓기 위해서, 논리 어드레스를 논리 섹터 어드레스, 논리 페이지 어드레스, 논리 블록 어드레스의 3종류의 어드레스로 취급한다.In the flash memory device 1, a physical address is associated with a logical address of data. In order to associate the logical address with the physical address, the logical address is treated as three types of addresses: a logical sector address, a logical page address, and a logical block address.

도 3은, 논리 섹터 어드레스, 논리 페이지 어드레스, 논리 블록 어드레스의 개요를 나타내고 있다.3 shows an outline of a logical sector address, a logical page address, and a logical block address.

호스트 장치(5)가 플래시 메모리 장치(1)에서 취급할 수 있는 논리 어드레스 공간(20)의 어드레스는 0 내지 as-1인 것으로 한다. 논리 어드레스 각각에 1개의 논리 섹터 어드레스를 할당한다. 도 3에서는 모든 논리 어드레스에, 논리 섹터 어드레스를 0으로부터 s-1까지 할당하고 있다. 여기서, 「s」는 물리 페이지(11) 내에 존재하는 물리 섹터(12)의 수이다.It is assumed that the address of the logical address space 20 that the host device 5 can handle in the flash memory device 1 is 0 to as-1. One logical sector address is assigned to each logical address. In FIG. 3, logical sector addresses are allocated from 0 to s-1 to all logical addresses. Here, "s" is the number of physical sectors 12 present in the physical page 11.

논리 페이지(22)는 복수의 논리 섹터(21)로 구성된다. 도 3에서는 s개의 논리 섹터(21)로 1개의 논리 페이지(22)가 구성되고, 모든 논리 페이지(22)에 0으로부터 p-1의 논리 페이지 어드레스를 할당하고 있다. 「p」는 1개의 물리 블록(10)에 존재하는 물리 페이지(11)의 수이다.The logical page 22 is composed of a plurality of logical sectors 21. In FIG. 3, one logical page 22 is composed of s logical sectors 21, and all logical pages 22 are assigned logical page addresses from 0 to p-1. "P" is the number of physical pages 11 present in one physical block 10.

논리 블록(23)은 복수의 논리 페이지(22)로 구성된다. 도 3에서는 p개의 논리 페이지(22)로 1개의 논리 블록(23)이 구성되고, 모든 논리 블록(23)에 0으로부터 a-1의 논리 블록 어드레스를 할당하고 있다.The logical block 23 is composed of a plurality of logical pages 22. In FIG. 3, one logical block 23 is composed of p logical pages 22, and all logical blocks 23 are assigned logical block addresses from 0 to a-1.

계속해서, 플래시 메모리(4)에 기록되는 각종 물리 블록의 구체적인 데이터 구조에 대해서 설명한다.Subsequently, a specific data structure of various physical blocks recorded in the flash memory 4 will be described.

도 4는, Block-Level 관리 블록(30)의 데이터 구조를 나타내고 있다.4 shows the data structure of the Block-Level Management Block 30.

여기서, Block-Level 관리 블록(30)이란, Block-Level 관리에 의한 기입(블록 레벨 기입)이 행하여진 물리 블록을 의미한다.Here, the block-level management block 30 means a physical block on which writing (block-level writing) has been performed by block-level management.

Block-Level 관리 블록(30)의 모든 물리 페이지에는, 데이터가 기입 완료로 된다(도면 중, 기입 완료 페이지(31)). 블록 레벨 기입에서는, 1개의 물리 블록에 대해서 1블록 분의 사이즈의 데이터를 기입하기 위해서이다.Data is written to all physical pages of the Block-Level Management Block 30 (write completed page 31 in the drawing). In the block level writing, data of one block size is written in one physical block.

도면과 같이 1개의 물리 페이지에는, 부가 정보(32), 부가 정보 ECC(32a), 유저 데이터(33), 유저 데이터 ECC(33a)가 기록된다. 부가 정보(32)는, Block-Level 관리 블록(30)인 것을 나타내는 블록 타입(34), Block-Level 관리 블록(30)의 세대 정보를 나타내는 리비전(35), Block-Level 관리 블록(30)에 기입된 데이터의 논리 블록 어드레스(36), 해당 부가 정보(32)가 저장된 물리 페이지에 대응하는 논리 페이지 어드레스(37)의 각 정보로 구성된다.As shown in the figure, additional information 32, additional information ECC 32a, user data 33, and user data ECC 33a are recorded in one physical page. The additional information 32 includes a block type 34 indicating that it is a Block-Level management block 30, a revision 35 indicating generation information of the Block-Level management block 30, and a Block-Level management block 30. The logical block address 36 of the data written in &quot;, &quot; and each piece of information of the logical page address 37 corresponding to the physical page in which the additional information 32 is stored.

논리 블록 어드레스(36)는, 동일한 Block-Level 관리 블록(30) 내에서 모두 동일한 값이다.The logical block addresses 36 are all the same value within the same Block-Level Management Block 30.

또한 Block-Level 관리 블록(30)에서는, 논리 페이지 어드레스(37)의 값은, 해당 논리 페이지 어드레스(37)의 데이터가 기입된 물리 페이지의 물리 페이지 어드레스와 일치하게 된다. 구체적으로 도면 중에서는, 물리 페이지 어드레스i와, 해당 물리 페이지 어드레스i에 기입된 데이터의 논리 페이지 어드레스i가 일치하고 있는 것으로서 나타내었다.In the Block-Level Management Block 30, the value of the logical page address 37 matches the physical page address of the physical page to which the data of the logical page address 37 is written. Specifically, in the figure, the physical page address i and the logical page address i of the data written in the physical page address i correspond to each other.

또한, 논리 섹터 어드레스와 물리 섹터 어드레스는 일치한다.In addition, the logical sector address and the physical sector address coincide.

이때, 유저 데이터(33)의 사이즈는 물리 섹터의 사이즈와 일치하고, 1개의 물리 페이지에 기록 가능한 유저 데이터(33)의 수는, 물리 페이지 내의 물리 섹터수와 일치한다.At this time, the size of the user data 33 corresponds to the size of the physical sector, and the number of user data 33 that can be recorded on one physical page corresponds to the number of physical sectors in the physical page.

도 5는, Page-Level 관리 블록(40)의 데이터 구조를 나타내고 있다.5 shows the data structure of the Page-Level Management Block 40.

Page-Level 관리 블록(40)이란, Page-Level 관리에 의한 기입(페이지 레벨 기입)에서 사용된 물리 블록을 가리킨다.The page-level management block 40 refers to a physical block used in writing by the page-level management (page level writing).

Page-Level 관리 블록(40)에는, 기입 완료 페이지(41a)와 미기입 페이지(41b)가 포함된다.The page-level management block 40 includes a write completion page 41a and an unwritten page 41b.

도면과 같이, 기입 완료 페이지(41a)로서의 물리 페이지에는, 부가 정보(42), 부가 정보 ECC(42a), 유저 데이터(43), 유저 데이터 ECC(43a)가 기록된다. As shown in the figure, the additional information 42, the additional information ECC 42a, the user data 43, and the user data ECC 43a are recorded in the physical page as the written completion page 41a.

부가 정보(42)는, Page-Level 관리 블록(40)인 것을 나타내는 블록 타입(44), Page-Level 관리 블록(40)의 세대 정보를 나타내는 리비전(45), Page-Level 관리 블록(40)에 기입된 데이터의 논리 블록 어드레스(46), 해당 부가 정보(42)가 저장된 물리 페이지에 대응하는 논리 페이지 어드레스(47)의 각 정보로 구성된다.The additional information 42 includes a block type 44 indicating that it is a Page-Level management block 40, a revision 45 indicating generation information of the Page-Level management block 40, and a Page-Level management block 40. The logical block address 46 of the data written in &quot;, &quot; and each piece of information of the logical page address 47 corresponding to the physical page in which the additional information 42 is stored.

이 경우도 논리 블록 어드레스(46)는, 동일한 Page-Level 관리 블록(40) 내에서 모두 동일한 값이 된다.Also in this case, the logical block addresses 46 are all the same value within the same Page-Level Management Block 40.

단, Page-Level 관리 블록(40)의 경우, 논리 페이지 어드레스(47)의 값은, 해당 논리 페이지 어드레스(47)의 데이터가 기입된 물리 페이지의 물리 페이지 어드레스와는 반드시 일치하지는 않게 된다. 페이지 레벨 기입에서는, 블록 사이즈에 미치지 않는 작은 사이즈의 데이터를 각각 상이한 물리 블록에 분산해서 기록하는 방식이 행하여지기 때문이다.In the case of the page-level management block 40, however, the value of the logical page address 47 does not necessarily match the physical page address of the physical page to which the data of the logical page address 47 is written. This is because, in the page level writing, a method of distributing and recording data having a smaller size than the block size in different physical blocks is performed.

또한, Page-Level 관리 블록(40)에 있어서도, 논리 섹터 어드레스에 대해서는, 물리 섹터 어드레스와 일치한다.In the page-level management block 40, the logical sector address is the same as the physical sector address.

이 경우도 유저 데이터(43)의 사이즈는 물리 섹터의 사이즈와 일치하고, 1개의 물리 페이지에 기록 가능한 유저 데이터(43)의 수는 물리 페이지 내의 물리 섹터수와 일치한다.Also in this case, the size of the user data 43 matches the size of the physical sector, and the number of user data 43 that can be recorded on one physical page matches the number of physical sectors in the physical page.

또한, Page-Level 관리 블록(40)에 있어서, 미기입 페이지(41b) 내에는, 도면과 같이 NAND 플래시 메모리의 초기값인 0xFFFF가 기록된 상태로 된다.In the page-level management block 40, in the unwritten page 41b, 0xFFFF, which is the initial value of the NAND flash memory, is written as shown in the figure.

도 6은, 시퀀스 기입 관리 블록(50)의 데이터 구조를 나타내고 있다.6 shows the data structure of the sequence write management block 50.

이 시퀀스 기입 관리 블록(50)은, 후술하는 실시 형태로서의 시퀀스 기입에서 사용된 물리 블록이 된다.This sequence write management block 50 becomes a physical block used in sequence write as an embodiment described later.

시퀀스 기입 관리 블록(50)은, 기입 완료 페이지(51a)와 미기입 페이지(51b)를 포함한다.The sequence write management block 50 includes a write completion page 51a and an unwritten page 51b.

기입 완료 페이지(51a)의 물리 페이지에는, 부가 정보(52), 부가 정보 ECC(52a), 유저 데이터(53), 유저 데이터 ECC(53a)가 기록된다. 부가 정보(52)는, 시퀀스 기입 관리 블록(50)인 것을 나타내는 블록 타입(54), 시퀀스 기입 관리 블록(50)의 세대 정보를 나타내는 리비전(55), 시퀀스 기입 관리 블록(50)에 기입된 데이터의 논리 블록 어드레스(56), 해당 부가 정보(52)가 저장된 물리 페이지에 대응하는 논리 페이지 어드레스(57)의 각 정보로 구성된다.In the physical page of the write completion page 51a, additional information 52, additional information ECC 52a, user data 53, and user data ECC 53a are recorded. The additional information 52 is written in the block type 54 indicating the sequence write management block 50, the revision 55 indicating the generation information of the sequence write management block 50, and the sequence write management block 50. The logical block address 56 of data and the additional information 52 are composed of respective information of the logical page address 57 corresponding to the physical page in which the data is stored.

이 경우도 논리 블록 어드레스(56)는 동일한 시퀀스 기입 관리 블록(50) 내에서 모두 동일한 값이 된다.Also in this case, the logical block addresses 56 are all the same value within the same sequence write management block 50.

또한 시퀀스 기입 관리 블록(50)에 있어서는, 도 4에 도시한 Block-Level 관리 블록(30)의 경우와 마찬가지로, 논리 페이지 어드레스(57)의 값은, 해당 논리 페이지 어드레스(57)의 데이터가 기입된 물리 페이지의 물리 페이지 어드레스와 일치한다(도면 중, 부가 정보(52)가 저장된 물리 페이지 어드레스의 값i와 해당 부가 정보(52) 내에 저장되어 있는 논리 페이지 어드레스(57)의 값i가 일치). 이것은, 후술하는 바와 같이 시퀀스 기입에서는, 호스트 장치(5)측으로부터 기입 지시된, 논리 어드레스적으로 연속되는 각 논리 페이지 데이터를, 시퀀스 기입 관리 블록(50)으로서 선택된 물리 블록에 대해서 물리 페이지 어드레스순으로 기록하기 때문이다.In the sequence write management block 50, as in the case of the Block-Level management block 30 shown in Fig. 4, the value of the logical page address 57 is written by the data of the logical page address 57. Matches the physical page address of the physical page (the value i of the physical page address in which the additional information 52 is stored and the value i of the logical page address 57 stored in the additional information 52 correspond to each other in the figure). . As described later, in sequence writing, each logical page data contiguously logically instructed from the host apparatus 5 side is written in physical page address order with respect to the physical block selected as the sequence write management block 50. Because it is written as.

또한, 시퀀스 기입 관리 블록(50)에 있어서도, 논리 섹터 어드레스에 대해서는, 물리 섹터 어드레스와 일치한다.Also in the sequence write management block 50, the logical sector address coincides with the physical sector address.

또한 이 경우도, 유저 데이터(53)의 사이즈는 물리 섹터의 사이즈와 일치하고, 1개의 물리 페이지에 기록 가능한 유저 데이터(53)의 수는 물리 페이지 내의 물리 섹터수와 일치하는 점은 도 4, 도 5의 경우와 마찬가지이다.Also in this case, the size of the user data 53 corresponds to the size of the physical sector, and the number of user data 53 recordable on one physical page corresponds to the number of physical sectors in the physical page. Same as the case of FIG. 5.

또한, 도시하는 바와 같이 미기입 페이지(51b)의 저장값은, 이 경우도 초기값(0xFFFF)이 된다.As shown in the figure, the stored value of the unwritten page 51b is also the initial value (0xFFFF) in this case.

도 7은, 관리 정보 블록(60)의 데이터 구조를 나타내고 있다.7 shows the data structure of the management information block 60.

이 관리 정보 블록(60)은, 이후의 도 8?도 12 등에 나타내는 각종 관리 정보를 저장하기 위한 물리 블록이다.This management information block 60 is a physical block for storing various management information shown in Figs.

도 7에 있어서, 관리 정보 블록(60)에는, 기입 완료 페이지(61a)와 미기입 페이지(61b)가 포함된다.In FIG. 7, the management information block 60 includes a write complete page 61a and an unwritten page 61b.

기입 완료 페이지(61a)의 물리 페이지에는, 부가 정보(62), 부가 정보 ECC(62a), 관리 정보(63), 관리 정보 ECC(63a)가 기록된다. 부가 정보(62)는, 관리 정보 블록(60)인 것을 나타내는 블록 타입(64), 관리 정보 블록(60)의 세대 정보를 나타내는 리비전(65)의 각 정보로 구성된다.In the physical page of the write completion page 61a, additional information 62, additional information ECC 62a, management information 63, and management information ECC 63a are recorded. The additional information 62 is composed of each type of information of the block type 64 indicating the management information block 60 and the revision 65 indicating the generation information of the management information block 60.

관리 정보(63)로서 기록되는 관리 정보에는, 도 8에 도시하는 Block-Level 관리 테이블(70), 도 9에 도시하는 Page-Level 관리 테이블(75), 도 10에 도시하는 Page-Level 맵(76), 도 11에 도시하는 시퀀스 기입 블록 관리 테이블(77), 및 도 12에 도시하는 무효 데이터 블록 관리 테이블(78)이 있다.The management information recorded as the management information 63 includes the block-level management table 70 shown in FIG. 8, the Page-Level management table 75 shown in FIG. 9, and the Page-Level map shown in FIG. 76, a sequence write block management table 77 shown in FIG. 11, and an invalid data block management table 78 shown in FIG.

도 8은, Block-Level 관리 테이블(70)의 데이터 구조를 나타내고 있다.8 shows the data structure of the Block-Level Management Table 70.

Block-Level 관리 테이블(70)은, Block-Level 관리를 가능하게 하기 위한 관리 정보로서, 도시하는 바와 같이 논리 블록 어드레스와 물리 블록 어드레스가 대응지어진 정보가 된다.The block-level management table 70 is management information for enabling block-level management, which is information associated with a logical block address and a physical block address as shown in the figure.

여기서, Block-Level 관리 테이블(70)에서 유지될 수 있는 논리 블록 어드레스의 수는, 호스트 장치(5)가 데이터의 기입/읽어내기가 가능한 논리 블록의 수와 일치한다(도면에서는 a개로 하고 있음).Here, the number of logical block addresses that can be maintained in the Block-Level Management Table 70 is equal to the number of logical blocks that the host device 5 can write / read data to (the figure is a). ).

도면 중, 물리 블록 할당 완료 논리 블록(71a)은, 그 논리 블록 내의 데이터를 어떤 물리 블록에 대해서 기록필로 된 논리 블록을 의미한다.In the figure, the physical block allocation completed logical block 71a means a logical block in which data in the logical block is recorded for a certain physical block.

이러한 논리 블록(71a)의 논리 블록 어드레스에 대해서는, 그 데이터의 기록이 행하여진(할당된) 물리 블록의 어드레스가 대응지어져 유지된다.With respect to the logical block address of this logical block 71a, the address of the physical block to which the data has been written (assigned) is maintained.

한편, Block-Level 관리 테이블(70)에 있어서, 물리 블록이 미할당인 논리 블록(71b)의 논리 블록 어드레스에 대해서는, 무효한 물리 블록 어드레스(0xFFFF)가 대응지어져 유지된다.On the other hand, in the Block-Level Management Table 70, an invalid physical block address (0xFFFF) is held in association with the logical block address of the logical block 71b to which the physical block is unassigned.

Block-Level 관리 테이블(70)에 있어서, 예를 들면 어떤 논리 블록 어드레스의 데이터에 대해서 블록 레벨 기입이 행하여진 경우에는, 그 논리 블록 어드레스에 대응지어져 있는 물리 블록 어드레스의 값(0xFFFF)이, 해당 데이터의 기입이 행하여진 물리 블록의 어드레스 값으로 갱신되게 된다.In the Block-Level Management Table 70, for example, when block level writing is performed on data of a certain logical block address, the value (0xFFFF) of the physical block address associated with the logical block address is corresponding. The data is updated with the address value of the physical block on which the data is written.

도 9는, Page-Level 관리 테이블(75)의 데이터 구조를 나타내고 있다.9 shows the data structure of the Page-Level Management Table 75. As shown in FIG.

Page-Level 관리 테이블(75)은, 도면과 같이 논리 블록 어드레스에 대해서 물리 블록 어드레스가 대응지어져 이루어진다.In the page-level management table 75, physical block addresses are associated with logical block addresses as shown in the figure.

Page-Level 관리 테이블(75)은, 논리 블록과, 그 논리 블록 내의 논리 페이지의 데이터의 기록이 행하여진 물리 블록(즉 도 5에 도시한 Page-Level 관리 블록(40))의 대응 관계를 관리하기 위한 관리 정보로서, Page-Level 관리에 의한 기록(페이지 레벨 기입)에서 이용되는 관리 정보가 된다.The page-level management table 75 manages a correspondence relationship between a logical block and a physical block (that is, the page-level management block 40 shown in Fig. 5) in which data of a logical page in the logical block is recorded. The management information for use is management information used in recording (page level writing) by page-level management.

Page-level 관리 테이블(75)에서는, 논리 블록 어드레스로서 미리 결정된 d개의 어드레스를 유지할 수 있고, 또한, 물리 블록 어드레스로서는 미리 결정된 f개의 어드레스를 유지할 수 있는 것으로 되어 있다. 이때, f≥d이다.In the page-level management table 75, d predetermined addresses can be held as logical block addresses, and f predetermined addresses can be held as physical block addresses. At this time, f≥d.

이와 같이 페이지 레벨 기입에서는, 페이지 레벨 기입에서 사용할 수 있는 논리?물리의 블록 수가 제한되어 있다. 페이지 레벨 기입에서 이용한 물리 블록 수가 상기 f개를 초과할 경우, 가비지 컬렉션을 발생시켜, 사용 가능한 물리 블록을 새롭게 확보하게 된다.As described above, in page level writing, the number of logical and physical blocks that can be used in page level writing is limited. When the number of physical blocks used in the page level writing exceeds the above f, garbage collection is generated to newly secure the available physical blocks.

도 9에 있어서, 도면 중에 X1로 나타내는, 물리 블록(Page-Level 관리 블록(40))이 할당된 논리 블록 어드레스에는, 그 물리 블록의 물리 블록 어드레스가 유지된다.In FIG. 9, the physical block address of the physical block is held in the logical block address to which the physical block (Page-Level Management Block 40), indicated by X1 in the figure, is assigned.

또한 X2로 나타내는, Page-Level 관리 블록이 미할당인 논리 블록 어드레스에는, 무효한 물리 블록 어드레스(0xFFFF)가 유지되어, Page-Level 관리 테이블(75)에 빈 부분이 있는 상태를 나타낸다.In addition, an invalid physical block address (0xFFFF) is held in the logical block address to which the Page-Level management block is unassigned, which is indicated by X2, to indicate a state in which the empty part is present in the Page-Level management table 75.

또한, Page-level 관리 테이블(75)에 있어서, 예를 들면 도면 중에서 논리 블록 어드레스 C0에 대해서 물리 블록 어드레스 x0.0과 물리 블록 어드레스 x0.1이 대응지어져 있도록, 1개의 논리 블록 어드레스에 대해서 복수의 물리 블록 어드레스가 대응지어지는 경우가 있다.In the page-level management table 75, for example, a plurality of logical block addresses are provided for one logical block address so that the physical block address x 0.0 and the physical block address x 0.1 are associated with the logical block address C 0 in the figure. Physical block addresses may be associated with each other.

즉, 상술한 바와 같이 페이지 레벨 기입에서는, 어떤 논리 블록 내의 데이터가 복수의 물리 블록으로 분산되어 기록되는 방식이 행하여지기 때문이다.That is, as described above, in the page level writing, a method in which data in a logical block is distributed and recorded in a plurality of physical blocks is performed.

도 10은, Page-Level 맵(76)의 데이터 구조를 나타내고 있다.10 shows the data structure of the Page-Level map 76.

Page-Level 맵(76)은, 어떤 논리 블록 내의 논리 페이지 데이터의 기록이 행하여진 물리 페이지의 어드레스(물리 블록 어드레스와 물리 페이지 어드레스의 세트로 특정됨)를 특정하기 위한 관리 정보로서, 도면과 같이, 논리 페이지 어드레스에 대해서, 물리 블록 어드레스와 물리 페이지 어드레스가 대응지어져 이루어진다.The Page-Level Map 76 is management information for specifying the address (specified by a set of physical block addresses and physical page addresses) of a physical page on which logical page data is recorded in a logical block, as shown in the figure. The physical block address and the physical page address are associated with the logical page address.

이 Page-Level 맵(76)은, Page-Level 관리 테이블(75)에 있어서 유효한 물리 블록 어드레스가 유지된 논리 블록의 수만큼 존재하게 된다.This Page-Level map 76 exists in the Page-Level management table 75 as many as the number of logical blocks in which valid physical block addresses are held.

또한 도 10은, 도 9에 도시한 논리 블록 어드레스 C1에 관한 Page-Level 맵(76)의 내용을 예시한 것이다.FIG. 10 exemplifies contents of the Page-Level map 76 related to the logical block address C 1 shown in FIG.

Page-Level 관리 테이블(75)에서 유지된 물리 블록 어드레스 내에 데이터가 존재하는 경우에는, 도면 중의 X3으로 나타내는 바와 같이, 논리 페이지 어드레스의 데이터가 기입된 물리 블록 어드레스와 물리 페이지 어드레스가 유지된다.When data exists in the physical block address held in the page-level management table 75, as shown by X3 in the figure, the physical block address and the physical page address to which data of the logical page address is written are held.

한편, Page-Level 관리 테이블(75)에서 유지된 물리 블록 어드레스 내에 데이터가 존재하지 않는 경우에는, X4로 나타내는 바와 같이, 논리 페이지 어드레스에 대응하는 물리 블록 어드레스와 물리 페이지 어드레스에는 무효한 값(0xFFFF)이 유지되게 된다.On the other hand, when no data exists in the physical block address held in the page-level management table 75, as indicated by X4, an invalid value (0xFFFF) is applied to the physical block address and the physical page address corresponding to the logical page address. ) Will be maintained.

도 11은, 시퀀스 기입 블록 관리 테이블(77)의 데이터 구조를 나타내고 있다. 11 shows the data structure of the sequence write block management table 77.

시퀀스 기입 블록 관리 테이블(77)은, 실시 형태로서의 시퀀스 기입을 실현하기 위해서 새롭게 추가되는 관리 정보가 된다.The sequence write block management table 77 becomes management information newly added in order to implement sequence write as an embodiment.

도면과 같이 시퀀스 기입 블록 관리 테이블(77)은, 논리 블록 어드레스에 대해서, 물리 블록 어드레스와 최종 기입 논리 페이지 어드레스가 대응지어진 정보가 된다.As shown in the figure, the sequence write block management table 77 is information in which the physical block address and the last write logical page address are associated with the logical block address.

시퀀스 기입 블록 관리 테이블(77)에서는, 논리 블록 어드레스로서 미리 결정된 e개의 어드레스를 유지할 수 있다. 바꾸어 말하면, 시퀀스 기입에서 사용 가능한 물리 블록(시퀀스 기입 관리 블록(50))의 수는, e개로 제한된다.In the sequence write block management table 77, predetermined e addresses can be held as logical block addresses. In other words, the number of physical blocks (sequence write management block 50) that can be used for sequence write is limited to e.

여기서, 시퀀스 기입에 대해서도, 사용하는 물리 블록의 수가 상한값에 도달해 있는 경우에는, 후술하는 시퀀스 기입 블록의 가비지 컬렉션을 발생시켜 사용 가능한 물리 블록을 새롭게 확보하게 된다.Here, when the number of physical blocks to be used also reaches the upper limit for sequence writing, garbage collection of the sequence writing block described later is generated to newly secure the available physical blocks.

도 11에 있어서, 예를 들면 X5로 나타내는 바와 같이 물리 블록(시퀀스 기입 관리 블록(50))이 할당된 논리 블록 어드레스에 대해서는, 그 할당된 물리 블록의 물리 블록 어드레스가 유지된다. 또한, 시퀀스 기입에 있어서, 해당 논리 블록 내의 도중의 논리 페이지까지의 기입이 행하여진 경우에는, 그 논리 블록의 데이터 중 마지막에 기입이 행하여진 페이지 데이터의 논리 어드레스의 값이, 최종 기입 논리 페이지 어드레스의 값으로서 대응지어진다.In Fig. 11, for example, as indicated by X5, for a logical block address to which a physical block (sequence write management block 50) is assigned, the physical block address of the allocated physical block is held. In the case of sequence writing, when writing to a logical page in the middle of the logical block is performed, the value of the logical address of the page data written last in the data of the logical block is the last write logical page address. Matches as

한편, 도면 중의 X6은, 물리 블록이 미할당으로 된 논리 블록 어드레스(시퀀스 기입에서 전체 데이터를 기입 완료로 된 논리 블록의 어드레스)와 이것에 대응지어지는 물리 블록 어드레스 및 최종 기입 논리 페이지 어드레스의 내용을 나타내고 있지만, 이 경우, 그들 논리 블록 어드레스, 물리 블록 어드레스, 최종 기입 논리 페이지 어드레스의 값은, 모두 무효한 데이터(0xFFFF)가 유지된다.On the other hand, X6 in the figure indicates a logical block address (the address of a logical block in which all data has been written in sequence writing) to which the physical block is unassigned, the physical block address and the final write logical page address corresponding thereto. In this case, the invalid data (0xFFFF) of all of these logical block addresses, physical block addresses, and last written logical page addresses are retained.

이와 같이, 시퀀스 기입에서 전체 데이터를 기입 완료로 된 논리 블록에 대해서는, 시퀀스 기입 블록 관리 테이블(77)에 의한 관리 하에서 제외되게 된다. 또한 동시에, 상기 무효한 데이터(0xFFFF)가 유지됨으로써, 시퀀스 기입 블록 관리 테이블(77) 상에 사용 가능한 블록이 존재하고 있는 것(즉 시퀀스 기입에서 사용 가능한 블록에 빈 부분이 존재하는 것)이 나타내지게 된다.In this way, the logical block in which the entire data has been written in the sequence write is excluded under the management by the sequence write block management table 77. At the same time, the invalid data (0xFFFF) is held, indicating that there is a block available on the sequence write block management table 77 (that is, a blank portion exists in the block available for sequence write). You lose.

도 12는, 무효 데이터 블록 관리 테이블(78)의 데이터 구조를 나타내고 있다. 12 shows the data structure of the invalid data block management table 78.

무효 데이터 블록 관리 테이블(78)은, Block-Level 관리 블록(30), Page-Level 관리 블록(40), 시퀀스 기입 관리 블록(50) 중 어느 하나의 물리 블록으로서 데이터 기입이 행하여진 물리 블록 중, 데이터 소거가 가능한 블록을 특정하기 위한 관리 정보가 된다.The invalid data block management table 78 is a physical block in which data is written as any one of the block-level management block 30, the page-level management block 40, and the sequence write management block 50. It becomes management information for specifying the block which can erase data.

이 무효 데이터 블록 관리 테이블(78)에는, 예를 들면 가비지 컬렉션의 발생 등에 수반하여 데이터 소거가 가능하게 된 물리 블록의 물리 블록 어드레스가 적절히 유지된다. 도면 중의 X7은, 소거 가능한 블록의 물리 블록 어드레스를 지시하고 있다. 한편, 소거 가능하다고 해서, 실제로 데이터 소거가 실행된 물리 블록에 대해서는, X8로 나타내는 바와 같이, 그 블록의 물리 페이지 어드레스가 무효한 값(0xFFFF)으로 갱신된다. 이에 의해, 이미 소거필의 블록(즉 새롭게 데이터 기입이 행하여지고 있을 가능성이 있는 블록)에 대한 오소거의 방지가 도모된다.In this invalid data block management table 78, for example, a physical block address of a physical block that can be erased with garbage collection or the like is appropriately held. X7 in the figure indicates the physical block address of the erasable block. On the other hand, when erasable, the physical block on which data is actually erased is updated to an invalid value (0xFFFF) as indicated by X8. This prevents the erasure of the erased block (that is, the block in which data writing may be newly performed).

[1-3 .제1 실시 형태로서의 메모리 제어 방법][1-3. Memory Control Method as First Embodiment]

도 13?도 25를 참조하여, 제1 실시 형태로서의 메모리 제어 방법에 대해서 설명한다. A memory control method as the first embodiment will be described with reference to FIGS. 13 to 25.

우선은 도 13에 의해, 호스트 장치(5)측으로부터 플래시 메모리 장치(1)측에 행하여지는 기입 지시의 일례를 나타내 둔다. 13 shows an example of a write instruction issued from the host device 5 side to the flash memory device 1 side.

이 도 13에서는, 도면 중의 시점 t1, t3, t5, t7의 합계 4회의 Write 커맨드가 발행된 경우를 예시하고 있다. 각 Write 커맨드에 이어서, 시점 t2, t4, t6, t8에서는 플래시 메모리 장치(1)에 기입해야 할 데이터가 송출된다.FIG. 13 exemplifies a case where four write commands are issued in total at the time points t1, t3, t5, and t7 in the figure. Following each Write command, data to be written to the flash memory device 1 is sent out at the time points t2, t4, t6, and t8.

이 경우, 각 Write 커맨드에서는, 기입 데이터 사이즈로서 각각 논리 블록 사이즈/4의 데이터 사이즈가 지시되고, 따라서 토탈 1개의 논리 블록 사이즈 분의 기입 지시가 이루어진 것으로 되어 있다. 각 Write 커맨드에서는, 논리 블록 사이즈/4의 기입 데이터 사이즈를 지시하고 있으므로, 각 Write 커맨드와 함께 지시되는 기입 개시의 논리 어드레스의 값은, 시점 t1에서는 0, 시점 t3에서는 논리 블록 사이즈/4, 시점 t5에서는 논리 블록 사이즈/2, 시점 t7에서는 논리 블록 사이즈*3/4이 된다.In this case, in each write command, the data size of the logical block size / 4 is indicated as the write data size, and therefore, the write instruction for the total one logical block size is made. Since each write command instructs the write data size of the logical block size / 4, the value of the logical address of the write start indicated with each write command is 0 at time t1, logical block size / 4 at time t3, and time point. At t5, the logical block size is 2, and at time t7, the logical block size is 3/4.

또한 확인을 위해 설명해 두면, 이 도 13은 어디까지나 기입 지시의 양태의 일례를 나타낸 것에 불과하며, 실제의 기입 지시로서는, 서로 다른 논리 블록의 데이터에 대해서 개별로 행하여지는 경우도 있지만, 1회의 Write 커맨드로 지시되는 기입 데이터 사이즈도 상기와는 상이한 경우도 있음은 물론이다.In addition, in order to confirm for confirmation, this FIG. 13 only shows an example of the aspect of a write instruction to the last, As an actual write instruction, although it may be performed individually with respect to the data of different logical blocks, it writes once It goes without saying that the write data size indicated by the command may also be different from the above.

예를 들면 이 도 13에 도시하는 바와 같은 양태에 의한 호스트 장치(5)측으로부터의 기입 지시, 구체적으로는, 어떤 1개의 논리 블록에 속하는 각 데이터에 대해서 논리 어드레스순으로 연속해서 기입 지시가 이루어지고, 또한 각 데이터의 사이즈가 소정 사이즈 이상인 기입 지시가 이루어진 경우, 본 실시 형태의 플래시 메모리 장치(1)에서는, 각 Write 커맨드에 대응하여, 시퀀스 기입으로서의 데이터 기입이 실행되게 된다.For example, the write instruction from the host apparatus 5 side according to this aspect as shown in FIG. 13, specifically, the write instruction is successively made in logical address order for each data belonging to one logical block. In addition, when a write instruction is issued in which the size of each data is equal to or larger than a predetermined size, in the flash memory device 1 of the present embodiment, data write as sequence write is executed in correspondence to each write command.

이하, 시퀀스 기입 처리를 포함하는 제1 실시 형태로서의 메모리 제어 방법에 대해서 설명한다.Hereinafter, the memory control method as the first embodiment including the sequence write process will be described.

우선은 도 14에, Write 커맨드 실행 처리의 플로우차트를 나타낸다.First, in FIG. 14, the flowchart of a write command execution process is shown.

또한, 이 도 14를 비롯해서 이후에 설명하는 도 15, 도 16, 도 21의 플로우차트에 도시하는 처리 동작은, 도 1에 도시한 메모리 컨트롤러(3)가 예를 들면 자신이 구비하는 전술한 ROM 등에 저장된 프로그램에 따라 실행하는 것이다.In addition, the processing operation shown in the flowchart of FIG. 15, FIG. 16, FIG. 21 described later as well as FIG. 14 includes the above-described ROM that the memory controller 3 shown in FIG. It is executed according to the program stored in the back.

도 14에 있어서, 메모리 컨트롤러(3)는, 스텝 S101에 있어서, 호스트 장치(5)측으로부터의 Write 커맨드를 대기하고 있다.In FIG. 14, the memory controller 3 waits for a write command from the host device 5 side in step S101.

그리고, 호스트 장치(5)측으로부터의 Write 커맨드가 있는 경우에는, 스텝 S102에 있어서, 논리 어드레스의 변환 처리를 행한다. 이 논리 어드레스의 변환 처리에서는, 호스트 장치(5)가 지시한 논리 어드레스, 데이터 사이즈로부터 기입을 실행하는 논리 블록 어드레스, 논리 페이지 어드레스, 논리 섹터 어드레스를 각각 계산한다.When there is a Write command from the host device 5 side, the logical address conversion processing is performed in step S102. In this logical address conversion processing, a logical block address for performing writing, a logical page address, and a logical sector address are calculated from the logical address and data size instructed by the host apparatus 5, respectively.

여기서, 플래시 메모리에 있어서, 기입 지시된 데이터 사이즈가 논리 블록 사이즈보다 큰 경우에는, 데이터의 기입 처리는, 기입을 개시하는 논리 블록 어드레스로부터 순서대로 최종 논리 블록 어드레스까지, 순서대로 논리 블록마다 개별로 행하여지게 된다.In the flash memory, in the case where the write instructed data size is larger than the logical block size, the data writing process is performed individually for each logical block in order from the logical block address at which writing is started to the last logical block address in order. Will be done.

상기 스텝 S102에 있어서 논리 어드레스의 변환 처리를 실행한 후에는, 스텝 S103에 있어서, 논리 블록내 기입 처리를 실행한다.After the logical address conversion process is performed in step S102, the logical block write process is executed in step S103.

이 논리 블록내 기입 처리에서는, 논리 블록마다의 기입 처리를 실행한다.In this logical block write processing, a write process for each logical block is executed.

이 스텝 S103의 논리 블록내 기입 처리로서 실행해야 할 구체적인 처리 내용에 대해서는, 도 15(및 도 16?도 21)에 의해 후술한다.Specific processing contents to be executed as the write processing in the logical block of step S103 will be described later with reference to FIGS. 15 (and 16 to 21).

스텝 S103의 논리 블록내 기입 처리의 실행 후에는, 스텝 S104에 있어서, 모든 논리 블록내 기입 처리가 종료하였는지 여부를 판별한다. 즉, 스텝 S102의 논리 어드레스의 변환 처리에서 기입 대상으로 한 모든 논리 블록 어드레스에서 기입 처리가 종료하였는지 여부를 판별한다.After execution of the write processing in the logical block in step S103, it is determined in step S104 whether all the write processing in the logical block has ended. In other words, it is determined whether or not the write process has ended at all logical block addresses targeted for writing in the logical address conversion process of step S102.

스텝 S104에 있어서, 모든 논리 블록 어드레스에서 기입 처리가 아직 종료하지 않고, 모든 논리 블록내 기입 처리가 종료하지는 않았다는 부정 결과가 얻어진 경우에는, 스텝 S103으로 되돌아간다. 즉, 기입 대상으로 된 모든 논리 블록 어드레스에서 기입 처리가 종료할 때까지, 스텝 S103의 기입 처리가 실행되는 것이다.In step S104, if a negative result is obtained that the write processing has not yet ended at all the logical block addresses and not all the write processing in the logical block has ended, the process returns to step S103. In other words, the write process of step S103 is executed until the write process ends at all the logical block addresses to be written.

한편 스텝 S104에 있어서, 모든 논리 블록 어드레스에서 기입 처리가 종료하고, 모든 논리 블록내 기입 처리가 종료했다는 긍정 결과가 얻어진 경우에는, 이 도면에 도시하는 Write 커맨드 실행 처리는 종료된다.On the other hand, in step S104, when a positive result indicating that the write processing has ended at all the logical block addresses and the write processing in all the logical blocks is completed, the Write command execution process shown in this figure is ended.

도 15는, 도 14에 도시한 논리 블록내 기입 처리(S103)로서 실행해야 할 구체적인 처리 내용을 도시한 플로우차트이다.FIG. 15 is a flowchart showing the specific processing contents to be executed as the in-block write processing S103 shown in FIG.

우선, 스텝 S201에서는, 기입 사이즈가 물리 블록 사이즈와 일치하는지 여부를 판별한다. 즉, 해당 스텝 S103으로서의 논리 어드레스내 기입 처리에서 기입 대상으로 되는 데이터의 사이즈가, 물리 블록 사이즈와 일치하는지 여부를 판별하는 것이다.First, in step S201, it is determined whether the write size matches the physical block size. In other words, it is determined whether or not the size of data to be written in the logical address write processing in Step S103 matches the physical block size.

또한, 해당 스텝 S201의 판별 처리는, 기입 사이즈가 물리 블록 사이즈 미만인지 여부를 판별하는 처리라고도 환언할 수 있다.In addition, it can also be said that the determination process of this step S201 is a process which determines whether a write size is less than a physical block size.

스텝 S201에 있어서, 기입 사이즈가 물리 블록 사이즈와 일치한다고 해서 긍정 결과가 얻어진 경우에는, 도 16에 도시하는 스텝 S301로 처리를 진행시킨다. 즉, 블록 레벨 기입을 위한 처리가 실행되는 것이다.In step S201, when an affirmative result is obtained because the write size matches the physical block size, the process proceeds to step S301 shown in FIG. In other words, processing for block level writing is executed.

여기서, 도 16에 의해, 블록 레벨 기입을 위한 처리에 대해서 설명한다.Here, the processing for block level writing will be described with reference to FIG.

도 16에 있어서, 스텝 S301에서는, 미기입 물리 블록의 취득 처리를 실행한다. 즉, 플래시 메모리(4)에 대해서 미기입 물리 블록으로서 관리되고 있는 물리 블록 어드레스 중에서 임의의 1개의 물리 블록 어드레스를 취득한다.In FIG. 16, in step S301, the acquisition process of an unwritten physical block is performed. That is, any one physical block address is acquired from the physical block addresses managed as unwritten physical blocks for the flash memory 4.

스텝 S301에 의한 미기입 물리 블록의 취득 처리의 실행 후에는, 스텝 S302에 있어서, Block-Level 관리 블록 기입 처리를 실행한다. 즉, 스텝 S301에서 취득한 어드레스의 물리 블록에 대해서, 호스트 장치(5)측으로부터 수신한 데이터를 기입하는 것이다.After execution of the acquisition processing of the unwritten physical block in step S301, the block-level management block writing process is executed in step S302. That is, the data received from the host apparatus 5 side is written to the physical block of the address acquired in step S301.

스텝 S302의 기입 처리의 실행 후에는, 스텝 S303에 있어서, 관리 정보의 갱신 처리를 실행한다. 즉,Block-Level 관리 테이블(70)에 있어서의, 해당 논리 블록내 기입 처리에서 대상으로 하고 있는 논리 블록 어드레스에 할당되어 있는 물리 블록 어드레스의 값으로서, 스텝 S301에서 취득한 물리 블록 어드레스의 값을 기입한다.After execution of the write process of step S302, the update process of management information is performed in step S303. That is, in the block-level management table 70, the value of the physical block address acquired in step S301 is written as the value of the physical block address assigned to the logical block address targeted by the write processing in the logical block. do.

스텝 S303의 관리 정보 갱신 처리의 실행 후, 스텝 S103의 논리 블록내 기입 처리는 종료된다.After execution of the management information update process in step S303, the write processing in the logical block of step S103 ends.

또한, 논리 블록내 기입 처리에서 실행하고 있는 블록 데이터의 기입이, 논리 레벨에서의 덮어쓰기에 수반하는 경우에는, 상기한 바와 같은 Block-Level 관리 테이블(70)에 관한 갱신 처리뿐만 아니라, Page-Level 관리 테이블(75), Page-Level 맵(76), 무효 데이터 블록 관리 테이블(78) 등의 다른 관리 정보의 갱신도 실행해야 하는 경우가 있다.In addition, in the case where the writing of block data executed in the logical block write processing is accompanied by overwriting at the logical level, not only the update processing relating to the Block-Level management table 70 described above, but also the page- It may be necessary to update other management information such as the level management table 75, the page-level map 76, the invalid data block management table 78, and the like.

예를 들면, 논리 블록내 기입 처리에서 대상으로 되어 있는 논리 블록의 데이터에 관해서, 덮어쓰기 전의 구 데이터가 Block-Level 관리 하의 물리 블록(물리 블록 b0으로 둠)에 기입되어 있던 상태이었던 경우에, 스텝 S302의 기입으로 해당 논리 블록의 데이터가 새롭게 기입된 경우에 있어서는, 상기 구 데이터가 기록되어 있던 물리 블록 b0에 대해서는 소거 가능한 것으로서 취급되도록 해야 한다. 따라서 이 경우에는, 해당 물리 블록 b0의 물리 블록 어드레스를 무효 데이터 블록 관리 테이블(78)에 추가하는 처리도 아울러 실행해야 할 것으로 된다.For example, when the old data before overwriting is written in a physical block (leave physical block b 0 ) under Block-Level management with respect to the data of the logical block targeted by the write processing within the logical block. When the data of the logical block is newly written by the writing in step S302, the physical block b 0 in which the old data is recorded should be treated as erasable. In this case, therefore, the process of adding the physical block address of the physical block b 0 to the invalid data block management table 78 must also be executed.

혹은, 상기 구 데이터의 일부 또는 전부는 과거에 페이지 레벨 기입에 의해 각각 상이한 물리 블록으로 분산해서 기입되어 있는 경우에는, 그들 데이터에 대해서는, 상기 스텝 S302의 기입(즉 논리 레벨에서의 덮어쓰기를 위한 물리 레벨 기입)의 실행으로써, 무효로 되어야 하게 된다. 따라서 이 경우에는, 그들 무효로 되어야 할 데이터에 대해서, Page-Level 관리 테이블(75), Page-Level 맵(76)에 대해서 무효한 값(0xFFFF)을 기입한다고 하는 갱신 처리를 실행해야 하게 된다.Alternatively, when a part or all of the old data is written to each other in a different physical block by page level writing in the past, for the data, writing in step S302 (that is, for overwriting at the logical level) is performed. Physical level write) must be invalidated. In this case, therefore, it is necessary to perform an update process of writing an invalid value (0xFFFF) to the Page-Level management table 75 and the Page-Level map 76 for the data to be invalidated.

설명을 도 15로 되돌린다. The description returns to FIG. 15.

이전의 스텝 S201에 있어서, 기입 사이즈가 물리 블록 사이즈와 일치하지 않는다고 해서 부정 결과가 얻어진 경우에는, 스텝 S202로 진행하여, 논리 블록이 시퀀스 기입 블록 관리 테이블(77)에 존재하는지 여부를 판별한다. 즉, 시퀀스 기입 블록 관리 테이블(77) 내에, 기입을 실행하고 있는 논리 블록(즉 해당 논리 블록내 기입 처리에서 대상으로 하고 있는 논리 블록)의 논리 블록 어드레스가 존재하는지 여부를 판별한다.If a negative result is obtained in the previous step S201 because the write size does not match the physical block size, the flow advances to step S202 to determine whether or not the logical block exists in the sequence write block management table 77. That is, it is determined whether or not there is a logical block address of the logical block that is writing (that is, the logical block targeted by the write processing in the logical block) in the sequence write block management table 77.

여기서, 기입을 실행하고 있는 논리 블록의 어드레스 값이 시퀀스 기입 블록 관리 테이블(77) 내에 존재하는 경우에는, 해당 논리 블록에 대해서는, 그 데이터가 시퀀스 기입 도중의 상태에 있게 된다.Here, when the address value of the logical block which is performing the writing exists in the sequence write block management table 77, the data will be in the state during sequence writing with respect to the said logical block.

한편, 기입을 실행하고 있는 논리 블록의 어드레스 값이 시퀀스 기입 블록 관리 테이블(77) 내에 존재하지 않는 경우에는, 해당 논리 블록에 대해서는, 적어도 시퀀스 기입 도중의 블록이 아닌 것으로 된다.On the other hand, when the address value of the logical block that is writing does not exist in the sequence write block management table 77, the logical block is not at least a block during sequence writing.

또한 이 점을 고려해서 알 수 있는 바와 같이, 상기 스텝 S202의 판별 처리는, 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가, 과거에 시퀀스 기입되어 있는지 여부를 판별하는 것이라고도 파악할 수 있다.In addition, as can be seen from this point of view, the determination processing of step S202 can also be understood as determining whether data in the logical block address to which the write-indicated data belongs has been sequenced in the past.

스텝 S202에 있어서, 논리 블록이 시퀀스 기입 블록 관리 테이블(77)에 존재하지 않는다고 해서 부정 결과가 얻어진 경우에는, 스텝 S203으로 처리를 진행시킨다. In step S202, when a negative result is obtained because no logical block exists in the sequence write block management table 77, the process advances to step S203.

스텝 S203 및 스텝 S204의 처리는, 신규로 시퀀스 기입 관리 블록(50)을 등록하고 거기에 해당 논리 블록내 기입 처리에서 기입 대상으로 되어 있는 데이터를 새롭게 기입해야 할 것인지 여부를 판별하기 위한 각 조건을 판정하는 처리가 된다.The processing of step S203 and step S204 newly registers the sequence write management block 50 and sets each condition for determining whether or not to newly write data to be written in the write processing in the logical block. The process of judgment is made.

스텝 S203에서는, 기입 사이즈가 (물리 블록 사이즈)/4 이상이며 논리 페이지 사이즈의 배수인지 여부를 판별한다.In step S203, it is determined whether the write size is (physical block size) / 4 or more and a multiple of the logical page size.

바꾸어 말하면, 기입 사이즈가 시퀀스 기입에 적합한 사이즈인지 여부를 판별하는 것이다.In other words, it is determined whether the write size is a size suitable for sequence writing.

여기서, 시퀀스 기입에 적합한 사이즈의 상한은, 예를 들면 설정되는 블록 사이즈 등에 의해 상이한 것이며, 반드시 「(물리 블록 사이즈)/4 이상」에 한정되어야 할 것은 아니다. 본 예의 경우, 블록 사이즈=32MB(메가 바이트)에 대응하여, 상기한 (물리 블록 사이즈)/4 이상으로 설정하고 있는 것으로 한다.Here, the upper limit of the size suitable for sequence writing is different depending on, for example, the block size to be set, and is not necessarily limited to "(physical block size) / 4 or more". In this example, the block size = 32 MB (megabytes) is set to (physical block size) / 4 or more.

스텝 S203에 있어서, 기입 사이즈가 (물리 블록 사이즈)/4 이상이며 또한 논리 페이지 사이즈의 배수라는 조건이 충족되지 않고 부정 결과가 얻어진 경우에는, 이후의 도 21에 도시하는 스텝 S401로 처리를 진행시킨다. 즉, 페이지 레벨 기입을 위한 처리로 이행하는 것이다.In step S203, when the write size is (physical block size) / 4 or more and the condition that the multiple of the logical page size is not satisfied and a negative result is obtained, the process proceeds to step S401 shown in FIG. 21 afterwards. . In other words, the process proceeds to processing for page level writing.

한편 스텝 S203에 있어서, 기입 사이즈가 (물리 블록 사이즈)/4 이상이며 또한 논리 페이지 사이즈의 배수라는 긍정 결과가 얻어진 경우에는, 스텝 S204로 진행하여, 기입 개시 논리 페이지 어드레스가 0, 또한 논리 섹터 어드레스가 0인지 여부를 판별한다. 즉, 데이터의 기입 개시 어드레스가, 해당 논리 블록내 기입 처리에서 대상으로 하고 있는 논리 블록의 선두 어드레스와 일치하고 있는지 여부를 판별하는 것이다.On the other hand, in step S203, if the result of the affirmation that the write size is (physical block size) / 4 or more and a multiple of the logical page size is obtained, the flow advances to step S204, where the write start logical page address is 0 and the logical sector address. Determines whether is zero. In other words, it is determined whether or not the data write start address coincides with the head address of the logical block targeted by the write processing in the logical block.

스텝 S204에 있어서, 기입 개시 논리 페이지 어드레스가 0 또한 논리 섹터 어드레스가 0이라는 조건이 충족되지 않고 부정 결과가 얻어진 경우에는, 도 21에 도시하는 페이지 레벨 기입을 위한 처리로 이행한다.In step S204, when the condition that the write start logical page address is 0 and the logical sector address is 0 is not satisfied and a negative result is obtained, the process proceeds to the process for page level writing shown in FIG.

한편 스텝 S204에 있어서, 기입 개시 논리 페이지 어드레스가 0 또한 논리 섹터 어드레스가 0이라고 해서 긍정 결과가 얻어진 경우에는, 스텝 S205로 진행한다.On the other hand, in step S204, when a positive result is obtained because the write start logical page address is 0 and the logical sector address is 0, the flow proceeds to step S205.

스텝 S205에서는, 시퀀스 기입 블록 관리 테이블(77)에 빈 부분이 있는지 여부를 판별한다. 즉, 시퀀스 기입 블록(50)으로서 사용 가능한 블록의 수가 상한에 도달해 있지 않은지 여부를 판별하는 것이다.In step S205, it is determined whether there is an empty part in the sequence write block management table 77. That is, it is determined whether the number of blocks usable as the sequence write block 50 has not reached the upper limit.

스텝 S205에 있어서, 시퀀스 기입 블록 관리 테이블(77)에 빈 부분이 있다고 해서 긍정 결과가 얻어진 경우에는, 스텝 S207로 진행하여, 시퀀스 기입 블록 관리 테이블(77)에 신규 등록을 행한다. 즉, 시퀀스 기입 블록 관리 테이블(77)에 새롭게 논리 블록 어드레스(해당 논리 어드레스내 기입 처리에서 대상으로 하고 있는 논리 블록의 어드레스)와 시퀀스 기입 블록(50)으로서 사용하는 블록의 물리 블록 어드레스를 추가하여, 새로운 시퀀스 기입 블록(50)을 등록한다.In step S205, if an affirmative result is obtained because there is an empty portion in the sequence write block management table 77, the flow advances to step S207 to newly register the sequence write block management table 77. That is, the logical block address (the address of the logical block targeted by the write processing within the logical address) and the physical block address of the block used as the sequence write block 50 are newly added to the sequence write block management table 77. The new sequence write block 50 is registered.

또한, 신규 등록의 경우, 시퀀스 기입 블록 관리 테이블(77)에 있어서의 최종 기입 논리 페이지 어드레스의 값으로서는, 예를 들면 초기값(0xFFFF)을 기입하는 것으로 한다.In the case of new registration, for example, an initial value (0xFFFF) is written as the value of the last write logical page address in the sequence write block management table 77.

한편 스텝 S205에 있어서, 시퀀스 기입 블록 관리 테이블(77)에 빈 부분이 없다고 해서 부정 결과가 얻어진 경우에는, 스텝 S206으로 진행하여, 시퀀스 기입 블록의 가비지 컬렉션을 실행한 후(즉 시퀀스 기입 관리 블록(50)으로서 사용 가능한 물리 블록을 확보한 후), 상기 스텝 S207의 신규 등록 처리를 실행한다.On the other hand, when a negative result is obtained because there is no empty portion in the sequence write block management table 77 in step S205, the flow advances to step S206 to execute garbage collection of the sequence write block (that is, the sequence write management block ( After securing a physical block usable as 50), the new registration process of step S207 is executed.

여기서, 스텝 S206의 「시퀀스 기입 블록의 가비지 컬렉션」의 처리로서는, 우선, 시퀀스 기입 블록 관리 테이블(77)에서 관리되는 논리 블록 중에서 1개의 논리 블록을 선택한다. 이하, 이렇게 선택한 논리 블록의 어드레스를 「ai」로 둔다.Here, as the processing of "garbage collection of the sequence write block" in step S206, one logical block is first selected from the logical blocks managed by the sequence write block management table 77. Hereinafter, the address of the logical block thus selected is set to "a i ".

이렇게 선택한 논리 블록 ai에 대해서 가비지 컬렉션을 행해서 해당 논리 블록 ai의 데이터를 Block-Level 관리로 승격시킴으로써, 시퀀스 기입 블록 관리 테이블(77)에 블록의 빈 부분을 확보하는 것이다.Garbage collection is performed on the selected logical block a i and the data of the logical block a i is promoted to Block-Level management, thereby ensuring an empty portion of the block in the sequence write block management table 77.

이때, 시퀀스 기입 블록의 가비지 컬렉션으로서는, 상기한 바와 같이 선택한 논리 블록 ai의 기 기록 데이터가, At this time, as the garbage collection of the sequence write block, the pre-recorded data of the logical block a i selected as described above is

1)다른 블록에도 분산되어 기록되어 있는 경우(즉 논리 블록 ai의 기 기록 데이터로서 시퀀스 기입 블록 관리 테이블(77)의 관리 하의 데이터뿐만 아니라 Page-Level 관리 하나 Block-Level 관리 하의 데이터가 존재하고 있는 경우) 1) When data is distributed and recorded in other blocks (that is, data under page-level management or block-level management as well as data under the management of the sequence write block management table 77 as pre-recorded data of the logical block a i ). If present)

2) 다른 블록에는 일체 존재하지 않고 있는 경우(논리 블록 ai의 기 기록 데이터가 시퀀스 기입 블록 관리 테이블(77)의 관리 하의 데이터뿐인 경우)2) When none exists in other blocks (when the recorded data of logical block a i is only data under management of the sequence write block management table 77)

에 서로 다른 처리를 실행하게 된다.Will execute different processes.

상기 1)의 경우에 대응해서 실행되는 시퀀스 기입 블록의 가비지 컬렉션의 구체적인 예에 대해서, 도 17?도 19를 참조하여 설명한다.A concrete example of garbage collection of the sequence writing block executed corresponding to the case 1) will be described with reference to FIGS. 17 to 19.

도 17은, 1)의 경우에 있어서의 시퀀스 기입 블록의 가비지 컬렉션에 의한 물리 레벨에서의 데이터의 이행의 모습의 예를 모식적으로 나타내고, 도 18은, 도 17에 도시하는 데이터 이행 전에 있어서의 시퀀스 기입 블록 관리 테이블(77), Block-Level 관리 테이블(70), Page-Level 관리 테이블(75), Page-Level 맵(76)의 내용을 예시하고 있다. FIG. 17 schematically shows an example of how data is transitioned at the physical level by garbage collection of the sequence write block in the case of 1), and FIG. 18 is before the data transition shown in FIG. 17. The contents of the sequence write block management table 77, the Block-Level management table 70, the Page-Level management table 75, and the Page-Level map 76 are illustrated.

또한 도 19는, 도 17에 도시하는 데이터 이행 후의 시퀀스 기입 블록 관리 테이블(77), Block-Level 관리 테이블(70), Page-Level 관리 테이블(75), Page-Level 맵(76)의 내용을 예시하고 있다.19 shows the contents of the sequence write block management table 77, the Block-Level management table 70, the Page-Level management table 75, and the Page-Level map 76 after the data transition shown in FIG. To illustrate.

상술한 바와 같이 시퀀스 기입 블록 관리 테이블(77)로부터 1개의 논리 블록 어드레스(ai)를 선택한 후에는, Block-Level 관리 테이블(70), Page-Level 관리 테이블(75), Page-Level 맵(76)을 참조하여, 도 17에 도시하는 바와 같이, 시퀀스 기입 블록 관리 테이블(77)에서 논리 블록 어드레스 ai에 할당된 물리 블록 어드레스(이 경우는 xi)의 미기입 물리 페이지(51a)에 대해서, 다른 물리 블록에 분산되어 있는 해당 논리 블록 어드레스 ai의 논리 페이지 데이터를 한데 모아서 추기한다.After selecting one logical block address a i from the sequence write block management table 77 as described above, the Block-Level management table 70, the Page-Level management table 75, and the Page-Level map ( 76, as shown in FIG. 17, for the unwritten physical page 51a of the physical block address (in this case, x i ) assigned to the logical block address a i in the sequence write block management table 77. The logical page data of the logical block address a i distributed in other physical blocks is collected and added together.

그리고, 이러한 가비지 컬렉션에 관계되는 물리 레벨에서의 데이터 이행 처리를 실행한 후에는, 도 19에 도시하는 바와 같이 각 관리 정보를 갱신한다.After the data transition processing at the physical level related to such garbage collection, each management information is updated as shown in FIG.

구체적으로, 시퀀스 기입 블록 관리 테이블(77)에 대해서는, 논리 블록 어드레스 ai가 할당되어 있던 논리 블록 어드레스의 값, 물리 블록 어드레스의 값, 및 최종 기입 논리 페이지 어드레스의 값을 모두 무효한 값(0xFFFF)으로 갱신한다.Specifically, for the sequence write block management table 77, the value of the logical block address to which the logical block address a i has been assigned, the value of the physical block address, and the value of the last write logical page address are invalid (0xFFFF). Update to).

또한, Block-Level 관리 테이블(70)에 대해서는, 논리 블록 어드레스 ai에 할당되어 있는 물리 블록 어드레스를 xi로 갱신한다.In addition, the Block-Level Management Table 70 updates the physical block address assigned to the logical block address a i to x i .

또한, Page-Level 관리 테이블(75)에 대해서는, 논리 블록 어드레스 ai가 할당되어 있던 논리 블록 어드레스의 값, 물리 블록 어드레스의 값을 모두 무효한 값(0xFFFF)으로 갱신한다.In the page-level management table 75, both the value of the logical block address to which the logical block address a i has been assigned and the value of the physical block address are updated to an invalid value (0xFFFF).

또한, 논리 블록 어드레스 ai에 사용되고 있던 Page-Level 맵(76)의 물리 블록 어드레스, 물리 페이지 어드레스의 값에 대해서도 모두 무효한 값(0xFFFF)으로 갱신한다.In addition, both the physical block address and the physical page address value of the Page-Level map 76 used for the logical block address a i are updated to an invalid value (0xFFFF).

이러한 가비지 컬렉션에 의해, 선택한 논리 블록 어드레스 ai에 할당되어 있던 어드레스 xi의 물리 블록에 대해서는 블록 레벨 관리 하에 새롭게 놓이는 것으로 되어, 시퀀스 기입 블록 관리 테이블(77)에는, 사용 가능한 물리 블록의 빈 부분을 1개 늘릴 수 있다.With such garbage collection, the physical blocks at address x i allocated to the selected logical block address a i are newly placed under block level management, and the free space of available physical blocks is included in the sequence write block management table 77. You can increase 1 by.

또한, 도 17 및 도 18에 도시한 예와 같이, 논리 블록 ai의 구 데이터가 어떤 물리 블록(도면의 예에서는 물리 블록 어드레스 b0)에 기입되어 있고 이것이 Block-Level 관리되고 있는 경우에는, 시퀀스 기입 블록의 가비지 컬렉션의 실행에 수반하여, 해당 물리 블록 어드레스 b0의 물리 블록은 소거 가능한 것으로서 취급되어야 할 것으로 된다. 이 때문에, 도 17, 도 18에 도시하는 예의 경우, 상기한 시퀀스 기입 블록의 가비지 컬렉션 시에는, 아울러, 해당 물리 블록 어드레스 b0을 무효 데이터 블록 관리 테이블(78)에 등록하는 처리도 실행하게 된다.17 and 18, in the case where the old data of the logical block a i is written in a certain physical block (physical block address b 0 in the example of the figure), and this is being Block-Level managed, With the execution of garbage collection of the sequence write block, the physical block of the corresponding physical block address b 0 should be treated as erasable. For this reason, the example shown in Fig. 17, Fig. 18, when the garbage collection of the above-described sequence write block, and also, is executed a processing for registering a corresponding physical block address b 0 to the invalid data block management table (78) .

한편, 상기 2)의 경우에 있어서의 시퀀스 기입 블록의 가비지 컬렉션으로서는, 우선, 시퀀스 기입 블록 관리 테이블(77)로부터 1개의 논리 블록 어드레스(ai)를 선택한다고 하는 점은 1)의 경우와 공통이 된다. On the other hand, as the garbage collection of the sequence write block in the case of 2) above, the fact that one logical block address a i is selected from the sequence write block management table 77 is common to that of 1). Becomes

상기 2)의 경우, 이렇게 논리 블록 어드레스 ai를 선택한 후에는, 시퀀스 기입 블록 관리 테이블(77)에 있어서 해당 논리 블록 어드레스 ai에 할당되어 있는 물리 블록(xi)의 미기입 물리 페이지(51b)에 대해서, 예를 들면 초기값 등의 더미 데이터를 기입하여 블록 전체를 기입 완료로 한다.In the case of 2), after the logical block address a i is selected in this way, the unwritten physical page 51b of the physical block x i allocated to the logical block address a i in the sequence write block management table 77 is selected. For example, dummy data such as an initial value is written, and the entire block is written.

게다가, 시퀀스 기입 블록 관리 테이블(77)에 있어서, 논리 블록 어드레스 ai가 할당되어 있던 논리 블록 어드레스의 값, 물리 블록 어드레스의 값, 최종 기입 논리 페이지 어드레스의 값을 모두 무효한 값(0xFFFF)으로 갱신하고, 또한 Block-Level 관리 테이블(70)에 있어서, 논리 블록 어드레스 ai와, 또한 이것에 대응지어서 물리 블록 어드레스 xi를 새롭게 기입함으로써, 해당 물리 블록 xi가 새롭게 블록 레벨 관리 하에 놓이도록 한다.In addition, in the sequence write block management table 77, all of the values of the logical block address to which the logical block address a i has been assigned, the value of the physical block address, and the value of the last write logical page address are set to invalid values (0xFFFF). And newly write the physical block address x i in correspondence with the logical block address a i in the Block-Level Management Table 70 so that the physical block x i is newly placed under block level management. do.

이에 의해, 상기 2)의 경우에 대응해서 시퀀스 기입 블록 관리 테이블(77)에 새로운 빈 블록을 생성할 수 있다.Thereby, a new empty block can be generated in the sequence write block management table 77 corresponding to the case of 2).

여기서, 상기 설명으로부터도 이해되는 바와 같이, 「시퀀스 기입 블록의 가비지 컬렉션」의 주된 뜻은, 시퀀스 기입 블록 관리 테이블(77)로부터 선택한 어떤 시퀀스 기입 관리 블록(50)을 Block-Level 관리 하에 새롭게 둠으로써, 시퀀스 기입 블록 관리 테이블(77)에 빈 부분을 확보하는 점에 있다.Here, as understood from the above description, the main meaning of "garbage collection of sequence write block" means that any sequence write management block 50 selected from the sequence write block management table 77 is newly set under Block-Level management. In other words, an empty part is ensured in the sequence write block management table 77.

설명을 도 15로 되돌린다.The description returns to FIG. 15.

도 15에 있어서, 스텝 S207에 의한 시퀀스 기입 블록(77)에의 신규 등록 처리를 실행한 후에는, 스텝 S208에 있어서, 시퀀스 기입 처리를 실행한다. 즉, 스텝 S207에서 신규 등록한 물리 블록에 대해서, 어드레스순으로 기입을 행하는 것이다.In FIG. 15, after executing the new registration process in the sequence write block 77 in step S207, the sequence write process is executed in step S208. In other words, the physical blocks newly registered in step S207 are written in address order.

도 20A에, 이 경우의 시퀀스 기입의 개념도를 도시한다.20A shows a conceptual diagram of sequence writing in this case.

이와 같이 본 예의 시퀀스 기입에서는, 등록한 물리 블록(도면에서는 어드레스 bj로 하고 있음)에, 호스트 장치(5)로부터 수신한 데이터를, 물리 페이지 어드레스 0,물리 섹터 어드레스 0으로부터 순서대로 기입한다. 이때, 기입의 단위는, 논리 페이지 사이즈이다.Thus, in sequence writing of this example, the data received from the host apparatus 5 is written in order from the physical page address 0 and the physical sector address 0 to the registered physical block (it is referred to as address b j in the figure). At this time, the unit of writing is the logical page size.

도 15에 있어서, 스텝 S208의 시퀀스 기입 처리의 실행 후에는, 스텝 S213에 있어서, 최종 기입 물리 페이지 어드레스를 시퀀스 기입 블록 관리 테이블(77)에 등록한다. 즉, 시퀀스 기입 블록 관리 테이블(77)에 등록된 논리 블록 어드레스 중, 스텝 S207에서 시퀀스 기입을 실행한 논리 블록 어드레스에 대응지어져 있는 최종 기입 논리 페이지 어드레스의 값으로서, 최종 기입을 실행한 논리 페이지 어드레스의 값을 기입하는 것이다.15, after execution of the sequence write process of step S208, the last write physical page address is registered in the sequence write block management table 77 in step S213. That is, among the logical block addresses registered in the sequence write block management table 77, the logical page address for which the last write was performed as the value of the last write logical page address associated with the logical block address for which the sequence write was performed in step S207. Enter the value of.

도 20B는, 스텝 S213에 의한 등록 처리 후의 시퀀스 기입 블록 관리 테이블(77)의 내용을 예시하고 있다.20B illustrates the contents of the sequence write block management table 77 after the registration process in step S213.

예를 들면, 논리 블록 어드레스 aj의 데이터에 대해서 물리 블록 어드레스 bj의 블록에 대해서 논리 페이지 어드레스 Pk까지의 시퀀스 기입이 실행되었다고 하면, 그 경우의 시퀀스 기입 블록 관리 테이블(77)에 있어서는, 도면과 같이, 논리 블록 어드레스 aj 및 물리 블록 어드레스 bj에 대응지어지는 최종 기입 논리 페이지 어드레스로서, 논리 페이지 어드레스 Pk가 기입된다.For example, assuming that the sequence write up to the logical page address P k is performed on the block of the physical block address b j for the data of the logical block address a j , in the sequence write block management table 77 in that case, As shown in the figure, the logical page address P k is written as the final write logical page address corresponding to the logical block address a j and the physical block address b j .

도 15에 있어서, 스텝 S213에 의한 등록 처리의 실행 후에는, 논리 블록내 기입 처리(S103)는 종료된다.In Fig. 15, after executing the registration processing in step S213, the logic block write processing (S103) ends.

계속해서, 이전의 스텝 S202의 판별 처리에 있어서, 논리 블록이 시퀀스 기입 블록 관리 테이블(77)에 존재한다고 해서 긍정 결과가 얻어진 경우, 즉, 시퀀스 기입 도중인 경우에 대응해서 실행되어야 할 처리에 대해서 설명한다.Subsequently, in the determination process of the previous step S202, when the positive result is obtained because the logical block exists in the sequence write block management table 77, that is, the process to be performed correspondingly when the sequence is being written. Explain.

도 15에 있어서, 스텝 S202의 판별 처리에서 긍정 결과가 얻어진 경우에는, 스텝 S209로 처리를 진행시킨다.In FIG. 15, when an affirmative result is obtained by the discrimination process of step S202, a process advances to step S209.

스텝 S209에서는, 기입 개시 논리 페이지 어드레스가 시퀀스 논리 페이지 어드레스에 연속인지 여부를 판별한다. 즉, 기입 개시 논리 페이지 어드레스가, 시퀀스 기입 블록 관리 테이블(77)에서 관리되고 있는, 해당 논리 블록내 기입 처리에서 대상으로 하고 있는 논리 블록 어드레스에 관한 최종 기입 논리 페이지 어드레스에 연속이며, 또한 기입 개시 논리 섹터 어드레스가 0인지 여부를 판별한다.In step S209, it is determined whether the write start logical page address is continuous with the sequence logical page address. In other words, the write start logical page address is continuous to the last write logical page address for the logical block address targeted by the write processing in the logical block managed by the sequence write block management table 77, and the write start is performed. It is determined whether the logical sector address is zero.

예를 들면, 도 20B에서 나타내는 시퀀스 기입 블록 관리 테이블(77)의 내용을 이용하여 설명하면, 이 경우, 기입을 실행하고 있는 논리 블록 어드레스 aj에 대해서, 기입 개시 논리 페이지 어드레스의 값이 (pk+1)이며 또한 논리 페이지내 오프셋이 0이면, 기입 개시 논리 페이지 어드레스가 시퀀스 논리 페이지 어드레스에 연속이라는 판별 결과가 얻어지는 것이다.For example, using the contents of the sequence write block management table 77 shown in Fig. 20B, in this case, the value of the write start logical page address is set to (p) for the logical block address a j which is performing the writing. k + 1) and the offset in the logical page is 0, a determination result is obtained that the write start logical page address is continuous with the sequence logical page address.

스텝 S209에 있어서, 기입 개시 논리 페이지 어드레스가 시퀀스 논리 페이지 어드레스에 연속이 아니라고 해서 부정 결과가 얻어진 경우에는, 스텝 S215로 진행하여 시퀀스 기입 종료?데이터 정합 처리를 실행한 후, 도 21에 도시하는 페이지 레벨 기입을 위한 처리(이것에 대해서는 후술함)로 이행한다.If a negative result is obtained in step S209 because the write start logical page address is not continuous to the sequence logical page address, the process proceeds to step S215 and executes the sequence write end data matching process, and then the page shown in FIG. 21. Processing for level writing (this will be described later).

여기서, 스텝 S215의 시퀀스 기입 종료?데이터 정합 처리는, 시퀀스 기입 블록 관리 테이블(77)에서 관리되고 있던, 해당 논리 블록내 기입 처리에서 대상으로 되어 있는 논리 블록으로서의 시퀀스 기입 도중의 블록에 대해서 가비지 컬렉션을 실행함으로써, 해당 논리 블록의 데이터를 Block-Level 관리로 승격시켜 시퀀스 기입을 종료시키는 처리가 된다. 즉, 도 21에 도시하는 페이지 레벨 기입에의 이행 전에, 데이터의 정합성을 확보하기 위한 처리라고 할 수 있다.Here, the sequence write end-data matching process of step S215 is garbage collected for the block during sequence write as a logical block targeted by the write process within the logical block managed by the sequence write block management table 77. Is executed to promote the data of the logical block to Block-Level management, thereby ending the sequence writing. In other words, it can be said to be processing for ensuring data integrity before the transition to the page level writing shown in FIG.

스텝 S215의 시퀀스 기입 종료?데이터 정합 처리의 구체적인 처리 내용으로서는, 해당 논리 블록내 기입 처리에서 대상으로 되어 있는 논리 블록(가령 「Ti」로 둠)의 기 기록 데이터가, As specific processing contents of the sequence write end-data matching process of step S215, the pre-recorded data of the logical block (for example, "T i ") targeted by the write processing in the logical block is

3) 다른 블록에도 분산해서 기록되어 있는 경우(즉 논리 블록 Ti의 기 기록 데이터로서 시퀀스 기입 블록 관리 테이블(77)의 관리 하의 데이터뿐만 아니라 Page-Level 관리 하나 Block-Level 관리 하의 데이터가 존재하고 있는 경우) 3) When the data is distributed and recorded in another block (that is, data under page-level management or block-level management as well as data under the management of the sequence write block management table 77 as the pre-recorded data of the logical block T i ). If present)

4) 다른 블록에는 일체 존재하지 않고 있는 경우(논리 블록 Ti의 기 기록 데이터가 시퀀스 기입 블록 관리 테이블(77)의 관리 하의 데이터뿐인 경우)4) When none exists in other blocks (when the recorded data of logical block T i is only data under management of the sequence write block management table 77)

에 서로 다른 처리를 실행하게 된다.Will execute different processes.

여기서, 상기 3)의 경우, 논리 블록 Ti를 논리 블록 ai로 치환하고, 이전의 도 17?도 19를 참조하여 설명한 1)의 경우에 대응한 처리와 마찬가지의 처리를 행하여, 논리 블록 Ti의 데이터를 Block-Level 관리로 승격시킨다.Here, in the case of 3) above, the logical block T i is replaced with the logical block a i , and the same process as that in the case of 1) described with reference to FIGS. 17 to 19 is performed to perform the logical block T i. Promote the data of i to Block-level management.

한편, 상기 4)의 경우에는, 마찬가지로 논리 블록 Ti를 논리 블록 ai로 치환하고, 이전의 2)의 경우와 마찬가지의 처리를 실행해서 논리 블록 Ti의 데이터를 Block-Level 관리로 승격시킨다.On the other hand, in the case of 4) above, the logical block T i is replaced with the logical block a i , and the same process as in the case of 2) is executed to promote the data of the logical block T i to Block-Level management. .

한편, 스텝 S209에 있어서, 기입 개시 논리 페이지 어드레스가 시퀀스 논리 페이지 어드레스에 연속이라는 긍정 결과가 얻어진 경우에는, 스텝 S210으로 진행하여, 기입 사이즈가 논리 페이지의 배수인지 여부의 판별을 행한다.On the other hand, in step S209, when an affirmative result is obtained that the write start logical page address continues to the sequence logical page address, the flow advances to step S210 to determine whether the write size is a multiple of the logical page.

여기서, NAND 플래시 메모리에 있어서, 데이터의 읽기쓰기의 단위는 페이지 사이즈 단위이기 때문에, 기입 사이즈가 페이지 사이즈의 배수가 아닌 경우(즉 페이지 미만의 사이즈 또는 페이지 사이즈 미만의 끝수가 나오는 사이즈인 경우), 그 데이터는 시퀀스 기입에 적합하지 않다.Here, in the NAND flash memory, since the unit of reading and writing of data is a unit of page size, when the write size is not a multiple of the page size (that is, the size is less than the page or the size is less than the page size), The data is not suitable for sequence writing.

이 때문에, 스텝 S210에 있어서, 기입 사이즈가 논리 페이지의 배수가 아니라고 해서 부정 결과가 얻어진 경우에는, 상술한 스텝 S215로 진행하여 시퀀스 기입 종료?데이터 정합 처리를 실행한 후, 도 21에 도시하는 페이지 레벨 기입을 위한 처리로 이행한다.For this reason, when a negative result is obtained in step S210 because the write size is not a multiple of the logical page, the process proceeds to step S215 described above and executes the sequence write end data matching process, and then the page shown in Fig. 21. The process shifts to level writing.

한편 스텝 S210에 있어서, 기입 사이즈가 논리 페이지의 배수라고 해서 긍정 결과가 얻어진 경우에는, 스텝 S211로 진행하여, 시퀀스 기입 중인 물리 블록에 데이터 추기를 행한다. 즉, 시퀀스 기입 블록 관리 테이블(77)로부터 기입이 실행되고 있는 논리 블록에 할당되어 있는 물리 블록 어드레스와 최종 기입 논리 페이지 어드레스의 값을 취득하고, 취득한 어드레스의 물리 블록에 있어서의 미기입 물리 페이지 중 선두의 페이지로부터 순서대로 데이터의 기입을 행한다.On the other hand, in step S210, if a positive result is obtained because the write size is a multiple of the logical page, the flow advances to step S211 to perform data addition to the physical block under sequence writing. That is, from the sequence write block management table 77, the values of the physical block address and the last write logical page address allocated to the logical block on which writing is being executed are acquired, and the head of the unwritten physical pages in the physical block of the obtained address is obtained. Data is written in order from the page.

예를 들면 도 20B의 시퀀스 기입 블록 관리 테이블(77)의 내용을 이용하여 설명하면, 이 경우, 기입 개시 논리 페이지 어드레스는 pk+1이며, 해당 논리 페이지 어드레스 pk+1에 대응하는 물리 페이지로부터 순서대로, 지정되어 있던 사이즈의 데이터의 기입을 행한다.For example, using the contents of the sequence write block management table 77 of FIG. 20B, in this case, the write start logical page address is p k +1, and the physical page corresponding to the logical page address p k +1. The data of the specified size is written in order from.

스텝 S211에 의한 데이터 추기 처리의 실행 후에는, 스텝 S212에 있어서, 최종 물리 페이지에 기입을 실행하였는지 여부의 판별을 행한다. 즉, 기입이 실행되고 있는 논리 블록에 할당된 시퀀스 기입 블록(50) 내의 모든 물리 페이지에 데이터가 기입되었는지 여부의 판별이 행하여지는 것에 상당한다.After execution of the data addition process in step S211, it is determined in step S212 whether or not writing has been performed on the last physical page. In other words, it is equivalent to whether or not data is written to all physical pages in the sequence write block 50 assigned to the logical block on which writing is being executed.

스텝 S212에 있어서, 최종 물리 페이지에의 기입이 아니라고 해서 부정 결과가 얻어진 경우에는, 앞서 설명한 스텝 S213으로 처리를 진행시켜, 최종 기입 물리 페이지 어드레스를 시퀀스 기입 블록 관리 테이블(77)에 등록한다.If a negative result is obtained in step S212 because it is not written to the last physical page, the process proceeds to step S213 described above, and the final write physical page address is registered in the sequence write block management table 77.

한편 스텝 S212에 있어서, 최종 물리 페이지에의 기입이었다고 해서 긍정 결과가 얻어진 경우에는, 스텝 S214로 진행하여, 블록 등록 처리를 실행한다. 즉, 전체 페이지의 기입이 완료한 블록을, 시퀀스 기입 관리 하로부터 블록 레벨 관리 하에 새롭게 두기 위한 처리이다.On the other hand, in a case where affirmative result is obtained in the case of writing to the last physical page in step S212, the flow advances to step S214 to execute the block registration process. In other words, this is a process for rewriting a block in which writing of all pages is completed, under sequence write management and under block level management.

구체적으로, 전체 페이지의 기입이 완료한 논리 블록(즉 해당 논리 블록내 기입 처리에서 대상으로 하고 있는 논리 블록)의 어드레스를 ai, 시퀀스 기입 블록 관리 테이블(77)에서 해당 논리 블록 ai에 할당되어 있는 물리 블록의 어드레스를 xi로 두면, 스텝 S214의 등록 처리에서는, 시퀀스 기입 블록 관리 테이블(77)에 있어서의 논리 블록 어드레스 ai가 할당되어 있던 논리 블록 어드레스의 값, 물리 블록 어드레스의 값, 및 최종 기입 논리 페이지 어드레스의 값을 모두 무효한 값(0xFFFF)으로 갱신함과 함께, Block-Level 관리 테이블(70)에 있어서, 논리 블록 어드레스 ai와, 또한 이것에 대응지어 물리 블록 어드레스 xi를 새롭게 기입하는 처리를 실행하게 된다.Specifically, assigned to the logical block a i an address of a logical block write is completed, the entire page (that is the logical block logic block that is targeted in the writing process) in a i, a sequence write block management table (77) If the address of the physical block to be set is x i , in the registration processing of step S214, the value of the logical block address to which the logical block address a i in the sequence write block management table 77 is assigned, and the value of the physical block address , And all the values of the last write logical page address are updated to invalid values (0xFFFF), and in the Block-Level Management Table 70, the logical block address a i and the physical block address x are also associated with this. The process of writing a new i is executed.

여기서, 해당 스텝 S214의 블록 등록 처리는, Here, the block registration processing of the step S214 is

5) 해당 논리 블록내 기입 처리에서 대상으로 하고 있는 논리 블록에 대해서, 그 도중까지의 데이터가 기입되어 있던 상태로부터, 금회 신규로 그 계속 부분을 추기한 경우에는, 상기에 의해 설명한 등록 처리만을 실행하면 된다.5) Only the registration processing described above is executed when the continuation portion is newly added to the logical block targeted by the write processing in the logical block, and the new portion is additionally written this time. Just do it.

단, 6) 금회의 추기로서의 물리 기입이, 논리 레벨에서의 덮어쓰기에 수반하는 것이었던 경우에는, 상기한 등록 처리와 더불어, 논리 덮어쓰기의 대상으로 된 구 데이터가 소거된 것으로서 취급되도록 하기 위한 처리도 실행하게 된다.6) In the case where the physical write as the current additional writing is accompanied by overwriting at a logic level, the above-described registration processing is performed so that old data targeted for logical overwriting is treated as erased. Processing will also be executed.

구체적으로, 해당 논리 블록내 기입 처리에서 대상으로 하고 있는 논리 블록의 어드레스를 ai, 시퀀스 기입 블록 관리 테이블(77)에서 해당 논리 블록 ai에 할당되어 있는 물리 블록의 어드레스를 xi로 두면, Page-Level 관리 테이블(75)에 있어서 논리 블록 어드레스 ai가 할당되어 있던 논리 블록 어드레스의 값, 물리 블록 어드레스의 값을 모두 무효한 값(0xFFFF)으로 갱신함과 함께, 논리 블록 어드레스 ai에 사용되고 있던 Page-Level 맵(76)의 물리 블록 어드레스, 물리 페이지 어드레스의 값을 모두 무효한 값(0xFFFF)으로 갱신한다고 하는 처리도 아울러 행한다.If you leave Specifically, the address of the logical block physical block is assigned to the logical block a i a logical block address that is the target in the writing process in a i, a sequence write block management table 77 as x i, In the page-level management table 75, both the logical block address a i assigned to the logical block address a i and the physical block address value are updated to an invalid value (0xFFFF) and the logical block address a i is updated to the logical block address a i . The process of updating both the physical block address and the physical page address value of the used Page-Level map 76 to an invalid value (0xFFFF) is also performed.

스텝 S214의 등록 처리의 실행 후에는, 논리 블록내 기입 처리(S103)는 종료된다.After execution of the registration process of step S214, the logic block in-write process S103 is complete | finished.

계속해서, 도 21에 의해, 페이지 레벨 기입을 위한 처리에 대해서 설명한다.21, the processing for page level writing will be described.

도 21에 있어서, 우선 스텝 S401에서는, Page-Level 관리 테이블(75)에 논리 블록이 존재하는지 여부를 판별한다. 즉, Page-Level 관리 테이블(75)에 해당 논리 블록내 기입 처리에서 대상으로 하고 있는 논리 블록 어드레스가 존재하는지 여부를 판별하는 것이다.In Fig. 21, first in step S401, it is determined whether or not a logical block exists in the Page-Level management table 75. In other words, it is determined whether or not the logical block address targeted for the write processing in the logical block exists in the page-level management table 75.

스텝 S401에 있어서, 논리 블록이 Page-Level 관리 테이블(75)에 존재한다고 해서 긍정 결과가 얻어진 경우에는, 도시하는 바와 같이 스텝 S406으로 진행하여, Page-Level 관리 블록(40)에의 기입을 실행한다. 즉, Page-Level 관리 테이블(75)에 있어서 해당 논리 블록내 기입 처리에서 대상으로 하고 있는 논리 블록 어드레스에 할당되어 있는 Page-Level 관리 블록(40)에 대해서, 호스트 장치(5)측으로부터 수신한 데이터 중 기입 가능한 사이즈의 데이터를 기입하는 것이다.In step S401, if a positive result is obtained because the logical block exists in the Page-Level management table 75, the process proceeds to Step S406 as shown in the drawing, and writes to the Page-Level management block 40 is executed. . That is, the page-level management block 40 assigned to the logical block address targeted for the write processing in the logical block in the page-level management table 75 is received from the host apparatus 5 side. The data of the writeable size is written out of the data.

한편 스텝 S401에 있어서, 논리 블록이 Page-Level 관리 테이블(75)에 존재하지 않는다는 부정 결과가 얻어진 경우에는, 스텝 S402로 진행하여, Page-Level 관리 테이블(75)에 빈 부분이 있는지 여부를 판별한다. 구체적으로는, Page-Level 관리 테이블(75)에 등록되어 있는 논리 블록의 수가, 전술한 d개에 도달해 있지 않은지 여부를 판별한다.On the other hand, when a negative result is obtained in step S401 that the logical block does not exist in the page-level management table 75, the flow advances to step S402 to determine whether there is an empty portion in the page-level management table 75. do. Specifically, it is determined whether or not the number of logical blocks registered in the Page-Level Management Table 75 has reached the aforementioned d.

스텝 S402에 있어서, Page-Level 관리 테이블(75)에 빈 부분이 있다고 해서 긍정 결과가 얻어진 경우에는, 스텝 S403으로 진행하여, Page-Level 관리 테이블(75)에서 관리하는 물리 블록이 f개보다 적은지 여부를 판별한다. 즉, Page-Level 관리 테이블(75)에서 현재 관리되고 있는 Page-Level 관리 블록(40)로서의 물리 블록의 수가, 그 상한값=f에 도달해 있지 않은지 여부를 판별하는 것이다.In step S402, if a positive result is obtained because there is an empty portion in the page-level management table 75, the flow advances to step S403 to determine whether there are fewer than f physical blocks managed by the page-level management table 75. Determine whether or not. That is, it is determined whether the number of physical blocks as the Page-Level management block 40 currently managed in the Page-Level management table 75 has not reached its upper limit value = f.

이 스텝 S403에 있어서, Page-Level 관리 테이블(75)에서 관리하는 물리 블록이 f개보다 적지 않다(상한값 f에 도달해 있다)는 부정 결과가 얻어진 경우 및 상기 스텝 S402에 있어서 Page-Level 관리 테이블(75)에 빈 부분이 없다는 부정 결과가 얻어진 경우에는, 모두 스텝 S404로 진행하여, Page-Level 관리 블록의 가비지 컬렉션을 실행한다.In this step S403, when a negative result is obtained that the number of physical blocks managed by the Page-Level management table 75 is not less than f (the upper limit f has been reached), and the Page-Level management table in the step S402. If a negative result of no empty portion is obtained at 75, all proceed to step S404 to perform garbage collection of the Page-Level management block.

그리고 그 후, 스텝 S405에 있어서, Page-Level 관리 테이블(75)에 신규 등록을 행한다. 즉, 해당 논리 블록내 기입 처리에서 대상으로 하고 있는 논리 블록 어드레스를 Page-Level 관리 테이블(75)에 새롭게 등록하여, 해당 논리 블록 어드레스에 할당하는 Page-Level 관리 블록(40)(물리 블록)을 새롭게 확보하는 것이다.Then, in step S405, a new registration is made in the Page-Level management table 75. That is, the page-level management block 40 (physical block) which newly registers the logical block address targeted by the write processing in the logical block in the page-level management table 75 and assigns it to the logical block address is It is to secure a new one.

또한, 상기 스텝 S403에 있어서, Page-Level 관리 테이블(75)에서 관리 가능한 물리 블록이 f개보다 적다(상한값 f에 도달해 있지 않다)는 긍정 결과가 얻어진 경우에는, 스텝 S404의 가비지 컬렉션은 패스하고, 상기 스텝 S405의 신규 등록 처리를 실행하게 된다.In addition, in the above-mentioned step S403, when a positive result is obtained that there are fewer physical blocks that can be managed in the Page-Level management table 75 (the upper limit value f has not been reached), the garbage collection of step S404 passes. Then, the new registration process of step S405 is executed.

여기서, 스텝 S404의 「Page-Level 관리 블록의 가비지 컬렉션」에서의 처리의 개요를 도 22?도 24를 참조하여 설명한다. 도 22는, Page-Level 관리 블록의 가비지 컬렉션에 의한 물리 레벨에서의 데이터의 이행의 모습의 예를 모식적으로 나타내고, 도 23은, 도 22에 도시하는 데이터 이행 전에 있어서의 Block-Level 관리 테이블(70), Page-Level 관리 테이블(75), Page-Level 맵(76)의 내용을 예시하고 있다. Here, the outline of the process in "garbage collection of the page-level management block" of step S404 is demonstrated with reference to FIGS. 22-24. FIG. 22 schematically shows an example of how data is transitioned at the physical level by garbage collection of the Page-Level management block, and FIG. 23 is a Block-Level management table before data transition shown in FIG. 22. (70), the contents of the Page-Level management table 75 and the Page-Level map 76 are illustrated.

또한 도 24는, 도 22에 도시하는 데이터 이행 후의 Block-Level 관리 테이블(70), Page-Level 관리 테이블(75), Page-Level 맵(76)의 내용을 예시하고 있다.24 exemplifies contents of the block-level management table 70, the page-level management table 75, and the page-level map 76 after the data transition shown in FIG.

우선, Page-Level 관리 블록의 가비지 컬렉션에서는, Page-Level 관리 테이블(75)에서 관리되는 논리 블록 어드레스 중에서 1개의 논리 블록 어드레스를 선택함과 함께, 미기입 물리 블록 중 1개의 물리 블록 어드레스를 취득한다. 이 경우의 예에서는, 논리 블록 어드레스로서는, 도 23에 있어서의 논리 블록 어드레스 ai가 선택된 것으로 한다. 또한, 선택한 미기입 물리 블록의 물리 블록 어드레스는 xi로 둔다.First, in the garbage collection of the page-level management block, one logical block address is selected from the logical block addresses managed in the page-level management table 75, and one physical block address among the unwritten physical blocks is obtained. . In this example, it is assumed that the logical block address a i in FIG. 23 is selected as the logical block address. In addition, the physical block address of the selected unwritten physical block is set to x i .

이렇게 논리 블록 어드레스 ai 및 미기입 물리 블록 어드레스 xi를 선택한 후에는, Block-Level 관리 테이블(70), Page-Level 관리 테이블(75)、 Page-Level 맵(76)을 참조하여, 도 22에 도시하는 바와 같이, 물리 블록 어드레스 xi의 미기입 물리 페이지에 대해서, 다른 물리 블록에 분산되어 있는 논리 블록 어드레스 ai의 논리 페이지 데이터를 한데 모아서 기입한다.After the logical block address a i and the unwritten physical block address x i are selected in this way, referring to the Block-Level management table 70, the Page-Level management table 75, and the Page-Level map 76, FIG. As shown in the figure, logical page data of logical block address a i distributed in other physical blocks is collectively written to unwritten physical pages of physical block address x i .

이러한 물리 레벨에서의 데이터 이행 처리를 실행한 후에는, 도 24에 도시하는 바와 같은 각 관리 정보의 갱신을 행한다. After the data transition processing at the physical level is executed, each management information as shown in FIG. 24 is updated.

구체적으로, Block-Level 관리 테이블(70)에 대해서는, 논리 블록 어드레스 ai에 할당되어 있는 물리 블록 어드레스를 xi로 갱신한다. 즉 이에 의해, 논리 블록 ai에 대해서는, 새롭게 블록 레벨 관리 하에 놓이는 것으로 된다. Specifically, as for the Block-Level management table 70, and updates a physical block address assigned to the logical block address to a i x i. In other words, the logical block a i is newly placed under block level management.

게다가, Page-Level 관리 테이블(75)에 대해서는, 논리 블록 어드레스 ai가 할당되어 있던 논리 블록 어드레스의 값, 물리 블록 어드레스의 값을 모두 무효한 값(0xFFFF)으로 갱신한다. 또한, 논리 블록 어드레스 ai에 사용되고 있던 Page-Level 맵(76)의 물리 블록 어드레스, 물리 페이지 어드레스의 값에 대해서도 모두 무효한 값(0xFFFF)으로 갱신한다. 이들의 처리에 의해, 논리 블록 ai가 분산되어 있던 구 페이지 데이터가 무효화됨과 함께, Page-Level 관리 테이블(75) 상에 새로운 빈 블록이 확보되게 된다.In addition, for the page-level management table 75, both the value of the logical block address to which the logical block address a i has been assigned and the value of the physical block address are updated to an invalid value (0xFFFF). In addition, both the physical block address and the physical page address value of the Page-Level map 76 used for the logical block address a i are updated to an invalid value (0xFFFF). By these processes, the old page data in which the logical blocks a i have been dispersed is invalidated, and a new empty block is secured on the Page-Level management table 75.

또한, 도 22 및 도 23에 도시되는 예와 같이, 논리 블록 ai의 구 데이터가 어떤 물리 블록(도면의 예에서는 물리 블록 어드레스 b0)에 기입되어 있고 이것이 Block-Level 관리되고 있는 경우에는, Page-Level 관리 블록의 가비지 컬렉션의 실행에 수반하여, 해당 물리 블록 어드레스 b0의 물리 블록은 소거 가능한 것으로서 취급되어야 할 것으로 된다. 이 때문에, 도 22, 도 23에 도시하는 예의 경우, 상기한 Page-Level 관리 블록의 가비지 컬렉션 시에는, 아울러, 해당 물리 블록 어드레스 b0을 무효 데이터 블록 관리 테이블(78)에 등록하는 처리도 실행하게 된다.22 and 23, when the old data of the logical block a i is written to a certain physical block (physical block address b 0 in the example in the figure), and this is managed at block-level, With the execution of garbage collection of the Page-Level management block, the physical block at the corresponding physical block address b 0 should be treated as erasable. For this reason, the example shown in FIG. 22, FIG. 23, when the garbage collection of the above-Page-Level management block, as well as, also run the process for registering the physical block address b 0 to the invalid data block management table (78) Done.

설명을 도 21로 되돌린다.The description returns to FIG. 21.

스텝 S404에 의한 가비지 컬렉션의 실행 후에는, 전술한 스텝 S405의 Page-Level 관리 테이블(75)에의 신규 등록 처리를 실행하게 된다. 확인을 위해 설명해 두면, 해당 스텝 S405의 등록 처리는, 미기입의 물리 블록 중 1개의 물리 블록 어드레스를 취득하고, 해당 취득한 물리 페이지 어드레스의 값을, 해당 논리 블록내 기입 처리에서 대상으로 하고 있는 논리 블록 어드레스의 값과 대응지어 Page-Level 관리 테이블(75)에 새롭게 기입하는 처리가 된다.After the garbage collection in step S404, new registration processing to the page-level management table 75 in step S405 described above is executed. In order to confirm for confirmation, the registration processing of the step S405 acquires the physical block address of one of the unwritten physical blocks, and the logical block which targets the value of the acquired physical page address in the write processing in the logical block. Corresponding to the value of the address, a process of newly writing the page-level management table 75 is performed.

스텝 S404의 등록 처리의 실행 후에는, 전술한 스텝 S406으로 진행하여, Page-Level 관리 블록(40)에의 기입을 실행한다. After execution of the registration process in step S404, the flow advances to step S406 described above to write to the Page-Level management block 40.

그리고, 스텝 S406의 기입의 실행 후에는, 스텝 S407에 있어서, Page-Level 맵(76)의 갱신을 행한다. 즉, 호스트 장치(5)측으로부터 수신해서 기입을 행한 데이터에 대응하는 Page-Level 맵(76)의 값을 갱신하는 것이다.After the writing in step S406 is executed, the page-level map 76 is updated in step S407. In other words, the value of the Page-Level map 76 corresponding to the data received from the host apparatus 5 and written is updated.

도 25에, Page-Level 관리 블록(40)에의 기입(S406)으로서 행하여지는 데이터 기입의 예와, Page-Level 맵(76)의 갱신(S407) 실행 후의 Page-Level 맵(76)의 예를 나타낸다.25 shows an example of data writing performed as writing to the Page-Level management block 40 (S406), and an example of the Page-Level map 76 after the updating of the Page-Level map 76 (S407). Indicates.

예를 들면 스텝 S406의 Page-Level 관리 블록(40)에의 기입에서는, 도면과 같이 물리 블록 어드레스 xj의 물리 페이지 어드레스 pi와 pi+1에 대해서 논리 페이지 어드레스 yi와 yi+1의 데이터를 각각 기입한 것으로 한다.For example, in writing to the Page-Level management block 40 in step S406, as shown in the figure, the logical page addresses y i and y i +1 for the physical page addresses p i and p i +1 of the physical block address x j are shown. It is assumed that data is written respectively.

이때의 Page-Level 맵(76)은, 도면과 같이 논리 페이지 어드레스 yi, yi+1에 대응하는 논리 블록 어드레스의 값과 물리 페이지 어드레스의 값이 갱신된다.In the page-level map 76 at this time, the values of the logical block addresses and the physical page addresses corresponding to the logical page addresses y i and y i +1 are updated as shown in the figure.

도 21로 되돌아가서, 스텝 S407의 맵 갱신 처리의 실행 후에는, 스텝 S408에 있어서, 모든 데이터 기입이 종료하였는지 여부를 판별한다. 즉, 해당 논리 블록내 기입 처리에서 대상으로 하고 있는 논리 블록 어드레스 내에서, 호스트 장치(5)측으로부터 지정된 사이즈의 데이터를 모두 기입하였는지 여부를 판별하는 것이다.Returning to FIG. 21, after execution of the map update process of step S407, it is determined in step S408 whether all data writing was complete | finished. That is, it is determined whether or not all data of a specified size has been written from the host apparatus 5 side within the logical block address targeted by the write processing in the logical block.

스텝 S408에 있어서, 모든 데이터의 기입이 아직 종료하지 않았다는 부정 결과가 얻어진 경우에는, 이전의 스텝 S403으로 되돌아가서, 재차, Page-Level 관리 테이블(75)에서 관리하는 물리 블록이 f개보다 적은지 여부를 판별한다.If a negative result is obtained in step S408 that all data has not been written yet, the process returns to the previous step S403, and again, is there fewer than f physical blocks managed by the Page-Level management table 75? Determine.

한편 스텝 S408에 있어서, 모든 데이터의 기입이 종료했다고 해서 긍정 결과가 얻어진 경우에는, 논리 블록내 기입 처리(S103)는 종료된다.On the other hand, in step S408, when affirmative result is obtained because writing of all data is complete | finished, in-block writing process S103 is complete | finished.

이상에서 설명한 바와 같이, 본 실시 형태에서는, Block-Level 관리에 의한 기록을 행할 수 없는 블록 사이즈 미만의 데이터에 대해서, 시퀀스 기입을 가능하게 하고 있다.As described above, in the present embodiment, sequence writing is enabled for data smaller than the block size in which recording by Block-Level management cannot be performed.

Block-Level 관리와 Page-Level 관리의 2종의 관리에서 데이터 기입을 행하게 되어 있는 종래의 플래시 메모리 장치에서는, 기입해야 할 데이터가 블록 사이즈와 일치하는 경우에는 블록 레벨 관리에 의한 기록을 행하고, 블록 사이즈 미만의 데이터에 대해서는 페이지 레벨 관리에 의한 기입을 행하게 되어 있다. 이 때문에, 예를 들면 블록 사이즈 미만의 데이터에 대해서, 그들이 논리 어드레스적으로 연속하고 있는 개개의 데이터라고 해도, 그들 데이터에 대해서는 반드시 페이지 레벨 관리에 의한 기입이 행하여지고 있었다. In a conventional flash memory device in which data writing is performed in two types of management, block-level management and page-level management, when the data to be written matches the block size, writing is performed by block level management. For data smaller than the size, writing by page level management is performed. For this reason, for example, for data smaller than the block size, even though they are individual data that are logically contiguous, the data is always written by page level management.

이에 반해서, 본 실시 형태에 따르면, 블록 사이즈 미만의 데이터에 대해서 시퀀스 기입을 행할 수 있다. 즉, 예를 들면 상기한 바와 같은 케이스에 있어서, 페이지 레벨 관리 하에서의 기입과 같이 개개의 데이터가 서로 다른 물리 블록에 분산해서 기록되게 되는 것을 효과적으로 방지할 수 있다.In contrast, according to the present embodiment, sequence writing can be performed on data smaller than the block size. That is, in the case described above, for example, it is possible to effectively prevent individual data from being distributed and recorded in different physical blocks such as writing under page level management.

즉, 시퀀스 기입을 가능하게 한 본 실시 형태에 따르면, 블록 사이즈 미만의 데이터에 대해서 페이지 레벨 관리에 의한 기입만 선택지에 있는 종래와 비교하여, 가비지 컬렉션의 발생 빈도를 효과적으로 줄일 수 있게 된다. 이 결과, 종래보다도 기록 속도의 면에서 퍼포먼스 향상이 도모된다.That is, according to this embodiment which enables sequence writing, the frequency of garbage collection can be effectively reduced as compared with the conventional case where only writing by page level management is selected for data smaller than the block size. As a result, the performance can be improved in terms of the recording speed compared with the prior art.

또한, 전술도 한 바와 같이 종래에서는, 호스트 장치(5)측에서 블록 사이즈보다도 작은 사이즈의 버퍼 메모리만 구비되어 있는 경우에는, 호스트 장치(5)측은 블록 사이즈 미만의 데이터만 송출할 수 있다(이 경우, 예를 들면 도 13과 같은 송출 형태로 됨). 따라서 이 경우도, 데이터가 논리 어드레스적으로 연속하고 있다고 해도, 종래의 플래시 메모리 장치에서는 페이지 레벨 관리에 의한 기입이 선택되어 버리게 된다. As described above, in the past, when only the buffer memory having a size smaller than the block size is provided on the host device 5 side, the host device 5 side can transmit only data smaller than the block size. Case, for example, as shown in FIG. 13). Therefore, even in this case, writing by page level management is selected in the conventional flash memory device even if the data are logically contiguous.

이에 반해서, 시퀀스 기입을 가능하게 한 본 실시 형태에 따르면, 호스트 장치(5)측으로부터 블록 사이즈 미만의 데이터만 송출할 수 있는 경우에도, 그들 데이터를 시퀀스 기입할 수 있고, 결과, 페이지 레벨 관리에 의한 기록이 행하여지는 경우와는 달리, 가비지 컬렉션의 발생 빈도를 저하시킬 수 있어, 고속 기록을 실현할 수 있다. 즉, 데이터 전송용의 버퍼 메모리 사이즈가 작은 호스트 장치(5)로부터의 기입이 행하여지는 경우에도, 고속인 데이터 기록을 실현할 수 있다.On the other hand, according to this embodiment which enables sequence writing, even when only data smaller than the block size can be sent from the host apparatus 5 side, these data can be sequenced and, as a result, page level management is performed. Unlike the case where the recording is performed, the frequency of garbage collection can be reduced, and high speed recording can be realized. In other words, even when writing from the host device 5 having a small buffer memory size for data transfer is performed, high-speed data writing can be realized.

<2. 제2 실시 형태> <2. Second Embodiment>

계속해서, 본 기술에 따른 제2 실시 형태에 대해서 설명한다. Subsequently, a second embodiment according to the present technology will be described.

상술한 바와 같이 제2 실시 형태는, 호스트 장치(5)가 커맨드로 플래시 메모리 장치(1)측에 기입 방법의 절환을 명시적으로 통지하는 것으로서, 플래시 메모리 장치(1)는, 해당 통지에 따라, 데이터 기입 방법을 변경하는 것이다. As described above, in the second embodiment, the host device 5 explicitly notifies the flash memory device 1 of the switching method with a command, and the flash memory device 1 responds to the notification. To change the data writing method.

또한, 제2 실시 형태에서는, 상기한 바와 같이 호스트 장치(5)가 시퀀스 기입의 지시를 행하는 것 외에, 플래시 메모리 장치(1)에서 실행되는 메모리 제어 방법에 따른 처리의 내용이 제1 실시 형태의 경우와 상이한 것으로 된다.In addition, in the second embodiment, the host device 5 instructs the sequence write as described above, and the contents of the processing according to the memory control method executed in the flash memory device 1 are the contents of the first embodiment. It is different from the case.

제2 실시 형태에서는, 주로 도 1에 도시한 메모리 컨트롤러(3)에 의해 실행되어야 할 프로그램이 제1 실시 형태에서의 프로그램으로부터 변경된 것이며, 플래시 메모리 장치(1)의 내부 구성 자체는 도 1에 도시한 것과 마찬가지로 된다.In the second embodiment, the program to be executed mainly by the memory controller 3 shown in FIG. 1 is changed from the program in the first embodiment, and the internal configuration itself of the flash memory device 1 is shown in FIG. It is the same as it did.

도 26은, 제2 실시 형태의 경우에서의 호스트 장치(5)가, 플래시 메모리 장치(1)에 시퀀스 기입을 실행시키는 경우에 있어서 행하는 기입 지시의 예를 나타내고 있다.FIG. 26 shows an example of a write instruction that the host device 5 performs in the case where the flash memory device 1 performs sequence writing in the case of the second embodiment.

이 경우의 호스트 장치(5)는, 플래시 메모리 장치(1)에 시퀀스 기입을 실행시킨다고 했을 때에, 도면 중 시점 t1로 나타내는 바와 같이 시퀀스 기입 개시 커맨드를 플래시 메모리 장치(1)측에 대해서 송출한다. 이 시퀀스 기입 개시 커맨드에 있어서는, 도면과 같이 시퀀스 기입의 대상으로 하는 데이터의 기입 개시 어드레스로서의 논리 어드레스와, 시퀀스 기입을 실행시키고 싶은 데이터의 사이즈(총 사이즈)를 아울러 지시한다. 이 경우, 기입 개시의 논리 어드레스는 도면과 같이 「0」이다.In this case, when the host device 5 executes the sequence write to the flash memory device 1, the host device 5 sends a sequence write start command to the flash memory device 1 side as indicated by the time point t1 in the figure. In this sequence write start command, a logical address as a write start address of data to be subjected to sequence write and a size (total size) of data to be executed in sequence are instructed as shown in the figure. In this case, the logical address of the write start is "0" as shown in the figure.

여기서, 이 도 26에 있어서도, 이전의 도 13의 경우와 마찬가지로, 각 Write 커맨드에서는 기입 데이터 사이즈로서 각각 논리 블록 사이즈/4의 데이터 사이즈가 지시되고, 토탈 1개의 논리 블록 사이즈 분의 기입 지시가 이루어지는 경우를 예시하고 있다.Also in FIG. 26, as in the case of the previous FIG. 13, in each write command, the data size of logical block size / 4 is indicated as the write data size, and a write instruction for a total of one logical block size is made. The case is illustrated.

이 때문에, 이 경우에 있어서의 시점 t1의 시퀀스 기입 개시 커맨드로 지시되는 데이터 사이즈는, 도면과 같이 「논리 블록 사이즈」로 되어 있다.For this reason, the data size indicated by the sequence write start command at the time point t1 in this case is "logical block size" as shown in the figure.

시점 t1에서의 시퀀스 기입 개시 커맨드의 송출 후에는, 도 13의 경우와 마찬가지로, 호스트 장치(5)는, 논리 어드레스와 기입 사이즈를 지시한 Write 커맨드와 기입 데이터의 송출을 플래시 메모리 장치(1)에 대해서 순차적으로 행한다. 이 경우의 예에서는, 시점 t9에서의 데이터 송출이, 플래시 메모리 장치(1)측에 시퀀스 기입시켜야 할 데이터의 최종 송출이 된다.After sending out the sequence write start command at time point t1, the host device 5 sends the write command and the write data instructing the logical address and the write size to the flash memory device 1 as in the case of FIG. Are performed sequentially. In this example, the data transmission at the time point t9 is the final transmission of data to be sequenced to the flash memory device 1 side.

최종 기입 데이터의 송출 후, 이 경우의 호스트 장치(5)는, 시퀀스 기입 종료 커맨드를 송출한다(시점 t10). 이 시퀀스 기입 종료 커맨드로서도, 이전의 시퀀스 기입 개시 커맨드와 마찬가지로, 논리 어드레스와 기입 데이터의 사이즈(총 사이즈)를 아울러 지정한 것으로 된다.After sending out the last write data, the host apparatus 5 in this case sends out a sequence write end command (time t10). As the sequence write end command, similarly to the previous sequence write start command, the logical address and the size (total size) of the write data are specified together.

여기서, 이 경우의 호스트 장치(5)는, 시퀀스 기입을 실행시키고 싶은 경우에만, 그 취지를 나타내는 기입 개시 커맨드를 송출하는 것으로서, 다른 블록 레벨 기입, 페이지 레벨 기입에 대해서는, 특별히 그 취지를 나타내는 기입 개시 커맨드의 송출은 행하지 않고, 통상과 같이 논리 어드레스와 기입 데이터 사이즈를 지정하는 Write 커맨드의 송출을 행하는 것으로 한다.Here, in this case, the host device 5 sends a write start command indicating the effect only when the sequence write is to be executed, and for other block level writes and page level writes, the write indicates the effect in particular. The start command is not sent, but a Write command that specifies a logical address and a write data size is sent as usual.

계속해서, 이 경우의 플래시 메모리 장치(1)측이 실행하는 처리의 개요에 대해서 설명한다.Subsequently, an outline of the processing executed by the flash memory device 1 side in this case will be described.

제2 실시 형태의 플래시 메모리 장치(1)에서는, 호스트 장치(5)측으로부터의 시퀀스 기입 개시 커맨드에 대응하는 처리로서, 도 27에 도시하는 처리가 실행되게 된다. In the flash memory device 1 of the second embodiment, the process shown in FIG. 27 is executed as a process corresponding to the sequence write start command from the host device 5 side.

또한, 호스트 장치(5)측으로부터의 시퀀스 기입 종료 커맨드에 대응하는 처리로서, 도 28에 도시하는 처리가 실행된다. In addition, as a process corresponding to the sequence write end command from the host apparatus 5 side, the process shown in FIG. 28 is executed.

또한 제2 실시 형태의 플래시 메모리 장치(1)에 있어서도, Write 커맨드에 대응하는 처리로서, 이전의 도 14에 도시한 처리를 실행하게 된다. 단, 제2 실시 형태의 경우, 스텝 S103의 논리 블록내 기입 처리로서, 도 29에 도시하는 처리가 실행되는 점은 제1 실시 형태의 경우와 상이하다.Also in the flash memory device 1 of the second embodiment, the process shown in Fig. 14 is executed as the process corresponding to the Write command. However, in the case of the second embodiment, the point in which the process shown in FIG. 29 is executed as the write processing in the logic block of step S103 is different from that in the first embodiment.

도 27, 도 28, 및 도 14에 도시하는 처리는, 각각 병행 처리로서 메모리 컨트롤러(3)에 의해 실행된다.Processing shown in Figs. 27, 28, and 14 is executed by the memory controller 3 as parallel processing, respectively.

예를 들면, 호스트 장치(5)측으로부터 시퀀스 기입 개시 커맨드가 수신된 경우에는, 도 27의 스텝 S501에서 긍정 결과가 얻어지고, 호스트 장치(5)측으로부터의 시퀀스 기입 개시 커맨드로 지정된 논리 블록 어드레스에 대해서 이미 시퀀스 기입 관리 블록(50)이 할당 완료였던 경우를 제외하고, 새로운 시퀀스 기입 관리 블록(50)을 확보하기 위한 처리가 실행된다.For example, when a sequence write start command is received from the host device 5 side, an affirmative result is obtained in step S501 of FIG. 27, and the logical block address specified by the sequence write start command from the host device 5 side. The process for securing a new sequence write management block 50 is executed except that the sequence write management block 50 has already been allocated.

그리고, 상기 시퀀스 기입 개시 커맨드의 수신 후에, 호스트 장치(5)측으로부터 Write 커맨드가 수신된 경우에는, 도 14에 도시한 논리 블록내 기입 처리(S103)를 수반하는 일련의 처리가 실행되게 된다. 상술한 바와 같이 제2 실시 형태의 경우, 논리 블록내 기입 처리(S103)는, 도 29에 도시하는 처리가 실행되는 것이다.After the reception of the sequence write start command, when a write command is received from the host apparatus 5 side, a series of processes involving the logic block write processing S103 shown in FIG. 14 is executed. As described above, in the second embodiment, the logic block write processing (S103) is executed by the processing shown in FIG.

또한, 호스트 장치(5)측으로부터 시퀀스 기입 종료 커맨드가 수신된 경우에는, 도 28의 스텝 S601에서 긍정 결과가 얻어지고, 시퀀스 기입에 의해 대상 블록 내의 최종 물리 페이지까지 기입이 행하여졌는지 여부에 따른 처리가 실행된다.When the sequence write end command is received from the host device 5 side, a positive result is obtained in step S601 of FIG. 28, and the process according to whether or not the write to the last physical page in the target block has been performed by the sequence write. Is executed.

또한, 호스트 장치(5)측으로부터 시퀀스 기입 개시 커맨드를 수반하지 않고 Write 커맨드가 발행된 경우에는, 도 28에 도시하는 처리에 의해, 블록 레벨 기입을 행해야 할지, 혹은 페이지 레벨 기입을 행해야 할지가 판단되게 된다.In addition, when a Write command is issued without a sequence write start command from the host apparatus 5 side, it is determined by the processing shown in Fig. 28 whether block level write or page level write should be performed. Will be.

이하, 제2 실시 형태의 플래시 메모리 장치(1)가 실행하는 도 27?도 29의 처리에 대해서 구체적으로 설명한다. Hereinafter, the process of FIGS. 27-29 which the flash memory device 1 of 2nd Embodiment performs is demonstrated concretely.

우선, 도 27에 도시하는, 시퀀스 기입 개시 커맨드에 대응하는 처리에 대해서 설명한다.First, the processing corresponding to the sequence write start command shown in FIG. 27 will be described.

도 27에 있어서, 스텝 S501에서는, 호스트 장치(5)측으로부터의 시퀀스 기입 개시 커맨드가 수신될 때까지 대기한다.In FIG. 27, in step S501, it waits until the sequence write start command from the host apparatus 5 side is received.

그리고, 시퀀스 기입 개시 커맨드가 수신된 경우에는, 스텝 S502로 처리를 진행시킨다.When the sequence write start command is received, the process proceeds to step S502.

스텝 S502에서는, 논리 블록이 시퀀스 기입 블록 관리 테이블(77)에 존재하는지 여부를 판별한다. 이 처리의 내용은, 이전의 도 15에서 설명한 스텝 S202의 처리 내용과 마찬가지로 된다.In step S502, it is determined whether or not a logical block exists in the sequence write block management table 77. The content of this process is the same as the content of the process of step S202 previously described with reference to FIG. 15.

스텝 S502에 있어서, 논리 블록이 시퀀스 기입 블록 관리 테이블(77)에 존재한다고 해서 긍정 결과가 얻어진 경우에는, 이 도면에 도시하는 처리는 종료된다.In step S502, when an affirmative result is obtained because a logical block exists in the sequence write block management table 77, the process shown by this figure is complete | finished.

한편 스텝 S502에 있어서, 논리 블록이 시퀀스 기입 블록 관리 테이블(77)에 존재하지 않는다고 해서 부정 결과가 얻어진 경우에는, 스텝 S503에 있어서, 시퀀스 기입 블록 관리 테이블(77)에 빈 부분이 있는지 여부를 판별한다.On the other hand, when a negative result is obtained because the logical block does not exist in the sequence write block management table 77 in step S502, it is determined in step S503 whether there is an empty portion in the sequence write block management table 77. do.

스텝 S503에 있어서, 시퀀스 기입 블록 관리 테이블(77)에 빈 부분이 있다고 해서 긍정 결과가 얻어진 경우에는, 스텝 S505로 진행하여 시퀀스 기입 블록 관리 테이블(77)에 신규 등록을 행한다. 즉, 스텝 S501에서 수신한 시퀀스 기입 개시 커맨드가 지정하고 있는 논리 블록 어드레스를 시퀀스 기입 블록 관리 테이블(77)에 등록하여, 해당 논리 블록 어드레스에 시퀀스 기입 블록(50)이 할당되도록 하는 것이다.In step S503, when an affirmative result is obtained because there is an empty part in the sequence write block management table 77, it progresses to step S505 and newly registers in the sequence write block management table 77. FIG. That is, the logical block address designated by the sequence write start command received in step S501 is registered in the sequence write block management table 77 so that the sequence write block 50 is assigned to the logical block address.

한편 스텝 S503에 있어서, 시퀀스 기입 블록 관리 테이블(77)에 빈 부분이 없다고 해서 부정 결과가 얻어진 경우에는, 스텝 S504로 진행하여, 시퀀스 기입 블록의 가비지 컬렉션을 실행한다. 또한, 해당 스텝 S504의 가비지 컬렉션 처리의 내용은, 앞서 설명한 스텝 S206의 가비지 컬렉션 처리의 경우와 마찬가지로 되므로 재차의 설명은 생략한다.On the other hand, when a negative result is obtained because there is no empty part in the sequence write block management table 77 in step S503, the flow advances to step S504 to perform garbage collection of the sequence write block. In addition, since the content of the garbage collection process of the said step S504 becomes the same as the case of the garbage collection process of the above-mentioned step S206, it abbreviate | omits description again.

스텝 S504의 가비지 컬렉션의 실행 후에는, 스텝 S505에 의한 신규 등록 처리를 실행한다.After the garbage collection of step S504 is executed, the new registration process of step S505 is executed.

이 스텝 S505의 신규 등록 처리의 실행 후에는, 이 도면에 도시하는 시퀀스 기입 개시 커맨드 대응 처리는 종료된다.After the execution of the new registration process in step S505, the sequence write start command correspondence process shown in this figure ends.

도 28에 의해, 시퀀스 기입 종료 커맨드에 대응하는 처리에 대해서 설명한다. 28, the processing corresponding to the sequence write end command will be described.

도 28에 있어서, 스텝 S601에서는, 호스트 장치(5)측으로부터의 시퀀스 기입 종료 커맨드가 수신될 때까지 대기한다. In FIG. 28, in step S601, it waits until the sequence write end command from the host apparatus 5 side is received.

시퀀스 기입 종료 커맨드가 수신된 경우에는, 스텝 S602로 처리를 진행시킨다.When the sequence write end command is received, the process proceeds to step S602.

스텝 S602에서는, 최종 물리 페이지에 기입을 실행하였는지 여부를 판별한다. 즉, 이전의 스텝 S212의 처리와 마찬가지로, 기입이 실행되고 있는 논리 블록에 할당된 시퀀스 기입 블록(50) 내의 모든 물리 페이지에 데이터가 기입되었는지 여부가 판별되는 것이다.In step S602, it is determined whether or not writing has been performed on the last physical page. In other words, similarly to the process of step S212, it is determined whether or not data has been written to all physical pages in the sequence write block 50 assigned to the logical block on which writing is being performed.

스텝 S602에 있어서, 최종 물리 페이지에 기입을 실행했다고 해서 긍정 결과가 얻어진 경우에는, 스텝 S603으로 진행하여, 블록 등록 처리를 실행한다. 즉 이에 의해, 최종 물리 페이지까지 기입이 행하여진 시퀀스 기입 블록(50)은, Block-Level 관리 하에 새롭게 놓이게 된다.In step S602, if an affirmative result is obtained by writing to the last physical page, the flow advances to step S603 to execute block registration processing. In other words, the sequence write block 50 in which writing to the last physical page has been performed is newly placed under Block-Level management.

또한, 스텝 S603의 블록 등록 처리는, 이전의 스텝 S214의 블록 등록 처리와 마찬가지이며, 따라서 논리 레벨에서의 덮어쓰기가 발생하고 있는 경우에는 덮어쓰기의 대상으로 된 구 데이터가 소거된 것으로서 취급되도록 하기 위한 처리도 실행되게 된다.In addition, the block registration process of step S603 is the same as that of the previous block registration process of step S214, so that when overwriting occurs at a logical level, the old data targeted for overwriting is treated as erased. The processing for this is also executed.

한편 스텝 S602에 있어서, 최종 물리 페이지에 기입을 실행하고 있지는 않다는 부정 결과가 얻어진 경우에는, 스텝 S604로 진행하여, 시퀀스 기입 블록의 가비지 컬렉션을 실행한다. 또한, 이 스텝 S604의 가비지 컬렉션 처리로서도, 이전의 스텝 S206의 가비지 컬렉션 처리와 마찬가지의 처리가 된다.On the other hand, in step S602, when a negative result indicating that writing to the last physical page is not performed, the flow advances to step S604 to execute garbage collection of the sequence write block. In addition, the garbage collection process of step S604 also becomes the same process as the garbage collection process of previous step S206.

또한, 최종 물리 페이지에의 기입이 행하여진 경우에 대응해서 실행하는 스텝 S604의 처리로서는, 상기한 바와 같은 시퀀스 기입 블록의 가비지 컬렉션 처리가 아니라, 앞서 설명한 스텝 S213과 마찬가지의 「최종 기입 물리 페이지 어드레스를 시퀀스 기입 블록(77)에 등록」의 처리를 실행하는 것도 가능하다.The processing in step S604 to be executed corresponding to the case where writing to the last physical page is performed is not the garbage collection processing of the sequence writing block as described above, but the &quot; final write physical page address &quot; Register in the sequence write block 77 &quot;

단 이 경우, 호스트 장치(5)측으로부터는 시퀀스 기입 종료 커맨드가 수신되고 있으므로(이 경우, 호스트 장치(5)측에서 시퀀스 기입해야 할 것으로 하고 있는 데이터가 그 이상 존재하지 않는다고 간주할 수 있음), 이후에 있어서, 해당 시퀀스 기입에서 사용된 시퀀스 기입 블록(50)에 추기가 발생할 가능성은 낮고, 따라서 시퀀스 기입 블록 관리 테이블(77)에 빈 부분을 확보하는 의미에서는, 상기한 바와 같은 시퀀스 기입 블록의 가비지 컬렉션을 실행하는 쪽이 바람직하다고 할 수 있다.In this case, however, since the sequence write end command is received from the host apparatus 5 side (in this case, it can be considered that there is no more data that the host apparatus 5 side has to write the sequence). Thereafter, it is unlikely that additional writing will occur in the sequence write block 50 used in the sequence write, and therefore, in the sense of ensuring an empty portion in the sequence write block management table 77, It is preferable to run garbage collection.

스텝 S603의 블록 등록 처리, 또는 스텝 S604의 가비지 컬렉션 처리의 실행 후에는, 이 도면에 도시하는 시퀀스 기입 종료 커맨드 대응 처리는 종료된다.After execution of the block registration process in step S603 or the garbage collection process in step S604, the sequence write end command correspondence process shown in this figure ends.

도 29에 의해, 제2 실시 형태의 경우에 있어서의 논리 블록내 기입 처리(S103)에 대해서 설명한다. Referring to Fig. 29, the logical block write processing (S103) in the case of the second embodiment will be described.

도 29에 있어서, 스텝 S701에서는, 이전의 스텝 S201과 마찬가지로, 기입 사이즈가 물리 블록 사이즈와 일치하는지 여부의 판별을 행한다.In FIG. 29, in step S701, it is determined whether the write size matches the physical block size in the same manner as in the previous step S201.

스텝 S701에 있어서, 기입 사이즈가 물리 블록 사이즈와 일치한다고 해서 긍정 결과가 얻어진 경우에는, 이 경우도 도 16에 도시하는 블록 레벨 기입을 위한 처리로 이행한다.In step S701, when an affirmative result is obtained because the write size coincides with the physical block size, this case also proceeds to the processing for block level writing shown in FIG.

한편 스텝 S701에 있어서, 기입 사이즈가 물리 블록 사이즈와 일치하지 않는다는 부정 결과가 얻어진 경우에는, 스텝 S702에 있어서, 논리 블록이 시퀀스 기입 블록 관리 테이블(77)에 존재하는지 여부를 판별한다. 이 스텝 S702의 판별 처리는, 이전의 스텝 S202의 판별 처리와 마찬가지이다.On the other hand, when a negative result indicating that the write size does not match the physical block size is obtained in step S701, it is determined in step S702 whether or not the logical block exists in the sequence write block management table 77. The determination processing of this step S702 is similar to the determination processing of the previous step S202.

스텝 S702에 있어서, 논리 블록이 시퀀스 기입 블록 관리 테이블(77)에 존재하지 않는다고 해서 부정 결과가 얻어진 경우에는, 도 21에 도시한 페이지 레벨 기입을 위한 처리로 이행한다.In step S702, if a negative result is obtained because no logical block exists in the sequence write block management table 77, the process proceeds to the process for page level writing shown in FIG.

한편 스텝 S702에 있어서, 논리 블록이 시퀀스 기입 블록 관리 테이블(77)에 존재한다고 해서 긍정 결과가 얻어진 경우에는, 스텝 S703으로 진행하여, 시퀀스 기입을 행한다.On the other hand, when affirmative result is obtained because a logical block exists in the sequence write block management table 77 in step S702, it progresses to step S703 and performs sequence writing.

여기서, 호스트 장치(5)측으로부터 시퀀스 기입 개시 커맨드의 수신이 있는 경우에는, 이전의 도 27의 처리에 수반하여 반드시 해당 논리 블록에 관한 시퀀스 기입 블록(50)이 할당 완료로 되어 있으므로, 스텝 S703에 있어서는, 그 할당 완료의 시퀀스 기입 블록(50)에 대해서, 시퀀스 기입을 실행하게 된다.Here, when there is a sequence write start command received from the host device 5 side, the sequence write block 50 for the logical block is always assigned with the processing of Fig. 27 before, and therefore, step S703. In the step, sequence writing is performed on the sequence writing block 50 of the assignment completion.

스텝 S703의 시퀀스 기입의 실행 후에는, 스텝 S704에 있어서, 최종 기입 물리 페이지 어드레스를 시퀀스 기입 블록(77)에 등록하는 처리를 실행한다.After execution of the sequence write in step S703, a process of registering the last write physical page address in the sequence write block 77 is executed in step S704.

해당 스텝 S703의 등록 처리의 실행 후, 이 경우에 있어서의 논리 블록내 기입 처리(S103)는 종료된다.After execution of the registration process of step S703, the logic block in-write process S103 in this case is terminated.

상기에 의해 설명한 제2 실시 형태에 있어서도, 플래시 메모리 장치(1)에 있어서 블록 사이즈 미만의 데이터에 대해서 시퀀스 기입이 가능하게 되는 점은 제1 실시 형태와 마찬가지로 되므로, 제1 실시 형태와 마찬가지로, 종래와의 비교에서 기록 속도의 고속화가 도모된다.Also in the second embodiment described above, the point that sequence writing is possible for data smaller than the block size in the flash memory device 1 is the same as that of the first embodiment. In comparison with the above, the recording speed is increased.

또한, 데이터 전송용의 버퍼 메모리 사이즈가 블록 사이즈보다도 작은 사이즈로 되는 호스트 장치(5)로부터의 기입이 행하여지는 경우에도, 고속인 데이터 기록을 실현할 수 있다고 하는 점도, 제1 실시 형태의 경우와 마찬가지이다.In addition, even when writing from the host device 5 in which the buffer memory size for data transfer is smaller than the block size is performed, the fact that high-speed data recording can be realized is the same as in the case of the first embodiment. to be.

<3. 변형예><3. Modifications>

이상, 본 기술에 따른 각 실시 형태에 대해서 설명했지만, 본 기술은 상기에 의해 설명한 구체예에 한정되는 것은 아니다.As mentioned above, although each embodiment which concerns on this technique was described, this technique is not limited to the specific example demonstrated above.

예를 들면 스토리지 시스템을 구성하는 호스트 장치(5)는, 디지털 카메라 장치에 한정되는 것이 아니라, 예를 들면 퍼스널 컴퓨터 등의 다른 정보 처리 장치로 할 수도 있다.For example, the host device 5 constituting the storage system is not limited to the digital camera device, but may be another information processing device such as a personal computer.

또한, 플래시 메모리 장치(1)로서는, 메모리 카드로서의 카드 형상의 메모리 장치에 한정되는 것이 아니라, 예를 들면 SSD(Solid State Drive) 등, 플래시 메모리를 구비한 메모리 장치이면 된다.The flash memory device 1 is not limited to a card-shaped memory device as a memory card, but may be a memory device including a flash memory such as an SSD (Solid State Drive), for example.

또한 본 기술은, 이하의 (1)?(15)에 나타내는 구성으로 하는 것도 가능하다.In addition, this technique can also be set as the structure shown to the following (1)-(15).

(1) 플래시 메모리부와, (1) a flash memory unit,

상기 플래시 메모리부의 블록 사이즈 미만의 데이터가, 상기 플래시 메모리부에 시퀀스 기입되도록 제어하는 제어부를 구비하는 플래시 메모리 장치.And a control unit which controls to write data smaller than the block size of the flash memory unit in sequence to the flash memory unit.

(2) 상기 제어부는, (2) The control unit,

외부 장치로부터 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만인지 여부를 판별하고, 그 결과에 기초하여, 상기 블록 사이즈 미만의 데이터가 상기 플래시 메모리부에 시퀀스 기입되도록 제어하는 상기 (1)에 기재된 플래시 메모리 장치.The flash according to (1), which determines whether the size of the data instructed to be written from the external device is smaller than the block size, and controls that data smaller than the block size is sequentially written to the flash memory unit based on the result; Memory device.

(3) 상기 제어부는, (3) The control unit,

상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부, 및 Whether data in the logical block address to which the write-indicated data belongs is sequenced in the past, and

상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈의 1/n(n은 2 이상의 자연수) 이상인지 여부를 또한 판별하고, Further determine whether the size of the write-indicated data is equal to or larger than 1 / n (n is a natural number of 2 or more) of the block size,

상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만이고, 또한, 상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있지 않으며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈의 1/n 이상인 경우에, 상기 시퀀스 기입이 행하여지도록 제어하는 상기 (2)에 기재된 플래시 메모리 장치.The size of the write instructed data is less than the block size, and data in the logical block address to which the write instructed data belongs is not sequenced in the past, and the size of the write instructed data is the block size. The flash memory device according to the above (2), which controls to perform the sequence writing in the case of 1 / n or more.

(4) 상기 제어부는, (4) The control unit,

상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스 및 기입 개시 논리 섹터 어드레스가 모두 선두 어드레스를 가리키는 것인지 여부를 또한 판별하고, It is further determined whether both the write start logical page address and the write start logical sector address of the write-indicated data point to the head address;

상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만이고, 또한, 상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있지 않으며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈의 1/n 이상이고, 또한, 상기 기입 개시 논리 페이지 어드레스 및 상기 기입 개시 논리 섹터 어드레스가 모두 선두 어드레스를 가리키는 경우에, 상기 시퀀스 기입이 행하여지도록 제어하는 상기 (3)에 기재된 플래시 메모리 장치.The size of the write instructed data is less than the block size, and data in the logical block address to which the write instructed data belongs is not sequenced in the past, and the size of the write instructed data is the block size. The flash memory device according to (3), wherein the sequence write operation is performed when the write start logical page address and the write start logical sector address both indicate a first address.

(5) 상기 제어부는, (5) The control unit,

시퀀스 기입 블록으로서 사용 중인 블록 수가 상한값에 도달해 있는지 여부를 판별하고, 상기 시퀀스 기입 블록으로서 사용 중인 블록 수가 상기 상한값에 도달해 있는 경우에는, 사용 중인 상기 시퀀스 기입 블록 중에서 선택한 시퀀스 기입 블록에 대해서, 시퀀스 기입 블록의 가비지 컬렉션을 실행하는 상기 (4)에 기재된 플래시 메모리 장치.It is determined whether the number of blocks being used as the sequence writing block reaches an upper limit value, and when the number of blocks being used as the sequence writing block reaches the upper limit value, for the sequence writing block selected from the sequence writing blocks being used, The flash memory device according to (4), which executes garbage collection of sequence write blocks.

(6) 상기 제어부는, (6) The control unit,

상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부를 또한 판별하고,Further determines whether data in the logical block address to which the write-indicated data belongs has been sequenced in the past,

상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있고, 기입 도중의 시퀀스 기입 블록이 존재하는 경우에는, When data in the logical block address to which the write-indicated data belongs is sequenced in the past and there is a sequence write block in writing,

적어도 상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스가 상기 기입 도중의 시퀀스 기입 블록의 최종 기입 논리 페이지 어드레스에 연속하는 것인지 여부를 판별한 결과에 기초하여, 상기 기입 지시된 데이터의 상기 기입 도중의 시퀀스 기입 블록에의 추기가 행하여지도록 제어하는 상기 (2)에 기재된 플래시 메모리 장치.The sequence during the writing of the data instructed, based on a result of determining whether at least the write start logical page address of the write-indicated data is continuous to the last write logical page address of the sequence-writing block in the writing. The flash memory device according to (2), which controls to perform additional writing to a write block.

(7) 상기 제어부는, (7) The control unit,

상기 기입 지시된 데이터의 사이즈가 상기 플래시 메모리부의 페이지 사이즈의 배수인지 여부를 또한 판별하고, Further determine whether or not the size of the write-indicated data is a multiple of the page size of the flash memory unit,

상기 기입 도중의 시퀀스 기입 블록이 존재하는 경우이고, 또한, 상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스가 상기 기입 도중의 시퀀스 기입 블록의 최종 기입 논리 페이지 어드레스에 연속하는 것이며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 페이지 사이즈의 배수인 경우에, 상기 기입 지시된 데이터의 상기 기입 도중의 시퀀스 기입 블록에의 추기가 행하여지도록 제어하는 상기 (6)에 기재된 플래시 메모리 장치.The write sequence logical page address of the write-indicated data is continuous to the last write logical page address of the sequence write block during the write, and the write instruction The flash memory device according to (6), wherein when the size of the written data is a multiple of the page size, additional writing to the sequence writing block during the writing is performed.

(8) 상기 제어부는, (8) The control unit,

상기 기입 지시된 데이터의 사이즈가 상기 플래시 메모리부의 페이지 사이즈의 배수인지 여부를 또한 판별하고, Further determine whether or not the size of the write-indicated data is a multiple of the page size of the flash memory unit,

상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만이고, 또한, 상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있지 않으며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈의 1/n 이상이고, 또한, 상기 기입 개시 논리 페이지 어드레스 및 상기 기입 개시 논리 섹터 어드레스가 모두 선두 어드레스를 가리키는 것이며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 페이지 사이즈의 배수인 경우에, 시퀀스 기입이 행하여지도록 제어하는 상기 (4)에 기재된 플래시 메모리 장치.The size of the write instructed data is less than the block size, and data in the logical block address to which the write instructed data belongs is not sequenced in the past, and the size of the write instructed data is the block size. Is 1 / n or more, and both the write start logical page address and the write start logical sector address both point to a head address, and when the size of the write-indicated data is a multiple of the page size, the sequence The flash memory device according to (4), which controls writing to be performed.

(9) 상기 제어부는, (9) The control unit,

상기 기입 지시된 데이터의 사이즈가 상기 플래시 메모리부의 블록 사이즈와 일치하는 경우에는, 상기 기입 지시된 데이터가 블록 레벨 관리 하에서 기입되도록 제어하는 상기 (2)?(8)에 기재된 플래시 메모리 장치.The flash memory device according to (2) to (8), wherein when the size of the write instructed data coincides with the block size of the flash memory unit, the write instructed data is written under block level management.

(10) 상기 제어부는, (10) The control unit,

상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부, 및 Whether data in the logical block address to which the write-indicated data belongs is sequenced in the past, and

상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈의 1/n(n은 2 이상의 자연수) 이상인지 여부를 또한 판별하고, Further determine whether the size of the write-indicated data is equal to or larger than 1 / n (n is a natural number of 2 or more) of the block size,

상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만이고, 또한, 상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있지 않으며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈의 1/n 이상이 아닌 경우에는, 상기 기입 지시된 데이터가 페이지 레벨 관리 하에서 기입되도록 제어하는 상기 (2)?(9)에 기재된 플래시 메모리 장치.The size of the write instructed data is less than the block size, and data in the logical block address to which the write instructed data belongs is not sequenced in the past, and the size of the write instructed data is the block size. The flash memory device according to (2) to (9), wherein the write-indicated data is controlled to be written under page level management when not more than 1 / n.

(11) 상기 제어부는, (11) The control unit,

상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부, 및 Whether data in the logical block address to which the write-indicated data belongs is sequenced in the past, and

상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스 및 기입 개시 논리 섹터 어드레스가 모두 선두 어드레스를 가리키는 것인지 여부를 또한 판별하고, It is further determined whether both the write start logical page address and the write start logical sector address of the write-indicated data point to the head address;

상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만이고, 또한, 상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있지 않으며, 또한, 상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스 및 기입 개시 논리 섹터 어드레스가 모두 선두 어드레스를 가리킨다는 조건이 충족되지 않는 경우에는, 상기 기입 지시된 데이터가 페이지 레벨 관리 하에서 기입되도록 제어하는 상기 (2)?(10)에 기재된 플래시 메모리 장치.The size of the write instructed data is less than the block size, and the data in the logical block address to which the write instructed data belongs is not sequenced in the past, and the write start logical page address of the write instructed data And (2) to (10), wherein the write-indicated data is controlled to be written under page level management when the condition that all of the write start logical sector addresses indicate the first address is not satisfied.

(12) 상기 제어부는, (12) The control unit,

상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부, 및 Whether data in the logical block address to which the write-indicated data belongs is sequenced in the past, and

상기 기입 지시된 데이터의 사이즈가 상기 플래시 메모리부의 페이지 사이즈의 배수인지 여부를 또한 판별하고, Further determine whether or not the size of the write-indicated data is a multiple of the page size of the flash memory unit,

상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만이고, 또한, 상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있지 않으며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 페이지 사이즈의 배수가 아닌 경우에는, 상기 기입 지시된 데이터가 페이지 레벨 관리 하에서 기입되도록 제어하는 상기 (2)?(11)에 기재된 플래시 메모리 장치.The size of the write instructed data is less than the block size, and data in the logical block address to which the write instructed data belongs is not sequenced in the past, and the size of the write instructed data is the page size. The flash memory device according to the above (2) to (11), wherein the write instructed data is controlled to be written under page level management when not a multiple of.

(13) 상기 제어부는,(13) The control unit,

상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부, 및 Whether data in the logical block address to which the write-indicated data belongs is sequenced in the past, and

상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스가 상기 기입 도중의 시퀀스 기입 블록의 최종 기입 논리 페이지 어드레스에 연속하는 것인지 여부를 또한 판별하고, Further determine whether or not the write start logical page address of the write-indicated data is continuous to the last write logical page address of the sequence write block in the middle of writing;

상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있고 기입 도중의 시퀀스 기입 블록이 존재하는 경우이고, 또한, 상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스가 상기 기입 도중의 시퀀스 기입 블록의 최종 기입 논리 페이지 어드레스에 연속하는 것이 아닌 경우에는, 상기 기입 지시된 데이터가 페이지 레벨 관리 하에서 기입되도록 제어하는 상기 (2)?(12)에 기재된 플래시 메모리 장치.The data in the logical block address to which the write-indicated data belongs is a sequence written in the past and there is a sequence write block during writing, and the write start logical page address of the write-indicated data is the sequence during the write-in. The flash memory device according to (2) to (12), wherein the write instructed data is controlled to be written under page level management when the write block is not continuous to the last write logical page address.

(14) 상기 제어부는, (14) The control unit,

상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부, 및 Whether data in the logical block address to which the write-indicated data belongs is sequenced in the past, and

상기 기입 지시된 데이터의 사이즈가 상기 플래시 메모리부의 페이지 사이즈의 배수인지 여부를 또한 판별하고, Further determine whether or not the size of the write-indicated data is a multiple of the page size of the flash memory unit,

상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있고 기입 도중의 시퀀스 기입 블록이 존재하는 경우이고, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 페이지 사이즈의 배수가 아닌 경우에는, 상기 기입 지시된 데이터가 페이지 레벨 관리 하에서 기입되도록 제어하는 상기 (2)?(13)에 기재된 플래시 메모리 장치.When the data in the logical block address to which the write-indicated data belongs is sequence written in the past and there is a sequence write block in writing, and when the size of the write-indicated data is not a multiple of the page size, And the flash memory device according to (2) to (13), which controls the write instructed data to be written under page level management.

(15) 상기 제어부는, (15) The control unit,

외부 장치로부터의 시퀀스 기입 지시에 따라, 상기 플래시 메모리부의 블록 사이즈 미만의 데이터가 상기 플래시 메모리부에 시퀀스 기입되도록 제어하는 상기 (1)에 기재된 플래시 메모리 장치.The flash memory device according to the above (1), which controls to write data smaller than the block size of the flash memory section in sequence according to a sequence write instruction from an external device.

1 : 플래시 메모리 장치
2 : 외부 인터페이스
3 : 메모리 컨트롤러
4 : 플래시 메모리
4A : 유저 데이터 기록 영역
4B : 관리 정보 기록 영역
5 : 호스트 장치
50 : 시퀀스 기입 관리 블록
77 : 시퀀스 기입 블록 관리 테이블.
1: flash memory device
2: external interface
3: memory controller
4: flash memory
4A: user data recording area
4B: management information recording area
5: host device
50: sequence write management block
77: sequence write block management table.

Claims (18)

플래시 메모리 장치로서,
플래시 메모리부와,
상기 플래시 메모리부의 블록 사이즈 미만의 데이터가, 상기 플래시 메모리부에 시퀀스 기입되도록 제어하는 제어부를 구비하는, 플래시 메모리 장치.
1. A flash memory device comprising:
With a flash memory section,
And a control unit for controlling data of less than the block size of the flash memory unit to be sequenced to the flash memory unit.
제1항에 있어서,
상기 제어부는,
외부 장치로부터 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만인지 여부를 판별하고, 그 결과에 기초하여, 상기 블록 사이즈 미만의 데이터가 상기 플래시 메모리부에 시퀀스 기입되도록 제어하는, 플래시 메모리 장치.
The method of claim 1,
The control unit,
And determining whether or not the size of the data instructed to be written from the external device is less than the block size, and based on the result, controls that data smaller than the block size is to be sequenced to the flash memory unit.
제2항에 있어서,
상기 제어부는,
상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부, 및
상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈의 1/n(n은 2 이상의 자연수) 이상인지 여부를 또한 판별하고,
상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만이고, 또한, 상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있지 않으며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈의 1/n 이상인 경우에, 상기 시퀀스 기입이 행하여지도록 제어하는, 플래시 메모리 장치.
The method of claim 2,
The control unit,
Whether data in the logical block address to which the write-indicated data belongs is sequenced in the past, and
Further determine whether the size of the write-indicated data is equal to or larger than 1 / n (n is a natural number of 2 or more) of the block size,
The size of the write instructed data is less than the block size, and data in the logical block address to which the write instructed data belongs is not sequenced in the past, and the size of the write instructed data is the block size. Is 1 / n or more, the flash memory device controls to perform the sequence write.
제3항에 있어서,
상기 제어부는,
상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스 및 기입 개시 논리 섹터 어드레스가 모두 선두 어드레스를 가리키는 것인지 여부를 또한 판별하고,
상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만이고, 또한, 상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있지 않으며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈의 1/n 이상이고, 또한, 상기 기입 개시 논리 페이지 어드레스 및 상기 기입 개시 논리 섹터 어드레스가 모두 선두 어드레스를 가리키는 경우에, 상기 시퀀스 기입이 행하여지도록 제어하는, 플래시 메모리 장치.
The method of claim 3,
The control unit,
It is further determined whether both the write start logical page address and the write start logical sector address of the write-indicated data point to the head address;
The size of the write instructed data is less than the block size, and data in the logical block address to which the write instructed data belongs is not sequenced in the past, and the size of the write instructed data is the block size. Is 1 / n or more, and when the write start logical page address and the write start logical sector address both point to a head address, the flash memory device controls to perform the sequence write.
제4항에 있어서,
상기 제어부는,
시퀀스 기입 블록으로서 사용 중인 블록 수가 상한값에 도달해 있는지 여부를 판별하고, 상기 시퀀스 기입 블록으로서 사용 중인 블록 수가 상기 상한값에 도달해 있는 경우에는, 사용 중인 상기 시퀀스 기입 블록 중에서 선택한 시퀀스 기입 블록에 대해서, 시퀀스 기입 블록의 가비지 컬렉션을 실행하는, 플래시 메모리 장치.
5. The method of claim 4,
The control unit,
It is determined whether the number of blocks being used as the sequence writing block reaches an upper limit value, and when the number of blocks being used as the sequence writing block reaches the upper limit value, for the sequence writing block selected from the sequence writing blocks being used, A flash memory device that performs garbage collection of sequence write blocks.
제2항에 있어서,
상기 제어부는,
상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부를 또한 판별하고,
상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있고, 기입 도중의 시퀀스 기입 블록이 존재하는 경우에는, 적어도 상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스가 상기 기입 도중의 시퀀스 기입 블록의 최종 기입 논리 페이지 어드레스에 연속하는 것인지 여부를 판별한 결과에 기초하여, 상기 기입 지시된 데이터의 상기 기입 도중의 시퀀스 기입 블록에의 추기가 행하여지도록 제어하는, 플래시 메모리 장치.
The method of claim 2,
The control unit,
Further determines whether data in the logical block address to which the write-indicated data belongs has been sequenced in the past,
When data in the logical block address to which the write-indicated data belongs is sequence-written in the past, and there is a sequence-write block in writing, at least the write start logical page address of the write-indicated data is the sequence during the write. And based on a result of determining whether or not the write block is contiguous with the last write logical page address, the flash memory device controls to perform additional writing of the write-indicated data to the sequence write block during writing.
제6항에 있어서,
상기 제어부는,
상기 기입 지시된 데이터의 사이즈가 상기 플래시 메모리부의 페이지 사이즈의 배수인지 여부를 또한 판별하고,
상기 기입 도중의 시퀀스 기입 블록이 존재하는 경우이고, 또한, 상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스가 상기 기입 도중의 시퀀스 기입 블록의 최종 기입 논리 페이지 어드레스에 연속하는 것이며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 페이지 사이즈의 배수인 경우에, 상기 기입 지시된 데이터의 상기 기입 도중의 시퀀스 기입 블록에의 추기가 행하여지도록 제어하는, 플래시 메모리 장치.
The method according to claim 6,
The control unit,
Further determine whether or not the size of the write-indicated data is a multiple of the page size of the flash memory unit,
The write sequence logical page address of the write-indicated data is continuous to the last write logical page address of the sequence write block during the write, and the write instruction And when the size of the written data is a multiple of the page size, control is performed so that additional writing to the sequence writing block during the writing is performed.
제4항에 있어서,
상기 제어부는,
상기 기입 지시된 데이터의 사이즈가 상기 플래시 메모리부의 페이지 사이즈의 배수인지 여부를 또한 판별하고,
상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만이고, 또한, 상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있지 않으며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈의 1/n 이상이고, 또한, 상기 기입 개시 논리 페이지 어드레스 및 상기 기입 개시 논리 섹터 어드레스가 모두 선두 어드레스를 가리키는 것이며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 페이지 사이즈의 배수인 경우에, 시퀀스 기입이 행하여지도록 제어하는, 플래시 메모리 장치.
5. The method of claim 4,
The control unit,
Further determine whether or not the size of the write-indicated data is a multiple of the page size of the flash memory unit,
The size of the write instructed data is less than the block size, and data in the logical block address to which the write instructed data belongs is not sequenced in the past, and the size of the write instructed data is the block size. Is 1 / n or more, and both the write start logical page address and the write start logical sector address both point to a head address, and when the size of the write-indicated data is a multiple of the page size, the sequence A flash memory device that controls writing to be performed.
제2항에 있어서,
상기 제어부는,
상기 기입 지시된 데이터의 사이즈가 상기 플래시 메모리부의 블록 사이즈와 일치하는 경우에는, 상기 기입 지시된 데이터가 블록 레벨 관리 하에서 기입되도록 제어하는, 플래시 메모리 장치.
The method of claim 2,
The control unit,
And when the size of the write instructed data coincides with the block size of the flash memory unit, the write instructed data is controlled to be written under block level management.
제2항에 있어서,
상기 제어부는,
상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부, 및
상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈의 1/n(n은 2 이상의 자연수) 이상인지 여부를 또한 판별하고,
상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만이고, 또한, 상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있지 않으며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈의 1/n 이상이 아닌 경우에는, 상기 기입 지시된 데이터가 페이지 레벨 관리 하에서 기입되도록 제어하는, 플래시 메모리 장치.
The method of claim 2,
The control unit,
Whether data in the logical block address to which the write-indicated data belongs is sequenced in the past, and
Further determine whether the size of the write-indicated data is equal to or larger than 1 / n (n is a natural number of 2 or more) of the block size,
The size of the write instructed data is less than the block size, and data in the logical block address to which the write instructed data belongs is not sequenced in the past, and the size of the write instructed data is the block size. And not more than 1 / n of the flash memory device, the write directed data is controlled to be written under page level management.
제2항에 있어서,
상기 제어부는, 상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부, 및
상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스 및 기입 개시 논리 섹터 어드레스가 모두 선두 어드레스를 가리키는 것인지 여부를 또한 판별하고,
상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만이고, 또한, 상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있지 않으며, 또한, 상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스 및 기입 개시 논리 섹터 어드레스가 모두 선두 어드레스를 가리킨다는 조건이 충족되지 않는 경우에는, 상기 기입 지시된 데이터가 페이지 레벨 관리 하에서 기입되도록 제어하는, 플래시 메모리 장치.
The method of claim 2,
The control unit determines whether data in the logical block address to which the write-indicated data belongs has been sequenced in the past, and
It is further determined whether both the write start logical page address and the write start logical sector address of the write-indicated data point to the head address;
The size of the write instructed data is less than the block size, and the data in the logical block address to which the write instructed data belongs is not sequenced in the past, and the write start logical page address of the write instructed data And if the condition that all of the write start logical sector addresses point to the head address is not satisfied, the write-indicated data is controlled to be written under page level management.
제2항에 있어서,
상기 제어부는,
상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부, 및
상기 기입 지시된 데이터의 사이즈가 상기 플래시 메모리부의 페이지 사이즈의 배수인지 여부를 또한 판별하고,
상기 기입 지시된 데이터의 사이즈가 상기 블록 사이즈 미만이고, 또한, 상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있지 않으며, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 페이지 사이즈의 배수가 아닌 경우에는, 상기 기입 지시된 데이터가 페이지 레벨 관리 하에서 기입되도록 제어하는, 플래시 메모리 장치.
The method of claim 2,
The control unit,
Whether data in the logical block address to which the write-indicated data belongs is sequenced in the past, and
Further determine whether or not the size of the write-indicated data is a multiple of the page size of the flash memory unit,
The size of the write instructed data is less than the block size, and data in the logical block address to which the write instructed data belongs is not sequenced in the past, and the size of the write instructed data is the page size. And the write instructed data is written so as to be written under page level management.
제2항에 있어서,
상기 제어부는,
상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부, 및
상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스가 상기 기입 도중의 시퀀스 기입 블록의 최종 기입 논리 페이지 어드레스에 연속하는 것인지 여부를 또한 판별하고,
상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있고 기입 도중의 시퀀스 기입 블록이 존재하는 경우이고, 또한, 상기 기입 지시된 데이터의 기입 개시 논리 페이지 어드레스가 상기 기입 도중의 시퀀스 기입 블록의 최종 기입 논리 페이지 어드레스에 연속하는 것이 아닌 경우에는, 상기 기입 지시된 데이터가 페이지 레벨 관리 하에서 기입되도록 제어하는, 플래시 메모리 장치.
The method of claim 2,
The control unit,
Whether data in the logical block address to which the write-indicated data belongs is sequenced in the past, and
Further determine whether or not the write start logical page address of the write-indicated data is continuous to the last write logical page address of the sequence write block in the middle of writing;
The data in the logical block address to which the write-indicated data belongs is a sequence written in the past and there is a sequence write block during writing, and the write start logical page address of the write-indicated data is the sequence during the write-in. And if it is not contiguous with the last write logical page address of the write block, the write directed data is controlled to be written under page level management.
제2항에 있어서,
상기 제어부는,
상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있는지 여부, 및
상기 기입 지시된 데이터의 사이즈가 상기 플래시 메모리부의 페이지 사이즈의 배수인지 여부를 또한 판별하고,
상기 기입 지시된 데이터가 속하는 논리 블록 어드레스 내의 데이터가 과거에 시퀀스 기입되어 있고 기입 도중의 시퀀스 기입 블록이 존재하는 경우이고, 또한, 상기 기입 지시된 데이터의 사이즈가 상기 페이지 사이즈의 배수가 아닌 경우에는, 상기 기입 지시된 데이터가 페이지 레벨 관리 하에서 기입되도록 제어하는, 플래시 메모리 장치.
The method of claim 2,
The control unit,
Whether data in the logical block address to which the write-indicated data belongs is sequenced in the past, and
Further determine whether or not the size of the write-indicated data is a multiple of the page size of the flash memory unit,
When the data in the logical block address to which the write-indicated data belongs is sequence written in the past and there is a sequence write block in writing, and when the size of the write-indicated data is not a multiple of the page size, And controlling the write directed data to be written under page level management.
제1항에 있어서,
상기 제어부는,
외부 장치로부터의 시퀀스 기입 지시에 따라, 상기 플래시 메모리부의 블록 사이즈 미만의 데이터가 상기 플래시 메모리부에 시퀀스 기입되도록 제어하는, 플래시 메모리 장치.
The method of claim 1,
The control unit,
A flash memory device that controls to write data smaller than the block size of the flash memory unit in sequence in accordance with a sequence write instruction from an external device.
플래시 메모리부의 블록 사이즈 미만의 데이터가, 상기 플래시 메모리부에 시퀀스 기입되도록 제어하는, 메모리 제어 장치.A memory control device that controls data of a block size smaller than a block size of a flash memory unit to be written in sequence to the flash memory unit. 플래시 메모리부의 블록 사이즈 미만의 데이터가, 상기 플래시 메모리부에 시퀀스 기입되도록 제어하는, 메모리 제어 방법.And controlling data such that data smaller than the block size of a flash memory portion is written to the flash memory portion in sequence. 플래시 메모리부와,
상기 플래시 메모리부에의 데이터의 기입을 지시하는 지시부와,
상기 기입 지시부에 의해 기입이 지시된, 상기 플래시 메모리부의 블록 사이즈 미만의 데이터가, 상기 플래시 메모리부에 시퀀스 기입되도록 제어하는 제어부를 구비하는, 스토리지 시스템.
With a flash memory section,
An instruction unit for instructing writing of data into the flash memory unit;
And a control unit for controlling data of a block size smaller than the block size of the flash memory unit instructed to be written by the write instruction unit to be sequentially written to the flash memory unit.
KR1020120043660A 2011-05-09 2012-04-26 Flash memory device, memory control device, memory control method, and storage system KR20120125950A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120043660A KR20120125950A (en) 2011-05-09 2012-04-26 Flash memory device, memory control device, memory control method, and storage system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2011-104519 2011-05-09
KR1020120043660A KR20120125950A (en) 2011-05-09 2012-04-26 Flash memory device, memory control device, memory control method, and storage system

Publications (1)

Publication Number Publication Date
KR20120125950A true KR20120125950A (en) 2012-11-19

Family

ID=47511426

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120043660A KR20120125950A (en) 2011-05-09 2012-04-26 Flash memory device, memory control device, memory control method, and storage system

Country Status (1)

Country Link
KR (1) KR20120125950A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11099981B2 (en) 2018-05-08 2021-08-24 SK Hynix Inc. Memory system and operating method thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11099981B2 (en) 2018-05-08 2021-08-24 SK Hynix Inc. Memory system and operating method thereof

Similar Documents

Publication Publication Date Title
JP5708216B2 (en) Flash memory device, memory control device, memory control method, and storage system
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
KR101663667B1 (en) Method and apparatus for data management in flash memory by address mapping
US8516182B2 (en) Controller and memory system for managing data
KR100816761B1 (en) Memory card system including nand flash memory and sram/nor flash memory and data storage method thereof
US8949515B2 (en) Storage device and memory controller
EP1898312A1 (en) Memory controller, nonvolatile storage device, nonvolatile storage system, and data writing method
US11455112B2 (en) Non-volatile memory device, non-volatile memory control device, and non-volatile memory control method
US20150161039A1 (en) Data erasing method, memory control circuit unit and memory storage apparatus
JP2008009527A (en) Memory system
EP3346387B1 (en) Storage system and system garbage collection method
US20160110107A1 (en) Method for writing data into flash memory apparatus, flash memory apparatus, and storage system
KR102349381B1 (en) Data storage device and operating method thereof
US10083181B2 (en) Method and system for storing metadata of log-structured file system
US20100318726A1 (en) Memory system and memory system managing method
JP2015191336A (en) Memory controller, information processor, control method of information processor and program
CN110389712B (en) Data writing method and device, solid state disk and computer readable storage medium
US20100180072A1 (en) Memory controller, nonvolatile memory device, file system, nonvolatile memory system, data writing method and data writing program
JP4242245B2 (en) Flash ROM control device
US9304906B2 (en) Memory system, controller and control method of memory
JP2005115562A (en) Flash rom controller
KR20120125950A (en) Flash memory device, memory control device, memory control method, and storage system
JP2018185842A (en) Memory control device and information processing system
JP2008299455A (en) Data storage device and data management method
JP4985108B2 (en) Data storage device and control method thereof

Legal Events

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