减少处理引擎中的加载-存储冲突惩罚的系统和方法

文档序号:8487663阅读:262来源:国知局
减少处理引擎中的加载-存储冲突惩罚的系统和方法
【技术领域】
[0001]本发明一般涉及一种处理引擎,更具体地涉及一种减少推定的乱序处理引擎中的加载-存储冲突惩罚的系统和方法。
【背景技术】
[0002]诸如微处理器等的处理引擎执行诸如x86指令集架构等的指令集架构的指令。在许多这样的引擎中,经常被称为宏指令的、指令集架构的指令首先被翻译成微指令(或微操作或“ μ op”),微指令被发射到将指令派遣到执行单元的保留站模块。这里,微指令被更一般地简称为“指令”。指令也被发射到确保指令的按次序退出(retirement)的重排序缓冲器。
[0003]乱序(out-of-order,0-0-0)调度器在处理器设计中被广泛使用,并且提供高性能处理器与他者之间的重要区别。在0-0-0调度器中,基于依赖性来派遣每个指令,当多个指令分别使用同一寄存器来作为源和目的地时存在依赖性。此外,一些指令的依赖性难以识别,诸如加载(load)指令和存储(store)指令的依赖性。这是因为,依赖性不是由于同一寄存器而引起的,而是由于同一地址而引起的,而该地址是不为调度阶段的调度器所知道的。所以,一种通常的方法是推定地假设加载指令和存储指令不具有任何冲突。当后面不幸检测到冲突时,结果是不正确的,清空流水线,并且再次派遣指令。当指令的推定派遣是不正确的时,指令的清空和重新派遣引起显著的惩罚(penalty)。

【发明内容】

