本文记录了《片上多处理器体系结构》浏览过程中学习到的一些笔记内容

  1. CPU功耗与频率f与电压平方的乘积,频率减半的双核和单核性能相当,但是总体能耗减少为1/4。
    当然功能很难降到这个水平,因为还存在静态功耗和漏电流

  2. 传统的处理器侧重开发与利用指令集并行的传统处理器系统,运行说这种应用时的处理器利用率极低。对于指令级并行度很低的因公,使用传统的处理器不可能产生任何提升效果,而且这种复杂乱序的传统高级处理器,简单的处理器具有更低的功耗,因此实际中,CMP的架构通常采用的简单的顺序执行处理器。

  3. 流水级少、结构简单的的流水线往往比目前流水技术多、结果复杂的流水线在功耗方面更有优势。但是这个结论的错误之处在于警惕管状态切换所造成的攻台功能只是处理器整体功耗的一部分,维持晶体管状态还会产生所谓的漏电流功耗(静态功耗部分)。当静态功耗足够大时,处理器流水线功耗的最优方案是一个中等级数的流水线结构,而不是无流水线结构

  4. 多数服务器应用具有多线程并行度高、指令集并行度低,且缓存命中率低的特点。由于缓存命中率不高,且缺乏指令级并行性,因此运行这些应用时,大部分现代处理器多数时间处于闲置状态。选通时钟(clock gating)技术可以大幅度降低闲置状态下系统的动态能耗,但静态功耗和时钟分布功耗依然存在。

  5. 为了解决4中问题,硬件多线程技术可降低片上资源的闲置率,只增加少量功耗就能答复提升系统性能,并显著改善性能功耗比。研究表明,为一个单线程处理器增加一个硬件现成只需要增加4%-7%的额外芯片面积。

  6. 吞吐率:多线程、最大化单芯片上的处理器内核数量、提供足够的缓存和贮存访问带宽

  7. 预取帮手,伪线程

  8. 线程级猜测,实现自动并行 ßß∑∑ 两个线程并行执行时发生的硬件必须处理的关键情况
    1.在并行线程间传递数据
    2.在读操作提前时发现先写后读冲突
    3.在冲突发生后,安全的抛弃猜测状态
    4.按正确的顺序完成猜测式写操作
    5.提供内存重命名机制已完成先读后写冲突

  9. 通常循环和子函数调用,对于循环,可以通过在多核处理器上并行的执行多个循环迭代来获得并行。只要循环迭代间的相关性很少,再多核并行的执行循环就能获得提速。
    对于子函数调用,则使用一个新的线程来运行子函数调用返回之后的代码,而使用原来的线程继续运行子函数的执行代码,以这种方式来获得细粒度的任务级别的并行,只要子函数的返回值是可猜测的(通常在没有返回值的时候)并且任何子函数造成的边际效应不会被立即调用到,那么这两个线程就可以并行的执行。相对循环来说,对子函数猜测并行化更具挑战性。

本书主要致力于改善吞吐率和延迟的技术,关于TLS和程序手工并行化的内容也有所提到,将在后期阅读中进行深入学习。