C6000的CPU执行指令是流水线方式的,每个时钟可以同时执行8个指令,这样一来,不会产生冲突吗?
比如第一条指令,赋值给一个寄存器;第二条指令,读取这个寄存器的值;
如果并行,这样的话,第二条指令怎么能读到第一条指令赋给寄存器的值呢??
用C或者汇编编写程序时,要不要考虑这种冲突呢?
谢谢您的回答
Hank Zhao:
这样会产生冲突,应该避免同时对一个寄存器的读写操作。
ha zhang:
回复 Hank Zhao:
谢谢您的回复
编译器没有自动防止指令并行执行时产生冲突的保护机制吗?
用C语言和汇编编写都要注意这种并行执行的冲突,感觉很麻烦呀?也不清楚什么时候会冲突
谢谢
ha zhang:
回复 Hank Zhao:
还有个疑问,指令的并行执行 是自动实现的吗,还是编写指令时高速编译器哪些是并行,哪些是串行,
如果是自动进行并行执行,那么CPU如何判断 一次取指包(FP)分成几个执行包(EP),怎么判断这几个EP按什么顺序执行
ha zhang:
回复 Hank Zhao:
谢谢谢谢,知道了