[0004]根据一个实施例的微处理器包括加载流水线、调度器、地址生成单元和加载-存储队列。加载流水线包括多个级,包含至少一个操作数级和多个执行级。调度器向至少一个操作数级派遣加载指令,以由执行级来执行。加载指令包括推定派遣的加载指令。地址生成单元在推定派遣的加载指令已进行到执行级之前提供关于推定派遣的加载指令的加载指令虚拟地址。当在加载指令虚拟地址与至少一个先前派遣的且尚未确定对应存储数据的存储指令的存储指令虚拟地址之间发生匹配时,加载-存储队列声明清除信号以无效推定派遣的加载指令。
[0005]倘若冲突,诸如当在加载指令虚拟地址与至少一个先前派遣的存储指令的存储指令虚拟地址之间发生匹配时,清除信号无效推定派遣的加载指令。以此方式,当清除信号被声明时调度器可以不过早地派遣依赖性指令,否则相反的是,调度器被配置为调度依赖于投机加载指令的指令的派遣。
[0006]在一个实施例中,加载流水线被配置为当推定派遣的加载指令已经进行到所选择的执行级时声明加载有效信号。提供阻止逻辑(kill logic),当清除信号被声明时,阻止逻辑阻止调度器检测到加载有效信号。可以提供广播逻辑以当加载有效信号被声明时接收和广播加载有效信号,除非清除信号被声明以无效推定派遣的加载指令。广播逻辑可以包括当清除信号被声明时阻止广播逻辑广播加载有效信号的阻止逻辑。
[0007]加载-存储队列可以包括多个条目,每个用于将推定派遣的加载指令的加载指令虚拟地址与一个或多个存储指令虚拟地址进行比较。可以为每个条目提供有效逻辑和适格逻辑,以确保对应的存储指令虚拟地址与早先派遣的且对应存储数据尚未被确定的存储指令对应。每个条目可以声明初步清除信号,并且可以提供或(OR)逻辑以当任何一个或多个初步清除信号被声明时声明清除信号。
[0008]为乱序处理引擎公开加载-存储冲突检测系统。处理引擎包括:调度器,向多个指令流水线派遣指令,其中指令流水线包括当执行推定派遣的加载指令时提供加载有效信号的加载流水线。加载-存储冲突检测系统包括比较逻辑、广播逻辑和阻止逻辑。当推定派遣的加载指令的加载指令虚拟地址与至少一个先前派遣的且对应数据尚未准备好的存储指令的至少一个存储指令虚拟地址匹配时,比较逻辑声明清除信号。广播逻辑向调度器广播加载有效信号,以使能依赖于推定派遣的加载指令的任何指令的派遣。当在加载有效信号之前或与其同时声明清除信号时,阻止逻辑无效加载有效信号。
[0009]阻止逻辑可以被并入广播逻辑或调度器或二者的任何适当组合中。加载-存储冲突检测系统可以包括用于存储一个或多个存储指令虚拟地址的存储器。
[0010]减少乱序投机处理引擎中的加载-存储冲突的方法包括:提供关于对应存储数据尚未准备好的至少一个先前派遣的存储指令中的每一个的存储指令地址;向加载流水线推定派遣加载指令;在执行推定派遣的加载指令之前确定关于推定派遣的加载指令的加载指令地址;将加载指令地址与至少一个先前派遣的存储指令中的每一个的存储指令地址进行比较;当加载指令地址与至少一个先前派遣的存储指令的存储指令地址匹配时,声明清除信号;在执行推定派遣的加载指令的同时声明加载有效信号;以及当清除信号也被声明时无效加载有效信号。
[0011]该方法可以包括:向调度器的每个队列广播加载有效信号;以及当也清除信号也被声明时抑制加载有效信号的广播。该方法可以包括:确定至少一个先前派遣的存储指令中的每一个存储指令地址的有效性。该方法可以包括:将加载指令地址与多个存储指令地址进行比较,并且当加载指令地址与多个存储指令地址之一匹配时,声明多个初步清除信号中的对应的一个;并且当至少一个初步清除信号时被声明时声明清除信号。
【附图说明】
[0012]参照以下描述和附图,将更好地理解本发明的益处、特征和优点,在附图中:
[0013]图1是根据本发明的一个实施例实施的超标量流水线微处理器的简化框图;
[0014]图2是以简化方式描绘根据示出冲突和对应因果关系的传统配置的0-0-0指令序列相比于顺序执行指令序列的图;
[0015]图3是根据一个实施例的接收从图1的保留站中的LD RS Q派遣的指令的图1的加载流水线以及对应的加载执行级的简化框图;
[0016]图4是根据本发明的一个实施例的图3的LoStQ的更具体的框图;以及
[0017]图5是根据本发明的一个替换实施例的图4的LoStQ的示范性条目的图。
【具体实施方式】
[0018]发明人已经认识到与因处理引擎内的加载指令的推定派遣而导致的加载-存储冲突相关联的惩罚。因此,他们开发了一种在加载指令被派遣以执行之前检测加载-存储冲突的系统和方法。该方法进一步压制或者抑制加载指令的派遣生效,以防止依赖于该推定派遣的加载指令的其它指令的发射。因为并不过早地派遣潜在依赖的指令,所以流水线无需被清空并且依赖性指令无需被重播(replay)。以此方式,与该推定派遣的加载指令相关联的惩罚被减少或被最小化。加载-存储(Lo-St)队列(LoStQ)结构被加入到检测加载指令与未准备好完成的任何存储指令之间的冲突的指令流水线中。未准备好完成的存储指令意指已经确定了地址部分(STA)但是尚未确定数据部分(STD),以致存储指令被暂时认为“LoSt”。加载-存储队列LoStQ检测该冲突并发回一清除信号,以阻止将加载指令的派遣生效广播至保持派遣指令的调度队列。该清除信号抑制依赖于该推定派遣的加载指令的其它指令的派遣,以提高性能效率。
[0019]图1是根据本发明的一个实施例实施的超标量流水线微处理器100的简化框图。微处理器100包括:指令高速缓冲存储器102,其高速缓冲存储诸如X86指令集架构等的指令集架构的宏指令。其它或可替换的指令集架构也是可以预期的。微处理器100包括:指令翻译器
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1