CN100451953C - 程序指令调整方法 - Google Patents

程序指令调整方法 Download PDF

Info

Publication number
CN100451953C
CN100451953C CNB2007100895168A CN200710089516A CN100451953C CN 100451953 C CN100451953 C CN 100451953C CN B2007100895168 A CNB2007100895168 A CN B2007100895168A CN 200710089516 A CN200710089516 A CN 200710089516A CN 100451953 C CN100451953 C CN 100451953C
Authority
CN
China
Prior art keywords
instruction
mentioned
present
working storage
write
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.)
Active
Application number
CNB2007100895168A
Other languages
English (en)
Other versions
CN101021785A (zh
Inventor
陈亦鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Priority to CNB2007100895168A priority Critical patent/CN100451953C/zh
Publication of CN101021785A publication Critical patent/CN101021785A/zh
Application granted granted Critical
Publication of CN100451953C publication Critical patent/CN100451953C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明提供一种程序指令调整方法,根据程序指令在存取暂存器的顺序上的相依关系来计算程序中每一指令的相依深度,并根据指令的相依深度来重新排列程序中的指令。另外,更可以利用上述相依关系来判别冗余指令并加以删除。本发明所述的程序指令调整方法,可以改善计算机装置程序的执行效率。

Description

程序指令调整方法
技术领域
本发明是有关于计算机技术,且特别有关于程序指令调整方法。
背景技术
典型的处理器利用管线技术(pipelining)在同一时间中可执行多个指令(instruction)。在管线中,当一指令的运算元(operand)暂存器(register)为前一指令的输出结果时,此指令会被暂停执行直到等待前一指令产生上述输出结果。
以下列指令来说明一实例:
#101.add a x y
#102.inc a
#103.dec b
//a=(x+y)+1;b=b-1
参照图1,指令#101的执行阶段可以分为:
取得指令#101;
读取x及y;
add运算;以及
写入a。
指令#102在其第二执行阶段时被读取(fetch)出,随即需在第三执行阶段进行a的读取,但因为指令#101是在第四执行阶段才写入暂存器a,因此指令#102需在第五执行阶段时才可以执行暂存器a的读取。换言之,指令#102第五执行阶段的输入是需依赖指令#101在第四执行阶段的输出。另,在执行指令#102的第五执行阶段的同时开始处理指令#103。这使得指令#101-#103总共需要8个时脉的时间来执行。若指令#102在第五执行阶段所读取的不是暂存器a,则与指令#101第四执行阶段无相依关系,则指令#102可提前至第三执行阶段时执行暂存器a的读取,指令#103亦可提前两个执行阶段,因此整体指令#101-#103的执行只需要6个时脉即可完成。
由上述实例可知,具有相依关系的二指令在具有管线架构的处理器中若无适当的安排调整,则会降低整体的执行效率。
发明内容
有鉴于此,本发明提供一种程序指令调整方法。首先,自一储存装置中取得即将由一计算机处理器执行的一程序。取得该程序正检视中的一指令作为一目前指令,取得该目前指令所使用的一暂存器及该目前指令对该暂存器所执行的一第一动作。在其他程序指令在上述第一动作以前亦对同一暂存器执行一第二动作的情况下,根据该目前指令与其他程序指令存取该暂存器的顺序建立该程序的指令间的一相依关系。根据该相依关系计算程序中每一指令的相依深度。根据该程序中每一指令的相依深度重新排列该程序中所有指令的执行顺序。
另外,本发明提供一种程序指令调整方法。首先自一储存装置中取得即将由一计算机处理器执行的一程序。取得上述程序正检视中的一指令作为一目前指令。当在上述目前指令对该暂存器执行一第一动作以前,亦有其他指令对同一暂存器执行一第二动作的情况下,建立其他指令与目前指令之间的相依关系,其中,上述相依关系中所述其他指令系为目前指令的上层指令。在顺序地取得程序中的每一指令作为上述目前指令并建立其相对应的相依关系后,开始顺序地反向回溯所有上层指令,并记录所有被反向回溯的上层指令为一指令群组。若在上述程序中有一指令不属于上述指令群组时,自上述程序中删除该指令。
另外,本发明提供一种程序指令调整方法。首先,自一储存装置中取得即将由一计算机处理器执行的一程序。取得该程序正检视中的一指令作为一目前指令,取得该目前指令所使用的一暂存器以及该目前指令对该暂存器所执行的一第一动作。在其他程序指令在上述第一动作以前亦对同一暂存器执行存取的情况下,根据该目前指令与其他程序指令存取该暂存器的顺序建立该程序的指令间的一相依关系。根据该相依关系以移除上述程序中冗余的移动指令。
上述的程序在经由上述各实施例的重新排列及/或删除后,会交付至该计算机处理器进一步执行。
本发明所述的程序指令调整方法,可以改善计算机装置程序的执行效率。
附图说明
图1显示多个指令的执行阶段示意图;
图2显示调整执行顺序的上述指令的执行阶段示意图;
图3显示一计算机装置实施例的结构方块图;
图4显示一程序指令相依关系分析方法实施例的流程图;
图5显示程序指令相依关系分析结果的数据结构示意图;
图6显示反向回溯的流程图;
图7显示删除冗余指令的程序的对应数据结构示意图;
图8显示删除冗余移动指令的方法实施例的流程图;
图9显示删除冗余移动指令的程序的对应数据结构示意图。
具体实施方式
以下说明是本发明的较佳实施例,乃举例说明本发明一般性的原则,不应视为本发明的限制,本发明的范围当以权利要求书所界定的范围为准。
在背景技术中所描述的例子中,由于指令#103与其它指令无相依关系,因此可以安排指令#103提前为第二指令进行执行,因此上述指令可以下列顺序执行:
#101.add a x y
#103.dec b
#102.inc a
图2显示以上述重新安排的顺序执行上述指令的执行阶段,以此顺序执行的结果与原顺序一致,而且仅需7个时脉的时间即可完成。由此可知在不影响程序正确性的条件下,只需调整指令的顺序就可以改善程序的执行效率。因此,以下提出一种程序指令调整方法。
参照图3,计算机装置100中,处理器1耦接显示卡2、程序指令调整系统3以及储存装置4。程序41可以先用程序指令调整系统3处理后,再由计算机装置100或其它计算机装置,例如游乐器(video game console)、移动电话、个人数字助理(PersonalDigital Assistant,简称PDA)等的处理器(例如处理器1或显示卡2中的图形处理器(Graphics Processing Unit,简称GPU))来执行。程序指令调整系统3包含分析程序、移除冗余指令、移除冗余的移动指令(MOV instruction)以及指令重新排序等步骤,分别由分析器31、指令移除器33、指令移除器34及排序器32来操作。程序指令调整系统3中的各元件可以程序或硬件或此二者的组合来操作。
举例来说,程序41为着色程序(shader),包含下列指令:
#0:texld r0,t0 s0
#1:mov r2 r0
#2:texld r1,t1 s1
#3:mad r3,r0 c0 r1
#4:rcp r4,r1
#5:mad oC0,r2 r3 c1
#6:mov 0C1,r3
参照图4,分析器31分析程序41的指令间的相依关系的流程图。首先,分析器31取得程序41,并取得程序41正检视中的一指令作为目前指令(步骤S2)。若该目前指令为一开始指令、输出指令或移动指令,分析器31会储存一对应记录以指示该目前指令的指令类别(步骤S4),其中,输出指令为输出程序41最后结果的指令,另外,有些暂存器被定义为输出暂存器,而将运算结果写入输出暂存器的指令亦可以被判别为输出指令。
分析器31会在步骤S6中进行初始化程序,其中初始化程序包括取得上述目前指令的初始相依深度(dependency depth),并在步骤S8中取得上述目前指令使用的暂存器,包含写入暂存器与读取暂存器。每一指令的相依深度可以再细分为不同类型。以下的相依深度用以指示多个指令存取暂存器的顺序上的相依关系。
主要是由于指令存取相同暂存器才构成指令间的相依关系,因此步骤S8记录指令所使用的暂存器是为了方便相依关系的分析。可以一数据结构记录上述目前指令所使用的暂存器的写入指令(writer instruction)及读取指令(readerinstruction)。分析器31判别上述目前指令所使用的写入暂存器是否已经被记录于一数据结构(步骤S10)。如否,分析器31产生一数据结构以记录上述目前指令的写入暂存器,并记录上述目前指令为该暂存器的写入指令(步骤S18)。其中,上述数据结构可以储存于计算机装置100的主存储器(未图示)。
举例来说,分析器31可以利用下列表0来记录指令#0写入的暂存器r0:
表0
以上的暂存器记录法是在一单纯状况下的模式,如果一暂存器r10具有红、绿、蓝及alpha频道,则可以表1记录暂存器r10各频道的读取或写入指令:
表1
Figure C20071008951600122
其中R、G、B、A分别为暂存器r10的红、绿、蓝及alpha频道。任一指令可以存取暂存器r10的单一频道。同理,分析器31可以类似的数据结构记录目前指令的读取暂存器(例如指令#0的t0 s0)及写入暂存器(或称为结果暂存器,例如指令#0的r0)。
如果在步骤S10的判断中,上述目前指令的写入暂存器已被记录,表示至少有一先前指令在目前指令使用写入暂存器以前已经使用同样的暂存器,此时分析器31会根据先前指令对该写入暂存器的第一动作及目前指令对该写入暂存器的第二动作以建立先前指令及目前指令之间的相依关系(包含稍后说明的W-W及R-W相依关系)。可以从上述数据结构(例如上述表1)中的记录的指令来判断何者为早于目前指令使用同一暂存器的先前指令。举例来说,表0无记录任何指令,因此指令#0为首先使用暂存器r0的指令。
由于指令#0将运算结果写入暂存器r0,因此指令#0是暂存器r0的写入指令。上述数据结构记录指令#1后如表2所示:
表2
Figure C20071008951600131
当指令#1读取暂存器r0,则指令#1是暂存器r0的读取指令。于上述表2中记录指令#1是暂存器r0的读取指令以前,表2中无任何读取指令,但具有一写入指令“#0”。指令“#0”是早于指令#1存取暂存器r0的最后一个指令。指令#0与指令#1之间具有一相依关系,被分类为Write-Read(W-R)相依关系,即先写后读关系。另外指令之间相依关系还有W-W相依关系(即先写后写关系)以及R-W相依关系(即先读后写关系)。举例来说,指令#1对暂存器r2的动作为“写入”,如果有一指令#x早于指令#1写入数据至暂存器r2,则指令#x与指令#1之间具有W-W相依关系;如果有指令#x早于指令#1读取暂存器r2的数据,则指令#x与指令#1之间具有R-W相依关系。换言之,先前指令及目前指令对同一暂存器执行的处理动作分别称为第一动作与第二动作,并且当第一动作及第二动作分别为写入动作与读取动作时,其间的相依关系为W-R相依关系;或上述第一动作与第二动作皆为写入动作时,其间的相依关系为W-W相依关系;或上述第一动作与第二动作分别为读取动作与写入动作时,其间的相依关系为R-W相依关系。上述相依关系中,先前指令为目前指令的上层指令,依此,可以利用另一种数据结构,如树状结构,以记录上述相依关系。
另外,在目前指令的读取暂存器所对应的数据结构中,亦会记录该目前指令为其读取指令。举例来说,在指令#1的读取暂存器r0对应的表中记录指令#1为其读取指令,如下列表3所示:
表3
Figure C20071008951600141
在步骤S18中,于目前指令的写入暂存器对应的数据结构中记录目前指令为写入指令。若该数据结构中已存在一写入指令,则以上述目前指令取代之。若该数据结构中已存在一个或一个以上的读取指令,则删除上述一个或一个以上的读取指令。删除先前的写入指令以及读取指令是为了方便下一次对先前指令的判断。
以一实例来说明,请参考表4,其是记录在写入暂存器r2对应的数据结构中记录指令#1为写入指令以前的状态。
表4
Figure C20071008951600142
表4中,读取指令#10及#12未被删除,表示在指令#8写入数据至暂存器r2后,读取指令#10及#12才读取暂存器r2。因此,在指令#1加入后,分析器31需分别建立指令#10与指令#1之间以及指令#12与指令#1之间R-W相依关系,与指令#8与指令#1之间W-W相依关系,并在表4中以指令#1取代指令#8,最后删除表4中的指令#10及#12,结果如表5所示:
表5
Figure C20071008951600151
以另一实例来说明,请参考表6,其是记录在写入暂存器r2对应的数据结构中记录指令#1为写入指令以前的状态。
表6
表6中表示指令#13是在指令#1写入数据至暂存器r2以前,写入数据至暂存器r2的最后一个指令。因此,在指令#1加入后,分析器31会建立指令#13与指令#1之间的W-W相依关系,并在表6中以指令#1取代指令#13,结果如表7所示:
表7
Figure C20071008951600153
因此,如果在步骤S10的判断中,上述目前指令的写入暂存器已被记录,表示有一个或一个以上的先前指令在目前指令使用写入暂存器以前使用同样的暂存器,则分析器31根据上述方式以建立每一先前指令及上述目前指令W-W相依关系(步骤S12)及R-W相依关系(步骤S14),并计算目前指令的相依深度,作为相依深度第一值(步骤S16)。因为在此步骤S10判断的是目前指令的写入暂存器,在步骤S12及步骤S14中只会建立W-W及R-W相依关系,而W-R相依关系则在步骤S20之后处理。
以下举例说明目前指令相依深度的计算。当目前指令具有多个上层指令时,分析器31选取其中相依深度最大者作为计算目前指令相依深度的参考基准,以上述被选取的先前指令的相依深度值来作运算,取其运算结果作为上述目前指令的相依深度,使先前指令与目前指令的相依深度相差一预定差值。举例来说,当每一指令的相依深度初始化为整数0时,上述运算可以为加法运算,而上述预定差值可以是整数1。当然每一指令的相依深度初始化为整数0以外另一数值(例如程序41的指令总数),上述运算可以其它运算(例如减法运算)操作。
类似于步骤S10,分析器31判别上述目前指令所使用的读取暂存器是否已记录于一数据结构中(步骤S20)。如否,分析器31产生一数据结构以记录目前指令的读取暂存器,并记录目前指令为该暂存器的读取指令(步骤S28)。如果在步骤S20的判断中,上述目前指令的读取暂存器已被记录于一数据结构中,表示有一先前指令在目前指令使用该读取暂存器以前使用同样的暂存器,则分析器31会根据先前指令与目前指令分别对应该读取暂存器的第一动作与第二动作,以建立先前指令及目前指令的W-R相依关系(步骤S22),并以上述方式利用其上层指令计算上述目前指令的相依深度(步骤S24),作为相依深度第二值,并以上述第一值及上述第二值中较大者作为上述目前指令的相依深度(步骤S26)。
因为在此步骤S20判断的是目前指令的读取暂存器,在步骤S22中只会建立W-R相依关系,而不再处理W-W及R-W相依关系。R-R关系(先读后读)中的二个指令的顺序不会影响程序执行的正确性,因此不需要建立R-R关系。
另外,图4中有关写入暂存器及读取暂存器的处理虽是以步骤S10~S18及S20~S28的顺序执行,但步骤S10~S18及S20~S28在处理顺序上亦可以对调或平行处理。
在步骤S28,分析器31于记录目前指令读取暂存器的数据结构中记录目前指令为该暂存器的读取指令,而不需删除其它读取指令或写入指令(步骤S28)。
举例来说,当有指令#12读取暂存器r2以前已存在如表8的记录:
表8
在建立指令#8与指令#12之间的W-R相依关系后,于表8中登记指令#12为暂存器r2的读取指令而不需删除其它读取指令或写入指令,结果则如表4所示。
分析器31判别程序41是否还有其它指令(步骤S30)。如有,分析器31取得下一指令作为目前指令以进行上述各处理步骤(步骤S2);如无,分析器31输出分析结果(步骤S32)。
在顺序地取得上述程序中的每一指令作为目前指令以上述步骤处理后,分析器31可以产生一树状数据结构来表示程序41中的所有指令之间的相依关系,如图5所示。
图5的树状数据结构中,每一节点可以包含指令的编号、相依深度(以参数Dep表示)及其它信息。排序器32、指令移除器33及34可以利用此树状数据结构以进行冗余指令移除、冗余移动指令移除以及指令重新排序。
指令移除器33从程序41的输出指令开始利用反向回溯器35来回溯所有的上层指令,并记录所有被反向回溯的上层指令为一指令群组。若程序41中有一指令不属于上述指令群组时,则指令移除器33会自程序41中删除该指令。
参照图6以说明反向回溯器35的运作。反向回溯器35将程序41的输出指令#5及#6输入至一验证清单中(步骤S40),其中上述验证清单如表9所示:
表9
Figure C20071008951600181
在回溯次序0对应的已回溯指令中,反向回溯器35取指令#5为目前指令(步骤S42),并将该目前指令的所有未记录于上述验证清单中的上层指令(即指令#1及#3)记录于上述验证清单(步骤S44),其结果如表10:
表10
Figure C20071008951600182
在回溯次序1中,目前指令#5的上层指令#1及#3被记录于验证清单。反向回溯器35判别验证清单中目前指令之后是否还有指令(例如指令#6)(步骤S46)。如是,则反向回溯器35取得下一指令作为目前指令以重复上述步骤(步骤S42);如否,反向回溯器35输出验证清单中的已回溯指令至指令移除器33,作为上述指令群组(步骤S48)。下列表11列出反向回溯器35的各回溯次序及最后的结果:
表11
Figure C20071008951600183
Figure C20071008951600191
表11的各回溯次序中加底线的指令为该次序中的目前指令。程序41中有一指令#4不属于上述指令群组,被视为冗余指令,因此指令移除器33删除程序41中的指令#4,结果如下:
#0:texld r0,t0 s0
#1:mov r2 r0
#2:texld r1,t1 s1
#3:mad r3,r0 c0 r1
#5:mad oC0,r2 r3 c1
#6:mov 0C1,r3
其中指令#4已被删除。此结果的对应树状数据结构如图7所示。
参照图8,其是本发明另一实施例的流程图。指令移除器34根据记录指令类别的上述对应记录取得上述程序中的移动指令,例如指令#1(步骤S50),并判别该移动指令是否可以被移除(步骤S52)。
当移动指令具有上层指令及下层指令(例如指令#1的上层指令#0及下层指令#5),且与其上层指令及下层指令的相依关系皆属于W-R关系时,该移动指令可以被移除。该移动指令即使被移除也不会影响程序执行的正确性。在移动指令被删除时,指令移除器34修改上述移动指令的下层指令。明确而言,指令移除器34修改移动指令的下层指令中与该移动指令共用的运算元暂存器(例如指令#5的原读取暂存器r2)为上述移动指令的上层指令的结果暂存器(例如指令#0的写入暂存器r0)(步骤S54)。上述被修改的共用运算元暂存器同时也是被删除的上述移动指令的写入暂存器。在删除移动指令后,指令移除器34重新建立上述移动指令的下层指令与上层指令之间的相依关系。
指令移除器34删除上述移动指令(例如指令#1)(步骤S56),并判别程序41是否还有移动指令(步骤S58)。如否,则结束指令移除器34的操作;如是,则再取得另一移动指令以上述步骤处理。程序41由指令移除器34处理后的结果如下:
#0:texld r0,t0 s0
#2:texld r1,t1 s1
#3:mad r3,r0 c0 r1
#5:mad oC0,r0 r3 c1
#6:mov 0C1,r3
其中指令#1已被删除,且指令#5的原读取暂存器r2被暂存器r0取代。此结果的对应树状数据结构如图9所示。
上述的指令移除器33及34的执行顺序可以任意安排,而本发明除了利用指令移除器33及34删除不必要的指令外,排序器32可以处理经过指令移除器33及34之一或二者调整后的程序指令。排序器32根据上述程序中每一指令的相依深度以稳定排序法(stable sorting algorithm),例如合并排序法(merge sort)重新排列程序41中的所有指令。
为了显示排序前后的差异,仅将指令移除器33处理后的程序41输入排序器32。程序41由排序器32处理后的结果如下:
#0:texld r0,t0 s0
#2:texld r1,t1 s1
#1:mov r2 r0
#3:mad r3,r0 c0 r1
#5:mad oC0,r2 r3 c1
#6:mov 0C1,r3
其中指令#2的执行顺序已被调整至指令#1之前。由于指令#1与指令#2之间无数据相依关系,在处理器的管线中可以顺序执行,不需暂停处理指令#2。
排序器32、指令移除器33及34可以单独对程序41执行对应功能,并不影响程序的最后输出结果的正确性。因此,程序41被排序器32、指令移除器33及34中任何一者处理过后皆可以由计算机装置100执行。
总之,上述方法是根据执行特定操作的程序(例如着色程序)中的多个指令对暂存器的动作来分析指令之间的相依关系,再根据分析结果以减少该程序中冗余指令、调整其中的指令顺序,之后再将调整后的程序输入计算机装置,可以改善计算机装置执行上述特定操作的效率。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
附图中符号的简单说明如下:
1:处理器
2:显示卡
3:程序指令调整系统
4:储存装置
31:分析器
32:排序器
33:指令移除器
34:指令移除器
35:反向回溯器
N0-N6:节点
100:计算机装置

Claims (10)

1.一种程序指令调整方法,其特征在于,所述程序指令调整方法包含:
自一储存装置中取得即将由一计算机处理器执行的一程序;
取得该程序正检视中的一指令作为一目前指令,取得该目前指令所使用的一暂存器及该目前指令对该暂存器所执行的一第一动作;
在其他程序指令在上述第一动作以前亦对同一暂存器执行一第二动作的情况下,根据该目前指令与其他程序指令存取该暂存器的顺序建立该程序的指令间的一相依关系;
根据该相依关系计算程序中每一指令的相依深度;以及
根据该程序中每一指令的相依深度重新排列该程序中所有指令的执行顺序。
2.根据权利要求1所述的程序指令调整方法,其特征在于,更包括:
储存一对应记录以指示该目前指令的一指令类别,其中该指令类别包括开始指令、输出指令与移动指令,而输出指令是为输出该程序最后执行结果的指令。
3.根据权利要求1所述的程序指令调整方法,其特征在于,更包括:
一初始化程序,是取得上述目前指令的一初始相依深度;以及
将重新排列后的上述程序交付至该计算机处理器作进一步执行。
4.根据权利要求1所述的程序指令调整方法,其特征在于,计算程序中每一指令的相依深度方式包括:
以执行该第二动作的其他指令作为该目前指令的上层指令;
选取所述上层指令中相依深度最大者的相依深度值作一运算,以该运算的结果重新作为上述目前指令的相依深度,使上述目前指令与其上述上层指令的相依深度相差一预定差值;以及
根据上述程序中每一指令的相依深度以重新排列上述程序中的所有指令;
其中,是以一稳定排序法重新排列上述程序中的所有指令。
5.根据权利要求1所述的程序指令调整方法,其特征在于,当上述第二动作与第一动作分别为写入动作与读取动作时,将上述相依关系分类为先写后读关系,当上述第二动作与第一动作皆为写入动作时,将上述相依关系分类为先写后写关系,当上述第二与第一动作分别为读取动作与写入动作时,将上述相依关系分类为先读后写关系。
6.一种程序指令调整方法,其特征在于,所述程序指令调整方法包含:
自一储存装置中取得即将由一计算机处理器执行的一程序;
取得上述程序正检视中的一指令作为一目前指令;
当在上述目前指令对该暂存器执行一第一动作以前,亦有其他指令对同一暂存器执行一第二动作的情况下,建立其他指令与该目前指令之间的相依关系,其中,上述相依关系中所述其他指令是为目前指令的上层指令;
在顺序地取得程序中的每一指令作为上述目前指令并建立其相对应的相依关系后,开始顺序地反向回溯所有上层指令,并记录所有被反向回溯的上层指令为一指令群组;以及
若在上述程序中有一指令不属于上述指令群组时,自上述程序中删除该指令。
7.根据权利要求6所述的程序指令调整方法,其特征在于,更包含:
以一数据结构记录上述暂存器的读取指令及写入指令;
当上述第一动作为读取动作时,于上述数据结构中记录上述目前指令为上述暂存器的一第一读取指令,若于上述数据结构中记录上述目前指令为上述第一读取指令以前,上述数据结构中已存有其他指令为上述暂存器的写入指令时,则建立上述相依关系为先写后读关系;
当上述第一动作为写入动作时,于上述数据结构中记录上述目前指令为上述暂存器的一第一写入指令,若于上述数据结构中记录上述目前指令为上述第一写入指令以前,上述数据结构中已经储存其他指令为上述暂存器的写入指令,且无上述暂存器的读取指令时,建立上述相依关系为先写后写关系,且删除上述数据结构中的已储存指令;
若于上述数据结构中记录上述目前指令为第一写入指令以前,上述数据结构中已经储存上述暂存器的一个或一个以上的读取指令时,建立上述目前指令与上述一个或一个以上的读取指令的每一者之间的相依关系为先读后写关系,并删除上述数据结构中的上述一个或一个以上的读取指令;
若于上述数据结构中记录上述目前指令为第一写入指令以前,上述数据结构中已经储存上述暂存器的一个或一个以上的读取指令以及一第二写入指令时,删除上述第二写入指令;以及
将删除指令后的上述程序交付至该计算机处理器作进一步执行。
8.一种程序指令调整方法,其特征在于,所述程序指令调整方法包含:
自一储存装置中取得即将由一计算机处理器执行的一程序;
取得该程序的一指令作为一目前指令、以及该目前指令所使用的一暂存器;
在其他程序指令在该目前指令对该暂存器执行一第一动作以前亦对同一暂存器执行存取的情况下,根据该目前指令与其他程序指令存取该暂存器的顺序建立该程序的指令间的一相依关系;以及
根据该相依关系以移除上述程序中冗余的移动指令。
9.根据权利要求8所述的程序指令调整方法,其特征在于,更包含:
当上述程序中具有一第二指令在上述目前指令使用一暂存器以前使用同一暂存器,则根据上述第二指令对上述暂存器的第二动作及上述目前指令对上述暂存器的上述第一动作以建立上述第二指令及上述目前指令的相依关系,其中当上述第二动作与第一动作分别为写入动作与读取动作时,将上述相依关系分类为先写后读关系,上述相依关系中上述第二指令为上述目前指令的上层指令;
当上述目前指令为一移动指令,并具有一下层指令,且上述移动指令与其上层指令及下层指令的相依关系皆属于先写后读关系时,则修改上述移动指令的下层指令的相关运算元暂存器为上述移动指令的上层指令的结果暂存器,其中上述相关运算元暂存器相同于上述移动指令的写入暂存器;以及
删除上述程序中的上述移动指令。
10.根据权利要求8所述的程序指令调整方法,其特征在于,更包含:
若上述目前指令为移动指令,储存一对应记录以指示该目前指令为移动指令;
根据上述对应记录取得上述程序中该移动指令;以及
建立上述移动指令的下层指令与上层指令之间的相依关系。
CNB2007100895168A 2007-03-27 2007-03-27 程序指令调整方法 Active CN100451953C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007100895168A CN100451953C (zh) 2007-03-27 2007-03-27 程序指令调整方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007100895168A CN100451953C (zh) 2007-03-27 2007-03-27 程序指令调整方法

Publications (2)

Publication Number Publication Date
CN101021785A CN101021785A (zh) 2007-08-22
CN100451953C true CN100451953C (zh) 2009-01-14

Family

ID=38709560

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100895168A Active CN100451953C (zh) 2007-03-27 2007-03-27 程序指令调整方法

Country Status (1)

Country Link
CN (1) CN100451953C (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8332608B2 (en) * 2008-09-19 2012-12-11 Mediatek Inc. Method of enhancing command executing performance of disc drive

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020138714A1 (en) * 2001-03-22 2002-09-26 Sun Microsystems, Inc. Scoreboard for scheduling of instructions in a microprocessor that provides out of order execution
US20030200540A1 (en) * 2002-04-18 2003-10-23 Anoop Kumar Method and apparatus for integrated instruction scheduling and register allocation in a postoptimizer
CN1485735A (zh) * 2002-08-22 2004-03-31 ���µ�����ҵ��ʽ���� 指令调度方法、指令调度设备和指令调度程序
US20050034111A1 (en) * 2003-08-08 2005-02-10 International Business Machines Corporation Scheduling technique for software pipelining
US20060041736A1 (en) * 1992-03-31 2006-02-23 Transmeta Corporation Superscalar RISC instruction scheduling

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060041736A1 (en) * 1992-03-31 2006-02-23 Transmeta Corporation Superscalar RISC instruction scheduling
US20020138714A1 (en) * 2001-03-22 2002-09-26 Sun Microsystems, Inc. Scoreboard for scheduling of instructions in a microprocessor that provides out of order execution
US20030200540A1 (en) * 2002-04-18 2003-10-23 Anoop Kumar Method and apparatus for integrated instruction scheduling and register allocation in a postoptimizer
CN1485735A (zh) * 2002-08-22 2004-03-31 ���µ�����ҵ��ʽ���� 指令调度方法、指令调度设备和指令调度程序
US20050034111A1 (en) * 2003-08-08 2005-02-10 International Business Machines Corporation Scheduling technique for software pipelining

Also Published As

Publication number Publication date
CN101021785A (zh) 2007-08-22

Similar Documents

Publication Publication Date Title
CN102222071B (zh) 数据同步处理方法、设备及系统
US8819376B2 (en) Merging arrays using shiftable memory
US8082421B2 (en) Program instruction rearrangement methods in computer
US20080162591A1 (en) Method of Logging Transactions and a Method of Reversing a Transaction
Hendel et al. An improved earliness–tardiness timing algorithm
US20140280283A1 (en) Database System with Data Organization Providing Improved Bit Parallel Processing
Tipu et al. Applying neural networks to predict hpc-i/o bandwidth over seismic data on lustre file system for exseisdat
US7441099B2 (en) Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit
JP5108252B2 (ja) インデクス更新方法及びそのシステム
CN100451953C (zh) 程序指令调整方法
CA2492367C (en) Data processing system
JP3515810B2 (ja) ソート処理方法および装置
KR100725415B1 (ko) 데이터베이스의 로그병합 방법 및 장치
Huber Massive datasets workshop: Four years after
JP2013257803A (ja) ジョブ運用管理システム
JP2008210068A (ja) データ処理装置及びデータ処理方法及びプログラム
JP2567858B2 (ja) 図面管理方法及びその装置
CN109947721A (zh) 一种小文件处理方法和装置
Muller Statistics and computers in relation to large data bases
CN103106119A (zh) 程序自动生成装置和程序自动生成方法
JPH06230963A (ja) メモリアクセス制御装置
JP2006202125A (ja) 建設業向け会計処理方法および会計処理プログラム
JP3736053B2 (ja) データ項目の近似度分析装置及びその方法
Carter File maintenance using a line editor
JPS63291170A (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