Cavium多核系统地址空间布局以及启动.doc_第1页
Cavium多核系统地址空间布局以及启动.doc_第2页
Cavium多核系统地址空间布局以及启动.doc_第3页
Cavium多核系统地址空间布局以及启动.doc_第4页
Cavium多核系统地址空间布局以及启动.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Cavium多核系统地址空间布局及启动引言作为使用MIPS内核的CPU芯片,Cavium系列CPU具有两个地址空间,即虚拟地址空间和物理地址空间。在MIPS系统中,软件所见到的都是虚拟地址,其与物理地址的联系是通过内核中的TLB以及ERL位共同决定。1. 虚拟地址Cavium系列CPU在采用32位寻址模式时,具有标准的一个MIPS特有的虚拟地址空间布局:4G的地址空间被分为四大区域。MIPS CPU可以运行在两种特权级之上:用户态和核心态。当运行于用户态时只能访问到低2G的kuseg区域;而运行于核心态时,对于任意4个区域都能够正常访问。Vxworks系统不分用户态和核心态,一律都运行在核心态。因此,我们的系统对整个虚拟地址空间都是可以正常访问的。对于kuseg区,其范围为0x00000000 0x7fffffff (低端2G),对这段空间的使用只有在ERL置位,或是ERL被清0,且TLB已经正确配置的情况下才能进行。由于Cavium CPU特有的属性对所有的内存空间的访问都是Cached,所以这段空间是一定Cached的。对于kseg0区,其范围为0x80000000 0x9fffffff(共512M)。这段空间的访问不需要TLB映射,只需将其最高位清0,即得到其相应的物理地址。该区域一定是Cached的。对于kseg1区,其范围为0xa0000000 0xbfffffff (共512M)。这段空间通过去掉最高的三位来获得物理地址。因此,实际上它的物理地址范围同kseg0是一致的。这段空间在MIPS的定义中是unCached的。但是由于上面提到的Cavium CPU访问物理内存的特殊性,映射到这部分的0-256M物理内存,访问时也是cached的。MIPS上电跳转的虚拟地址0xbfc00000就是属于这段区域,其物理地址就是0x1fc00000。对于kseg2区,其范围为0xc0000000 0xffffffff (共1G)。这块区域需要通过TLB才能够正确访问。2. Cavium CPU物理地址空间分布Cavium系列CPU比较特别的地方,是其物理内存的物理地址是不连续的,即其DR1 DRAM部分是0x410000000 0x41fffffff。这样做可能是因为其物理地址的0x10000000 0x1fffffff在满足MIPS的启动规则前提下分配给了boot-but模块。如上图,当CPU遇到0x10000000 0x1fffffff的访问请求时,会将其转换为0x1000010000000 0x100001fffffff。这是因为在Cavium CPU的物理地址空间中,分为两部分,即:System memory (DRAM)I/O spaceCavium CPU只用到了49位的物理地址,区分内存与I/O space的方法就是看其物理地址的Bit48是否置位,如果为1,则属于I/O space,否则则为内存空间。I/O空间统一都是unCached的。从上图可以看出,实际上所有的Cavium CPU的组件的寄存器空间都是属于I/O空间的,如FPA,POW等等。因为我们的软件平台是32位的,而这些寄存器空间的物理地址都是超过32位的,因此要访问它们,必须通过cavium提供的内嵌汇编函数,如cvmx_write_csr、cvmx_read_csr、cvmx_read64_uint8、cvmx_write64_uint8等等。3. 多核内存布局及其虚实地址映射当前多核采用所有核跑一个BIN的方式,为了实现这种模式,要求所有核上的软件所看到的虚拟地址都是一样的。两个核共享代码段和CVMX_SHARED段,CVMX_SHARED段存储了一些供两个核共享的全局变量;各自有自己的数据段,BSS段以及一个LOCAL HEAP;一个共享的GLOBAL HEAP。基于上述规则,可得到下面的多核内存虚实地址映射表:上图左边的是整个内存的物理地址空间,其中红色区域与其最后的虚拟地址空间是一一对应的,而蓝色区域不是一一对应的。所有的核都共享Reserved Region,.txt,.cvmx_shared和Global Heap,而拥有自己的.data和.bss,Local Heap,将其统称为Local Region。其中n代表CPU所具有的核数。所有核上的虚拟地址空间都是一样的,即为右边所示。其中的Invisible Region没有体现在TLB映射中,所以是系统不可见的,也无法对其进行正常访问。从上图可以看出,除了主核的虚实地址是一一映射之外,所有的从核的Local Region的虚实地址映射都不是一一对应的。因此,当从核跳转到程序入口时,必须首先进行其TLB的初始化,方能执行后续操作。Reserved Region的大小为1M,通过kseg0对其进行访问时,可以用来做各个核启动时的临时栈,也可以针对各个核存储一些必要的信息。程序的入口地址为0x108000,其中0x100000道0x107fff里面可以用来存储类似于DEFAULT_BOOT_LINE之类的信息。4. 多核启动4.1 mips启动特性任何MIPS Core都是从系统的虚拟地址0xbfc00000启动的,其对应的物理地址为0x1FC00000。因为上述地址处于kseg1中,所以此时系统不需要TLB映射就能够运行。4.2 Cavium CPU启动特性Cavium CPU根据型号不同,一个CPU里面可能集成了1到16个Core。这些Core里面,在上电时,只有Core 0(一般称之为主核,其它核称为从核)会从reset状态跳转到物理地址0x1FC00000(我们的EPPROM起始地址会映射成这个值),开始执行相关的一系列初始化代码,如内存、外设等等。而另外一些核则仍处于reset状态,只有Core 0主动去唤醒它们时,从核才有可能开始正常运转。4.3 Local Cache of BootbusCavium CPU的Bootbus模块主要用来管理配置一些诸如epprom,flash等外设的物理地址空间。该模块中有两个local cache region,这两个local cache region可以用来映射成Bootbus模块管理范围内的一些物理地址。Local cache region可以存放128byte的指令。Local Cache Region Enable ?例子:No物理地址:0x1fc00000CoreYesLocal Cache Region 映射到物理地址0x1fc00000如上图,当需要启动从核时,主核使能其中一个Local Cache Region,并将其映射到物理地址0x1fc00000,并往里面拷贝一些简单的跳转指令,最后主动唤醒从核。从核从reset状态跳出来后,就会跳转到Local Cache Region,执行一系列的后续指令。4.5 TLB每个MIPS Core中都有一个TLB表,根据CPU型号不同,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论