你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
wonder2
赞同来自: zzz19760225 、Holoo 、荃不察
荃不察 - 90后IT男
赞同来自: zzz19760225
loongnix
赞同来自:
要回复问题请先登录或注册
90后IT男
3 个回复
wonder2
赞同来自: zzz19760225 、Holoo 、荃不察
1. 多片上的核间一致性协议与单片上的核间一致性协议基本一致;
2. 多路系统的地址空间统一编址,系统上任意一个地址对于任一处理器核都是可见的;
3. HT0用作多路互连时,运行的协议与用作桥片连接时不同,基本上可以看作一个完全透明的通路。这两种协议的转换在双路上是通过引脚配置决定的,不需要软件作额外工作;
4. 除了地址空间和访存延迟的区别,基本上可以将双路系统看作一个8核系统来看。
以下再针对问题进行回答:
第一步,系统复位后,在没有对HT0进行配置前,全系统的地址已经对所有的核可见,如果用EJTAG观察各个核的PC,可以看到所有的核都在指取执行。loongson3_fixup.S中,之所以对HT0进行配置,只是为了提升HT总线的工作频率及其它性能相关的设置。
第二步,因为多路系统是统一编址的,系统中只需要有一个串口即可,所以与单路一致,用的都是0号CPU上的串口。
第三步,初始化Cache应该是一样的,如果在第一步做了在第三步就不用了。另外,对于3A2000/3A3000,实际上并不需要初始化Cache,因为硬件已经自动做了。单路时,对HT0本身也不需要进行特别配置,但需要通过地址空间配置禁用对它的访问。
第四步,具体到SPD,如果想要了解的话,可以查看SPD的相关标准手册。但如果不是有特别爱好的话,看看PMON代码就够了,毕竟是特定领域。
第六步,基本的初始化做完之后,双路和8核也就没有明显区别了,后面的流程和单路都一致。
最后,前面说过了,双路除了地址空间和访存延迟的区别,基本可以当作一个8核系统来看。操作系统内核对双路系统,更多是优化跨片的访问延迟等等,而不是一致性本身。
对于PMON学习,先从读start.S的代码可以较快上手,MIPS汇编并不复杂。
荃不察 - 90后IT男
赞同来自: zzz19760225
这里我之前看了PMON的启动流程,然后想通过每一个流程单龙芯和双龙芯有何区别来分析。
具体理解如下:
第一步: PMON基本运行环境的建立,即保证处理器正常运行的最基本配置(如关中断、配置异常向量),确定PMON的启动核,然后CPU的一个核开始初始cache、tlb、清mailbox。如果是双龙芯,那么应该还会对HT0有所配置,不然无法通过主核初始化另一个CPU,但是我不知道这里如何实现。
第二步: 调试串口的初始化,具体是初始化哪一个串口呢?还是只能是主核(启动核)所在CPU的串口。
第三步:处理器自身的相关配置(修正频率,初始化cache、CPU内部互联,配置非法地址),这里和第一步的初始化cache有什么区别?双CPU的CPU内部互联时,HT0如何配置?单CPU的HT0需不需要配置?这些都是我所不了解的。
第四步: 内存初始化,通过CPU上的IIC总线读取内存参数等。这里SPD的具体参数也不了解。。。
第五步:处理器IO相关的一些配置,IO地址映射、桥片互联(HT1)配置,这里如果都是用2H做桥片的话应该是一样的,因为2H只用了8位的HT总线,但是7A另当别论。
第六步:内存运行的相关准备工作,内存初始化,拷贝代码到内存,设置堆栈,设置传参等。这里应该也是差不多的,应该就是初始化内存的条数不同而已。后续的步骤在内存初始化之后应该都差不多(猜测)。
最后就是,进入操作系统之后,操作系统对cache一致性访问的处理是否有所差别。看3A3000/3B3000的手册上写的是双路龙芯的片间cache一致性是通过软件配置来实现的,也就是说操作系统要维护双龙芯板的片间cache一致性?这里也不清楚。
具体了解哪一点,我也不知道,不清楚的东西太多了,我这里也不奢望社区能够一一作答,就是希望能够指条明路,PMON学习应该从哪里开始。从start.s?从PMON驱动架构?还有干脆直接上手就是干,直接实操?
最后非常感谢管理员和社区的筒子们能够给予我回答,希望在PMON学习上能够得到指点,少走弯路。
loongnix
赞同来自:
你有具体要了解哪一点吗?