以经典的五级流水线为例,如果想要在这个基础上加“一次读多个数据”,“一次写多个数据”的存储访问自定义指令。需要考虑的问题有什么方面?以下是我考虑到的一些方面,欢迎各位大佬多多指点遗漏和不足的地方:
1. 添加loadf.w(连续load4个world)和loade.w(连续load8个world)两条自定义指令,易造成资源冲突,如果流水线级间没有valid-ready的握手行为,可行性如何?这种情况下,是否有其它解决方法?
2. 假设添加级间的握手后,在译码阶段,连续发射多条指令(发给执行单元),loadf.w和loade.w在WB阶段会执行多个周期,与后续无相关性的指令存在竞争关系(顺序发射,乱序执行顺序写回),这时,如果仲裁长指令优先写回,势必会导致流水线的反压。如果采用芯来e203里面的“前向旁路缓存”后,是否还存在一些没考虑到的地方。(从这方面思考,级间必然需要加握手,不然会导致丢失数据)
3. 流水线级间没有valid-ready握手行为的处理器,个人感觉在实现时,需要流水线的每个周期的执行时间固定才可,这种场景会有那些弊端?
4.(多thread调度的问题)在经典的五级流水线中,如何没有指令预测功能,可否在线程调度器上控制线程池中,同一虚拟线程(线程池中的一个thread,区别于物理上现在存在的并行thread)的前后两条指令间隔发送,然后不同虚拟线程交替执行,有无类似的参考?