**对比文件名称**:1995-04-19_EP0649086A_发明公开_EP0649086A1 Microprocessor with speculative execution
**目标专利名称**:335优化用于上下文相关指令的性能CN105190540B
**本次调用模型名称**:DeepSeek
---
### **特征比对表格**
| 技术特征描述及公开性判断结果 | 对比文件原文引用 | 公开性论述 |
| **A《隐含公开》** | 第[0061]段:“Speculative execution means speculatively issuing instructions past branches or floats (or other control hazard instructions), and speculatively executing those instructions such that the processor state (instruction pointer, stack pointer, registers, condition codes, flags) changes.” | 对比文件公开了处理器支持推测执行,即允许在分支或浮点指令(作为控制冒险指令)被解析(执行)之前,就发布和执行后续指令。其中,“floats”(浮点指令)是目标专利中“具有寄存器字段的配置值的行为的指令”的一种具体类型。浮点指令的行为(如舍入模式、精度控制)通常由浮点状态与控制寄存器(如x86架构的FPU控制字)中的字段值配置。因此,本领域技术人员可以合理推断,对比文件处理的“floats”指令,其行为是受到某个寄存器字段(FPU控制寄存器)中的配置值影响的。 |
| **B《隐含公开》** | 第[0061]段:“The term speculation instruction refers to either a branch, a UCOF (unconditional change of flow) or a float (or other control hazard instruction), while the terms speculatively issued and speculatively executed instructions refer to instructions that issue after a speculation instruction.” | 对比文件明确,推测执行的指令(speculatively executed instructions)是在“speculation instruction”(如浮点指令)之后发布的。这意味着推测执行的指令在程序次序上依赖于先前的“speculation instruction”。虽然对比文件未明确将浮点指令称为“写入指令”,但浮点指令的执行通常涉及设置或影响FPU状态寄存器,这可以被视为一种“写入”行为。因此,本领域技术人员可以合理推断,推测执行的指令(如后续的浮点计算指令)在程序次序上和功能上依赖于先前的、可能修改FPU状态的指令(即“写入指令”)。 |
| **C《直接公开》** | 第[0077]段:“Floats present two problems for speculative execution... During the exception latency for a floating point instruction executing in the floating point unit...” | 对比文件明确提到了“floating point instruction”(浮点指令)。在处理器架构中,浮点指令(如x86的FLDENV、FLDCW等)能够将配置值写入浮点控制寄存器(如FPU Control Word),以设置舍入模式、异常屏蔽等。因此,本领域技术人员能够毫无疑义地确定,对比文件公开了将配置值写入寄存器字段的写入指令。 |
| **D《未公开》** | 无直接对应描述。对比文件描述了推测执行,但未描述基于特定“寄存器字段的当前值”作为“上下文”来执行指令。 | 目标专利的核心在于,在写入配置值的指令**执行之前**,就基于该配置寄存器**字段的当前值**(可能是旧值)所定义的“上下文”内,对依赖指令进行推测性处理。对比文件虽然广泛支持推测执行(如在分支预测后执行指令),但并未描述这种基于特定可配置寄存器字段的当前值来定义执行上下文,并在该上下文中执行依赖指令的具体机制。对比文件的推测执行主要基于分支预测的结果或允许指令通过未解析的浮点指令,其“上下文”是预测的程序流,而非由特定配置寄存器字段的当前值所定义的执行语义上下文(如将向量指令定义为“未定义”)。 |
| **E《直接公开》** | 第[0069]段:“To support speculative execution, the resolution control 102 (a) controls the issue of speculation instructions through the allocation of resolution buffers 104, and (b) controls checkpointing of the processor state...” 第[0072]段:“resolution buffers 104 are allocated for (a) branches, (b) UCOFs, and (c) floats.” | 对比文件公开了“resolution buffers”(分辨缓冲区),用于存储已分配但未解析的推测指令(分支、无条件跳转、浮点指令)的信息。这些缓冲区以条目形式组织,用于管理推测执行。这相当于一个存储推测指令信息的队列。因此,对比文件直接公开了在队列条目中存储指令。 |
| **F《隐含公开》** | 第[0081]段:“All processor resources that can be changed by speculatively issued instructions prior to the speculation instruction being resolved are checkpointed to allow the processor state to be repaired...” 第[0081]段表格:“AC1 ... Register Translation Unit; EX ... Condition Codes”。 | 对比文件公开了为支持修复而进行的检查点(checkpointing)操作,保存了处理器资源的状态,其中包括寄存器转换单元(管理物理寄存器映射)和条件码等。寄存器转换单元的状态决定了逻辑寄存器的映射,而条件码是程序状态的一部分。虽然未明确提及保存“FPSCR”或类似配置寄存器的“当前值”,但为了在推测错误时完整恢复处理器状态,保存所有可能被推测指令修改的、对正确执行至关重要的架构状态是隐含的必要条件。配置寄存器字段作为定义指令行为的关键架构状态,其值在检查点中被保存是合理且必要的推断。因此,本领域技术人员可以推断,在存储指令的条目中,也会保存相关寄存器字段的当前值。 |
| **G《隐含公开》** | 第[0110]段:“UCOFs are validated through comparison of the predicted and actual target address in AC2... UCOF resolution also requires that all outstanding speculation instructions be resolved.” 第[0114]段:“Pipeline repair after a branch (or UCOF) misprediction or floating point exception requires flushing the execution pipeline behind the checkpointed speculation instruction, and then restoring the checkpointed physical registers to recover the processor state.” | 对比文件描述了在推测指令(如分支、浮点指令)被解析(即执行并得出确定结果)后,需要进行验证和可能的修复。修复操作需要找到与该推测指令相关联的检查点信息(存储在类似队列的结构中)以恢复状态。这意味着,在写入指令(如修改状态的浮点指令或分支指令)执行/解析后,系统需要定位之前为该指令创建的检查点条目。因此,“在写入指令执行之后,搜索队列以查找条目”这一步骤是隐含在对比文件的解析与修复流程中的。 |
| **H《隐含公开》** | 第[0108]段:“Branches are resolved by resolving both the predicted target address and predicted direction. Thus, for BPU hits..., the predicted target address is compared to the actual (calculated) target address in AC2, and then the predicted direction is compared to the actual direction in EX/WB.” | 对比文件明确描述了在分支指令解析时,将之前预测的目标地址和方向与执行后计算出的实际目标地址和方向进行比较。这是一种“比较”操作。虽然比较的对象是分支预测信息与执行结果,而非配置寄存器的旧值与新值,但其核心逻辑是相同的:在推测指令执行后,将其推测执行时所依据的“旧状态”(预测值)与执行后产生的“新状态/结果”(实际值)进行比较,以判断推测是否正确。本领域技术人员可以由此推理,对于其他类型的推测(如基于配置寄存器值的推测),在写入指令执行后,同样需要将指令推测执行时保存的寄存器字段“当前值”(旧值)与写入指令执行后产生的“配置值”(新值)进行比较。 |
| **I《隐含公开》** | 第[0114]段:“Pipeline repair after a branch (or UCOF) misprediction or floating point exception requires flushing the execution pipeline behind the checkpointed speculation instruction...” 第[0094]段:“Figure 5 illustrates the exemplary checkpoint implementation... Checkpointing the stack and instruction pointers in AC1...”。 | 对比文件公开了在发生推测错误(分支预测错误或浮点异常)时,会清洗(flush)该推测指令之后管线中的所有指令。同时,检查点机制保存了指令指针(IP)。修复时,需要利用检查点保存的状态恢复机器,这自然包括将程序计数器(PC)恢复到正确的位置。虽然目标专利描述的是跳转到“写入指令之后”的指令,而对比文件通常跳转到正确分支的目标地址或异常处理程序,但“清洗管线并重设程序计数器以从正确点重新执行”这一核心恢复机制是相同的。本领域技术人员可以推断,当比较发现不匹配(即推测错误)时,会触发类似的修复动作:清洗所有后续指令,并利用检查点信息或通过计算,将程序计数器设定到正确指令的地址。 |
| **J《未公开》** | 无对应描述。 | 目标专利描述了根据配置字段的当前值(如第一值或非第一值),将指令处理为“定义的”或“未定义的”这一特定行为。对比文件完全没有提及根据某个寄存器字段的值来决定指令语义是“定义的”还是“未定义的”这种机制。对比文件的异常处理是基于指令执行时是否发生错误(如除零、溢出),而非基于一个可配置的上下文字段来预先定义指令是否合法。 |
| **K《未公开》** | 无对应描述。 | 同上,对比文件未公开基于配置字段值将指令处理为“未定义”的行为。 |
| **L《隐含公开》** | 第[0114]段:“Pipeline repair after a branch (or UCOF) misprediction or floating point exception requires flushing the execution pipeline behind the checkpointed speculation instruction...” | 对比文件明确,修复时需要清洗管线中位于出错推测指令**之后**的所有指令。如果该推测指令本身是一条被推测执行的指令(例如,一条依赖前一条写入指令的向量指令,且其本身也被推测执行),那么当发现其上下文推测错误时,修复动作就是清洗该指令及其后的所有指令。同时,检查点中保存了该指令的地址(指令指针),可用于恢复执行。这与特征L的描述“清洗所述指令及以编程次序跟随所述指令的所有飞行中指令的管线,且将程序计数器设定到所述指令的地址”在逻辑上是一致的。本领域技术人员可以从对比文件的通用修复机制中推断出这种特定场景下的修复方式。 |
| **M《直接公开》** | 第[0094]段:“Figure 5 illustrates the exemplary checkpoint implementation... Checkpointing the stack and instruction pointers in AC1...”。 第[0081]段表格列出了检查点保存的资源,包括IP(指令指针)、SP(堆栈指针)、寄存器映射、条件码等。 | 对比文件明确并详细描述了检查点(checkpoint)机制,即在推测指令进入管线阶段时,保存该时刻的处理器状态信息,包括指令指针、堆栈指针、寄存器映射状态、条件码等。这些信息正是“处理器的状态信息”。因此,对比文件直接公开了在条目中存储处理指令时的处理器状态信息。 |
| **N《直接公开》** | 第[0114]段:“...and then restoring the checkpointed physical registers to recover the processor state.” 第[0121]段:“checkpoint restore is accomplished by copying the Checkpoint register... restoring the state of the IP/SP and the physical registers...” | 对比文件明确描述了在需要修复(如发生推测错误)时,使用之前创建的检查点(即存储在条目中的状态信息)来恢复处理器的状态。这直接对应于目标专利的特征N:如果不匹配,则从条目检索状态信息并将处理器恢复到该状态。 |
| **O《未公开》** | 对比文件提及“floating point instructions”和“vector”操作,但未明确将特定指令称为“向量指令”或将其作为目标专利中那种具有可配置长度/步幅等上下文的“向量指令”来描述。第[0002]段提到“floating point instructions issued to a floating point unit”,但未特指向量化SIMD指令。 | 虽然现代浮点单元常支持向量化操作,但对比文件(1995年)的上下文主要围绕标量浮点指令的推测执行和异常处理。其说明书全文并未明确聚焦或定义一种其行为由可配置寄存器字段(如向量长度/步幅寄存器)决定的“向量指令”。因此,不能认为对比文件公开了目标专利中特指的“向量指令”。 |
| **P《隐含公开》** | 第[0081]段表格中,“AC1”检查点资源包括“Register Translation Unit”,这是一个管理多个寄存器和字段的单元。 | 对比文件公开的检查点资源中包含“Register Translation Unit”(寄存器转换单元),该单元管理着多个物理寄存器和逻辑寄存器的映射关系,本质上涉及多个字段。此外,处理器架构中的控制寄存器(如浮点控制寄存器)通常也包含多个字段(如舍入控制、异常屏蔽等)。因此,本领域技术人员可以毫无困难地理解,所涉及的“寄存器字段”可以包括一个或多个字段。 |
| **Q《未公开》** | 同特征J。 | 同特征J,对比文件未公开根据配置字段值将指令处理为“定义的”行为。 |
| **R《未公开》** | 同特征K。 | 同特征K,对比文件未公开根据配置字段值将指令处理为“未定义的”行为。 |
| **S《直接公开》** | 第[0110]段:“If a branch or float is resolved such that repair is not required, resolution control 102 broadcasts... a resolution vector 113. This vector... causes each pipe stage to deallocate one of four checkpoint registers...” | 对比文件明确描述了当推测指令(如分支或浮点指令)被成功解析(即预测正确或无异常)后,会广播一个“resolution vector”(解析向量),导致各个管线阶段释放(deallocate)为该指令分配的检查点寄存器。这意味着与该推测指令对应的检查点条目(存储在检查点寄存器中)会被移除或标记为可重用。这直接对应于“当指令提交时,从队列移除条目”。 |
<<<C>>><<<E>>><<<M>>><<<N>>><<<S>>><<<a>>><<<b>>><<<f>>><<<g>>><<<h>>><<<i>>><<<l>>><<<p>>>