CN1485735A - 指令调度方法、指令调度设备和指令调度程序 - Google Patents
指令调度方法、指令调度设备和指令调度程序 Download PDFInfo
- Publication number
- CN1485735A CN1485735A CNA031546544A CN03154654A CN1485735A CN 1485735 A CN1485735 A CN 1485735A CN A031546544 A CNA031546544 A CN A031546544A CN 03154654 A CN03154654 A CN 03154654A CN 1485735 A CN1485735 A CN 1485735A
- Authority
- CN
- China
- Prior art keywords
- instruction
- constraint
- unit
- regularly
- instructions
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
相关性分析单元建立相关图,表示从汇编程序代码生成单元处得到的指令之间的相关性。优先约束等级计算单元把预定的权重赋给该图上的弧线,然后把权重相加以计算每个指令的优先约束等级。当具有相关性和相等的优先约束等级的前趋部分和后继部分由于资源约束条件而不能并行处理时,资源约束评估单元提升该前趋部分的优先约束等级。优先级计算单元把提升后的优先约束等级设置为该前趋部分的优先级。指令选择单元选择具有最高优先级的指令。执行定时决定单元把所选指令放置在时钟周期中。由指令选择单元进行的选择和由执行定时决定单元进行的放置被重复进行,直到所有指令被放置在时钟周期中为止。
Description
本专利申请是基于在日本提交的专利申请No.2002-241877,该专利申请的内容在此引用,以供参考。
技术领域
本发明涉及一种指令调度方法和一种指令调度设备。本发明尤其涉及考虑到用于处理指令的硬件资源的约束条件时调度指令的技术。
背景技术
通常,指令调度设备被装备在用于并行处理器的编译器设备中。指令调度设备决定已编译程序中包含的多个指令的每个指令的适当执行定时,以及按照所决定的执行定时对这些指令排序,由此生成对于并行处理最佳化的目标程序。
一种传统类型的指令调度设备通过使用被称为列表调度的方法顺序地决定各个指令的适当的执行定时。列表调度如下地进行。对于输入程序中的每个指令,仅仅基于指令之间的相关性来计算其优先级,该优先级表示按照指令的执行定时被决定的次序的、该指令的位置。此后,从执行定时还没有被决定的指令中选择具有最高优先级的指令,并决定所选指令的执行定时。所述选择和决定被重复进行,直到所有指令的执行定时被决定为止。
在本说明书中,所述传统技术中使用的优先级,即仅仅基于指令之间的相关性的优先级,被称为“优先约束等级(precedence constraintrank)”,以便区分于本发明特定的优先级。
相关性是要被同一个硬件资源处理的指令之间的关系。传统上,相关性被分类为以下三种类型:数据相关性,其中由输入程序中先前的指令(前趋部分(predecessor))规定的资源被该输入程序随后的指令(后继部分(successor))引用;反相关性,其中前趋部分所引用的资源由后继部分规定;以及输出相关性,其中前趋部分所规定的资源由后继部分进一步规定。
如果具有这样的相关性的指令的执行次序被打乱,则程序的执行结果可能以错误告终。所以,指令调度设备决定指令的执行定时,以便保持具有相关性的指令的执行次序。
图14是显示由以上传统的指令调度设备执行的示例性指令调度过程的流程图。这个过程具有三个主要步骤:相关图建立步骤S910;优先级计算步骤S920;以及执行定时决定步骤S930。
(相关图建立步骤S910)
首先,传统的指令调度设备建立相关图,该图显示输入程序中所包括的指令之间的相关性。相关图是一个定向非循环图。该图具有相应于输入程序中的各个指令的节点;它还具有弧线,每条弧线连接具有相关性的、相应于前趋部分和后面部分的两个节点。
图15显示输入到传统的指令调度设备的示例性程序。
图16显示由传统的指令调度设备对图15所示的输入程序建立的相关图。
(优先级计算步骤S920)
然后传统的指令调度设备计算每个指令的优先约束等级。例如,如果所述指令没有后继部分与其有相关性,则该指令的优先约束等级等于1。如果该指令有一个或多个后继部分与其有反相关性或输出相关性、但没有数据相关性,则该指令的优先约束等级等于这些后继部分的优先约束等级中的最高优先约束等级。如果该指令有一个或多个后继部分与其有数据相关性,则该指令的优先约束等级等于这些后继部分的优先约束等级中的最高优先约束等级与1的和值。
更详细地,每个指令的优先约束等级按以下的方式进行计算。首先,把权重1、0、和0分别赋给相关图上代表数据相关性、反相关性和输出相关性的弧线。随后,通过找出赋给沿着从该节点到终端节点的路径上的弧线的权重的和,并将该和加上1来计算每个节点的优先约束等级。如果从该节点到终端节点有多条路径,则把对于多条路径计算的多个数值中的最大的数值设置为该节点的优先约束等级。
在图16显示的相关图上,赋给弧线的权重以及为这些节点计算出的优先约束等级紧邻着相应的弧线和节点被显示。
一个节点的优先约束等级表示执行相应于该节点的指令以及随后的指令所需要的时间周期的下限,在具有数据相关性、反相关性、和输出相关性的指令之间的等待时间分别被设置为1、0、和0。从具有最高优先约束等级的节点开始的路径被称为关键路径。期望通过尽可能早地执行该关键路径的开始指令,而可以缩短全部指令的执行时间周期。
(执行定时决定步骤S930)
为了保持具有相关性的指令的执行次序,传统的指令调度设备对于满足以下条件(a)和(b)之一的指令作出执行定时决定。
(a)该指令没有与其有相关性的前趋部分。
(b)该指令具有一个或多个与其有相关性的前趋部分,但所有这些前趋部分的执行定时已被决定。
传统的指令调度设备对于每个指令作出判定:该指令是否满足条件(a)和(b)之一。然后传统的指令调度设备在满足条件(a)和(b)之一的指令中间选择具有最高优先约束等级的指令(它最初是关键路径的开始指令),并决定所选指令的执行定时。这个过程被重复进行,直至所有指令的执行定时被决定为止。
这里,指令的执行定时被决定为一个时钟周期,在该时钟周期内该指令应当被执行。所以在本说明书中,决定指令的执行定时也被称为把指令放置在时钟周期中。另外,满足以上的条件(a)和(b)之一的指令被称为“可放置指令”。
传统的指令调度设备把所选指令放置在满足以下的条件(1)和(2)的时钟周期中。
(1)该时钟周期等同于或者迟于与该指令有反相关性或输出相关性的前趋部分所位于的时钟周期,以及迟于与该指令有数据相关性的前趋部分所位于的时钟周期。
(2)该时钟周期是其中硬件资源可处理指令的、最早的时钟周期。
因此,当尚有许多可以放置指令的时钟周期时,传统的指令调度设备可能在放置其他指令之前把关键路径的开始指令放置在最早的时钟周期。这样,传统的指令调度设备把所有的指令放置在尽可能少的时钟周期中,而不影响程序的执行结果。
图17显示:当目标处理器具有能够在一个时钟周期中并行处理两个指令的指令译码器、能够在一个时钟周期中并行处理两个指令的算术单元、和能够在一个时钟周期中处理一个指令的存储器接入单元时,图15所示的程序的指令如何被放置在时钟周期中。在图上,时钟周期域901用相关的数字显示时钟周期。指令1域902和指令2域903各自显示被放置在该时钟周期中的指令、以及按照时钟周期内放置指令的次序(即,按照指令的执行定时被决定的次序)的、该指令的位置。
这里,指令F和G将要由在一个时钟周期中只能处理一个指令的存储器接入单元进行处理,所以,它们不能在同一个时钟周期中被处理。因此,指令F和G被放置在分开的时钟周期4和5中。这就是说,只有指令F被放置在时钟周期4中。
传统的编译器设备按时钟周期次序对这样放置的指令排序,并把显示时钟周期边界的边界信息附加到每个时钟周期的最后的指令。因此,得到对于并行处理最佳化的目标程序。这里,所述边界信息被表示为例如1比特的标记信息。所述目标处理器在分开的时钟周期中执行具有边界信息的指令和下一个指令。
在图17所示的例子中,指令A到G以图15所示的次序被输出,边界信息被附加到指令A、C、E、F和G。
期望由目标处理器执行这样一个对于并行处理最佳化的目标程序,该目标程序相比于没有对于并行处理进行最佳化的程序来说,需要更少的时钟周期。
然而,按照以上的传统技术,存在这样的情况:指令没有被放入尽可能少的时钟周期内。换句话说,传统的技术无法对于并行处理的程序充分地最佳化。
取图15所示的程序作为一个例子。假设在第二决定中指令E被选择并放入时钟周期2中。这允许指令F和G被分别放置在时钟周期3和4中,以及指令B、C和D被分别放置在时钟周期2、3和4中。结果,指令A到G可被放置在四个时钟周期中(见图5)。
然而,按照传统的技术,指令被选择的次序是仅仅基于指令之间的相关性被计算的优先约束等级。因此,没有可能在第二决定中选择指令E。所以,不可能按以上的方式使得程序充分最佳化。
发明内容
鉴于以上的问题,本发明的目的是提供一种指令调度方法和指令调度设备,它们使得指令能够被放置在比传统技术更少的时钟周期中。
所述目的可以通过一种包括以下步骤的指令调度方法达到:优先级计算步骤,该步骤根据经受调度的多个指令之间的相关性与用于处理该多个指令的硬件资源的约束条件,来计算该多个指令中每个指令的优先级,所述相关性是数据相关性、反相关性、和输出相关性;以及执行定时决定步骤,该步骤用于决定具有最高优先级的指令的执行定时。
按照这个方法,指令是按照基于硬件资源的约束条件而计算的优先级被选择并放置在时钟周期中的。这允许具有严格的资源约束条件的指令被放置在较早的时钟周期中。所以,包括这样一个指令在内的多个指令可被放置在比传统技术更少的时钟周期中。
这里,上述优先级计算步骤可包括:优先约束等级计算子步骤,该步骤用于计算所述多个指令中每个指令的优先约束等级,其中(a)如果所述指令具有一个后继指令,它是反相关于或是输出相关于该指令,则该指令的优先约束等级等于该后继指令的优先约束等级,以及(b)如果所述指令具有一个后继指令,它是数据相关于该指令,则该指令的优先约束等级高于该后继指令的优先约束等级;以及资源约束条件评估子步骤,该步骤用于判断(i)所述指令是否具有相关于该指令的后继指令,(ii)该指令和该后继指令是否具有相等的优先约束等级,以及(iii)用于处理该指令的硬件资源是否不能并行处理该指令和该后继指令;以及优先级计算步骤,该步骤用于:当所有的判断(i)、(ii)和(iii)都为肯定时,提升所述指令的优先约束等级并把该提升后的优先约束等级设置为该指令的优先级,而当任一个判断(i)、(ii)和(iii)是否定时,则把该指令的优先约束等级设置为该指令的优先级。
按照这个方法,当具有相关性和相等的优先约束等级的前趋部分和后继部分不能由目标处理器中的硬件资源并行处理时,前趋部分的优先级被设置为高于前趋部分的优先约束等级。这使得有可能找出由资源约束条件生成的新的关键路径,这是传统的技术还未注意到的。这个关键路径的开始指令被放置在可能的、最早的时钟周期中。因此,包括由于资源限制条件而不能被并行处理的指令在内的多个指令可被放置在比传统技术更少的时钟周期中。
这里,所述优先级计算步骤可包括:优先约束等级计算子步骤,该步骤用于计算所述多个指令中每个指令的优先约束等级,其中(a)如果所述指令不具有相关于该指令的后继指令,则该指令的优先约束等级为1,(b)如果所述指令具有一个或多个后继指令,它们反相关于或输出相关于该指令,则该指令的优先约束等级为这些后继指令的优先约束等级中的最高优先约束等级,以及(c)如果所述指令具有一个或多个后继指令,它们数据相关于该指令,则该指令的优先约束等级为这些后继指令的优先约束等级中的最高优先约束等级与1的和;以及资源约束条件评估子步骤,该步骤通过把用于处理指令的硬件资源将要处理且其执行定时还没有被决定的指令的总数,除以可被该硬件资源并行处理的指令的最大数目,从而计算该指令的资源约束数值;以及当上述资源约束数值大于所述优先约束等级时,该优先级计算步骤把该资源约束数值设置为该指令的优先级,而当资源约束数值不大于优先约束等级时,该步骤则把该优先约束等级设置为该指令的优先级。
按照这个方法,资源约束数值和优先约束等级中较高的一个被设置为每个指令的优先级。这允许具有严格的资源约束条件的指令被放置在比传统技术更早的时钟周期中。所以,包括这样一个指令在内的多个指令可被放置在比传统技术更少的时钟周期中。
特别是当有许多未放置的指令要由只能并行处理小量指令的硬件资源处理,并且在这些指令之间不存在相关性时,对于这样的指令计算高的资源约束数值。这产生了将这样的指令适当地放置在较早的时钟周期的特殊效果。
所述目的也可通过一种顺序地决定要经受调度的指令的执行定时的指令调度方法被达到,该方法包括:决定判断步骤,该步骤用于在第一指令的执行定时被决定后,根据用于处理第二指令的硬件资源的约束条件来判断该第二指令的执行定时是否可被决定,以便使其处在预定的时间周期内;以及重新决定步骤,当上述判断为否定时,该步骤撤回该第一指令的执行定时的决定,并且决定一个不同于该第一指令的指令的执行定时。
这里,预定的时间周期可以由多个时钟周期表示,其中所述决定判断步骤包括:资源约束条件评估子步骤,该步骤通过把所述硬件资源将要处理且其执行定时还没有被决定的指令的总数,除以可被该硬件资源并行处理的指令的最大数目,从而计算所述第二指令的资源约束数值;以及决定判断步骤,当该资源约束数值大于时钟周期数目时,该步骤判断为否定。
按照这些方法,在考虑资源约束条件时判断所有指令是否都能够放置在预定数目的时钟周期内。如果该判断为否定的,则撤回紧接在前面的放置,并把另一个指令放置在时钟周期中。当与只考虑指令之间的相关性而作出相同判断的情况相比较时,这有助于以更大的机会将包括严格的资源约束的指令在内的指令放入期望数目的时钟周期中。
所述目的也可以通过一种程序转换方法达到,其特征在于:输入程序被转换成包括多个指令的目标程序,而该目标程序内所述多个指令中每个指令的执行定时使用权利要求1到5的任一项的指令调度方法决定。
按照这个方法,一种具有上述效果的指令调度方法被应用到一中间程序,通过它便有可能产生一个对于并行处理更高地最佳化的目标程序。
所述目的也可以通过一种指令调度设备被达到,该设备包括:优先级计算单元,它能用来根据经受调度的多个指令之间的相关性与用于处理该多个指令的硬件资源的约束条件,计算该多个指令中每个指令的优先级,所述相关性是数据相关性、反相关性、和输出相关性;以及执行定时决定单元,它能用来决定具有最高优先级的指令的执行定时。
所述目的也可通过一种用于顺序地决定要经受调度的指令的执行定时的指令调度设备被达到,该设备包括:决定判断单元,它能用来在第一指令的执行定时被决定后,根据用于处理第二指令的硬件资源的约束条件,判断该第二指令的执行定时是否可被决定,以便使其处在预定的时间周期内;以及重新决定单元,当上述判断为否定时,该单元用来撤回该第一指令的执行定时的决定,并决定一个不同于该第一指令的指令的执行定时。
按照这些构建,可以实现一种具有上述效果的指令调度设备。
所述目的也可以通过用于指令调度的计算机可执行程序被达到,该程序使得计算机执行:优先级计算步骤,该步骤根据经受调度的多个指令之间的相关性与用于处理该多个指令的硬件资源的约束条件,计算多个指令的每个指令的优先级,所述相关性是数据相关性、反相关性、和输出相关性;以及执行定时决定步骤,该步骤决定具有最高优先级的指令的执行定时。
所述目的也可通过用于顺序地决定要经受调度的指令的执行定时的计算机可执行程序被达到,该程序使得计算机执行:决定判断步骤,该步骤用来在第一指令的执行定时被决定后,根据用于处理第二指令的硬件资源的约束条件,判断该第二指令的执行定时是否可被决定,以便使其处在预定的时间周期内;以及重新决定步骤,当上述判断为否定时,该步骤用来撤回该第一指令的执行定时的决定,并决定一个不同于该第一指令的指令的执行定时。
按照这些程序,可以在计算机上达到具有上述效果的指令调度处理。
所述目的也可以通过存储有权利要求9和10的任一程序的计算机可读的贮存媒体被达到。
按照这种贮存媒体,具有上述效果的程序可被分布到想要的计算机,然后它们就可以执行该程序。
附图说明
当结合附图(其上说明了本发明的具体实施例)阅读以下的描述时,本发明的这些和其他目的、优点和特性将更加明显。
在图上:
图1是显示本发明第一实施例涉及到的编译器设备的总体结构的功能方框图;
图2显示由图1所示的编译器设备作为目标的处理器的示例性结构;
图3是显示第一实施例中的指令调度程序过程的流程图;
图4显示由图1所示的相关性分析单元建立的示例性相关图;
图5显示把指令放置在时钟周期中的例子;
图6是显示本发明第二实施例中的指令调度过程的流程图;
图7和8显示示例性指令放置处理;
图9是显示本发明第三实施例涉及到的编译器设备的总体结构的功能方框图;
图10是显示第三实施例中的指令调度程序过程的流程图;
图11和12显示示例性指令放置处理;
图13显示把指令放置在时钟周期中的例子;
图14是显示由传统的设备执行的指令调度程序过程的流程图;
图15显示输入到传统的设备的示例性程序;
图16显示由图15所示的传统的设备对于输入程序建立的相关图;以及
图17显示由传统的设备把指令放置在时钟周期中的例子。
具体实施方式
第一实施例
本发明第一实施例的指令调度设备接收经受调度的多个指令的输入,根据指令之间的相关性以及硬件资源的约束条件来计算每个指令的优先级,并按照计算的优先级来选择和放置指令。
更详细地,对于具有后继部分而该后继部分有相同优先约束等级的每个指令,所述指令调度设备判断该指令和该后继部分是否可被目标处理器的硬件资源并行处理。如果该判断是否定的,则该指令调度设备提升该指令的优先约束等级,并把提升后的优先约束等级设为该指令的优先级。对于其他的每个指令,该指令调度设备把该指令的优先约束等级设为该指令的优先级。在这样地计算每个指令的优先级后,该指令调度设备选择一个未放置的、具有最高的优先级的指令,并把所选指令放置在一个时钟周期中。这个选择和放置被重复进行,直到所有的指令被放置在时钟周期中为止。
这种指令调度设备具有以下的特性。当前趋部分和后继部分具有相同的优先约束等级,但由于硬件资源的约束条件而不能被并行处理时,该指令调度设备将前趋部分的优先级设置为高于仅仅是基于指令之间的相关性的优先约束等级。这使得有可能找出由资源约束条件生成的新的关键路径,这是传统技术所没有注意到的。
所述指令调度设备把这样的关键路径的开始指令放置在可能的、最早的时钟周期中。这样,包括由于资源约束条件而不能被并行处理的指令在内的多个指令可被放置在比传统技术更少的时钟周期中。
(总体结构)
图1是显示第一实施例所涉及到的编译器设备100的总体结构的功能性方框图。编译器设备100包括第一实施例的指令调度设备作为指令调度单元130。
编译器设备100从源文件101获取源程序,并编译该源程序。然后编译器设备100从该被编译的程序生成对于并行处理最佳化的目标程序,并把该目标程序输出到目标文件102。
编译器设备100包括上部编译器单元110、汇编程序代码生成单元120、指令调度单元130和输出单元170。指令调度单元130包括相关性分析单元140、优先级计算单元150和执行定时决定单元160。优先级计算单元150包括优先约束等级计算单元151和资源约束评估单元152。执行定时决定单元160包括指令选择单元161。
实际上编译器设备100通过软件和硬件实现,其中硬件包括处理器、存储程序的ROM(只读存储器)、工作的RAM(随机存取存储器)和盘装置。编译器设备100的各个部件的功能是通过处理器执行存储在ROM中的程序而达到的。在各个部件之间的数据传递是通过诸如RAM和盘装置的硬件而实行的。
上部编译器单元110从源文件101读取源程序,并执行词法分析和语义分析,生成中间代码串。
汇编程序代码生成单元120从由上部编译器单元110生成的中间代码串生成汇编程序代码串。
指令调度单元130根据汇编程序代码串中包括的每个指令与另一个指令的相关性以及处理所述指令的硬件资源的约束条件来计算每个指令的优先级。此后,指令调度单元130在未放置的指令中选择具有最高优先级的指令,并把所选指令放置在一个时钟周期中。所述选择和放置被重复进行,直到所有的指令被放置在时钟周期中为止。指令调度单元130将在后面更详细地进行解释。
输出单元170以时钟周期的次序输出指令和在背景技术的描述中提到的边界信息。
下面解释由编译器设备100作为目标的处理器的结构以及指令调度单元130的详细结构。
(目标处理器)
图2是显示由编译器设备100作为目标的处理器800的示例性结构的功能性方框图。这个图打算提供与本发明有关的、硬件资源的约束条件的具体例子,所以仅仅以简化的形式说明有关的部分。
处理器800大致上由指令供给单元810、译码单元820和执行单元830组成。
指令供给单元810包括指令获取单元811、第一指令寄存器812和第二指令寄存器813。指令获取单元811通过IA(指令地址)总线和ID(指令数据)总线从外部存储器(图上未示出)获取指令。第一指令寄存器812和第二指令寄存器813保存获取的指令。在一个时钟周期中,从第一指令寄存器812和第二指令寄存器813并行地提供两个指令到译码单元820。
译码单元820包括第一指令译码器821和第二指令译码器822。第一指令译码器821和第二指令译码器822在一个时钟周期中并行地译码两个指令,并把显示译码结果的控制信号提供到执行单元830。
执行单元830按照从译码单元820提供的控制信号运行。执行单元830包括第一算术单元831、第二算术单元832、寄存器文件833、条件标记寄存器834和存储器存取单元835。第一算术单元831和第二算术单元832各自通过专用总线被连接到寄存器文件833,并被连接到条件标记寄存器834。第一算术单元831和第二算术单元832在一个时钟周期中并行地执行涉及到两个指令的两个运算。存储器存取单元835通过OA(操作数地址)总线和0D(操作数数据)总线在一个时钟周期中执行一个涉及到一个指令的存储器存取。
借助以上结构,当这些指令要被算术单元处理时,处理器800能够在一个时钟周期中最多处理两个指令,而当这些指令要被存储器存取单元处理时,则处理器800在一个时钟周期中最多处理一个指令。这些是处理器800中的硬件资源的约束条件。
(指令调度单元130)
下面参照流程图详细地说明第一实施例中的指令调度单元130。
图3是显示第一实施例中的指令调度程序过程的流程图。
(步骤S101)相关性分析单元140以与传统的技术相同的方式建立相关图,它给出了由汇编程序代码生成单元120生成的汇编程序代码串中所包含的指令之间的相关性。
(步骤S102)优先约束等级计算单元151以与传统的技术相同的方式分别把权重1、0、和0赋给相关性分析单元140所建立的相关图中代表数据相关性、反相关性、和输出相关性的弧线。
(步骤S103)步骤S104到S106对于具有权重0的每个弧线重复进行(循环1)。
(步骤S104)资源约束评估单元152判断硬件资源是否能并行处理相应于由弧线连接的两个节点的两个指令,即具有相同的优先约束等级的两个指令。如果该判断为否定,则所述程序过程进到步骤S105。
(步骤S105)资源约束评估单元152把所述弧线的权重改变为1。
(步骤S106)所述程序过程返回到步骤S103。
(步骤S107)在循环1结束后,优先级计算单元150对于相关图上的每个节点计算沿着从该节点到终端节点路径上的那些弧线的权重的和。然后优先级计算单元150将该和加上1,由此计算出相应于该节点的指令的优先级。这里,连接两个具有相同的优先约束等级、但由于资源约束条件而不能被并行处理的指令的每个弧线的权重已在步骤S105被改变。因此,如果所述路径包括这样的弧线,则计算出的该指令的优先级高于该指令的优先约束等级。
(步骤S108)只要有未放置的指令,步骤S109到S111就重复进行。
(步骤S109)指令选择单元161在未放置的指令中选择具有最高优先级的指令。
(步骤S110)执行定时决定单元160把所选指令放置在满足以下的两个条件(1)和(2)的时钟周期中。
(1)该时钟周期等同于或迟于与该所选指令有反相关性或输出相关性的前趋部分所位于的时钟周期,并且迟于与该所选指令有数据相关性的前趋部分所位于的时钟周期。
(2)该时钟周期是其中硬件资源可处理指令的、最早的时钟周期。
(步骤S111)所述程序过程返回到步骤S108。
(具体的例子)
图4显示由相关性分析单元140建立的、用于图15所示程序的相关图。在该相关图上,括号中的每个数值表示由优先约束等级计算单元151赋给弧线的权重。
具有权重0的每条弧线所连接的一对指令,诸如指令E和F以及指令F和G,是要被所述存储器存取单元处理的指令。因此,资源约束评估单元152判断:该对指令不能在一个时钟周期中并行处理,并且把弧线的权重改变为1。这个改变在图4上被表示为“(0→1)”。
此后,优先级计算单元150把权重相加,以计算优先级。在图4上,在每个节点旁边显示的数值就是这样计算出的优先级。例如,指令A的优先级是4,它是通过把1加到沿着路径A-E-F-G的弧线的权重的和值而被计算出的。
图5显示按照在图4所示的相关图上计算出的优先级而被放置在时钟周期中的指令A到G。其中符号是与图17的符号相同的。由于指令E的优先级是3,在第二决定中,指令E被放置在时钟周期2中。结果,指令A到G被放置在四个时钟周期中,它们比图17的情形少一个时钟。
(结论)
如上所述,当前趋部分和后继部分具有相同优先约束等级的相关性、但不能由目标处理器中的硬件资源并行处理时,第一实施例的指令调度设备把前趋部分的优先级设置为高于前趋部分的优先约束等级。
这使得有可能找出由资源约束条件生成的新的关键路径,这是传统的技术没有注意到的。所述指令调度设备把该关键路径的开始的指令放置在可能的、最早的时钟周期中。这样,包括由于资源限制条件而不能被并行处理的指令在内的多个指令可被放置在比传统技术更少的时钟周期中。
第二实施例
本发明第二实施例的指令调度设备接收经受调度的多个指令的输入,并计算每个指令的优先约束等级。此后,该指令调度设备对于每个可放置指令来计算资源约束数值。该资源约束数值是通过把用于处理所述指令的硬件资源将要处理的、未放置的指令的总数,除以可被该硬件资源并行处理的指令的最大数目而被获得的。该指令调度设备把优先约束等级和资源约束数值中较高的值设置为该指令的优先级。然后该指令调度设备选择具有最高优先级的指令,并把所选指令放置在时钟周期中。这个过程被重复进行,直到所有的指令被放置在时钟周期中为止。
这里,资源约束数值表示执行所有要被该硬件资源处理的、未放置的指令所需要的时间周期的下限。
第二实施例的指令调度设备与第一实施例的指令调度设备的不同点在于:计算资源约束数值,并且每次将一个指令放置在时钟周期中时都计算优先级。
以下的说明主要集中在与第一实施例的这个差别上,而省略与第一
实施例相同的特性。
(总体结构)
第二实施例涉及到的编译器设备具有与第一实施例中的编译器设备100(见图1)相同的总体结构,不同点仅仅在于,其中作为指令调度单元130被包括的是第二实施例的指令调度设备,而不是第一实施例的指令调度设备。因此,由第二实施例中的指令调度单元130执行的指令调度程序过程是与第一实施例不同的。
(指令调度单元130)
下面参照流程图详细地描述第二实施例中的指令调度单元130。
图6是显示第二实施例中的指令调度程序过程的流程图。
(步骤S201)相关性分析单元140建立相关图,它表示由汇编程序代码生成单元120所生成的汇编程序代码串中的指令之间的相关性。
(步骤S202)优先约束等级计算单元151分别把权重1、0和0赋给相关性分析单元140所建立的相关图中代表数据相关性、反相关性、和输出相关性的弧线。然后,优先约束等级计算单元151把权重相加以计算优先约束等级。
(步骤S203)只要有未放置的指令,就重复进行步骤S204到S213(循环3)。
(步骤S204)指令调度单元130生成可放置指令的列表。可放置指令是满足以下条件(a)和(b)之一的指令。
(a)该指令没有与其有相关性的前趋部分。
(b)该指令具有与其有相关性的一个或多个前趋部分,但所有这些前趋部分已被放置在时钟周期中。
(步骤S205)对于所述列表中的每个指令重复进行步骤S206到S210(循环4)。
(步骤S206)资源约束评估单元152计算对于该指令的资源约束数值。该资源约束数值是通过把用于处理指令的硬件资源将要处理的、未放置的指令的总数除以可被该硬件资源并行处理的指令的最大数目而获得的。
(步骤S207)如果指令的资源约束数值大于指令的优先约束等级,则所述程序过程进到步骤S208。否则,所述程序过程进到步骤S209。
(步骤S208)资源约束评估单元152将所述资源约束数值设置为该指令的优先级。
(步骤S209)资源约束评估单元152将所述优先约束等级设置为该指令的优先级。
(步骤S210)所述程序过程返回到步骤S205。
(步骤S211)指令选择单元161在未放置的指令中选择具有最高优先级的指令。
(步骤S212)执行定时决定单元160把所选指令放置在满足以下的两个条件(1)和(2)的时钟周期中。
(1)该时钟周期等同于或迟于与该所选指令有反相关性或输出相关性的前趋部分所位于的时钟周期,并且迟于与该所选指令有数据相关性的前趋部分所位于的时钟周期。
(2)该时钟周期是其中硬件资源可处理指令的、最早的时钟周期。
(步骤S213)所述程序过程返回到步骤S203。
(具体的例子)
再次取图15所示的程序作为例子。相关性分析单元140建立与图16所示的传统的相关图等同的相关图。优先约束等级计算单元151以与传统的技术相同的方式从相关图计算优先约束等级。
图7和8显示由指令调度单元130放置指令A到G的每个指令的处理。
在图上,指令域301用字母符号显示指令。资源域302在所述指令将要被存储器存取单元处理时显示M,以及在所述指令要被算术单元处理时显示A。优先约束等级域303显示所述指令的优先约束等级。
以指令A到G的执行定时被决定的次序,第一到第七决定域310到370中每个决定域都显示:放置状态、资源约束数值、和该指令的优先级。当所述指令是尚未放置的并且是不可放置时,放置状态区显示“未放置的”。当所述指令是尚未放置的并且是可放置时,放置状态区显示“可放置的”。当所述指令已被放置时,放置状态区显示其中放置有该指令的时钟周期的周期号。
放置结果域380显示其中指令A到G最终被放置的时钟周期的周期号。
以下详细地解释每个决定。
(第一决定)由于没有与其有相关性的前趋部分的指令A是在这个阶段唯一的可放置指令,故指令调度单元130生成可放置指令列表{A}。
资源约束评估单元152计算指令A的资源约束数值。指令A是将要被存储器存取单元处理的指令。在这个阶段,有四个将要被存储器存取单元处理的未放置的指令,即:指令A、E、F、和G。资源约束评估单元152把这个数4除以1(它是存储器存取单元可并行处理的指令的最大数目)。资源约束评估单元152把结果4设置为指令A的资源约束数值。
指令A的这个资源约束数值大于指令A的优先约束等级。因此,指令A的优先级被设置为4。
指令选择单元161选择指令A。执行定时决定单元160把指令A放置在时钟周期1中。
(第二决定)一旦指令A已被放置,指令B,C和E就成为可放置的。因此,指令调度单元130生成可放置指令列表{B,C,E}。
资源约束评估单元152计算指令B的资源约束数值。指令B是将要被算术单元处理的指令。在这个阶段,有三个将要被算术单元处理的未放置的指令,即:指令B、C、和D。资源约束评估单元152把这个数3除以2(它是算术单元可并行处理的指令的最大数目)。资源约束评估单元152把该结果1.5设置为指令B的资源约束数值。
由于指令B的这个资源约束数值并不大于指令B的优先约束等级,故指令B的优先级被设置为2。
资源约束评估单元152以与指令B相同的方式计算出指令C的优先级为2。
资源约束评估单元152还计算指令E的资源约束数值。指令E是将要被存储器存取单元处理的指令。在这个阶段,有三个将要被存储器存取单元处理的未放置的指令,即:指令E、F、和G。资源约束评估单元152把这个数3除以1(它是存储器存取单元可并行处理的指令的最大数目)。资源约束评估单元152把该结果3设置为指令E的资源约束数值。
由于指令E的这个资源约束数值大于指令E的优先约束等级,因此,指令E的优先级被设置为3。
指令选择单元161选择具有最高优先级的指令E。执行定时决定单元160把指令E放置在时钟周期2中,时钟周期2是其中放置有指令A的时钟周期1之后的最早的时钟周期。
(第三决定)一旦指令A和E已被放置,具有指令A和E作为其前趋部分的指令B,C和F就成为可放置的。因此,指令调度单元130生成可放置指令列表{B,C,F}。
资源约束评估单元152以与第二决定中相同的方式计算出指令B和C各自的优先级为2。
资源约束评估单元152还计算出指令F的资源约束数值为2。由于指令F的这个资源约束数值并不大于指令F的优先约束等级,因此指令F的优先级被设置为2。
由于指令B,C和F具有相同的优先级,所以指令选择单元161按照在该原始程序中指令A到G被描述的次序选择指令B。执行定时决定单元160把指令B放置在其中放置指令A的时钟周期1之后的、最早的时钟周期中。指令B可以在目标处理器中与被放置在时钟周期2中的指令E并行地被执行,而并没有超过在目标处理器中每个部件可并行处理的指令的最大数目。所以,执行定时决定单元160把指令B放置在时钟周期2中。
(第四决定)其余的决定将更概略地进行解释。指令调度单元130生成可放置指令列表{C,F}。资源约束评估单元152分别计算出指令C和F的资源约束数值为1和2。优先级计算单元150把指令C和F的优先级都设置为2。
指令选择单元161按照该原始程序的描述次序选择指令C。执行定时决定单元160把指令C放置在时钟周期3中。
(第五决定)指令调度单元130生成可放置指令列表{D,F}。资源约束评估单元152分别计算出指令D和F的资源约束数值为0.5和2。优先级计算单元150把指令D和F的优先级分别设置为1和2。
指令选择单元161选择指令F。执行定时决定单元160把指令F放置在时钟周期3中。
(第六决定)指令调度单元130生成可放置指令列表{D,G}。资源约束评估单元152分别计算出指令D和G的资源约束数值为0.5和1。优先级计算单元150把指令D和G的优先级都设置为1。
指令选择单元161按照该原始程序的描述次序选择指令D。执行定时决定单元160把指令D放置在时钟周期4中。
(第七决定)指令调度单元130生成可放置指令列表{G}。优先级计算单元150把指令G的优先级设置为1。
指令选择单元161选择指令G。执行定时决定单元160把指令G放置在时钟周期4中。
结果,指令A到G以与第一实施例中相同的方式被放置在时钟周期中(见图5)。
(结论)
如上所述,对于每个可放置指令,第二实施例的指令调度单元都把资源约束数值和优先约束等级中较大的一个值设置为优先级。然后该指令调度单元选择具有最高优先级的指令,并把所选指令放置在时钟周期中。这个程序过程重复进行,直到所有的指令被放置在时钟周期中为止。
因此,一个具有严格的资源约束条件的指令被放置在比传统技术更早的时钟周期中。这使得有可能把包括这样的严格资源约束的指令在内的多个指令放置在比传统技术更少的时钟周期中。
具体地,第二实施例的指令调度设备具有以下的效果。假设有许多未放置的指令将要被只能并行处理小量指令的硬件资源处理,在这些指令之间没有相关性。既然如此,对于这些指令便计算出高资源约束数值。这产生了将这样的指令适当地放入较早的时钟周期的特殊效果。而第一实施例的指令调度设备只在所述指令具有与另一个指令的相关性时才按照资源约束条件提升该指令的优先级,因此没有这样的特殊效果。
第三实施例
本发明第三实施例的指令调度设备接收经受调度的多个指令的输入,并计算每个指令的优先约束等级。此后,该指令调度设备重复进行以下的程序过程,以致于把这些指令放入期望数目的时钟周期中。
该指令调度设备从可放置指令中选择具有最高优先约束等级的指令,并把所选指令放置在时钟周期中。然后该指令调度设备对于每个可放置指令计算其中可放置指令的、剩余时钟周期的数目和该指令的资源约束数值。该指令调度设备比较该剩余时钟周期的数目和该资源约束数值,从而判断所有指令是否可被放入期望数目的时钟周期中。
如果上述判断为否定的,则该指令调度设备撤回紧接在前面的指令的放置,并从该可放置指令中去除该指令。然后该指令调度设备把可放置指令中的一个指令放置在时钟周期中。
因此,第三实施例的指令调度设备与第二实施例的指令调度设备的不同点在于:资源约束数值被用来判断所有指令是否可被放置在期望数目的时钟周期中,以及如果该判断为否定的,则撤回紧接在前面的放置,以及放置另一个指令。
以下的说明主要集中在与第二实施例的这个差别上,而省略与第二
实施例相同的特性。
(总体结构)
图9是显示第三实施例涉及到的编译器设备400的总体结构的功能方框图。编译器设备400包括第三实施例的指令调度设备作为指令调度单元430。
像编译器设备100那样,编译器设备400从被保存在源文件101中的源程序生成对于并行处理最佳化的目标程序,并把该目标程序输出到目标文件102。
在图9所示的编译器设备400中,与图1所示的第一实施例中的编译器设备100的部件相同的那些部件被给予相同的参考数字。
编译器设备400包括上部编译器单元110、汇编程序代码生成单元120、指令调度单元430和输出单元170。指令调度单元130包括相关性分析单元140、优先约束等级计算单元151和执行定时决定单元460。执行定时决定单元460包括指令选择单元161、决定判断单元462和重新决定控制单元464。决定判断单元462包括资源约束评估单元152。
实际上编译器设备400通过软件和硬件实现,其中硬件包括处理器、存储程序的ROM(只读存储器)、工作的RAM(随机存取存储器)和盘装置。编译器设备400的各个部件的功能是通过处理器执行存储在ROM中的程序而达到的。在各个部件之间的数据传递是通过硬件,诸如RAM和盘装置而实行的。
上部编译器单元110、汇编程序代码生成单元120和输出单元170是与第一实施例的那些单元相同的,所以这里省略对它们的说明。下面说明指令调度单元430。
(指令调度单元430)
下面参照流程图详细地描述第三实施例中的指令调度单元430。
图10是显示第三实施例中的指令调度程序过程的流程图。
(步骤S401)相关性分析单元140建立相关图,它表示由汇编程序代码生成单元120生成的汇编程序代码串中所包含的指令之间的相关性。
(步骤S402)优先约束等级计算单元151分别把权重1、0和0赋给相关性分析单元140所建立的相关图中代表数据相关性、反相关性、和输出相关性的弧线。然后优先约束等级计算单元151把权重相加以计算优先约束等级。
(步骤S403)只要有未放置的指令,就重复进行步骤S404到S414(循环5)。
(步骤S404)指令调度单元430生成可放置指令的列表。可放置指令是满足以下条件(a)和(b)之一的指令。
(a)该指令没有与其有相关性的前趋部分。
(b)该指令具有与其有相关性的一个或多个前趋部分,但所有这些前趋部分已被放置在时钟周期中。
(步骤S405)指令选择单元161从所述列表中选择具有最高优先约束等级的指令。执行定时决定单元460把所选指令放置在满足以下的两个条件(1)和(2)的时钟周期中。
(1)该时钟周期等同于或迟于与该所选指令有反相关性或输出相关性的前趋部分所位于的时钟周期,并且迟于与该所选指令有数据相关性的前趋部分所位于的时钟周期。
(2)该时钟周期是其中硬件资源可处理指令的、最早的时钟周期。
(步骤S406)指令调度单元430从所述列表中去除该指令。
(步骤S407)对于每个可放置的指令,包括由于步骤S405的结果而成为可放置的指令,重复进行步骤S408到S413(循环6)。
(步骤S408)资源约束评估单元152计算所述指令的资源约束数值。该资源约束数值是通过把处理指令的硬件资源将要处理的、未放置的指令的数目除以可被该硬件资源并行处理的指令的最大数目而获得的。
决定判断单元462计算其中可放置指令的、剩余时钟周期的数目。这个计算是通过使用目标处理器内处理任何指令都共同需要的资源(例如,指令译码器)在一个时钟周期中能够并行处理的指令的最大数目(此后称为“公共最大数目”)而被完成的。在图2所示的处理器800的情况下,公共最大数目是2。
剩余时钟周期的数目是通过在期望数目的时钟周期中统计每个满足以下两个条件(i)和(ii)的时钟周期而获得的。
(i)该时钟周期等同于或迟于与该所选指令有反相关性或输出相关性的前趋部分所位于的时钟周期,并且迟于与该所选指令有数据相关性的前趋部分所位于的时钟周期。
(11)该时钟周期已放置的指令的数目小于公共最大数目。
(步骤S409)如果资源约束数值大于剩余时钟周期的数目,则所述程序过程进到步骤S410。否则,所述程序过程进到步骤S413。
(步骤S410)如果所述列表是空的,则所述程序过程进到步骤S412。否则,所述程序过程进到步骤S411。
(步骤S411)重新决定控制单元464撤回在步骤S405作出的放置。此后,所述程序过程返回到步骤S405来放置另一个指令。
(步骤S412)指令调度单元430判断不可能把所有的指令放置在期望数目的时钟周期中,并终结所述程序过程。
(步骤S413)所述程序过程返回到步骤S407。
(步骤S414)所述程序过程返回到步骤S403。
(具体的例子)
再次取图15所示的程序作为例子,期望数目的时钟周期被设置为4。相关性分析单元140建立与图16所示的传统的相关图相同的相关图。优先约束等级计算单元151从该相关图计算优先约束等级。
图11和12显示由指令调度单元430放置A到G的每个指令的程序过程。
在图上,指令域501用字母符号显示指令。资源域502在所述指令将要被存储器存取单元处理时显示M,以及在所述指令将要被算术单元处理时显示A。优先约束等级域503显示所述指令的优先约束等级。
第一到第七决定域510到580,每个决定域以指令A到G的执行定时所决定的次序来显示放置状态、剩余时钟周期的数目、和该指令的资源约束数值。放置状态区具有三个状态。当所述指令是尚未放置的并且是不可放置时,放置状态区显示“未放置的”。当所述指令是尚未放置的并且是可放置时,放置状态区显示“可放置的”。当所述指令已被放置时,放置状态区显示其中放置有该指令的时钟周期的周期号。此外,放置状态区在括号中显示其中新放置了一个可放置指令的时钟周期的周期号。
放置结果域590显示其中指令A到G最终被放置的时钟周期的周期号。
以下详细解释每个决定。
(第一决定)由于没有与其有相关性的前趋部分的指令A是在这个阶段的唯一可放置指令,故指令调度单元430生成可放置指令列表{A}。指令选择单元161选择指令A。执行定时决定单元460把指令A放置在时钟周期1中。指令调度单元430从所述列表中去除指令A。
一旦指令A已被放置,三个指令B、C和E就成为可放置的。指令B和C将要被算术单元处理,而指令E将要被存储器存取单元处理。在这个阶段,有三个将要被算术单元处理的未放置的指令,即:指令B、C、和D。同时,有三个将要被存储器存取单元处理的未放置的指令,即:指令E、F、和G。
资源约束评估单元152通过把3(它是要被算术单元处理的未放置的指令的数目)除以2(它是算术单元可并行处理的指令的最大数目)从而计算指令B的资源约束数值为1.5。
另外,决定判断单元462计算出对于指令B的剩余时钟周期的数目为3,这是因为有三个时钟周期2、3、和4是迟于其中放置有与指令B有数据相关性的指令A的时钟周期1的,并且该每个时钟周期中具有的已放置指令的数目小于公共最大数目。
同样地,资源约束评估单元152计算出指令C的资源约束数值为1.5,而决定判断单元462计算出指令C的剩余时钟周期的数目为3。
另外,资源约束评估单元152通过把3(它是要被存储器存取单元处理的未放置的指令的数目)除以1(它是存储器存取单元可并行处理的指令的最大数目)从而计算指令E的资源约束数值为3。
决定判断单元462计算出对于指令E的剩余时钟周期的数目为3,这是因为有三个时钟周期2、3、和4是迟于其中放置有与指令E有数据相关性的指令A的时钟周期1的,并且该每个时钟周期中具有的已放置指令的数目小于公共最大数目。
由于对于指令B、C和E来说,每个指令的资源约束数值并不大于其剩余时钟周期的数目,所以处理过程进到第二决定。
(第二决定)在第二决定中,指令B被放置在时钟周期2中。此后,再次对于可放置指令C和E来计算每个指令的资源约束数值和剩余时钟周期的数目。由于对于指令C和E来说,每个指令的资源约束数值并不大于其剩余时钟周期的数目,所以处理过程进到第三决定。
(第三决定)由于其前趋部分都已被放置的指令C和E都是可放置指令,故指令调度单元130生成可放置指令列表{C,E}。指令选择单元161选择指令C。执行定时决定单元460把指令C放置在时钟周期2中。指令调度单元430从所述列表中去除指令C。
一旦指令C已被放置,就有两个可放置指令D和E。指令D将要被算术单元处理,而指令E将要被存储器存取单元处理。在这个阶段,只有一个将要被算术单元处理的未放置的指令,即:指令D。同时,有三个将要被存储器存取单元处理的未放置的指令,即:指令E、F、和G。
资源约束评估单元152通过把1(它是要被算术单元处理的未放置的指令的数目)除以2(它是算术单元可并行处理的指令的最大数目)从而计算出指令D的资源约束数值为0.5。
决定判断单元462计算出指令D的剩余时钟周期的数目为2,这是因为有两个时钟周期3和4是迟于其中放置有与指令D有数据相关性的指令C的时钟周期2的,并且每个时钟周期中已放置指令的数目小于公共最大数目。
另外,资源约束评估单元152通过把3(它是要被存储器存取单元处理的未放置的指令的数目)除以1(它是存储器存取单元可并行处理的指令的最大数目)从而计算出指令E的资源约束数值为3。
决定判断单元462计算出指令E的剩余时钟周期的数目为2,这是因为有两个时钟周期3和4是迟于其中放置有与指令E有数据相关性的指令A的时钟周期1的,并且每个时钟周期中已放置指令的数目小于公共最大数目。
由于指令E的资源约束数值大于指令E的剩余时钟周期的数目,所以重新决定控制单元464撤回指令C的放置,以及放置另一个指令。
(第三决定-重试)在第三决定的重试中,可放置的指令列表是{E}。因此,指令E被选择并且被放置在时钟周期2中。
一旦指令E已被放置,就有两个可放置指令,即指令F和被撤回放置的指令C。指令C将要被算术单元处理,而指令F将要被存储器存取单元处理。在这个阶段,有两个将要被算术单元处理的未放置的指令,即:指令C和D。同时,有两个将要被存储器存取单元处理的未放置的指令,即:指令F和G。
资源约束评估单元152计算出指令C的资源约束数值为1。决定判断单元462计算出指令C的剩余时钟周期的数目为2。
另外,资源约束评估单元152计算出指令F的资源约束数值为2。决定判断单元462计算出指令F的剩余时钟周期的数目为2。
由于对于每个指令C和F来说,每个指令的资源约束数值并不大于其剩余时钟周期的数目,所以处理过程进到第四决定。
(第四到第七决定)如图12所示,在第四到第七决定中没有出现重试。
图13显示作为以上处理的结果而被放置的指令A到G。如所说明的,所有的指令A到G被成功地放置在4个时钟周期内。
在第三实施例中,这些指令以与第一和第二实施例中相同的方式被放置在时钟周期中,虽然决定的次序是部分不同的(见图5)。
(结论)
如上所述,第三实施例的指令调度设备尝试把指令放置在期望数目的时钟周期内。该指令调度设备按照优先约束等级放置指令。每次在放置一个指令时,该指令调度设备考虑到资源约束条件,判断所有指令是否都能被放入期望数目的时钟周期中。如果上述判断是否定的,则该指令调度设备撤回紧接在前面的放置,以及放置另一个指令。
因此,该指令调度设备考虑到资源约束条件,判断所有指令是否都能放入期望数目的时钟周期中。按照这个判断的结果,该指令调度设备控制放置的重试。当与只考虑指令之间的相关性而作出相同判断的情况相比较时,这有助于存在更大的机会将包括严格的资源约束的指令在内的指令放入期望数目的时钟周期中。
修正
本发明是通过以上的实施例被描述的,然而应当明白:本发明并不局限于以上的内容。下面给出示例的修正方案。
(1)包括以上实施例中所描述步骤在内的本发明的方法可以通过由计算机***执行的计算机程序来实现。这样的计算机程序可以作为数字信号被分布。
本发明也可以用其上记录有上述计算机程序或数字信号的计算机可读的贮存媒体来实现,诸如软盘、硬盘、CD-ROM、MO(磁-光)盘、DVD(数字多用途盘)、DVD-ROM、DVD-RAM、或半导体存储器。
实现本发明的计算机程序或数字信号也可通过网络被传输,诸如电子通信网、有线或无线通信网、或互联网。
本发明也可通过包括微处理器和存储器的计算机***被实现。在这种情形下,所述计算机程序可被存储在该存储器中,而该微处理器则按照这个计算机程序运行以便实现本发明。
所述计算机程序或数字信号可以通过分布其上记录有该计算机程序或数字信号的贮存媒体、或通过在网络上发送该计算机程序或数字信号而被提供给独立的计算机***。然后该独立的计算机***可执行该计算机程序或数字信号以便起到本发明的作用。
(2)在以上实施例中使用的示例性程序(图15)可以是在对于并行处理最佳化之前从源程序编译的整个程序,或是这样的程序的基本块。
(3)第三实施例描述了这种情况:当可放置指令列表中一个指令的放置在步骤S411被撤回时,所述程序过程返回到步骤S405,把另一个指令放置在可放置指令列表。如果在可放置指令列表中每个指令的放置都失败,则在步骤S412判断:这些指令不能被放入期望数目的时钟周期内。
这可被修正为如下。过去在步骤S404生成的可放置指令列表被保留。如果当前可放置指令列表中每个指令的放置都失败,不是立即判断这些指令不能被放入期望数目的时钟周期内,而是撤回过去的可放置指令列表中一个指令的放置,以及放入该过去的可放置指令列表中的另一个指令。
这可以按照传统上所使用的后向跟踪算法容易地实行。
虽然上面参照附图通过例子充分地描述了本发明,但应当指出,各种改变和修正对于本领域技术人员将是很明显的。
所以,除非这样的改变和修正脱离本发明的范围,否则它们应当被视为包括在本发明的范围内。
Claims (11)
1.一种指令调度方法,包括:
优先级计算步骤,该步骤根据经受调度的多个指令之间的相关性与用于处理该多个指令的硬件资源的约束条件,计算该多个指令中每个指令的优先级,所述相关性是数据相关性、反相关性、和输出相关性;以及
执行定时决定步骤,该步骤决定具有最高优先级的指令的执行定时。
2.权利要求1的指令调度方法,
其中该优先级计算步骤包括:
优先约束等级计算子步骤,该步骤计算所述多个指令中每个指令的优先约束等级,其中(a)如果所述指令具有一个后继指令是反相关于或输出相关于该指令,则该指令的优先约束等级等于该后继指令的优先约束等级,以及(b)如果所述指令具有一个后继指令是数据相关于该指令,则该指令的优先约束等级高于该后继指令的优先约束等级;以及
资源约束条件评估子步骤,该步骤判断(i)所述指令是否具有相关于该指令的后继指令,(ii)该指令和该后继指令是否具有相等的优先约束等级,以及(iii)用于处理该指令的硬件资源是否不能并行处理该指令和该后继指令,以及
优先级计算步骤,该步骤用于:如果所有的判断(i)、(ii)和(iii)都为肯定,则提升所述指令的优先约束等级并把该提升后的优先约束等级设置为该指令的优先级,而如果任一个判断(i)、(ii)和(iii)为否定,则把该指令的优先约束等级设置为该指令的优先级。
3.权利要求1的指令调度方法,
其中该优先级计算步骤包括:
优先约束等级计算子步骤,该步骤计算所述多个指令中每个指令的优先约束等级,其中(a)如果所述指令不具有相关于该指令的后继指令,则该指令的优先约束等级为1,(b)如果所述指令具有一个或多个后继指令是反相关于或输出相关于该指令,则该指令的优先约束等级为这些后继指令的优先约束等级中的最高优先约束等级,以及(c)如果所述指令具有一个或多个后继指令是数据相关于该指令,则该指令的优先约束等级为这些后继指令的优先约束等级中的最高优先约束等级与1的和;以及
资源约束条件评估子步骤,该步骤通过把用于处理指令的硬件资源将要处理且其执行定时还没有被决定的指令的总数,除以可被该硬件资源并行处理的指令的最大数目,从而计算该指令的资源约束数值,以及
如果上述资源约束数值大于所述优先约束等级,则该优先级计算步骤把该资源约束数值设置为该指令的优先级,而如果该资源约束数值不大于该优先约束等级,则该步骤把该优先约束等级设置为该指令的优先级。
4.一种用于顺序地决定经受调度的指令的执行定时的指令调度方法,包括:
决定判断步骤,该步骤在第一指令的执行定时被决定后,根据用于处理第二指令的硬件资源的约束条件,来判断该第二指令的执行定时是否可被决定,以便使其处在预定的时间周期内;以及
重新决定步骤,当上述判断为否定时,该步骤撤回该第一指令的执行定时的决定,以及决定一个不同于该第一指令的指令的执行定时。
5.权利要求4的指令调度方法,
其中所述预定的时间周期由多个时钟周期表示,
所述决定判断步骤包括:
资源约束条件评估子步骤,该步骤通过把所述硬件资源将要处理且其执行定时还没有被决定的指令的总数,除以可被该硬件资源并行处理的指令的最大数目,从而计算该第二指令的资源约束数值,以及
决定判断步骤,如果所述资源约束数值大于时钟周期数目,则该步骤判断为否定。
6.一种程序转换方法,其特征在于:
输入程序被转换成包括多个指令的目标程序,而该目标程序内所述多个指令中的每个指令的执行定时使用权利要求1到5的任一项的指令调度方法被决定。
7.一种指令调度设备,包括:
优先级计算单元,该单元能用来根据经受调度的多个指令之间的相关性与用于处理该多个指令的硬件资源的约束条件,来计算该多个指令中每个指令的优先级,所述相关性是数据相关性、反相关性、和输出相关性;以及
执行定时决定单元,该单元能用来决定具有最高优先级的指令的执行定时。
8.一种用于顺序地决定经受调度的指令的执行定时的指令调度设备,包括:
决定判断单元,该单元用来在第一指令的执行定时被决定后,根据用于处理第二指令的硬件资源的约束条件,判断该第二指令的执行定时是否可被决定,以便使其处在预定的时间周期内;以及
重新决定单元,当上述判断为否定时,该单元能用来撤回该第一指令的执行定时的决定,以及决定一个不同于该第一指令的指令的执行定时。
9.一种用于指令调度的计算机可执行程序,该程序使得计算机执行:
优先级计算步骤,该步骤根据经受调度的多个指令之间的相关性与用于处理该多个指令的硬件资源的约束条件,而计算该多个指令中每个指令的优先级,所述相关性是数据相关性、反相关性、和输出相关性;以及
执行定时决定步骤,该步骤决定具有最高优先级的指令的执行定时。
10.一种用于顺序地决定经受调度的指令的执行定时的计算机可执行程序,该程序使得计算机执行:
决定判断步骤,该步骤用来在第一指令的执行定时被决定后,根据用于处理第二指令的硬件资源的约束条件,来判断该第二指令的执行定时是否可被决定,以便使其处在预定的时间周期内;以及
重新决定步骤,当上述判断为否定时,该步骤撤回该第一指令的执行定时的决定,以及决定一个不同于该第一指令的指令的执行定时。
11.一种存储权利要求9和10之一的程序的计算机可读的贮存媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP241877/02 | 2002-08-22 | ||
JP241877/2002 | 2002-08-22 | ||
JP2002241877A JP4196614B2 (ja) | 2002-08-22 | 2002-08-22 | 命令スケジューリング方法、命令スケジューリング装置、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1485735A true CN1485735A (zh) | 2004-03-31 |
CN1253790C CN1253790C (zh) | 2006-04-26 |
Family
ID=32024230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN03154654.4A Expired - Fee Related CN1253790C (zh) | 2002-08-22 | 2003-08-22 | 指令调度方法和指令调度设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20040083468A1 (zh) |
JP (1) | JP4196614B2 (zh) |
CN (1) | CN1253790C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100451953C (zh) * | 2007-03-27 | 2009-01-14 | 威盛电子股份有限公司 | 程序指令调整方法 |
CN101189580B (zh) * | 2005-06-03 | 2010-05-19 | Nxp股份有限公司 | 对至少一个独占资源的使用进行调度的数据处理***和方法 |
CN101472258B (zh) * | 2007-12-28 | 2010-07-14 | ***通信集团公司 | 业务运营支撑***调度归属位置寄存器指令的方法及装置 |
CN102063288A (zh) * | 2011-01-07 | 2011-05-18 | 四川九洲电器集团有限责任公司 | 一种面向dsp芯片的指令调度方法 |
CN110377340A (zh) * | 2019-07-24 | 2019-10-25 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN111104169A (zh) * | 2017-12-29 | 2020-05-05 | 上海寒武纪信息科技有限公司 | 指令列表调度方法、装置、计算机设备及存储介质 |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7257807B2 (en) * | 2003-09-22 | 2007-08-14 | Lsi Corporation | Method for optimizing execution time of parallel processor programs |
US8612957B2 (en) * | 2006-01-26 | 2013-12-17 | Intel Corporation | Scheduling multithreaded programming instructions based on dependency graph |
US8527971B2 (en) | 2006-03-30 | 2013-09-03 | Atostek Oy | Parallel program generation method |
JP2008059279A (ja) * | 2006-08-31 | 2008-03-13 | Internatl Business Mach Corp <Ibm> | 文字列出力処理を最適化する技術 |
US8037466B2 (en) | 2006-12-29 | 2011-10-11 | Intel Corporation | Method and apparatus for merging critical sections |
JP4327864B2 (ja) * | 2007-03-23 | 2009-09-09 | 株式会社東芝 | 録画予約処理装置および録画予約処理方法ならびに録画装置 |
US8484651B2 (en) * | 2007-05-04 | 2013-07-09 | Avaya Inc. | Distributed priority queue that maintains item locality |
US7882335B2 (en) * | 2008-02-19 | 2011-02-01 | International Business Machines Corporation | System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline |
US20090210669A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Prioritizing Floating-Point Instructions |
US20090210672A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Resolving Issue Conflicts of Load Instructions |
US7865700B2 (en) * | 2008-02-19 | 2011-01-04 | International Business Machines Corporation | System and method for prioritizing store instructions |
US7870368B2 (en) * | 2008-02-19 | 2011-01-11 | International Business Machines Corporation | System and method for prioritizing branch instructions |
US7984270B2 (en) * | 2008-02-19 | 2011-07-19 | International Business Machines Corporation | System and method for prioritizing arithmetic instructions |
US8108654B2 (en) * | 2008-02-19 | 2012-01-31 | International Business Machines Corporation | System and method for a group priority issue schema for a cascaded pipeline |
US7996654B2 (en) * | 2008-02-19 | 2011-08-09 | International Business Machines Corporation | System and method for optimization within a group priority issue schema for a cascaded pipeline |
US7877579B2 (en) * | 2008-02-19 | 2011-01-25 | International Business Machines Corporation | System and method for prioritizing compare instructions |
US20090210677A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Optimization Within a Group Priority Issue Schema for a Cascaded Pipeline |
US8095779B2 (en) * | 2008-02-19 | 2012-01-10 | International Business Machines Corporation | System and method for optimization within a group priority issue schema for a cascaded pipeline |
US20090210666A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Resolving Issue Conflicts of Load Instructions |
US8387001B2 (en) * | 2008-04-17 | 2013-02-26 | Infosys Technologies Limited | Method for finding an impact on a computer generated code |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
KR101731752B1 (ko) | 2010-06-18 | 2017-04-28 | 보드 오브 리전츠 더 유니버시티 오브 텍사스 시스템 | 결합된 분기 타깃 및 프레디킷 예측 |
US9003383B2 (en) * | 2011-09-15 | 2015-04-07 | You Know Solutions, LLC | Analytic engine to parallelize serial code |
KR101254911B1 (ko) | 2012-01-31 | 2013-04-18 | 서울대학교산학협력단 | 다중 경로를 통해 데이터 입출력을 수행하기 위한 방법, 시스템 및 컴퓨터 판독 가능 기록 매체 |
US9215597B2 (en) * | 2012-03-16 | 2015-12-15 | Alcatel Lucent | Method of coordinating concurrent sector optimizations in a wireless communication system |
KR102204282B1 (ko) * | 2013-11-25 | 2021-01-18 | 삼성전자주식회사 | 다수의 기능 유닛을 가지는 프로세서를 위한 루프 스케쥴링 방법 |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US10936316B2 (en) | 2015-09-19 | 2021-03-02 | Microsoft Technology Licensing, Llc | Dense read encoding for dataflow ISA |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
EP3343351B1 (en) * | 2016-12-28 | 2023-04-26 | Waseda University | Parallel program generating method and parallelization compiling apparatus |
CN108198124B (zh) * | 2017-12-27 | 2023-04-25 | 上海联影医疗科技股份有限公司 | 医学图像处理方法、装置、计算机设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0816871B2 (ja) * | 1990-12-07 | 1996-02-21 | 富士ゼロックス株式会社 | プログラム翻訳装置およびプログラム翻訳方法 |
US6718541B2 (en) * | 1999-02-17 | 2004-04-06 | Elbrus International Limited | Register economy heuristic for a cycle driven multiple issue instruction scheduler |
-
2002
- 2002-08-22 JP JP2002241877A patent/JP4196614B2/ja not_active Expired - Fee Related
-
2003
- 2003-08-22 CN CN03154654.4A patent/CN1253790C/zh not_active Expired - Fee Related
- 2003-08-22 US US10/645,871 patent/US20040083468A1/en not_active Abandoned
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101189580B (zh) * | 2005-06-03 | 2010-05-19 | Nxp股份有限公司 | 对至少一个独占资源的使用进行调度的数据处理***和方法 |
CN100451953C (zh) * | 2007-03-27 | 2009-01-14 | 威盛电子股份有限公司 | 程序指令调整方法 |
CN101472258B (zh) * | 2007-12-28 | 2010-07-14 | ***通信集团公司 | 业务运营支撑***调度归属位置寄存器指令的方法及装置 |
CN102063288A (zh) * | 2011-01-07 | 2011-05-18 | 四川九洲电器集团有限责任公司 | 一种面向dsp芯片的指令调度方法 |
CN111104169A (zh) * | 2017-12-29 | 2020-05-05 | 上海寒武纪信息科技有限公司 | 指令列表调度方法、装置、计算机设备及存储介质 |
CN110377340A (zh) * | 2019-07-24 | 2019-10-25 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN1253790C (zh) | 2006-04-26 |
JP4196614B2 (ja) | 2008-12-17 |
US20040083468A1 (en) | 2004-04-29 |
JP2004078824A (ja) | 2004-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1253790C (zh) | 指令调度方法和指令调度设备 | |
CN1153155C (zh) | 装有高效利用主处理器中的寄存器数据的协处理器的信息处理装置 | |
CN1120425C (zh) | 存储器控制器和存储器控制方法 | |
CN1202470C (zh) | 处理器 | |
CN1647082A (zh) | 集成电路的开发方法和存储了集成电路的开发方法的程序存储媒体、以及asic和可编程逻辑器件同时开发***、开发程序和开发方法 | |
CN1517869A (zh) | 处理器、运算处理方法和优先度决定方法 | |
CN1734438A (zh) | 信息处理设备、信息处理方法和程序 | |
CN1498367A (zh) | 信息处理装置、存储器管理装置、存储器管理方法及信息处理方法 | |
CN1097226C (zh) | 编译程序器 | |
CN1558348A (zh) | 将基于模式的分级数据结构转换成平面数据结构的方法以及*** | |
CN1855306A (zh) | 非易失性半导体存储器及其控制方法 | |
CN1795434A (zh) | 程序执行控制设备,程序执行控制方法,控制程序和记录介质 | |
CN1991798A (zh) | 半导体存储装置 | |
CN1801183A (zh) | 信息处理装置和方法以及程序 | |
CN1873625A (zh) | 一种基于功能覆盖率的随机激励的自动产生方法 | |
CN1758222A (zh) | 程序处理装置 | |
CN1885431A (zh) | 半导体存储设备及用于该半导体存储设备的控制方法 | |
CN101065725A (zh) | 命令供给装置 | |
CN1776621A (zh) | 程序变换方法 | |
CN1728093A (zh) | 生成比特块传输函数的交叉平台运行时间代码 | |
CN1624698A (zh) | 高阶合成方法和高阶合成装置 | |
CN101055566A (zh) | 一种电子数据表的函数收集方法和装置 | |
CN1194295C (zh) | 程序变换装置及程序变换方法 | |
CN101046867A (zh) | 工作流决定方法以及工作流决定*** | |
CN1690956A (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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20151117 Address after: Kanagawa Patentee after: Co., Ltd. Suo Si future Address before: Japan Osaka kamato City Patentee before: Matsushita Electric Industrial Co., Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060426 Termination date: 20150822 |
|
EXPY | Termination of patent right or utility model |