对比文件名称:2009-03-03_US7500087B_发明授权_US07500087B2 Synchronization of parallel processes using speculative execution of synchronization instructions
目标专利名称:335优化用于上下文相关指令的性能CN105190540B
本次调用的模型名称:GPT-4
### 特征比对表格
| 技术特征描述以及公开性判断结果 | 对比文件原文引用 | 公开性论述 |
| **技术特征A**:处理具有寄存器字段的配置值的行为的指令,<br>**判断结果**:未直接公开,亦未隐含公开。 | 对比文件涉及指令处理,例如:“The out-of-order processor includes an in-order front end 340 that obtains instructions, and an out-of-order execution engine 350 that re-orders the instructions received from the in-order front end 340 and provides speculative execution.”(说明书[0018]段) | 对比文件公开了处理器获取并推测性地执行指令,其中“spec”和“commit”指令的行为依赖于内存位置“loc”或“lock_var”的值。然而,对比文件中的指令行为所依赖的“配置值”存储于内存变量(如锁变量lock_var),而非目标专利所定义的“寄存器字段”(如FPSCR 124中的字段125)。本领域技术人员阅读对比文件后,无法毫无疑义地得出或合理推断出存在一个“寄存器字段”,其“配置值”决定了指令行为。两者依赖的存储实体(内存 vs 寄存器)和作用机制不同,因此技术特征A既未被直接公开,也未被隐含公开。 |
| **技术特征B**:所述指令相依于在编程次序上先于所述指令的写入指令,<br>**判断结果**:未直接公开,亦未隐含公开。 | 对比文件描述了指令间的依赖关系,例如:“If multiple processes/threads attempt to acquire the lock at the same time, then this results in a mis-speculation because line 1 is a read from a memory location and line 3 is a write to the same memory location, thus causing a RAW dependence violation.”(说明书[0029]段) | 对比文件明确公开了在推测执行的代码块中,存在“读-修改-写”操作,并且后续的写操作(line 3)依赖于先前的读操作(line 1)所读到的值,这构成了一种数据依赖(RAW)。然而,这种依赖发生在对同一内存地址(lock_var)的访问之间,且写操作本身是推测执行指令序列的一部分,其目的并非为了设置一个后续指令的“上下文”。而目标专利中“写入指令”特指将配置值写入到**寄存器字段**(如FPSCR)的指令,其目的是为后续的上下文相关指令(如向量指令)建立执行上下文。对比文件中的依赖关系本质是内存数据的竞争检测和同步,而非为目标专利所述的上下文配置建立依赖。因此,技术特征B既未被直接公开,也未被隐含公开。 |
| **技术特征C**:所述写入指令将所述配置值写入到所述寄存器字段,<br>**判断结果**:未直接公开,亦未隐含公开。 | 对比文件描述了向内存写入值,例如:“lock_var=tid; //line 3”(说明书[0028]段代码示例) | 对比文件公开了将线程标识符`tid`写入到内存变量`lock_var`中。然而,该写入操作的目标是**内存位置**(锁变量),而非目标专利所定义的**寄存器字段**(如FPSCR 124中的字段125)。寄存器字段是处理器内部特定的、用于控制指令行为的专用寄存器部分,与通用的内存地址在物理位置、访问速度和功能上均有本质区别。本领域技术人员无法从对比文件对内存变量的写入,毫无疑义地得出或合理推断出存在一个向“寄存器字段”写入“配置值”的指令。因此,技术特征C既未被直接公开,也未被隐含公开。 |
| **技术特征D**:在所述写入指令执行之前处理的所述指令在基于处理所述指令时的所述寄存器字段的当前值的上下文内执行<br>**判断结果**:未直接公开,亦未隐含公开。 | 对比文件描述了基于当前值进行推测执行:“spec loc, shoot_down; //begin speculation, goto shoot_down if misspeculated”(说明书[0028]段代码示例)以及“The speculative execution (‘spec’) instruction may take first and second operands (e.g., spec loc, addr), behave as a no-op if a memory location indicated by the first operand contains a non-zero value, cause the processor to speculatively execute additional instructions if the memory location contains a zero value...”(说明书[0022]段) | 对比文件公开了`spec`指令会检查内存位置`loc`(或`lock_var`)的当前值。如果该值为零(表示锁空闲),则开始推测执行后续指令。这确实是在基于某个“当前值”来决定是否以及如何执行后续指令。然而,这个“当前值”来自**内存变量**,其作用是**判断锁状态以决定是否进入临界区**,其“上下文”是关于**共享资源访问权限**的。而目标专利的“当前值”是**寄存器字段**(如FPSCR)的值,其作用是**定义向量指令等具体指令的执行行为**(如向量长度、步幅),其“上下文”是关于**指令功能配置**的。两者基于的存储实体和作用目的均不相同。本领域技术人员无法从对比文件的锁检查机制,合理推断出目标专利中基于寄存器字段配置值定义指令执行上下文的技术特征。因此,技术特征D既未被直接公开,也未被隐含公开。 |
| **技术特征E**:在队列中的条目中存储所述指令<br>**判断结果**:《隐含公开》 | “The reorder buffer 600 includes a head 610 and a tail 620 of the instructions in the instruction pool.”(说明书[0031]段) | 对比文件公开了处理器使用重排序缓冲区(ROB)600来管理指令,其中包含了推测执行的指令。ROB是一种用于支持乱序执行的指令队列。当`spec`指令触发推测执行时,后续的指令(包括临界区内的指令)会被放入这个ROB队列中等待执行和提交。虽然对比文件没有明确使用“存储所述指令”来描述将特定指令放入队列的动作,但“推测执行后续指令”以及使用ROB来管理这些指令,必然意味着这些指令被存储在ROB的条目中。本领域技术人员可以合理推断,在推测执行机制下,被推测执行的指令必然以某种形式(如在ROB条目中)被存储和管理。因此,技术特征E被对比文件隐含公开。 |
| **技术特征F**:在所述条目中存储所述寄存器字段的所述当前值<br>**判断结果**:《隐含公开》 | “The speculative execution (‘spec’) instruction may take first and second operands (e.g., spec loc, addr), behave as a no-op if a memory location indicated by the first operand contains a non-zero value, cause the processor to speculatively execute additional instructions if the memory location contains a zero value...”(说明书[0022]段) | 对比文件公开了`spec`指令在开始时读取内存位置`loc`(或`lock_var`)的值,并根据该值(零或非零)来决定是否开始推测执行。为了在后续发生违规时能够进行恢复(跳转到`shoot_down`地址),处理器需要“记住”开始推测执行时所基于的条件状态。虽然对比文件没有明确说明将这个“当前值”存储在ROB条目的某个特定字段中,但为了支持推测执行和错误恢复,处理器必须记录导致推测开始的上下文或条件。本领域技术人员可以合理推断,在实现推测执行机制时,需要存储与推测起点相关的状态信息,其中很可能包括触发推测的那个关键值(即锁变量的值)。因此,技术特征F被对比文件隐含公开。 |
| **技术特征G**:在所述写入指令执行之后,搜索所述队列以查找所述条目<br>**判断结果**:《隐含公开》 | “Mis-speculation checking continues while the TBR pointer 630 advances toward the CBR pointer 640.”(说明书[0032]段)以及“...the MOB may keep a buffer that contains the addresses that have been read by the instructions in the reorder buffer... If a different processor writes into any of these addresses, ... triggers mis-speculation and the consequent recovery.”(说明书[0033]段) | 对比文件公开了在提交(retire)推测指令期间(即`commit`指令执行后,或`TBR`指针移动时),处理器会持续进行误推测检查。在多处理器环境中,当其他处理器写入(执行写入指令)到当前处理器ROB中指令已读取的地址时,会触发依赖违规。这个检查过程,本质上是在检测“写入指令”(其他处理器对共享内存的写)执行后,是否影响了当前处理器队列(ROB)中存储的推测指令的有效性。虽然对比文件的搜索是基于内存地址匹配(通过MOB和监听机制)来检测违规,而目标专利是基于比较配置值来查找特定条目,但两者核心思想都是在某个关键操作(写内存/写寄存器)发生后,去检查队列中受影响的条目。本领域技术人员可以从对比文件的违规检查机制,合理推断出在写入操作发生后对队列进行搜索以确定影响范围的思想。因此,技术特征G被对比文件隐含公开。 |
| **技术特征H**:及在所述写入指令执行之后,将存储在所述条目中的所述当前值与所述配置值进行比较。<br>**判断结果**:未直接公开,亦未隐含公开。 | “If a different processor writes into any of these addresses, then the different processor may send an invalidation signal to the first processor to maintain cache coherency. The snoop controller in the first processor monitors the invalidation signals on the bus, and if the address of any of those signals matches any of the load addresses in the MOB, then the snoop controller/MOB sends a signal ... that triggers mis-speculation...”(说明书[0033]段) | 对比文件公开了在发生写入后,通过缓存一致性协议检查内存**地址**是否匹配(即是否有其他处理器写入了本处理器曾读过的地址),从而触发误推测。这是一个基于**地址冲突**的检查。而目标专利是在写入指令执行后,将**存储在条目中的旧上下文值**与**写入指令写入的新配置值**进行**数值比较**。两者检查的对象(地址 vs 数值)和目的(检测数据竞争 vs 验证上下文一致性)完全不同。本领域技术人员无法从对比文件的地址匹配检查机制,合理推断出目标专利中比较新旧配置值的技术特征。因此,技术特征H既未被直接公开,也未被隐含公开。 |
| **技术特征I**:其进一步包括:假如存储在所述条目中的所述当前值并不与所述配置值匹配,那么清洗所有飞行中指令的管线,且将程序计数器设定到以编程次序在所述写入指令之后的下一指令的地址。<br>**判断结果**:《隐含公开》 | “...the entire speculative block of instructions (the instructions between the head and the tail of the ROB) may then be flushed from the pipeline, and a message to the in-order front-end may provide the address from where to begin fetching the new instructions to fill the reorder buffer 600.”(说明书[0032]段)以及“The spec instruction... cause the processor to start executing instructions from an address indicated by the second operand if a mis-speculation occurs.”(说明书[0022]段) | 对比文件明确公开了当发生误推测(mis-speculation)时(例如检测到RAW依赖违规),会清洗管线中所有的推测指令(即“所有飞行中指令”),并将程序计数器设定到`spec`指令中指定的第二个操作数地址(`shoot_down`)开始取指。在说明书[0028]段的代码示例中,`shoot_down`标签处的代码是用于以传统方式获取锁,它在编程次序上位于推测代码块之后。虽然目标专利是“不匹配”时恢复,而对比文件是“发生违规”时恢复,触发条件表述不同,但恢复动作的核心——清洗管线和重定向程序计数器——是高度相似的。本领域技术人员可以合理推断,在基于数值比较发现上下文错误(一种特定的“违规”)时,采用与对比文件中处理依赖违规相同的恢复机制(清洗管线并跳转)是显而易见的。因此,技术特征I被对比文件隐含公开。 |
| **技术特征J**:处理所述指令进一步包括:如果所述当前值为第一值,那么将所述指令处理为定义的<br>**判断结果**:未直接公开,亦未隐含公开。 | “The speculative execution (‘spec’) instruction may take first and second operands (e.g., spec loc, addr), behave as a no-op if a memory location indicated by the first operand contains a non-zero value, cause the processor to speculatively execute additional instructions if the memory location contains a zero value...”(说明书[0022]段) | 对比文件公开了基于内存变量值(零或非零)来决定是否开始推测执行后续指令。若值为零,则执行后续指令;若值为非零,则`spec`指令相当于空操作(no-op),不执行后续指令。这类似于基于一个值来决定是否“处理”一组指令。然而,目标专利中的“定义的”和“未定义的”具有特定含义,是指指令本身是合法执行还是会导致未定义异常/中断,这关乎指令的语义和行为模式。而对比文件中基于锁变量值决定是否“执行”指令,是关于是否允许进入临界区的控制流决策。两者概念不同。本领域技术人员无法从对比文件的锁控制逻辑,合理推断出目标专利中根据寄存器字段值将单个指令处理为“定义的”或“未定义的”这一具体技术特征。因此,技术特征J既未被直接公开,也未被隐含公开。 |
| **技术特征K**:及如果所述当前值不是所述第一值,那么将所述指令处理为未定义的。<br>**判断结果**:未直接公开,亦未隐含公开。 | 同上。 | 理由同技术特征J。对比文件中,若锁变量非零,`spec`指令作为空操作,后续指令不被执行(即不被处理)。但这不等于将后续指令“处理为未定义的”。“未定义”在处理器架构中通常指尝试执行一条在当前上下文中无效的指令,可能触发异常。对比文件并未涉及指令语义的未定义状态。因此,技术特征K既未被直接公开,也未被隐含公开。 |
| **技术特征L**:其进一步包括:假如存储在所述条目中的所述当前值并不与所述配置值匹配,那么清洗所述指令及以编程次序跟随所述指令的所有飞行中指令的管线,且将程序计数器设定到所述指令的地址。<br>**判断结果**:《隐含公开》 | “...the entire speculative block of instructions (the instructions between the head and the tail of the ROB) may then be flushed from the pipeline, and a message to the in-order front-end may provide the address from where to begin fetching the new instructions to fill the reorder buffer 600.”(说明书[0032]段)以及“The spec instruction... cause the processor to start executing instructions from an address indicated by the second operand if a mis-speculation occurs.”(说明书[0022]段) | 对比文件公开了当发生误推测时,清洗从推测开始点到结束点(即整个推测块)的所有指令,并跳转到指定地址(`shoot_down`)重新执行。在说明书[0028]段代码示例中,推测块从`spec`指令后开始,到`commit`指令前结束。如果发生违规,清洗的是这个块内的所有指令(即“所述指令及以编程次序跟随所述指令的所有飞行中指令”),并从`shoot_down`地址重新取指。虽然目标专利的跳转地址是“所述指令的地址”(即上下文相关指令自身),而对比文件跳转到一个指定的恢复代码地址,但两者都涉及清洗一系列指令并重设程序流。本领域技术人员可以合理推断,当发现特定指令的上下文错误时,采用与对比文件类似的机制,即清洗该指令及其后所有推测指令并重新从该指令开始执行,是一种可行的恢复策略。因此,技术特征L被对比文件隐含公开。 |
| **技术特征M**:其进一步包括:在所述条目中存储处理器的状态信息,所述状态信息是当处理所述指令时的状态信息<br>**判断结果**:未直接公开,亦未隐含公开。 | 对比文件没有明确提及在ROB条目或类似结构中存储“处理器的状态信息”。 | 对比文件描述了推测执行和恢复机制,但恢复时跳转到的`shoot_down`地址是预先在`spec`指令中指定的,恢复代码(传统锁获取路径)会重新执行所有必要的操作。对比文件没有提到需要保存和恢复在推测执行开始时的精确处理器状态(如通用寄存器、程序状态字等)。目标专利中存储“状态信息”是为了在恢复时能将处理器恢复到处理该指令时的确切状态,这对于处理因上下文错误导致的未定义指令异常后的精确恢复可能是必要的。对比文件未公开或暗示此特征。因此,技术特征M既未被直接公开,也未被隐含公开。 |
| **技术特征N**:及假如存储在所述条目中的所述当前值并不与所述配置值匹配,那么从所述条目检索所述状态信息,且将所述处理器恢复到所述状态信息所指示的状态。<br>**判断结果**:未直接公开,亦未隐含公开。 | 对比文件没有提及从存储的条目中检索状态信息以恢复处理器状态。 | 理由同技术特征M。对比文件的恢复机制是跳转到新的代码路径(`shoot_down`)重新执行,而不是从保存的状态中恢复。因此,技术特征N所描述的特定恢复方式在对比文件中没有依据,既未被直接公开,也未被隐含公开。 |
| **技术特征O**:其中所述指令为向量指令。<br>**判断结果**:未直接公开,亦未隐含公开。 | 对比文件通篇讨论的是用于同步的`spec`和`commit`指令,以及临界区内的常规指令。例如:“CS; //critical section”(说明书[0028]段代码示例)。说明书[0017]段提到执行单元可能包含“multimedia (e.g., Single Instruction, Multiple Data (SIMD)) execution units”,但并未将`spec`/`commit`指令或临界区内的指令与向量指令关联。 | 对比文件的应用场景是使用推测执行来实现锁同步,其处理的指令是与锁操作和临界区相关的通用指令。虽然现代处理器可能具备SIMD单元,但对比文件并未将所公开的推测执行机制应用于“向量指令”这一特定类型的指令,也未涉及向量指令对寄存器字段上下文的依赖。本领域技术人员无法从对比文件公开的内容中得出或推断出所述指令是向量指令。因此,技术特征O既未被直接公开,也未被隐含公开。 |
| **技术特征P**:其中所述寄存器字段包括一个或多个字段。<br>**判断结果**:未直接公开,亦未隐含公开。 | 对比文件未涉及用于控制指令行为的“寄存器字段”。其依赖的配置值来源于内存变量(如`lock_var`)。 | 由于对比文件根本没有公开“寄存器字段”这一概念,自然也就没有公开该字段可以包括一个或多个字段。因此,技术特征P既未被直接公开,也未被隐含公开。 |
| **技术特征Q**:处理所述指令进一步包括:如果所述当前值为第一值,那么将所述指令处理为定义的<br>**判断结果**:未直接公开,亦未隐含公开。 | 同技术特征J。 | 技术特征Q与特征J的表述完全一致。基于与技术特征J相同的理由,该特征既未被直接公开,也未被隐含公开。 |
| **技术特征R**:及如果所述当前值不是所述第一值,那么将所述指令处理为未定义的。<br>**判断结果**:未直接公开,亦未隐含公开。 | 同技术特征K。 | 技术特征R与特征K的表述完全一致。基于与技术特征K相同的理由,该特征既未被直接公开,也未被隐含公开。 |
| **技术特征S**:其进一步包括:当所述指令提交时,从所述队列移除所述条目。<br>**判断结果**:《直接公开》 | “The retire-store unit 354 may inspect instructions in the out-of-order execution management unit 352. The retire-store unit 354 may remove completed instructions...”(说明书[0019]段) | 对比文件明确公开了提交/收回单元(retire-store unit)会移除(remove)已完成的指令。在乱序执行处理器中,指令提交(retire)意味着其执行结果被永久化,随后该指令会从重排序缓冲区(ROB,即本特征中的“队列”)中移除。本领域技术人员阅读对比文件后,能够毫无疑义地得出“当指令提交时,从队列移除该指令对应的条目”这一技术方案。因此,技术特征S被对比文件直接公开。 |
<<<S>>><<<e>>><<<f>>><<<g>>><<<i>>><<<l>>>