CN104808996B - 减少处理引擎中的加载-存储冲突惩罚的系统和方法 - Google Patents
减少处理引擎中的加载-存储冲突惩罚的系统和方法 Download PDFInfo
- Publication number
- CN104808996B CN104808996B CN201510229378.3A CN201510229378A CN104808996B CN 104808996 B CN104808996 B CN 104808996B CN 201510229378 A CN201510229378 A CN 201510229378A CN 104808996 B CN104808996 B CN 104808996B
- Authority
- CN
- China
- Prior art keywords
- load
- instruction
- sent
- signal
- useful signal
- 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
Links
Abstract
一种用于乱序处理引擎的加载‑存储冲突检测系统,包括:调度器,向多个指令流水线派遣指令。指令流水线包括当执行推定派遣的加载指令时提供加载有效信号的加载流水线。加载‑存储冲突检测系统包括比较逻辑、广播逻辑和阻止逻辑。当推定派遣的加载指令的加载指令虚拟地址与先前派遣的且对应数据尚未准备好的存储指令的至少一个存储指令虚拟地址匹配时,比较逻辑声明清除信号。广播逻辑向调度器广播加载有效信号,以使能依赖于推定派遣的加载指令的任何指令的派遣。当清除信号被声明时,阻止逻辑无效加载有效信号,以避免降低处理性能的加载‑存储冲突。
Description
技术领域
本发明一般涉及一种处理引擎,更具体地涉及一种减少推定的乱序处理引擎中的加载-存储冲突惩罚的系统和方法。
背景技术
诸如微处理器等的处理引擎执行诸如x86指令集架构等的指令集架构的指令。在许多这样的引擎中,经常被称为宏指令的、指令集架构的指令首先被翻译成微指令(或微操作或“μop”),微指令被发射到将指令派遣到执行单元的保留站模块。这里,微指令被更一般地简称为“指令”。指令也被发射到确保指令的按次序退出(retirement)的重排序缓冲器。
乱序(out-of-order,O-O-O)调度器在处理器设计中被广泛使用,并且提供高性能处理器与他者之间的重要区别。在O-O-O调度器中,基于依赖性来派遣每个指令,当多个指令分别使用同一寄存器来作为源和目的地时存在依赖性。此外,一些指令的依赖性难以识别,诸如加载(load)指令和存储(store)指令的依赖性。这是因为,依赖性不是由于同一寄存器而引起的,而是由于同一地址而引起的,而该地址是不为调度阶段的调度器所知道的。所以,一种通常的方法是推定地假设加载指令和存储指令不具有任何冲突。当后面不幸检测到冲突时,结果是不正确的,清空流水线,并且再次派遣指令。当指令的推定派遣是不正确的时,指令的清空和重新派遣引起显著的惩罚(penalty)。
发明内容
根据一个实施例的微处理器包括加载流水线、调度器、地址生成单元和加载-存储队列。加载流水线包括多个级,包含至少一个操作数级和多个执行级。调度器向至少一个操作数级派遣加载指令,以由执行级来执行。加载指令包括推定派遣的加载指令。地址生成单元在推定派遣的加载指令已进行到执行级之前提供关于推定派遣的加载指令的加载指令虚拟地址。当在加载指令虚拟地址与至少一个先前派遣的且尚未确定对应存储数据的存储指令的存储指令虚拟地址之间发生匹配时,加载-存储队列声明清除信号以无效推定派遣的加载指令。
倘若冲突,诸如当在加载指令虚拟地址与至少一个先前派遣的存储指令的存储指令虚拟地址之间发生匹配时,清除信号无效推定派遣的加载指令。以此方式,当清除信号被声明时调度器可以不过早地派遣依赖性指令,否则相反的是,调度器被配置为调度依赖于投机加载指令的指令的派遣。
在一个实施例中,加载流水线被配置为当推定派遣的加载指令已经进行到所选择的执行级时声明加载有效信号。提供阻止逻辑(kill logic),当清除信号被声明时,阻止逻辑阻止调度器检测到加载有效信号。可以提供广播逻辑以当加载有效信号被声明时接收和广播加载有效信号,除非清除信号被声明以无效推定派遣的加载指令。广播逻辑可以包括当清除信号被声明时阻止广播逻辑广播加载有效信号的阻止逻辑。
加载-存储队列可以包括多个条目,每个用于将推定派遣的加载指令的加载指令虚拟地址与一个或多个存储指令虚拟地址进行比较。可以为每个条目提供有效逻辑和适格逻辑,以确保对应的存储指令虚拟地址与早先派遣的且对应存储数据尚未被确定的存储指令对应。每个条目可以声明初步清除信号,并且可以提供或(OR)逻辑以当任何一个或多个初步清除信号被声明时声明清除信号。
为乱序处理引擎公开加载-存储冲突检测系统。处理引擎包括:调度器,向多个指令流水线派遣指令,其中指令流水线包括当执行推定派遣的加载指令时提供加载有效信号的加载流水线。加载-存储冲突检测系统包括比较逻辑、广播逻辑和阻止逻辑。当推定派遣的加载指令的加载指令虚拟地址与至少一个先前派遣的且对应数据尚未准备好的存储指令的至少一个存储指令虚拟地址匹配时,比较逻辑声明清除信号。广播逻辑向调度器广播加载有效信号,以使能依赖于推定派遣的加载指令的任何指令的派遣。当在加载有效信号之前或与其同时声明清除信号时,阻止逻辑无效加载有效信号。
阻止逻辑可以被并入广播逻辑或调度器或二者的任何适当组合中。加载-存储冲突检测系统可以包括用于存储一个或多个存储指令虚拟地址的存储器。
减少乱序投机处理引擎中的加载-存储冲突的方法包括:提供关于对应存储数据尚未准备好的至少一个先前派遣的存储指令中的每一个的存储指令地址;向加载流水线推定派遣加载指令;在执行推定派遣的加载指令之前确定关于推定派遣的加载指令的加载指令地址;将加载指令地址与至少一个先前派遣的存储指令中的每一个的存储指令地址进行比较;当加载指令地址与至少一个先前派遣的存储指令的存储指令地址匹配时,声明清除信号;在执行推定派遣的加载指令的同时声明加载有效信号;以及当清除信号也被声明时无效加载有效信号。
该方法可以包括:向调度器的每个队列广播加载有效信号;以及当也清除信号也被声明时抑制加载有效信号的广播。该方法可以包括:确定至少一个先前派遣的存储指令中的每一个存储指令地址的有效性。该方法可以包括:将加载指令地址与多个存储指令地址进行比较,并且当加载指令地址与多个存储指令地址之一匹配时,声明多个初步清除信号中的对应的一个;并且当至少一个初步清除信号时被声明时声明清除信号。
附图说明
参照以下描述和附图,将更好地理解本发明的益处、特征和优点,在附图中:
图1是根据本发明的一个实施例实施的超标量流水线微处理器的简化框图;
图2是以简化方式描绘根据示出冲突和对应因果关系的传统配置的O-O-O指令序列相比于顺序执行指令序列的图;
图3是根据一个实施例的接收从图1的保留站中的LD RS Q派遣的指令的图1的加载流水线以及对应的加载执行级的简化框图;
图4是根据本发明的一个实施例的图3的LoStQ的更具体的框图;以及
图5是根据本发明的一个替换实施例的图4的LoStQ的示范性条目的图。
具体实施方式
发明人已经认识到与因处理引擎内的加载指令的推定派遣而导致的加载-存储冲突相关联的惩罚。因此,他们开发了一种在加载指令被派遣以执行之前检测加载-存储冲突的系统和方法。该方法进一步压制或者抑制加载指令的派遣生效,以防止依赖于该推定派遣的加载指令的其它指令的发射。因为并不过早地派遣潜在依赖的指令,所以流水线无需被清空并且依赖性指令无需被重播(replay)。以此方式,与该推定派遣的加载指令相关联的惩罚被减少或被最小化。加载-存储(Lo-St)队列(LoStQ)结构被加入到检测加载指令与未准备好完成的任何存储指令之间的冲突的指令流水线中。未准备好完成的存储指令意指已经确定了地址部分(STA)但是尚未确定数据部分(STD),以致存储指令被暂时认为“LoSt”。加载-存储队列LoStQ检测该冲突并发回一清除信号,以阻止将加载指令的派遣生效广播至保持派遣指令的调度队列。该清除信号抑制依赖于该推定派遣的加载指令的其它指令的派遣,以提高性能效率。
图1是根据本发明的一个实施例实施的超标量流水线微处理器100的简化框图。微处理器100包括:指令高速缓冲存储器102,其高速缓冲存储诸如x86指令集架构等的指令集架构的宏指令。其它或可替换的指令集架构也是可以预期的。微处理器100包括:指令翻译器104,其接收宏指令并将其翻译成微指令。然后,微指令被提供到寄存器别名表(RAT)106,RAT 106产生微指令的依赖性并按照程序次序向保留站108发射微指令,并经由指令路径107向重排序缓冲器(ROB)110发射微指令。从RAT 106发射的微指令(ISSUE INST)通常可以被称为微指令,但是这里更一般地被简化为“指令”。ROB 110存储关于从RAT 106发射的每个指令的条目。保留站108将指令派遣到多个执行单元112中合适的一个。
执行单元112可以包括:一个或多个整数执行单元,诸如整数算法/逻辑单元(ALU)114等;一个或多个浮点执行单元116,诸如包含诸如MMX和SSE单元的单指令多数据(SIMD)执行单元等;存储次序缓冲器(MOB)118等。MOB 118通常将存储器类型的指令处理到系统存储器120,MOB 118诸如包括加载指令执行流水线117和与其相似的存储指令执行流水线119。系统存储器120可以经由数据高速缓冲存储器(例如,L2数据高速缓冲存储器,未示出)和总线接口单元(BIU,未示出)与MOB 118对接。执行单元112将它们的结果提供到ROB 110,这确保指令的按次序退出。
在一个实施例中,保留站108包括多个RS队列,其中,当指令准备好被执行时,每个RS队列向对应的执行单元112调度并派遣对应发射的指令。通常,为每个执行单元112提供单独的RS队列。例如,为整数执行单元114提供RS Q1 122,并且为浮点执行单元116提供RSQ2 124。在一个实施例中,LD RS Q 126向加载流水线117提供加载指令,并且单独的ST RSQ 128向存储流水线119提供存储指令。保留站108的每个RS Q可以被替代地称为调度器,其调度向对应的执行单元112派遣所发射的指令的调度逻辑等(未示出)。
图2是以简化方式描绘根据示出冲突和对应因果关系的传统配置的O-O-O指令序列250相比于顺序执行指令序列200的图。顺序执行序列200开始于存储指令,该存储指令被划分为存储地址(STA)微指令(μop)202和之后的存储数据(STD)μop 206,STDμop 206用于利用地址ADD在系统存储器120中的存储位置204存储数据D。存储μop之后是加载(LD)指令或LDμop 208,用于将数据从地址ADD处的存储位置204加载到诸如寄存器等的贮存位置。因为按照正确的次序来执行指令,所以到执行LDμop 208时在存储位置204存储了正确的数据D,从而通过加载正确的数据D而正确获得加载结果。
O-O-O指令序列250也开始于STA微操作(μop)202。然而,在该情况下,因为尚不知道数据D操作数,所以LDμop 208在STDμop 206之前被乱序(脱离程序次序)派遣。LDμop 208将当前存储在地址ADD的存储位置204处的数据X加载到所选择的贮存位置,其中,出于实践目的,数据X与数据D不同。因为数据D尚不可得,所以LDμop 208加载了错误的数据X。如由箭头210所示,LDμop 208的推定执行被报告回保留站108处的依赖于LDμop 208的其他依赖性μop,并且这些依赖性μop可以被派遣到对应执行单元的流水线中以在执行之前取回操作数。最后,如由箭头212所示,加载μop 208的结果被报告回ROB 110,上述结果包括检测到不正确的加载结果的“MISS WHY(错过为什么)”或类似其它线程等。响应于此,ROB 110清空加载流水线117,以去除LDμop 208,并且也清空处理已经派遣的、依赖于LDμop 208的任何指令的任何其他的执行流水线。此外,如由箭头216所示,在执行STDμop 206以取回正确的数据D之后,最终必须重播LDμop 208和对应的依赖性指令。执行流水线的清空以及加载指令和任何依赖性指令的重播对微处理器100的性能有负面影响。
图3是根据一个实施例的接收从保留站108中的LD RS Q 126派遣的指令的加载流水线117以及对应的加载执行级的简化框图。保留站108被示出为包括如前所述的多个RS Q或调度器。加载流水线117被划分为多个相继级,被示出为D级302、Q级304、R级306、A(I)级308、B级310、C级312、E1级314和E2级316。通过经由加载流水线117与公共时钟信号(未示出)同步地传递或传播数据和信息的同步锁存器318的对应集合来分离各级。在相继级之间绘制垂直虚线和对应的框,以描绘级边界。
级D 302是每个执行单元112的每个流水线都公用的发射级,其中,指令从RAT 106被发射至保留站108中的调度RS Q。级Q、R和A(I)304、306和308是操作数级,其中派遣所选择的加载指令以执行,并且在实际执行之前确定所选择的指令的操作数。其余级B、C、E1和E2是用于执行所派遣的加载指令的加载执行级。当从级Q处的LD RS Q 126派遣有效的加载指令时,一个派遣有效信号DV(Q)被声明(asserted)。当该加载指令通过加载流水线117传播时,每个级产生对应的派遣标签DT(Q)、DT(R)、DT(I)、DT(B)、DT(C)。
在级A(I)308中,选择逻辑320从可能的源(例如,源可能是寄存器、几个类型的常数中的一个、存储地址等)当中选择用于该加载指令的操作数,用于确定第一源SRCA和第二源SRCB二者,第一源SRCA和第二源SRCB被提供到地址产生单元(AGU)322的相应输入。作为选择逻辑320的一个实施例,第一复用器(MUX)319在可能的源当中进行选择以提供第一源SRCA,并且第二MUX 321在可能的源当中进行选择以提供第二源SRCB,第一源SRCA和第二源SRCB二者被提供到AGU 32的输入。AGU 322输出对应的加载指令虚拟地址(LDVA)以访问系统存储器120。应当明白,LDVA可以被转换为用于访问系统存储器120的物理地址。应当注意,LDVA可以仅仅是加载指令的虚拟地址的一部分。例如,12位AGU 322计算与物理地址的[11:0]一致的[11:0]LDVA。然而,如果[11:0]LDVA与先前派遣的存储数据尚未确定的存储指令的存储指令虚拟地址(STVA)相同,则LD指令和ST指令的物理地址很可能相同,物理地址相同意味着检测到加载-存储冲突。在其他实施例中,将计算和比较更多位的虚拟地址以提高精确度。
示出通过同步锁存器318向级B 310提供LDVA,以启动执行。在级B310,LDVA的锁存版本被提供到加载-存储队列(LoStQ)326的输入,当LDVA与先前派遣的存储数据尚未确定的至少一个存储指令的存储指令虚拟地址(STVA)之间发生匹配时,LoStQ 326产生一个清除信号CLR,该清除信号CLR用以无效该推定派遣的加载指令。后面将进一步描述LoStQ 326的细节。在级B 310,加载有效(LV)逻辑325声明加载有效信号LD VALID,LD VALID信号被提供回级D 302中的广播(BC)逻辑324的输入。BC逻辑324操作以将LD VALID信号转发或广播到保留站108内的一个或多个甚至所有调度器RS Q。以此方式,已经发射到保留站108并且依赖于LD指令的任何指令可以被调动以用于派遣到对应的执行单元。通常,在提供LDVALID信号之前这些依赖性指令不被派遣,以此确保正确执行。值得注意的是,AGU 322早在操作数级(例如,级A(I)304)就提供加载指令的LDVA,也就是说,在该加载指令进入到执行级(例如,级B)以生成LD VALID信号之前,AGU 322就提供加载指令的LDVA。
来自LoStQ 326的CLR信号被提供回在BC逻辑324内示出的阻止逻辑328。通常,阻止逻辑328进行操作以防止LD VALID信号被BC逻辑324广播到保留站108的调度器RS Q。在一个实施例中,单独添加阻止逻辑328来防止LD VALID信号的广播。在另一个实施例中,BC逻辑324包括并入BC逻辑324内的禁止逻辑等,其中仅当CLR信号没有被声明来禁止广播时,BC逻辑324才将LD VALID信号传递到保留站108。
在一个替换实施例中,阻止逻辑328可以在BC逻辑324外部提供,其中阻止逻辑328基于CLR的状态来传递或阻挡LD VALID信号的广播。在另一个替换实施例中,阻止逻辑328分布在保留站108的调度RS Q当中。在该情况下,CLR信号可以改为被提供到保留站108内的每个调度RS Q,在该情况下,声明CLR信号可防止广播的LD VALID信号改变每个RS Q内的操作信号、位或值。
通常,当CLR信号在LD VALID之前或者至少与LD VALID同时被声明时,CLR信号抑制LD VALID信号的声明被检测到。当LD VALID信号被抑制时,依赖于该推定发射的加载指令的任何指令不会被发射以执行。可以在稍后重播该加载指令之后执行这些依赖性指令。
图4是根据本发明的一个实施例的LoStQ 326的更具体的框图。如前所述,AGU 322形成每个加载虚拟地址LDVA并将其传递到级B 310(经由一组对应的锁存器318)。LoStQ326包括比较逻辑。LoStQ 326包括各自被标注为ENTnn的多个条目,其中,“nn”表示条目号。在所示出的实施例中,LoStQ326包括16个条目ENT00、ENT01、…、ENT15(或ENT00-ENT15)。示出了第一条目ENT00的细节,其中,应当明白,为了每次比较多达16个虚拟地址,其余条目ENT01-ENT15中的每一个与第一条目ENT00基本相同。
LoStQ 326接收一个或多个先前派遣的存储数据尚未被确定的存储指令的虚拟地址。如本领域技术人员所明白的,存储指令被划分为用于确定系统存储器120的地址的STAμop和用于确定对应的数据值的对应STDμop。在MOB 118的存储流水线119内处理STA μop和STDμop。在一个实施例中,LoStQ 326只接收对应的STD μop将要被存储流水线119处理的一个或多个先前派遣的STA μop确定的虚拟地址。在另一个实施例中,LoStQ 326从存储流水线119接收全部虚拟地址。例如,LD RS Q 126也包括16个条目,其保持将被派遣到存储流水线119的16个存储指令。在这样的情况下,LoStQ 326的条目分别与LD RS Q 126的条目对应,并且从存储流水线119接收全部存储指令虚拟地址(STVA0-STVA15)。如这里进一步描述的,LoStQ 326识别推定派遣的加载指令的LDVA与任何一个存储指令的虚拟地址之间的冲突。当检测到冲突时,LoStQ 326声明CLR信号以抑制LD VALID信号被保留站108检测到,以便防止过早派遣依赖于该推定派遣的加载指令的任何指令。
第一条目ENT00包括:比较器402,将推定派遣的LD指令的虚拟地址LDVA与第一条目ENT00所接收的STA μop的存储指令虚拟地址STVA0进行比较。如果虚拟地址相同,则比较器402向与(AND)逻辑404(其中,“&”表示逻辑与函数)的一个输入声明匹配信号M0。第一条目ENT00也包括:与逻辑406,从存储流水线119接收指示虚拟地址STVA0是否有效的适格有效信号QV0。第一条目ENT00也包括:或(OR)逻辑408,从存储流水线119接收适格条件信号QC0A和QC0B,其中任一适格条件信号被断言为真(true),则STVA0有效。适格条件信号QC0A和QC0B被一起进行逻辑或,然后与QV0进行逻辑与,以确定一个存储有效信号VE0以指示STVA0的有效性。“有效性”意味着STVA0对应一个比推定性的加载指令更早派遣的存储指令,并且该存储指令的对应存储数据尚未被确定。VE0被提供到与逻辑404的另一输入,与逻辑404输出第一条目ENT00的第一清除信号CL0。条目ENT00-ENT15中的每个输出清除信号CL1-CL15中的对应一个,并且CL1-CL15被提供到或逻辑410的相应输入,或逻辑410输出CLR信号。
在LoStQ 326的操作中,如果虚拟地址LDVA与分别提供给条目ENT00-ENT15的多达16个存储虚拟地址STVA0-STVA15中的任何有效的一个匹配,则检测到冲突并且在B级310内声明CLR。如果CLR被声明,则当推定派遣的加载指令到达B级310并且然后声明LD VALID信号时,阻止逻辑324抑制或阻挡LD VALID信号的声明被保留站108检测到。以此方式,位于保留站108的RS队列中的任何一个的、也依赖于该加载指令的任何指令不被过早派遣以执行。因而,其中已经过早派遣依赖性指令的执行流水线无需被清空,并且对应的指令无需被重播。最终,按照程序次序非推定地重播该加载指令,这避免了潜在冲突。如果没有在LDVALID之前或与LD VALID同时声明CLR,则没有检测到冲突,并且允许执行并完成该推定派遣的加载指令。
在一个实施例中,可以从存储流水线119直接提供存储虚拟地址STVA0-STVA15以及对应的适格有效信号QV0-QV15和适格条件信号QC0A/B-QC15A/B。可替换地,当时序或线程因素可能防止直接接口时,可以在存储流水线119与LoStQ 326之间提供中间存储设备,诸如寄存器或锁存器等。可替换地,如图5中的示例性条目ENnn所示,LoStQ 326的条目ENT00-ENT15中的每个可以包括存储设备502,用于存储存储指令虚拟地址和适格信号。存储指令虚拟地址和适格信号仍然可以在存储流水线119内生成,只是被拷贝到存储设备502。存储设备502可以是寄存器或锁存器等。
应当明白,LoStQ 326可能检测并指示实际上并不存在的冲突。在该情况下,推定派遣加载指令的任何益处将丧失,并且可能由于延迟依赖性指令而导致轻微的性能下降。无论如何,错误检测的统计发生概率相对较小,因此检测到实际冲突的性能益处显著胜过因错误检测而导致的轻微性能下降。
已经呈现前述描述以使得本领域普通技术人员能够如在特定应用及其需求的上下文中提供的那样做出和使用本发明。虽然已经参照其一些优选版本考虑细节而描述了本发明,但是其他版本和变形是可以的并且可以被预计到。优选实施例的各种修改对于本领域技术人员来说将是显而易见的,并且这里所限定的一般原理可以被应用于其他实施例。例如,可以以包括逻辑器件或电路等的任何适当方式来实施这里所描述的电路。
本领域技术人员应当明白,他们能够容易地使用所公开的概念和特定实施例来作为设计或修改其他结构的基础,以执行与本发明相同的目的,而不会背离本发明的精神和范围。因此,本发明不意欲被限制为这里所示出和描述的特定实施例,而是应当符合与这里公开的原理和新颖性特征一致的最宽范围。
Claims (18)
1.一种微处理器,包括:
加载流水线,包括多个级,包含至少一个操作数级和多个执行级;
调度器向所述至少一个操作数级派遣加载指令,以由所述多个执行级来执行,其中所述加载指令包括推定派遣的加载指令;
地址生成单元,在所述推定派遣的加载指令已进行到所述多个执行级之前提供关于所述推定派遣的加载指令的加载指令虚拟地址;以及
加载-存储队列,当在所述加载指令虚拟地址与至少一个先前派遣的且对应存储数据尚未确定的存储指令的存储指令虚拟地址之间发生匹配时,声明清除信号以无效所述推定派遣的加载指令。
2.根据权利要求1所述的微处理器,还包括:
所述多个级被配置为,当所述推定派遣的加载指令已经进行到所述多个执行级中的所选择的执行级时声明加载有效信号;以及
阻止逻辑,当所述清除信号被声明时,阻止所述加载有效信号被所述调度器检测到。
3.根据权利要求1所述的微处理器,还包括:
所述多个级被配置为,当所述推定派遣的加载指令已经进行到所述多个执行级中的所选择的执行级时声明加载有效信号;以及
广播逻辑,当所述加载有效信号被声明时接收和广播所述加载有效信号,除非所述清除信号被声明以无效所述推定派遣的加载指令。
4.根据权利要求3所述的微处理器,其中,所述广播逻辑包括阻止逻辑,当所述清除信号被声明时,该阻止逻辑阻止所述广播逻辑广播所述加载有效信号。
5.根据权利要求1所述的微处理器,其中,所述加载-存储队列包括:
多个条目,每个包含:
有效逻辑,当对应的存储指令虚拟地址与比所述推定派遣的加载指令更早派遣的且对应的存储数据尚未确定的存储指令对应时,声明存储有效信号;
比较逻辑,将所述推定派遣的加载指令的所述加载指令虚拟地址与所述对应的存储指令虚拟地址进行比较,并提供对应的匹配信号;和
与逻辑,当所述存储有效信号和所述匹配信号二者为真时,声明多个初步清除信号中的对应一个;以及
或逻辑,当所述多个初步清除信号中的至少一个被声明时,声明所述清除信号。
6.根据权利要求5所述的微处理器,其中,所述多个条目中的每一个进一步包括:存储器,用于存储多个存储指令虚拟地址中的对应一个。
7.根据权利要求1所述的微处理器,其中:
所述多个级被配置为,当所述推定派遣的加载指令已经进行到所述多个执行级中的所选择的执行级时,声明加载有效信号;以及
其中所述调度器保持依赖于所述推定派遣的加载指令的至少一个依赖性指令,其中所述调度器响应于所述加载有效信号而调度所述至少一个依赖性指令的派遣,除非所述清除信号被声明。
8.一种用于乱序处理引擎的加载-存储冲突检测系统,包括:
调度器,向多个指令流水线派遣指令,其中多个指令流水线包括加载流水线,该加载流水线在当执行推定派遣的加载指令时提供加载有效信号,并且其中所述加载-存储冲突检测系统包括:
比较逻辑,当所述推定派遣的加载指令的加载指令虚拟地址与至少一个先前派遣的且对应数据尚未准备好的存储指令的至少一个存储指令虚拟地址匹配时,声明清除信号;
广播逻辑,向调度器广播上述加载有效信号,以使能依赖于上述推定派遣的加载指令的任何指令的派遣;以及
阻止逻辑,当在所述加载有效信号之前或与其同时声明所述清除信号时,无效所述加载有效信号。
9.根据权利要求8所述的加载-存储冲突检测系统,其中,所述阻止逻辑被并入所述广播逻辑中,以阻止所述加载有效信号被广播到所述调度器。
10.根据权利要求8所述的加载-存储冲突检测系统,其中,所述阻止逻辑被并入所述调度器中,以响应于所述清除信号来抑制所述加载有效信号。
11.根据权利要求8所述的加载-存储冲突检测系统,其中,还包括:用于存储所述至少一个存储指令虚拟地址的存储器。
12.根据权利要求8所述的加载-存储冲突检测系统,还包括:适格逻辑,确定所述至少一个存储指令虚拟地址的有效性。
13.根据权利要求8所述的加载-存储冲突检测系统,其中:
所述至少一个存储指令虚拟地址包括先前派遣的且对应存储数据尚未准备好的存储指令的多个存储指令虚拟地址;并且
其中,所述比较逻辑包括多个比较器,每个用于将所述加载指令虚拟地址与所述多个存储指令虚拟地址中的对应一个进行比较。
14.一种减少乱序处理引擎中的加载-存储冲突的方法,包括:
提供关于对应存储数据尚未准备好的至少一个先前派遣的存储指令中的每一个的存储指令地址;
向加载流水线推定派遣加载指令;
在执行所述推定派遣的加载指令之前确定关于所述推定派遣的加载指令的加载指令地址;
将所述加载指令地址与所述至少一个先前派遣的存储指令中的每一个的存储指令地址进行比较;
当所述加载指令地址与所述至少一个先前派遣的存储指令的存储指令地址匹配时,声明清除信号;
在执行所述推定派遣的加载指令的同时声明加载有效信号;以及
当所述清除信号也被声明时无效所述加载有效信号。
15.根据权利要求14所述的方法,还包括:
向调度器的每个队列广播所述加载有效信号;以及
当所述清除信号也被声明时抑制所述加载有效信号的广播。
16.根据权利要求14所述的方法,还包括:确定所述至少一个先前派遣的存储指令中的每一个的存储指令地址的有效性。
17.根据权利要求14所述的方法,还包括:
当所述存储指令地址与比所述推定派遣的加载指令更早派遣的且其对应的存储数据尚未准备好的存储指令对应时,声明存储有效信号;
其中,所述声明清除信号的步骤包括仅当所述存储有效信号被声明时才声明所述清除信号。
18.根据权利要求14所述的方法,还包括:
所述比较步骤包括将所述加载指令地址与多个存储指令地址进行比较,并且当所述加载指令地址与所述多个存储指令地址之一匹配时,声明多个初步清除信号中的对应的一个;以及
其中所述声明清除信号的步骤包括当至少一个初步清除信号被声明时声明所述清除信号。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510229378.3A CN104808996B (zh) | 2015-05-07 | 减少处理引擎中的加载-存储冲突惩罚的系统和方法 | |
US14/719,320 US20160328237A1 (en) | 2015-05-07 | 2015-05-22 | System and method to reduce load-store collision penalty in speculative out of order engine |
EP15196163.8A EP3091433B1 (en) | 2015-05-07 | 2015-11-25 | System and method to reduce load-store collision penalty in speculative out of order engine |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510229378.3A CN104808996B (zh) | 2015-05-07 | 减少处理引擎中的加载-存储冲突惩罚的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104808996A CN104808996A (zh) | 2015-07-29 |
CN104808996B true CN104808996B (zh) | 2018-08-31 |
Family
ID=
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754812A (en) * | 1995-10-06 | 1998-05-19 | Advanced Micro Devices, Inc. | Out-of-order load/store execution control |
US6484254B1 (en) * | 1999-12-30 | 2002-11-19 | Intel Corporation | Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses |
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754812A (en) * | 1995-10-06 | 1998-05-19 | Advanced Micro Devices, Inc. | Out-of-order load/store execution control |
US6484254B1 (en) * | 1999-12-30 | 2002-11-19 | Intel Corporation | Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3320427B1 (en) | Device and processing architecture for instruction memory efficiency | |
EP3091433B1 (en) | System and method to reduce load-store collision penalty in speculative out of order engine | |
US9740553B2 (en) | Managing potentially invalid results during runahead | |
US7721071B2 (en) | System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor | |
KR100819232B1 (ko) | 순차 멀티스레딩 프로세서, 순차 멀티스레딩 프로세서의 처리량 향상 방법 및 컴퓨터 판독 가능 기록 매체 | |
US10628160B2 (en) | Selective poisoning of data during runahead | |
JP3577052B2 (ja) | 命令発行装置及び命令発行方法 | |
US7711934B2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
US9891972B2 (en) | Lazy runahead operation for a microprocessor | |
US20140164738A1 (en) | Instruction categorization for runahead operation | |
US6654869B1 (en) | Assigning a group tag to an instruction group wherein the group tag is recorded in the completion table along with a single instruction address for the group to facilitate in exception handling | |
US5784603A (en) | Fast handling of branch delay slots on mispredicted branches | |
US7278011B2 (en) | Completion table configured to track a larger number of outstanding instructions without increasing the size of the completion table | |
CN115576610B (zh) | 一种适用于通用顺序发射处理器的指令分发处理方法及装置 | |
CN106406822A (zh) | 具有改进的别名队列和存储冲突检测的处理器 | |
CN108415730B (zh) | 微指令调度方法及使用此方法的装置 | |
JP3546403B2 (ja) | 順序外の実行を容易にする装置及び方法 | |
US20100306513A1 (en) | Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline | |
CN104808996B (zh) | 减少处理引擎中的加载-存储冲突惩罚的系统和方法 | |
CN108279928B (zh) | 微指令调度方法及使用此方法的装置 | |
US6298436B1 (en) | Method and system for performing atomic memory accesses in a processor system | |
US9823931B2 (en) | Queued instruction re-dispatch after runahead | |
WO2007084202A2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
US7636837B2 (en) | Apparatus and method for controlling instructions at time of failure of branch prediction | |
US6490653B1 (en) | Method and system for optimally issuing dependent instructions based on speculative L2 cache hit in a data processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |