支持同时多线程的超长指令字处理器结构的制作方法

文档序号:6336074阅读:227来源:国知局
专利名称:支持同时多线程的超长指令字处理器结构的制作方法
技术领域
本发明涉及计算机、电子设备技术领域,特别涉及一种支持同时多线程的超长指 令字处理器结构。
背景技术
微处理器是一个集成在一片上的半导体集成电路,包括对一系列算术逻辑操作的 控制和执行。现代处理器设计的优化通常的途径有如下三种1、提高处理器主频,缩短每条指令执行时间。2、优化编译器,采用效率更高的指令。3、指令级并行技术(ILP)。处理器的更高性能由于不能从传统结构中得到解决,因此提出了各种提高性能的 策略。其中提高时钟频率和编译器优化的效果是有限的,最好的方法是提高并行性,当前高 性能处理器结构的主要特点就是采用了各种并行处理技术。指令级并行(ILP)就是通过探 究程序的并行性,在每个指令周期中并行执行指令来提高每条指令的平均执行时间。从指令级并行的方向出发,产生了多发射处理器的概念。多发射处理器在每个周 期可以发射多条可以并行执行的指令,分发到各个执行单元上同时执行。多发射处理器有 两种超标量和超长指令字(VLIW)。超标量处理器利用硬件动态发现并行性,VLIW则利用 编译器静态地开发并行性。VLIW微处理器以其硬件控制简单和具有开发指令级并行性的巨大潜力而著称。 VLIW处理器为了保证指令能够并行执行,通常具有多个功能单元。例如,一个8发射的VLIW 处理器通常具有8个功能单元来保证并行指令的执行。但是,单个程序有限的指令级并行 度会导致处理器功能单元利用率不高的情况,进一步加大发射宽度只会加重这种情况。处 理器资源的浪费分为水平浪费和垂直浪费。当多发射处理器不能发现足够的指令来填满发 射槽时就产生了水平浪费(Horizontal Waste)。此外当资源冲突造成多发射处理器在接下 来的时钟周期中不能发射指令,则造成了垂直浪费(Vertical Waste)。实际上在很多工作负载中都存在着不同程度的线程级的并行性。因此,研究人员 提出利用线程级并行(TLP)的方式来提高处理器资源利用率。现有的支持多线程的处理器有三种基本形式重叠式多线程(interleaved multithreading)处理器、单片多处理器(CMP)、同时多线程(SMT)。其中重叠式多线程处理 器每个周期只能发射来自一个线程的指令。多个线程的指令流交替占据指令发射槽。重叠 式多线程按照线程调度方式还可以分为细粒度多线程(fine-grained multithreading)和 粗粒度(coarse-grained multithreading)多线程。细粒度多线程在每个时钟周期都进行 上下文切换,粗粒度多线程则只在线程遇到长延时操作时才进行线程切换。重叠式多线程 只能消除处理器资源的垂直浪费。而CMP和SMT都可以使不同线程的指令同时运行,同时 减小资源的水平浪费和垂直浪费。CMP让不同的处理器核运行不同的线程从而实现同时多 线程。而SMT允许在一个周期内发射来自不同线程的指令,从而填满指令发射槽,提高资源
4利用率。与SMT相比,CMP方式在维护Cache —致性上需要有额外开销。为了提高指令并行度,现有的VLIW处理器通常具有较大的发射宽度。但是,由于 程序的并行性有限,以及编译器并行调度的效率有限,造成指令发射槽有较大的水平浪费。 例如,一个8发射的VLIW处理器,在编译器效率有限的情况下,每周期能够实际并行执行的 指令数通常小于发射宽度的一半,与4发射处理器的效果基本相同。在运行多线程程序时, 由于水平浪费无法解决,仍然无法充分利用处理器资源。

