【博文连载】超小型CPU设计(Tiny CPU) 刍思
设计完我自己用的HSL(高级综合语言,其实已经不止用于综合,集成的仿真功能也很强大),另外,我也一直再找另外的灵感点,然后两个月前忽然想设计自己的CPU了。但是现在也只是在开始阶段,写一些东西给大家乐一乐。
我想设计出什么样的特性呢
1、超级小,可能比你认识的所有CPU类型都小,不超过1K地址RAM(最好裁剪到只有几十个地址RAM),这样一来可以省去编译器等,直接写汇编就行,毕竟1k行的汇编还是很好搞定的,另外还可以复用其他函数代码功能。
3、数据指令不分开存储,数据即指令,指令也是数据
4、流水指令,不用等待前一条命令取值译码执行才能进行,这个可以大大提高执行速度。
5、多核连接,多核网络,多核的功能必须是1+1>2的,这是最大的区别与其他CPU的特性(那么小的核还搞多核?)。核很容易和其他核连接,几乎是直连,而且有专门的指令去控制连接。
i 当前的核可以向其他核的RAM批量写入指令和数据。
ii 其他核输入的指令数据执行优先级大于当前本核所执行的程序。这个可以完全代替中断功能。
iii 当前核可以把当前程序压栈到外部存储(如,DDR),外部存储也可以把程序指令加载到核。
核几乎都是被动的,一个‘老好人’的角色,别人的事情永远大于自己的事情。
所以也可以叫做,TPU(Tiny Process Unit),APU(Auxiliary Process Unit)
--------------------------------------------------------------------------------------------------------------
应用场景:
1、SPI,UART,IIC等这些简单接口都可以用这种小核来做,而且我很确定这3个功能完全可以做到一个核内。
2、代替大型(>128 STATUS) 的状态机。小型的这样用有点浪费资源。
3、设计函数化,比如想做浮点运算,只要不是对时序clock delay要求太苛刻,可以用核+浮点运算程序实现。就像调用函数一样。而且可以模块间共用,不同的模块可以共用一个核来做浮点,这样也可以省不少资源。
4、物联网应用,我们不太可能给一个水龙头嵌入一个ARM,但是嵌入一个Tiny CPU是可行的,(为什么要给水龙头嵌入CPU?)而且无需定制CPU,一个芯片通吃所有,在水龙头,在洗衣机里面的,热水机里面的,鞋子里面的,在每一个袋子里,等等都可以用同一种CPU方案,可想而知这个量有多大,本身芯片集体管数量并不多,可以把成本控制得很低,反倒是担心里面的通信方案成本。
5、1+1>2,一个Tiny CPU 不可能做出网络解析功能,但是多个Tiny CPU 可以解析任意的网络协议,且速度和功能完备上不输PC。当当前的逻辑功能无法达到要求时,可以单纯的提高CPU数量去解决,这就是1+1>2.
6、计算力外包,很脑洞的,很黑客的想法,基于多核网络,当自己的手机算力不足时可以去申请附近水龙头,鞋子,风扇等里面Tiny CPU的算力。当然也可以反过来。也算一种集体管的有效利用吧。
我的思路一般都很清奇,也想尝试不同的思路,而且也并不像对思想做任何约束。打个比方,当我觉得我可以设计出一个轮子的时候,我马上开始尝试去做出整辆汽车,在过程中学习实践,完善细节,当然可能最后做成了一艘船。对于最后的结果汽车还是船 还是其他的东西,是无所谓的。不管一个想法多么天马行空,只要有20%的可能,我都会认认真真的去践行。HLS我用了一年,Tiny CPU就是我2018的任务了吧!