文章目录
- 1.1 Coresight 组件介绍
- 1.1.1 Trace sources
- 1.1.2 Trace Sinks
- 1.1.2 Trace links
1.1 Coresight 组件介绍
1.1.1 Trace sources
什么是 Trace source?
在ARM Coresight技术中,Trace Source是指处理器中的一个组件,用于产生和发送跟踪数据。它可以捕获处理器执行的指令和数据流,并将跟踪数据发送给其他组件进行进一步的分析和调试操作。Trace Source通常与处理器的执行单元紧密集成,可以实时地记录处理器的指令执行轨迹,帮助开发人员分析和优化软件的执行性能。
Trace source 的 coresight 组件一般有下面几种:
- ETM(embedded trace macrocells):ETM是一个用于处理器跟踪的组件,用于记录处理器执行的指令和数据流(str/ldr),也就是通常说所的data trace和instruction trace, 通常每个core 都会有一个ETM组件,EMT组件产生的数据流一般会通过ATB总线送出去。在最新的ARMv9 中,core内部使用的不再是ETM,而是在 ETM 基础上进行升级的 ETE 组件;
- PTM(program flow trace macrocells)比较老的组件,现在很少用,主要功能是在分支跳转时进行trace数据抓取;
- ITM 类似与串口,软件可以将要打印的log数据写入到ITM的stimulate 的 port口,然后ITM 会将数据通过ATB总线送出去,外部工具接收到 ITM的数据后再解析成对应的 log;
- STM(system trace macrocells):功能类似与ITM,只是在Cortex-A系列上,由于CPU性能较高,trace数据量比较大,使用ITM的话,带宽不够,所以ARM就针对Cortex-A系列开发出了STM组件,STM组件可以将数据通过AXI总线送出去,此外STM还可以抓取一些硬件某块的信号。
1.1.2 Trace Sinks
有产生trace的组件,就会有存储trace data的组件与之对应,trace sinks(池子)就是对应组件的总体统称,常见的trace sink组要有以下:
-
TPIU(trace port interface units):将ATB数据通过trace port发送给外界,比如发送给DS-5(Dstream),一般DS-5内部会有一个几个G的存储,用来接收trace数据;
-
ETB(embedded trace buffers): 存储 ATB 数据的 buffer,但是ETB一般比较小,能够存放的trace 数据不多,如果抓去少量trace数据可以存放到ETB,但是如果数据量较大那么可能就会发生overwrite的情况;当然,也可以把ETB做大,但是做大了的话芯片面积将会增大,这样芯片成本就会增加。
-
ETF(Embedded Trace FIFO)是用于存储和传输ETM(Embedded Trace Macrocell)生成的跟踪数据的组件。ETF可以作为ETM的输出缓冲区,用于存储ETM生成的跟踪数据,然后将数据传输给其他组件进行进一步的分析和调试操作;
-
ETR(Embedded Trace Router)是用于连接和路由跟踪数据的组件。ETR负责接收来自ETM(Embedded Trace Macrocell)和其他跟踪组件生成的跟踪数据,并将数据路由到相应的目的地,如TMC(Trace Memory Controller)或ETF(Embedded Trace FIFO)。ETR可以根据配置和控制信息,将跟踪数据分发到不同的目的地,以便进行进一步的分析和调试操作。它提供高速的接口和协议,以支持大量的跟踪数据传输。
如上图,ETR 会将数据通过AXI总线送出去,最后通过CI700送给DDR。 -
TMC(trace memory controller):TMC不属于Trace Sink, TMC负责管理跟踪数据的存储和缓冲,以及将数据传输给其他组件进行进一步的分析和调试操作。它可以控制跟踪数据的存储位置、大小和格式,并提供高速的接口和协议用于数据传输。
1.1.2 Trace links
Trace 信息传递过程中所需要的中间 coresight 组件,从trace source 到 trace sink中间还有一系列的处理,这些处理一般都是经过Trace links来出来的,常用的 trace links 有如下几种:
-
Trace Funnel : 将接收的多个ATB总线数据合并成一个ATB总线数据,因为有些总线宽度不一样,比如将两个64bit的总线通过Funnel 合并成一个128bits的位宽送出去,也可通过Funnel 选通对应的 trace source 送过来的数据;
-
Trace Replicator: 将一个ATB总线数据,分发成多个ATB总线数据发送; 因为 trace 数据可以存放在 ETB 中也可以送给 TPIU 送出去, 如图1-1 所示。
-
Async Bridge: 用于连接异步处理器和其他系统组件的接口。异步处理器是一种特殊的处理器,其时钟与系统的主时钟不同步。Async Bridge提供了一个接口,使得异步处理器可以与其他系统组件进行通信和协调。比如ETM 一般是和CPU是同一个时钟域,但是其他coresight组件一般使用的是coresight的时钟域,如果ETM要将数据送给 下一级组件,也即夸时钟域进行数据传输,这时就需要一个异步桥进行转换。
上一篇:ARM Coresight 及 DS-5 介绍 2 - ARM Coresight 介绍