【转帖】MIPS构架之:我和龙芯有个约会
MIPS构架之:我和龙芯有个约会
https://www.eefocus.com/mcu-dsp/364490
当年龙芯为什么选择了 MIPS 构架而没有选择 ARM 构架?这个问题被争执了很多年,有人说当年 ARM 构架不足以支持桌面运算,有人认为是“指令集授权”和“微架构授权”不是一回事,龙芯需要 MIPS 的指令集授权,而非 ARM 的微构架授权。总之,MIPS 的架构完整性与授权较宽松赢得了龙芯的青睐,在如今半导体衰退的大趋势下,MIPS 构架是否还有机会崛起值得探讨。
3.MIPS64 位架构
MIPS64 架构刷新了 64 位 MIPS-Based 嵌入式处理器的性能标准。它代表着下一代高性能 MIPS 处理器的基础,并兼容 MIPS32 32 位架构。
![]()
MIPS I-class I6400 CPU 系列产品
MIPS 架构拥有强大的指令集、从 32 位到 64 位的可扩展性、广泛可获得的软件开发工具以及众多 MIPS 科技公司授权厂商的支持,是领先的嵌入式架构。
MIPS64 架构是以前的 MIPS IV 和 MIPS V 指令集架构(ISA)的扩展集,整合了专门用于嵌入式应用的功能强大的新指令,以及以往在 R4000 和 R5000 MIPS 处理器中执行的已经验证的存储器管理和特权模式控制机制。通过整合强大的新功能、标准化特权模式指令、支持前代 ISA,以及提供从 MIPS32 架构升级的路径,MIPS64 架构为未来基于 MIPS 处理器的开发提供了一个坚实的高性能基础。
MIPS64 架构基于一种固定长度的定期编码指令集,并采用导入 / 存储(load/store)数据模型。经改进,这种架构可支持高级语言的优化执行。其算术和逻辑运算采用三个操作数的形式,允许编译器优化复杂的表达式。此外,它还带有 32 个通用寄存器,让编译器能够通过保持对寄存器内数据的频繁存取进一步优化代码的生成性能。
功能强大的 64 位浮点寄存器和执行单元可加快某些任务的执行速度,比如一些 DSP 算法的处理、图形操作的实时计算。双单精度指令(Paired-Single instruction)在一个 64 位寄存器中装入了两个 32 位浮点操作数,从而实现单指令多数据操作(SIMD)。这种方法的执行速度是传统 32 位浮点单元的两倍。浮点操作可选择软件仿真。
MIPS64 架构兼具 32 位和 64 位寻址模式,同时采用 64 位数据工作。这样一来,无需额外的存储器进行 64 位寻址就能获得 64 位数据的优势。为了便于从 32 位系列的移植,该架构还带有 32 位兼容模式,在这种模式中,所有寄存器和地址都是 32 位宽,MIPS32 架构中出现的所有指令都被执行。
![]()
I6400 采用最新一代的 MIPS Coherency Manager 架构
这是以新的多核一致互连架构为基础。它可支持每集群最多达 6 核的多核配置,并且单一集群上的多核都能拥有不同的合成目标,并以不同的时钟频率和电压运行。一致性管理员架构中构建了多项高性能特性,包括硬件预取,以及比前一代架构更宽的总线和更低的时间延迟。
4.microMIPS 架构
microMIPS 是一种在单个统一的指令集架构中集成了 16 位和 32 位优化指令的高性能代码压缩技术。
它支持 MIPS32 和 MIPS64 Release2 架构,整合了可变长度重新编码 MIPS 指令集和新增的代码量优化 16 位和 32 位指令,可提供高性能和高代码密度。
microMIPS 是一个完整的 ISA,既能单独工作,也能与原有的 MIPS32 兼容指令解码器共同工作,允许程序混合 16 位和 32 位代码,无需模式切换。由于它的程序代码量较小,因此可获得更好的缓存利用率和更小的取指带宽(fetch bandwidth),从而有助于提升性能,降低功耗。
microMIPS 包含所有 MIPS ASE 指令,支持 CorExtend/UDI 接口。而且,针对 microMIPS 软件及系统开发,MIPS 科技公司与第三方合作伙伴生态系统提供有一套全面完善的软硬件工具支持。新推出的 M14K?和 M14Kc 是首先执行 microMIPS 的处理器内核。
5.MIPS 的授权和“中国芯”
2002 年,中国科学院计算所开始研发龙芯处理器,采用 MIPS 架构,但因未经 MIPS 公司的授权而遭到侵权的控告。2009 年,中国科学院与 MIPS 公司达成和解,得到正式授权。
![]()
MIPS 架构国内的代表龙芯处理器
看到这里,也许大家不禁要问:前有身份显贵的 X86,后有红极一时的 ARM,为什么 MIPS 最终成为了我国龙芯处理器的设计架构呢?
答案非常简单,那就是架构授权。
x86 架构的拥有者 Intel,可以算作是技术合作上最抠门儿的一位。
在推出 x86 架构之后,Intel 就只将这一架构授权给过 AMD 和 VIA 等几个芯片公司。而在 VIA 退出 x86 架构处理器竞争之后,Intel 便不再给任何公司 x86 架构授权。所以从 x86 架构上入手,龙芯处理器显然是行不通的。
Intel 的 x86 架构行不通,那么 ARM 架构是否就能行得通呢?ARM 不也是给授权吗?那为什么还选 MIPS 呢?
回答这个问题之前,首先对比一下两家公司在架构授权问题的“原则”,MIPS 和 ARM 虽然都是对外进行架构授权的公司,但意义完全不同。
ARM 公司是一家非常优秀的芯片设计公司,但自身并不生产处理器,而是将自身的设计 licensing 卖给需要处理器的公司,而后交给他们生产或者是找人代工。也许有人要问了,既然 ARM 向外卖出架构设计,那么为何龙芯不去选择 ARM 架构呢?其实不然,ARM 之所以能够发展成为一家非常成功的商业性公司,靠的就是芯片的架构设计,倘若架构设计被别人夺走了,那么自己就丢掉了赖以生存的“饭碗”。所以 ARM 虽然对外进行 licensing 授权,却不允许购买者进行任何对 ARM 架构有更改的设计。倘若更改了设计,那么这便违反了合作协定。ARM 便有权撤回 licensing 授权。
我国的龙芯要是选择了 ARM 架构的话,那么基本上也就被捆住了脚步,无法发展出属于自己的高性能处理器了。所以:此路依旧不通!
现在,将目光转向 MIPS,与 ARM 的商业化相比,MIPS 倒像是学院派的公司。
MIPS 的架构授权,并不限制任何对 MIPS 架构的更改。换句话说,就是 MIPS 公司给授权者一张白纸,而白纸上仅仅写着一行字,MIPS 公司同意你设计生产 MIPS 架构处理器,至于你设计成什么样,性能有多高,经过多少代更改,MIPS 一概不管,只要你不把架构彻底改变就行了。
与 ARM 相比,MIPS 是一个完全开放的架构,对龙芯未来的发展没有任何的限制,这与 Intel 给 AMD x86 架构授权,而不是给设计图纸的道理是完全一样的。在加上 MIPS 本身经过几十年的发展,已经拥有了众多的应用软件,综合考虑来看,MIPS 是最为适合龙芯处理器发展的架构选择。
6.MIPS 处理器的发展之路
现在,我们总结一下 MIPS 处理器的发展史:
- 1986 年推出 R2000 处理器;
- 1988 年推出 R3000 处理器;
- 1991 年推出第一款 64 位商用微处理器 R4000;
- 之后,又陆续推出 R8000(于 1994 年)、R10000(于 1996 年)和 R12000(于 1997 年)等型号;
- 1999 年,MIPS 公司发布 MIPS32 和 MIPS64 架构标准;
- 2000 年,MIPS 公司发布了针对 MIPS324Kc 的新版本以及未来 64 位 MIPS6420Kc 处理器内核。
简直是神一般的速度!
不过,貌似芯片行业有个规则:分久必合,合久必分。MIPS 芯片也不例外,在其的发展过程中,也曾经有过类似的插曲,比如:SGI 公司在 1992 年收购了 MIPS 计算机公司,1998 年,MIPS 公司又脱离了 SGI,成为 MIPS 技术公司。虽然看起来尘埃落定,但分分合合的故事,仍然在继续。
2012 年,MIPS 处理器收购案引来众多芯片及处理器厂商的关注。很多公司都希望能够接手这个拥有众多专利的半导体设计 IP 公司。最终,Imagination 科技公司宣布将以 6000 万美元现金收购芯片厂商 MIPS:收购了 MIPS 经营业务及 82 项专利,以及 MIPS 的 160 位工程师;而 ARM 则透过一个投资联盟 Bridge Crossing 取得 MIPS 489 项专利组合的权利。
![]()
MIPS 技术公司的 LOGO![]()
新的 LOGO 中依旧保留着 MIPS 的印记
思考一下,MIPS 的结局为什么是这样呢?
答案在于它的自身,MIPS 起源于学院,在很长时间里都摆脱不了学院派的做法,特别是当公司取得了一定的商业地位以后更加变得固步自封,缺少了商业上的远见和野心。而与其比肩的 ARM 则完美地演绎了一出技术商业化的故事(故事的细节见后文)。
所以,每当大家谈起 ARM 和 MIPS,第一反应总是“MIPS 相对大、强、功耗大”而“ARM 相对小、弱、功耗低”,这不就是活生生学院派和商业派的特征吗?
至于将来 MIPS 将何去何从,我们拭目以待。
【转帖】MIPS构架之:我和龙芯有个约会的更多相关文章
- 【转帖】MIPS构架:曾经是英特尔的“眼中钉”
MIPS构架:曾经是英特尔的“眼中钉” https://www.eefocus.com/mcu-dsp/363953 <处理器史话>之十一 2016-06-17 08:02 作者:付丽华预 ...
- [转帖]【架构系列】龙芯loongson简介
[架构系列]龙芯loongson简介 https://blog.csdn.net/SoaringLee_fighting/article/details/97759305 2019年07月30日 10 ...
- DXP 技巧和龙芯3A装机
时间过得好快!来公司已经半个月多了!本想着每日一搏,可是一再被耽搁,到今天才写.好了,废话不说了.就把自己这些天做的事写一些.理一理吧.也希望大家监督,由于水平有限,有不正确的地方,还望指正! 刚来做 ...
- [转帖]国产统一操作系统UOS龙芯版正式上线
国产统一操作系统UOS龙芯版正式上线 2019/12/13 12:49:31来源:IT之家作者:骑士责编:骑士评论:446 https://www.ithome.com/0/462/725.htm ...
- [转帖]方正数码发布基于龙芯3A3000系列整机
方正数码发布基于龙芯3A3000系列整机 http://www.loongson.cn/news/company/730.html 方正数码也出过龙芯相关的服务器和PC笔记本等 发布时间:2019-0 ...
- [转帖]16nm国内最先进 兆芯展示x86 KX-6000八核处理器
16nm国内最先进 兆芯展示x86 KX-6000八核处理器 https://www.cnbeta.com/articles/tech/847125.htm 在近日的2019北京国际互联网科技博览会暨 ...
- 【转帖】处理器史话 | 这张漫画告诉你,为什么双核CPU能打败四核CPU?
处理器史话 | 这张漫画告诉你,为什么双核CPU能打败四核CPU? https://www.eefocus.com/mcu-dsp/371324 2016-10-28 10:28 作者:付丽华预计 9 ...
- [转帖]你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下)
你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下) https://www.ijiwei.com/html/news/newsdetail?source=pc&news_id=7177 ...
- 【转帖】龙芯3A3000处理器深度评测:和Intel、AMD差距巨大
龙芯3A3000处理器深度评测:和Intel.AMD差距巨大 https://www.eefocus.com/mcu-dsp/424623/r0 作者非计算机科班毕业 让我汗颜. 我计算机毕业都不知道 ...
随机推荐
- xrange和range的区别?
range: 函数说明,range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个列表. xrange:函数说明,xrange 用法与 ...
- K-Nearest Neighbors Algorithm
K近邻算法. KNN算法非常简单,非常有效.KNN算法适合样本较少典型性较好的样本集. KNN的模型表示是整个训练数据集.也可以说是:KNN的特点是完全跟着数据走,没有数学模型可言. 对一个新的数据点 ...
- 持续集成学习10 Pipline初探
一.流水线概述 1.案例 2.流水线语法(input 处会阻塞住让你选择) 3.执行脚本 4.查看语法
- Eclipse 打包运行maven项目
https://www.cnblogs.com/tangshengwei/p/6341462.html
- H5如何实现关闭当前页面,跳转到新页面?
小程序有此功能的跳转方法. 那么H5如何实现该功能? 很简单. location.replace('new.html') 这个方法可以实现 关闭当前页面,跳转到新页面 的效果. 而 windo ...
- 关于System.MissingMethodException异常
什么是MissingMethodException 试图动态访问不存在的方法时引发的异常. 继承 Object Exception SystemException MemberAccessExcept ...
- Awesome Go精选的Go框架,库和软件的精选清单.A curated list of awesome Go frameworks, libraries and software
Awesome Go financial support to Awesome Go A curated list of awesome Go frameworks, libraries a ...
- 超级简单的tab点击
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用IDEA查看变量调用链
在开发中,我们有时需要查看某个变量是怎么来的,从哪个类的某个方法调用后进入另一个类的某个方法. 如果只有一两层的调用,那么还能直接通过方法跳转来观察. 但是,如果有七八层的调用链呢,在各个方法之间跳来 ...
- MySQL8.0报错Can't connect to MySQL server on 'localhost' (10061)的解决办法
MySQL8.0报错Can't connect to MySQL server on 'localhost' (10061)的解决办法 事情的起因 今天课堂上要展示小组项目,需要用一个软件叫W ...