一种SOC芯片及访问内存的方法与流程

xiaoxiao22天前  14


本技术涉及计算机,尤其涉及一种片上系统(system of chip,soc)芯片及访问内存的方法。


背景技术:

1、近年来,soc芯片获得了巨大的发展,在通信领域、航空航天、工业生产、机器人领域、智能家居等领域都有广泛应用,已经成为人们日常生活生产中不可缺少的一部分。与此同时,soc芯片的设计和开发逐渐成为一个重要研究领域。

2、soc芯片包括中央处理器(central processing unit,cpu)、多个硬件业务模块和监测模块,其中,cpu可为每个硬件业务模块分配其能够访问的内存空间,相应的,监测模块可从cpu中获取每个硬件业务模块和其能够访问的内存空间的对应关系,并在接收到某个硬件业务模块的对于某个内存空间的访问请求时,对该硬件业务模块的访问权限进行鉴权。

3、进一步的,cpu是为硬件业务模块分配其能够访问的、在物理地址上连续的内存空间,也即监测模块监测的对象是在物理地址上连续的内存空间。而随着soc芯片中输入输出内存管理单元(in-out memory management unit,iommu)(或者,系统内存管理单元(systemmemory management unit,smmu))的引入,cpu为各硬件业务模块分配的内存空间不再是物理地址上连续的内存空间,而是多个物理地址上不连续的内存空间。监测模块能够监测的实例数有限,其无法对大量物理地址上不连续的内存空间的访问权限进行实时监控。


技术实现思路

1、本技术提供一种soc芯片及访问内存的方法,用于解决监测模块无法对大量物理地址上不连续的内存空间的访问权限进行有效监控的问题。

2、第一方面,本技术提供一种soc芯片,soc芯片包括cpu和至少一个硬件业务模块,其中:cpu,用于为每个硬件业务模块能够访问的至少一个虚拟地址分别确定对应的至少一个访问权限;并根据确定结果,生成页表;每个硬件业务模块,用于生成访问请求,访问请求中包括硬件业务模块待访问的第一虚拟地址;从页表中确定第一虚拟地址对应的第一访问权限,其中,至少一个虚拟地址中包括第一虚拟地址,至少一个访问权限中包括第一访问权限;以及根据该硬件业务模块自身是否具备第一访问权限,确定是否访问第一虚拟地址指示的内存空间。

3、上述技术方案中,cpu为硬件业务模块确定其能够访问的虚拟地址,以及该虚拟地址对应的访问权限,cpu再根据虚拟地址和访问权限生成页表,从而硬件业务模块在访问待访问的第一虚拟地址之前,先从页表中获取该待访问的第一虚拟地址对应的第一访问权限,当确定硬件业务模块自身具备该第一访问权限时,才会访问该第一虚拟地址指示的内存空间,从而避免出现硬件业务模块非法访问某个其没有访问权限的内存空间的问题,以保障soc芯片的正常运行。硬件业务模块基于页表自行监控,无需单独设置监测模块,有助于减少soc芯片的制作成本,且避免监测模块对多个硬件业务模块对不同内存空间访问权限的监控,解决监测模块无法对大量物理地址上不连续的内存空间进行实时监控的问题。

4、在一种可能的实现方式中,至少一个访问权限中的每个访问权限在页表中分别占用x个比特位,x为正整数;硬件业务模块中包括寄存器;硬件业务模块在确定自身是否具备第一访问权限时,具体用于:根据第一访问权限在页表中占用的x个比特位分别对应的取值,确定第一访问权限的取值(具体是确定第一访问权限在十进制上的取值);若在寄存器中、第一访问权限的取值对应比特位上的取值为第一预设值,则确定硬件业务模块具备第一访问权限,和/或,若在寄存器中、第一访问权限的取值对应比特位上的取值为第二预设值,则确定硬件业务模块不具备第一访问权限。上述技术方案中,硬件业务模块可以根据该寄存器中的各比特位的取值,确定硬件业务模块是否具备第一访问权限,实现在页表占用内存有限的前提下,尽可能指示出更多数量的虚拟地址的访问权限。

