具有指令先行发出逻辑的处理器制造技术

技术编号:19878177 阅读:19 留言:0更新日期:2018-12-22 17:54
提供了一种具有用于存储多个指令的指令高速缓存的处理器。处理器还包括注释逻辑,注释逻辑被配置为确定与指令相关联的先行距离并且用先行距离来注释至少一个指令高速缓存。先行距离可以对应于将引用寄存器的指令与最新寄存器定义分离的多个指令。先行距离可以指示到引用该指令定义的寄存器的后一指令的最短距离。

【技术实现步骤摘要】
【国外来华专利技术】具有指令先行发出逻辑的处理器
技术介绍
多线程处理器可以提取属于线程的指令并且执行这些指令。在执行线程的指令时,处理器可以执行生成对存储器位置的引用的指令。由于与对所引用的存储器位置的访问相关联的延迟,处理器可能必须等待,直到所引用的存储器位置被访问。类似地,如果指令需要多个周期来执行,依赖于该指令的后续指令将必须等待。为了保持效率,处理器可以从不同的线程提取指令并开始执行这些指令。这样,处理器可以更有效地执行指令。这种类型的并行性可以被称为线程级并行性。提高性能的另一种方法是获取指令级并行性。指令级并行性可以包括确定线程中的指令的依赖性并且发出独立的指令。处理器可以推测性地尝试预测依赖性并且基于此来执行线程中的指令。这种预测可能是不准确的,导致处理器必须丢弃错误预测的指令依赖性的结果并且以正确顺序重新执行指令。
技术实现思路
在一个示例中,本公开涉及一种具有用于存储多个指令的指令高速缓存的处理器。处理器还可以包括注释逻辑,注释逻辑被配置为确定与指令相关联的先行距离并且用先行距离来注释至少一个指令高速缓存。在另一方面,本公开涉及一种具有用于存储多个指令的指令高速缓存的处理器。处理器还可以包括注释逻辑,注释逻辑被配置为确定与指令相关联的先行距离并且用先行距离来注释至少一个指令高速缓存。处理器还可以包括指令发出逻辑,指令发出逻辑被配置为至少基于指令的先行距离来发出指令的就绪信号,其中先行距离提供寄存器依赖性的度量。在又一方面,本公开涉及一种处理器中的方法,该处理器包括注释逻辑和用于存储多个指令的指令高速缓存。该方法可以包括使用注释逻辑,确定与指令相关联的先行距离并且用先行距离来注释至少一个指令高速缓存。提供
技术实现思路
部分是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式部分中进一步描述。本
技术实现思路
部分无意标识所要求保护的主题的关键特征或必要特征,也无意用于限制所要求保护的主题的范围。附图说明本公开通过示例的方式来说明并且不限于附图,附图中的相同的附图标记表示类似的元素。附图中的元素是为了简单和清楚起见而示出的,而不一定按比例绘制。图1是根据一个示例的处理器的框图。图2是根据一个示例的处理器的指令发出逻辑的一部分的框图;图3是根据一个示例的处理器的线程注释逻辑的框图;图4是根据一个示例的寄存器引用描述符的图;以及图5是根据一个示例的方法的流程图。具体实施方式本公开中描述的示例涉及处理器,这样的处理器可以叠加可以是不同线程的一部分的指令的执行。因此,处理器可以按顺序提取属于线程的指令,并且执行这些指令。在执行线程的指令的同时,处理器可以执行生成对存储器位置的引用的指令。这可以表示处理器可能必须等待,直到所引用的存储器位置被访问。类似地,如果指令需要多个周期来执行,依赖于该指令的后续指令将必须等待。为了保持效率,处理器可以从不同的线程提取指令并开始执行这些指令。这样,处理器可以更有效地执行指令。这种类型的并行性可以被称为线程级并行性。提高性能的另一种方法是获取指令级并行性。指令级并行性可以经由显式依赖性先行来实现。线程内的指令可以按顺序发出。指令只有在其先行前驱已经退出并且它的其他前驱已经发出时才会发出。每个指令都用具有该指令的先行距离的字段进行注释。先行距离可以对应于将引用寄存器的指令与最新寄存器定义分离的多个指令。寄存器被定义为保持架构状态的任何硬件。先行距离可以指示到引用这个指令所定义的寄存器的后一指令的最短距离。在这个示例中,前一指令是后一指令的先行前驱。最大先行距离取决于它的编码方式。由于这些要求,将强加所有依赖性。简单地通过要求指令按顺序发出来强加反依赖性。由这种先行来强加流依赖性和输出依赖性。由此,如果指令C依赖于另一指令A,则指令A是指令C的先行前驱或者指令A和指令C之间存在至少一个指令B,使得指令A是指令B的先行前驱并且指令B是指令C的按序前驱。因此,在一个示例中,先行被如下使用。首先,来自每个线程的指令按程序顺序被发出,从而强加所有反依赖性。其次,只有当硬件线程的所有先行前驱都已经退出并且所有按程序顺序的前驱都已经发出(即,有序要求)时,才允许硬件线程发出指令。这些约束传递性地保证了流依赖性和输出依赖性的强制实现。条件分支指令可以通过经常或很少注释条件分支来处理。在一个示例中,可以注释分支指令的先行字段以指定先行是否应当仅沿着分支路径(即,经常)或未采用的路径(即,很少)发生,否则先行终止。作为另一示例,“经常”变体可以用于向后分支,假定它们实现循环,并且“很少”变体可以用于前向分支,假定相对罕见的特殊情况的线外处理。硬件分支预测也可以用于更好地通知这样的决策。另一种类型的分支可以允许沿着两条路径的先行,并且先行字段可以用与沿着所有分支路径的每个定义的最短距离来注释。例如,具有常量目标的无条件分支可以继续向前看,但是过程返回和其他可变目标分支可以终止先行,以避免以不适合其他调用的距离来注释被调用的过程。跨过程调用的先行可能需要过程间依赖性信息。另外,必须与同步模型相一致地排序和执行存储器操作。例如,如果使用发布一致性,则发布必须等待它前面的所有存储器操作完成,并且必须在任何后续存储器操作之前完成获取。在诸如ARMv8等某些架构中,同步指令具有以这种方式使用的适当语义。在一个示例中,先行注释可以仅被应用于发布的当前未注释的存储器引用前驱,但是允许发布指令简单地停止先行可能更有利。通过使最近的后续存储器引用依赖于一个获取,可以更容易地处理该获取。为了进一步说明,下面的表1中示出了执行矩阵向量乘法并且计算结果的元素的双曲正切的示例程序片段:如下表2示出了这个片段的ARMv8汇编语言的示例版本,这个版本针对其依赖性而被注释。“先行”列记录在寄存器定义与其最近的后续使用(流依赖性)或重新定义(输出依赖性)之间的按程序顺序的指令发出的最小数目。流依赖性可以是指令正经由寄存器向另一指令传递值的情况。输出依赖性可以是指令定义寄存器并且之后另一指令定义同一寄存器的情况。L位字段可以编码0到2L-1之间的距离;较大的距离可以安全地使用最大值。在下表中,CF是控制标志位。图1是根据本公开的一个示例的多线程处理器100的一部分的框图。处理器100可以包括存储器102、指令高速缓存104、指令缓冲区106、发出逻辑108、指令译码器110、执行单元112和线程注释逻辑114。在这个示例中,存储器102可以经由指令高速缓存104向指令缓冲区106提供指令。指令可以对应于处理器100正在处理的多个线程中的任何一个。发出逻辑108可以选择用于指令译码器110和指令执行的指令。执行单元112可以执行各种操作,包括添加、分支和其他操作。如稍后所解释的,发出逻辑110可以经由显式依赖性先行来提供指令级并行性。线程内的指令按顺序发出。指令只有在其先行前驱已经退出并且其按序前驱已经发出时才会发出。虽然图1示出了以某种方式布置的处理器100的一定数目的组件,但是可以有以不同方式布置的更多或更少数目的组件。作为一个示例,处理器100可以包括寄存器文件、数据高速缓存、程序计数器、分支预测器和其他硬件资源。图2是根据一个示例的用于由处理器100执行指令的每线程指令发出逻辑200的一部分的框图。在一个示例中,指令发出逻辑200生本文档来自技高网
...

【技术保护点】
1.一种处理器,包括:指令高速缓存,用于存储多个指令;以及注释逻辑,被配置为确定与指令相关联的先行距离并且用所述先行距离来注释至少一个指令高速缓存。

【技术特征摘要】
【国外来华专利技术】2016.04.22 US 15/136,1231.一种处理器,包括:指令高速缓存,用于存储多个指令;以及注释逻辑,被配置为确定与指令相关联的先行距离并且用所述先行距离来注释至少一个指令高速缓存。2.根据权利要求1所述的处理器,还包括指令发出逻辑,所述指令发出逻辑被配置为基于所述先行距离来发出指令的就绪信号。3.根据权利要求1所述的处理器,其中所述先行距离对应于将所述指令与最新架构状态定义分离的多个指令。4.根据权利要求3所述的处理器,其中所述架构状态定义包括寄存器定义。5.根据权利要求1所述的处理器,还包括至少一个指令译码器,所述至少一个指令译码器被配置为译码所述指令并且生成与由所述指令定义或使用的至少一个寄存器相关的信息。6.根据权利要求5所述的处理器,还包括指令发出逻辑,所述指令发出逻辑被配置为生成多个描述符,所述多个描述符包括与由所述指令定义或使用的每个寄存器相关的信息。7.根据权利要求1所述的处理器,其中所述注释逻辑还被配置为管理多个指令的轨迹映射,其中所述轨迹映射被配置为保持跟踪由...

【专利技术属性】
技术研发人员:B·J·斯密斯
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国,US

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

1