lanfanblue老师你好,我是一个IC初学者向您请教,请不要介意问题的幼稚与无知。
关于同一个串行流水线,因为一条流水线里,无论分多少级,里面各级所连接的内存是同一块,所需内存带宽与不分流水线是一样的。这个问题我已经知道了。
但是并行流水线呢?因为事实上循环的64次,操作都是一样的,经过一次操作后,本级流水线把自己的输出当输入继续计算。64次以后提交结果。这也就是我说的同类型的核之间,没有数据交换。
串行流水线中,同类型的核之间是交换数据的。
一个最小的核,有24个门电路完成W数组循环,30个门电路完成主循环。另需要64*4*2字节内存存放两个W数组。另外8*4字节存放h数组。对于K数组,那是常量,多少个小核共享一个K数组,需要权衡一下。
每一个时钟周期内W和Main各执行一遍。
前64个周期,W电路将前64*4字节,第一个W数组填满。
次64周期,Main电路处理前64*4字节,64次。W电路将后64*4字节,第二个W数组填满。
可能需要一个周期进行输出。
再次64周期,Main处理后64*4字节64次。W填写前64*4字节。
如此往复。
这样64,或者可能是65个小核组成一个大核。实现一个周期输出一个结果。这样的结构,是否能减少内存带宽的使用呢?
谢谢。