龙芯3B3000 【请教】单路龙芯和双路龙芯的区别

新手刚接触龙芯,请问一下单路龙芯和双路龙芯在PMON配置的时候有什么区别啊?
已邀请:

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

赞同来自:

问题比较复杂,主板结构区别很大,PMON也是调试很长时间才稳定下来,很多细节问题,估计一句两句很难说清吧。
你有具体要了解哪一点吗?

要回复问题请先登录注册