CN103984523B - 多发射指令处理系统及方法 - Google Patents

多发射指令处理系统及方法 Download PDF

Info

Publication number
CN103984523B
CN103984523B CN201310050848.0A CN201310050848A CN103984523B CN 103984523 B CN103984523 B CN 103984523B CN 201310050848 A CN201310050848 A CN 201310050848A CN 103984523 B CN103984523 B CN 103984523B
Authority
CN
China
Prior art keywords
instruction
branch
processor
segment
section
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
CN201310050848.0A
Other languages
English (en)
Other versions
CN103984523A (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.)
Shanghai Xinhao Bravechips Micro Electronics Co Ltd
Original Assignee
Shanghai Xinhao Bravechips Micro Electronics Co Ltd
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 Shanghai Xinhao Bravechips Micro Electronics Co Ltd filed Critical Shanghai Xinhao Bravechips Micro Electronics Co Ltd
Priority to CN201310050848.0A priority Critical patent/CN103984523B/zh
Priority to US14/766,756 priority patent/US20160004538A1/en
Priority to PCT/CN2014/071799 priority patent/WO2014121738A1/en
Publication of CN103984523A publication Critical patent/CN103984523A/zh
Application granted granted Critical
Publication of CN103984523B publication Critical patent/CN103984523B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Abstract

本发明提供了一种多发射指令处理系统及方法,所述多发射指令处理系统包括:处理器,所述处理器能够在同一时刻执行复数条指令;存储系统,所述存储系统用以存储指令;指令控制器,所述指令控制器包括轨道表,所述轨道表存储所述存储系统中存储的分支指令的位置;所述指令控制器根据所述分支指令的位置控制所述存储系统向处理器输出可能被执行的指令。在本发明提供的多发射指令处理系统中,通过指令控制器根据轨道表中存储的分支指令的位置控制存储系统向处理器输出可能被执行的指令,以充分利用处理器的指令执行能力,提高了多发射指令处理系统执行指令的性能。

Description

