龙芯开源社区

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

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

    [复制链接]
 楼主| 发表于 2013-5-31 22:28:21 | 显示全部楼层
龙芯指令集在哪里下载?和PIC32一样吗?
发表于 2013-6-1 00:03:50 | 显示全部楼层
发表于 2013-6-1 07:33:50 | 显示全部楼层
回复 27# 吾要单片机


    这个不清楚,我已经二十多年没看报纸了。
发表于 2013-6-1 07:36:20 | 显示全部楼层
本帖最后由 longshort 于 2013-6-1 08:36 编辑

回复 29# 吾要单片机

要改动电路的话,那就不太利于推出你的指令集,这会直接影响到硬件的设计周期。


我的设想:
1、凭着龙芯的技术水平实现本指令集应该是不难,因此我认为龙芯公司可以通过修改设计使得未来的 ...
吾要单片机 发表于 2013-5-31 19:45


对于1,实现的方式不是大问题,已经在上面描述了。指令集的选择开关无须增加引脚,在现有的引脚上增加功能即可,上电初始进行外部设置,正常运行时按指定的指令集操作。

对于2,汇编器和C语言编译器都不是问题,民间搞的人多得很。

对于3,更不是问题了,国防、科工贸各领域都已开始,等政府行为都到位并实施完成,市场应该不是问题。


有关指令利用效率的问题,在32位指令中本身就有好几位空着没有用,在16位指令中的确无法实现。
吾要单片机 发表于 2013-5-30 23:13



    指令效率的问题不是绝对的,只要总的执行时间与结果都有提高,那就是成功的。例如你的指令集,若在芯片内部由微程序进行解释执行,实际的执行时间并不会增加,对芯片来说,减少一个外部取指的操作,要比内部增加一个执行步骤时间长得多得多。如果龙芯小组决定考虑你的指令集,那么他们一定会以最有效的方式来实现它。
发表于 2013-6-1 07:37:24 | 显示全部楼层
回复 31# 吾要单片机


    就是mips指令集。
发表于 2013-6-1 08:47:25 | 显示全部楼层
本帖最后由 longshort 于 2013-6-1 08:48 编辑

hdst 发表于 2013-5-31 20:54



    CPU内部都有一个二进制码解释执行模块,以前都称为微程序,现在不知怎么称呼?我已落后时代多年,还望老兄指点。

 若由微程序来进行新的指令集解释,那么就须增加解释步骤,例如原来的运算和跳转由两条指令分别完成的话,现在在芯片内部由微程序进行这两条原始指令的操作,而其微程序过程由新指令所调动。这样一来,内部过程会增加解释时的消耗时间,但由于内部时钟远高于外部时钟,所以外部取指的时间减少了一半,相当于提高了一倍的运行速度。
发表于 2013-6-1 10:48:28 | 显示全部楼层
支持哦,胡老师他们应该会联系你的吧
发表于 2013-6-1 12:13:32 | 显示全部楼层
回复 36# longshort

哦 这可不敢当,我不是专业人士,只是想听听您的解释,学点儿东西而已。
我这样想,不知对不对,这位设计者把跳转指令和运算指令合二为一,自然是想要“指令并行”的效果。 跳转指令在有很多是对存储的取指操作,设计者肯定希望它和运算同时进行,之所以设置条件码和反条件码可能是避免两者有数值或返回值之类的依赖,避免流水线因此产生停顿。同时处理两条指令,自然需要电路上的支持,所以增加电路是不可避免的。但问题在于,如果两者有依赖关系的话会不会降低流水线的效率?最终的结果是不是会得不偿失?这需要试验验证。
发表于 2013-6-1 12:42:42 | 显示全部楼层
回复 38# hdst


    不必客气,我也是来学习的。
问题就在于两者的依赖关系,否则并行处理不是问题。不过并行运行只是个逻辑上的概念,在时域上它仍然是串行的。即使是多核结构,只要存在依赖关系,等待是不可避免的。增加电路在道理上说得通,但是否对实际的产品有用?否则龙芯早就可以这样做,一次处理多条流水线也已经是成熟技术,并行不是障碍。倒是每条指令都带了跳转地址,那么对于流水线来说时刻都有重新更换流水线上数据的可能,这是个最大的难题,也是需要设计者重点考虑的。
发表于 2013-6-1 19:14:55 | 显示全部楼层
本帖最后由 guobamantou 于 2013-6-1 19:22 编辑

首先声明我是外行也非官方,略用过些mips指令,看到这个有点意思,
想想觉得龙芯胡老师应该是不会找你的,呵呵,说错了就一笑置之。
但有想法的人并能付诸行动的人总是值得尊重的。

首先指令集设计都是有个思路的,作为典型的RISC指令集,
mips的思路是定长指令且一条指令只做一件事情,这样CPU的设计会简单。
简单会带来一些优化上的便利,比如指令是4字节,那么跳转的地址的最后两位必定是0。

按照你的专利说明书,看起来也是定长的32位位指令集。
假设通用寄存器是32个,每个表示要5bit,3个,条件位和反条件位各占1bit,
一般指令集怎么也得有150条指令(龙芯3系列指令肯定超过300,但不到500条),
9bit可以表示512条,因此opcode长度就算8bit好了,那么留给跳转的就剩下7bit(32-15-2-8),
由于定长,7bit中1bit表示前后,这样可以前后跳转64(2^6)条指令的范围(前后各128字节)。

看mips的指令集会发现opcode实际由两部分组成(各6bit,叫做special和example),
并不是从0,1,2...这样密集排列的,前面定长6bit表示指令的类型,
有的指令一个类型中就一个(比如长跳转类,为了后面更多bit的表示偏移),这里面一定有浪费的成分,
但是指令集设计要考虑到所有情况,比如假设区分每条指令9个连续的bit就够了,
那么相对于mips现在的设计,长跳转(立即数类非寄存器类)能表示的bit就少了3bit,
也就是跳转范围是原先的1/8,这样原先可以用一条长跳转指令的就很大概率需要两条指令完成。

mips和arm、x86比有个比较明显的设计区别,就是没有条件位,这也是设计思路的差异(这样是否CPU设计会少一部分电路???)。
总之,觉得像mips这样的指令集和你的思路是不合的。
当然,考虑到实际效率,龙芯指令中也有些指令是不合传统RISC思想的(比如多媒体指令),但是大框框还是不突破的。

还有实际的CPU都是流水线,多发射的,减少一条指令数和逻辑设计上的合理性相比,是否真的是效率上的提高挺难说的。
你可以找计算所龙芯课题组的人问问,也许他们才能理解有些指令集设计的精妙之处。

本版积分规则

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

GMT+8, 2019-5-22 21:03 , Processed in 0.220000 second(s), 15 queries .

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