高速缓存行的非对齐加载指令的推测并行执行方法与流程

文档序号:17824714发布日期:2019-06-05 22:33阅读:286来源:国知局

技术领域
:本发明一般涉及一种执行加载指令的进程,以从微处理器的存储器中加载信息,更具体地涉及一种高速缓存行的非对齐加载指令的推测并行执行的系统和方法,以加载跨越高速缓存行边界的数据。
背景技术
::计算机程序包括用于执行程序功能的指令,包括用于从存储器读取数据的加载指令(loadinstructions)。典型的计算机系统包括用于执行指令的微处理器以及耦接到微处理器的、用于存储计算机程序以及可应用的数据和信息的部分的外部系统存储器。从系统存储器加载数据消耗宝贵的处理时间,因此微处理器往往会包括较小的并且显著快速的高速缓存存储器,以加载用于处理的数据。高速缓存存储器典型地包括在微处理器内,以便快速访问。高速缓存存储器可以位于外部,但是,如果这样,通常经由单独的和/或专用的高速缓存总线来连接以获得较高的性能。数据块可以一次拷贝到高速缓存存储器,并且当从高速缓存存储器而非较大的较慢的外部系统存储器进行操作时,微处理器执行得较快且较高效。高速缓存存储器由一顺序序列的高速缓存行构成,其中每一个高速缓存行典型地具有预定长度。例如,高速缓存行通常的尺寸是64字节,但也可考虑替换的高速缓存尺寸。计算机程序可能重复地执行一个或多个加载指令,诸如在一个循环中等等,以从高速缓存存储器中的特定存储器位置加载特定的数据量。每个加载指令可以包括加载地址和数据长度。但是,在软件程序中指定的加载地址可能不是由微处理器用来访问高速缓存存储器的相同的物理地址。诸如基于x86指令集架构的现代的微处理器执行包括分段(segmentation)和分页等的地址翻译,其中加载地址被转换为全部不同的物理地址以访问高速缓存存储器。而且,可以顺序地执行一系列加载操作以撷取较大的数据块,其中一个或多个加载指令不直接与高速缓存行尺寸对齐。结果,存储器读取操作可以试图加载跨越高速缓存行边界的数据,这意味着指定的数据在一个高速缓存行上开始并在下一个高速缓存行上结束。由于目标数据占据多于一个的缓冲器行,所以这种类型的存储器读操作被称为高速缓存行非对齐加载。通常要求特定的方法来处理高速缓存行非对齐加载操作,因为数据是不能使用单个正常的加载请求来撷取的。现代的微处理器往往使用流行的高速缓存结构,其中对于单个加载请求仅可访问一个高速缓存行,从而高速缓存行非对齐的加载操作一定会以负面地影响性能的不同的方式来处理。通过一些微处理器执行的公共解决方案是在加载流水线(loadpipeline)内顺序地在不同的时间发射相同的加载指令两次。当加载指令初始地由加载流水线接收时,用于定位数据的地址首先被转换为虚拟地址(并且最终转换为用于访问高速缓存存储器的物理地址),并且只有在那时才能确定数据加载操作跨越高速缓存行边界。这样的非对齐加载操作会导致加载失中(loadmiss)。在加载失中的事件中,在加载流水线中再次执行该加载指令,这会进一步导致由于该加载操作的依赖(dependent)指令的回放(replay)引起的加载失中。进一步,非对齐加载指令的二次发射引起在非对齐加载指令的二次发射与正常发射的另一加载指令之间的仲裁,这将导致相当可观的长延迟。在这种方式中,高速缓存行非对齐加载操作是效率低且耗费了宝贵的处理时间以最终撷取到正确的数据,包括初始检测、双重执行、资源仲裁、以及依赖指令的回放。造成相当多数量的高速缓存行非对齐加载操作的软件程序会导致效率低的操作和性能下降。技术实现要素:根据一个实施例的用于执行高速缓存行的非对齐加载指令的推测并行执行的方法,包括:预测加载指令是否是非对齐的,当预测加载指令是非对齐的加载的时候将加载指令标注为非对齐的,向调度器发射被标注为非对齐的加载指令,派遣被标注为非对齐的加载指令到第一加载流水线,并派遣被标注为非对齐的加载指令的副本到第二加载流水线,在第一加载流水线中确定被标注为非对齐的加载指令的第一地址以从第一高速缓存行访问第一数据,并在第二加载流水线中确定被标注为非对齐的所述加载指令的副本的第二地址以从第二高速缓存行访问第二数据,以及合并第一数据和第二数据以提供被标注为非对齐的加载指令的结果数据。本发明前述实施例所描述的高速缓存行的非对齐加载指令的推测并行执行的方法被用来改进非对齐加载性能。非对齐加载像正常加载一样完成,没有其他延迟。当高速缓存命中发生时,非对齐加载不引起回放,指令流不因为非对齐延迟而停顿。本发明描述的高速缓存行的非对齐加载指令的推测行执行的方法对于使用多个非对齐加载操作的程序和应用非常有用。附图说明参照以下描述和附图,将更好地理解本发明的益处、特征和优点,在附图中:图1是根据本发明的一个实施例实施的执行高速缓存行非对齐加载操作的超标量流水线微处理器的简化框图;图2是根据本发明的一个实施例的非对齐加载指令和作为结果的合并操作的推测并行执行结果的简化图;图3是根据本发明一个实施例的预测器(可被用作图1的预测器)的简化框图;图4是根据本发明另一个实施例的预测器(也可被用作图1的预测器)的简化框图;图5是根据本发明一个实施例的非对齐加载派遣器(可被用作图1的非对齐加载派遣器)的简化框图;以及图6是根据本发明另一个实施例的非对齐加载派遣器(也可被用作图1的非对齐加载派遣器)的简化框图。具体实施方式发明人已经认识到与执行高速缓存行非对齐加载指令相关的低效率和低性能。因此,他们开发了一种高速缓存行的非对齐加载指令的推测并行执行的系统和方法,用于检测和执行跨越高速缓存行边界的存储器读取操作。检测跨越高速缓存行边界的加载指令是推测地确定的。许多,如果不是大多数,加载指令在循环中执行。在第一检测方法中,第一非对齐加载的第一例程(iteration)的指令指针(IP)被存储并与后来的例程进行比较以预测后来的非对齐加载。在第二检测方法中,IP用来识别加载指令的后来的例程,并且加载指令的两次例程之间的跳步(skipstride)用来推测一步长,该步长被用于预测加载指令的随后例程的起始地址,其中跳步是该加载指令的前次执行的结束地址和该加载指令的下次执行的起始地址之间的地址跨越长度。预测的起始地址和所提供的每个加载指令例程的数据长度被用于推测地预测加载是否跨越高速缓存边界。非对齐加载被标注并被提供到调度器,调度器将该加载指令复制并派遣至两个单独的加载执行流水线。当地址在执行阶段被确时序,如果该加载最终被确定为是实际上的非对齐加载,则第一加载流水线从第一高速缓存行撷取第一数据,并且第二加载流水线单独地从下面连续的高速缓存行撷取第二数据。第一数据和第二数据然后一起被合并为单个高速缓存行作为第一流水线的结果。在一些实施例中,在第一和第二高速缓存行被撷取之后,才最终确定该加载为实际上非对齐加载。这里描述的高速缓存行的非对齐加载指令的推测并行执行的系统和方法被用来改进非对齐加载性能。非对齐加载像正常加载一样完成,没有其他延迟。当高速缓存命中发生时,非对齐加载不引起回放,指令流不因为非对齐延迟而停顿。本文描述的高速缓存行的非对齐加载指令的推测并行执行的系统和方法对于使用多个非对齐加载操作的程序和应用非常有用。图1是根据本发明的一个实施例实施的执行高速缓存行非对齐加载操作的超标量流水线微处理器100的简化框图。微处理器100的宏体系结构可以是x86宏体系结构,其中它正确地执行被设计执行在X86微处理器上的大多数应用程序。如果获得应用程序的期望结果,则应用程序被正确执行。具体地,微处理器100执行x86指令集的指令并且包括x86用户可视寄存器组。本发明不限于x86体系结构,但是其中微处理器100可以是基于本领域普通技术人员已知的任何可替换的体系结构。在所述的实施例中,微处理器100包括具有多个级的流水线化体系结构,包括检测级102、发射/派遣级104、执行级106以及回写级108。这些级用虚线分隔开,每个虚线通常表示用于基于一个或多个时钟信号控制时序的一组同步锁存器等等。检测级102包括前端110以及预测器112。前端110通常进行操作以从存储器(例如,系统存储器122)或高速缓存(例如,高速缓存存储器120)撷取指令,并以程序顺序将它们发射到发射/派遣级104。例如,前端110可以包括:指令高速缓存(未示出),其缓存来自外部的系统存储器122的程序指令;指令解码器和译码器(未示出),其从指令高速缓存获得程序指令并将它们解码成用于执行的一个或多个微指令;以及寄存器别名表(RAT)(未示出),基于其程序顺序产生每个指令的依赖信息。在一个实施例中,指令翻译包括将微处理器100的宏指令集(诸如x86指令集体系结构)的宏指令翻译成微处理器100的微指令集的微指令。前端110发射解码的指令及其相关的依赖信息到发射/派遣级104的调度器114。调度器114包括保持从RAT接收的指令和依赖信息的队列。当指令执行时,调度器114派遣这些指令到执行级106。当一个指令的所有依赖都被解析时,并且有执行单元可以执行该指令,则该指令处于执行就绪,。诸如浮点指令(例如媒体类型指令等)或者整型指令等的功能性指令被派遣到功能性执行单元(未示出)。存储器指令,包括加载和存储指令,被派遣到存储器顺序缓冲器(MOB)118。MOB118包括一个或多个加载和存储流水线,或者组合的加载/存储流水线。在简化说明中,仅两个加载流水线LP0128和LP1130被示出在MOB118内,但是可以理解还可以包括其它的加载流水线和存储流水线。调度器114包括第一端口0,用于派遣加载指令到第一加载流水线LP0128,并且包括第二端口1,用于派遣加载指令到第二加载流水线LP1130。MOB118访问诸如级别2(L2)高速缓存等的高速缓存存储器120,其存储从系统存储器122加载或者最终存储在系统存储器122的数据和信息。微处理器100包括总线接口单元(BIU)等(未示出),用于将系统存储器122接口连接到微处理器100。高速缓存存储器120典型地在微处理器100内部,尽管也可以构思外部耦接的高速缓存系统。配合发射指令,RAT也为再排序缓冲器(ROB)126中的指令分配一条目,再排序缓冲器(ROB)126被示出位于回写级108中。因此,以程序顺序将指令分配到ROB126中,ROB126可以被配置为环形队列以确保指令以程序顺序退出。在特定配置中,ROB126内的分配的条目可以还包括诸如寄存器等的存储空间,用于存储一旦执行指令的结果。可选地,微处理器100包括单独的物理寄存器文件(PRF),其中分配的条目可以包括一指针,其指向PRF内的分配的用于存储结果信息的寄存器。例如,加载指令从高速缓存存储器120撷取数据并临时将数据存储到PRF中的所分配的寄存器。检测级102内的预测器112用于检测或预测何时加载指令是高速缓存行非对齐加载,其中将被加载的数据跨越高速缓存存储器120的高速缓存行边界。当前端110处理每一个加载指令时,它咨询预测器112推测加载指令是否是高速缓存行非对齐加载。如果预测器112预测加载指令是高速缓存行非对齐加载,则前端110标注加载指令为高速缓存行非对齐加载,否则识别加载指令为高速缓存行非对齐加载。对于未被标注为高速缓存行非对齐加载的正常的加载指令,调度器114或者经由端口0将加载指令直接派遣到第一加载流水线LP0128或者经由端口1直接派遣到第二加载流水线LP1130,有效地旁路(或者直接穿过)非对齐加载派遣器116。当所发射的加载指令已经被标注为高速缓存行非对齐加载指令,则调度器114经由其端口之一派遣加载指令并临时停止其他端口。非对齐加载派遣器116检测从调度器114派遣的加载指令是否被标注为高速缓存行非对齐加载指令,并且,如果是,则非对齐加载派遣器116向第一加载流水线LP0128和第二加载流水线LP1130二者都派遣该加载指令。换言之,相同的加载指令被高效地并行派遣到两个不同的加载流水线。MOB118检测相同的加载指令已经派遣到两个不同的加载流水线LP0和LP1,并进一步确定在第一加载流水线LP0128中进行的加载指令的起始地址以从高速缓存存储器120内的第一高速缓存行撷取数据,以及确定在第二加载流水线LP1130中进行的加载指令的副本的起始地址以从高速缓存存储器120内的下一高速缓存行撷取数据。详细地,MOB118还将加载指令的地址翻译成虚拟地址,其最终被转换成直接存取高速缓存存储器120的物理地址。注意,虚拟地址就足够使用了,因为虚拟地址的可用的低位与物理地址的相同(都参照存储器内的相同尺寸的页面)。在一个实施例中,例如,使用4K字节页面,其中虚拟地址和物理地址的低12位是相同的。一旦虚拟地址已知,并且假定数据长度是加载指令自身指定的,则MOB118能够认定加载指令是否实际上是非对齐的。在一个实施例中,仅当MOB118认定加载指令是实际上非对齐的时候,MOB118再确定在第一加载流水线LP0128和第二加载流水线LP1130中进行的加载指令的起始地址。在另一实施例中,MOB118从第一加载流水线和第二加载流水线撷取数据而不管虚拟地址是否指示加载指令是实际上非对齐的,并且被撷取的两个高速缓存行随后被合并逻辑124根据实际物理地址和数据长度进行处理。最终确定虚拟地址的对应的物理地址,诸如从翻译查找缓冲器(translationlook-asidebufferTLB)撷取的或者作为表经历处理(tablewalkprocess)等的结果,其中第一加载流水线LP0128使用物理地址或者物理地址的修改版本来从第一高速缓存行访问数据,并且第二加载流水线LP1130使用物理地址的另一个修改版本从第二高速缓存行访问数据。这样的地址修改可以基于高速缓存行对齐、基于数据长度的对齐、或者依赖于具体实现的其他方法。一旦撷取两个高速缓存行,执行级106内的合并逻辑124将所请求的数据合并到单个高速缓存行,并且结果存储在ROB126中或者PRF的分配的寄存器。注意,就像从派遣到加载流水线之一(例如,加载流水线LP0128)的调度器114的一个端口(例如,端口0)派遣的一样产生结果,并且可以丢弃针对其他端口(例如,端口1)和加载流水线(例如,加载流水线LP1130)产生的任何其他数据。当MOB118确定加载指令实际上不是高速缓存行非对齐加载指令时,则加载指令以与正常加载指令相同的方式被处理。加载指令在第一和第二加载流水线LP0128或LP1130之一中处理,并且加载指令在第一和第二加载流水线LP0128或LP1130的另一个中被丢弃。注意,由于调度器114的端口之一临时被停止并且两个加载流水线被临时用于执行单个加载指令,所以错误预测的非对齐加载指令呈现轻微的性能下降。错误预测的非对齐加载指令的性能下降显著小于当单个加载流水线试图执行最终结果是非对齐的加载指令时出现的性能下降。MOB118在确定加载指令是否实际上是高速缓存行非对齐加载指令之后,还提供该加载指令的对齐或非对齐指示(A/U)以及相应的指令指针(IP)。在另一个实施例中,MOB118还提供加载指令的虚拟地址(VA)和跳步(SS)。预测器112使用这个信息,包括A/U和IP、或A/U、IP、SS和VA,以对检测高速缓存行非对齐加载指令做出未来的预测。注意,当从指令高速缓存读取时,前端110访问每个加载指令的IP,并且当通过微处理器流水线传播时,与加载指令一起发射和派遣IP。由于加载指令通常会反复执行很多次,例如在循环程序中,IP地址可以用来在相同指令在接下来的执行中被辨识。图2是根据本发明的一个实施例的非对齐加载指令和作为结果的合并操作的推测并行执行结果的简化图。通过一种类型的“字节顺序”(endianness)示出示例,(例如,高字节序或低字节序),其中可以理解,同样可以构思相反的字节顺序。在这个例子中,高速缓存存储器120的高速缓存行长度是64字节(64B)并且非对齐的加载指令指定16字节的数据。以ULA示出的非对齐加载指令的地址出现在高速缓存存储器120的第一高速缓存行CL1内,其中CL1仅包括所请求数据的头5个字节(5B)。所请求数据的其余12个字节(11B)出现在下一高速缓存行CL2上。由于该加载指令的数据长度是16字节,所以可以通过加载流水线之一(例如,第一加载流水线LP0128)将非对齐加载指令地址ULA转换成调整的加载地址ALA0,以从包括目标数据的5字节部分的第一高速缓存行CL1加载16字节。另一个加载地址ALA1由另外的加载流水线(例如,第二加载流水线LP1130)确定,诸如沿着高速缓存行边界,以加载包括目标数据的其余11字节部分的第二高速缓存行CL2的16字节。作为如这里描述的非对齐加载指令的推测并行执行的结果,通过加载流水线(例如LP0128)返回在202示出的第一高速缓存行CL1的16字节以及通过另一加载流水线(例如LP1130)返回在204示出的第二高速缓存行CL2的16字节。结果附接在一起并且所请求的16字节结果部分被隔离和加载到结果寄存器206。可以使用各种方法附接两个流水线的结果,并将结果合并或隔离到可应用的目的寄存器206,包括加载、移位、掩蔽、反相等或其组合。图3是根据本发明一个实施例的预测器300(其中预测器300可被用作图1的预测器112)的简化框图。在这种情况中,预测器300包括用于控制和搜索非对齐预测队列(UPQ)304的搜索和控制逻辑302。UPQ304是存储针对已经被确定将是非对齐的每一个加载指令的指令指针(IP)的存储器。搜索和控制逻辑302被示出为从所述UPQ304分离,但是可替换地可以结合在其中。如图所示,例如,UPQ304可以存储至多整数“N”个IP,IP1,IP2,…IPN。N是用于存储给定配置的适合数量的IP的任何合适的数字。尽管未示出,每一个条目可以包括有效值或位等。一旦UPQ304变满,可以根据任何替代策略保持UPQ304,诸如其中在UPQ304内较以新的IP代替最老的IP的最近最少使用的(LRU)策略。当前端110接收用于执行的加载指令时,它还接收用于加载指令的相应的以IP_L示出的IP。前端110将IP_L应用到搜索和控制逻辑302,搜索和控制逻辑302搜索用于匹配IP的UPQ304。搜索和控制逻辑302声明(assert)非对齐检测(UD)至前端110,以指示是否存在匹配。例如当在UPQ304内发现匹配时,可以声明UD为高(例如逻辑“1”),或者当在UPQ304内没有发现匹配时,可以声明UD为低(例如逻辑“0”)。如果发现匹配,则前端110将相应的加载指令标注为非对齐的加载指令。否则,当在UPQ304内没有发现匹配IP时,则前端110不标注加载指令。如前所述,MOB118接收和执行加载指令,确定加载指令是否实际上是高速缓存行非对齐加载指令,并与加载指令的IP一起提供A/U指示。执行的加载指令的A/U和IP被提供到搜索和控制逻辑302。如果加载指令最初没有被预测为非对齐的(例如,在UPQ304内未被在前发现),但是A/U指示指示加载指令事实上是非对齐的,则搜索和控制逻辑302以IP更新UPQ304,从而相同加载指令的随后例程(iteration)将被标注为非对齐的。注意,加载指令的任何这样的随后例程可以具有变化的虚拟/物理地址,并且任何一个或多个可以实际上不是非对齐的加载操作。因此,对于一个或多个随后的例程,预测可能是错误的。但是,已经确定错误地预测加载为非对齐的惩罚是相对小的。在一个实施例中,如果同一个加载指令的错误预测(错误地预测为非对齐)的情况的连续数量达到预定的执行数量,则搜索和控制逻辑302可以删除UPQ304内的加载指令的IP。如果加载指令被预测为非对齐(例如,在UPQ304内在前被发现)但是A/U指示指示其不是非对齐的(即,是不跨越高速缓存边界的正常的加载指令),则搜索和控制逻辑302可以或可以不从UPQ304移除相应的IP。如上所注意的,错误地预测加载为非对齐的惩罚是相对小的。在所示的一个实施例中,如果同一个加载指令的错误预测情况的连续数量达到预定的执行数量,则搜索和控制逻辑302可以删除加载指令的IP。图4是根据本发明另一个实施例的预测器400(其中预测器400也可被用作图1的预测器112)的简化框图。在这种情况中,预测器400包括用于控制和搜索另一个非对齐预测队列(UPQ)404的搜索和控制逻辑402。搜索和控制逻辑402被示出为从所述UPQ404分离,但可替换地可以是结合在其中。以与UPQ304相同的方式,UPQ404是存储针对已经被确定将是非对齐的加载指令的每一个加载指令的指令指针(IP)的存储器。对于每一个存储的IP,UPQ404附加地存储与加载指令的IP对应的“前次地址”和“跳步”。因此对于存储的IP,IP1,IP2,…IPN的每一个IP,UPQ404还可以存储相应的前次地址LA1,LA2,…,LAN和相应的跳步SS1,SS2,…,SSN。在此实施例中,从MOB118提供每一个前次地址LA作为其虚拟地址VA。相同加载指令在两个连续例程中的地址可以不是连续的。“跳步”是在一加载指令的前次执行的结束地址和加载指令的下一执行的起始地址之间的地址跳过长度,并且,在本实施例中,通过监视相应加载指令的最近执行来确定每一个跳步。如果加载指令的跳步是相对固定的,则通过相应的前次地址和跳步预测相应的加载指令的下一例程的加载地址,并且该类可预测的并且实际上非对齐的加载指令被记录在UPQ404中。在这种情况中,当前端110接收用于执行的加载指令,它将加载指令的IP_L和加载指令的数据长度(DATA_LEN)应用到搜索和控制逻辑402,搜索和控制逻辑402搜索用于匹配IP的UPQ404。如果存在匹配,则意味着该加载指令的前次例程被MOB118检测为实际上非对齐的。在匹配时,搜索和控制逻辑402声明MATCH信号,并使UPQ404输出与匹配IP对应前次地址和跳步,以MLA和MSS示出。匹配条目的匹配的前次地址MLA和跳步MSS被提供给第一加法器406的相应输入,第一加法器406输出加载指令的新例程的起始地址SA。因此,SA是新加载指令的起始地址的预测。预测的起始地址SA被提供给第二加法器408的一个输入,第二加法器408在其另一输入接收DATA_LEN,并输出用于加载指令的新例程的结束地址EA。SA、EA和MATCH被提供给非对齐检测器410的输入,非对齐检测器410声明UD信号至前端110。具体地,如果存在匹配条目并且如果SA和EA不在高速缓存存储器120的相同高速缓存行内,则加载指令被认为是非对齐的,非对齐检测器410声明UD以指示加载指令是非对齐的。但是,如果即使存在匹配的IP,但SA和EA仍在高速缓存存储器120的相同高速缓存行内,则加载指令被认为是对齐的(正常的),则非对齐检测器410去声明(de-assert)UD以指示加载指令不是非对齐的。前端110相应地基于UD信号标注加载指令。注意,当发现匹配IP,但是加载指令被断定是对齐的(或者不是非对齐的),则在那时不需要从UPQ404移除IP、相应的前次地址LA和跳步SS。首先,实际上,加载指令可能是如通过MOB118确定的为非对齐的,在MOB118中对应的前次地址用执行的非对齐加载的相应的虚拟地址VA更新。其次,由于有至少一个例程被确定为非对齐的,则加载指令的随后例程可以包括附加的非对齐的出现,从而即使当一些例程转换为对齐的,仍在UPQ404中保持其存储的条目是更有效率的做法。如上所注意的,预测加载是非对齐的且是错误的比预测加载是对齐的且是错误的惩罚要小。如果连续数量的后续例程是对齐的,则可以移除条目。基于MOB118的结果更新UPQ404的操作与针对UPQ304描述的类似,除了还提供确定的虚拟地址VA和跳步SS用于确定预测之外。执行的加载指令的A/U、IP、SS和VA被提供给搜索和控制逻辑402。如果加载指令未被预测为非对齐的(例如在UPQ404内没有在前被发现),但是A/U指示指示它是非对齐的,则搜索和控制逻辑402以IP、SS和VA更新UPQ404,从而相同加载指令的后续例程可以被标注为非对齐的,如预测器400所确定的。再次,对于一个或多个后续例程,预测可能是错误的,其中错误地预测加载为非对齐的惩罚是相对小的。如同预测器300,如果同一个加载指令的错误预测情况的连续数量达到预定的执行数量,则预测器400的搜索和控制逻辑402可以删除加载指令的IP/LA/SS条目。而且,如果加载指令被预测为非对齐的(例如,在UPQ404内被在前发现)但是A/U指示指示它不是非对齐的(即,是没有跨越高速缓存行边界的正常的加载指令),则搜索和控制逻辑402可以基于诸如连续的错误预测的数量从或不从UPQ404移除相应的IP。图5是根据本发明一个实施例的非对齐加载派遣器500(可被用作图1的非对齐加载派遣器116)的简化框图。非对齐加载派遣器500包括非对齐加载感测器502和多路器(MUX)504。非对齐加载感测器502检测从调度器114的端口0派遣的非对齐的加载指令(例如被标注为非对齐的任何加载指令)并相应地声明一选择信号US。提供US至MUX504的选择输入,MUX504具有耦接到调度器114的输出端口1的第一输入或逻辑“0”以及具有耦接到调度器114的输出端口0的第二输入或逻辑“1”。MUX504的输出提供给加载流水线LP1130。通常,从端口0派遣的正常(对齐的)加载指令提供至加载流水线LP0128,并且US信号是低(或逻辑“0”),从而从端口1派遣的正常加载指令提供至加载流水线LP1130。在这个例子中,配置调度器114以经由端口0派遣非对齐加载指令(例如,被标注为非对齐的任何加载指令)并临时停止端口1。非对齐加载感测器502感测从调度器114的端口0派遣的被标注为非对齐的任何加载指令,并声明引起MUX504改为选择调度器114的端口0的US信号为高(或为逻辑“1”)。以这种方式,当经由调度器114的端口0派遣非对齐加载指令时,其被派遣至加载流水线LP0128和LP0130二者用于如前面所述的并行执行。图6是根据本发明另一个实施例的非对齐加载派遣器600(也可被用作图1的非对齐加载派遣器116)的简化框图。非对齐加载派遣器600也包括以基本相同方式耦接的非对齐加载感测器502和多路器(MUX)504,其中非对齐加载感测器502检测从调度器114的端口0派遣的非对齐的加载指令并相应地控制MUX504。在这种情况中,US信号被示出为信号US1。非对齐加载派遣器600还包括非对齐加载感测器602和第二多路器(MUX)604。非对齐加载感测器602检测从调度器114的端口1派遣的非对齐的加载指令并相应地经由信号US2控制MUX604。在这种情况中,调度器114的端口0被提供MUX604的逻辑“0”输入以及调度器114的端口1被提供MUX604的逻辑“1”输入。通常,US1和US2二者都是低,从而从端口0派遣的正常(对齐的)加载指令提供至加载流水线LP0128,并且从端口1派遣的正常加载指令提供至加载流水线LP1130。在这种情况中,配置调度器114以经由端口0或端口1派遣非对齐加载指令(例如,被标注为非对齐的任何加载指令)并临时停止另一端口。例如,如果调度器114经由端口1派遣非对齐加载,则端口0被临时停止,并且反之亦然。非对齐加载感测器602以非对齐加载感测器502的下列方式相同的方式操作:非对齐加载感测器502感测从调度器114的端口0派遣的被标注为非对齐的任何加载指令,并声明引起MUX504改为选择调度器114的端口0的US1信号为高(或逻辑“1”)。以这种方式,当经由调度器114的端口0派遣非对齐加载指令时,其被派遣至加载流水线LP0128和LP0130二者。另外,非对齐加载感测器602以类似的方式操作并感测从调度器114的端口1派遣的被标注为非对齐的任何加载指令,并声明引起MUX604改为选择调度器114的端口1的US2信号为高(或逻辑“1”)。以这种方式,当经由调度器114的端口1派遣非对齐加载指令时,其被派遣至加载流水线LP0128和LP0130二者,用于如前面所述的并行执行。概括来说,微处理器第一或检测级中的预测器用于推测发射到调度器的加载指令是否是非对齐的。微处理器的前端将加载指令相应地标注为非对齐的加载指令。微处理器的发射/派遣级的非对齐加载派遣器检测被派遣微处理器执行级的、被标注为非对齐的加载指令,并并行地派遣加载指令的两个副本至执行级的两个加载流水线。执行级内的存储器系统(例如,MOB等)确定加载指令的地址(例如,虚拟地址),以确认加载指令为实际上非对齐或者不是,并提供该确定用于预测器的访问。该信息用于更新和改善非对齐加载指令预测。存储器系统调整加载指令的副本的物理地址以撷取来自一个加载流水线的第一高速缓存行的目标加载数据的第一部分,并且同时撷取来自另一个加载流水线的下一高速缓存行的目标加载数据的剩余部分。如果加载指令被确定为实际上非对齐的,则执行级内的合并逻辑合并来自两个加载流水线的结果以提供合并的结果作为被标注为非对齐的加载指令的合适结果。如果相反加载指令被确定为对齐的(即,不是非对齐的),则一个加载流水线中的加载指令处理为正常的加载指令,并且另一个加载流水线的结果被丢弃。请认识到,高速缓存行非对齐加载指令是被推测地确定的,并可能是被误预测。如果预测没能识别加载指令为非对齐的,则加载指令的性能结果恶化基本上与现有配置相同。如果预测非正确地将正常的加载指令标注为非对齐的(当事实上它不是)时,与按正常执行加载相比性能仅少许恶化。但是,当预测正确地识别非对齐加载指令时,获得显著的性能改善,主要因为避免了与试图如正常加载指令一样执行非对齐加载指令相关的显著恶化。因为这里描述的高速缓存行非对齐加载指令的推测并行执行的系统和方法正确地预测了相当可观的数量的非对齐加载指令,因此微处理器的整体效率和性能与现有配置相比得到显著改善。已经呈现前述描述以使得本领域普通技术人员能够如在特定应用及其需求的上下文中提供的那样做出和使用本发明。虽然已经参照其一些优选版本考虑细节而描述了本发明,但是其他版本和变形是可以的并且可以被预计到。优选实施例的各种修改对于本领域技术人员来说将是显而易见的,并且这里所限定的一般原理可以被应用于其他实施例。例如,可以以包括逻辑器件或电路等的任何适当方式来实施这里所描述的电路。本领域技术人员应当明白,他们能够容易地使用所公开的概念和特定实施例来作为设计或修改其他结构的基础,以执行与本发明相同的目的,而不会背离本发明的精神和范围。因此,本发明不意欲被限制为这里所示出和描述的特定实施例,而是应当符合与这里公开的原理和新颖性特征一致的最宽范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1