计算机 CPU 逻辑运算 关系运算 赋值运算 算术运算 速度效率性能比较

版权声明:本文为博主原创文章,转载请申明原文出处。 https://blog.csdn.net/xuheng8600/article/details/85677627

https://bbs.csdn.net/topics/390646023

A:逻辑运算

and or not xor等等,有专用电路直接实现,也就是所谓的逻辑门电路,而且结构简单,比数字比较器、桶形移位器要简单,通常情况下速度更快一些。


C:关系运算

> < = >= <= <>等等,也有专用电路(数字比较器)可以实现,运算速度也是比较快的。


D:赋值运算

不管什么架构的处理器肯定都有这种指令,而且是使用频繁的指令,经过高度优化的,速度也是相当快的(在超标量架构下其等效时钟周期可以小于1)。


B:算术运算

种类太多,+ - << >>运算速度很快,接近逻辑和关系运算,但是* /慢很多,尤其是除法指令。如果涉及到浮点运算,就更慢了。
所以综合来说,运算速度A≈C≧D≧B(实际上在传统计算机中,应该是A≧C≧D≧B,不过在较新的架构中,比如intel core架构,比较+分支优化得很厉害,基本和逻辑运算相当)

但是只能说理论上如此,具体到实际指令,情况还很复杂,操作数使用寄存器、内存、立即数还有分别,即便同样的操作,比如mov,mov r,r/i就比mov r,m快,而mov r,m比mov m,r快。
就我所知,在目前的intel架构中,最快的指令是xor eax,eax这类指令(注意不是普通的xor,而是源操作数和目的操作数使用同一寄存器,清0操作),延迟只有1个时钟周期,吞吐量达到4(意味着最多可以并行4条这种指令),要快于mov eax,0。

基本同意DelphiGuy,除了有一点补充:
赋值运算,如果算是写到内存的话,那肯定是最慢的,powewrpc上100多周期。
如果算写入cache,前几年的powerpc是3个周期,最近是1个周期。

但是无论哪种,都不太可能小于1。如果算超标量,就算每个周期抓取多条写指令,至少我所看到的cpu里面的load/sotre单元个数,总是小于取指令单元个数的。所以如果全是store指令,一段时间以后,流水线会塞满。这样,哪怕全都命中cache,写操作的平均时间就和单个写一样。

欢迎讨论。

赋值运算看起来是最快的,但是要考虑到给谁赋值,如果是给寄存器,肯定是最快的,但如果是内存,就需要多次读取存储器来定位地址,比如访问页表,而且主存离cpu很远,很可能需要安排多次时钟周期才能完成赋值。算数运算肯定大于逻辑运算和关系运算,特别是如果涉及浮点运算,还需要专门的协处理器来完成。从硬件的角度看,逻辑运算和关系运算的电路实现应该是类似的。

https://bbs.csdn.net/topics/390646023

猜你喜欢

转载自blog.csdn.net/xuheng8600/article/details/85677627