CN101620516B - 信息处理装置、其控制方法,以及程序 - Google Patents
信息处理装置、其控制方法,以及程序 Download PDFInfo
- Publication number
- CN101620516B CN101620516B CN2009101395040A CN200910139504A CN101620516B CN 101620516 B CN101620516 B CN 101620516B CN 2009101395040 A CN2009101395040 A CN 2009101395040A CN 200910139504 A CN200910139504 A CN 200910139504A CN 101620516 B CN101620516 B CN 101620516B
- Authority
- CN
- China
- Prior art keywords
- write
- write order
- order
- data
- file
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开了信息处理装置、其控制方法,以及程序。信息处理装置控制对盘的写入。命令接收部件从主装置接收写命令以及控制与写命令有关的缓存的控制命令。队列存储部件存储用于由命令接收部件接收的写命令和控制命令的队列。控制部件判定存储在队列中的写命令是用于文件的数据的第一写命令和用于与该文件相对应的元数据的第二写命令的哪个,当控制命令由命令接收部件接收时使已接收并存储在队列中的至少一个第一写命令和至少一个第二写命令成组,将执行序号指派给组中的第一写命令和第二写命令以使得第一写命令到盘的数据写入优先于第二写命令的数据写入被执行,并且根据所指派的执行序号控制第一写命令和第二写命令的执行。
Description
技术领域
本发明涉及信息处理装置,其控制方法,以及程序。
背景技术
当使用诸如便携式摄像机(camcorder)之类的家用装置将视频流记录到具有诸如硬盘装置或存储卡之类的块I/O的设备中时,首先多个文件被打开并且附加数据随后被写入其中。由于这些文件共同组成了流,因此如果一部分文件被损坏,则可能丢失较长时间段中的流。
可是,硬盘装置具有用于提高传送性能的写缓冲器(写缓存)。另外,由于硬盘装置没有足够的抗冲击和抗震动性,因此,这些装置往往具有拥有尽可能大的容量的写缓存以便稳定地记录数据。因此,如果在数据被写入硬盘装置时发生电源故障,则由于存储在写缓存中的大量数据丢失,因此损坏变得严重。
在这点上,提供了使得存储在写缓存中的所有数据段被写入硬盘装置的同步缓存命令(例如,参见日本专利申请早期公开No.平6-259198(此后,称为专利文献1)))。主装置基于要传送的数据的类型和重要性等级来最佳地选择同步缓存命令的发布频率。例如,在视频流等的情况中,在针对一帧数据的写命令发布之后,发布同步缓存命令,以使得该帧数据安全地被写入硬盘装置。
根据本发明的一个实施例,硬盘驱动器(HDD)的队列中的写命令被分组为针对文件的写命令和针对元数据的写命令,从而优化写命令的写序列。相反,在专利文献1描述了这样一种技术:在从主装置接收到写命令之后,从整个队列检索可以用来访问HDD的写命令。
发明内容
与主装置发布的并且由盘存储装置接收的写命令有关的信息被存储在队列中。盘存储装置以接收的顺序从队列读取与写命令有关的信息,并且根据同步缓存命令执行对HDD的写处理。主装置发布作为写命令的用于文件的写命令以及用于表示与文件的大量数据有关的分配信息等的元数据的写命令。然而,不保证主装置总是在用于文件的写命令之后发布用于元数据的写命令,并且不保证总是以发布的顺序将写命令写入HDD中。因此,如果在执行同步缓存命令时发生电源故障,则存在仅元数据被写入HDD而文件的大量数据未被适当写入HDD的可能性。在这种情况中,担心会出现其元数据指示已经被记录的文件实际上未被适当记录的不一致,从而在流包括多个文件时导致丢失长时间段中的流。
鉴于前面的问题,希望提供一种可以当在写入盘期间发生电源故障时使数据丢失最小化的信息处理装置、其控制方法,以及程序。
根据本发明的一个实施例,提供了一种用于控制对盘的写入的信息处理装置。该信息处理装置包括命令接收部件、队列存储部件和控制部件。命令接收部件从主装置接收写命令以及控制与写命令有关的缓存的控制命令。队列存储部件存储用于由命令接收部件接收的写命令和控制命令的队列。控制部件判定存储在队列中的写命令是用于文件的数据的第一写命令还是用于与该文件相对应的元数据的第二写命令,当控制命令由命令接收部件接收时使已接收并存储在队列中的至少一个第一写命令和至少一个第二写命令成组,将执行序号指派给组中的第一写命令和第二写命令以使得第一写命令到盘的数据写入优先于第二写命令的数据写入被执行,并且根据所指派的执行序号控制第一写命令和第二写命令的执行。
根据本方面的该实施例,通过确定队列的组中的写序号以使得用于文件的数据的第一写命令优先于用于元数据的第二写命令被写入盘,可以防止在控制命令的执行期间由于电源故障仅元数据被写入盘的情形发生,由此防止其元数据指示已经记录的文件实际上未被适当记录的不一致性。因此,可以减小丢失长时间段中的流的风险。
第一写命令可以以连续数据为对象。控制部件可以确定用于将文件的数据写入盘的存储区域中的连续位置的多个第一写命令,并且可以将队列中的链接信息指派给多个第一写命令。因此,可以在将多个第一写命令统一为一个等同的写命令的情况下来执行对盘的写处理。
信息处理装置还可以包括缓冲部件,该缓冲部件将多个第一写命令的每个的文件的数据存储在队列中。当命令接收部件接收相对于存储在缓冲部件中的文件的数据的用于写入更新数据的新的第一写命令时,控制部件可以将用于禁止对从主装置接收的用于文件的数据的读命令作出响应的信息指派给队列中的第一写命令。因此,可以防止在未更新的文件的旧数据存储在缓冲部件的情况下控制部件对主装置作出响应的问题。
盘在空间上可以被划分为写有文件的数据的第一存储区域和写有元数据的第二存储区域。控制部件将执行序号分派给用于将文件的数据写入第一存储区域中的连续位置的多个第一写命令的每个,以使得文件的数据从接近盘的第二存储区域的第一存储区域的一侧被写入第一存储区域,并且可以根据所指派的执行序号控制多个第一写命令的每个的执行。因此,可以减少磁头的总的寻找距离。
根据本发明的另一实施例,提供了一种用于控制对盘的写入进行控制的信息处理装置的方法。该方法包括:从主装置接收写命令以及控制与写命令有关的缓存的控制命令,并且将写命令和控制命令存储在队列中;判定存储在队列中的写命令是用于文件的数据的第一写命令还是用于与文件相对应的元数据的第二写命令;当控制命令在接收步骤中被接收时,使已接收并存储在队列中的至少一个第一写命令和至少一个第二写命令成组;将执行序号指派给组中的第一写命令和第二写命令以使得第一写命令到盘的数据写入优先于第二写命令的数据写入被执行;并且根据所指派的执行序号执行第一写命令和所述第二写命令。
根据本发明的另一实施例,提供了一种控制对盘进行写入并且使得内置在信息处理装置中的计算机用作命令接收部件、队列存储部件和控制部件的程序。命令接收部件从主装置接收写命令以及控制与写命令有关的缓存的控制命令。队列存储部件存储用于由命令接收部件接收的写命令和控制命令的队列。控制部件判定存储在队列中的写命令是用于文件的数据的第一写命令还是用于与该文件相对应的元数据的第二写命令,当控制命令由命令接收部件接收时使已接收并存储在队列中的至少一个第一写命令和至少一个第二写命令成组,将执行序号指派给组中的第一写命令和第二写命令以使得第一写命令到盘的数据写入优先于第二写命令的数据写入被执行,并且根据所指派的执行序号控制第一写命令和第二写命令的执行。
如上所述,根据本发明的实施例,即使在对盘进行写入期间发生电源故障,也可以使数据丢失最小化。
考虑到下面对如在附图中所示的本发明的最佳模式实施例的详细描述将更清楚本发明的这些和其它目的、特征和优点。
附图说明
图1是示出根据本发明实施例的盘存储装置的结构的框图;
图2是示出写命令的结构的示图;
图3是示出同步缓存命令的结构的示图;
图4是描述FAT 32文件系统的示意示图;
图5是示出队列的进程的流程图;
图6是示出在已接收到的写命令之后的另一可访问HDD的写命令的情况中的示例的示图;
图7是描述队列的结构的示图;
图8是描述设置不返回标志(no-return flag)的处理的示例的流程图;以及
图9是描述确定写命令的HDD写序号的技术的示图。
具体实施方式
接下来,参考附图描述本发明的实施例。
图1是示出根据本发明实施例的作为信息处理装置的盘存储装置的结构的框图。
如图1所示,根据本实施例的盘存储装置10包括通用串行总线(USB)接口控制部件11(命令接收部件)、内部总线12、接口控制部件13、控制部件14、存储器控制部件15、缓冲存储器16、硬盘驱动器(HDD)17、存储器18(队列存储部件),以及中央处理单元(CPU)19。
USB接口控制部件11是这样的模块,其与主装置20的USB接口控制部件21协同操作来控制盘存储装置10和主装置20之间的接口。主装置20是诸如视频相机或便携式摄像机之类的电子装置,并且例如包括CPU22、存储器23、成像部件24和记录部件25。USB接口控制部件11通过内部总线12向控制部件14提供从主装置20的USB接口控制部件21接收的写命令,并且将从主装置20传送来的写数据存储在USB接口控制部件11的端点(End point)FIFO(EP)111中,直到EP 111变满为止。当EP111变满变满时,USB接口控制部件11通过内部总线12将写数据传送到存储器控制部件15。盘存储装置10和主装置20之间的接口不限于USB系统,而可以使用传送速率等于或高于USB系统的传送速率的另外的接口,例如,IEEE 1394系统。
内部总线12是在盘存储装置10的模块之间传输命令和数据的传输路径。
存储器控制部件15将通过内部总线12从USB接口控制部件11获得的写数据存储在缓冲存储器16中。
缓冲存储器16包括:临时存储要传送到HDD 17的写数据的写缓冲器,以及临时存储从HDD 17传送来的并且尚未传送到主装置20的读数据的读缓冲器。
接口控制部件13是控制内部总线12和HDD 17之间的接口的模块。
控制部件14将关于写命令(例如,SCSI(盘存储装置10)命令)的信息以及关于从主装置20接收的同步缓存命令的信息存储在设置在存储器中的队列中,并且对信息执行预定处理。另外,从该操作开始异步地,控制部件14从队列读取信息,将信息转换为HDD 17可以解释的格式的写命令(例如,ATA命令),并且通过接口控制部件13将经转换的写命令提供给HDD 17。
CPU 19总地控制整个盘存储装置10,例如以通过内部总线12交换模块之间的命令和数据。存储器18用作存储器控制部件15和CPU 19的工作区域等。
主装置20在数据要被写入HDD 17时发布写命令。
图2是示出写命令的结构的示图。该写命令包括作为表示命令类型的命令描述符块(CDB)数据的操作码、逻辑块寻址(LBA)、长度等。操作码是与写命令的类型相对应的代码。LBA是要写入HDD 17的数据的头逻辑块地址。长度是要写入HDD 17的数据的长度。当盘存储装置从主装置20接收写命令时,主装置20将关于该写命令的信息存储在队列中。稍后将描述存储在队列中的关于写命令的信息。
另外,主装置20发布执行存储在队列中的所有写命令的称为同步缓存命令的写缓存控制命令,以便将存储在写缓存中的整个数据记录在HDD 17上。
图3是示出同步缓存命令的结构的示图。该同步缓存命令包括作为表示命令的类型的CDB数据的操作码、IMMED、LBA和块数。操作码是与同步缓存命令的类型相对应的代码。IMMED是指定主装置20是否要接收对完成到HDD 17的数据写入的通知的信息。当主装置20要接收通知时,指定“0”。当主装置20不接收通知时,指定“1”。即,在IMMED=0的情况中,主装置20在接收对完成到HDD 17的数据写入的通知之前,主装置20不能发布下一写命令。在IMMED=1的情况中,主装置20不必等待对完成到HDD 17的数据写入的通知而可以发布下一写命令。更具体而言,在IMMED=1的情况中,当确认由已接收到的每个写命令指定的起始LBA、长度等有效时,盘存储装置10向主装置20发送回表示这种状况的类似“Good Status(好状态)”之类的状态,以便将存储在写缓冲器中的数据写到HDD 17上。主机装置20检查状态并发布下一个写命令。LBA表示要写入HDD 17的数据的头逻辑缓冲器地址。块数表示要写入HDD17的块数。然而,如果“00h”被指定为块数,则存储在写缓存中的所有数据段都被写入HDD 17。接下来,将描述“00h”被指定为块数的情况。
为了更安全地将数据写入HDD 17,需要指定IMMED=0并且在确认完成了到HDD 17的数据写入之后发布下一写命令。然而,在这种情况中,存在如下问题:写缓存的使用效率以及数据传送性能降低了,或者如果由于振动等使到HDD 17的数据写入被临时禁止,则立即会发生错误。因此,在根据本实施例的主装置20中,指定IMMED=1。
接下来,参考图4描述FAT32文件系统。在FAT32文件系统中,其每个都是HDD 17的盘存储区域中的最小存取单元的多个(2的幂)扇区(sector)被联合成为作为最小文件数据管理单元的一个簇(cluster)。集权按LBA值的升序被指派有簇号。在下面的描述中,假设簇号是通过忽略偏移将LBA值除以16而获得的(其中,在LBA空间中,具有簇号0的簇将被分配)。在这种情况中,一个簇为8K字节。
图4的文件分配表(FAT)31是记录有指示以何种顺序将文件数据的片段存储在哪些簇中的链接信息的表格。因此,在FAT 31中,使用簇号来代替LBA值。由FAT文件系统管理的存储区域由MBR/PBR区(region)32、FAT区33以及文件和目录数据区34构成。
MBR/PBR区32是存储主引导记录(MBR)和分区引导记录(PBR)的记录区域。MBR/PBR区32的位置在LBA空间中是固定的。FAT区33是存储存储了文件的大量数据的簇的簇号的链接信息的区。FAT区33的位置在LBA空间中也是固定的。文件和目录数据区34是存储用于组织并管理文件的文件的大量数据和目录数据(目录项)的区。每个目录项包括针对每个文件的文件名和簇号(起始簇号),在该簇号处记录了与文件名相对应的文件的数据的头。
当文件被读取时,文件系统从目录项中检索被指定为读取目标的文件名,并且读取与文件名相对应的起始簇号。文件系统从由起始簇号指定的簇中读取数据。此后,参考FAT区33,文件系统检查在与起始簇号相对应的簇之后的下一簇,并且从该下一簇读取数据。此后,参考FAT区33,文件系统以相同的方式从连续地被链接起来的簇中读取数据。最后,一旦从FAT区33确认了指示文件的数据的结束的文件的结尾(EOF),则文件系统停止读取文件的数据。
每个目录项还存储诸如到父目录和子目录的指针以及存取时间之类的元信息。在诸如便携式摄像机之类的家用装置中,应用软件可以使得特定数据和目录被放置在预定LBA范围中(应用保留区35)。
接下来,将描述根据本实施例的盘存储装置中的基于从主装置20接收的写命令和同步缓存命令的队列的处理。
图7是示出存储与从主装置20接收的写命令和同步缓存命令有关的信息的队列的示例的表。
首先,参考图7,描述存储在队列中的信息的结构。在每次接收到写命令或同步缓存命令时,关于每个命令的信息被存储在队列中。与存储在队列中的每个命令有关的信息包括接收序号、命令类型、地址类型、起始LBA、用于写入HDD 17的写序号、链接标志、链接目的地指针、不返回标志等等。
接收序号表示信息存储在队列中的顺序,即从主装置20接收的写命令和同步缓存命令的接收顺序。命令类型是指示所接收到的命令是写命令(写)还是同步缓存命令(同步)的信息。地址类型是基于在所接收到的写命令中包含的起始LBA和长度而确定的,并且是指示所接收到的写命令是用于写入保留区(FAT区33)的命令还是用于写入文件和目录数据区34的命令的信息。对于HDD 17的写序号指示所接收到的写命令实际执行对于HDD 17的写处理的顺序。链接标志是指示由所接收到的写命令指定的LBA范围是否接续到由另一写命令指定的LBA范围。如果这些LBA范围是连续的,则链接标志设为“1”,而如果这些LBA不是连续的,则链接标志设为“0”。链接目的地指针是表示作为在链接标志=1时的条目的联接目的地以及其位置关系的条目的信息。不返回标志是这样的标志,用于禁止与所接收到的写命令相关联的存储在缓冲存储器16中的写数据被发送来作为对从主装置20接收到的读命令的响应。如果不返回标志设为“1”,则作为对读命令的响应,写数据不被发送。
在发布了同步缓存命令之后,主装置20在如下模式中操作:主装置20发布下一写命令,而无需从盘存储装置被通知已完成对HDD 17的数据写入(IMMED=1)。因此,出现了一种情形,其中,例如,当同步缓存命令的条目之后,下一写命令的条目另外地存储在如图7所示的队列中。
例如,图7示出了如下情况中的队列:其中,连续地接收到六个写命令(接收序号1至6)、一个同步缓存命令(接收序号7)、五个写命令(接收序号8至12)、一个同步缓存命令(接收序号13)、二个写命令(接收序号14和15)、一个同步缓存命令(接收序号16)、二个写命令(接收序号17)。
这里,基于同步缓存命令被连续地处理的写命令的至少一个条目称为“组”。换言之,在图7所示的队列中,指派有接收序号1至6的写命令的条目为组1,指派有接收序号8至12的写命令的条目为组2,指派有接收序号14和15的写命令的条目为组3,以及指派有接收序号17的写命令的条目为组4。在这种情况中,尚未接收到请求执行组4的条目的写命令的同步缓存命令。因此,此后,如果主装置20发布新的写命令,则指派有接收序号18的条目被添加到队列,并且关于该新的写命令的信息存储在其中。
图5是示出对主装置20发布的命令的队列的处理的进程的流程图。
为了简化,假设由写命令指定的数据的长度都等于或小于一个地址块。
首先,控制部件14通过USB接口控制部件11接收主装置20发布的命令(步骤S101)。这里,假设主装置20发布的命令为写命令、读命令和同步缓存命令中的任一个。
控制部件14基于在所接收到的命令中包含的操作码判定所接收到的命令的类型。如果控制部件14确定所接收到的命令是写命令(步骤S102中的否→步骤S103中的否),则控制部件14将新的条目添加到队列中,并且在该条目中存储接收序号、命令类型和起始LBA。
此后,控制部件14判定该写命令所指定的LBA范围是否与队列中被指派有用于写入HDD 17的固定序号的条目的写命令所指定的LBA范围相同(步骤S104)。换言之,控制部件14判定与当前接收到的写命令相对应的写数据是否是将被改写到与已经被指派有固定写序号并存储在队列中的其它写命令相对应的写数据的数据。稍后将描述“队列中被指派有用于写入HDD 17的固定序号的条目”。
接下来,将描述这样的情况:由当前接收到的写命令指定的LBA范围与队列中由被指派有用于写入HDD 17的固定序号的条目的任意写命令不匹配(步骤S104中的否)。
在这种情况中,控制部件14判定由当前接收到的命令指定的LBA范围是否在LBA空间中的保留区(FAT区33)内(步骤S105)。如果由当前接收到的写命令指定的LBA范围在保留区内,则意味着与写命令相对应的写数据是表示与文件的大量数据的分配信息、记录持续时间、文件大小等有关的信息的元数据。相反,如果由当前接收到的写命令指定的LBA范围未在保留区内,则意味着与写命令相对应的写数据是文件的大量数据。在此示例中,假设“0”至“10”的起始LBA是保留区而“11”及以后的起始LBA是文件和目录数据区34。
(接收到用于文件写入的写命令的情况)
首先,将描述在与写命令相对应的写数据是文件的大量数据的情况中的控制部件14的操作(步骤S105中的否)。
在这种情况中,控制部件14将“数据”存储为新近添加到队列中的条目中的地址类型。此后,控制部件14从队列中的最近一组检索继当前接收到的写命令之后可以用来访问HDD 17的另一写命令(步骤S106)。继当前接收到的写命令之后的可以用来访问HDD 17的另一写命令是指定接续到由当前接收到的写命令指定的LBA范围的LBA范围的另一写命令。如果未发现另一相关写命令(步骤S107中的否),则控制部件14将队列中的同一组中的用于文件的写命令中的最小有效号(least significantnumber)设置为用于由当前接收到的写命令写入HDD 17的写序号,并且将该写序号存储在队列中的新的条目中(步骤S108)。
此后,控制部件14判定添加到队列中的条目的数目是否等于或大于预定上限值(步骤S113)。如果添加到队列中的条目的数目小于上限值,则控制部件14从主装置20接收下一命令,并且执行对新接收到的命令执行相同的处理。如果添加到队列中的条目的数目等于或大于上限值,则控制部件14停止从主装置20接收命令直到队列中的空间变得可用为止。
控制部件14与从主装置20接收命令异步地执行控制以基于存储在队列中的最先的组的每个条目的信息执行到HDD 17的数据写入。从队列中删除已写入HDD 17的组中的每个条目。结果,可以从主装置20接收下一命令,并且可以将接收到的命令存储在队列中。
如果控制部件14发现了继当前接收到的写命令之后的可以用来访问HDD 17的另一写命令(步骤S107中的是),则控制部件14将队列中的同一组中的用于文件的写命令中的最小有效号设置为用于由当前接收到的写命令写入HDD 17的写序号,将所指派的写序号存储在队列中的新的条目中,并且将链接标志和链接目的地指针存储在新的条目和继新的条目之后的可以用来访问HDD 17的另一写命令的条目中(步骤S109)。结果,完成了将用于文件的写数据的写命令添加到队列中的处理。
此后,以前面的方式,控制部件14判定添加到队列中的条目的数目是否等于或大于预定上限值(步骤S113)。如果条目的数目小于预定上限值,则控制部件14从主装置20接收下一命令并且对接收到的命令执行相同的处理。另外,如果条目的数目等于或大于预定上限值,则控制部件14停止从主装置20接收下一命令直到队列中的空间变得可用为止。
图6是示出当发现继当前接收到的写命令之后的可以用来访问HDD17的另一写命令时更新队列的示例的示图。指派有接收序号5的写命令的条目是新近添加的条目。在当前接收到的写命令中,地址类型是“数据”并且起始LBA是“12”。另一方面,在指派有接收序号3并且属于队列中的同一组1的条目中,起始LBA是“11”。因此,控制部件14确定当前接收到的写命令在指派有接收序号3的条目之后。结果,设置了指派有接收序号3和5的条目的链接标志和链接目的地指针。此外,在指派有接收序号4的写命令的条目中,地址类型是“元”。即,由于该条目是用于元数据的写命令的条目,因此,当前接收到的写命令的条目的用于写入HDD 17的写序号早于指派有接收序号4的条目的写序号。在图6所示的示例中,由于已经存储了用于文件的大量数据的写命令的三个条目,因此,用于写入HDD 17的当前接收到的写命令的条目的序号变为“4”。因此,用于写入HDD 17的指派有接收序号4的写命令的条目的序号从“4”降到(lower)“5”。
(接收到用于元数据的写命令的情况)
接下来,将描述控制部件14在在步骤S105中判定由写命令指定的LBA范围在保留区内(步骤S105)的情况中的操作。
在这种情况中,控制部件14将“元”存储为新近添加到队列的条目中的地址类型。此后,控制部件14将组中用于写入HDD 17的最小有效写序号存储在队列中的新的条目中(步骤S110)。因此,用于写入HDD 17的元数据的写序号被指派有组中的最小有效序号。
(接收到同步缓存命令的情况)
接下来,将描述在步骤S103中判定当前接收到的命令是同步缓存命令的情况中的操作。
控制部件14将关于同步缓存命令的信息存储在新近添加到队列的条目中。换言之,控制部件14将“同步缓存命令”存储为条目中的命令类型。此后,控制部件14在接收到同步缓存命令之前为已经添加到队列中的写命令的连续的条目中的每个固定用于写入HDD 17的写序号(步骤S111)。因此,设置了如上所述的“指派有用于写入HDD 17的固定写序号的并且存储在队列中的条目”。此后,指派给这些条目的用于写入HDD 17的写序号禁止被改变。
此后,以前面的方式,控制部件14判定添加到队列的条目的数目是否等于或大于预定上限值(步骤S113)。如果条目的数目小于预定上限值,则控制部件14从主装置20接收下一命令并且针对接收到的命令执行相同的处理。如果条目的数目等于或大于预定上限值,则控制部件14停止从主装置20接收下一命令直到队列中的空间变得可用为止。
接下来,将描述在步骤S104中判定由当前接收到的写命令指定的LBA范围与队列中被指派有用于写入HDD 17的固定写序号的条目之一的LBA范围相同的情况(步骤S104中的是)。
在这种情况中,控制部件14为指定了与当前接收到的写命令相同的LBA范围的另一写命令的条目设置不返回标志(步骤S112)。此后,如果控制部件14在队列中存储了设置有不返回标志的条目时从主装置20接收到指定了条目的相同的LBA范围的读命令(步骤S102中的是),则控制部件14对具有与条目中的写命令相对应的写数据的主装置20不作出反应。而是,控制部件14对具有与新的写命令相对应的写数据的主装置20作出反应(步骤S114)。因此,可以防止控制部件14对具有存储在缓冲存储器16中的未更新文件的旧的写数据的主装置20作出反应的问题。
接下来,将参考图8描述用于设置不返回标志的处理的示例。将描述在已存在图7所示的队列的情况下接收到图8所示的其起始LBA是“30”(接收序号18)的新的写命令的情况。在这种情况中,控制部件14检查由当前接收到的命令指定的LBA范围是否与队列中已经指派有用于写入HDD 17的固定写序号的任意条目的LBA范围是否相同。结果,控制部件14判定指派有接收序号14的写命令的条目符合条件。在这种情况中,指派有用于写入HDD 17的接收序号14的写命令的条目的写序号已经由指派有接收序号16的同步缓存命令固定。如图8所示,控制部件14基于判定结果为指派有接收序号14的条目设置不返回标志,从而禁止与写命令相关联的存储在缓冲存储器16中的写数据被发送而作为对来自主装置20的读命令的响应。
如果控制部件14在步骤S102中判定接收到的命令是读命令,则控制部件14执行控制以基于读命令立即执行读处理(步骤S114)。
(基于关于队列的信息到HDD的写操作)
如上所述,在盘存储装置10中,控制部件14将与从主装置20接收到的写命令和同步缓存命令有关的信息存储在设置在存储器18中的队列中,并且对信息执行预定处理。与该操作异步地,控制部件14读取关于队列的信息,将信息转换为HDD 17可以解释的格式的写命令,并且通过接口控制部件13将写命令提供给HDD 17。此时,控制部件14读取与队列中的最先的组(组1)的条目的写命令有关的信息,并且基于写命令执行控制以执行到HDD 17的写处理。在完成了基于组1的写命令的写入之后,控制部件14读取与组2的条目中的写命令有关的信息,并且基于写命令执行控制以执行写处理。每个组中的条目的写命令是根据队列中用于写入HDD 17的写序号而被连续执行的。此时,控制部件14基于组中已为写命令的条目设置的链接标志和链接目的地指针确定组中多个写命令的链接关系,并且执行控制以使得要链接的写命令的每个都由一个等同的写命令取代并且被提供给HDD 17。
可用如下两种方法来确定同一组中用于文件的写命令的用于写入HDD 17的写序号。
第一方法包括根据如图7的队列中所示的写命令被接收的顺序设置写序号。
第二方法包括对组中的写序号排序以使得寻找距离变短。图9是描述该方法的示图。当控制部件14接收新的写命令时,控制部件14将新的写命令的起始LBA与同一组中的另一写命令的起始LBA相比较,并且设置具有较小起始LBA值的写命令,即,起始LBA接近磁头LBA的写命令禁止超过其它的。在图9所示的示例中,由于新的写命令(接收序号18)的起始LBA为“30”,并且同一组中的另一写命令(接收序号17)的起始LBA为“31”,则控制部件14将优先级高于另一写命令(接收序号17)的用于写入HDD 17的写序号指派给新的写命令(接收序号18)。因此,用于写入HDD 17的另一写命令(接收序号17)的写序号从“14”降到“15”,并且用于写入HDD 17的新的写命令(接收序号18)的写序号被设为“14”。
通过这样设置具有较高优先级的用于写入HDD 17的写序号并且具有较小起始LBA值的写命令,可以减小磁头的总的寻找距离。这是因为,在用于前面组的写处理中,最接近于磁头LBA的保留区最后通常写有元数据。
根据本实施例,可以获得如下效果。
通常,关于写命令的信息按从主装置接收命令的顺序被添加到队列中,并且到HDD的写处理是通过根据同步缓存命令按接收命令的顺序从队列读取关于写命令的信息来执行的。此时,主装置发布用于文件的写命令以及用于表示文件的大量数据的分配信息、记录持续时间、文件大小、帧数等的元数据的写命令。然而,不保证主装置总是在用于文件的写命令之后发布用于元数据的写命令,并且不保证到HDD的写入总是按照发布的顺序来执行。例如,在图7中指派有接收序号12的写命令的元数据是表示指派有接收序号8至11的写命令的文件的大量数据的分配信息、记录持续时间、文件大小等的元数据。然而,一般地,主装置不一定在用于文件的大量数据的写命令之后发布用于元数据的写命令。因此,存在这样的可能性:如果在写期间发生了电源故障,则会出现仅元数据被写入HDD而文件的大量数据未被适当写入HDD的情形。在这种情况中,担心会发生其元数据指示已经记录的文件实际上未被适当记录在HDD上的不一致性,从而导致丢失长时间段中的流。
相反,仅文件的大量数据被写在HDD上而元数据未写在HDD上的情况等同于大量数据未写入HDD的情况。在这种情况中丢失的流的量小于仅元数据写在HDD上从而导致元数据和文件的大量数据之间的不一致的情况。
根据本实施例,用于写入HDD的用于文件的写命令的写序号被设置为优先级高于用于元数据的写命令的写序号。因此,即使当执行同步缓存命令时发生电源故障,也可以防止仅元数据被写入HDD的情形。结果,可以防止其元数据指示已经记录的文件实际上未被适当记录在HDD上的不一致。因此,可以减少丢失长时间段中的流的风险。另外,由于减少了在FAT区33与文件和目录数据区34之间移动的磁头的寻找次数,因此,可以提高数据传送速率。
另外,根据本实施例,用于将文件的大量数据写在HDD的存储区域中的连续的LBA范围中的多个写命令被确定,并且链接标志和链接目的地指针被存储在队列中的这些命令的各个条目中。结果,多个写命令被统一为写入到HDD 17的一种等同的写命令。
在前面的实施例中,描述了IMMED=1的情况。然而,本实施例在当确认完成了到HDD 17的数据写入之后,主装置20发布下一写命令的IMMED=0的情况中也有效。
本申请包含与在2008年6月30日向日本专利局提交的日本优先权专利申请JP 2008-171766中公开的主题有关的主题,该申请的全部内容通过引用被结合于此。
本领域的技术人员应当明白,可以根据设计要求和其它因素进行各种修改、组合、子组合和变更,只要它们在所附权利要求或其等同物的范围之内。
Claims (5)
1.一种控制对盘的写入的信息处理装置,包括:
命令接收部件,该命令接收部件从主装置接收写命令以及控制与所述写命令有关的缓存的控制命令;
队列存储部件,该队列存储部件存储用于由所述命令接收部件接收的所述写命令和所述控制命令的队列;以及
控制部件,该控制部件判定存储在所述队列中的所述写命令是用于文件的数据的第一写命令还是用于与所述文件相对应的元数据的第二写命令;当所述控制命令被所述命令接收部件接收时,将已接收并存储在所述队列中的至少一个第一写命令和至少一个第二写命令成组;将执行序号指派给所述组中的所述第一写命令和所述第二写命令,以使得所述第一写命令的对所述盘的数据写入优先于所述第二写命令的数据写入而被执行;并且根据所指派的执行序号,控制所述第一写命令和所述第二写命令的执行。
2.根据权利要求1所述的信息处理装置,
其中,所述第一写命令针对连续的数据,并且
其中,所述控制部件确定用于将所述文件的数据写入所述盘的存储区域中的连续位置的多个所述第一写命令,并且所述控制部件将所述队列中的链接信息指派给所述多个第一写命令。
3.根据权利要求2所述的信息处理装置,还包括
缓冲部件,该缓冲部件将所述多个第一写命令中的每个第一写命令的所述文件的数据存储在所述队列中,
其中,当所述命令接收部件接收到相对于存储在所述缓冲部件中的所述文件的数据的用于写入更新数据的新的第一写命令时,所述控制部件将用于禁止对从所述主装置接收的用于所述文件的数据的读命令作出响应的信息指派给所述队列中的所述第一写命令。
4.根据权利要求3所述的信息处理装置,
其中,所述盘在空间上被划分为写有所述文件的数据的第一存储区域和写有所述元数据的第二存储区域,并且
其中,所述控制部件将所述执行序号分派给用于将所述文件的数据写入所述第一存储区域中的连续位置的所述多个第一写命令的每个第一写命令,以使得所述文件的数据从所述第一存储区域的接近所述盘的所述第二存储区域的一侧被写入所述第一存储区域,并且所述控制部件根据所指派的执行序号控制所述多个第一写命令的每个的执行。
5.一种控制对盘的写入的信息处理方法,包括:
从主装置接收写命令以及控制与所述写命令有关的缓存的控制命令,并且将所述写命令和所述控制命令存储在队列中;
判定存储在所述队列中的所述写命令是用于文件的数据的第一写命令还是用于与所述文件相对应的元数据的第二写命令;
当所述控制命令在接收步骤中被接收时,将已接收并存储在所述队列中的至少一个第一写命令和至少一个第二写命令成组;
将执行序号指派给所述组中的所述第一写命令和所述第二写命令,以使得所述第一写命令的对所述盘的数据写入优先于所述第二写命令的数据写入而被执行;并且
根据所指派的执行序号执行所述第一写命令和所述第二写命令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008171766 | 2008-06-30 | ||
JP2008171766A JP5029513B2 (ja) | 2008-06-30 | 2008-06-30 | 情報処理装置、情報処理装置の制御方法、およびプログラム |
JP2008-171766 | 2008-06-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101620516A CN101620516A (zh) | 2010-01-06 |
CN101620516B true CN101620516B (zh) | 2012-04-25 |
Family
ID=41448958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101395040A Expired - Fee Related CN101620516B (zh) | 2008-06-30 | 2009-06-30 | 信息处理装置、其控制方法,以及程序 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20090327624A1 (zh) |
JP (1) | JP5029513B2 (zh) |
CN (1) | CN101620516B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8429318B1 (en) * | 2007-08-30 | 2013-04-23 | Virident Systems, Inc. | Methods for early write termination into non-volatile memory with metadata write operations |
US8516172B1 (en) | 2007-08-30 | 2013-08-20 | Virident Systems, Inc. | Methods for early write termination and power failure with non-volatile memory |
TWI433157B (zh) * | 2009-09-04 | 2014-04-01 | Silicon Motion Inc | 存取快閃記憶體的方法以及相關之記憶裝置 |
US9229809B2 (en) * | 2011-09-11 | 2016-01-05 | Microsoft Technology Licensing Llc | Nonvolatile media journaling of verified data sets |
US9122401B2 (en) * | 2012-08-23 | 2015-09-01 | Apple Inc. | Efficient enforcement of command execution order in solid state drives |
CN103336671B (zh) * | 2013-06-17 | 2016-07-13 | 北京奇虎科技有限公司 | 从网络中获取数据的方法和设备 |
CN105988719B (zh) * | 2015-02-07 | 2019-03-01 | 深圳市硅格半导体有限公司 | 存储装置及其处理数据的方法 |
US11055806B2 (en) * | 2015-02-27 | 2021-07-06 | Advanced Micro Devices, Inc. | Method and apparatus for directing application requests for rendering |
US10380069B2 (en) * | 2016-05-04 | 2019-08-13 | Western Digital Technologies, Inc. | Generalized write operations verification method |
CN106202367B (zh) * | 2016-07-07 | 2019-03-05 | 腾讯科技(深圳)有限公司 | 一种对象信息的处理方法及装置 |
US10846223B2 (en) * | 2017-10-19 | 2020-11-24 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd | Cache coherency between a device and a processor |
CN110908591B (zh) * | 2018-09-17 | 2023-05-30 | 群联电子股份有限公司 | 存储器管理方法、存储器储存装置及存储器控制电路单元 |
CN109471596B (zh) * | 2018-10-31 | 2022-03-18 | 北京小米移动软件有限公司 | 数据写入方法、装置、设备及存储介质 |
JP2022523107A (ja) * | 2019-02-01 | 2022-04-21 | トランジションズ オプティカル リミテッド | カスタマイズされたフォトクロミック光学物品の推薦を生成する方法、システム、及びコンピュータプログラム製品 |
JP7226112B2 (ja) | 2019-05-31 | 2023-02-21 | 富士通株式会社 | 液浸システム |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1752916A (zh) * | 2005-10-25 | 2006-03-29 | 威盛电子股份有限公司 | 磁盘阵列的控制器及其工作方法 |
WO2006050287A2 (en) * | 2004-10-28 | 2006-05-11 | Intel Corporation | Implementing bufferless dma controllers using split transactions |
CN1862478A (zh) * | 2006-06-02 | 2006-11-15 | 杭州华为三康技术有限公司 | 一种解决磁盘冗余阵列中写空洞的方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000039968A (ja) * | 1998-05-19 | 2000-02-08 | Matsushita Electric Ind Co Ltd | デ―タ記憶装置及びその制御方法 |
JP2003044227A (ja) * | 2001-08-02 | 2003-02-14 | Matsushita Electric Ind Co Ltd | 情報記録装置 |
US7533214B2 (en) * | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
JP4186509B2 (ja) * | 2002-05-10 | 2008-11-26 | 株式会社日立製作所 | ディスクシステムとそのキャッシュ制御方法 |
US7010645B2 (en) * | 2002-12-27 | 2006-03-07 | International Business Machines Corporation | System and method for sequentially staging received data to a write cache in advance of storing the received data |
JP4111852B2 (ja) * | 2003-03-20 | 2008-07-02 | 株式会社リコー | データ転送装置、ドライブ装置、光情報記録装置、データ転送装置用プログラム、ドライブ装置用プログラム、データ転送装置用プログラムを記憶する記憶媒体、ドライブ装置用プログラムを記憶する記憶媒体、データ転送方法、及びドライブ方法 |
JP2004334459A (ja) * | 2003-05-07 | 2004-11-25 | Nec Corp | 記録再生装置、記録再生方法、および記録再生プログラム |
JP4668794B2 (ja) * | 2003-12-19 | 2011-04-13 | パナソニック株式会社 | 記録デバイス制御装置 |
US7310711B2 (en) * | 2004-10-29 | 2007-12-18 | Hitachi Global Storage Technologies Netherlands B.V. | Hard disk drive with support for atomic transactions |
KR101354152B1 (ko) * | 2006-12-18 | 2014-01-27 | 삼성전자주식회사 | 비휘발성 데이터 저장장치에 구비된 가상 파일 시스템의작업 스케줄링 방법 및 장치 |
-
2008
- 2008-06-30 JP JP2008171766A patent/JP5029513B2/ja not_active Expired - Fee Related
-
2009
- 2009-06-29 US US12/493,402 patent/US20090327624A1/en not_active Abandoned
- 2009-06-30 CN CN2009101395040A patent/CN101620516B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006050287A2 (en) * | 2004-10-28 | 2006-05-11 | Intel Corporation | Implementing bufferless dma controllers using split transactions |
CN1752916A (zh) * | 2005-10-25 | 2006-03-29 | 威盛电子股份有限公司 | 磁盘阵列的控制器及其工作方法 |
CN1862478A (zh) * | 2006-06-02 | 2006-11-15 | 杭州华为三康技术有限公司 | 一种解决磁盘冗余阵列中写空洞的方法 |
Also Published As
Publication number | Publication date |
---|---|
US20090327624A1 (en) | 2009-12-31 |
JP5029513B2 (ja) | 2012-09-19 |
JP2010015610A (ja) | 2010-01-21 |
CN101620516A (zh) | 2010-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101620516B (zh) | 信息处理装置、其控制方法,以及程序 | |
US9495105B2 (en) | System managing a plurality of flash memory devices | |
CN101258493B (zh) | 用于在顺序存取数据存储子系统中执行搜索操作的系统和方法 | |
KR100975825B1 (ko) | 기억장치, 기억 시스템 및 기억 방법 | |
CN100428186C (zh) | 存储装置和存储控制方法 | |
US7610437B2 (en) | Data consolidation and garbage collection in direct data file storage memories | |
US8015352B2 (en) | Disk drive storage defragmentation system | |
CN100550168C (zh) | 信息处理装置、信息处理方法 | |
JP2007200333A (ja) | オブジェクト・ベースのデータ記憶装置 | |
CN103080896A (zh) | 对访问重新排序以减少对磁带介质的总查找时间 | |
JP4992835B2 (ja) | ディスク記憶装置およびプログラム | |
JP2015087837A (ja) | 計算機システム、及びデータ配置制御方法 | |
US6260006B1 (en) | System and method for multi-volume tape library | |
US6442648B1 (en) | Method of and system for the dynamic scheduling of requests to access a storage system | |
JP2019028954A (ja) | ストレージ制御装置、プログラム、及び重複排除方法 | |
JP6531574B2 (ja) | ストレージ装置、ストレージ装置制御プログラム及びストレージ装置制御方法 | |
JP2018197933A (ja) | ストレージ制御装置、情報処理システムおよびプログラム | |
US7421536B2 (en) | Access control method, disk control unit and storage apparatus | |
US20110106861A1 (en) | Interface Techniques Providing Contiguous Storage For Files | |
CN118132012A (zh) | 数据写入方法、数据读取方法、系统及电子设备 | |
JP2016042294A (ja) | ストレージ装置、ストレージ装置制御プログラム及びストレージ装置制御方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120425 Termination date: 20140630 |
|
EXPY | Termination of patent right or utility model |