面向众核处理器的独立调试系统设计方法
2015-05-29张明石伟郭御风张民选
张明 石伟 郭御风 张民选
摘 要:基于片上网络(NetworkonChip,NoC)技术的众核处理器正成为当前高性能处理器的设计焦点.传统的调试系统结构不能很好地应用于众核处理器体系结构,众核处理器中踪迹数据传输、调试事件传播、时间戳同步等方面均面临重大挑战.为解决上述问题,提出一种具有高带宽、低资源消耗的独立调试系统设计方法.该方法通过减少长互连线,提高了调试通道工作频率,以较少的互连线即可实现高带宽传输通道;同时调试组件采用分布式的对称结构,具有良好的可扩展性.在踪迹数据传输结构中,提出了一种带宽平衡的非侵入式踪迹数据导出方法,该方法通过软硬协同方式来配置踪迹通道仲裁的权重值,降低硬件复杂度.在调试事件的传播上,构建了与片上网络拓扑一致的事件传播网络,该网络在易于物理实现的同时具有事件传播延迟低的特点.在时间戳的同步方法上,提出了一种通过软硬件协同的时间同步方式,以很小的硬件代价实现了较精确的时间戳同步.
关键词:硅调试;片上网络;踪迹数据;调试事件矩阵;时间戳
中图分类号:TP338.6 文献标识码:A
多核微处理器正成为目前高性能处理器设计的研究热点.将传统处理器的调试结构移植到多核处理器中时,在硬件资源消耗、互连结构、踪迹(Trace)数据传播、调试事件(Debug Event)传播、时间戳(TimeStamp)同步等多方面均遇到了问题.工业界与学术界对多核处理器的调试结构进行了大量研究,并获得了一定的成果.随着高性能处理器逐渐由多核结构向众核结构发展,硅片面积不断增大,现有的多核调试结构出现了一定的局限性,无法满足众核处理器的调测试需求.
为了降低处理器设计的复杂度,众核处理器往往采用同构结构,同构结构具有结构规整、扩展性好、便于集成等特点,成为了目前通用高性能众核处理器的主流方向.在同构众核微处理器的体系结构设计中,常常使用片上网络技术来连接多个处理器核、存储部件以及IO设备.这使得复用片上网络来设计调试系统成为一种很自然的选择,并具有如下优点:
1)复用片上网络通路传递调试命令(Debug)和踪迹(Trace)数据,方便实现对所有片上部件的调试与跟踪.
2)易于实现对核间通信事务的监视和检查,便于对事务进行跟踪与调试.
3)减少了全局互连线路,便于物理设计.
然而,上述复用片上网络的方法均存在一个严重的缺陷,即无法实现非侵入式的调试,即调试和跟踪操作会影响功能逻辑的执行路径,导致非调试模式下出现的错误在调试模式时可能无法重现.为解决此问题,本文针对众核芯片结构特点,提出一种基于NoC技术的独立调试系统结构,该结构对执行踪迹与调试命令、调试事件传播、时间戳同步等结构分别进行了详细研究,其主要创新在于:
1)提出了一种带宽平衡的踪迹数据高带宽传输结构,且该结构具有可扩展、占用资源少、易于物理实现的特点.
2)提出了一种低延迟、易扩展的调试事件广播网络设计方法.
3)提出了一种采用软硬协同方式工作的高精度、低资源消耗的TimeStamp同步设计方法.
本文后续章节组织如下:第1节介绍多核调试系统的研究现状与面临的问题;在第2节中,详细描述了本文提出的众核调试系统实现方法;第3节通过实验对本文所提方法进行了验证,并给出了结果分析和比较;最后对全文进行了总结.
1 相关研究
随着处理器设计规模向众核扩展,NoC已经成为连接片上众多处理器核、存储以及外设的首选\[1-2\].在基于NoC结构的众核处理器中,传统调试系统结构已不适合这种新的处理器结构,以点对点方式连接的调试结构,在众核中会占用大量的互连资源,而且不利于物理设计.因此研究基于片上网络的调试技术是当前处理器设计领域的一个重要研究方向\[3\].
在基于片上网络技术的调试系统研究中,学者针对处理器内核与片上网络的接口、调试命令与踪迹数据的传播方法、调试事件传播方法等方面都进行了大量研究.文献\[4\]定义了一套多核调试接口,试图将调试结构与处理器内核分离,以提高调试部件的可重用特性.所提出的结构侧重于处理器核的调试接口设计,而核间调试信息传输结构的可扩展性不好,而且不支持较高精度的TimeStamp传播.文献\[4-5\]注重于提供对于内核的时钟精确的调试方法,对核间调试信息传输的研究不足.文献\[6-7\]则专注于核间事务的调试,通过监控核间通信来提取有用的调试信息.文献\[8\]在核间通信事务的分析中引入了形式化的方法,提高了事务分析的效率和可观察性.文献\[6-8\]虽然提高了核间通信事务的分析能力,提高了核间事务的可观察性,但其分析过程与传统调试软件的差别较大,在实际调试操作中并不方便.而且,这些调试结构均利用了功能通路传递调试信息,因而无法实现非侵入式的调试.文献\[9\]针对AXI协议提出了感知调试信息的片上网络接口设计方法,该方案能够检测AXI接口的死锁和活锁状态,并支持非侵入式的Trace记录.然而其主要针对AXI协议设计,可扩展性不足.而且在Trace的传播上没有考虑通道竞争导致的各节点带宽不平衡问题,当通道竞争激烈时,容易导致部分节点丢失关键踪迹数据.文献\[10\]分析并提出了针对调试事件的网络结构和组件设计方法,设计了生成工具,能够根据NoC的结构自动生成调试事件传播网络及组件.调试事件网络的配置通过一条扫描链实现,这种实现方案容易与DFT功能冲突,物理实现困难.文献\[11\]将TimeStamp计数值分为本地计数和溢出计数两段,分别在TimeStamp的使用端和源端进行计数,并通过NoC网络进行同步与配合,提出了一种在NoC系统中精确传播TimeStamp的方案.不过此方案会加剧NoC网络的带宽压力,同时增加NoC设计复杂度,占用较多的硬件资源.
本文针对上述各类调试系统存在的问题,系统地提出了一种面向众核处理器、基于NoC技术的独立调试系统设计方法,分别针对踪迹与调试命令传输、各节点踪迹数据的带宽平衡、调试事件广播、时间戳同步等问题设计了各自的结构.依据该方法设计的调试系统结构具有较高带宽且各节点带宽近似平衡的踪迹数据导出通道,支持高精度的时间戳同步和快速的调试事件广播,而且对硬件资源的需求低,物理实现简单.
2 基于NoC技术的独立众核调试系统结构
芯片集成度的快速提高使得片内硬件资源不再那么紧张,而且在基于NoC互连的众核处理器的物理设计中,NoC一般位于规整的内核模块之间,易于调整其所占空间尺寸且不影响工作频率.基于这一特性,本文提出一套独立于功能逻辑、基于NoC技术的调试系统,其总体结构如图 1.图中灰色模块为功能逻辑,白色的则为调试逻辑.调试主机是执行调试操作、分析调试信息的总控制台,运行着主要的调试软件.调试软件通过调试代理发送具体的调试命令给处理器以及收集调试信息,包括踪迹数据.调试主机和调试代理不属于本文所述的调试系统.图中Corei为处理器内核或多个内核构成的核簇,CNOCi(Core NoC)为用于核间及核与存储/外设通信的功能NoC路由结点,Memory&IO为芯片的存储及外设.DAI(Debug Access Interface)是集中式调试与测试访问接口,CDIi(Core Debug Interface)是内核的调试接口,DNOCi (Debug NoC)则是专用于调试功能的调试NoC路由结点.
本文提出的调试系统主要由踪迹与调试命令传输、调试事件传播与时间戳同步3个子系统组成.3个子系统在实现具体的调试功能上相互配合和支持,在逻辑实现上彼此独立,在物理实现上又具有一致的物理布局.整个系统由DAI,DNOC,CDI 3类部件构成,3个子系统在每类部件中都拥有相关的功能逻辑.
DAI的内部结构如图 2,它为外部调试代理和调试软件提供了访问内部调试组件和发送调试命令的JTAG接口,并提供Trace缓冲存储器及将Trace输出到片外的接口,这些属于踪迹与调试命令传输子系统的一部分.CrossEventIF是调试事件的接口部件,负责本地调试事件与DNOC内事件广播矩阵间的交互.UniqueTimer是DAI集成的一个时钟计数器,作为全局唯一的墙上时钟,供其他部件生成TimeStamp时使用,属于时间戳同步子系统的一部分.
调试命令经DNOC网络发送到目标CDIi,控制内核Corei执行单步、断点等调试操作,CDI通常是与内核流水线紧耦合的调试部件,执行对流水线的控制以完成调试操作,收集调试事件并广播到网络,以及捕获流水线的Trace并通过DNOC网络传递给DAI,CDI的内部结构如图 3.
DNOC内部结构如图 4.它与CNOC具有完全一致的物理布局,接口协议借用CNOC的传输协议,只是具有相对少得多的互连.路由方法采用源路由,以尽量简化DNOC的设计.除传递前述的调试命令和踪迹数据外,DNOC还负责传播调试事件,由CrossEventMatrix对输入通道接口上的调试事件向其他通道广播.
图4 DNOC内部结构
Fig.4 Structure of DNOC
下面将详细阐述在上述3种调试结构中,各类通路的设计方法.
2.1 踪迹与调试命令传输子系统
Trace传输通路是指用于传递内核踪迹数据的传输通道,Trace能够实时记录指定的内核指令、状态或通信报文,记录过程不影响内核的执行,是最重要的非侵入式调试手段.Trace对带宽有较高的要求,设置独立DNOC可有效解决Trace传输所需的高带宽问题,但是集中式的Trace存储与导出必然导致多路Trace对DNOC通道的竞争,进而导致各节点Trace实际传输带宽的失衡.针对此问题,本文提出了一种基于源路由特性的DNOC静态权重分配策略.在源路由模式下,任意一个DNOC节点只有一个将Trace输出到DAI的输出端口,输入端口则有多个,所谓权重是指输出端口在仲裁选择输入端口时,各输入端口所拥有的权值.以3×3的DNOC网络结构为例,可用图 5说明静态权重分配策略.图中有N0~N8共9个DNOC节点,每个节点有1个CDI.两个灰色的CDI1和CDI6为未启动Trace记录的节点,因而不参与权重分配.权重分配的思想是:任意CDI输出到DAI的Trace的传输路径若经过DNOC节点的输入通道,则该通道的权值加1.如N4的右侧通道有3条Trace经过,则权值为3,上方通道因CDI1未启动Trace记录,故权值为0.经过N4的所有Trace路径都要输入到N3的右侧通道,因而N3的右侧通道的权值为5.具体的权值计算算法如下:
for i in 所有DNOC节点集合 do
//初始化权值为0
for k in DNOCi输入通道集合 do
Wi,k = 0;
//计算各通道权值
for j in 所有CDI节点集合 do
for k in DNOCi输入通道集合 do
if(CDIj的Trace经过输入通道k)
Wi,k = Wi,k+1
权值的计算过程由运行在调试主机上的调试软件计算得到,然后在调试系统的配置阶段通过调试命令通道写入到各DNOC通道内的权值寄存器,之后DNOC输出通道将根据各输入通道的权值和已经服务的Trace数据个数来动态更新各通道的Trace传输优先级.在调试过程中,若改变了有效CDI的集合,则需要调试软件按照前述算法重新计算通道权值,否则会导致各节点Trace传输带宽的失衡.
图5 权值计算实例
Fig.5 Example of weight calculation
Trace传输到DAI后,进入TraceBuf.片内缓冲容量较小,因而需要通过IO接口传递到片外存储.当前处理器中Trace导出接口多使用通用IO类接口,单引脚的数据传输率低于200 Mbps,带宽有限,在多核时代,已无法满足Trace的高带宽需求.我们注意到当前很多处理器已拥有用于控制大容量NandFlash存储器的高速同步ONFI(Open Nand Flash Interface)接口,该接口使用SSTL电平规范,单个引脚的数据传输率可达1.6 Gbps,本文建议复用ONFI接口导出Trace,可大幅提高Trace的导出带宽.且同步ONFI接口时序具有可预测性,Trace输出复用此接口时,可以根据其可预测性来寻找空闲周期,用于发送Trace数据.
调试(Debug)通路是用于传递调试软件发出的调试命令的通道,命令包括暂停运行、单步、设置断点、读取存储器、读取特殊寄存器等.调试操作最终在CDI中以寄存器读写的方式实现.具体过程是:
1)调试代理将调试软件发来的调试操作转换为JTAG接口报文;
2)DAI内的TAP控制器接收JTAG接口报文,然后将其转换为内部DNOC报文;
3)通过DNOC将报文传递到目标CDI;
4)CDI解析DNOC报文并最终产生针对其DebugRegs内寄存器的读写,进而在内核流水线的配合下实现调试操作.
2.2 调试事件传播子系统
调试事件包括处理器进入/退出调试状态、Trace触发信号、自定义的关键事件等.在众核处理器中,这些事件需要在多个内核或外设间进行传播.绝大多数调试事件的传播具有广播特性,即从一个源广播到其他所有部件,而且传播延迟时间越短越好.例如内核A因断点而进入调试状态后,调试系统期望其他内核也同时进入调试状态,否则其他内核可能因得不到内核A的应答而进入超时状态,即由调试操作引入了程序故障,这可能会误导用户的调试过程.只有尽快地将内核A进入调试状态的事件广播到所有其他内核,才能避免上述问题,因而调试事件的传播延迟越短越好,最大传播延迟是衡量调试事件传播结构优劣的最重要指标.
文献\[8\]将调试事件编码为NoC报文,复用NoC进行广播,似乎减少了硬件开销,但是这会同时增加NoC设计的复杂性和资源需求.而且广播事件在NoC网络上的延迟会因NoC的仲裁、路由等因素而引入较大的不确定性.为解决此问题,本文设计了一套具有较低硬件开销的专用广播网络.为便于物理设计,该网络的广播结点——CrossEventMatrix与DNOC结点具有相同的数量和物理布局.以4通道CrossEventMatrix为例,其内部结构关键逻辑如图 6.图中每个通道仅有一个输入事件和一个输出事件,可以扩展到多个,以满足多种调试事件的需求.图中以虚线表示的两级触发器用于跨时钟事件的同步,当事件信号没有跨时钟时,可以不设置此两级同步器.
图6 CrossEventMatrix广播结构
Fig.6 Broadcast structure of CrossEventMatrix
基于CrossEventMatrix构建事件广播网络时,要求广播路径中不能出现环路,否则会导致事件传播的死锁.本文通过在各通道的事件输出端点增加可配置的输出使能来打破可能出现的环路.使能信号可根据网络结构动态配置,简单灵活.
基于上述方案的事件广播结构具有如下基本特性和优势:
1)事件端点的输出是来自其他所有通道的事件的逻辑或,传播速度快;
2)输入到端点的事件被广播到其他所有通道,广播路径可根据网络结构的变化而进行动态配置;
3)所需硬件资源少,通道的数量可扩展,事件端点数量亦可扩展;
4)支持灵活的电源关断与时钟关断策略,某个端点的关断不会影响其他节点.
2.3 时间戳同步子系统
时间戳(TimeStamp)主要用于标记各个Trace数据的产生时间.各部件记录的Trace导出到DAI部件时,经过的传输路径不同,延迟也不同,后产生的Trace却可能先到达DAI,因此,Trace数据中一般需要附带上一个全局同步的TimeStamp,记录该数据产生的时间,然后再通过调试软件按照TimeStamp来恢复Trace的顺序.然而,各部件完全同步的TimeStamp是几乎无法实现的,总是会存在一定的时间偏差,偏差大小直接影响Trace记录时间的准确性.
本文针对上述需求提出了一种既方便实现,又具有高精度的TimeStamp传播结构.该结构拥有唯一的墙上时钟计数器,即DAI中的UniqueTimer部件,计数器的最低位作为计数触发信号TimeTrigger发送到所有需要TimeStamp的部件.目标部件通过对TimeTrigger的上升沿和下降沿计数来产生自己的TimeStamp值,如CDI内的TimeStampGen部件.物理设计时,需要注意TimeTrigger到各部件的线延迟尽量一致.设各部件生成TimeStamp值的时间偏差为TΔ,则TΔ满足公式(1).其中Wdiff为TimeTrigger的线延迟偏差,Ti为部件i对TimeTrigger的采样时钟周期.
TΔ 当目标部件从电源关断或时钟关断状态恢复时,其对TimeTrigger的计数值已过期,必须更新到最新值才能保持与其他部件的同步.此时,需要在系统软件的控制下按照下列步骤来同步计数值: 1)暂停UniqueTimer计数; 2)将最新的计数值通过Debug通路更新到刚从电源/时钟关断中恢复的目标部件; 3)继续UniqueTimer计数. 按照上述步骤,所有目标部件的TimeStamp在重新启动UniqueTimer前被同步.虽然UniqueTimer停止计数期间,无法记录这段时间内产生的Trace的顺序,但是因通过Debug通路更新计数器操作的执行速度快,因而暂停时间很短,对Trace的影响较小. 3 实验与结果评估 为检验本文所提出的调试结构的功能和性能,本文基于国产自主处理器内核,设计了一套支持64个内核、独立的调试系统,结构如图 7所示.该互连结构与功能NoC(CNOC)的结构一致,形态类似于4×4的网格结构,该结构与片内的物理布局紧密相关,充分考虑了物理设计与体系结构设计的融合,减少长延迟连接,提高了工作频率.另外,该结构中部件的可重用度高,简化了物理设计复杂度.
图中Clust为包含4个自主处理器内核的内核簇,MCU为存储控制器,用于访问片外存储器.每个DNOC有多个双向通道,从输入通道到任意输出通道的传播延迟为2个时钟周期,每通道有效数据宽度为16位,结点路由方法为源路由.Clust,CDI与DNOC的工作频率一致,但支持动态降频.DAI的Trace接口复用了8位的ONFI接口,工作频率为500 MHz,双沿输出,带宽1.0 GB/s.
该调试系统具有独立的NoC网络,虽然节点数量较多,但因从结构上避免了长延迟线,故可提高工作频率,达到了1.5 GHz.进而在同样的带宽需求下,可以降低NoC的通信信号位宽以及缓冲单元的数量,减少硬件资源需求.表 1列出了三类调试部件的综合结果及其在全芯片中的资源占比.总体来说,调试系统所占逻辑资源约占全芯片逻辑资源的1.18%.
b, 仅计算逻辑资源,未统计SRAM ;
c, 包括1个DAI,16个CDI,16个DNOC.
Debug报文用于实现程序运行状态控制、断点设置、变量查看与修改等侵入式的调试操作,以及对调试部件进行配置与状态观察等,传输方向是从DAI到目标CDI.Trace报文则用于以非侵入方式记录内核或其他部件的运行过程及状态,并传输到片外给调试者进行分析,其传输方向是从CDI(或其他重要部件,如MCU)到DAI,图 8给出了每个内核发出200个Trace报文情况下的报文延迟分布,与文献\[11\]相比较,本实验系统中Trace报文平均传输延迟降低约90%,而且延迟分布也更集中.
调试事件的传播速度越快对调试功能的实现越有利.例如某内核因断点而进入调试状态的事件,越快传播到其他内核则越接近于同时停顿所有内核的调试目标,反之,过长的事件传播延迟甚至可能因部分进入调试状态而导致功能故障.本实现中任意两个部件间传播调试事件的延迟时间是确定的,最长延迟为两个对角间的事件传播,需要经过7级CrossEventMatrix,大约4.67 ns.对传播路径的配置则采用通过Debug报文以寄存器写入的方式进行,取消了文献\[10\]中的配置扫描链,简化了设计,硬件资源消耗降低约34%.
延迟时间/ns
图8 Trace报文延迟统计
Fig.8 Statistic of trace delay time
本实现中TimeStamp延迟在各目标点的偏差取决于传播线TimeTrigger延迟偏差和目标点的采样频率,如公式(1).在40 nm工艺下,对TimeTrigger等长布线后,其到各目标点的延迟偏差可控制在1.5 ns以内.目标点工作频率按正常工作时的1.5 GHz计算,最大延迟偏差TΔ不超过2.2 ns.文献\[11\]通过将TimeStamp计数值分为两段并在源端和目的端分别计数,然后通过NoC来同步计数值,其精度虽然理论上可以达到不超过1个时钟周期(约0.75 ns),但是该结构无法支持异步时钟域,而且实现TimeStamp所需的硬件资源远大于本文的方案.
4 结 论
本文提出的采用复制片上网络拓扑结构的方式构建独立的多核调试系统结构,能够充分利用片上网络的设计技术实现高工作频率、高带宽的调试命令与踪迹数据传递,满足多核处理器对于非侵入式调试的需求,便于快速定位软件和硬件故障.而且分析表明,该结构也非常适合时间戳和调试事件的传播,并且能够充分利用高带宽的调试命令通道实现时间戳的重载和事件传播路径的配置.本文实现的4×4片上网络结构的独立调试系统及其相关实验,
检验了前述结构的良好性能和实现的简便性,对于基于片上网络的众核处理器调试系统设计具有较好的参考意义.
参考文献
[1] MIRZAAGHATABAR M, KOOHI S, HESSABI S, et al. An empirical investigation of mesh and torus NoC topologies under different routing algorithms and traffic models[C]//10th Euromicro Conference on Digital System Design Architectures, Methods and Tools.2007:19-26.
[2] SUNGHYUN PARKK, TUSHAR KRISHNAr, CHIAHSIN OWEN CHEN, et al. Approaching the theoretical limits of a mesh NoC with a 16node chip prototype in 45nm SOI[C]//Design Automation Conference(DAC), 2012:398-405.
[3] HOPKINS A B T, KLAUS D, McDONALDMAIER K D. Debug support for complex systems onchip: a review[J]. IEEE Proceedings Computers and Digital Techniques, 2006,153(4):197-207.
[4] ANDREW B T, HOPKINS A B T, KLAUS D, et al. Debug support strategy for systemsonchips with multiple processor cores[J]. IEEE Transactions on Computers, 2006, 55(2):174-184.
[5] MAYER A, SIEBERT H, McDONALDMAIER K D. Boosting debugging support for complex systems on chip[J]. IEEE Computer, 2007, 40(4):76-81.
[6] GOOSSENS K, VERMEULEN B, VAN STEEDEN R, et al. Transactionbased communication centric debug[C]// International Symposium on Networks on Chip, NOCS'07. Washington, USA, 2007:95-106.
[7] GHAREHBAGHI A M, FUJITA M. Transactionbased debugging of systemonchips with patterns[C]//International Conference on Computer Design, ICCD'09. Lake Tahoe, CA, USA, 2009:186-192.
[8] GHAREHBAGHI A M, FUJITA M. Transactionbased postsilicon debug of manycore systemonchips[C]//13th International Symposium on Quality Electronic Design. 2012:702-708.
[9] NEISHABURI M H, ZILIC ZELJKO. An enhanced debugaware network Interface for networkonchip[C]// 13th International Symposium on Quality Electronic Design. 2012:709-716.
[10]AZEVEDO A, VERMEULEN B, GOOSSENS K. Architecture and design flow for a debug event distribution interconnect[C]//30th International Conference on Computer Design, ICCD'12. 2012:439-444.
[11]TODOROV V, GHIRIBALDI A, REINIG H. Nonintrusive trace & debug NoC architecture with accurate timestamping for GALS SoCs[C]//Proceedings of the 8th International Conference on Hardware/software Codesign and System Synthesis. 2012:181-186.