龙芯开源社区

 找回密码
 注册新用户(newuser)
楼主: 吾要单片机

在此公开本人的一项发明专利,可能对龙芯有用!

    [复制链接]
 楼主| 发表于 2013-6-6 16:17:15 | 显示全部楼层
本帖最后由 吾要单片机 于 2013-6-6 16:20 编辑

做一个阶段性总结:
1、“在数据处理指令中附加跳转功能”并不是在数据处理时一定要跳转,这一点很多人误解了,在数据处理时是不是需要跳转是由程序逻辑的要求来决定的,该跳转就跳转,该顺序执行的就顺序执行。有人说“在数据处理指令中附加跳转功能”是意义不大,因为现在都是多发射、乱序执行,但是我要所说的是,在同等执行速度的条件下,少一条指令有什么不好呢?
2、“数据处理指令和跳转指令合二为一”这句话如果脱离本专利说明书的话也许说得不够全面,容易引起误解,这句话应该这样表达:能够并行操作的数据处理指令和跳转指令合二为一,前面加上定语,这样误会才少。数据处理指令和跳转指令一定是没有关联才能并行操作,才能合并。
3、C51的JDNZ Rn, #XXX指令和本方案的“在数据处理指令中附加跳转功能”是完全不同的概念,C51的JDNZ Rn, #XXX指令的意思是:先执行DEC Rn,然后再执行JNZ  #XXX,这两步是串行关系,不是并行关系,不能合并的。就拿JDNZ Rn, #XXX指令来说吧,如果按照本方案的方法解读,应该是:如果Z==0,则同步执行DEC Rn和JMP  #XXX。经过对比就会发现,两者意思完全不同!。
4、本技术方案能不能得到龙芯的认可不是我能决定的事,我希望能够得到认可,也许龙芯他们看不上眼呢,但是我现在能做的就是介绍给大家,让大家知道有这么一回事,如果有人能在此基础上再有所创新,那我也是倍感欣慰!
5、有关RISC型CPU的事情,书上讲的太多了,流水线、指令单周期执行等,在我看来流水线也不是RISC的专利吧,X86自从486以来就已经使用流水线操作了,还有,也没有必要刻意去追求指令单周期执行吧,MIPS算是最早实践“流水线、指令单周期执行”的啦,可是现在也是加入了不少多周期执行指令了,而ARM似乎更加不老实呢,大把指令都是多周期执行。所以说没有必要为自己设置那么多条条框框,有时候突破一下这些条条框框,你才会豁然开朗,另有一番洞天,总之一句话:实用主义、中庸之道、简洁至上!
6、顺便问个问题:本指令集中有数组下标计算指令AMUL Rd, Rn, #i,这也是乘加指令的,和DSP的乘加指令雷同啊,为什么ARM、MIPS、龙芯等不能提供这样的指令呢,是想不到还是做不到?
感谢大家讨论,继续加油!
 楼主| 发表于 2013-6-6 22:53:54 | 显示全部楼层
谁有龙芯的指令集呢,38楼说龙芯有300~500条指令,如果是这样,那龙芯就不是精简指令集CPU啦。
发表于 2013-6-7 09:19:08 | 显示全部楼层
本帖最后由 hdst 于 2013-6-7 09:25 编辑

回复 72# 吾要单片机


    超版不是在30楼给你所有的近期龙芯的资料么,有龙芯2F,龙芯3B,龙芯2G,龙芯1B,龙芯1A, 很详细的技术资料。以前龙芯的资料真是无语,先出英文版后出中文版,O(∩_∩)O~
发表于 2013-6-7 09:21:52 | 显示全部楼层
回复 60# 华中科大一学生


   呵呵,说实话我没仔细研究过龙芯,因为他的技术资料都是英语的,我没那么多时间。这个也是从论坛听说。学生还没毕业?
发表于 2013-6-7 14:21:44 | 显示全部楼层
回复  华中科大一学生


   呵呵,说实话我没仔细研究过龙芯,因为他的技术资料都是英语的,我没那么多 ...
hdst 发表于 2013-6-7 09:21


不想毕业了。
 楼主| 发表于 2013-6-7 22:43:56 | 显示全部楼层
回复 40# guobamantou


    我刚才算了龙芯2F的指令集,总共有121条指令,没有300条那么多啊,还有MIPS指令格式的操作码分为OP和FUNCT两部分,其目的是为了:1、立即数能达到16位。2、跳转矢量能达到26位。除此之外我看不到没有别的奥妙。
 楼主| 发表于 2013-6-7 23:09:23 | 显示全部楼层
本帖最后由 吾要单片机 于 2013-6-7 23:29 编辑

浏览了龙芯的指令集我发现MIPS为64位操作专门设计了一套指令集,包括64位读写主存和64位运算等,而我的指令只有提供64位读写主存的指令,其它的64位数据处理(包括出入栈)都是由PC.w位来控制,这样做的目的是:1、不需要为64位数据处理提供一套新的指令集。2、使用PC.w位来控制32位/64位操作切换,从而达到32位的程序可以调用64位的子程序,反之亦然。问题是需要C编译器在程序CALL时能够切换PC.w位,这样,C编译器设计时可能有别于传统的做法。
大家看看,有什么不妥没有?
发表于 2013-6-8 09:58:05 | 显示全部楼层
回复 75# 华中科大一学生


    想一直宅到研究所呀?
发表于 2013-6-8 10:00:11 | 显示全部楼层
回复 76# 吾要单片机
据闻那是为了简化cpu的电路设计,还有那样做可以使指令规整,便于处理
 楼主| 发表于 2013-6-8 21:00:21 | 显示全部楼层
是的,指令规整是可以简化各操作数提取电路的设计,符合简洁至上的原则。
     一直以来,CPU电路设计工程师始终付出巨大的努力来提高CPU的运行效率,可谓是想尽了各种办法,但是如果C编译器不够聪明的话,C语言编译出来代码不够简练,会严重影响程序的运行效能,CPU电路设计工程师的努力将大打折扣。但是相比于CPU的速度,似乎大家都不太关心C编译器的性能,这是错误的,不过也许我们国家没人能设计出C编译器,现在大家只能使用GCC,那也没办法,性能不好也得使用。一个不聪明的C编译器对程序运行有多大的负面影响,我举个例子,还是ARM的MDK,编译C语句:a[i][j][k]+=5;MDK编译出来的汇编指令居然达到21条,进行两次数组指针计算。如果ARM电路设计工程师看到这番景象绝对要吐血。所以在追求最优最快的电路设计的同时也是要提高C编译器的智能才行。我不知道龙芯在这方面是否有足够重视。

本版积分规则

小黑屋|手机版|Archiver|Lemote Inc.  

GMT+8, 2019-8-26 18:07 , Processed in 0.196572 second(s), 17 queries .

快速回复 返回顶部 返回列表