CN1906596A - 文件记录装置 - Google Patents
文件记录装置 Download PDFInfo
- Publication number
- CN1906596A CN1906596A CNA2004800406240A CN200480040624A CN1906596A CN 1906596 A CN1906596 A CN 1906596A CN A2004800406240 A CNA2004800406240 A CN A2004800406240A CN 200480040624 A CN200480040624 A CN 200480040624A CN 1906596 A CN1906596 A CN 1906596A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- write
- request
- recording medium
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 239000000872 buffer Substances 0.000 claims abstract description 105
- 238000009825 accumulation Methods 0.000 claims description 53
- 238000000034 method Methods 0.000 claims description 28
- 239000000284 extract Substances 0.000 claims description 6
- 230000001186 cumulative effect Effects 0.000 claims description 5
- 239000004065 semiconductor Substances 0.000 abstract description 10
- 230000015654 memory Effects 0.000 description 75
- 238000007726 management method Methods 0.000 description 63
- 238000003860 storage Methods 0.000 description 46
- 238000012545 processing Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 230000004044 response Effects 0.000 description 11
- 239000002699 waste material Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 244000287680 Garcinia dulcis Species 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Abstract
为了有效地将文件记录到半导体存储器上,文件记录装置具有为各个文件而设置的多个文件缓冲器。将被请求写入的数据累积在相应的文件缓冲器中。判断已经累积的数据是否达到一个块的大小,其中块是擦除半导体存储器的单位。如果判定累积在其中一个文件缓冲器中或多个文件缓冲器中的数据总和已经达到块大小,则将所述累积的数据写入到半导体存储器的空闲块中。
Description
发明领域
本发明涉及一种用于将文件记录在半导体存储器中的文件记录装置。
技术背景
非易失性半导体存储器是一类即使当电源被切断时也保持已存内容的存储器。尽管在记录新数据之前需要进行擦除,但是这类半导体存储器由于它不是机械驱动或旋转的,因而非常耐振动并且安静。另外,近来记录密度的增加带来了半导体存储器的容量的增加。由于这些优点,非易失性半导体存储器变得越来越普遍地与CD(压缩盘)、DVD(数字通用盘)等等一起作为合适的信息记录介质。
在各种类型的半导体存储器中,闪存是必须按字节方式擦除的EEPROM(电可擦可编程只读存储器)的较近的形式。由于它可以按块一次性全部擦除,因而现在闪存以市场上可买到的产品的形式(比如SD存储卡)被广泛使用,以存储数字照相机拍摄的图像。
利用文件系统来管理包括闪存在内的各种类型的记录介质上的数据。一些公用的文件系统是:FAT(文件分配表、标准ECMA-107:用于信息交换的盒式磁盘的容积与文件结构);NTFS(新技术文件系统);以及UDF(通用盘格式)。通过使用文件系统,组织为文件的视频和音频数据被同时记录或再现。
根据FAT文件系统,采用称为簇的单元执行存储器分配和文件管理。
应当注意的是:不论文件数据如何小,所述文件占据至少一个簇。因此,簇大小越大,存储器的容量效率就变得越低。另一方面,块大小越大,存储密度就变得越高。鉴于以上所述,块大小通常大于簇大小。
另外,在一个簇跨两个块扩展的情况下,在将数据记录到所述簇中之前,这两块都需要被擦除。在日本专利申请公开No.2001-188701中,公开了一种用于避免这类事件发生的技术。根据所述公开内容,如果属于闪存的一个块的簇全部都是空闲的话,则允许文件系统仅仅擦除该块,然后执行数据写入。
然而,令人遗憾的是,如果所述块包括任何存储现有文件的数据的簇,则需要执行一系列的操作(正确地称为读取-修改-写入操作,在下文中称为″RMW操作″)。所述RMW操作包括:在擦除块之前,将存储在该块中的数据读取到主存储器上的临时存储器中;删除该块的内容;修改该临时存储器上的数据以反映对该文件做出的变化;以及回写临时存储器的内容。即,RMW操作包含读取和修改的额外操作。
另外,每次将数据写入到相同的块中时,都需要一系列操作。假设诸如视频和音频数据之类的大量连续数据将被写入。在这种情况下,需要对同一块重复一系列的操作,并由此反复读出以及回写相同的数据集合,这需要长处理时间。
发明内容
本发明就是鉴于上述问题而提出的,并且本发明的第一个目是提供一种文件记录装置,其用于有效且无浪费地将数据记录到一类需要批量擦除的记录介质上。本发明的第二个目是提供一种可在常规文件系统下执行的程序,用于有效且无浪费地将数据记录到上述类型的记录介质上。
上述目的是通过文件记录装置来实现的,所述文件记录装置用于将数据记录到按簇写入和按块擦除的记录介质上,其中每一个块都由预定数目的连续簇组成。所述文件记录装置包括:接收单元,用于接收将多个文件中的一个指定文件的数据写入到记录介质上的请求;多个文件缓冲器,每一个文件缓冲器用于所述文件中的一个不同的文件;数据累积单元,用于在与指定文件相对应的所述文件缓冲器中的一个文件缓冲器中,累积被请求写入的数据;判断单元,用于判断数据累积单元已经累积的数据是否不小于块大小;以及写入单元,用于如果判断单元作出肯定判断,则从所累积的数据中提取一块数据并将所提取的数据写入到记录介质的空闲块中。
利用上述结构,当发出一个或多个请求来将文件数据写入到需要在数据写入之前按块擦除的记录介质上时,仅仅一次一块地执行数据写入。与每次发出数据请求时执行数据写入的情况相比,这是有效且无浪费的。在这种情况下,在对一个块执行所请求的数据写入之前,需要读取和重写当前存储在该块中的数据。
在此,如果一个数据累积单元最近累积数据的文件缓冲器中的一个指定文件缓冲器中已经累积的数据不小于块大小,则判断单元可以作出肯定判断。写入单元可以从该指定文件缓冲器的顶部提取一块数据,并将所提取的数据写入到记录介质的空闲块中。
利用上述结构,以块为单元执行数据写入,每一个所述块都由单个文件的数据组成。
在此,当用各个文件缓冲器中累积的数据的大小除以簇大小所计算出的每个商的总和不小于预定数目时,判断单元可以作出肯定判断。写入单元可以从各个文件缓冲器中逐簇地提取数据,直到达到预定数目的簇为止,并将所提取的数据写入到记录介质的空闲块中。
利用上述结构,以块为单元执行数据写入,每一个所述块都由与被请求写入到各个文件的数据量成比例的多个文件的数据组成。
在此,文件记录装置还可以包括:擦除单元,用于在写入单元将所提取的数据写入到空闲块中之前擦除空闲块。
利用上述结构,在执行对块进行数据写入之前擦除该块。
在另一个方面中,上述目的是通过用于文件记录装置的控制方法来实现的,所述文件记录装置包括多个文件缓冲器,每一个文件缓冲器用于多个文件中的一个不同文件,并且所述文件记录装置将数据记录到记录介质上。所述记录介质按簇写入并按块擦除,每一个块都由预定数目的连续簇组成。所述方法包括:接收步骤,接收用于将多个文件中一个指定文件的数据写入到记录介质上的请求;数据累积步骤,在与该指定文件相对应的所述文件缓冲器中的一个文件缓冲器中累积被请求写入的数据;判断步骤,判断在数据累积步骤中已经累积的数据是否不小于块大小;以及写入步骤,用于如果判断步骤作出肯定判断,则从所累积的数据中提取一块数据并将所提取的数据写入到记录介质的空闲块中。
利用上述方法,当发出一个或多个请求来将文件数据写入到需要在数据写入之前按块擦除的记录介质上时,仅仅一次一块地执行数据写入。与每次发出数据请求时执行数据写入的情况相比,这是有效且无浪费的。在这种情况下,在对块执行所请求的数据写入之前,需要读取和重写当前存储在该块中的数据。
在另一个方面中,上述目的是通过由文件记录装置执行的程序来实现的,所述文件记录装置包括多个文件缓冲器,每一个文件缓冲器用于多个文件中的一个不同文件,并且将数据记录到记录介质上。所述记录介质按簇写入并按块擦除,每一个块都由预定数目的连续簇组成。所述程序包括用于使所述文件记录装置执行下列操作的代码:接收步骤,接收将多个文件中的一个指定文件的数据写入到记录介质上的请求;数据累积步骤,在与该指定文件相对应的所述文件缓冲器中的一个文件缓冲器中累积被请求写入的数据;判断步骤,判断在数据累积步骤中已经累积的数据是否不小于块大小;以及写入步骤,用于如果判断步骤作出肯定判断,则从累积的数据中提取一块数据并将所提取的数据写入到记录介质的空闲块中。
通过将上述程序应用于文件记录装置,当发出一个或多个请求来将文件数据写入到需要在数据写入之前按块擦除的记录介质上时,仅仅一次一块地执行数据写入。与每次发出数据请求时执行数据写入的情况相比,这是有效且无浪费的。在这种情况下,在对块执行所请求的数据写入之前,需要读取和重写当前存储在该块中的数据。
在另一个方面中,上述目的是通过用于由文件记录装置执行的程序来实现的,所述文件记录装置包括驱动器数据缓冲器,并且将数据记录到记录介质上。所述记录介质按簇写入并按块擦除,每一个块都由预定数目的连续簇组成。所述程序包括用于使文件记录装置执行下列操作的代码:接收步骤,接收写入请求,其指定记录介质上的写入地址,数据被请求写入到该写入地址上;第一判断步骤,用于如果驱动器数据缓冲器不是空的,则判断为被请求写入的数据所指定的写入地址是否邻接于为存储在驱动器数据缓冲器上的数据所指定的写入地址;数据累积步骤,如果第一判断步骤作出肯定判断,则在驱动器数据缓冲器中累积被请求写入的数据;第二判断步骤,用于判断为驱动器数据缓冲器中累积的数据所指定的写入地址是否落在记录介质的块边界上;以及写入步骤,用于如果第二判断步骤作出肯定判断,则将从驱动器数据缓冲器顶部到与所述块边界对应的点的部分所累积的数据写入到记录介质上。
通过将上述程序应用于文件记录装置,当发出一个或多个请求来将文件数据写入到需要在数据写入之前按块擦除的记录介质的指定地址上时,仅仅一次一块地执行数据写入。与每次发出数据请求时执行数据写入的情况相比,这是有效且无浪费的。在这种情况下,在对块执行所请求的数据写入之前,需要读取和重写先前存储在该块中的数据。
在此,上述程序可以是记录介质的过滤驱动器。
利用上述结构,将过滤驱动器添加到现有文件系统保证了有效的文件记录。
附图简述
图1是示出根据本发明第一实施例的文件记录装置的结构的视图;
图2示出了存储卡的结构;
图3示出了闪存的示例性格式;
图4示出了根据第一实施例,如何在文件缓冲器中累积数据并将其写入到闪存中的例子;
图5示出了根据第一实施例的整个文件记录处理的处理步骤的流程图;
图6A和6B示出了根据第一实施例的文件打开处理和文件关闭处理的流程图;
图7示出了根据第一实施例,响应于数据写入请求而执行的数据写入处理的流程图;
图8示出了根据本发明第二实施例,如何在文件缓冲器中累积数据并将其写入到闪存中的例子;
图9示出了根据第二实施例,响应于数据写入请求而执行的数据写入处理的流程图;
图10示出了在根据本发明第三实施例的文件记录装置中运行的软件的分级结构;
图11示出了由根据第三实施例的过滤驱动器执行的处理步骤的流程图;和
图12示出了根据第三实施例,驱动器数据缓冲器1201上的数据与闪存的块之间的对应关系。
具体实施方式
在下文中,参照附图对根据本发明的文件记录装置的实施例给出描述。
第一实施例
在第一实施例中,文件系统保证了文件的有效记录。
图1示出了根据第一实施例的文件记录装置的结构。
所述文件记录装置包括:存储卡110、文件缓冲器120、写入缓冲器125、I/O(输入和输出)请求接收单元130、数据累积单元140、文件写入单元160以及文件管理单元190。
所述文件记录装置另外还具有CPU和存储器,这在图中未示出。上述的每一个组成单元都由程序或存储区组成。将包括组成单元的程序加载到存储器中并由CPU执行。
文件记录装置接收对一个或多个文件的I/O请求。I/O请求的源是,例如运行在该文件记录装置上的应用程序和经由网络连接的装置。这样的I/O请求源可以同时请求文件记录装置记录多个文件上的数据。
此外,可能存在多个不同类型的I/O请求源,例如应用程序和网络上的装置。或者,可能存在同样类型的多个I/O请求源,例如应用程序A、B和C。然而,为了简单起见,在下文的描述中假定存在单个I/O请求源。
接下来,对所述文件记录装置的每一个组成单元给出描述。
存储卡110根据来自I/O请求源的请求记录文件。
图2示出了存储卡110的结构。如图所示,存储卡110包括命令执行单元201、数据缓冲器202和闪存205。
命令执行单元201从文件写入单元160接收可在存储卡110上执行的命令,并且执行所接收的命令。可由命令执行单元201执行的命令是将要在闪存205上执行的写入命令、读取命令和块擦除命令。
写入命令包含用于指定扇区号和扇区数量的信息。前者用作在闪存205上的数据写入的起始地址,而后者用作将要被写入的数据的大小。在接收到写入命令时,命令执行单元201就从具有所指定的扇区号的扇区开始,将保持在数据缓冲器202中的、具有等于所指定的扇区数量的大小的数据写入到闪存205。可以指定为单个写入命令中的数据大小的最大扇区数量为128,其等于块大小。
数据缓冲器202的大小与块大小相等,并且响应写入命令,临时保持将要被写入的数据。更具体而言,数据缓冲器202临时保持从文件写入单元160转送来的数据。当接收到写入命令时,命令执行单元201将保持在数据缓冲器202中的数据写入到闪存205中。同样,数据缓冲器202响应读取命令,临时保持从闪存205中读取的数据。
读取命令包含用于指定扇区号和扇区数量的信息。前者用作在闪存205上数据读取的起始地址,后者用作将要被读取的数据的大小。与写入命令类似,在单个读取命令中可以指定的最大扇区数量为128。
如上所述,闪存205需要在执行数据写入之前按块擦除。更具体而言,需要擦除包括将对其执行数据写入的扇区(将在稍后描述)或簇(将在稍后描述)的每一个块。闪存205存储由命令执行单元201写入的文件数据。
擦除命令包含用于表示将要擦除的块的块号的信息。在接收到擦除命令时,命令执行单元201擦除具有指定块号的闪存205的块。
图3示出了闪存205的示例性格式。在图中,闪存205被分成称为块311、簇312和扇区313的分级分区。
块311是通常在记录新数据之前执行的擦除的单元。在写入文件数据时,将至少一个空闲或未使用的块分配给该文件数据。需要注意的是:存在充当备用的块,其具有块号4001到4192。块4001-4192在图3中未示出。
簇312是可分配给文件数据的最小单元。所述簇为FAT335所涉及,稍后将对其进行描述。
扇区313是数据输入和输出的最小单元。扇区313被连续地分配扇区号,所述扇区号是从″1″开始的整数。扇区号用作闪存上的地址。将要通过数据写入而写入到闪存205中的数据大小是利用扇区数量而不是字节数量来表示的。图3中由它们的扇区号所示出的扇区313是每一个块和簇中的第一扇区。
闪存205具有粗略地划分为系统区321和用户区331的存储区314。
系统区321存储管理信息,还被划分成保留区322、FAT区323和根目录条目324。
保留区322存储关于闪存205的引导信息和参数,所述闪存是记录介质。图3示出了存储在闪存205中的内容的示例316。在示例316中,参数表明扇区大小为512B(字节),每簇的扇区数量为32,而每块的簇数量为4。因此,簇大小为16KB,块大小为64KB,而闪存205的存储容量为256MB。然而,应当指出的是,簇和块大小不限于这里所提到的指定数值。对于一些类型的闪存,块大小可以是128KB或256KB并且簇大小可以是8KB或32KB。
FAT区323存储FAT335。FAT335是示出哪些簇存储文件数据的表。
根目录条目324是包含文件管理信息的目录的存储区。对于每一个文件,目录表明文件名、记录日期和时间(未说明)、以及该文件所分配和占用的第一簇的簇号(或第一FAT条目的数量)。
例如,目录336表示文件A所占用的第一簇是簇1。根据FAT335,对应于簇1的条目1包含数值″2″,其表明文件A占据邻接于簇1的簇2。同样,条目2和3分别保持数值″3″和″4″。这意味着文件A也占用簇3和4。条目4保持表示文件末尾的数值″FF″。也就是说,文件A占用一起构成块4的连续簇1-4。注意:出于安全的原因,FAT区323存储双份的FAT335(尽管在图中未示出双份)。
用户区331用于存储文件数据和目录信息。根据第一实施例,对文件数据的存储器分配基本上按块来执行。系统区321的格式是固定的,并且将簇号排它地分配给用户区中的簇。
现在返回到图1,文件缓冲器120是缓冲器(存储区),其每一个都具有对应于两个块的大小,并且按照从I/O请求源发出的写入请求临时存储被请求写入的数据。每一个文件缓冲器120都是文件管理单元190为按照来自于I/O请求源的文件打开请求所创建的指定文件保留的,并且按照文件关闭请求解除分配(返回)。注意:每一个文件缓冲器120的大小不限于两个块的大小,任何大小都是适用的,只要它比稍后描述的单个I/O请求的可请求的最大数据大小大一个块大小。
写入缓冲器125是按块计算大小的存储区,并且由文件写入单元160使用来临时存储将要写入到闪存205中的文件数据。
I/O请求接收单元130从I/O请求源接收对存储卡110的闪存205上的文件的I/O请求。存在几种类型的文件I/O请求,包括文件打开的请求、文件关闭的请求、数据写入(Write)和数据读取(Read)。
当接收到作为文件打开请求的I/O请求时,I/O请求接收单元130进一步从I/O请求源接收被请求打开的文件的名称。同样,当接收到作为文件关闭请求的I/O请求时,I/O请求进一步从I/O请求源中接收标识被请求关闭的文件的文件描述符(将在稍后描述)。
当接收到作为数据写入请求的I/O请求时,I/O请求接收单元130进一步从I/O请求源中接收被请求写入的文件数据(在下文中,″写入数据″)。写入数据可以在数据写入请求之后,直接原封不动地或者按请求源所预定的存储在存储器上的数据的存储器地址和大小(按字节)的形式加以接收。每个写入请求可以请求的最大数据大小等于块大小(64KB)。注意:最大数据大小不限于块大小并且可以是任何其它大小,比如256KB。
在直接原封不动地接收写入数据的情况下,I/O请求接收单元130将所接收到的写入数据转送到存储器的数据区(未说明)。
当接收到作为数据读取请求的I/O请求时,I/O请求接收单元130进一步从I/O请求源中接收与将要读取的文件数据有关的信息。然而,这一功能不是与文件记录功能有关的。因此,在这里没有给出详细说明。
I/O请求接收单元130将关于所接收的I/O请求的信息传递到文件管理单元190。所述I/O请求信息包含:I/O请求的类型(它是文件打开请求还是数据写入请求,等等);以及关于被请求来处理的文件的信息(在数据写入请求或文件关闭请求时是文件描述符,或者在文件打开请求时是文件名)。在数据写入请求时,I/O请求信息还包含写入数据的地址和大小。作为回应,I/O请求接收单元130从文件管理单元190接收根据所传递的I/O请求信息执行的处理的结果,并且将处理结果提供给I/O请求源。该处理结果可以被直接原封不动地提供给I/O请求源。或者,处理结果可以首先被转送到存储区并且将存储器地址提供给I/O请求源。
根据来自于文件管理单元190的指令,数据累积单元140将写入数据累积到与用文件描述符标识的文件相对应的其中一个文件缓冲器120。文件管理单元190通过将存储写入数据的存储区的地址和大小传递给数据累积单元140,来转送写入数据。
图4示出了如何将数据累积到文件缓冲器120A、120B和120C中以及如何将数据写入到闪存205的示例411。在图中,写入数据被累积在文件缓冲器120A、120B、和120C中的相应的一个中,文件缓冲器120A、120B、和120C中的每一个都是为特定文件保留的。例如,属于文件C的写入数据被累积在为文件C保留的文件缓冲器120C中。在此,写入数据被″累积″,这意味着如果没有其它数据已经被存储,则写入数据就从文件缓冲器C的顶部起存储。如果文件缓冲器C已经存储了一些数据,则直接在已存数据后面将写入数据写入到缓冲器120C中。为了描述的方便,在图中将存储在每一个文件缓冲器120中的数据的大小说明为簇大小的整数倍,尽管实际上情况不总是这样。此外,在图中将每一个文件缓冲器120说明为具有块大小,尽管该大小等于两个块(八个簇)。
在将写入数据累积到一个相应的文件缓冲器120之后,数据累积单元140向文件管理单元190发出累积结束通知。
根据来自于文件管理单元190的指令,文件写入单元160从文件缓冲器120中的一个指定文件缓冲器的顶部提取等于块大小的数据。文件写入单元160随后将所提取的数据转送到写入缓冲器125,并且将保持在文件缓冲器120中的数据移动到顶部。最后,文件写入单元160指示存储卡110将写入缓冲器125中存储的数据写入到闪存205的指定块(第一块中的一个块)。更具体而言,通过(i)将存储在写入缓冲器125中的数据转送到存储卡110的数据缓冲器202,以及(ii)向命令执行单元201发出写入命令,该写入命令包含写入数据将要写入的块的地址以及写入数据的大小。
文件管理单元190进行管理,以便以块为单元执行向存储卡111的闪存205的数据写入。
文件管理单元190从I/O请求接收单元130接收I/O请求信息。在所接收的I/O请求信息表明I/O请求的类型为数据写入请求的情况下,文件管理单元190将I/O请求信息所表明的写入数据的存储器地址和大小传递到数据累积单元140。另外,根据I/O请求信息中所包含的文件描述符,文件管理单元190指示与文件描述符所指定的文件相对应的一个文件缓冲器120来累积写入数据。
当从数据累积单元140中接收到累积结束通知时,文件管理单元190检查在文件缓冲器120中的一个相应文件缓冲器上累积的数据的大小,并且判断所累积的数据是否等于块大小或更大。
如果作出肯定的判断结果,则文件管理单元190参考FAT335搜索空闲块,为所累积的数据分配空闲块,并且擦除所述空闲块。文件管理单元190通过向存储卡110的命令执行单元201发出用于指定已分配块的块号的擦除命令来执行擦除。需要注意的是:空闲块是其簇全部都为空闲(未使用)的块。
尽管在这个实施例中空闲块是在分配块时擦除的,但是每一块的擦除都可以在块的重新分配与向该块写入数据之间的任何时间执行。同样适用的是,为每一块设置擦除标志以表明该块是否已被擦除,并且可以在存储卡110的空闲时间期间执行擦除。
接下来,文件管理单元190指示文件写入单元160从文件缓冲器120中的一个指定文件缓冲器的顶部提取等于块大小的数据,并且将由此所提取的数据写入到闪存205中。当从文件写入单元160接收到结束通知时,文件管理单元190通过更新与数据写入到其中的文件有关的部分来更新文件FAT335。
在图4中,例如,写入缓冲器125存储新文件C的一块数据。当文件写入单元160将存储在写入缓冲器125中的数据写入到闪存205的一个块(由簇9-12组成的块6)中时,文件管理单元190通过新近记录文件C的作为第一个簇的号的数字″9″来更新目录422。文件管理单元190还通过将连续的簇号9-12记录到各个条目中来更新FAT421。
当没有空闲块时,文件管理单元190执行错误处理,通过该错误处理将表明由于空闲块耗尽而不可能进行数据写入的日志信息输出到未图示的日志文件。或者,该日志信息可以显示在未图示的显示单元上。
根据这个实施例,当没有空闲块时就不可能进行数据写入。然而,在一个变形中,适用的是,如果空闲簇的总数等于块大小,则搜索并分配空闲簇。然而,在这种情况下,需要对包含这样的簇的每一块执行RMW操作。
另外,当从I/O请求接收单元130中接收到除写入请求之外的I/O请求时,文件管理单元190如下进行工作。
当接收到作为文件打开请求的I/O请求时,如果不存在具有该I/O请求信息中所包含的文件名的文件,则文件管理单元190在闪存205中创建新文件。如果已经存在具有该文件名的文件,则文件管理单元190标识该文件,并且作为处理结果将文件描述符返回到I/O请求源。如上所述,文件描述符是标识文件的信息。在将来的处理中,I/O请求源使用由此接收到的文件描述符来指定该文件。新文件的创建包括保留文件缓冲器120并为该新文件产生目录。
当接收到作为文件关闭请求的I/O请求时,文件管理单元190执行处理,以便完成由I/O请求信息中所包含的文件描述符标识的文件的数据写入。完成处理包括将驻留在文件缓冲器120中的一个指定文件缓冲器上的任何数据写入到闪存205中,并且解除分配(返回)该文件缓冲器。
当接收到作为文件读取请求的I/O请求时,文件管理单元190从由I/O请求信息中所包含的文件描述符标识的文件中读取数据,并且将所读取的数据发送到I/O请求源。
在文件记录装置开始工作时的时刻启动文件管理单元190,并且将跨在闪存205的块1-3上的系统区321(图3中所示)读取到存储器中。通过读取系统区321,文件管理单元190获取关于块、簇和扇区的信息。此外,为了提高所述过程效率,首先在存储器上更新FAT和目录。文件管理单元190随后根据需要,向存储卡110发出写入命令,从而将新的信息写入到图3中所示的闪存205的块2和3,借此更新FAT和目录。应该自然地认识到的是,在数据写入之前也需要擦除系统区的块。
图5-7是文件记录处理的处理步骤的流程图。参照图5-7对文件记录处理给出描述。
在图5中,I/O请求接收单元130从I/O请求源中接收文件I/O请求(S510)。
如果文件I/O请求是用于打开新文件的请求(S514),则文件I/O请求接收单元130还接收将要打开的文件的名称。I/O请求接收单元130随后向文件管理单元190传递由文件打开请求和文件名组成的I/O请求信息。作为响应,文件管理单元190执行文件打开处理,以创建具有所请求的文件名的新文件(S516)。文件打开处理的细节将稍后给出。
如果文件I/O请求是关闭文件的请求(S518),则I/O请求接收单元130还从I/O请求源中接收用于标识将要关闭的文件的文件描述符。I/O请求接收单元130随后向文件管理单元190传递由文件关闭请求和文件描述符组成的I/O请求信息。作为响应,文件管理单元190对由该文件描述符标识的文件执行文件关闭处理(S520)。所述文件关闭处理的细节将稍后给出。
如果文件I/O请求是写入请求(S522),则I/O请求接收单元130在该写入请求之后,直接原封不动地接收写入数据。或者,I/O请求接收单元130可以接收由I/O请求源预先确定的在存储器上存储的写入数据的地址和数据大小(按字节)。当直接地接收写入数据本身时,I/O请求接收单元130将所接收的写入数据转送到存储器的数据区(未图示),产生由新近存储的数据的地址和数据大小组成的I/O请求信息,并将由此产生的I/O请求信息传递到文件管理单元190。当接收到写入请求时,执行写入处理。对响应于写入请求而执行的写入处理的描述将稍后给出。
如果I/O请求信息不是上述请求中任何一个,则I/O请求接收单元130就根据所接收的I/O请求执行处理(S526)。这种请求的一个例子是用于从闪存205中读取文件数据的请求。然而,省略其详细说明。
图6A示出了文件打开处理的流程图,并且图6B示出了文件关闭处理的流程图。
在文件打开处理中,当从I/O请求接收单元130中接收到I/O请求信息时,文件管理单元190在图3中所示的根目录条目324中,生成具有由I/O请求信息表明的文件名的文件的目录(S610)。例如,在根目录条目324中创建图4中所示的″文件C″的目录422。注意:该文件的目录已经存在,则该文件不是新的,所以不必创建新目录。
接下来,文件管理单元190为新近打开的文件保留文件缓冲器120(步骤S612)。在图4中所示的例子中,新近打开的文件是″文件C″并且由此文件缓冲器120C被保留。文件管理单元190随后创建用作指向该文件的指针的文件描述符,并且作为处理结果,将该文件描述符传递到I/O请求接收单元130。作为该文件打开请求的处理结果,I/O请求接收单元130将从I/O请求接收单元130接收的文件描述符返回到I/O请求源。
在文件关闭处理中,当从I/O请求接收单元130接收到I/O请求信息时,文件管理单元190解除分配与由I/O请求信息中包含的文件描述符标识的文件相对应的文件缓冲器120,例如文件缓冲器120C(步骤S611)。最后,文件管理单元190将记录日期和时间(未图示)记录到文件的目录中,例如记录到目录422中,并且经由I/O请求接收单元130,将正常结束通知作为文件关闭请求处理结果返回到I/O请求源。
图7是响应于数据写入请求而执行的数据写入处理的流程图。
当判定为文件I/O请求是数据写入请求时,文件管理单元190向数据累积单元140通知关于与由I/O请求信息中所包含的文件描述符标识的文件相对应的文件缓冲器120,以及写入数据的地址和大小。文件管理单元190随后指示数据累积单元140将存储在所通知的地址上的写入数据加载到文件缓冲器120中的被通知的一个文件缓冲器上(S710)。根据从文件管理单元190接收的指令,数据累积单元140用来将存储在所通知的地址上的数据存储到文件缓冲器120中被通知的一个文件缓冲器中。
当从数据累积单元140中接收到累积结束通知时,文件管理单元190检查在数据已被累积在其中的文件缓冲器120中的一个相应文件缓冲器上存储的数据的总量,并且判断总量是否不小于块大小(S712)。
如果作出肯定的判断结果,则文件管理单元190参考FA335搜索空闲块(S716)。如果存在空闲块(S718),则文件管理单元190就分配该空闲块,并且令存储卡110擦除该空闲块。
文件管理单元190随后指示文件写入单元160将驻留在文件缓冲器120上的数据写入到所分配的空闲块中。根据该指令,文件写入单元160从文件缓冲器120的顶部提取等于块大小的数据,并且将所提取的数据转送到写入缓冲器125(S724)。保持在文件缓冲器120上的数据被向前移动。文件写入单元160随后将写入缓冲器125上的数据转送到存储卡110的数据缓冲器202,并且向命令执行单元201发出用于指定所分配空闲块的起始地址和块大小的写入命令。其结果是,存储卡110将保持在写入缓冲器125上的数据写入闪存205的指定块中(S725)。当从存储卡110中接收到记录结束通知时,文件写入单元160相应地向文件管理单元190发出记录结束通知。
当从文件写入单元160中接收到记录结束通知时,文件管理单元190通过更新与已经对其执行数据写入的文件有关的部分,来更新FAT(S726)。所述处理随后分支到步骤S712,以对在指定文件缓冲器120中保持的数据重复相同的操作。
根据当前实施例的一个变形,写入数据可以以另一种方式累积。例如,可能存在这样一种选择,即当数据写入请求时立即执行数据写入。在这种情况下,不累积写入数据,而是将其立即写入到闪存205中。或者,当接收到数据写入请求时,可以为相应的文件缓冲器设置计时器。如果该文件缓冲器的已存内容在预定时间周期之后保持不变,则所累积的数据随后被写入到闪存中。此外,在接收到用指定数据替换已有数据的数据写入请求的情况下,适用的是,在数据写入操作之前先写入保持在与所请求文件相对应的文件缓冲器中的所有数据。
第二实施例
在第二实施例中,向闪存的数据写入以块为单位执行,并且将要写入的块大小的数据可以由多个文件的数据组成。
除了只有第二实施例才有的两个组成单元之外,根据第二实施例的文件记录装置在结构上基本类似于根据图1中所示的第一实施例的文件记录装置。更具体而言,文件管理单元190和文件写入单元160具有与它们的对应部分不同的功能。在下文中,对所述差别给出描述。
图8示出了如何将数据累积到各个文件缓冲器120A、120B和120C中以及如何写入到闪存中的示例。根据第一实施例(图4),在新近将数据累积到其中一个文件缓冲器120中并且在那个文件缓冲器120中累积的数据的大小达到块大小时,将每一个文件缓冲器120中所累积的数据写入到闪存205中。根据第二实施例,即使数据累积单元140将数据新近累积到其中一个文件缓冲器120并且在那个文件缓冲器120中累积的数据的大小小于块大小,也执行向闪存的数据写入。更具体而言,如果存储在所有文件缓冲器120中的数据的总大小已经达到四个簇的大小(即,一个块的大小),则执行向闪存的数据写入。在这种情况下,文件管理单元190逐簇地从各个文件缓冲器120中提取数据,直到所提取的数据等于块大小为止。文件管理单元190随后将所提取的数据转送到写入缓冲器125,并且所转送的数据被写入到闪存中。在图8中所示的示例中,执行向闪存205的数据写入,其中在数据写入之前的所述闪存的已存内容如同图3中示出的示例316。通过数据写入操作而写入的写入数据包括从文件缓冲器120A中提取的一个簇、从文件缓冲器120b中提取的一个簇,以及从文件缓冲器120C中提取的两个簇。如在数据写入之后的闪存的内容的示例811中所示,所述写入数据存储在由簇号9-12组成的空闲块(块号6)中。甚至在这种情况下,将文件A的数据825写入簇9,将文件B的数据826写入簇10,以及将文件C的数据827写入簇11和12。也就是说,每一个簇都包含单个文件的数据,并且由此没有簇包含混合在其中的不同文件的数据。
对于其数据被新近写入的文件,更新FAT821和目录822。
需要注意的是:通过计算不超出每一个文件缓冲器120中所存储的数据的大小的最大簇数量,将在文件缓冲器120中存储的数据的大小转换成簇。
通过上述处理步骤,其整体上比当存储在单个文件缓冲器的数据的大小达到块大小时执行数据写入的情况更早地执行数据写入。例如,在来自相同内容的视频和音频数据在数量上不同,然而视频和音频数据需要被同步写入的情况下,将视频和音频数据与各个数据的数量成比例地写入到每一块中。
图9是根据第二实施例,响应于数据写入请求而执行的数据写入处理的详细的处理步骤的流程图。
在图9中,为相同的处理步骤使用与图7的流程图中所示相同的步骤号。
现在,参照图9,对数据写入处理给出描述,其集中在不同的处理步骤上。
在图9中,当数据累积单元140最近将数据累积到其中的文件缓冲器中的一个指定文件缓冲器中所存储的数据的大小小于块大小时(S712),文件管理单元190以簇为单位计算各个文件缓冲器120中所存储的数据的总大小,并且判断计算结果是否不小于四(其为等于一个块的簇数量)(S926)。如果作出肯定的判断结果,文件管理单元190检测用于存储写入数据的空闲块(S716)。
在分配空闲块之后,文件管理单元190根据数据最近被累积到其中的指定的文件缓冲器上所存储的数据,来判断写入数据是由单个文件的数据组成还是由多个文件的数据组成(S927)。如果判定写入数据由多个文件的数据组成,则文件管理单元190逐簇地从各个文件缓冲器120中提取数据,直到所提取的数据达到一个块的大小为止。文件管理单元190随后将由此所提取的数据转送到写入缓冲器125中(S928)。在数据写入到所分配空闲块之后,通过重写与数据被记录到其上的多个文件有关的部分来更新FAT。
第三实施例
根据本发明的第三实施例,在文件记录装置中可工作的过滤驱动器保证了文件数据的有效记录。
图10示出了根据第三实施例的在文件记录装置中运行的软件的分级结构。
应用程序1010是记录装置中用于发出文件记录请求的源。用于记录视频内容的程序是应用程序1010的一个例子。为了记录文件,应用程序1010向文件系统1020发出I/O请求。
文件系统1020是现有的通用文件系统,比如用于Windows操作系统的FAT文件系统(微软公司提出的)。文件系统1020记录并管理文件。更具体而言,文件系统1020除了如常规技术中的文件管理外,还执行诸如响应于从应用程序1010发出的文件I/O请求而记录新文件之类的处理。文件系统1020本身按簇执行存储器分配和管理,正如常规技术中的一样。也就是说,文件系统1020不执行任何按块进行的处理或管理。
文件系统1020根据从应用程序1010接收的文件I/O请求来执行处理。
文件I/O请求可以是文件打开请求、文件关闭请求、到文件的数据写入请求或自文件的数据读取请求。
当接收到文件I/O请求时,文件系统1020在设备级向存储卡设备驱动器1040(在下文中,简称″设备驱动器1040″)发出I/O请求,所述设备驱动器是存储卡110的设备驱动器(图1)。设备级I/O请求是以以下方式发出的。就到文件的数据写入请求而言,文件系统1020参考FAT搜索空闲簇,并且根据需要分配由此所检测到的空闲簇。文件系统1020产生由写入地址和数据大小组成的数据写入请求。在此,所述写入地址是由所分配的簇的第一个的扇区号指定的,并且所述数据大小是由扇区数量而非字节数量指定的。文件系统1020随后向设备驱动器1040发出数据写入请求。如上所述,设备级的I/O请求利用扇区号指定闪存205中的地址。
存储卡过滤驱动器1030(在下文中,简称″过滤驱动器1030″)截取从文件系统1020发出到设备驱动器1040的设备级I/O请求。如果该I/O请求是写入请求,则过滤驱动器1030禁止设备驱动器1040立即执行数据写入。取而代之,过滤驱动器1030使写入数据累积在作为内部存储区的驱动器数据缓冲器中。当满足预定条件时,过滤驱动器1030指示设备驱动器1040将所累积的数据一次性写入到存储卡110。需要注意的是:过滤驱动器1030的细节将稍后给出。
设备驱动器1040从过滤驱动器1030接收设备级I/O请求,并根据请求对存储卡110执行I/O处理。
存储卡110基本上等同于第一实施例描述的存储卡。然而,其闪存的格式是不同的,因为图3中所示的保留区322没有存储有关块的信息。更具体而言,根据当前实施例,表示每个块的簇数量的信息(块/簇:4)未被记录。
图11是由过滤驱动器1030执行的处理步骤的流程图。现在,参照图11,对过滤驱动器1030执行的I/O处理给出描述。
当被加载时,过滤驱动器1030保留预定大小(例如两个块)的驱动器数据缓冲器。驱动器数据缓冲器是内部使用的存储区。另外,过滤驱动器1030存储关于每个块的簇数量的(例如,″块/簇:4″),以及关于块、簇和扇区之间关系的内部信息。
当文件系统1020向设备驱动器1040发出驱动器级I/O请求时,过滤驱动器1030截取该I/O请求并且判定其是否是向闪存205的写入请求(S1110)。如果该I/O请求不是写入请求,则过滤驱动器1030指示设备驱动器1040执行所请求的处理(S1112)。驱动器级I/O请求是指基于扇区来指定读取数据或写入数据的I/O请求。就写入请求而言,例如,闪存205中的写入起始地址是由扇区号指定的,并且写入数据的大小是由扇区数量指定的。需要注意的是:由扇区数量指定的最大写入数据大小限于一个块的大小。
驱动器给I/O请求的例子包括:写入请求、读取请求以及块擦除请求。
图12是示出由过滤驱动器1030管理的驱动器数据缓冲器1201上的数据与存储卡110的闪存205的块之间的对应关系的视图。在图12中所示的例子中,驱动器数据缓冲器1201存储具有连续地址的数据项AL、A2和A3。数据项AL、A2和A3的总大小相当于块大小。
根据第一实施例,数据写入是在等于块大小的数据被存储在单个文件缓冲器中之后执行的。相反地,根据第三实施例,不总是数据仅仅在所累积的数据达到块大小之后才被写入的情况。然而,通常是这样的情况,其中仅对单个块全部地或部分地执行一次写入操作,而从不一次对两个或多个块执行。另外,对块的数据写入不是在每一次写入请求时就执行。取而代之,如果写入数据具有连续的地址,则该写入数据就被累积在驱动器数据缓冲器1201中。因此,避免了相同的数据被写入一次以上。
当I/O请求是写入请求时,过滤驱动器1030判断驱动器数据缓冲器1201是否是空的(S1113)。如果判定为空的,则所述处理分支到步骤S1120。如果数据驱动器缓冲器1201被判定为不空,则过滤驱动器1030判断写入数据是否邻接于在驱动器数据缓冲器1201中累积的数据(S1114)。
在图12中所示的例子中,数据项A1被累积在数据驱动器缓冲器1201中,并且数据项A2是由写入请求所请求的将被写入的写入数据。数据项A1的写入地址(第一个扇区的地址)表示为扇区号s1,并且数据大小表示为扇区数量d1。数据项A2的写入地址表示为扇区号s2,而数据大小表示为扇区数量d2。在这种情况下,如果地址s2等于(s1+d1)则判定数据项A1和数据项A2是连续的。
如果写入数据与累积在数据驱动器缓冲器1201中的数据不是连续的(S1116:N),则过滤驱动器1030就令设备驱动器1040将所累积的数据写入到闪存205中(S1118)。
接下来,过滤驱动器1030按以下方式将写入数据累积到驱动器数据缓冲器1201(S1120)。
如果驱动器数据缓冲器1201从起始起就是空的,或者由于其中累积的不连续数据刚被写入而造成它是空的,则过滤驱动器1030就简单地把写入数据存储到驱动器数据缓冲器1201中。
如果写入数据邻接于所累积的数据,则过滤驱动器1030就将写入数据累积到驱动器数据缓冲器1201中,以便驱动器数据缓冲器1201开始将该写入数据补充存储到先前累积的数据中。相应地更新写入数据的大小。
在上述的具体例子中,在当前数据写入请求之前的写入数据的大小表示为扇区数量d1。这个数据大小被改为(s1+s2),即通过加上d2计算出的,其为当前写入请求所请求的写入数据的大小。在驱动器数据缓冲器1201中累积的数据的写入地址(扇区号)和数据大小(扇区数量)被存储,以作为与驱动器数据缓冲器1021有关的管理信息(未图示)。
在图12中所示的例子中,在驱动器数据缓冲器1201中所累积数据的起始地址(扇区号)落入块1的中间并且所累积的数据相当于一个块的大小。在这种情况下,即使写入地址是连续的,数据项A2和A3也将跨在块边界上。也就是说,尽管写入数据是具有块大小的连续数据,对闪存205的数据写入也需要对两个块执行RMW操作。此外,不管在数据项A3后面的数据是否对于另一个块是连续的,同样需要对两个块执行RMW操作,这是浪费的。
为了避免这种浪费,过滤驱动器1030判断在驱动器数据缓冲器1201中所累积的数据是否将跨在块边界上(S1122)。如果数据写入的目标写入扇区中有任何一个对应于块的末尾(即,块的最后一个扇区),则作出所累积的数据将跨在块边界上的判断。如果判定所累积的数据将跨在块边界上,则只把一部分所累积的数据写入到闪存205的块中(在图12中所示的例子中,是块1)。将要写入的所累积的数据的一部分从数据缓冲器1201的顶部扩展至其写入地址与该块末尾对应的数据(在图12中所示的例子中,是数据项A1和A2)。过滤驱动器1030通过指示设备驱动器1040(i)将该块中所存储的数据读取到存储器上;(ii)擦除该块;(iii)在存储器上,将部分所累积的数据(在图12中所示的例子中,是数据项A1+A2)加到从该块中读取的数据上;以及(iv)将存储器上的所有数据回写到闪存205的所述块上,来执行对闪存205的所述块(在图12中所示的例子中,是块1)的数据写入。
根据第三实施例,过滤驱动器1030逐块地执行数据写入,但是当前实施例不限于此。例如,上述过滤驱动器的功能可以被并入设备驱动器或文件系统中。
到目前为止,已经通过上述实施例描述了本发明。然而,要自然地认识到的是,本发明绝不限于那些具体实施例,并且可以作出包含下列的各种修改。
本发明可以体现为计算机程序,其使计算机系统执行上述任何方法。此外,本发明可以体现为代表上述任何程序的数字信号。
此外,本发明可以体现为计算机可读记录介质,比如半导体存储器,其存储上述任何程序和数字信号。
此外,本发明可以体现为经由电信网络、无线或有线网络或以因特网为代表的网络传输的上述任何计算机程序和数字信号。
工业实用性
根据本发明的文件记录装置能够有效地存储大量视频和音频数据,并由此非常适用于诸如音乐和信息行业之类的涉及大量这类数据的记录和发布的行业中。
Claims (8)
1、一种文件记录装置,其用于将数据记录到按簇写入和按块擦除的记录介质上,其中每一个块都由预定数目的连续簇组成,所述文件记录装置包括:
接收单元,用于接收用于将多个文件中的一个指定的文件的数据写入到所述记录介质上的请求;
多个文件缓冲器,其中每一个用于所述文件中的一个不同的文件;
数据累积单元,用于将被请求写入的数据累积在与所述指定的文件对应的一个所述文件缓冲器中;
判断单元,用于判断数据累积单元已经累积的数据是否不小于块大小;和
写入单元,用于如果所述判断单元作出肯定判断,则从所累积的数据中提取一块数据,并将所提取的数据写入到所述记录介质的空闲块中。
2、如权利要求1所述的文件记录装置,其中
如果所述数据累积单元最近累积数据到其中的所述文件缓冲器中的一个指定的文件缓冲器中已经累积的数据不小于块大小,则所述判断单元作出肯定判断,以及
所述写入单元从所述指定的文件缓冲器的顶部提取一块数据,并将所提取的数据写入到所述记录介质的空闲块中。
3、如权利要求1所述的文件记录装置,其中
当用各个文件缓冲器中累积的数据的大小除以簇大小而计算出的每一个商的总和不小于预定数目时,所述判断单元作出肯定判断,以及
所述写入单元可以从各个文件缓冲器中逐簇地提取数据直到达到预定数目的簇为止,并且将所提取的数据写入到所述记录介质的空闲块中。
4、如权利要求1所述的文件记录装置,还包括:
擦除单元,用于在所述写入单元将所提取的数据写入到所述空闲块之前擦除所述空闲块。
5、一种用于文件记录装置的控制方法,所述文件记录装置包括多个文件缓冲器,其中每一个都用于多个文件中的一个不同的文件,并且将数据记录到记录介质上,所述记录介质按簇写入并按块擦除,每一个块都由预定数目的连续簇组成,所述方法包括:
接收步骤,用于接收用于将多个文件中的一个指定的文件的数据写入到所述记录介质上的请求;
数据累积步骤,用于在与指定文件相对应的一个文件缓冲器中累积被请求写入的数据;
判断步骤,用于判断在所述数据累积步骤中已经累积的数据是否不小于块大小;以及
写入步骤,用于如果所述判断步骤作出肯定判断,则从所累积的数据中提取一块数据,并将所提取的数据写入到所述记录介质的空闲块中。
6、一个用于由文件记录装置执行的程序,所述文件记录装置包括多个文件缓冲器,其中每一个都用于多个文件中的一个不同的文件,并且将数据记录到记录介质上,所述记录介质按簇写入并按块擦除,每一个块都由预定数目的连续簇组成,所述程序包括可用于使所述文件记录装置执行下列操作的代码:
接收步骤,用于接收用于将多个文件中的一个指定的文件的数据写入到所述记录介质上的请求;
数据累积步骤,用于将被请求写入的数据累积在与所述指定的文件对应的一个所述文件缓冲器中;
判断步骤,用于判断在所述数据累积步骤中已经累积的数据是否不小于块大小;以及
写入步骤,用于如果所述判断步骤作出肯定判断,则从所累积的数据中提取一块数据,并将所提取的数据写入到所述记录介质的空闲块中。
7、一种用于由文件记录装置执行的程序,所述文件记录装置包括驱动器数据缓冲器,并且将数据记录到记录介质上,所述记录介质按簇写入并按块擦除,每一个块都由预定数目的连续簇组成,所述程序包括可用于使所述文件记录装置执行下列操作的代码:
接收步骤,用于接收写入请求,其指定数据被请求写入的记录介质上的写入地址;
第一判断步骤,用于如果所述驱动器数据缓冲器不是空的,则判断为被请求写入的数据所指定的写入地址是否邻接于为存储在所述驱动器数据缓冲器上的数据所指定的写入地址;
数据累积步骤,用于如果所述第一判断步骤作出肯定判断,则在所述驱动器数据缓冲器中累积被请求写入的数据;
第二判断步骤,用于判断为所述驱动器数据缓冲器中累积的数据所指定的写入地址是否落在所述记录介质的块边界上;以及
写入步骤,用于如果第二判断步骤作出肯定判断,则将从所述驱动器数据缓冲器顶部到与所述块边界对应的点的部分所述累积的数据写入到所述记录介质上。
8、如权利要求7所述的程序,其中所述程序包括所述记录介质的过滤驱动器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003387886 | 2003-11-18 | ||
JP387886/2003 | 2003-11-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1906596A true CN1906596A (zh) | 2007-01-31 |
CN100543702C CN100543702C (zh) | 2009-09-23 |
Family
ID=34616171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800406240A Active CN100543702C (zh) | 2003-11-18 | 2004-10-07 | 文件记录装置及其控制方法和执行方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7610434B2 (zh) |
EP (1) | EP1686482B1 (zh) |
JP (1) | JP4287433B2 (zh) |
KR (1) | KR101087906B1 (zh) |
CN (1) | CN100543702C (zh) |
WO (1) | WO2005050453A1 (zh) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4845482B2 (ja) * | 2005-11-01 | 2011-12-28 | 株式会社東芝 | 記録再生装置及び記録方法 |
JP5002201B2 (ja) | 2006-06-30 | 2012-08-15 | 株式会社東芝 | メモリシステム |
US20080140724A1 (en) * | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
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 |
US8560760B2 (en) * | 2007-01-31 | 2013-10-15 | Microsoft Corporation | Extending flash drive lifespan |
KR100904758B1 (ko) * | 2007-02-08 | 2009-06-29 | 삼성전자주식회사 | 버퍼 메모리를 포함하는 플래쉬 메모리 장치 및 시스템,플래쉬 메모리 장치의 데이터 업데이트 방법 |
US7657572B2 (en) | 2007-03-06 | 2010-02-02 | Microsoft Corporation | Selectively utilizing a plurality of disparate solid state storage locations |
US20090094358A1 (en) * | 2007-10-05 | 2009-04-09 | Davis Gregg A | Data Bridge Maintenance Utilizing Data Traffic Log Change |
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 |
US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
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 |
JP5254879B2 (ja) * | 2009-05-22 | 2013-08-07 | 富士通テン株式会社 | データ書込装置、データ書込方法及びプログラム |
CN102696010B (zh) | 2009-09-08 | 2016-03-23 | 才智知识产权控股公司(2) | 用于将数据高速缓存在固态存储设备上的装置、系统和方法 |
CN102598019B (zh) * | 2009-09-09 | 2015-08-19 | 才智知识产权控股公司(2) | 用于分配存储的设备、系统和方法 |
EP2476039B1 (en) | 2009-09-09 | 2016-10-26 | SanDisk Technologies LLC | Apparatus, system, and method for power reduction management in a storage device |
US9223514B2 (en) | 2009-09-09 | 2015-12-29 | SanDisk Technologies, Inc. | Erase suspend/resume for memory |
US9122579B2 (en) | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
US8601222B2 (en) | 2010-05-13 | 2013-12-03 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
JP4714291B2 (ja) * | 2009-09-30 | 2011-06-29 | 株式会社東芝 | 情報記録装置、情報記録方法及び情報記録用プログラム |
JP2011209973A (ja) * | 2010-03-30 | 2011-10-20 | Hitachi Ltd | ディスクアレイ構成プログラム、計算機、計算機システム |
US8725934B2 (en) | 2011-12-22 | 2014-05-13 | Fusion-Io, Inc. | Methods and appratuses for atomic storage operations |
WO2012016089A2 (en) | 2010-07-28 | 2012-02-02 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and 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 |
US9047178B2 (en) | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
WO2012082792A2 (en) | 2010-12-13 | 2012-06-21 | Fusion-Io, Inc. | Apparatus, system, and method for auto-commit memory |
US9218278B2 (en) | 2010-12-13 | 2015-12-22 | SanDisk Technologies, Inc. | Auto-commit memory |
US9208071B2 (en) | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
US10817421B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent data structures |
WO2012083308A2 (en) | 2010-12-17 | 2012-06-21 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
WO2012100087A2 (en) | 2011-01-19 | 2012-07-26 | Fusion-Io, Inc. | Apparatus, system, and method for managing out-of-service conditions |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
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 |
WO2012116369A2 (en) | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
WO2012129191A2 (en) | 2011-03-18 | 2012-09-27 | Fusion-Io, Inc. | Logical interfaces for contextual storage |
US9563555B2 (en) | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
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 |
US10509776B2 (en) | 2012-09-24 | 2019-12-17 | Sandisk Technologies Llc | Time sequence data management |
US10318495B2 (en) | 2012-09-24 | 2019-06-11 | Sandisk Technologies Llc | Snapshots for a non-volatile device |
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 |
US10558561B2 (en) | 2013-04-16 | 2020-02-11 | Sandisk Technologies Llc | Systems and methods for storage metadata management |
US10102144B2 (en) | 2013-04-16 | 2018-10-16 | Sandisk Technologies Llc | Systems, methods and interfaces for data virtualization |
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 |
RU2661280C2 (ru) * | 2015-12-03 | 2018-07-13 | Хуавэй Текнолоджиз Ко., Лтд. | Контроллер массива, твердотельный диск и способ для управления твердотельным диском для записи данных |
CN110119418A (zh) * | 2018-01-16 | 2019-08-13 | 北京京东尚科信息技术有限公司 | 数据导出方法和装置 |
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 |
Family Cites Families (13)
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 |
JP2669365B2 (ja) | 1994-11-24 | 1997-10-27 | 日本電気株式会社 | 書換え可能なromファイル装置 |
JPH1069420A (ja) * | 1996-08-29 | 1998-03-10 | Sony Corp | 情報記録装置、情報記録再生装置、情報記録方法および情報再生方法 |
US5745418A (en) | 1996-11-25 | 1998-04-28 | Macronix International Co., Ltd. | Flash memory mass storage system |
JP3640802B2 (ja) * | 1998-06-08 | 2005-04-20 | 富士通株式会社 | データバックアップ方式 |
JP2000057039A (ja) | 1998-08-03 | 2000-02-25 | Canon Inc | アクセス制御方法及び装置及びファイルシステム及び情報処理装置 |
JP3616985B2 (ja) | 1998-10-13 | 2005-02-02 | 株式会社日立製作所 | 記憶装置管理方法および記憶装置管理システム |
JP3632543B2 (ja) | 1999-02-19 | 2005-03-23 | 三菱電機株式会社 | データ記憶方法および情報処理装置 |
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 |
CN100442393C (zh) | 1999-10-21 | 2008-12-10 | 松下电器产业株式会社 | 半导体存储卡的访问装置、初始化方法和半导体存储卡 |
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 | ソニー株式会社 | データ記憶装置 |
-
2004
- 2004-10-07 CN CNB2004800406240A patent/CN100543702C/zh active Active
- 2004-10-07 US US10/578,270 patent/US7610434B2/en active Active
- 2004-10-07 JP JP2005515557A patent/JP4287433B2/ja active Active
- 2004-10-07 WO PCT/JP2004/015182 patent/WO2005050453A1/ja active Application Filing
- 2004-10-07 KR KR1020067010215A patent/KR101087906B1/ko active IP Right Grant
- 2004-10-07 EP EP04792410A patent/EP1686482B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP1686482A4 (en) | 2009-03-25 |
WO2005050453A1 (ja) | 2005-06-02 |
US20070088666A1 (en) | 2007-04-19 |
CN100543702C (zh) | 2009-09-23 |
EP1686482A1 (en) | 2006-08-02 |
KR101087906B1 (ko) | 2011-11-30 |
US7610434B2 (en) | 2009-10-27 |
JPWO2005050453A1 (ja) | 2007-06-07 |
JP4287433B2 (ja) | 2009-07-01 |
EP1686482B1 (en) | 2013-03-06 |
KR20060114698A (ko) | 2006-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1906596A (zh) | 文件记录装置 | |
CN1833229A (zh) | 半导体存储卡、存取装置和存取方法 | |
CN1276358C (zh) | 用于存储设备的地址转换单元 | |
CN1297900C (zh) | 数据存储设备、主机设备、数据记录系统及数据管理方法 | |
CN1196328C (zh) | 数字图像编辑方法和系统 | |
CN1265293C (zh) | 文件管理方法 | |
CN1890644A (zh) | 文件管理装置、文件管理方法、文件管理方法程序以及记录该文件管理方法程序的记录介质 | |
CN1291320C (zh) | 保存大容量存储系统的所选数据的快照 | |
CN1493026A (zh) | 存储装置及利用此存储装置的记录再生装置 | |
CN1260665C (zh) | 用于管理可换存储媒体的设备和方法 | |
CN1956088A (zh) | 信息处理装置、信息处理方法以及计算机程序 | |
CN1947100A (zh) | 非易失性存储系统、非易失性存储装置、存储控制器、存取装置以及非易失性存储装置的控制方法 | |
CN1696888A (zh) | 记录介质、主机设备及数据处理方法 | |
CN1904858A (zh) | 数据存储设备、数据存储方法以及记录/再现系统 | |
CN1848069A (zh) | 数据存储设备、重构控制设备、重构控制方法及存储介质 | |
CN1379404A (zh) | 记录介质、装置和方法、再生装置、及计算机可以读取的介质 | |
CN101038554A (zh) | 软件更新方法、更新管理程序和信息处理设备 | |
CN1577599A (zh) | 具有播放列表编辑功能的记录设备 | |
CN1717661A (zh) | 数据记录装置 | |
CN101030223A (zh) | 用于处理信息的装置、方法、和计算机程序 | |
CN1731402A (zh) | 用协处理器加速文件系统操作的方法及装置 | |
CN101030156A (zh) | 用于数据备份的装置和方法 | |
CN1188786C (zh) | 文件管理方法及采用该方法的存储卡和终端装置 | |
CN1374587A (zh) | 取得数据库匹配性的信息管理装置和记录该库程序的媒体 | |
CN1574010A (zh) | 文件管理方法和记录装置、再现装置、记录媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |