一种基于硬件信号量的多核启动同步方法与流程

文档序号:12363005阅读:624来源:国知局
一种基于硬件信号量的多核启动同步方法与流程

本发明涉及多核嵌入式技术领域,尤其是涉及一种基于硬件信号量的多核启动同步方法。



背景技术:

为了降低处理器的体积和功耗,多核技术在不断发展,不仅将多个相同的核封装在一个芯片内,也有将几种不同类型的核封装在一起,这些芯片集成了控制和专业信号处理等多种功能,具有更强的专业性,被广泛应用于通信、航天等领域。随着嵌入式硬件技术的发展,嵌入式软件技术也亟待提高。

参见图1中现有技术中的多核启动同步的传统方法,包括主核上电启动,引导从核启动,并延时预计时间,与从核握手同步;从核启动后则等待主核发握手同步请求。例如使用的芯片集成了DSP(数字信号处理器)和PPC(精简指令集架构的中央处理器)两种不同类的核,各自运行自己的程序,管理自己的内存;同时,它们又需要协同工作,是个同步系统,所以需要从上电开始就一直保持同步状态。目前的这种同步,多采取等待的方式,即等待足够长的时间,此时间通过统计另一系统启动所用时间,然后在统计的最长时间的基础上留足富余时间来确定,这样就会导致开机时间过长,否则就会有一定概率的开机异常。



技术实现要素:

本发明提出了一种基于硬件信号量的核间同步方式,其目的是有效缩短多核系统的开机时间,提升用户体验。

本发明的技术方案为一种基于硬件信号量的多核启动同步方法,基于多核同步启动系统,执行以下步骤,

步骤1,预先为需要同步的从动核分配相应的硬件信号量寄存器和设备值;

步骤2,主控核上电启动;

步骤3,主控核引导从动核进行加载启动;从动核启动后,填写硬件信号量寄存器的值为步骤1分配的设备值;

步骤4,主控核访问硬件信号量寄存器,判断其值是否是步骤1分配的设备值,如果是表示从动核启动完成,否则继续循环读取硬件信号量寄存器,直到此值为步骤1分配的设备值,实现多核同步。

而且,如果没有硬件信号量寄存器,从主控核和从动核的共享内存中指定一个地址进行替代。

而且,所述多核同步启动系统采用支持硬件信号量寄存器的多核SoC芯片,其中PA为主控核引导SC作为从动核启动。

本发明对比已有技术有以下创新点:

1、利用硬件信号量寄存器技术,主核可在从核启动之后,第一时间得知,使启动同步的时间摆脱长时间盲等的困境。

2、本设计模型还可以使用共享内存模拟硬件信号量寄存器,如果没有硬件信号量寄存器,也可以使用共享内存模拟硬件信号量寄存器实现,达到广泛适用于所有多核系统的目的。

因此,本发明实现简单,应用广泛,具有重要的市场价值。

附图说明

图1 为现有技术中的多核启动同步的传统方法示意图;

图2为本发明实施例的多核启动同步的方案示意图。

具体实施方式

本发明主要针对拥有不同种类核的多核系统如何实现快速可靠的启动同步,提供一种基于硬件信号量寄存器的设计,在同步多核系统启动中,满足良好的客户体验,有效减少盲目等待的时间。本设计充分利用硬件信号量寄存器的资源,有效缩短可靠的启动同步所需时间,合理使用系统资源。

本发明的实施例,提出了一种多核启动同步的新设计,结合硬件信号量技术,实现可控的启动同步。设置支持有硬件信号量寄存器的SoC芯片,由一种内核启动之后引导另一种内核启动;在引导另一内核启动之后,通过访问硬件信号量寄存器获知该内核是否启动完成,以实现同步工作。该方法能在所有多核系统中实现多个不同种类核的同步启动,并且保证在第一时间完成同步,摆脱长时间盲等的困境;通过往硬件信号量寄存器写一个预先定义的非零值,实现启动完成的通知。

采用硬件信号量可以避免无互动的等待,可以通过查询硬件信号量寄存器得知其余的核是否启动完成,并且可以通过访问的值获知哪些核启动完成。如果不是使用硬件信号量这种方式,而是使用共享内存,来运行本发明介绍的方法,有可能会出现握手异常的问题,因为硬件信号量具有下述特点:只能由零改写成非零的值和从非零的值改为零,而不能从非零值改成不同的非零值。而启动过程中,有些内核会初始化内存,带来值的改变。而硬件信号量寄存器首先不需要初始化,同时其写操作具有定向性,可以屏蔽异常。所以当用共享内存替代硬件信号量运行本发明介绍的方法时,需选取不会被内核启动操作的内存。

本发明实施例设置支持硬件信号量寄存器的多核SoC芯片(可以是PA与SC),并且PA为主控核引导SC作为从动核启动。其中,SoC表示系统级芯片,SC表示可编程数字信号处理器子系统,PA表示中央处理器子系统。

如图2所示,实施例具体实施过程如下,其中没有特别指出由SC执行的都是由PA执行,具体实施时可采用软件技术实现自动运行:

1.为需要同步的核分配属于自己的硬件信号量寄存器和设备值,具体实施时,可由本领域技术人员根据具体芯片需求预先指定。本实施例中,为SC分配的硬件信号量寄存器的地址是0x17108,设备值0xFE,定义该设备值用于标示从动核SC已启动。如果没有硬件信号量寄存器,可以从共享内存(需同步的几个核都可以访问到的内存)中,指定一个地址,用于替代。

2.主控核上电启动。

3.主控核引导从动核SC加载、启动。具体实施时,这一步可以根据核类型进行具体实现。本实施例中,是引导SC核的加载;从动核启动后,主动填写硬件信号量寄存器的值为预定义的设备值0xFE。

4.主控核(即PA侧),访问0x17108,判断其值是否是预定义的设备值0xFE,如果是表示SC启动完成,否则继续循环读取硬件信号量寄存器,直到此值为0xFE,实现多核同步。

本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1