中文 英语

使用处理器跟踪在系统水平

更多的芯片上的交互和设计异质性是一个老生常谈的技术的兴趣与关注。

受欢迎程度

比赛来处理更多的数据更快的用更少的力量创造一系列的系统级调试的挑战,在跨多个开发人员需要能够跟踪交互,常常异构处理元素可能彼此独立的函数。

一般来说,跟踪是一个硬件调试功能,允许IP要监视的运行时行为。更具体地说,processor-trace功能是硬件实时监测非侵入捕获事件CPU,发送到外部设备,它将被保存,并最终重建为人类可读的形式。

“这提供了有价值的信息,可以用来调试的CPU,”史蒂文Yeung说,副总统的CPU硬件工程想象力的技术。“由于可能存在大量的数据捕获、压缩通常是CPU的硬件实现,因此需要系统级组件和软件解压缩和重构数据。”

跟踪技术并不新鲜。在使用自1980年代末,当微处理器行业真正开始增加。问题是,它并没有跟上不断爆炸的定制的处理器开发的云,边缘和人工智能设计。事实上,首次引入时,处理器调试被称为静态调试。

“你会利用JTAG或者你会进去,运行系统,然后停下来分析处理器的状态,然后再次运行,”柯林斯说丰富,产品营销经理IP子系统Synopsys对此。“那工作,一般来说,对于调试更大的问题。但跟踪的想法是因为人们希望能够看到在实时系统中发生了什么,因为当你停在这样一个指令边界,通常你错过的东西会发生如果处理器只是运行。这就是开始做实时跟踪的概念,你可以得到数据的芯片处理器运行的时候,然后使用工具来分析它在实时系统中理解发生了什么。中,人们希望看到跟踪指令运行的处理器,但他们也想看看数据事务和任务的ID,碰巧当时运行,程序计数器。所有这些事情他们希望能够看到实时处理器内。”

鉴于相当部分的软件开发的时间和精力花在调试失败,很容易看到处理器跟踪功能是如此有价值。”作为系统变得更加复杂,调试所花费的时间也成倍增长,”罗伊Shubhodeep Choudhury说,首席执行官Valtrix系统。“处理器跟踪功能,很简单的单词,提供了程序执行的可见性。它允许用户确定确切的处理器执行的指令集,然后可以去分析失败的根源。”

技术的算法和单处理器系统和系统的功能主要是少量的内核。“进入21世纪,可能有许多核心系统,以及一些完全疯狂的多核心系统、处理器跟踪的概念还是很吸引人的,但需要一个转变的算法,使其有效的在这样的系统中,”说Gajinder Panesar,首席技术官UltraSoC。“有,你可以向后工作转移到单一的核心系统或2核心系统或8核心系统,但是如果你不解决性能和带宽问题,你是自找麻烦。”

标准需要
介绍了IEEE Nexus 5001实时跟踪标准在这个过程中添加一些一致性。在这个空间的关键之一是确保工具厂商有一个标准接口,可以说话,所以他们没有试图构建定制的工具,每一个处理器实现,柯林斯Synopsys对此的解释道。

其他著名的处理器供应商开发了他们自己的跟踪能力。例如,手臂CoreSight,已成为一个事实上的标准给Arm核的扩散。

“Synopsys对此弧处理器最初和仍然是一个Nexus 5001 -支持架构,并生成跟踪根据IEEE Nexus的标准,但也支持CoreSight界面,”柯林斯说。“这是这样,如果工具供应商想要一个弧核心与一只手臂系统核心,他们仍然可以支持我们的跟踪与臂跟踪相结合,因为经常发生的事情。处理器跟踪正在扩展到系统跟踪或SoC-level跟踪。”

这对于软件开发来说尤其有用。“当试图调试设备,SoC开发者,芯片供应商,但主要是软件开发人员,希望能够看到整个系统视图,因为这些设备变得超级复杂,也许几个甚至几十个处理器在一个死,”他说。“有这么多的在同一时间,他们希望能够得到的照片一起玩的东西——不同的处理器如何一起玩,系统级功能,内存访问,所有这些事情。他们希望能够看到它,然后把数据被从芯片,并能够把它和理解一切都一起演奏。”

这看起来如何在不同的处理器是特定于每个,柯林斯强调。”其实就是我们如何获得信息为弧形核心,与某人的RISC-V实现与一只手臂核心专有的或特定的核心。关键是要把它作为它被整合到一个消息,一个工具以外的芯片可以理解和解释。标准化是重要的这指令跟踪消息来自RISC-V核心或弧形核心看起来像劳特巴赫这样的公司也一样,例如,建立跟踪工具。”

