首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

“等于”与“大于等于”的CPU发热量有关问题

2013-04-02 
“等于”与“大于等于”的CPU发热量问题本帖最后由 fenghou1st 于 2013-03-14 16:55:58 编辑问这个问题好像闲

“等于”与“大于等于”的CPU发热量问题
本帖最后由 fenghou1st 于 2013-03-14 16:55:58 编辑 问这个问题好像闲得有点蛋疼?不过弄清楚了还是有点帮助的。
平时我总是写
if (++i >= n) ...
来判断递增的i是否达到某个指定值,达到后再进行某些操作。
其实,写成
if (++i == n) ...
是完全可以的,逻辑上完全一样。

写成>=的考量是,既然==和>=所用CPU时间一样,而且>=还可以防止某些错误发生(如果i在其他地方变得比n大了,那么条件永远无法成立),自然就用>=了。
但用>=也有弊端:虽然防止了错误发生,但更纵容逻辑漏洞。比如i在其他地方变得比n大了,由于这里不会出错,所以很难被发现。而且写成>=会让读代码的人陷入混乱,不知道原作者要表达的确切意思。

我最近才知道,CPU时间一样的指令,产生的发热量可以不一样。同样是让CPU满载运行,运行不同程序时的CPU温度可以相差10度以上。
所以,如果==指令的发热量小些,采用==指令的理由就比>=大得多了:不仅能防止CPU过热死机或是降频,还可以省电省钱,真是一举多得,利国利民啊!
[解决办法]
http://en.wikipedia.org/wiki/Digital_comparator
不等的判断好像比相等的判断复杂一些,所以可能会使用更多的晶体管,理论上讲会有更高的发热量。我不太了解各种门电路的实现,所以链接里面的公式看起来简单不代表实际的集成电路简单。但事实上在设计CPU的时候会尽可能地减小集成电路的面积以节省成本,这可能会影响实际的结果。
[解决办法]

引用:
http://en.wikipedia.org/wiki/Digital_comparator
不等的判断好像比相等的判断复杂一些,所以可能会使用更多的晶体管,理论上讲会有更高的发热量。我不太了解各种门电路的实现,所以链接里面的公式看起来简单不代表实际的集成电路简单。但事实上在设计CPU的时候会尽可能地减小集成电路的面积以节省成本,这可能会影响实际的结果。
      ……

我不太了解各种门电路的实现,所以链接里面的公式看起来简单可能不代表实际的集成电路简单。

热点排行