多发射指令处理系统及方法
技术领域
本发明涉及计算机架构技术领域,特别涉及一种多发射指令处理系统及方法。
背景技术
在现代处理器设计中,处理器的性能提升主要通过提高处理器的主频来实现。然而,随着片上集成的晶体管的数量越来越多,功耗和散热问题变得更加严重。单纯提高主频的方法已经很难适应现在处理器的发展。在这种情况下,需要一种简单而有效的处理器流水线控制方法来提高指令的执行效率。也就是说,用较少的硬件资源实现指令的流水线控制,从而实现较高的指令吞吐率。
流水线技术是指把一条指令的执行分成若干个阶段,每个阶段完成指令的一部分功能。这样在多条指令同时执行的时候,多条指令的不同阶段可以同时执行。在实际中,指令和指令之间可能存在着数据依赖关系。比如,一条指令的源操作数是前面一条指令的目的操作数,这样就产生了写后读相关。
现有技术中,通过具有多发射特性的处理器实现上述功能,该处理器能够在同一时刻执行复数条指令。但是,由于流水线技术存在上述依赖特性,往往不能充分使用处理器的上述性能。比如,一处理器能够在同一时刻执行4条指令,但由于流水线技术的依赖特性,只提供了3条指令给处理器同时执行。由此,便不能够充分利用处理器的多发射特性,降低了处理器执行指令的性能。
发明内容
本发明的目的在于提供一种多发射指令处理系统,以解决现有技术中不能够充分利用处理器的指令执行能力的问题。
为解决上述技术问题,本发明提供了一种多发射指令处理系统,所述多发射指令处理系统包括:
处理器,所述处理器能够在同一时刻执行复数条指令;
存储系统,所述存储系统用以存储指令;
指令控制器,所述指令控制器包括轨道表,所述轨道表存储所述存储系统中存储的分支指令的位置;所述指令控制器根据所述分支指令的位置控制所述存储系统向处理器输出可能被执行的指令。
可选的,在本发明所述的多发射指令处理系统中,所述指令控制器还包括循迹器,所述循迹器根据轨道表中存储的分支指令的位置,从处理器正在执行的指令之后的第一个分支指令开始,提前移动并指向若干层分支之后的分支指令;所述指令控制器根据所述循迹器移动过程中经过的分支指令,选择相应的指令段中的指令,并控制所述存储系统向处理器输出选中的指令供处理器执行。
可选的,在本发明所述的多发射指令处理系统中,所述指令控制器还包括一分段裁剪器,所述分段裁剪器给每个分支指令的目标指令段及每个分支指令的下一指令段给予不同的分段,并对每个分段给予不同的分段号;所述指令控制器控制所述存储系统向处理器输出可能被执行的指令时,同时向处理器输出该指令对应的分段号。
可选的,在本发明所述的多发射指令处理系统中,分支指令与其之前的连续所有非分支指令属于同一个分段。
可选的,在本发明所述的多发射指令处理系统中,所述分段裁剪器包括一裁剪器,所述裁剪器保留从处理器正在执行的分支指令开始的若干层的分支目标指令段和下一指令段的分段号。
可选的,在本发明所述的多发射指令处理系统中,当所述处理器执行一分支指令,得到分支转移是否发生的执行结果时,所述处理器向所述指令控制器发送所述执行结果。
可选的,在本发明所述的多发射指令处理系统中,所述裁剪器根据所述处理器向所述指令控制器发送来的执行结果,区分出裁剪器中肯定被执行的指令段的分段号;并将该肯定被执行的指令段的分段号送往处理器。
可选的,在本发明所述的多发射指令处理系统中,所述处理器根据接收的肯定被执行的指令段对应的分段号,将对应指令段产生的最终结果写入物理寄存器中。
可选的,在本发明所述的多发射指令处理系统中,所述裁剪器根据所述处理器向所述指令控制器发送来的执行结果,区分出裁剪器中确定不被执行的指令段的分段号;并将该确定不被执行的指令段的分段号送往处理器。
可选的,在本发明所述的多发射指令处理系统中,所述处理器根据接收的确定不被执行的指令段对应的分段号,删除所述指令段产生的中间结果及最终结果。
可选的,在本发明所述的多发射指令处理系统中,所述指令控制器对指令段中的指令的选取包括:对每一层分支的目标指令段及下一指令段中的指令平均选取。
可选的,在本发明所述的多发射指令处理系统中,所述指令控制器对指令段中的指令的选取包括:根据一定算法对每一层分支的目标指令段及下一指令段中的指令非平均选取。
可选的,在本发明所述的多发射指令处理系统中,所述轨道表还存储分支指令发生分支转移的预测位,所述预测位提供所述分支指令分支转移是否发生的概率。
可选的,在本发明所述的多发射指令处理系统中,当所述分支指令分支转移发生的概率比不发生的概率高时,所述指令控制器控制所述存储系统向处理器输出所述分支指令的目标指令段及所述分支指令的下一指令段中的指令,并且在所述提供的指令中,所述分支指令的目标指令段中的指令比分支指令的下一指令段中的指令多;当所述分支指令分支转移发生的概率比不发生的概率低时,所述指令控制器控制所述存储系统向处理器输出所述分支指令的目标指令段及所述分支指令的下一指令段中的指令,并且在所述提供的指令中,所述分支指令的目标指令段中的指令比分支指令的下一指令段中的指令少。
可选的,在本发明所述的多发射指令处理系统中,所述预测位为单数位或者复数位,其中,所述预测位的初始值设置为固定值或者根据分支指令转移跳转方向予以设置。
可选的,在本发明所述的多发射指令处理系统中,根据处理器执行分支指令得到的分支转移是否发生的结果,修正轨道表中对应所述分支指令的预测值。
可选的,在本发明所述的多发射指令处理系统中,还包括队列器,所述队列器存储所述存储系统输出的可能被执行的指令;所述队列器根据接收的需要删除的指令段对应的分段号,删除相应的指令段中的指令。
可选的,在本发明所述的多发射指令处理系统中,向处理器输出的可能被执行的指令属于多个线程。
可选的,在本发明所述的多发射指令处理系统中,所述分段裁剪器标记指令所属线程的线程号,及标记指令所属指令段的分段号。
本发明还提供了一种多发射指令处理方法,所述多发射指令处理方法包括:指令控制器根据轨道表存储的存储系统中存储的分支指令的位置,控制所述存储系统向处理器输出可能被执行的指令;处理器接收存储系统输出的可能被执行的指令,并同一时刻执行复数条指令。
可选的,在本发明所述的多发射指令处理方法中,指令控制器控制所述存储系统向处理器输出可能被执行的指令之前,还包括:指令控制器将分支指令与其之前的连续所有非分支指令归为一个分段。
可选的,在本发明所述的多发射指令处理方法中,指令控制器将分支指令与其之前的连续所有非分支指令归为一个分段包括:指令控制器给每个分支指令的目标指令段及每个分支指令的下一指令段给予不同的分段。
可选的,在本发明所述的多发射指令处理方法中,指令控制器将分支指令与其之前的连续所有非分支指令归为一个分段之时/后,还包括:指令控制器对每个分段给予不同的分段号。
可选的,在本发明所述的多发射指令处理方法中,指令控制器控制所述存储系统向处理器输出可能被执行的指令时,同时向处理器输出该指令对应的分段号。
可选的,在本发明所述的多发射指令处理方法中,还包括:当所述处理器执行一分支指令,得到分支转移是否发生的执行结果时,所述处理器向所述指令控制器发送所述执行结果。
可选的,在本发明所述的多发射指令处理方法中,还包括:所述指令控制器根据所述执行结果,区分出肯定被执行的指令段的分段号;并将该肯定被执行的指令段的分段号送往处理器。
可选的,在本发明所述的多发射指令处理方法中,还包括:所述处理器根据接收的肯定被执行的指令段对应的分段号,将对应指令段产生的最终结果写入物理寄存器中。
可选的,在本发明所述的多发射指令处理方法中,还包括:所述指令控制器根据所述执行结果,区分出确定不被执行的指令段的分段号;并将该确定不被执行的指令段的分段号送往处理器。
可选的,在本发明所述的多发射指令处理方法中,还包括:所述处理器根据接收的确定不被执行的指令段对应的分段号,删除所述指令段产生的中间结果及最终结果。在本发明提供的多发射指令处理系统中,通过指令控制器根据轨道表中存储的分支指令的位置控制存储系统向处理器输出可能被执行的指令,以充分利用处理器的指令执行能力,提高了多发射指令处理系统执行指令的性能。
附图说明
图1是本发明实施例的多发射指令处理系统的一框结构示意图;
图2是本发明实施例的指令控制器提供指令的原理示意图;
图3是本发明实施例的多发射指令处理系统的另一框结构示意图;
图4是本发明实施例的循迹器的结构示意图;
图5a~5c是本发明实施例的分支指令与指令段的对应关系示意图;
图6a是本发明实施例的轨道表中存储单元存储分支指令位置的格式示意图;
图6b是本发明实施例指令选取的示意图;
图7a~7b是本发明实施例的预测位示意图;
图8是本发明实施例的循迹器的另一结构示意图;
图9a是本发明实施例的多发射指令处理系统的另一框结构示意图;
图9b是本发明实施例的循迹器中四个寄存器值产生过程的示意图;
图10是本发明实施例的多发射指令处理系统的另一框结构示意图;
图11是本发明实施例的分段裁剪器所做的标记结构示意图。
具体实施方式
以下结合附图和具体实施例对本发明提出的多发射指令处理系统作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
请参考图1,其为本发明实施例的多发射指令处理系统的一框结构示意图。如图1所示,所述多发射指令处理系统1包括:
处理器10,所述处理器10能够在同一时刻执行复数条指令;
存储系统11,所述存储系统11用以存储指令;
指令控制器12,所述指令控制器12包括轨道表,所述轨道表存储所述存储系统11中存储的分支指令的位置;所述指令控制器12根据所述分支指令的位置控制所述存储系统11向处理器10输出可能被执行的指令。
在此,需说明的是,用语“可能被执行的指令(段)”与“肯定被执行的指令(段)”、“确定不被执行的指令(段)”相对应,说明一指令(段)的三种情况。第一种情况:该指令(段)可能需要被执行也可能不被执行,即该指令(段)被执行的概率为大于0且小于1;第二种情况:该指令(段)一定需要被执行,即该指令(段)被执行的概率为1;第三种情况:该指令(段)一定不需要被执行,即该指令(段)被执行的概率为0。
在本实施例中,指令控制器12通过总线141控制存储系统11向处理器10提供指令142,并对不同的指令段给予不同的分段号129。在此,每个指令段有且仅有一个分支指令,具体的,将每个分支指令及其之前的直到前一个分支指令之后的指令归为一个指令段。处理器10向指令控制器12反馈指令执行的结果126,特别地,处理器10向指令控制器反馈分支指令执行的结果,即表示分支指令的分支转移是否发生的信息。指令控制器12根据接收到的分支指令执行结果126,区分出已经提供给处理器10的指令中哪些属于可能被执行的指令,哪些属于肯定被执行的指令,哪些属于确定不被执行的指令,并将确定不被执行的指令对应的分段号128发送给处理器10以清除这些指令执行的结果或中间结果,以及将肯定被执行的指令对应的分段号135发送给处理器10以将这些指令的执行结果写入物理寄存器。
在本实施例中,指令控制器12可以在处理器10产生某一分支指令的执行结果之前,将该分支指令的下一指令段和目标指令段中的指令提供给处理器10执行。即通过指令控制器12根据轨道表中存储的分支指令的地址控制存储系统11向处理器10输出可能被执行的指令,使得所述处理器10能够得到足够的指令进行处理,从而可以充分利用处理器10的指令执行能力,提高多发射指令处理系统1执行指令的性能。请参考图2,其为本发明实施例的指令控制器提供指令的原理示意图。指令段A中包含的指令为肯定被执行的指令,指令段A的最后一条指令为分支指令,该分支指令的下一指令段为指令段B,目标指令段为指令段C。当该分支指令的执行结果尚未产生时,指令段B和C均为可能被执行的指令段。即便采用了现有的各种分支预测技术,选择指令段B或C中的一个送到处理器10执行,也会因为该指令段中指令之间存在的相关性而无法充分利用处理器10的指令执行能力。在本实施例中,指令控制器12向处理器10提供了指令段B和C中的指令,由于不同指令段中的指令没有相关性,因此可以充分用足处理器10的指令执行能力。
将本发明应用在现有的具有较深流水线结构的处理器中时,往往在某个分支指令执行结果产生之前,已经有更多层分支指令对应的下一指令段及目标指令段中的指令被送到处理器执行。此时,一旦产生了某个分支指令的执行结果,则该分支指令的下一指令段及目标指令段中的一个成为肯定被执行的指令段,从该指令段中的分支指令延伸的后续各个指令段为可能被执行的指令段;而该分支指令的下一指令段及目标指令段中的另一个及从该指令段中的分支指令延伸的后续各个指令段均成为确定不被执行的指令段。
当分支指令的执行结果产生后,指令段B或C中的一个成为肯定被执行的指令段,而另一个成为确定不被执行的指令段。指令控制器12根据处理器10送来的分支指令执行结果,可以区分这两者,并向处理器10发送相应的指令段分段号129,删除确定不被执行的指令段对应的执行结果及中间结果,同时使得肯定被执行的指令段对应的执行结果能够被写入物理寄存器。接下去,进一步阐述所述多发射指令处理系统1的结构,具体的,请参考图3,其为本发明实施例的多发射指令处理系统的另一框结构示意图。处理器10能同时执行复数条指令,其执行单元143输出的执行结果可以通过总线130送到寄存器堆4(如:虚拟寄存器堆或重排序缓冲)准备写回物理寄存器,也可以通过总线130旁路送到分配单元144供后续指令使用。在本实施例中,所述指令控制器12还包括主动表145,所述主动表145包含了轨道表存储的分支指令的位置信息与这些分支指令的指令地址之间的对应关系。
当存储系统11中只包含一层存储器时,轨道表的行与该存储器的行一一对应。当存储系统11中包含多于一层存储器时,轨道表的行与存储系统11中最接近处理器10的存储器的行一一对应。在此,“最接近处理器的存储器”指的是在存储层次中离处理器最近、通常也是速度最快的存储器,如一级缓存,或第一级存储器。
如图3所示,进一步的,所述指令控制器12还包括循迹器120,所述循迹器120的读指针131根据轨道表2中存储的分支指令的位置,从处理器10正在执行的指令之后的第一个分支指令开始,提前移动并指向若干层分支之后的分支指令;所述指令控制器12根据所述读指针131移动过程中经过的分支指令,选择相应的指令段中的指令,并控制所述存储系统11(在此,所述存储系统11包括第一级存储器110及第二级存储器111)向处理器10输出选中的指令。
在本实施例中,循迹器120可以指向轨道表中不同的行。指令控制器12可以根据循迹器120的读指针131指向的轨道表行找到存储系统11中对应的指令段,也可以根据循迹器120的读指针131指向的轨道表项中包含的目标指令地址找到存储系统11中对应的指令段。
具体如图9a所示,在本实施例中,所述指令控制器12还包括分段裁剪器121,所述分段裁剪器121中的分段模块149为不同的指令段分配不同的分段号,并将分段号通过总线129送往处理器10。所述分段裁剪器121还根据处理器10对分支指令的执行结果,区分出确定不被执行的指令段的分段号,并将确定不被执行的指令段的分段号通过总线128送往处理器10以清除这些指令的执行结果或中间结果。
请参考图4,其为本发明实施例的循迹器的结构示意图。在本实施例中,示意性的示出了所述循迹器120看到第二层指令段的情况。如图4所示,具体的,所述循迹器120包括两个寄存器,分别用以存储下一指令段和目标指令段中的分支指令。
以循迹器120的读指针131提前移动并指向一层分支之后的分支指令为例。对于指向更多层分支之后的分支指令的情况,也可以以此类推。在本实施例中,当循迹器120读指针131指向的是一个分支指令,即读指针131的值为分支源指令地址时,从轨道表2中读出的指令类型进行译码得到分支指令类型。此时,选择器136选择轨道表2输出的目标指令段地址值,并存储到寄存器124中,同时对读指针131上的分支源指令地址值经增量器140增一后得到下一指令段地址值,并存储到寄存器123中。
在本实施例中,可以在该分支指令的执行结果产生之前向处理器10提供该分支指令的下一指令段及目标指令段中的指令。在此,以对分支指令的下一指令段及目标指令段中的指令作平均选取为例。信号138表示分支指令是否执行完毕。当所述分支指令尚未执行完毕时,信号138控制选择器137选择来源于选取逻辑132的输出以控制选择器139。
选取逻辑132交替使选择器139选择寄存器123及寄存器124中保存的地址值。具体地,当选取逻辑132控制选择器139选择寄存器123中的地址值时,读指针131向第一级存储器110输出的就是寄存器123中当时保存的地址值,第一级存储器110根据该地址向处理器10输出相应指令并将这些指令标记为“分支转移不发生”,供处理器10执行,同时该地址值经增量器140增一后得到该指令段中的下一个地址,并将该下一个地址存储到寄存器123中(在更新寄存器123的同时,寄存器124的值保持不变)。当选取逻辑132控制选择器139选择寄存器124中的地址值时,读指针131向第一级存储器110输出的就是寄存器124中当时保存的地址值,第一级存储器110根据该地址向处理器10输出相应指令并将这些指令标记为“分支转移发生”,供处理器10执行,同时该地址值经增量器140增一后得到该指令段中的下一个地址。若此时读指针131指向的指令不是分支指令,则选择器136选择增量器140输出的下一个地址存储到寄存器124中(在更新寄存器124的同时,寄存器123的值保持不变)。如此反复,即可不断从第一级存储器110中平均选取下一指令段及目标指令段中的指令供处理器10执行,直到读指针131指向一个分支指令为止。
在本实施例中,作为一种具体实现方法,读指针131指向下一指令段及目标指令段中任意一个分支指令即停止移动。也可以有其他实现方法,如,当读指针131指向下一指令段中的分支指令时,停止寄存器123的更新,但依然允许寄存器124的更新,直到读指针131指向目标指令段中的分支指令。这样可以提供更多的指令供处理器10执行,更充分地用足处理器10的指令执行能力。其他类似的实现方法在此不再赘述。
当所述分支指令执行完毕时,信号138控制选择器137选择来源于处理器10的表示分支转移是否发生的判定信息126以控制选择器139。具体地,若分支转移没有发生,则选择寄存器123中当时存储的地址值作为新的读指针131的值;若分支转移发生,则选择寄存器124中当时存储的地址值作为新的读指针131的值。如此即可沿正确轨迹继续移动,并对下一个分支指令进行类似的推测执行,同时指令控制器12向处理器10发送信息,根据分支转移发生与否,保留处理器10中与之相同标记的推测执行的指令的执行结果,清除与之不同标记的推测执行的指令的执行结果或中间结果。
在此,请参考图5a~5c,其为本发明实施例的分支指令与指令段的对应关系示意图。请参考图5a~5c,“A”、“B”、“C”、“D”、“E”、“F”、“G”分别表示一指令段;同时,图5a~5b中的粗点‘a’、‘b’和‘c’表示分支指令。图5a显示了分支指令及指令段在存储器中的具体位置,图5b显示了图5a中分支指令与指令段之间的关系。
在此,示出了三层指令段,分别为第一层指令段“A”、第二层指令段“B”、第二层指令段“C”、第三层指令段“D”、第三层指令段“E”、第三层指令段“F”、第三层指令段“G”;其中,第二层指令段“B”是第一层指令段“A”的下一指令段,第二层指令段“C”是第一层指令段“A”的目标指令段(即第一层指令段“A”中的分支指令发生分支转移时,将要跳转到的指令段);第三层指令段“D”是第二层指令段“B”的下一指令段,第三层指令段“E”是第二层指令段“B”的目标指令段,第三层指令段“F”是第二层指令段“C”的下一指令段,第三层指令段“G”是第二层指令段“C”的目标指令段。
在本实施例中,循迹器120的读指针131根据轨道表2中存储的分支指令的位置,从处理器10正在执行的指令之后的第一个分支指令开始,可以提前移动并指向若干层分支之后的分支指令,例如,可以移动到指令段“B”与指令段“D、E”之间的交点(即分支指令b)上、指令段“C”与指令段“F、G”之间的交点(即分支指令c)上,甚至更下层的分支指令上。
在循迹器120的读指针131的这一移动过程中,所述指令控制器12就可以选择相应的指令段中的指令,例如选择指令段“B”、指令段“C”中的指令,并控制所述存储系统11向处理器10输出选中的指令。
所述指令控制器12对于指令的选取可以通过如下几种方式予以实现:
1、对每一层分支的目标指令段及下一指令段中的指令平均选取。例如,对于第一层分支(或者说对于第一层指令段A)的目标指令段C及下一指令段B中的指令平均选取;设指令段C及指令段B中均有5条指令,当利用平均选取原则时,可以在指令段C及指令段B中均顺序选取2条指令。也可以先选取完指令段C中的指令,再选取指令段B中的指令。如在图5c实施例中,指令段A是肯定被执行的指令,之后选取指令段C中的全部指令,再之后依次选择指令段B、D、E、G中的全部指令,按图示从左到右的顺序送往处理器执行,直到处理器产生指令段A中的分支指令a的执行结果。
2、根据一定算法对每一层分支的目标指令段及下一指令段中的指令非平均选取。在此,主要强调也可以对每一层分支的目标指令段及下一指令段中的指令非平均选取,所述“一定算法”可以是任意实现上述功能的算法,本申请对此并不做限定。例如,根据“一定算法”,在选取指令时,每一层分支的目标指令段比下一指令段中的指令多选一个。
3、所述轨道表2还存储分支指令发生分支转移的预测位,所述预测位提供所述分支指令分支转移是否发生的预测概率。请参考图6a,其为本发明实施例的轨道表中存储单元存储分支指令位置的格式示意图。如图6a所示,其中“PRED”为预测位,表征分支指令分支转移是否发生的概率;“BNX”及“BNY”可相应参考图2。其中,所述预测位为单数位或者复数位,所述预测位的初始值设置为固定值或者根据分支指令转移跳转方向予以设置。具体的,请参考图7a及7b,其中,图7a示出了预测位为一位(单数位)的情况,图7b示出了预测位两位(复数位中的一种)的情况,此外,预测位还可以是三位、四位,甚至更多位。此外,关于预测位的初始值,可以设置为固定值,也可以根据分支指令转移跳转方向予以设置。以预测位为一位为例,可以有三种预测位初始值设置方法:将初始值设定为‘0’以表示默认不发生分支转移;或将初始值设定为‘1’以表示默认发生分支转移;或根据分支指令的分支转移方向设置预测位初始值,例如将向前转移的分支指令的预测位初始值设定为‘0’以表示默认不发生分支转移,并将向后转移的分支指令的预测位初始值设定为‘1’以表示默认发生分支转移。当然,在本发明的其他实施例中,也可以做相反的设定。
当轨道表2还存储分支指令发生分支转移的预测位时,指令控制器12对于指令的选取可以依据预测位而定。具体的,
当所述分支指令分支转移发生的概率比不发生的概率高时,所述指令控制器控制所述存储系统向处理器输出所述分支指令的目标指令段及所述分支指令的下一指令段中的指令,并且在所述提供的指令中,所述分支指令的目标指令段中的指令比分支指令的下一指令段中的指令多;
当所述分支指令分支转移发生的概率比不发生的概率低时,所述指令控制器控制所述存储系统向处理器输出所述分支指令的目标指令段及所述分支指令的下一指令段中的指令,并且在所述提供的指令中,所述分支指令的目标指令段中的指令比分支指令的下一指令段中的指令少。
例如,预测位为“0”时,表示不发生分支转移,也即指令分支转移发生的概率比不发生的概率低,仍以指令段B及指令段C为例,则此时,可在指令段B中选取的指令数量多于在指令段C中选取的指令数量,
请参考图6b,其为本发明实施例指令选取的示意图。在本实施例中共有三个指令段,指令段A包含了指令A1、A2和A3,其中A3为分支指令。分支指令A3的下一指令段B包含了指令B1、B2和B3。分支指令A3的目标指令段C包含了指令C1、C2和C3。在此,指令段A为肯定被执行的指令段,指令段B和C均是可能被执行的指令段。假设指令段B和C中的指令均没有相关性。当分支指令A3对应的预测位(PRED)的值为‘00’时,表示分支指令A3的分支转移很可能不发生,则指令控制器12可以依次选取A1、A2、A3、B1、B2、B3送到处理器执行,即选取了指令段B中的全部指令。当分支指令A3对应的预测位(PRED)的值为‘01’时,表示分支指令A3的分支转移较可能不发生,则指令控制器12可以依次选取A1、A2、A3、B1、C1、B2送到处理器执行,即从指令段B中选取了比指令段C更多的指令。当分支指令A3对应的预测位(PRED)的值为‘10’时,表示分支指令A3的分支转移较可能发生,则指令控制器12可以依次选取A1、A2、A3、C1、B1、C2送到处理器执行,即从指令段C中选取了比指令段B更多的指令。当分支指令A3对应的预测位(PRED)的值为‘11’时,表示分支指令A3的分支转移很可能发生,则指令控制器12可以依次选取A1、A2、A3、C1、C2、C3送到处理器执行,即选取了指令段C中的全部指令。当然,在实际执行过程中,由于指令间存在相关性等原因,选取指令的顺序会略有不同,这些都可以按本实施例类似方法实现,在此不再赘述。
进一步的,在本实施例中,还可根据处理器10执行分支指令得到的分支转移是否发生的结果,修正轨道表2中对应所述分支指令的预测值。
例如,在图7a实施例中,某个分支指令的预测位初始值被设置为‘0’,即表示预测分支转移不发生。若执行到该分支指令时分支转移不发生,则保持该预测位为‘0’;若执行到该分支指令时分支转移发生,则更新该预测位为‘1’;之后,若执行到该分支指令时分支转移发生,则保持该预测位为‘1’,若执行到该分支指令时分支转移不发生,则更新该预测位为‘0’。
又如,在图7b实施例中,某个分支指令采用了两位的预测位,其初始值被设置为‘00’,根据分支指令的分支转移是否发生的信息可以对该分支指令的预测位进行修正。在本实施例中,预测位为‘00’表示分支转移很可能不发生,‘01’表示分支转移较可能不发生,‘10’表示分支转移较可能发生,‘11’表示分支转移很可能发生。这样,当该分支指令的分支转移不发生时,相应预测位向更可能不发生的状态修正;当该分支指令的分支转移发生时,相应预测位向更可能发生的状态修正。
在本实施例中,循迹器120可以根据预测位的值对分支指令的下一指令段及目标指令段中的指令进行不同比例的选取。请参考图8,其为本发明实施例的循迹器的另一结构示意图。以循迹器120的读指针131提前移动并指向一层分支之后的分支指令并根据预测位选取指令为例。对于指向更多层分支之后的分支指令的情况,也可以以此类推。
在本实施例中,当循迹器120读指针131指向的是一个分支指令,即读指针131的值为分支源指令地址时,从轨道表2中读出的指令类型进行译码得到分支指令类型。此时,选择器136选择轨道表2输出的目标指令段地址值存储到寄存器124中,同时对读指针131上的分支源指令地址值经增量器140增一后得到下一指令段地址值,并存储到寄存器123中。在本实施例中,还可以从轨道表中读出该分支指令分支转移是否发生的预测信息125,并根据预测信息125从寄存器123中存储的下一指令段地址值与寄存器124中存储的目标指令段地址值中选出一个作为新的循迹器读指针值,使得读指针131不断前行,控制第一级存储器110输出指令经相应标记后供处理器10执行,直到读指针131指向分支指令为止。
例如,若预测信息125表示该分支指令的分支转移被预测为很可能不发生,则与图4实施例类似,当所述分支指令尚未执行完毕时,信号138控制选择器137选择预测信息125以控制选择器139选择寄存器123中存储的地址值作为读指针131的值。这样,读指针131向第一级存储器110输出的就是寄存器123中当时保存的地址值,第一级存储器110根据该地址向处理器10输出相应指令(即下一指令段中的指令)并将这些指令标记为“分支转移不发生”,供处理器10执行,同时该地址值经增量器140增一后得到该指令段中的下一个地址,并将该下一个地址存储到寄存器123中(在更新寄存器123的同时,寄存器124的值保持不变)。如此反复,使得读指针131不断前行,控制第一级存储器110输出指令供处理器10执行,直到读指针131指向分支指令为止。
又如,若预测信息125表示该分支指令的分支转移被预测为很可能发生,则与图4实施例类似,当所述分支指令尚未执行完毕时,信号138控制选择器137选择预测信息125以控制选择器139选择寄存器124中存储的地址值作为读指针131的值。这样,读指针131向第一级存储器110输出的就是寄存器124中当时保存的地址值,第一级存储器110根据该地址向处理器10输出相应指令(即目标指令段中的指令)并将这些指令标记为“分支转移发生”,供处理器10执行,同时该地址值经增量器140增一后得到该指令段中的下一个地址,并将该下一个地址存储到寄存器124中(在更新寄存器124的同时,寄存器123的值保持不变)。如此反复,使得读指针131不断前行,控制第一级存储器110输出指令供处理器10执行,直到读指针131指向分支指令为止。
当所述分支指令执行完毕时,信号138控制选择器137选择来源于处理器10的表示分支转移是否发生的判定信息126以控制选择器139。具体地,若分支转移没有发生,则选择寄存器123中当时存储的地址值作为新的读指针131的值;若分支转移发生,则选择寄存器124中当时存储的地址值作为新的读指针131的值。如此即可沿正确轨迹继续移动,并对下一个分支指令进行类似的推测执行,同时指令控制器12向处理器10发送信息,按图4实施例所述相同方法,根据分支转移发生与否,保留处理器10中与之相同标记的推测执行的指令的执行结果,清除与之不同标记的推测执行的指令的执行结果或中间结果。
进一步地,可以在图8实施例的基础上增加一个选取控制逻辑,使得处理器的指令执行能力因指令间的相关性而无法用足时,指令控制器12能控制存储系统11也提供预测为较不可能被执行到的指令段中的指令给处理器10执行,以充分用足处理器10的指令执行能力。所述选取控制逻辑的结构与图4实施例中的选取逻辑132类似,执行方式与图6b类似,在此不再赘述。
这样,结合现有的各种分支预测方法,若分支预测没有错误,则本发明提出的技术方案能达到现有分支预测技术同样的效果;一旦分支预测错误,则本发明提出的技术方案已经在正确的指令段上执行了若干指令,在没有增加处理器指令执行能力的情况下,比现有分支预测技术有更好的性能。
请参考图9a,其为本发明实施例的多发射指令处理系统的另一框结构示意图。在本实施例中,循迹器150的读指针131可以提前移动并指向一层分支之后的分支指令。所述循迹器150包含了四个用于保存指令段地址的寄存器,分别用于存放下一指令段的下一指令段地址、下一指令段的目标指令段地址、目标指令段的下一指令段地址及目标指令段的目标指令段地址。其中,通过对循迹器150的读指针131的值自增,可以得到下一指令段的地址,再对该下一指令段的分支指令地址自增,可以得到所述下一指令段的下一指令段地址,且根据该下一指令段的分支指令地址可以从轨道表中读出所述下一指令段的目标指令段地址;也根据可以循迹器150的读指针131指向的分支指令从轨道表中读出该分支指令的目标指令段地址,再对该目标指令段的分支指令地址自增,可以得到所述目标指令段的下一指令段地址,且根据该目标指令段的分支指令地址可以从轨道表中读出所述目标指令段的目标指令段地址。
在本实施例中,所述分段裁剪器121中的分段模块149给每个分支指令的目标指令段及每个分支指令的下一指令段给予不同的分段,并对每个分段给予不同的分段号;所述指令控制器12控制所述存储系统11向处理器10输出可能被执行的指令时,同时向处理器10输出该指令对应的分段号。具体的,分支指令与其之前的连续所有非分支指令属于同一个分段。例如,指令段A给予的分段号为LA,指令段B给予的分段号为LB,指令段C给予的分段号为LC,指令段D给予的分段号为LD,指令段E给予的分段号为LE,指令段F给予的分段号为LF,指令段G给予的分段号为LG。在此,需说明的是,对于存在于不同时间段的指令段,所使用的分段号可以相同。例如,指令段A给予的分段号为LA,同时,指令段A已经被执行完毕,则到了后续指令段,例如指令段H时,所述指令段H的分段号可以为LA。在此仅列举了一种指令段存在于不同时间段的情况,当其他同类情况出现时,亦适用。
在本实施例中,所述分段裁剪器121包括一裁剪器148,所述裁剪器148保留从处理器正在执行的分支指令开始的若干层的分支目标指令段和下一指令段的分段号。具体的,在本实施例中,所述裁剪器148所保留的分段号与所述循迹器150所往前看到的分支指令的层数相应。每当处理器10产生对应某个分支指令的分支转移判定后,就可以从裁剪器148所保留的分段号中选出可能被执行的指令段对应的一半分段号,其中包含了一个与该分支指令对应的肯定被执行的指令段的分段号;同时可以选出确定不被执行的指令段对应的另一半分段号。
例如,处理器10产生对应某个分支指令的分支转移判定为分支转移发生,则对应该分支指令的目标指令段对应的分段号就是肯定被执行的分段号,而从该目标指令段开始的其余层指令段对应的分段号是可能被执行的分段号,相应地,该分支指令的下一指令段及其后的其余层指令段对应的分段号是确定不被执行的分段号。所述确定不被执行的分段号被送往处理器10清除对应指令段的执行结果及中间结果。
这样,每当产生一个分支指令的分支转移判定后,就可以裁剪掉一半指令段。同时循迹器150的读指针131继续移动到下一层分支指令,指向于上一层同样数量的新的指令段,并由分段裁剪器121指定分段号,使得裁剪器148中保存的分段号得以更新。
请参考图9b,其为本发明实施例的循迹器中四个寄存器值产生过程的示意图。在本实施例中,每一行表示产生过程中的一步操作,每一列对应图9a实施例循迹器中的一个寄存器,且从左到右的每列分别对应图9a实施例循迹器中相应从左到右的一个寄存器。以图5b实施例中的指令段为例,指令段‘A’的地址已经被存储到左起第一个寄存器中,如图9b中第一行所示。
首先,可以根据肯定被执行的指令段‘A’中的分支指令‘a’,通过自增器得到下一指令段‘B’的地址并存储到左起第二个寄存器中,同时可以从轨道表中读出分支指令‘a’的目标指令段‘C’的地址并存储到左起第四个寄存器中,如图9b中第二行所示。
之后,可以根据指令段‘B’中的分支指令‘b’,通过自增器得到下一指令段‘D’的地址并存储到左起第一个寄存器中,同时可以从轨道表中读出分支指令‘b’的目标指令段‘E’的地址并存储到左起第三个寄存器中。再根据指令段‘C’中的分支指令‘c’,通过自增器得到下一指令段‘F’的地址并存储到左起第二个寄存器中,同时可以从轨道表中读出分支指令‘c’的目标指令段‘G’的地址并存储到左起第四个寄存器中,如图9b中第三行所示。这样,就完成了循迹器150中四个寄存器值的产生。在这些寄存器值产生的过程中,选择器151按之前所述方法选取这些寄存器值中的一个,或依次选取这些寄存器值中的部分或全部,通过总线152送往第一级存储器110以输出相应指令段中的指令供处理器10执行;同时选择器153选择与总线152上指令段地址对应的分段号,并通过总线129送往处理器10标记对应的指令段。
在本实施例中,当所述处理器10执行一分支指令,得到分支转移是否发生的执行结果时,所述处理器10向所述指令控制器12发送所述执行结果。所述裁剪器148根据所述处理器10向所述指令控制器12发送来的执行结果,区分出裁剪器148中确定不被执行的指令段的分段号;并将该确定不被执行的指令段的分段号通过总线128送往处理器10。所述处理器10根据接收的确定不被执行的指令段对应的分段号,删除所述指令段产生的中间结果及最终结果。
此外,所述裁剪器148还区分出裁剪器148中肯定被执行的指令段的分段号;并将该肯定被执行的指令段的分段号通过总线135送往处理器10。所述处理器10根据接收的肯定被执行的指令段对应的分段号,将对应指令段产生的最终结果写入物理寄存器中。
在此需要说明的是,多发射指令处理系统的寄存器堆通常由包含了物理寄存器的虚拟寄存器堆,或由重排序缓冲及物理寄存器构成。本发明所述的技术方案对于采用这两种结构的多发射指令处理系统均适用。
在此,即根据处理器10对于分支指令的执行结果,便可得出分支转移是否发生的信息,仍以指令段A、指令段B及指令段C为例,则根据指令段A中的分支转移是否发生的信息,便可得出是要执行指令段B还是执行指令段C。而在前述的执行过程中,指令段B及指令段C中均有部分/全部指令送入处理器10予以执行。当确实是执行指令段B还是执行指令段C时,例如根据指令段A中的分支转移是否发生的信息,确定指令段C不需要被执行,同时指令段B需要被执行。则此时,将指令段C对应的分段号LC通过总线128发送给处理器10,所述处理器10根据接收的确定不被执行的指令段对应的分段号,删除所述指令段产生的中间结果及最终结果。同时,将指令段B对应的分段号LB通过总线135发送给处理器10,所述处理器10根据接收的肯定被执行的指令段对应的分段号,将对应指令段产生的最终结果写入物理寄存器4中。在此,所述处理器10可能处理了指令段C中的部分指令,产生了一些中间结果;也有可能已完成对于指令段C的处理,产生了最终结果(该最终结果尚未被写入处理器10的物理寄存器中),不管哪种情况,均将执行指令段C而产生的结果予以删除。
具体地,在本实施例中,每个裁剪模块133输入的两个分段号分别属于当前正在执行的第一层分支指令的下一指令段或其后续指令段和目标指令段或其后续指令段,根据处理器10送来的分支转移是否发生的信息,可以从这两个分段号中选出一个确定不被执行的指令段的分段号,并选出一个可能被执行的指令段的分段号。其中,确定不被执行的分段号通过总线128送往处理器10清除对应指令段的执行结果及中间结果;可能被执行的分段号则被送往下一级裁剪模块等待下一个分支指令执行结果。
类似地,最后一层裁减模块134输入的两个分段号分别属于同一个分支指令的下一指令段和目标指令段,根据处理器10送来的分支转移是否发生的信息,可以从这两个分段号中选出一个确定不被执行的指令段的分段号,并选出一个肯定被执行的指令段的分段号。其中,确定不被执行的分段号通过总线128送往处理器10清除对应指令段的执行结果及中间结果;肯定被执行的分段号则通过总线135被送往处理器10使得对应指令段的执行结果能够被写回物理寄存器。
需要说明的是,裁减模块也可以不同时产生确定不被执行的分段号和可能被执行(或肯定被执行)的分段号。例如,裁减模块只产生确定不被执行的分段号用以清除处理器中对应指令段的执行结果及中间结果,并采用一个计数器计数,当所述计数器计数达到某个预设值时将未被清除指令段的执行结果写回物理寄存器。又如,裁减模块只产生肯定被执行的分段号,并据此将肯定被执行的指令段对应的执行结果写回物理寄存器,而对其他指令段的执行结果不写回物理寄存器。上述两种方法均能实现与图9a实施例同样的效果。
进一步的,向处理器10输出的可能被执行的指令属于多个线程。具体的,请参考图10,其为本发明实施例的多发射指令处理系统的另一框结构示意图。在本实施例中,循迹器120的结构与图9a实施例中的类似,不同之处在于用四个寄存器组代替了图9实施例中四个用于保存指令段地址的寄存器,其中每个寄存器组包含了四个寄存器,以保存四个不同线程对应的指令段地址。如图10所示,循迹器120中分支指令属于四个线程中的一个,由此向处理器10输出的可能被执行的指令也将属于相应的四个线程中的一个。对此,本实施例中,分段裁剪器121的分段模块在标记指令所述指令段的分段号147的同时,还标记指令所述线程的线程号146,即用带线程号的分段号标记被送往处理器10执行的指令段及需要被清除的指令段。具体的,请参考图11。由此,根据所述分段裁剪器121给出的标记,将能够直接获知指令所属的线程及指令段,从而实现同时支持四个线程的循迹器结构。此时,循迹器120中不同寄存器组的相应寄存器对应同一个线程。这样,当处理器切换线程时,可以直接使用线程对应的寄存器中的循迹地址控制存储器向处理器提供指令,以达到零等待的线程切换。
综上,在本实施例提供的多发射指令处理系统中,通过指令控制器根据轨道表中存储的分支指令的位置控制存储系统向处理器输出可能被执行的指令,以充分利用处理器的指令执行能力,提高了多发射指令处理系统执行指令的性能。
上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

Claims (24)

1.一种多发射指令处理系统,包括:
处理器,所述处理器能够在同一时刻执行复数条指令;
存储系统,所述存储系统用以存储指令;
指令控制器,所述指令控制器包括轨道表,所述轨道表存储所述存储系统中存储的分支指令的位置;所述指令控制器根据所述分支指令的位置控制所述存储系统向处理器输出可能被执行的指令;
其特征在于:
所述指令控制器还包括循迹器,所述循迹器根据轨道表中存储的分支指令的位置,从处理器正在执行的指令之后的第一个分支指令开始,提前移动并指向若干层分支之后的分支指令;所述指令控制器根据所述循迹器移动过程中经过的分支指令,选择相应的指令段中的指令,并控制所述存储系统向处理器输出选中的指令供处理器执行。
2.如权利要求1所述的多发射指令处理系统,其特征在于,所述指令控制器还包括一分段裁剪器,所述分段裁剪器给每个分支指令的目标指令段及每个分支指令的下一指令段给予不同的分段,并对每个分段给予不同的分段号;
所述指令控制器控制所述存储系统向处理器输出可能被执行的指令时,同时向处理器输出该指令对应的分段号。
3.如权利要求2所述的多发射指令处理系统,其特征在于,分支指令与其之前的连续所有非分支指令属于同一个分段。
4.如权利要求2所述的多发射指令处理系统,其特征在于,所述分段裁剪器包括一裁剪器,所述裁剪器保留从处理器正在执行的分支指令开始的若干层的分支目标指令段和下一指令段的分段号。
5.如权利要求4所述的多发射指令处理系统,其特征在于,当所述处理器执行一分支指令,得到分支转移是否发生的执行结果时,所述处理器向所述指令控制器发送所述执行结果。
6.如权利要求5所述的多发射指令处理系统,其特征在于,所述裁剪器根据所述处理器向所述指令控制器发送来的执行结果,区分出裁剪器中肯定被执行的指令段的分段号;并将该肯定被执行的指令段的分段号送往处理器。
7.如权利要求6所述的多发射指令处理系统,其特征在于,所述处理器根据接收的肯定被执行的指令段对应的分段号,将对应指令段产生的最终结果写入物理寄存器中。
8.如权利要求7所述的多发射指令处理系统,其特征在于,所述裁剪器根据所述处理器向所述指令控制器发送来的执行结果,区分出裁剪器中确定不被执行的指令段的分段号;并将该确定不被执行的指令段的分段号送往处理器。
9.如权利要求8所述的多发射指令处理系统,其特征在于,所述处理器根据接收的确定不被执行的指令段对应的分段号,删除所述指令段产生的中间结果及最终结果。
10.如权利要求1至9中的任一项所述的多发射指令处理系统,其特征在于,所述指令控制器对指令段中的指令的选取包括:对每一层分支的目标指令段及下一指令段中的指令平均选取。
11.如权利要求1至9中的任一项所述的多发射指令处理系统,其特征在于,所述指令控制器对指令段中的指令的选取包括:根据一定算法对每一层分支的目标指令段及下一指令段中的指令非平均选取。
12.如权利要求1至9中的任一项所述的多发射指令处理系统,其特征在于,所述轨道表还存储分支指令发生分支转移的预测位,所述预测位提供所述分支指令分支转移是否发生的概率。
13.如权利要求12所述的多发射指令处理系统,其特征在于,
当所述分支指令分支转移发生的概率比不发生的概率高时,所述指令控制器控制所述存储系统向处理器输出所述分支指令的目标指令段及所述分支指令的下一指令段中的指令,并且在所述提供的指令中,所述分支指令的目标指令段中的指令比分支指令的下一指令段中的指令多;
当所述分支指令分支转移发生的概率比不发生的概率低时,所述指令控制器控制所述存储系统向处理器输出所述分支指令的目标指令段及所述分支指令的下一指令段中的指令,并且在所述提供的指令中,所述分支指令的目标指令段中的指令比分支指令的下一指令段中的指令少。
14.如权利要求13所述的多发射指令处理系统,其特征在于,所述预测位为单数位或者复数位,其中,所述预测位的初始值设置为固定值或者根据分支指令转移跳转方向予以设置。
15.如权利要求13所述的多发射指令处理系统,其特征在于,根据处理器执行分支指令得到的分支转移是否发生的结果,修正轨道表中对应所述分支指令的预测值。
16.如权利要求8所述的多发射指令处理系统,其特征在于,还包括队列器,所述队列器存储所述存储系统输出的可能被执行的指令;及
所述队列器根据接收的需要删除的指令段对应的分段号,删除相应的指令段中的指令。
17.如权利要求6所述的多发射指令处理系统,其特征在于,向处理器输出的可能被执行的指令属于多个线程。
18.如权利要求17所述的多发射指令处理系统,其特征在于,所述分段裁剪器标记指令所属线程的线程号,及标记指令所属指令段的分段号。
19.一种多发射指令处理方法,包括:
指令控制器根据轨道表存储的存储系统中存储的分支指令的位置,控制所述存储系统向处理器输出可能被执行的指令;
处理器接收存储系统输出的可能被执行的指令,并同一时刻执行复数条指令;
其特征在于:
指令控制器将分支指令与其之前的连续所有非分支指令归为一个分段,给每个分支指令的目标指令段及每个分支指令的下一指令段给予不同的分段,并对每个分段给予不同的分段号;指令控制器控制所述存储系统向处理器输出可能被执行的指令时,同时向处理器输出该指令对应的分段号。
20.如权利要求19所述的多发射指令处理方法,其特征在于,还包括:
当所述处理器执行一分支指令,得到分支转移是否发生的执行结果时,所述处理器向所述指令控制器发送所述执行结果。
21.如权利要求20所述的多发射指令处理方法,其特征在于,还包括:所述指令控制器根据所述执行结果,区分出肯定被执行的指令段的分段号;并将该肯定被执行的指令段的分段号送往处理器。
22.如权利要求21所述的多发射指令处理方法,其特征在于,还包括:所述处理器根据接收的肯定被执行的指令段对应的分段号,将对应指令段产生的最终结果写入物理寄存器中。
23.如权利要求20所述的多发射指令处理方法,其特征在于,还包括:所述指令控制器根据所述执行结果,区分出确定不被执行的指令段的分段号;并将该确定不被执行的指令段的分段号送往处理器。
24.如权利要求23所述的多发射指令处理方法,其特征在于,还包括:所述处理器根据接收的确定不被执行的指令段对应的分段号,删除所述指令段产生的中间结果及最终结果。
CN201310050848.0A 2013-02-08 2013-02-08 多发射指令处理系统及方法 Active CN103984523B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201310050848.0A CN103984523B (zh) 2013-02-08 2013-02-08 多发射指令处理系统及方法
US14/766,756 US20160004538A1 (en) 2013-02-08 2014-01-29 Multiple issue instruction processing system and method
PCT/CN2014/071799 WO2014121738A1 (en) 2013-02-08 2014-01-29 Multiple issue instruction processing system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310050848.0A CN103984523B (zh) 2013-02-08 2013-02-08 多发射指令处理系统及方法

