对C8051f的100MIPS总是心存疑惑.
刚才在一个网站上看到一个网友的质疑,觉得很有道理,盼高手解答:
" 问题是:8051的指令是不规则的,最短的指令有1字节(NOP),最长的指令有4字节,这个不规则的指令体系,导致流水和缓存效率比较低,因为在CPU设计时候难于预则每个指令后下一条指令到底是什么,所以只能设计一个4字节缓存、效率低下。
即使这条指令命中,也只不过缓解了跳转后下一条指令预取指,但是,再下一条指令呢?还要等待。这个措施能够缓解跳转带来的流水冻结,但是不能消除它的影响。
还有另外的复杂因素。8051体系不同于RISC,指令不规则导致译码困难,多字节指令译码难于在一个周期内完成,很可能要多个周期才能完成,所以,CISC流水线普遍比RISC深。而深的流水线,也只不过是把译码逻辑分散到各个流水周期。您提到的取指-译码-执行逻辑,只适应在RISC上, CISC是很难实现的,它非要拉长流水才能实现。 指令长度的问题,Datasheet上已经明确说明了:运行周期至少等于指令长度。原因很简单,CPU平均每周期只能从Flash取一个字节。不过这个等待已经算入了指令运行周期了,例如,ADD一个立即数比ADD一个寄存器要多一个周期。
C8051译码流水线有多少?Datasheet好像没写。
用最常见的桌面系统比较:
苹果G4使用的RISC CPU流水线是7级,32位处理器;同等的32位CISC CPU P4的流水线是20级(另一个增强版本是31级)。
明显地,CISC的流水线比RICS要深,以弥补指令集和体系结构的不足,但是就是这样,大家也知道,在同等主频下,G4的处理能力比P4强、即便是P4采用了更深的流水线。
对1-4个字节组成的指令系统,每次从Flash取一个字节,然后要译码、执行,还要保持1MIPS/MHz的处理能力,那么流水线应该多深?最坏情况下,最少1个取指周期、4个译码周期、1个执行周期,再加上回写吧,没有7个流水级能做到吗?
我反复说过了:越深的流水在发生跳转时候,性能下降越明显。这是C8051F避而不谈的 我个人和Cygnal 公司没有任何利害关系,我只不过是从技术角度分析C8051F120到底能达到多大的处理能力。
我们工程师讲的是实事求是,而不能相信商人的商业宣传;更不能以这种商业噱头为准,去评估自己设计的系统的技术性能。那样,不但损害了用户的利益、最终也砸了自己的饭碗。" |