作者tasuka (Tasuka)
看板CSSE
标题Re: [问题] 不同指令集CPU之间的效率差别
时间Tue Mar 9 13:37:50 2010
※ 引述《micklin (离乡背井的米克)》之铭言:
: ※ 引述《snobbery (egoist)》之铭言:
: : 请问我下面的想法是对的吗?
: : 假设我们有个程式P在一个1GHz的单核CPU A执行了一秒钟,
: : (并且此程式不考虑I/O, 只考虑CPU内的计算)
: : 假设以下三点因素都可以忽略:
: : (1)CPU A与B的厂牌不同,
: : (2)指令集不同,
: : (3)把本来run在CPU A上的程式P重新编译到可以run在CPU B上的compiler的能力
: : 那麽将此程式P丢到一个2GHz的单核CPU B的话, 只要执行0.5秒钟.
: 你的推论是基於这个公式吗?
: CPU Time=IC*CPI*Clock cycle time
: 不考虑指令集的不同, 那也不需要重新编译了啊
: 不考虑I/O, 那要考虑快取机制的影响, 如果连记忆体存取都不考虑,
: 那麽在最单纯的环境下, 我认同你的想法.
: : 假设以上是对的,
: : 那如果把那三个因素都考虑进来呢?
: : 譬如说本来有个程式P是用ANSI C写的,
: : 本来P在INTEL的单核1GHz CPU跑了一秒钟,
: : (就假装是执行像int a=1; a++;这样的指令好了)
: : 那我把这样的程式P拿去跑在譬如TI的1MHz microcontroller的话,
: : 是不是"差不多"要1000秒才能执行完毕?
: : 谢谢
: 指令数不同, CPI不同, 快取机制不同, 管线处理也不同,
: 所以运算时间不能如此类比.
若指令集不同的话,会有很大的不同,
1GHz 一个 clock 周期是 1/1G 而 1MHz 是 1/1M 算是 1000倍
而若 1GHz 的 CPU 作一个指令要100个 clock 而 1MHz 的 CPU 只要 1个 clock
但需要10指令的话,
就没有差到1000倍,而是 1/1G x 100 : 1/1M x 10 等於100倍而已!
一般而言 CSIC 一个指令用的 clock 比较长,但可以用单一指令完成,而 RSIC 一个指令 clock 短,
可是要用较多的指令组合完成.
还有别的因素都会影响。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.146.76.146
1F:嘘 micklin:很缺文章数吗? 03/09 15:26