WO2005050453A1 - ファイル記録装置 - Google Patents

ファイル記録装置 Download PDF

Info

Publication number
WO2005050453A1
WO2005050453A1 PCT/JP2004/015182 JP2004015182W WO2005050453A1 WO 2005050453 A1 WO2005050453 A1 WO 2005050453A1 JP 2004015182 W JP2004015182 W JP 2004015182W WO 2005050453 A1 WO2005050453 A1 WO 2005050453A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
file
block
buffer
write
Prior art date
Application number
PCT/JP2004/015182
Other languages
English (en)
French (fr)
Inventor
Hiroshi Saito
Toshihiro Tanaka
Original Assignee
Matsushita Electric Industrial Co., Ltd.
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 Matsushita Electric Industrial Co., Ltd. filed Critical Matsushita Electric Industrial Co., Ltd.
Priority to KR1020067010215A priority Critical patent/KR101087906B1/ko
Priority to EP04792410A priority patent/EP1686482B1/en
Priority to JP2005515557A priority patent/JP4287433B2/ja
Priority to US10/578,270 priority patent/US7610434B2/en
Publication of WO2005050453A1 publication Critical patent/WO2005050453A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Definitions

  • the present invention relates to a file recording device that records a file in a semiconductor memory.
  • non-volatile semiconductor memory which does not lose the recorded data even when the power is turned off, needs to be erased before recording, but since there is no mechanical drive mechanism and no rotation, vibration resistance and quietness are maintained.
  • excellent sex also by Tsu coupled with a larger capacity by improving the recording density, CD (Compact Disk), DVD (Di g ital Versatile Disk) , etc. and parallel Pi, has spurred the spread as an information recording medium .
  • EEPROM Electrically Erasable Programmable Read Only Memory
  • This flash memory can be erased collectively in units called blocks, making it a product such as SD memory cards. It is used for recording digital cameras.
  • a file system that manages data of various recording media including the flash memory includes FAT (File Allocation Table, Standard ECMA—107: Volume and File Structure of Disk Cartridges for Information Interchange) and NTFS (New Technology). File System) and UDF (Universal Disk Format).
  • FAT File Allocation Table, Standard ECMA—107: Volume and File Structure of Disk Cartridges for Information Interchange
  • NTFS New Technology
  • File System New Technology
  • UDF Universal Disk Format
  • the larger the cluster size the lower the memory capacity efficiency.
  • the larger the block size the better the memory integration efficiency.
  • the block size is usually larger than the cluster size.
  • a cluster spans two blocks, it is recorded in that cluster. In some cases, two blocks need to be erased. In order to avoid this, a technique for preventing a cluster from straddling between blocks is disclosed in Japanese Patent Application Publication No. JP-A-2001-188071. If all clusters belonging to the block of flash memory are free, the file system only needs to erase and write the block.
  • the block is read into the temporary memory in main memory (Read) before erasing the block, and the block is erased ( Delete), modify the changes in the temporary memory (Modify), and write the contents of the temporary memory (Write), a series of operations (called read-modify-write). Take it.
  • the present invention has been made in view of the above problems, and has as its first object to provide a file recording apparatus that efficiently records data on a storage medium that requires batch erasure without waste. It is a second object of the present invention to provide a program for efficiently and efficiently recording data on the storage medium.
  • the above object is to provide a file recording apparatus that records data on a recording medium that needs to be erased in units of blocks composed of a predetermined number of continuous clusters, using clusters as recording allocation units for data included in a file.
  • Receiving means for receiving a request to write the data of each file to the recording medium; a plurality of file buffers; and a data storage means for individually storing the requested data in the file buffer.
  • Determining means for determining whether or not the size of the data stored by the data storage means is greater than or equal to the book size; and, if the determination is positive, among the data stored by the data storage means, Block Writing means for extracting data of the same size and writing the data in an empty block of the recording medium.
  • data can be written in units of blocks occupied by data of one file.
  • the determining means determines that the accumulated data is equal to or greater than the block size
  • the data of the predetermined number of clusters can be taken out from each of the file buffers in cluster size units and written to the free block.
  • the above-mentioned object is to provide a storage medium having a plurality of file buffers, a cluster as a recording allocation unit for data included in a file, and a storage medium which needs to be erased in units of blocks composed of a predetermined number of continuous clusters.
  • a method for controlling a file recording apparatus for recording a file comprising: writing data of each file to the recording medium.
  • the above object is to provide a storage medium having a plurality of file buffers, a cluster as a recording allocation unit for data included in a file, and a recording medium which needs to be erased in units of blocks composed of a predetermined number of continuous clusters.
  • the above purpose is to provide a driver data buffer,
  • a file recording device that records data on a recording medium that needs to be erased in units of blocks composed of a predetermined number of continuous clusters as a recording allocation unit for included data, including a write destination address on the recording medium
  • a receiving step of receiving a write request ; and a first determining step of determining whether the write data and the data in the driver data buffer are continuous in an address of the recording medium when the driver data buffer is not empty.
  • a data accumulation step for accumulating write data in the driver data buffer; and determining whether a write destination of the data accumulated in the driver data buffer coincides with a block boundary. Is determined to be affirmative in the second determination step for determining
  • a program for executing a write step of writing data from the head of the driver data buffer to the boundary of the block on the recording medium can be achieved.
  • the program may be a filter driver for the recording medium.
  • FIG. 1 is a diagram showing a configuration of a file recording apparatus according to a first embodiment of the present invention.
  • FIG. 2 is a diagram showing a configuration of the memory card of the above embodiment.
  • FIG. 3 shows an example of the format of the flash memory in the above embodiment.
  • FIG. 4 is a diagram illustrating a state of accumulation of data in a file buffer and an example of writing to a flash memory in the above embodiment.
  • FIG. 5 is a flowchart showing the overall processing procedure of file recording according to the above embodiment.
  • FIG. 6 is a flowchart showing a processing procedure for opening a file record and the like in the above embodiment.
  • FIG. 7 is a flowchart showing a processing procedure of a file recording write request according to the above embodiment.
  • FIG. 8 is a diagram showing a state of accumulation of data in a file buffer and an example of writing to a flash memory in the second embodiment of the file recording apparatus according to the present invention.
  • FIG. 9 is a flowchart illustrating a processing procedure of a write request according to the above embodiment.
  • FIG. 10 is a diagram showing a hierarchical structure of software in the third embodiment of the file recording device according to the present invention.
  • FIG. 11 is a flowchart showing a processing procedure of the filter driver according to the above embodiment.
  • FIG. 12 is a diagram showing a relationship between data in the data buffer and blocks in the flash memory according to the above embodiment.
  • FIG. 1 is a diagram showing a configuration of the present embodiment.
  • the file recording device consists of a memory card 110, a file puffer 120, an input / output request receiving unit 130, a data storage unit 140, a block management unit 150, and a file. It comprises a writing section 160 and a file management section 190.
  • the file recording device further includes a CPU and a memory (not shown).
  • a CPU central processing unit
  • a memory not shown.
  • Each of the above components is a program or a memory area. If the component is a program, it is loaded into the memory and executed by the CPU.
  • the file recording device receives an input / output request for a single file or a plurality of files.
  • the input / output request source is, for example, an application that operates on a file recording device, a device that issues a request through a network, and the like.
  • the I / O request source can request the file recording device to record to multiple files simultaneously.
  • the input / output request source may be of multiple types, for example, an application and other devices on the network, but may be of multiple types within one type, for example, applications A, B, C, etc. It does not matter.
  • the input / output request source is treated here as a singular.
  • the memory card 110 records the file requested by the I / O request source.
  • the memory card 110 includes a command execution unit 201, a data buffer 202, and a flash memory 205.
  • the command execution unit 201 receives a command that can be executed by the memory card 110 from the file writing unit 160 and executes the command. Commands that can be executed by the command execution unit 201 include writing, reading, and block erasing of the flash memory 205.
  • the write command includes the sector number as the start address of the write destination in the flash memory 205 and the number of sectors as the data size.
  • the command execution unit 201 writes data for the number of sectors set in the data buffer 202 from the above-mentioned sector number of the flash memory 205.
  • the maximum number of sectors as the data size is a number corresponding to one block size, that is, 128.
  • the data buffer 202 is a block-size buffer that holds data to be written by a write command.
  • the data buffer 202 holds the write data transferred by the file writing section 160, and the command execution section 201, which has received the write command, stores the write data in the file writing section 160. Data is written to the flash memory 110.
  • the data buffer 202 also holds data read from the flash memory 205 by a read command.
  • the read command includes the sector number and the number of sectors as the start address of the read destination in the flash memory 205 and the data size.
  • the maximum number of sectors is 128 as in the case of writing.
  • the flash memory 205 is a memory that needs to be erased in units of blocks before recording, that is, a memory that needs to erase a block that is composed of a sector to be written (described later) or a cluster (described later).
  • the data of the file written by 1 is stored.
  • the erase command includes the number of the block to be erased.
  • the command execution unit 201 erases the block of the flash memory 205 with the specified block number.
  • FIG. 3 is a diagram showing an example of the format of the flash memory 205.
  • the flash memory 205 is managed in units of a hierarchical division of blocks 311, clusters 312, and sectors 313.
  • Block 311 is a unit of erasure required before recording. When writing data to a file, unused free blocks are allocated to the data in the file.
  • the block number 4001—4192 is not shown in FIG. 3 as a spare.
  • the cluster 312 is the minimum unit of allocation to file data, and is referred to in the file management table FAT 205 described later.
  • the sector 3 13 is the minimum unit of data input / output, and is assigned an integer sector number in order from 1 and the sector number indicates an address on the flash memory.
  • the size of the data when writing to the flash memory 205 is The number of sectors is used instead of the number of sectors. In sector 3 13 in FIG. 3, only the first sector number of each block and each cluster is described.
  • the area 314 of the flash memory 205 is roughly divided into a system area 321 and a user area 331.
  • the system area 321 further includes a reserved area 322, a FAT area 323, and a root directory entry 324.
  • the reserved area 322 stores boot information, parameter information relating to the flash memory 205 as a recording medium, and the like.
  • the sector size is 5 12 B (bytes)
  • 1 cluster is 16 KB
  • 1 cluster is 32 sectors
  • 1 block is 4 clusters.
  • one cluster has a size of 16 KB
  • one block has a size of 64 KB.
  • the flash memory 205 has a storage capacity of 256 MB.
  • the cluster size and the block size are not limited to these values.
  • one block may be 128 KB or 256 KB, and the cluster size may be 8 KB or 32 KB.
  • FAT area 3 2 3 Put FAT 3 3 5
  • FAT 335 is a table showing the locations of the clusters where the files are located.
  • the root directory entry 324 is an area composed of a directory storing file management information. Each directory contains the file name, the date and time the file was recorded (not shown), the number of the first cluster occupied by this file, and the number of the first cluster occupied (or the first FAT entry number).
  • directory A of file A has a leading cluster of 1, and entry 2 of FAT 335 corresponding to cluster 1 records “2”, so file A is in cluster 1 Occupies the cluster 2 following. Similarly, entry 2 records “3”, so it occupies cluster 3, and entry 3 records “4”, so it occupies cluster 4. Since the FAT entry 4 records "FF" indicating the end of the file, the occupied cluster is a contiguous cluster of 1, 2, 3, and 4. It turns out that this corresponds to block 4. In the FAT area 3 23, the FAT 335 is doubled for safety (not shown).
  • the user area 331 is an area in which file data or directory information is recorded. In the present embodiment, allocation to file data is basically performed in block units. The format of the system area 321 is fixed, and the cluster number is used only in the user area.
  • the file buffer 120 is a two-block size buffer (memory area) for temporarily storing data requested by the recording request source, and is used for file input / output requests.
  • the file management unit 190 secures the file exclusively for that file, and when the file is closed, it is opened (returned) by the file management unit 190.
  • the size of the file buffer 120 is set to two block sizes, it may be a size obtained by adding one block size to the maximum size of write data of an input / output request described later.
  • the write buffer 125 is a block-size memory area for temporarily storing data of a file to be written to the flash memory 205, and is used by the file writing unit 160.
  • the input / output request receiving unit 130 receives an input / output request for a file in the flash memory 205 of the memory card 110 from the input / output request source.
  • File input / output requests include opening and closing files, writing file data (Write), and reading file data (Read).
  • the I / O request receiving unit 130 enters the file name that is the information of the file to be opened, and when the I / O request is closed, the file descriptor (the file information that is the information of the file to be closed). (Described later) from the I / O request source.
  • the input / output request receiving unit 130 When the input / output request is for writing file data, the input / output request receiving unit 130 also receives the file data to be written (hereinafter referred to as “write data”) from the input / output request source.
  • Write data can be received directly following the write instruction, or the memory containing the data set in advance by the write request source.
  • the upper address and data size (in bytes) are received following the write instruction.
  • the maximum value of the write data size for each write request received by the input / output request receiving unit 130 is the block size (64 KB). Note that this maximum value is not fixed but may be another size, for example, 256 KB.
  • the input / output request receiving unit 130 transfers the write data to a data area (not shown) on the memory.
  • the input / output request receiving unit 130 receives information on the data of the file to be read from the input / output request source, but the detailed description is omitted because it is not used in the file recording. .
  • the input / output request receiving unit 130 receives the type of input / output request (open, write, etc.) and information on the file to be processed (for example, a file descriptor for writing and closing, and a file for opening.
  • the address and size of the write data are notified to the file management unit 150 as input / output request information.
  • information about the processing result of the notified input / output request information is received from the file management unit 150, and is notified to the input / output request source. Notification of the processing result to the input / output request source is performed by notifying the processing result information directly or by transferring the processing result information to the memory area and notifying the memory address.
  • the data storage unit 140 stores the write data in the file buffer 120 corresponding to the file indicated by the file description based on an instruction from the file management unit 190.
  • the reception of the write data is performed by receiving the address and size of the memory where the data exists from the file management unit 190.
  • FIG. 4 is a diagram showing an example in which data is accumulated in each of the file buffers 120A, 120B, and 120C, and is written to the flash memory 205.
  • the write data accumulation process is performed on the file buffer to which the write data belongs among the file buffers secured for each file being recorded, for example, file buffers 120A, 120B, and 120C.
  • the write data is file C data
  • the file buffer corresponding to file C Accumulate write data in 120C.
  • the accumulation means that if there is no data in the file buffer 120C, the write data is written from the beginning of the file buffer 120C, and if there is data, it is added immediately after the data.
  • the size of the data stored in the file buffer 120 is not always an integral multiple of the cluster size, but is shown as an integral multiple for convenience of explanation.
  • Each of the file buffers 120A, 120B, and 120C has a 2-block size (8 clusters), but is shown as a block size for convenience of explanation.
  • the data storage section 140 After storing the write data in the file buffer 120, the data storage section 140 notifies the file management section 190 of the end of the storage processing.
  • the file writer 160 retrieves one block size of data from the beginning of one designated file buffer 120 based on an instruction from the file manager 190, and retrieves the retrieved data. The data is transferred to the write buffer 125 and the data remaining in the file buffer 120 is left-justified. Then, a write instruction is issued to the memory card 110 so that the data of the write buffer 125 is written to the designated block (one block size from the beginning of the block) of the flash memory 205.
  • the write instruction is to transfer the data of the write buffer 125 to the data buffer 202 of the memory card 110, and to write a command to the command execution unit 201 and a write destination block. Address and the size of write data.
  • the file management unit 190 controls the writing of file data to the flash memory 205 of the memory card 110, more specifically, the writing of file data to the memory card 110 in units of blocks. I do.
  • the file management unit 190 receives the input / output request information from the input / output request receiving unit 130. If the type of I / O request included in the received I / O request information is write, the data storage unit 140 is notified of the memory address and size of the write data included in the I / O request information, and An instruction is given to accumulate the write data in the file buffer 120 corresponding to the file indicated by the file descriptor included in the input / output request information.
  • the file management unit 190 checks the size of the data stored in the file buffer 120 and determines whether or not the size is equal to or larger than the block size. If the determination is affirmative, the file management unit 190 searches the FAT 335 for a free block, allocates a free block if there is one, and deletes the free block.
  • the empty block is erased by the file management unit 190 issuing an erase command designating the block number of the empty block to the command execution unit 201 of the memory card 110.
  • an empty block is a block in which all of the component clusters are empty (unused). In this embodiment, empty blocks are erased at the time of allocating empty blocks.
  • erasing of empty blocks should be performed at the time of occurrence of empty blocks or at any timing between the time of occurrence and the time of writing. You may.
  • whether or not erasing is performed may be managed by an erasing flag provided for each block, and erasing may be performed using the free time of the memory card 110.
  • the file management unit 190 specifies the specific file buffer 120 to the file writing unit 160, and the one-block size from the beginning of the file buffer 120 is specified. Instructs to write data to flash memory 205. Then, upon receiving the end notification from the file writing section 160, the file management section 190 updates the FAT 335 for the written file. For example, in FIG. 4, the file writing unit 160 stores one block of data of the file C in the writing buffer 125 into the new file C 425 (block number 6 composed of clusters 9 to 12). ) Is written into the flash memory 205, the file management unit 190 records the first cluster number 9 in the directory 42 of the file C, and the cluster 9 in the FAT 4 21 Record the next entry number in each entry as a chain of up to two classes.
  • the file management unit 190 When there is no free block, the file management unit 190 outputs log information indicating that writing is not possible due to insufficient free block to a log file (not shown) as an error processing, or displays it on a display unit (not shown). indicate.
  • writing is disabled when there are no free blocks.
  • the search for the block size is performed and the You may make it contact.
  • a “read-modify-write” for the block to which the cluster belongs is required.
  • the file management unit 190 receives an input / output request of a type other than a write request from the input / output request reception unit 130, it performs the following process. If the file with the file name included in the I / O request information is not in the flash memory 205 when the I / O request is a file open, a new file is created (created).
  • the file is specified, and file identification information called a file descriptor indicating the file is returned to the I / O request source as a processing result for the open I / O request.
  • the I / O request source will specify the file in the future using this file descriptor.
  • Creating a new file includes allocating memory for the file buffer 120 for the file and creating a directory.
  • the file management unit 190 completes the recording of the file indicated by the file descriptor included in the input / output request information. In this completion process, if there is data remaining in the file buffer 120 for the file, it is written to the flash memory 205 and the memory of the file buffer is released (returned).
  • the file management unit 190 reads data from the file indicated by the file descriptor included in the input / output request information and passes it to the input / output request source.
  • the file management unit 190 is started when the operation of the file recording device starts, and the system area 3 2 1 of the blocks 1 to 3 of the flash memory 205 is stored in the memory card 110 (FIG. 3). Is read into the memory. By this reading, information about blocks, clusters, and sectors is obtained. Updating of FAT or directory is first performed on the memory to improve processing efficiency. Then, a write command is issued to the memory card 110 as appropriate, and block 2 or block 3 of the flash memory 205 in FIG. 3 is written and updated as the latest information. In the system area, of course, blocks are erased before writing.
  • FIG. 5 to FIG. 7 are flowcharts showing the processing procedure of file recording. The operation of file recording will be described with reference to these figures.
  • an input / output request receiving unit 130 receives a file input / output request from an input / output request source.
  • the input / output request receiving unit 130 When the input / output request is for opening a new file (S 5 14), the input / output request receiving unit 130 also receives the name of the file to be opened from the input / output request source, and compares the open request with the file name. It is transmitted to the file management unit 190 as input / output request information.
  • the file management section 190 performs the open processing of the file having the specified file name (S516). Details of the file open processing will be described later.
  • the input / output request receiving unit 130 When the input / output request is to close a new file (S 518), the input / output request receiving unit 130 also receives the file description of the file to be closed from the input / output request source, and sends the close request and the file. The file is transmitted to the file management unit 190 as input / output request information. The file management unit 190 closes the file indicated by the file description (S520). The details of the file closing process will be described later.
  • the input / output request receiving unit 130 receives the write data directly following the write instruction, or the input / output request source sets in advance.
  • the address and data size (in bytes) on the memory where the written data exists are received following the write instruction.
  • the I / O request receiving unit 130 transfers the data to a data area (not shown) on the memory, and creates I / O request information indicating a data write request of the address and size. Notify the file management unit 190.
  • the write request process corresponding to the write request will be described later.
  • the request includes a request to read data of a file in the flash memory 205, but a detailed description thereof will be omitted.
  • FIG. 6 is a flowchart showing the process of opening and closing a file.
  • the file management unit 190 receives the file open input / output request information from the input / output request reception unit 130 and includes it in the input / output request information.
  • a directory of a file having a file name to be created for example, a directory 422 of "file C" in FIG. 4 is created in a root directory entry 324 of FIG. 3 (S610). If the directory of the file with the file name already exists, the file is an existing file and it is not necessary to create a directory.
  • the file management unit 190 secures a file buffer 120 C corresponding to the opened file, for example, a file buffer 120 C when the opened file is “file C” in FIG. 1 2). Then, a file descriptor, which is the pointer information indicating the file, is created, and the file descriptor is notified to the input / output request receiving unit 130 as a processing result.
  • the input / output request receiving unit 130 returns the file description as a processing result of the open request to the input / output request source via the input / output request receiving unit 130.
  • the file management unit 190 receives input / output request information for file close from the input / output request receiving unit 130, and outputs a file corresponding to the file indicated by the file descriptor included in the input / output request information.
  • Release buffer 120C (S612).
  • the recording date and time (not shown) are recorded in the directory of the file, for example, the directory 422, and the processing result of the close request is transmitted to the input / output request receiving unit 130 to notify the input / output request that the processing has been completed normally.
  • FIG. 7 is a flowchart showing processing of a file data write request. In FIG.
  • the file management unit 190 sends a specific file corresponding to the file indicated by the file descriptor included in the input / output request information to the data storage unit 140.
  • the buffer 120 and the address and size of the data area where the write data is present are notified, and an instruction is given to accumulate the data from the data area in the file buffer 120 (S710).
  • the data storage unit 140 performs a process of storing the write data of the designated data area in the aisle buffer 120 based on the instruction from the file management unit 190.
  • the file management unit 190 Upon receiving the notification of the completion of the storage from the data storage unit 140, the file management unit 190 checks the size of the data stored in the specific file buffer 120 to be stored in the notification of the completion.
  • the file management unit 190 searches the FAT 335 for an empty block (S 716), and if there is an empty block (S 718), allocates the empty block. Then, let the memory card 110 erase the empty block.
  • the file management unit 190 instructs the file writing unit 160 to write the data stored in the file buffer 120 into the empty block. Based on the instruction, the file writing unit 160 extracts data of the block size from the head of the specified file buffer 120 and transfers the data to the writing buffer 125 (S 714). ), Left-justify the remaining data in the file buffer 120.
  • the data of the write buffer 125 is transferred to the data buffer 202 of the memory card 110, and the write command is sent to the command execution unit 201, and the start address of the allocated free block is sent to the command execution unit 201.
  • the data is written to the specified block on the flash memory 205 in the memory card 110 (S 724).
  • the file writing section 160 Upon receiving the write completion notification from the memory card 110, the file writing section 160 also sends a write end notification to the file management section 190.
  • the file management section 19 Upon receiving the write end notification from the file writing section 160, the file management section 19 updates the FAT for the written file (S720). Then, the flow branches to S712 to perform the same processing on the remaining data in the file buffer 120.
  • an exception of write data accumulation may be implemented.
  • a write request may have an option to immediately write.
  • the data is immediately written to the flash memory 205 without storing the data.
  • a timer is set in the file buffer after storing the data, and if the state of the file buffer does not change even after a certain period of time, the data in the file buffer is written. You may do it.
  • all data in the file buffer corresponding to the requested file should be written before processing the request. You can. (Second embodiment)
  • the configuration of the file recording apparatus according to the present embodiment is different from the configuration of the first embodiment shown in FIG. 1 only in the specific configuration.
  • only the functions of the two components of the file management unit 190 and the file writing unit 160 are different, and the following mainly describes the differences.
  • FIG. 8 is a diagram showing an example in which data is accumulated in each of the file buffers 120A, 120B, and 120C and written to the flash memory in the present embodiment.
  • the data size of the specific file buffer 120 that has been recently accumulated has reached the block size
  • the data is written to the flash memory 2 ⁇ 5.
  • the data size of the specific file buffer 20 stored by the data storage unit 140 does not reach the block size
  • the data of each of the plurality of file buffers 120 is converted in cluster size units.
  • the file management unit 190 extracts the plurality of file buffers 120 from each of the plurality of file buffers 120 until a cluster size is reached. Then, transfer the data to the write buffer 1 25 and write it to a free block in the flash memory.
  • the flash memory 205 before writing is in the state of the example 3 16 in FIG. 3, and one cluster from file buffer A, one cluster from file buffer B, and file buffer C It can be seen that two clusters are taken out from, and written to an empty block (block number 6) consisting of clusters 9-12 as shown in flash memory example 8 11. Even in this case, file A 825 is written to cluster 9, file B 826 is written to cluster 10, and file C 827 is written to classes 1 and 12, so that files in the same cluster There is no mixing of data from different files.
  • Updates FAT 82 1 and directory 82 2 for the written file data Converting the data of each file buffer 120 in cluster size means that the maximum number of clusters among the number of clusters not exceeding the data size of the file buffer in each file buffer 120 is obtained. That is.
  • the data is written as a whole faster than writing the data of a single file by waiting until the data to be written becomes the block size unit for each file. Even when recording data of files with different data volume ratios such as simultaneous file recording of video data and audio data of the same subject, data of each file is recorded in each block in proportion to the data volume. Is done.
  • FIG. 9 is a flowchart showing details of the write request process.
  • FIG. 9 shows a flowchart of a write request process according to the first embodiment.
  • the same processes are denoted by the same step numbers.
  • the file management unit 190 when the data of a specific file buffer stored in the data storage unit 140 is not equal to or larger than the block size (S712), the file management unit 190 further stores a plurality of file buffers 1
  • the data of 20 is converted in units of cluster size, and it is determined whether or not the total number of clusters is equal to or more than the number of clusters constituting the block, that is, 4 or more (S926). If the judgment result is affirmative, the writing destination block is searched (S716)
  • the file management unit 190 takes out the plurality of file buffers 120 from the plurality of file buffers 120 until they reach the block size in cluster size units, and transfers them to the write buffer 125 (S 928). Update of FAT after writing to empty block is performed for multiple written files.
  • a filter driver operating under the file recording device efficiently records a file.
  • FIG. 10 shows a hierarchical configuration of software that operates in the file recording device of the present embodiment.
  • the application program 11010 is a file recording request source in the file recording device, and is, for example, a video content recording program.
  • the application program 1100 issues a file I / O request to the file system 1200 to record the file.
  • the file system 102 is an existing general-purpose file system, for example, a FAT file system of a Windows operating system (a product of Microsoft Corporation), and records and manages files.
  • the file system 1020 manages existing files and performs processing for file input / output requests from the application program 1010, including recording of new files.
  • the file system 102 itself allocates and manages cluster units as in the past, and does not perform block-aware management and processing.
  • the file system 1020 performs processing when a file input / output request is received from the application program 1010.
  • File I / O requests include opening and closing files, reading and writing file data, and so on.
  • the file system 1002 0 Upon receiving a file input / output request, the file system 1002 0 receives a file input / output request, and the memory card device driver 104 (FIG. 1) is a device driver of the memory card 110 (FIG. 1). 0) is issued at the device level.
  • a device-level I / O request means that, for example, when a file I / O request is a write request, the file system 1020 searches and allocates a free cluster by referring to the FAT as necessary, allocates it, and A write request is issued to the device driver 104 with the address specified by the sector number of the first sector of the cluster and the data size specified by the number of sectors instead of the number of bytes.
  • data input / output of the flash memory 205 is performed by specifying the sector.
  • Memory card filter driver 1 0 3 0 hereinafter simply referred to as “filter driver 1
  • driver data buffer which is an internal memory area, without writing the data to the device driver, and when certain conditions are met, the device driver 1040 is instructed to collectively store the stored data. Write to memory card 110. The details of the filter dryer 130 will be described later.
  • the device driver 1400 receives the decompile level input / output request from the filter driver 1300, and
  • the input / output processing for the memory card 110 is performed.
  • the memory card 110 is almost the same as that of the first embodiment, but the format of the flash memory is based on the block information in the reserved area 3222 of FIG. 3 in the first embodiment. The only difference is that the information of “block / cluster: 4” indicating the number of clusters constituting a certain block is not recorded in the present embodiment.
  • FIG. 11 is a flowchart showing a processing procedure of the filter dryino 1030. The processing of the input / output request of the filter driver 1030 will be described with reference to FIG.
  • the filter driver 1030 When loaded, the filter driver 1030 secures a fixed size, for example, two block sizes, of a dry data buffer which is a memory area used internally. Also, information on blocks such as information on the number of clusters constituting a block, for example, “block / cluster: 4” and information on correspondence between blocks, clusters and sectors is held as internal information.
  • driver level input / output requirements Is an I / O request in which reading and writing are specified in sectors.
  • the maximum size of the write data specified by the number of sectors is one block.
  • Driver-level I / O requests include writing, reading, and erasing a specified block.
  • FIG. 12 is a diagram in which the relationship between the data in the driver data buffer 1201 managed by the filter driver 130 and the block in the flash memory 205 of the memory card 110 is associated with an address. .
  • FIG. 12 it is assumed that data A 1, A 2, and A 3 are present in the driver data buffer 1 201 and they are continuous in the address, and the total of data A 1, A 2, and A 3 is one block. Minutes.
  • writing is performed after accumulating data up to one block in the file buffer.
  • writing after reaching the size of one block is not necessarily performed, but one writing is performed for part or all of one block. It does not straddle two blocks.
  • the data is accumulated in the driver data buffer 121 so that the same data can be written once. It only needs to be done twice.
  • the filter driver 1030 determines whether or not the dryno data buffer 1201 is empty (SI113). If empty, branch to S 1 1 2 0. If the driver data buffer 1 201 is not empty, it is determined whether or not the data of the write request (hereinafter referred to as “write data”) and the data of the driver data buffer 1 201 are continuous. 1 1 1 4).
  • data A1 is stored in the driver data buffer 1201
  • the write destination address (starting sector address) of A1 is sector s1
  • the number of write sectors is d1
  • the write is performed.
  • the write destination address of the request data A2 is s2 and the number of write sectors is d2
  • s2 is (s1 + d). If they match, it is determined that they are continuous.
  • the write data and the data in the driver data buffer 1 201 are not continuous (SI 1 16)
  • the data stored in the driver data buffer 1 201 is written to the flash memory 205 in the device. Dryno 1 0 4 0 is performed (SI 1 1 8).
  • the write data requested to be written is stored in the driver data buffer 1201 as follows (S112).
  • the filter driver 1300 saves the requested write data to the driver. Data is newly stored in the data buffer 1201.
  • the data of the write request is additionally stored in the data of the data buffer 1221, and the write data size is updated.
  • the write data size in which the number of sectors is d1 is set to (sl + s2) by adding the data size d2 of the write request.
  • the write destination address (sector number) and data size (sector number) of the driver data buffer 1210 are assumed to be about 100 million as management information (not shown) attached to the data buffer 1021.
  • the start address (sector number) of the data in the driver data buffer 1 201 is in the middle of block 1, the data in the driver data buffer 1 201 has one block, and ⁇ 2 and A 3 It is shown that the address straddles the block boundary.
  • the address straddles the block boundary.
  • the filter driver 1 0 3 0 It is determined whether there is a block boundary in the data of 1 (S112).
  • a block boundary in data means that any of the sectors to which data is written matches the end of the block, that is, the last sector of the block.
  • the data (A 1 + A 2) from the beginning of the data buffer 1 201 to the end of the block at the write destination address is written to the write destination block of the flash memory 205 (block 1 in the example of Figure 12). ) Is written.
  • the data write destination coincides with the block boundary, and the write to the write destination block (block 1 in the example of FIG.
  • writing is performed in block units by the filter driver 1030, but the present invention is not limited to this.
  • the function of the filter driver described above may be incorporated in the device driver and executed. Alternatively, the function of the filter driver described above may be incorporated in a file system and executed.
  • the method of the present invention may be a combination program for realizing the method using a computer system, or may be a digital signal representing the program.
  • the present invention may be a computer-readable recording medium on which the program or the digital signal is recorded, such as a semiconductor memory. Further, the present invention may be the computer program or the digital signal transmitted via an electric communication line, a wireless or wired communication line, or a network represented by the Internet, or the like.
  • the file recording apparatus can efficiently record a large amount of data such as video and audio such as video, and is used in an industry that records and distributes such a large amount of data, such as the music industry and the information industry.

Landscapes

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

Abstract

半導体メモリへのファイル記録の能率的に行なうファイル記録装置およびフィルタドライバを提供することを目的とする。 そのために、記録先のファイルに対応してファイルバッファを用意し、記録するデータをファイルバッファに蓄積し、蓄積データが半導体メモリの消去単位としてのブロックサイズに達したか否か判定し、達していると判定されたとき、半導体メモリの空きブロックに書き込む。あるいは、複数のファイルへのデータの記録の要求があったとき、それらのファイル用のファイルバッファのデータサイズがブロックサイズに達したときに空きブロック書き込む。あるいは、フィルタドライバにより、半導体メモリデバイスへの書き込みアドレスが連続するとき、データをデータバッファに蓄積し、データの書き込み先がブロック境界に達したとき書き込む。

Description

明細書
フアイル記録装置 技術分野
本発明は、 半導体メモリにファイルを記録するファイル記録装置に関する。 背景技術
電源を切っても記録されたデータが消えない、 いわゆる不揮発性の半導体メ モリは、 記録する前に消去が必要であるが、 機械的な駆動機構や回転がないこ とから耐振動性や静粛性に優れ、 また記録密度の向上による大容量化と相俟っ て、 CD (Compact Disk)、 DVD(Digital Versatile Disk)などと並ぴ、 情報記録 媒体としての普及に拍車がかかっている。
半導体メモリのなかでもバイ トごとの消去が必要な EEPROM (Electrically Erasable Programmable Read Only Memory) 改良し 7こフラッシュメモリ は、 ブロックと呼ぶ単位で一括して消去が行えるので、 SD メモリカードなど の製品としてディジタルカメラの記録用などに使われている。
このフラッシュメモリを含む各種の記録媒体のデータを管理するファイルシ ステムには、例えば FAT (File Allocation Table, Standard ECMA— 1 0 7 : Volume and File Structure of Disk Cartridges for Information Interchange) . NTFS (New Technology File System)、 UDF (Universal Disk Format) など がある。 ファイルシステムを利用して、 例えば映像や音声のデータをそれぞれ ファイルとして同時並行的に記録あるいは再生することが行なわれている。 ファイルシステムによるファイルは、 FATではクラスタと呼ぶ単位で容量の 割り当てと管理が行なわれる。
ファイルのデータがわずかでもクラスタを占有するので、 クラスタはそのサ ィズが大きいほどメモリの容量効率が低下してしまい、 一方、 ブロックはその サイズが大きいほどメモリの集積効率が良くなることから、 ブロックサイズは クラスタサイズょりも大きいのが普通である。
また、 クラスタが 2つのブロックに跨るような場合、 そのクラスタに記録す るときは、 2つのブロックの消去が必要となってしまう。 これを避けるため、 クラスタがブロック間に跨らないようにする技術が、 日本国の特許文献 「特開 2 0 0 1— 1 8 8 7 0 1号公報」 に開示されている。 ファイルシステムは、 フ ラッシュメモリのプロックに属するクラスタがすべて空きの状態であれば、 そ のブロックを消去し、 書き込むだけでよい。
しかし、 プロック内に既存のファイルのデータを記録しているクラスタがー つでもあれば、 そのブロックを消去する前にいつたん主記憶上の一時メモリに 読み込み (Read)、 当該ブロックを消去し (Delete)、 一時メモリ上で変更部分 を変更し (Modify)、 一時メモリの内容を書き出す (Write) という一連の操作 (リード ·モディファイ ' ライ トという) が必要となり、 この場合読み込みと 変更が余分にかかる。
また、 同じプロックへの記録を行なうごとに上記一連の操作が行なわれるの で、映像や音声のデータのように連続する大量のデータを同じプロ ックに対し て上述の一連の操作を繰り返しながら書き込んでいくと、 同じデータを何度も 読み出しては書き込むことになり、 膨大な処理時間がかかってしまう。 発明の開示
本発明は、 上記課題に鑑みてなされたものであり、 一括消去が必要な記憶媒 体に無駄なく能率的に記録するファィル記録装置を提供することを第 1の目的 とし、 従来のファイルシステムのもとで上記記憶媒体にデータを無駄なく能率 的に記録するプログラムを提供することを第 2の目的とする。
上記目的は、 クラスタをファイルに含まれるデータへの記録割当単位とし、 連続した所定数のクラスタで構成されるプロックの単位で消去が必要な記録媒 体に、 データを記録するファイル記録装置であって、 各ファイルのデータの前 記記録媒体への書き込み要求を受け付ける受付手段と、 複数のファイルパッフ ァと、 前記書き込み要求されたデータをそれぞれ前記ファィルバッファに各別 に蓄積させるデータ蓄積手段と、 前記データ蓄積手段により蓄積されたデータ のサイズがブ口ックサイズ以上であるか否かを判定する判定手段と、 判定が肯 定的であるとき、 前記データ蓄積手段により蓄積されたデータのうち、 ブロッ クサイズ分のデータを取り出し、 前記記録媒体の空きブロックに書き込む書込 手段とを備えることで達成できる。
このような構成によって、 記録前にプロック単位で消去が必要な記憶媒体に 対しファイルのデータを記録する要求があつたとき、 書き込み先ブロックへの データの書き込みは一回だけで済むので、 記録の要求の都度書き込むのに較べ ると書き込み先プロックに既に書き込んだデータがあればそれを再書き込みし なければならない無駄がなく、 フアイルを能率的に記録することができる。 ここで、 前記判定手段は、 前記蓄積手段にて最近蓄積された特定のファイル バッファのデータサイズがブロックサイズ以上のとき、 蓄積されたデータがブ ロックサイズ以上と判定し、 前記書込手段は、 前記特定のファイルバッファの 先頭からブロックサイズ分のデータを取り出し、 取り出したデータを前記空き ブロックに書き込むこととしている。
このような構成によって、 一つのファイルのデータが占有するブロックの単 位で書き込むことができる。
ここで、 前記判定手段は、 各ファイルバッファのデータサイズをクラスタサ ィズで除した商の合計が前記所定数以上のとき、 蓄積されたデータがプロック サイズ以上と判定し、 前記書込手段は、 前記各ファイルバッファからクラスタ のサイズの単位で前記所定数のクラスタ分のデータを取り出し、 前記空きプロ ックに書き込むこととできる。
このような構成によって、 複数の各ファイルの書きこみデータ量の比率に準 じて各ファイルのデータが混在するブロックの単位で書き込むことができる。 ここで、 割り当てられた前記空きプロックに前記書込手段が書き込む前に、 前記空きブロックの消去を行なう消去手段をさらに備えることができる。 このような構成によって、 データの書き込み時までに、 当該データの書き込 み先ブロックの消去ができる。
また、 上記目的は、 複数のファイルバッファを備え、 クラスタをファイルに 含まれるデータへの記録割当単位とし、 連続した所定数のクラスタで構成され るプロックの単位で消去が必要な記録媒体に、 データを記録するファイル記録 装置の制御方法であって、 各ファイルのデータの前記記録媒体への書き込み要 求を受け付ける受付ステップと、 前記書き込み要求されたデータをそれぞれ前 記ファイルバッファに各別に蓄積させるデータ蓄積ステップと、 前記データ蓄 積ステップにより蓄積されたデータのサイズがブロックサイズ以上であるか否 かを判定する判定ステップと、 判定が肯定的であるとき、 前記データ蓄積ステ ップにより蓄積されたデータのうち、 ブロックサイズ分のデータを取り出し、 前記記録媒体の空きプロックに書き込む書込ステツプとを有する制御方法とす ることで達成できる。
このような構成によって、 記録前にブロック単位で消去が必要な記憶媒体に 対しファイルのデータを記録する要求があつたとき、 書き込み先プロックへの データの書き込みは一回だけで済むので、 記録の要求の都度書き込むのに較べ ると書き込み先ブロックに既に書き込んだデータがあればそれを再書き込みし なければならない無駄がなく、 フアイルを能率的に記録することができる。 また、 上記目的は、 複数のファイルバッファを備え、 クラスタをファイルに 含まれるデータへの記録割当単位とし、 連続した所定数のクラスタで構成され るブロックの単位で消去が必要な記録媒体に、 データを記録するファイル記録 装置に、 各ファイルのデータの前記記録媒体への書き込み要求を受け付ける受 付ステップと、 前記書き込み要求されたデータをそれぞれ前記ファィルパッフ ァに各別に蓄積させるデータ蓄積ステップと、 前記データ蓄積ステップにより 蓄積されたデータのサイズがプロックサイズ以上であるか否かを判定する判定 ステップと、 判定が肯定的であるとき、 前記データ蓄積ステップにより蓄積さ れたデータのうち、 プロックサイズ分のデータを取り出し、 前記記録媒体の空 きプロックに書き込む書込ステップとを実行させるプログラムとすることで達 成できる。
このような構成によって、 記録前にプロック単位で消去が必要な記憶媒体に 対しファイルのデータを記録する要求があつたとき、 書き込み先ブロックへの データの書き込みは一回だけで済むので、 記録の要求の都度書き込む.のに較べ ると書き込み先プロックに既に書き込んだデータがあればそれを再書き込みし なければならない無駄がなく、 フアイルを能率的に記録することができる。 また、 上記目的は、 ドライバデータバッファを備え、 クラスタをファイルに 含まれるデータへの記録割当単位とし、 連続した所定数のクラスタで構成され るプロックの単位で消去が必要な記録媒体にデータを記録するファィル記録装 置に、 前記記録媒体における書き込み先ァドレスを含む書き込みの要求を受け 付ける受付ステップと、 前記ドライバデータバッファが空きでないとき、 前記 書き込みのデータと前記ドライバデータバッファのデータとが前記記録媒体の ァドレスにおいて連続するか否かを判定する第 1判定ステップと、 肯定と判定 されたとき、 書き込みのデータを前記ドライバデータパッファに蓄積させるデ 一夕蓄積ステップと、 前記ドライバデ一タバッファに蓄積されたデータの書き 込み先がプロックの境界に一致するか否かを判定する第 2判定ステップと、 第 2判定ステップにて肯定と判定されたとき、 前記ドライバデータバッファの先 頭から前記ブロックの境界までのデータを前記記録媒体に書き込む書込ステツ プとを実行させるためのプログラムとすることで達成できる。
このような構成によつて、 記録前にプロック単位で消去が必要な記憶媒体に 対し、 記憶媒体の書き込み先のァドレスを指定してファイルのデータを書き込 む要求があつたとき、 書き込み先ブロックへの要求のあったデータの書き込み は一回だけで済むので、 書き込みの要求の都度書き込むのに較べて、 書き込み 先プロックに以前プロックに書き込み要求で書き込んだデータがあればそれを 再書き込みしなければならないという無駄がなく、 ファイルを能率的に記録す ることができる。
ここで、 前記プログラムは前記記録媒体のフィルタドライバであることとで ぎる。
このような構成によって、 フィルタドライバの追加だけで、 既存のファイル システムのもとでファイルを能率的に記録することができる。 図面の簡単な説明
図 1は、 本発明に係るファィル記録装置の第 1の実施の形態の構成を示す図で ある。
図 2は、 上記実施の形態のメモリカードの構成を示す図である。
図 3は、 上記実施の形態におけるフラッシュメモリのフォーマツ トの一例を示 す図である。
図 4は、 上記実施の形態におけるファイルバッファのデータの蓄積の様子と、 フラッシュメモリに書き込まれる一例を示す図である。
図 5は、 上記実施の形態のファイル記録の全体の処理手順を示すフローチヤ一 トである。
図 6は、 上記実施の形態のファイル記録のオープン等の処理手順を示すフロー チャートである。
図 7は、 上記実施の形態のファイル記録の書き込み要求の処理手順を示すフロ 一チヤ一トである。
図 8は、 本発明に係るファイル記録装置の第 2の実施の形態におけるファイル バッファのデータの蓄積の様子とフラッシュメモリに書き込まれる一例を示す 図である。
図 9は、 上記実施の形態の書き込み要求の処理手順を示すフローチャートであ る。
図 1 0は、 本発明に係るファイル記録装置の第 3の実施の形態におけるソフ ト ウェアの階層構成を示す図である。
図 1 1は、 上記実施の形態のフィルタドライバの処理手順を示すフローチヤ一 トである。
図 1 2は、 上記実施の形態のデータバッファのデータとフラッシュメモリのブ ロックとの関係を示す図である。 発明を実施するための最良の形態
以下に、 本発明に係るファイル記録装置の実施の形態について図面を参照しな がら説明する。
(第 1の実施の形態)
第 1の実施の形態は、ファイルシステムにより能率的にフアイルを記録する。 図 1は、 本実施の形態の構成を示す図である。
フアイル記録装置は、 メモリカード 1 1 0、 フアイルパッファ 1 2 0、 入出 力要求受付部 1 3 0、 データ蓄積部 1 4 0、 プロック管理部 1 5 0、 ファイル 書込部 1 6 0、 ファイル管理部 1 9 0から構成される。
ファイル記録装置は、 他に不図示の C P Uとメモリを備え、 上記の構成各部 はプログラムあるいはメモリ領域であり、 構成部がプログラムの場合はメモリ にローデイングされ、 C P Uで実行する。
ファイル記録装置は、 単数のファイルまたは複数の各ファイルに対する入出 力要求を受け付ける。 入出力要求元は、 例えばファイル記録装置で動作するァ プリケーシヨン、 ネッ トワークを通じて要求を発行する装置等である。 入出力 要求元は、 同時並行的に複数のフアイルへの記録をファィル記録装置に要求す ることができる。
また、 入出力要求元は、 複数の種類、 例えばアプリケーションとネットヮ一 ク上の他の装置であっても、 1種類の中で複数、 例えばアプリケーションの種 類においてアプリケーション A、 B、 C など、 であっても構わない。 入出力要 求元は、 ここでは単数として扱う。
次に、 フアイル記録装置の構成要素について説明する。
メモリカード 1 1 0は、 入出力要求元から要求のあったファイルの記録を行 つ。
メモリカード 1 1 0の構成を図 2に示す。 図 2において、 メモリカード 1 1 0は、 コマンド実行部 2 0 1、 データバッファ 2 0 2、 フラッシュメモリ 2 0 5で構成される。
コマンド実行部 2 0 1は、 メモリカード 1 1 0で実行できるコマンドをファ ィル書込部 1 6 0から受け取り、 そのコマンドを実行する。 コマンド実行部 2 0 1コマンドが実行できるコマンドには、フラッシュメモリ 2 0 5の書き込み、 読み込み、 ブロック消去とがある。
書き込みコマンドには、 フラッシュメモリ 2 0 5における書き込み先の先頭 アドレスとしてセクタ番号が、 データサイズとしてセクタ数が含まれている。 コマンド実行部 2 0 1は、 書き込みコマンドを受け取ると、 データバッファ 2 0 2に設定されているセクタ数分のデータをフラッシュメモリ 2 0 5の上述の セクタ番号から書き込んでいく。 ここで、 データサイズとしてのセクタ数の最 大は、 1ブロックサイズ相当数、 つまり 1 2 8である。 データパッファ 2 0 2は、 書き込みコマンドの書き込み対象のデータを保持 するブロックサイズのバッファである。 データバッファ 2 0 2は、 ファイル書 込部 1 6 0により転送された書き込みデータを保持し、 書き込みコマンドを受 け取ったコマンド実行部 2 0 1により、 ファイル書込部 1 6 0の書き込みデ一 タがフラッシュメモリ 1 1 0に書き込まれる。データバッファ 2 0 2は、また、 読み込みコマンドによりフラッシュメモリ 2 0 5から読みこれたデータを保持 する。
読み込みコマンドには、 フラッシュメモリ 2 0 5における読み込み先の先頭 アドレスとデータサイズとして、 セクタ番号とセクタ数とが含まれている。 セ クタ数の最大は、 書き込みの場合と同じく 1 2 8である。
フラッシュメモリ 2 0 5は、記録前にプロックの単位で消去が必要なメモリ、 つまり書き込むセクタ (後述)、 あるいはクラスタ (後述) が構成するブロック の消去が必要なメモリであり、 コマンド実行部 2 0 1によって書き込まれたフ アイルのデータを記憶する。
消去コマンドには、 消去するブロック番号が含まれている。 コマンド実行部 2 0 1は、 消去コマンドを受け取ると、 フラッシュメモリ 2 0 5の指定のプロ ック番号のプロックの消去を行なう。
図 3は、 フラッシュメモリ 2 0 5のフォーマットの一例を示す図である。 図 3において、 フラッシュメモリ 2 0 5は、 ブロック 3 1 1、 クラスタ 3 1 2、 セクタ 3 1 3の階層的な区分の単位で管理される。
ブロック 3 1 1は、 記録前に必要な消去の単位である。 ファイルのデータの 書き込みの際、 未使用である空きプロックがそのファイルのデータに割り当て られる。 なお、 プロック番号 4 0 0 1—4 1 9 2は予備として図 3に記載して いない。
クラスタ 3 1 2は、 ファイルのデータに対する割り当ての最小単位であり、 ファイルの管理表である後述の FAT 2 0 5で参照される。
セクタ 3 1 3は、 データ入出力の最小単位であり、 1から順に整数のセクタ 番号が付されていて、そのセクタ番号がフラッシュメモリ上のァドレスを示す。 また、 フラッシュメモリ 2 0 5への書き込みのときのデータのサイズは、 パイ ト数ではなくセクタ数が使用される。 図 3のセクタ 3 1 3では、 各プロックぉ よび各クラスタの先頭セクタ番号だけを記している。
フラッシュメモリ 2 0 5は、 その領域 3 1 4が、 システム領域 3 2 1とユー ザ領域 3 3 1に大別される。
システム領域 3 2 1には、 管理情報が記録される。 システム領域 3 2 1は、 さらに、 予約領域 3 2 2、 FAT領域 3 2 3、 ルートディ レクトリエントリ 3 2 4からなる。
予約領域 3 2 2は、 ブート情報、 および記録媒体であるフラッシュメモリ 2 0 5に関するパラメータ情報等を納める。 例 3 1 6によると、 セクタサイズは 5 1 2 B (バイ ト)、 1クラスタは 1 6 KB、 1クラスタは 3 2セクタ、 1プロ ックは 4クラスタというパラメータが記録されている。 この場合、 1クラスタ は 1 6 KB、 1ブロックは 6 4 KBのサイズを有している。 図 3の例では、 フラ ッシュメモリ 2 0 5は、 2 5 6 M Bの記憶容量を有している。 なお、 クラスタ サイズ、 ブロックサイズはこの値に限定されるものでは勿論ない。 フラッシュ メモリによっては、 1ブロックが 1 2 8 KB、 あるいは 2 5 6 KB等となる場合 もあり、 クラスタサイズも 8 KB、 3 2 KB等となる場合もある。
FAT領域 3 2 3は、 : FAT 3 3 5を納める。 FAT 3 3 5は.、 フアイルのデ一夕 が存在するクラスタの場所を示す表である。
ルートディ レクトリエント リ 3 2 4は、 ファイルの管理情報を納めたディ レ クトリからなる領域である。 各ディ レクドリには、 ファイル名、 ファイルの記 録日時(不図示)、 このファイルに割り当てられ、 占有されている先頭のクラス タ番号 (あるいは先頭の FATエントリ番号) などが納められる。
例えば、 ファイル Aのディ レクトリ 3 3 6は、 先頭クラスタが 1であり、 ク ラスタ 1に対応する FAT 3 3 5のェントリ 1を見ると 「2」 が記録されている ので、 ファイル Aはクラスタ 1に続いてクラスタ 2を占有することが分かる。 同様に、 エントリ 2には 「3」 が記録されているので、 クラスタ 3を占有し、 エントリ 3には「4」が記録されているので、 クラスタ 4を占有している。 FAT のエントリ 4にはファイルの最終であることを示す「FF」が記録されているの で、 占有しているクラスタは、 1 , 2 , 3 , 4の連続したクラスタであり、 こ れはブロック 4に相当することが分かる。 なお、 FAT領域 3 2 3には、 FAT 3 3 5が安全のため二重に納められてい.る (不図示)。
ユーザ領域 3 3 1は、 ファイルのデータ、 あるいはディ レクトリの情報が記 録される領域であり、 ファイルのデータへの割当は、 本実施の形態では、 原則 的にブロック単位で行なう。 システム領域 3 2 1のフォーマッ トは固定的であ り、 クラスタ番号はユーザ領域でのみ使用される。
図 1に戻り、 フアイルバッファ 1 2 0は、 記録要求元から記録要求のあつた データを一時的に記憶しておくための 2ブロックサイズのバッファ (メモリ領 域) であり、 ファイルの入出力要求元から記録を行なうファイルのオープンの 要求時にファイル管理部 1 9 0によりそのファイル専用に確保され、 ファイル のクローズの要求でファイル管理部 1 9 0により開放 (返却) される。 なお、 ファイルバッファ 1 2 0のサイズは 2ブロックサイズとしたが、 後述の入出力 要求の書き込みデータの最大サイズに 1プロックサイズを加えたサイズであれ ばよい。
書き込みバッファ 1 2 5は、 フラッシュメモリ 2 0 5に書き込むファイルの デー夕を一時的に記憶しておくためのブロックサイズのメモリ領域であり、 フ アイル書込部 1 6 0により利用される。
入出力要求受付部 1 3 0は、 入出力要求元からメモリカード 1 1 0のフラッ シュメモリ 2 0 5のファイルの入出力要求を受け付ける。 ファイルの入出力要 求には、フアイルのオープン、クローズ、ファイルのデータの書き込み(Write)、 ファイルのデータの読み込み (Read) 等がある。
入出力要求がファイルのオープンのとき、 入出力要求受付部 1 3 0は、 ォー プンするファイルの情報であるファイル名を、 また、 クローズのとき、 クロー ズするファイルの情報であるファイルデスクリプタ (後述) を入出力要求元か らさらに受け取る。
入出力要求がファイルのデータの書き込みの場合、 入出力要求受付部 1 3 0 は書き込むべきファイルのデータ (以下、 「書き込みデータ」 という) も入出力 要求元から受け取る。 書き込みデータは、 書き込みの指示に続けて直接受け取 るか、 または、 あらかじめ書き込み要求元が設定したデータが存在するメモリ 上のアドレスとデータサイズ (バイ ト単位) を書き込みの指示に続けて受け取 る。 ここで、 入出力要求受付部 1 3 0が受け付ける書き込み要求ごとの書き込 みデータサイズの最大値はプロックサイズ (6 4 K B) とする。 なお、 この最 大値は固定ではなく別のサイズ、 例えば 2 5 6 K Bにしてもよい。
書きこみデータを直接受け取ったとき、 入出力要求受付部 1 3 0は、 メモリ 上のデータ領域 (不図示) に書き込みデータを転送しておく。
入出力要求がファイルのデータの読み込みの場合、 入出力要求受付部 1 3 0 は読み込むべきファイルのデータに関する情報を入出力要求元から受け取るが、 ファイル記録においては利用しないので詳細な説明は省略する。
入出力要求受付部 1 3 0は、 受け取った入出力要求の種類 (オープン、 書き 込み等) と、 処理対象のファイルの情報 (例えば書き込みとクローズのときは ファイルデスクリブタ、 またオープンの時はファイル名称) と、 さらに、 書き 込み要求のときは書き込みデータのァドレスとサイズとを入出力要求情報とし て、 ファイル管理部 1 5 0に通知する。 そして、 通知した入出力要求情報につ いての処理結果の情報を、 ファイル管理部 1 5 0から受け取り、 入出力要求元 に通知する。 処理結果の入出力要求元への通知は、 処理結果の情報を直接通知 するか、 またはメモリ領域に処理結果の情報を転送し、 そのメモリァドレスを 通知することにより行なう。
データ蓄積部 1 4 0は、 ファイル管理部 1 9 0からの指示に基づき、 フアイ ルデスクリプ夕で示されるファイルに対応するファイルバッファ 1 2 0への書 き込みデータの蓄積処理を行なう。 当該書き込みデータの受け取りは、 フアイ ル管理部 1 9 0からデータが存 、—'在するメモリ上のァドレスとサイズを受け取る ことにより行なう。
図 4は、 各ファイルバッファ 1 2 0A、 1 2 O B, 1 2 0 Cにデータが蓄積さ れ、 フラッシュメモリ 2 0 5に書き込まれる一例を示す図である。 図 4におい て、 書き込みデータの蓄積処理は、 記録中のファイルごとに確保されているフ アイルパッファ、例えばフアイルバッファ 1 2 0A、 1 2 0 B、 1 2 0 Cのうち、 書き込みデータの属するファイルに対応するファイルバッファ、 例えば書き込 みデータがファイル Cのデータのとき、ファイル Cに対応するフアイルパッフ ァ 1 2 0 Cに書き込みデータを蓄積する。 ここで蓄積とは、 ファイルバッファ 1 2 0 Cにデータがなければ、 書き込みデータをファイルバッファ 1 2 0 Cの 先頭から書き込み、 また、 データがあればその直後に追加することをいう。 な お、 ファイルバッファ 1 2 0に蓄積されたデータのサイズは、 クラスタサイズ の整数倍とは限らないが、 説明の便宜上、 整数倍として例示した。 また、 ファ ィルバッファ 1 2 0A、 1 2 O B, 1 2 0 Cはいずれも 2ブロックサイズ (8ク ラスタ) あるが、 説明の便宜上ブロックサイズとして示した。
データ蓄積部 1 4 0は、 書き込みデータをファイルバッファ 1 2 0に蓄積し た後、 ファイル管理部 1 9 0に蓄積処理の終了通知を行なう。
ファイル書込部 1 6 0は、 ファイル管理部 1 9 0からの指示に基づき、 一つ の指定されたフアイルバッファ 1 2 0において、 その先頭から 1プロックサイ ズ分のデータを取り出し、 取り出したデータを書き込みバッファ 1 2 5に転送 し、 ファイルバッファ 1 2 0に残ったデータを前詰めする。 そして、 書き込み ノ ッファ 1 2 5のデータをフラッシュメモリ 2 0 5の指定のプロック (プロッ ク先頭から 1ブロックサイズ分) に書き込むよう、 メモリカード 1 1 0に書き 込み指示を行う。 ここで、 書き込み指示とは、 書き込みバッファ 1 2 5のデー タをメモリカード 1 1 0のデータバッファ 2 0 2に転送するとともに、 コマン ド実行部 2 0 1に対して書き込みコマンドと、 書き込み先ブロックのアドレス と、 書き込みデータのサイズとを設定することをいう。
フアイル管理部 1 9 0は、 メモリカード 1 1 0のフラッシュメモリ 2 0 5へ のファイルのデータの書き込み、 より詳しくはメモリカード 1 1 0のファイル のデータの書き込みがプロック単位で行なわれるように制御する。
フアイル管理部 1 9 0は、 入出力要求受付部 1 3 0から入出力要求情報を受 け取る。 受け取った入出力要求情報に含まれる入出力要求の種類が書き込みの 場合、 データ蓄積部 1 4 0に対して、 当該入出力要求情報に含まれる書き込み データのメモリアドレスとサイズとを通知し、 また入出力要求情報に含まれる ファイルデスクリプタが示すファイルに対応するファイルバッファ 1 2 0に当 該書き込みデータを蓄積するように指示する。
そして、 データ蓄積部 1 4 0から書き込みデータの蓄積の終了通知を受け取 ると、 フアイル管理部 1 9 0は、 上記ファィルバッファ 1 2 0に蓄積されたデ ータのサイズを調べ、 それがプロックサイズ以上であるか否かを判定する。 判定が肯定の場合、 ファイル管理部 1 9 0は、 FAT 3 3 5から空きプロック を検索し、 あればその空きブロックを割り当て、 さらに、 その空きブロックを 消去する。 空きブロックの消去は、 ファイル管理部 1 9 0がメモリカード 1 1 0のコマンド実行部 2 0 1に対し、 その空きブロックのブロック番号を指定し た消去コマンドを発行することにより行なう。 ここで空きブロックとは、 構成 要素のクラスタのすべてが空き(未使用)となっているプロックのことである。 なお、 空きプロックの消去は、 本実施の形態では空きブロックの割り当て時 に行なうとしたが、 空きブロックの発生時、 または、 発生時から書き込み時ま での間のいずれかのタイミングで行なうようにしてもよい。 また、 消去の有無 を、 プロックごとに設けた消去フラグで管理するようにし、 メモリカード 1 1 0の空き時間を利用して消去するようにしてもよい。
ファイル管理部 1 9 0は、 次に、 ファイル書込部 1 6 0に対して、 その特定 のファイルバッファ 1 2 0を指定して、 そのファイルバッファ 1 2 0の先頭か ら 1ブロックサイズ分のデータをフラッシュメモリ 2 0 5に書き込むように指 示する。 そして、 ファイル管理部 1 9 0は、 ファイル書込部 1 6 0から終了通 知をうけとったら、 書き込んだファイルに関して FAT 3 3 5を更新する。 例えば、図 4において、ファイル書込部 1 6 0が新規のファイル C 4 2 5に、 書き込みバッファ 1 2 5にあるファイル Cのデータ 1ブロック分(クラスタ 9 〜1 2により構成されるブロック番号 6 ) をフラッシュメモリ 2 0 5に書き込 むと、 ファイル管理部 1 9 0は、 ファイル Cのディ レクトリ 4 2 2に先頭のク ラスタ番号である 9を記録し、 FAT4 2 1内のクラスタ 9から 1 2までのクラ ス夕の連鎖として、 各ェントリに次のェントリ番号をそれぞれ記録する。
ファイル管理部 1 9 0は、 空きプロックがないときは、 エラ一処理として、 空きプロックの不足の書き込み不可とする旨のログ情報を不図示のログフアイ ルに出力し、 あるいは不図示の表示部に表示する。
なお、 本実施の形態では、 空きブロックがないとき書き込み不可としたが、 空きクラスタの合計がブロックサイズ分あれば、 ブロックサイズ分を検索し割 り当てるようにしてもよい。 この場合は、 各クラスタごとにそのクラスタが属 するブロックに対する 「リード ·モディフアイ ' ライ ト」 が必要である。 ファイル管理部 1 9 0は、 また、 入出力要求受付部 1 3 0から書き込み要求 以外の種類の入出力要求を受け取ったとき、 その処理を次のように行なう。 入出力要求がファイルのオープンのとき、 入出力要求情報に含まれるフアイ ル名のフアイルがフラッシュメモリ 2 0 5になければ新規ファィルの創生 (ク リエイ ト) を行ない、 また、 既にあればそのファイルを特定し、 当該ファイル を示すファィルデスクリプタと呼ぶフアイル識別情報を、 入出力要求元にォー プンの入出力要求に対する処理結果として返す。 入出力要求元は、 今後はファ ィルの指定をこのファイルデスクリプタにより行なう。 新規ファイルの創生に は、 当該フアイル用のフアイルバッファ 1 2 0のメモリ確保、 ディ レクトリの 作成が含まれる。
入出力要求がファイルのクローズのとき、 ファイル管理部 1 9 0は、 入出力 要求情報に含まれるファィルデスクリプ夕が示すファィルの記録の完了処理を 行なう。 この完了処理には、 当該ファイル用のファイルバッファ 1 2 0に残つ たデータがあれば、 それをフラッシュメモリ 2 0 5に書き込み、 当該ファイル バッファのメモリを開放 (返却) する。
また、 入出力要求がファイルの読み込み.のとき、 ファイル管理部 1 9 0は、 入出力要求情報に含まれるファイルデスクリプタが示すファイルからデータを 読み込んで、 入出力要求元に渡す。
ファイル管理部 1 9 0は、 ファイル記録装置の動作開始のときに起動され、 メモリカード 1 1 0に対して、 フラッシュメモリ 2 0 5のブロック 1〜 3のシ ステム領域 3 2 1 (図 3 ) をメモリに読込む。 この読み込みにより、プロック、 クラスタ、 セクタに関する情報等を得る。 また、 F ATあるいはディ レクトリ の更新は、 処理の効率化のために、 まずメモリ上で行う。 そして、 適宜、 メモ リカード 1 1 0に対し書込コマンドを発行して、 図 3のフラッシュメモリ 2 0 5のブロック 2またはブロック 3を最新の情報として書き込み、 更新する。 な お、 システム領域についても、 書き込みの前にブロックを消去するのは勿論で ある。 図 5〜図 7は、 ファイル記録の処理手順を示すフロ一チャートである。 ファ ィル記録の動作をこれらの図をもとに説明する。
図 5において、 入出力要求受付部 1 3 0は、 ファイルの入出力要求を入出力 要求元から受け付ける。
入出力要求が、 新規のファイルのオープンのとき (S 5 1 4 )、 入出力要求受 付部 1 3 0は、 オープンするファイル名も入出力要求元から受け取り、 オーブ ン要求とファイル名とを入出力要求情報としてファイル管理部 1 9 0に伝達す る。 ファイル管理部 1 9 0は、 指定ファイル名のファイルのオープン処理を行 なう (S 5 1 6 )。 ファイルのオープン処理の詳細は後述する。
入出力要求が、 新規のファイルのクローズのとき (S 5 1 8 )、 入出力要求受 付部 1 3 0は、 クローズするファイルのファイルデスクリプ夕も入出力要求元 から受け取り、 クローズ要求とファイルデスクリブ夕とを入出力要求情報とし てファイル管理部 1 9 0に伝達する。 ファイル管理部 1 9 0は、 そのファイル デスクリプ夕が示すファイルのクローズ処理を行なう (S 5 2 0 )。 ファイルの クローズ処理の詳細は後述する。
入出力要求が、 データの書き込みのとき (S 5 2 2 )、 入出力要求受付部 1 3 0は、 書き込みデータを、 書き込みの指示に続けて直接受け取るか、 または、 あらかじめ入出力要求元が設定した書き込みデータが存在するメモリ上のァド レスとデータサイズ (バイ ト単位) を書き込みの指示に続けて受け取る。 デー タを直接受け取ったとき、 入出力要求受付部 1 3 0は、 メモリ上のデータ領域 (不図示) にデータを転送し、 そのアドレスとサイズのデータ書き込み要求を 示す入出力要求情報を作成し、 ファイル管理部 1 9 0に通知する。 書き込み要 求に対応する処理である書込要求処理については後述する。
また、入出力要求が、上記以外のとき、当該要求に対応する処理を行なう (S 5 2 6 )。当該要求には、 フラッシュメモリ 2 0 5のファイルのデータの読み込 み要求も含まれるが詳細な説明は省略する。
図 6は、ファイルのオープンとクローズの処理を示すフローチヤ一トである。 ファイルのオープンでは、 ファイル管理部 1 9 0は、 ファイルオープンの入 出力要求情報を入出力要求受付部 1 3 0から受け取り、 入出力要求情報に含ま れるファイル名のファイルのディ レクトリ、 例えば図 4の 「ファイル C」 のデ ィ レクトリ 4 2 2を、図 3のルートディ レクトリエントリ 3 2 4に作成する(S 6 1 0 )。 なお、 ファイル名のファイルのディ レクトリが既にあれば、 そのファ ィルは既存ファイルでありディ レクトリの作成は不要である。
次に、 ファイル管理部 1 9 0は、 オープンしたファイルに対応するファイル ノ ッファ 1 2 0、 例えば図 4においてオープンしたファイルが 「ファイル C」 のときファイルバッファ 1 2 0 Cを確保する (S 6 1 2 )。 そして、 当該フアイ ルを示すボインタ情報であるファィルデスクリプタを作成し、 入出力要求受付 部 1 3 0に処理結果として通知する。 入出力要求受付部 1 3 0は、 オープン要 求の処理結果としてそのファイルデスクリプ夕を入出力要求受付部 1 3 0を通 じて入出力要求元に返す。
ファイルのクローズでは、 ファイル管理部 1 9 0は、 ファイルクローズの入 出力要求情報を入出力要求受付部 1 3 0から受け取り、 入出力要求情報に含ま れるファイルデスクリプ夕が示すファイルに対応するファイルバッファ 1 2 0 Cを開放する (S 6 1 2 )。 最後に、 当該ファイルのディ レクトリ、 例えばディ レクトリ 4 2 2に記録日時 (不図示) を記録し、 クローズ要求の処理結果とし て入出力要求受付部 1 3 0を通じて正常終了の旨を入出力要求元に返す。 図 7は、 ファイルのデータ書込要求の処理を示すフローチャートである。 図 7において、 ファイル管理部 1 9 0は、 入出力要求がデータの書き込みの とき、 データ蓄積部 1 4 0に対し、 入出力要求情報に含まれるファイルデスク リプタが示すファイルに対応する特定のファイルバッファ 1 2 0と、 書き込み データが存在するデータ領域のァドレスとサイズとを通知して、 上述のデータ 領域からファイルバッファ 1 2 0に蓄積するように指示する (S 7 1 0 )。デー タ蓄積部 1 4 0は、 ファイル管理部 1 9 0からの'指示に基づき、 指定されたデ —タ領域の書き込みデータをアイルバッファ 1 2 0へ蓄積する処理を行なう。 データ蓄積部 1 4 0から、 蓄積の終了通知を受け取ったとき、 ファイル管理 部 1 9 0は、 終了通知で蓄積の対象となつた特定のフアイルパッファ 1 2 0に 蓄積されたデータのサイズを調べ、 それがプロックサイズで以上であるか否か を判定する (S 7 1 2 )。 判定が肯定の場合、 フアイル管理部 1 9 0は、 FAT 3 3 5から空きプロック を検索し (S 7 1 6 )、 空きブロックがあれば (S 7 1 8 )、 その空きブロック を割り当て、 さらに、 メモリカード 1 1 0にその空きブロックを消去させる。 ファイル管理部 1 9 0は、 当該ファイルバッファ 1 2 0に蓄積されたデータ を上記の空きブロックに書き込むようにファイル書込部 1 6 0に指示する。 フ アイル書込部 1 6 0は、 その指示に基づき、 指定のファイルバッファ 1 2 0の 先頭からブロックサイズ分のデータを取り出し、 そのデータを書き込みパッフ ァ 1 2 5に転送し(S 7 1 4 )、 ファイルバッファ 1 2 0の残ったデータを前詰 めする。 そして、 書き込みパッファ 1 2 5のデータをメモリカード 1 1 0のデ 一夕バッファ 2 0 2に転送するとともに、 コマンド実行部 2 0 1に対して書き 込みコマンドと、 割り当てられた空きプロックの先頭ァドレスとプロックサイ ズとを設定することにより、 メモリカード 1 1 0に対し、 フラッシュメモリ 2 0 5上の指定のプロックにデータを書き込ませる (S 7 2 4 )。 フアイル書込部 1 6 0は、 メモリカード 1 1 0から書き込みの終了通知を受け取ると、 フアイ ル管理部 1 9 0に書き込みの終了通知を同じく行なう。
ファイル管理部 1 9ひは、 ファイル書込部 1 6 0から書き込みの終了通知を 受け取ると、 書き込んだファイルに関して FATを更新する (S 7 2 6 )。 そし て、 S 7 1 2に分岐して当該ファイルバッファ 1 2 0の残ったデータに関して 同様な処理を行なう。
本実施の形態の変形例として、書き込みデータ蓄積の例外を実施しても良い。 例えば、 書き込み要求において、 直ちに書き込みを行なわせるオプションがあ つても良い。 この場合はデータの蓄積を行なわないで直ちにフラッシュメモリ 2 0 5に書き出す。 あるいは、 書き込み要求があつたとき、 データ蓄積後、 当 該フアイルバッファにタイマを設定し、 一定時間たつても当該フアイルバッフ ァの状態が変化しなければ、 当該ファイルバッファのデータの書き込みを行な うようにしてもよい。 また、 書き込み要求のうち、 既存のデータを指定のデー タと置き換える書き込み要求の場合、 その要求の処理の前に、 要求のあったフ アイルに対応するファイルパッファのデータをすベて書き込むようにしてもよ い。 (第 2の実施の形態)
第 2 の実施の形態では、 フラッシュメモリにブロック単位で書き込むとき、 そのブロックには複数ファイルのデータが混在可能である。
本実施の形態におけるファイル記録装置の構成は、 図 1で示される第 1の実 施の形態の構成と、 固有の構成だけが異なる。 つまりファイル管理部 1 9 0と ファイル書込部 1 6 0との 2つの構成要素の機能だけが異なるので、 以下では 主にその相違点を説明する。
図 8は、 本実施の形態において、 各ファイルバッファ 1 2 0A、 1 2 O B, 1 2 0 Cにデータが蓄積され、 フラッシュメモリに書き込まれる一例を示す図で ある。 第 1の実施の形態 (図 4 ) では、 最近蓄積された特定のファイルバッフ ァ 1 2 0のデータサイズがブロックサイズになったとき、 フラッシュメモリ 2 ◦ 5に書き込まれたが、 本実施の形態では、 データ蓄積部 1 4 0によって蓄積 された特定のフアイルバッファ 2 0のデータサイズがブロックサイズに達して いなくても、 複数の各ファイルバッファ 1 2 0のデータをクラスタサイズ単位 で換算して、 合計のクラスタ数がブロックの構成クラスタ数以上、 つまり 4以 上になっていれば、 ファイル管理部 1 9 0は複数の各ファイルバッファ 1 2 0 からクラスタサイズの単位でプロックサイズになるまで取り出して、 書き込み バッファ 1 2 5に転送し、 フラッシュメモリの空きブロックに書き込む。 図 8 の例では、 書きこみ前のフラッシュメモリ 2 0 5が、 図 3の例 3 1 6の状態と して、 フアイルバッファ Aから 1クラスタ分、 フアイルバッファ Bから 1クラ スタ分、 ファイルバッファ Cから 2クラスタ分を取り出して、 フラッシュメモ リ例 8 1 1で示すようにクラスタ 9—1 2からなる空きブロック (プロック番 号 6 ) に書き込んでいることが分かる。 この場合でも、 ファイル A 8 2 5はク ラスタ 9に、 ファイル B 8 2 6はクラスタ 1 0に、 またファイル C 8 2 7はク ラス夕 1 1と 1 2に書き込まれ、 同一クラスタ内での異なるファイルのデータ の混在はない。
書き込まれたファイルのデータに関して、 F A T 8 2 1とディ レクトリ 8 2 2の更新を行なう。 なお、 各ファイルバッファ 1 2 0のデータをクラスタサイズ単位で換算する とは、 各ファイルバッファ 1 2 0において、 ファイルバッファのデータのサイ ズを超えないクラスタの数のうち、 最大のクラスタ数を得ることである。 以上の処理により、 書き込みのデータをファイルごとにブロックサイズ単位 になるまで待って、 単一ファイルのデータの書き込みを行なうよりも、 全体と して早くデータが書き込まれる。 また、 同一主題の映像データと音声データの 同時ファイル記録のように、 データ量の比率が異なるファイルのデータの記録 のときでも、 そのデータ量に比例配分して各プロックに各ファイルのデータが 記録される。
図 9は、 書き込み要求処理の詳細を示すフローチャートである。
図 9のうち、 第 1の実施の形態の書き込み要求処理のフローチャートを示す 図 7において処理が同じものは同じステップ番号を付している。
書き込み要求の処理のうち、 図 7と異なる処理を中心に、 図 9を用いて説明 する。
図 9において、 データ蓄積部 1 4 0に蓄積された特定のファイルバッファの データがプロックサイズ以上ではないとき (S 7 1 2 )、 ファイル管理部 1 9 0 は、 さらに、 複数の各ファイルバッファ 1 2 0のデータをクラスタサイズ単位 で換算して、 合計のクラスタ数がブロックの構成クラスタ数以上、 つまり 4以 上になっているか否か判定する (S 9 2 6 )。判定結果が肯定なら、書き込み先 のブロックを検索する (S 7 1 6 )
空きプロヅク割り当て後、 書き込みデータが単一ファイルのデータか複数フ アイルのデータかを、 上述した特定のフアイルバッファのデータのサイズで判 定し (S 9 2 7 )、複数ファイルのデータのとき、 ファイル管理部 1 9 0は複数 の各フアイルバッファ 1 2 0からクラスタサイズの単位でプロックサイズにな るまで取り出して、書き込みバッファ 1 2 5に転送する (S 9 2 8 )。空きプロ ックに書き込み後の F ATの更新は、 書き込んだ複数のファイルに関して行な ラ。
(第 3の実施の形態) 本実施の形態では、 ファイル記録装置のもとで動作するフィルタドライバが ファイル記録を能率的に行なう。
図 1 0は、 本実施の形態のファイル記録装置にて動作するソフトウエアの階 層構成を示す。
アプリケーションプログラム 1 0 1 0は、 ファイル記録装置におけるフアイ ル記録の要求元であり、 例えば映像コンテンツの記録プログラムである。 アブ リケーションプログラム 1 0 1 0は、 フアイルの記録のためにファィルシステ ム 1 0 2 0に対しファイルの入出力要求を発行する。
ファイルシステム 1 0 2 0は、 既存の汎用のファイルシステム、 例えば Windowsオペレーティングシステム (マイクロソフト社製品) の FATフアイ ルシステムであり、 ファイルの記録と管理を行なう。 ファイルシステム 1 0 2 0は、 既存のファイルの管理とともに、 新規ファイルの記録を含めて、 アプリ ケーションプログラム 1 0 1 0からのファィルの入出力要求に対する処理を行 なう。 ファイルシステム 1 0 2 0自体は、 従来と同様にクラスタ単位の割り当 てと管理を行ない、 ブロックを意識した管理と処理は行なわない。
ファイルシステム 1 0 2 0は、 アプリケーションプログラム 1 0 1 0から、 ファイルの入出力要求があるとき、 その処理を行なう。
ファイルの入出力要求にはファイルのオープンとクローズ、 ファイルのデ一 タの読み込みと書き込みなどがある。
ファイルシステム 1 0 2 0は、 ファイルの入出力要求を受け取ると、 メモリ カード 1 1 0 (図 1 ) のデバイスドライバであるメモリカードデバイスドライ ノ 1 0 4 0 (以下、 単に 「デバイスドライバ 1 0 4 0」 という) に対してデバ イスレベルの入出力要求を発行する。 デバイスレベルの入出力要求とは、 例え ばファイルの入出力要求が書き込み要求のとき、 ファイルシステム 1 0 2 0は 必要に応じて空きのクラスタを FATを参照して検索して割り当て、書き込み先 のァドレスをそのクラスタの先頭のセクタのセクタ番号で、 またデータサイズ をバイ ト数に代えてセクタ数でそれぞれ指定して、 デバイスドライバ 1 0 4 0 に対して書き込み要求を発行する。 このように、 デバイスレベルの入出力要求 は、 フラッシュメモリ 2 0 5のデータの入出力をセクタ指定で行なう。 メモリカードフィルタドライバ 1 0 3 0 (以下、 単に 「フィルタドライパ 1
0 3 0」 という) は、 ファイルシステム 1 0 2 0がデバイスドライバ 1 0 4 0 に対して発行したデバイスレベルの入出力要求を横取り (Intercept) し、 それ が書き込み要求のとき、 直ちにデバイスドライバ 1 0 4 0にデータを書き込ま せないで、 内部のメモリ領域であるドライバデータバッファに蓄積しておき、 ある条件になったとき、 デバイスドライバ 1 0 4 0に指示して蓄積したデータ を一括してメモリカード 1 1 0に書き込ませる。 なお、 フィルタドライノ 1 0 3 0の詳細については後述する。
デバイスドライバ 1 0 4 0は、 フィルタドライバ 1 0 3 0からのデパイスレ ベルの入出力要求を受け取り、
メモリカード 1 1 0に対する入出力の処理を行なう。
メモリカード 1 1 0は、 第 1の実施の形態とほぼ同様であるが、 フラッシュ メモリのフォーマッ トは、 第 1の実施の形態での図 3の予約領域 3 2 2におい て、 ブロックに関する情報であるブロックを構成するクラスタ数を示す 「プロ ック /クラスタ : 4」 の情報は、 本実施の形態では記録されないことだけが相違 する。
図 1 1は、 フィルタドライノ 1 0 3 0の処理手順を示すフローチヤ一トであ る。 フィルタドライバ 1 0 3 0の入出力要求の処理を、 図 1 1をもとに説明す る。
フィルタドライバ 1 0 3 0は、 ロードされた時、 内部的に使用するメモリ領 域であるドライパデータパッファを一定のサィズ分、 例えば 2ブロックサイズ 分確保する。またブロックを構成するクラスタ数、例えば「ブロック/クラスタ : 4」 の情報およぴブロックとクラスタとセクタの対応に関する情報等のプロッ クに関する情報を、 内部情報として保持している。
ファイルシステム 1 0 2 0 'からドライノ 1 0 4 0に対してドライノ レベルの 入出力要求があると、 当該入出力要求を横取りし、 それがメモリカード 1 1 0 のフラッシュメモリ 2 0 5に対する書き込み要求であるか否か判定する (S 1 1 1 0 )。書き込み要求でなければ、当該入出力要求の処理をデバイスドライバ
1 0 4 0に行なわせる (S 1 1 1 2 )。 ここで、 ドライパレベルの入出力要求と は、 読み書きの指定がセクタで行われる入出力要求のことであり、 例えば書き 込みでは、 フラッシュメモリ 2 0 5における書き込み先の先頭ァドレスとサイ ズがセクタ数で指定されている入出力要求のことである。 なお、 セクタ数で指 定される書き込みデータのサイズの最大は、 1ブロック分とする。
ドライバレベルの入出力要求には、 書き込み、 読み込み、 指定ブロックの消 去が含まれる。
図 1 2は、 フィルタドライノ 1 0 3 0が管理するドライバデータバッファ 1 2 0 1のデータとメモリカード 1 1 0のフラッシュメモリ 2 0 5のブロックと の関係をアドレスで対応させた図である。 図 1 2において、 ドライバデータバ ッファ 1 2 0 1に、 データ A 1、 A 2、 A 3がありこれらがァドレスにおいて 連続しているとし、 データ A l、 A 2、 A 3の合計が 1ブロック分であるとす る。
第 1の実施の形態では、 ファイルバッファに 1ブロック分までデータを蓄積 してから書き込みを行なった。 一方、 本実施の形態では、 図 1 2に示すように 1ブロックのサイズになつてから書き込むということは必ずしも行なわないが、 一回の書き込みでは一つのブロックの一部または全体に対して行ない、 2つの ブロックに跨らないようにしている。 また、 そのブロックへの書き込みを書き 込み要求のたびに何度も行なうのではなく、 書き込みデータがァドレスにおい て連続するときはドライバデータパッファ 1 2 0 1に蓄積して、 同一データの 書き込みが一回で済むようにしている。
入出力要求が書き込み要求のとき、 フィルタドライバ 1 0 3 0は、 ドライノ データバッファ 1 2 0 1が空か否か判定する (S I 1 1 3 )。 空であれば、 S 1 1 2 0に分岐する。 また、 ドライバデータバッファ 1 2 0 1が空でなければ、 書き込み要求のデータ (以下、 「書き込みデータという」) とドライバデータバ ッファ 1 2 0 1のデータとが連続か否かを判定する (S 1 1 1 4 )。
例えば、 図 1 2においてドライバデータバッファ 1 2 0 1にデータ A 1があ り、 A 1の書き込み先ァドレス (先頭のセクタアドレス) がセクタ s 1、 書き 込みのセクタ数が d 1であり、 書き込み要求のデータ A 2の書き込み先ァドレ スが s 2、 書き込みのセクタ数が d 2であるとすると、 s 2が (s 1 + d ) と 一致すれば連続と判定する。
書き込みデータとドライバデータバッファ 1 2 0 1のデータとが連続でなけ れば (S I 1 1 6 )、 ドライバデータバッファ 1 2 0 1に蓄積されたデータのフ ラッシュメモリ 2 0 5への書き込みをデバイスドライノ 1 0 4 0に行なわせる (S I 1 1 8 )。
次に、 書き込み要求のあった書き込みデータのドライバデータバッファ 1 2 0 1への蓄積を次のように行なう (S 1 1 2 0 )。
ドライバデータバッファ 1 2 0 1が、 もともと空であるか、 または不連続な 蓄積されたデータを書き込んだために空であるとき、 フィルタドライノ 1 0 3 0は書き込み要求がされた書き込みデータをドライバデータバッファ 1 2 0 1 に新たに蓄積する。
また、 書き込みデータとドライバデータバッファ 1 2 0 1に蓄積されたデー タとが連続であればデータバッファ 1 2 0 1のデータに書き込み要求のデータ を追加によって蓄積し、 書き込みデータサイズを更新する。
上記の例では、 セクタ数が d 1であった書き込みデータサイズを、 書き込み要 求のデータのサイズ d 2を加えた (s l + s 2 ) とする。 なお、 ドライバデー タバッファ 1 2 0 1の書き込み先ア ドレス (セクタ番号) とデータサイズ (セ クタ数) とは、 データバッファ 1 0 2 1に付随する管理情報 (不図示) として 目 ΰ億してお ο
図 1 2において、 ドライバデータバッファ 1 2 0 1のデータの先頭アドレス (セクタ番号) が、 ブロック 1の途中であり、 ドライバデータバッファ 1 2 0 1のデータが 1プロック分あり、 Α 2と A 3との間でァドレスがプロック境界 に跨ることが示されている。 このように、 データが書き込み先のアドレスにお いては連続していても、 ブロックの境界に跨るときは、 1ブロック分のデータ をフラッシュメモリ 2 0 5に書き込むのは、 2ブロック分のリード 'モディフ アイ ·ライ トの処理が必要となり、 さらに A 3の後続のデータがまた 1プロッ ク分連続していると、 それらも 2ブロック分のリード ·モディファイ · ライ ト の処理が必要となるので無駄が大きい。
したがって、 フィルタドライバ 1 0 3 0は、 ドライバデータバッファ 1 2 0 1のデータにプロック境界があるか否か判定する (S 1 1 2 2 )。 ここで、 デー 夕にプロック境界があるというのは、 データの書き込み先のセクタのいずれか が、 ブロックの終端、 つまりブロックの最後のセクタと一致する場合をいう。 デ一タパッファ 1 2 0 1の先頭から、 書き込み先のァドレスがプロックの終端 までのデータ (A 1 + A 2 ) を、 フラッシュメモリ 2 0 5の書き込み先プロッ ク (図 1 2の例ではブロック 1 ) へ書き込みを行なう。 ここで、 データの書き 込み先がブロック境界に一致するとは、 また、 書き込み先ブロック (図 1 2の 例ではブロック 1 ) への書き込みは、 書き込み先ブロックのメモリへの読み込 みとデバイスドライバ 1 0 4 0に指示し、 書き込み先ブロックの消去をデバィ スドライノ 1 0 4 0に指示し、 読み込まれたメモリ上のブロックデータに A 1 + A 2を追加修正し、 追加修正したメモリ上のプロックデータの書き込み先ブ ロックへの書き込みをデバイスドライノ 1 0 4 0に指示することによって行な ラ。
本実施の形態では、 フィルタドライバ 1 0 3 0により、 ブロック単位の書き 込みを行なうようにしたが、 これに限定されない。 デバイスドライバに上記の フィルタドライバの機能を組み込んで、 実施しても良い。 あるいは、 ファイル システムに上記のフィルタドライバの機能を組み込んで、 実施しても良いのは 勿論である。
なお、 本発明を上記の実施の形態に基づいて説明してきたが、 本発明は上記 の実施の形態に限定されないのはもちろんである。 以下のような場合も本発明 に含まれる。
本発明の方法を、 コンピュータシステムを用いて実現するためのコンビユー 夕プログラムであるとしてもよいし、 前記プログラムを表すデジタル信号であ るとしてもよい。
また、 本発明は、 前記プログラム又は前記デジタル信号を記録したコンビュ ータ読取り可能な記録媒体、 例えば半導体メモリ等であるとしてもよい。 また、 本発明は、 電気通信回線、 無線又は有線通信回線、 若しくはインター ネッ トに代表されるネッ トワーク等を経由して伝送される前記コンピュータプ ログラム又は前記デジタル信号であるとしてもよい。 産業上の利用可能性
本発明に係るファイル記録装置は、 ビデオなどの映像、 音声等の大量データ を能率的に記録でき、 これらの大量データを記録し配布する産業、 たとえば音 楽産業、 情報産業等で利用される。

Claims

請求の範囲
1 . クラスタをファイルに含まれるデータへの記録割当単位とし、 連続した 所定数のクラスタで構成されるブロックの単位で消去が必要な記録媒体に、 デ ータを記録するファイル記録装置であって、
各ファイルのデータの前記記録媒体への書き込み要求を受け付ける受付手段 と、
複数のファイルバッファと、
前記書き込み要求されたデータをそれぞれ前記ファィルバッファに各別に蓄 積させるデータ蓄積手段と、
前記デー夕蓄積手段により蓄積されたデータのサイズがブロックサイズ以上 であるか否かを判定する判定手段と、
判定が肯定的であるとき、 前記データ蓄積手段により蓄積されたデータのう ち、 ブロックサイズ分のデータを取り出し、 前記記録媒体の空きブロックに書 き込む書込手段とを備えることを特徴とするファィル記録装置。
2. 前記判定手段は、 前記蓄積手段にて最近蓄積された特定のファィルバッ ファのデータサイズがブロックサイズ以上のとき、 蓄積されたデータがブロッ クサイズ以上と判定し、
前記書込手段は、 前記特定のファイルバッファの先頭からプロックサイズ分 のデータを取り出し、 取り出したデータを前記空きブロックに書き込むことを 特徴とする請求の範囲第 1項記載のファィル記録装置。
3. 前記判定手段は、 各ファイルバッファのデータサイズをクラスタサイズ で除した商の合計が前記所定数以上のとき、 蓄積されたデータがブロックサイ ズ以上と判定し、
前記書込手段は、 前記各ファィルバッファからクラスタのサイズの単位で前 記所定数のクラスタ分のデータを取り出し、 前記空きブロックに書き込むこと を特徴とする請求の範囲第 1項記載のファィル記録装置。
4. 割り当てられた前記空きブロックに前記書込手段が書き込む前に、 前記 空きブロックの消去を行なう消去手段をさらに備えることを特徴とする請求の 範囲第 1項記載のフアイル記録装置。
5. 複数のファイルバッファを備え、 クラス夕をファイルに含まれるデータ への記録割当単位とし、 連続した所定数のクラスタで構成されるプロックの単 位で消去が必要な記録媒体に、 データを記録するファィル記録装置の制御方法 であって、
各フアイルのデ一タの前記記録媒体への書き込み要求を受け付ける受付ステ ップと、
前記書き込み要求されたデータをそれぞれ前記ファィルバッファに各別に蓄 積させるデータ蓄積ステップと、
前記データ蓄積ステツプにより蓄積されたデータのサイズがブ口ックサイズ 以上であるか否かを判定する判定ステップと、
判定が肯定的であるとき、 前記データ蓄積ステップにより蓄積されたデータ のうち、 ブロックサイズ分のデータを取り出し、 前記記録媒体の空きブロック に書き込む書込ステップとを有する制御方法。
6. 複数のファイルバッファを備え、 クラスタをファイルに含まれるデータ への記録割当単位とし、 連続した所定数のクラスタで構成されるブロックの単 位で消去が必要な記録媒体に、 データを記録するファィル記録装置に、 各ファイルのデータの前記記録媒体への書き込み要求を受け付ける受付ステ ップと、
前記書き込み要求されたデータをそれぞれ前記ファィルパッファに各別に蓄 積させるデータ蓄積ステップと、
前記データ蓄積ステップにより蓄積されたデータのサイズがプロックサイズ 以上であるか否かを判定する判定ステップと、
判定が肯定的であるとき、 前記データ蓄積ステップにより蓄積されたデータ のうち、 ブロックサイズ分のデータを取り出し、 前記記録媒体の空きプロック に書き込む書込ステップとを実行させるプログラム。
7. ドライバデータバッファを備え、 クラスタをファイルに含まれるデータ への記録割当単位とし、 連続した所定数のクラスタで構成され!)ブロックの単 位で消去が必要な記録媒体にデータを記録するファィル記録装置に、
前記記録媒体における書き込み先ァドレスを含む書き込みの要求を受け付け る受付ステップと、
前記ドライバデータバッファが空きでないとき、 前記書き込みのデータと前 記ドライバデータバッファのデータとが前記記録媒体のア ドレスにおいて連続 するか否かを判定する第 1判定ステップと、
肯定と判定されたとき、 書き込みのデータを前記ドライバデー夕バッファに 蓄積させるデータ蓄積ステップと、
前記ドライバデータバッファに蓄積されたデ一タの書き込み先がブロックの 境界に一致するか否かを判定する第 2判定ステップと、
第 2判定ステップにて肯定と判定されたとき、 前記ドライバデータバッファ の先頭から前記プロックの境界までのデータを前記記録媒体に書き込む書込ス テツプとを実行させるためのプログラム。
8. 前記プログラムは前記記録媒体のフィルタドライバである
する請求の範囲第 7項記載のプログラム。
PCT/JP2004/015182 2003-11-18 2004-10-07 ファイル記録装置 WO2005050453A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020067010215A KR101087906B1 (ko) 2003-11-18 2004-10-07 파일기록장치
EP04792410A EP1686482B1 (en) 2003-11-18 2004-10-07 File recording device
JP2005515557A JP4287433B2 (ja) 2003-11-18 2004-10-07 ファイル記録装置
US10/578,270 US7610434B2 (en) 2003-11-18 2004-10-07 File recording apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003-387886 2003-11-18
JP2003387886 2003-11-18

Publications (1)

Publication Number Publication Date
WO2005050453A1 true WO2005050453A1 (ja) 2005-06-02

Family

ID=34616171

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2004/015182 WO2005050453A1 (ja) 2003-11-18 2004-10-07 ファイル記録装置

Country Status (6)

Country Link
US (1) US7610434B2 (ja)
EP (1) EP1686482B1 (ja)
JP (1) JP4287433B2 (ja)
KR (1) KR101087906B1 (ja)
CN (1) CN100543702C (ja)
WO (1) WO2005050453A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100884429B1 (ko) 2006-06-30 2009-02-19 가부시끼가이샤 도시바 불휘발성 반도체 메모리를 구비하는 메모리 시스템
JP2010518491A (ja) * 2007-01-31 2010-05-27 マイクロソフト コーポレーション フラッシュドライブの寿命の延長
US7821882B2 (en) * 2005-11-01 2010-10-26 Kabushiki Kaisha Toshiba Recording and reproducing apparatus and recording method
JP2010271977A (ja) * 2009-05-22 2010-12-02 Fujitsu Ten Ltd データ書込装置、データ書込方法及びプログラム
JP2011209973A (ja) * 2010-03-30 2011-10-20 Hitachi Ltd ディスクアレイ構成プログラム、計算機、計算機システム
US9535625B2 (en) 2007-03-06 2017-01-03 Bohdan Raciborski Selectively utilizing a plurality of disparate solid state storage locations

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101715575A (zh) * 2006-12-06 2010-05-26 弗森多系统公司(dba弗森-艾奥) 采用数据管道管理数据的装置、系统和方法
US8719501B2 (en) 2009-09-08 2014-05-06 Fusion-Io Apparatus, system, and method for caching data on a solid-state storage device
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
KR100904758B1 (ko) * 2007-02-08 2009-06-29 삼성전자주식회사 버퍼 메모리를 포함하는 플래쉬 메모리 장치 및 시스템,플래쉬 메모리 장치의 데이터 업데이트 방법
US20090094358A1 (en) * 2007-10-05 2009-04-09 Davis Gregg A Data Bridge Maintenance Utilizing Data Traffic Log Change
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US20090271563A1 (en) * 2008-04-28 2009-10-29 Microsoft Corporation Flash memory transactioning
JP2010009206A (ja) * 2008-06-25 2010-01-14 Nikon Corp 記録制御装置
US20090322905A1 (en) * 2008-06-25 2009-12-31 Nikon Corporation Storage control device
TWI363272B (en) * 2008-07-11 2012-05-01 Silicon Motion Inc Data programming method and device
KR101506578B1 (ko) * 2008-07-17 2015-03-30 삼성전자주식회사 데이터 보안을 위한 파일 시스템 구성 방법 및 장치, 그에의해 만들어진 데이터 보안 영역에 접근하는 방법 및 장치,그에 따른 데이터 저장 장치
US8612668B2 (en) * 2008-11-24 2013-12-17 Juniper Networks, Inc. Storage optimization system based on object size
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
EP2476039B1 (en) 2009-09-09 2016-10-26 SanDisk Technologies LLC Apparatus, system, and method for power reduction management in a storage device
WO2011031903A2 (en) * 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for allocating storage
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
JP4714291B2 (ja) * 2009-09-30 2011-06-29 株式会社東芝 情報記録装置、情報記録方法及び情報記録用プログラム
WO2011143628A2 (en) 2010-05-13 2011-11-17 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US10013354B2 (en) 2010-07-28 2018-07-03 Sandisk Technologies Llc Apparatus, system, and method for atomic storage operations
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
EP2652623B1 (en) 2010-12-13 2018-08-01 SanDisk Technologies LLC Apparatus, system, and method for auto-commit memory
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9213594B2 (en) 2011-01-19 2015-12-15 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing out-of-service conditions
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US10346095B2 (en) 2012-08-31 2019-07-09 Sandisk Technologies, Llc Systems, methods, and interfaces for adaptive cache persistence
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US20140310493A1 (en) * 2013-04-11 2014-10-16 International Business Machines Corporation Migrating data across storages with dissimilar allocation sizes
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9390003B2 (en) 2013-12-09 2016-07-12 International Business Machines Corporation Retirement of physical memory based on dwell time
US9262316B2 (en) 2013-12-09 2016-02-16 International Business Machines Corporation Recording dwell time in a non-volatile memory system
JP2015138272A (ja) * 2014-01-20 2015-07-30 ソニー株式会社 情報処理装置、情報処理方法、および情報処理プログラム
JP2016028319A (ja) * 2014-07-08 2016-02-25 富士通株式会社 アクセス制御プログラム、アクセス制御装置及びアクセス制御方法
US9979970B2 (en) * 2014-08-08 2018-05-22 Qualcomm Incorporated System and method for determining buffer fullness for display stream compression
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US10009438B2 (en) 2015-05-20 2018-06-26 Sandisk Technologies Llc Transaction log acceleration
KR20170015708A (ko) * 2015-07-30 2017-02-09 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 프로그램 방법
JP6424330B2 (ja) * 2015-10-13 2018-11-21 株式会社アクセル 情報処理装置、及び情報処理方法
US10802712B2 (en) * 2015-10-13 2020-10-13 Axell Corporation Information processing apparatus and method of processing information
MX361249B (es) * 2015-12-03 2018-11-30 Huawei Tech Co Ltd Controlador de arreglo, disco en estado sólido, y método para controlar el disco en estado sólido para escribir datos.
CN110119418B (zh) * 2018-01-16 2024-07-16 北京京东尚科信息技术有限公司 数据导出方法和装置
US10936199B2 (en) * 2018-07-17 2021-03-02 Silicon Motion, Inc. Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147202A (ja) * 1994-11-24 1996-06-07 Nec Corp 書換え可能なromファイル装置
US5745418A (en) 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
JP2000122811A (ja) * 1998-10-13 2000-04-28 Hitachi Ltd 記憶装置管理方法および記憶装置管理システム
JP2000305862A (ja) * 1999-02-19 2000-11-02 Mitsubishi Electric Corp データ記憶方法および情報処理装置
US20020166022A1 (en) 1998-08-03 2002-11-07 Shigeo Suzuki Access control method, access control apparatus, and computer-readable memory storing access control program

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
JPH1069420A (ja) * 1996-08-29 1998-03-10 Sony Corp 情報記録装置、情報記録再生装置、情報記録方法および情報再生方法
JP3640802B2 (ja) * 1998-06-08 2005-04-20 富士通株式会社 データバックアップ方式
US6571312B1 (en) 1999-02-19 2003-05-27 Mitsubishi Denki Kabushiki Kaisha Data storage method and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory
US6141249A (en) * 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
BR0007239B1 (pt) 1999-10-21 2014-03-18 Panasonic Corp Aparelho de acesso á placa de memória semicondutora, placa de memória semicondutora e método de inicialização.
US6691205B2 (en) * 2001-03-05 2004-02-10 M-Systems Flash Disk Pioneers Ltd. Method for using RAM buffers with simultaneous accesses in flash based storage systems
JP4238514B2 (ja) 2002-04-15 2009-03-18 ソニー株式会社 データ記憶装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147202A (ja) * 1994-11-24 1996-06-07 Nec Corp 書換え可能なromファイル装置
US5745418A (en) 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
US20020166022A1 (en) 1998-08-03 2002-11-07 Shigeo Suzuki Access control method, access control apparatus, and computer-readable memory storing access control program
JP2000122811A (ja) * 1998-10-13 2000-04-28 Hitachi Ltd 記憶装置管理方法および記憶装置管理システム
JP2000305862A (ja) * 1999-02-19 2000-11-02 Mitsubishi Electric Corp データ記憶方法および情報処理装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP1686482A4

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7821882B2 (en) * 2005-11-01 2010-10-26 Kabushiki Kaisha Toshiba Recording and reproducing apparatus and recording method
KR100884429B1 (ko) 2006-06-30 2009-02-19 가부시끼가이샤 도시바 불휘발성 반도체 메모리를 구비하는 메모리 시스템
JP2010518491A (ja) * 2007-01-31 2010-05-27 マイクロソフト コーポレーション フラッシュドライブの寿命の延長
US8560760B2 (en) 2007-01-31 2013-10-15 Microsoft Corporation Extending flash drive lifespan
US9535625B2 (en) 2007-03-06 2017-01-03 Bohdan Raciborski Selectively utilizing a plurality of disparate solid state storage locations
JP2010271977A (ja) * 2009-05-22 2010-12-02 Fujitsu Ten Ltd データ書込装置、データ書込方法及びプログラム
JP2011209973A (ja) * 2010-03-30 2011-10-20 Hitachi Ltd ディスクアレイ構成プログラム、計算機、計算機システム

Also Published As

Publication number Publication date
CN100543702C (zh) 2009-09-23
CN1906596A (zh) 2007-01-31
KR20060114698A (ko) 2006-11-07
US7610434B2 (en) 2009-10-27
KR101087906B1 (ko) 2011-11-30
JP4287433B2 (ja) 2009-07-01
US20070088666A1 (en) 2007-04-19
JPWO2005050453A1 (ja) 2007-06-07
EP1686482A4 (en) 2009-03-25
EP1686482A1 (en) 2006-08-02
EP1686482B1 (en) 2013-03-06

Similar Documents

Publication Publication Date Title
WO2005050453A1 (ja) ファイル記録装置
US6823417B2 (en) Memory controller for memory card manages file allocation table
US7634613B2 (en) Memory device and recording and/or reproducing apparatus employing this memory device
KR100952135B1 (ko) 순차적 기록만을 사용하는 플래시 관리 시스템
US7039754B2 (en) Detachably mounted removable data storage device
US20050080985A1 (en) Data storage device
JPWO2005103903A1 (ja) 不揮発性記憶システム
US8977802B2 (en) Access device, information recording device, controller, real time information recording system, access method, and program
US7647470B2 (en) Memory device and controlling method for elongating the life of nonvolatile memory
KR20070024573A (ko) 최적의 성능을 위한 파일 관리 방법
JP2009525511A (ja) 多段階誤り訂正方法及び装置
US20070033364A1 (en) Information recording medium, information recording medium accessing apparatus and accessing method
JP4130808B2 (ja) フォーマット方法
JP2008269520A (ja) 記録装置及び記録方法
KR101102754B1 (ko) 낸드 플래시 메모리 파일 시스템 및 낸드 플래시 메모리 시스템에서 파일 엑세스 방법
JP2011076441A (ja) 情報記録装置、情報記録方法及び情報記録用プログラム
JP2008134777A (ja) ファイル割当テーブルのキャッシュ方法
JPH07160439A (ja) データ記憶装置及び主制御装置
JP5161989B2 (ja) 情報記録装置、情報記録方法及び情報記録用プログラム
JP4881469B1 (ja) 情報処理装置、及び情報処理方法
KR100592859B1 (ko) 기록매체제어장치및방법
KR19980071621A (ko) 정보 기록 방법 및 장치, 및 정보 재생 방법 및 장치
JP2005149620A (ja) 記憶装置およびファイルシステム

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2005515557

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 2007088666

Country of ref document: US

Ref document number: 10578270

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2004792410

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Country of ref document: DE

WWE Wipo information: entry into national phase

Ref document number: 1020067010215

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 200480040624.0

Country of ref document: CN

WWP Wipo information: published in national office

Ref document number: 2004792410

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1020067010215

Country of ref document: KR

WWP Wipo information: published in national office

Ref document number: 10578270

Country of ref document: US