CN111742303A - 用于在调试设备时访问元数据的装置和方法 - Google Patents
用于在调试设备时访问元数据的装置和方法 Download PDFInfo
- Publication number
- CN111742303A CN111742303A CN201980014283.6A CN201980014283A CN111742303A CN 111742303 A CN111742303 A CN 111742303A CN 201980014283 A CN201980014283 A CN 201980014283A CN 111742303 A CN111742303 A CN 111742303A
- Authority
- CN
- China
- Prior art keywords
- metadata
- access
- debugger
- memory system
- access port
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000012546 transfer Methods 0.000 claims abstract description 13
- 239000008187 granular material Substances 0.000 claims description 42
- 230000008878 coupling Effects 0.000 claims description 8
- 238000010168 coupling process Methods 0.000 claims description 8
- 238000005859 coupling reaction Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 8
- 230000001419 dependent effect Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 abstract description 9
- 238000012545 processing Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 12
- 239000002245 particle Substances 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000001960 triggered effect Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Library & Information Science (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
- Microcomputers (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
提供了用于在调试设备时访问元数据的装置和方法。具体地,提供了调试访问端口电路,该调试访问端口电路包括:调试接口,用于接收来自调试器的命令;以及总线接口,用于耦合到总线以使得调试器能够访问设备的存储器系统。该设备对由具有相关联的元数据项的数据颗粒形成的数据进行操作,并且总线接口使得能够通过总线在存储器系统和总线接口之间来传送数据颗粒和元数据项两者。调试访问端口电路系统还具有多个存储元件,这些存储元件通过从调试器发出的命令而可访问,使得根据命令所访问的存储元件来控制通过总线接口在存储器系统中执行的访问。至少一个存储元件中包括用于存储多个元数据项的元数据存储元件,并且调试访问端口电路响应于来自调试器的至少一个命令来执行对存储器系统的访问,以便在元数据存储元件和存储器系统之间传输多个元数据项中的至少一个。这提供了用于使得调试器能够直接访问正在被调试的设备的存储器系统中的元数据项的高效机制。
Description
技术领域
本公开涉及用于在调试设备时访问元数据的技术。
背景技术
设备可以采取各种形式,并且可以例如包括一个或多个处理电路,例如,用于对设备的存储器系统中保持的数据执行数据处理操作的中央处理单元(CPU)。
设备可以被布置为对由具有相关联的元数据项的数据颗粒形成的数据进行操作。数据颗粒的大小可以取决于实现方式而变化,并且实际上,与每个数据颗粒相关联的元数据项的大小也可以取决于实现方式而变化。
当针对设备执行调试操作(例如,以调试要在处理电路之一上执行的程序)时,调试器在某些时间点可能希望访问与相应数据颗粒相关的一个或多个元数据项。例如,可能期望读取那些元数据项中的每个的值。替代地,可能期望执行写入操作以更新那些元数据项中的每个的当前值。
设备的处理电路可支持元数据访问操作的执行以访问一个或多个元数据项,并且相应地,调试器可以向处理电路发出命令,以在调试器希望访问元数据时使处理电路执行这样的元数据访问操作。
然而,这可能需要暂停正在由处理电路执行的当前操作,以便支持调试器访问感兴趣的元数据项。期望提供一种用于在设备的调试期间访问元数据项的改进的机制。
发明内容
在第一示例布置中,提供了调试访问端口电路,包括:调试接口,用于从调试器接收命令;总线接口,用于耦合到总线以使得调试器能够访问设备的存储器系统,该设备对由数据颗粒形成的数据进行操作,这些数据颗粒具有相关联的元数据项,并且总线接口使得能够通过总线在存储器系统和总线接口之间来传送数据颗粒和元数据项两者;多个存储元件,能够通过从调试器发出的命令来访问,使得经由总线接口在存储器系统中执行的访问是根据命令所访问的存储元件来控制的;多个存储元件中的至少一个存储元件包括元数据存储元件,该元数据存储元件用于存储多个元数据项;并且其中,调试访问端口电路响应于来自调试器的至少一个命令来执行对存储器系统的访问,以便在元数据存储元件和存储器系统之间传输多个元数据项中的至少一个元数据项。
在另一示例布置中,提供了操作调试访问端口电路的方法,该方法包括:从调试器接收命令;提供总线接口,该总线接口用于耦合到总线以使得调试器能够访问设备的存储器系统,该设备对由数据颗粒形成的数据进行操作,这些数据颗粒具有相关联的元数据项,并且总线接口使得能够通过总线在存储器系统和总线接口之间来传送数据颗粒和元数据项两者;提供多个存储元件,这些存储元件能够通过从调试器发出的命令来访问,使得经由总线接口在存储器系统中执行的访问是根据命令所访问的存储元件来控制的;将多个存储元件中的至少一个存储元件提供为元数据存储元件,该元数据存储元件用于存储多个元数据项;并且响应于来自调试器的至少一个命令来执行对存储器系统的访问,以便在元数据存储元件和存储器系统之间传输多个元数据项中的至少一个元数据项。
在又一示例配置中,提供了调试访问端口电路,包括:调试接口装置,用于从调试器接收命令;总线接口装置,用于耦合到总线以使得调试器能够访问设备的存储器系统,该设备对由数据颗粒形成的数据进行操作,这些数据颗粒具有相关联的元数据项,并且总线接口装置使得能够通过总线在存储器系统和总线接口之间来传送数据颗粒和元数据项两者;多个存储元件装置,这些存储元件装置能够通过从调试器发出的命令来访问,使得经由总线接口装置在存储器系统中执行的访问是根据命令所访问的存储元件来控制的;多个存储元件装置中的至少一个存储元件装置包括元数据存储元件装置,该元数据存储元件装置用于存储多个元数据项;并且其中,调试访问端口电路响应于来自调试器的至少一个命令来执行对存储器系统的访问,以便在元数据存储元件和存储器系统之间传输多个元数据项中的至少一个元数据项。
附图说明
将仅通过说明的方式参考如在附图中示出的本技术的示例来进一步描述本技术,其中:
图1是根据一个示例的系统的框图;
图2是示出根据一个示例的在图1的元数据感知存储器访问端口中提供的组件的框图;
图3A和图3B提供了示出根据一个示例布置的用于调试器读取多个元数据项的机制的流程图;
图4A和图4B提供了示出根据一个示例布置的用于调试器写入一系列元数据项的机制的流程图;
图5是示出根据替代布置的在图1的元数据感知存储器访问端口中提供的组件的框图;
图6A和图6B提供了示出当使用图5的元数据感知存储器访问端口时调试器可以如何读取一系列元数据项的流程图;
图7A和图7B是示出当使用图5的元数据感知存储器访问端口时调试器可以如何写入一系列元数据项的流程图;
图8A和图8B示出了可以如何与每个数据颗粒相关联地提供元数据项;
图9示出了示例布置,其中,元数据项是能力标签;
图10示出了另一示例布置,其中,元数据项是分配标签;并且
图11是示意性地示出根据一个示例布置的对调试器可用的有限地址空间的图,调试器可通过该有限地址空间向元数据感知存储器访问端口发出命令。
具体实现方式
根据一个示例布置,提供了调试访问端口电路,以供调试器在执行与设备相关的调试活动时使用。具体地,该调试访问端口电路具有用于从调试器接收命令的调试接口,以及用于耦合到总线以便使得调试器能够访问设备的存储器系统的总线接口。该设备被布置为对由具有相关联的元数据项的数据颗粒形成的数据进行操作,并且总线接口被布置为使得能够通过总线在存储器系统与总线接口之间来传送数据颗粒和元数据项两者。
该调试访问端口电路具有多个存储元件,这些存储元件能够通过从调试器发出的命令来访问,使得通过总线接口在存储器系统中执行的访问是根据命令所访问的存储元件来控制的。根据本文中描述的示例,至少一个存储元件包括用于存储多个元数据项的元数据存储元件。然后,调试访问端口电路响应于来自调试器的至少一个命令来执行对存储器系统的访问,以便在元数据存储元件和存储器系统之间传输多个元数据项中的至少一个。
通过以这种方式布置调试访问端口电路,这提供了一种机制,该机制用于调试器高效地访问设备的存储器系统,以便对元数据项执行访问操作,而无需在设备中采用处理电路来代表调试器执行访问操作。通过提供可以存储多个元数据项的元数据存储元件,可以使用由调试器发出的适当的命令来将针对存储器中的一系列元数据项的值读取到元数据存储元件中,或者替代地可以将针对元数据项的一系列经更新的值存储在元数据存储元件中,然后可以由调试器触发写入操作,以便使用被保持在元数据存储元件中的值来更新被存储在存储器系统中的一系列元数据项的值。
存在可以由调试器标识要访问的元数据项的多种方式。在一个示例布置中,调试访问端口电路被布置为使得至少一个存储元件包括存储器地址存储元件,用于存储对要访问的存储地址的指示。通过被发出到存储器地址存储元件的命令,从而可以在存储器地址存储元件中存储存储器地址。调试访问端口电路然后可以被布置为参考存储器地址存储元件来确定存储器系统中用于访问多个元数据项中的至少一个元数据项的位置。
地址可以采用各种形式。在一个示例布置中,地址用于标识特定的数据颗粒,并且基于该地址可以确定相关联的元数据项在存储器中的位置,并且因此,当调试器发出命令以触发元数据访问操作时,可以使用存储器地址存储元件中的该地址来访问相关联的元数据项在存储器中的位置。
响应于由调试器通过调试器访问端口电路触发的每个存储器访问操作而访问的元数据项的数量可以根据实现方式而变化。例如,响应于来自调试器的触发存储器访问操作的单个命令,可以访问多个元数据项。然而,在替代方法中,每次调试器发出命令以触发存储器访问操作时,都可以访问单个元数据项。
存在可以针对正在被访问的每个元数据项标识元数据存储元件中的要使用的位置的多种方式。在一个示例布置中,调试访问端口电路还被布置为参考存储器地址存储元件来确定在元数据存储元件中适用于正被访问的元数据项的位置。例如,存储器地址的指定数量的低阶地址位可以用于确定元数据存储元件中的位置。通过一系列访问,每个访问与由存储器地址存储元件所标识的不同地址相关联,因此可以针对每个这样的访问标识元数据存储元件中的适用位置。
当从存储器系统执行读取访问以便检索多个元数据项的值时,则在一个示例布置中,可以将从存储器中检索出的元数据项的获得的值写入到元数据存储元件中的所确定位置,同时保持元数据存储元件中其他位置的内容不变。通过这样的方法,通过重复执行元数据访问操作(每个操作与不同的地址相关联),可以以高效的方式在元数据存储元件中建立针对多个元数据项的读取的值。然后,调试器可以随后读取元数据存储元件的内容,以便获得那些多个检索到的元数据项值。
作为使用存储器地址指示来针对每个元数据访问操作标识元数据存储元件中要访问的适当位置的替代方案,元数据存储元件可以替代地被布置为移位寄存器结构。根据这样的布置,移位操作可以用于在从存储器系统进行的读取访问期间将元数据项添加到元数据存储元件中,以及用于在对存储器系统的写入访问期间从元数据存储元件输出元数据项。
存在调试器可以触发对存储器系统的访问以便访问元数据项的多种方式。然而,在一个示例布置中,多个存储元件还包括一个或多个访问触发元件,当通过来自调试器的命令来访问这些访问触发元件时,访问触发元件使得由调试访问端口电路发起对存储器系统的访问。应当注意,尽管可以将访问触发元件布置为使得它们可以存储某些数据,但是它们并不需要以这种方式来组织,而是可以仅将它们布置为使得当它们通过来自调试器的命令被寻址时,触发对存储器系统的所需访问。
当访问不仅涉及访问元数据项,而且还涉及访问相关联的数据颗粒的至少一部分时,如果需要,可以将数据颗粒的值(或其相关部分)暂时地存储在访问触发元件中,但在替代布置中,数据颗粒(或其相关部分)的值可以直接通过访问触发元件(因此,对于写入操作,数据颗粒或其一部分的值可以直接被传递到总线,而对于读取操作,读取的数据可以被直接从总线传递到调试器)。
在一个示例布置中,调试访问端口电路可以支持多种不同类型的访问操作。在一个示例配置中,多个存储元件还可以包括模式控制存储元件,该模式控制存储元件能够通过来自调试器的命令来访问,以标识当一个或多个访问触发元件被访问时要执行的访问操作的类型。因此,根据这种方法,访问触发元件可以是通用元件,当其通过来自调试器的命令而被寻址时,使得发生对存储器系统的访问,然后被执行的访问类型由模式控制存储元件的当前内容决定。
然而,在替代布置中,可以不使用这样的模式控制存储元件,而是可以提供多个不同的访问触发元件。特别地,在一个示例布置中,所述一个或多个访问触发元件可以包括多个访问触发元件,每个访问触发元件与访问操作的不同类型相关联,并且调试器被布置为:当发出命令以发起对存储器系统的访问操作时,在命令中标识用于要被发起的访问操作的类型的适当的访问触发元件。因此,根据该实施例,不同的访问触发元件与访问操作的不同类型相关联,并且考虑到调试器希望执行的访问操作的类型,调试器向适当的访问触发元件发出命令。
不管是使用模式控制存储元件,还是使用多个不同的访问触发元件,调试访问端口电路都可以被布置根据从调试器接收到的命令,通过总线接口发起来自支持的访问操作集中的访问操作。
例如,支持的访问操作集可以包括以下写入操作中的一者或多者:用于使用从元数据存储元件获得的值来更新元数据项的值,并且使用来自调试器的命令所提供的数据值来更新相关联的数据颗粒的至少一部分的当前值的写入操作;用于使用从元数据存储元件获得的值来更新元数据项的值,同时保持相关联的数据颗粒的当前值的写入操作;用于使用从元数据存储元件获得的值来更新元数据项的值,并且将相关联的数据颗粒的至少一部分的值更新为已知值的写入操作;用于将数据颗粒的至少一部分写入到存储器系统,并且保持相关联的元数据项的当前值的写入操作;用于将数据颗粒的至少一部分写入到存储器系统,并且将相关联的元数据项的值更新为默认值的写入操作。
因此,将认识到,调试器可以通过调试访问端口电路来触发各种不同类型的写入操作。
作为另一示例,支持的访问操作集可以包括以下读取操作中的一者或多者:用于从存储器系统中读取元数据项并将该读取的元数据项的值存储在元数据存储元件中,并且附加地从存储器系统中读取相关联的数据颗粒的至少一部分的读取操作;用于从存储器系统中读取元数据项并将该读取的元数据项的值存储在元数据存储元件中,而不附加地读取相关联的数据颗粒的读取操作;用于从存储器系统中读取数据颗粒的至少一部分,而不读取相关联的元数据项的读取操作。因此,可以看出调试访问端口电路的使用还为调试器提供了很大的灵活性,可以执行读取操作的类型。
取决于元数据的形式,每个元数据项可以包括一个或多个位。作为特定示例,每个元数据项可以是标识相关联的数据颗粒是否指定能力的能力标签。对基于能力的架构的兴趣日益增加,在该架构中,针对给定过程定义了某些能力,如果尝试执行所定义的能力之外的操作,则会触发错误。有界指针是能力的示例。指针本身例如可以指向或用于确定要访问的数据值或要执行的指令的地址。然而,指针也可以具有相关联的范围信息,该范围信息指示当使用指针时的允许地址范围。这可能是有用的,例如,用于确保根据指针确定的地址保持在一定范围内以维护行为的安全性或功能正确性。在这样的基于能力的系统中,重要的是要知道任何特定的数据颗粒是与能力相关还是与通用数据相关,并且能力标签可用于此目的。
作为元数据项的另一示例,元数据项可以是分配标签,该分配标签标识相关联的数据颗粒的分配策略。这样的分配标签也可以称为防护标签。防止某些存储器使用错误的一种方法可以是提供防护标签,该防护标签与一个或多个存储器位置的块(那些一个或多个存储器位置中的数据是数据颗粒)相关联地存储在存储器系统中。当基于标识存储器系统中特定寻址位置的目标地址来请求标签防护存储器访问操作时,存储器访问电路可以将与目标地址相关联的地址标签与被存储在存储器中并且与一个或多个存储位置的块相关联的防护标签进行比较,该块包括由目标地址所标识的寻址位置。存储器访问电路可以生成是否在防护标签和地址标签之间检测到匹配的指示。此指示可用于控制是否允许存储器访问成功或后续操作是否可以成功,或者该指示仅被报告,同时允许存储器访问正常进行。
由调试访问端口电路提供的、用于使得调试器发出命令以访问存储器系统的调试接口可以采用各种形式。然而,由于要在存储器系统中执行的访问是通过向由调试访问端口电路提供的相对较小的一组存储元件发出命令来促使的这一事实,调试接口可以采取相对紧凑的形式。仅作为示例,调试接口可以是JTAG、串行线、或PCI接口中的一者。
在一个示例布置中,多个存储元件存在于地址空间中,并且在调试接口处接收到的命令通过指定地址空间中的地址来标识与该命令相关的存储元件。这提供了用于标识各种存储元件的高效机制。
多个存储元件可以采取各种形式,但是在一个示例布置中包括多个寄存器。
在一个示例实现方式中,调试访问端口电路响应于来自调试器的命令,通过总线接口发起访问操作的多个迭代,针对每个迭代,被存储在存储器地址存储元件中的存储器地址指示被递增。
在一个示例实现方式中,存储器地址指示所递增的量可以根据正在被执行的访问操作的类型而变化。例如,在一个示例实现方式中,当访问操作需要元数据项和数据两者都被访问时,存储器地址指示基于当前迭代中所访问的数据量而被递增,以便针对下一迭代提供地址指示。然而,当访问操作仅需要元数据项被访问时,存储器地址指示可以被递增数据颗粒大小的n倍,其中,n等于当前迭代中所访问的元数据项的数量,以便针对下一迭代提供地址指示。
现在将参考附图描述具体示例。
图1是根据一个示例配置的系统的框图。调试器10用于执行针对设备的调试操作。该设备可以采用各种不同的形式,但是出于说明的目的,图1中的设备包括一个或多个中央处理单元(CPU)15,这些中央处理单元(CPU)15通过互连30连接到存储器35和一些外围设备40。调试器可以通过相关联的存储器访问端口20、25建立到设备的多个总线连接,这样的存储器访问端口在本文中也被称为调试访问端口电路。如图1所示,提供了第一存储器访问端口20,调试器可通过该第一存储器访问端口20发出命令以使一个或多个CPU 15执行某些操作。存储器访问端口20通过总线22耦合到CPU,存储器访问端口可以通过总线22指示CPU执行如从调试器接收的命令所指示的某些操作,并且数据可以通过总线22在存储器访问端口和CPU之间的两个方向上流动。
根据本文描述的技术,提供了附加的存储器访问端口25,其是元数据感知的,并且特别地可以耦合到总线27,数据颗粒和相关联的元数据项两者都可以通过总线27而被传输。元数据感知存储器访问端口25提供了这样的机制,调试器10可以通过该机制直接访问存储在存储器35中的元数据项,从而支持直接通过调试器来读取元数据项和对元数据项进行写入,而无需在CPU 15中的一个中发起元数据访问操作。
图2是更详细地示出根据一个示例布置的在元数据感知存储器访问端口25中提供的组件的框图。存储器访问端口25具有用于耦合到调试器10的调试接口50和用于耦合到总线27的总线接口75。在存储器访问端口中,提供了多个存储元件,这些存储元件能够通过从调试器10发出的命令来访问。特别地,在图2所示的示例中,各种存储元件采用不同寄存器的形式。较小的地址空间与存储器访问端口相关联,调试器发出的命令可以通过标识与某个特定的寄存器相关联的地址来将该寄存器作为目标。因此,每个命令可以指定访问端口(AP)寄存器地址,以及一些伴随的“数据”。数据可以采用各种形式,取决于命令所访问的寄存器。
因此,当调试器希望访问存储器中的地址时(例如,以针对相关联的数据颗粒和/或与该数据颗粒相关联的元数据项执行访问),它可以发出标识总线地址寄存器55的命令,其中与该命令一起提供的数据是对要访问的存储器中的地址的指示。当向总线地址寄存器55发出这样的命令时,用该命令所提供的数据更新总线地址寄存器的内容,以便标识感兴趣的存储器地址。
还可以提供数据寄存器60,并且当命令被从调试器发出到数据寄存器时,这将触发存储器访问端口使用总线地址寄存器55中提供的存储器地址来发起对存储器的访问操作。对于用于发起写入操作的命令,可以指定相关联的写入数据,例如以标识要访问的数据颗粒的至少一部分的经更新值,并且如果需要,可将该数据临时地缓冲在数据寄存器60中。替代地,可能不需要在数据寄存器本身中存储任何数据,而是可以将数据直接传递到总线,其中对数据寄存器60的访问仅用作触发执行写入操作的机制。
类似地,对于读取操作,当与目标数据颗粒的至少一部分有关的读取数据被返回到存储器访问端口25时,该读取数据可以被临时缓冲在数据寄存器60中,或者替代地,该读取数据可以直接通过访问端口以返回到调试器10,在这种情况下,数据寄存器60本身也不用于存储数据,而是对它的访问仅被用于触发读取操作。
如前所述,除对存储器中的数据颗粒执行读取操作和写入操作外,调试器可能希望在某些时间点访问与那些数据颗粒相关联的元数据项。这样的访问可以在相关联的数据颗粒被访问的同时执行,或者替代地,可能期望在不访问相关联的数据颗粒的情况下访问元数据项。为了促进这样的元数据访问操作,提供了能够存储多个元数据项的元数据寄存器70。可以存储在元数据寄存器中的元数据项的数量将取决于元数据寄存器的大小以及形成每个元数据项的位数。在许多情况下,元数据项可能比相关联的数据颗粒小得多,并且实际上每个元数据项可能只包括一个或几个信息位。在这种情况下,有可能将大量的元数据项存储在元数据寄存器中,从而允许通过从调试器10经由元数据感知存储器访问端口25发出适当的命令来批量访问全部一系列的元数据项。
因此,当期望对一系列元数据项执行写入操作时,可以通过调试器向元数据寄存器70发出命令来将针对那些元数据项的新值存储在元数据寄存器70中,其中用于该命令的相关联的“数据”提供针对一系列元数据项的经更新值。当元数据寄存器70被访问时,针对元数据项的那些新值然后将被存储在元数据寄存器中的相应位置中。
然后可以通过向数据寄存器60发出一系列命令来触发一系列写入操作,并且总线地址寄存器55的内容被适当地更新以识别用于每个写入操作的地址。虽然在某些情况下,调试器可以在每个写入命令被发出到数据寄存器60之前发出单独的命令以更新总线地址寄存器55,但是在替代方法中,存储器访问端口可以包括地址递增电路,使得总线地址寄存器55中的地址可在每个写入命令之后递增某个量,从而避免调试器在每个写入操作的执行之间单独发出命令以更新总线地址寄存器内容55的需要。
元数据感知存储器访问端口25还包括总线控制寄存器65,该总线控制寄存器65可以通过来自调试器的适当命令而被访问,并且其内容用于标识当命令随后被发出到数据寄存器60时要执行的访问操作的类型。因此,总线控制寄存器的内容可以确定是执行写入访问操作还是执行读取访问操作,并且还可以标识要执行的写入操作或读取操作的类型,例如,是要访问数据颗粒、还是要访问相关联的元数据项、或是否要访问数据颗粒和相关联的元数据项两者。
在一个实施例中,总线地址寄存器55中的地址可以标识特定的数据颗粒,但是该地址也可以用于标识要访问的相关联的元数据项。因此,当通过来自调试器的命令接触数据寄存器60以发起元数据写入操作时,数据寄存器60可以根据总线地址寄存器55的内容来确定元数据项的位置,并且可以从元数据寄存器70获得针对元数据项的经更新值。然后可以从存储器访问端口25发起元数据写入操作,以使所要求的元数据项被更新。
类似地,对于元数据读取操作,总线地址寄存器55中的地址信息可以再次用于标识相关的元数据项,并且当该元数据项的值被返回时,可以将其路由到元数据寄存器70以在元数据寄存器中的适当位置进行存储。
存在针对被执行的每个元数据访问操作标识元数据寄存器70中的适当位置的多种方式。例如,被存储在总线地址寄存器55中的地址的一定数量的低阶位可用于标识元数据寄存器中的相应位置,其中,在执行元数据写入操作时应从该位置检索值,或者在执行元数据读取操作时,检索到的值应被存储到该位置。替代地,元数据寄存器可以被布置为移位寄存器,使得当执行元数据写入操作时,表示元数据项的经更新值的一定数量的位可以被移出,或者相反地,当执行元数据读取操作时,表示读取的元数据项的位可以被移入元数据寄存器70。
图3A和3B提供了根据一个示例布置的标识调试器可以如何使用元数据感知存储器访问端口25来执行元数据项的批量读取的流程图。在步骤100处,调试器确定针对总线地址的初始地址,然后在步骤105处,调试器向总线地址寄存器55发出命令,以将该总线地址指定为数据。这使得总线地址寄存器55更新其内容,以便标识初始地址。
然后在步骤110处,调试器向总线控制寄存器65发出命令,以将要执行的读取操作的类型指定为数据。读取操作可以采取各种形式,并且可以例如指定仅要读取元数据项,或者替代地可以标识要读取元数据项和相关联的数据颗粒(或该数据颗粒的至少一部分)两者。
然后,调试器向数据寄存器60发出命令以触发执行总线控制寄存器65中所定义的类型的读取操作。此外,总线地址寄存器55中的总线地址用于确定正在被访问的存储器地址。如前所述,总线地址寄存器中的地址可以标识数据颗粒位置,但也可以用于确定相关联的元数据项在存储器系统中的位置。特别地,如稍后将参考图8A和图8B更详细地讨论的,在一些示例布置中,元数据项本身可以是半隐藏的,因为它们可能不能被可由CPU发布的地址直接寻址。然而,通过指定适当的数据颗粒,可以标识和访问相应的元数据项。
在步骤120处,当接收到读取的元数据项时,该元数据项然后被存储在元数据寄存器70的位置(该位置在本文中也被称为条目)。当元数据寄存器70被布置为移位寄存器时,这可以通过将读取的元数据值移位到元数据寄存器中来进行。替代地,如果元数据寄存器未被布置为移位寄存器,则可以使用总线地址寄存器55中的总线地址的一定数量的低阶位来标识元数据寄存器中的适当位置,其中读取的元数据项应被存储到该适当位置处。当以这种方式更新元数据寄存器时,更新过程通常被布置为使得其他位置均不受影响,并且保持其当前内容。
如步骤120所示,如果读取操作还返回全部或部分数据颗粒,则在读取的数据通过调试接口50返回到调试器之前,如果需要,可以将读取的数据暂时地缓冲在数据寄存器60中。替代地,读取的数据可以通过调试接口50被直接返回到调试器,而无需被缓冲在数据寄存器60中。
虽然在图3A中假设在步骤105、110和115处发出单独的命令,但是在替代实现方式中,可以响应于调试器发出的单个命令来执行步骤105至120中的部分或全部,例如其中地址、控制和访问命令形成单个分组。
在步骤120之后,过程然后前进到步骤125,在步骤125处确定是否还存在更多的元数据项要被读取。调试器可以控制读取的元数据项的数量,但是在一个示例布置中,调试器可能希望读取足够数量的元数据项以完全填充元数据寄存器70,然后该完全填充的元数据寄存器70被询问(interrogate),以便检索所有读取的元数据项的值。
如果在步骤125处确定存在更多的元数据项要被读取,则在一个示例布置中,调试器可以在步骤130处确定经更新地址。然而,在替代布置中,存储器访问端口25可以结合一些地址递增逻辑,在读取操作的执行之后,这些地址递增逻辑可以自动更新总线地址寄存器55的内容,因此使步骤130变得冗余。如果执行了步骤130,则过程将返回到步骤105,在步骤105处将由调试器确定的经更新地址写入总线地址寄存器55中。在下一迭代中,步骤110可能不是必需的。然而,如果总线地址寄存器内容由存储器访问端口自动更新,假设在下一迭代中执行相同类型的读取命令,则来自步骤125的“是”路径可以直接返回到图3A的步骤115,并且因此不需要重新执行步骤110。
当在步骤125确定还存在更多的元数据项要被读取时,总线地址寄存器55中的地址需要递增的量将取决于当前读取操作所访问的元数据项的数量。如果单个元数据项被访问,则例如可以更新地址,使得地址递增数据颗粒大小。但是,如果多个元数据项被访问,则地址可以递增数据颗粒大小的倍数。
此外,如果除了元数据项之外还正在访问其他数据,则单次数据访问可能访问小于颗粒大小。作为结果,则地址可以递增小于颗粒大小,并且特别地,地址可以仅递增所访问的数据的大小。因此,该地址可保持在同一颗粒内,以进行下一迭代,并且随后的访问将访问同一元数据项。
一旦在步骤125处确定不存在更多的元数据项要被读取,则过程可以前进到步骤135,在步骤135处,调试器可以向元数据寄存器70发出命令,以便读取出被存储在其中的多个元数据项。
图4A和图4B提供了流程图,以示出这样的步骤,可以执行这些步骤以使得调试器能够使用图2的元数据感知存储器访问端口来执行元数据项的批量写入。在步骤200处,调试器向元数据寄存器70发出命令,以指定多个元数据项的数据值,从而将那些元数据项值存储在元数据寄存器中。然后,步骤205、210、215和220对应于图3A的步骤100、105、110和115。然而,在步骤215处,提供有发出到总线控制寄存器的命令的数据将标识要执行的写入操作的类型,例如写入操作是要执行元数据项的写入同时保持相关联的数据颗粒的值,还是要替代地执行元数据项的写入并且还执行写入以更新数据颗粒的至少一部分。
虽然在图4A中假设在步骤210、215和220处发出单独的命令,但是在替代实现方式中,可以响应于调试器发出的单个命令来执行步骤210至220中的部分或全部,例如其中地址、控制和访问命令形成单个分组。
一旦在步骤220处向数据寄存器60发出了命令以触发写入操作的执行,则在步骤225处,使用从元数据寄存器的条目中提取的元数据项来执行写入操作。如同先前讨论的读取操作一样,在一个示例布置中,可以将存储在总线地址寄存器55中的地址的一定数量的低阶位用于标识元数据寄存器中的适当条目。然而,在元数据寄存器被布置为移位寄存器的另一示例布置中,可以通过从移位寄存器中移出一定数量的位来获得相关的元数据项值,从移位寄存器中移出的位的数量取决于形成每个元数据项的位的数量。
此外,如果至少一部分数据颗粒也作为写入操作的一部分被更新,则可以在被发送到数据寄存器60以触发写入操作的命令中指定该数据的值,其中该写入数据被暂时地缓冲在数据寄存器60中(如果需要的话)。替代地,写入数据可以直接被传递到总线27,而无需被缓冲在数据寄存器60中。
在步骤230处,确定是否存在更多的元数据项要写入。调试器通常将确定希望针对其执行写入操作的元数据项的数量,但是在一个示例布置中,调试器可能希望更新数量等于可以被存储在元数据寄存器70中的单独元数据项的数量的元数据项。因此,如果在元数据寄存器70中至少存在一个尚未使用的元数据项值,则将确定还存在更多元数据项要写入。
如果确定还存在更多的元数据项要写入,则在步骤235处,调试器可以在过程返回到步骤210之前确定经更新地址。在该下一迭代中,步骤215可能不是必需的。然而,在替代布置中,存储器访问端口25可以包括用于在写入操作的执行之后自动递增总线地址寄存器55中的地址的递增电路,从而避免了对步骤235的需要,在这种情况下,假定在下一迭代中要执行相同类型的写入命令,过程可以直接返回到图4A的步骤220,因此不需要重新执行步骤215。
图5示出了用于元数据感知存储器访问端口的替代布置,其中可以避免对总线控制寄存器65的需求。如图5所示,元数据感知存储器访问端口25’包括如图2所示的总线地址寄存器55和元数据寄存器70,并且还包括调试接口50和总线接口75。然而,提供了多个数据寄存器250,一个数据寄存器与所支持的每种访问操作类型相关联。根据这种方法,不需要总线控制寄存器65,而是调试器向与所需存储器访问相关联的特定数据寄存器发出命令。因此,可能存在与不同类型的写入命令相关联的多个数据寄存器,以及与不同类型的读取命令相关联的多个数据寄存器。这些写入命令和读取命令中的至少一部分将涉及针对元数据项执行写入操作或读取操作,并且可以以与先前参考图2讨论的相同方式在元数据寄存器70中访问元数据项。
图6A和图6B提供了与图3A和图3B类似的流程图,但是使用了如图5所示的元数据感知存储器访问端口25’的形式。步骤300和305对应于图3A的步骤100和105。然后,在步骤310处,调试器向所需的读取操作类型的适当数据寄存器发出命令,以便使用存储在总线地址寄存器55中的总线地址来触发该所需的读取操作的执行。因此,可以看出,在此步骤中需要发出单个命令,而不是向总线控制寄存器发出一个命令,然后向数据寄存器发出另一个命令。
然后,步骤315、320、325和330对应于图3A和图3B的步骤120、125、130和135。如果每个迭代之间的地址更新在存储器访问端口25’中自动发生,则来自步骤320的“是”路径可以返回到步骤310,而不是返回到步骤305。
图7A和图7B提供了与图4A和图4B的流程图相对应的流程图,但是图7A和图7B描述了当利用图5的元数据感知存储器访问端口25’时可以如何执行元数据项的批量写入。步骤400、405和410对应于图4A的步骤200、205和210。然后,在步骤415处,调试器向所需的写入操作类型的适当数据寄存器发出命令,以便使用总线地址寄存器中的总线地址来触发该所需的写入操作的执行。因此,这避免了向总线控制寄存器发出单独的命令并且然后向数据寄存器发出单独的命令的需要。
然后,步骤420、425、430和435对应于图4B的步骤225、230、235和240。如果在每个迭代之间在存储器访问端口25’中自动调整地址,而避免了对步骤430的需要,则来自步骤425的“是”路径可以直接返回到步骤415。
图8A示出了存储器地址空间以及该地址空间中各种数据颗粒450和相关联的元数据项455的存在。然而,在一个示例布置中,元数据项本身不是可直接寻址的,因此可以被视为半隐藏的。而是,如图8A的下部图所示,可寻址地址空间是根据数据颗粒指定的。在该示例中,字节地址0将导致第一数据颗粒被访问,字节地址16将导致第二数据颗粒被访问等。然而,元数据项455与每个数据颗粒相关联。那么,当使用元数据访问操作时,尽管地址仍标识数据颗粒,但该地址可用于标识感兴趣的相应元数据项455,并使该元数据项被访问。
图8B示出了元数据项的两个具体示例形式。在两个示例中,都假定数据颗粒的大小为16个字节,但是在其他实现方式中,数据颗粒的大小可以不同。根据能力示例,每个16字节的数据颗粒具有相关联的一位元数据,在本文中也称为能力标签(capability tag),其用于标识相关联的数据颗粒是标识能力还是仅标识通用数据。
图8B中的第二示例是示出了分配标记,其中在所示的特定示例中,4位元数据与每个16字节颗粒相关联。这4位元数据可以称为分配标签,在此也称为防护标签。当对存储器中的特定位置进行访问请求时,可以与目标地址相关联地指定地址标签,并且可以将该地址标签与和存储器中相关数据颗粒相关联的分配标签进行比较。取决于是否在防护标签和地址标签之间检测到匹配,可以采取不同的动作。
元数据项可以采用各种形式,但是以下将参考图9和图10讨论两个示例。
图9示意性地示出了如何将标记位与各个数据块相关联地使用,以标识那些数据块是表示能力(在这种情况下为有界指针和相关联的限制信息)还是表示常规数据。特别地,能力感知系统中的存储器地址空间510可以存储一系列数据块515,这些数据块515通常将具有指定大小。纯粹出于说明的目的,在此示例中假定每个数据块包括128个位。与每个数据块515相关联地,提供了标签字段520,该标签字段520在一个示例中是被称为标签位的单个位字段,其被设置为标识相关联的数据块表示能力,并且被清除来指示相关联的数据块表示常规数据并且因此不能视为能力。将认识到,与设置或清除状态相关联的实际值可以根据实施例而变化,但是仅出于说明的目的,在一个实施例中,如果标签位的值为1,则指示相关联的数据块为能力,如果其值为0,则指示相关联的数据块包含常规数据。
当能力被加载到有界的指针寄存器(在此也称为能力寄存器,例如图9所示的能力寄存器500)中时,则标签位随着能力信息移动。因此,当能力被加载到能力寄存器500中时,指针502、范围信息504和限制信息506(也称为许可信息)将被加载到能力寄存器中。此外,与该能力寄存器相关联地,或者作为该能力寄存器中的特定位字段,标签位508将被设置以标识内容表示能力。类似地,当将能力存储回存储器中时,与存储能力的数据块相关联地设置相关标签位520。通过这种方法,可以在能力和常规数据之间进行区分,从而确保常规数据不能被用作能力。
作为可以应用本技术的元数据项的另一示例,图10示意性地示出了标签防护存储器访问的概念(防护标签在本文中也称为分配标签)。可以将用于指代存储器系统中的存储器位置的物理地址空间在逻辑上划分为多个块630,每个块630包括一定数量的可寻址位置。为了简洁起见,在图10的示例中,每个块630包括四个存储器位置,但是也可以使用其他块大小。每个块630与相应的防护标签632相关联。与一定数量的块630相关联的防护标签可以被聚集在一起,并被存储在物理地址空间中的不同架构化可访问(architecturallyaccessible)存储器位置634中,或者被存储在主存储器中提供的非架构化可访问(不映射到相同的物理地址空间)的附加存储位置中。在某些情况下,可以优选地使用单独的非架构化可访问存储,以避免用尽数据缓存中的空间来缓存防护标签值,这可能影响常规代码的执行,并且可能使一致性管理更复杂。可以在处理电路15中提供附加的标签缓存,用于从非架构化可访问存储中缓存标签值,以实现比必须从主存储器访问标签更快的访问速度。
标签存储位置634对应于每个块630的特定映射可以由处理电路15的加载/存储单元控制,并且可以是硬连线的或者可以是可编程的。替代地,存储器系统35可以确定标签的存储位置,并且处理电路不需要知道或关心标签的存储位置。尽管在图10中,每个标签632与物理地址块相关联,但是也可以在虚拟存储器地址空间中提供与虚拟存储器位置相关联的防护标签632,但这可能需要在每次存储器访问上进行一些附加的地址转换。因此,通过将防护标签632与物理存储器位置相关联,这可以提高性能。通常,对于特定的实现方式,确切地选择防护标签632如何与物理地址空间的相应块630相关联。通常,所需要的是与给定的存储器块相关联的防护标签632可以被访问和比较。
因此,当需要标签防护存储器访问时,将地址标签640(其与标识要被访问的寻址位置644的目标地址642相关联)与和包括寻址位置644的存储器位置的块630相关联的防护标签632进行比较。例如,在图10中,目标地址642指向存储器中的某位置B1,在图10的地址空间中标记为644。因此,将和包括位置B1的位置B的块相关联的防护标签B与和目标地址642相关联的地址标签640进行比较。如图10的顶部所示,可以将地址标签640作为目标地址本身的选择的位的函数来确定。特别地,可以根据目标地址的一部分中的位来确定地址标签,该部分未被用于指示要被选择作为寻址位置644的特定存储器位置。例如,在一些实现方式中,目标地址的位的顶部部分可以总是具有某固定值(例如,符号扩展(全0或全1),并且因此可以通过用任意标签值重写这些未使用的位来用地址标签640标记地址。例如,特定的地址标签值可以由程序员或编译员来选择。地址标签和防护标签632可以是相对小数量的位,例如4位,并且因此不需要占用存储器中和目标地址中的大量空间。提供4位的标签空间(即,16个可能的标签值)通常可以足以检测许多常见类型的存储器访问错误。
因此,当由任何CPU 15执行标签防护存储器访问时,该CPU 15的加载/存储单元将地址标签640和与包括寻址位置644的块630相关联的防护标签632进行比较,并确定它们是否匹配(替代地,可以在存储器系统35中执行标签比较)。加载/存储单元生成匹配指示,该匹配指示指示地址标签640和防护标签632是否匹配。例如,该匹配指示可以是在地址标签640和防护标签632之间存在不匹配的情况下生成的故障信号,或者是被放置在状态寄存器中的指示是否匹配的指示,或者是被添加到错误报告以指示检测到错误的地址和/或触发了错误的指令的指令地址的条目。
通过使用参照图2或图5讨论的形式的存储器访问端口,可以使相对较小的地址空间对调试器可用,例如图11所示的地址空间700。通过该小的地址空间,调试器可以发出命令,这些命令可以使得对正在被调试的设备的存储器35中大得多的地址空间进行访问,并且还可以指定要执行的各种不同类型的访问操作。如图11中示意性示出的,地址空间700中的不同地址可用于标识存储器访问端口中的不同寄存器。例如,命令中所指定的地址705可以标识总线地址寄存器55,另一个地址710可以标识数据寄存器60,另一个地址715可以标识元数据寄存器70,而另一个地址720可以标识总线控制寄存器65。
当使用图5的替代方法时,其中不使用总线控制寄存器,则可以使用各种不同的地址710、725、730来标识可以向其发出命令的不同数据寄存器。
由于所需的地址空间700较小,因此可以在调试器10和存储器访问端口25之间提供相对简单的接口。例如,调试接口可以由JTAG、串行线或PCI接口、或任何其他合适的接口形成。
尽管在图11中,通过特定示例将地址空间示出为大小为4K字节,但是应当理解,在其他实现方式中,地址空间可以具有不同的大小。实际上,在某些实现方式中,地址大小可以明显小于该地址大小,例如256个字节可能就足够了。
从以上对各种示例配置的描述中,将认识到,本文中所描述的技术提供了一种高效机制,该机制用于调试器以除了允许在存储器中访问相关联的数据颗粒外还允许访问元数据项(或允许在存储器中访问元数据项,而非相关联的数据颗粒)的方式来直接发起存储器访问。然后,可以在需要时高效地和原子地执行所需的访问操作,而无需停止设备的处理电路上的处理。特别地,通过使用这里描述的元数据感知存储器访问端口,调试器可以访问存储器中的元数据项,而无需使用设备的处理电路来执行必要的元数据访问操作。
在本申请中,词语“被配置为……”用于表示装置的元件具有能够执行所定义的操作的配置。在此上下文中,“配置”是指硬件或软件的互连的布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或者可以对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着需要以任何方式改变装置元件以提供所定义的操作。
尽管在此参考附图详细描述了本发明的说明性实施例,但是应当理解,本发明不限于这些精确的实施例,并且在不脱离由所附权利要求所限定的本发明的范围和精神的情况下,本领域技术人员可以在其中实现各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,可以将从属权利要求的特征与独立权利要求的特征进行各种组合。
Claims (22)
1.一种调试访问端口电路,包括:
调试接口,用于接收来自调试器的命令;
总线接口,用于耦合到总线以使得所述调试器能够访问设备的存储器系统,所述设备对由具有相关联的元数据项的数据颗粒形成的数据进行操作,并且所述总线接口使得能够通过所述总线在所述存储器系统和所述总线接口之间传送所述数据颗粒和所述元数据项两者;
多个存储元件,能够通过从所述调试器发出的所述命令来访问,使得根据所述命令所访问的存储元件来控制通过所述总线接口在所述存储器系统内执行的访问;
所述多个存储元件中的至少一个存储元件包括用于存储多个元数据项的元数据存储元件;并且
其中,所述调试访问端口电路响应于来自所述调试器的至少一个命令来执行对所述存储器系统的访问,以便在所述元数据存储元件和所述存储器系统之间传输所述多个元数据项中的至少一个元数据项。
2.根据权利要求1所述的调试访问端口电路,其中:
所述多个存储元件中的至少一个存储元件包括存储器地址存储元件,用于存储要访问的存储器地址的指示;并且
所述调试访问端口电路被布置为参考所述存储器地址存储元件来确定所述存储器系统中用于访问所述多个元数据项中的至少一个元数据项的位置。
3.根据权利要求2所述的调试访问端口电路,其中,所述调试访问端口电路还被布置为参考所述存储器地址存储元件来确定所述元数据存储元件中用于所述多个元数据项中的至少一个元数据项的位置。
4.根据权利要求3所述的调试访问端口电路,其中,所述存储器地址的指定数量的低阶地址位用于确定所述元数据存储元件中的位置。
5.根据权利要求3或4所述的调试访问端口电路,其中,在从所述存储器系统进行的读取访问期间,从所述存储器系统检索到的元数据项被写入到所述元数据存储元件中的所确定的位置,同时保持所述元数据存储元件中其他位置的内容不变。
6.根据权利要求1或2所述的调试访问端口电路,其中,所述元数据存储元件被布置为移位寄存器结构,使得在从所述存储器系统进行的读取访问期间,移位操作用于将元数据项添加到所述元数据存储元件中,并且在对所述存储器系统的写入访问期间,移位操作用于输出来自所述元数据存储元件的元数据项。
7.根据前述权利要求中任一项所述的调试访问端口电路,其中,所述多个存储元件还包括一个或多个访问触发元件,当通过来自所述调试器的命令来访问所述一个或多个访问触发元件时,所述一个或多个访问触发元件使得由所述调试访问端口电路发起对所述存储器系统的访问。
8.根据权利要求7所述的调试访问端口电路,其中,所述多个存储元件还包括模式控制存储元件,该模式控制存储元件能够通过来自所述调试器的命令而被访问,以标识当访问所述一个或多个访问触发元件时要执行的访问操作的类型。
9.根据权利要求7所述的调试访问端口电路,其中,所述一个或多个访问触发元件包括多个访问触发元件,每个访问触发元件与不同类型的访问操作相关联,并且所述调试器被布置为当发出命令以发起对所述存储器系统的访问操作时,在所述命令中针对要被发起的访问操作的类型标识适当的访问触发元件。
10.根据前述权利要求中任一项所述的调试访问端口电路,其中,所述调试访问端口电路被布置为根据从所述调试器接收到的命令,通过所述总线接口发起来自支持的访问操作集中的访问操作。
11.根据权利要求10所述的调试访问端口电路,其中,所述支持的访问操作集包括以下写入操作中的一者或多者:
用于使用从所述元数据存储元件获得的值来更新元数据项的值,并且使用来自所述调试器的命令所提供的数据值来更新所述相关联的数据颗粒的至少一部分的当前值的写入操作;
用于使用从所述元数据存储元件获得的值来更新元数据项的值,同时保持所述相关联的数据颗粒的当前值的写入操作;
用于使用从所述元数据存储元件获得的值来更新元数据项的值,并且将所述相关联的数据颗粒的至少一部分的值更新为已知值的写入操作;
用于将数据颗粒的至少一部分写入到所述存储器系统,并且保持所述相关联的元数据项的当前值的写入操作;
用于将数据颗粒的至少一部分写入到所述存储器系统,并且将所述相关联的元数据项的值更新为默认值的写入操作。
12.根据权利要求10所述的调试访问端口电路,其中,所述支持的访问操作集包括以下读取操作中的一者或多者:
用于从所述存储器系统中读取元数据项并将该读取的元数据项的值存储在所述元数据存储元件中,并且附加地从所述存储器系统中读取所述相关联的数据颗粒的至少一部分的读取操作;
用于从所述存储器系统中读取元数据项并且将该读取的元数据项的值存储在所述元数据存储元件中而不附加地读取所述相关联的数据颗粒的读取操作;
用于从所述存储器系统中读取数据颗粒的至少一部分而不读取所述相关联的元数据项的读取操作。
13.根据前述权利要求中任一项所述的调试访问端口电路,其中,每个元数据项包括一个或多个位。
14.根据前述权利要求中任一项所述的调试访问端口电路,其中,每个元数据项是能力标签,标识所述相关联的数据颗粒是否指定了能力。
15.根据前述权利要求中的任一项所述的方法,其中,每个元数据项是分配标签,标识了所述相关联的数据颗粒的分配策略。
16.根据前述权利要求中任一项所述的调试访问端口电路,其中,所述调试接口是JTAG、串行线、或PCI接口中的一者。
17.根据前述权利要求中任一项所述的调试访问端口电路,其中,所述多个存储元件存在于地址空间中,并且在所述调试接口处接收到的命令通过指定所述地址空间中的地址来标识与该命令相关的存储元件。
18.根据前述权利要求中任一项所述的调试访问端口电路,其中,所述多个存储元件包括多个寄存器。
19.根据从属于权利要求2的前述权利要求中的任一项所述的调试访问端口电路,其中,所述调试访问端口电路响应于来自所述调试器的命令,通过所述总线接口发起访问操作的多个迭代,针对每个迭代,存储在所述存储器地址存储元件中的存储器地址指示被递增。
20.根据权利要求19所述的调试访问端口电路,其中:
当所述访问操作需要元数据项和数据两者都被访问时,所述存储器地址指示基于当前迭代中访问的数据量而被递增,以便针对下一迭代提供地址指示;并且
当所述访问操作仅需要元数据项被访问时,所述存储器地址指示被递增数据颗粒大小的n倍以针对下一迭代提供地址指示,其中,n等于所述当前迭代中访问的元数据项的数量。
21.一种操作调试访问端口电路的方法,包括:
接收来自调试器的命令;
提供总线接口,所述总线接口用于耦合到总线以使得所述调试器能够访问设备的存储器系统,所述设备对由具有相关联的元数据项的数据颗粒形成的数据进行操作,并且所述总线接口使得能够在所述存储器系统和所述总线接口之间通过所述总线来传送所述数据颗粒和所述元数据项两者;
提供多个存储元件,所述多个存储元件能够通过从所述调试器发出的所述命令而被访问,使得根据所述命令所访问的存储元件来控制通过所述总线接口在所述存储器系统中执行的访问;
将所述多个存储元件中的至少一个存储元件提供为用于存储多个元数据项的元数据存储元件;并且
响应于来自所述调试器的至少一个命令来执行对所述存储器系统的访问,以便在所述元数据存储元件和所述存储器系统之间传输所述多个元数据项中的至少一个元数据项。
22.一种调试访问端口电路,包括:
调试接口装置,用于接收来自调试器的命令;
总线接口装置,用于耦合到总线以使得所述调试器能够访问设备的存储器系统,所述设备对由具有相关联的元数据项的数据颗粒形成的数据进行操作,并且所述总线接口装置使得能够在所述存储器系统和所述总线接口装置之间通过所述总线来传送所述数据颗粒和所述元数据项两者;
多个存储元件装置,能够通过从所述调试器发出的所述命令而被访问,使得根据所述命令所访问的存储元件装置来控制通过所述总线接口装置在所述存储器系统中执行的访问;
所述多个存储元件装置中的至少一个存储元件装置包括用于存储多个元数据项的元数据存储元件装置;并且
其中,所述调试访问端口电路响应于来自所述调试器的至少一个命令来执行对所述存储器系统的访问,以便在所述元数据存储元件装置和所述存储器系统之间传输所述多个元数据项中的至少一个元数据项。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1803179.9 | 2018-02-27 | ||
GB1803179.9A GB2571352B (en) | 2018-02-27 | 2018-02-27 | An apparatus and method for accessing metadata when debugging a device |
PCT/GB2019/050129 WO2019166762A1 (en) | 2018-02-27 | 2019-01-17 | An apparatus and method for accessing metadata when debugging a device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111742303A true CN111742303A (zh) | 2020-10-02 |
CN111742303B CN111742303B (zh) | 2024-04-19 |
Family
ID=61903179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980014283.6A Active CN111742303B (zh) | 2018-02-27 | 2019-01-17 | 用于在调试设备时访问元数据的装置和方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11436124B2 (zh) |
EP (1) | EP3759606B1 (zh) |
JP (1) | JP7245842B2 (zh) |
KR (1) | KR102658600B1 (zh) |
CN (1) | CN111742303B (zh) |
GB (1) | GB2571352B (zh) |
IL (1) | IL276318B2 (zh) |
WO (1) | WO2019166762A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2571350B (en) * | 2018-02-27 | 2020-10-21 | Advanced Risc Mach Ltd | A method of accessing metadata when debugging a program to be executed on processing circuitry |
GB2592069B (en) * | 2020-02-17 | 2022-04-27 | Advanced Risc Mach Ltd | Address calculating instruction |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0652516A1 (en) * | 1993-11-03 | 1995-05-10 | Advanced Micro Devices, Inc. | Integrated microprocessor |
US20020087918A1 (en) * | 2000-12-28 | 2002-07-04 | Kabushiki Kaisha Toshiba | Semiconductor integrated circuit, system board and debugging system |
US20050210451A1 (en) * | 2004-03-22 | 2005-09-22 | International Business Machines Corporation | Method and apparatus for providing hardware assistance for data access coverage on dynamically allocated data |
US7269718B2 (en) * | 2004-04-29 | 2007-09-11 | International Business Machines Corporation | Method and apparatus for verifying data types to be used for instructions and casting data types if needed |
GB2493405A (en) * | 2011-08-03 | 2013-02-06 | Advanced Risc Mach Ltd | Integrated circuit debugging using barrier transactions and debug access port circuitry |
CN104541257A (zh) * | 2012-08-06 | 2015-04-22 | 先进微装置公司 | 利用元数据管理的堆栈存储器设备 |
WO2017048643A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Multi-nullification |
GB2549511A (en) * | 2016-04-20 | 2017-10-25 | Advanced Risc Mach Ltd | An apparatus and method for performing operations on capability metadata |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5287511A (en) * | 1988-07-11 | 1994-02-15 | Star Semiconductor Corporation | Architectures and methods for dividing processing tasks into tasks for a programmable real time signal processor and tasks for a decision making microprocessor interfacing therewith |
US5915083A (en) * | 1997-02-28 | 1999-06-22 | Vlsi Technology, Inc. | Smart debug interface circuit for efficiently for debugging a software application for a programmable digital processor device |
JP2907808B1 (ja) * | 1998-03-31 | 1999-06-21 | 三洋電機株式会社 | フラッシュメモリエミュレーション装置及びそれを用いたデバッグシステム |
JP2002108648A (ja) * | 2000-10-03 | 2002-04-12 | Yaskawa Electric Corp | デバッグ方法 |
US7870430B2 (en) * | 2008-02-29 | 2011-01-11 | Freescale Semiconductor, Inc. | Method and apparatus for sharing debug resources |
US8606379B2 (en) * | 2008-09-29 | 2013-12-10 | Fisher-Rosemount Systems, Inc. | Method of generating a product recipe for execution in batch processing |
US20100192026A1 (en) * | 2009-01-27 | 2010-07-29 | Microsoft Corporation | Implementations of program runtime checks |
JP5400443B2 (ja) * | 2009-03-25 | 2014-01-29 | スパンション エルエルシー | 集積回路、デバッグ回路、デバッグコマンド制御方法 |
ITTO20120851A1 (it) * | 2012-09-28 | 2014-03-29 | St Microelectronics Grenoble 2 | Sistema di debug, e relativo circuito integrato e procedimento |
US9106260B2 (en) * | 2012-12-19 | 2015-08-11 | Advanced Micro Devices, Inc. | Parity data management for a memory architecture |
US10078113B1 (en) * | 2015-06-11 | 2018-09-18 | Xilinx, Inc. | Methods and circuits for debugging data bus communications |
US10198394B2 (en) * | 2016-05-24 | 2019-02-05 | Intel Corporation | Reduced pin count interface |
-
2018
- 2018-02-27 GB GB1803179.9A patent/GB2571352B/en active Active
-
2019
- 2019-01-17 EP EP19701717.1A patent/EP3759606B1/en active Active
- 2019-01-17 CN CN201980014283.6A patent/CN111742303B/zh active Active
- 2019-01-17 US US16/966,981 patent/US11436124B2/en active Active
- 2019-01-17 JP JP2020544021A patent/JP7245842B2/ja active Active
- 2019-01-17 WO PCT/GB2019/050129 patent/WO2019166762A1/en unknown
- 2019-01-17 KR KR1020207026137A patent/KR102658600B1/ko active IP Right Grant
-
2020
- 2020-07-27 IL IL276318A patent/IL276318B2/en unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0652516A1 (en) * | 1993-11-03 | 1995-05-10 | Advanced Micro Devices, Inc. | Integrated microprocessor |
US20020087918A1 (en) * | 2000-12-28 | 2002-07-04 | Kabushiki Kaisha Toshiba | Semiconductor integrated circuit, system board and debugging system |
US20050210451A1 (en) * | 2004-03-22 | 2005-09-22 | International Business Machines Corporation | Method and apparatus for providing hardware assistance for data access coverage on dynamically allocated data |
US7269718B2 (en) * | 2004-04-29 | 2007-09-11 | International Business Machines Corporation | Method and apparatus for verifying data types to be used for instructions and casting data types if needed |
GB2493405A (en) * | 2011-08-03 | 2013-02-06 | Advanced Risc Mach Ltd | Integrated circuit debugging using barrier transactions and debug access port circuitry |
CN104541257A (zh) * | 2012-08-06 | 2015-04-22 | 先进微装置公司 | 利用元数据管理的堆栈存储器设备 |
WO2017048643A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Multi-nullification |
GB2549511A (en) * | 2016-04-20 | 2017-10-25 | Advanced Risc Mach Ltd | An apparatus and method for performing operations on capability metadata |
Non-Patent Citations (1)
Title |
---|
蔡涛;牛德姣;刘扬宽;李帅;鞠时光;: "NVMMDS――一种面向非易失存储器的元数据管理方法", 计算机研究与发展, no. 01 * |
Also Published As
Publication number | Publication date |
---|---|
EP3759606A1 (en) | 2021-01-06 |
GB2571352A (en) | 2019-08-28 |
IL276318A (en) | 2020-09-30 |
US11436124B2 (en) | 2022-09-06 |
JP7245842B2 (ja) | 2023-03-24 |
EP3759606B1 (en) | 2023-04-05 |
KR102658600B1 (ko) | 2024-04-19 |
WO2019166762A1 (en) | 2019-09-06 |
IL276318B2 (en) | 2023-08-01 |
US20200394119A1 (en) | 2020-12-17 |
KR20200123799A (ko) | 2020-10-30 |
CN111742303B (zh) | 2024-04-19 |
GB2571352B (en) | 2020-10-21 |
IL276318B1 (en) | 2023-04-01 |
GB201803179D0 (en) | 2018-04-11 |
JP2021515308A (ja) | 2021-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8156299B2 (en) | Managing memory systems containing components with asymmetric characteristics | |
US5418927A (en) | I/O cache controller containing a buffer memory partitioned into lines accessible by corresponding I/O devices and a directory to track the lines | |
US6920521B2 (en) | Method and system of managing virtualized physical memory in a data processing system | |
US7590802B2 (en) | Direct deposit using locking cache | |
CA2127081A1 (en) | Processor interface chip for dual-microprocessor processor system | |
US6904490B2 (en) | Method and system of managing virtualized physical memory in a multi-processor system | |
US6950909B2 (en) | System and method for reducing contention in a multi-sectored cache | |
JPS61114353A (ja) | 要求時ペ−ジングメモリを有するデジタルデ−タ処理システムのアクセス照合構成体 | |
US6223266B1 (en) | System and method for interfacing an input/output system memory to a host computer system memory | |
US5161219A (en) | Computer system with input/output cache | |
US5287482A (en) | Input/output cache | |
CN111742303B (zh) | 用于在调试设备时访问元数据的装置和方法 | |
JP7369701B2 (ja) | 処理回路上で実行されるべきプログラムをデバッグするときにメタデータにアクセスする方法 | |
US6397295B1 (en) | Cache mechanism for shared resources in a multibus data processing system | |
GB2037466A (en) | Computer with cache memory | |
US20220365712A1 (en) | Method and device for accessing memory | |
JPS63282544A (ja) | ワンチツプキヤツシユメモリ | |
JPH087663B2 (ja) | コンピユータ・システムおよびその記憶装置アクセス方法 | |
JPH0375850A (ja) | メモリアクセス処理装置 | |
JPH0266653A (ja) | ワンチップキャッシュメモリ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |