可提升通用序列总线储存设备的读写数据速率的方法

文档序号:6609025阅读:207来源:国知局
专利名称:可提升通用序列总线储存设备的读写数据速率的方法
技术领域
本发明是有关于一种可提升USB储存设备的数据读写速率的方法,且特 别是有关于通过减少数据传输时所需发送的指令区块包(CBW)及指令状态包 (CSW)的次数来提高数据读写速率的方法。
背景技术
由于现今的计算机系统所须处理的数据量日益庞大,外围装置对于传输 频宽的需求也相对地增加,虽然市面上已有多种总线架构,但此些架构在传 送数据仍有传输速度低或成本过高的缺点存在。而USB相较于传统的总线, 具备热插拔及高数据传输率等优异的特性,早已普遍地被应用于各式计算机 系统中。而上述USB在传输协议上则定义了下列四种传输型态,分是别(1)中断型 传输(Interrupt Transfer) 、 (2)巨量传输(Bulk-Only Transport) 、 (3)实时 型传输(Isochronous Transport)及(4)控制型传!叙(Control Transfer),其 中以巨量传输而言,主要传输数据特点在于数据的产生并非有周期性,只有 在某一特定时间的数据量很大,并需要很大的频宽传输,如打印机、扫描仪 等这类型的USB储存类设备(USB Mass Storage Class Device)皆适用此巨量传输的技术。请参阅图1,其显示USB储存设备对应于主机系统的巨量传输型态的软 件结构图,在主机端的软件结构由下到上依次为USB主机控制驱动层(USB Host Controller Driver Layer) 11、 USB十办i义驱动层(USB Protocol Driver Layer )12、巨量传输层(Bulk-Only Transport Layer) 13、小型计算机系统 接口层(SCSI Layer) 14、区块装置处理层(Block Device Processing Layer) 15 及文件系统层(File System Layer) 16。请参阅图2所示,其显示主机端执行巨量传输协议的数据读写处理的步 骤流程图,此处理流程包含下列步骤步骤20:自巨量传输层收到自SCSI层所发出的SCSI请求包(SCSI Request Block, SRB);步骤21:将SRB包含的命令封装成指令区块包(Command Block Wrapper, CBW),并通过一个USB Bulk-Out Transaction发送到USB储存设备;步骤22:执行数据移出(Data-Out)或数据移入(Data-in)的传输;以及步骤23:接收指令状态包(Co隱and Status Wrapper, CSW),以确认此 次读写指令处理是否成功。由上述说明得知,主机端传送一次读/写指令需发送一次CBW,数据传输 完成后要再接收CSW以确认传送是否成功,方能进行下一次的数据传输。然 而,如果读取储存介质数据的速率足够快,且每次要求数据时数据都已准备 好,则进行大量数据读/写时,每次发送封包皆要发送一次CBW和CSW命令而 使花费的时间过长,导致整个USB系统的传送数据的速率变慢。发明内容因此本发明的主要目的就是在提供一种可提升USB储存设备的数据读写 速率的方法,此方法能减少巨量传输层发送CBW、 CSW的次数及降低每个SRB 请求的实际数据传输之间的间隔时间,并且让USB储存设备更长时间处在连 续读写数据的状态。此外,本发明提供一种可提升通用序列总线(USB)储存设备的数据读写速 率的方法,此方法包含下列步骤(a)自巨量传输层接收由SCSI层发送的读 写命令,(b)判断此读写命令的欲读写存储容量值是否高于门限值,(c)判断 此读写命令所包含的逻辑地址是否为连续,(d)根据步骤(b)及步骤(c)的判断 结果,若步骤(b)及步骤(c)判断皆是,便执行在数据传输过程中不需发送CBW 的数据传输程序。再者,本发明还提出一种可提升USB储存设备的数据写入速率方法,此 方法利用多个緩沖区储存多个连续逻辑地址的写入命令,并合并成一个请求 命令,然后由发送线程(sending thread)将此请求命令发送到USB储存设备。 此方法亦可减少在连续数据传送时CBW和CSW的发送次数,并实际数据传输 之间的间隔时间。本发明提供了 一种可提升通用序列总线(USB)储存设备的数据读写速率 的方法,用以让主机通过USB接口对该USB储存设备进行数据读写,该主机的软件架构上至少具有一巨量传输层及一SCSI层,该方法包含下列步骤(a) 于该巨量传输层接收由该SCSI层所发出的读/写命令;(b)判断该读取命令所 包含的欲读/写存储容量值是否高于门限值,若是,则执行步骤(c); (c)判断 目前该读取命令所包含逻辑地址是否为连续,若是,则执行步骤(d);以及(d) 执行连续数据读写程序。
本发明还提供了一种提升USB储存设备的数据写入速率的方法,用以让 主机通过USB接口对该USB储存设备进行数据写入,该主机的软件架构上至 少具有一巨量传输层及一SCSI层,该方法包含下列步骤(a,)于该主机的内 存中配置至少一个緩冲区;(b')于该巨量传输层接收由该SCSI层所发出的 写入命令;(b,)判断目前该写入命令与前一个写入命令所包含逻辑地址是否 为连续状态,若是,则执行步骤(c, ); (c,)将目前该写入命令储存于该缓 冲区,并将该緩冲区所储存的写入命令合并成请求命令;以及(d,)发送该请 求命令至该USB储存设备。
本发明还提供了一种提升USB储存设备的数据读取速率的方法,用以让 主机通过USB接口对该USB储存设备进行数据读取,该主机的软件架构上至 少具有一巨量传输层及一SCSI层,该方法包含下列步骤(A)提供緩冲区;(B) 于该巨量传输层接收由该SCSI层所发出的读取命令,该读取命令用以读取第 一数据;(C)判断该读取命令所包含的逻辑地址是否存在于緩冲区,若是,则 至该緩冲区读取该第一数据,若否,则至该USB储存设备读取大于该第一数 据的数据存储空间的第二数据,并将第二数据储存于该緩沖区。


为让本发明的上述和其它目的、特征、优点与实施例能更明显易懂,所 附图式的详细说明如下
图l是显示主机端的软件架构图2是显示主机端执行巨量传输协议的数据读写处理的步骤流程图; 图3是显示本发明的使用环境示意图4是显示本发明一实施例的可提升USB储存设备的数据读写速率方法 的步骤流程图5是显示本发明的可提升USB储存设备的写入数据速率的方法的实施 例的步骤流程图;以及图6是显示本发明另一实施例的可提升USB储存设备的读取数据速率的 方法的步骤流程图;以及
图7是显示本发明的可提升USB储存设备的写入数据速率的方法的另一 实施例的步骤流程图。
11: USB主机控制驱动层
12: USB协议驱动层
13:巨量传输层
14:小型计算机系统接口层
15:区块装置处理层
16:文件系统层
20 - 23:步骤流程
30: USB储存设备
31: USB接口
32:主机
40~47:步骤流程 50 - 58:步骤流程 60 - 69:步骤流程 70~78:步骤流程
具体实施例方式
以下详细地讨论目前较佳的实施例。然而应被理解的是,本发明提供许 多可适用的发明观念,而这些观念能被体现于很宽广多样的特定具体背景中。 所讨论的特定具体的实施例仅是说明使用本发明的特定方式,而且不会限制 本发明的范围。
计算机主机对USB储存设备所储存大批量数据或具有存储空间较大的文 件进行读/写时,通常相邻的读写请求对应的设备逻辑地址绝大多数时候是连 续的。针对此技术特征,本发明提供一种可提升USB储存设备读/写数据速率 的方法。
请参阅图3,其显示本发明的使用环境示意图。于图中可知,主机32是 通过USB接口 31(USB排线)对USB储存设备30执行数据读/写的程序。此主机为个人计算机、电子书或个人数字助理其中之一者,此USB储存设备为打
印机、扫描仪或USB随身碟其中之一者。且于主机的软件架构上如图l所述, 此软件架构至少具有一巨量传输层及一SCSI层。
如图4所示,此图为本发明一实施例的可提升USB储存设备的数据读写 速率方法的步骤流程图。在此实施例中,是通过条件判断以选择性执行连续 数据读写程序,来减少发送CBW、 CSW以及每一个SRB请求的实际数据传输之 间的间隔时间。图中,此方法包含下列步骤
步骤40:自巨量传输层接收由SCSI层所发出的读写命令。
行步骤42,若是,则执行步骤45;在此步骤中,可通过^f企查旗标值来判断 USB储存设备的状态。
步骤42:判断此读写命令的欲读写存储容量是否高于门限值,以作为开 始启动此连续数据读取程序(Sequential Read Process)的判断条件,若是, 则执行步骤43,若否,则执行步骤44。在一般主机系统中,读取命令的最大 存储容量为64 K字节(bytes),因此本实施例是将门限值设定为64K字节。 因此,若读取命令的存储容量是高于64K字节,并执行步骤42,若否,则执 行步骤45。
步骤43:发送一个连续CBW至USB储存设备以进行数据读写,并通知USB 储存设备将进行连续数据读写程序,设定USB储存设备处于连续数据读写的 状态,例如将旗标值设定为l,接着执行步骤40。
步骤44:进行一般的USB数据读写程序,接着执行步骤40。
步骤45:判断此读写命令的逻辑地址是否与上一笔读写命令连续,若是, 则执行步骤46,若否,则执行步骤47;
在此步骤中,判断逻辑地址是否连续的方法是将目前读取命令的起始地 址减去前一读取命令的起始地址是否等于前一个读取命令的位长度。若是, 则表示此两个读取命令为连续,若否,则表示此两个读取命令不连续。其中, 此读取命令所包含逻辑地址至少具有用于记录此读取命令是否为连续的第一 字段及用于记录此读取命令的位长度的第二字段。且,此第一字段以二进制 方式记录此读取命令是否为连续,即记录l为连续状态,记录0为非连续状 态。
步骤46:进行此连续数据读写程序,即直接根据此读写命令对USB储存设备进行巨量数据传输(Bulk-In/0ut),无须再发送CBW通知USB储存设备, 接着执行步骤40。
步骤47:停止此连续数据读写程序,并设定USB储存设备不处于连续数 据读写的状态,例如将旗标值设定为0,接着执行步骤40。其中,若先前所 通知的大笔数据传输未完成,则自SCSI层发送停止命令要求USB设备清空已 准备数据,进行相应的重置(Reset)操作,并进入闲置状态(Idle),以等待下 一个CBW。
根据Bulk-Only Transport协议,每次传输数据前要发送CBW,传输数 据后要获取CSW,在大量数据传输中,CBW及CSW所占用的时间相当可观。通 过上述流程,执行连续数据读写程序可减少数据传输时所需发送的CBW、 CSW 及每个读取命令的实际数据传输之间的间隔时间,进而达到提高数据读取速 率的功效。例如,以此方法来通知USB储存设备读取一笔数据块为腿bytes 时,USB储存设备的读取速率可从26 Mbytes/s~27 Mbytes/s提高到了 37 Mbytes/s以上。
请参阅图5,其是显示本发明另一实施例的可提升USB储存设备的数据 写入速率的方法的步骤流程图,此实施例是将多个逻辑位置连续的写入命令 合并成一个请求命令,来提升USB储存设备的数据写入速率。图中,此方法 包含下列步骤
步骤50:配置緩冲区;
步骤51:自巨量传输层接收由SCSI层所发出的命令; 步骤52:判断此命令是否为写入命令,若是,则执行步骤53,若否,则 执行步骤58;
步骤53:判断緩沖区内是否有储存其它写入命令,若是,则执行步骤55, 若否,则执行步骤54;
步骤54:将此写入命令储存于緩冲区,并执行步骤51;
步骤55:判断此写入命令的逻辑地址与緩冲区内所存的写入命令的逻辑 地址是否连续,若是,则执行步骤56,若否,则执行步骤57;
令,储存于緩冲区,而此请求命令是持续传送至USB储存设备以写入数据, 并执行步骤51;
步骤57:等待緩冲区内的请求命令传送完毕,再将此写入命令储存于緩冲区中,并执行步骤51;
步骤58:进行一般的USB数据处理程序,并执行步骤51。
在此方法中,如果可将緩沖区数据处理分为两个部分, 一部分负责接收 SRB,如果逻辑地址连续则进行緩存和合并处理,地址不连续则不能进行合并, 另 一部分负责将緩冲区中的数据不间断地发送到USB设备,此两部分能并行 处理则可让此方法有更佳的功效。通过上述緩存和合并处理写入命令的方法, 可以有效地減少接收指令状态包的次数,达到提高数据写入速率的功效。
请参阅图6,其是绘示本发明的另一实施例的可提升USB储存设备的数 据读取速率的方法的步骤流程图。图中,此实施例是通过预先读取较多数据 来提高数据读取速率,此方法包含下步骤
步骤60:配置緩冲区;
步骤61:自巨量传输层接收由SCSI层所发出的命令; 步骤62:判断此命令是否为读取命令,若是,则执行步骤63,若否,则 执行步骤66;
步骤63:确认此读取命令所包含的逻辑地址是否存在于緩沖区中,若是, 则执行步骤64,若否,则执行步骤65,其中,此读取命令是欲至USB储存设 备读取于逻辑地址起算的第一存储空间的数据;
步骤64:自緩冲区读取数据,并接着执行步骤61;
步骤65:发送预先读取的CBW至USB储存设备以读取于逻辑地址起算的 第二存储空间的数据,并储存于緩冲区中,其中第二存储空间是大于第一存 储空间,而緩冲区的存储空间是大于第二存储空间及第一存储空间,接着, 执行步骤61;
步骤66:判断此命令是否为写入命令,若是,则执行步骤67,若否,则 执行步骤69;
步骤67:发送写入的C而至USB储存设备以卸入数据,借着执行步骤681;
步骤681:确认此写入命令的逻辑地址是否存在于緩冲区中,若是,则 执行步骤682,若否,则执行步骤61;
步骤682:根据写入命令的逻辑地址将数据写入緩冲区中,以维持数据 的一致性;
步骤69:进行一般的USB数据处理程序。
在执行步骤65之前,若緩冲区里剩余的存储空间小于第二存储空间的话,则先清除其它的数据以誊出足够的存储空间来储存此预先读取的数据。
此外,在执行步骤65之前,亦可先判断在此读取命令之后的读取命令的
逻辑地址是否为连续,若是,则可执行步骤65,若否,则执行步骤69。此举 可进一步提高此方法的功效。
在步骤65中,当从USB储存设备读取较多的数据完成后,须接收指令状 态包(Command Status Wrapper, CSW),以确认此次读取指令处理是否成功。 因此,通过上述预先读取数据的方法,可以有效地减少接收指令状态包的次 数,进一步达到提高数据读取效率的功效。
请参阅图7,其是显示本发明的可提升USB储存设备的数据写入速率的 方法的另 一实施例的步骤流程图,此实施例是使用多个緩冲区且结合多个逻 辑位置连续的写入命令,来提升USB储存设备的数据写入速率。图中,此方 法包含下列步骤
步骤70:配置两个緩冲区、接收线程(receiving thread)及发送线程 (sending thread),接收线程用以接收自SCSI层发出的写入命令,而发送线 程用以发送緩冲区内的请求命令至USB储存设备;
步骤71:由接收线程接收写入命令;
步骤72:判断目前接收线程所接收的写入命令与前一个写入命令所包含 逻辑地址是否为连续,若是,进入步骤54,若否,则进入步骤75;
步骤73:判断目前发送线程是否忙碌,若是,则执行步骤54,若否,则 执行步骤77;
步骤74:判断目前发送线程所处理的緩冲区是否已满,若是,则执行步 骤55,若否,则执行步骤56;
步骤75:将接收线程所接收的写入命令存入发送线程所处理的緩冲区以 外的另一緩冲区,并执行步骤71;
并执行步骤71;
步骤77:将接收线程所接收的写入命令存入与前一个写入命令所储存的 緩冲区中,以合并成请求命令,并执行步骤71;以及
步骤78:等待空的緩冲区,并将接收线程所接收的写入命令存入此空的 緩冲区,以合并成请求命令,并执行步骤71。
此緩冲区管理方法可与图4所示的方法组合使用。当使用两个大小为1Mbytes的Buffer作为緩冲时,USB储存设备的写入速率可从14 M bytes/s ~ 15M bytes/s提高到了 20M bytes/s ~21M bytes/s。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何 本领域技术人员,在不脱离本发明的精神和范围内,当可作各种的更动与润 饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。
权利要求
1.一种可提升通用序列总线(USB)储存设备的数据读写速率的方法,用以让主机通过USB接口对该USB储存设备进行数据读写,该主机的软件架构上至少具有一巨量传输层及一SCSI层,该方法包含下列步骤(a)于该巨量传输层接收由该SCSI层所发出的读/写命令;(b)判断该读取命令所包含的欲读/写存储容量值是否高于门限值,若是,则执行步骤(c);(c)判断目前该读取命令所包含逻辑地址是否为连续,若是,则执行步骤(d);以及(d)执行连续数据读写程序。
2. 根据权利要求1所述的方法,其中该门限值为64K字节。
3. 根据权利要求1所述的方法,其中该读取命令包含逻辑地址至少具有 用于记录该读取命令的连续状态的第一字段及用于记录该读取命令的位长度 的第二字段。
4. 根据权利要求3所述的方法,其中该第一字段以二进制方式记录该读取命令是否连续状态。
5. 根据权利要求1所述的方法,其中该步骤(c)的判断步骤是判断目前 该读取命令的起始地址减去前一读取命令的起始地址是否等于前一读取命令 的位长度。
6. 根据权利要求1所述的方法,其中该连续数据读写程序为在数据传输 过程中不需发送CBW予该USB储存设备的数据传输程序。
7. —种提升USB储存设备的数据写入速率的方法,用以让主机通过USB 接口对该USB储存设备进行数据写入,该主机的软件架构上至少具有一巨量 传输层及一SCSI层,该方法包含下列步骤(a,)于该主机的内存中配置至少一个缓冲区;(b,)于该巨量传输层接收由该SCSI层所发出的写入命令;(b,)判断目前该写入命令与前一个写入命令所包含逻辑地址是否为连续状态,若是,则执行步骤(c');(c,)将目前该写入命令储存于该緩冲区,并将该緩冲区所储存的写入命令合并成请求命令;以及(d,)发送该请求命令至该USB储存设备。
8. 根据权利要求7所述的方法,其中还包含提供接收线程,以接收该写 入命令。
9. 根据权利要求7所述的方法,其中还包含提供发送线程,以发送该请 求命令至该USB储存设备。
10. 根据权利要求9所述的方法,其中还于步骤(c,)前执行(e')判断该发送线程序否忙碌,并根据判断结果来选择储存该目前写入 命令的緩冲区。
11. 一种提升USB储存设备的数据读取速率的方法,用以让主机通过USB 接口对该USB储存设备进行数据读取,该主机的软件架构上至少具有一巨量 传输层及一SCSI层,该方法包含下列步骤(A) 提供緩冲区;(B) 于该巨量传输层接收由该SCSI层所发出的读取命令,该读取命令用 以读取第一数据;(C) 判断该读取命令所包含的逻辑地址是否存在于緩冲区,若是,则至 该緩沖区读取该第一数据,若否,则至该USB储存设备读取大于该第一数据 的数据存储空间的第二数据,并将第二数据储存于该緩沖区。
12. 根据权利要求11所述的方法,其中还包含当于该巨量传输层接收由 该SCSI层所发出的写入命令时,判断该写入命令所包含的逻辑地址是否存在 于緩冲区,若是,则该写入命令将数据写入该USB储存设备及该緩冲区。
全文摘要
本发明是揭露一种可提升通用序列总线(USB)储存设备的读写数据速率的方法,在一实施例中,当接收到欲读/写存储容量值较大的读取命令,且读取命令的地址为连续时,则执行在数据传输过程中不需发送CBW的数据传输程序。在第二实施例中,多个地址连续的写入命令是储存缓冲区中,且合并成较大的请求命令再发送至USB储存设备。藉此,可减少数据传输时所需发送的CBW及CSW次数。在第三实施例中,当接收到读取命令时,预先读取较多的数据储存于缓冲区中,使得下一个读取命令可从缓冲区读取数据,藉此以提高读取数据的速率。
文档编号G06F13/42GK101303685SQ20071010282
公开日2008年11月12日 申请日期2007年5月9日 优先权日2007年5月9日
发明者廖峻廷, 熊光安, 炜 王 申请人:瑞昱半导体股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1