发明内容
本发明的目的旨在至少解决上述的技术缺陷之一。为此,本发明的一个目的在于提出一种支持同时多线程的超长指令字处理器结 构,该结构通过对发射宽度较大的单个VLIW丰富的功能单元重新分配,且采用多线程共享 数据缓存的方式,能够最大程度的解决处理器资源浪费的问题。为达到上述目的,本发明提出了一种支持同时多线程的超长指令字处理器结构, 包括相互并行的至少两个指令处理流水线结构,其中,每个所述指令处理流水线结构包 括指令获取模块,所述指令获取模块用于获取指令信息;与所述指令获取模块对应的指 令分发模块,所述指令分发模块用于接收所述指令获取模块获取的指令信息并进行分配; 与所述指令分发模块对应的指令执行模块,所述指令执行模块包括多个指令执行单元,其 中,所述指令执行单元为指令执行单元A、指令执行单元D、指令执行单元M和指令执行单元 F,其中,所述指令执行单元A、指令执行单元D、指令单元M和指令执行单元F用于执行所述 指令分发模块分发的相应指令信息,以得到执行结果;通用寄存器堆,所述通用寄存器堆用 于存储相应执行单元A、执行单元M和执行单元D的执行结果;浮点寄存器堆,所述浮点寄 存器堆用于存储相应执行单元D和执行单元F的执行结果;和控制寄存器堆,所述控制寄存 器堆用于存储指令的控制信号,其中,所述控制信号控制指令的执行方式。在本发明的一个实施例中,所述指令获取模块包括第一指令获取单元、第二指令 获取单元、第三指令获取单元和第四指令获取单元,所述指令分发模块包括第一指令分发 单元、第二指令分发单元、第三指令分发单元和第四指令分发单元,其中,所述第一指令获 取单元、第二指令获取单元、第三指令获取单元和第四指令获取单元在每个时钟周期分别 对应于所述第一指令分发单元、第二指令分发单元、第三指令分发单元和第四指令分发单 元中的一个指令分发单元,以在当前时钟周期为对应的第一指令分发单元、第二指令分发 单元、第三指令分发单元和第四指令分发单元提供指令信息。在本发明的一个实施例中,所述第一指令分发单元、第二指令分发单元、第三指令 分发单元和第四指令分发单元的指令信息依次组成指令流序列,且所述指令流序列中的每 个指令信息包括执行单元选择位,其中,所述执行单元选择位用于判断所述指令流序列中 每个指令信息选择的指令执行单元。在本发明的一个实施例中,根据依次选择所述指令执行单元A、指令执行单元D、 指令执行单元M和指令执行单元F的顺序,在一个执行周期中,在所述指令流序列中按次序 选择最多的指令信息作为分发的并行指令同时分发给对应的所述指令执行单元。在本发明的一个实施例中,在下一个执行周期中,在所述指令流序列的剩余指令 信息中按次序选择最多的指令信息作为分发的并行指令同时分发给对应的所述指令执行单元。在本发明的一个实施例中,当所述指令流序列中没有剩余的指令信息,所述指令 流序列的指令信息分发结束。在本发明的一个实施例中,所述指令执行单元A用于完成算术逻辑运算以及移位 运算;所述指令执行单元M用于完成乘法运算以及部分算术逻辑操作和位操作;所述指令 执行单元D用于实现存储器的存取以及实现程序的跳转,还用于完成部分算术逻辑运算; 所述指令执行单元F用于完成浮点及向量运算,还用于部分逻辑操作和位操作。在本发明的一个实施例中,所述相互并行的指令处理流水线结构之间共享数据缓 存。在本发明的一个实施例中,所述通用寄存器堆与所述浮点寄存器堆通过所述执行 单元D进行数据传输。在本发明的一个实施例中,所述通用寄存器为64位通用寄存器、所述浮点寄存器 为128位浮点寄存器。通过本发明实施例提供的支持同时多线程的超长指令字处理器结构,能够更充分 的利用处理器的资源,增强了线程的访问效率,从而提高处理器的执行速度。本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变 得明显,或通过本发明的实践了解到。


本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变 得明显和容易理解,其中图Ia-Ib为传统8发射VLIW处理器与本发明实施例的处理器结构执行双线程的 比较示意图;图2为传统8发射VLIW处理器结构图;图3为本发明实施例的支持同时多线程超长指令字处理器结构图;和图4为本发明实施例的指令流序列示意图。
具体实施例方式下面详细描述本发明的全部实施例,所述实施例的示例在附图中示出,其中自始 至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参 考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本发明实施例是针对处理器执行多线程程序效率不高而提出的一种支持同时多 线程的超长指令字处理器结构,该处理器结构具有操作性更高的优点,在支持多线程的同 时,提高了 VLIW处理器的资源利用率,提高指令执行效率,缩短整个线程的执行时间,使处 理器资源得到了更加充分的利用,从而使该处理器结构在性能方面有更强的竞争力。以下实施例为在传统8发射VLIW处理器的基础上,针对8发射VLIW处理器的不 足而提出的一种对8发射VLIW处理器的处理单元的重新分配。为了实现上述目的,本发明实施例提出了一种支持同时多线程的超长指令字处理 器结构。该结构将发射宽度较大的VLIW处理器(在本发明的实施例中以8发射VLIW处理器为例)的资源重新分配,设计多条并行独立流水线,每条流水线采用较小的发射宽度, 在本发明的优选实施例中,采用4发射宽度。由于该处理器相比8发射VLIW处理器具有较 少的功能单元。从而在执行多线程负载时,该处理器可以有更高的资源利用率,更高的并行 性,从而提高处理器性能。在本发明的实施例中,该处理器采用32位指令编码,同时支持定 点、浮点运算,向量运算。本发明实施例的相互并行的指令处理流水线结构的每个流水线都有各自独立的 PC,从而从各自PC的私有程序缓存中取指令。具体地,每个流水线包含一份通用寄存器堆、 浮点寄存器堆、控制寄存器堆、以及功能单元的复制。该处理器的单个流水线只能使用自己 的功能单元,访问自己的寄存器堆,不能利用其他处理器的资源。通过将寄存器堆复制,不 会降低单个线程的性能。多个流水线共享数据缓存,数据缓存采用多端口设计,因此不需要 维护缓存一致性。由于该处理器结构的每个指令处理流水线结构有各自独立的PC,所以在运行多线 程负载时,通过线程调度程序,可以为多个流水线各分配一个线程。每个指令处理流水线结 构的取指单元根据各自的PC分别从单个线程取指,从而能够同时运行多个线程。并且每个 指令处理流水线结构功能上完全独立,处理各自的停顿或中断操作。由于多个指令处理流 水线结构共享数据Cache,从而可以通过共享数据实现多个线程间的通讯。从本发明的实施例中可分析出该种结构VLIW处理器的优势有三点1、把发射宽度较大的单个VLIW丰富的功能单元重新分配,采用多个发射宽度更 小的流水线,不仅能够支持同时多线程,还可以有效的减小VLIW处理器资源的水平浪费。 根据应用负载线程级并行程度的不同,处理器可以设计不同的流水线数目,从而最大程度 提升处理器性能。如图1(a)所示,为双线程在传统8发射VLIW处理器中的运行的情况,由 于指令并行度有限,传统8发射VLIW处理器在执行多线程程序时,只能采用交替方式。处 理器资源在每个周期都有较大的水平浪费(图Ia中的空白部分)。而在本发明的优选实施 例中,本发明提出的处理器结构如图1(b)所示,为采用本发明实施例的处理器执行双线程 的运行情况。从图中能够看出,采用此种分拆流水线的结构在执行多线程程序时,两个线程 的指令在各自的流水线上同时执行,比传统8发射的VLIW处理器具有更高的资源利用率, 执行同样的程序需要更少的周期。2、与CMP模式的多线程相比,该结构的VLIW的多线程共享数据缓存,免去了维护 Cache 一致性的硬件开销。3、将发射宽度分拆为并行的η个部分,使得对指令Cache数据位宽的要求降低为 原先的1/n,从而可以简化Cache设计,提高单个线程访存效率。为了对本发明实施例提出的支持同时多线程的超长指令字处理器结构有更清楚 的理解,以下参考附图2、3、4详细描述根据本发明实施例的支持同时多线程的超长指令字 处理器结构的工作原理。为了能够对本发明实施例的处理器结构有更深刻的理解,首先对传统的8发射 VLIW处理器结构作简单介绍。如图2所示,为传统8发射VLIW处理器结构图。该传统的8发 射VLIW处理器结构包含指令获取模块(Instruction Fetch),指令分发模块(Instruction Dispatch),八个指令执行单元(AO, Al,MO, Ml, DO, Dl, F0, Fl),64*64bits的通用寄存器堆 和64*128bits的浮点寄存器堆和控制寄存器堆(控制寄存器堆在图中未示出),并且该传统8发射VLIW处理器存储系统包括一个数据缓存(Data cache)和一个程序缓存(Program cache)。在该传统8发射VLIW处理器结构中,并行指令通过分发模块直接把执行指令分配 给8个功能单元。相比于传统的8发射VLIW处理器机构,本发明优选实施例的处理器结构将传统8 发射VLIW处理器资源进行拆分,如图3所示,为本发明实施例的支持同时多线程超长指令 字处理器结构图。在组织方式上该支持同时多线程的超长指令字处理器结构具有两个独立 的指令处理流水线结构,每个指令处理流水线结构独立运行一个线程,因此能够保证处理 器同时运行两个线程,从而实现对同时多线程(SMT)的支持。每个指令处理流水线结构包 含指令获取模块301 (Instruction Fetch),指令分发模块302 (Instruction Dispatch),指 令执行模块303(A,M,D,F),通用寄存器304,浮点寄存器305和程序缓存306。在本发明的 优选实施例中,指令获取模块301包括第一指令获取单元、第二指令获取单元、第三指令获 取单元和第四指令获取单元,第一指令获取单元、第二指令获取单元、第三指令获取单元和 第四指令获取单元用于获取地址连续的4条指令,指令分发模块302包括第一指令分发单 元、第二指令分发单元、第三指令分发单元和第四指令分发单元,第一指令分发单元、第二 指令分发单元、第三指令分发单元和第四指令分发单元一方面用于接收来自于相应第一指 令获取单元、第二指令获取单元、第三指令获取单元和第四指令获取单元获取的指令信息, 另一方面的作用是在一个执行周期中,在所述指令流序列中按次序选择最多的指令信息作 为分发的并行指令同时分发给对应的指令执行模块303,而指令执行模块303包括指令执 行单元A、指令执行单元D、指令执行单元M和指令执行单元F,通用寄存器304的作用为存 储指令执行单元A、指令执行单元D、指令执行单元M的执行结果,浮点寄存器的作用为存储 指令执行单元D、指令执行单元F的执行结果。以下对各个模块做详细的介绍。1指令获取模块(INSTRUNCTIONS FETCH)。指令获取模块301的功能是产生下条指令地址,从指令存储中读取相应指令,并 将读取的指令送给指令分发单元。每个时钟周期可以从各自私有的程序程序缓存306中读 取4条地址连续的指令,取指包为128bits。为指令分发模块302提供读取的指令。指令获 取模块301共有四级流水线,分别为指令地址产生、指令地址发送、等待和指令读取。2指令分发模块(INSTRUNCTIONS DISPATCH)。指令分发模块302的功能是将取指单元取回的指令分发给各指令执行单元,分发 单元一个周期可以从取指单元中获得一个取指包,16bytes指令。指令分发单元的输入为一 个取指包寄存器,输出为各功能单元指令寄存器中的值,以及指令分发完毕指示信号。整个 模块为一级流水。3指令执行模块(INSTRUNCTIONS EXECUTE)。指令执行模块303的功能是各个指令执行单元用来执行特定的指令,功能单元可 分为两部分解码和执行,解码在一个周期完成,执行需要花费一到多个周期不等。由于指令分发模块302在某一时刻对指令执行模块分发多个并行执行的指令,因 此,需要对指令流序列的执行是否能够并行执行做进一步的判定。判定条件为处理器通过指令中功能单元选择位来完成指令并行的判定。在本发明的实施例 中,如图4所示,为本发明实施例的指令流序列的示意图。其中,指令根据各自执行单元选择位的不同选择不同的执行单元。如在本发明的一个具体例子中,00表示选择A单元,01表 示选择M单元,10表示选择D单元,11表示选择F单元。该处理器在一个执行包内根据指 令的高两位(功能单元选择位),按照AMDF的顺序按次序选择升序排列最长的指令序列作 为分发的并行指令。如图4的指令流序列insO最高位为00,insl为01,ins2为01,ins3 为10,ins4为00,ins5为00,ins6为00。根据并行处理原则,处理器在cycleO执行insO, insl ;cyclel 执行 ins2, ins3 ;cycle3 执行 ins4, cycle4 执行 ins5, cycle5 执行 ins6。以下对各个指令执行单元做进一步的介绍。1、指令执行单元A。A单元是处理器中完成算术逻辑运算以及移位运算的单元。A单元中共有两级级 流水线解码、执行。解码阶段的功能是接受指令、并根据指令产生其余各部分的控制码。 执行阶段接受两个操作数,然后根据其控制代码对两个操作数进行相应的运算,并在执行 阶段结束时将运算结果写入目标寄存器。2、指令执行单元D。D单元的主要功能是实现存储器的存取以及实现程序的跳转,同时它也可以完成 部分算术逻辑运算。D单元共分为解码单元、操作数选择单元、ALU执行单元和目标寄存器 写使能信号产生单元等四大部分。D单元中共有两级流水线解码、执行。D单元中执行存 储器操作分4级流水线进行,El为地址产生级,E2为地址发送级,E3为等待LlD Cache处 理级,E4为获取数据和寄存器回写或存储器写入级。3、指令执行单元M。M单元是处理器中完成乘法运算的单元,可以完成32位乘法、16位乘法、8位乘法 等运算,以及部分算术逻辑操作和位操作。M单元共分为解码单元、流水线控制旁路单元,乘 法运算单元、算术逻辑单元、目标寄存器写使能信号产生单元等部分。M单元中实现乘法功 能需要三级流水线解码,乘法执行一级和乘法执行二级。M单元中实现算术逻辑操作以及 位操作需要两级流水线解码,执行。执行不同的指令采用不同的流水线结构。4、指令执行单元F。F单元是处理器中完成浮点及向量运算的单元,可以完成单精度、双精度等运算, 以及部分逻辑操作和位操作。F单元共分为解码单元、流水线控制旁路单元,乘法运算单元、 算术逻辑单元、目标寄存器写使能信号产生单元等部分。作为处理器结构,控制寄存器堆是必不可少的,本发明实施例的控制寄存器堆中 各个控制寄存器的大概功能介绍如表1所示。
权利要求
1. 一种支持同时多线程的超长指令字处理器结构,其特征在于,包括相互并行的至少两个指令处理流水线结构,其中,每个所述指令处理流水线结构包括指令获取模块,所述指令获取模块用于获取指令信息;与所述指令获取模块对应的指令分发模块,所述指令分发模块用于接收所述指令获取 模块获取的指令信息并进行分配;与所述指令分发模块对应的指令执行模块,所述指令执行模块包括多个指令执行单 元,其中,所述指令执行单元为指令执行单元A、指令执行单元D、指令执行单元M和指令执 行单元F,其中,所述指令执行单元A、指令执行单元D、指令单元M和指令执行单元F用于执 行所述指令分发模块分发的相应指令信息,以得到执行结果;通用寄存器堆,所述通用寄存器堆用于存储相应执行单元A、执行单元M和执行单元D 的执行结果;浮点寄存器堆,所述浮点寄存器堆用于存储相应执行单元D和执行单元F的执行结果;和控制寄存器堆,所述控制寄存器堆用于存储指令的控制信号,其中,所述控制信号控制 指令的执行方式。
2.如权利要求1所述的支持同时多线程的超长指令字处理器结构,其特征在于,所述 指令获取模块包括第一指令获取单元、第二指令获取单元、第三指令获取单元和第四指令 获取单元,所述指令分发模块包括第一指令分发单元、第二指令分发单元、第三指令分发单 元和第四指令分发单元,其中,所述第一指令获取单元、第二指令获取单元、第三指令获取 单元和第四指令获取单元在每个时钟周期分别对应于所述第一指令分发单元、第二指令分 发单元、第三指令分发单元和第四指令分发单元中的一个指令分发单元,以在当前时钟周 期为对应的第一指令分发单元、第二指令分发单元、第三指令分发单元和第四指令分发单 元提供指令信息。
3.如权利要求2所述的支持同时多线程的超长指令字处理器结构,其特征在于,所述 第一指令分发单元、第二指令分发单元、第三指令分发单元和第四指令分发单元的指令信 息依次组成指令流序列,且所述指令流序列中的每个指令信息包括执行单元选择位,其中, 所述执行单元选择位用于判断所述指令流序列中每个指令信息选择的指令执行单元。
4.如权利要求3所述的支持同时多线程的超长指令字处理器结构,其特征在于,根据 依次选择所述指令执行单元A、指令执行单元D、指令执行单元M和指令执行单元F的顺序, 在一个执行周期中,在所述指令流序列中按次序选择最多的指令信息作为分发的并行指令 同时分发给对应的所述指令执行单元。
5.如权利要求4所述的支持同时多线程的超长指令字处理器结构,其特征在于,在下 一个执行周期中,在所述指令流序列的剩余指令信息中按次序选择最多的指令信息作为分 发的并行指令同时分发给对应的所述指令执行单元。
6.如权利要求5所述的支持同时多线程的超长指令字处理器结构,其特征在于,当所 述指令流序列中没有剩余的指令信息,所述指令流序列的指令信息分发结束。
7.如权利要求1-6中任一项所述的支持同时多线程的超长指令字处理器结构,其特征 在于,所述指令执行单元A用于完成算术逻辑运算以及移位运算; 所述指令执行单元M用于完成乘法运算以及部分算术逻辑操作和位操作; 所述指令执行单元D用于实现存储器的存取以及实现程序的跳转,还用于完成部分算 术逻辑运算;所述指令执行单元F用于完成浮点及向量运算,还用于部分逻辑操作和位操作。
8.如权利要求1所述的支持同时多线程的超长指令字处理器结构,其特征在于,所述 相互并行的指令处理流水线结构之间共享数据缓存。
9.如权利要求1所述的支持同时多线程的超长指令字处理器结构,其特征在于,所述 通用寄存器堆与所述浮点寄存器堆通过所述执行单元D进行数据传输。
10.如权利要求1所述的支持同时多线程的超长指令字处理器结构,其特征在于,所述 通用寄存器为64位通用寄存器、所述浮点寄存器为128位浮点寄存器。
全文摘要
本发明提出一种支持同时多线程的超长指令字处理器结构,包括相互并行的至少两个指令处理流水线结构,其中,每个所述指令处理流水线结构包括指令获取模块,用于获取指令信息;指令分发模块,用于接收指令获取模块获取的指令信息并进行分配;指令执行模块,包括指令执行单元A、D、M和F,其中,指令执行单元A、D、M和F用于执行指令信息;通用寄存器堆用于存储相应执行单元A、M和D的执行结果;浮点寄存器堆,用于存储相应执行单元D和F的执行结果;和控制寄存器堆。通过该结构能够更充分的利用处理器的资源,增强了线程的访问效率,提高处理器的处理速度。
文档编号G06F15/80GK102004719SQ20101054753
公开日2011年4月6日 申请日期2010年11月16日 优先权日2010年11月16日
发明者何虎, 白无 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1