CN101373427B - 程序执行控制装置 - Google Patents
程序执行控制装置 Download PDFInfo
- Publication number
- CN101373427B CN101373427B CN200810210003.2A CN200810210003A CN101373427B CN 101373427 B CN101373427 B CN 101373427B CN 200810210003 A CN200810210003 A CN 200810210003A CN 101373427 B CN101373427 B CN 101373427B
- Authority
- CN
- China
- Prior art keywords
- instruction
- branch instruction
- branch
- last
- control device
- 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
Links
- 230000008859 change Effects 0.000 claims abstract description 27
- 238000012545 processing Methods 0.000 claims abstract description 25
- 230000004087 circulation Effects 0.000 claims description 132
- 230000015654 memory Effects 0.000 claims description 36
- 238000000034 method Methods 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 9
- 238000009826 distribution Methods 0.000 claims description 5
- 238000002360 preparation method Methods 0.000 claims description 2
- 238000002372 labelling Methods 0.000 description 11
- 125000004122 cyclic group Chemical group 0.000 description 5
- 230000003068 static effect Effects 0.000 description 4
- 230000003750 conditioning effect Effects 0.000 description 3
- 239000012467 final product Substances 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 239000000047 product Substances 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 230000033228 biological regulation Effects 0.000 description 2
- 230000006866 deterioration Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 240000001439 Opuntia Species 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种程序执行控制装置,控制处理器所执行的程序,该处理器具有用于指令的有条件执行的谓词功能,程序包含分支指令,该分支指令用于控制循环处理中的重复处理,进一步,分支指令是一种指令,用于生成执行可否条件,并将该执行可否条件反映到谓词标记,所述执行可否条件示出在循环处理中的下一次重复处理时是否执行该分支指令,所述谓词标记用于该分支指令的有条件执行,程序执行控制装置包括处理器状态变更单元,在所述分支指令的执行周期之前,根据反映到所述谓词标记的所述执行可否条件,为了执行该分支指令以后的指令,先行变更处理器的状态。
Description
技术领域
本发明涉及一种程序执行控制装置,控制单一或多个微处理器所执行的程序。
背景技术
近年来,对于数字电视机、录像机以及移动电话等数字设备,需要执行声音处理、音频处理、运动图像处理及编码处理等数字处理、以及图形用户界面(GUI:Graphical User Interface)操作处理。另外,使该数字设备与JAVA(注册商标)相对应等各种需求日益增加。为了实现这些需求,一般利用微处理器(包含微计算机、微控制器以及数字信号处理器(DSP))等信息处理装置。对于这些信息处理装置,按照对应用程序的需求的增加,为了提高处理能力,实施了处理器的工作频率的提高、多线程化以及多芯化等。据此,处理器的流水线级数、电路规模以及耗电量也在不断增加。
一般而言,若流水线级数增加,则在分支指令执行时到获取新的指令为止发生损失周期,而使其成为性能降低的一个原因。为了提高应用程序的执行效率,在处理集中的循环部分,特别需要抑制其性能恶化。以抑制性能恶化为目的,公知的方法是:对于循环指令用的分支指令,静态地预测为一定分支完成(taken)(静态分支预测),并且,将循环开头的指令存储到循环用指令缓冲器,从而抑制从循环末端向开头的分支时发生的损失周期(例如参照,专利文献:(日本)特许第2987311号公报。)。
图1A以及图1B示出以处理器执行的程序的一个例子,图1A是以C语言描述的程序,图1B是与图1A所示的程序相对应的汇编程序。
例如,在图1B所示的程序例中,在循环末端的分支指令(BRZ指令)分支完成时(在此情况下为,向循环开头的L_HEAD标签位置的分支时)以及分支未完成时(向后续于BRZ指令的ST指令转移执行时),有可能分别发生损失周期。
并且,公知的方法是:抑制因在最后一轮循环的分支未完成(not-taken)而引起的损失周期,所述最后一轮循环是通过所述的静态分支预测、或使用分支履历表(BHT)的动态分支预测也不能避免的。其方法是,利用循环计数器来高精确度地预测最后一轮循环,从而抑制在最后一轮的循环结束时的分支损失的方法(例如参照,专利文献:(日本)特许第3570855号公报。)。
另一方面,对于抑制耗电量增加,公知的方法是:还是关注循环部分,在正在执行循环时,通过使不使用的资源停止,从而减少电力(例如参照,专利文献:(日本)特许第1959871号公报。)。
例如,对于具有存储循环对象部分的指令的循环用指令缓冲器的处理器,在正在执行循环时,重复执行循环用指令缓冲器所存储的指令。因此,不需要从指令存储器中获取指令。据此,可以使包含高速缓存系统的指令存储器系统停止,且可以试图省电力化。
并且,为了抑制因损失周期增加而导致的性能恶化,多线程用的处理器有效起来(例如参照,专利文献:(日本)特许第3716414号公报。),所述损失周期是因流水线级数增加而增加的。
然而,在静态分支预测或根据分支履历表的动态预测中,也在循环结束时的分支中一定发生误预测,从而导致分支损失,所述静态分支预测中一定按照分支指令的种类来固定预测方向(例如,循环用分支指令中一定分支完成等),所述分支履历表中根据过去的分支完成频度来预测下次的判断。
特别是,近年来,因处理器的流水线级数增加而损失周期增加,则因误预测分支而导致的性能恶化的影响越来越大。
并且,对于应用程序的特性,例如从运动图像编解码标准的动向中可以看到的一种趋势是,不管总处理量是否增加,也要使一次处理的区域小型化。例如,在以往的运动图像编解码标准中,16像素角的数据是处理对象,对此在新的标准中出现了针对4像素角的数据的处理。这意味着,一个循环中的处理周期数减少。
再者,趋向于处理器可以执行的指令的并联度提高,也促进使一个循环中的处理周期数减少。
如此,根据应用程序的特性或处理器的并联执行可能数的提高,趋向于一个循环中的处理周期数减少,但是分支损失增加。
例如,在循环内的1轮的指令执行周期是8周期、循环轮次数是4次的情况下,一个循环中的处理周期数是32周期。对此,例如若分支损失是4周期,则每次执行一个循环时,都会产生约一成多的执行性能恶化。
为了避免如上所述的循环处理中的执行性能恶化,以作为例子而示的(日本)特许第3570855号公报为代表的、利用循环计数器来预测最后一轮的方法是,由于可以以较高的精确度来预测最后一轮,因此其价值高。然而,存在适用对象、软件生产性以及硬件安装资源投资方面的问题。
对于循环计数器方式中可以适用最后一轮预测的循环,循环计数器的增减值应该是1或以硬件预先固定的步骤数。为了根据当前的循环计数器值而知道下次是最后一轮,即,在减法计数器方式中,为了知道下次计数器值为0以下,需要所述限制。
因此,根据循环的种类,有时不能适用利用循环计数器来预测最后一轮的方法。例如,在如图2A所示循环变量的增减值不是1的情况下、在如图2B所示循环变量的增减值不是规定的步骤数的情况下、在如图2C所示不预先决定循环轮数的while循环等的情况下、或在如图2D所示可能存在从循环内到循环外的脱出(break语句)的情况下,不能适用最后一轮预测控制。
对于诸如过去的DSP应用领域之类的小规模的软件,也能够将各个循环的算法变更为增量1的for循环。然而,在当前的大规模化了的软件应用领域中,从软件生产性的观点来看,这些个别的算法调整是不现实的。并且,也存在根本不能变更算法的场合。
并且,对于通过循环计数器的预测方式,在单线程的处理器执行环境下、且只将最内侧的for循环作为适用对象的情况下,可以实现较少的安装电路规模,但是,在以多重循环或多线程为对象的情况下,不能避免增加电路投资。
例如,在以循环计数器方式实现3重for循环的情况下,在硬件上需要记录装置,该记录装置保持并管理3个循环的每个循环的计数器值。也可以是,在物理上只具备一个计数器用寄存器,并按照循环重数将循环计数器值保存到栈存储器等,将循环计数器值从栈存储器复归到循环计数器。然而,对保存处理以及复归处理需要花费处理周期,而导致程序的执行性能恶化。
这些资源的增加是,尤其在多线程型处理器中明显的。这是因为,需要安装与以处理器可以同时执行的线程数相同数量的循环计数器用栈存储器的缘故。
并且,除了利用栈存储器的硬件结构以外,还有如(日本)特许第3570855号公报所示的、利用与地址(程序计数器值)相对应的表的硬件结构。但是,由于利用表,因此所要的电路规模变大。
如此,利用循环计数器的最后一轮预测控制,在过去的传统的DSP领域中是有效的,但是,在当前的以大规模软件开发为前提的高性能处理器中,从其适用对象、软件生产性以及硬件投资的观点来看,失去了有效性。
发明内容
为了解决所述的问题,本发明的目的在于提供一种程序执行控制装置,能够以较少的电路投资来将处理器所执行的各种结构的循环作为控制适用对象,并且,在提高软件生产性的同时,能够实现性能提高以及省电力化。
为了实现所述目的,本发明涉及的程序执行控制装置的特点是,控制处理器所执行的程序,该处理器具有用于指令的有条件执行的谓词功能,所述程序执行控制装置,所述程序包含分支指令,该分支指令用于控制循环处理中的重复处理,进一步,所述分支指令是一种指令,用于生成执行可否条件,并将该执行可否条件反映到谓词标记,所述执行可否条件示出在循环处理中的下一次重复处理时是否执行该分支指令,所述谓词标记用于该分支指令的有条件执行,所述程序执行控制装置,包括,处理器状态变更单元,在所述分支指令的执行周期之前,根据反映到所述谓词标记的所述执行可否条件,为了执行该分支指令以后的指令,先行变更处理器的状态。
根据该结构,通过谓词标记,可以判断是否为循环处理的最后一轮。因此,到最后一轮的执行结束为止,可以先行变更处理器的状态。例如,可以的确变更分支方向、电力控制状态以及指令发行条件。因此,通过抑制因分支损失周期而导致的性能恶化、依据电力控制的省电力化以及动态控制指令发行数,从而可以试图提高系统整体的性能。
并且,可以根据谓词标记进行这些控制。因此,可以以少的电路投资,将各种结构的循环作为控制适用对象。因此,可以一边提高软件生产性,一边实现性能提高或省电力化。
并且,本发明,除了可以作为具有这些特征性单元的程序执行控制装置来实现以外,也可以作为将程序执行控制装置中包含的特征性单元作为步骤的程序控制方法来实现,还可以作为使计算机执行程序控制方法中包含的特征性步骤的程序来实现。并且,当然也可以通过CD-ROM(Compact Disc-Read Only Memory)等存储介质或互联网等通信网络来流通这些程序。
如上所述,根据本发明,例如,可以的确变更分支方向、电力控制状态以及指令发行条件,以作为循环结束后的处理器状态的变更。因此,通过抑制因分支损失周期而导致的性能恶化、依据电力控制的省电力化以及动态控制指令发行数,从而可以试图提高系统整体的性能。
特别,可以以少的电路投资,将各种结构的循环作为控制适用对象,也可以一边提高软件生产性,一边实现性能提高或省电力化。
附图说明
图1A是示出以C语言描述的程序的一个例子的图。
图1B是示出与图1A所示的程序相对应的汇编程序的图。
图2A~图2D是示出包含循环处理的程序的一个例子的图。
图3是本发明的实施例1涉及的处理器的结构框图。
图4是示出利用谓词(predicate)标记的汇编程序的一个例子的图。
图5A是示出包含循环用分支指令的、以C语言描述的程序的一个例子的图。
图5B是示出与图5A所示的程序相对应的汇编程序的图。
图6是示出说明循环用分支指令(BLOOP指令)的工作的程序的一个例子的图。
图7是示出实施例1涉及的处理器的安装电路的一个例子的图。
图8是用于说明处理器的工作顺序的流程图。
图9是用于说明所设想的处理器的流水线结构的表。
图10是示出用于说明处理器的工作顺序的程序的一个例子的图。
图11是用于说明处理器的工作顺序的时序图。
图12是用于说明处理器的工作顺序的时序图。
图13是用于说明处理器的控制顺序的状态转移图。
图14是示出说明多重循环的程序的一个例子的图。
图15是示出说明多重循环的程序的一个例子的图。
图16是示出用于说明多重循环中的最后一轮判断的图。
图17是示出用于说明多重循环中的最后一轮判断的图。
图18是本发明的实施例2涉及的处理器的结构框图。
图19是本发明的实施例2涉及的电力控制装置的结构框图。
图20是本发明的实施例2涉及的电力控制装置的结构框图。
图21是本发明的实施例3涉及的处理器的结构框图。
图22是示出本发明的实施例3涉及的处理器的适用例的图。
图23是示出本发明的实施例3涉及的处理器的适用例的图。
具体实施方式
下面,参照附图详细说明本发明的实施例。而且,对于在附图中同一或相同的部分,附上同一参照符号而不反复说明。
(实施例1)
图3是本发明的实施例1涉及的处理器的结构框图。
处理器是执行程序的装置,包括指令获取装置31、指令存储器32、指令解码装置33、指令执行装置34、寄存器文件35、数据存储器36、谓词标记控制装置37、循环分支预测装置38。
指令存储器32是一种存储器,记忆构成程序的多个指令。指令获取装置31是一种处理部,获取指令存储器32所记忆的指令。指令获取装置31,将指令获取地址发出给指令存储器32,所述指令获取地址是指令存储器32所记忆的指令的地址。指令存储器32,将记忆在所接受的指令获取地址的指令发出给指令获取装置31。指令获取装置31,将所接受的指令,根据需要重新排列,并提供给指令解码装置33。
指令解码装置33是一种处理部,对提供到的指令进行解码,并按照指令内容,向处理器内的各个部发出用于指示指令的工作的控制信号。
寄存器文件35由记忆各种数据的多个通用寄存器以及多个专用寄存器构成。
数据存储器36是一种存储器,记忆各种数据。指令执行装置34是一种处理部,由算术逻辑运算器(ALU)及积和运算器(MAC)等运算器、以及实现各个指令的工作的专用电路构成。指令执行装置34,根据从指令解码装置33输入来的、按照指令的控制信号的指示,与寄存器文件35或数据存储器36之间进行运算用数据的输出和输入,对运算用数据进行运算,按照指令将运算结果输出给寄存器文件35或数据存储器36。
谓词标记控制装置37,具有作为条件标记的多个谓词标记,该谓词标记用于由指令执行装置34的指令的有条件执行。各个谓词标记构成为1位,表示条件是真或假。例如,谓词标记被写入在指令执行装置34执行的比较指令的结果的真假。
图4中示出利用谓词标记的汇编程序的例子。在图4中,CMPEQ指令是一种指令,用于判断寄存器R0以及R1所记忆的值是否相等,在相等的情况(真)下,向指定了的谓词标记C0写入1,在不相等的情况(假)下,向谓词标记C0写入0。在图4的例子中,第三个步骤的MOV指令,只在谓词标记C0的内容是1(真)的情况下被执行。如此,通过使用谓词功能,能够表现出C语言中的if语句等的条件执行。而且,近年来,如上所述的谓词功能,在指令并联度较高的处理器中已经成为普通的功能。
在图3中,循环分支预测装置38是一种处理部,根据从指令解码装置33输出的指令解码信息、和从谓词标记控制装置37输出的谓词标记的值,生成最后一轮循环标记,该最后一轮循环标记示出下次的循环是最后一轮。
指令获取装置31,在被指令解码装置33指示执行循环分支指令的情况下,参照循环分支预测装置38所提供的最后一轮循环标记,若该内容表示无效(例如,值为0),则判断为分支完成(判断为下次也执行循环),而进行分支处理,即获取分支目标地址的指令。指令获取装置31,若提供到的最后一轮循环标记表示有效(例如,值为1),则判断为这次循环是最后一轮、且分支未完成,而不进行分支处理。即,指令获取装置31,不进行对分支到的指令获取,而对程序计数器的值连续的、后续的地址进行指令获取和指令提供。
图5A以及图5B中示出本实施例的包含循环用分支指令的程序的例子。图5A是以C语言描述的程序,图5B是与图5A所示的程序相对应的汇编程序。在此例子中,循环变量的增减值是-2。并且,BLOOP指令相当于循环用分支指令。即,BLOOP指令相当于一种循环用分支指令,该循环用分支指令的特点是:在上一次执行循环用分支指令(在此为BLOOP指令)时,生成下次执行BLOOP指令时的执行可否条件,并将其结果反映到谓词标记。而且,R4的初值是N-2。
在图5A以及图5B中,SETLB指令,用于将L_HEAD标签所示的地址、和与该地址相对应的指令存储到循环用指令缓冲器的TR0地址。在安装多个循环用指令缓冲器的处理器中,通过诸如TR0、TR1之类的名称指定,识别循环用指令缓冲器。
在此,为了说明BLOOP指令的工作,图6中示出以C语言的功能表现。BLOOP指令,如行的开头的[C0]所示,由于被谓词标记C0指定有条件执行,因此,若谓词标记C0是真,则BLOOP指令被执行,而若是假,则BLOOP指令不被执行。
由于以BLOOP指令的操作数指定C0,因此,若R4是0以下,则C0被写入假的值,若R4不是0以下,则C0被写入真的值。
再者,根据被操作数指定的R4、0x2从R4中减去2,进行向以识别符TR0指定的循环用指令缓冲器的地址的分支。
BLOOP指令的特点是,在执行当前的指令中,直接生成下次执行时的条件。据此,在各种循环条件下也能够正确地进行下次的分支预测。
对于循环用分支指令的安装,可以考虑各种形式的条件生成方法。在所述例子中判断寄存器R4是否为0以下,但也可以进行值的一致性判断、零判断或符号判断等。在所述例子中并联执行从所指定的寄存器R4中减去立即值的功能,但也可以不仅限于此运算内容。
而且,例如,通过以减法值为0x0、在BLOOP指令之前设定比较指令,从而即使利用举例所示的BLOOP指令,也可以实现对预先不决定循环轮数的循环型的循环(以C语言的while循环)的控制。
通过利用谓词功能来进行循环的条件生成,从而可以容易应对多重循环。例如,在2重循环的例子中,通过将谓词标记C0使用于内侧循环、将谓词标记C1使用于外侧循环,从而可以识别各个循环。
并且,与使用示出运算结果的特点的普通的标记的情况不同,即,与使用进位标记、符号标记以及零标记等的情况不同,若使用谓词标记,则即使在循环内出现循环判断以外的条件语句,也可以识别各个条件语句(循环判断用的条件语句和其它的条件语句)。
图7中示出实施例1涉及的处理器的安装电路的例子。指令获取装置31包括获取用程序计数器41、选择器42、加法器43、分支目标地址生成部44以及指令分配装置45。
指令解码装置33包括指令解码电路46。谓词标记控制装置37包括多个谓词标记寄存器52、和多路复用器53。
循环分支预测装置38包括最后一轮循环标记寄存器54。指令获取装置31内的获取用程序计数器(PC)41是一种寄存器,存储用于获取指令的地址。指令存储器32,根据从获取用程序计数器41发出的获取用地址,向指令获取装置31输出记忆在该获取用地址的指令。
指令获取装置31内的指令分配装置45,将应该执行的指令从获取了的指令串中提取,并提供给指令解码装置33。
指令解码装置33内的指令解码电路46,对提供到的指令进行解码,按指令的每个工作将适当的控制信号提供给处理器内的各个装置。
在附图的例子中,指令执行装置34包括作为运算器的比较器(CMP)47、算术逻辑运算器(ALU)48以及积和运算器(MAC)49。从寄存器文件35中读出了的运算用操作数数据,被操作数读出总线50选择,并被提供到各个运算器。再者,各个运算器所运算的运算结果,经由操作数写入总线51被写入到寄存器文件35。
在所执行的指令是比较指令的情况下,在比较器47进行比较运算,其结果以1位的真/假(true/false)的形式被输出到谓词标记控制装置37,并被写入到与以指令指定了的C0到C3的识别代码相对应的谓词标记寄存器52。
而且,在本实施例中,以C0到C3的4个寄存器为例子示出谓词标记,但是当然安装数是任意的。
由于是通常的谓词的使用形式,因此在图中不明确示出,但是,各个谓词标记寄存器52的值,为了决定指令执行可否而被指令解码装置33参照,在谓词标记寄存器52的值是假的情况下,通过以指令为NOP(No Operation)指令来进行解码,从而使指令无效化。
在执行循环用分支指令的情况下,通过多路复用器(MUX)53选择与以循环用分支指令的操作数指定了的识别代码(C0~C3)相对应的谓词标记寄存器52的记忆内容,并输出给循环分支预测装置38。
最后一轮循环标记寄存器54的记忆内容由多路复用器53所选择的谓词标记的内容的反转值、示出指令解码装置33所解码的指令是循环分支指令的信号、以及示出循环执行中的信号的逻辑积生成。即,在循环中执行循环分支指令时谓词标记为假的情况下,最后一轮循环标记寄存器54的值为真(1)。
加法器43所增量的值以及分支目标地址生成部44所生成的值中的任一个,被选择器42选择。获取用程序计数器41的记忆内容,被重写为选择器42所选择的值。
选择器42,在应该执行的指令不是循环用分支指令、也不是其它的分支指令的情况下,选择并输出加法器43所生成的增量值。
在应该执行的指令是循环用分支指令以外的分支指令的情况下,选择器42选择并输出分支目标地址生成部44所生成的值。
在应该执行的指令是循环用分支指令的情况下,在从最后一轮循环标记寄存器54输出的最后一轮循环标记的值是假(0)时,判断为分支完成,选择器42选择分支目标地址生成部44所生成的值。在该最后一轮循环标记的值是真(1)时,由于应该执行的指令位于循环的最后一轮因此判断为分支未完成,选择器42选择加法器43所生成的增量值。
图8中示出本实施例的处理器的工作的一个例子。指令获取装置31,参照获取用程序计数器41,从指令存储器32中获取指令(S1)。指令解码装置33对提供到的指令进行解码(S2)。
指令解码装置33,根据解码后的指令的内容,来判断指令是否是循环用分支指令以外的分支指令(S3)。在指令是循环用分支指令以外的分支指令的情况下(在S3的“是”),获取用程序计数器41存储分支目标地址生成部44所记忆的分支目标地址,指令获取装置31获取存储在分支目标地址的指令(S10)。此后,在指令解码装置33,对所获取的指令进行解码(S2)。
在解码后的指令不是循环用分支指令以外的分支指令的情况下(在S3的“否”),指令解码装置33,判断解码后的指令是否是循环用分支指令(S4)。在解码后的指令不是循环用分支指令的情况下(在S4的“否”),即,不是循环用分支指令、也不是其它的分支指令的情况下,在指令执行装置34执行该指令(S6)。此后,反复进行S1以后的处理。
在解码后的指令是循环用分支指令的情况下(在S4的“是”),循环分支预测装置38,判断该指令是否是被最后一轮预测了的分支指令(S5)。在此,根据图7中的最后一轮循环标记寄存器54的值进行判断。若是被最后一轮预测了的状态(在S5的“是”),则不进行为了返回循环开头的分支处理,即,为了作为循环分支未完成、而继续执行后续的指令,指令执行装置34执行指令后(S6),指令获取装置31获取后续地址的指令(S1)。
在判断为解码后的指令不是被最后一轮预测了的分支指令的情况下(在S5的“否”),循环分支预测装置38,判断下次的分支是否是最后一轮(S7)。此判断是在图7中的最后一轮循环标记寄存器54的上级的逻辑电路中进行的。
在下次的分支是最后一轮的情况下(在S7的“是”),循环分支预测装置38,在最后一轮循环标记寄存器54设定为真(S8),指令执行装置34执行该指令(S9)。此后,分支目标地址的指令被获取(S10),反复进行S2以后的处理。
在判断为下次的分支不是最后一轮的情况下(在S7的“否”),指令执行装置34,执行该指令(S9),此后,反复进行S10、S2以后的处理。
其次,利用时序图说明指令的执行周期的关系。首先,为了简化说明,对如图9所示构成处理器的流水线级、如图10所示程序的循环内存在3周期(3指令)的情况进行说明。
图11是在最后一轮循环没有分支预测的情况下的处理器的工作的时序图。图中的#i示出循环处理中的第i个重复。
首先,对于最后一轮循环以外,在从作为最后一轮的前2轮的BLOOP指令的“BLOOP(#N-2)”到“LD(#N-1)”之间,不发生因误预测分支而引起的损失周期。这是因为,总是将最后一轮循环以外的分支预测为“完成”的缘故。
然而,对于本来应该结束循环的“BLOOP(#N)”,也预测为分支完成,因此进行向循环开头的分支,“LD(#N+1)”以后也进行指令的获取和提供。
对于此例子中的处理器的流水线级结构,依据谓词的条件判断周期是“EM”级,而在此情况下,在“t10”的周期中才判明为分支未完成。
因此,从“t11”周期开始获取本来作为下一个指令的“ST”指令。对于在“t8”到“t10”之间因预测错误而被获取以及提供的指令,其执行通过流水线清空(flush)工作被取消,但是,因插入不必要的周期而导致性能恶化。
其次,利用图12说明本实施例的分支预测工作。依据作为最后一轮循环的前2轮的“BLOOP(#N-2)”的指令,R4寄存器的值被减去2而为0。
接着,对于作为最后一轮循环的前1轮的“BLOOP(#N-1)”的指令,由于R4寄存器的值为0以下,因此将谓词标记C0的值变更为假(0)。
再者,在循环分支预测装置38,根据C0标记的值生成最后一轮循环标记。在本例子中,由于C0标记为假,因此最后一轮循环标记为真。
此事宜相当于对下次是最后的分支指令的预测。指令获取装置31,继续获取后续地址的指令,依据分支预测其指令获取为有效。因此,不发生最后一轮分支中的指令获取的缺失损失(misspenalty)。
再者,在最后一轮的“BLOOP(#N)”的条件判断周期“t11”,循环的最后一轮预测完毕。据此,能够安全地完毕最后一轮的预测。因此,即使进行到不同的循环的处理,也不会导致依据误预测的性能恶化。
并且,在对象循环内的处理执行中发生中断或例外处理、而进行到中断处理程序的处理的情况下,也需要维持预测的匹配性。这是因为,在中断处理程序中存在新的循环结构的情况下,有可能在循环用分支指令中误用依据中断处理之前的循环结构的分支预测的结果的缘故。
为了防止误用其预测结果,采用以下结构即可,该结构是:在因中断或例外处理等的分支、或循环处理以外的分支而转移到对象循环外的处理的情况下,完毕分支预测。
图13中示出与最后一轮循环预测有关的状态转移的例子。即,在循环开始时处于状态62,该状态62示出不是循环的最后一轮。在此状态下,在通过执行BLOOP指令从而判断为下次是循环的最后一轮的情况下,转移到状态63,该状态63示出是循环的最后一轮。在此状态下,在是循环的最后一轮且通过执行BLOOP指令从而判断为分支未完成的情况下、在执行了循环的最后一轮以外的BLOOP指令的情况下、或在执行了BLOOP指令以外的分支指令的情况下,转移到状态62。
再者,在多次发生误预测分支的情况下,通过设置抑制分支预测功能的机构,从而能够实现安全的处理器运转。例如,在规定的次数以上发生误预测分支的情况下,不进行分支预测即可。
其次,说明用于对应多重循环或循环内的条件分支的结构。图14和图15中示出包含2重循环的程序的一个例子。图14是以C语言描述的程序,图15是示出与图14所示的程序相对应的汇编程序。
在多重循环中,防止分支预测的误判断的简单的方法是,只将最内侧的循环作为分支预测的对象。
作为误判断的例子,在图15的例子的说明中假设,在外侧循环使用C3的BLOOP指令的执行时,判断为下次是最后一轮而设定循环最后一轮标记。
在只将循环用分支指令(BLOOP)检测为分支指令的对象的结构的情况下,在外侧循环设定最后一轮循环标记后,检测到内侧循环用的初次的BLOOP指令时,本来应该作为分支完成来处理,但是误判断为最后一轮,从而作为分支未完成来进行工作。
作为对此的防止方法,采用以下结构即可,该结构是:判断正在作为预测对象的循环的谓词识别符(在例子中,C2以及C3)、与上次的循环用分支指令检测时的内容是否一致。
作为其它的构成方法,也可以判断分支目标寄存器识别符(在例子中,TR0以及TR1)、与上次的循环用分支指令检测时的内容是否一致。
在图15的例子中,在外侧循环,指定C3以作为谓词识别符,指定TR0以作为分支目标寄存器识别符。
预先保持其中的任一个信息,在检测新的循环用分支指令时,比较该信息和其分支指令用的识别符。
在所述的例子中示出了,在多重循环中只将最内侧的循环作为分支预测的对象的、且适于硬件成本较少的状态下的安装的结构。
再者,根据本发明,通过利用本实施例所示的循环用分支指令,从而对多重循环的外侧的循环群,也可以以较少的电路投资来进行正确的最后一轮循环的分支预测。
如图16所示,具备一种表,该表中按循环用分支指令带有的每个谓词标记识别符具有最后一轮循环标记。
据此,既然在多重循环中可以辨别各个循环用分支指令,对于各个循环也可以判断是否是最后一轮循环。
其方法的表用硬件所需要的电路资源,按每个谓词标记仅有几个位。因此,可以实现一种处理器,该处理器,与以简单的计数器方式保持多量的程序计数器等的信息的表结构相比,可以以非常少的成本来进行对应于多重循环的最后一轮循环预测。
在图17举例所示的结构中,取代谓词标记识别符而利用分支目标寄存器的识别符,来辨别循环,所述分支目标寄存器保持分支目标地址。
如上所述,根据本实施例,在循环的最后一轮的上一次的重复中预测为下次的重复是最后一轮,并预测结果利用于决定是否执行分支指令。因此,在最后一轮,可以不使分支指令执行而使后续的指令执行。因此,对于循环结束后的处理器状态的变更,能够的确地变更分支方向。据此,可以抑制因分支损失周期而导致的指令执行性能的恶化。
(实施例2)
实施例2的特点是,对于处理器的处理状态,变更电力状态。
图18是本发明的实施例2涉及的处理器的结构框图。实施例2涉及的处理器中,除了图3所示的实施例1涉及的处理器的结构,还具备电力控制装置71。
电力控制装置71以外的处理部进行的处理,与实施例1相同。因此,在此不反复进行详细说明。
电力控制装置71,根据最后一轮循环标记的信息进行电力控制。图19中示出电力控制装置71的结构的例子。电力控制装置71包括变换器71a、“与”门71b以及变换器71c。变换器71a,使最后一轮循环标记的值反转。“与”门71b,运算出变换器71a的输出和循环执行中信号的逻辑积,该循环执行中信号示出正在执行循环。变换器71c,使“与”门71b的输出反转。
在此结构的例子中,在执行最后一轮以外的循环时,时钟允许(clock enable)信号为0,在其它的情况下,时钟允许信号为1。“与”门81,运算出源时钟信号和时钟允许信号的逻辑积,将运算结果作为选通时钟信号提供给指令存储器32,从而可以在执行最后一轮以外的循环时停止向指令存储器32的时钟提供。并且,在循环的最后一轮,可以使向指令存储器32的时钟提供重新开始。
一般而言,例如以循环部分为对象的电力控制,可以考虑到指令存储器系统的停止控制。例如,将循环对象部分的指令存储到循环用指令缓冲器,正在执行循环时从缓冲器中获取指令,来不需要向指令存储器系统的访问,从而可以使指令存储器系统的工作停止。
通过抑制向存储器发出访问请求信号,从而能够容易实现指令存储器系统的停止。为了实现更有效的低电力化,优选进行停止向存储器系统的时钟提供的时钟门控(clock gating)。
然而,向载荷大的时钟线的逻辑电路插入,对提高处理器的工作速度容易成为瓶颈问题,从而将其适用于高速处理器是困难的。
于是,通过采用图19所示的结构,以比发生向存储器的访问请求早的定时,且在保持充分的时间上的富余的状态下,在循环结束后可以重新开始向指令存储器系统的时钟提供。据此,对于高速处理器,通过停止向指令存储器系统的时钟提供,从而也能够实现省电力化。
图20中示出将图19所示的电力控制装置71用于电源门控(powergating)的结构。
即,利用变换器71c的输出,以作为电源门允许信号,在电源门允许信号为1的情况下提供电源。
为了减少随着LSI(Large Scale Integration Circuit)的制造过程的细微化而不断增加的漏泄电流,一种电源门控的方法一般所知,即,向通常的逻辑用MOS(Metal Oxide Semiconductor)电路串联插入用于防止漏泄电流的晶体管,从而进行电力控制。
该方法中也是,由于向用于电源门控的晶体管的开关操作的载荷大,因此需要花费时间。据此,以比需要逻辑工作的定时非常早的定时,需要开关的导通操作。
于是,通过采用图20所示的结构,与所述的向时钟门控的适用相同,可以以比需要访问的定时早的定时,先行进行电源门控的操作,例如可以容易减少循环执行中的指令存储器系统整体的漏泄电流。
如上所述,根据本实施例,在正在执行循环处理时,可以使向指令存储器32的时钟提供或电力提供停止,并且,在循环的最后一轮,可以使向指令存储器32的时钟提供或电力提供重新开始。据此,对于循环结束后的处理器状态的变更,可以先行变更电力控制状态。因此,不带有因用于电力控制的损失周期而引起的性能恶化,可以实现省电力化。
(实施例3)
实施例3的特点是变更指令发行限制,以作为变更处理器的处理状态。
图21是本发明的实施例3涉及的处理器的结构框图。实施例3涉及的处理器中,除了图3所示的实施例1涉及的处理器的结构,还具备指令发行控制装置101。
指令解码装置33以及指令发行控制装置101以外的处理部进行的处理,与实施例1相同。据此,在此不反复进行详细说明。
指令解码装置33,根据从指令发行控制装置101输出的控制信号进行指令发行。
指令发行控制装置101,根据最后一轮循环标记的信息,控制由指令解码装置33的指令发行。
例如,对于具有多线程流水线结构的处理器,通过将每线程的指令发行数可变控制,从而可以试图提高处理器系统整体的吞吐量性能。
图22是以时间序列示出指令解码装置33所发行的指令的图。假设,指令解码装置33可以同时发行五个指令。
例如,对于应该集中且尽快地进行处理的循环处理的线程(该图的线程A),在正在执行循环时(时刻t0以及t1)分配较多的指令发行数,对于其它的线程(该图的线程B),在循环外(时刻t2、t3)分配较多的指令发行数,从而能够实现处理整体的效率化。
在本发明中,由于容易进行最后一轮循环的分支判断,因此能够的确地变更循环以后的指令发行数。
并且,可以构成具有下列指令格式模式的处理器,即,具有多位长度的全集(full set)的指令种类的的指令格式模式、和具有为了减少程序容量而限定了指令的组合的、多个指令长度的简便的子集(sub set)的指令种类的指令格式模式。
对于这些处理器,例如图23所示,通常以容量减少版指令格式模式工作,在诸如循环之类需要处理能力的场面,切换为全集版的指令格式模式,从而可以试图将处理性能的维持和指令存储器容量的减少的两者并存。
通过利用本发明,由于容易判断最后一轮循环,因此能够容易的确地实现其并存控制。
如上所述,根据本实施例,对于循环结束后的处理器状态的变更,可以的确地变更指令发行条件。据此,通过指令发行数的动态控制,从而能够实现系统整体的性能提高。
对于这次所公开的实施例的所有的内容,举例进行了说明,而应该认为不仅限于此。本发明的范围,不由所述的说明所示,而由权利要求所示,并且,意图着包含与权利要求均等的意义以及范围内的所有的变更。
本发明,能够适用于包含由单一或多个微处理器(包含微计算机、微控制器、数字信号处理器)的信息处理装置等。
Claims (11)
1.一种程序执行控制装置,
控制处理器所执行的程序,该处理器具有用于指令的有条件执行的谓词功能,所述程序执行控制装置,其特征在于,
所述程序包含分支指令,该分支指令用于控制循环处理中的重复处理,
进一步,所述分支指令是一种指令,用于生成执行可否条件,并将该执行可否条件反映到谓词标记,所述执行可否条件示出在循环处理中的下一次重复处理时是否执行该分支指令,所述谓词标记用于该分支指令的有条件执行,
所述程序执行控制装置,包括,
处理器状态变更单元,在所述分支指令的执行周期之前,根据反映到所述谓词标记的所述执行可否条件,为了执行该分支指令以后的指令,先行变更处理器的状态。
2.如权利要求1所述的程序执行控制装置,其特征在于,
所述处理器状态变更单元,在所述谓词标记示出不执行分支指令的情况下,在该分支指令的执行周期之前,使所述处理器获取所述分支指令以后的指令。
3.如权利要求1所述的程序执行控制装置,其特征在于,
所述处理器状态变更单元,在所述谓词标记示出执行分支指令的情况下,使向记忆所述程序的存储器的电力提供或时钟提供停止,在所述谓词标记示出不执行分支指令的情况下,在该分支指令的执行周期之前,使向所述存储器的电力提供或时钟提供重新开始。
4.如权利要求1所述的程序执行控制装置,其特征在于,
所述处理器状态变更单元,按照所述谓词标记示出的执行可否条件,变更与由所述处理器的指令的发行有关的限制条件。
5.如权利要求1所述的程序执行控制装置,其特征在于,
所述处理器状态变更单元,根据所述谓词标记,判断循环处理中的重复处理的最后一轮,在执行最后一轮的重复处理后,不进行针对被该分支指令控制的循环处理的处理。
6.如权利要求5所述的程序执行控制装置,其特征在于,
所述分支指令,以操作数指定用于该分支指令的有条件执行的谓词标记,
所述处理器状态变更单元,利用谓词标记的一致性,判断循环处理中的重复处理的最后一轮。
7.如权利要求5所述的程序执行控制装置,其特征在于,
所述分支指令,以操作数指定分支目标寄存器的识别符,该分支目标寄存器保持该分支指令执行时的分支目标地址,
所述处理器状态变更单元,利用分支目标寄存器的一致性,判断循环处理中的重复处理的最后一轮。
8.如权利要求5所述的程序执行控制装置,其特征在于,
所述处理器状态变更单元,根据所述谓词标记来判断循环处理中的重复处理的最后一轮后,在发生与该谓词标记相对应的分支指令以外的分支指令的情况下,结束所述最后一轮的判断。
9.如权利要求5所述的程序执行控制装置,其特征在于,
所述处理器状态变更单元,在根据所述谓词标记来判断循环处理中的重复处理的最后一轮时,在该判断的错误已经发生规定的次数以上的情况下,结束所述最后一轮的判断。
10.如权利要求1所述的程序执行控制装置,其特征在于,
所述分支指令,以操作数指定用于该分支指令的有条件执行的谓词标记,
所述处理器状态变更单元,按每个谓词标记进行所述处理器的状态的先行变更处理。
11.如权利要求1所述的程序执行控制装置,其特征在于,
所述分支指令,以操作数指定分支目标寄存器的识别符,该分支目标寄存器保持该分支指令执行时的分支目标地址,
所述处理器状态变更单元,按每个分支目标寄存器进行所述处理器的状态的先行变更处理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP218827/2007 | 2007-08-24 | ||
JP2007218827A JP5043560B2 (ja) | 2007-08-24 | 2007-08-24 | プログラム実行制御装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310136817.7A Division CN103257849A (zh) | 2007-08-24 | 2008-08-22 | 程序执行控制装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101373427A CN101373427A (zh) | 2009-02-25 |
CN101373427B true CN101373427B (zh) | 2013-05-22 |
Family
ID=40383240
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310136817.7A Pending CN103257849A (zh) | 2007-08-24 | 2008-08-22 | 程序执行控制装置 |
CN200810210003.2A Active CN101373427B (zh) | 2007-08-24 | 2008-08-22 | 程序执行控制装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310136817.7A Pending CN103257849A (zh) | 2007-08-24 | 2008-08-22 | 程序执行控制装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US7836289B2 (zh) |
JP (1) | JP5043560B2 (zh) |
CN (2) | CN103257849A (zh) |
Families Citing this family (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8606879B2 (en) * | 2009-03-12 | 2013-12-10 | Nec Europe Ltd. | Method for supporting management and exchange of distributed data of user or an entity |
JP5423156B2 (ja) | 2009-06-01 | 2014-02-19 | 富士通株式会社 | 情報処理装置及び分岐予測方法 |
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 |
US10360039B2 (en) * | 2009-09-28 | 2019-07-23 | Nvidia Corporation | Predicted instruction execution in parallel processors with reduced per-thread state information including choosing a minimum or maximum of two operands based on a predicate value |
US8887142B2 (en) | 2010-03-10 | 2014-11-11 | Microsoft Corporation | Loop control flow diversion |
US9021241B2 (en) | 2010-06-18 | 2015-04-28 | The Board Of Regents Of The University Of Texas System | Combined branch target and predicate prediction for instruction blocks |
US8762783B2 (en) * | 2010-06-24 | 2014-06-24 | International Business Machines Corporation | Error identification |
CN102576318B (zh) | 2010-06-25 | 2016-03-30 | 松下知识产权经营株式会社 | 集成电路、计算机系统、控制方法 |
RU2461051C2 (ru) * | 2010-07-27 | 2012-09-10 | Государственное образовательное учреждение высшего профессионального образования "Воронежский государственный технический университет" | Способ обнаружения случайных "блужданий" в микроэвм |
CN101930358B (zh) * | 2010-08-16 | 2013-06-19 | 中国科学技术大学 | 一种单指令多数据流结构上的数据处理方法及处理器 |
US20120079303A1 (en) * | 2010-09-24 | 2012-03-29 | Madduri Venkateswara R | Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit |
US9588881B2 (en) * | 2011-05-16 | 2017-03-07 | Cypress Semiconductor Corporation | Stack processor using a ferroelectric random access memory (F-RAM) for code space and a portion of the stack memory space having an instruction set optimized to minimize processor stack accesses |
US9910823B2 (en) | 2011-05-16 | 2018-03-06 | Cypress Semiconductor Corporation | Stack processor using a ferroelectric random access memory (F-RAM) having an instruction set optimized to minimize memory fetch |
US9501640B2 (en) * | 2011-09-14 | 2016-11-22 | Mcafee, Inc. | System and method for statistical analysis of comparative entropy |
WO2013069551A1 (ja) | 2011-11-09 | 2013-05-16 | 日本電気株式会社 | デジタル信号プロセッサ、プログラム制御方法、および制御プログラム |
US9158328B2 (en) | 2011-12-20 | 2015-10-13 | Oracle International Corporation | Memory array clock gating scheme |
WO2013156825A1 (en) * | 2012-04-20 | 2013-10-24 | Freescale Semiconductor, Inc. | A computer system and a method for generating an optimized program code |
US9411589B2 (en) | 2012-12-11 | 2016-08-09 | International Business Machines Corporation | Branch-free condition evaluation |
US9256427B2 (en) | 2012-12-11 | 2016-02-09 | International Business Machines Corporation | Tracking multiple conditions in a general purpose register and instruction therefor |
US9430369B2 (en) | 2013-05-24 | 2016-08-30 | Coherent Logix, Incorporated | Memory-network processor with programmable optimizations |
US9633409B2 (en) | 2013-08-26 | 2017-04-25 | Apple Inc. | GPU predication |
US10133300B2 (en) | 2014-01-08 | 2018-11-20 | Microsoft Technology Licensing, Llc | Control of predication across clock domains |
US9519482B2 (en) * | 2014-06-20 | 2016-12-13 | Netronome Systems, Inc. | Efficient conditional instruction having companion load predicate bits instruction |
US10289417B2 (en) * | 2014-10-21 | 2019-05-14 | Arm Limited | Branch prediction suppression for blocks of instructions predicted to not include a branch instruction |
GB2540941B (en) * | 2015-07-31 | 2017-11-15 | Advanced Risc Mach Ltd | Data processing |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
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 |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
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 |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
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 |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US10275249B1 (en) * | 2015-10-15 | 2019-04-30 | Marvell International Ltd. | Method and apparatus for predicting end of loop |
WO2018149495A1 (en) * | 2017-02-16 | 2018-08-23 | Huawei Technologies Co., Ltd. | A method and system to fetch multicore instruction traces from a virtual platform emulator to a performance simulation model |
US10235173B2 (en) | 2017-05-30 | 2019-03-19 | Advanced Micro Devices, Inc. | Program code optimization for reducing branch mispredictions |
JP6885226B2 (ja) * | 2017-07-03 | 2021-06-09 | 株式会社デンソー | 電子制御装置 |
US10620961B2 (en) * | 2018-03-30 | 2020-04-14 | Intel Corporation | Apparatus and method for speculative conditional move operation |
US10831492B2 (en) | 2018-07-05 | 2020-11-10 | International Business Machines Corporation | Most favored branch issue |
US10990404B2 (en) * | 2018-08-10 | 2021-04-27 | Arm Limited | Apparatus and method for performing branch prediction using loop minimum iteration prediction |
US10915322B2 (en) * | 2018-09-18 | 2021-02-09 | Advanced Micro Devices, Inc. | Using loop exit prediction to accelerate or suppress loop mode of a processor |
US11392537B2 (en) * | 2019-03-18 | 2022-07-19 | Microsoft Technology Licensing, Llc | Reach-based explicit dataflow processors, and related computer-readable media and methods |
US12112173B2 (en) * | 2020-12-21 | 2024-10-08 | Intel Corporation | Context-based loop branch prediction |
US11907718B2 (en) * | 2020-12-31 | 2024-02-20 | Micron Technology, Inc. | Loop execution in a reconfigurable compute fabric using flow controllers for respective synchronous flows |
US11663013B2 (en) | 2021-08-24 | 2023-05-30 | International Business Machines Corporation | Dependency skipping execution |
US12111913B2 (en) * | 2021-09-26 | 2024-10-08 | Ceremorphic, Inc. | Core processor and redundant branch processor with control flow attack detection |
CN114510271B (zh) * | 2022-02-09 | 2023-08-15 | 海飞科(南京)信息技术有限公司 | 用于在单指令多线程计算系统中加载数据的方法和装置 |
US20240046543A1 (en) * | 2022-08-05 | 2024-02-08 | Qualcomm Incorporated | Runtime mechanism to optimize shader execution flow |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6493741B1 (en) * | 1999-10-01 | 2002-12-10 | Compaq Information Technologies Group, L.P. | Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit |
US6571385B1 (en) * | 1999-03-22 | 2003-05-27 | Intel Corporation | Early exit transformations for software pipelining |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0687358B2 (ja) | 1986-04-04 | 1994-11-02 | 松下電器産業株式会社 | Romの消費電力低減方法 |
JPH0486808A (ja) | 1990-07-31 | 1992-03-19 | Ricoh Co Ltd | 液晶表示装置 |
JPH04264923A (ja) * | 1991-02-20 | 1992-09-21 | Nec Corp | 情報処理装置 |
JP2987311B2 (ja) | 1995-05-12 | 1999-12-06 | 松下電器産業株式会社 | プロセッサ及び翻訳装置 |
US5909573A (en) | 1996-03-28 | 1999-06-01 | Intel Corporation | Method of branch prediction using loop counters |
JP3570855B2 (ja) | 1997-05-29 | 2004-09-29 | 株式会社日立製作所 | 分岐予測装置 |
US6477562B2 (en) | 1998-12-16 | 2002-11-05 | Clearwater Networks, Inc. | Prioritized instruction scheduling for multi-streaming processors |
EP1296226A2 (en) * | 2001-01-31 | 2003-03-26 | Siroyan Limited | Processing program loops in a processor |
GB2372847B (en) | 2001-02-19 | 2004-12-29 | Imagination Tech Ltd | Control of priority and instruction rates on a multithreaded processor |
JP3974063B2 (ja) * | 2003-03-24 | 2007-09-12 | 松下電器産業株式会社 | プロセッサおよびコンパイラ |
US7000233B2 (en) | 2003-04-21 | 2006-02-14 | International Business Machines Corporation | Simultaneous multithread processor with result data delay path to adjust pipeline length for input to respective thread |
US7657893B2 (en) * | 2003-04-23 | 2010-02-02 | International Business Machines Corporation | Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor |
US7360062B2 (en) | 2003-04-25 | 2008-04-15 | International Business Machines Corporation | Method and apparatus for selecting an instruction thread for processing in a multi-thread processor |
US7010676B2 (en) | 2003-05-12 | 2006-03-07 | International Business Machines Corporation | Last iteration loop branch prediction upon counter threshold and resolution upon counter one |
JP4818919B2 (ja) * | 2003-08-28 | 2011-11-16 | ミップス テクノロジーズ インコーポレイテッド | プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム |
US7401206B2 (en) * | 2004-06-30 | 2008-07-15 | Sun Microsystems, Inc. | Apparatus and method for fine-grained multithreading in a multipipelined processor core |
JP2007207039A (ja) * | 2006-02-02 | 2007-08-16 | Matsushita Electric Ind Co Ltd | メモリシステムおよびメモリアクセス制御方法 |
US20080114975A1 (en) * | 2006-11-10 | 2008-05-15 | Hsueh-Bing Yen | Method and processing system for nested flow control utilizing predicate register and branch register |
-
2007
- 2007-08-24 JP JP2007218827A patent/JP5043560B2/ja active Active
-
2008
- 2008-08-20 US US12/194,783 patent/US7836289B2/en active Active
- 2008-08-22 CN CN201310136817.7A patent/CN103257849A/zh active Pending
- 2008-08-22 CN CN200810210003.2A patent/CN101373427B/zh active Active
-
2010
- 2010-10-08 US US12/900,975 patent/US8015391B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6571385B1 (en) * | 1999-03-22 | 2003-05-27 | Intel Corporation | Early exit transformations for software pipelining |
US6493741B1 (en) * | 1999-10-01 | 2002-12-10 | Compaq Information Technologies Group, L.P. | Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit |
Also Published As
Publication number | Publication date |
---|---|
CN103257849A (zh) | 2013-08-21 |
US7836289B2 (en) | 2010-11-16 |
CN101373427A (zh) | 2009-02-25 |
JP5043560B2 (ja) | 2012-10-10 |
US20110029763A1 (en) | 2011-02-03 |
US8015391B2 (en) | 2011-09-06 |
JP2009053861A (ja) | 2009-03-12 |
US20090055635A1 (en) | 2009-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101373427B (zh) | 程序执行控制装置 | |
US10338927B2 (en) | Method and apparatus for implementing a dynamic out-of-order processor pipeline | |
US20160055004A1 (en) | Method and apparatus for non-speculative fetch and execution of control-dependent blocks | |
US7444501B2 (en) | Methods and apparatus for recognizing a subroutine call | |
JP2016207232A (ja) | 共有メモリへのアクセスの同期を緩和するプロセッサ、方法、システム、及びプログラム | |
US20180173534A1 (en) | Branch Predictor with Branch Resolution Code Injection | |
US9367314B2 (en) | Converting conditional short forward branches to computationally equivalent predicated instructions | |
WO2014004272A1 (en) | Methods and apparatus to extend software branch target hints | |
EP4020189A1 (en) | Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor | |
US20160283247A1 (en) | Apparatuses and methods to selectively execute a commit instruction | |
US11645078B2 (en) | Detecting a dynamic control flow re-convergence point for conditional branches in hardware | |
EP4020191A1 (en) | Alternate path decode for hard-to-predict branch | |
US20240118898A1 (en) | Selective use of branch prediction hints | |
US11907712B2 (en) | Methods, systems, and apparatuses for out-of-order access to a shared microcode sequencer by a clustered decode pipeline | |
CN100590592C (zh) | 处理器及其指令发布方法 | |
US20210200550A1 (en) | Loop exit predictor | |
US12039329B2 (en) | Methods, systems, and apparatuses to optimize partial flag updating instructions via dynamic two-pass execution in a processor | |
US20220197660A1 (en) | Context-based loop branch prediction | |
CN114647447A (zh) | 基于上下文的存储器间接分支目标预测 | |
EP3757772A1 (en) | System, apparatus and method for a hybrid reservation station for a processor | |
US6157995A (en) | Circuit and method for reducing data dependencies between instructions | |
EP4202664B1 (en) | System, apparatus and method for throttling fusion of micro-operations in a processor | |
US20220405102A1 (en) | Count to empty for microarchitectural return predictor security |
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 |