同时,处理器程序执行跟踪提供了一个详细的历史,这是有用的调试和性能优化,并经常对被追踪的程序没有性能影响,蒂姆·维特菲尔德说,副总统的战略,汽车与物联网业务手臂

作为一个例子,跟踪可用于AutoFDO等性能分析工具,它使用处理器跟踪捕捉到主内存专门捕捉跟踪分析设备而不中断程序执行过于频繁。在小微控制器,主内存是有限的,出口片外通常是可取的。

“手臂,处理器跟踪捕捉到许多不同的信息,如基本的程序流程执行,周期数进行详细的性能分析,全球跨多个处理器关联程序执行时间戳和调试软件一致性问题,和数据跟踪一些处理器允许重建变量和记忆的内容,”菲尔德说。“此外,手臂CoreSight调试和跟踪技术跟踪捕获提供广泛的选择。根据不同的设备,可以在许多不同的方式,捕获跟踪出口片外,主存中捕获,捕获在专用设备上的记忆。关于出口片外,这是大量的方法用于捕捉盒存储长时间跟踪。这主要是用于早期发展在实验室里的设备,以及在调试设备时,失败了。”

芯片上的方法包括捕捉在主内存,这有助于再利用一些RAM作为本地存储在设备上。这意味着它不需要捕获芯片外框,并使设备上的跟踪分析,这对“动态”是有用的性能优化。其他芯片上的方法是捕捉在专用设备上的记忆,在主内存的使用是不受欢迎的对于给定的应用程序,如安全性至关重要的或实时系统用例。通过捕获跟踪在专用的记忆中,它允许非侵入性的跟踪和对以后调试很有用,Whitfield说。

处理器使用的方法跟踪功能最终将取决于类型的设备或应用程序处理,他补充说。

调试是一个过程,而不是一个单独的步骤
有许多工具工程师使用调试复杂的处理器。本身没有一个是充分的,许多关键但不同的角色在日益复杂的设计调试。

“处理器跟踪记录的处理器可以运行,这是非常有用的在调试崩溃和非法指令,”肖恩Giebel说,产品管理主管OneSpin解决方案。“然而,它可以把数以百万计的周期问题,和调试这么长跟踪是具有挑战性的。你怎么开始追溯找到问题的根源?它需要多长时间?形式验证能帮上忙。您指定一个属性来描述国家/失败的症状是错误,然后正式引擎生成一个“反例”跟踪显示会发生故障。这将是最小的可能路径回源错误,可能许多大小比原来的短处理器痕迹。这种方法用于pre-silicon验证和调试错误中发现post-silicon验证启动实验室。”

这至少需要使用系统,如果不完全是一个系统级的过程。Valtrix Choudhury说的整个设置跟踪功能需要与跟踪处理器接口/模块,可以生成数据包的信息并将它们存储到内存中。软件解码器也需要解码数据包和重建程序执行。

但有一个方法呢?可能不会。

“想想在系统层面,”柯林斯说。“系统架构师和设计团队希望有可见性。一个简单的例子是总线事务。可以有相当复杂的公共汽车面料连接所有这些不同的核心和逻辑元素,和软件开发者想要了解交易出去到公共汽车或到织物工作或不工作在某些情况下,所以系统级总线跟踪是一个重要的方面。大量的工程团队正在寻找解决方案。另外,内存和任何访问内存的系统级需要分析。如此越来越多的周边和高速I / o和事务级别的东西,如以太网数据包。我希望能够分析这些以太网数据包被正确处理或传输正确。这些都是系统级功能的例子,人们希望看到痕迹。”

挑战上升与不同的IP模块的集成。“我曾见过这样一个情况,客户将一只手臂核心,核心,RISC-V Tensilica核心,和DSP核心竞争对手都在相同的SoC,”乔治说,产品营销总监Tensilica Xtensa节奏。“他们也不经处理机IP集成块。能够调试的互动,当事情与独立的交互任务运行在每个芯是一个巨大的挑战。客户想要的可见性和跟踪他们,和他们想要一个标准,因为软件工具需要能够跟踪信息的解码和显示它以一种有意义的方式。”

提前计划
调试是设计的一个方面,需要考虑在架构级别。“这必须建立在从最初的规范,“墙说。“这并不是一个设计师很容易可以在事后添加,所以真的必须预先计划。它确实需要计划在系统级,因为有需要分配的资源,比如记忆存储跟踪数据。还有I / Os需要指定为倾销,跟踪数据,以及控制,跟踪机制。所以这是一个系统级设计问题。”

大多数设计师今天回忆软件开发工作的时候真的能硅后才开始。

