设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

热点关注:浅析龙芯的自由软件战略

2009-7-6 08:43| 发布者: joejoe0332| 查看: 2692| 评论: 1

  最近,有关龙芯“自主CPU战略失败”的争论掀起了很大的波澜。虽然这方面问题已得到澄清,但龙芯真正面临的问题其实还有很多。在这篇文章里,笔者针对龙芯与自由软件这个话题,结合近两年来参与项目的经验,阐述一些个人见解,希望能够唤醒龙芯团队与公众对此的关注。

  自诞生之日起,龙芯就与以Linux为代表的自由软件之间存在着千丝万缕的联系。并且由于商务、产业环境等方面的原因,现阶段龙芯可谓是相当倚重自由软件。但这并不是一件坏事,相反的,长远来看这是一件天大的好事。作为一个自由软件行业的长期从业者,笔者坚信未来自由软件将成为主流,龙芯只不过是顺应潮流而已。

  虽然自由软件经过20年左右的发展,已取得长足进步,但从市场占有率来看,还并不普及。尤其在以桌面应用为代表的领域,用户的使用习惯甚至成为超越软件功能的决定性因素。而在一些特殊的市场,自由软件已经打开了突破口,手机上的Android、上网本及MID领域的Moblin都是成功案例。所以,龙芯应该继续坚持自由软件这条道路,义无反顾地走下去,前途必将是无限光明。这一点,相信龙芯的开发团队、下游厂商和爱好者们都看得很清楚。

  再来看看龙芯平台上自由软件的发展现状。Linux本身支持MIPS,理论上可以运行在龙芯上,但这其中还需要做很多工作。首先,要保证软件可以运行。和x86平台上可以自行DIY不同,基于MIPS平台的产品一般都是特殊订制的,Linux内核为每种MIPS机器都设定了一套独立的配置选项。再加上龙芯和其他MIPS实现还有一些细微的差别,龙芯电脑上有一些硬件的驱动也尚未进入Linux内核,所以未经修改的内核在龙芯平台上是不能运行的。目前,这个问题已基本得到解决,但要彻底根治,还要等Linux/MIPS项目正式收录龙芯2F平台的内核补丁才行。

  其次,软件能否良好高效地运行?这个问题牵扯到许多层面,解决起来复杂的多。在底层,由于龙芯2号处理器实现了完整的MIPS III指令集,工具链(gcc/binutils)不经修改也是可以使用的。并且目前已发布的gcc 4.4和binutils 2.19已经支持龙芯2E和2F,可以生成龙芯特有的指令。然而,系统底层函数库glibc还缺少专门针对龙芯的优化,并且截至目前貌似还没有人着手进行。类似的,系统里所有多媒体相关的库和应用程序都可以做一些针对龙芯特殊指令的优化,但目前也尚未有人统计过有哪些需要优化,哪些已经做过优化。据笔者了解,中科龙梦现在有一个mplayer(Linux下使用最广泛的媒体播放器)的优化项目,只是其优化的形式值得商榷,具体细节下面还会详细探讨。

  除了工具链、函数库和应用程序,ABI的选择也是对性能影响较大的一个方面。在龙芯乃至整个MIPS世界里,使用最多的是O32的系统,它的效率明显落后于采用N32 ABI的系统。经过测试,至少从目前来看,N32 ABI在非科学计算领域应该是最好的选择。但由于用户群体相对较少,现有N32系统在龙芯上存在着一些问题。笔者从去年年底开始这方面的探索,有若干补丁被Linux内核/glibc/gcc等项目收录,并制作了一个采用N32 ABI的Gentoo Linux。经过一段时间的排错,这个系统在龙芯平台上已经可以投入实用。由O32向N32迁移是MIPS平台上系统的必然发展趋势,前段时间,今年Google Summer of Code指导机构之一的Debian还成立了一个MIPS N32移植项目,该项目的完成将会对N32系统的普及起到巨大的推动作用。

 

  总体上看,龙芯上自由软件的发展现状处于由可用到好用的过渡阶段,成果与不足并存。笔者认为,目前龙芯软件开发的最大问题是龙芯对自由软件的理解不够深入,具体表现为开发中某些做法与自由软件社区中约定俗成的做法有些不同。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部