光驱及增进光驱指令执行性能的方法

文档序号:6480940阅读:119来源:国知局
专利名称:光驱及增进光驱指令执行性能的方法
技术领域
本发明揭露一种增进光驱(disk drive)指令执行性能的方法,尤指一种通过使 用 一种名为指令群组(Command group)的链表(Linked list)而有效的将多个指令整 合在一起,并通过指令群组来緩解多个指令的饥饿状态(Starvation),来增进光驱 的读取与写入性能的方法。
背景技术
请参阅图1,其为先前技术中多个由光驱执行的指令在光盘102上的分布示 意图。如图1所示,多个指令将在光盘102上三个不同的区域104、 106及108 被执行,其中指令A0、 Al、 A2、 A3、 A4及A5在第一区域104上被执行,指 令V0、 VI及V2在第二区域106上被执行,且指令S0、 Sl、 S2及S3在第三区 域108上被执行。指令执行顺序的内容依序为A0、 V0、 VI、 V2、 Al、 A2、 S0、 Sl、 A3、 A4、 A5、 S2、 S3,且该指令执行顺序用来指出图1所示的光盘102 上执行指令的先后顺序。当执行位于不同区域上的两个连续指令时,需要通过 搜寻程序来搜寻该两个连续指令中执行顺序在后的指令的起始地址。根据图1 所示的指令执行顺序,当执行指令时需要执行六次的搜寻程序,其中第一次搜 寻程序为搜寻指令A0的起始地址以执行指令A0,第二次搜寻程序启动于执行 指令AO与V0之间的时间,第三次搜寻程序启动于执行指令V2与Al之间的时 间,第四次搜寻程序启动于执行指令A2与S0之间的时间,第五次搜寻程序启 动于执行指令Sl与A3之间的时间,且第六次搜寻程序启动于执行指令A5与 S2之间的时间。
然而,当根据指令执行顺序来执行指令时,增加搜寻程序次数也会相对的 增加执行指令所耗费的时间。
总而言之,根据指令执行顺序来执行光驱上的读取指令与写入指令时,不 断的切换读取指令与写入指令将会导致大量搜寻程序的产生,并造成存取光盘 时光驱的大量时间消耗。

发明内容
在已知技术中,根据指令执行顺序来执行光驱上的读取指令与写入指令时, 不断切换读取指令与写入指令将会导致产生大量搜寻程序,并造成存取光盘时 光驱的大量时间消耗,因此,本发明提供一种光驱及增进光驱指令执行性能的 方法。
本发明提供一种增进光驱指令执行性能的方法,包含收集多个指令;将 所述多个指令分配给至少一个指令群组;将所述至少一个指令群组以队列方式 串联;编排用来执行每一指令群组中所包含的多个指令的指令执行顺序;由所 述至少一个以队列方式串联的指令群组中选取一个指令群组;及根据被选取的 指令群组的指令执行顺序,执行被选取的所述指令群组所包含的所述多个指令。
本发明提供一种光驱,包含指令分选器/指令库,用来将多个指令分配给 至少一个指令群组、编排每一指令群组的指令执行顺序、并将所述至少一个指 令群组以队列方式串联;指令选取器,耦接于所述指令分选器/指令库,并用来 由以队列方式被串联的所述至少 一个指令群组中选取一个指令群组;及微处理 器,耦接于所述指令选取器,并用来根据被选取的所述指令群组的指令执行顺 序来执行所述指令群组中所包含的指令。
本发明通过将指令加以编组,可以有效的减少执行搜寻程序的次数与时间 消耗,可增强光驱指令执行的性能。


