计算机架构基础:程序分析与新型架构探索
1. 程序分析概述
计算机架构师致力于研究如何让计算机运行得更快。为了编写高效的程序,对处理器内部的运行情况进行剖析至关重要。在现代处理器中,每秒会发生大量事件,数量级可达十亿,实时分析这些事件并非易事。程序分析包含多种技术,下面我们来详细了解。
1.1 处理器模拟科学
模拟是一种重要的程序分析技术,处理器模拟更是涵盖了一个完整的研究领域。架构师在运行模拟时会消耗大量时间和处理器周期。模拟不仅有助于分析处理器运行程序时的性能,还对验证处理器的正确性必不可少。就像建筑师在动工前需要绘制蓝图一样,处理器在制造芯片之前也需要进行模拟。在模拟和制造之间,通常还会在现场可编程门阵列(FPGA)上进行原型设计和测试。
模拟技术的选择取决于要解决的问题。细粒度的模拟计算量较大,例如周期级模拟,它通过在不同硬件环境中运行的软件程序复制单个时钟周期的事件,虽然详细但计算密集。指令级模拟(也称为仿真)则以指令为粒度在另一个处理环境中表示事件,成本低于周期级模拟,但准确性较差。仿真对于快速筛选好的想法很有用,但对于深入分析则不太适用。
关键的模拟参数包括模拟的时长和内容。由于通常无法模拟长时间运行程序的每个事件,因此需要选择能代表程序最相关行为的样本。从程序开头选取样本可能不是个好主意,因为程序通常会先对数组进行清零操作,关键操作往往在程序中间部分。指令级模拟中,样本大小通常为一亿条指令左右;周期级模拟则需要更小的样本。另一个关键参数是实验使用的基线或基准程序,基准程序是用于比较处理器的标准程序。
为了研究模拟处理器不同方面变化的影响,架构师会修改模拟器的源代码以观察新的行为。一种方法是生成跟踪文件