首页 / 专利库 / 电路 / 电路 / 事务嵌套深度测试指令

事务嵌套深度测试指令

阅读:815发布:2020-05-11

专利汇可以提供事务嵌套深度测试指令专利检索,专利查询,专利分析的服务。并且在提供事务内存支持的系统中,提供事务嵌套深度测试指令以触发处理 电路 系统4将至少一个状态值根据事务嵌套深度设定为多个状态中的一者,事务嵌套深度指示给定线程的已执行的事务开始指令(而对应事务保持为未中止且未提交)的数量,多个状态包括在事务嵌套深度为1时所 选定 的第一状态,以及在事务嵌套深度大于或小于1时所选定的至少一个另外的状态。所支持的ISA实现至少一个状态值以及对至少一个状态值处于第一状态的条件分支的设定,条件分支响应于单一事务嵌套深度测试指令与单一条件分支指令而被执行。,下面是事务嵌套深度测试指令专利的具体信息内容。

1.一种设备,包括:
指令解码器,所述指令解码器用于解码指令;以及
处理电路系统,所述处理电路系统用于响应于由所述指令解码器解码的所述指令而执行数据处理,所述处理电路系统包括事务内存支持电路系统以支持由所述处理电路系统执行数据处理线程内的事务,所述事务包括在事务开始指令与事务结束指令之间推测性地执行的线程的指令,对此所述处理电路系统被配置为防止提交所述事务的推测性地执行的指令的结果,直到到达所述事务结束指令为止,并且所述处理电路系统被配置为在于到达所述事务结束指令之前发生中止事件时中止所述事务的处理;
其中,响应于由所述指令解码器对事务嵌套深度测试指令的解码,所述处理电路系统被配置为将至少一个状态值设定为根据事务嵌套深度所选定的多个状态中的一者,所述事务嵌套深度指示给定线程的已执行的事务开始指令的数量,对此对应事务保持为未中止且未提交的,所述多个状态包括在所述事务嵌套深度等于大于零的预定数字时所选定的第一状态,以及在所述事务嵌套深度大于或小于所述预定数字时所选定的至少一个另外的状态;并且
所述指令解码器被配置为:响应于单一事务嵌套深度测试指令接续单一条件分支指令,支持包括实现所述指令解码器的至少一种类型的条件分支指令的指令集架构,以控制所述处理电路系统根据所述事务嵌套深度设定至少一个状态值,并且针对所述至少一个状态值处于所述第一状态而执行条件分支。
2.根据权利要求1所述的设备,其中,所述预定数字为1。
3.根据权利要求1和2中任一项所述的设备,其中,所述至少一个另外的状态包括:
第二状态,所述第二状态在所述事务嵌套深度小于所述预定数字时被选定;以及第三状态,所述第三状态在所述事务嵌套深度大于所述预定数字时被选定。
4.根据权利要求3所述的设备,其中,所述指令集架构包括一种或更多种类型的条件分支指令,所述条件分支指令使得所述指令解码器能够:响应于单一事务嵌套深度测试指令接续单一条件分支指令,控制所述处理电路系统以根据所述事务嵌套深度设定所述至少一个状态值,并且对处于所述多个状态的目标状态中的所述至少一个状态值执行条件分支,而不论所述目标状态是所述第一状态、所述第二状态还是所述第三状态。
5.根据前述权利要求中任一项所述的设备,包括条件状态存储元件以存储至少一个条件状态值,所述至少一个条件状态值指示先前执行指令的处理结果的至少一个性质;
其中,响应于由所述指令解码器解码所述事务嵌套深度测试指令,所述处理电路系统被配置为设定所述至少一个条件状态值以对应于将所述事务嵌套深度与所述预定数字比较的结果。
6.根据权利要求5所述的设备,其中,响应于由所述指令解码器对条件状态相关条件分支指令进行解码从而指定测试条件,所述处理电路系统被配置为:针对存储在所述条件状态存储元件中的所述至少一个条件状态值是否满足所述测试条件而执行所述条件分支。
7.根据权利要求5和6中任一项所述的设备,包括多个通用寄存器以存储用于指令的运算符;
其中,响应于由所述指令解码器解码所述事务嵌套深度测试指令,所述处理电路系统被配置为将代表所述事务嵌套深度的事务嵌套深度值写入由所述事务嵌套深度测试指令指定的通用寄存器。
8.根据权利要求1至4中任一项所述的设备,包括多个通用寄存器以存储用于指令的运算符,
其中,响应于由所述指令解码器解码所述事务嵌套深度测试指令,所述处理电路系统被配置为将所述至少一个状态值写入由所述事务嵌套深度测试指令指定的通用寄存器。
9.根据权利要求1至4和8中任一项所述的设备,其中,在所述第一状态中,所述至少一个状态值具有以下各项中的一者:
第一编码,其中,所有位等于0;
第二编码,其中,第一预定位等于1,并且第二预定位等于0;以及
第三编码,其中,所述第一预定位等于0,并且所述第二预定位等于1。
10.根据权利要求3和4中任一项所述的设备,其中:
在所述第一状态、所述第二状态和所述第三状态中的第一者中,所述至少一个状态值具有第一编码,其中,所有位等于0;
在所述第一状态、所述第二状态和所述第三状态中的第二者中,所述至少一个状态值具有第二编码,其中,第一预定位等于1,并且第二预定位等于0;并且在所述第一状态、所述第二状态和所述第三状态中的第三者中,所述至少一个状态值具有第三编码,其中,所述第一预定位等于0,并且所述第二预定位等于1。
11.根据前述权利要求中任一项所述的设备,其中,响应于所述指令解码器对与零比较类型的条件分支指令进行解码从而指定目标寄存器,所述处理电路系统被配置为对所述目标寄存器的等于0的所有位执行所述条件分支。
12.根据前述权利要求中任一项所述的设备,其中,响应于所述指令解码器对位测试类型的条件分支指令进行解码从而指定目标寄存器的预定位,所述处理电路系统被配置为对所述目标寄存器的等于1的预定位执行所述条件分支,或对所述目标寄存器的等于0的预定位执行所述条件分支。
13.根据前述权利要求中任一项所述的设备,包括事务嵌套深度存储元件,以存储代表所述事务嵌套深度的事务嵌套深度值。
14.根据前述权利要求中任一项所述的设备,其中,所述事务内存支持电路系统包括回复状态存储电路系统,以存储响应于所述事务开始指令而捕获的事务回复状态以在中止所述事务时回复至所述事务回复状态。
15.根据权利要求14所述的设备,其中,所述处理电路系统被配置为:
在所述事务嵌套深度等于零时,响应于所述事务开始指令而捕获所述事务回复状态,以及
在所述事务嵌套深度大于零时,响应于所述事务开始指令而抑制对所述事务回复状态的捕获。
16.根据前述权利要求中任一项所述的设备,其中,所述事务内存支持电路系统包括推测性结果存储电路系统,以存储针对至少一个线程的至少一个事务的推测性地执行的指令的所述结果。
17.根据前述权利要求中任一项所述的设备,其中,所述事务内存支持电路系统包括冲突检测电路系统,以检测第一线程的事务内对给定地址的数据存取与另一线程对该相同地址的数据存取之间的冲突。
18.根据权利要求17所述的设备,其中,所述冲突检测电路系统被配置为响应于检测到所述冲突而触发所述中止事件。
19.根据前述权利要求中任一项所述的设备,其中,所述事务内存支持电路系统包括地址追踪电路系统,以追踪由事务内的指令存取的地址。
20.一种数据处理方法,包括以下步骤:
使用指令解码器解码指令;以及
使用包括事务内存支持电路系统以支持由所述处理电路系统执行数据处理线程内的事务的处理电路系统,响应于由所述指令解码器解码的所述指令而执行数据处理,所述事务包括在事务开始指令与事务结束指令之间推测性地执行的线程的指令,对此所述处理电路系统被配置为防止提交所述事务的推测性地执行的指令的结果,直到到达所述事务结束指令为止,并且所述处理电路系统被配置为在于到达所述事务结束指令之前发生中止事件时中止所述事务的处理;
响应于对单一事务嵌套深度指令的解码,将至少一个状态值设定为根据事务嵌套深度所选定的多个状态中的一者,所述事务嵌套深度指示给定线程的已执行的事务开始指令的数量,对此对应事务保持为未中止且未提交的,所述多个状态包括在所述事务嵌套深度等于大于零的预定数字时所选定的第一状态,以及在所述事务嵌套深度大于或小于该预定数字时所选定的至少一个另外的状态;以及
响应于接续所述单一事务嵌套深度指令的单一条件分支指令的解码,针对所述至少一个状态值处于所述第一状态而执行条件分支。
21.一种计算机程序,用于控制主控数据处理设备以提供指令执行环境以执行指令,所述计算机程序包括:
处理程序逻辑,用于支持执行在数据处理线程内的事务,
所述事务包括在事务开始指令与事务结束指令之间推测性地执行的线程的指令,对此所述处理程序逻辑被配置为防止提交所述事务的推测性地执行的指令的结果,直到到达所述事务结束指令为止,并且所述处理电路系统被配置为在于到达所述事务结束指令之前发生中止事件时中止所述事务的处理;以及
其中,响应于事务嵌套深度测试指令,所述处理程序逻辑被配置为将至少一个状态值设定为根据事务嵌套深度所选定的多个状态中的一者,所述事务嵌套深度指示给定线程的已执行的事务开始指令的数量,对此对应事务保持为未中止且未提交的,所述多个状态包括在所述事务嵌套深度等于大于零的预定数字时所选定的第一状态,以及在所述事务嵌套深度大于或小于所述预定数字时所选定的至少一个另外的状态;并且
所述处理程序逻辑被配置为:响应于单一事务嵌套深度测试指令接续单一条件分支指令,支持包括实现所述处理程序逻辑的至少一种类型的条件分支指令的指令集架构,以根据所述事务嵌套深度设定所述至少一个状态值,并且针对所述至少一个状态值处于所述第一状态而执行条件分支。
22.一种储存介质,储存根据权利要求21所述的计算机程序。

