在这里冒昧的讲几句,大家讨论讨论,
一.有关于兼容性问题
回答:最近在论坛上经常看到一些希望龙芯兼容windows的观点。其实,世间万物存在即是真理(我躲),linux在服务器领域做得很棒,现在正在朝桌面领域扩展,而windows则牢牢把握了桌面市场,linux也好、windows也罢,都有其各自的使用群体和优势。龙芯也是为了避开专利才用mips指令集的,由此造成了无法使用windows系统.linux当然是突破wintel体系的一把利剑,是咱们国家软件事业发展的希望,但把这些重任都放在龙芯身上,似乎有些不妥。
况且兼容并不意味着去挑战wintel,虽然cisc体系比risc体系效率要低,但x86经历了这么多年的考验,仍然发展壮大起来,为什么? ——性价比高,电脑的成本可不光是CPU,相关外围硬件、软件也占到很大的部分,方便性、兼容性都是非常重要的因素。长久积累下来,就连intel、AMD也没法轻易改变,连贵族电脑苹果机不也从powerpc转移过来了么。
龙梦和国芯都是好样的民族企业,我对诸位辛勤的工作表示钦佩和感谢。可我们还需要联想、海尔……一大批企业的加盟,只有兼容,才能让这些大厂商尽快加入进来,毕竟企业是以盈利为目的的。
不是为兼容而兼容、兼容,就多了一份市场、多了一份胜算。
龙芯既然选择了桌面领域,目前看来,不是要不要兼容的问题,而是怎么兼容的问题(我躲,等我说完),采用x86指令集基本是没有希望的,mips不敢说是最好,但总也算是一个还不错的突破口。我的观点是,从长远看,龙芯要立足linux、“兼顾”windows。
可以做个类似双引导启动的软件,linux系统可以直接运行在mips指令系统上,而windows可以才用“全美达”的方式,用底层软件翻译指令, windows系统在其基础上运行。从而实现指令上的兼容,虽然这样一来性能不高,可不要忘了兼容是要有代价的,这是只是linux的补充而已。哪怕只能发挥出1/3的性能,也可以满足一些基本的需求了。一大堆的办公软件、财务软件……都不用移植了(这些应用本身不需要机器有很高性能),跟其它单位传输文件也就不存在兼容的问题了。况且,虚拟技术也是未来发展的一个趋势,特别是发展到多核心以后。最近新出的intel和amd处理器不也加入了提高虚拟机效能的指令集么,龙芯下一步的发展可以参考借鉴一下。
当然了,做这种翻译软件还需要一段时间的努力。就目前的龙芯2E而言,也不是完全没有办法。起码我们还可以用wine、wineX、 crossover office、win4Linux,(有人甚至用wine在linux系统里跑office、魔兽世界、CS了)直接在linux系统上运行部分windows软件。实在不行,还可以跑vmware么。
只是这些软件使用起来比较复杂,需要经过大量的测试才行。版主能不能提前用“盒子”测试一下呢?如果龙芯电脑能够预装这类软件,并给出支持的软件手册,无疑是一件好事。
兼容不兼容,这是个大问题。去年在计算所开了四五次研讨会讨论。
不兼容wintel,意味着软件上的艰巨任务;兼容,一来难以绕开专利瓶颈,二来跟踪容易越跟越远,因为wintel不是一个固定的死东西,而且历史包袱也不少。
现在龙芯2暂时没有兼容的打算,龙芯3则像楼主所言,会尝试采取类似全美达的方法去兼容X86,至少部分兼容吧。
至于目前用虚拟机来支持windows,工作量和效率恐怕会使得这成为一个难以考虑的点。单看wine,做了这么多年,在同样X86的机器上,也就勉强做到大部分兼容。而二进制翻译等,如果没有适当的硬件支持,很难保证效率,减速能够在十倍之内都算是很厉害了。同样,这个涉及很多的底层问题,需要很精通系统的人很巨大的工作量。我们目前所能做的,大概也就是利用qemu之类比较现成的模拟器,去运行个别对速度要求不高的程序,比如skype;这也必须等到有确实的需求。毕竟我们现在的人手太有限。
不出意外的话,龙芯的盒子应该能够在新年前准备得差不多,到时希望能有一批高手来和我们一起发展龙芯的软件;我们会准备一个TODO列表,认领其中工作的我们优惠提供机器和支持,贡献大的直接赠送 我们的所有软件都会开源,并在网站上提供开发环境(已经有一个雏形:dev.lemote.com)
二.龙芯笔记本能否上QQ和运行棋牌游戏?
回答:应该绝大部分片子都可以播放,例外的包括比较新的rmvb等个别没有开源加码器的片子,以及高清到一定程度处理速度跟不上的看图片是小菜啦,gimp(号称linux下的photoshop)都能很好的运行。
linux下开源的游戏基本都是可以运行的,不过像联众等游戏由于指令集不兼容的原因不能运行。LUMAqq能够运行。
三.如何能在龙芯的机器上实现播放RMVB,RM格式的功能?
回答:关于RMVB的问题,目前mplayer最新的版本可以支持到RV10、RV20格式的rmvb,但是最新的RV30/40没有办法,还没有开源的解码器。
其实目前real公司是鼓励给一个新的架构移植其codec的,我想正解是和real公司联系,取得其源代码,然后移植到龙芯上。龙芯的多媒体指令集也比较完善,和intel SSE有些相似,可以比较容易地优化。
四.关于龙芯2e二级缓存的频率!上面这个帖子里版主说L2的频率是CPU主频的一半。一般片外的L2才是半速运行,比如早期奔腾II。而片内的L2应该全速运行。而2E的二级缓存是片内的,为什么还要半速?是为了降低功耗而选的折中方案吗?
回答:半速运行主要的考虑是降低对延迟的要求。我们当时没有足够的时间来设计一个足够快的512K SRAM,毕竟1G的频率不是那么好搞的。
五.再问几个技术问题
看了R4000和R10000的manual关于内存管理的部分,因为是E文的,看得不是很明白,又产生了一大堆问题,向版主请教:
1.32位MIPS的资料上把32位的虚拟空间划分为kuseg、kseg0、kseg1和kseg2,但是R4000和R10000中,32位模式时把空间分为kuseg、kseg0、kseg1、ksseg和kseg3,其中kseg+kseg3对应于原来的kseg2,对此我有两种想法:
A.64位MIPS的32位模式对地址空间的划分与32位MIPS是不一样的,64位MIPS没有kseg2这个概念。
B.64位MIPS的32位模式与32位MIPS是一样的,只不过kseg2可以再细分成ksseg和kseg3。
哪一种理解是对的呢?或者说两种都是错的?
2.R4000和R10000在64位模式下对地址空间的划分是不一样的,在R4000中,xkuseg、xksseg都是1T,而R10000中则是16T大小,那么,龙芯2的分法与谁相同呢?还是与它们都不一样?
3.64位模式下的xkphys区究竟是干什么用的?R4000里说xkphys包括8个64G的物理空间,R10000里说包括8个1T或4T大小的物理页(这么大的页?)。是不是说64位MIPS里可以直接通过物理地址访问(无需地址转换)?
4.32位MIPS在启动时从0xbfc00000开始执行指令,这个地址落在kseg0里,那么64位是不是也是这个地址呢?如果是的话,那么就意味着64 位MIPS在启动时是处于32位模式的,是不是在操作系统载入的时候有一个从32位模式到64位模式的转换呢(类似于x86从是模式到保护模式的转换)?
回答:
1.你的32位MIPS的资料是哪个?这个我想大概是后来引进的supervisor mode导致把一个空间分为两个,应该理解成一个基本兼容的进化。R4000的32位模式是多数32位MIPS处理器实现的模式。
2.2C是和R4000一样的,2E记得是和R10000一样了.
3.和直接物理地址转换差不多,不需要占用TLB,直接减去一个固定基地址就得到物理地址,所以这种空间内核用起来方便。这个页不是段页式系统那个页吧,MIPS不支持这么大的页的,可能是术语使用的问题。这里我也搞不懂他们把一个区分成无数块有什么用,记得我们是直接一个连续空间。
4.0xbfc00000符号扩展就自然得到0xffffffffbfc00000,这个就是64位的kseg0地址了,因此说也是这个地址也没有错。不过在64位模式下不是0x00000000bfc00000。我不大清楚别的64位MIPS处理器怎么处理的(开始在32位模式是一个很自然的解决方法,R4000中的确有32位/64位的模式切换位),龙芯里边实际上是纯64位的,龙芯没有切换32/64位的寄存器,也没有32位模式,但它完全兼容32位的内核和应用程序。运行32位程序时内部用的也是64位寄存器,只是高位符号扩展,而且32位运算指令不会例会高32位寄存器的值以产生正确的溢出、进位等保证和32位处理器结果一致。
六.有没有可以用到龙芯电脑上的电视卡?
回答:北京数字太和公司的一个USB电视卡试过了,可以实时收看数字电视。电视卡多数是PCI接口的,在龙梦盒子没法用,不过可以在开发板用,应该有linux驱动的都可以用。
七.“盒子”的价格是多少?
回答:现在的估计价格会在1200-1600上下。
八.龙梦笔记本为什么和海尔的W10是一样的?
回答:公模的原因。生产一套笔记本外壳的模具要上上百万。现在不同厂商的笔记本其实都是在那么屈指可数的笔记本代工厂生产。所以笔记本的代工厂通常会能凑合用就凑合。让大家共用一个模具。这也是为什么不同厂商的低价本通常都看起来很像的原因:用的同一个模具。
九.龙梦盒子的定位?
回答:向桌面发展的一种试点尝试。具体的市场目前有考虑的包括学习用机、高端机顶盒、传媒机等。最终的形态很可能还会根据更具体的目标市场再定制。
十.对于嵌入式应用,龙芯CPU有没有集成开发环境?
回答:一般来说嵌入式应用如果有比较好用的集成开发环境的话,对于开发CPU程序是一个非常大的帮助。我只用过两种集成开发环境,一个是TI的CCStudio,一个是日立的Hitachi Embedded Workshop。个人觉得后者比较好用、实用、带Debug、模拟运行等功能、类似VC开发环境、不用自己建立中断表、端口、寄存器等也通过结构体形是很好地提供了,客户上来直接写main程序即可。希望能够起到参考作用.如果需要,可以下载试用版。
但是这两个软件都不是免费的。要是龙芯能够有这样的开发环境就好了,这对于降低CPU开发门槛,降低客户培训费用,提高程序通用性等都有极大的好处。而且最主要的是对于龙芯CPU来说,开发系统化了、一体化了。我个人觉得这个软件并不难。
回复Comments
{commenttime}{commentauthor}
{CommentUrl}
{commentcontent}