五千年(敝帚自珍)

主题:【原创】分析一下龙芯2和MIPS的关系--1 背景 -- 随园过客

共:💬48 🌺192
分页树展主题 · 全看首页 上页
/ 4
下页 末页
    • 家园 可逮着个大沙发
    • 家园 【原创】4. 总结

      综合来看,很明显龙芯2是以R10000为母版的仿造改进版。尤其从龙芯2发展的历史来看更是如此。龙芯2B基本就是R10000的ASIC版。在2B逻辑仿制成功以后就开始改动,渐渐往里加自己的东西。比如2B1版里加入了对分支处理的改进,到2C扩大了一级cache,流水线也变成了现在的所谓九级。换句话说,龙芯2是计算所以实际实现R10000设计为起点,在此基础上吃透原设计,逐渐一步一步把这10多年理论界提出的新算法加进R10000的过程。

      至于是否触到了R10000核心的版权问题,这个就要看具体MIPS专利如何写的了。我感觉从法律上来说很可能没有,因为10年前的专利界情况和今天很不一样,防御式的专利还不那么多。而且实现结构上的专利多数比较容易绕过,即使使用也很难被查出来。另外那么久了,有的专利恐怕也过期了。但是,排除法律上的技术性因素,龙芯与R10000间的继承关系还是很明显的,硬要说“在涉及具体实现的微体系结构方面,龙芯2号和MIPS R10000很难找到相同的地方”这个也是不符合事实的。

      • 家园 这个专利应该买下来

        如果可能,甚至应该试图获得MIPS的永久授权。趁着MIPS有麻烦,能吃下多少算多少。

        就算是1000万美刀,肯定比4000万人民币的绿坝来的值。

      • 家园 好文献花
      • 家园 仿照改进版好呀

        先从仿照改进开始 学透以后看能不能自己做

        东西 很对的策略嘛 有啥不好呢

        毕竟 革命性的 创造性的 创新 也不是一拍脑袋

        就能想出来的

      • 家园 这个问题如果从另一方面看。

          第一,我国需不需要能不受制于人的CPU芯片?就是能自己设计的芯片,不管是用了谁的技术。

          第二,现在有没有可能搞出完全靠自己研发,与外国技术、专利毫不相干而又兼容的CPU芯片?

          第三、买回来后可以不受限制的使用的技术、专利算不算自有知识产权?

          第四,那些英特尔一类的大公司,是不是所有的技术、专利都是它们自己研发的,从来不买别人的专利?

        • 家园 花,看似是问题,实质指出了类似“创新产品”问题的实质。
        • 家园 这些问题很有典型性,试着回答一下

          第一,我国需不需要能不受制于人的CPU芯片?就是能自己设计的芯片,不管是用了谁的技术。

          这个不是技术问题,在本版不合适,不回答了。

          第二,现在有没有可能搞出完全靠自己研发,与外国技术、专利毫不相干而又兼容的CPU芯片?

          兼容一种架构,如果那种架构本身被注册了专利,那当然是避不开的。

          但是架构下面的具体实现,完全是可以做到靠自己研发,与外国技术、专利毫不相干的。可以说这样做不现实不合算等等,但是无法否定可能性。

          第三、买回来后可以不受限制的使用的技术、专利算不算自有知识产权?

          不算。

          买的只是使用权,不是所有权,不能号称是“自有”,只能说授权。一样技术,卖方卖给你之后可以根本不跟你打招呼就自由地同样卖给别人,你能说这技术是你“自有”的吗?而且现在技术授权都不允许买方再买卖再转让,你不能再卖再送的东西能算“自有”的吗?

          第四,那些英特尔一类的大公司,是不是所有的技术、专利都是它们自己研发的,从来不买别人的专利?

          买,但是这种买来的技术不能被说成自有的,因为同样买来的只是使用权。

          如果要把买来的技术算成自己的,办法就是把整个对方公司都买了,这样成功后才可以说是自有的。

          • 家园 我觉得。

              我国急需的是自己能控制设计、制造全过程的合用的CPU芯片,在这个基础上,打点擦边球甚至偷些技术来也无可非厚。走捷径速度可以快一些,只要不被捉住手,与买来芯片磨一下就说成自己做的是天地之别。

              买专利有多种形式,有买断的,只买使用权的等。能买断当然最好,但很多情况下犹其是已经证明了这个专利前途极好的情况下不会卖断给你。但买下的只要不限制你的使用和专利产品(不是专利本身)的出售,至少可以算部分自有技术。

              对于龙芯各时期的不同宣传,我觉得是为了避免陷入无穷无尽的诉讼中,有些话是不大好明说的。

            • 家园 这个问题恐怕得历史的看

              以前要抄也没得抄,所以能抄到偷到那都是本事。说成是自己的也很自然,而且都是内部流通,所以以前剖片子仿来的说是自己的也没人多说话。

              但是现在还弄这一套硬说是自己的就多少有些忽悠了。现在抄东西可容易多了,简直不算本事。其实抄东西来练手或者藏在自己家看着乐都好,但是却抄来的还要再卖,这个在全球化背景之下以后倒霉的还是自己。

        • 家园 每个国家都有自己的立场

          第一、第四点回答不了。

          关于第二点,原文也说到了,白手起家太不合算。

          关于第三点,中国和美国的态度肯定大相径庭,在目前这个发展阶段,中国是绝对鼓励多打“擦边球”的。

      • 家园 人龙芯就是MIPS啊

        自己加了一些多媒体指令集,这个在他的说明书里讲的很清楚,你没看过?

        • 家园 这里面有个历史过程

          最早龙芯号称过和MIPS兼容。

          但是后来instat写了篇文章说可能会有IP纠纷后龙芯就开始否认和MIPS兼容关系,甚至有李国杰说出“MIPS做中低端我们做高端”这种技术上完全错误的话。

          到后来ST买了授权之后,龙芯2E现在的定位是:“MIPS®-based”。

    • 家园 【原创】3. 龙芯核心与MIPS核心的关系

      MIPS的R10000是一个经典RISC核,虽然诞生于10多年前,但是它的设计已经有了很多所谓“后RISC”特点。它是第一个四发射超流水芯片。那篇Yeager 于96年写的介绍R10000的文章是学CPU设计学生的必读资料,公开的R10000资料也非常丰富详尽,也有质量很高的开源模拟器,甚至核心本身都不难拿到。这一方面因为MIPS老板是学界出身,对教学用途很支持,另一方面R10000到底是10年的技术了。而后来的MIPS芯片以及其他RISC芯片的资料就难拿多了。

      可以说龙芯从一开始就打算仿造R10000。863立项时说的两个指标,主频达500MHz和SPEC CPU 2000达300分。其实这基本就是R10000的后继R12000在2000年的性能指标,R12000基本沿用了R10000的设计,不过采用了更新的工艺。为什么不仿IBM的Power芯片,为什么不仿Alpha芯片?这些都是非常成功的RISC芯片。主要原因就是R10000资料丰富。863立项时说指标,成功的把握还是很大的,因为当初的R12000是.25micron的工艺,用现代.18工艺重造即使不做任何设计上的改进性能也会超出的。这就是现在很多486/586芯片设计又被重新生产的原因,比如AMD的Geode系列芯片,在性能尤其功耗上面比当初有很大改进,改头换面作为低功耗嵌入式芯片在卖。所以看到胡李二人事后说的什么当初说什么做不出“提头来见”之类的话其实很可笑,因为这里面风险并不大。

      先说说龙芯2和R10000的相似点。

      两者都是四发射芯片,也就是说每一个周期可以同时取四条指令。这个不稀奇,大多数RISC芯片都是四发射。而考虑复杂程度,再往上用增加发射来提高性能也不大值得了。

      但是两者都有的五个功能模块,其间的差别更多只是在名称上。这五个模块分别是两个整数计算模块(龙芯的叫ALU1和ALU2,R10000的叫Integer ALU1和Integer ALU2),两个浮点计算模块(龙芯的叫FPU1和FPU2,R10000的叫FP Adder和FP Multiplier),再加上一个地址计算模块(R10000叫Address Calculation,龙芯叫AGU或者Address Generation Unit)。功能块有几个各是什么用途是结构设计上很重要的一点,不同芯片,既是都是64位4发射的RISC芯片,往往会做出不同的选择。比如IBM的Power3芯片,却有三个整数计算模块,两个浮点计算模块,两个地址计算模块;HP PA8000则是四个整数计算模块,四个浮点计算模块,两个地址计算模块;DEC的Alpha 21164总共四个功能模块。即使同样是MIPS64架构的SB1 core也是两个整数计算模块,两个浮点计算模块,两个地址计算模块的构成。

      龙芯和R10000这样的大结构框架上的一致我认为很能说明龙芯与R10000之间结构上的继承关系。因为这样的大框架定了,基本的电路设计就定下了,剩下的只是如何存取指令,如何做地址转换这些事情了。

      好了说明了结构上相似点,再看看龙芯所说的不同点。

      首先是龙芯的九级流水线,这似乎是很明显的区别,被很多地方提到作为龙芯与R10000不同的证据,因为R10000用的是五到七级流水线。但是细看就有了些疑问。龙芯的九级分别是:取指、预译码、译码、重命名、送入队列、发射、读寄存器、执行、提交。R10000对应整数指令的各级是:取指、译码+重命名+送入队列,发射+读寄存器,执行、提交。而对于浮点和地址指令,相对应的执行级有所不同,因为复杂程度被分成了两个或三个级(时钟周期)。从这里可以看出,龙芯的所谓九级流水和R10000的七级流水,很可能不是苹果与苹果之间的比较。R10000的一级包括了一个时钟周期内可完成的所有操作,而龙芯的级只是操作。另外龙芯的最后两级又太概括,比如所说的执行级,对于浮点和地址的执行操作很可能不是在一个时钟周期内完成的。当然也可能龙芯一个时钟周期内只可完成一个操作,每个操作都在一个时钟周期内完成,不过我对此深表怀疑。至于龙芯的预译码级,我手头没有相关资料所以没法评论,不知是否和龙芯新加的那些指令有关,得把它们先转换处理了。总的来说对于流水线深度因为龙芯公开的九级资料比较模糊不好分析,但其间差别远没有宣传的那么大。

      龙芯还有一个被提到的“不同点”,就是龙芯2号在发射指令时把指令分成定点(包括访存)以及浮点两组而R10000在发射指令时把指令分成定点指令、浮点指令、和访存指令三组。这一点细推敲也不容易成立,因为R10000的访存指令虽然有自己的队列,但走的数据路径却和整数指令一样经过整数寄存器阵列,从这个意义上说也可以讲R10000一样分两组,分别走浮点寄存器阵列和整数寄存器阵列。所以很可能这一区别也只是说法上的不同而已。

      剩下的另两个不同点的确是龙芯与R10000的主要区别,在分支处理和存储层比如针对溢出写覆盖的保护这两块。不过这里面涉及的技术性东西太多,对这个论坛不大合适,另外也写累了没兴趣再写了,所以就不多说了。

分页树展主题 · 全看首页 上页
/ 4
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河