阿达尔定律的准确性如何?

时间:2016-11-25 22:24:24

标签: linux operating-system cpu cpu-architecture parallelism-amdahl

  
    

在计算机体系结构中,Amdahl定律给出了在固定工作负载下执行任务的延迟的理论加速,这可以预期资源得到改善的系统。

  

var articleIds=['menu_a', 'menu_b', 'menu_c', 'menu_d']; var visible = $('#menu_a').first(); var show_me = function(article) { visible.hide(); visible = article; visible.show(); } $("#menu_a").click(function(event) { var id_of_article = $(this).attr('href'); var the_article = $(id_of_article); show_me(the_article); even.preventDefault(); }); $('#next').click(function (event) { var next; if (visible.attr('#content') == articleIds[articleIds.length - 1])//article is the last one next = $('#' + articleIds[0]); //come back to first one else next = visible.next(); show_me(next); event.preventDefault(); }); 是执行整个任务的延迟的理论加速;

Slatency是执行部分任务的延迟加速,可以从系统资源的改进中受益;

s是整个任务执行时间占改善前系统资源改善的部分的百分比。

p

这都是理论上的,它让我思考,什么时候不适用。估算CPU性能的准确程度如何?

1 个答案:

答案 0 :(得分:3)

通常,当你想调整程序的某些部分时,你会制作一个微基准测试来单独测试它。

这并不总是反映出作为完整程序的一部分运行时的行为方式。 (即在你正在调整的部分的执行之间进行其他工作,而不是紧密循环。)

e.g。如果您发现sin(x)计算成本很高并且将其替换为查找表,那么可能会在微基准测试中获胜,因为当背靠背调用时,足够小的表在高速缓存中保持热,而其间没有其他工作。类似地,微基准测试通过启动分支预测来测量性能,并且没有代码缓存压力(这可以使循环展开看起来比它更好)。

但这只是意味着你对s的估计是错误的,因为该功能是整个计划的一部分,而不是Amdahl定律不准确。这只是一个错误使用它的情况。

但是,这确实可以回答您的问题:

加速程序的一部分会导致更多缓存或TLB未命中,分支错误预测等其他部分的程序确实违反了Amdahl定律。