。
高振东在djs59上,先编了一个简单的程序,这个程序没什么特殊的地方,甚至都不针对那块电路板,而是针对djs59本身的。
程序很简单,把两个单字节数15和15相乘,乘10万次!结果是225,还是能放在一个字节里。计算的同时,计算总的耗时。
是分别相乘,每一次的两个乘数都是一样的两个15,而不是用15连乘10万次,15的10万次方这个数用天文数字都不足以形容,当然,比起葛立恒数和tree3这种变态,还是微不足道的。
程序简单,编得很快,高振东输入了编译运行指令。
程序跑了起来,相对计算机的速度来说,可以说等了很久。看了一眼时间,高振东嘴里“啧”了一声,摇了摇头,这个结果的大致范围他心里有数,绝对很难看,现在只是确定一下具体数字而已。
然后高振东开始编另一个程序,这个程序编得有些艰难,主要是需要直接操作底层硬件。
运算都是一样的,重复进行10万次15*15。
而且高振东在程序里,必须把通讯时间扣掉,因为这是djs59向那块试验电路板通信,控制其进行计算,然后再把数据传回来。
运算可能会很快,但是通信的时间可就长了,高振东的目的,是扣掉这些通信时间,才能大致算出运算所需的总时间来。
好在这个东西,也不算复杂,高振东动作也不慢。
一个小时后,高振东编译完成启动了程序。
这次的时间,比djs59计算的时间还长,高振东早有所料,很有耐心。
没办法,外设总线的通信速度比起内部总线来,差太远了。
很久过去,屏幕上跳出了一个数字,高振东看了一眼,笑了,要的就是这个。
相比使用djs59进行计算,扣掉通信时间之后,这个ic实验电路板在相同频率情况下,其速度快得离谱。
——二十五倍!
这就是高振东要的东西。
——单周期硬件乘法器!
djs59是没有硬件乘法器的,别说单周期硬件乘法器了,就连多周期的、控制加法器实现乘法的硬件乘法器都没有。
前者可以在一个指令周期内完成乘法的计算,后者不一定,比如51单片机,4个指令周期可以完成一次乘法运算。
不用说,前者快而贵,后者略快,略贵。
而djs59这个数字就庞大了,没有硬件乘法器的它,只能通过程序指令,一步一步的控制加法器和寄存器完成乘法运算。
对于djs59来说,大概15个指令才能完成一次8二进制位的整数乘法运算,其中又有不少多周期指令,综合下来,大约是25个指令周期才能完成一次乘法运算。
而且这只是8位的情况,如果扩展到16位、32位,那这个数字还会上升。
至于浮点数,那这个情况就更加恶劣了。
这就是djs59的弱点,也是早期大部分通用cpu的弱点,高级一点的数学运算它是不行的。
但是对于信号处理来说,乘法算是基本运算,也是使用最多的运算。
这就是通用cpu用到信号处理上非常羸弱的原因,算不过来,娘胎里的毛病。
但是高振东的下一步,一切的一切,最终目标都基本上直指雷达,靠djs60d,哪怕是ic化了,也一样是个弱鸡,不够好。
所以高振东就琢磨着自己做一个硬件乘法器,而且目标直指单周期浮点硬件乘法器,赞美互联网,赞美导师,前世这东西,他是在vhdl上面实现过的,对于其结构,清楚得很。
vhdl,硬件描述语言,在cpld/pga上的ic设计语言之一,能够直接设计ic硬件结构。
虽然vhdl的最终结果是基于逻辑