Publications (2)

Publication Number Publication Date
CN103984523A CN103984523A (zh) 2014-08-13
CN103984523B true CN103984523B (zh) 2017-06-09

Family

ID=51276517

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310050848.0A Active CN103984523B (zh) 2013-02-08 2013-02-08 多发射指令处理系统及方法

Country Status (3)

Country Link
US (1) US20160004538A1 (zh)
CN (1) CN103984523B (zh)
WO (1) WO2014121738A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI554266B (zh) * 2015-04-24 2016-10-21 Univ Nat Yang Ming 穿戴式步態復健訓練裝置及使用該裝置之步態訓練方法
CN105677253B (zh) * 2016-01-07 2018-09-18 浪潮(北京)电子信息产业有限公司 一种io指令处理队列的优化方法及装置
CN109101276B (zh) 2018-08-14 2020-05-05 阿里巴巴集团控股有限公司 在cpu中执行指令的方法
CN111538535B (zh) * 2020-04-28 2021-09-21 支付宝(杭州)信息技术有限公司 一种cpu指令处理方法、控制器和中央处理单元

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100549944C (zh) * 2006-11-17 2009-10-14 国际商业机器公司 数据处理系统、处理器和进行数据处理的方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5625789A (en) * 1994-10-24 1997-04-29 International Business Machines Corporation Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle
US5860017A (en) * 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US6253316B1 (en) * 1996-11-19 2001-06-26 Advanced Micro Devices, Inc. Three state branch history using one bit in a branch prediction mechanism
US7328332B2 (en) * 2004-08-30 2008-02-05 Texas Instruments Incorporated Branch prediction and other processor improvements using FIFO for bypassing certain processor pipeline stages
US20090204791A1 (en) * 2008-02-12 2009-08-13 Luick David A Compound Instruction Group Formation and Execution
US8316219B2 (en) * 2009-08-31 2012-11-20 International Business Machines Corporation Synchronizing commands and dependencies in an asynchronous command queue
CN101710272B (zh) * 2009-10-28 2012-09-05 龙芯中科技术有限公司 指令调度装置和方法
CN102117198B (zh) * 2009-12-31 2015-07-15 上海芯豪微电子有限公司 一种分支处理方法
CN102819419B (zh) * 2012-07-25 2016-05-18 龙芯中科技术有限公司 指令执行流信息处理系统和装置及方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100549944C (zh) * 2006-11-17 2009-10-14 国际商业机器公司 数据处理系统、处理器和进行数据处理的方法

