介绍本人专利方案《一种在计算机数据处理指令中附加。。

[复制链接]
1397|13
手机看帖
扫描二维码
随时随地手机跟帖
吾要单片机|  楼主 | 2013-5-29 19:26 | 显示全部楼层 |阅读模式
本发明巧妙在数据处理指令的数据结构中设置条件码、反条件码和跳转矢量,并且在CPU的指令地址计算部件中增加了反条件码和跳转矢量的处理电路,实现了将数据处理指令和跳转指令合二为一,使得数据处理指令具有跳转功能,充分利用指令地址计算部件和数据处理部件并行操作的特点,为CPU能够快速地、高效地执行程序代码提供一种行之有效的解决办法。本发明方法不但提高CPU资源利用率和程序的运行效率,而且还使得程序代码更加紧凑。专利说明书及附图在附件中

说明书.rar

41.68 KB

相关帖子

吾要单片机|  楼主 | 2013-5-29 19:34 | 显示全部楼层
基于本专利方案,可以实现一下的技术特点:
1、所有指令都有条件码,能根据PSW状态码有条件实行。(这一点与ARM相同)
2、所有指令都附加有直接跳转的功能。
3、有条件码RP指示重复计数器配合重复操作,重复计数器计数零开销。

使用特权

评论回复
daymer| | 2013-5-29 19:47 | 显示全部楼层
先看看啊,貌似挺不错的

使用特权

评论回复
吾要单片机|  楼主 | 2013-5-29 19:54 | 显示全部楼层
好的,记得看完后回复哦

使用特权

评论回复
吾要单片机|  楼主 | 2013-5-29 20:02 | 显示全部楼层
我想问大家一个问题:X86在执行重复操作指令时能不能被中断?

使用特权

评论回复
SunFans| | 2013-6-2 09:11 | 显示全部楼层
嗯,貌似很不错呢……

使用特权

评论回复
nametony| | 2013-6-2 11:56 | 显示全部楼层
8086执行重复操作指令可以被中断.
嵌入条件码是要浪费编码空间的, 只有采用多级流水操作才需要避免跳转带来的清洗. 楼主说能"提高CPU资源利用率和程序的运行效率,而且还使得程序代码更加紧凑"真的无法理解, 如何对指令编码是问题的核心. 比较早前ARM和CORTEX-M0 及 CORTEX-M3指令, 就可以明白这一点. 楼主若在这方面有所作为, 何不先设计出一套新的指令系统.

使用特权

评论回复
吾要单片机|  楼主 | 2013-6-2 19:40 | 显示全部楼层
基于本发明专利,本人编写的指令集,结合该指令集才会明白本发明的精髓所在。

本人编写的指令集new.rar

174.46 KB

使用特权

评论回复
airwill| | 2013-6-3 15:44 | 显示全部楼层
本帖最后由 airwill 于 2013-6-3 15:48 编辑

我看未必.
每一条指令码都嵌入跳转状态. 无形中把跳转指令的空间搬到了其他任意执行码中去了. 由于多种跳转条件的存在, 必然使简单的指令都加上好大一段跳转码. 指令数是变少了, 但是每条指令变成了, 总的程序空间恐怕更长的可能性大.
    而关于 CPU能够快速地、高效地执行程序代码的问题. 现在 CPU 都是 RISC 流水线执行. 每条指令都只要一个周期 (不讨论超标量技术, 先不说跳转指令). 那么要想高效, 就要让一条指令多干事( 比如三操作数指令, 乘加, 象51的那种组合功能指令.如DJNZ, JBC). 另外避免跳转引起的流水线预取等待. 也只有双流水线, 解码时预测加载能够减少等待. 并且要零等待取指才能发挥作用 (要在 RAM 里执行或者带有高效的 Cache 才行).
    如果使用这个技术, 那么楼主的指令系统, 让每一条指令都要预测取指, 将导致庞大取指数据谈吐率. 也会大大地降低这个技术的效率.
    arm 要向 thumb 指令发展, 我看很大一部分原因是那臃肿的指令.
    另外, AVR 由于庞大数量的 32 寄存器内核, 导致指令的效率也明显下降.
    而 ARM 的 Thumb2 也把 16 个寄存器分成了高低两块寄存器组. 我想这也会导致内核的复杂性.
所以我觉得倒还不如如何合理使用和配置寄存器来得更实在些.

使用特权

评论回复
吾要单片机|  楼主 | 2013-6-4 21:09 | 显示全部楼层
1、本方案是在数据处理指令中附加跳转功能,但并不是说每条数据处理指令都是必须跳转,至于是不是该跳转是由程序逻辑要求来决定的,该顺序执行的还是顺序执行。
2、对于R型CPU来说,寄存器多是好事,自动变量能够全部定义在寄存器里那才爽呢,至于说AVR性能不好也不是寄存器多的原因,而是因为AVR是16位指令系统,要16位指令系统来操作32个通用寄存器有点勉为其难了,如果你观察AVR指令系统,你就会发现AVR指令系统无法提供三操作数的运算指令,对R型CPU来说是硬伤,记得以前日立也有32位R型CPU,它也是16位指令系统,无法提供三操作数的运算指令,性能自然好不到哪里,现在销声匿迹就是明证。如果我是AVR的设计者,我就会这么做:寄存器分为工作寄存器和指针寄存器,其中工作寄存器为8个,指针寄存器位8个(可以组成4个16位指针),16位指令系统提供三目运算指令,性能肯定好于现在的方案。

