对比文件名称:2006-08-15_US7093111B_发明授权_US07093111B2 Recovery of global history vector in the event of a non-branch flush
目标专利名称:335优化用于上下文相关指令的性能CN105190540B
本次调用模型名称:DeepSeek-R1
## 特征比对表格
| 技术特征描述及公开性判断 | 对比文件原文引用 | 公开性论述 |
| **A**: 处理具有寄存器字段的配置值的行为的指令。<br>**公开性判断:未被公开** | [0004] Global branch prediction may implement a special shift-register storing a bit-vector, referred to as a “global history vector”, that represents the recent path of execution. | **论述**:对比文件公开了全局历史向量(global history vector),它是一个移位寄存器,用于存储代表最近执行路径的比特向量。这个向量用于分支预测。虽然“全局历史向量”可以被视为一种“配置值”,因为它控制着分支预测机制的行为,但它并非目标专利中定义的那种“寄存器字段的配置值”。目标专利的“配置值”写入到特定的寄存器字段(如FPSCR),并直接定义后续向量指令的执行行为(例如,定义或未定义)。对比文件的全局历史向量是一个动态更新的、反映历史分支结果的向量,用于预测未来分支,而非直接配置特定指令的行为。两者的作用和技术本质不同。因此,对比文件未公开技术特征A。 |
| **B**: 所述指令相依于在编程次序上先于所述指令的写入指令。<br>**公开性判断:未被公开** | [0004] ...the global history vector is updated by shifting in an appropriate “1” or “0” and discarding the oldest bit. | **论述**:对比文件中,全局历史向量的更新依赖于先前分支指令的执行结果(是否跳转),即后续分支指令的预测依赖于由之前多个分支指令执行结果累积形成的全局历史向量。然而,这种依赖关系是分支预测算法对历史执行路径的依赖,而非目标专利中明确限定的“指令”对单一、在程序次序上先于它的特定“写入指令”(将配置值写入寄存器字段的指令)的依赖。目标专利的相依性是明确的、指令间的数据/上下文依赖。因此,对比文件未公开技术特征B。 |
| **C**: 所述写入指令将所述配置值写入到所述寄存器字段。<br>**公开性判断:未被公开** | [0022] ...if the group of instructions fetched contained a branch instruction whose branch was taken, then global history vector mechanism 106 may insert a “1” in the global history vector... | **论述**:对比文件中,全局历史向量的更新是由分支扫描逻辑单元(branch scan logic unit 110)检测到分支指令,并由全局历史向量机制(global history vector mechanism 106)根据分支是否被采取来插入“1”或“0”。这是一个根据指令执行结果动态更新内部状态(历史向量)的过程,并没有一个明确的“写入指令”将特定的“配置值”写入到一个“寄存器字段”。这与目标专利中由特定指令(如VMSR)显式地将一个配置值写入到特定寄存器(如FPSCR)的特定字段中的操作不同。因此,对比文件未公开技术特征C。 |
| **D**: 在所述写入指令执行之前处理的所述指令在基于处理所述指令时的所述寄存器字段的当前值的上下文内执行。<br>**公开性判断:未被公开** | [0002] ...Instructions from the predicted instruction stream may be speculatively executed prior to execution of the branch instruction... | **论述**:对比文件公开了分支指令的预测和推测执行。在分支指令实际执行之前,处理器基于当前的全局历史向量(可视为一种“当前值”)来预测分支方向,并开始推测性地提取和执行预测路径上的指令。这类似于“在写入指令执行之前处理指令”。然而,目标专利的“上下文”特指由配置字段值决定的、用于处理向量指令的“定义”或“未定义”的上下文。对比文件中的“上下文”(即全局历史向量)是用于预测分支方向的,而非用于定义指令本身是否可执行(定义/未定义)。两者的作用和技术目的不同。因此,对比文件未公开技术特征D。 |
| **E**: 在队列中的条目中存储所述指令。<br>**公开性判断:《直接公开》** | [0005] If the group of instructions fetched contains a branch instruction, then a copy of the global history vector along with other information may be stored in a queue, referred to as a “branch information queue”. | **论述**:对比文件公开了分支信息队列(branch information queue),用于存储提取到的分支指令的信息。这明确公开了将指令(分支指令)存储在队列的条目中。虽然存储的信息主要是为了恢复全局历史向量,但“存储指令”这一动作本身已被直接公开。因此,技术特征E被对比文件直接公开。 |
| **F**: 在所述条目中存储所述寄存器字段的所述当前值。<br>**公开性判断:《直接公开》** | [0005] If the group of instructions fetched contains a branch instruction, then a copy of the global history vector along with other information may be stored in a queue, referred to as a “branch information queue”. | **论述**:对比文件明确说明,当提取到分支指令时,会将全局历史向量的一个副本(copy)与其他信息一起存储在分支信息队列中。这个“全局历史向量的副本”就是处理该分支指令时“全局历史向量”的当前值。虽然“全局历史向量”并非传统意义上的“寄存器字段”,但它是一个存储历史信息的机制,其当前值被存储以供恢复。这与目标专利中在队列条目中存储“寄存器字段的当前值”(如FPSCR字段的值)在作用和目的(用于后续恢复/校验)上实质相同。因此,技术特征F被对比文件直接公开。 |
| **G**: 在所述写入指令执行之后,搜索所述队列以查找所述条目。<br>**公开性判断:《直接公开》** | [0031] In step 206, branch information queue 111 reads a copy of the global history vector in the entry in branch information queue 111 indexed by the tag. | **论述**:对比文件的方法描述了在发生非分支刷新(flush)事件后,使用一个标签(tag)来索引(index)分支信息队列中的特定条目,并读取该条目中存储的全局历史向量副本(步骤206)。这里的“非分支刷新”可以类比为目标专利中“写入指令执行之后”的某个后续事件(尽管触发原因不同)。“搜索队列以查找条目”这一操作,通过使用标签索引队列条目来实现,已被明确公开。因此,技术特征G被对比文件直接公开。 |
| **H**: 在所述写入指令执行之后,将存储在所述条目中的所述当前值与所述配置值进行比较。<br>**公开性判断:未被公开** | [0031] In step 206, branch information queue 111 reads a copy of the global history vector in the entry in branch information queue 111 indexed by the tag.<br>[0032] In step 207, branch information queue 111 inserts the copy of the read global history vector in global history vector mechanism 106. | **论述**:对比文件在恢复全局历史向量时,是将从队列条目中读取的全局历史向量副本直接插入(inserts)到全局历史向量机制中,以恢复其状态。这个过程是**替换**或**恢复**,而不是**比较**。目标专利的核心步骤之一是将存储的当前值与新写入的配置值进行比较,以判断推测执行的上下文是否正确。对比文件完全没有公开这种比较操作。因此,技术特征H未被公开。 |
| **I**: 其进一步包括:假如存储在所述条目中的所述当前值并不与所述配置值匹配,那么清洗所有飞行中指令的管线,且将程序计数器设定到以编程次序在所述写入指令之后的下一指令的地址。<br>**公开性判断:未被公开** | [0028] ...the instructions from the incorrectly predicted instruction are discarded.<br>[0032] In step 202, all instructions that were fetched after and including the instruction being flushed to are flushed, i.e., discarded, by instruction sequencer unit 112. In step 203, IFAR 102 is reset to store the address of the instruction flushed to. | **论述**:对比文件确实公开了在分支预测错误或非分支刷新事件发生时,清洗(flush/discard)管线中的指令并重置指令提取地址寄存器(IFAR,类似于程序计数器)到指定的地址(步骤202,203)。但是,这个清洗和重置操作是基于分支预测失败或外部事件(如系统调用、活锁),**而不是**基于“存储的当前值与配置值不匹配”这一特定比较结果。目标专利的恢复操作是由上下文比较不匹配这一特定条件触发的,而对比文件的清洗操作由不同原因触发。因此,技术特征I未被公开。 |
| **J**: 处理所述指令进一步包括:如果所述当前值为第一值,那么将所述指令处理为定义的。<br>**公开性判断:未被公开** | 无对应内容。 | **论述**:目标专利的技术特征J和K描述了根据寄存器字段的当前值(如FPSCR的字段值)将指令处理为“定义的”或“未定义的”。这是一种特定于向量指令的上下文定义行为。对比文件完全没有涉及根据某个配置值将指令分类为“定义的”或“未定义的”这一概念。对比文件的全局历史向量用于分支预测,不决定指令本身是否有效或可执行。因此,技术特征J未被公开。 |
| **K**: 及如果所述当前值不是所述第一值,那么将所述指令处理为未定义的。<br>**公开性判断:未被公开** | 无对应内容。 | **论述**:同技术特征J的论述。对比文件未公开根据配置值将指令处理为“未定义”的概念。因此,技术特征K未被公开。 |
| **L**: 其进一步包括:假如存储在所述条目中的所述当前值并不与所述配置值匹配,那么清洗所述指令及以编程次序跟随所述指令的所有飞行中指令的管线,且将程序计数器设定到所述指令的地址。<br>**公开性判断:未被公开** | [0028] ...the instructions from the incorrectly predicted instruction are discarded.<br>[0032] In step 202, all instructions that were fetched after and including the instruction being flushed to are flushed, i.e., discarded, by instruction sequencer unit 112. In step 203, IFAR 102 is reset to store the address of the instruction flushed to. | **论述**:与技术特征I类似,对比文件公开了清洗指令和重置程序计数器的操作。但关键区别在于触发条件。目标专利的触发条件是针对队列中特定条目所关联指令的上下文比较不匹配。而对比文件的清洗操作要么是针对错误预测分支之后的所有指令(分支预测错误),要么是针对刷新地址之后的所有指令(非分支刷新)。它不是基于对存储在队列中的某个值与另一个值进行比较的结果,来定位并清洗一个特定的指令及其后续指令。因此,技术特征L未被公开。 |
| **M**: 其进一步包括:在所述条目中存储处理器的状态信息,所述状态信息是当处理所述指令时的状态信息。<br>**公开性判断:未被公开** | [0005] If the group of instructions fetched contains a branch instruction, then a copy of the global history vector along with other information may be stored in a queue... | **论述**:对比文件公开了在分支信息队列中存储与分支指令相关的“其他信息”(other information)。这“其他信息”可能包括预测方向、目标地址等,但这些信息主要用于分支预测和恢复分支预测机制的状态(如全局历史向量)。目标专利中存储的“状态信息”用于在上下文不匹配时恢复“处理器的状态”,这比仅仅恢复分支预测机制的状态含义更广,可能包括架构寄存器状态等。对比文件没有明确公开存储用于恢复整个处理器状态(如目标专利说明书提到的“状态信息132b”)的信息。因此,技术特征M未被公开。 |
| **N**: 及假如存储在所述条目中的所述当前值并不与所述配置值匹配,那么从所述条目检索所述状态信息,且将所述处理器恢复到所述状态信息所指示的状态。<br>**公开性判断:未被公开** | [0028] ...information about that conditional branch is retrieved from branch information queue 111. This information may be used to restore the states of branch prediction logic unit 104 to the states they would have been if the conditional branch instruction had been predicted correctly. | **论述**:对比文件公开了在分支预测错误时,从分支信息队列检索信息以恢复分支预测逻辑单元(branch prediction logic unit 104)的状态。这涉及到恢复特定的硬件模块状态,而非目标专利中所述的、基于上下文比较不匹配而触发的、使用存储在条目中的“状态信息”来恢复整个“处理器”状态。两者的恢复范围、触发条件和目的均不相同。因此,技术特征N未被公开。 |
| **O**: 其中所述指令为向量指令。<br>**公开性判断:未被公开** | 全文未提及向量指令。 | **论述**:对比文件全文讨论的是分支指令(branch instruction)及其预测、执行和恢复机制,未涉及任何关于向量指令(vector instruction)或SIMD指令的内容。因此,技术特征O(指令为向量指令)未被公开。 |
| **P**: 其中所述寄存器字段包括一个或多个字段。<br>**公开性判断:未被公开** | [0004] Global branch prediction may implement a special shift-register storing a bit-vector, referred to as a “global history vector”... | **论述**:对比文件中的全局历史向量(global history vector)是一个比特向量(bit-vector),可以视为一个整体的寄存器或移位寄存器。虽然它由多个比特位组成,但这些比特位共同构成一个单一的、用于记录历史路径的向量,而不是目标专利中可能包含多个独立字段(如长度、步幅等)的“寄存器字段”(如FPSCR)。因此,技术特征P未被公开。 |
| **Q**: 处理所述指令进一步包括:如果所述当前值为第一值,那么将所述指令处理为定义的。<br>**公开性判断:未被公开** | 无对应内容。 | **论述**:此特征与技术特征J重复,判断结果一致。对比文件未公开。 |
| **R**: 及如果所述当前值不是所述第一值,那么将所述指令处理为未定义的。<br>**公开性判断:未被公开** | 无对应内容。 | **论述**:此特征与技术特征K重复,判断结果一致。对比文件未公开。 |
| **S**: 其进一步包括:当所述指令提交时,从所述队列移除所述条目。<br>**公开性判断:《隐含公开》** | [0028] ...Any instructions that followed the mispredicted branch are discarded. Further, any information in branch information queue 111 about branches that followed the mispredicted branch is likewise discarded by the resetting of the next-to-write pointer.<br>[0031] In step 205, the next-to-write pointer in branch information queue 111 is reset using the tag received in step 204 to the state it had been in before the discarded instructions had been fetched. | **论述**:对比文件描述了分支信息队列的管理机制。当发生分支预测错误时,错误预测分支之后的所有指令被丢弃,同时分支信息队列中关于这些后续分支的信息也被丢弃(通过重置“下一个写入指针”-next-to-write pointer)。这隐含了队列中的条目会在其对应的指令被确定为无效(例如,因预测错误而被清洗)时被移除或覆盖。虽然未明确使用“提交时移除”的表述,但队列作为循环或有序缓冲区,其条目必然会在处理完成后被新条目覆盖或逻辑上移除,以维持队列功能。本领域技术人员能够毫无疑义地理解,对于已提交(正确执行)的分支指令,其对应的队列条目在经过一段时间后(例如,当指针移动、队列满或相关刷新发生后)也会被新的条目所取代,即实质上被“移除”。因此,技术特征S被对比文件隐含公开。 |
<<<E>>><<<F>>><<<G>>><<<s>>>