CN1875339A - 驱动设备及相关计算机程序 - Google Patents
驱动设备及相关计算机程序 Download PDFInfo
- Publication number
- CN1875339A CN1875339A CNA2004800319793A CN200480031979A CN1875339A CN 1875339 A CN1875339 A CN 1875339A CN A2004800319793 A CNA2004800319793 A CN A2004800319793A CN 200480031979 A CN200480031979 A CN 200480031979A CN 1875339 A CN1875339 A CN 1875339A
- Authority
- CN
- China
- Prior art keywords
- write
- order
- sectors
- data
- driving arrangement
- 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
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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种驱动设备,即使当来自主设备的写指令是以具有短的写数据长度的命令给出时,也能够防止数据传输速率的降低。如果由主设备2发出的多个ATA命令之一的写结束地址与下一个ATA命令的写起始地址是连续的,那么命令分析单元使得在一个处理中执行按照连续的命令将数据写入SD卡1。结果,将数据写入SD卡时的开销仅需承受一次,这使得提高了传输速率。
Description
技术领域
本发明属于控制将数据写入非易失性存储器的技术领域,涉及当该技术被应用到具有内置非易失性存储器的存储卡的驱动设备和用于访问这样的存储卡的计算机程序时的改进。
背景技术
目前,存储卡驱动设备不仅在家用电器领域、而且在专业的视频设备领域正在引起关注。以下描述涉及当采集新闻材料等时在视频记录中使用SD存储卡(以下简称“SD卡”)的示例性***结构。使用SD卡的常规影像***由主设备和驱动设备构成。SD卡通过具有PCMCIA卡配置的适配器连接到驱动设备。
因为SD卡通过PCMCIA卡连接到驱动设备,所以主设备能够用访问PCMCIA卡的相同过程来访问SD卡。适配器也能够用来连接多个SD卡,并且主设备能够将多个连接的SD卡像一个PCMCIA卡一样处理。
如果主设备是具有PCMCIA卡接口的摄像机或者个人计算机,那么视频能被记录在SD卡上,增加了SD卡作为视频记录介质能够被投入的使用。也存在通过安装多个存储卡构成在视频记录中使用的存储卡阵列的技术。
发明内容
因为常规影像***中的SD卡是通过PCMCIA卡连接的,所以主设备执行的从SD卡读取和写入SD卡是使用ATA命令来指示的。用一个ATA命令可写的数据长度仅仅是128千字节,意味着如果有人想将有几十亿字节或几亿字节大小的视频数据写入SD卡,那么主设备将不得不发几百或几千条ATA命令到驱动设备。当大量的ATA命令被发到驱动设备时,在将数据写入SD卡时所承受的开销的不利影响变得非常显著。
这些开销源于(i)改变逻辑地址和物理地址之间的对应的处理,和(ii)验证被写入SD卡的数据的处理。因为开销存在于用一个ATA命令可写的时间周期内而不管用这个命令可写的短数据长度,所以通过用写时间周期来除写数据长度而计算出的传输速率相对较低。例如,如果SD卡阵列是通过安装多个SD卡形成的,并且将数据写入SD卡是并行执行的,那么在任一时间可写入每个SD卡的数据长度,在两个卡的阵列的情况下是被减半,而在四个卡的阵列的情况下是被减去四分之三。当形成多个SD卡阵列时,由于用一个命令可写的数据长度的进一步减少,因此在由开销引起的传输速率上的影响就进一步增加。
本发明的目的是提供一种驱动设备,即使当来自主设备的写指令是以具有短的写数据长度的命令给出时,该驱动设备也能够防止传输速率的下降。
为了解决上述问题,属于本发明的驱动设备是用于根据主设备发出的命令将主设备传送的数据写入到存储卡上,并且该驱动设备包含接收单元和写入单元,其中所述接收单元用于接收主设备发出的多个命令,所述写入单元用于如果接收到的命令之一的写结束地址与下一个命令的写起始地址是连续的,那么在一个处理过程中执行通过连续的命令将数据写入存储卡。
由于上述驱动设备在一个处理过程中执行通过多个命令将数据写入存储卡,所以即使是多个命令,也只承受一次开销。这样就防止了由开销引起的写处理延迟。
对于用于计算传输速率的方程(即,以“数据写入需要的时间周期”来除“将要写入的数据长度”),分子(即写数据长度)是由多个命令写入的数据长度的总和。另一方面,分母(即写时间周期)是通过多个命令进行数据写入需要的时间周期的总和,由于对于该多个命令而不是对于单个的命令的写周期,只需承受一次开销,数据写入需要的时间(分母)总的来说缩短了。由于这个写时间周期的缩短,用上述方程计算出的传输速率总的来说增大了,因此使得满足了用于记录视频数据的设备规范。
这里,该处理过程可以包括重复顺序地将从主设备接收到的数据写入存储卡直到停止(STOP)指令被给出的处理,并且驱动设备还可以包含分析单元和指令单元,其中所述分析单元用于对每个命令的写起始地址和扇区数目进行解码,扇区数目是用命令写入的数据的扇区数目,所述指令单元用于在被写入的扇区数目达到了s+t的时刻给出停止指令,其中s是一个命令的扇区数目,而t是下一个命令的扇区数目。
由于结束向存储卡的写处理的必需条件是来自驱动设备的停止指令,因此能够通过延迟停止指令的定时,在一个处理过程中实现通过多个命令进行的数据写入。
这里,该处理过程可以在分析单元对来自所述一个命令的写起始地址A和扇区数目s时被启动,并且包含从写起始地址A开始的数据写入,分析单元可以分析下一个命令直到被写入的扇区数目达到了s,并且如果下一个命令的写起始地址B与所述一个命令的写结束地址A+s是连续的,那么当被写入的扇区数目达到了s+t时,指令单元可以给出停止指令。
分析连续的命令,而不等待用任何一个命令写入的数据的传输的结束。由于用于分析发自主设备的命令的时间周期并不影响数据写入需要的时间(即,在上述传输速率方程中的分母),所以即使当主设备发出大量具有短的写数据长度的命令时,这个分析时间周期也不会降低传输速率。
附图说明
图1示出属于本发明的驱动设备的使用配置;
图2示出主设备2、驱动设备4和SD卡1之间的通信序列;
图3示出驱动设备4的内部结构;
图4示出驱动设备4的简化内部结构;
图5是示出当主设备2发出多个命令时命令分析单元怎样执行处理的时间图;
图6是存在连续性时的时间图;
图7是示出命令分析单元11的处理的流程图;
图8用与图2相同的标号示出主设备2、驱动设备4和SD卡1之间的通信序列;
图9A-9D示出回转保存(wraparound saving)的例子;
图10示出实施例2中命令分析单元11的处理;
图11示出实施例3中命令分析单元11的处理;
图12示出属于实施例4的禁止标志添加的例子;
图13是示出实施例5中命令分析单元11的处理的流程图;
图14A-14D示出图13中的命令分析单元11的处理的特定实例;
具体实施方式
下面描述了属于本发明的驱动设备的实施例。首先,最先描述属于本发明的驱动设备的运转之外的使用配置。图1示出了属于本发明的驱动设备的使用配置。在图1中,提供了属于本发明的驱动设备,以在由SD卡1a至1d、主设备2和PCMCIA卡3构成的影像***中将视频图像记录到SD卡1a至1d的过程中使用。影像装置的使用需要与数字视频磁带(DV)同等的视频和音频质量。必需保证4MB/s的带宽来实现这个质量,对于上述影像***,已经实现了保证这个带宽的改进。接下来描述组成这个***的设备。
SD卡1a至1d每个都包含控制单元、非易失性存储器和内部存储器,在内部存储器中累积了数据之后,所述SD卡根据驱动设备发出的命令(SD命令),将从驱动设备传送的数据写入非易失性存储器。非易失性存储器的记录区由记录块组成。当将数据写入非易失性存储器时,SD卡1a至1d继续将从主设备2发送的数据临时写入空闲记录块中,而不是将数据直接写入写地址所指示的记录块。当驱动设备发出停止指令时,SD卡改变逻辑和物理地址之间的对应关系,以便把逻辑地址分配到已经被写入数据的记录块。这个改变包括对示出非易失性存储器中逻辑和物理地址的对应的相关表进行的重写。SD卡更新该相关表,验证写入的数据,然后将示出验证结果的状态信息传送到驱动设备。状态信息示出是否发生写错误。从接收来自驱动设备4的SD命令直到状态信息的传送的系列操作在这里被称为一个“处理过程”。由于必须为每个处理更新相关表并且验证写入的数据,所以开销的不利影响随着处理的数量的增大变得更显著。
主设备2是诸如摄像机或个人计算机这样的设备,该主设备2通过向驱动设备发出ATA命令来执行对于SD卡的数据读取/写入。主设备2将安装在驱动设备4中的多个SD卡识别成一个虚拟驱动器,并在确定了将被写入的逻辑地址(即写地址)和扇区数目后发出ATA命令。这里提到的“扇区”与SD卡1a至1d上的记录块一一对应。由于ATA命令最初是为磁盘介质设计的,所以主设备2用“扇区”单元来表达写地址等。
PCMCIA卡3是用于安装多个SD卡1a至1d的适配器。
驱动设备4根据主设备2发出的ATA命令,将数据写入通过PCMCIA卡3连接的SD卡1a至1d。这个数据写入包括向SD卡1a至1d发出SD命令,和将从主设备2顺序地发送的数据传送到SD卡1a至1d。一旦所有用一个ATA命令写入的数据都传送完后,驱动设备4向SD卡1a至1d发出停止指令。在发出停止指令后,驱动设备4从SD卡1a至1d接收状态信息,并且向主设备2发送指示写结束的中断信号,来结束一个处理过程。图2示出主设备2、驱动设备4和SD卡1a至1d之间的通信序列。当如图2所示主设备2发出第i个ATA命令时,驱动设备4执行命令分析az1,然后向SD卡1a至1d发出SD命令[i]。如果SD命令[i]是要写入四条数据,那么驱动设备4将从主设备2发送的数据B[i]传送到SD卡1a至1d。一旦用ATA命令[i]写入的数据已经被发送,主设备4就发送停止指令[i]来结束SD卡1a至1d的写入。作为停止指令[i]的结果,在向驱动设备4返回状态信息[i]之前,SD卡1a至1d执行相关表更新m1和数据验证vy1。当接收到状态信息时,驱动设备4向主设备2返回中断信号[i]。上述是涉及第i个ATA命令的处理。当从主设备2发送第i+1个ATA命令时,重复相同的处理。传输速率是通过用时间1来除大小1(即,大小1/时间1)而计算出的,其中,大小1是用ATA命令应该可写的总数据大小,时间1是从主设备2发出ATA命令直到接收到中断信号所经过的时间。这里,尽管用一个ATA命令可写的总的数据大小没有超过128千字节,但是因为时间1被表更新和数据验证时间的增加而延长了,所以传输速率总的来说是降低了。
上述是使用驱动设备4的***配置。以下描述涉及驱动设备4的产品配置。驱动设备4能够被基于图3中的内部结构而在工业上生产出来。如图3所示,驱动设备4由PCI目标单元5、PCI主控单元7、卡控制单元8a至8d、命令存储器9、数据存储器10、和命令分析单元11组成。为安装在驱动设备中的每个SD卡1a、1b、1c和1d提供一个卡控制单元8a、8b、8c和8d。将数据写入SD卡1a至1d是用条带化(striping)来执行的。“条带化”是指在将数据划分成多个记录块单元后,并行地将数据写入多个SD卡。图3中的数据存储器10的内部描绘了对写数据的条带化。由于在给出的例子中有四个SD卡,所以写数据被划分成四部分。利用图3中的条带化,被划分的数据(数据X)的第一部分被写入第一个SD卡(wt1),第二部分被写入第二个SD卡(wt2),第三部分被写入第三个SD卡(wt3),第四部分被写入第四个SD卡(wt4)。作为条带化的结果,SD卡1a至1d构成一个虚拟驱动器。利用条带化,如果用于写入的扇区数目大于或等于数据被划分的部分的数目(若数据被划分成4部分,则是4或更多块),那么写效率就提高,如果小于3,那么写效率就降低。
由于假设有四个SD卡的内部结构的描述变得复杂,所以为了简化,以下描述参考图4的内部结构图。与图3相比,在图4中,SD卡1a-1d和卡控制单元8a-8d分别表示为SD卡1和卡控制单元8。接下来将描述图4中的组件(PCI目标单元5、PCI主控单元7、卡控制单元8、命令存储器9、数据存储器10、命令分析单元11)。
PCI目标单元5有内部寄存器5a,并通过该内部寄存器与主设备2执行命令和状态信息的发送/接收。这个在主设备2写入时的发送/接收被如下执行。主设备2在将要执行写入的时候将一个写命令写入PCI目标单元5的内部寄存器5a。如下所述,当写命令被写入内部寄存器时,PCI主控单元7变成总线主控器,并且开始与主设备2的数据传输。当数据传输结束时,PCI目标单元5在内部寄存器5a中存储状态信息,并向主设备2宣称一个中断信号。作为该中断信号的结果,主设备2通过PCI目标单元5的内部寄存器5a读取状态信息。以命令和状态信息的这个发送和接收来执行数据传输。
如上所述,当写命令被写入PCI目标单元5中的内部寄存器时,PCI主控单元7变成总线主控器,并执行与作为主控器的驱动设备4的数据传输。
卡控制单元8根据命令分析单元11(在后面描述)执行的命令分析的结果,执行对SD卡1的读/写控制,发出SD命令,向SD卡1传送数据和发出停止指令。
命令存储器9在等待队列中存储从主设备2发送的ATA命令。从主设备2发送的ATA命令与普通的ATA命令的不同之处在于添加了标记。这些标记指定了对单个ATA命令的编号,并且由于命令存储器9存储仍添加了标记的ATA命令,所以命令分析单元11能够在命令存储器9内根据主设备2发出这些ATA命令的顺序来分析命令。
数据存取器10是用于临时存储将被写入SD卡1的数据和从SD卡1读出的数据的内部存储器。
命令分析单元11接受主设备2发出的命令,对命令进行分析,并根据分析结果控制PCI主控单元7来执行写入。图5是示出在主设备2发出多个命令的情况下命令分析单元如何执行处理的时间图。图5的第一级示出在主设备2和SD卡1之间的传输路径上发送的内容。A[x]是第x个命令,Tag[x]是示出第x个命令的连续编号x的标记,B[x]是第x个命令传送的数据,C[x]示出返回到第x个命令的发出源的状态信息。第二和第三级示出由命令分析单元11执行的一系列处理过程:“接受第x个命令”、“分析命令”、“发出中断”、和“结束”处理。在第二和第三级,“x”分别等于“1”(x=1)和“2”(x=2)。
“接受第x个命令”是接受添加了Tag[x]的第x个命令并宣布第x个处理过程的处理。“命令处理[x]”包含对添加了Tag[x]的命令的分析、以及对命令的起始地址A和扇区数目s的解码。
“第x个处理过程的数据传输”包括将驱动设备4分析的顺序传送的数据B[x]从命令分析单元11发送到SD卡1。这个数据传输持续到传送的扇区的数目达到了预定数目u。将预定数目u的初始值设置为从命令分析获得的扇区数目s。上述是命令分析单元11在第二级的处理。接下来看第三级,其中揭示了图5中对第x+1个命令的分析被执行,而不等待涉及第x个的处理过程的数据传输结束。这将使通过第x个和第x+1个命令进行的写入被在一个处理过程中执行。在将通过不同命令进行的写入合并到一个处理过程的过程中,命令分析单元11不仅分析第x+1个命令的地址B和扇区数目t,而且判断通过将u+1加到第x个命令的地址A上而获得的地址A+u+1是否与第x+1个命令的地址B一致。图5示出连续性不存在的情况。在这种情况下,在传送了用于通过第x个命令进行写入的所有数据之后,驱动设备4接收来自SD卡1的状态信息并向主设备2返回中断信号。
另一方面,图6示出了存在连续性的情况。在这种情况下,即使在用第x个命令写入的数据传送之后,在通过加上扇区数目t来更新预定数目u而不向主设备2返回中断信号之后,驱动设备4继续传送从主设备2发送的数据(由第x+1个命令写入的数据)。驱动设备4在传送的扇区数目达到预定数目u(=s+t)的时刻,接收来自SD卡1的状态信息,并向主设备2返回中断信号。
由于在一个命令的地址与下一个命令的地址连续的情况下,驱动设备4继续传送用下一个命令写入的数据而不向SD卡1发出停止指令,所以SD卡1的相关表更新和数据验证对每多个命令执行一次。减少需要执行的表更新和数据验证的次数揭示了提高传输速率的可能性。
通过让通用微处理器执行流程图7中所示的处理过程,实现了命令分析单元11,其中该流程图是用计算机可读语言描述的。接下来参照这个流程图来描述命令分析单元11执行的处理过程。
命令分析单元等待至少一个ATA命令被存储在命令存储器9中,并且当这是情况时(步骤S1=是),在启动处理之前,单元11将命令i设置为具有最早的标记ID的命令(步骤S2),对根据命令i的地址A和扇区数目s进行解码(步骤S3),并将预定数目u设置为扇区数目s(步骤S4)。单元11从起始地址A执行写入(步骤S5),并移到步骤S6至S8组成的循环处理。这个循环处理包括重复地将顺序存储在驱动设备4的数据存储器10中的数据传送到SD卡1(步骤S6)直到步骤S7和S8的结果为“是”。
当传送的扇区数目达到预定数目u时(步骤S7=是),命令分析单元11将停止指令发到SD卡1,并返回步骤S1。若一个或多个其它ATA命令被存储在命令存储器9中(步骤S8=是),单元11将命令j设置为具有最早的标记ID的ATA命令(步骤S10),对根据命令j的地址B和扇区数目t进行解码(步骤S11),并判断命令i和j的连续性。这个判断是通过判断将u+1加到命令i的地址A上获得的地址是否与命令j的地址B一致来执行的(步骤S12)。若有连续性,单元11将命令j的扇区数目t加到预定数目u上(步骤S13),并移到步骤S6。若没有连续性,单元11判断传送的扇区数目是否已经达到预定数目u(步骤S14),并当达到时,单元11将停止指令发到SD卡1(步骤S15),设置命令i为命令j,s、A为t、B(步骤S16)并移到步骤S4。
图8使用与图2相同的标号示出主设备2、驱动设备4和SD卡1之间的通信序列。图8与图2的不同之处是,在ATA命令[i]传送的数目到达预定数目u(=s)之前,ATA命令[i+1]被从主设备2发送到驱动设备4,并且对ATA命令[i+1]的分析被执行。如果判定ATA命令[i]和[i+1]的地址之间存在连续性,那么预定数目u被从s扩大成s+t。由于在存在连续性的情况下停止指令是在预定数目达到s+t之后被发到SD卡1,所以主设备2对每两个ATA命令接收一个响应。
利用图8的例子,一个ATA命令和下一个ATA命令被在一个处理过程中执行,尽管这仅仅是以优先顺序排列图中的处理的结果。只要多个地址之间存在连续性,ATA命令就可以被在一个处理中一个接一个地执行。
根据本实施例1,对于每多个ATA命令,承受一次开销,这是因为在一个处理中执行通过多个命令写入存储卡。对于传输速率,在这种情况下的分子是用该多个ATA命令可写的总数据大小,而分母是包含一组开销的一个时间周期。分母的时间周期没有增大这一事实揭示了传输速率提高的可能性。
尽管是针对一个SD卡对实施例1进行了上述描述,但是在有四个SD卡的情况下,例如,每当命令分析单元11对一个ATA命令进行解码时,四个卡控制单元8a至8d可以并行地执行上述写入操作。这个并行写入允许传输速率进一步提高。结果,属于本发明的驱动设备能够顺利地执行视频数据的记录。
此外,由于对每多个ATA命令发送一个响应给主设备2,因此可能使主设备2和驱动设备4之间的传输不同步。这个不同步允许传输的执行,在该传输中驱动设备4分别是被时分的主控器和目标。
注意尽管在实施例1中使用连续编号判定了与下一个ATA命令的连续性,但是驱动设备4可以配备有重排列单元,该重排列单元将驱动设备中的多个ATA命令按它们的写地址的顺序进行重排列。在这种情况下,命令分析单元11可以根据由重排列单元重排列后的顺序来执行命令分析。
实施例2
在实施例1中,如果多个写地址之间有连续性,那么将用多个命令进行的处理是在一个处理过程中被执行的。然而,并不是用一个处理过程可写的数据大小越长越好。这是因为SD卡1有被称为可擦块的单元,并且在数据写入中,这些可擦块必须在数据被写入其中之前初始地返回到空白状态。当通过多个命令进行的写入是在一个处理过程中被执行时,如果将被写入的扇区数目是可擦块大小的非整数倍,那么出现这里被称为“回转保存”的低效写入。
图9A至9D示出回转保存的例子。图9A至9D中的可擦块由p个记录块构成。给出的例子假设只将写入非易失性存储器的一个可擦块(图9A中上面的块)中的两条数据A和B中的数据B进行重写。在这种情况下,SD卡1在非易失性存储器中搜索空白状态下的可擦块,并且如果存在这样的可擦块,那么SD卡1将新数据B写入空闲块(图9B中下面的块)。接下来,SD卡1将写入到上面的可擦块的数据A复制到下面的可擦块(见图9C)。然后SD卡1擦除上面的可擦块(见图9D)。
如果发生回转保存,那么写入速率下降,这是因为需要执行两次写入。此外,每当由于记录的数据的物理位置被更新而出现回转保存时,逻辑和物理地址需要被更新。这里,属于实施例2的主设备2,在发出要被写入连续地址的数据的过程中,当写入SD卡1的扇区数目达到了可擦块大小的整数倍时,将添加了禁止标志的下一个ATA命令发送到驱动设备4。如果存在连续性,驱动设备4进行写控制以便在一个处理过程中执行ATA命令,并且当接收到添加了禁止标志的ATA命令时,驱动设备4在传送的扇区数目达到了正在进行的数据传输的预定数目的时刻向SD卡1发送停止指令。结果,该处理过程在传送到SD卡1的扇区数目达到可擦块大小的整数倍的时刻终止,因此避免了可擦块的局部写入。
图10示出实施例2中命令分析单元11进行的处理。图10中m个ATA命令(A[1],A[2],…,A[m])写入的总数据长度在这里假设等于一个可擦块的大小,并且假设一直到至少A[m]的写地址之间存在连续性。有禁止标志的标记被添加到A[m+1],A[m+1]是A[m]之后发送的ATA命令。命令分析单元11对A[m+1]的分析在相应于A[m]的数据的传输期间执行,但是由于添加了有禁止标志的标记,所以没有判定A[m+1]的连续性。驱动设备4在作为正在进行的传输的结果而传送的扇区达到了预定数目u的时刻向SD卡1发出停止指令(点1),以便在通过ATA命令A[m]进行的写入结束的时刻终止该处理过程。这样,对SD卡1的写入在被写入的数据是可擦块大小的整数倍的时刻结束。
根据实施例2,能够避免回转保存的出现,这是因为能够避免不等于一个可擦块大小整数倍的局部写入,因此使传输速率能够提高。
实施例3
利用实施例1,如果在通过前一个命令进行的传输完成之前发送下一个命令,那么可以将通过这些命令进行的写入合并到一个处理过程中。然而,如果在通过当前命令进行的传输完成之前没有接收到下一个命令,那么就不再可能集成到一个处理过程中。属于实施例3的主设备2被设计来处理这种情况,该主设备2发送在其上添加了等待标志的ATA命令。如果分析了具有等待标志的ATA命令,那么命令分析单元11不发出停止指令,即使在预定数目的扇区已经被传送到SD卡1时也是如此。因为这个,即使数据传输没有执行,处理过程也不会终止。由于没有数据要被写入SD卡1,命令分析单元11等待接收来自主设备2的下一个命令,并且当接收到时,单元11分析命令,并且若存在连续性,则将通过这个命令进行的写入合并到正在进行的处理过程中。
图11示出实施例3中的命令分析单元11进行的处理。包含等待标志的标记被添加到ATA命令A[m-1](添加1)。结果,即使下一个ATA命令A[m]延迟了,正在进行的处理过程也没有终止。由于没有要传送的写数据,命令分析单元1等待ATA命令A[m](图11中的等待1),并当接收到该命令时(接收1)分析该命令。
根据实施例3,即使在网络上下一个ATA命令的到达被延迟,可擦块的局部写入也不会发生,其中通过该网络连接主设备2和驱动设备4。结果传输速率没有下降。
实施例4
利用实施例2,如果禁止标志被添加到一个ATA命令中,那么命令分析单元11令卡控制单元8发出停止指令来终止正在进行的写处理过程。然而,如果具有禁止标志的ATA命令的到达被延迟,那么不可能终止该处理过程,这样就引起传输性能的下降。同样地,在实施例4中,禁止标志被添加到执行该处理过程的最后的写入的ATA命令(即,其数据传输导致传送的数据长度是可擦块大小的整数倍的ATA命令)上。图12示出属于实施例4的禁止标志添加例子。如图12所示,禁止标志被添加到A[m],A[m]是用于执行该处理过程的最后写入的ATA命令。在图12中,命令分析单元11在通过ATA命令[m]进行的写入结束的时刻发出停止指令。这样,即使例如下一个ATA命令的到达被延迟了,正在进行的处理过程所进行的数据写入也能够被快速终止。
由于根据实施例4,禁止标志被添加到用于执行正在进行的处理过程的最后的写入的ATA命令[m],所以即使例如下一个ATA命令的到达被延迟了,也不会引起传输性能的劣化。
实施例5
实施例5是对上述处理的修改,其确保了通过ATA命令写入的数据大小是可擦块大小的整数倍。图13是示出实施例5中命令分析单元11进行的处理的流程图。这个流程图是基于图7的。与图7的不同在于,在步骤S5和S6之间步骤S17和S18的增加、在步骤S12和S14之间步骤S21和S22的增加、在步骤S7和S9之间步骤S20的增加、以及用步骤S19代替步骤S13。
在步骤S17,命令分析单元11用一个可擦块的扇区数目来除预定数目u得出余数。在图13中,“mod”是模运算的运算符,并且最后获得的余数是“余数Re”。在步骤S18,预定数目u被设置为通过从步骤4得到的预定数目u中减去余数Re而获得的值。
由步骤S17和S18得到的预定数目u是每个可擦块的扇区数目的整数倍。在代替了步骤S13的步骤S19,余数Re和用于通过下一个命令j写入的扇区数目t被加到预定数目u上。
作为增加上述步骤S17-S19结果,用于通过一个命令写入的预定数目u始终是每个可擦块的扇区数目的整数倍,并且在地址之间存在连续性的情况下,涉及余数Re的数据被与通过下一个命令执行的写入一起写入。
步骤20检查余数Re是否是“0”,并且如果Re=0,就在步骤S9发出停止指令,若Re≠0,则处理移到步骤S8。这样,如果余数Re是“0”,命令分析单元11仅仅继续等待下一个命令,而不暂停该处理过程。
另一方面,如果在步骤S12中判定不存在连续性,那么命令分析单元11在步骤S21中判断是否Re=0,并且如果Re≠0,那么在移到步骤S14之前,余数Re的数据在步骤S22中被写入SD卡1。
接下来,参照图14A至14D描述从流程图13得到的处理的特定实例。该特定实例假设用第一个和第二个命令(命令i&j)写入的数据长度分别是96千字节和160千字节,并且每个可擦块的大小是64千字节。注意为了描述的简化,假设一个扇区的大小是1千字节。
由于由命令i写入的有96个扇区,所以从步骤S17和S18中得出的预定数目u是64个扇区,并且余数Re是32个扇区,这导致64千字节的数据被写入SD卡中的可擦块#1,如图14B所示。在这里考虑的情况是,下一个命令的接收被延迟了,使得等待队列为空。由于有余数Re=32,因此尽管传送的数据长度已经达到预定数目u,但是命令分析单元11移到步骤S8而不发出停止指令。只要余数Re≠0,步骤S6、S7、S20和S8的循环处理就重复,直到一个命令被存储到等待队列中。当下一个命令j被存储到等待队列中,并且如图14C所示通过命令j写入的数据被存储到数据存储器中时,单元11执行步骤S10至S12的处理,并判断地址之间是否存在连续性。如果有连续性,那么单元11将预定数目更新为值“256”,该值是通过将命令j的扇区数目t(=160)和余数Re(=32)加到预定数目u(=64)上而获得的。然后处理移到步骤S17和S18,并且单元11继续将192千字节长度(t+Re=160+32)的数据写入SD卡内的三个可擦块#2至#4,如图14D所示。
根据实施例5,如果通过当前命令写入的扇区数目是每个可擦块的扇区数目的非整数倍,那么命令分析单元11继续正在进行的处理过程并等待下一个命令,因此使得继续数据写入并且避免可擦块的局部写入成为可能。
附加备注
尽管已经如上基于优选实施描述了本发明,但这仅仅是展示在当前条件下所预见的最好效果的示例性***。能够在不背离本发明本质的范围内对本发明进行修改。给出下面的条目(A)、(B)和(C)作为有代表性的修改。
(A)在优选实施例中的记录目标被假设是SD存储卡。然而,由于对于在数据写入中所承受的开销,本发明的驱动装置的特征依赖于非易失性存储器的物理性质,因此只要存在这些物理性质,任何类型的记录介质都可以被应用。实例包括紧凑式闪存卡(Compact FlashCard)、智能媒体卡(Smart Media Card)、记忆棒(Memory Stick)、多媒体卡(MultiMedia Card)、和PCMCIA卡。
(B)表达流程图7中的处理过程的计算机程序本质上构成了一个发明,其前提是假定从图7中所示的计算机程序而得到的信息处理是明确地用硬件资源实现的。尽管优选实施例涉及处于一种状态下的属于本发明的计算机程序的实现,其中在该状态下程序被结合进驱动设备中,但是实施例中示出的程序可以与驱动设备分离而被独立地实现。用来独立地实现程序的动作包括:(1)生产程序,(2)免费地或收费地分配程序,(3)借出,(4)进口或(5)通过双向电子通信电路使程序对公众可用,和(6)提供通过店前展示、目录招揽和手册分发等方式将程序分配或借出给普通用户。
(C)在流程图7的时间序列中执行的步骤中的“时间”元素是被认为是规定本发明的基本项。由此可以理解,从流程图7得到的处理过程公开了一种记录方法的使用配置。不用说,只要通过在时间序列中执行每个步骤的处理,完成了该流程图中的处理,使得本发明的初始目标被达到并且实现了动作和效果,这些处理过程就自然地等同于属于本发明记录方法的实现动作。
工业实用性
属于本发明的驱动设备,能够提高当将数据写入存储卡时的传输速率,该驱动设备理想地适合于在记录视频数据过程中存储卡的使用。考虑到其在将视频数据记录到存储卡时的适用性,属于本发明的驱动设备提供了在与视频设备生产相关的视频设备行业中使用的高潜力。
Claims (12)
1、一种驱动设备,用于根据主设备发出的命令将所述主设备发送的数据写入到存储卡上,包含:
接收单元,用于接收所述主设备发出的多个命令;以及
写入单元,用于若所接收的命令中的一个的写结束地址与下一个命令的写起始地址连续,则在一个处理过程中执行通过所述连续的命令对所述存储卡进行的所述数据写入。
2、如权利要求1所述的驱动设备,其中
所述处理过程包含重复进行顺序地将从所述主设备接收的数据写入所述存储卡的处理直到给出停止指令,并且
所述驱动设备还包含:
分析单元,用于对每个命令的所述写起始地址和扇区数目进行解码,所述扇区数目是用于以所述命令写入的数据的扇区的数目;以及
指令单元,用于在写入的扇区数目达到s+t的时刻给出所述停止指令,其中s是所述一个命令的扇区数目,而t是所述下一个命令的扇区数目。
3、如权利要求2所述的驱动设备,其中
所述处理过程是在所述分析单元对来自所述一个命令的写起始地址A和所述扇区数目s进行解码时被启动的,并且包括从所述写起始地址A开始的所述数据写入,
所述分析单元分析所述下一个命令直到所写入的扇区数目达到s,并且
若所述下一个命令的写起始地址B与所述一个命令的写结束地址A+s连续,则所述指令单元在所写入的扇区数目达到s+t时给出所述停止指令。
4、如权利要求3所述的驱动设备,其中
所述分析单元判断禁止标志是否被添加到所述下一个命令中,并且
所述指令单元(i)若所述禁止标志被添加到所述下一个命令中,则在所写入的扇区数目达到s的时刻给出所述停止指令,并且(ii)若所述禁止标志没有被添加到所述下一个命令中并且所述下一个命令的写起始地址B与所述一个命令的写结束地址A+s连续,则在所写入的扇区数目达到s+t的时刻给出所述停止指令。
5、如权利要求3所述的驱动设备,其中
所述分析单元判断禁止标志是否被添加到所述一个命令中,并且
所述指令单元(i)若所述禁止标志被添加到所述一个命令中,则在所写入的扇区数目达到s的时刻给出所述停止指令,并且(ii)若所述禁止标志没有被添加到所述一个命令中并且所述下一个命令的写起始地址B与前一个命令的写结束地址A+s连续,则在所写入的扇区数目达到s+t的时刻给出所述停止指令。
6、如权利要求2至4中的一个所述的驱动设备,其中
等待标志被添加到从所述主设备接收的命令中,并且
若接收到具有所述等待标志的所述命令并且还没有接收到下一个命令,则所述分析单元和指令单元等待接收所述下一个命令。
7、如权利要求1至6中的一个所述的驱动设备,其中所述主设备将具有附加于其上的标记的命令顺序地发送到所述驱动设备,所述标记示出所述命令的顺序。
8、如权利要求3至5中的一个所述的驱动设备,还包含:
存储单元,用于存储从所述主设备接收的命令;以及
重排列单元,用于按照所述写起始地址的顺序将所存储的命令进行重排列,其中
所述分析单元以重排列的所述命令的顺序执行所述分析。
9、如权利要求2所述的驱动设备,其中
所述分析单元判断s+t是否是所述存储卡的可擦块中扇区的数目的整数倍,并且
若判断是否定的,则即使所写入的扇区数目达到s+t,所述指令单元通过不给出所述停止指令而继续所述处理过程,并等待接收另一个命令。
10、一种计算机程序,用于使计算机执行根据主设备发出的命令将所述主设备发送的数据写入到存储卡上的处理,所述计算机程序使所述计算机执行下述步骤:
接收所述主设备发出的多个命令;以及
若所接收的命令中的一个的写结束地址与下一个命令的写起始地址连续,则在一个处理过程中执行通过所述连续的命令对所述存储卡进行的所述数据写入。
11、如权利要求10所述的计算机程序,其中
所述处理过程包含重复进行顺序地将从所述主设备接收的数据写入所述存储卡的处理直到给出停止指令,并且
所述计算机程序使所述计算机执行下述另外的步骤:
对每个命令的所述写起始地址和扇区数目进行解码,所述扇区数目是用于以所述命令写入的数据的扇区的数目;以及
在写入的扇区数目达到s+t的时刻给出所述停止指令,其中s是所述一个命令的扇区数目,而t是所述下一个命令的扇区数目。
12、如权利要求11所述的驱动设备,其中
所述处理过程是在对来自所述一个命令的写起始地址A和所述扇区数目s进行解码时被启动的,并且包括从所述写起始地址A开始的所述数据写入,
分析所述下一个命令直到所写入的扇区数目达到s,并且
若所述下一个命令的写起始地址B与所述一个命令的写结束地址A+s连续,则在所写入的扇区数目达到s+t时给出所述停止指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003369554 | 2003-10-29 | ||
JP369554/2003 | 2003-10-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1875339A true CN1875339A (zh) | 2006-12-06 |
CN100410865C CN100410865C (zh) | 2008-08-13 |
Family
ID=34510397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800319793A Expired - Fee Related CN100410865C (zh) | 2003-10-29 | 2004-10-28 | 驱动设备及相关计算机程序 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7624227B2 (zh) |
EP (1) | EP1683001A2 (zh) |
JP (1) | JP4184381B2 (zh) |
CN (1) | CN100410865C (zh) |
CA (1) | CA2539077A1 (zh) |
WO (1) | WO2005041207A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101303685B (zh) * | 2007-05-09 | 2010-10-13 | 瑞昱半导体股份有限公司 | 可提升通用序列总线储存设备的读写数据速率的方法 |
US7934044B2 (en) | 2007-05-10 | 2011-04-26 | Realtek Semiconductor Corp. | Method for expediting data access of universal serial bus storage device |
CN101615410B (zh) * | 2008-06-25 | 2011-06-08 | 索尼株式会社 | 盘存储装置和程序 |
CN102439576A (zh) * | 2009-04-09 | 2012-05-02 | 美光科技公司 | 存储器控制器、存储器***、固态驱动器及用于处理若干个命令的方法 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1794681B1 (en) * | 2004-10-01 | 2008-09-17 | Matsushita Electric Industrial Co., Ltd. | Memory card controller, memory card drive device, and computer program |
JP4525493B2 (ja) | 2005-07-01 | 2010-08-18 | ソニー株式会社 | 記録制御装置、記録制御方法、及び、カメラ一体型記録装置 |
WO2007116476A1 (ja) * | 2006-03-31 | 2007-10-18 | Hitachi Ulsi Systems Co., Ltd. | メモリカードおよびデータの書き込み方法 |
US8041919B2 (en) * | 2007-10-26 | 2011-10-18 | International Business Machines Corporation | Storing data blocks to maximize the amount of storage space used in a storage device |
US9095275B2 (en) * | 2009-06-03 | 2015-08-04 | Andrew C. Clark | Contact sensors and methods for making same |
WO2011036230A2 (en) * | 2009-09-23 | 2011-03-31 | St-Ericsson Sa | Data transfer method |
US8745304B2 (en) * | 2010-02-01 | 2014-06-03 | Standard Microsystems Corporation | USB to SD bridge |
US8200864B1 (en) * | 2010-03-02 | 2012-06-12 | Amazon Technologies, Inc. | Pre-defined multiblock transfers |
US9569351B2 (en) | 2010-10-25 | 2017-02-14 | Seagate Technology Llc | Storing corresponding data units in a common storage unit |
US20120110239A1 (en) * | 2010-10-27 | 2012-05-03 | Seagate Technology Llc | Causing Related Data to be Written Together to Non-Volatile, Solid State Memory |
CN102568570B (zh) * | 2010-12-07 | 2016-04-27 | 上海华虹集成电路有限责任公司 | 基于sd接口使用环形队列快速写闪存介质的方法 |
CN103959187B (zh) * | 2012-06-26 | 2016-07-27 | 东芝三菱电机产业***株式会社 | 数据收集装置及数据收集方法 |
US10760983B2 (en) | 2015-09-15 | 2020-09-01 | Sencorables Llc | Floor contact sensor system and methods for using same |
JP6995520B2 (ja) * | 2017-07-14 | 2022-02-04 | キヤノン株式会社 | 記録装置 |
US10866747B2 (en) * | 2019-02-10 | 2020-12-15 | Hewlett Packard Enterprise Development Lp | Securing a memory drive |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4149243A (en) * | 1977-10-20 | 1979-04-10 | International Business Machines Corporation | Distributed control architecture with post and wait logic |
JPH0256625A (ja) | 1988-08-23 | 1990-02-26 | Hitachi Ltd | データ共用システムおよびデータ更新方式 |
DE69034227T2 (de) * | 1989-04-13 | 2007-05-03 | Sandisk Corp., Sunnyvale | EEprom-System mit Blocklöschung |
EP0528280B1 (en) * | 1991-08-09 | 1997-11-12 | Kabushiki Kaisha Toshiba | Memory card apparatus |
US5551002A (en) * | 1993-07-01 | 1996-08-27 | Digital Equipment Corporation | System for controlling a write cache and merging adjacent data blocks for write operations |
US6272632B1 (en) * | 1995-02-21 | 2001-08-07 | Network Associates, Inc. | System and method for controlling access to a user secret using a key recovery field |
US6029226A (en) * | 1996-09-30 | 2000-02-22 | Lsi Logic Corporation | Method and apparatus having automated write data transfer with optional skip by processing two write commands as a single write command |
US6427184B1 (en) | 1997-06-03 | 2002-07-30 | Nec Corporation | Disk drive with prefetch and writeback algorithm for sequential and nearly sequential input/output streams |
US7181548B2 (en) | 1998-10-30 | 2007-02-20 | Lsi Logic Corporation | Command queueing engine |
JP2001202281A (ja) | 2000-01-19 | 2001-07-27 | Sony Corp | 記録方法及び装置、転送方法及び装置、再生方法及び装置、記録媒体 |
KR100367588B1 (ko) * | 2000-01-24 | 2003-01-10 | 엘지전자 주식회사 | 디지털데이터 플레이어의 상대주소 할당 장치 및 방법 |
JP3846543B2 (ja) | 2000-03-13 | 2006-11-15 | 富士ゼロックス株式会社 | メモリアクセスシステム |
US6826650B1 (en) * | 2000-08-22 | 2004-11-30 | Qlogic Corporation | Disk controller configured to perform out of order execution of write operations |
-
2004
- 2004-10-28 CN CNB2004800319793A patent/CN100410865C/zh not_active Expired - Fee Related
- 2004-10-28 EP EP04793345A patent/EP1683001A2/en not_active Withdrawn
- 2004-10-28 US US10/573,566 patent/US7624227B2/en not_active Expired - Fee Related
- 2004-10-28 CA CA002539077A patent/CA2539077A1/en not_active Abandoned
- 2004-10-28 WO PCT/JP2004/016365 patent/WO2005041207A2/en active Application Filing
- 2004-10-28 JP JP2005518738A patent/JP4184381B2/ja not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101303685B (zh) * | 2007-05-09 | 2010-10-13 | 瑞昱半导体股份有限公司 | 可提升通用序列总线储存设备的读写数据速率的方法 |
US7934044B2 (en) | 2007-05-10 | 2011-04-26 | Realtek Semiconductor Corp. | Method for expediting data access of universal serial bus storage device |
CN101615410B (zh) * | 2008-06-25 | 2011-06-08 | 索尼株式会社 | 盘存储装置和程序 |
CN102439576A (zh) * | 2009-04-09 | 2012-05-02 | 美光科技公司 | 存储器控制器、存储器***、固态驱动器及用于处理若干个命令的方法 |
CN102439576B (zh) * | 2009-04-09 | 2015-04-15 | 美光科技公司 | 存储器控制器、存储器***、固态驱动器及用于处理若干个命令的方法 |
Also Published As
Publication number | Publication date |
---|---|
US20060282634A1 (en) | 2006-12-14 |
CN100410865C (zh) | 2008-08-13 |
WO2005041207A2 (en) | 2005-05-06 |
EP1683001A2 (en) | 2006-07-26 |
WO2005041207A3 (en) | 2005-12-15 |
CA2539077A1 (en) | 2005-05-06 |
JP2006514386A (ja) | 2006-04-27 |
US7624227B2 (en) | 2009-11-24 |
JP4184381B2 (ja) | 2008-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1875339A (zh) | 驱动设备及相关计算机程序 | |
US6859856B2 (en) | Method and system for a compact flash memory controller | |
US8370603B2 (en) | Architecture for address mapping of managed non-volatile memory | |
CN102317928B (zh) | 修改命令 | |
US8437190B2 (en) | Interleaved flash storage system and method | |
US7877540B2 (en) | Logically-addressed file storage methods | |
CN1159663C (zh) | 数据库储库及其访问管理方法 | |
CN1658171A (zh) | 通过控制频繁受访问扇区对非易失性存储器的更快写操作 | |
US8510497B2 (en) | Flash storage device with flexible data format | |
US20030067814A1 (en) | Apparatus and architecture for a compact flash memory controller | |
US20090172499A1 (en) | Patrol function used in flash storage controller to detect data errors | |
US20070136553A1 (en) | Logically-addressed file storage systems | |
CN1777861A (zh) | 具有可重新配置的数据通路的盘阵列控制器 | |
CN1499530A (zh) | 非易失性存储器***内有效允许失序写处理的方法和装置 | |
WO2000002126A1 (en) | Method and apparatus for performing erase operations transparent to a solid state storage system | |
CN101034382A (zh) | 用于嵌入式***的命令控制器及预取模块及其控制方法 | |
JP5266250B2 (ja) | 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用 | |
US20040049628A1 (en) | Multi-tasking non-volatile memory subsystem | |
JP2010515163A (ja) | ダイレクトデータファイルメモリシステムにおけるlbaインターフェイスの管理 | |
CN1447242A (zh) | 可适用于快闪存储卡的控制装置及其建构方法 | |
CN103577119A (zh) | 用于下一代固态硬盘控制器中乱序传输数据的***和方法 | |
CN1306643A (zh) | 用各种数据处理器进行数据处理 | |
WO2008082999A2 (en) | Configuration of host lba interface with flash memory | |
US20200168281A1 (en) | Read data sorting method and storage device | |
CN1479310A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080813 Termination date: 20141028 |
|
EXPY | Termination of patent right or utility model |