hello cloud, 现在指令的cycle怎么测不准了,同样一段代码,我不同时间执行得不到同样的cycle,我是用RDTSC指令得到的差值.
现代 CPU 的工作方式远远比 pentium 和它以前的 cpu 复杂.Pentium Pro 以后已经是 RISC 体系. 是多级流水线结构. 影响速度的因素非常的多.每条指令消耗已经不能用单纯的时钟周期来衡量. 你要考虑微指令解码, 乱序执行, 分支预测失败, 寄存器重命名, 寄存器退休, 寄存器读延迟, 执行单元阻塞等等很多因素, 这些因素许多是上下文相关的.
理想状况下 Pentium 4 一个时钟周期可以运行 3 条微指令, 但又因为某些微指令可以 double speed 工作, 所以极限是 6 uops/clock .这个极限几乎是不可能达到的.(有些又只有 half speed 在 1~6 之间波动是很正常的事情)。
如果想搞清楚不是件容易的事, 我正在写点东西关于这些的, 好几万字了, 希望明年能够拿给大家看.