在数据处理系统中对计算机指令执行排序的方法和装置制造方法及图纸

技术编号:2889787 阅读:251 留言:0更新日期:2012-04-11 18:40
一种在存储器(24)中定序计算机指令的方法和装置,通过经CPU(22)执行计算机指令并在存储器(24)中生成一个跟踪文件开始为中央处理单元(CPU)(22)提供多个指令的有效执行。使用大于2的窗口尺寸(即每个窗口选择大于两个指令或基本程序块/指令组)扫描跟踪文件并确定每个窗口中数对指令之间的相关性(图9和10)。然后分析(图11)通过窗口程序获得的相关性为任何目标CPU连续执行的计算机指令确定有效排序。(*该技术在2017年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及用于微处理器的编译程序和简化程序技术,特别是涉及对最佳数据处理器执行的指令排序。附图说明图1说明用于计算机程序的控制流程图。在图1的控制流程图中,有十个计算机指令或十个代码段(也称为计算机代码的基本程序块)在有向图中表示为节点″a″-″j″。图1的十个节点标为″a″至″j″并对应于计算机代码的十个不同基本程序块。在图1的控制流程图中,在计算机程序的执行路径中首先按时执行基本程序块a中的计算机指令。由于基本程序块″a″是从基本程序块″j″回到基本程序块″a″的反馈路径或循环径路的端点,基本程序块a可以包含,例如一个while型循环指令、一个for型循环指令、一个重复指令、一个do循环指令、或类似的循环结构,或基本程序块″j″可包含具有作为起始端的基本程序块″a″的目的地址的转移指令。执行完基本程序块″a″后,按序执行使得每当执行基本程序块″a″后执行基本程序块″b″,如图1的控制流程图所示。依据软件条件,执行基本程序块″b″之后,执行流程将分裂到两个方向之一。因此,基本程序块″b″包含一个“如果-则-否则”指令或一个包括向下转移到两个相异和不同执行流程路径的类似流程结构。如果在基本程序块″b″中检测到一个条件或限定集合,则执行基本程序块c。如果确定基本程序块″b″中存在另一个条件或限定集合,则执行基本程序块d。在任何一种情况下,如图1所示,每当执行完″b″之后执行″c″或″d″之一。基本程序块″c″和″d″以与如果-则-否则流程控制相似的方式汇合回到基本程序块″e″。换句话说,执行完″c″或″d″之一后,将执行基本程序块″e″中包含的代码。执行流程从图1的有向图中的基本程序块″e″或节点″e″继续,以便执行基本程序块″f″。图1的基本程序块″f″、″g″、″h″和″i″与上面讨论的基本程序块″b″、″c″、″d″和″e″的结构非常相似,并因此以相似或相同的执行流程方式执行这两组基本程序块。一旦作为如上所讨论的循环结束点的基本程序块″j″通过图1的节点确定不再需要进行循环,计算机程序的执行流程则从节点″j″经出口路径退出图1的结构。可分析图1计算机程序的执行流程以确定计算机基本程序块在存储器中的有效重排,以便以有效方式执行软件。为此,图2说明执行一执行跟踪程序以收集来自图1中图示说明的计算机程序执行的数据。该跟踪处理在存储器中生成一个跟踪数据文件。图2所示的跟踪数据文件记录图示说明的计算机程序按时间顺序的执行流程作为如图1中代码的基本程序块。跟踪数据按时间顺序方式存储程序块执行次序。在图2中使用空格(“”)以便将循环a-j的不同执行通路相互分开。因此,为生成图2中的跟踪文件,首先生成一个空跟踪数据文件并开始执行基本程序块a-j。在自基本程序块a至j的第一循环中按时间顺序的次序执行的基本程序块为abcefgij。因此,在第一循环中,图2左手侧记录的是采用图1中的b-c通路和采用图1中的f-g通路,从而形成按时间顺序的次序执行程序块abcefgij。基本程序块″j″将执行流程指回到基本程序块″a″,图2中的第二循环顺序为abcefgij。因此,经从基本程序块″j″到基本程序块″a″的循环按时间顺序连续将从左到右为abcefgij的同一指令顺序执行两次。该按时间顺序的执行流程被连续记录一个周期的时间并存储在跟踪数据文件中,以便以后的时间进一步分析。然后计算机通过分析图2的跟踪数据能够图解地模拟如图3所示的计算机软件。指出在首先执行包含程序块a-j的计算机程序以生成图2中的跟踪数据文件时,计算机不知道如图1所示软件的执行流程是很重要的。分析图2的跟踪文件以获得与图1包含相同信息的图3的执行流程结构。通过从左到右扫描图2中的跟踪数据并分析在时间上相互相邻的基本程序块对构成图3的有向图。最初,在算法开始时(在开始状态图3为空白)不出现数据结构。然后该算法采取图2中第一对基本程序块,即ab对。在图3中,生成节点″a″、生成节点″b″,并通过1的加权或计数生成从节点″a″到节点″b″的边缘″ab″。接着,存取图2的数据,接下来分析″bc″对。由于图3中已预先生成节点″b″,该计算机通过1的加权简单地生成一个节点″c″和从″b″到″c″的边缘″bc″。随着进一步遇到节点对,针对图2所示整个数据段继续节点和边缘的互连和/或生成以及节点之间的边缘加权的增加,以产生图3所示的完整数据结构。正如从对图3所示连接节点″a″和″b″的边缘″ab″以及连接节点″b″和″c″的边缘加权所了解的,如图3所示,图2中基本程序块b有九次跟在基本程序块a之后,而图2中基本程序块c仅有五次跟在基本程序块b之后。一旦从图2的跟踪文件生成图3的数据结构,可执行图4的流程图中说明的方法,以分析图3的数据结构,确定在存储器中排序基本程序块的有效方式,以便改善高速缓存性能,并使流水线充溢(pipelineflushing)最小,从而改善处理器性能。图5中说明基本程序块的有效输出次序(从图4的方法获得的输出文件)。为讨论图4现有技术的重构方法,参考图5,即图4方法的输出很重要。首先,通过准备顺序链信息或重排指令的基本程序块的初始化步骤开始图4的方法。在步骤102,选择图3中至此仍未被选择的具有最高出口路径/边缘值的节点。图3中,节点″a″、″e″和″i″与最高路径值的数值相配,图3中该路径/边缘值是9。图3中的最大边缘值是9。在该联系情况下,任意选择执行流程中的第一节点,这种情况下是节点a。然后将基本程序块a放置在如图5步骤1中说明的重构计算机文件中。通过将链的起始端设定到步骤102中确定的节点(在此情况下是节点″a″)而生成一个执行链(基本程序块的顺序表)。因此,步骤106将链的起始端设定到图3中的节点a。步骤108用来确定在图3中从节点″a″可到达节点a-j中的哪一个。从节点″a″仅可到达一个节点,该节点是图3中的节点b。因此,步骤108(第一循环中)产生一个唯一节点,即节点″b″。然后在步骤110分析节点″b″,由于最后执行的步骤108确定的节点集合仅包含节点″b″,在步骤110中选择节点″b″作为具有最高路径值的节点,然后将节点″b″插入如图5步骤2中说明的图5的重构计算机文件中。重构的计算机文件现在包含指令链或序列″ab″。然后步骤108确定从如图3所说明的节点″b″可到达节点″c″和″d″。步骤110分析″c″和″d″并确定节点″c″的路径值为5,节点″d″的路径值为4。因此,图4中的步骤108和110在程序块″b″之后将基本程序块″c″插入到图5的重构数据文件,图5的步骤3说明忽略节点″d″,并由于节点″d″不具有最高加权值,此刻不将其插入到图5的链中。从节点″c″继续,使用图4的算法在图5的步骤4插入基本程序块″e″(由图3中的节点″e″表示)。然后使用图4叙述的处理将步骤″f″插入图5的步骤5中。在图3的节点″h″和″g″之间,步骤108-110将确定从节点″f″起节点″h″具有比节点″g″更大的路径值,并在基本程序块″f″之后将基本程序块″h″插入到图5的步骤6中。通过图5的步骤7插入由节点″i″表示的代码,并通过图5的步骤8插入″j″。一旦节点″j″插入到步骤8中,由于已分析了节点″a″并在图5的步骤1中本文档来自技高网...

【技术保护点】
一种用于排序在数据处理系统中执行的计算机指令的方法,该方法特征在于包括步骤:(a)在存储器内提供包含基本程序块的计算机程序,其中每个基本程序块至少包含一条计算机指令以及该计算机程序包含许多计算机指令;(b)通过从存储器中读取计算机指 令执行计算机程序和经中央处理单元(CPU)执行许多计算机指令;(c)在执行步骤期间,在存储器中存储表示基本程序块执行次序的跟踪数据文件,执行次序表明何时按时相对于其它基本程序块执行任何基本程序块,该执行次序具有开始端和结束端;(d) 从跟踪数据文件选择一系列M个基本程序块形成一个所选的组,M是大于2的有限正整数;(e)在存储器中针对所选的组从跟踪数据文件累积与M个基本程序块顺序有关的相关信息;(f)按所选组选择M个基本程序块的不同顺序;(g)重复步骤(e)至 (g)直到处理跟踪数据文件中M个基本程序块的所选数量的顺序;和(h)使用经步骤(e)至(g)获得的相关信息以使基本程序块按顺序执行。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:小毛里西奥布雷特尼兹罗杰A史密斯
申请(专利权)人:摩托罗拉公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利