芯片DFX:Coresight架构

简介: 芯片DFX:Coresight架构

Perface

最近接触到了一些产线的Test的东西,然后发现这里面有一些DFX的相关东西

之前在梳理整个安全领域全景图的时候,也提到了调试安全。

林林种种原因让打算来学习一下相关的内容,自然就绕不开Coresight。

今天就一起来看看Coresight吧,最近喜欢上了画图来整理自己的思路。

缩略词

CoreSight Soc-400一个完整的调试和跟踪解决方案,包括如下组件:

  • 控制和接入组件:
  • DAP(Debug Access Port):用来连接外部硬件调试工具的物理接口,允许外部调试工具访问芯片上CPU、CoreSight、DDR等。
  • ECT(Embedded Cross Trigger)
  • 跟踪数据源:跟踪源是CoreSight中用于产生跟踪信息的组件。每个跟踪源组件都会产生一种格式的信息,最终可以组合在一起并且通过跟踪链接到输出端口。
  • PTM(Program Trace Macrocell):监控处理器运行状况,将处理器执行过的指令信息进行压缩传输。
  • STM(System Trace Macrocell):捕捉系统的事件信息并以获取数据跟踪形式传输到跟踪漏斗或跟踪输出组件。
  • ETM(Embedded Trace Macrocell):监控处理器运行状况,将处理器执行过的指令信息进行压缩传输。跟踪指令执行、数据搬运、PE(Processing Element)事件。
  • 连接:
  • Synchronous 1:1 ATB bridge:
  • Replicator:可以把单个输入复用到两个分支输出,可以使得CoreSight系统跟踪信息同时传输到两个或多个输出。
  • Trace Funnel:把CoreSight系统中多个跟踪源产生的信息组合在一起并以单个流输出到高级跟踪总线ATB。Funnel之间可以级联,一个Funnel最多可以支持6个跟踪源信息输入。
  • 跟踪输出节点:
  • TPIU(Trace Port Interface Unit):把捕捉到的数据导出到外部调试适配器,如DSTREAM。
  • ETB(Embedded Trace Buffer):是芯片内一块RAM,用来存储捕捉到的跟踪信息。可以通过DAP访问存储在ETB中的数据。
  • TMC(Trace Memory Controller):在芯片设计时可配置,配置成ETB时跟上面介绍的ETB功能一致。还可以配置成ETR和ETF。
  • ETR(Embedded Trace Router):把跟踪数据存储到调试目标平台的系统内存上,存储系统内存空间是可配置的。
  • ETF(Embedded Trace FIFO):主要是缓冲数据的输出,尤其当当量数据在瞬间产生式,通过ETF可以平滑数据的输出速率。缓存可以被配置为FIFO或Circular Buffer;FIFO满了之后就会反压,源头停止输出跟踪数据;Circular Buffer满了后则会覆盖。

时间戳组件:产生CoreSight或处理器所需的时间戳。通过Narrow timestamp replicator分发到多个目的设备。路径:时间戳发生器->时间戳编码器->Narrow timestamp replicator->时间戳解码器->CPU/CTI等。

  • 时间戳发生器
  • 时间戳编码器
  • 时间戳解码器
  • AMBA AHB跟踪宏单元(HTM)
  • 调试访问接口(DAP),
  • 嵌入式交叉触发器(ECT),
  • AMBA跟踪总线(ATB),
  • 桥和复制器(replicator),
  • 跟踪聚合器(funnel),
  • 跟踪端口接口单元(TPIU),
  • 嵌入式跟踪缓冲器(ETB),
  • 测量跟踪宏单元(ITM/STM)

一、coresight

coresight是ARM公司提出的,用于对复杂的SOC,实现debug和trace的架构。该架构,包含了多个coresight组件。众多的coresight组件,构成了一个coresight系统。

我们也可以根据coresight架构,实现自己的coresight组件。

每个coresight的组件(component),都要遵循coresight架构的要求。

1、 典型的一个coresight的环境

以下是一个典型的coresight环境,包含了两个ARM core,一个DSP,和众多的coresight组件。

这个coresight组件,实现对core,DSP的debug和trace功能。

环境中,总共包括3个通路

  • trace通路: 将core和DSP内部信息输出到外部
  • debug通路:对core和DSP实现debug
  • trigger通路: 用于core和core之间,core和DSP之间,传输trigger信号

1.1、trace通路

trace通路,实现对master组件的数据追踪功能,使用ETM来追踪。

  • ETM负责追踪处理器和DSP的信息,将信息打包,通过ATB总线发送到trace bus上。
  • trace bus上有trace funnel,funnel接收多个ATB总线数据,然后合并成一个ATB总线数据,发送给replicator。
  • replicator接收到ATB数据,根据配置,将ATB数据发送给ETB和TPIU。