图1为先前技术中多个由光驱所执行的指令在光盘上的分布示意图。 图2为根据本发明较佳实施例减少图1所示的搜寻次数的简略示意图。 图3简略图示本发明所揭露的方法中所使用的指令群组运作的方式。 图4为根据本发明各实施例中用来实施指令数据结构的示意图。 图5为根据图4所示的数据结构将同一指令群组内的成员指令加以编组起 来的示意图。
图6为根据图4所示的数据结构与图5所示的指令编组方法所产生的指令 群组的示意图,并图标有指令群组的指令执行顺序。
图7为根据本发明较佳实施例实施指令群组队列的示意图。
图8为根据本发明较佳实施例,用来在产生多个指令群组后决定新加载指
7令所对应并加入的指令群组的指令加入方法流程图。
图9为根据本发明较佳实施例中多个指令群组的指令执行流的流程图。
图10为本发明中用来选取欲执行的指令群组时可使用的各种贪婪策略的示
意图,亦即可用来实施图9所示步骤1104的各种贪婪策略。
图ll为图示各种策略的改进示意图,以解决因为执行图10所示的步骤1208 而总是选取到具有最多指令数量的状况,并进而解除过久未执行指令群组造成 的饥饿状态。
图12为根据本发明较佳实施例所揭露的光驱的功能方块示意图。
具体实施例方式
因此,本发明揭露一种增进光驱指令执行性能的方法,以大幅度的减少执 行指令时进行搜寻的次数与时间消耗。
请参阅图2,其为根据本发明的一个较佳实施例减少图1所示的搜寻次数的 简略示意图。如图2所示,属于同一轨区(track)的指令在指令执行顺序中被编组 在一起,因此在执行指令时只需要三次的搜寻程序,而与图1中需要六次搜寻 才能够将所有指令执行完毕的情况有所不同;其中第一次搜寻程序为搜寻指令 VO,第二次搜寻程序启动于执行指令V2与SO之间的时间,第三次搜寻程序启 动于执行指令S3与AO之间的时间。因为将指令加以编组可以有效的减少执行 搜寻程序的次数,因此在本发明中,通过编组方式来执行指令扮演相当重要的 角色。
本发明的 一个实施例中提供特定的数据结构以实施被执行的指令,并藉此 实施以上述指令为其单元的群组,其中所述群组在本发明中称为指令群组。请 参阅图3,其简略图示本发明所揭露方法中所使用的指令群组运作的方式。如图 3所示,指令层包含多个指令,例如CMD#1至CMD#8,指令群组层包含多个 指令群组,例如指令群组#1至指令群组#3,存储器层包含有存储器。指令群组 的数量较所有指令的数量少。指令群组在指令层中包含有多个对应的指令,且 指令群组以——对应的方式指向存储器中的 一个存储区块,该存储区块可作为 緩沖器。再者,不同的指令群组在存储器中指向不同的存储区块,其中存储器 上的一个物理地址块被指定给一个指令群组,且所述指令群组包含有与所述物 理地址块相关的指令。然而,不同指令群组被指定的存储区块之间亦可能会产 生部分或全部重叠的现象,这是因为不同的指令群组可能会以存储器上的同一物理地址块来执行指令或运算。
请参阅图4,其为根据本发明的各实施例中用来实施指令数据结构的示意
图。如图4所示,所述数据结构的各字段包含指令的指令识别名称(Command identity)CMD一ID、用来指出指令类别的标志(flag)、用来指出起始物理区块地址 (physical block address)以执行所述指令的逻辑区块地址LBA、所述指令的执行 长度LEN、所述指令与位于同一指令群组内的其它指令相比较所产生的优先权 (priority)以及用来指出所述指令群组中下一个将被执行指令的地址的追迹指针 (Next pointer) *NEXT—CMD。标志用来表示所述指令的指令类型为读取指令或写 入指令,且在本发明的较佳实施例中,标志以布尔值(Booleanvalue)来表示。当 执行指令时,首先会把逻辑区块地址转换为在光盘上对应的物理区块地址,以 指出在光盘上欲读取或写入的地址。在大部分的情况下,除非遇到光盘坏轨或 是因为震动所引起的存取错误等现象,否则指令的逻辑区块地址与其物理区块 地址相同。因此在之后的叙述中,指令的逻辑区块地址假设与其物理区块地址 相同,但请注意,本发明的各实施例并未受该假设所限制。当指令的标志指出 所述指令的指令类型为写入指令时,实施写入指令的数据结构中会另外加入确 认字段,以确认与写入指令相关的写入操作,并确保在同一物理地址读取与写 入数据时的写入数据相依(Write dependency)。
请参阅图5,其为根据图4所示的数据结构将同一指令群组内的成员指令加 以编组起来的示意图。属于同一指令群组的所有成员指令都会一个接着一个根 据本发明所揭露的基本规则被编组起来,其中该基本规则在此以图5中所示的 二指令CMD弁1与CMD#3的编组来加以说明。根据图5,该基本规则表示如下
If
(PBA of CMD # 1 + LEN of CMD # 1) + X = (PBA of CMD #3) Then
CMD#1-〉CMD#3 (1);
其中PBA of CMD #1代表指令CMD#1的物理区块地址;LEN of CMD #1 代表指令CMD#1的执行长度;PBA of CMD #3代表指令CMD#3的物理区块地 址;其中指令CMD#3的逻辑区块地址LBA of CMD #3根据上述提及过的假设 而假设为与其物理区块地址相同。X代表指令CMD# 1的结尾地址与指令CMD#3 的物理区块地址之间的距离,其中指令CMD組的结尾地址由指令CMD弁1的物 理区块地址加上指令CMD弁1的执行长度所得到,且指令CMD弁3的物理区块地
9址代表指令CMD弁3的起始地址。方程式(1)的意思即为当指令CMD弁1的结尾地 址与指令CMD弁3的物理地址之间的距离小于距离X的条件成立时,将指令 CMD#1的追迹指针指向指令CMD弁3。换言之,当距离X的绝对值小于预设长 度时,方程式(l)所列出的条件会成立,并执行将指令CMD#1的追迹指针指向 指令CMD弁3,其中预设长度根据光盘各种不同的需求与规格所决定。在图5中, 因为指令CMD弁1的逻辑区块地址/物理区块地址2000h加上指令CMD弁l的执行 长度20h以距离0h到达指令CMD#3的逻辑区块地址/物理区块地址,因此指令 CMD#1与CMD#3满足方程式(l)的条件,接着并将指令CMD#1的追迹指针 *NEXT—CMD指定为指向指令CMD#3所在的地址。在将二个不同指令加以编 组起来时,除了考虑方程式(l)所述的条件是否满足以外,尚须考虑指令类型不 同的问题。举例来说,即使对第一指令和第二指令,方程式(l)所述条件可满足, 但是当第 一指令为读取指令且第二指令为写入指令时,或当第 一指令为写入指 令且第二指令为读取指令时,第一指令与第二指令并不能被编组在一起,因为 将具有不同指令类型的指令加以编组起来对执行指令时的性能来说是不利的。
将多个指令中满足方程式(l)条件的指令编组起来后,会产生多个指令群组。 然而请注意,在上述规则之下,也会产生仅包含一个单独成员指令的指令群组, 这是因所述多个指令中并未包含有与该单独成员指令相符合方程式(l)条件的其 它指令。再者,所述多个指令群组也会根据所属指令类型的不同而归类成不同 类型的指令群组,例如归类为读取指令群组与写入指令群组,其中读取指令群 组仅包含指令类型为读取的读取指令,且写入指令群组仅包含指令类型为写入 的写入指令。
除了使用上述规则将指令编组至不同的指令群组以外,在本发明的其它实 施例中,亦可使用其它的方法将指令编组至不同的指令群组。举例来说,这些 方法包含根据指令类型且/或每一指令的逻辑区块地址将指令编组至不同的指令 群组中、将具有相同指令类型的不同指令编组至同一指令群组、将彼此之间物 理区块地址的距离在预设范围之内的不同指令编组至同 一指令群组中、或是上 述各方法的不同组合或排列所形成的各种实施例。不论是上述的指令编组及指 令编组方法,或是在每一指令群组内对指令执行顺序所作的各种排序,皆是为 了配合不同光盘的规格需求以增进指令执行性能为其目的。
请参阅图6,其为根据图4所示的数据结构与图5所示的指令编组方法所产 生的指令群组的示意图,并图标有该指令群组的指令执行顺序。如图6所示,在每一个以队列方式串联的多个指令群组中,产生有标头(header)。每一标头产 生有标头指针(headpointer),以指出所述标头对应的指令群组的第一个指令的地 址。每一标头亦产生有结尾指针(tail pointer),以指出所述标头对应的指令群组 的最后一个指令的地址。在同一指令群组中,由第一个指令到最后一个指令的 每一指令皆依序被指定优先权。光驱的物理存储器上,根据每一指令群组所包 含的各指令所设定的目标物理地址,来为每一指令群组指定一段存储区块,以 当作每一指令群组的緩冲器;其中上述各指令的目标物理地址位于光驱的物理 存储器上。请注意,每一指令群组亦须被指定指令群组识别名称(Command group identity),并将该指定群组识别名称加入于每一指令群组的标头中。当图6所示的指令群组将被执行时,所述指令群组的标头CG—HD#1首先被 撷取,以辨识出所述指令群组所包含的各成员指令的所在地址,并根据各成员 指令的优先权顺序来执行多个成员指令。其中多个成员指令以一个接着一个依 序的方式所执行,并由所述指令群组所包含的第 一个指令依循着每一成员指令 的追迹指针执行至该指令群组所包含的最后一个指令。请注意,当指令执行流 执行至该指令群组所包含的最后一个指令时,指令执行流的现行指针与该指令 群组的标头中储存的结尾指针会互相符合,此时可终止该指令群组的指令执行 程序,且此时代表该指令群组所包含的成员指令已被全部搜寻到并执行过。根据本发明的较佳实施例,产生的多个指令群组亦可使用优先权队列来加 以编组并串联,以用来指出执行多个指令群组的顺序,其中优先权队列称为一 指令群组队列。请参阅图7,其为根据本发明的一个较佳实施例实施指令群组队 列的示意图。该指令群组队列的成员为所述多个指令群组各自包含的标头。因 此,所述多个指令群组的标头编组并串联在一起,以指出所述多个指令群组的 执行顺序。根据图6所示的指令群组,指令群组队列所包含的每一个标头都会 另外再增加一个追迹指针,以指出指令群组执行流下一个将要执行的指令群组。 再者,指令群组队列所包含的每一个标头亦会再增加一个现行执行指针,以指 出指令群组执行流目前所执4亍的指令群組。图5所示的规则亦可用来将该指令群组队列所对应的多个指令群组各自包 含的标头加以编组起来,亦即方程式(l)所述的规则。因此,在该指令群组队列 中,第一标头的追迹指针指向第二标头,其中第一标头与第二标头分属不同的 指令群组,且第一标头所代表的指令群组的结尾地址与第二标头所代表的指令 群组的起始地址之间在同一光盘上的距离未超过预设长度。请注意,第一标头组的起始地址亦可以该指令群组的第一 个指令的物理区块地址来表示,其中第二标头的标头指针亦指向该指令群组的 第一个指令的物理区块地址。请注意,上述在编组指令群组队列的标头所使用 的预设长度并不一定与图5中编组同一指令群组中多个指令时所使用的预设长业环境或操作系统来决定。归纳之,当指令群组之间的执行流切换发生时,即发生搜寻(seek),需要将各指令群组的标头的执行顺序依循使搜寻距离或搜寻时 间最短的原则来加以编排,以使得执行各指令群组的效率可以获得最佳化。请别提及以外,以下的叙述将不再以指令群组队列存在于实施例为前提。在所述多个指令群组产生之后,仍会继续有额外的指令被加载,且需要另 行决定这些每一个被加载的指令所对应并储存的指令群组。请参阅图8,其为根 据本发明的一个较佳实施例,用来在产生多个指令群组后决定新加载指令对应 并加入的指令群组的指令加入方法的流程图。本发明所揭露的指令加入方法包 含如下步骤步骤1002:将新加载指令的逻辑区块地址与多个指令群组的结尾地址进 行比较,并确认新加载指令为读取指令或写入指令;步骤1004:确认是否在步骤1002中找寻到与新加载指令吻合的指令群组; 当找寻到指令群组时,执行步骤1006;否则执行步骤1008;步骤1006:将新加载指令加入于所找寻到的指令群组;及步骤1008:为新加载指令产生一个新指令群组,其中新加载指令同时为所 述新指令群组的第一个指令与最后一个指令。步骤1002与1004的目的为搜寻适合加入新加载指令的指令群组。因此, 步骤1002与1004的设计原则上遵循方程式(l),且已存在的每一指令群组的最 后一个指令的结尾地址与新加载指令的逻辑区块地址之间的距离都会被计算出来。当存在有适合加入新加载指令的指令群组时,该指令群组的最后一个指令 的结尾地址与新加载指令的逻辑区块地址之间的距离小于预设长度,且步骤 1006此时立即用来将新加载指令加入于该指令群组。请注意,步骤1002与1004 皆须遵循新加载指令的指令类型;换言之,遵循新加载指令为读取指令或写入指令。当新加载指令的指令类型与该指令群组所具有的指令类型相吻合时,即可判定新加载指令确实符合于该指令群组;否则,即使符合方程式(l)的条件, 仍无法将新加载指令加入于该指令群组中;这是因将新加载指令加入于指令类 型不同的指令群组中并不利于指令执行效率。具体来说,步骤1006包含将适合 的该指令群组的最后一个指令的追迹指针设定为指向新加载指令,并将该指令 群组的标头的结尾指针切换为指向新加载指令的地址。当执行步骤1008时,亦 即当不存在有适合于新加载指令的指令群组时,可为新加载指令另外建立一个 新的指令群组。具体来说,步骤1008包含为新加载指令产生一个新指令群组、 为所述新指令群组设定一个标头和指令群组识别名称及将所述新指令群组的标 头的标头指针与结尾指针设定为指向新加载指令所在的地址。因此,在找到并 加入适合于所述新指令群组的其它新加载指令前,该新加载指令在此暂时成为 所述新指令群组所包含的唯一指令。较佳的,指令执行流与将新加载指令加入于指令群组的操作同时进行,且 本发明中指令群组之间的指令群组执行流也会与将新加载指令加入于其中一个 指令群组的操作同时进行。请参阅图9,其为根据本发明的一个较佳实施例中多 个指令群组的指令执行流的流程图。图9所示的步骤如同以下所述步骤1102:确认是否仍存在有等待被执行的指令群组存在;当仍有指令群 组仍在等待被执行时,执行步骤1104;否则终止指令执行流;步骤1104:由多个未执行完毕的指令群组中,选出一个指令群组;步骤1106: 对所选出的指令群组实施高速缓存命中侦测(Cache hit detection);当侦测到命中高速緩存的状况时,执行步骤1108;否则执行步骤1110;步骤1108:将发生高速緩存命中现象的缓冲器与所选取的指令群组进行 置换(Swap);步骤1110:为所选取的指令群组指定新的緩冲器;步骤1112: 撷取所选取的指令群组中的第一个指令;步骤1114: 执行所撷取的指令,并由所选取的指令群组中删除所撷取的指令;步骤1116:确认在所选取的指令群组中是否仍存在有未被执行过的指令; 当所选取的指令群组中仍存在有未被执行过的指令时,执行步骤1112;否则执 行步骤1118;及步骤1118: 删除所选取的指令群组,并执行步骤1102。在步骤1104中,由未执行完毕的指令群组中选取一个指令群组的过程为根据图7所使用的指令群组队列中的现行指令指针所实施,其中此时所述指令群 组队列被假设以不同的方式实施于本实施例中,且实施指令群组队列的不同方 式也会在稍后提出。步骤1106中,高速緩存的侦测被实现于所选取的指令群组,以侦测所选取 的指令群组所占有的援冲器是否发生有高速緩存命中现象,其中高速緩存命中 现象指緩沖器已被其它先前执行过的指令群组写入数据的状况,且被写入的数 据在写入数据相依(Write dependency)的前提下符合被选取的指令群组的需求。 发生高速緩存命中现象时,也代表此时不需要进行额外的搜寻或读取来存取现 行指令执行流未指向的缓沖器数据,且现行指令执行流此时亦可对发生高速緩 存命中现象的物理地址直接进行运算或操作,亦即对现行指令执行流此时指向 的地址进行运算或搡作。在步骤1108中,因为在存储器上的一段特定物理区块地址已被侦测到发生 高速緩存命中现象,因此需要将该段特定物理区块地址上的緩冲器数据加以置 换;这是因緩冲器数据在之后的指令执行中仍存在有被其它指令群组重复使用 的可能性,且緩冲器数据在所选取的指令群组被执行后极有可能被改变,尤其 当所述选取指令群组为写入指令群组时。緩冲器数据包含不同的緩冲计数器, 且当緩冲器数据被置换时,这些緩冲计数器所储存的数值也会随之被储存或重 置(Reset)。再者,虚拟环型緩沖器(Virtual ring buffer)可在步骤1104执行完毕后 马上用来储存指令群组的置换执行中需要被暂存的緩冲器数据,且虚拟环型緩 沖器亦需要在所选取的指令群组被删除以前被清除。在步骤1110中,当未侦测到发生高速缓存命中现象时,需要将新的緩冲器 提供给被选取的指令群组,以执行被选取的指令群组。将新的緩冲器提供给被 选取的指令群组的步骤包含储存被选取的指令群组的现行緩冲计数器所记录的 数值、在存储器上指定新的緩冲器给被选取的指令群组及设定所选取的指令群 组中相关的各指针以指向被指定的緩沖器。步骤1112、 1114、 1116描述递归程序。该递归程序以递归方式执行所选取 的指令群组中由第一个指令至最后一个指令的所有指令。请注意,在步骤1114 中,在被执行的指令被删除前,被选取的指令群组的标头指针应事先被切换至 将被删除指令的追迹指针所指向的另一指令,使得在步骤1112中下一个被执行 的指令即为被指向的另 一指令。14在步骤1118中,在所选取的指令群组被删除以前,仅与所选取的指令群组 相关的緩冲存储器数据(亦即与其它未完成指令群组完全无关的数据)或是与所 选取的指令群组相关并储存于不同緩冲器的緩冲计数器所储存的数值都应被删 除以事先释放存储器。如之前所述,在本发明所揭露提高光驱读取与写入性能的方法中,首先应 选取哪一个指令来执行是相当关键的部分。只要指令群组队列中包含的各标头 的追迹指针可以顺利的应用于搜寻下一个被执行的指令群组,则指令群组队列在选取被执行的指令群组上为相当便利的工具。除了根据方程式(l)及图6中所讨论的相关规则来决定指令执行顺序以外,亦可使用本发明所揭露的其它标准 来决定执行各指令群组的优先权。在本发明的其它实施例中亦可使用贪婪策略(Greedy strategy)来选择欲执行 的指令群组。请参阅图10,其为本发明中用来选取欲执行的指令群组时可使用 的各种贪婪策略的示意图,亦即可用来实施图9所示步骤1104的各种贪婪策略。 如图IO所示,可用来实施步骤1104的贪婪策略如以下所列举步骤1202:在光驱已加载的光盘上,选取起始物理区块地址最靠近光驱读 写头的指令群组;步骤1204:选择起始物理区块地址在光驱已加载光盘上最内侧的指令群组;步骤1206:循序的由最内侧的指令群组执行至最外侧的指令群组; 步骤1208:选择包含最多数量指令的指令群组; 步骤1210:优先选择读取指令群组;及 步骤1212:优先选择写入指令群组。在步骤1202中,起始物理区块地址最靠近光驱读写头的指令群組表明该指 令群组在光驱已载入光盘上欲执行读取或写入的指令时可获取最短的搜寻距 离,并藉此获取最短的反应时间。在步骤1204与1206中,由起始物理区块地址距离已加载光盘最内侧最近 的指令群组开始进行循序搜寻,可标准化每一指令群组的搜寻时间,且使得光 驱的功率消耗与噪音可以大幅度的降低;再者,该策略亦可确保在单一循序搜 寻中,每一个指令群组都会被执行到,但也同样的必须付出部分指令较长反应 时间的代价。步骤1204与1206所使用的贪婪策略的好处在于可以在执行指令 群组的同时防止某些过久未被执行到的指令群组发生饥饿状态(Starvation)的情在步骤1208中,选取具有最多指令个数的指令群组。连续不断的优先执行具有最多指令个数的指令群组,可以确保在单次搜寻中的最大指令执行输出量(Throughput),然而,某些持续具有较少指令个数的指令群组会持续的发生饥饿 状态。在步骤1210中,读取指令群组相对写入指令群组更为优先的被选择。反之, 在步骤1212中,写入指令群组相对读取指令群组更为优先的被选^^。执行步骤 1210或1212是根据指令产生的优先顺序为何。例如,当未执行的读取指令与写 入指令发生欲存取的实体区块地址重复时,则必须优先处理先产生的指令以确 保输出或输入资料的正确性。通过上述各种贪婪策略的应用,会伴随着发生不同程度与原因的饥饿现象, 因为各种贪婪策略的使用都会造成某部分的指令群组长时间保持在低优先权的状况。为了减轻因为图IO所示的策略而造成饥饿现象,本发明另外揭露四种技 巧。在本发明的一个实施例中,应用第一种减轻饥饿现象的技巧包含提供定时 器,以记录产生的每一个指令群组的闲置时间(Idle time)。换言之,定时器用来 记录指令群组被延误执行的时间长度。通过定时器,具有最长闲置时间的指令 群组总是会被优先选取并执行,因此任何指令群组都会在其休息时间(Timeout) 到达前被执行到,并免除上述饥饿现象的发生。请注意,休息时间根据不同的 环境需求或操作系统来设定。在本发明的一个实施例中,应用第二种减轻饥饿现象的技巧包含在每一指 令群组中附加一组优先权位。在本发明的一个较佳实施例中,当一个指令群组 所包含的一组优先权位代表较大的数值时,所述指令群组也同样的具有较高的 优先权。当所述指令群组持续被执行时,其优先权也会持续的递减;反之,当所述指令群组的优先权也会持续的递增;而当所述指令群组所包含的指令全部 都被执行完毕时,所述指令群组的优先权也会被重置为最低的优先权。在本发明的一个实施例中,应用第三种减轻饥饿现象的技巧包含提供执行 计数器给每一指令群组,其中执行计数器用来记录其对应的指令群组已经被执 行的执行时间,这是因完全执行某些指令群组可能需要付出较长执行时间的代 价。因此,在本实施例中,正在被执行中的指令群组所包含的指令数量将会被16确认,以确认该指令群组被执行第二预设数量的指令之后,所剩余的未执行指 令数量是否仍超过第一预设数量;接着并进而根据确认的结果,决定是否将指 令群组^l行流切换至另 一指令群组,其中该另 一指令群组在所有指令群组中除 正在被执行中的指令群组外具有最多数量的指令。当被执行中的指令群组所剩 余的指令数量少于预设数量,或当该指令群组已被执行的时间已超过执行计数 器所记录并限定的时间,被执行中的指令群组可能需要暂时放弃目前被执行的 优先权,并将指令群组执行流暂时的转移给其它具有较多未执行指令的指令群 组。在本发明的一个较佳实施例中,当一个指令群组的执行计数器所记录的指 令数量较多时,该指令群组的优先权较低,因为该指令群组必须在具有较多指 令数量的时候就必须要被迫放弃其被执行的优先权。
在本发明的一个实施例中,应用第四种减轻饥饿现象的技巧包含优先选取 具有最短执行时间的指令群组。所述技巧可确保在单位时间中得到最大量的指 令群组执行输出量。
在图10所示的步骤1208所揭露的策略中,具有最多数量指令的指令群组 总是优先被选取与执行。然而,当被选取的指令群组已被执行过部分指令后, 若被选取的指令群组在所有指令群组中仍为具有最多数量未执行指令的指令群 组,则代表执行该指令群组的同时,可能仍然持续有新指令加入于同一指令群 组,因此某些持续具有较少未执行指令数量的指令群组会持续的未被选取到而 持续的进入等待状态、并造成其饥饿状态的发生。
请参阅图11,其为图示各种策略的改进示意图,以解决因为执行图IO所示 的步骤1208而总是选取到具有最多指令数量的指令群组状况,并进而解除过久 未执行指令群组造成的饥饿状态。除了步骤1208以外,图11所附加的步骤如 以下所列举
步骤1302:在被选取的指令群组中执行第一预设数量的指令,并由被选取 的指令群组中将已被执行的指令删除;
步骤1304:确认被选取的指令群组所剩余的未执行指令数量是否超过第 二预设数量;当被选取的指令群组所剩余的未执行指令数量超过第二预设数量 时,执行步骤1306,否则再次执行步骤1302;及
步骤1306: 将指令群组执行流切换至另一指令群组,并将原先被选取的指 令群组相关的数据与计数器数值暂存于緩沖器。
为了防止持续执行具有最大数量指令的指令群组一段较长的时间,或是防止持续执行被持续加入新指令的指令群组,在步骤1302中,每当选取一个指令 群组来执行时,被选取的指令群组被执行的指令数量都会被限制。第一预设数 量可为 一正整数,并#4居不同的环境需求或操作系统来决定。
接着在步骤1304中,当执行过被限制数量的指令后,被选取的指令群组的 剩余未执行指令数量将会被确认是否仍为所有指令群组中最多的。第二预设数 量用来当作决定指令群组所包含的指令数量是否为最多的判定标准,且当指令 群组所包含的指令数量超过第二预设数量时,该指令群组的剩余未执行指令数 量即被认定为目前所有指令群组中最多的。第二预设数量根据不同环境需求或 操作系统所决定。
在步骤1306中,当执行过第一预设数量的指令后,所选取的指令群组仍然 具有超过第二预设数量的剩余未执行指令而被认定为具有当时最多剩余未执行 指令时,指令群组执行流即会由所选取的指令群组被切换至其它具有大量剩余 未执行指令的指令群组,且原先被选取的指令群组将会等待下次再次取得指令 群组执行流的机会。当将指令群组执行流由所选取的指令群组切换至其它指令 群组时,与该指令群组相关的计数器数值与数据将会被事先储存于緩冲器,且 当之后该指令群组再次取得指令群组执行流时,这些被储存的计数器数值与数 据将可被再次使用。当执行完第一预设数量的指令后,若所选取的指令群组不 再被认定具有最多指令个数,代表所选取的指令群组已经渐渐接近其所有指令 被执行完毕的状态,因此指令群组执行流将会继续在该指令群组上运行,以维 护该指令群组被执行的各指令之间运作结果的完整性。
请参阅图12图,其为根据本发明的一个较佳实施例所揭露的光驱1400的 功能方块示意图。光驱1400包含接口部分1405、存储器部分1415、伺服(Servo) 部分1420、非易失性存储器部分1435、处理器部分1440以及队列处理部分1450。
接口部分1405包含主机端接口 1410,用来通过通讯接口 1465加速主机端 计算机1460与光驱1400之间的通讯。存储器部分1415包含易失性物理存储器 1417。易失性物理存储器1417耦接于存储控制器1419,且存储控制器1419亦 耦接于主机端接口 1410以处理主机端计算机1460的数据与指令传输。祠服部 分1420用来通过通讯总线1475处理光驱1400与已加载光盘1470之间的通讯。 伺服部分1420包含射频放大器1422,且射频放大器1422连接于通讯总线1475 以放大由光盘1470所读出的信号。伺服控制器1425耦接于射频放大器1422以 控制图中未标示的光驱读写头来读取或写入数据于光盘1470。处理器部分1440包含^:处理器1445以控制光驱1400的运作。控制才几制包 含存取与执行储存于非易失性存储器部分1435内的快闪存储器(Flash ROM)1430的程序、控制伺服控制器1425与存储控制器1419及控制光驱1400 内的控制队列处理部分1450;上述三项控制机制都通过与微处理器1445的耦接 所达成。队列处理部分1450亦用来接收由主冲几端接口 1410而来的输入凄t据。 队列处理部分1450可根据不同的设计需求而使用各种软件、固件或硬件来实施。
队列处理部分1450在本发明的某些实施例中,亦可针对特定需求而包含指 令分选器/指令库1455与指令选取器1457。
指令分选器/指令库1455用来对主机端接口 1410而来的指令进行接收、排 序、与储存等运作。指令分选器/指令库1455的完整排序功能需兼容于不同的执 行环境,并具备将指令编组成指令群组的排序指令,其中这些排序指令的运作 根据指令类型、指令之间的地址距离及/或其它先前技术中已经揭露过用来增进 光驱指令执行性能的各种方法来设计。在本发明的一个较佳实施例中,这些指 令群组会各自以链表(Linked list)实施,且加入于该链表的多个指令会被重新排 序成指令队列,并如同之前所述般增进指令执行性能。新接收的指令会被加入 对应的不同指令群组,且在本发明的某些实施例中,这些不同的指令群组会因 应光驱执行效率上的不同需要而整合在一起或是进一步的分裂成二个以上的新 指令群组。
指令选取器1457耦接于微处理器1445与指令分选器/指令库1455,并提供 上述所揭露过的选取应当被执行的指令群组的功能,其中所选取的应当被执行 的指令群组由指令分选器/指令库1455所生成。指令选取器1457并将被选取的 指令群组提供给微处理器1445以执行。
本发明提供一种增进光驱指令执行性能的方法。首先,本发明提供一种用 来实施指令的数据结构,以及包含以所述数据结构所实施的多个指令而建立的
指令群组。通过基本的编组标准,单一指令群组所包含的多个指令完善的编组 与连结在一起;因此,指令群组原则上可以使用链表这种数据结构来实施。通 过指令群组的实施,指令群组所包含的多个指令得以被重新排序,且指令执行 效率亦可通过根据特定策略所选取的指令群组而得到提升。新加载的指令可迅 速的找到对应的指令群组而被加入,且相关的指令管理可通过防止指令混编与 减少不必要的搜寻而得到改进。虽然使用指令群组时可能会发生饥饿现象,但 本发明亦提供某些防止饥饿状态发生的方法来加以杜绝其发生,并同样的可降低搜寻的频率。再者,通过本发明所揭露的方法,先前技术中因为不必要的搜 寻而引起指令执行效率降低的缺点也获得显著的改善,这是因指令在本发明所
提供的方法中得到完善的编组与分类;换言之,读取指令群组与写入指令群组
可完善的被编组与分类。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等 变化与修饰,皆应属本发明的涵盖范围。
权利要求
1.一种增进光驱指令执行性能的方法,包含收集多个指令;将所述多个指令分配给至少一个指令群组;将所述至少一个指令群组以队列方式串联;编排每一指令群组中所包含的多个指令的指令执行顺序;由所述至少一个以队列方式串联的指令群组中选取一个指令群组,以获得被选取的指令群组;以及根据所述被选取的指令群组的指令执行顺序,执行所述被选取的指令群组所包含的多个指令。
2. 根据权利要求1所述的增进光驱指令执行性能的方法,其特征在于,所 述编排步骤包含根据每一指令的指令类型和/或逻辑区块地址来编排所述多个指 令的指令执行顺序。
3. 根据权利要求2所述的增进光驱指令执行性能的方法,其特征在于,进 一步包含将具有相同指令类型的多个指令分配给所述多个指令群组的其中 一个 指令群组。
4. 根据权利要求2所述的增进光驱指令执行性能的方法,其特征在于,进 一步包含将彼此之间物理区块地址距离小于预设距离的多个指令分配给所述多 个指令群组的其中一个指令群组。
5. 根据权利要求1所迷的增进光驱指令执行性能的方法,其特征在于,所 述选取步骤包含选取起始物理区块地址最接近光驱读写头位置的指令群组,其 中所述读写头位置位于所述光驱所加载的光盘上。
6. 根据权利要求1所述的增进光驱指令执行性能的方法,其特征在于,所 述选取步骤另包含选取起始物理区块地址最接近光盘的最内側区域的指令群 组,其中所述光盘由光驱所加载。
7. 根据权利要求1所述的增进光驱指令执行性能的方法,其特征在于,所 述选取步骤另包含选取包含最多数量指令的指令群组。
8. 根据权利要求1所述的增进光驱指令执行性能的方法,其特征在于,所 述选取步骤另包含根据所述多个指令群组各自包含的指令类型来选取指令群组。
9. 根据权利要求1所述的增进光驱指令执行性能的方法,其特征在于,所收集的所述多个指令储存于一种泰:据结构内,且所述数据结构包含 所述指令的指令识別名称; 标志,用来指示所述指令的指令类型; 逻辑区块地址,用来指示执^f亍所述指令的起始物理区块地址; 所述指令的执行长度; 所述指令的优先权;以及 追迹指针,用来指出下一个将被执行指令的地址。
10. 根据权利要求9所述的增进光驱指令执行性能的方法,进一步包含 对多个以所述队列方式串联的指令群组中每一指令群组,产生标头;对每一标头产生标头指针,以指出所述标头对应的指令群组所包含的第一 个指令的地址;对每一标头产生结尾指针,以指出所述标头对应的指令群组所包含的最后 一个指令的地址;对每一指令群组中所包含的每一指令,由第一个指令到最后一个指令,各 自指定在该指令群组中的优先权;以及根据每一指令群组所包含的每一指令的目标物理地址,为每一指令群组在所述光驱所包含的物理存储器中分配存储区块,其中所述每一指令的目标物理 地址位于所述物理存储器中。
11. 冲艮据权利要求1所述的增进光驱指令执行性能的方法,其特征在于,进 一步包含收集新指令,并将所述新指令分配给所述多个指令群组中其中一个指 令群组。
12. 根据权利要求11所述的增进光驱指令执行性能的方法,其特征在于, 进一步包含检查是否有任何适合于所述新指令的指令群组存在,其中适合于所述新指 令的指令群组所包含的最后一个指令的结尾地址加上或减少预设长度可到达所 述新指令的物理区块地址,且所述新指令的标志与所述指令群组一致;以及当适合于所述新指令的指令群组存在时,将所述指令群组所包含的最后一 个指令的追迹指针设定为指向所述新指令的地址,并将所述指令群组的结尾指 针设定为指向所述新指令的地址。
13. 根据权利要求12所述的增进光驱指令执行性能的方法,其特征在于,进 一步包含当适合于所述新指令的指令群组不存在时,为所述新指令产生新指令群组;以及将所产生的所述新指令群组的标头所包含的标头指针与结尾指针设定为指 向所述新指令的地址。
14. 根据权利要求1所述的增进光驱指令执行性能的方法,其特征在于,进 一步包含提供定时器,以记录所述多个指令群组的每一指令群组的闲置时间;以及 优先选取具有最长闲置时间的指令群组来执行。
15. 根据权利要求1所述的增进光驱指令执行性能的方法,其特征在于, 进一步包含优先选取具有最短执行时间的指令群组来执行。
16. 根据权利要求1所述的增进光驱指令执行性能的方法,其特征在于, 进一步包含在目前执行中的指令群组执行完第二预设数量的指令后,检查目前执行中 的所述指令群组剩余的指令数量是否超过第 一预设指令数量;以及将指令执行流由目前执行的所述指令群组置换为其它指令群组中具有最多指令数量的指令群组。
17. —种光驱,包含指令分选器/指令库,用来将多个指令分配给至少一个指令群组、编排每一 指令群组的指令执行顺序、并将所述至少一个指令群组以队列方式串联;指令选取器,耦接于所述指令分选器/指令库,并用来由以队列方式被串联 的所述至少一个指令群组中选f^一个指令群组;及微处理器,耦接于所述指令选取器,并用来根据被选取的所述指令群组的 指令执行顺序来执行所述指令群组中所包含的指令。
18. 根据权利要求17所述的光驱,其特征在于,所述指令分选器/指令库 进一步用来根据所述多个指令的每一指令的指令类型及/或逻辑区块地址来分配 所述多个指令。
19. 根据权利要求17所述的光驱,其特征在于,所述指令分选器/指令库 进一步用来将具有相同指令类型的多个指令分配给所述多个指令群组中的一个 指令群组。
20. 根据权利要求17所述的光驱,其特征在于,所述指令分选器/指令库 进一步用来将彼此之间物理区块地址距离小于预设距离的多个指令分配给所述 多个指令群组的一个指令群组。
21. 根据权利要求17所述的光驱,其特征在于,所述指令分选器/指令库进一步用来选取起始物理区块地址最接近所述光驱读写头的指令群组,其中所 述读写头位于所述光驱所加载的光盘上。
22. 根据权利要求17所述的光驱,其特征在于,所述指令分选器/指令库 进一步用来选取起始物理区块地址最接近光盘最内侧区域的指令群组,其中所 述光盘由所述光驱加载。
23. 根据权利要求17所述的光驱,其特征在于,所述指令分选器/指令库 进一步用来选取包含最多数量指令的指令群组。
全文摘要
本发明提供一种光驱及增进光驱指令执行性能的方法。其中增进光驱指令执行性能的方法,包含收集多个指令;将所述多个指令分配给至少一个指令群组;将所述至少一个指令群组以队列方式串联;编排用来执行每一指令群组中所包含的多个指令的指令执行顺序;由所述至少一个以队列方式串联的指令群组中选取一个指令群组;及根据被选取的指令群组的指令执行顺序,执行被选取的所述指令群组所包含的所述多个指令。利用本发明可大幅度减少执行指令时进行搜寻的次数与时间消耗,增强光驱的读取与写入指令的性能。
文档编号G06F3/06GK101676854SQ20091000945
公开日2010年3月24日 申请日期2009年2月25日 优先权日2008年9月19日
发明者吴静怡, 庄志良, 曾宝庆 申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1