今天晚上看到某同学将MSN的nick改成了"太黑了...专利都是假的...",就忍不住去查了查这几个专利:
[ 03115475 ]带有快速中断的数字信号处理器
[ 03115375 ]带有可重构系统硬件栈的数字信号处理器
[ 03115376 ]具有可重配置高速缓存的数字信号处理器
[ 03115377 ]带有可重构通道数DMA的数字信号处理器
[ 03115374 ]带有可重切换缓存的数字信号处理器
[ 03115372 ]具有取模地址运算的数字信号处理器"
现在在知识产权局的网站上都能查的到(http://www.sipo.gov.cn/sipo/default.htm)
把"带有快速中断的数字信号处理器"这个稍微看了一下, 专利说明书里面对于该发明的原理是这样说的:首先根据指令寄存器中的值判断下一条指令是否是跳转指令,如果不是跳转指令, 就把中断服务程序的起始地址送到下一条指令的取址寄存器上,如果是跳转指令, 程序的运行过程如一般操作一样.
俺比较笨,看了好几遍才明白,所谓的和一般操作一样,就是让中断正常打断.
虽然俺笨,但是中国聪明人多着呢,这么简洁漂亮的解决办法,老美研究计算机组织与系统结构那么久,愣是没想出来,咱们中国人一下子就想出来了。
按照专利上的说法,如果不是跳转指令,就直接把取址寄存器的内容改成中断服务程序的地址就成了。真的这么简单么?俺不是学计算机的,但有幸于N年前旁听过胡越明讲计算机组成,也写过几个DSP的中断服务程序。 中断服务程序的最主要原则就是要保证进入中断服务程序时的context和退出中断服务程序时的context要一致。为了保证这种一致,需要CPU的中断响应和中断服务程序的协同。
所以,在有流水线的CPU中,一般有两种方法来进行CPU的中断响应:
所谓“不精确断点”法。不论第i条指令在流水线的哪一段发出中断申请,都不再允许那时还未进入流水线的后续指令再进入,但已在流水线的所有指令却可仍然流动到执行完毕, 然后才转入中断处理程序。
另一种是精确断点法,就是将流水线里还没有执行完的指令全部抛弃,立即转入中断处理程序。
如果不等流水停止的话,中断响应程序不能保证正确的保护和恢复context,因为有可能,中断保护程序在将寄存器压栈或者出栈的时候产生冒险。
或许有硬件可以避免这种冒险,但是,太复杂了吧。得不偿失阿。
[ 03115475 ]带有快速中断的数字信号处理器
[ 03115375 ]带有可重构系统硬件栈的数字信号处理器
[ 03115376 ]具有可重配置高速缓存的数字信号处理器
[ 03115377 ]带有可重构通道数DMA的数字信号处理器
[ 03115374 ]带有可重切换缓存的数字信号处理器
[ 03115372 ]具有取模地址运算的数字信号处理器"
现在在知识产权局的网站上都能查的到(http://www.sipo.gov.cn/sipo/default.htm)
把"带有快速中断的数字信号处理器"这个稍微看了一下, 专利说明书里面对于该发明的原理是这样说的:首先根据指令寄存器中的值判断下一条指令是否是跳转指令,如果不是跳转指令, 就把中断服务程序的起始地址送到下一条指令的取址寄存器上,如果是跳转指令, 程序的运行过程如一般操作一样.
俺比较笨,看了好几遍才明白,所谓的和一般操作一样,就是让中断正常打断.
虽然俺笨,但是中国聪明人多着呢,这么简洁漂亮的解决办法,老美研究计算机组织与系统结构那么久,愣是没想出来,咱们中国人一下子就想出来了。
按照专利上的说法,如果不是跳转指令,就直接把取址寄存器的内容改成中断服务程序的地址就成了。真的这么简单么?俺不是学计算机的,但有幸于N年前旁听过胡越明讲计算机组成,也写过几个DSP的中断服务程序。 中断服务程序的最主要原则就是要保证进入中断服务程序时的context和退出中断服务程序时的context要一致。为了保证这种一致,需要CPU的中断响应和中断服务程序的协同。
所以,在有流水线的CPU中,一般有两种方法来进行CPU的中断响应:
所谓“不精确断点”法。不论第i条指令在流水线的哪一段发出中断申请,都不再允许那时还未进入流水线的后续指令再进入,但已在流水线的所有指令却可仍然流动到执行完毕, 然后才转入中断处理程序。
另一种是精确断点法,就是将流水线里还没有执行完的指令全部抛弃,立即转入中断处理程序。
如果不等流水停止的话,中断响应程序不能保证正确的保护和恢复context,因为有可能,中断保护程序在将寄存器压栈或者出栈的时候产生冒险。
或许有硬件可以避免这种冒险,但是,太复杂了吧。得不偿失阿。
还有一种可能性就是采用类RISC结构,使用load,store来访问内存,并且保证ALU的取数,执行和写会在一个周期内完成。这样ALU的路径较长,提高CPU的主频比较困难。不过分析下来,这是最可能的实现方式了。
另外,据专利说明书说,此办法可以在每次中断响应中节省4-6个clock,"大大提高程序运行效率". 大大提高程序运行效率的话,我想至少要提高1%吧?对于200MIPS的DSP来说,不过2个MIPS而已。这样算下来,每400-600条指令就要处理一个中断,除去中断服务程序里面保护context的开销,最多只有350-550的指令用于程序处理,这个DSP用的也太..... 这么密集的中断,不丢几个真不容易啊。做架构的人因该被拉出去打pp。
至于什么"带有可重构通道数DMA的数字信号处理器"之类的,懒得说了,大家有空自己去看看吧。
至于什么"带有可重构通道数DMA的数字信号处理器"之类的,懒得说了,大家有空自己去看看吧。
本文基于个人理解,如有错误,概不负责。
hoho
俺对于CPU设计属于业余级,有什么地方理解错了大家尽管说。
这些东西也都是专利了,难怪现在说专利转换成效益的不多。