说明书全文

事务嵌套深度测试指令

技术领域

[0001] 本技术涉及数据处理的领域。更具体而言,本技术涉及事务内存(transactional memory)。

背景技术

[0002] 数据处理系统可执行数个数据处理线程。有时,线程可需要存取共享资源,且数据处理操作的本质可使得一旦线程开始与共享资源交互,则可需要使用此资源原子地(atomically)完成一组操作,而同时没有另一线程存取此资源。
[0003] 用于处理此线程间冲突的一种技术,可为使用(locks)来控制对于至少一个目标资源的专属存取。例如,在一个线程开始存取特定地址区域中的数据时,线程可设定锁变量以主张对于锁的拥有权,且随后在拥有锁的线程具有对于锁的拥有权的同时,检查锁变量的其他线程可确定锁已被主张,且因此可不输入与此地址区域交互的码区段。这种基于锁式的作法可被看作是悲观的,因为每一线程预设为假定此无法输入存取共享资源的码区段,因为可发生与另一线程的冲突,除非此线程具有对锁的拥有权而确保不会发生冲突。然而,锁识别器时常可控制对于数个资源(例如一地址范围)的专属存取,且因此不保证在一个线程正存取此锁变量保护的资源组内的特定资源时,另一线程将无疑地存取相同资源。因此,在线程之间很少发生冲突的情况下,基于锁式的作法可造成性能损失,因为线程可不必要地在输入使用共享资源的关键码区段之前等待锁被释放。
[0004] 较乐观的用于处理存取共享资源的线程之间的冲突的作法,可为使用事务内存支持。数据处理系统可具有电路系统以由处理电路系统支持在数据处理线程内执行事务。事务可为在事务开始指令与事务结束指令之间执行的线程事务,事务开始指令标示事务的开头,事务结束指令标示事务的结尾。在事务开始指令与事务结束指令之间,处理电路系统可推测性地执行中介指令,并防止这些经推测性地执行的指令的结果的提交(commitment),直到到达事务结束指令为止。事务开始指令执行之后(但在到达事务结束指令之前)中止事件的发生,可造成事务中止且推测性指令被舍弃。可存在数种原因以中止事务,但一种原因可为检测到与由另一线程进行的内存存取发生冲突。因此,通过此作法,每一线程可乐观地开始执行关键码区段,假定将不会发生与其他线程的冲突,且若到达关键区段的结尾而没有检测到任何冲突,则事务结果可被提交。在很少发生冲突的情况下,使用事务内存支持可改良性能,通过允许更多线程同时处理他们的关键码区段。发明内容
[0005] 至少一些示例提供一种设备,包括:
[0006] 指令解码器,该指令解码器用于解码指令;以及
[0007] 处理电路系统,该处理电路系统用于响应于指令解码器解码的指令而执行数据处理,该处理电路系统包括事务内存支持电路系统以支持处理电路系统的数据处理线程内的事务的执行,该事务包括在事务开始指令与事务结束指令之间推测性地执行的线程的指令,该处理电路系统被配置为防止该事务的推测性地执行的指令的结果的提交,直到到达该事务结束指令为止,且该处理电路系统被配置为在于到达该事务结束指令之前发生中止事件时中止该事务的处理;
[0008] 其中响应于该指令解码器对事务嵌套深度测试指令的解码,该处理电路系统被配置为将至少一个状态值设定为根据事务嵌套深度所选定的多个状态中的一者,该事务嵌套深度指示给定线程的已执行的事务开始指令(而对应事务保持为未中止且未提交)的数量,所述多个状态包括在事务嵌套深度等于大于零的预定数字时所选定的第一状态,以及在事务嵌套深度大于或小于预定数字时所选定的至少一个另外的状态;以及
[0009] 该指令解码器被配置为:响应于单一事务嵌套深度测试指令接续单一条件分支指令,支持包括实现该指令解码器的至少一种类型的条件分支指令的指令集架构,以控制该处理电路系统根据该事务嵌套深度设定至少一个状态值,并针对至少一个状态值处于第一状态而执行条件分支。
[0010] 至少一些示例提供一种数据处理方法,包括:
[0011] 使用指令解码器解码指令;以及
[0012] 响应于该指令解码器解码的指令而执行数据处理,此系使用包括事务内存支持电路系统的处理电路系统,以支持该处理电路系统的数据处理线程内的事务的执行,该事务包括在事务开始指令与事务结束指令之间推测性地执行的线程的指令,该处理电路系统被配置为防止该事务的推测性地执行的指令的结果的提交,直到到达该事务结束指令为止,且在于到达该事务结束指令之前发生中止事件时中止该事务的处理;
[0013] 响应于对单一事务嵌套深度指令的解码,将至少一个状态值设定为根据事务嵌套深度所选定的多个状态中的一者,该事务嵌套深度指示给定线程的已执行的事务开始指令(而对应事务保持为未中止且未提交)的数量,所述多个状态包括在该事务嵌套深度等于大于零的预定数字时所选定的第一状态,以及在该事务嵌套深度大于或小于该预定数字时所选定的至少一个另外的状态;以及
[0014] 响应于接续单一事务嵌套深度指令的单一条件分支指令的解码,对处于第一状态中的至少一个状态值执行条件分支。
[0015] 至少一些示例提供一种计算机程序,用于控制主控数据处理设备以提供指令执行环境以执行指令,包括:
[0016] 处理程序逻辑,用于支持执行在数据处理线程内的事务,该事务包括在事务开始指令与事务结束指令之间推测性地执行的线程指令,而该处理程序逻辑被配置为防止该事务的推测性地执行的指令的结果的提交,直到到达该事务结束指令为止,并可于在到达该事务结束指令之前发生中止事件时中止该事务的处理;以及
[0017] 其中响应于事务嵌套深度测试指令,该处理程序逻辑被配置为将至少一个状态值设定为根据事务嵌套深度所选定的多个状态中的一者,该事务嵌套深度指示给定线程的已执行的事务开始指令(而对应事务保持为未中止且未提交)的数量,所述多个状态包括在该事务嵌套深度等于大于零的预定数字时所选定的第一状态,以及在该事务嵌套深度大于或小于预定数字时所选定的至少一个另外的状态;以及
[0018] 该处理程序逻辑被配置为:响应于单一事务嵌套深度测试指令接续单一条件分支指令,支持包括实现该处理程序逻辑的至少一种类型的条件分支指令的指令集架构,以根据该事务嵌套深度设定至少一个状态值,并针对至少一个状态值处于该第一状态而执行条件分支。
[0019] 存储介质可存储计算机程序。存储介质可为非瞬时性存储介质。附图说明
[0020] 在连同附加图式阅读下面的示例说明之后,将可显然明了本技术的进一步的态样、特征与优点,在图式中:
[0021] 图1示意性地图示说明具有事务内存支持电路系统的数据处理设备的示例;
[0022] 图2示出使用事务内存资源的事务的处理示例;
[0023] 图3示出嵌套事务组的示例;
[0024] 图4示出事务嵌套深度测试指令的第一示例;
[0025] 图5示出设定至少一个状态值以对应于将事务嵌套深度与1比较的结果的示例;
[0026] 图6示出事务嵌套深度测试指令的第二示例;
[0027] 图7是图示说明处理事务嵌套深度测试指令的方法的流程图;以及[0028] 图8图示可使用的模拟器示例。

具体实施方式

[0029] 数据处理设备可具有处理电路系统,处理电路系统具有事务内存支持电路系统,以由处理电路系统支持在数据处理线程内执行事务。事务包括在事务开始指令与事务结束指令之间推测性地执行的线程指令,而处理电路系统可防止事务的推测性地执行的指令的结果提交,直到到达事务结束指令为止,并可于在到达事务结束指令之前发生中止事件时中止事务的处理。
[0030] 有时,所执行的程序代码可包括嵌套事务组,其中对于内部事务的事务开始指令系于对于外部事务的事务开始指令之后执行,但在到达外部事务的事务结束指令之前且在中止外部事务之前执行。虽然对于一些硬件实施方式而言,可能个别追踪嵌套事务组的每一事务的推测性结果,并使得能够将状态回转到嵌套事务中的任一者的开始处,但实际上这可需要事务内存支持电路系统内的大量资源以存储多组状态回复数据或多组推测性结果。实际上,此加入的资源可并非合理的,且因此处理电路系统可时常(为了至少一些目的而)等效地忽略嵌套组的任何内部事务,单纯将位于外部事务的事务开始指令与结束指令的边界内的所有操作视为单一事务。例如,若在嵌套事务组期间内的任意时间发生中止事件,则这可触发将状态回复至外部事务的事物开始指令。内部事务的事务结束指令可被忽略,且其可为触发推测性地执行的指令结果的提交的外部事务的事务结束指令。即使硬件实际上不追踪个别在给定线程的嵌套事务组内的每一个别事务的状态,可仍有用的是让软件限定这种嵌套事务,例如以处理其中分支可转移到位于第一事务开始指令之外的程序部分、且仍期望使用基于事务式机制来确保操作的原子性(atomicity)遵循分支进入点的情况中。
[0031] 有时,执行在处理电路系统上的软件可需要知道当前执行点是否位于已开始但尚未提交也未中止的事务内,或若在这种事务内时当前事务是嵌套组的外部事务或是内部事务。例如,可以根据当前处理是在内部事务中还是外部事务中来作出对于事务调度的决定或对于如何响应中止事件的决定。再者,嵌套的平可为识别相关于先前事务开始指令的点(在此处进行分支)的间接方式。为了帮助追踪事务嵌套的当前水平,处理电路系统可维持指示事务嵌套深度的事务嵌套深度值。事务嵌套深度可指示对于给定线程的所执行事务开始指令数,对于此给定线程对应的事务保持为未中止且未提交。例如,在事务嵌套深度是零时这可指示还未开始事务,在事务嵌套深度为一时这可指示当前执行点位于外部事务内,且在事务嵌套深度为二或更多时这可指示当前执行点为嵌套事务组的内部事务。
[0032] 将事务嵌套深度上的信息暴露至软件的一种作法,可为提供深度测试指令,深度测试指令将当前深度嵌套深度与零比较并传回布尔值,此布尔值指示事务嵌套深度当前是否为零。然而,这种类型的指令将无法指示处理是在嵌套组的内部事务中还是外部事务中。另一作法可为提供指令,此指令读取事务嵌套深度,并在软件可存取寄存器内放置值,以指示线程内的当前执行点的实际事务嵌套深度。虽然这可使得软件能够确定正处理的是内部事务或是外部事务,但这可需要进一步的指令以将事务嵌套深度与参考值比较,在基于此比较操作的输出执行条件分支之前,即除了基于事务嵌套深度设定寄存器的指令以外还将需要两个进一步的指令以触发条件分支。
[0033] 下面讨论的技术提供事务嵌套深度测试指令,在由指令解码器解码时此指令触发处理电路系统以将至少一个状态值设定为根据事务嵌套深度所选定的多个状态中的一者,其中多个状态包括在事务嵌套深度等于大于零的预定数字时所选定的第一状态,以及在事务嵌套深度大于或小于此预定数字时所选定的至少一个另外的状态。指令解码器响应于单一事务嵌套深度测试指令接续单一条件分支指令,支持包括实现指令解码器的至少一种类型的条件分支指令的指令集架构(ISA),以控制处理电路系统根据事务嵌套深度设定至少一个状态值,并对于至少一个状态值位于第一状态中而执行条件分支。
[0034] 因此,事务深度是否等于大于零的预定数字,可透过单一事务嵌套深度测试指令与单一条件分支指令来求出,这通过减少了用于控制对嵌套深度的条件性操作的性能的指令数量而改良了性能。这可有用于(例如)求出当前事务是嵌套组的内部事务或外部事务。
[0035] 可对于为2或更大的预定数字提供一些版本的事物嵌套深度测试指令。这可提供较快的方式以确定特定嵌套深度当前是否生效。
[0036] 然而在许多情况中,特别有用的是为1的预定数字。因此,事务嵌套深度指令可在事务嵌套深度为1时设定至少一个状态值为第一状态,并在事务嵌套深度为0(或2或更多)时设定至少一个状态值为至少一个其他状态。这可特别有用,因为若在外部事务中一些操作可被需要,而若在内部事务中(或根本不在事务中)一些操作可不被需要。
[0037] 一些形式的事务嵌套深度指令对于至少一个状态值可产生两个交替状态中的一者:第一状态,使用在事务嵌套深度等于预定数字时;以及第二状态,使用在事务嵌套深度大于或小于预定数字时(在此情况中至少一个其他状态可仅包括第二状态)。这将使得测试系统是否当前位于特定水平的嵌套深度(例如在预定数字为1时,处理程序当前是否在外部事务中)。
[0038] 然而实际上,可有用的是分辨三或更多种不同的情况,使得至少一个状态值被设为下列中的一者:第一状态,在事务嵌套深度等于预定数字时;第二状态,在事务嵌套深度小于预定数字时;以及第三状态,在事务嵌套深度大于预定数字时。这实现了随后分辨三个感兴趣的情况的条件式操作(例如在预定数字是1时,各别分辨是否根本不在事务中、在内部事务中与在外部事务中)。
[0039] 由指令解码器支持的ISA可包括一种或更多种类型的条件分支指令,这些指令(协同式地)使得指令解码器能够:响应于单一事务嵌套深度测试指令接续单一条件分支指令,控制处理电路系统以根据事务嵌套深度设定至少一个状态值,并且对位于多个状态中的目标状态中的至少一个状态值执行条件分支,而不论目标状态是第一状态、第二状态还是第三状态。通过此作法,在预定数字为1时,对于处理程序是否位于事务中(第二状态)、处理程序是否位于外部事务中(第一状态)以及处理程序是否位于内部事务中(第三状态)的所有三个问题,可全部由单一事务嵌套深度测试指令与单一条件分支指令来求出。
[0040] 存在可于其中实施事务嵌套深度测试指令的数种方法。
[0041] 在一个示例中,设备可具有存储至少一个条件状态值的条件状态存储元件,条件状态值指示先前执行的指令的处理结果的至少一个性质。响应于由指令解码器解码事务嵌套深度测试指令,处理电路系统可设定至少一个条件状态值以对应于将事务嵌套深度与预定数字比较的结果。
[0042] 条件状态存储元件可由条件状态相关类型条件分支指令使用,以根据条件状态存储元件中存储的至少一个状态值是否满足由条件分支指令指定的测试条件,来选择是否要转移到分支目标地址。例如,至少一个条件状态值可包括条件代码值,条件代码值被响应于处理逻辑执行的一些类型的程序指令、根据结果的一些性质来设定。例如,至少一个条件状态值可包括第一标记、第二标记、第三标记、及或第四标记,第一标记指示程序指令的结果是否为零,第二标记指示结果是否为负,第三期标指示是否从处理结果的最高有效位产生进位(因为结果将不能容纳在所提供的位数中),第四标记指示在二进制补码算术运算中是否存在从正值到负值的回绕(wrap around)。将理解到,也可使用条件标记来呈现结果的其他性质。条件分支指令可指定条件代码,条件代码代表条件代码要满足测试条件所必须符合的特定准则组。
[0043] 因此在一些示例中,事务嵌套深度测试指令可写入由其他指令使用的相同条件状态标记,且条件状态标记可使用指定测试条件的通用条件状态相关条件分支指令来测试,而测试条件是根据要触发分支的特定事务嵌套深度来选定的。这实现了码区段的处理,这些码区段需要条件式地执行操作,根据处理程序当前是否位于事务中或是位于外部或内部事务中,以更有效率地执行。
[0044] 设定至少一个条件状态值可不为事务嵌套深度测试指令的唯一结果。例如在一些变体中,除了设定至少一个条件状态值以外,事务嵌套深度测试指令的解码,也可触发处理电路系统写入事务嵌套深度值,事务嵌套深度值向通用寄存器呈现事务嵌套深度以存储用于指令的运算符。通用寄存器可由事务嵌套深度测试指令的编码来指定。因此,需要对于精确事务嵌套深度的知识的更复杂的操作(包括分辨不同水平的内部事务),随后可测试写入通用寄存器的事务嵌套深度值,以执行进一步的操作。
[0045] 在另一示例中,事务嵌套深度测试指令可将至少一个状态值写入事务嵌套深度测试指令所指定的通用寄存器。
[0046] 例如,写入通用寄存器的至少一个状态值可具有下列中的一者:第一编码,其中所有位等于0;第二编码,其中第一预定位等于1且第二预定位等于0;以及第三编码,其中第一预定位等于0且第二预定位等于1。第一状态可由这三个编码的任一种来代表。若至少一个其他状态仅包括代表事务嵌套深度大于或小于预定数字的第二状态,则第二状态可对应于未用于第一状态的其他两个编码中的任一者。在至少一个其他状态包括分别代表事务嵌套深度小于或大于预定数字的个别第二与第三状态的实施方式中,则第二状态与第三状态可使用未用于第一状态的其他两个编码中的任一者(无论哪种方式皆可)。
[0047] 在这种编码下,可使用不同类型的条件分支指令,以确定至少一个状态值是否具有第一、第二与第三编码中的一者(且编程器或编译程序根据所使用的状态与编码之间的映像、以及哪种特定状态为感兴趣的目标状态,来选定适当类型的条件分支指令)。
[0048] 例如,ISA可包括指定目标寄存器的与零比较类型的条件分支指令。响应于与零比较类型的条件分支指令的解码,处理电路系统可对目标寄存器的等于0的所有位执行条件分支。因此,这实现了测试较早事务嵌套深度测试指令是否设定至少一个状态值为上文讨论的第一编码,仅使用接续单一事务嵌套深度测试指令的单一条件分支指令。
[0049] ISA可包括位测试类型的条件分支指令,此指令指定目标寄存器的预定位。响应于与位测试类型的条件分支指令的解码,处理电路系统可对目标寄存器的等于1的预定位执行条件分支,或对目标寄存器的等于0的预定位执行条件分支。在一些实施方式中,条件分支指令的非零位测试与零位测试变体,可被提供在ISA中,以分别实现预定位是1或0的测试。位测试类型的条件分支指令,可用于测试较早事务嵌套深度测试指令是否设定至少一个状态值为上文讨论的第二或第三编码,使用接续单一事务嵌套深度测试指令的单一条件分支指令。
[0050] 事务内存支持电路系统可包括数个资源,以支持使用事务内存机制执行事务。例如,事务内存支持电路系统可包括回复状态存储电路系统,以存储响应于事务开始指令而捕获的事务回复状态以在中止事务时回复。在一些情况中,外部事务的事务开始指令可触发对于事务回复状态的捕获,且对于内部事务的事务回复状态的捕获可被抑制(当遭遇事务开始指令时在事务嵌套深度大于零时)。
[0051] 事务内存支持电路系统也可包括推测性结果存储电路系统,以存储对于至少一个线程的至少一个事务的至少一些推测性地执行的指令的结果。在一些情况中,仅有一些类型的指令可将结果存储到推测性结果存储电路系统,例如,用于写入内存的存储指令可使它们要存储的数据被推测性地保持在推测性结果存储器中,直到事务可被提交为止,而操作寄存器的通用算数指令可单纯写入这些寄存器,由于回复状态在往后可允许这些结果被舍弃,在状态被回转到先前的执行点时。
[0052] 事务内存支持电路系统也可具有冲突检测电路系统,以检测在第一线程事务内对于给定地址的数据存取,以及另一线程对于相同地址的数据存取之间的冲突。响应于检测到冲突,冲突检测电路系统可触发中止事件。对于中止事件的其他理由,可包括在事务处理期间内发生的中断或例外(exceptions)、事务内存支持电路系统内的存储器中容量不足以容纳更多事务推测性结果、或所遭遇的事务中不允许存取的一些指令。事务内存支持电路系统也可具有地址追踪电路系统,以追踪事务内指令所存取的地址,并且冲突检测电路系统可使用所追踪的地址来识别与其他线程的冲突。
[0053] 设备可具有事务嵌套深度存储元件,以存储代表事务嵌套深度的事务嵌套深度值。例如,可提供内部寄存器。存储事务嵌套深度值的寄存器不需为软件可存取式,因此事务嵌套深度测试指令可被提供以将事务嵌套深度暴露至软件架构。
[0054] 在一些情况中,所存储的事务嵌套深度值可恰好对应于当前事务嵌套深度。例如,可维持计数器,计数器开始于零且在事务开始指令执行时增量、在事务结束指令执行时减量、并在中止事务执行时重置为零。然而,也可存在其他呈现事务深度的方式。例如,若计数器开始于除了零以外的值,则即使在处理程序当前不在事务内时事务嵌套深度可为零,所存储的事务深度值仍可为非零(例如在所存储的事务深度值与实际事务深度之间可存在偏差)。
[0055] 因此,对于其中事务嵌套深度测试指令设定条件状态存储元件以对应于事务嵌套深度与预定数字的比较结果的实施方式,不需要实际比较所存储的事务嵌套深度值与大于零的预定数字。若名义上的事务嵌套深度值(指示所执行的给定线程事务开始指令的实际数字,对于此线程而言对应的事务保持为未中止且未提交)与预定数字比较,则任何比较操作可被执行,产生等于本将产生的结果的结果。例如,若所存储的事务嵌套深度值事实上偏差自实际事务嵌套深度,则比较实际上可比较所存储值与偏差自预定数字对应量的数字。再者,在一些情况中,若事务嵌套深度被由一些方式编码于所存储值内,则同样的,比较可为更复杂的操作,以解码事务嵌套深度码并识别要被写入状态存储元件的对应状态值(根据事务嵌套深度对应于零、一或更多)。因此,可存在数种方式以达成相同的结果。从指令集架构的观点看来,结果相同于明确指示事务嵌套深度的值被与大于零的预定数字比较时的情况,但与此结果是否实际以此方式产生无关。
[0056] 对应的计算机程序可控制主控数据处理设备,以提供指令执行环境以让指令执行,其中如上文所讨论的,处理程序逻辑支持事务嵌套深度测试指令与ISA。这种计算机程序可允许通用主控数据处理设备(自身不具有事务内存支持电路或用于事务嵌套深度测试指令的指令解码器支持)受益自事务内存功能性与改良的嵌套深度测试,即使并没有提供这些特征的实际硬件。相反的,计算机程序提供模拟此功能性的程序逻辑(诸如指令集或数据结构),使得通用主控数据处理设备能够执行代码,代码意为在提供这种硬件功能的设备上执行。
[0057] 图1示意性地示出具有硬件事务内存(HTM)支持的数据处理设备2的示例。设备具有处理逻辑4,以执行指令来施行数据处理操作。例如,处理逻辑4可包括执行单元以执行各种类型的处理操作,诸如:算数逻辑单元(ALU)以执行算数或逻辑操作,诸如加法、乘法、及(AND)、或(OR)等等;浮点运算单元,用于对浮点运算符执行操作;或向量处理单元,用于对包括多个数据元件的向量运算符执行向量处理。提供架构性寄存器6组,用于存储处理逻辑4执行的指令的运算符,以及用于存储指令执行的结果。架构性寄存器6包括用于存储至少一个状态值(例如条件标记)的状态寄存器7,指示先前执行的指令的结果的性质。指令解码器8解码从指令缓存10取得的指令,以产生控制信号以控制处理逻辑4或数据处理设备2的其他元件,以执行相关的操作。还提供加载/存储单元12,以执行加载操作(响应于指令解码器8解码的加载指令)以从数据缓存14或主内存16将数据值加载架构性寄存器6,并执行存储操作(响应于指令解码器8解码的存储指令)以从架构性寄存器6将数据值存储至数据缓存14或内存16。
[0058] 设备2也具有事务内存支持电路系统20,事务内存支持电路系统20提供各种资源以支持硬件事务内存(HTM)。事务内存支持电路系统20中的HTM资源,可例如包括:用于存储事务推测性结果的推测性结果存储器22;用于追踪事务存取地址的地址追踪电路系统24;用于检测事务的数据存取与其他线程的数据存取之间的冲突,以在检测到冲突时可中止事务的冲突检测电路系统26;用于存储事务开始时来自架构性寄存器6的架构性状态数据的快照(snapshot),以在中止事务时可回复至此状态以覆写事务推测性结果的回复状态存储电路系统28。HTM资源20也包括存储嵌套深度值的嵌套深度寄存器30,嵌套深度值代表正在处理逻辑4内运作的任何事务的当前事务嵌套深度。
[0059] 图2示出使用事务内存支持电路系统20与处理逻辑4,执行给定线程内的事务的示例。事务为由事务开始指令(tstart)与事物结束指令(tcommit)包围的程序代码区段。如图2所示,响应于事务开始指令,架构性寄存器6中的当前架构性状态被截取并被存储在回复状态存储电路系统28中。在tstart指令之后,处理逻辑4开始执行随后指令的推测性执行,且随着这些指令被执行,这些指令所存取的地址被由地址追踪电路系统24追踪,且冲突检测电路系统26检测所追踪地址与响应于其他线程而使用加载/存储单元12进行的存取的地址之间的冲突。事务内指令的至少一些推测性结果,被存储在推测性结果存储电路系统22内。例如,响应于存储指令STR而存储在缓存或内存中的值,在事物保持进行中时可被固持在推测性结果存储器22中。若到达事务结束指令(tcommit)而没有发生中止事件,则推测性结果响应于事务结束指令而被提交。在提交事务时,存储在对此线程的推测性结果存储器
22中的任何结果,可被写入数据缓存14或内存16,且回复状态28可被舍弃或被准许覆写,由于不再需要将结构性状态回转到遭遇事务开始指令之前的状态。
[0060] 另一方面,若发生了中止事件(例如在冲突检测电路系统26在另一线程存取已由事务存取的地址时检测到冲突时),则触发事务中止,且来自回复状态存储器28的回复状态被回复至架构性寄存器6。中止事件的其他成因,可例如包括:执行不允许在事务内执行的指令;用于处理推测性结果或给定事务所需的地址的推测性结果存储器22或地址追踪电路系统24内的资源不足;或在事务期间接收到中断。
[0061] 图3示出嵌套事务组的示例。一开始,在对任何先前事务的处理码已被提交或中止时(此后尚未执行随后的开始指令),嵌套深度值30代表的嵌套深度为0。响应于第一事务开始指令,当前架构性状态被捕获并被存储至回复状态存储器28,且嵌套深度被增量至1。随后的指令被在嵌套指令集的此外部事务内处理。若在到达外部事务的事务结束指令之前遭遇另一事务开始指令,则不捕获回复状态,以节省回复状态存储器28内的资源,但将嵌套深度寄存器30增量以指示嵌套深度2。类似的,随后的事务开始指令可对嵌套深度触发进一步的增量,以给出嵌套深度值3,如图3图示。对应于在嵌套深度为非零时(且对此事务内的指令将具有2或更多的嵌套深度)执行的事务开始指令的事务被视为内部事务,相对于外部事务,对于外部事务在嵌套深度为0时事务开始指令被执行,且在事务内的指令将对应于嵌套深度1。
[0062] 若中止事件发生在接续外部事务的事务开始指令后的任何时候,则存储在回复状态存储器28中的状态被回复至架构性寄存器6,这表示处理程序被有效地回转到外部事务的原始事务开始指令。因此,可不能够回复对应于内部事务的事务开始指令的状态。响应于中止事件,嵌套深度被重置为0。
[0063] 在存在任何中止事件时,内部事务的事务结束指令被忽略,且在到达对应于外部事务的事务结束指令时,自从外部事务事务开始指令以来所执行的处理程序的任何推测性结果被提交。换言之,在事务结束指令被执行且嵌套深度为2或更多时,不会发生结果的提交。在事务结束指令被在嵌套深度为1时执行时,结果被提交。响应于每一事务结束指令,嵌套深度被减量,且在嵌套深度返回至0时,这表示所有突出的事务皆已完成,且处理程序现在位于任何事务之外。处理事务的此作法,表示仅必须要将一组推测性结果存储资源地址追踪资源或回复状态存储资源,分配至特定线程,不论嵌套事务数量为何,这节省了更多资源以让其他线程执行事务。
[0064] 然而,有时候软件可需要知道当前处理程序是否位于事务内(以及当前处理程序是在内部事务内或外部事务内)。
[0065] 图4示出用于解出这些问题的事务嵌套深度测试(ttest)指令的第一示例。响应于事务深度测试指令,指令解码器8控制处理逻辑4以执行操作,这等于将当前事务嵌套深度与大于零的预定值比较的结果。在此示例中预定数字为1。响应于比较,状态寄存器7中的条件标记被设定为根据比较结果的值。可选的,事务深度测试指令的一些变体,也可指定额外的通用寄存器Rx,且若是如此,则代表当前事务嵌套深度的嵌套深度值可被写入所指定的寄存器。
[0066] 图5示出根据比较以设定状态寄存器7中的状态标记目标示例。状态标记包括:
[0067] ·负标记N,在指令结果为正时被设为0,且在结果为负时被设为1;
[0068] ·零标记Z,在结果为零时被设为1,且在结果为非零时被设为0;
[0069] ·进位标记C,在指令值不匹配可用位数且因此产生最高有效位的进位时被设为1,且在其他情况下被设为0;以及
[0070] ·进位标记V,在从使用二补码二元值可代表的最正值,进位至二补码格式中可代表的最负值时(反之亦然),进位标记V被设为1。
[0071] 如图5的表格中所示,在嵌套深度为0时(不在事务中),响应于ttest指令,状态标记被设为第一状态,其中Z与C标记被设为0,且N与V标记可为任意值(0或1)。在事务嵌套深度为1(在外部事务中)时,状态标记被设为第二状态,其中Z与C标记两者被设为1,且N与V标记同样地可为任意值。在事务嵌套深度大于1(在内部事务内)时,状态标记被设为第三状态,其中Z标记被设为0,C标记被设为1,且N与V标记同样地可为任意值。这使得随后的条件分支指令或其他条件指令能够基于标记状态以执行条件操作。条件指令可指定条件代码,条件代码识别要施加到状态寄存器7中标记目标特定测试条件。下面的表格代表不同的条件代码,以及为了满足此测试条件而要满足的对应标记值:
[0072]
[0073]
[0074] 通过此作法,可使用一系列的两个指令来回答下列问题中的任一者,如下:
[0075]
[0076] 图4示出其中比较器50比较嵌套深度与预定值1的示例。可通过从嵌套深度减去1并基于结果设定标记,来达成等效结果。再者,在一些情况中,嵌套深度值可不被呈现在完全对应于图3指示的实际嵌套深度的表格中,且在此情况中,处理逻辑4可包括一些电路系统以解译使用在嵌套深度寄存器30中的嵌套深度的代表,并产生等效结果,如同嵌套深度的明确指示与1比较一样。再者,在一些变体中,相对于与1比较,事务测试指令可与2或更多进行比较。
[0077] 图6示出事务嵌套深度测试指令的第二示例,在此示例中此指令指定通用寄存器Rx,至少一个状态值应被与根据嵌套深度寄存器30指示的当前事务嵌套深度选择的状态写入通用寄存器Rx。如图6表格所示,所指定寄存器Rx的两个位可被设为编码0b00、0b01或0b10,根据嵌套深度是0、1或大于1。所指定的寄存器的所有其他位可被设为0。尽管图6图示在嵌套深度0、1与大于1以及3个编码之间的一个特定映像,其他实施方式可切换所使用的映射(例如,另一实施方式可使用0b00代表在嵌套深度为1或大于1的情况中的一者)。然而,图6表格中所示的作法可更为直觉,由于位对对应于嵌套深度的二元值(饱和于2,使得不论嵌套深度是2或更多,编码为0b10)。
[0078] 如图6的底部所示的,可由实施在指令解码器8和处理电路系统4中的ISA,支持不同类型的条件分支指令。这些形式的条件分支指令,使得测试嵌套深度是否符合特定目标状态,而仅有单一ttest指令与单一条件分支指令,不论感兴趣的目标状态是图6表格所示的三种状态中的任一者。将理解到,一个或更多个中介指令(条件分支指令独立于这些指令,且这些指令不覆写ttest指令结果)可被执行在ttest指令与条件分支指令之间——在此情况中由于中介指令不影响事务嵌套深度比较与分支,状态值与条件分支的设定仍有效地由两个指令控制。
[0079] 若感兴趣的目标状态对应于0b00(例如在图6示例中的嵌套深度0),则可使用与零比较类型的条件分支指令(CBZ),这指定来源寄存器Rn与指示分支目标地址的卷标。响应于CBZ指令,解码器8控制处理逻辑4以分支到卷标所指示的分支目标地址,若来源寄存器Rn中的所有位为0。因此,通过执行CBZ指令指示先前ttest指令的目的寄存器Rx为来源寄存器Rx,这实现了根据0b00状态的条件分支仅由两个指令来进行。
[0080] 若感兴趣的目标状态对应于0b01或0b10,则可使用位测试类型的条件分支指令(TBZ或TBNZ),这种指令将来源寄存器Rt、识别来源寄存器内的特定位位置的立即值#imm、以及指示分支目标地址的卷标指定为运算符。在其他示例中,位位置可由另一来源寄存器指示,而非立即值。响应于TBZ指令,解码器8控制处理逻辑4以分支到卷标所指示的分支目标地址,若所指定位位置处的位等于0。响应于TBNZ指令,解码器8控制处理逻辑4以分支到卷标所指示的分支目标地址,若所指定位位置处的位等于1。提供两种形式的TBZ/TBNZ指令不是必要的,由于任一指令可用于测试0b01与0b10状态两者,通过改变所指定(通过#imm)要测试的位位置的位位置。同样地,通过执行TBZ或TBNZ指令(来源寄存器Rt对应于先前ttest指令的目的寄存器Rx),这实现了根据0b01或0b10状态的条件分支由两个指令来进行。
[0081] 图7示出用于控制事务深度测试指令的执行的流程图。在步骤100,执行单一事务嵌套深度测试指令。响应于指令解码器8响应于事务嵌套深度测试指令所产生的控制信号,在步骤102处理电路系统根据事务嵌套深度设定至少一个状态值为多个状态中的一者,包括至少第一状态(在事务嵌套深度等于预定值(例如1)时)与至少一另一状态(在事务嵌套深度大于或小于预定值时)。在步骤104,执行单一条件分支指令,根据响应于单一ttest指令所设定的至少一个状态值。
[0082] 图8示出可使用的模拟器实施方式。尽管先前描述的具体实施方式对于用于操作支持相关技术的特定处理程序硬件的设备和方法来实施本发明,但也可能根据本文所说明的实施例通过使用计算机程序来提供指令执行环境。这种计算机程序时常被称为模拟器,由于它们提供硬件结构的基于软件的实施方式。各种模拟器计算机程序包括模拟器、虚拟机、模型、和二元转译器(包括动态二元转译器)。通常来说,模拟器实施方式可执行在主控处理器230上,可选地执行主控操作系统220,支持模拟器程序210。在一些布置中,硬件与所提供的指令执行环境和/或提供在相同主控处理器上的多个不同的指令执行环境之间,可存在多层模拟。历史上,需要高能的处理器以提供在合理速度下执行的模拟器实施方式,但这种作法在某些情况下可为合理的,诸如在为了兼容性或再利用的理由,想要执行专属于另一处理器的码时。例如,模拟器实施方式可由主控处理器硬件不支持的额外功能性提供指令执行环境,或提供通常相关联于不同硬件架构的指令执行环境。对于模拟的概述可见于“Some Efficient Architecture Simulation Techniques”,Robert Bedichek,Winter 1990 USENIX Conference,第53-63页。
[0083] 就先前已参考特定硬件构造或特征描述实施例而言,在模拟实施例中,可通过合适的软件构造或特征来提供等效功能。例如,特定电路系统可在模拟实施例中被实现为计算机程序逻辑。类似地,诸如寄存器或缓存的内存硬件,可在模拟实施例中被实现为软件数据结构。在其中在前述实施例中参照的硬件元件的一者或更多者存在主控硬件(例如主控处理器230)上的设置中,一些模拟实施例可在适当时利用主控硬件。
[0084] 模拟器程序210可被存储在计算机可读取存储介质上(可为非瞬时性介质),并提供程序接口(指令执行环境)至目标码200(可包括应用程序、操作系统与管理器),这相同于模拟程序210所模型化的硬件架构的应用程序编程接口。因此,目标码200的程序指令(包括前述事务嵌套深度测试指令)可被使用模拟器程序210从指令执行环境内执行,因此事实上不具有前述设备2的硬件特征的主控计算机230可模拟这些特征。
[0085] 其他的示例布置在下列条款中阐述:
[0086] (1)一种设备,包括:
[0087] 指令解码器,指令解码器用于解码指令;
[0088] 处理电路系统,处理电路系统用于响应于指令解码器解码的指令而执行数据处理,处理电路系统包括事务内存支持电路系统以支持处理电路系统的数据处理线程内的事务的执行,事务包括在事务开始指令与事务结束指令之间推测性地执行的线程的指令,处理电路系统被配置为防止事务的推测性地执行的指令的结果的提交,直到到达事务结束指令为止,且处理电路系统被配置为在于到达事务结束指令之前发生中止事件时中止事务的处理程序;以及
[0089] 状态存储元件,状态存储元件存储至少一个状态值,状态值指示先前执行的指令的处理结果的至少一个性质;
[0090] 其中响应于由指令解码器解码事务嵌套深度测试指令,处理电路系统被配置为设定至少一个条件状态值以对应于将事务嵌套深度与大于零的预定数字比较的结果,其中该事务嵌套深度指示给定线程的已执行的事务开始指令(而对应事务保持为未中止且未提交)的数量。
[0091] (2)一种数据处理方法,包括以下步骤:
[0092] 响应于经解码的指令而执行数据处理,此系使用包括事务内存支持电路系统的处理电路系统,以支持处理电路系统的数据处理线程内的事务的执行,事务包括在事务开始指令与事务结束指令之间推测性地执行的线程的指令,处理电路系统被配置为防止事务的推测性地执行的指令的结果的提交,直到到达事务结束指令为止,且在于到达事务结束指令之前发生中止事件时中止事务的处理;
[0093] 存储至少一个状态值,状态值指示先前执行的指令的处理结果的至少一个性质;以及
[0094] 响应于事务嵌套深度测试指令的解码,设定至少一个条件状态值以对应于将事务嵌套深度与大于零的预定数字比较的结果,其中事务嵌套深度指示给定线程的已执行的事务开始指令(而对应事务保持为未中止且未提交)的数量。
[0095] (3)一种计算机程序,用于控制主控数据处理设备以提供指令执行环境以执行指令,包括:
[0096] 处理程序逻辑,用于支持执行在数据处理线程内的事务,事务包括在事务开始指令与事务结束指令之间推测性地执行的线程指令,而处理程序逻辑被配置为防止事务的推测性地执行的指令的结果的提交,直到到达事务结束指令为止,并可于在到达事务结束指令之前发生中止事件时中止事务的处理;以及
[0097] 状态数据结构,状态数据结构存储至少一个状态值,状态值指示先前执行的指令的处理结果的至少一个性质;
[0098] 其中响应于事务嵌套深度测试指令,处理程序逻辑被配置为设定该至少一个状态值以对应于将事务嵌套深度与大于零的预定数字比较的结果,其中该事务嵌套深度指示给定线程的已执行的事务开始指令(而对应事务保持为未中止且未提交)的数量。
[0099] (4)一种存储介质,存储条款(3)所述的计算机程序。
[0100] 在本申请中,用词“被配置为……”用于表示设备元件具有能够施行所限定的操作的配置。在此背景内容中,“配置”表示硬件或软件的交互链接的设置或方式。例如,设备可具有提供所限定的操作的专属硬件,或可被编程以执行功能的处理器或其他处理装置。“被配置为”不隐含设备元件需要以任何方式改变以提供所限定的操作。
[0101] 虽然本文已参照附图详细描述了本发明的说明性实施例,但应了解到本发明并不限于这些精确的实施例,且在本发明所属技术领域中具有通常知识者将可进行各种改变与修改,而不脱离如所附权利要求所限定的本发明的精神与范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