“为了把软件开发和实现更快的产品上市时间,几个趋势出现了,“说Hagai Arbel,首席执行官Vtool。“有模拟使用FPGA,用作另一种验证,但主要是一个软件开发平台,以及仿真器。人们意识到,类似的场景是由模拟testbench团队和嵌入式软件团队,便携式刺激诞生了。所作的在平行世界各地的团队试图解决调试问题。”

从项目的角度来看,有两个关键步骤。“首先,取代的cpuUVMtestbench贵宾更好地控制运行的场景,”Arbel说。“UVM团队所做的。第二,运行小块的软件在模拟以验证CPU及其子系统的集成。例如,这样做是验证引导ROM代码。这是留给每个团队的组合来决定,因为没有真正的方法如何把两个。很多时候,他们重叠。第二种方法也保证好准备硅启动过程。”

然而,主要的挑战之一的软件团队,使用模拟仿真/ FPGA可用之前,和UVM模拟团队调试。问题是,软件和testbench同时需要调试。

“处理器跟踪功能,被RISC-V解决理由充分,重点是软件团队更好的调试功能,“Arbel说。“这是极其重要的,验证团队使用类似的方法为了这两个团队有效沟通。”

标准化的调试过程应该包括可视化跟踪功能,他说。“这是工程师可以对发生了什么在给定场景中感兴趣的不深入成千上万的指令。此外,鉴于痕迹下一些软件的调试,算法如何我们运行数据可以提供见解的根源分析软件性能和一致性?这些应该被应用在模拟和车载调试。”

的一个关键挑战的验证/调试一边设计流程已经认识到软件和硬件团队过去不再作为单独的作为。这两个学科日益相互依赖以提高性能和更低的功耗在复杂的设计,这在过去是由扩展的功能在一个新的制造过程。但随着那些扩展福利减少,特别是低于10 nm,新架构和解决方案越来越被更多的依赖硬件软件合作设计

“我们必须发展的通讯手段,即。技术项目交流,对待同一项目的不同方面,”Arbel说。“已经采取了措施,但非常缓慢,人们意识到很久以前,我们不能等待硅以启动软件流程。”

团队不断重塑它们是如何接近调试。”例如,在每一个SoC项目,验证团队需要编写和运行软件,”他说。“有些编写软件,有些软件团队。他们将软件团队说,‘给我简单,软件是这样做,。他们得到它。它天生的车,然后他们开始长对应周期之间的两个。但是最主要的消费是他们不理解对方。当我谈论调试,我指的是调试的一个更广泛的方面沟通,因为当你调试的东西作为一个工程师,你写的代码,你运行一些仿真和调试硬件或软件,你可以回到你的代码,跟踪。今天调试很少。调试与别人交流,其他部分,和整个过程成为沟通问题,沟通假设根源,并试图找出在一起为了理解的最短路径,并修复。”

结论
跟踪已经存在了很长一段时间。与什么一样,技术需要发展。

“如果你看看一些处理器的设计今天哪里有一个奇怪的系统故障,系统投入生产,然后突然过度延迟或有一些图形故障,”尼尔说,营销总监、设计验证技术导师,西门子业务。“你怎么跟踪下来吗?能够这样做当你有类似RISC-V变得越来越重要,它允许更多的自由度没有特别,因为它是开源的,但是因为你鼓励人们增强它。你鼓励人们做新的和有趣的事情。因此,你必须做更多的测试。RISC-V的重大挑战之一是,一旦你改变什么处理器内部,你必须重新验证整个处理器。和处理器验证本身是一种技巧。”

手臂和Synopsys对此有大型团队的专家。“他们知道如何验证处理器,“手观察。“很多RISC-V人不。然而一旦他们改变一件事的处理器,需要重新检验它。这并不只是去功能。它的性能。假设你已经添加了一个内存获取模式。那是什么要做整个总线和系统级性能?该跟踪能力,无论在软件与系统级分析,还是在硬件与这些跟踪功能——它比过去变得更加重要。”

随着,需要某种标准化是至关重要的。

“这是不可能的工具厂商建立突发事件所创建的每一个设备上,所以有某种程度的标准化,与定制的能力,这将继续是重要的,”柯林斯说。“此外,异构跟踪是很重要的,因为会有不同的指令集架构将设备上。它是不现实的,任何一个架构将主宰一个设备,说,18个处理器。很有可能他们会不同的处理器和不同类型的处理器,如卷积神经网络引擎。它们是不同的动物时处理,但人们会希望能够跟踪交易一样,”他说。

底线是,随着更多的处理推到一个设备,提高跟踪的必要性。有更多的互动,更多的依赖,更大的复杂性。能够跟踪所有这些是至关重要的,但也困难得多。



留下一个回复


(注意:这个名字会显示公开)

Baidu