专利名称:转发装置与方法以及微处理器的制作方法
技术领域:
本发明有关于一种微处理器,特別是有关于将数据由先前 的储存指令转发至之后的载入指令。
背景技术:
计算机程序经常使用储存指令(store instruction)与载入 指令(load instruction )。储存指令将数据由处理器的暂存器移 动至存储器,而载入指令将数据由存储器移动至处理器的暂存 器。微处理器频繁地执行指令流,其中, 一或多个储存指令处 于一个载入指令之前,该载入指令的数据所处的存储器位置与 该一或多个在前的储存指令相同。在此情况下,为了正确地执 行程序,微处理器必须确保载入指令能接收由在前且最近的储 存指令(the newest preceding store instruction)所产生的"f诸存 数据。完成正确程序执行的一个方法是载入指令暂停(stall), 直到储存指令已将数据写入至存储器(例如系统存储器或快取 存储器)。然而,这种解决方法并不具有非常高的效率。因此, 在近代的微处理器中, 一旦储存数据有效(available),并且载入 指令准备好接收此储存数据时,微处理器将储存数据由储存指 令所归属(reside )的管线阶级(pipeline stage )转移(transfer) 至载入指令所归属的管线阶级。这 一 般称为储存转发操作(s t o r e forward operation)、 储存转发(store forwarding)、 或者是储存至 载入转发(store-to-load forwarding)。
为了侦测是否需要将储存数据转发至载入指令,微处理器 必须比较载入存储器地址与储存存储器地址,以察看他们是否 相符。最后,微处理器需要比较载入的实体地址与储存的实体地址。然而,为了避免串行化(serialize)此过程且避免增加管 线阶级,近代的樣t处理器使用虚拟的地址以并行的(in parallel) 执行此比较操作,并同时将虚拟地址转变为实体地址。微处理 器接着执行实体地址的比较操作,以证明储存转发为正确的, 或者判断此转发为不正确的并校正此错误。
此外,由于完整的(full)虚拟地址的比较操作会消耗大量时 间(也消耗功率与芯片面积)且可能影响微处理器操作时的最 大时脉频率,因此,近代的微处理器倾向只比较一部分的虚拟 地址,而不是比4交完整的虚拟地址。
执行储存转发的微处理器范例为Intel Pentium 4处理器。根 据Intel Pentium 4处理器比较载入地址与4交先前4诸存的^f诸存地 址,且同时由载入操作来存取L1数据快取存储器。Intel说明此 转发机制在速度方面最佳化,使得其具有与快取存储器查表相 同的延迟,且为了符合延迟需求,处理器仅以部分的载入地址 与储存地址来执行比较操作,而不是比较完整的地址。参阅 "The Microarchitecture of the Intel Pentium 4 Processor on 90nm Technology", Intel Technology Journal, Vol. 8, Issue 1, February 18, 2004, ISSN 1535-864X, pp. 4-5。 Intel另说明"假使 对 一 地址进行储存操作之后跟随对相同地址的载入操作时,此 载入操作将不会继续进行,直到储存数据为有效的。假使储存 操作之后跟随着载入操作且他们的地址以4Kbyte的倍数彼此相 异时,则暂停载入操作,直到储存操作完成"。参阅"Aliasing Cases in the Pentium M, Intel Core Solo, Intel Core Duo and Intel Core 2 Duo Processor", Intel 64 and IA-32 Architectures Optimization Reference Manual, November 2007, Order Number: 248966-016, pp. 3-62 to 3-63。 Intel提供编码规则给语言组合者、 编译者、以及使用编码程序设计者使用,以避免此地址失真情况下影响效能。因此,可推论Pentium 4在部分的地址比较操作 下,只使用低于且包括地址位ll的地址位。
只比较特定较低地址位的结果具有 一 个值得注意的地方, 那就是微处理器(例如Pentium4)可能会把转发的非正确数据 储存至载入指令,且其增加了微处理器必须校正此错误的可能 性,而这造成了负面的效能影响。因此,微处理器需要一种方 法来更精确的预测其是否应储存转发数据。
发明内容
本发明提供一种转发装置,用以减少在微处理器内非正确 地将数据由储存指令转发至载入指令的可能性,且储存指令较 先前于载入指令。此转发装置包括杂凑产生器,用以对J个地址 位执行杂凑函数,以产生K个杂凑位。J个地址位是由载入指令 或储存指令所指定的存储器位置的地址的多个位,其中,J为大
于1的整数,K为大于0的整数。此转发装置还包括比较器。当 由载入指令所指定的L个地址位匹配于由储存指令所指定的对 应的L个地址位,且载入指令的K个杂凑位匹配于储存指令的对 应的K个杂凑位时,比较器输出第一预设布尔数值,否则,比 较器输出一第二预设布尔数值,其中L为大于O的整数。此转发 装置也包括转发逻辑单元,耦接比较器。当比较器输出第一预 设布尔数值时,转发逻辑单元将数据由储存指令转发至载入指 令,且当比较器输出第二预设布尔数值时,转发逻辑单元不将 数据由储存指令转发至载入指令。
在另一样态中,本发明提供一种转发方法,用以减少在微 处理器内非正确地将数据由储存指令转发至载入指令的可能 性,且储存指令较先前于载入指令。此转发方法包括通过执行 杂凑函数的杂凑产生器,来对J个地址位进行杂凑以产生K个杂凑位。J个地址位是由载入指令或储存指令所指定的存储器位置
的地址的多个位,其中,J为大于l的整数,K为大于0的整数。 此转发方法也包括当由载入指令所指定的L个地址位匹配于由 储存指令所指定的对应的L个地址位,且载入指令的K个杂凑位 匹配于储存指令的对应的K个杂凑位时,通过比较器输出第一 预设布尔数值,否则,输出第二预设布尔数值,其中,L为大 于0的整数。此转发方法更包括当比较器输出第 一 预设布尔数值 时,通过耦接比较器的转发逻辑单元来将数据由储存指令转发 至载入指令,且当比较器输出第二预设布尔数值时,不将数据 由储存指令转发至载入指令。
在另一样态中,本发明提供一种微处理器,其包括一第一 杂凑位产生器、 一第二杂凑位产生器、 一扩增地址比较器以及 一数据转发逻辑单元。第一杂凑位产生器用以自 一储存指令的 一储存虚拟地址的一第二地址栏位产生多个第一杂凑位,其中, 每一该第一杂凑位由一布尔逻辑电路来产生,所述第一杂凑位 中至少 一位非相同于该第二地址栏位中 一位,其中该储存指令 包括该储存虚拟地址与 一 储存数据,该储存虛拟地址包括 一 第 一地址栏位与该第二地址栏位,所述第一地址栏位与第二地址 栏位包括多个二进位地址位,且所述第 一地址栏位与第二地址 栏位为彼此互斥(mutually exclusive)。第二杂凑位产生器用以自 一载入指令的一载入虚拟地址的一第四地址栏位产生多个第二 杂凑位,其中,每一该第二杂凑位由一布尔逻辑电路来产生, 所述第二杂凑位中至少一位非相同于该第四地址栏位中 一位, 其中该载入指令包括该载入虚拟地址,该载入虚拟地址包4舌一 第三地址栏位与该第四地址栏位,所述第三地址栏位与第四地 址栏位包4舌多个二进位地址位,且所述第三地址栏位与第四地 址栏位彼此互斥。扩增地址比较器耦接上述第一杂凑位产生器与第二杂凑位产生器。当一扩增储存地址相同于一扩增载入地 址时,用以产生一匹配信号的真值,其中,该扩增储存地址为
该第 一 地址栏位与所述第 一 杂凑位的串接(concatenation),且该 扩增载入地址为该第三地址栏位与所述第二杂凑位的串接。数 据转发逻辑单元耦接该扩增地址比较器。当该数据转发逻辑单 元接收来自该扩增地址比较器的该匹配信号的真值时,该数据 转发逻辑单元将该储存数据由该储存指令转发至该载入指令。 上述微处理器用以减少非正确地将一数据由一储存指令转发至 一载入指令的可能性,其中,上述储存指令较先前于上述载入 指令。
本发明的优点在于可能减少微处理器所执行的非正确或错 误的传送转发数量。 一个错误或非正确的储存转发是指储存数 据非正确地由储存指令转发至载入指令的情况。由于部分地址 比较操作指示出地址是匹配的,但是随后的实体地址比较操作 指示出实体储存地址不匹配于实体载入地址,因此储存转发为 非正确。由于必须重新发布载入指令且相依于载入指令的指令 必须自指令管线上清除,因此非正确的储存转发降低了微处理 器的效能。通过减少在指令管线上的指令生产量(throughput)来 校正上述错误的转发操作则会降低微处理器的效能。
图l表示根据本发明实施例的微处理器;
图2表示根据本发明实施例,图l的微处理器通过扩增地址 比较操作来将数据由储存指令转发至载入指令的操作流程图; 以及
图3表示根据本发明实施例,选择关于图l中的杂凑产生器 与扩增地址比较器的设计的流程图。附图中符号的简单说明如下
100:微处理器;101:载入单元管线;102:储存单元管线; 104:载入指令;108:转译查询緩冲器(TLB ); 114:杂凑产 生器;122:栽入虚拟地址;124:载入实体地址;130:扩增地 址比较器;132:已选择载入地址位;134:杂凑载入位;136: 扩增载入地址;138:非杂凑载入地址位;140:转发逻辑单元; 142:杂凑储存位;146:扩增储存地址;148:非杂凑储存地址 位;152:扩增地址匹配导线;154'.储存数据;156:转发储存 数据;158:储存实体地址;160:实体地址比4交器;162:实体 地址匹配导线;164:重新发布信号线;170:校正逻辑单元; 202、 204、 206、 208、 212、 214、 216、 218、 222、 224、 226、 228、 232、 234:流程步骤;302、 304、 306:流程步骤。
具体实施例方式
为使本发明的上述目的、特征和优点能更明显易懂,下文 特举一4交佳实施例,并配合所附图式,作详细"i兌明如下。
参阅图1,其表示根据本发明实施例的孩i处理器100的步骤 图。微处理器100具有载入单元管线(load unit pipeline)101,其 用来接收、执行且撤回(retire)载入指令104。载入指令104撷取 来自存储器的数据,且将此数据储存在微处理器100的暂存器。 微处理器100也具有储存单元管线(store unit pipeline)102与储 存緩沖器(未显示)。储存单元管线102接收、执行且撤回储存 指令。储存指令将数据由微处理器100的暂存器转移至存储器。 在将数据写入至微处理器10 0的数据快取存储器的位置之前,储 存緩冲器提供临时储存区储存来自储存指令的储存数据与储存 地址。图l的多条虚线表示由虚线上方的较早管线阶级至虛线下 方的较后管线阶级的转变。在图l中,其显示四个管线阶级。载入指令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串4妾(concatenate)以建立扩 增载入地址136,如下所述。
在微处理器100的载入单元管线101的第一阶级,载入虛拟 地址122一皮分为已选4奪载入地址位132与非杂凑载入地址位138。 非杂凑载入地址位138与已选才奪载入地址位132彼此互斥 (mutually exclusive)。已选才奪载入地址位132为载入虚拟地址122 中一或多个较高地址位,且如图l所示,在图1中具有J个已选择 载入地址位132,且上述J个地址位为多个虚拟存4*器地址位。 已选择载入地址位132输入至杂凑产生器114,其将J个已选择载 入地址位132转换成K个杂凑载入位134,其中,J为大于l的整 数,且K为大于0的整数,J的数目大于K。上述J个已选择载入 地址位132是由载入指令104所指定的一存卩诸器位置的一地址的 多个位。因此,J个已选择载入地址位132的数量多于K个杂凑 载入位134的凄t量。然而,在另 一如下所述的实施例中,J可能 等于K。在图1中,具有L个非杂凑载入地址位138,且上述L个地址位为多个非杂凑存储器地址位。在一实施例中,L个非杂 凑载入地址位138为载入虛拟地址122中多个连续的较低地址 位。在一实施例中,已选择载入地址位132是选才奪自载入虚拟地 址122的位[47: 12],而非杂凑载入地址位138是选4奪自载入虚 拟地址122的位[11: 0]。在具有4KB存储器的虚拟存储器系统 中,载入虚拟地址122的位[47: 12]为虚拟存4诸器地址位,其由 TLB 108转i奪为实体存^f诸器地址位,而载入虚拟地址122的位 [11: O]为存储器索引位,其不需要由TLB 108来转译。
凑载入位134。杂凑产生器114对已选择载入地址位132执行一或 多个布尔组合函数(杂凑函数),包括反向(INVERT)、布尔与 (AND)函数、布尔或(OR)函数、布尔异或(XOR)函数、布尔与 非(NAND)函数、布尔或非(NOR)函数以及布尔异或非(XNOR) 函数,以上为举例说明,并不以此为限制。在一实施例中,上 述杂凑函数包括上述J个地址位中至少两位的一布尔函数,以产 生上述K个杂凑位中的一位。K个杂凑载入位134与L个非杂凑载 入地址位13 8串4妻以形成扩增载入地址13 6 。
虽然图l没有显示,但是储存单元管线102也包括一杂凑产 生器,其产生杂凑储存位142给进入至储存单元管线102的每一 储存指令。储存单元管线102的此杂凑产生器接收储存虚拟地址 的J个已选4奪储存地址位,其对应J个已选l奪载入地址位132,且 此杂凑产生器使用与载入单元管线101的杂凑产生器114相同的 杂凑函,并产生对应K个杂凑载入位13 4的K个杂凑储存位 142。上述J个已选择储存地址位是由储存指令所指定的一存储 器位置的一地址的多个位。储存单元管线102串接K个杂凑储存 位142与L个非杂凑J诸存地址位148以形成对应扩增载入地址 136的扩增储存地址146,上述L个非杂凑储存地址位148对应于L个非杂凑载入地址位138。
在第二管线阶级中,扩增地址比较器130接收扩增载入地址 136,并比较扩增载入地址136与在微处理器100中的未指定 (uncommitted)储存指令的扩增储存地址146,其中,未指定储存 指令较先前于载入指令。未指定储存指令是指在载入指令存取 快取存储器时,未将其数据写入至快取存储器的储存指令。图l 说明扩增地址比4交器130比较扩增载入地址136与N个扩增储存 地址146。对于N个较先前的未指定储存指令中的每一个,扩增 储存地址146是在先前的时脉周期中产生,其中, 一些扩增储存 地址146归属于储存缓冲器。在储存单元管线102中提供临时储 存区给N个扩增4诸存地址146的每一 个。当N个扩增4诸存地址146 中的一个等同于扩增载入地址136,扩增地址比较器130在一对 应的扩增地址匹配导线"2上产生一个真值(true value)(第一 预设布尔数值,例如为二进位的l)。当N个扩增储存地址146中 的 一 个并未与扩增载入地址13 6匹配(match),扩增地址比较器 130在一对应的扩增地址匹配导线152上产生一个假值(false value)(第二预设布尔数值,例如为二进位的O)。
在第二管线阶级的转发逻辑单元140接收来自N个较先前 的未指定储存指令中每一个的储存数据154。转发逻辑单元140 也接收N个扩增地址匹配导线152上的信号。转发逻辑单元140 也回应地选4奪对应具有 一 真值的扩增地址匹配导线15 2的々者存 数据154,且转发逻辑单元140将被选择的储存数据154(如图1 的转发储存数据156)转发至载入指令104。转发逻辑单元140也 产生转发数据指标166给校正逻辑单元170,(若有的情况下)以 指示出转发逻辑单元140将哪一储存指令的储存数据156转发至 载入指令104。
使用的已选择载入地址位132的数量、使用已选择载入地址位132中的哪些位、所产生的杂凑载入位134的数量、以及由杂 凑产生器114所执行的杂凑函数都是设计选择,其可通过程序串 (program streams)的经验测试来决定。这些设计选4奪也许会受到 各种因素所影响,例如期望最佳化的特定程序以及其特性,包 括参照的方位性(locality of reference)、载入与储存指令的频率 与大小(size),以及由载入指令与储存指令所存取的数据结构的 构成(organization)。这些选择也会受到孩i处理器100的特定樣i处 理器架构所影响,例如,管线阶级的数量、微处理器100所支援 的未决(pending)指令的数量、以及微处理器100的各种指令緩冲 器的大小。例如,已选择载入地址位132包括相邻位以及/或非 相邻位。然而,影响这些选择的一个重要因素是微处理器100 的目标时脉周期(target clock cycle)。在一实施例中,选择扩增 载入地址13 6与扩增储存地址14 6的大小,并在必要的情况下, 使得微处理器100的 一单 一 时脉周期上,扩增地址比较器130执 行比较操作且转发逻辑单元140转发数据。另 一设计考量是需要 一用来储存杂凑载入位134与杂凑储存位142的额外储存器。
在一实施例中,杂凑产生器114在J个已选择载入地址位132 上执行恒等函数(identity function),以产生K个杂凑载入位134。 即杂凑产生器114仅传送J个已选择载入地址位13 2,以作为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所^U亍,图1中未显示。在储存单元管线102的第三管线阶级中,实体地址比较器 160比较载入实体地址124与N个储存实体地址158。对于N个储 存实体地址158中的一个等同于载入实体地址124,实体地址比 较器160在一对应的实体地址匹配导线162上产生一个真值。实 体地址必须被比较以确保转发储存数据15 6为正确数据,这就是 说,转发储存数据156是转发自最新储存指令,且此最新储存指
156由第三管线阶级的载入指令104所接收。
实体地址比较器160输出信号给实体地址匹配导线162,并 传输该信号至校正逻辑单元170。校正逻辑单元170也接收来自 转发逻辑单元140的转发数据指标166。根据实体地址匹配导线 162上的信号与转发数据指标166,校正逻辑单元170判断转发逻 辑单元140是否已将非正确储存数据转发至载入指令104,亦即 非正确或错误的储存转发操作,或者判断当转发逻辑单元14 0 应将储存数据转发至载入指令104时,其是否没有将储存数据转 发至载入指令104,亦即遗漏(miss)储存转发操作。假使是的话, 校正逻辑单元170在重新发布(replay)信号线164上产生一个 真值,将根据图2于下文详细说明。
在一实施例中,应用上述架构的一微处理器包括一第一杂 凑位产生器、 一第二杂凑位产生器、 一扩增地址比较器以及一 数据转发逻辑单元。第一杂凑位产生器用以自 一储存指令的一 储存虛拟地址的 一第二地址栏位(存放J个已选择储存地址位) 产生多个第一杂凑位(K个杂凑储存位),其中,每一该第一杂凑 位由 一布尔逻辑电路来产生,所述第 一 杂凑位中至少 一位非相 同于该第二地址栏位中 一位,其中该储存指令包括该储存虚拟 地址与 一储存数据,该储存虚拟地址包括一第 一地址栏位与该 第二地址栏位,所述第一地址栏位与第二地址栏位包括多个二进位地址位,且所述第 一地址栏位与第二地址栏位为4皮此互斥。 第二杂凑位产生器用以自 一载入指令的一载入虚拟地址的一第 四地址栏位(存》文J个已选择载入地址位)产生多个第二杂凑位
(K个杂凑载入位),其中,每一该第二杂凑位由一布尔逻辑电路
来产生,所述第二杂凑位中至少 一 位非相同于该第四地址栏位 中一位,其中该载入指令包括该载入虛拟地址,该载入虚拟地 址包括一第三地址栏位与该第四地址栏位,所述第三地址栏位 与第四地址栏位包括多个二进位地址位,且所述第三地址栏位 与第四地址栏位彼此互斥。扩增地址比较器耦接上述第一杂凑 位产生器与第二杂凑位产生器。当一扩增储存地址相同于一扩 增载入地址时,用以产生一匹配信号的真值,其中,该扩增储
存地址为该第 一 地址栏位(存放L个非杂凑储存地址位)与所述 第一杂凑位的串接,且该扩增载入地址为该第三地址栏位(存放 L个非杂凑载入地址位)与所述第二杂凑位的串接。数据转发逻 辑单元耦接该扩增地址比较器。当该数据转发逻辑单元接收来 自该扩增地址比较器的该匹配信号的真值时,该数据转发逻辑 单元将该储存数据由该储存指令转发至该载入指令。上述微处 理器用以减少非正确地将 一 数据由 一 储存指令转发至 一 载入指 令的可能性,其中,上述储存指令较先前于上述载入指令。
参阅图2,其表示图1的微处理器100通过扩增地址比较操作 来将数据由储存指令转发至载入指令的操作流程图。流程开始 于步骤202。
在步骤202中,农£处理器100的指令发送器(instruction dispatcher)(未显示)发布载入指令1(M至一载入单元管线101 。 流程继续进行至步骤2 04 。
在步骤204中,载入单元管线101将载入指令104的载入虚拟 地址122的J个已选一奪载入地址位132杂凑后与L个非杂凑载入地址位138串4妻以形成一扩增载入地址136。在图l中,于载入单元 管线101中,杂凑产生器114根据J个已选择载入地址位132来产 生K个杂凑载入位134。 K个杂凑载入位134与L个非杂凑载入地 址位138串接以形成图l的扩增载入地址136。流程继续由步骤 204进行至步骤206与步骤208。
在步骤206中,图1的TLB 108接收载入虚拟地址122且产生 图l的载入实体地址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中,图l的实体地址比较器160比较载入实体地址 124与来自储存单元管线102与储存緩冲器的N个储存实体地址 158,以产生图l的实体地址匹配导线162上的信号。流程继续进 行至判断步骤222。在判断步骤222中,由于转发数据指标166指示出在步骤214 中转发逻辑单元140已将转发储存数据156转发至载入指令104, 图1的校正逻辑单元170则检查步骤218所产生的实体地址匹配 导线162上的信号,以判断载入实体地址124是否匹配储存指令 的储存实体地址158,而此储存指令的转发储存数据156已于步 骤214中转发至载入指令104,此外更判断此储存指令是否是其
使是,正确数据则被转发至载入指令104且由载入指令104来使 用,接着流程继续进行至步骤224;否则,非正确数据被转发至 载入指令104且由载入指令104来使用接着流程继续进行至步骤 234。
在步骤224中,载入单元管线101执行载入指令104,且载入 指令104被撤回,以完成载入指令。
在步骤226中,由于在判断步骤212中扩增地址比较操作没 有产生匹配结果,因此载入单元管线101执行载入指令104而不 转发储存数据。反而是,载入指令104自微处理器100的快取存 储器或系统存储器取得数据。流程继续进行至步骤2 2 8 。
在步骤228中,图l的实体地址比较器160比较载入实体地址 124与来自储存单元管线102与储存緩冲器的N个储存实体地址 158,以产生图l的实体地址匹配导线162上的信号。流程继续进 行至判断步骤232。
在判断步骤232中,由于转发数据指标166指示出转发逻辑 单元140没有将转发储存数据156转发至载入指令104,图l的校 正逻辑单元170才企查在步骤228中产生的实体地址匹配导线162 上的信号,以判断载入实体地址124是否匹配N个储存实体地址 158中的任一个。假使是,则发生遗漏储存转发。也就是说,载 入指令104使用来自存储器的旧数据,而不是应已由N个储存指令中的一个所转发的数据,且流程继续进行至步骤234。然而, 假使没有发生遗漏储存转发,正确数据自存储器中获得且由载 入指令104来使用,接着,流程继续进行至步骤224以完成载入 指令。
在步骤234中,由于载入指令104使用非正确数据,校正逻 辑单元170在重新发布信号线164上产生一个真值,其指示一指 令发送器重新发送载入指令104且清除较新于载入指令104的所 有指令。流程结束于步骤234。
如图l与图2的说明,比较扩增载入地址136与扩增储存地址
将可能减少必须由微处理器10 0校正的非正确储存转发的数量, 其中,由微处理器100校正的非正确储存转发操作会降低微处理 器效能并降低储存转发操作的价值(value)。然而,注意到,通 过在储存转发比较判断的 一 些实施例中使用虚拟存储器地址位 (尽管被杂凑),这些实施例可能导致较低的正确性,这是因为
其引发了虛拟失真的可能性。即是,在一虛拟存储器系统中, 可能发生多个虚拟地址映射至相同实体地址。因此,校正逻辑 单元17 0可侦测遗漏储存转发状态,在此遗漏储存转发状态下, 即使于步骤232中载入实体地址匹配于储存实体地址,但于步骤 212中扩增载入地址不会匹配于扩增储存地址。然而,在一些情 况下,可选择产生的杂凑载入位134的数量、使用来产生杂凑载 入位134的已选择载入地址位132的哪些位与凄t量、以及由杂凑 产生器114所执行用来产生杂凑载入位134的杂凑函数,使得非 正确储存转发的数量减少的好处超过遗漏储存转发的数量增加 的结果。
参阅图3,其表示根据本发明实施例,选择关于图l中杂凑 产生器114与扩增地址比较器130的设计的流程图。图3的步骤由微处理器ioo设计以及/或制程阶段中由微处理器ioo的制程者
所执行。在一实施例中,在微处理器100的操作期间,通过由特 i午禾呈序才旨令(privileged program instructions )来牙呈序4匕的樣丈处 理器100的配置模式暂存器,哪些地址位去杂凑与形成(串接成) 扩增地址的选择也是可配置的。流程开始于步骤3 0 2 。
在步骤302中,微处理器100的设计者决定图l中杂凑载入位 134的数量,以及决定哪些杂凑载入位134去扩增非杂凑载入地 址位138以在储存转发地址比较中使用。流程继续进行至步骤 304。
在步骤304中,对于每一杂凑载入位134,《敖处理器100的设 计者决定图l中载入虚拟地址122中 一或多个4交高地址位被杂凑 产生器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等)、或其他可利用的语言来完成。 此软件可配置在任何已知的计算机可4吏用介质,例如半导体、 》兹盘或光盘(例如CD-ROM、 DVD-ROM等)。本发明的实施例 包括通过提供描述微处理器设计的软件以及接着通过通讯网络
(包括网际网络与内部网络)来传送软件以做为计算机数据信 号,来提供此述微处理器的方法。可理解到此述的装置与方法 可被包括于半导体知识产权核心,例如微处理器核心(以HDL 来实现),且转换成集成电路产品的硬件。此外,此述的装置与 方法可实现作为硬件与软件的结合。因此,本发明不被此述的 范例实施例所限制,而是依权利要求书与其等同者所界定。本 发明是实施在用于一般目的计算机中的微处理器装置内。
以上所述仅为本发明较佳实施例,然其并非用以限定本发 明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神 和范围内,可在此基础上做进一步的改进和变化,因此本发明 的保护范围当以本申请的权利要求书所界定的范围为准。
权利要求
1.一种转发装置,其特征在于,用以减少在一微处理器内非正确地将一数据由一储存指令转发至一载入指令的可能性,该储存指令较先前于该载入指令,该转发装置包括一杂凑产生器,用以对J个地址位执行一杂凑函数,以产生K个杂凑位,其中,所述J个地址位是由该载入指令或该储存指令所指定的一存储器位置的一地址的多个位,J为大于1的整数,K为大于0的整数;一比较器,其中,假使由该载入指令所指定的L个地址位匹配于由该储存指令所指定的对应的L个地址位,且该载入指令的K个杂凑位匹配于该储存指令的对应的K个杂凑位,该比较器输出一第一预设布尔数值,否则,该比较器输出一第二预设布尔数值,且L为大于0的整数;以及一转发逻辑单元,耦接该比较器,其中,当该比较器输出该第一预设布尔数值时,该转发逻辑单元将该数据由该储存指令转发至该载入指令,且当该比较器输出该第二预设布尔数值时,该转发逻辑单元不将该数据由该储存指令转发至该载入指令。
2. 根据权利要求l所述的转发装置,其特征在于,所述J 个地址位为多个虛拟存储器地址位,所述L个地址位为多个非 杂凑存储器地址位。
3. 根据权利要求l所述的转发装置,其特征在于,J等于K, 该杂凑函数为 一 恒等函数,使得该杂凑产生器传送所述J个地址 位以作为对应的所述K个杂凑位。
4. 根据权利要求l所述的转发装置,其特征在于,J大于K, 该杂凑函数包括所述J个地址位中至少两位的一布尔函数,以产 生所述K个杂凑位中的一位。
5. 根据权利要求l所述的转发装置,其特征在于,所述L个地址位与所述J个地址位彼此互斥。
6. 根据权利要求l所述的转发装置,其特征在于,更包括 一第二比较器,用以比较由该载入指令所指定的该存储器位置的一实体存储器地址与由该储存指令所指定的该存储器位 置的一实体存^f诸器地址;以及一校正逻辑单元,耦接该第二比较器,用以判断该转发逻 辑单元是否已将非正确储存数据转发至该载入指令,其中,当该非正确储存数据转发至该载入指令时,该校正逻辑单元指示 一指令发送器重新发送该载入指令且清除较新于该载入指令的 所有指令。
7. —种转发方法,其特征在于,用以减少在一微处理器内 非正确地将一数据由一储存指令转发至一载入指令的可能性, 该储存指令较先前于该载入指令,该转发方法包括通过执行 一 杂凑函数的 一 杂凑产生器,来对J个地址位进行 杂凑以产生K个杂凑位,其中,所述J个地址位是由该载入指令 或该储存指令所指定的一存储器位置的一地址的多个位,J为大 于1的整数,K为大于0的整数;且假使由该载入指令所指定的L个地址位匹配于由该储存指 令所指定的对应的L个地址位,且该载入指令的K个杂凑位匹配 于该储存指令的对应的K个杂凑位,通过一比较器输出 一第一 预设布尔数值,否则,输出一第二预设布尔数值,且L为大于0 的整数;以及当该比较器输出该第 一 预设布尔数值时,通过耦接该比较 器的一转发逻辑单元来将该数据由该储存指令转发至该载入指 令,且当该比较器输出该第二预设布尔数值时,不将该数据由 该储存指令转发至该载入指令。
8. 根据权利要求7所述的转发方法,其特征在于,所述J个地址位为多个虚拟存储器地址位,所述L个地址位为多个非 杂凑存储器地址位。
9. 根据权利要求7所述的转发方法,其特征在于,J等于K, 该杂凑函数为一恒等函数,使得该杂凑产生器传送所述J个地址 位以作为对应的所述K个杂凑位。
10. 根据权利要求7所述的转发方法,其特征在于,J大于 K,该杂凑函凄丈包"^舌所述J个地址位中至少两位的一布尔函#:, 以产生所述K个杂凑位中的一位。
11. 根据权利要求7所述的转发方法,其特征在于,所述L 个地址位与所述J个地址位彼此互斥。
12. 根据权利要求7所述的转发方法,其特征在于,更包括 比较由该载入指令所指定的该存储器位置的一实体存储器地址与由该储存指令所指定的该存储器位置的一实体存储器地 址;以及判断是否已将非正确储存数据转发至该载入指令,且当该 非正确储存数据转发至该载入指令时,指示一指令发送器重新 发送该载入指令且清除较新于该载入指令的所有指令。
13. —种微处理器,其特征在于,包括 一第一杂凑位产生器,用以自 一储存指令的一储存虚拟地址的一第二地址栏位产生多个第一杂凑位,其中,每一该第一 杂凑位由一布尔逻辑电路来产生,所述第一杂凑位中至少 一位 非相同于该第二地址栏位中一位,其中该储存指令包括该储存 虚拟地址与 一储存数据,该储存虚拟地址包括一第 一地址栏位 与该第二地址栏位,所述第一地址栏位与所述第二地址栏位包 括多个二进位地址位,且所述第一地址栏位与所述第二地址栏位为4皮此互斥;一第二杂凑位产生器,用以自 一载入指令的一载入虚拟地址的一第四地址栏位产生多个第二杂凑位,其中,每一该第二 杂凑位由一布尔逻辑电路来产生,所述第二杂凑位中至少 一位 非相同于该第四地址栏位中 一 位,其中该载入指令包括该载入虚拟地址,该载入虚拟地址包括 一 第三地址栏位与该第四地址 栏位,所述第三地址栏位与所述第四地址栏位包括多个二进位地址位,且所述第三地址栏位与所述第四地址栏位彼此互斥;一扩增地址比较器,耦接所述第 一 杂凑位产生器与所述第 二杂凑位产生器,当 一扩增储存地址相同于一扩增载入地址时, 用以产生一匹配信号的真值,其中,该扩增储存地址为该第一 地址栏位与所述第一杂凑位的串接,且该扩增载入地址为该第 三地址栏位与所述第二杂凑位的串接;一数据转发逻辑单元,耦接该扩增地址比较器,其中,当 该数据转发逻辑单元接收来自该扩增地址比较器的该匹配信号 的真值时,该数据转发逻辑单元将该储存数据由该储存指令转 发至该载入指令。
全文摘要
一种转发装置与方法以及微处理器,其中该转发装置包括杂凑产生器、比较器及转发逻辑单元。杂凑产生器杂凑J个地址位以产生K个杂凑位。J个地址位是载入指令或储存指令所指定的存储器地址的多个位,K为大于0的整数且J为大于K的整数。当载入指令指定的L个地址位匹配于储存指令指定的L个地址位且载入指令的K个杂凑位匹配于储存指令的K个杂凑位时,比较器输出第一预设布尔数值,否则输出第二预设布尔数值,L为大于0的整数。当比较器输出第一预设布尔数值时,转发逻辑单元将数据由储存指令转发至载入指令,而当比较器输出第二预设布尔数值时,不转发数据。本发明可能减少微处理器所执行的非正确或错误的传送转发数量。
文档编号G06F9/312GK101593098SQ20091015910
公开日2009年12月2日 申请日期2009年7月6日 优先权日2008年8月25日
发明者柯林艾迪, E·虎克 罗德尼 申请人:威盛电子股份有限公司