Also Published As

Publication number Publication date
WO2014121738A1 (en) 2014-08-14
CN103984523A (zh) 2014-08-13
US20160004538A1 (en) 2016-01-07

Similar Documents

Publication Publication Date Title
CN102110058B (zh) 一种低缺失率、低缺失惩罚的缓存方法和装置
CN103984523B (zh) 多发射指令处理系统及方法
CN103838550B (zh) 一种分支处理系统和方法
CN105573660B (zh) 用于改善分簇磁盘阵列的性能的方法和装置
US9921847B2 (en) Tree-based thread management
CN1053508C (zh) 超标量计算机
US9798548B2 (en) Methods and apparatus for scheduling instructions using pre-decode data
CN104978282B (zh) 一种缓存系统和方法
TWI697837B (zh) 微處理器的前端以及執行零空泡條件分支預測的電腦實施方法
US20120079241A1 (en) Instruction execution based on outstanding load operations
CN103513957A (zh) 高性能缓存系统和方法
JP2016528641A5 (zh)
CN104424158A (zh) 基于通用单元的高性能处理器系统和方法
US10114795B2 (en) Processor in non-volatile storage memory
US20180322077A1 (en) Unified cache for diverse memory traffic
CN102150137A (zh) 用于改善性能的raid卷和驱动器组之间松耦合
CN106201914A (zh) 一种基于指令和数据推送的处理器系统和方法
US11237763B2 (en) Storage device and memory controller
US7877587B2 (en) Branch prediction within a multithreaded processor
JP2016503209A (ja) ディスクアレイ・フラッシュ方法及びディスクアレイ・フラッシュ装置
CN107851017A (zh) 用于在存储器与存储在寄存器组中的一个或多个数据元素向量之间传输多个数据结构的设备和方法
US20210082520A1 (en) Processor in non-volatile storage memory
CN112241290A (zh) 用于在并行处理单元中有效执行数据规约的技术
GB2520731A (en) Soft-partitioning of a register file cache
CN107273205A (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
GR01 Patent grant
GR01 Patent grant