5、在一种可能的实现方式中,cpu还用于:针对至少一个访问权限中的每个访问权限,根据该访问权限占用的x个比特位的取值,确定访问权限的取值(具体是确定该访问权限在十进制上的取值);在硬件业务模块的寄存器中设置该访问权限的取值对应比特位上的取值为第一预设值。可选的,cpu具体是将硬件业务模块的寄存器中该访问权限的取值对应比特位上的取值由第二预设值设置为第一预设值。上述技术方案中,cpu可以对硬件业务模块中该寄存器中的比特位赋值以指示该硬件业务模块具备访问权限,实现在页表占用内存有限的前提下,尽可能指示出更多数量的虚拟地址的访问权限。

6、在一种可能的实现方式中,硬件业务模块根据硬件业务模块自身是否具备第一访问权限,确定是否访问第一虚拟地址指示的内存空间时,具体用于:在确定硬件业务模块具备第一访问权限的情况下,访问第一虚拟地址指示的内存空间;在确定硬件业务模块不具备第一访问权限的情况下,访问预设内存空间。上述技术方案中,即使硬件业务模块向该预设内存空间执行访问操作,也不会影响其他硬件业务模块对自己具备访问权限的内存空间执行访问操作,以保障soc芯片的正常运行。

7、在一种可能的实现方式中,硬件业务模块在确定硬件业务模块不具备第一访问权限的情况下,还用于记录如下信息中一项或多项:第一虚拟地址、访问请求的属性,其中,属性用于指示访问请求是读请求或写请求。上述技术方案中,有助于cpu定位出硬件业务模块对应的软件代码中执行非法访问的位置。

8、在一种可能的实现方式中,还包括内存;cpu,还用于将页表存储于内存中;硬件业务模块,还用于从内存中读取页表。

9、在一种可能的实现方式中,cpu还用于:确定至少一个虚拟地址分别对应的至少一个物理地址;cpu在根据确定结果,生成页表时,具体用于:根据至少一个虚拟地址、至少一个访问权限和至少一个物理地址,生成页表;硬件业务模块在访问第一虚拟地址指示的内存空间时,具体用于:从页表中确定第一虚拟地址对应的第一物理地址;访问第一物理地址指示的内存空间。

10、第二方面,本技术提供一种访问内存的方法,适用于soc芯片中的硬件业务模块;方法包括:硬件业务模块生成访问请求,访问请求中包括硬件业务模块待访问的第一虚拟地址;硬件业务模块访问页表,从页表中确定第一虚拟地址对应的第一访问权限;页表中包括虚拟地址和访问权限的对应关系;硬件业务模块根据确定硬件业务模块自身是否具备第一访问权限,确定是否访问第一虚拟地址指示的内存空间。

11、在一种可能的实现方式中,第一访问权限在页表中占用x个比特位,x为正整数;硬件业务模块中包括寄存器;硬件业务模块在确定硬件业务模块自身是否具备第一访问权限时,具体可以是,根据第一访问权限在页表中占用的x个比特位分别对应的取值,确定第一访问权限的取值;若在寄存器中、第一访问权限的取值对应比特位上的取值为第一预设值,则确定硬件业务模块具备第一访问权限,和/或,若在寄存器中、第一访问权限的取值对应比特位上的取值为第二预设值,则确定硬件业务模块不具备第一访问权限。

12、在一种可能的实现方式中,硬件业务模块在根据确定硬件业务模块自身是否具备第一访问权限,确定是否访问第一虚拟地址指示的内存空间时,具体可以是,在确定硬件业务模块具备第一访问权限的情况下,访问第一虚拟地址指示的内存空间;在确定硬件业务模块不具备第一访问权限的情况下,访问预设内存空间。

13、在一种可能的实现方式中,硬件业务模块在确定硬件业务模块不具备第一访问权限的情况下,还记录如下信息中一项或多项:第一虚拟地址、访问请求的属性,其中,属性用于指示访问请求是读请求或写请求。

14、在一种可能的实现方式中,硬件业务模块在访问页表时,具体可以是,硬件业务模块从soc芯片的内存中访问页表。

