关于mips结构中地址窗口的分析(基于loongson3A平台)
来源:互联网 发布:程序员怎么选择公司 编辑:程序博客网 时间:2024/06/13 06:31
loongson3A(MIPS)地址窗口的使用
总的路线图:
cpu->tlb-xbar1-xbar2-mem | |__HT--2Htlb: 代表mmuxbar1:第一级交叉开关xbar2:第二级交叉考官HT: 总线一种2H: cpu
总概述:
这是loongson3a2h开发板的路线图,其中2H(CPU)是作为桥片使用的。
当CPU访问2H上的一个寄存器时,首先给出寄存器的地址,然后通过tlb映射变为物理地址,之后通过窗口1,在3A上每个窗口作为主端口都有7个从端口可以选择(有些CPU没有这么多从端口,默认就不使用没有的从端口),这时选中HT总线,HT总线和2H相连接,之后到2H后在经过2H的HT和窗口就到了寄存器了。
说明一下:
这里一共分为三篇,第一篇讲解窗口的使用,第二篇讲解tlb的地址映射,第三篇讲解地址经过HT到2H的变换过程。
本节主要讲解窗口,其他的另外讲解。
废话不多说,开始。
首先s说或相关的硬件:
loongson3A的路由主要通过系统的两级交叉开关(xbar)实现。每个XBAR都有8个Master端口和8个Slave端口,每个Master端口有8个地址窗口,每个地址窗口由Base,Mask,Mmap三个64位寄存器组成。
窗口命中公式:(in_addr & mask) == base新地址换算公式:out_Addr = (in_addr & ~mask) | {mmap[63:10],10'h0}
xbar1的寄存器,列举一部分,其他的相似。
xbar2寄存器:
看一下在CPU总的架构图中xbar的作用:
图中连接4个cpu核,以及2级cache和HT的就是xbar1.也就是level-1作为第一级交叉开关,采用6X6的模式,用于连接四个CPU(作为主设备),4个二级cache(作为从设备),一级两个IO端口(HT。每个端口使用一个master和一个slave)。
二级xbar,也就是xbar2用于连接二级cache和内存,配置寄存器以及LPC。其中二级cache作为主设备,两个DDR内存控制器,低速IO(包含pci,LPC,SPI),以及芯片内部控制寄存器模块为从设备。
宗的架构图就是这样。(刚开始可能不明白,可以多看几次)。
其中mmap作为通过窗口以后的基地址,其还有别的作用,就是0-2用作选择从端口,位4,位5,位7表示窗口的读写使能属性。
如图看一下xbar1对从端口的选择
以及xbar2对从端口的选择:
下面是打印出来loongson3Acpu中xbar1寄存器的值:
一级xbar有8个master窗口分别是win0 win1 win2 win4 east south west north八个窗口。
这是win0-3:
这是另外4个:
这里列举出来win0窗口的值,咱们举例时使用:
然后举一个例子来说一下地址的过程:
如CPU要访问一个0x2200-0000的地址。
第一步:cpu要访问这个地址,首先0x2200-0000这是位于用户空间的一段地址,访问这些地址必须使用tlb,这是通过tlb映射,发现有这个表项,映射出来的物理地址是0x2000-0000(这是代码这么配置的,方便程序员进行开发)
第二步:此时已经得到了物理地址0x2000-0000,然后要通过窗口,看看能否命中,如果命中就可以继续访问,如果没有命令就访问失败。这里以win0的窗口进行举例。根据公式:
窗口命中公式:(in_addr & mask) == base
新地址换算公式:out_Addr = (in_addr & ~mask) | {mmap[63:10],10'h0}
咱们首先怎么能命中那个窗口。
第三步:命中窗口计算。
从第一个窗口开始计算:
0x2200-0000 & 0xff00-0000 = 0x2200-0000
得到0x2000-0000!=0x1b00-0000(win_base0),也就是没有命中第一个窗口。
接下来接着这个方法计算下去,
得到命中了win_base4窗口。
第四步:输出地址计算:
out_Addr = (in_addr & ~mask) | {mmap[63:10],10'h0}
=(0x2200-0000 & (~0xf000-0000) | {0x0000-0e00-0000-0000}
=0x0000-0e00-0200-0000
第五步:选择那个从端口
根据mmap[0-2]=7,得到选择的从端口时HT1.而且根据mmap[4,5,7]得到选中的从端口可读可写,且使能
第六步:此时地址0x0000-0e00-0200-0000就发送到HT1总线上,进行访问。
到这里端口的使用就到这里,虽然复杂了一些,但是使用起来更方便了。通过对窗口配置,地址的使用也更加灵活。
- 关于mips结构中地址窗口的分析(基于loongson3A平台)
- mips架构窗口设置代码(loongson3A)
- mips结构的tlb(MMU)分析
- 基于loongson(mips)平台的台式机系统安装
- 关于MIPS平台的asid_cache debug的总结
- 关于基于窗口的程序设计
- ARM与MIPS平台优劣对比分析
- ARM与MIPS平台优劣对比分析
- ARM与MIPS平台优劣对比分析
- ARM与MIPS平台优劣对比分析
- MIPS TLB 的结构(translated)
- vxWorks系统中(MIPS架构)的中断分发分析
- iOS错误报告中关于崩溃地址的分析
- 基于Chord的结构化P2P平台
- 基于Chord的结构化P2P平台
- C++结构体中关于结构体变量,指针,地址之间的转换
- 关于Java中多维数组的内存结构分析
- 胡伟武关于中科院计算所为“龙芯”购买MIPS结构授权的几点说明
- 训练样本不平衡对CNN训练结果的影响
- HTML5本地储存--利用storage事件实时监听Web Storage
- 【Java并发编程】之十九:并发新特性—Executor框架与线程池
- 用宏区分操作系统和编译器
- aes加密解密文件,以及计算文件的效验值,附带字符串加密解密
- 关于mips结构中地址窗口的分析(基于loongson3A平台)
- 硬盘基础知道 linux fdisk 分区 柱面等知识
- MVC请求IIS处理过程
- android studio 初探
- ubuntu 下win7引导修复
- 某市高新区管委会车辆出入管理创新思路
- java关键字this的用法总结
- Red Hat 7.3 基于本地http搭建YUM
- SSH的统一应用