用于触发和跟踪初级可调节结构内的片上系统结构事务的方法和装置制造方法

文档序号:6544349阅读:148来源:国知局
用于触发和跟踪初级可调节结构内的片上系统结构事务的方法和装置制造方法
【专利摘要】本发明公开一种用于触发和跟踪初级可调节结构内的片上系统结构事务的方法和装置,所述装置包括结构跟踪钩子,用于使能在点对点集成的片上系统结构中操作的代理的调试操作。嵌入在所述IOSF内的所述结构跟踪钩子包括可编程触发和捕获逻辑、时间戳能力以及用于不允许专有事务的跟踪的安全特征。所述结构跟踪钩子可以在有损或无损模式下操作。
【专利说明】用于触发和跟踪初级可调节结构内的片上系统结构事务的方法和装置

【技术领域】
[0001]本发明涉及片上系统设备上的调试能力,并且尤其涉及在该系统的结构内执行点对点事务的调试操作。

【背景技术】
[0002]片上系统(SoC)是将诸如传统上与基于处理器的系统相关联的不同部件组合到单个芯片中,或者在一些应用中,组合到小数量的互连芯片内的集成电路。SoC可以包括高级处理器、各种同类和/或异类处理器代理以及例如以路由器、控制器、桥设备、存储器等等为例的联网设备的附加部件。
[0003]SoC的一种实现可以包括由半导体制造商发布的集成的片上系统结构(1SF)规范,以便提供用于将各种类型的知识产权(IP)块附接在SoC内的标准化裸片上互连协议。IP块可以包括诸如有序或乱序核心、固定功能单元、图形处理器和控制器的通用处理器。
[0004]通过对诸如1SF的互连协议进行标准化,因而实现用于在不同类型的芯片中广泛使用IP代理的框架。标准化的互连协议使半导体制造商能够在各种客户段上有效地设计不同类型的芯片。进而,标准化的协议规范使第三方能够设计诸如IP代理的逻辑,以便被结合到这样的芯片中。通过提供对于互连协议的许多方面的多个选项,有效地提供设计重用。
[0005]初始可调节结构(PSF)是基于1SF标准的高级可配置的SoC骨干IP。PSF用于创建1SF兼容的层级,提供IP块在SoC或I/O子系统内的互连。单个SoC可以具有一个或多个PSF,至少其中的一个经过系统代理(SA)耦接到中央处理单元(CPU)。
[0006]在PSF1.0下,所有事务经过SA到CPU。因而在SA处执行调试操作,并且SoC的所有代理是调试的潜在目标。
[0007]相比而言,PSF2.0支持代理之间的点对点事务,其基本上将SA从事务路径移除。这使调试器到达SoC上的所有实体的能力复杂。(10SF规范以及PSF1.0和PSF2.0由California, Santa Clara 的 Intel 公司开发)。
[0008]因而,需要用于支持点对点事务的集成的片上系统结构的调试方案。

【专利附图】

【附图说明】
[0009]通过参照结合附图的下面详细描述,本文档的前述方面和许多附加优点将变得更加容易理解,其中在整个附图中,类似的附图标记指代类似的部分,除非以其它方式指明。
[0010]图1是根据一些实施例的基本互连架构的简化框图;
[0011]图2是根据一些实施例的互连架构的更加详细的图;
[0012]图3是根据一些实施例的片上系统配置的方框图;
[0013]图4是根据一些实施例的这次包括用于连接到其它芯片的裸片下接口的片上系统配置的方框图;
[0014]图5是根据一些实施例的边带接口系统的图;
[0015]图6是说明根据一些实施例的边带接口信号传送的方框图;
[0016]图7是根据一些实施例的片上系统配置的详细方框图;
[0017]图8是根据一些实施例具有平台控制器集线器的片上系统的详细方框图;
[0018]图9是根据一些实施例包括用于执行调试操作的结构跟踪钩子的片上系统的方框图;
[0019]图10是根据一些实施例的图9的结构跟踪钩子的更加详细的方框图;
[0020]图11是根据一些实施例位于PSF FTH、调试代理和连接到图9的SoC的调试器之间的接口的简化方框图;
[0021]图12是表示根据一些实施例当CPU写入到代理时图9的PSF FTH的操作的流程图;
[0022]图13是说明根据一些实施例PSF FTH如何寻址动态标签用于捕获图9的SoC中的代理之间的操作的简化方框图;
[0023]图14是表示根据一些实施例的图9的PSF FTH如何寻址动态标签的流程图;
[0024]图15是表示根据一些实施例由图9的PSF FTH执行的操作的捕获的流程图;
[0025]图16是根据一些实施例的图9的PSF FTH的匹配/掩码寄存器的一个布置的方框图;以及
[0026]图17是根据一些实施例的图9的PSF FTH的配置寄存器的一个布置的方框图。

【具体实施方式】
[0027]根据本文描述的实施例,公开一种使能在点对点集成的片上系统结构(1SF)中操作的代理的调试操作的结构跟踪钩子。嵌入到1SF内的结构跟踪钩子包括可编程的触发和捕获逻辑、时间戳能力以及不允许专有事务的跟踪的安全功能。结构跟踪钩子可以在有损或无损模式下操作。
[0028]在下面的详细描述中,参照通过说明的方式示出其中可以实践本文描述的主题的具体实施例的附图。然而,可以理解,在阅读这一公开时,其它实施例对于本领域的普通技术人员来说将变得显而易见。因此,并不在限制的意义上构筑下面的详细描述,因为通过权利要求定义该主题的范围。
[0029]在详细描述结构跟踪钩子之前,对结构跟踪钩子在其中进行操作的环境的一些背景讨论是合适的。
[0030]图1是根据一些实施例的基本互连架构60的简化方框图。互连架构60可以是片上系统(SoC)或者其它半导体设备的一部分,并且包括用作各种部件之间的互连的结构50。知识产权(IP)代理30和40是独立的IP块,以便提供诸如计算、制图等等的各种功能。因而,在一些实施例中,这些IP代理是具有与1SF规范兼容的接口的IP块或逻辑设备。
[0031]结构50接口到桥20。桥20可以作为到其它系统部件的接口,无论该部件是位于相同的芯片上还是作为耦接到互连架构60的其它芯片的一部分。
[0032]互连架构60的每一个部件,即,结构50、IP代理30和40、以及桥20,可以包括一个或多个接口以便处理各种信号的通信。1SF规范定义了用于在这些接口上进行通信的信号、用于在代理之间进行信息交换的协议、用于初始化和管理信息交换的仲裁和流控制机制、所支持的地址解码和翻译能力、用于带内和带外通信的消息传送、功率管理、测试以及验证和调试支持。在一些实施例中,根据1SF规范来定义这些接口。
[0033]1SF规范包括能够针对每一个代理提供的三个独立的接口,即,初级接口、边带消息接口和用于测试的可测试或设计(DFx)接口。根据1SF规范,代理可以支持这些接口的任意组合。具体地说,代理能够支持零个或多个初级接口,零个或多个边带消息接口以及可选的DFx接口。然而,根据1SF规范,代理必须支持这些三个接口中的至少一个。
[0034]结构50可以是在不同代理之间移动数据的硬件元件。在一些实施例中,结构50的拓扑结构是产品特定的。作为示例,结构可以被实现为总线、层级总线或者级联集线器。
[0035]图2是根据一些实施例的互连架构100的更加详细的方框图。结构110包括初级接口 120、边带接口 130和DFx接口 140。初级接口 120可以用于例如在诸如中央处理单元(CPU)或其它处理器的主处理器和代理之间的带内通信。初级接口 120可以进一步使能代理和所支持的结构之间的对等事务的通信。包括存储器、输入输出(I/O)、配置和带内消息传送的所有事务类型可以经由初级接口 120进行传递。初级接口 120可以操作为用于在对等之间传输的数据和/或与上游部件的通信的高性能接口。
[0036]在一些实施例中,初级接口 120实现分离事务协议以便实现最大化并发性。S卩,该协议规定了请求阶段、授权阶段以及命令和数据阶段。在各种实施例中,初级接口 120支持三种基本的请求类型:提交的(posted),非提交的以及完成。一般来说,提交的事务是当由源发送时被该源认为是完成的事务,并且该源不接收完成消息或关于该事务的其它确认消息。提交的事务的一个这样的示例是写入事务。
[0037]相反,非提交的事务不由源认为被完成,直到该源接收到返回的消息,S卩,完成消息。非提交的事务的一个示例是读取事务,其中源代理请求数据的读取。读取事务不被代理认为是完成的,直到完成消息将所请求的数据提供到该代理。
[0038]此外,初级接口 120支持不同信道的概念,以便提供用于贯穿系统的独立的数据流的机制。初级接口 120可以包括用于初始化事务的主接口,以及用于接收事务的目标接口(未示出)。初级主接口可以被进一步细分为请求接口、命令接口和数据接口,请求接口提供对于事务的命令和数据的移动的控制。在一些实施例中,初级接口 120支持PCI排序规则和列举。
[0039]依次,边带接口 130可以是用于通信诸如状态、中断、功率管理、配置跟踪和测试模式的带外信息通信的标准机制。按照这一方式,避免了涉及用于给定实现的专用线路,增强了在多种芯片之间的IP重用的能力。与使用专用线路来处理带外通信的IP块相比较,1SF规范下的边带接口 130标准化了所有的带外通信,提升了模块化并且减少了对于不同设计之间的IP重用的验证需求。在一些实施例中,边带接口 130通信低性能信息而不是初级数据传输,该初级数据传输典型地经由初级接口 120进行通信。
[0040]如在图2中进一步说明的,IP代理30A、30B和30C分别包括相对应的初级接口90A、90B和90C,边带接口 70A、70B和70C,以及DFx接口的80A、80B和80C。如上所述,在一些实施例中,每一个代理不需要包括这些接口中的每一个,因为给定IP代理可以仅包括单个接口。
[0041]使用1SF规范,能够设计具有多种不同功能的各种类型的芯片。现在参照图3,示出了根据一些实施例的SoC的高级方框图。SoC200包括各种部件,所有这些能够被集成在单个半导体裸片上以便规定高速度和低功率的各种处理能力,消耗相对少量的资产。
[0042]SoC200包括多个核心150A-150N(被共同称为“核心150”)。在各种实施例中,核心150可以是相对简单的有序核心,或者更加复杂的无序核心。或者有序和无序核心的组合可以存在于单个SoC中。可以看出,核心150可以经由一致性互连170进行互连,其进一步耦接到例如以共享末级高速缓存(LLC)为例的高速缓存存储器160。尽管本公开的范围不局限于此,但是在一个实施例中,根据快速通道互联(QPI)?规范来设计一致性互连170。(QPI? 是 California, Santa Clara 的 Intel 公司的产品)。
[0043]如在图3中进一步看出的,一致性互连170可以经由桥180通信到可以是1SF结构的结构250。一致性互连170可以进一步经由集成的存储器控制器(MC) 190通信到片下存储器(未示出),并且可以进一步经过桥230通信到结构250。
[0044]如在图3中进一步看出的,各种部件可以耦接到结构250,包括内容处理模块(CPM) 210,其能够用于执行诸如安全处理、密码功能等等的各种操作。此外,显示处理器220可以是媒体处理管线的一部分,该媒体处理管线渲染视频用于相关联的显示(未示出)。
[0045]结构250可以进一步耦接到IP代理260。在图3的实施例中,尽管出于容易说明的目的仅示出了单个代理,但是可以理解,在不同实施例中,多个这样的代理是可能的。此夕卜,为了使能与其它片上设备的通信,结构250可以进一步与PCIe?控制器270和通用串行总线(USB)控制器280进行通信,两者都可以根据这些协议与各种设备进行通信。
[0046]最后,图3中的SoC200以桥290为特征,其能够用于与诸如开放核心协议(OCP)或ARM高级微控制器总线架构(AMBA)协议的其它协议的附加部件进行通信。
[0047]尽管在图3中将实施例表示为单个裸片SoC实现,但是能够将所述实施例进一步实现在其中多个芯片经由非1SF接口彼此进行通信的系统中。进而,本公开的范围不局限于图3的特定部件说明,因为附加的或者不同的部件可以存在于不同实施例中。
[0048]现在参照图4,示出了根据一些实施例的系统的方框图。如图4所示,系统300包括SoC200A,其包括与图3的SoC200类似的许多部件。而且,系统300包括附加的裸片下接口 240,其允许SoC200A与芯片350进行通信。系统300和芯片350本身可以是也可以不是片上系统实现。因此,SoC200A能够与芯片350进行通信,其可以包括各种功能以便根据一个或多个不同的规范使能这两个芯片之间的通信以及到诸如不同的外围设备的各种片下设备的通信。
[0049]具体地说,将第二芯片350表示为包括裸片下接口 310以便使能与SoC200A的通信,并且在一些实施例中,依次与可以是1SF结构的结构320进行通信。可以看出,结构320可以进一步耦接到与片下设备进行通信的各种控制器,包括PCIe?控制器330、USB控制器340和桥360。
[0050]如上面讨论的,在各种实施例中,所有带外通信都可以经由边带消息接口。图5是根据一些实施例的边带互连400的方框图。边带接口系统400包括如在图5中示出的经过点对点(PTP)互连450耦接的多个路由器410和420。依次,每一个路由器能够耦接到可以例如是IP代理或者给定系统的其它部件的各种端点。具体地说,路由器410耦接到多个端点430A-430E,并且路由器420耦接到多个端点440V-440Z。
[0051]图6是根据一些实施例对于边带接口 500可用的信号传送的细节的方框图。如图6所示,示出了路由器520和端点510之间的互连。路由器520可以包括目标接口 560和主接口 570。通常,目标接口 560可以配置为接收进来的信号,而主接口 570可以配置为传输出去的信号。可以看出,端点510还包括主接口 530和目标接口 540。
[0052]图6进一步示出了对于边带接口 500可用的各种信号传送的细节,包括信用信息、安置信息、消息信号传送的结束和数据。具体地说,信用更新可以作为非提交的信用更新信号(NPCUP)和提交的信用更新信号(PCCUP)经由边带接口进行通信。此外,可以提供移动信号(NPCUP和PCCUP)。此外,可以通信消息结束(EOM)信号。最后,数据可以经由有效载荷分组进行通信,在一些实施例中,该有效载荷分组经由字节宽度通信信道实现。尽管在图6中示出了这一特定实现,但是本发明的范围并不局限于此。
[0053]每当信用安置信号为高,就意味着正在返回信用。每当安置信号为高,就意味着有效载荷(例如,数据)信号有效。每当安置和EOM同时为高,就意味着当前有效载荷是消息的最后有效载荷。注意到,接口能够在相同的时钟周期中“安置”数据有效载荷并且“安置”信用。
[0054]尽管图3和图4的SoC处于高位,但是可以存在附加的功能。图7是根据一些实施例的SoC的一部分的更加详细的方框图。所表示的SoC600的部分可以对应于耦接在存储器控制器集线器或其它接口逻辑下方的非核心部分,该存储器控制器集线器或其它接口逻辑能够顺次接口到多个处理器核心并且接口到系统存储器。
[0055]因而可以看出,直接存储器互连(DMI)接口 605能够耦接到诸如输入/输出集线器的集线器610,该集线器610顺次提供各种外围设备之间的通信。尽管出于容易说明的目的而未示出,但是诸如可管理性引擎和虚拟化引擎的各种引擎可以直接耦接到集线器610。
[0056]为了根据1SF规范提供到可以是多点或者共享总线的多个总线的连接,1SF控制器615可以耦接在集线器610和总线640之间。在一些实施例中,总线640是结合该结构的元件以及路由器的1SF总线。1SF总线640可以耦接到各种控制器以便规定片下设备的控制。在图7中,PCI控制器620、SATA控制器625和USB控制器630连接到总线640。第二 1SF总线660可以耦接到系统管理总线655和实时时间(RTC)665。
[0057]在图7中可以进一步看出,第一 1SF总线640可以耦接到1SF桥645用于初级和边带信息,并且依次提供到第三总线650的互连。在一些实施例中,第三总线650根据与总线640不同的协议进行操作,并且在不同的协议下操作的各种控制器和部件可以与其进行附接。闪存控制器635耦接到总线650以便提供到非易失性存储器的接口,并且遗留设备640耦接都总线650,该遗留设备640可以实现诸如PCI规范的各种遗留功能,并且可以进一步包括中断控制器和定时器(未示出)。此外,可以提供以下所有接口:音频接口 670、USB接口 675、千兆字节以太网(GbE)接口 680、串行外围接口(SPI) 685和PCI接口 690。尽管在图7的实施例中示出了这一特定实现,但是本发明的范围不局限于此。
[0058]其它实现也是可能的。现在参照图8,示出了根据一些实施例的另一 SoC的方框图。SoC700可以配置为用于例如在服务器系统中使用。SoC700包括平台控制器集线器(PCH) 710,其可以通常包括诸如在SoC600中示出的部件(图7)。也就是说,可以存在多条1SF总线640和650,连同桥645耦接到总线。总线640可以包括耦接到其的各种代理,包括PCIe控制器620、SATA控制器625以及USB控制器630。依次地,经由1SF控制器615,可以经由附加的总线760发生通信,该附加的总线760可以与上游设备进行通信,例如核心或其它处理单元(未示出)。
[0059]在图8中可以进一步看出,为了提供与其它基于服务器的部件的通信,可以提供附加的1SF总线720,该附加的1SF总线720依次能够与1SF控制器715以及可以耦接到上游总线770的上游交换机端口 725(例如,xl6端口)进行通信。还有多个下游交换机端口 730和735可以耦接到总线720。
[0060]而且,为了使能例如与基于服务器的系统的存储单元的通信,交换机端口 740可以耦接在总线720和另一 1SF总线750之间,该另一 1SF总线750依次可以耦接到存储器控制器单元(SCU)745,该SCU745可以是用于与各种存储设备耦接的多功能设备。
[0061 ] 系统和软件调试要求流经系统的结构的事务的触发和观察能力。上面的SoC实现不是例外。由于PSF2.0增加了点对点支持,PSF是提供这些钩子的理想位置。如本文使用的,点对点事务是无需在测试中的系统的中央处理单元处进行接收的情况下从第一代理流到第二代理的事务。
[0062]图9是根据一些实施例表示作为SoC800的一部分的PSF FTH850的简化方框图。除了系统结构、PSF805和PSF815的两个实例,SoC800包括中央处理单元(CPU)810,系统代理(SA) 820,双倍数据率存储器(DDR) 830,代理755、765、825、835、845和855,革新引擎(IE) 840和调试代理860。PSF FTH850设置在结构内,特别是SoC800的PSF805内。调试器(未示出)通过调试代理860连接到SoC800。在一些实施例中,PSF805和PSF815是1SF兼容的结构部分。PSF FTH850能够嵌入在SoC的结构中,例如上面的图3、4、7和8中的SoC示例。
[0063]PSF能够用作用于多个执行环境或根的单个初级1SF结构。在系统800中,PSF由两个实例PSF805和PSF815构成,以便提供用于两个根主机CPU810和IE840的1SF结构。在这一配置中,PSF向主机地址空间中的一组1SF代理755、765、835和845以及IE地址空间中的代理825、855、IE840和调试代理860 (因此每一个地址空间被彩色编码)提供1SF结构端口。一个1SF结构端口 PSF805经过系统代理(SA) 820提供到主机地址空间的一致性结构的访问,并且一个端口 PSF815提供到革新引擎840的一致性结构的访问。
[0064]在图9的示例中,PSF结构跟踪钩子(FTH)850基于代理之间事务的计划业务模式而仅在PSF805中实现。其它实现可以包括多个PSF中的结构跟踪钩子。因而例如,第一PSF FTH可以设置在PSF805中,而第二 PSFFTH可以实现在PSF815中。在一些实施例中,当实例化PSF时,通过编译时间参数来控制包括PSF结构跟踪钩子的选项。这一灵活性允许硅区域的最佳使用率,用于调试特定SoC产品的资产。PSF FTH850提供1SF规范的触发和事务跟踪。
[0065]PSF805和PSF815作为端口进行操作以便接收一个或多个代理。在图9的系统800中,PSF805和PSF815也连接到彼此。使用仲裁来决定哪一个代理具有到其主机的访问。因而,为了访问CPU810,代理755与代理765、代理825、IE840以及PSF815进行竞争,仲裁方案解决这些实体之间的竞争。类似地,为了访问主机IE840,代理845与代理835、代理855、以及调试代理860进行竞争。
[0066]回忆到,在1SF规范(PSF2.0)的最近实现下,点对点事务是可能的。这意味着,作为一个示例,代理755可以与代理765进行通信,而不需要通过SA820 (或者CPU810)。通过将PSF FTH850插入在PSF805端口中,代理755和765之间的事务对于调试可用,不管事务的点对点本质。
[0067]图10是根据一些实施例的PSF结构跟踪钩子(FTH) 850的更加详细的方框图。回忆图2的互连架构100,结构110包括初级接口 120、边带接口 130和DFx接口 140,互连中的每一个代理连接到这些接口中的至少一个。在图10的说明中,PSF FTH850连接到作为SoC800(图9)的一部分的边带接口 770。在一些实施例中,边带接口 770根据1SF规范进行操作。
[0068]边带接口 770连接到过滤/匹配裸片上逻辑分析器触发(ODLAT)块780、打包器和流控制块785以及队列和主代理接口 790。此外,由编译时间字段795A和运行时间字段795B (共同地为配置寄存器795)构成的配置寄存器795以及掩码/匹配寄存器705经过边带接口 770可访问。图16说明了根据一些实施例的掩码/匹配寄存器705的字段配置的一种可能布置。图17说明了根据一些实施例的配置寄存器795的字段配置的一种可能布置。计数器722用于在有损事务期间保持计数,如下所述,在一些实施例中,该计数是跟踪分组有效载荷的一部分。
[0069]在一些实施例中,配置寄存器795的运行时间部分795B使PSF FTH850能够控制FTH的可用模式。掩码/匹配寄存器705执行该结构上的事务的过滤,并且控制要由PSFFTH850捕获的事物。
[0070]在1SF规范中,CMD和DATA字段是分离的总线。在一些实施例中,掩码/匹配寄存器对的数量是编译时间参数(在配置寄存器795的编译时间字段795A中找到),例如实例化PSF中的结构跟踪钩子的编译时间参数(也可在编译时间字段795A中找到),缺省为最少两个寄存器对可用(一个用于CMD并且一个用于DATA),以便支持完成跟踪。在一些实施例中,掩码/匹配寄存器705和配置寄存器795经由PSF中的边带接口 770被编程。
[0071]在一些实施例中,PSF FTH850的可用模式为:1)触发-仅信号匹配;2)0DLAT完成跟踪触发-仅信号匹配;3)捕获(CMD+DATA的双字的可配置数量,高达最大可允许的DATA有效载荷尺寸;和4)无数据捕获-仅CMD。
[0072]在一些实施例中,过滤/匹配/ODLAT块780对MCMD和MDATA输出端总线进行比较作为输入,并且将该输入值与掩码/匹配寄存器705进行比较。一旦接收到与掩码/匹配寄存器705相匹配的进来的命令(CMD)或数据(DATA),过滤/匹配/ODLAT机制780就向打包器和流控制机制785发送触发。在一些实施例中,存在分离的触发CMD和DATA用于命令和数据信号,因为它们在1SF规范下被分别处理。类似地,配置寄存器795的编译时间部分795A可以被编程以使得PSF FTH850具有用于CMD和DATA字段的分离的掩码/匹配寄存器705。
[0073]在图10中,来自两个端口的信号由过滤/匹配/ODLAT块780接收,尽管可以存在更多的端口。因而,来自端口 O和端口 1,存在四个进来的端口总线信号,端口 0MCMD762,端口 0MDATA772,端口 1MCMD782,和端口 1MDATA792,以及四个进来的有效信号,端口 OMCMD有效764,端口 OMDATA有效774,端口 IMCMD有效784以及端口 IMDATA有效794。过滤/匹配/ODLAT块780调用触发信号(每过滤/匹配对)和/或向打包器和流控制785发送匹配信号TCMD或TDATA。
[0074]在一些实施例中,基于启用和模式输入(来自配置寄存器795的运行时间部分795B)以及匹配信号(来自匹配/掩码寄存器705),打包器和流控制块785将MCMD712和MDATA714总线的捕获控制到队列结构950中。
[0075]时间戳计数器块775确保将时间戳添加到存储在队列950中的MDATA。时间戳计数器块775被同步到中央时间戳源,例如测试中的系统(例如SoCSOO)的全局定时器。在一些实施例中,时间戳是32位时间戳。因而,时间戳、匹配的命令TCMD和匹配的数据TDATA被发送到队列和主代理接口 790,以便变为将在MDATA总线714上被发送回到PSF805的有效载荷,该PSF805然后将该有效载荷发送到调试代理860。
[0076]在一些实施例中,队列和主代理接口 790能够发送事务,但是不接收事务。队列和主代理接口 790用于对被表示为TCMD或TDATA的所跟踪的事务进行排队,并且将其发送到调试代理860 (图9)。在一些实施例中,队列950的深度通过在配置寄存器795 (图17)的编译时间字段795A中的一个中找到的构建时间参数,即队列尺寸,可配置,并且根据所跟踪的事务的最小深度来调整尺寸。因而,队列和主代理接口 790使PSF FTH850看起来像代理(虽然是单路代理),以使得FTH能够使用该结构将所捕获的调试结果发送到调试代理860,该调试代理860本身连接到调试器。
[0077]在一些实施例中,队列和主代理接口 790向PSF850的中央仲裁块发送请求,并且生成适当的MCMD以便传送该写入。该事务是通过结构对于调试代理860的点对点写入。时间戳TCMD和TDATA将被作为时间有效载荷进行发送。如果PSF FTH850支持全数据捕获,则将队列950的尺寸调整到用于传送包含最大数据有效载荷加上整个初始MCMD的事务的至少最小尺寸。
[0078]除了在边带接口 770中发生的配置寄存器795的初始化以及对掩码/匹配寄存器705的编程外,PSF结构跟踪钩子850的所有事务使用该结构自身来执行。因而,进入到PSFFTH850的信号,例如MCMD、MDATA、trigger_in[N]704信号以及授权信号,经过该结构进入。类似地,出去的MCMD、MDATA和trigger_out [N] 702信号全部经过该结构。
[0079]图11是表示S0C800 (图9)上的调试代理和调试器1000之间的连接的简化方框图,用于执行SoC上的各种调试操作。在这一示例中,调试器1000由调试主机910和逻辑分析器920构成,尽管实施例不意味着局限于此。调试代理860和PSF FTH850经过PSF结构耦接到彼此,其中如在图9中说明的,PSF结构由PSF805和PSF815构成。如上所述,通过PSF FTH使用该结构,将所捕获的事务发送到调试代理860。然而PSF FTH850(图10)、配置795和掩码/匹配寄存器705的部分由调试主机910上的软件930经过边带接口 770进行编程。
[0080]在一些实施例中,掩码/匹配寄存器705包括但不局限于以下字段:1)源ID ;2)目的地ID ;3)设备地址;4)数据模式;5)安全属性;6)格式;和7)类型。这些字段中的一个或多个用于由调试器1000触发动作。
[0081]在一些实施例中,掩码/匹配寄存器705由PSF FTH850使用以便触发特定个别事务或某类事务。通过PSF,触发器输出(图10中所示的trigger_out[N]702和trigger_in [N] 704)被发送到调试器1000,并且触发器能够用于生成输出引脚上的脉冲,或者生成触发动作,例如进入CPU810(图9)上的探针模式。
[0082]探针模式是经由抽头(JTAG)控制的特殊处理器核心调试特征。探针模式用于停止处理器核心上的宏指令执行,以便能够设置硬件中断点并且检查处理器架构状态和指令边界。捕获模式是向调试代理发送所跟踪的事务的FTH模式。然后调试代理能够将所跟踪的事务存储到系统存储器或者输出到调试端口,在该调试端口处,逻辑分析器能够用于跟踪该事务。
[0083]图12说明了在一些实施例中由PSF FTH850执行的操作。在这一示例中,当CPU810以特定数据模式写入到代理845中的具体设备时,调试器1000触发探针模式进入。主机910上的软件930首先将PSF FTH编程到模式I,其为“触发-仅信号匹配”(方框1102)。软件930还使用1)CPU810的源标识符(ID);代理845的目的地ID ;3)代理内的设备的地址;和4)将在其上发生触发的数据模式对PSF FTH掩码/匹配寄存器705进行编程(方框1104)。如上面解释的,这些编程操作经过边带接口 770发生。并且,当使从PSF FTH850输出的触发生效时,调试器1000还初始化调试代理860以便进入探针模式(方框1106)。
[0084]直到CPU810将期望的数据模式写入到代理845中的设备之前,不采取进一步的行动(方框1108的“N”分支)。一旦发送了数据模式,PSF FTH850就使触发输出生效,其经过PSF结构流入到调试代理860以及调试器1000 (方框1110)。然后调试器1000能够进入期望的探针模式(方框1112)。
[0085]与CPU和代理之间的事务的上述示例相比较,当代理向另一代理生成读取指令时,该读取事务被标记有由源代理分配的动态标签,本文被称为动态寻址。当目标代理做出响应时,与这一标签值一起发送读取完成。由于标签被动态地生成,因此不能够使用静态掩码/匹配寄存器。因此,在一些实施例中,PSF FTH850实现能够用于跟踪读取完成并且在读取响应返回时生成随后的触发的裸片上逻辑分析器触发(ODLAT)机制。
[0086]图13在概念上代表这一操作,并且图14是说明由PSF FTH850执行的逐步操作的流程图。首先,调试主机910上的软件930将PSF FTH850编程到模式2,其为“ODLAT完成跟踪触发-仅信号匹配”(方框1202)。例如,PSF FTH850的过滤/匹配/ODLAT块780监控代理755和765之间的事务。代替使用掩码/匹配寄存器705,如上所述,PSF FTH850针对到代理765的读取事务来监控代理755 (方框1204)。与在图12中描述的第一模式相同,当使从PSF FTH850输出的触发生效时,调试器1000可以可选地初始化调试代理860以便进入探针模式(方框1206)。可选地,调试器1000可以对调试代理860进行编程以便进入捕获模式。
[0087]一旦识别了读取事务,无论是存储器读取、I/O读取或者配置读取(方框1208),PSF FTH850都能够读取被分配到该事务的唯一标签(方框1210)。然后,PSF FTH850的ODLAT机制780能够跟踪来自代理765的读取完成(方框1212),无论是成功的读取完成(CplID)或者失败(Cpl),通过匹配相同的标签(方框1214),此时当读取响应返回到代理755时生成触发(方框1216)。
[0088]PSF FTH850还支持流经PSF805的所有事务的命令字段(CMD)和数据(DATA)的可配置量上的可编程触发。图15是用于说明PSF FTH850的可编程捕获能力的流程图。在这一示例中,调试器1000想要观察由代理755执行的所有存储器写入操作。调试主机910上的软件930对配置寄存器795 (图17)的模式选择运行时间字段795B进行编程以将PSFFTH850设置到模式3,其为“捕获-CMD+双字的可配置数量”或者设置到模式4,其为“无数据捕获-仅CMD”(方框1302)。软件930还对掩码/匹配寄存器705进行编程以便选择调试目标(例如,源代理、目的地代理、目的地代理内的设备地址和数据模式)(方框1304)。另外,在一些实施例中,将对掩码/匹配寄存器705的格式和类型字段进行编程以便指定进行匹配的写入操作的类型。无论掩码/匹配寄存器705生成触发输出、跟踪输出或者上述两者,软件930都可以进行编程。
[0089]一旦PSF FTH850观察到写入操作(方框1306),则代理755的后续的所匹配的写入操作被发送到调试代理860,用于由调试器1000进行分析。首先,所跟踪的事务被打包器和流控制机制785进行打包(方框1308),连同由时间戳计数器块775生成的时间戳(方框1310)(图10)。使用队列和主代理接口 790,所跟踪的事务作为目的为调试代理860的新事务的有效载荷经过该结构被发送到调试代理860 (方框1312)。这由主代理790通过与其它代理针对到该结构的访问进行仲裁来实现,正如常规事务一样。调试代理860接收打包的结构(方框1314)以便由调试器1000进行分析。使用现有结构来跟踪事务的好处在于能够重用路由信道,并且不必开发新的协议和总线。
[0090]在一些实施例中,PSF FTH850能够配置为跟踪事物。PSF FTH850基于用于触发的相同的掩码/匹配寄存器750来实现用于捕获事务的逻辑。掩码/匹配寄存器705能够用于过滤要被跟踪的事物。
[0091]在一些实施例中,PSF FTH850包括安全机制以便不允许专有事务的跟踪。在一些实施例中,SoC800接受专有代理和第三方代理作为SoC的一部分。在一些实施例中,安全机制是配置寄存器795的运行时间字段795B的一部分(图17)。在一些实施例中,为SoC800的每一个代理提供唯一的安全属性值,其与每一个事务一起进行发送。使用所允许的安全属性值的掩码,PSF FTH850能够允许仅从某些代理获得触发和跟踪事务。通过包括这一安全机制,保护了每一个代理的专有利益。进而,第三方提供方能够在其代理上执行调试操作。在一些实施例中,这保护了每一个代理制造商的IP。
[0092]图16和图17是根据一些实施例分别表示掩码/匹配寄存器705和配置寄存器795的可能实现的图。掩码/匹配寄存器705的任何字段可以用于跟踪和捕获操作。安全属性字段包含作为SoC —部分的每一个专有代理的唯一安全属性字段。掩码/匹配寄存器705还包括格式和类型字段。
[0093]配置寄存器795包括在编译时间被访问的一些字段以及在运行时间被访问的其它字段。因此,配置寄存器795被划分为编译时间字段795A和运行时间字段795B。编译时间字段795A包括在PSF的实例化期间访问的FTH存在字段、用于确定掩码/匹配寄存器的数量和类型(CMD或DATA)的掩码/匹配寄存器选择字段以及用于确定队列950的尺寸(图10)的队列尺寸字段。在一些实施例中,编译时间部分795A的字段在运行时间不可编程。
[0094]运行时间字段795B包括用于选择PSF FTH850的四种操作模式之一的模式选择字段、用于确定PSF FTH850的捕获机制在有损模式中还是在无损模式中操作的有损模式选择字段以及背压机制选择字段。在一些实施例中,运行时间字段在运行时间期间可编程。下面进一步描述有损模式选择和背压机制选择字段。
[0095]在一些实施例中,PSF FTH850还支持有损操作模式或者无损操作模式。如名称所表明的,在有损模式中,PSF FTH850不处理一些操作,而在无损模式中,处理所有操作。这一功能对调试器1000给出了最大灵活性。
[0096]例如,代理755请求到PSF805的访问。然而,CPU810之前向PSF FTH850正在观察的代理845发送了请求。PSF FTH850还处于向调试代理860发送跟踪捕获事务的过程中。在通过对配置寄存器795的运行时间部分795B的有损模式选择字段进行配置而可选择的无损模式中,在代理755能够访问PSF805之前,PSF FTH850必须完成其到调试代理860的跟踪捕获事务。
[0097]返回到图10,在无损模式中,当队列950为满或者接近为满时(根据预定义的高阈值),对于PSF805的中央仲裁器(未示出),使停止信号724生效。这使队列950完全耗尽或者到达基本为空的状态(根据预定义的低阈值)。因而,停止信号724阻止PSF805中的中央仲裁逻辑授权任何进一步新的事务,这些事务被从任何代理朝向PSF进行传输。按照这一方式,在一些实施例中,PSF FTH850不错过捕获任何新的事务,同时按照无损模式传输先前匹配的事务。
[0098]相比而言,在一些实施例中,在有损模式下,PSF FTH850最小化对业务的常规流动的任何干扰。因此,如果代理755做出请求同时调试代理860正在跟踪代理845的事务,则由于PSF FTH850能够一次发送一个事务而不会丢失代理755事务。因此,在一些实施例中,同时在有损模式中,计数器722(图10)跟踪已经丢弃了多少事务,损耗阈值计数为可编程的值。计数连同跟踪分组有效载荷一起被发送。
[0099]在一些实施例中,PSF FTH850具有针对由连接到PSF的代理生成的背压事务的机制。通过对配置寄存器795的运行时间部分795B的背压机制选择字段进行编程可选择,当PSF FTH850配置为跟踪事务时,这一字段用于创建操作的无损模式。连接到中央仲裁器(未示出)的停止信号724(图10)用于背压该事务。相比于有损模式,无损模式需要更多的结构和调试代理带宽,因为无损模式在不要求大量过滤的情况下发生。
[0100]能够关掉背压机制以便最小化常规功能业务侵入。在这一“有损”操作模式中,丢弃的分组计数与所跟踪的事务被一起发送,以便指示自最后成功获取的事务以来丢弃了多少分组。这两种模式允许调试器1000在全事务跟踪与减少对系统功能的影响之间进行选择。
[0101]实施例可以用在许多不同类型的系统中。作为示例,本文描述的实现可以结合诸如处理器或者能够在单个半导体裸片上制造的其它半导体设备一起使用。在特定实现中,所述设备可以是SoC或者其它高级处理器,包括各种同类和/或异类的处理代理,以及诸如联网部件的附加部件,该联网部件例如是路由器、控制器、桥设备、存储器等等。
[0102]尽管本文结合这一 1SF规范描述了实施例,但是本公开的范围不局限于此,并且实施例可以在不同类型的系统中使用。
[0103]尽管关于有限数量的实施例描述了本发明,但是本领域的普通技术人员将意识到其各种修改和变形。所附权利要求书意在覆盖落入本发明的真实精神和范围内的所有这样的修改和变形。
【权利要求】
1.一种装置,包括: 主处理单元; 耦接到第一代理、第二代理和调试代理的结构,所述调试代理耦接到外部调试器,其中,所述第一代理在不访问所述主处理单元的情况下向所述第二代理提供事务;以及 设置在所述结构内的结构跟踪钩子,所述结构跟踪钩子对检测到在不访问所述主处理单元的情况下从所述第一代理提供到所述第二代理的事务做出响应而设置触发,其中所述触发由所述调试代理接收;并且 对未设置所述触发做出响应而捕获从所述第一代理流到所述第二代理的一个或多个后续事务,其中,所述后续事务被发送到所述调试代理。
2.根据权利要求1所述的装置,进一步包括: 通过从在所述外部调试器内执行的软件程序对掩码/匹配寄存器进行编程,所述掩码/匹配寄存器由位于所述调试器和所述结构跟踪钩子之间的边带接口访问; 其中,所述掩码/匹配寄存器确定要被监控的事务。
3.根据权利要求2所述的装置,进一步包括: 用于接收一个或多个所捕获的后续事务的队列。
4.根据权利要求2或3所述的装置,进一步包括: 由所述软件程序在运行时间操作期间经由所述边带接口可编程的运行时间配置寄存器,当被初始化时,所述运行时间配置寄存器将所述结构跟踪钩子编程到下列模式中的一个中: 1)触发-仅信号匹配; 2)裸片上逻辑分析器触发完成跟踪触发-仅信号匹配; 3)捕获,命令加数据的双字的可配置数量;以及 4)无数据捕获-仅命令。
5.根据权利要求4所述的装置,进一步包括: 由所述软件程序在编译时间操作期间经由所述边带接口可编程的编译时间配置寄存器,当被编程时,所述编译时间配置寄存器用于: 控制所述结构跟踪钩子是否存在于实例化的初级可调节结构中;其中,所述编译时间配置寄存器在运行时间操作期间不可用。
6.根据权利要求2、3或者4所述的装置,所述结构跟踪钩子进一步包括: 裸片上逻辑分析器触发,用于捕获从所述第一代理流到所述第二代理的事务,其中,位于所述第一代理和所述第二代理之间的事务使用动态寻址,所述裸片上逻辑分析器用于:监控从所述第一代理流到所述第二代理的所述事务,其中,所述事务与标签相耦接; 从所述第二代理到所述第一代理跟踪包括所述标签的完成事务;并且 当所述完成事务结束时,生成触发,其中,所述调试代理经过所述结构接收所述触发。
7.根据权利要求2、3或4所述的装置,进一步包括: 时间戳计数器块,用于生成要与所捕获的事务相耦接的时间戳,其中,所述时间戳被同步到中央时间戳源。
8.根据权利要求7所述的装置,所述结构跟踪钩子进一步包括接口,用于: 接收所捕获的后续事务,所捕获的后续事务进一步包括保持的事务和丢弃的事务。
9.根据权利要求8所述的装置,所述接口进一步用于: 使所捕获的后续事务与所述时间戳相耦接以便产生结果; 对所述结果进行打包以便产生跟踪分组有效载荷;并且 经过所述结构向所述调试代理传输所述跟踪分组有效载荷。
10.根据权利要求8所述的装置,所述接口进一步用于: 使所述保持的事务与所述时间戳相耦接以便产生结果; 对所述结果进行打包以便产生跟踪分组有效载荷;并且 经过所述结构向所述调试代理传输所述跟踪分组有效载荷。
11.根据权利要求10所述的装置,进一步包括: 用于对所述丢弃的事务进行计数并且生成计数结果的计数器; 其中,所述计数结果连同所述结果一起被打包,并且被作为所述跟踪分组有效载荷的一部分传输到所述调试代理。
12.根据权利要求3所述的装置,进一步包括: 对所述队列由于所述结构跟踪钩子处于无损模式中而被填充高于预定义的高阈值做出响应而对于中央仲裁单元使停止信号生效; 其中,在任何新的事务被传输到所述结构之前,所述队列耗尽到不低于预定义的低阈值的状态。
13.根据权利要求4所述的装置,其中,所述触发被耦接到DFx结构的输出引脚。
14.根据权利要求4所述的装置,其中,所监控的事务是命令操作。
15.根据权利要求4所述的装置,其中,所监控的事务是数据操作。
16.—种方法,包括: 由测试中的系统的结构跟踪钩子监控代理的预定事务,所述事务在所述代理和第二代理之间流动,所述事务为点对点事务,其中,所述代理、第二代理和调试代理通过结构耦接到一起,并且所述结构跟踪钩子嵌入在所述结构中; 一旦发生了预定操作,由所述结构跟踪钩子初始化通过所述代理的多个后续操作的捕获;并且 由所述结构跟踪钩子通过所述结构向所述调试代理发送所捕获的多个后续操作。
17.根据权利要求16所述的方法,进一步包括: 由在耦接到所述测试中的系统的所述调试代理的调试主机上运行的软件程序对所述结构跟踪钩子的运行时间配置寄存器进行编程,以使得所述结构跟踪钩子进入第一模式,其中,所述第一模式使所述结构跟踪钩子捕获通过所述代理的所述多个后续操作; 其中,经过所述测试中的系统的边带接口对所述配置寄存器进行编程。
18.根据权利要求16所述的方法,进一步包括: 由所述软件程序对所述结构跟踪钩子的掩码/匹配寄存器进行编程,以使得所述结构跟踪钩子监控预定操作; 其中,经过所述测试中的系统的所述边带接口对所述掩码/匹配寄存器进行编程。
19.一种片上系统(SoC),包括: 耦接到中央处理单元的系统代理; 耦接到所述系统代理的至少一个结构,其中,第一代理、第二代理和调试代理耦接到所述结构; 设置在所述结构内的结构跟踪钩子,所述结构跟踪钩子用于: 监控从所述第一代理流到所述第二代理的事务,其中,所述事务流不涉及所述中央处理单元; 捕获从所述第一代理流到所述第二代理的多个后续事务;并且 经过所述结构向所述调试代理发送所述多个后续事务。
20.根据权利要求19所述的SoC,所述结构跟踪钩子进一步包括: 用于在捕获时接收所述多个后续事务的队列;以及 被同步到所述SoC的中央时间戳源的时间戳计数器,所述时间戳计数器用于生成唯一的时间戳; 其中,在向所述调试代理进行发送之前,所述多个后续事务被耦接到所述时间戳。
21.根据权利要求19所述的SoC,所述结构跟踪钩子进一步包括: 配置块,包括: 编译时间部分,包 括用于对所述结构跟踪钩子进行编程的多个字段;以及 运行时间部分,包括在所述SoC的运行时间操作期间使用的第二多个字段; 其中,所述多个字段和所述第二多个字段由驻留在耦接到所述调试代理的调试器中的软件程序进行编程。
22.—种片上系统(SoC),包括: 耦接到中央处理单元的系统代理; 耦接到所述系统代理的至少一个结构,其中,第一代理、第二代理和调试代理耦接到所述结构; 设置在所述结构内的结构跟踪钩子,所述结构跟踪钩子用于: 监控从所述第一代理流到所述第二代理的事务,其中,所述事务流不涉及所述中央处理单元; 当发生所述事务时,设置触发;并且 经过所述结构向所述调试代理发送所述触发; 其中,当接收到所述触发时,所述调试代理进入探针模式。
23.根据权利要求22所述的SoC,所述结构跟踪钩子进一步包括: 配置块,包括: 编译时间部分,包括用于对所述结构跟踪钩子进行编程的多个字段;以及 运行时间部分,包括在所述SoC的运行时间操作期间使用的第二多个字段; 其中,所述多个字段和所述第二多个字段由驻留在耦接到所述调试代理的调试器中的软件程序进行编程。
24.—种方法,包括: 由包括中央处理单元的系统的结构跟踪钩子监控通过代理到存储器设备的事务,其中,所述代理、所述存储器设备和调试代理通过结构耦接到一起,并且所述结构跟踪钩子嵌入在所述结构中; 由所述结构跟踪钩子捕获从所述代理到所述存储器的多个后续匹配的操作; 由所述结构跟踪钩子对所述后续匹配的操作进行打包,产生分组有效载荷;并且由所述结构跟踪钩子通过所述结构向所述调试代理发送所述分组有效载荷。
25.根据权利要求24所述的方法,进一步包括: 在向所述调试代理发送所述分组有效载荷之前,由所述结构跟踪钩子将所述分组有效载荷耦接到时间戳 ,所述时间戳由被同步到所述系统的中央时间戳源的时间戳计数器生成。
【文档编号】G06F9/46GK104050028SQ201410160222
【公开日】2014年9月17日 申请日期:2014年3月12日 优先权日:2013年3月13日
【发明者】K·尹, R·德格鲁伊杰, C·齐夫, M·克林莱史密斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1