CN101493792B - 诊断上下文结构和比较 - Google Patents

诊断上下文结构和比较 Download PDF

Info

Publication number
CN101493792B
CN101493792B CN200910006113.1A CN200910006113A CN101493792B CN 101493792 B CN101493792 B CN 101493792B CN 200910006113 A CN200910006113 A CN 200910006113A CN 101493792 B CN101493792 B CN 101493792B
Authority
CN
China
Prior art keywords
value
trigger point
address
diagnostic
trigger
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200910006113.1A
Other languages
English (en)
Other versions
CN101493792A (zh
Inventor
M·J·威廉斯
R·R·格雷森斯维特
J·M·霍利
A·B·斯维尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN101493792A publication Critical patent/CN101493792A/zh
Application granted granted Critical
Publication of CN101493792B publication Critical patent/CN101493792B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/27Built-in tests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明涉及诊断上下文结构和比较。数据处理***1具有可编程来充当多个虚拟机中的一个虚拟机的处理器核2,每个虚拟机由虚拟机标识符识别,每个虚拟机在多个上下文中的一个上下文中运行,每个上下文由上下文标识符识别,每个上下文执行程序指令序列,每个程序指令具有一个或多个相关的存储器地址。数据处理***具有用于对处理器核执行诊断操作的诊断电路10。提供了诊断控制电路12,其响应于虚拟机标识符、上下文标识符和所述一个或多个相关的存储器地址中的至少一个地址的当前值来触发诊断电路10以执行诊断操作。

Description

诊断上下文结构和比较
技术领域
本发明涉及数据处理***的领域。更具体地,本发明涉及提供诊断机制用于促进程序指令序列的执行的分析的数据处理***。
背景技术
在数据处理设备中,提供用于执行诊断操作的机制是有用的,该诊断机制例如可在数据处理***的开发期间被使用。可提供的一种机制是设置触发点(trigger point),当检测到预定的事件时,该触发点使诊断操作被执行。例如,可设立断点(breakpoint),以便当从存储器中的预定地址取出程序指令时触发诊断操作。可选地或附加地,可设立观察点(watchpoint),以当程序指令访问存储器中的预定地址时,触发诊断操作。
在数据处理设备中,由处理器执行的程序指令的序列一般存储在存储器中。在一些***中,处理器能够在被称为上下文(context)的许多状态下工作,每个上下文包括依次执行的程序指令序列。这样的***的例子是由Cambridge的ARM有限公司生产的处理器,其中上下文由上下文标识符识别,该标识符的8位用作识别多达256个进程中的一个进程的应用空间标识符(ASID)标记。在使用虚拟寻址的***中,不同的上下文将共享虚拟地址空间,且ASID提供区分在不同上下文内的相同虚拟地址处的数据的方法。
已知的是提供上下文感知(context-aware)触发点,该触发点以响应于处理器的当前上下文的上下文标识符的方式来触发执行诊断操作。这些上下文感知触发点可链接到上面描述的地址感知(address-aware)触发点,使得只有当预定地址被访问且预定上下文与***的当前状态匹配时才触发诊断操作。
处理器可被编程为充当虚拟机,使得它复制自己或另一机器的特征。
发明内容
从一方面看,本发明提供了一种用于处理数据的设备,其包括:
处理电路,其配置成执行处理操作并访问存储器,所述处理电路是可编程的以充当多个虚拟机中的一个,每个虚拟机由虚拟机标识符识别,每个虚拟机在多个上下文中的一个上下文中运行,每个上下文由上下文标识符识别,每个上下文执行程序指令序列,每个程序指令具有一个或多个相关的存储器地址;
诊断电路,其耦合到所述处理电路以对其执行诊断操作;以及
诊断控制电路,其耦合到所述处理电路和所述诊断电路,并响应于所述虚拟机标识符、所述上下文标识符和所述一个或多个相关的存储器地址中的至少一个地址的当前值,以触发所述诊断电路来执行所述诊断操作。
在具有虚拟机能力的数据处理设备中,每个虚拟机可在多个上下文中运行,每个上下文可执行与一个或多个存储器地址相关的程序指令序列。本发明认识到,一个虚拟机的上下文标识符和程序指令地址可能不适当地与另一虚拟机的上下文标识符和程序指令地址重叠,因此需要虚拟机感知的调试机制。例如当与当前程序指令相关的存储器地址和上下文标识符恰好与已设立触发点的另一虚拟机所使用的存储器地址和上下文标识符相同时,通过响应于虚拟机标识符、上下文标识符和至少一个存储器地址的当前值来触发诊断电路,确保诊断操作不会被错误地触发。这允许更有效地分析虚拟机内的进程。
应认识到,诊断电路可执行很多不同种类的诊断操作。然而,特别有用的操作包括触发处理电路以进入调试模式,打开/关闭跟踪模块,将跟踪数据输出到内部或外部***件以及触发软件异常(exception)。这些操作帮助分析由数据处理设备执行的程序指令序列。
所述一个或多个相关的存储器地址中的至少一个地址可以是在存储器中储存程序指令的位置的地址。以这种方式,当执行来自预定地址的程序指令时,可触发诊断电路来执行诊断操作。
进一步地,所述一个或多个相关的存储器地址中的至少一个地址可以是在存储器中由程序指令访问的位置的地址。以这种方式,例如当发生对预定存储器地址的数据读取时和/或当发生对预定存储器地址的数据写入时,可触发诊断电路来执行诊断操作。
本领域的技术人员应认识到,所述一个或多个相关的存储器地址可为物理地址或虚拟地址。
此外,诊断控制电路也可具有储存触发点定义值的多个可编程寄存器,且所述诊断控制电路响应于所述多个触发点定义值与所述虚拟机标识符、所述上下文标识符和所述一个或多个相关的存储器地址中的所述至少一个地址的当前值的比较,触发所述诊断电路来执行所述诊断操作。
触发点定义值每个都表示断点或观察点,其可由***的用户编程,以定义触发执行诊断操作的预定事件。这提供了更灵活和有效的诊断机制。通过将虚拟机标识符、上下文标识符和存储器地址的值与触发点定义值进行比较,处理电路的当前状态确定是否触发诊断操作。
从另一方面看,本发明提供了用于处理数据的设备,其包括:
处理装置,其用于执行处理操作并访问存储器,所述处理装置可编程以充当多个虚拟机中的一个,每个虚拟机由虚拟机标识符识别,每个虚拟机在多个上下文中的一个上下文中运行,每个上下文由上下文标识符识别,每个上下文执行程序指令序列,每个程序指令具有一个或多个相关的存储器地址;
诊断装置,其耦合到所述处理装置以对其执行诊断操作;以及
诊断控制装置,其耦合到所述处理装置和所述诊断装置并响应于所述虚拟机标识符、所述上下文标识符和所述一个或多个相关的存储器地址中的至少一个地址的当前值,以触发所述诊断装置来执行所述诊断操作。
从又一方面看,本发明提供了用于处理数据的方法,其包括以下步骤:
使用处理电路执行处理操作并访问存储器,所述处理电路可编程以充当多个虚拟机中的一个虚拟机,每个虚拟机由虚拟机标识符识别,每个虚拟机在多个上下文中的一个上下文中运行,每个上下文由上下文标识符识别,每个上下文执行程序指令序列,每个程序指令具有一个或多个相关的存储器地址;
使用耦合到所述处理电路的诊断电路来执行诊断操作;以及
响应于所述虚拟机标识符、所述上下文标识符和所述一个或多个相关的存储器地址中的至少一个地址的当前值,触发所述诊断电路来执行所述诊断操作。
在本发明的另一方面中,提供了用于处理数据的设备,其包括:
处理电路,其配置成执行处理操作并访问存储器,所述处理电路在多个状态的一个状态中工作,每个状态由多个状态标识符中的至少一个状态标识符识别;
诊断电路,其耦合到所述处理电路以对其执行诊断操作;
诊断控制电路,其耦合到所述处理电路以及所述诊断电路,并具有储存相应的触发点定义值的多个可编程寄存器,所述诊断控制电路响应于所述多个触发点定义值的第一子组中的每个值与状态表征值的当前值的比较,以便触发所述诊断电路来执行所述诊断操作,所述状态表征值由所述多个状态标识符中的至少一个状态标识符的至少一部分形成;以及
全局比较选择电路,其响应于可编程比较选择值,为触发点定义值的所述第一子组中的全部值选择所述多个状态标识符中的哪些部分形成所述状态表征值。
数据处理设备能够在多个状态下工作,每个状态由多个标识符识别。通过提供储存触发点定义值的多个可编程寄存器,有可能根据处理电路的状态触发诊断电路来执行诊断操作,所述触发点定义值与由状态表征值表征的***当前状态进行比较。状态表征值由所述多个状态标识符中的至少一个状态标识符的至少一部分形成。使用全局比较选择电路,用户可设定状态标识符的哪些部分形成状态表征值。这在为触发点设定触发条件中允许很高程度的灵活性。此外,本发明认识到,通常标识符的相同组合用于与每个触发点定义值进行比较,且不必为每个触发点定义值提供比较选择电路。因此,通过使用全局比较选择来实现电路开销的减少,全局比较选择为触发点定义值的第一子组中的全部值选择状态标识符的哪些组合用于形成状态表征值。
应认识到,诊断电路可执行很多不同种类的诊断操作。然而,特别有用的操作包括触发处理电路进入调试模式,打开/关闭跟踪模块,将跟踪数据输出到内部或外部***件以及触发软件异常。这些操作帮助分析由数据处理设备执行的程序指令序列。
进一步地,处理电路可编程以充当多个虚拟机中的一个虚拟机,每个虚拟机由虚拟机标识符识别,每个虚拟机在多个上下文中的一个上下文中运行,每个上下文由至少一个上下文标识符识别。
虚拟机允许处理器复制自己或另一数据处理设备的特征。例如,这允许处理器提供多个同类机器的假象(illusion)或模仿不同的处理器类型。每个虚拟机可在多个上下文中的一个上下文中运行,每个上下文允许实现不同的功能组。每个虚拟机和上下文可由其各自的标识符识别。
应认识到,所述多个状态标识符可包括描述处理设备的状态的任何值。然而,特别有用的状态标识符包括所述虚拟机标识符和所述至少一个上下文标识符,每个状态由所述虚拟机标识符和所述至少一个上下文标识符的组合识别。
通过使用所述虚拟机标识符和所述至少一个上下文标识符的组合来描述处理电路的状态,可设置触发点,该触发点比较触发点定义值与所述虚拟机标识符和所述至少一个上下文标识符中的至少一个标识符的至少一部分,使得用于触发诊断操作的条件依赖于处理电路的当前状态。
在一些实施例中,所述多个上下文中的每个上下文都由第一上下文标识符和第二上下文标识符中的至少其中之一识别。第二上下文标识符对每个上下文是唯一的。在已知的处理器中,上下文可由单一类型的上下文标识符识别,标识符的一部分也可用作应用空间标识符(ASID)。然而,ASID用于避免转换后援缓冲器(translation lookaside buffer,TLB)清洗(flushing),这会将ASID的尺寸限制为小于可能为每个进程容纳唯一值的尺寸。结果,一些操作***重复使用ASID,所以每个进程可能在进程的整个有效期内没有唯一的上下文标识符,而且硬件所响应的上下文标识符的至少一部分对每个进程可能不是唯一的。通过提供对每个上下文唯一的第二上下文标识符,这允许准确识别上下文。停止比较触发点定义值与第一上下文标识符是可能的。然而,通过允许上下文由第一和第二上下文标识符两者识别,处理设备能够后向兼容,以便它可执行为先前的处理器所写的遗留代码(legacy code),所述先前的处理器仅仅使用第一上下文标识符。
诊断控制电路还具有储存相应的触发点控制值的多个可编程控制寄存器,每个触发点控制值与所述触发点定义值中的一个值相关。通过给每个触发点控制值提供相关的可编程控制寄存器,用户可定义使用触发点控制值的方式,如下文中将进一步描述的。
在第一实施例中,全局比较选择电路选择由下列项之一形成的所述状态表征值:
所述第一上下文标识符的当前值的整体;或
所述第二上下文标识符的当前值的整体。
本发明认识到,用户不可能要求触发点定义值中的一些与第一上下文标识符进行比较而触发点定义值中的另外一些与第二上下文标识符进行比较。通常,用户希望使用第一上下文标识符,例如如果处理为较旧的处理器所写的遗留代码,或用户希望使用第二上下文标识符。因此,能够全局地设定应为每个触发点使用哪个上下文标识符是有利的。这通过设定可编程比较选择值的值来完成。
进一步地,诊断控制电路还具有储存相应的虚拟机触发点定义值的第二多个可编程寄存器,每个虚拟机触发点定义值与触发点定义值的所述第一子组中的一个值和所述触发点控制值中相应的一个值相关。
通过提供第二组可编程寄存器,每个可编程寄存器与触发点定义值的第一子组中的一个值相关,每个触发点可以是上下文感知和虚拟机感知的。因为虚拟机触发点定义值被提供在与储存触发点定义值的寄存器分离的寄存器中,响应于虚拟机标识符的整体和其中一个上下文标识符的整体来触发执行诊断操作是可能的。
对于每个虚拟机触发点定义值,所述诊断控制电路选择性地响应于所述虚拟机触发点定义值与所述虚拟机标识符的当前值的比较,以便触发所述诊断电路来执行所述诊断操作。
以这种方式,响应于触发点定义值与(从第一或第二上下文标识符中选择的)状态表征值的比较,且如果选择的话,响应于相关的虚拟机触发点定义值与虚拟机标识符的当前值的比较,可触发诊断操作。
对于每个虚拟机触发点定义值,所述诊断控制电路响应于与所述虚拟机触发点定义值相关的所述触发点控制值,以便选择所述诊断控制电路是否响应于所述虚拟机触发点定义值与所述虚拟机标识符的所述当前值的所述比较。因此,用户可对触发点控制值编程,以选择是否需要虚拟机触发点定义值与虚拟机标识符的当前值的比较。
在第二实施例中,所述全局比较选择电路选择所述状态表征值,所述状态表征值将由所述第一上下文标识符的当前值、所述第二上下文标识符的当前值、所述虚拟机标识符的当前值和掩蔽值(masking value)中的至少一个值的部分形成。
这允许减少电路开销,因为虚拟机标识符是否被选择用于比较也是被全局设定的。不需要用于储存虚拟机触发点定义值的寄存器。此外,通过允许掩蔽值形成状态表征值的一部分,使得状态表征值的一些位被掩蔽,这使得由一个或多个标识符形成状态表征值成为可能,即使所述一个或多个标识符的总长度小于状态表征值和触发点定义值的长度。
此外,可编程比较选择值具有多个字段,且每个字段指示从所述第一上下文标识的所述当前值、所述第二上下文标识的所述当前值、所述虚拟机标识符的所述当前值和所述掩蔽值中的哪个值来选择所述状态表征值的相应部分。
用户能够对可编程比较选择值的字段编程,使得状态表征值的每个部分由掩蔽值或所述多个状态标识符中的一个的部分构成。这允许很高程度的灵活性,使用户能够设定标识符的不同组合,用于与触发点定义值进行比较,以便触发要执行的诊断操作。
在本发明的一些实施例中,每个上下文执行程序指令序列,每个程序指令具有一个或多个相关的存储器地址。因此,每个上下文可具有相关的功能,通过执行与该上下文相关的程序指令序列可实现这些功能。
进一步地,诊断控制电路响应于所述多个触发点定义值的第二子组中每个值与所述一个或多个相关的存储器地址中的一个地址的比较,以便触发所述诊断电路来执行所述诊断操作。
尽管触发点定义值的第一子组与表征处理电路的当前状态的状态表征值进行比较,但是触发点值的第二子组与所述一个或多个相关的存储器地址中的一个地址进行比较。因此,当访问预定的存储器地址时,可触发诊断电路来执行诊断操作。
所述一个或多个相关的存储器地址中的一个地址可以是在存储器中储存程序指令的位置的地址。以这种方式,当执行来自预定存储器地址的程序指令时,可触发诊断电路来执行诊断操作。
进一步地,所述一个或多个相关的存储器地址中的一个地址可以是存储器中由程序指令访问的位置的地址。以这种方式,例如当发生对特定存储器地址的数据读取时和/或当发生对预定存储器地址的数据写入时,可触发诊断电路来执行诊断操作。
触发点定义值的所述第二子组中的至少一个可限定存储器地址的预定范围,所述诊断控制电路响应于所述一个或多个相关的存储器地址中的所述一个地址是否在存储器地址的所述预定范围内,以便触发所述诊断电路来执行所述诊断操作。
触发点定义值的所述第二子组中的至少一个值可包括指示所述预定地址范围的上限和下限的一对地址值是可能的。
可选地,触发点定义值的所述第二子组中的至少一个值可包括地址值和掩码,且所述诊断控制电路响应于比较所述地址值与被掩蔽的地址值的结果,所述被掩蔽的地址值通过使用所述掩码对所述一个或多个相关的存储器地址的所述一个地址执行按位(bitwise)掩蔽操作来获得。
触发点定义值的所述第二子组中的每个值可选择性地链接到触发点定义值的所述第一子组中的一个值,使得所述诊断控制电路响应于所述第一触发点定义值与所述状态表征值的所述比较以及所述第二触发点定义值与所述一个或多个相关的存储器地址中的所述一个地址的所述比较,以便触发所述诊断电路来执行所述诊断操作。
以这种方式,当访问存储器中的预定地址时可触发诊断操作,使得预定地址与触发点定义值的所述第二子组中的一个值匹配,且状态表征值与触发点定义值的所述第一子组中的一个值匹配,触发点定义值的所述第一子组中的所述一个值链接到所述第二子组中的触发点定义值。因此,相关的地址、上下文标识符和虚拟机标识符的任何组合可用于触发诊断电路来执行诊断操作。
在本发明的另一特征中,触发点定义值的所述第二子组中的多于一个的值可链接到触发点定义值的所述第一子组中的一个值。
结果是,不需要为第二子组的每个地址感知触发点定义值来定义所述第一子组的上下文/虚拟机感知触发点。因此,设备需要减少的电路开销。
进一步地,诊断控制电路响应于所述触发点控制值中的每个值,以选择与所述触发点控制值相关的所述触发点定义值是触发点定义值的所述第一子组中的成员还是触发点定义值的所述第二子组中的成员。
这允许用户选择哪些触发点定义值是第一子组的成员,以及哪些触发点定义值是第二子组的成员。这给用户提供了较大程度的灵活性。因为每个上下文/虚拟机感知触发点可具有链接到其的几个地址感知触发点,通常期望在第二子组中比在第一子组中有更多的触发点定义值,但这不一定需要是这种情况。因此为了降低电路复杂性,可关于相应的触发点定义值属于哪些子组,限制一些可编程寄存器。
在进一步的特征中,诊断控制电路响应于所述触发点控制值中的每个,以选择与所述触发点控制值相关的所述触发点定义值是否链接到所述触发点定义值中的另一个。
以这种方式,用户可选择将一个触发点定义值链接到另一个触发点定义值。可选地,触发点定义值可设置成不链接到任何其它触发点定义值,使得例如触发点定义值的第二子组中的一个值可被设置为当访问预定地址时触发诊断操作,而不管处理电路的当前状态是什么。
在另一特征中,对于触发点定义值的所述第二子组中的每个触发点定义值,所述诊断控制电路响应于与所述第二子组中的所述触发点定义值相关的所述触发点控制值,以选择触发点定义值的所述第一子组中的哪个值链接到所述第二子组中的所述触发点定义值。以这种方式,用户可对每个子组中的触发点定义值被链接的方式进行编程。
此外,诊断控制电路响应于所述触发点控制值中的每个值,以当出现下列情况时选择是否触发所述诊断电路来执行所述诊断操作:
比较的结果是匹配;或
比较的结果是失配。
可以预期,在大多数时间,用户希望触发点在例如当***的当前状态或其中一个相关地址与触发点定义值匹配时来触发诊断操作。然而,也可能允许用户设定这样的触发点,当***的当前状态(例如上下文标识符或其中一个相关地址)与触发点定义值不匹配时,该触发点触发要执行的诊断操作。例如,如果用户希望***对预定上下文中除了一个地址以外的所有地址触发诊断操作,这就特别有用。如果用户不可能选择在比较的结果是失配时触发诊断操作,则在本例中用户需要对除了不希望有诊断操作的地址以外的每个地址设定触发点定义值。这需要较多的电路资源。当比较的结果是失配时允许触发诊断操作处理了此问题。
此外,所述比较的结果可为虚拟机标识符的失配。
从又一方面看,本发明提供了用于处理数据的设备,其包括:
处理装置,其用于执行处理操作并访问存储器,所述处理装置在多个状态中的一个状态中工作,每个状态由多个状态标识符中的至少一个标识符来识别;
诊断装置,其耦合到所述处理装置以对其执行诊断操作;
诊断控制装置,其耦合到所述处理装置和所述诊断装置,并具有储存相应的触发点定义值的多个可编程寄存器,所述诊断控制装置响应于所述多个触发点定义值的第一子组中的每个值与状态表征值的当前值的比较,以便触发所述诊断装置来执行所述诊断操作,所述状态表征值由所述多个状态标识符中的至少一个标识符的至少一部分形成;以及
全局比较选择装置,其响应于可编程比较选择值,用于为触发点定义值的所述第一子组中的全部值选择所述多个状态标识符中的哪些部分形成所述状态表征值。
从另一方面看,本发明提供了一种用于处理数据的方法,其包括步骤:
使用处理电路来执行处理操作并访问存储器,所述处理电路在多个状态中的一个状态中工作,每个状态由多个状态标识符中的至少一个标识符来识别;
使用耦合到所述处理电路的诊断电路来对所述处理电路执行诊断操作;
响应于多个触发点定义值的第一子组中的每个值与状态表征值的当前值的比较来触发所述诊断电路执行所述诊断操作,所述状态表征值由所述多个状态标识符中的至少一个标识符的至少一部分形成;以及
响应于可编程比较选择值而为触发点定义值的所述第一子组中的全部值选择所述多个状态标识符中的哪些部分形成所述状态表征值。
根据结合附图来阅读的例证性实施例的下列详细描述,本发明的上面的和其它目的、特征和优点将变得显而易见。
附图说明
图1示意性地示出包括诊断电路和诊断控制电路的数据处理***;
图2示意性地示出用于触发诊断电路来执行诊断操作的诊断控制电路;
图3示出断点控制寄存器的类型字段的可能含义;
图4示意性地示出全局比较选择电路的第一示例性实施例;
图5示出第一示例性实施例中的断点控制寄存器的类型字段的可能含义;
图6示意性地示出全局比较选择电路的第二示例性实施例;
图7示出了表格,其展示了比较选择值CSV2如何用在第二示例性实施例中;以及
图8示出标识符的组合的一些例子,在第二示例性实施例中这些标识符可被组合以形成状态表征值。
具体实施方式
图1示意性地示出包括处理器核(processor core)2和高速缓冲存储器4的数据处理***1。数据处理***1耦合到主存储器6。数据处理***1还包括用于对处理器核执行诊断操作的诊断电路8。还包括在数据处理***1中的是耦合到诊断电路8的用于控制诊断电路的诊断控制电路10。诊断控制电路10具有一组可编程寄存器12。本技术领域技术人员应认识到,实际上,数据处理***1一般包括执行不同功能的许多另外的电路元件,但为了简单起见这些元件在图1中没有示出。
处理器核2可被编程为充当虚拟机,使得它复制自己或另一机器的功能。每个虚拟机由8位虚拟机标识符(VMID)来识别。处理器核当前正仿真的虚拟机的VMID可储存在数据处理***1内的8位寄存器(VMIDR)中。
对于每个虚拟机,处理器核2能够在被称为上下文的多个状态下工作。每个上下文与被依次执行的程序指令序列相关,并由32位上下文标识符(CONTEXTID)识别。处理器核当前正运行在其中的上下文的上下文ID储存在32位寄存器(CONTEXTIDR)中。在使用虚拟寻址的***中,不同的上下文共享虚拟地址空间。上下文ID的最低有效的8位被处理器用作应用空间标识符(ASID)标记。ASID可例如在转换后援缓冲器条目(entry)中使用。
在一些操作***中重复使用ASID值,因此在上下文的有效期期间,其可能有几个不同的ASID值,且每个ASID值对于单一上下文可能不是唯一的。为此,提供了对每个上下文唯一的调试唯一标识符(DBGUID)。这是没有重载含义(overloaded meaning)的32位值。处理器核2当前正运行在其中的上下文的DBGUID储存在32位寄存器(DBGUIDR)中。操作***和诊断控制电路可合作将该寄存器设定为任何适当的值。
通过为每个虚拟机和每个上下文提供若干状态标识符(VMID、CONTEXTID/ASID和DBGUID),可识别处理器核2的不同状态。因此,处理器核2可区别开在不同虚拟机和/或上下文中的相同虚拟地址处的数据。这种做法的一个用途是,每当存在上下文切换或虚拟机切换时,避免虚拟寻址的转换后援缓冲器被清洗。本领域技术人员应认识到,其它标识符也可用于描述***的状态,例如线程ID。
诊断电路8可执行各种诊断操作来实现对处理器核2执行程序指令序列的分析。这些操作可包括例如触发处理器核以进入调试模式,打开/关闭跟踪模块11,将跟踪数据输出到内部或外部***件或触发软件异常。然而,应认识到,其它诊断操作也是可能的。
诊断控制电路10用于在出现预定事件时触发诊断电路8来执行诊断操作。诊断控制电路的可编程寄存器12可由用户编程来限定触发诊断操作的预定事件。
图2示意性地示出更详细的诊断控制电路10。诊断控制电路的可编程寄存器12在逻辑上成对地布置,每对表示断点或观察点。为了简明起见,每对寄存器在下文中将被称为断点。然而,对技术人员显而易见的是,每对也可表示观察点。每对中的一个寄存器BVR0、BVR1、BVR5被称为断点值寄存器并储存预定的断点值。每对中的另一寄存器被称为断点控制寄存器BCR0、BCR1、BCR5,并用于限定每个断点的属性。
断点可具有不同的类型。对于断点的第一子组,断点值寄存器BVR5包括限定***的预定上下文状态的调试上下文值。这些断点是状态感知断点。储存在断点值寄存器中的值使用比较器20-5来与状态表征值SCV进行比较。状态特征SCV是表示***的当前状态的值。比较器20-5输出结果,该结果对应于储存在断点值寄存器中的值是否与状态表征值匹配。
对于断点的第二子组,断点值寄存器BVR0、BVR1包括存储器中的预定位置的地址Address0、Address1。这些断点是地址感知断点。储存在断点值寄存器中的值使用比较器20-0、20-1来与当前程序指令地址IADDR进行比较。比较器20-0、20-1输出结果,该结果对应于储存在断点值寄存器中的值是否与程序指令地址匹配。对于观察点,储存在断点值寄存器中的值可与存储器中被当前程序指令访问的位置的地址进行比较。
在一些实施例中,地址感知断点的断点值寄存器可限定存储器地址的预定范围。因此,当对预定范围内的地址进行访问时,可触发诊断操作。存在几种方法来限定范围。断点值寄存器可包括分别指示地址范围的上限和下限的一对地址值是可能的。可选地,断点值寄存器可包括地址值和掩码。断点接着配置成使得比较器先对访问的存储器地址执行按位掩蔽操作,然后再将其与地址值比较。本领域技术人员应认识到,掩码可被定义为按位掩码(bitwise mask),每位对应于访问的地址中的位,或被定义为将掩蔽值的最高有效位索引编码的适当字段。
在下文中,为了简单起见,在描述中提到的地址感知断点将是断点值寄存器包括单一地址值的类型。然而,很明显,它们可同样充分限定如上所述的存储器地址的范围。
每个断点与类型逻辑22-0、22-1、22-5相关,类型逻辑22-0、22-1、22-5响应于相关的比较器20-0、20-1、20-5的输出,并响应于相关的断点控制寄存器BCR0、BCR1、BCR5。类型逻辑22-0、22-1、22-5根据断点控制寄存器所定义的断点的性质输出结果,且该结果对应于从比较器20-0、20-1、20-5输出的结果对应于匹配还是失配。类型逻辑22-0、22-1、22-5所输出的结果由诊断控制电路10使用,以选择是否触发诊断电路8来执行诊断操作。
地址感知断点可链接到状态感知断点。例如在图2中,一个地址感知断点BVR0、BCR0链接到状态感知断点BVR5、BCR5。然而,多于一个的地址感知断点链接到同一状态感知断点是可能的。
因为在本例中,状态感知断点BVR5、BCR5具有链接到其的一个或多个地址感知断点(即,地址感知断点BVR0、BCR0),与状态感知断点相关的类型逻辑22-5将不输出结果来触发诊断电路8。相反,类型逻辑22-5的输出被路由回与链接到状态感知断点的该一个或多个地址感知断点中的每个断点相关的类型逻辑22-0。类型逻辑22-0接着根据比较器20-0的结果和从类型逻辑22-5路由的结果来输出结果。以这种方式,可触发诊断电路8来执行诊断操作,这取决于与当前程序指令相关的地址是否与预定地址匹配以及***的当前状态是否与预定的调试上下文值匹配。例如,当在预定上下文中执行预定地址处的指令时,可设置断点来触发诊断电路8。
每个断点控制寄存器BCR0、BCR1、BCR5控制相关的类型逻辑22-0、22-1、22-5如何使用比较器20-0、20-1、20-5的结果。断点控制寄存器的三位(例如位22到20)被用作类型字段。断点控制寄存器的四位(例如位19到16)用作链接的断点号码字段。类型字段和链接的断点号码字段的值被传递到类型逻辑22-0、22-1、22-5,并用于控制类型逻辑的行为。
断点控制寄存器BCR0、BCR1、BCR5的位22用于选择是在比较的结果是匹配时触发诊断操作,还是在比较的结果是失配时触发诊断操作。该位被设定为1,用于当失配出现时触发诊断操作,或被设定为0,用于当匹配出现时触发诊断操作。在一些实施例中,仅仅对地址感知断点支持失配功能。在这种情况下,对于状态感知断点,位22不得设定为1,而对于观察点,位22固定在零。应认识到,如果需要,可能对状态感知断点和观察点两者支持失配功能。
断点控制寄存器BCR0、BCR1、BCR5的位21用于选择断点是地址感知断点还是状态感知断点。对于状态感知断点该位被设定为1,以便断点值寄存器储存与状态表征值进行比较的预定的调试上下文值。对于地址感知断点该位被设定为0,以便断点值寄存器储存与(对于断点的)任一当前程序指令地址进行比较的预定地址值。如果各个断点不支持被选择为状态感知断点,则该位固定在0。对于观察点,也就是在观察点值寄存器包括被当前程序指令访问的地址的情况下,该位固定在0。
断点控制寄存器BCR0、BCR1、BCR5的位20用于设定断点是否被链接;也就是说,对于地址感知断点或观察点,断点或观察点是否链接到第二状态感知断点,而对于状态感知断点,该断点是否链接到一个或多个地址感知断点或观察点。以这种方式,断点可设置成使得它需要地址比较和调试上下文比较。如果断点被链接,则该位被设定为1。如果断点不被链接,则该位被设定为0。
图3示出断点控制寄存器的类型字段的可能含义。在下面的部分中,x表示任何地址感知断点的断点号码,而y表示任何状态感知断点的断点号码。类型字段的可能值是:
●0b000-未链接的指令虚拟地址匹配
在这种情况下,此地址感知断点的类型逻辑22-x输出结果,如果比较器20-x所进行的储存在断点值寄存器中的值与当前程序指令地址的比较是匹配,则该结果使诊断操作被触发。
●0b001-链接的指令虚拟地址匹配
在这种情况下,此地址感知断点的类型逻辑22-x从链接到该地址感知断点的状态感知断点的类型逻辑22-y接收结果。如果比较器20-x对地址所进行的比较是匹配且链接的状态感知断点所进行的比较结果是匹配,则地址感知断点的类型逻辑22-x输出触发诊断操作的结果。
●0b010-未链接的调试上下文匹配
在这种情况下,此状态感知断点的类型逻辑22-y输出结果,如果比较器20-y所进行的对储存在断点值寄存器中的值与状态表征值的比较是匹配,则该结果使诊断操作被触发。
●0b011-链接的调试上下文匹配
在这种情况下,此状态感知断点的类型逻辑22-y将比较器22-y所进行的对储存在断点值寄存器中的值与状态表征值的比较结果路由到链接到该状态感知断点的地址感知断点的类型逻辑22-x。
●0b100-未链接的指令虚拟地址失配
在这种情况下,此地址感知断点的类型逻辑22-x输出结果,如果比较器20-x所进行的对储存在断点值寄存器中的值与当前程序指令地址的比较是失配,则该结果使诊断操作被触发。
●0b101-链接的指令虚拟地址失配
在这种情况下,此地址感知断点的类型逻辑22-x从链接到地址感知断点的状态感知断点的类型逻辑22-y接收结果。如果比较器20-x对地址所进行的比较是失配且链接的状态感知断点所进行的比较的结果是匹配,则地址感知断点的类型逻辑22-x输出触发诊断操作的结果。
●0b110-未链接的调试上下文失配-保留。
●0b111-链接的调试上下文失配-保留。
在一些实施例中不支持这最后两种情况。然而,应认识到,如果需要,则可支持这些情况。
链接的断点号码字段用于指示哪个状态感知断点链接到地址感知断点。对于状态感知断点,链接的断点号码字段总是被设置为0b0000。对于没有链接到状态感知断点的地址感知断点,链接的断点号码字段被设置为0b0000。对于链接到状态感知断点的地址感知断点,链接的断点号码字段包括指示链接到地址感知断点的状态感知断点的号码的值。例如,在图2中,断点BVR0、BCR0链接到断点BVR5、BCR5,所以BCR0的链接的断点号码字段被设置为0b0101。
通过以这种方式设定断点控制寄存器的位,用户可设定不同类型的断点。
对于状态感知断点,将储存在断点值寄存器BVR5中的调试上下文值与状态表征值SCV进行比较(参考图2)。通过全局比较选择电路26为所有状态感知断点设定状态表征值。这允许用户设定哪些状态标识符用于形成状态表征值。通过全局地选择使用哪些状态标识符,这意味着与如果为每个断点提供比较选择电路相比,需要较少的电路资源。
参考图4来描述全局比较选择电路26的一个示例性实施例。与图2中的部件相同的图4的部件用相同的参考数字标识。
在本实施例中,全局比较选择电路26具有选择器40,其响应于储存在比较选择寄存器CSELR中的可编程比较选择值CSV的值。如果比较选择值的值是1,则选择器40输出储存在DBGUIDR中的DBGUID的值。如果比较选择值的值是0,则选择器40输出储存在CONTEXTIDR中的CONTEXTID的值。选择器40所输出的值用作与储存在状态感知断点的断点值寄存器BVR5中的调试上下文值进行比较的状态表征值。以这种方式,用户可全局地选择CONTEXTID和DBGUID中的哪个应该用于识别上下文。
为了使状态感知断点是虚拟机感知以及上下文感知的,为每个状态感知断点提供额外的断点值寄存器BXVR5和额外的比较器44-5。该额外的断点值寄存器BXVR5储存表示VMID的预定值,针对该VMID而触发诊断操作。比较器44-5比较储存在该额外的断点值寄存器中的值与储存在VMIDR中的值,VMIDR中的值表示当前VMID(处理器当前被编程为充当的虚拟机的VMID)。比较器44-5输出结果,其指示储存在额外的断点值寄存器BXVR5中的值与当前VMID匹配还是失配。类型逻辑选择性地响应于比较器44-5的输出。通过提供该额外的断点值寄存器和比较器,本技术允许设立断点,该断点响应于其中一个上下文标识符和VMID两者的全值(full value)与预定值的比较而触发诊断操作。
在断点控制寄存器中,额外的位(例如位23)用于设定相关的类型逻辑是否响应于VMID比较的结果。当该位被设定为1时,类型逻辑响应于比较器44-5的输出。当该位被设定为0时,类型逻辑不响应于比较器44-5的输出。
图5示出在本发明的该实施例中断点控制寄存器的类型字段的可能含义。值0b0000到0b0111具有与参考图3讨论的相应值0b000到0b111相同的含义。对于类型0b0100到0b0101,BXVR5中的值和当前VMID被忽略。
●0b1000-未链接的VMID匹配
在这种情况下,此状态感知断点的类型逻辑22-y输出结果,如果比较器44-y所进行的对储存在额外的断点值寄存器BXVRy中的值与当前VMID的比较是匹配,则该结果使诊断操作被触发。储存在断点值寄存器BVR5中的调试上下文值被忽略。
●0b1001-链接的VMID匹配
在这种情况下,此状态感知断点的类型逻辑22-y将比较器44-y所进行的对储存在额外的断点值寄存器中的值与当前VMID的比较的结果路由到链接到状态感知断点的地址感知断点的类型逻辑22-x。
●0b1010-未链接的调试上下文和VMID匹配
在这种情况下,此状态感知断点的类型逻辑22-y输出结果,如果比较器20-y所进行的对储存在断点值寄存器BVRy中的调试上下文值与状态表征值SCV的调试比较是匹配,且比较器44-y所进行的对储存在额外的断点值寄存器BXVRy中的值与当前VMID的比较是匹配,则该结果使诊断操作被触发。
●0b1011-链接的调试上下文和VMID匹配
在这种情况下,此状态感知断点的类型逻辑22-y将比较器20-y和44-y所进行的比较的结果路由到链接到状态感知断点的地址感知断点的类型逻辑22-x。
●0b1100-未链接的VMID失配-保留。
●0b1101-链接的VMID失配-保留。
●0b1110-未链接的调试上下文和VMID失配-保留。
●0b1111-链接的调试上下文和VMID失配-保留。
在一些实施例中不支持后四种情况。然而,需要时支持这些情况是可能的。
因此,通过以适当的方法设定断点控制寄存器的类型字段的位,可设立断点,其可根据指令地址、VMID和CONTEXTID/DBGUID的任何组合来触发要执行的诊断操作。VMID和CONTEXTID/DBGUID两者的全值可与储存在断点值寄存器中的值进行比较。
在可选的实施例中,全局比较选择电路26布置成如图6中示意性示出的。与图2中的部件相同的图6的部件用相同的参考数字标识。与前面的实施例不同,没有额外的断点值寄存器。如在图2中的,类型字段仅由三位组成。类型字段的可能值的含义如在图3中的一样。
在本实施例中,全局比较选择电路26具有选择器60,其响应于储存在比较选择寄存器CSELR2中的可编程比较选择值CSV2的值。对于状态表征值SCV的每个部分,选择器60从下列项之一选择位:储存在CONTEXTIDR中的值(即,当前CONTEXTID)、储存在DBGUIDR中的值(即,当前DBGUID)、储存在VMIDR中的值(即,当前VMID)、或掩蔽值0x00000000。本实施例的比较选择值CSV2由多个字段64组成。每个字段64用于选择从哪个寄存器中选取状态表征值SCV的相应部分,或是否应从掩蔽值中选取相应部分。
图7示出了表格,其展示如何使用比较选择值CSV2。比较选择值CSV2的位[31:16]被保留。选择器60不响应于这些位。比较选择值CSV2的位[15:12]指示从哪个寄存器中选取状态表征值SCV的位[31:24]。比较选择值CSV2的位[11:4]指示从哪个寄存器中选取状态表征值SCV的位[23:8]。比较选择值CSV2的位[3:0]指示从哪个寄存器中选取状态表征值SCV的位[7:0]。
以这种方式,标识符的不同组合的部分可组合以形成状态表征值。图8概述了一些示例性组合。如果比较选择值CSV2被设定为0x0000,则储存在断点值寄存器BVR5中的调试上下文值仅与CONTEXTID进行比较。如果比较选择值CSV2被设定为0x2222,则仅与DBGUIDR进行比较。如果比较选择值CSV2被设定为0x1FFF,则仅与VMID进行比较。如果比较选择值CSV2被设定为0x1220,则与VMID、DBGUID和ASID(ASID由CONTEXTID的最低有效的8位形成)的部分进行比较。如果比较选择值CSV2被设定为0xFFF0,则仅与ASID进行比较。由于使用掩蔽值,仅与VMID或仅与ASID进行比较是可能的。
使用本实施例,用户可对比较选择值CSV2编程,以便为所有断点全局地选择标识符的哪种组合用于触发诊断操作。这意味着数据处理***需要较少的电路资源。
虽然参考附图在这里详细描述了本发明的例证性实施例,但应理解,本发明不限于这些明确的实施例,且本领域技术人员可实现其中的各种变化和更改,而不偏离如所附权利要求书所限定的本发明的范围和实质。

Claims (34)

1.一种用于处理数据的设备,其包括:
处理装置,使用处理电路来执行处理操作并访问存储器,所述处理电路可编程为充当多个虚拟机中的一个虚拟机,每个虚拟机由虚拟机标识符识别,每个虚拟机在多个上下文中的一个上下文中运行,每个上下文由上下文标识符识别,每个上下文执行程序指令序列,每个程序指令具有一个或多个相关的存储器地址;
诊断装置,使用耦合到所述处理电路的诊断电路来执行诊断操作;以及
诊断控制装置,响应于所述虚拟机标识符、所述上下文标识符和所述一个或多个相关的存储器地址中的至少一个地址的当前值,以触发所述诊断电路来执行所述诊断操作。
2.如权利要求1所述的设备,其中所述诊断电路执行包括下列项中的一个或多个的诊断操作:
触发所述处理电路进入调试模式;
打开/关闭跟踪模块;
将跟踪数据输出到内部***件;
将跟踪数据输出到外部***件;以及
触发软件异常。
3.如权利要求1所述的设备,其中所述一个或多个相关的存储器地址中的至少一个地址是在存储器中存储所述程序指令的位置的地址。
4.如权利要求1所述的设备,其中所述一个或多个相关的存储器地址中的至少一个地址是在存储器中由所述程序指令访问的位置的地址。
5.如权利要求1所述的设备,其中所述诊断控制装置通过多个可编程寄存器来储存触发点定义值,且所述诊断控制装置响应于所述多个触发点定义值与所述虚拟机标识符、所述上下文标识符和所述一个或多个相关的存储器地址中的所述至少一个地址的当前值的比较而触发所述诊断电路以执行所述诊断操作。
6.一种用于处理数据的方法,其包括下列步骤:
使用处理电路来执行处理操作并访问存储器,所述处理电路可编程为充当多个虚拟机中的一个虚拟机,每个虚拟机由虚拟机标识符识别,每个虚拟机在多个上下文中的一个上下文中运行,每个上下文由上下文标识符识别,每个上下文执行程序指令序列,每个程序指令具有一个或多个相关的存储器地址;
使用耦合到所述处理电路的诊断电路来执行诊断操作;以及
响应于所述虚拟机标识符、所述上下文标识符和所述一个或多个相关的存储器地址中的至少一个地址的当前值而触发所述诊断电路来执行所述诊断操作。
7.如权利要求6所述的用于处理数据的方法,其中所述诊断操作包括下列项的一个或多个:
触发所述处理电路以进入调试模式;
打开/关闭跟踪模块;
将跟踪数据输出到内部***件;
将跟踪数据输出到外部***件;以及
触发软件异常。
8.如权利要求6所述的用于处理数据的方法,其中所述一个或多个相关的存储器地址中的一个地址是在存储器中存储所述程序指令的位置的地址。
9.如权利要求6所述的用于处理数据的方法,其中所述一个或多个相关的存储器地址中的一个地址是在存储器中由所述程序指令访问的位置的地址。
10.如权利要求6所述的用于处理数据的方法,其中所述触发步骤响应于多个触发点定义值与所述虚拟机标识符、所述上下文标识符和所述一个或多个相关的存储器地址中的所述至少一个地址的当前值的比较而触发所述诊断电路来执行所述诊断操作。
11.一种用于处理数据的设备,其包括:
处理装置,使用处理电路来执行处理操作并访问存储器,所述处理电路在多个状态中的一个状态中工作,每个状态由多个状态标识符中的至少一个标识符识别;
诊断装置,使用耦合到所述处理电路的诊断电路来对所述处理电路执行诊断操作;
诊断控制装置,响应于多个触发点定义值的第一子组中的每个值与状态表征值的当前值的比较,以便触发所述诊断电路来执行所述诊断操作,所述状态表征值由所述多个状态标识符中的至少一个识别符的至少一部分形成;以及
全局比较选择装置,其响应于可编程比较选择值,以为触发点定义值的所述第一子组中的全部值选择所述多个状态标识符中的哪些部分形成所述状态表征值,
其中,所述诊断控制装置通过多个可编程控制寄存器来储存相应的触发点控制值,每个触发点控制值与所述触发点定义值中的一个值相关;
每个上下文执行程序指令序列,每个程序指令具有一个或多个相关的存储器地址;
所述诊断控制装置响应于所述多个触发点定义值的第二子组中每个值与所述一个或多个相关的存储器地址中的一个地址的比较,以便触发所述诊断电路来执行所述诊断操作;
所述诊断控制装置响应于所述触发点控制值中的每一个,以选择与所述触发点控制值相关的所述触发点定义值是触发点定义值的所述第一子组的成员还是触发点定义值的所述第二子组中的成员。
12.如权利要求11所述的设备,其中所述诊断电路执行包括下列项的一个或多个的诊断操作:
触发所述处理电路以进入调试模式;
打开/关闭跟踪模块;
将跟踪数据输出到内部***件;
将跟踪数据输出到外部***件;以及
触发软件异常。
13.如权利要求11所述的设备,其中所述处理电路可编程为充当多个虚拟机中的一个虚拟机,每个虚拟机由虚拟机标识符识别,每个虚拟机在多个上下文中的一个上下文中运行,每个上下文由至少一个上下文标识符识别。
14.如权利要求13所述的设备,其中所述多个状态标识符包括所述虚拟机标识符和所述至少一个上下文标识符,每个状态由所述虚拟机标识符和所述至少一个上下文标识符的组合来识别。
15.如权利要求13所述的设备,其中所述多个上下文中的每个上下文由第一上下文标识符和第二上下文标识符中的至少一个标识符识别。
16.如权利要求15所述的设备,其中所述第二上下文标识符对每个上下文是唯一的。
17.如权利要求15所述的设备,其中所述全局比较选择装置选择所述状态表征值由下列项之一形成:
所述第一上下文标识符的当前值的整体;或
所述第二上下文标识符的当前值的整体。
18.如权利要求17所述的设备,其中诊断控制装置通过第二多个可编程控制寄存器来储存相应的虚拟机触发点定义值,每个虚拟机触发点定义值与触发点定义值的所述第一子组中的一个值和所述触发点控制值中相应的一个值相关。
19.如权利要求18所述的设备,其中对于每个虚拟机触发点定义值,所述诊断控制装置选择性地响应于所述虚拟机触发点定义值与所述虚拟机标识符的当前值的比较,以便触发所述诊断电路来执行所述诊断操作。
20.如权利要求19所述的设备,其中对于每个虚拟机触发点定义值,所述诊断控制装置响应于与所述虚拟机触发点定义值相关的所述触发点控制值,以便选择所述诊断控制装置是否响应于所述虚拟机触发点定义值与所述虚拟机标识符的所述当前值的所述比较。
21.如权利要求15所述的设备,其中所述全局比较选择装置选择由所述第一上下文标识符的当前值、所述第二上下文标识符的当前值、所述虚拟机标识符的当前值和掩蔽值中的至少一个值的部分来形成所述状态表征值。
22.如权利要求21所述的设备,其中所述可编程比较选择值具有多个字段,且每个字段指示从所述第一上下文标识符的所述当前值、所述第二上下文标识符的所述当前值、所述虚拟机标识符的所述当前值和所述掩蔽值中的哪个来选择所述状态表征值的相应部分。
23.如权利要求11所述的设备,其中所述一个或多个相关的存储器地址中的所述一个地址是在存储器中储存所述程序指令的位置的地址。
24.如权利要求11所述的设备,其中所述一个或多个相关的存储器地址中的所述一个地址是在存储器中由所述程序指令访问的位置的地址。
25.如权利要求11所述的设备,其中触发点定义值的所述第二子组中的至少一个值限定存储器地址的预定范围,且所述诊断控制装置响应于所述一个或多个相关的存储器地址中的所述一个地址是否在存储器地址的所述预定范围内,以便触发所述诊断电路来执行所述诊断操作。
26.如权利要求25所述的设备,其中触发点定义值的所述第二子组中的所述至少一个值包括指示所述预定地址范围的上限和下限的一对地址值。
27.如权利要求25所述的设备,其中触发点定义值的所述第二子组中的所述至少一个值包括地址值和掩码,且所述诊断控制装置响应于比较所述地址值与掩蔽的地址值的结果,所述掩蔽的地址值通过使用所述掩码对所述一个或多个相关的存储器地址的所述一个地址执行按位掩蔽操作来获得。
28.如权利要求11所述的设备,其中触发点定义值的所述第二子组中的每个值选择性地链接到触发点定义值的所述第一子组中的一个值,使得所述诊断控制装置响应于所述第一子组中的触发点定义值与所述状态表征值的所述比较以及所述第二子组中的触发点定义值与所述一个或多个相关的存储器地址的所述一个地址的所述比较,以便触发所述诊断电路来执行所述诊断操作。
29.如权利要求28所述的设备,其中触发点定义值的所述第二子组中的多于一个值链接到触发点定义值的所述第一子组中的一个值。
30.如权利要求29所述的设备,其中所述诊断控制装置响应于所述触发点控制值中的每一个,以选择与所述触发点控制值相关的所述触发点定义值是否链接到所述触发点定义值中的另一个。
31.如权利要求28所述的设备,其中对于触发点定义值的所述第二子组中的每个触发点定义值,所述诊断控制装置响应于与所述第二子组中的所述触发点定义值相关的所述触发点控制值,以选择触发点定义值的所述第一子组中的哪个值链接到所述第二子组中的所述触发点定义值。
32.如权利要求11所述的设备,其中所述诊断控制装置响应于所述触发点控制值中的每一个,以当出现下列情况时选择是否触发所述诊断电路来执行所述诊断操作:
比较的结果是匹配;或
比较的结果是失配。
33.如权利要求32所述的设备,其中所述比较的所述结果是虚拟机标识符中的失配。
34.一种用于处理数据的方法,其包括下列步骤:
使用处理电路来执行处理操作并访问存储器,所述处理电路在多个状态中的一个状态中工作,每个状态由多个状态标识符中的至少一个标识符来识别;
使用耦合到所述处理电路的诊断电路来对所述处理电路执行诊断操作;
响应于多个触发点定义值的第一子组中的每个值与状态表征值的当前值的比较来触发所述诊断电路执行所述诊断操作,所述状态表征值由所述多个状态标识符中的至少一个标识符的至少一部分形成;以及
响应于可编程比较选择值而为触发点定义值的所述第一子组中的全部值选择所述多个状态标识符中的哪些部分形成所述状态表征值,其中,
为储存相应的触发点控制值提供多个可编程控制寄存器,每个触发点控制值与所述触发点定义值中的一个值相关;
每个上下文执行程序指令序列,每个程序指令具有一个或多个相关的存储器地址,并且
所述方法还包括:
响应于所述多个触发点定义值的第二子组中每个值与所述一个或多个相关的存储器地址中的一个地址的比较,触发所述诊断电路来执行所述诊断操作;以及
响应于所述触发点控制值中的每一个,选择与所述触发点控制值相关的所述触发点定义值是触发点定义值的所述第一子组的成员还是触发点定义值的所述第二子组中的成员。
CN200910006113.1A 2008-01-24 2009-01-23 诊断上下文结构和比较 Active CN101493792B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0801338.5 2008-01-24
GB0801338.5A GB2456813B (en) 2008-01-24 2008-01-24 Diagnostic context construction and comparison

Publications (2)

Publication Number Publication Date
CN101493792A CN101493792A (zh) 2009-07-29
CN101493792B true CN101493792B (zh) 2013-12-18

Family

ID=39186291

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910006113.1A Active CN101493792B (zh) 2008-01-24 2009-01-23 诊断上下文结构和比较

Country Status (4)

Country Link
US (1) US8250411B2 (zh)
JP (1) JP5430153B2 (zh)
CN (1) CN101493792B (zh)
GB (1) GB2456813B (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2456813B (en) * 2008-01-24 2012-03-07 Advanced Risc Mach Ltd Diagnostic context construction and comparison
US20140108701A1 (en) * 2010-07-16 2014-04-17 Memory Technologies Llc Memory protection unit in a virtual processing environment
US9361204B2 (en) * 2013-02-19 2016-06-07 Arm Limited Generating trace data including a lockup identifier indicating occurrence of a lockup state
JP6099458B2 (ja) 2013-03-29 2017-03-22 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 特定の仮想マシンに関連するトレース・データを得るためのコンピュータ実装方法、プログラム、トレーサ・ノード
KR20140125488A (ko) * 2013-04-19 2014-10-29 한국전자통신연구원 스마트 유비쿼터스 네트워크에서 상황 인지 기반 네트워크 장치 및 시스템
US9141512B2 (en) * 2013-05-21 2015-09-22 Red Hat, Inc. System and method for cluster debugging
US11126522B2 (en) 2013-06-18 2021-09-21 Nxp Usa, Inc. Method and apparatus for offloading functional data from an interconnect component
US9559870B2 (en) * 2013-07-08 2017-01-31 Nicira, Inc. Managing forwarding of logical network traffic between physical domains
WO2015009288A1 (en) * 2013-07-16 2015-01-22 Empire Technology Development, Llc Processor identification for virtual machines
US10209762B2 (en) 2013-09-27 2019-02-19 Nxp Usa, Inc. Selectively powered layered network and a method thereof
US20150277949A1 (en) * 2014-03-27 2015-10-01 Thiam Wah Loh Securing shared interconnect for virtual machine
GB2549239A (en) * 2014-11-13 2017-10-18 Advanced Risc Mach Ltd Context sensitive barriers in data processing
US10243848B2 (en) 2015-06-27 2019-03-26 Nicira, Inc. Provisioning logical entities in a multi-datacenter environment
GB2540942B (en) * 2015-07-31 2019-01-23 Advanced Risc Mach Ltd Contingent load suppression
US10216616B2 (en) * 2016-07-02 2019-02-26 Intel Corporation Cooperative triggering
US10719451B2 (en) * 2017-01-13 2020-07-21 Optimum Semiconductor Technologies Inc. Variable translation-lookaside buffer (TLB) indexing
US10599555B2 (en) 2017-09-20 2020-03-24 Texas Instruments Incorporated Context-sensitive debug requests for memory access
US11455398B2 (en) * 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11777793B2 (en) 2020-04-06 2023-10-03 Vmware, Inc. Location criteria for security groups
US11088902B1 (en) 2020-04-06 2021-08-10 Vmware, Inc. Synchronization of logical network state between global and local managers
US11394634B2 (en) 2020-04-06 2022-07-19 Vmware, Inc. Architecture for stretching logical switches between multiple datacenters
US11088919B1 (en) 2020-04-06 2021-08-10 Vmware, Inc. Data structure for defining multi-site logical network
US11381456B2 (en) 2020-04-06 2022-07-05 Vmware, Inc. Replication of logical network data between global managers
US11343227B2 (en) 2020-09-28 2022-05-24 Vmware, Inc. Application deployment in multi-site virtualization infrastructure

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03217949A (ja) * 1990-01-23 1991-09-25 Hitachi Ltd 計算機システム
JPH05224950A (ja) * 1992-02-17 1993-09-03 Hitachi Ltd デバッグ用割込み発生回路
EP0762278A1 (en) * 1995-08-30 1997-03-12 Motorola, Inc. Data processor with built-in emulation circuit
US6427162B1 (en) * 1996-05-02 2002-07-30 Sun Microsystems, Inc. Separate code and data contexts: an architectural approach to virtual text sharing
US5812830A (en) * 1996-11-14 1998-09-22 Hewlett-Packard Company Debug system with raw mode trigger capability
GB9704068D0 (en) * 1997-02-27 1997-04-16 Sgs Thomson Microelectronics Trigger sequencing controller
US6633838B1 (en) * 1999-11-04 2003-10-14 International Business Machines Corporation Multi-state logic analyzer integral to a microprocessor
AU2000231862A1 (en) * 2000-03-23 2001-10-03 Sun Microsystems, Inc. Method of and system for testing software in computers
US7093236B2 (en) * 2001-02-01 2006-08-15 Arm Limited Tracing out-of-order data
US6883162B2 (en) * 2001-06-06 2005-04-19 Sun Microsystems, Inc. Annotations for transaction tracing
US6857084B1 (en) * 2001-08-06 2005-02-15 Lsi Logic Corporation Multiprocessor system and method for simultaneously placing all processors into debug mode
US6862694B1 (en) * 2001-10-05 2005-03-01 Hewlett-Packard Development Company, L.P. System and method for setting and executing breakpoints
GB2383437B (en) * 2001-12-20 2004-02-04 Sun Microsystems Inc System trace unit
US7010672B2 (en) * 2002-12-11 2006-03-07 Infineon Technologies Ag Digital processor with programmable breakpoint/watchpoint trigger generation circuit
US7644312B2 (en) * 2002-12-31 2010-01-05 International Business Machines Corporation Virtual machine monitoring for application operation diagnostics
US7111146B1 (en) * 2003-06-27 2006-09-19 Transmeta Corporation Method and system for providing hardware support for memory protection and virtual memory address translation for a virtual machine
US7334161B2 (en) * 2004-04-30 2008-02-19 Arm Limited Breakpoint logic unit, debug logic and breakpoint method for a data processing apparatus
JP2006092029A (ja) * 2004-09-21 2006-04-06 Fujitsu Ltd マイクロコンピュータ及びトレース制御方法
US7711914B2 (en) * 2005-06-28 2010-05-04 Hewlett-Packard Development Company, L.P. Debugging using virtual watchpoints
US7332929B1 (en) * 2006-03-03 2008-02-19 Azul Systems, Inc. Wide-scan on-chip logic analyzer with global trigger and interleaved SRAM capture buffers
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8032741B2 (en) * 2007-08-22 2011-10-04 Intel Corporation Method and apparatus for virtualization of a multi-context hardware trusted platform module (TPM)
GB2456813B (en) * 2008-01-24 2012-03-07 Advanced Risc Mach Ltd Diagnostic context construction and comparison

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
US 5,550,993 A,1996.08.27,全文.
US 6,427,162 B1,2002.07.30,全文.

Also Published As

Publication number Publication date
US8250411B2 (en) 2012-08-21
JP2009176297A (ja) 2009-08-06
GB2456813A (en) 2009-07-29
JP5430153B2 (ja) 2014-02-26
CN101493792A (zh) 2009-07-29
GB2456813B (en) 2012-03-07
US20090193297A1 (en) 2009-07-30
GB0801338D0 (en) 2008-03-05

Similar Documents

Publication Publication Date Title
CN101493792B (zh) 诊断上下文结构和比较
JP5865920B2 (ja) データ処理装置のトレース
US20020147965A1 (en) Tracing out-of-order data
TWI464576B (zh) 使用除錯指令之方法、裝置及控制處理器之除錯行為之方法
JP4094724B2 (ja) ソフトウェアをデバッグする際に例外を識別するための装置および方法
RU2429525C2 (ru) Схема отладки, сравнивающая режим обработки набора команд процессора
US5564041A (en) Microprocessor for inserting a bus cycle in an instruction set to output an internal information for an emulation
US5889981A (en) Apparatus and method for decoding instructions marked with breakpoint codes to select breakpoint action from plurality of breakpoint actions
US6081887A (en) System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction
US4167779A (en) Diagnostic apparatus in a data processing system
CN103119566A (zh) 数据处理装置的除错
US20140033181A1 (en) Reverse debugging
CN107526970B (zh) 基于动态二进制平台检测运行时程序漏洞的方法
CN107577593A (zh) 使用执行单一步骤来诊断编码
US7689815B2 (en) Debug instruction for use in a data processing system
EP2711840A2 (en) Semiconductor integrated circuit device and microcontroller
US10606594B2 (en) Method and apparatus for executing multi-thread using mask value
CN109416632A (zh) 寄存器还原分支指令
EP2168045A1 (en) Exception-based error handling in an array-based language
KR20140099255A (ko) 레지스터 리네이밍 데이터 처리장치 및 레지스터 리네이밍 실행방법
CN107045606A (zh) 用于监测程序代码的执行的方法和设备
JP7049275B2 (ja) 診断データキャプチャ
KR20030088892A (ko) 인터럽트를 핸들링하기 위한 방법 및 장치
US8423719B2 (en) Apparatus, processor and method of controlling cache memory
US20050223293A1 (en) Address watch breakpoints in protected code

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant