打印
[国产单片机]

《酷能指令集》及相关专利技术

[复制链接]
楼主: 吾要单片机
手机看帖
扫描二维码
随时随地手机跟帖
121
吾要单片机|  楼主 | 2018-5-18 21:36 | 只看该作者 回帖奖励 |倒序浏览
需要补充说明的是:具有JMP功能的指令(不包括CALL、RET、INT、IRET指令)都支持1条延时槽指令。该延时槽指令不能是分支指令。

使用特权

评论回复
122
吾要单片机|  楼主 | 2018-5-23 11:19 | 只看该作者
吾要单片机 发表于 2018-5-18 21:36
需要补充说明的是:具有JMP功能的指令(不包括CALL、RET、INT、IRET指令)都支持1条延时槽指令。该延时槽指 ...

取消延时槽指令,以免侵犯别人的专利。

使用特权

评论回复
123
吾要单片机|  楼主 | 2018-8-5 13:03 | 只看该作者
本帖最后由 吾要单片机 于 2018-8-8 12:02 编辑

酷能指令集有改动:
1、取消双推栈指针。
2、取消第一项专利《数据处理指令附加跳转功能的方法》的条件码和反条件码字段,也就是说,数据处理指令附加的跳转功能是无条件跳转,以简化电路规模。
3、数据处理指令附加的无条件跳转在译码阶段执行,除此之外其它的分支指令都移到EX阶段执行。
4、规范并强化JMP指令的功能。
5、取消PSR.RC重复计数器功能。
6、在PSR寄存器中增设有ASID字段,以支持多任务环境。

使用特权

评论回复
124
mailshichao| | 2018-8-6 08:28 | 只看该作者
楼主,有么有在FPGA上面模拟运行哦

使用特权

评论回复
125
吾要单片机|  楼主 | 2018-8-6 09:46 | 只看该作者
mailshichao 发表于 2018-8-6 08:28
楼主,有么有在FPGA上面模拟运行哦

那是肯定的,欢迎参加讨论!

使用特权

评论回复
评论
mailshichao 2018-8-7 16:17 回复TA
厉害了,我也想利用业余时间研究指令集,也想搞搞自己独特的CPU,哈哈 
126
hz_wuyi| | 2018-8-6 18:51 | 只看该作者
对了解CPU、指令集、汇编有帮助

使用特权

评论回复
127
吾要单片机|  楼主 | 2018-10-31 11:43 | 只看该作者
本帖最后由 吾要单片机 于 2018-11-5 15:19 编辑

本酷能指令集属于RISC架构,它包含有16位指令集(66条指令)32位指令集(78条指令),这16位指令集和32位指令集是相互独立的,自成一体,16位指令集不用借助32位指令集就能实现所有功能,这和ARM16MIPS16有所不同。为了简化译码器电路,本指令系统设定:一个CPU只支持一套指令集,16位指令集是用于嵌入式(即MCU)领域,而32位指令集是用于通用CPU领域,这是因为在现实应用中,用于MCU的程序不太可能直接用于通用CPU,反之亦然,这两个领域的软件生态是相互独立,所以没有必要搞一个CPU同时支持两套指令集。
本16位指令集的技术特点: 1.支持的通用寄存器16个,即R0---R15,这比其它16位指令集(比如ARM16和MIPS16)大一倍,为用户提供更多的寄存器变量空间,有利于提高效能。 2.可以携带16位或32位的立即数,这一优势是其他16位指令集不能比拟的。 3、访存指令LOAD/STORE寻址方式灵活多样,支持的偏移量offset = #0、#imm12、#imm28或通用寄存器,比其他16位指令集强。4、访存指令(load/store)具有变指针功能,以直接支持C语言*p++,*p--,*++p,*--p.       5、许多数据处理指令可以附加无条件跳转功能。6、有PUSH/POP指令,可以连续将1~4个寄存器出入栈。7、没有延时槽指令。
本32位指令集的技术特点: 1.支持的通用寄存器32个,即R0---R31。2.可以携带32位的立即数,这一优势是其他32位指令集不能比拟的。 3、访存指令LOAD/STORE寻址方式灵活多样,支持的偏移量offset = #imm14、#imm32或通用寄存器,比其他32位指令集强。4、访存指令(load/store)具有变指针功能,以直接支持C语言*p++,*p--,*++p,*--p.      5、许多数据处理指令可以附加无条件跳转功能。6、有PUSH/POP指令,可以连续将1~4个寄存器出入栈。7、没有延时槽指令。
本指令集特有的计算多维数组指针的指令UMAC,UMAC指令能够显著提高计算多维数组指针的效率。 举个例子:有个二维数组int  a[30][20],如果想要访问a[x][y]单元,先转化为一维数组a[k],其中k=x*20 + y。而计算表达式(k=x*20 + y)就是由1条UMAC指令完成(UMAC  Ry, Rx, #20),即执行操作R1=Ry+Rx*20,耗时为1个周期,这时R1就是k,因为R1是通用寄存器,所以可以直接使用LD/STR  Rd,  [Ra,R1]访问了,一步到位,有利于提高程序的代码密度。如果使用ARM或MIPS指令,光计算表达式(k=x*20 + y)就要用3条指令才能完成(耗时为3个周期):首先取得立即数#20,第二步相乘,第三步再相加。
本指令集支持的数据类型有3种:    1、8位(字节byte)有符号数或无符号数;
                            2、16位(半字half)有符号数或无符号数,双字节对齐;
                            3、32位(字word)有符号数或无符号数,四字节对齐;
本指令集架构不支持非对齐访存,而且只支持小端模式。
本指令集架构在应用专利一《一种在计算机数据处理指令中附加跳转功能的方法及CPU模块》时有所裁剪,即:取消执行条件码和反条件码,默认数据处理指令和附加的跳转功能都是无条件执行
本指令集特有高效的CALL和RET指令里面包含有对LR和FP的出入栈操作),可以大幅度简化调用子程序的操作,再配上独特的双向栈段结构,可以显著提高调用子程序的处理速度。
11月5日更新后文件:
《酷能指令集V1.5》.pdf (824.55 KB)

使用特权

评论回复
128
linqing171| | 2018-11-2 08:51 | 只看该作者
楼主,最近用LLVM做了个小工具,踩了十来个坑,感觉LLVM已经可以替代GCC了。大势所趋。就和RISC V也会成为趋势一样。

使用特权

评论回复
129
吾要单片机|  楼主 | 2018-11-4 11:30 | 只看该作者
linqing171 发表于 2018-11-2 08:51
楼主,最近用LLVM做了个小工具,踩了十来个坑,感觉LLVM已经可以替代GCC了。大势所趋。就和RISC V也会成为 ...

怎么弄啊,我不懂,近段时间一直在做代码优化工作,现在使用Cyclone II综合最高仿真频率只能达到52MHZ,目标是60MHZ,看来很难达到,已经弄几个月了。

使用特权

评论回复
130
linqing171| | 2018-11-5 14:12 | 只看该作者
吾要单片机 发表于 2018-11-4 11:30
怎么弄啊,我不懂,近段时间一直在做代码优化工作,现在使用Cyclone II综合最高仿真频率只能达到52MHZ,目 ...

FPGA的优化我已经十几年没有接触过了。毕业时在简历上深以为豪的写了一堆FPGA优化的,工作几年后看起来都是业余的很。
LLVM是C语言的编译器。ARM CC v6已经把前端切换为LLVM带的clang了,你可以了解一下。自从Keil MDK v4.70抛弃了自己的代码编辑器(切换成了scintilla),最新的ARM CC也是一个大胆的尝试。

使用特权

评论回复
131
吾要单片机|  楼主 | 2018-11-5 15:26 | 只看该作者
linqing171 发表于 2018-11-5 14:12
FPGA的优化我已经十几年没有接触过了。毕业时在简历上深以为豪的写了一堆FPGA优化的,工作几年后看起来都 ...

我有个想法,能否召集几个人志同道合的成立一个兴趣小组,致力推广这个项目,有的做编译器,有的做操作系统,有的做电路设计,股权大家讨论,虽然不是公司实体,但是也算是公司的雏形,这样是否可行?

使用特权

评论回复
132
linqing171| | 2018-11-5 21:48 | 只看该作者
吾要单片机 发表于 2018-11-5 15:26
我有个想法,能否召集几个人志同道合的成立一个兴趣小组,致力推广这个项目,有的做编译器,有的做操作系 ...

业余难做起来。国外开源有些成功的例子,但是和我国国情不服。
最好还是能成立个公司,无论依附于BAT这种大公司,还是依附于国家项目。

又不似大学老师这么清闲,像我们这个年龄的,一般都是公司干活的主力;精力有限,导致了业余爱好的效果一般般。

使用特权

评论回复
133
吾要单片机|  楼主 | 2018-11-12 15:42 | 只看该作者
虽然这个项目大家讨论得不多,但是我依然**不断推进,每个星期都要完成一些东西,积少成多,**5年看看最后会达到怎样的效果,这帖子将连续记录这个项目推进的轨迹。现在到了《总线及存储器系统》。
总线及存储器系统.pdf (122.86 KB)





使用特权

评论回复
134
Ketose| | 2018-11-20 17:19 | 只看该作者
SO COOL.
想问下作者基于你的指令集的CPU有没有样品?能不能申请试用?

使用特权

评论回复
135
吾要单片机|  楼主 | 2018-11-20 21:32 | 只看该作者
Ketose 发表于 2018-11-20 17:19
SO COOL.
想问下作者基于你的指令集的CPU有没有样品?能不能申请试用?

还没有到那一步。

使用特权

评论回复
136
吾要单片机|  楼主 | 2018-11-20 21:32 | 只看该作者
Ketose 发表于 2018-11-20 17:19
SO COOL.
想问下作者基于你的指令集的CPU有没有样品?能不能申请试用?

还没有到那一步。

使用特权

评论回复
137
linqing171| | 2018-11-20 22:16 | 只看该作者
加油。
无论堆栈还是RAM,非对齐访问的意义不是很大。如果蚊子腿也是肉的话,意义还是有的。但是用c语言的又有几个人把结构体pack,让int挤那点地方?
*p++,*++p;*p--;*--p; *p ; 这应该在c语言里还是经常见的
x86比较强一些,但是后期主要是多媒体指令之类的。还有rept指令前缀,retn等也和其它的都不一样。

以前读书老是考  for(){if;else;}  和 if(){for();} else { for}, 哪个更省空间,哪个更快速度。极短跳转占的代码的比例还是不少的。如果架构做的大的话,call、ret也有一些,但是应该到不了5%的比例。

使用特权

评论回复
评论
linqing171 2018-11-22 18:50 回复TA
@吾要单片机 :数据可信。但是随着现在越来越流行的趋势,函数越来越短,后面call、ret的比例可能还会上升一个点。按我读书的时候写的c代码,大部分函数都10~50行级别,可能也就1~2%了。 
吾要单片机 2018-11-22 16:12 回复TA
jmp指令一般占到12~15%,call、ret一般占到3%,这是《量化研究方法》统计结果,X86强在代码密度高。 
138
吾要单片机|  楼主 | 2018-11-22 15:57 | 只看该作者
本帖最后由 吾要单片机 于 2018-11-23 16:10 编辑

有重要改进:
1、本指令集架构安排有1个系统控制协处理器CP,该协处理器的工作寄存器有32个(CR0—CR31),该系统控制协处理器只有在特权级状态下才能访问。
2、增加协处理器访问指令:MOV   CRd, Rj和MOV  Rd,CRj中,CR是协处理器寄存器,R是CPU通用寄存器d,j{0~31}
3、在16位指令集中,load/store访存指令可以访问32位直接地址,比如:LB    Rd, [#uimm32]
4、总线采用常规方案:

使用特权

评论回复
139
吾要单片机|  楼主 | 2018-11-23 16:38 | 只看该作者
增加指令:JMP Rj,以支持操作系统long jmp

使用特权

评论回复
140
吾要单片机|  楼主 | 2018-11-24 17:32 | 只看该作者
本帖最后由 吾要单片机 于 2018-11-24 17:40 编辑

删除指令:UMLA(无符号乘加)和UMLS(无符号乘减)。
增加指令:WFS  Rj(等待外来信号,以支持多核同步)。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则