使用特权

评论回复
吾要单片机|  楼主 | 2013-10-2 23:52 | 显示全部楼层
本帖最后由 吾要单片机 于 2013-10-3 00:00 编辑

X86指令MOVSB仿真:
              MOVI    R0, #256;
              MRS     RC, R0;//设置重复计数器

REPEAT: LDBRP   R0, [R1+],#1,FJMP  REP_EXIT;//取值,指针自增1个单位,条件码RP
               STB     R0, [R2+],#1,JMP   REPEAT;  //存值,指针自增1个单位
REP_EXIT:...

X86指令MOVSW仿真:
             MOVI    R0, #256;
             MRS     RC, R0;//设置重复计数器

REPEAT: LDHRP   R0, [R1+],#1,FJMP  REP_EXIT;//取值,指针自增1个单位,条件码RP
                STH     R0, [R2+],#1,JMP   REPEAT;  //存值,指针自增1个单位
REP_EXIT:...

X86指令MOVSD仿真:
              MOVI    R0, #256;
              MRS     RC, R0;//设置重复计数器

REPEAT: LDWRP   R0, [R1+],#1,FJMP  REP_EXIT;//取值,指针自增1个单位,条件码RP
               STW     R0, [R2+],#1,JMP   REPEAT;  //存值,指针自增1个单位
REP_EXIT:...

X86指令INSW仿真:
              MOVI    R0, #256;
              MRS     RC, R0;//设置重复计数器
        
REPEAT: INSWRP  [R2+], [R1],JMP  REPEAT;//R1为IO口地址,目的指针自增1个单位,

条件码RP

X86指令OUTSW仿真:
              MOVI    R0, #256;
              MRS     RC, R0;//设置重复计数器
        
REPEAT: OUTSWRP [R2+], [R1],JMP  REPEAT;//R1为IO口地址,源指针自增1个单位,条件码RP

X86指令CMPSB仿真:
               MOVI    R0, #256;
               MRS     RC, R0;//设置重复计数器
         CLR     Z;
REPEAT: LDBRZ   R2, [R1+],#1,FJMP  REP_EXIT;//取值,指针自增1个单位,条件码RZ
                LDB     R4, [R3+],#1;               //取值,指针自增1个单位
         CMP     R2, R4,JMP  REPEAT;         //比较
REP_EXIT:...

X86指令CMPSW仿真:
               MOVI    R0, #256;
               MRS     RC, R0;//设置重复计数器
               CLR     Z;
REPEAT: LDHRZ   R2, [R1+],#1,FJMP  REP_EXIT;//取值,指针自增1个单位,条件码RZ
               LDH     R4, [R3+],#1;               //取值,指针自增1个单位
               CMP     R2, R4,JMP  REPEAT;         //比较
REP_EXIT:...

X86指令SCASW仿真:
               MOVI    R0, #256;
               MRS     RC, R0;//设置重复计数器
               CLR     Z;
REPEAT: LDHRZ   R2, [R1+],#1,FJMP  REP_EXIT;//取值,指针自增1个单位,条件码RZ
               CMP     R2, R4,JMP  REPEAT;         //比较
REP_EXIT:...

X86指令LODS仿真:
        LDW     Rd, [Rn+], #1;//取值,指针自增1个单位

X86指令STOS仿真:
        STW     Rd, [Rn+], #1;//存值,指针自增1个单位

使用特权

评论回复
吾要单片机|  楼主 | 2013-10-2 23:54 | 显示全部楼层
大家觉得怎么样啊,从上面的X86串操作指令的模拟来看是不是很有意思啊,基于本方案的指令操作起来应该比ARM和MIPS快不少吧,我的感觉是直逼X86的效率。

使用特权

评论回复
gsp023| | 2013-10-4 15:55 | 显示全部楼层
呵呵,楼主还是很厉害。我接触ARM零零散散有半年,但是对寄存器指令什么的都很模糊。只要是有成果性的东西大家都应该支持。希望中国多些这样的研究。

使用特权

评论回复
吾要单片机|  楼主 | 2013-10-5 15:09 | 显示全部楼层
哈哈,多谢捧场,前段时间我没有空,所以没有和大家讨论,现在我正在设计指令集,力争打动那些有志于创建我国自主指令集的厂商,在此过程中希望能得到大家指点,谢谢!!

使用特权

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

本版积分规则

52

主题

441

帖子

7

粉丝