多核处理器架构及调试方案
认识多核基本架构
多核处理器在同一个芯片中植入了多个处理器引擎,这就可以提供更高的CPU性能、功能特性和分区能力。一般说来,多核有两种实现形式。
第一,SMP( Symmetric multiprocessing,对称多处理)。在这种情况下,开发人员面对的是单一的抽象化硬件平台,由SMP操作系统来决定具体由哪一个内核来运行哪 个任务,其中每个内核都是相同的,而且在同一个操作系统的管理控制之下,共享同一个内存。
第二,AMP (Asymmetric multiprocessing,非对称多处理)。在这种情况下,各个处理器内核都运行着各自独立的操作系统。这种独立性意味着,其中各个处理器内核既可以是同构的,并且运行同样的操作系统,也可以是异构的并运行各自不同的操作系统。
多核环境显著增加了系统复杂度,因而在对操作系统和与多核相关的硬件进行调试的时候,就必须采用一整套更有效的工具。另外,尽管大家都认为多核就是指在同一个芯片中放入多个内核,但是在实际开发工作中所遇到的多处理问题,实际上不仅仅局限于在单一芯片中的多个内核。事实上,不论这些处理器内核是在同一个芯片之中,或者分布在同一个电路板中的多个芯片之中,甚至同一个系统中的多个电路板之中,开发人员都必须解决好多处理环境中的调试问题。相对于最近出现的单一芯片多核架构,有多个处理器芯片和多个处理器电路板组成的复杂系统已经存在很多年了。因此,多处理架构的调试问题其实早已存在,只是单一芯片内多核架构的普及将多处理系统调试问题更加尖锐地摆在了开发人员面前。
从这个意义上,多年前就开始从事多处理环境软件开发的厂商就积累了更丰富的经验,在应对多核软件开发方面站在了更为有利的地位。例如 Wind River公司经典的实时操作系统VxWorks在多年前最初的设计思路就是基于多处理架构的,因此不论从运行环境还是开发调试工具任何一方面看,对于多核环境的适应能力都比其他工具要强得多。
认识多核调试难点
多核与多处理技术的融合为系统调试带来了许多新的挑战,因为系统复杂度不断增加,要通过优化硬件和软件来充分发挥其中的性能潜力,难度就更大了。其中最主要的难点有以下几个方面。
* 有效地管理内存和外设等共享资源;
* 在多内核、多电路板和多操作系统的环境中对操作系统和应用代码进行调试;
* 优化JTAG接口并充分利用JTAG带宽;
* 调试单一芯片中的同构和异构多核,进而实现整个系统的协同调试;
* 有效地利用JTAG与基于代理的调试方法,确保不同调试工具之间的顺畅协同;
* 确保多核环境中应用调试的同步机制。
对于多核JTAG调试来说,有三种主要的技术选择:第一,以单一JTAG接口支持所有内核的调试器;第二,在单一JTAG调试接口中采用独 立调试器的JTAG多路(Muxing)技术;第三,JTAG链接器或者可编址扫描端口(Addressable Scan Port)。
在多核调试中,上述三个技术途径都是在处理同一个核心问题--由SoC厂商所提供的JTAG接口所造成的局限性。 为了节省成本,许多SoC厂商都只为芯片提供单一的JTAG接口,而不理会其中包含了多少个内核。对于开发者来说,最大的挑战就是经济有效地使用这些接口 来同步多核以及多处理的调试工作。其中,单一调试器方式采用IEEE 1149.1标准Daisy-chain方法。
认识多核调试方法
对于多核架构来说,单一调试器的主流选项仍然是JTAG多路技术。这种技术对IEEE JTAG技术规范进行了拓展,以便为通过共享JTAG接口连接起来的每个内核提供独立的调试器。在多路技术的支持下,通过对希望调试的内核进行注册登记 (Registering),开发人员可经由单一JTAG接口访问多个离散状态的内核。这种解决方案的最大优势在于它的连接和调试性能。因为多路技术单独连接到每个内核,因而避免了daisy-chaining方法中所遇到的比特位移(bit shifting)方面的麻烦,因而在单芯片中的多核系统中具有更高的性能。这种方式的另一个好处是不需要对开发工具进行修改,从而可以顺畅地应用在多个开发项目之中。
多路技术(Muxing)方法所存在的主要问题是在多内核调试过程中无法同时启动和停止内核来同步应用。如果要停止全部内核,开发人员只能顺序地逐个进行,这就导致了调用延迟问题。在调试过程中的延迟问题,会导致很难在内核之间的操作系统、中间件和应用中找到发生问题的确切位置,特别是当运 行在不同内核之中的应用存在相互依赖性的时候,这个问题就更为突出。例如,某个产品包含DSP功能和ARM 9内核,其中DSP用来处理视频流,ARM 9内核提供文件系统,那么内核的启动与停止同步将会十分关键。如果调试过程中在ARM内核的
- 多核处理器设计的要素(01-12)
- 基于LabVIEW的32位处理器嵌入式系统的开发(05-13)
- 嵌入式ARM多核处理器并行化方法(10-27)
- ARM多核处理器启动过程分析(11-10)
- 飞思卡尔引入综合方法简化多核处理器的移植(09-12)
- 基于多核处理器的弹载嵌入式系统设计研究(02-18)