CN101593098B - 转发装置与方法以及微处理器 - Google Patents

转发装置与方法以及微处理器 Download PDF

Info

Publication number
CN101593098B
CN101593098B CN2009101591012A CN200910159101A CN101593098B CN 101593098 B CN101593098 B CN 101593098B CN 2009101591012 A CN2009101591012 A CN 2009101591012A CN 200910159101 A CN200910159101 A CN 200910159101A CN 101593098 B CN101593098 B CN 101593098B
Authority
CN
China
Prior art keywords
address
written
hash
instruction
save command
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
Application number
CN2009101591012A
Other languages
English (en)
Other versions
CN101593098A (zh
Inventor
柯林艾迪
罗德尼E·虎克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN101593098A publication Critical patent/CN101593098A/zh
Application granted granted Critical
Publication of CN101593098B publication Critical patent/CN101593098B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种转发装置与方法以及微处理器,其中该转发装置包括杂凑产生器、比较器及转发逻辑单元。杂凑产生器杂凑J个地址位以产生K个杂凑位。J个地址位是载入指令或储存指令所指定的存储器地址的多个位,K为大于0的整数且J为大于K的整数。当载入指令指定的L个地址位匹配于储存指令指定的L个地址位且载入指令的K个杂凑位匹配于储存指令的K个杂凑位时,比较器输出第一预设布尔数值,否则输出第二预设布尔数值,L为大于0的整数。当比较器输出第一预设布尔数值时,转发逻辑单元将数据由储存指令转发至载入指令,而当比较器输出第二预设布尔数值时,不转发数据。本发明可能减少微处理器所执行的非正确或错误的传送转发数量。

Description

转发装置与方法以及微处理器
技术领域
本发明有关于一种微处理器,特别是有关于将数据由先前的储存指令转发至之后的载入指令。
背景技术
计算机程序经常使用储存指令(store instruction)与载入指令(load instruction)。储存指令将数据由处理器的暂存器移动至存储器,而载入指令将数据由存储器移动至处理器的暂存器。微处理器频繁地执行指令流,其中,一或多个储存指令处于一个载入指令之前,该载入指令的数据所处的存储器位置与该一或多个在前的储存指令相同。在此情况下,为了正确地执行程序,微处理器必须确保载入指令能接收由在前且最近的储存指令(the newest preceding store instruction)所产生的储存数据。完成正确程序执行的一个方法是载入指令暂停(stall),直到储存指令已将数据写入至存储器(例如系统存储器或快取存储器)。然而,这种解决方法并不具有非常高的效率。因此,在近代的微处理器中,一旦储存数据有效(available),并且载入指令准备好接收此储存数据时,微处理器将储存数据由储存指令所归属(reside)的管线阶级(pipeline stage)转移(transfer)至载入指令所归属的管线阶级。这一般称为储存转发操作(storeforward operation)、储存转发(store forwarding)、或者是储存至载入转发(store-to-load forwarding)。
为了侦测是否需要将储存数据转发至载入指令,微处理器必须比较载入存储器地址与储存存储器地址,以察看他们是否相符。最后,微处理器需要比较载入的实体地址与储存的实体地址。然而,为了避免串行化(serialize)此过程且避免增加管线阶级,近代的微处理器使用虚拟的地址以并行的(in parallel)执行此比较操作,并同时将虚拟地址转变为实体地址。微处理器接着执行实体地址的比较操作,以证明储存转发为正确的,或者判断此转发为不正确的并校正此错误。
此外,由于完整的(full)虚拟地址的比较操作会消耗大量时间(也消耗功率与芯片面积)且可能影响微处理器操作时的最大时脉频率,因此,近代的微处理器倾向只比较一部分的虚拟地址,而不是比较完整的虚拟地址。
执行储存转发的微处理器范例为Intel Pentium 4处理器。根据Intel Pentium 4处理器比较载入地址与较先前储存的储存地址,且同时由载入操作来存取L1数据快取存储器。Intel说明此转发机制在速度方面最佳化,使得其具有与快取存储器查表相同的延迟,且为了符合延迟需求,处理器仅以部分的载入地址与储存地址来执行比较操作,而不是比较完整的地址。参阅“The Microarchitecture of the Intel Pentium 4 Processor on90nm Technology”,Intel Technology Journal,Vol.8,Issue 1,February 18,2004,ISSN 1535-864X,pp.4-5。Intel另说明“假使对一地址进行储存操作之后跟随对相同地址的载入操作时,此载入操作将不会继续进行,直到储存数据为有效的。假使储存操作之后跟随着载入操作且他们的地址以4Kbyte的倍数彼此相异时,则暂停载入操作,直到储存操作完成”。参阅“AliasingCases in the Pentium M,Intel Core Solo,Intel Core Duo and IntelCore 2 Duo Processor”,Intel 64 and IA-32 ArchitecturesOptimization Reference Manual,November 2007,Order Number:248966-016,pp.3-62 to 3-63。Intel提供编码规则给语言组合者、编译者、以及使用编码程序设计者使用,以避免此地址失真情况下影响效能。因此,可推论Pentium 4在部分的地址比较操作下,只使用低于且包括地址位11的地址位。
只比较特定较低地址位的结果具有一个值得注意的地方,那就是微处理器(例如Pentium 4)可能会把转发的非正确数据储存至载入指令,且其增加了微处理器必须校正此错误的可能性,而这造成了负面的效能影响。因此,微处理器需要一种方法来更精确的预测其是否应储存转发数据。
发明内容
本发明提供一种转发装置,用以减少在微处理器内非正确地将数据由储存指令转发至载入指令的可能性,且储存指令较先前于载入指令。此转发装置包括杂凑产生器,用以对J个地址位执行杂凑函数,以产生K个杂凑位。J个地址位是由载入指令或储存指令所指定的存储器位置的地址的多个位,其中,J为大于1的整数,K为大于0的整数。此转发装置还包括比较器。当由载入指令所指定的L个地址位匹配于由储存指令所指定的对应的L个地址位,且载入指令的K个杂凑位匹配于储存指令的对应的K个杂凑位时,比较器输出第一预设布尔数值,否则,比较器输出一第二预设布尔数值,其中L为大于0的整数。此转发装置也包括转发逻辑单元,耦接比较器。当比较器输出第一预设布尔数值时,转发逻辑单元将数据由储存指令转发至载入指令,且当比较器输出第二预设布尔数值时,转发逻辑单元不将数据由储存指令转发至载入指令。
在另一样态中,本发明提供一种转发方法,用以减少在微处理器内非正确地将数据由储存指令转发至载入指令的可能性,且储存指令较先前于载入指令。此转发方法包括通过执行杂凑函数的杂凑产生器,来对J个地址位进行杂凑以产生K个杂凑位。J个地址位是由载入指令或储存指令所指定的存储器位置的地址的多个位,其中,J为大于1的整数,K为大于0的整数。此转发方法也包括当由载入指令所指定的L个地址位匹配于由储存指令所指定的对应的L个地址位,且载入指令的K个杂凑位匹配于储存指令的对应的K个杂凑位时,通过比较器输出第一预设布尔数值,否则,输出第二预设布尔数值,其中,L为大于0的整数。此转发方法更包括当比较器输出第一预设布尔数值时,通过耦接比较器的转发逻辑单元来将数据由储存指令转发至载入指令,且当比较器输出第二预设布尔数值时,不将数据由储存指令转发至载入指令。
在另一样态中,本发明提供一种微处理器,其包括一第一杂凑位产生器、一第二杂凑位产生器、一扩增地址比较器以及一数据转发逻辑单元。第一杂凑位产生器用以自一储存指令的一储存虚拟地址的一第二地址栏位产生多个第一杂凑位,其中,每一该第一杂凑位由一布尔逻辑电路来产生,所述第一杂凑位中至少一位非相同于该第二地址栏位中一位,其中该储存指令包括该储存虚拟地址与一储存数据,该储存虚拟地址包括一第一地址栏位与该第二地址栏位,所述第一地址栏位与第二地址栏位包括多个二进位地址位,且所述第一地址栏位与第二地址栏位为彼此互斥(mutually exclusive)。第二杂凑位产生器用以自一载入指令的一载入虚拟地址的一第四地址栏位产生多个第二杂凑位,其中,每一该第二杂凑位由一布尔逻辑电路来产生,所述第二杂凑位中至少一位非相同于该第四地址栏位中一位,其中该载入指令包括该载入虚拟地址,该载入虚拟地址包括一第三地址栏位与该第四地址栏位,所述第三地址栏位与第四地址栏位包括多个二进位地址位,且所述第三地址栏位与第四地址栏位彼此互斥。扩增地址比较器耦接上述第一杂凑位产生器与第二杂凑位产生器。当一扩增储存地址相同于一扩增载入地址时,用以产生一匹配信号的真值,其中,该扩增储存地址为该第一地址栏位与所述第一杂凑位的串接(concatenation),且该扩增载入地址为该第三地址栏位与所述第二杂凑位的串接。数据转发逻辑单元耦接该扩增地址比较器。当该数据转发逻辑单元接收来自该扩增地址比较器的该匹配信号的真值时,该数据转发逻辑单元将该储存数据由该储存指令转发至该载入指令。上述微处理器用以减少非正确地将一数据由一储存指令转发至一载入指令的可能性,其中,上述储存指令较先前于上述载入指令。
本发明的优点在于可能减少微处理器所执行的非正确或错误的传送转发数量。一个错误或非正确的储存转发是指储存数据非正确地由储存指令转发至载入指令的情况。由于部分地址比较操作指示出地址是匹配的,但是随后的实体地址比较操作指示出实体储存地址不匹配于实体载入地址,因此储存转发为非正确。由于必须重新发布载入指令且相依于载入指令的指令必须自指令管线上清除,因此非正确的储存转发降低了微处理器的效能。通过减少在指令管线上的指令生产量(throughput)来校正上述错误的转发操作则会降低微处理器的效能。
附图说明
图1表示根据本发明实施例的微处理器;
图2表示根据本发明实施例,图1的微处理器通过扩增地址比较操作来将数据由储存指令转发至载入指令的操作流程图;以及
图3表示根据本发明实施例,选择关于图1中的杂凑产生器与扩增地址比较器的设计的流程图。
附图中符号的简单说明如下:
100:微处理器;101:载入单元管线;102:储存单元管线;104:载入指令;108:转译查询缓冲器(TLB);114:杂凑产生器;122:载入虚拟地址;124:载入实体地址;130:扩增地址比较器;132:已选择载入地址位;134:杂凑载入位;136:扩增载入地址;138:非杂凑载入地址位;140:转发逻辑单元;142:杂凑储存位;146:扩增储存地址;148:非杂凑储存地址位;152:扩增地址匹配导线;154:储存数据;156:转发储存数据;158:储存实体地址;160:实体地址比较器;162:实体地址匹配导线;164:重新发布信号线;170:校正逻辑单元;202、204、206、208、212、214、216、218、222、224、226、228、232、234:流程步骤;302、304、306:流程步骤。
具体实施方式
为使本发明的上述目的、特征和优点能更明显易懂,下文特举一较佳实施例,并配合所附图式,作详细说明如下。
参阅图1,其表示根据本发明实施例的微处理器100的步骤图。微处理器100具有载入单元管线(load unit pipeline)101,其用来接收、执行且撤回(retire)载入指令104。载入指令104撷取来自存储器的数据,且将此数据储存在微处理器100的暂存器。微处理器100也具有储存单元管线(store unit pipeline)102与储存缓冲器(未显示)。储存单元管线102接收、执行且撤回储存指令。储存指令将数据由微处理器100的暂存器转移至存储器。在将数据写入至微处理器100的数据快取存储器的位置之前,储存缓冲器提供临时储存区储存来自储存指令的储存数据与储存地址。图1的多条虚线表示由虚线上方的较早管线阶级至虚线下方的较后管线阶级的转变。在图1中,其显示四个管线阶级。
载入指令104具有载入虚拟地址122,其在x86相容微处理器中是x86虚拟地址。在一实施例中,载入虚拟地址122中具有48个位。多个虚拟地址由微处理器100的存储器管理单元来映射至相同的实体地址。当载入虚拟地址122最初(initially)进入到微处理器100中的载入单元管线101时,其同时被提供至三处。首先,假使载入指令104的数据处于微处理器100的快取存储器(未显示),载入虚拟地址122则被提供至快取存储器,以取得数据给载入指令104。第二,载入虚拟地址122被提供至微处理器100的转译查询缓冲器(Translation Lookaside Buffer,TLB)108,以获得在第二管线阶级的载入实体地址124,将于之后详细说明。第三,载入虚拟地址122被提供至在第一管线阶级的杂凑(hash)产生器114,以产生杂凑载入位134,其中,杂凑载入位134与一部分的载入虚拟地址122串接(concatenate)以建立扩增载入地址136,如下所述。
在微处理器100的载入单元管线101的第一阶级,载入虚拟地址122被分为已选择载入地址位132与非杂凑载入地址位138。非杂凑载入地址位138与已选择载入地址位132彼此互斥(mutually exclusive)。已选择载入地址位132为载入虚拟地址122中一或多个较高地址位,且如图1所示,在图1中具有J个已选择载入地址位132,且上述J个地址位为多个虚拟存储器地址位。已选择载入地址位132输入至杂凑产生器114,其将J个已选择载入地址位132转换成K个杂凑载入位134,其中,J为大于1的整数,且K为大于0的整数,J的数目大于K。上述J个已选择载入地址位132是由载入指令104所指定的一存储器位置的一地址的多个位。因此,J个已选择载入地址位132的数量多于K个杂凑载入位134的数量。然而,在另一如下所述的实施例中,J可能等于K。在图1中,具有L个非杂凑载入地址位138,且上述L个地址位为多个非杂凑存储器地址位。在一实施例中,L个非杂凑载入地址位138为载入虚拟地址122中多个连续的较低地址位。在一实施例中,已选择载入地址位132是选择自载入虚拟地址122的位[47:12],而非杂凑载入地址位138是选择自载入虚拟地址122的位[11:0]。在具有4KB存储器的虚拟存储器系统中,载入虚拟地址122的位[47:12]为虚拟存储器地址位,其由TLB 108转译为实体存储器地址位,而载入虚拟地址122的位[11:0]为存储器索引位,其不需要由TLB 108来转译。
杂凑产生器114将J个已选择载入地址位132转换为K个杂凑载入位134。杂凑产生器114对已选择载入地址位132执行一或多个布尔组合函数(杂凑函数),包括反向(INVERT)、布尔与(AND)函数、布尔或(OR)函数、布尔异或(XOR)函数、布尔与非(NAND)函数、布尔或非(NOR)函数以及布尔异或非(XNOR)函数,以上为举例说明,并不以此为限制。在一实施例中,上述杂凑函数包括上述J个地址位中至少两位的一布尔函数,以产生上述K个杂凑位中的一位。K个杂凑载入位134与L个非杂凑载入地址位138串接以形成扩增载入地址136。
虽然图1没有显示,但是储存单元管线102也包括一杂凑产生器,其产生杂凑储存位142给进入至储存单元管线102的每一储存指令。储存单元管线102的此杂凑产生器接收储存虚拟地址的J个已选择储存地址位,其对应J个已选择载入地址位132,且此杂凑产生器使用与载入单元管线101的杂凑产生器114相同的杂凑函数,并产生对应K个杂凑载入位134的K个杂凑储存位142。上述J个已选择储存地址位是由储存指令所指定的一存储器位置的一地址的多个位。储存单元管线102串接K个杂凑储存位142与L个非杂凑储存地址位148以形成对应扩增载入地址136的扩增储存地址146,上述L个非杂凑储存地址位148对应于L个非杂凑载入地址位138。
在第二管线阶级中,扩增地址比较器130接收扩增载入地址136,并比较扩增载入地址136与在微处理器100中的未指定(uncommitted)储存指令的扩增储存地址146,其中,未指定储存指令较先前于载入指令。未指定储存指令是指在载入指令存取快取存储器时,未将其数据写入至快取存储器的储存指令。图1说明扩增地址比较器130比较扩增载入地址136与N个扩增储存地址146。对于N个较先前的未指定储存指令中的每一个,扩增储存地址146是在先前的时脉周期中产生,其中,一些扩增储存地址146归属于储存缓冲器。在储存单元管线102中提供临时储存区给N个扩增储存地址146的每一个。当N个扩增储存地址146中的一个等同于扩增载入地址136,扩增地址比较器130在一对应的扩增地址匹配导线152上产生一个真值(true value)(第一预设布尔数值,例如为二进位的1)。当N个扩增储存地址146中的一个并未与扩增载入地址136匹配(match),扩增地址比较器130在一对应的扩增地址匹配导线152上产生一个假值(falsevalue)(第二预设布尔数值,例如为二进位的0)。
在第二管线阶级的转发逻辑单元140接收来自N个较先前的未指定储存指令中每一个的储存数据154。转发逻辑单元140也接收N个扩增地址匹配导线152上的信号。转发逻辑单元140也回应地选择对应具有一真值的扩增地址匹配导线152的储存数据154,且转发逻辑单元140将被选择的储存数据154(如图1的转发储存数据156)转发至载入指令104。转发逻辑单元140也产生转发数据指标166给校正逻辑单元170,(若有的情况下)以指示出转发逻辑单元140将哪一储存指令的储存数据156转发至载入指令104。
使用的已选择载入地址位132的数量、使用已选择载入地址位132中的哪些位、所产生的杂凑载入位134的数量、以及由杂凑产生器114所执行的杂凑函数都是设计选择,其可通过程序串(program streams)的经验测试来决定。这些设计选择也许会受到各种因素所影响,例如期望最佳化的特定程序以及其特性,包括参照的方位性(locality of reference)、载入与储存指令的频率与大小(size),以及由载入指令与储存指令所存取的数据结构的构成(organization)。这些选择也会受到微处理器100的特定微处理器架构所影响,例如,管线阶级的数量、微处理器100所支援的未决(pending)指令的数量、以及微处理器100的各种指令缓冲器的大小。例如,已选择载入地址位132包括相邻位以及/或非相邻位。然而,影响这些选择的一个重要因素是微处理器100的目标时脉周期(target clock cycle)。在一实施例中,选择扩增载入地址136与扩增储存地址146的大小,并在必要的情况下,使得微处理器100的一单一时脉周期上,扩增地址比较器130执行比较操作且转发逻辑单元140转发数据。另一设计考量是需要一用来储存杂凑载入位134与杂凑储存位142的额外储存器。
在一实施例中,杂凑产生器114在J个已选择载入地址位132上执行恒等函数(identity function),以产生K个杂凑载入位134。即杂凑产生器114仅传送J个已选择载入地址位132,以作为K个杂凑载入位134。因此,不像上述的其他实施例,在此实施例中,J与K相等,且J与K都为大于0的整数。在这种实施例中,J个已选择载入地址位132包括载入虚拟地址122的虚拟存储器地址位[47:12]中至少一位。
在与扩增地址比较器130比较扩增载入地址136和N个扩增储存地址146的相同管线阶级中,TLB 108将载入虚拟地址122转换为载入实体地址124。将N个储存虚拟地址转换为N个储存实体地址158由TLB 108所执行,图1中未显示。
在储存单元管线102的第三管线阶级中,实体地址比较器160比较载入实体地址124与N个储存实体地址158。对于N个储存实体地址158中的一个等同于载入实体地址124,实体地址比较器160在一对应的实体地址匹配导线162上产生一个真值。实体地址必须被比较以确保转发储存数据156为正确数据,这就是说,转发储存数据156是转发自最新储存指令,且此最新储存指令的储存实体地址158匹配于载入实体地址124。转发储存数据156由第三管线阶级的载入指令104所接收。
实体地址比较器160输出信号给实体地址匹配导线162,并传输该信号至校正逻辑单元170。校正逻辑单元170也接收来自转发逻辑单元140的转发数据指标166。根据实体地址匹配导线162上的信号与转发数据指标166,校正逻辑单元170判断转发逻辑单元140是否已将非正确储存数据转发至载入指令104,亦即非正确或错误的储存转发操作,或者判断当转发逻辑单元140应将储存数据转发至载入指令104时,其是否没有将储存数据转发至载入指令104,亦即遗漏(miss)储存转发操作。假使是的话,校正逻辑单元170在重新发布(replay)信号线164上产生一个真值,将根据图2于下文详细说明。
在一实施例中,应用上述架构的一微处理器包括一第一杂凑位产生器、一第二杂凑位产生器、一扩增地址比较器以及一数据转发逻辑单元。第一杂凑位产生器用以自一储存指令的一储存虚拟地址的一第二地址栏位(存放J个已选择储存地址位)产生多个第一杂凑位(K个杂凑储存位),其中,每一该第一杂凑位由一布尔逻辑电路来产生,所述第一杂凑位中至少一位非相同于该第二地址栏位中一位,其中该储存指令包括该储存虚拟地址与一储存数据,该储存虚拟地址包括一第一地址栏位与该第二地址栏位,所述第一地址栏位与第二地址栏位包括多个二进位地址位,且所述第一地址栏位与第二地址栏位为彼此互斥。第二杂凑位产生器用以自一载入指令的一载入虚拟地址的一第四地址栏位(存放J个已选择载入地址位)产生多个第二杂凑位(K个杂凑载入位),其中,每一该第二杂凑位由一布尔逻辑电路来产生,所述第二杂凑位中至少一位非相同于该第四地址栏位中一位,其中该载入指令包括该载入虚拟地址,该载入虚拟地址包括一第三地址栏位与该第四地址栏位,所述第三地址栏位与第四地址栏位包括多个二进位地址位,且所述第三地址栏位与第四地址栏位彼此互斥。扩增地址比较器耦接上述第一杂凑位产生器与第二杂凑位产生器。当一扩增储存地址相同于一扩增载入地址时,用以产生一匹配信号的真值,其中,该扩增储存地址为该第一地址栏位(存放L个非杂凑储存地址位)与所述第一杂凑位的串接,且该扩增载入地址为该第三地址栏位(存放L个非杂凑载入地址位)与所述第二杂凑位的串接。数据转发逻辑单元耦接该扩增地址比较器。当该数据转发逻辑单元接收来自该扩增地址比较器的该匹配信号的真值时,该数据转发逻辑单元将该储存数据由该储存指令转发至该载入指令。上述微处理器用以减少非正确地将一数据由一储存指令转发至一载入指令的可能性,其中,上述储存指令较先前于上述载入指令。
参阅图2,其表示图1的微处理器100通过扩增地址比较操作来将数据由储存指令转发至载入指令的操作流程图。流程开始于步骤202。
在步骤202中,微处理器100的指令发送器(instructiondispatcher)(未显示)发布载入指令104至一载入单元管线101。流程继续进行至步骤204。
在步骤204中,载入单元管线101将载入指令104的载入虚拟地址122的J个已选择载入地址位132杂凑后与L个非杂凑载入地址位138串接以形成一扩增载入地址136。在图1中,于载入单元管线101中,杂凑产生器114根据J个已选择载入地址位132来产生K个杂凑载入位134。K个杂凑载入位134与L个非杂凑载入地址位138串接以形成图1的扩增载入地址136。流程继续由步骤204进行至步骤206与步骤208。
在步骤206中,图1的TLB 108接收载入虚拟地址122且产生图1的载入实体地址124。流程继续由步骤206进行至步骤218与步骤228。
在步骤208中,扩增地址比较器130比较扩增载入地址136与图1的N个扩增储存地址146,以产生图1的N个扩增地址匹配导线152上的信号,其中,N个扩增储存地址146由一储存单元管线102事先产生。流程继续进行至判断步骤212。
在判断步骤212中,转发逻辑单元140检查步骤208中所产生的扩增地址匹配导线152上的信号,(若有的话)以判断N个扩增储存地址146中哪一个匹配于扩增载入地址136。假使至少一个匹配,流程则继续进行至步骤214,否则流程继续进行至步骤226。
在步骤214中,图1的转发逻辑单元140将最新的未指定储存指令的储存数据转发至载入指令104,其中,此最新的未指定储存指令较先前于载入指令,且其对应的扩增地址匹配导线152上的信号为真(true)。流程继续进行至步骤216。
在步骤216中,载入单元管线101使用步骤214中所转发的转发储存数据156来执行载入指令104。流程继续进行至步骤218。
在步骤218中,图1的实体地址比较器160比较载入实体地址124与来自储存单元管线102与储存缓冲器的N个储存实体地址158,以产生图1的实体地址匹配导线162上的信号。流程继续进行至判断步骤222。
在判断步骤222中,由于转发数据指标166指示出在步骤214中转发逻辑单元140已将转发储存数据156转发至载入指令104,图1的校正逻辑单元170则检查步骤218所产生的实体地址匹配导线162上的信号,以判断载入实体地址124是否匹配储存指令的储存实体地址158,而此储存指令的转发储存数据156已于步骤214中转发至载入指令104,此外更判断此储存指令是否是其储存实体地址158匹配于载入实体地址124的最新储存指令。假使是,正确数据则被转发至载入指令104且由载入指令104来使用,接着流程继续进行至步骤224;否则,非正确数据被转发至载入指令104且由载入指令104来使用接着流程继续进行至步骤234。
在步骤224中,载入单元管线101执行载入指令104,且载入指令104被撤回,以完成载入指令。
在步骤226中,由于在判断步骤212中扩增地址比较操作没有产生匹配结果,因此载入单元管线101执行载入指令104而不转发储存数据。反而是,载入指令104自微处理器100的快取存储器或系统存储器取得数据。流程继续进行至步骤228。
在步骤228中,图1的实体地址比较器160比较载入实体地址124与来自储存单元管线102与储存缓冲器的N个储存实体地址158,以产生图1的实体地址匹配导线162上的信号。流程继续进行至判断步骤232。
在判断步骤232中,由于转发数据指标166指示出转发逻辑单元140没有将转发储存数据156转发至载入指令104,图1的校正逻辑单元170检查在步骤228中产生的实体地址匹配导线162上的信号,以判断载入实体地址124是否匹配N个储存实体地址158中的任一个。假使是,则发生遗漏储存转发。也就是说,载入指令104使用来自存储器的旧数据,而不是应已由N个储存指令中的一个所转发的数据,且流程继续进行至步骤234。然而,假使没有发生遗漏储存转发,正确数据自存储器中获得且由载入指令104来使用,接着,流程继续进行至步骤224以完成载入指令。
在步骤234中,由于载入指令104使用非正确数据,校正逻辑单元170在重新发布信号线164上产生一个真值,其指示一指令发送器重新发送载入指令104且清除较新于载入指令104的所有指令。流程结束于步骤234。
如图1与图2的说明,比较扩增载入地址136与扩增储存地址146而不是简单地比较在储存转发判断中的部分地址位[11:0],将可能减少必须由微处理器100校正的非正确储存转发的数量,其中,由微处理器100校正的非正确储存转发操作会降低微处理器效能并降低储存转发操作的价值(value)。然而,注意到,通过在储存转发比较判断的一些实施例中使用虚拟存储器地址位(尽管被杂凑),这些实施例可能导致较低的正确性,这是因为其引发了虚拟失真的可能性。即是,在一虚拟存储器系统中,可能发生多个虚拟地址映射至相同实体地址。因此,校正逻辑单元170可侦测遗漏储存转发状态,在此遗漏储存转发状态下,即使于步骤232中载入实体地址匹配于储存实体地址,但于步骤212中扩增载入地址不会匹配于扩增储存地址。然而,在一些情况下,可选择产生的杂凑载入位134的数量、使用来产生杂凑载入位134的已选择载入地址位132的哪些位与数量、以及由杂凑产生器114所执行用来产生杂凑载入位134的杂凑函数,使得非正确储存转发的数量减少的好处超过遗漏储存转发的数量增加的结果。
参阅图3,其表示根据本发明实施例,选择关于图1中杂凑产生器114与扩增地址比较器130的设计的流程图。图3的步骤由微处理器100设计以及/或制程阶段中由微处理器100的制程者所执行。在一实施例中,在微处理器100的操作期间,通过由特许程序指令(privileged program instructions)来程序化的微处理器100的配置模式暂存器,哪些地址位去杂凑与形成(串接成)扩增地址的选择也是可配置的。流程开始于步骤302。
在步骤302中,微处理器100的设计者决定图1中杂凑载入位134的数量,以及决定哪些杂凑载入位134去扩增非杂凑载入地址位138以在储存转发地址比较中使用。流程继续进行至步骤304。
在步骤304中,对于每一杂凑载入位134,微处理器100的设计者决定图1中载入虚拟地址122中一或多个较高地址位被杂凑产生器114杂凑,以产生各自杂凑载入位134。流程继续进行至步骤306。
在步骤306中,对于每一杂凑载入位134,微处理器100的设计者决定杂凑产生器114对已选择地址位122执行的杂凑函数,以产生各自杂凑载入位134。在一实施例中,可执行不同的杂凑函数以产生不同的杂凑载入位134。流程结束于步骤306。
如上所述,选择产生的杂凑载入位134的数量、使用来产生杂凑载入位134的已选择载入地址位132的哪些位与数量、以及由杂凑产生器114所执行用来产生杂凑载入位134的杂凑函数,都是设计选择,其可通过程序串的经验测试来决定,这些设计选择也许会受到各种因素所影响。
本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围。对于相关计算机领域中的技术人员而言,在不脱离本发明的精神下可执行在型态与细节上的各种变化。例如,除了使用硬件(例如在中央处理单元(CPU)内或耦接CPU、微处理器、微控制器、数字信号处理器、处理器核心、芯片上系统(SOC)、或任何其他装置),这些实施也可实现于配置在用来储存软件的计算机可使用(例如可读取)介质中的软件(例如计算机可读取编码、程序编码以及任何型态配置的指令,例如源语言、目的语言、机械语言)。此软件可致能此处所叙述装置与方法的功能、组建(fabrication)、塑造(modeling)、模拟、描绘(description)以及/或测试。例如,可通过一般程序语言(C、C++)、硬件描述语言(Hardware Description Languages,HDL)(包括Verilog HDL、VHDL等)、或其他可利用的语言来完成。此软件可配置在任何已知的计算机可使用介质,例如半导体、磁盘或光盘(例如CD-ROM、DVD-ROM等)。本发明的实施例包括通过提供描述微处理器设计的软件以及接着通过通讯网络(包括网际网络与内部网络)来传送软件以做为计算机数据信号,来提供此述微处理器的方法。可理解到此述的装置与方法可被包括于半导体知识产权核心,例如微处理器核心(以HDL来实现),且转换成集成电路产品的硬件。此外,此述的装置与方法可实现作为硬件与软件的结合。因此,本发明不被此述的范例实施例所限制,而是依权利要求书与其等同者所界定。本发明是实施在用于一般目的计算机中的微处理器装置内。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。

Claims (11)

1.一种转发装置,其特征在于,用以减少在一微处理器内非正确地将一数据由一储存指令转发至一载入指令的可能性,该储存指令较先前于该载入指令,该转发装置包括:
一杂凑产生器,用以对J个地址位执行一杂凑函数,以产生K个杂凑位,其中,所述J个地址位是由该载入指令或该储存指令所指定的一存储器位置的一地址的多个位,且所述J个地址位为多个虚拟存储器地址位,J为大于1的整数,K为大于0的整数;
一比较器,其中,假使由该载入指令所指定的L个地址位匹配于由该储存指令所指定的对应的L个地址位,且该载入指令的K个杂凑位匹配于该储存指令的对应的K个杂凑位,该比较器输出一第一预设布尔数值,否则,该比较器输出一第二预设布尔数值,其中所述L个地址位为多个非杂凑存储器地址位,且L为大于0的整数;以及
一转发逻辑单元,耦接该比较器,其中,当该比较器输出该第一预设布尔数值时,该转发逻辑单元将该数据由该储存指令转发至该载入指令,且当该比较器输出该第二预设布尔数值时,该转发逻辑单元不将该数据由该储存指令转发至该载入指令。
2.根据权利要求1所述的转发装置,其特征在于,J等于K,该杂凑函数为一恒等函数,使得该杂凑产生器传送所述J个地址位以作为对应的所述K个杂凑位。
3.根据权利要求1所述的转发装置,其特征在于,J大于K,该杂凑函数包括所述J个地址位中至少两位的一布尔函数,以产生所述K个杂凑位中的一位。
4.根据权利要求1所述的转发装置,其特征在于,所述L个地址位与所述J个地址位彼此互斥。
5.根据权利要求1所述的转发装置,其特征在于,更包括:
一第二比较器,用以比较由该载入指令所指定的该存储器位置的一实体存储器地址与由该储存指令所指定的该存储器位置的一实体存储器地址;以及
一校正逻辑单元,耦接该第二比较器,用以判断该转发逻辑单元是否已将非正确储存数据转发至该载入指令,其中,当该非正确储存数据转发至该载入指令时,该校正逻辑单元指示一指令发送器重新发送该载入指令且清除较新于该载入指令的所有指令。
6.一种转发方法,其特征在于,用以减少在一微处理器内非正确地将一数据由一储存指令转发至一载入指令的可能性,该储存指令较先前于该载入指令,该转发方法包括:
通过执行一杂凑函数的一杂凑产生器,来对J个地址位进行杂凑以产生K个杂凑位,其中,所述J个地址位是由该载入指令或该储存指令所指定的一存储器位置的一地址的多个位,且所述J个地址位为多个虚拟存储器地址位,J为大于1的整数,K为大于0的整数;且
假使由该载入指令所指定的L个地址位匹配于由该储存指令所指定的对应的L个地址位,且该载入指令的K个杂凑位匹配于该储存指令的对应的K个杂凑位,通过一比较器输出一第一预设布尔数值,否则,输出一第二预设布尔数值,其中所述L个地址位为多个非杂凑存储器地址位,且L为大于0的整数;以及
当该比较器输出该第一预设布尔数值时,通过耦接该比较器的一转发逻辑单元来将该数据由该储存指令转发至该载入指令,且当该比较器输出该第二预设布尔数值时,不将该数据由该储存指令转发至该载入指令。
7.根据权利要求6所述的转发方法,其特征在于,J等于K,该杂凑函数为一恒等函数,使得该杂凑产生器传送所述J个地址位以作为对应的所述K个杂凑位。
8.根据权利要求6所述的转发方法,其特征在于,J大于K,该杂凑函数包括所述J个地址位中至少两位的一布尔函数,以产生所述K个杂凑位中的一位。
9.根据权利要求6所述的转发方法,其特征在于,所述L个地址位与所述J个地址位彼此互斥。
10.根据权利要求6所述的转发方法,其特征在于,更包括:
比较由该载入指令所指定的该存储器位置的一实体存储器地址与由该储存指令所指定的该存储器位置的一实体存储器地址;以及
判断是否已将非正确储存数据转发至该载入指令,且当该非正确储存数据转发至该载入指令时,指示一指令发送器重新发送该载入指令且清除较新于该载入指令的所有指令。
11.一种微处理器,其特征在于,包括:
一第一杂凑位产生器,用以自一储存指令的一储存虚拟地址的一第二地址栏位产生多个第一杂凑位,其中,每一该第一杂凑位由一布尔逻辑电路来产生,所述第一杂凑位中至少一位非相同于该第二地址栏位中一位,其中该储存指令包括该储存虚拟地址与一储存数据,该储存虚拟地址包括一第一地址栏位与该第二地址栏位,所述第一地址栏位与所述第二地址栏位包括多个二进位地址位,且所述第一地址栏位与所述第二地址栏位为彼此互斥;
一第二杂凑位产生器,用以自一载入指令的一载入虚拟地址的一第四地址栏位产生多个第二杂凑位,其中,每一该第二杂凑位由一布尔逻辑电路来产生,所述第二杂凑位中至少一位非相同于该第四地址栏位中一位,其中该载入指令包括该载入虚拟地址,该载入虚拟地址包括一第三地址栏位与该第四地址栏位,所述第三地址栏位与所述第四地址栏位包括多个二进位地址位,且所述第三地址栏位与所述第四地址栏位彼此互斥;
一扩增地址比较器,耦接所述第一杂凑位产生器与所述第二杂凑位产生器,当一扩增储存地址相同于一扩增载入地址时,用以产生一匹配信号的真值,其中,该扩增储存地址为该第一地址栏位与所述第一杂凑位的串接,且该扩增载入地址为该第三地址栏位与所述第二杂凑位的串接;
一数据转发逻辑单元,耦接该扩增地址比较器,其中,当该数据转发逻辑单元接收来自该扩增地址比较器的该匹配信号的真值时,该数据转发逻辑单元将该储存数据由该储存指令转发至该载入指令。
CN2009101591012A 2008-08-25 2009-07-06 转发装置与方法以及微处理器 Active CN101593098B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/197,632 2008-08-25
US12/197,632 US20100049952A1 (en) 2008-08-25 2008-08-25 Microprocessor that performs store forwarding based on comparison of hashed address bits

Publications (2)

Publication Number Publication Date
CN101593098A CN101593098A (zh) 2009-12-02
CN101593098B true CN101593098B (zh) 2011-09-14

Family

ID=41407768

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101591012A Active CN101593098B (zh) 2008-08-25 2009-07-06 转发装置与方法以及微处理器

Country Status (3)

Country Link
US (1) US20100049952A1 (zh)
CN (1) CN101593098B (zh)
TW (1) TW201009697A (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9626189B2 (en) * 2012-06-15 2017-04-18 International Business Machines Corporation Reducing operand store compare penalties
US11036505B2 (en) * 2012-12-20 2021-06-15 Advanced Micro Devices, Inc. Store-to-load forwarding
US9335999B2 (en) * 2013-04-11 2016-05-10 Advanced Micro Devices, Inc. Allocating store queue entries to store instructions for early store-to-load forwarding
US9665468B2 (en) 2013-08-19 2017-05-30 Intel Corporation Systems and methods for invasive debug of a processor without processor execution of instructions
US9619382B2 (en) 2013-08-19 2017-04-11 Intel Corporation Systems and methods for read request bypassing a last level cache that interfaces with an external fabric
US9632947B2 (en) * 2013-08-19 2017-04-25 Intel Corporation Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early
US9361227B2 (en) * 2013-08-30 2016-06-07 Soft Machines, Inc. Systems and methods for faster read after write forwarding using a virtual address
CN105814548B (zh) * 2014-07-14 2019-02-12 上海兆芯集成电路有限公司 具有使用不同编索引方案的主高速缓存器和溢出高速缓存器的高速缓存器系统
US20160328237A1 (en) * 2015-05-07 2016-11-10 Via Alliance Semiconductor Co., Ltd. System and method to reduce load-store collision penalty in speculative out of order engine
US20170371659A1 (en) * 2016-06-23 2017-12-28 Microsoft Technology Licensing, Llc Load-store queue for block-based processor
US10884740B2 (en) 2018-11-08 2021-01-05 International Business Machines Corporation Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads
US11119781B2 (en) * 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
TW202331504A (zh) * 2021-12-21 2023-08-01 美商賽發馥股份有限公司 處理器管線之儲存-載入轉送

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002050668A2 (en) * 2000-12-21 2002-06-27 Intel Corporation System and method for multiple store buffer forwarding
CN1627696A (zh) * 2003-12-12 2005-06-15 华为技术有限公司 一种网络处理器转发故障的诊断方法
EP1821469A1 (en) * 2005-06-25 2007-08-22 Huawei Technologies Co., Ltd. A network processor

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6792423B1 (en) * 2000-11-28 2004-09-14 International Business Machines Corporation Hybrid longest prefix match and fixed match searches
US6581151B2 (en) * 2001-07-18 2003-06-17 Ip-First, Llc Apparatus and method for speculatively forwarding storehit data based on physical page index compare
US8775740B2 (en) * 2004-08-30 2014-07-08 Texas Instruments Incorporated System and method for high performance, power efficient store buffer forwarding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002050668A2 (en) * 2000-12-21 2002-06-27 Intel Corporation System and method for multiple store buffer forwarding
CN1627696A (zh) * 2003-12-12 2005-06-15 华为技术有限公司 一种网络处理器转发故障的诊断方法
EP1821469A1 (en) * 2005-06-25 2007-08-22 Huawei Technologies Co., Ltd. A network processor

Also Published As

Publication number Publication date
TW201009697A (en) 2010-03-01
CN101593098A (zh) 2009-12-02
US20100049952A1 (en) 2010-02-25

Similar Documents

Publication Publication Date Title
CN101593098B (zh) 转发装置与方法以及微处理器
CN111506534B (zh) 具有非阻塞高性能事务信用系统的多核总线架构
CN102197368B (zh) 数据处理指令的许可检查
CN101878475B (zh) 向星形拓扑串行总线接口委托网络处理器操作
US20130326198A1 (en) Load-store dependency predictor pc hashing
CN105446900A (zh) 处理器和区分系统管理模式条目的方法
TWI506428B (zh) 用以最佳化快取記憶體線之預提取的方法及系統
KR20210124381A (ko) 표시자를 이용해 부분 데이터 전송을 가능하게 하는 시스템, 방법 및 장치
WO2016186747A1 (en) Method and apparatus for cache tag compression
US6360297B1 (en) System bus read address operations with data ordering preference hint bits for vertical caches
CN114265872B (zh) 一种用于总线的互联装置
TW201303870A (zh) 利用快閃記憶體介面的方法及裝置
US11748107B2 (en) Complex I/O value prediction for multiple values with physical or virtual addresses
US8659318B1 (en) Systems and methods for implementing tristate signaling by using encapsulated unidirectional signals
JPS62222344A (ja) アドレス変換機構
JP3604548B2 (ja) アドレス一致検出装置、通信制御システム及びアドレス一致検出方法
CN109144898B (zh) 一种系统内存管理装置和系统内存管理方法
US9342303B2 (en) Modified execution using context sensitive auxiliary code
CN102662894A (zh) 总线从单元通用接口
CN113672555B (zh) 处理器核、处理器、片上系统和调试系统
CN114924792A (zh) 指令译码单元、指令执行单元及相关装置和方法
CN114253816A (zh) 确定崩溃日志记录的结构的设备、系统和方法
CN107807888B (zh) 一种用于soc架构的数据预取系统及其方法
CN202495036U (zh) 总线从单元通用接口
CN110727609A (zh) 一种数据存取混合操作的优化策略及其实现方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant