一种多个处理器共享访问存储器的方法、装置及系统与流程

文档序号:13004549阅读:393来源:国知局
一种多个处理器共享访问存储器的方法、装置及系统与流程

本发明属于计算机技术领域,尤其涉及一种多个处理器共享访问存储器的方法、装置及系统。



背景技术:

在以norflash存储器作为系统启动固件存储介质的单板系统中,比较常规的实现方式是每片处理器(cpu)单独外接一片存储器(norflash),而且由于处理器(cpu)的外部地址\数据总线多为分时复用的访问方式,所以还要在处理器(cpu)与存储器(norflash)之间添加锁存芯片。

受单板面积的限制,在单板上无法为每片处理器均设置一片存储器(norflash)。现有技术在不改变单板面积的前提下,还无法实现在单板的有限的空间内布置多片处理器和存储器。现有通常的做法是减少单板上处理器和存储器的设置数量,这样做虽然可以保证整个系统正常工作,但也会带来系统处理能力大幅降低的问题。



技术实现要素:

针对现有技术存在的问题,本发明的目的在于提供一种不改变单板面积的前提下,提高系统处理能力的方法、装置及系统。

为实现上述目的,本发明的多个处理器共享访问存储器的方法,所述多个处理器与所述存储器之间设置有控制二者通信连接的控制器;所述方法包括:

将所述存储器的存储空间分配为多个存储子空间;

根据所述处理器的数量和所述存储器的存储空间的地址空间向每个所述存储子空间分配访问地址;

所述控制器将所述处理器的输出地址映射至所述存储子空间的访问地址;以及

所述控制器根据所述处理器的输出地址与所述存储子空间的访问地址的映射关系控制所述处理器访问与其对应的所述存储子空间。

进一步,所述控制器将所述处理器的输出地址映射为所述存储子空间的访问地址包括:

将所述处理器的所述输出地址转换为所述存储器的外部地址;

将所述存储器的所述外部地址映射为所述存储器的所述存储子空间的访问地址。

进一步,所述多个存储子空间数量与所述多个处理器的数量相同。

进一步,所述多个存储子空间之间的容量相同。

本发明的多个处理器共享访问存储器的装置,包括:

存储空间分配单元,用于将所述存储器的存储空间分配为多个存储子空间,所述多个存储子空间数量与所述多个处理器的数量相同;

存储地址分配单元,用于根据所述处理器的数量和所述存储器的存储空间的地址空间向每个所述存储子空间分配访问地址;

映射单元,用于将所述处理器的输出地址映射为所述存储子空间的访问地址;以及

控制单元,用于根据所述处理器的输出地址与所述存储子空间的访问地址的映射关系逐一控制所述处理器访问与其对应的所述存储子空间。

进一步,还包括:

锁存单元,用于将所述处理器的输出地址与所述存储器的外部地址锁定。

本发明的多个处理器的启动方法,包括储存有启动指令的存储器,所述存储器分配有与所述处理器对应的存储子空间,还包括如下步骤:

1)控制所述多个处理器进入复位状态;

2)释放所述多个处理器的其中一个处理器的复位;

3)将所释放的处理器的输出地址与所述存储器的外部地址锁存;

4)将所释放的处理器的输出地址映射至所述存储器中对应的存储子空间;

5)判断所释放的处理器是否启动完成;

6)当所释放的处理器启动完成,则重复上述步骤2)-5)直至所述多个处理器全部启动。

进一步,所述步骤4)和5)之间还包括:

所释放的处理器访问所述存储器中对应的存储子空间储存的启动指令。

本发明的多个处理器的启动装置,包括储存有启动指令的存储器,所述存储器分配有与所述处理器对应的存储子空间,还包括:

复位单元,控制所述多个处理器进入复位状态;

复位释放单元,释放所述多个处理器的其中一个处理器的复位;

锁存单元,将所释放的处理器的输出地址与所述存储器的外部地址锁存;

映射单元,将所释放的处理器的输出地址映射至所述存储器中对应的存储子空间;

判断单元,判断所释放的处理器是否启动完成;

轮循单元,根据所述多个处理器的复位释放顺序轮循启动所述多个处理器。

本发明的多个处理器共享访问存储器的系统,包括:

多个处理器;

一存储器,其中所述存储器具有与所述多个处理器数量对应的存储子空间;

控制器,将所述处理器的输出地址映射至所述存储器中对应存储子空间的访问地址,并根据所述处理器的输出地址与所述存储子空间的访问地址的映射关系逐一控制所述处理器访问与其对应的所述存储子空间。

本发明成功实现了多个处理器分时分空间访问存储器的功能,能够解决类似受pcb面积限制所导致的系统处理能力低的问题,在不改变单板面积的前提下,提高系统处理能力。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。

附图说明

图1为本发明一实施例的多个处理器共享访问存储器的方法的流程图;

图2为本发明一实施例的多个处理器共享访问存储器的装置的结构框图;

图3为每片处理器外接一片存储器系统的结构框图;

图4为本发明一实施例的多个处理器共享访问存储器的系统的结构框图;

图5为本发明一实施例的多个处理器的启动方法的流程图;

图6为本发明一实施例的多个处理器的启动装置的结构框图;

图7为本发明四个处理器的启动方法的流程图。

通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现、材料或者操作以避免喧宾夺主而使得本公开的各方面变得模糊。

附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

如图1所示,本发明的多个处理器共享访问存储器的方法,所述多个处理器与所述存储器之间设置有控制二者通信连接的控制器;包括如下步骤:

s110:将所述存储器的存储空间分配为多个存储子空间。其中,所述多个存储子空间数量与所述多个处理器的数量相同。亦即,为每个处理器从存储器上分配对应的存储子空间。

例如,如果存储器的存储空间容量为128mb,处理器的数量为4个,则分配的存储子空间的数量与处理器的数量相对应也为4个,并且存储子空间的容量可以在存储空间容量的基础上被等分为4份,每个存储子空间的容量为32mb,亦即在存储器上为每片处理器分配32mb的存储子空间。以上处理器的数量以及存储器的容量仅为举例说明之用,并不是对本发明的技术进行限制,处理器的数量以及存储器的容量可以根据实际情况做相应改变。此外,每个存储子空间容量的分配也不一定必须采用均匀分配的方式,亦即每个存储子空间容量大小也可以不同。

s112:根据所述处理器的数量和所述存储器的存储空间的地址空间向每个所述存储子空间分配访问地址。每个存储子空间分配的访问地址与处理器的数量和存储空间的地址空间相关。

例如,采用的存储器容量为128mb,数据位宽为16bit,存储器的地址空间为0x000_0000~0x3ff_ffff,处理器的数量为4个。分配的存储子空间的数量为4个,其分配的访问地址可以为0x000_0000~0x0ff_ffff、0x100_0000~0x1ff_ffff、0x200_0000~0x2ff_ffff、0x300_0000~0x3ff_ffff。

s114:所述控制器将所述处理器的输出地址映射至所述存储子空间的访问地址。为使每个处理器能够访问与其对应的存储子空间,需要将每个处理器的输出地址与存储子空间的访问地址进行映射。亦即,每个存储子空间的访问地址与对应的处理器的输出地址相关联。

其中,所述控制器将所述处理器的输出地址映射至所述存储子空间的访问地址包括:

将所述处理器的所述输出地址转换为所述存储器的外部地址;

将所述存储器的所述外部地址映射为所述存储器的所述存储子空间的访问地址。

例如,当第一个cpu在访问存储器时,cpu地址总线上输出的地址为0x000_0000~0x0ff_ffff;通过地址映射以后,呈现在存储器芯片地址线上的访问地址为0x000_0000~0x0ff_ffff。

当第二个cpu在访问存储器时,cpu地址总线上输出的地址为0x000_0000~0x0ff_ffff;通过控制器地址映射以后,呈现在存储器芯片地址线上的访问地址为0x100_0000~0x1ff_ffff。

当第三个cpu在访问存储器时,cpu地址总线上输出的地址为0x000_0000~0x0ff_ffff;通过控制器地址映射以后,呈现在存储器芯片地址线上的访问地址为0x200_0000~0x2ff_ffff。

当第四个cpu在访问存储器时,cpu地址总线上输出的地址为0x000_0000~0x0ff_ffff;通过控制器的地址映射以后,呈现在存储器芯片地址线上的访问地址为0x300_0000~0x3ff_ffff。本实施例中控制器可以为现场可编程门阵列(fpga)。

s116:所述控制器根据所述处理器的输出地址与所述存储子空间的访问地址的映射关系逐一控制所述处理器访问与其对应的所述存储子空间。

例如,现场可编程门阵列(fpga)可以控制对处理器进行分时复位,并根据每个处理器与存储子空间的地址映射关系,使处理器分时访问对应的存储子空间。

通过采用上述方法,成功实现了多个cpu分时分空间访问norflash的功能,且此方法具有通用性,能解决类似受pcb面积限制无法按常规设计思路访问norflash的问题。

如图2所示,本发明的多个处理器共享访问存储器的装置,包括存储空间分配单元210、存储地址分配单元230、映射单元250和控制单元270。

存储空间分配单元210,用于将存储器的存储空间分配为多个存储子空间,多个存储子空间数量与多个处理器的数量相同。

存储地址分配单元230,用于根据处理器的数量和存储器的存储空间的地址空间向每个所述存储子空间分配访问地址。

映射单元250,用于将处理器的输出地址映射为存储子空间的访问地址;以及

控制单元270,用于根据处理器的输出地址与存储子空间的访问地址的映射关系逐一控制处理器访问与其对应的存储子空间。

本实施例中存储空间分配单元、存储地址分配单元、映射单元和控制单元的作用以及具体实现方式已经在以上实施例做了详细说明,在此不再赘述。

在一实施例中,上述装置还包括:

锁存单元,用于将处理器的输出地址与存储器的外部地址锁定,以实现cpu的外部地址\数据总线的分时复用访问方式。

在以norflash作为系统启动固件存储介质的单板系统中,通常是每片处理器310单独外接一片存储器(norflash)330,而且由于cpu的外部地址\数据总线多为分时复用的访问方式,所以还要在处理器310与存储器330之间添加74ls373之类的锁存芯片350,如图3所示。

以6uvpx板卡为例,如果在单板上集成4片处理器,如果采用图3所示的设计思路,则需要4片norflash。而由于器件较多,pcb面积有限,势必放不下4片norflash和锁存器。

针对以上所存的技术问题,如图4所示,本发明的多个处理器共享访问存储器的系统,包括:

多个处理器410;

一个存储器430,其具有与所述多个处理器410数量对应的存储子空间;

控制器450,将处理器410的输出地址映射至存储器430中对应存储子空间的访问地址,并根据处理器410的输出地址与存储子空间的访问地址的映射关系按顺序逐一控制处理器410访问与其对应的存储子空间。亦即,处理器410在控制器450的控制下,分时访问各自的存储子空间。

本实施例以处理器为4个、存储器为norflash、控制器为fpga为例进行说明,但本发明并不以此为限制。其中,4片处理器410的外部总线接口以及复位控制引脚都接到控制器450上,存储器430的地址总线、数据总线、控制总线也接到控制器450上。控制器450与存储器430之间去掉锁存器芯片,锁存器的功能可以通过控制器实现,处理器410外部地址锁存是通过控制器450抓取需要访问的存储器430的外部地址。

在4片cpu启动时,通过控制器450对处理器410实现分时释放复位,即先释放复位第一片cpu,待第一片cpu启动完成以后再复位第二片cpu,依次类推。

采用的norflash容量为128mb,数据位宽为16bit,norflash的地址空间为0x000_0000~0x3ff_ffff,将其容量空间分成大小为32mb的4等份,每片cpu分配32mb。

在某片cpu访问norflash时由fpga对cpu的访问空间进行地址映射。

当第一片cpu在访问norflash时,cpu地址总线上输出的地址为0x000_0000~0x0ff_ffff;通过fpga的地址映射以后,呈现在norflash芯片地址线上的地址为0x000_0000~0x0ff_ffff。

当第二片cpu在访问norflash时,cpu地址总线上输出的地址为0x000_0000~0x0ff_ffff;通过fpga的地址映射以后,呈现在norflash芯片地址线上的地址为0x100_0000~0x1ff_ffff。

当第三片cpu在访问norflash时,cpu地址总线上输出的地址为0x000_0000~0x0ff_ffff;通过fpga的地址映射以后,呈现在norflash芯片地址线上的地址为0x200_0000~0x2ff_ffff。

当第四片cpu在访问norflash时,cpu地址总线上输出的地址为0x000_0000~0x0ff_ffff;通过fpga的地址映射以后,呈现在norflash芯片地址线上的地址为0x300_0000~0x3ff_ffff。

本发明通过在多个处理器和存储器之间设置一具有锁存和地址映射功能的控制器,实现了多个处理器分时、分空间访问一个存储器的功能,能够解决类似受pcb面积限制无法按常规设计思路访问norflash的问题。

如图5所示,本发明的多个处理器的启动方法,此启动方法基于图4所示的系统,包括控制器和储存有启动指令的norflash,norflash分配有与处理器对应的存储子空间,该启动方法包括如下步骤:

s500:控制所有处理器进入复位状态。基于上述系统fpga与所有cpu的复位引脚相连,通过fpga向每片cpu发送复位指令,控制所有处理器进入复位状态。例如通过fpga将cpu的复位引脚全置位为“0”。

s510:释放其中一个处理器的复位,以使cpu进入正常读写状态。例如通过fpga将cpu的复位引脚置位为“1”。

s530:将所释放的处理器的输出地址与存储器的外部地址锁存;

s550:将所释放的处理器的输出地址映射至存储器中对应的存储子空间;

s570:判断所释放的处理器是否启动完成。cpu启动是否完成可以通过是否经过一预定时间来判断,或者根据cpu反馈的启动信息来判断。例如,将cpu释放时间与预定时间进行比较,当cpu释放时间大于预定时间时,表示释放的处理器启动完成;否则,表示释放的处理器未完成启动。或者通过fpga是否收到cpu反馈的启动信息判断,当fpga收到cpu反馈的启动信息,表示释放的处理器启动完成;否则,表示释放的处理器未完成启动。

s590:当所释放的处理器启动完成,则重复上述步骤s510-s570直至所有处理器全部启动。

在一实施例中,所述步骤s550和s570之间还包括:

所释放的处理器访问所述存储器中对应的存储子空间储存的启动指令。

本发明通过在多个处理器和存储器之间设置一具有锁存和地址映射功能的控制器,实现了多个处理器分时、分空间访问一个存储器的功能,能够解决类似受pcb面积限制无法按常规设计思路访问norflash的问题。

如图6所示,本发明的多个处理器的启动装置,包括储存有启动指令的存储器,所述存储器分配有与所述处理器对应的存储子空间,还包括:

复位单元600,控制所有处理器进入复位状态;

复位释放单元610,释放所述多个处理器的其中一个处理器的复位;

锁存单元630,将所释放的处理器的输出地址与存储器的外部地址锁存;

映射单元650,将所释放的处理器的输出地址映射至存储器中对应的存储子空间;

判断单元670,判断所释放的处理器是否启动完成;

轮循单元690,根据所述多个处理器的复位释放顺序轮循启动所述多个处理器。

如图7所示,为本发明多个处理器的启动方法的一具体实施例。本实施例中以处理器的数量为4片为例进行说明,但本发明并不以此为限制,可以根据实际情况对处理器的数量以及存储子空间的分配数量进行相应改变。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。

以上具体地示出和描述了本公开的示例性实施方式。应可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。

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