15、在一种可能的实现方式中,硬件业务模块在访问第一虚拟地址指示的内存空间时,具体可以是,硬件业务模块从页表中确定第一虚拟地址对应的第一物理地址,访问第一物理地址指示的内存空间。

16、第三方面,本技术提供一种计算设备,包括处理器,处理器与存储器相连,存储器用于存储计算机程序,处理器用于执行存储器中存储的计算机程序,以使得计算设备执行上述第二方面或第二方面的任意可能的实现方式中的方法。

17、第四方面,本技术提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令被计算设备执行时,实现上述第二方面或第二方面的任意可能的实现方式中的方法。

18、第五方面,本技术提供一种计算机程序产品,计算机程序产品包括计算机程序或指令,当计算机程序或指令被计算设备执行时,实现上述第二方面或第二方面的任意可能的实现方式中的方法。

19、上述第二方面至第五方面中任一方面可以达到的技术效果可以参照上述第一方面中有益效果的描述,此处不再重复赘述。


技术特征:

1.一种片上系统soc芯片,其特征在于,包括中央处理单元和至少一个硬件业务模块,其中:

2.如权利要求1所述的soc芯片,其特征在于,所述至少一个访问权限中的每个访问权限在所述页表中分别占用x个比特位,所述x为正整数;

3.如权利要求2所述的soc芯片,其特征在于,所述中央处理器还用于:

4.如权利要求1-3中任一项所述的soc芯片,其特征在于,所述硬件业务模块根据所述硬件业务模块自身是否具备所述第一访问权限,确定是否访问所述第一虚拟地址指示的内存空间时,具体用于:

5.如权利要求4所述的soc芯片,其特征在于,所述硬件业务模块在确定所述硬件业务模块不具备所述第一访问权限的情况下,还用于记录如下信息中一项或多项:

6.如权利要求1-5中任一项所述的soc芯片,其特征在于,还包括内存;

7.如权利要求1-6中任一项所述的soc芯片,其特征在于,所述中央处理单元还用于:确定所述至少一个虚拟地址分别对应的至少一个物理地址;

8.一种访问内存的方法,其特征在于,适用于片上系统soc芯片中的硬件业务模块;所述方法包括:

9.如权利要求8所述的方法,其特征在于,所述第一访问权限在所述页表中占用x个比特位,所述x为正整数;所述硬件业务模块中包括寄存器;

10.如权利要求9所述的方法,其特征在于,所述根据确定所述硬件业务模块自身是否具备所述第一访问权限,确定是否访问所述第一虚拟地址指示的内存空间,包括:

11.如权利要求10所述的方法,其特征在于,在确定所述硬件业务模块不具备所述第一访问权限的情况下,方法还包括:

12.如权利要求8-11中任一项所述的方法,其特征在于,所述访问页表包括:

13.如权利要求8-12中任一项所述的方法,其特征在于,所述访问所述第一虚拟地址指示的内存空间,包括:

14.一种计算设备,其特征在于,包括处理器,所述处理器用于与存储器耦合,所述存储器用于存储计算机程序,所述处理器用于执行所述存储器中存储的计算机程序,以使得所述计算设备执行如权利要求8至13中任一项所述的方法。

15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或指令被计算设备执行时,实现如权利要求8至13中任一项所述的方法。


技术总结
一种SOC芯片及访问内存的方法,用于解决监测模块无法对大量物理地址上不连续的内存空间的访问权限进行有效监控的问题。在本申请中,SOC芯片包括CPU和至少一个硬件业务模块,其中:CPU用于为每个硬件业务模块能够访问的至少一个虚拟地址分别确定对应的至少一个访问权限;并根据确定结果,生成页表;每个硬件业务模块,用于生成访问请求,访问请求中包括硬件业务模块待访问的第一虚拟地址;从页表中确定第一虚拟地址对应的第一访问权限,至少一个虚拟地址中包括第一虚拟地址,至少一个访问权限中包括第一访问权限;以及根据该硬件业务模块自身是否具备第一访问权限,确定是否访问第一虚拟地址指示的内存空间。

技术研发人员:李宁,戴惠民,李丽
受保护的技术使用者:华为技术有限公司
技术研发日:
技术公布日:2024/9/23

最新回复(0)