龙芯3B处理器—地址映射以及路由地址分布与配置

1.  几个重要的概念

虚拟地址

也叫逻辑地址或程序地址,是从CPU角度看到的地址,也是写在代码里面的那个地址。

线性地址

在X86里面表示虚拟地址经过段转换得到的地址,实模式下等于物理地址,保护模式下需要经过页转换才能得到物理地址

在龙芯(MIPS)里面,不需要经过页转换的虚拟地址即为线性地址,如32位地址空间里面的KSEG0/KSEG1地址以及64位地址空间里面的XKPHYS地址。

物理地址

虚拟地址(MIPS)/线性地址(X86)经过页转换得到的地址为物理地址。

龙芯(MIPS)的线性地址去掉类型前缀可以直接得到物理地址

此处的物理地址是“初始物理地址”,是CPU核的地址总线发出的地址,要经过各级交叉开关的转换才能得到“最终物理地址”,即内存条上的地址

总线地址

也叫DMA地址,是从设备角度看到的地址,在没有IOMMU的情况下等于物理地址,在有IOMMU的情况下,经过简单转换可以得到物理地址。

2.  虚拟地址空间的划分以及映射规则。


核心与用户特权级

  在核心特权级下(CPU启动时),可以做任何事情,在用户态下,2G(最高位置位的)以上的程序地址都是非法的,会导致陷入异常。

注意的是,如果CPU有MMU,这意味着所有的用户地址在到达物理地址之前必须经过MMU转换,从而使操作系统有能力可以防止用户程序失去控制/乱冲横撞。

3.  龙芯3的DMA结构

 

龙芯3B1500由硬件维护处理器以及通过HT端口接入I/O之间的Cache一致性,但硬件不维护通过PCI接入到系统中的I/O设备的Cache一致性,在驱动程序开发时,对通过PCI 接入的设备进行DMA(Direct Memory Access)传输时,需要由软件进行Cache一致性的维护。

4.  系统节点级的物理地址空间的分布

 龙芯3号系列处理器的系统物理地址分布采用全局可访问层次化寻址设计,以保证系统开发的扩展兼容。整个系统的物理地址宽度为48,按地址的4,整个地址空间被均匀分布到16个节点上,即每个节点分配44地址空间。

 在每个节点的内部,44位地址空间有进一步均匀分布给节点内连接的可能最多8个设备,其中43地址由4个SCache模块所拥有,43地址则进一步按地址的[43:42]位分布给连接在4个方向端口的设备上。根据芯片和系统结构的配置不同,如果某端口上没有连接从设备,则对应的地址空间是保留地址空间,不允许访问。

 

5.  地址路由分布与配置

 龙芯3B1500的路由主要通过系统的两级交叉开关可以对每个Master端口接收到的请求进行路由配置,每个Master端口都拥有8个地址窗口,可以完成8个地址窗口的目标路由选择。每个地址窗口由BASE,MASK和MMAP三个64位寄存器组成,BASE以K字节对齐;MASK采用类似网络掩码高位为1的格式;MMAP的低三位表示对应目标Slave端口的编号,MMAP[4]表示允许取指,MMAP[5]表示允许块读,MMAP[7]表示窗口使能。

  窗口命中公式:(IN_ADDR & MASK)==BASE

 

如下图 (龙芯3的架构图),从图中我们可以看到,从CPU核出来的程序地址经过一级高速缓存之后,到达一级XBar进行地址路由分配,之后经过二级高速缓存,来到二级XBar。

 

 

 

 


展开阅读全文
博主设置当前文章不允许评论。

没有更多推荐了,返回首页