一种复位向量的代码实现方法、系统及设备的制作方法

文档序号:6358996阅读:310来源:国知局
专利名称:一种复位向量的代码实现方法、系统及设备的制作方法
技术领域
本发明涉及电子技术领域,特别涉及一种复位向量的代码实现方法、系统及设备。
背景技术
一般在处理系统中都包括处理器比如数字信号处理器(Digital Signal Processor,DSP),或中央处理器(Central Processing Unit, CPU)等,和内存,其中处理器可以是单核处理器,也可以是多核处理器。处理系统在进入业务层进行业务处理的过程中, 都需要先通过底层操作来启动,即将可执行文件(Image文件)中的代码加载到内存中,由处理器调用执行内存中加载的代码逐步完成内核硬件资源、BSS(Bl0Ck Started by Symbol 段、libc库等的初始化,并最终调用Image文件中的主(main)函数从而进入业务层进行业务处理。其中在Image文件中包括实现某些功能的代码,处理器调用执行内存中的代码即为代码的实现过程。对于包括单个核的处理器,内存中包括一个用于上电或复位启动的复位向量 (reset vector),在该处理器进入业务层前,需要将Image文件的部分代码加载到复位向量,该单核处理器调用执行复位向量中加载的代码从而进入业务层。而对于包括多个核的处理器,其内存分为两种类型,即各个核(core)的片外共享内存,比如二级内存(L2),和每个核对应的片内私有内存,比如一级内存(Li)。一种情况下,在每个核的片内私有内存中可以包括一个对应的复位向量,可以加载每个核对应的 Image文件中的特定代码,则每个核可以分别从对应片内私有内存中的复位向量启动从而进入业务层;另一种情况下,在片外共享内存中可以包括至少一个复位向量,加载多个核对应的Image文件中的共享代码,则各个核都可以从片外共享内存中的复位向量启动从而进入业务层,且各个核需要通过调用复位向量的代码,来进入各自的处理分支,现有一种方案是在各个核调用执行共享的复位向量代码的过程中,如果当前核需要进入对应的处理分支时,核(即处理器中的一个处理单元)会从硬件寄存器中读取当前核的标识(ID),调用复位向量中跳转指令即jmp(当前核的标识对应的Image文件分支入口名),并跳转到对应的Image文件分支入口地址,这样就实现了当前核跳转到对应的处理分支。而现有技术中复位向量中代码的实现是与业务布局直接绑定的,比如在业务场景1中,CPUl对应执行Image 1,而在业务场景2中CPUl对应执行ImageO,如果发生业务场景的切换时,需要对复位向量中跳转指令进行修改,即由原来的jmp(Image 1)修改为 jmp (Image 0),这样各个核在对共享的复位向量处理后,才能跳转到正确的处理分支;且底层还需要发布新的Lib库给业务层。这样在业务场景发生变化时,需要对复位向量中代码进行修改,并重新加载到处理系统的内存中进入业务层,操作比较复杂。

发明内容
本发明实施例提供一种复位向量的代码实现方法、系统及设备,实现了多核处理器的多个核共享的复位向量中代码的实现与业务布局的无关,从而简化业务场景发生变化时复位向量中代码的实现过程。本发明实施例提供一种复位向量的代码实现方法,包括当前核需要进入对应的处理分支时,调用多个核共享的复位向量中的跳转指令, 所述跳转指令包括jmp (处理分支入口),用于指示跳转的寄存器为处理分支入口,所述多个核对应的片内私有内存的逻辑地址相同;读取所述当前核的片内私有内存中的全局变量值,所述全局变量值用来指示所述当前核对应的处理分支入口地址;将所述读取的全局变量值作为所述跳转指令中处理分支入口的内容,跳转到片外共享内存中对应的处理分支入口本发明实施例提供一种处理器核,其特征在于,包括函数调用单元,用于当前核需要进入对应的处理分支时,调用多个核共享的复位向量中的跳转指令,所述跳转指令包括jmp (处理分支入口),用于指示跳转的寄存器为处理分支入口,所述多个核对应的片内私有内存的逻辑地址相同;变量读取单元,用于读取所述当前核的片内私有内存中的全局变量值,所述全局变量值用来指示所述当前核对应的处理分支入口地址;跳转单元,用于将所述变量读取单元读取的全局变量值作为所述跳转指令中处理分支入口的内容,跳转到片外共享内存中对应的处理分支入口。本发明实施例提供一种多核处理器,包括多个核,各个核对应的片内私有内存, 和片外共享内存;所述核,用于当前核需要进入对应的处理分支时,调用多个核共享的复位向量中的跳转指令,所述跳转指令包括jmp(处理分支入口),用于指示跳转的寄存器为处理分支入口,所述多个核对应的片内私有内存的逻辑地址相同;读取所述当前核的片内私有内存中的全局变量值,所述全局变量值用来指示所述当前核对应的处理分支入口地址;将所述读取的全局变量值作为所述跳转指令中处理分支入口的内容,跳转到片外共享内存中对应的处理分支入口;所述片内私有内存,用于储存对应核的全局变量值;所述片外共享内存,用于加载所述多个核共享的复位向量,及各个核的处理分支。本发明实施例还提供一种处理系统,包括上述多核处理器。本发明实施例提供一种计算机系统,包括外部接口、芯片共享内存和总线,其特征在于,所述计算机系统还包括上述多核处理器。本发明实施例中对于多核处理器中多个核共享复位向量时,在复位向量的代码实现过程中,各个核调用复位向量中的跳转指令,且读取对应片内私有内存中的全局变量值, 将读取的全局变量值作为跳转指令中跳转的寄存器中的内容,从而实现当前核跳转到对应的处理分支入口。由于多个核对应的片内私有内存的逻辑地址相同,则复位向量中读取全局变量值的代码是不会随着各个核对应处理分支入口地址的改变而发生改变;且对于多个核来说跳转指令中跳转的寄存器相同,则复位向量中跳转到各个核的处理分支入口的代码也不会随着核的改变而改变。因此,如果业务场景发生改变时,就不需要对复位向量的代码进行修改,但是需要更新相应核的片内私有内存中储存的全局变量值。实现了多核处理器中多个核中共享的复位向量中代码的实现与业务布局的无关,从而简化业务场景发生变化时复位向量中代码的实现过程。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的多核处理器的结构示意图;图2是本发明方法实施例提供的一种复位向量的代码实现方法的流程图;图3是本发明实施例提供的可执行文件加载到内存中的结构示意图;图4是本发明实施例提供的两个核共享一个复位向量时,在各个核从片外共享内存启动的过程中,复位向量的代码实现示意图;图5是本发明实施例提供的一种处理器核的结构示意图;图6是本发明实施例提供的另一种处理器核的结构示意图;图7是本发明实施例提供的一种多核处理器的结构示意图;图8是本发明一个具体实施例中处理系统的芯片的结构示意图;图9是本发明实施例提供的一种计算机系统的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供的一种复位向量的代码实现方法,适用于多核处理器中,多个核共享一个复位向量的情况。参考图1所示,对于一个多核处理器来说,包括内存和多个核即多个处理单元,其中处理器中的核可以是CPU,也可以是DSP,还可以是CPU和DSP,还可以其它的核,图1中以两个CPU和两个DSP为例说明;而内存可以分为两种类型,即各个核分别对应的片内私有内存(比如Li),及各个核共享的片外共享内存(比如L2)。在本发明实施例中,在片外共享内存中包括至少一个复位向量,图1中以两个复位向量为例说明,即两个CPU共享的第一复位向量和两个DSP共享的第二复位向量。在这些共享的复位向量中,可以加载多个核对应的Image文件中的共享代码,则各个核都可以从片外共享内存中的复位向量启动从而进入业务层,且各个核需要通过调用复位向量的代码,来进入各自的处理分支,具体地各个核可以通过本发明的复位向量的代码实现方法,从而进入各自的处理分支, 方法流程图如图2所示,包括步骤101,当前核需要进入对应的处理分支时,调用多个核共享的复位向量中的跳转指令,该跳转指令包括jmp (处理分支入口 )。可以理解,参考图3所示,在处理系统上电启动前,各个核需要先将对应的Image 文件的代码分别加载到片内私有内存和片外共享内存中,具体地,将Image文件中的片内私有内存(以Ll为例)的内容加载(即储存)到对应核的片内私有内存中(如图3中用黑点填充的部分),包括全局变量的值,其中全局变量可以记为Image文件进程(Image Dispatch),而该全局变量的值用来指示对应核对应的处理分支入口地址;将Image文件中片外共享内存的内容加载到片外共享内存中,包括各个核对应处理分支的代码和数据;将 Image文件中复位向量的代码(如图3中斜线填充的部分)加载到片外共享内存中的复位向量处。在加载完Image文件的代码后,各个核都从片外共享内存中的复位向量处启动 (即复位向量的代码实现过程),具体地,每个核会调用执行复位向量中加载的代码逐步完成内核硬件资源、BSS段、Iibc库等的初始化,并最终调用main函数从而进入业务层进行业务处理。在上述进入业务层的过程中,各个核需要通过调用复位向量的代码来进入各自的处理分支。对于其中一个核来说,如果当前核需要进入对应的处理分支时,需要通过调用复位向量中的跳转指令,并执行该跳转指令从而进入处理分支。该跳转指令包括jmp (χ),其中 χ表示跳转的寄存器,在本发明实施例中跳转的寄存器为处理分支入口,可以记为Image文件进程的入口(Image Dispatch Entry),则本实施例中跳转指令用来指示跳转的寄存器为处理分支入口。对于共享复位向量的多个核来说,跳转指令中跳转的寄存器χ是相同的,则多个核跳转到对应处理分支的跳转指令的二进制编码相同。步骤102,读取当前核的片内私有内存中的全局变量值,该全局变量值用来指示当前核对应的处理分支入口地址。可以理解,本发明实施例中,各个核的片内私有内存中加载的全局变量的逻辑地址是相同的,但是全局变量值却是不同的。各个核在进行上述的加载过程前,对片内私有内存和L2的访问都是采用链接技术,通过链接脚本直接链接到相应的空间,而多个核在访问对应的片内私有内存时采用逻辑地址是相同的。则对于多个核来说,在实现读取全局变量值的过程中,复位向量的代码段是相同的。步骤103,将步骤102中读取的全局变量值作为跳转指令中处理分支入口的内容, 跳转到片外共享内存中对应的处理分支入口。核在执行跳转指令时,会将读取的全局变量值作为跳转指令中跳转的寄存器即处理分支入口的内容,具体地,核会将步骤102中读取的全局变量值读到跳转指令中跳转的寄存器即处理分支入口中,即jmp(x)的χ中,并根据该跳转的寄存器χ中的具体内容实施跳转,从而实现当前核跳转到对应的处理分支入口。可见,本发明实施例中在多核处理器中多个核共享复位向量时,在复位向量的代码实现过程中,各个核调用复位向量中的跳转指令,且读取对应片内私有内存中的全局变量值,将读取的全局变量值作为跳转指令中跳转的寄存器中的内容,从而实现各个核跳转到对应的处理分支入口。由于多个核对应的片内私有内存的逻辑地址相同,则复位向量中读取全局变量值的代码是不会随着各个核对应处理分支入口地址的改变而发生改变;且对于多个核来说跳转指令中跳转的寄存器相同,则复位向量中跳转到各个核的处理分支入口的代码也不会随着核的改变而改变。因此,如果业务场景发生改变时,比如在业务场景1中,CPUl对应执行 Image 1,而在业务场景2中CPU2对应执行Image 1,当从业务场景1切换到业务场景2时, 在复位向量中读取全局变量值和跳转的代码段都不会变化,就不需要对复位向量的代码进行修改,但是需要更新相应核的片内私有内存中储存的全局变量值。实现了多核处理器中多个核共享的复位向量中代码的实现与业务布局的无关,从而简化业务场景发生变化时复位向量中代码的实现过程。需要说明的是,多个核从片外共享内存中复位向量处的启动可以同时执行,也可以顺序执行,上述步骤101到103只是其中一个核启动的过程中,复位向量的代码实现方法。且在执行上述步骤之前,需要将各个核对应的处理分支入口地址分别储存为各个核的片内私有内存中的全局变量值。参考图4所示为两个核0和1共享一个复位向量时,在各个核从L2层启动的过程中,复位向量的代码实现示意图,其中各个核都分别从各自的片内私有内存中读取全局变量值,以该值作为各个核的处理分支入口地址并跳转到处理分支入口。且在复位向量中,这两个核0和1对于读取各自片内私有内存中全局变量值,及跳转到处理分支入口的代码段是相同的。本发明实施例提供一种处理器核,该处理器核可以是CPU,也可以是DSP,其结构示意图如图5所示,包括函数调用单元10,用于当前核需要进入对应的处理分支时,调用多个核共享的复位向量中的跳转指令,所述跳转指令包括jmp (处理分支入口),用于指示跳转的寄存器为处理分支入口,所述多个核对应的片内私有内存的逻辑地址相同;变量读取单元11,用于读取所述当前核的片内私有内存中的全局变量值,所述全局变量值用来指示所述当前核对应的处理分支入口地址;跳转单元12,用于将所述变量读取单元10读取的全局变量值作为所述函数调用单元11调用的跳转指令中处理分支入口的内容,跳转到片外共享内存中对应的处理分支入口。具体地,跳转单元12会将变量读取单元11读取的全局变量值读到跳转指令中跳转的寄存器中,即处理分支入口中,并根据该跳转的寄存器中的具体内容实施跳转,从而实现当前核跳转到对应的处理分支入口。需要说明的是,共享复位向量的多个核对应片内私有内存中储存的全局变量逻辑地址相同,不同的是该全局变量的具体取值;且多个核在执行复位向量的跳转指令时,调用的跳转指令的二进制编码相同。可见,本发明实施例的处理器核与其它处理器核共享复位向量时,在复位向量的代码实现过程中,各个核的函数调用单元10调用复位向量中的跳转指令,且变量读取单元 11读取对应片内私有内存中的全局变量值,跳转单元12将读取的全局变量值作为跳转指令中跳转的寄存器中的内容,从而实现核跳转到对应的处理分支入口。由于多个核对应的片内私有内存的逻辑地址相同,则复位向量中读取全局变量值的代码是不会随着各个核的处理分支入口的改变而发生改变;且对于多个核来说跳转指令中跳转的寄存器是相同的,则复位向量中跳转到各个核的处理分支入口的代码也不会随着核的改变而改变。因此,如果业务场景发生改变时,复位向量中读取全局变量值和跳转的代码段都不会变化,就不需要对复位向量的代码进行修改。实现了多核处理器的多个核共享的复位向量中代码的实现与业务布局的无关,从而简化业务场景发生变化时复位向量中代码的实现过程。参考如图6所示,在其他具体的处理器核实施例中,处理器核除了包括如图5所示的结构外,还可以包括地址储存单元13和变量值更新单元14,其中地址储存单元13,用于将所述当前核对应的处理分支入口地址储存为所述当前核的片内私有内存中的全局变量值;变量值更新单元14,用于更新所述当前核的片内私有内存中储存的全局变量值。本实施例中的地址储存单元13可以将该核的片内私有内存中的全局变量值储存为该核对应的处理分支入口地址;如果业务场景发生改变,比如在业务场景1中,CPUl对应执行Image 1,而在业务场景2中CPU2对应执行Image 1,当从业务场景1切换到业务场景 2时,可以由变量值更新单元14更新该核的片内私有内存中储存的全局变量值。本实施例提供一种多核处理器,可以为CPU或DSP,结构示意图如图7所示,包括多个核20、各个核对应的片内私有内存21,和片外共享内存22。其中所述核20,用于当前核需要进入对应的处理分支时,调用多个核共享的复位向量中的跳转指令,所述跳转指令包括jmp(处理分支入口),用于指示跳转的寄存器为处理分支入口,所述多个核对应的片内私有内存的逻辑地址相同;;读取所述当前核的片内私有内存中的全局变量值,所述全局变量值用来指示所述当前核对应的处理分支入口地址;将所述读取的全局变量值作为所述跳转指令中处理分支入口的内容,跳转到片外共享内存中对应的处理分支入口;所述片内私有内存21 (图7中以Ll为例说明),用于储存对应核的全局变量值;所述片外共享内存22(图7中以L2为例说明),用于加载所述多个核共享的复位向量代码,及各个核的处理分支。可以理解,本实施例中核20的结构与图5或6所示的处理器核结构类似,且核20 在从片外共享内存中启动的过程中,复位向量的代码实现方法如图2所示的流程图,在此不进行赘述。需要说明的是,本实施例的多核处理器中,多个核20、各个核对应的片内私有内存 21和片外共享内存22可以集成到一个芯片上。本发明实施例还提供一种处理系统,该处理系统中可以包括至少一个如图7所示的多核处理器。本实施例的处理系统中的多核处理器可以为CPU,也可以为DSP ;还可以包括CPU 和数字信号处理器DSP,在这种情况下,多个CPU可以共享第一复位向量,多个DSP可以共享第二复位向量。这里所说的第一复位向量和第二复位向量并不代表顺序关系,而是说明复位向量的不同。则多个中央处理器CPU共享第一复位向量,和/或多个数字信号处理器 DSP共享第二复位向量。参考图8所示,在一个具体的实施例中,在一个处理系统的芯片中包括2个簇 (Cluster)即CPU簇和DSP簇,其中对于每个簇即为一个多核处理器,包括4个核,每个核有对应的片内私有内存如Li,且4个核共享一个片外共享内存即L2。在该芯片中还可以包括芯片上所有多核处理器的片外共享内存即三级内存(U)和双倍速率存储器(Double Data Rate, DDR)。在该芯片中DSP和CPU的结构都可以如图5或图6所示,在此不进行赘述。本发明实施例还提供一种计算机系统,是一种具体应用中的处理系统,结构示意图如图9所示,包括外部接口(interfaces) 30、芯片共享内存(memory) 32比如DDR、总线 (bus) 31和多核处理器33。其中总线31是用来连接计算机系统中的所有硬件;而外部接口 30连接在总线31 上,用来连接计算机系统的外部设备;芯片共享内存32连接在总线31上,是计算机系统中所有处理器核的共享内存;多核处理器的结构可以如图5或6所示,在此不进行赘述。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括ROM、RAM、磁盘或光盘等。以上对本发明实施例所提供的复位向量的代码实现方法、系统及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种复位向量的代码实现方法,其特征在于,包括当前核需要进入对应的处理分支时,调用多个核共享的复位向量中的跳转指令,所述跳转指令包括jmp(处理分支入口),用于指示跳转的寄存器为处理分支入口 ;所述多个核对应的片内私有内存的逻辑地址相同;读取所述当前核的片内私有内存中的全局变量值,所述全局变量值用来指示所述当前核对应的处理分支入口地址;将所述读取的全局变量值作为所述跳转指令中处理分支入口的内容,跳转到片外共享内存中对应的处理分支入口。
2.如权利要求1所述的方法,其特征在于,所述读取所述当前核的片内私有内存中的全局变量值之前包括将所述当前核对应的处理分支入口地址储存为所述当前核的片内私有内存中的全局变量值。
3.如权利要求1或2所述的方法,其特征在于,还包括更新所述当前核的片内私有内存中储存的全局变量值。
4.如权利要求1至3任一项所述的方法,其特征在于,所述核包括中央处理器CPU,和 /或数字信号处理器DSP ;所述复位向量包括第一复位向量,和/或第二复位向量;则多个中央处理器CPU共享第一复位向量,和/或多个数字信号处理器DSP共享第二复位向量。
5.一种处理器核,其特征在于,包括函数调用单元,用于当前核需要进入对应的处理分支时,调用多个核共享的复位向量中的跳转指令,所述跳转指令包括jmp(处理分支入口),用于指示跳转的寄存器为处理分支入口,所述多个核对应的片内私有内存的逻辑地址相同;变量读取单元,用于读取所述当前核的片内私有内存中的全局变量值,所述全局变量值用来指示所述当前核对应的处理分支入口地址;跳转单元,用于将所述变量读取单元读取的全局变量值作为所述跳转指令中处理分支入口的内容,跳转到片外共享内存中对应的处理分支入口。
6.如权利要求5所述的处理器核,其特征在于,还包括地址储存单元,用于将所述当前核对应的处理分支入口地址储存为所述当前核的片内私有内存中的全局变量值。
7.如权利要求5或6所述的处理器核,其特征在于,还包括变量值更新单元,用于更新所述当前核的片内私有内存中储存的全局变量值。
8.一种多核处理器,其特征在于,包括多个核,各个核对应的片内私有内存,和片外共享内存;所述核,用于当前核需要进入对应的处理分支时,调用多个核共享的复位向量中的跳转指令,所述跳转指令包括jmp(处理分支入口),用于指示跳转的寄存器为处理分支入口, 所述多个核对应的片内私有内存的逻辑地址相同;读取所述当前核的片内私有内存中的全局变量值,所述全局变量值用来指示所述当前核对应的处理分支入口地址;将所述读取的全局变量值作为所述跳转指令中处理分支入口的内容,跳转到片外共享内存中对应的处理分支入口 ;所述片内私有内存,用于储存对应核的全局变量值;所述片外共享内存,用于加载所述多个核共享的复位向量,及各个核的处理分支。
9.如权利要求8所述的多核处理器,其特征在于,所述核如权利要求5到7任一项所述的处理器核。
10.如权利要求8或9所述的多核处理器,其特征在于,所述核为中央处理器CPU,或数字信号处理器DSP。
11.一种处理系统,其特征在于,包括至少一个如权利要求8或9所述的多核处理器。
12.如权利要求11所述的处理系统,其特征在于,所述多核处理器为中央处理器CPU, 和/或数字信号处理器DSP ;所述复位向量包括第一复位向量,和/或第二复位向量;则多个中央处理器CPU共享第一复位向量,和/或多个数字信号处理器DSP共享第二复位向量。
13.一种计算机系统,包括外部接口、芯片共享内存和总线,其特征在于,所述计算机系统还包括如权利要求8或9所述的多核处理器。
全文摘要
一种复位向量的代码实现方法、系统和装置,应用电子技术领域。该复位向量的代码实现方法包括当前核需要进入对应的处理分支时,调用多个核共享的复位向量中的跳转指令,该跳转指令包括jmp(处理分支入口)用于指示跳转的寄存器为处理分支入口,多个核对应的片内私有内存的逻辑地址相同;读取当前核的片内私有内存中的全局变量值,该全局变量值用来指示所述当前核对应的处理分支入口地址;将读取的全局变量值作为跳转指令中处理分支入口的内容,跳转到片外共享内存中对应的处理分支入口。从而进行复位向量的代码实现过程。
文档编号G06F9/34GK102326145SQ201180001478
公开日2012年1月18日 申请日期2011年8月10日 优先权日2011年8月10日
发明者雷镇 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1