1.2、debug的通路

debug通路,用于外部的debugger,对ARM core和DSP进行调试功能。

上图中,只考虑了JTAG的port。其实还有SW的port。

DAP接收外部端口的JTAG数据,然后转化成对DAP内部的AP的访问,然后AP再转化为memory-mapped的总线访问,去访问soc内部的资源。

上图中,DAP输出两个memory-mapped总线,

  • 一个是debug apb总线,连接到debug APB互联上,用于访问debug组件的寄存器
  • 一个是system bus,连接到bus matrix,用于访问soc的内部的资源。

debug APB互联,连接了有CTI,ETM,HTM,ITM,ETB,TPIU等coresight组件,因此外部的debugger可以通过JTAG port,对这些coresight组件进行访问。

bus matrix一般是连接soc的一些外设,如memory,串口等,因此外部的debugger可以通过JTAG port对这些外设设备进行访问。

1.3、trigger通路

trigger通路,用于给指定的组件发送trigger信号,或者接收指定的组件的trigger信号。

这个功能由CTI和CTM来实现。

CoreSight交叉触发接口(CTI)是一种硬件设备,它将被称为触发器的单个输入和输出硬件信号带到设备和从设备输出,并通过交叉触发矩阵(CTM)将它们通过编号信道互连到其他设备,以便在设备之间传播事件。

每个core和DSP都有一个CTI组件相连,CTI可以给处理器(DSP)发送trigger信号,也可以接收处理器(DSP)的trigger信号。

所有的CTI和CTM相连,因此可以实现多个CTI之间的trigger信号的相互发送与接收。

2、coresight组件的种类

2.1、control component

trigger的coresight组件

  • ECT(embedded cross trigger)
  • CTI(cross trigger interface):接收和发送trigger信号
  • CTM(cross trigger matrix):CTI之间的trigger信号传递

2.2、trace sources

trace的coresight组件:

  • ETM(embedded trace macrocells):追踪指定设备(处理器,DSP)的trace信息,每个设备(处理器,DSP)均有自己的ETM。
  • AMBA trace macrocells:追踪AMBA总线的trace信息。
  • PTM(program flow trace macrocells):
  • STM(system trace macrocells):追踪总线互联上的trace信息

2.3、trace links

trace信息传递过程中所需要的中间coresight组件:

  • trace funnel : 将接收的多个ATB总线数据合并成一个ATB总线数据
  • replicator: 将一个ATB总线数据,分发成多个ATB总线数据发送
  • ATB bridge: ATB 桥,用于两个不同的ATB域之间数据传输

2.4、trace sinks

最终接收trace信息的coresight组件

  • TPIU(trace port interface units):将ATB数据通过trace port发送给外界
  • ETB(embedded trace buffers): 存储ATB数据的buffer
  • TMC(trace memory controller):

每个trace sink可以有一个trace formatter。

2.5、debug access port

DAP不属于coresight的组件,但是我们会通过DAP来对coresight的组件进行访问。

DAP包括以下:

  • APB access port(APB-AP)
  • AHB access port(AHB-AP)
  • AXI access port(AXI-AP)
  • JTAG access port(JTAG-AP)
  • serial wire JTAG debug port(SWJ-DP)
  • JTAG debug port(JTAG-DP)
  • ROM table

DAP主要是由DP和AP组件。DP负责接收外部的JTAG或SW数据,然后转化为对AP的访问,而对AP的访问,是可以发起memory-mapped的访问。因此就可以对内部的资源进行访问。

如上图:

DAP包括了三个AP

  • APB-AP: 对挂接到debug APB总线上的内部调试设备的访问
  • AHB-AP: 对挂载在AHB系统总线上的设备的访问
  • JTAG-AP: 对JTAG设备的访问。这个是兼容以前较早的ARM处理器,如ARM9。这些较早的处理器内部是用JTAG来调试的。但是现在的ARM处理器,已经不用这种方式,统一用memory-mapped方式进行调试。

目前的ARM soc中,一般至少会包括一个DAP。而一个DAP可以包括1-256个AP(access port),AP受DP的控制。只有对AP的访问,才可以转化成memory-mapped总线,对soc的内部资源进行访问。

DP中有一个SELECT寄存器,该寄存器用来选择,DP对AP的访问,是针对于哪一个AP进行访问。

DAP中,是可以有多个AP的,而每次,只能对一个AP进行访问。因为需要对AP进行编号,编号的值就在APSEL位域中。因为这个位域有8位,因此DAP中可以最多有256个AP。

DAP的内部结构如下图:

包括了一个DP,和3个AP,依次是AHB-AP,APB-AP,JTAG-AP。

DP通过JTAG或者SW管脚,连接外部的debugger,和外部debugger进行通信。

DP接收到外部debugger发送的JTAG或SW数据,转化为对内部AP的访问。经过decoder模块,判断是对哪一个AP进行访问,然后将访问信息发送给对应的AP。AP接收到DP的访问后,转化为对应的总线访问,去访问内部资源。然后将访问的信息,才回送给DP,DP再通过JTAG或SW,将访问信息返回给外部的debugger。

小结

那么到这里就应该对coresight有一个了解了,这也是我的目的所在,这个前辈关于coresight有一系列文章,从浅入深,如果感兴趣可以进一步学习。

参考链接:

目录
相关文章
|
6月前
|
存储 并行计算 安全
我们自己的芯片指令集架构——龙芯架构简介
我们自己的芯片指令集架构——龙芯架构简介
652 6
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
清华首款AI光芯片登上Science,全球首创架构迈向AGI
【4月更文挑战第16天】清华大学研究团队开发出大规模光子芯片“太极”,在《科学》杂志发表,该芯片基于创新的光子计算架构,实现百万神经元级别的ONN,能效比高达160 TOPS/W。实验中,太极芯片成功执行1000类别分类任务,提升AI内容生成质量,为AGI发展开辟新路径。然而,光子集成电路的制造成本高、技术成熟度不足及软件支持限制了其广泛应用。
162 5
清华首款AI光芯片登上Science,全球首创架构迈向AGI
|
6月前
|
安全 物联网 数据安全/隐私保护
智能终端信息安全概念(八):硬件安全技术—芯片自主化与安全硬件架构
智能终端信息安全概念(八):硬件安全技术—芯片自主化与安全硬件架构
112 0
|
供应链 芯片
平头哥芯片采用的RISC-V架构
平头哥芯片采用的RISC-V架构
354 1
|
存储 机器学习/深度学习 人工智能
ISSCC 2022 | 兼顾能效、精度和灵活性,可重构数字存算一体架构打开高算力AI芯片新范式
ISSCC 2022 | 兼顾能效、精度和灵活性,可重构数字存算一体架构打开高算力AI芯片新范式
746 0
|
弹性计算 Cloud Native Android开发
阿里云服务器ARM架构c8y、g8y和r8y采用倚天710芯片
阿里云服务器ARM架构c8y、g8y和r8y采用倚天710芯片,阿里云自研CPU处理器倚天Yitian 710,2.75 GHz主频,搭载倚天710处理器的云服务器ECS有计算型c8y、通用型g8y和内存型r8y,云服务器吧分享阿里云自研CPU处理器倚天Yitian 710性能测评:
487 0
|
弹性计算 Cloud Native Android开发
阿里云服务器ARM架构CPU处理器倚天Yitian 710芯片
阿里云服务器ARM架构CPU处理器倚天Yitian 710芯片,阿里云自研CPU处理器倚天Yitian 710,2.75 GHz主频,搭载倚天710处理器的云服务器ECS有计算型c8y、通用型g8y和内存型r8y,云服务器吧分享阿里云自研CPU处理器倚天Yitian 710性能测评:
411 0
|
人工智能 算法 安全
(下)【数字IC精品文章收录】近500篇文章|学习路线|基础知识|接口|总线|脚本语言|芯片求职|安全|EDA|工具|低功耗设计|Verilog|低功耗|STA|设计|验证|FPGA|架构|AMBA|书籍|
【数字IC精品文章收录】近500篇文章|学习路线|基础知识|接口|总线|脚本语言|芯片求职|安全|EDA|工具|低功耗设计|Verilog|低功耗|STA|设计|验证|FPGA|架构|AMBA|书籍|
(下)【数字IC精品文章收录】近500篇文章|学习路线|基础知识|接口|总线|脚本语言|芯片求职|安全|EDA|工具|低功耗设计|Verilog|低功耗|STA|设计|验证|FPGA|架构|AMBA|书籍|
|
6月前
|
Ubuntu Linux 数据安全/隐私保护
针对性架构芯片soc环境傻瓜式教程
本文介绍了初步搭建VNC远程桌面,完成soc环境搭建第一步的方法。
241 2
针对性架构芯片soc环境傻瓜式教程
|
6天前
|
弹性计算 Kubernetes Cloud Native
云原生架构下的微服务设计原则与实践####
本文深入探讨了在云原生环境中,微服务架构的设计原则、关键技术及实践案例。通过剖析传统单体架构面临的挑战,引出微服务作为解决方案的优势,并详细阐述了微服务设计的几大核心原则:单一职责、独立部署、弹性伸缩和服务自治。文章还介绍了容器化技术、Kubernetes等云原生工具如何助力微服务的高效实施,并通过一个实际项目案例,展示了从服务拆分到持续集成/持续部署(CI/CD)流程的完整实现路径,为读者提供了宝贵的实践经验和启发。 ####

热门文章

最新文章