计算节点
下面让我们来一起关注图示2中的计算节点原型来认识相关的配置参数。图示上端的是2个处理器插槽,通过前端总线(FSB-front side bus)与内存控制中心(MCH)相连。这个内存控制中心(MCH)有四个存储信道。同时还有一个Infiniband HCA通过信道点对点串行(PCIe)连接在一起。
象千兆以太网和串行接口(SATA)硬盘之类的低速的输入输出系统都是通过芯片组中的南桥通道(South Bridge)相连接的。在图示2中,大家可以看到每个主要部件旁边都用红色标注了一个性能相关参数。这些参数详细的说明了影响性能(并非全部)的硬件的特性。它们通常也和硬件的成本直接相关。举例来说,,处理器时钟频率(fcore)在多数工作负荷状态下对性能影响巨大。根据供求交叉半导体产额曲线原理,处理器速度越快,相应成本也会更高。高速缓存存储器的体积也会对性能产生影响,它能减少主频所承载的工作负荷以提高其运算速度。处理器内核的数量(Ncores)同样会影响性能和成本。内存子系统的速度可以根据双列直插内存模块频率(fDIMM)和总线频率(fBus)进行参数化,它在工作负荷状态下也对性能产生影响。同样,电缆相互连接(interconnect fabric)的速度取决于信道点对点串行的频率。而其他一些因素,比如双列直插内存模块内存延迟(DIMM CAS Latency),存储信道的数量等都做为次要因素暂时忽略不计。

我们能使用的性能参数
在图示2中标明的6个性能参数中,我们保留四个和模型相关的参数。首先让我们先忽略信道点对点串行的频率(fPCIe),因为它主要影响的是电缆相互连接(interconnect fabric)速度的性能,这不在我们此次议题讨论范围之列。接下来让我们注意一下双列直插内存模块频率(fDIMM)和总线频率(fBus)会由于内存控制中心(MCH)而限于固定比率。在目前使用的双核系统中,这些比率最具代表性的是4:5, 1:1, 5:4。我们一般情况下只会用到其中的一个。高速缓存存储器的体积非常重要。在这个模型中我们保留这个参数。内核的数量(Ncores)和内核频率(fcore)也非常重要,保留这两个参数。
高性能计算(HPC)模型
接下来的章节我们讲解的是数学运用模型。这但对于数学运算是个挑战,让我们一起来关注这个模型。
这第二个模型的基本形式在计算机体系研究领域已经存在了很多年。A普通模式是:
(3) CPI = CPI0 + MPI * PPM
这里的CPI指的是处理器在工作负荷状态下每执行一个指令的周期。CPI0是指内核CPI,MPI I则是指在工作负荷状态下高速缓存存储器每个指令失误的次数(注释:在高性能计算领域,MPI主要用于信息传递界面,在此处主要是指处理器构造惯例),PPM是指以处理器时钟滴答声为单位对高速缓存存储器每个指令失误的次数的记录。第二和第三个方程式相互吻合。这第一个术语代表的是处理器,第二个术语代表的是内存。
通过图示我们可以直观的看到,假设每项工作下执行的P指令的工作负荷与代表处理器的频率的内核频率(每秒钟处理器运行周期的单位)再与方程式(3)相乘,就得到了方程式(4):
Tnode = (CPIo * P) * (1 / fcore) + (MPI * P) * PPM * (1 / fcore)
在这里我们要注意(CPIo * P)是以每项工作分配下处理器的运行周期为单位,对微处理器架构上运行的既定工作负荷通常是个恒量。因此我们把它命名为α。(处理器周期本身无法对时间进行测算,如果乘以内核的频率就可以得到时间的测算标准。因此Tnode在方程式(4)的右边)。
(MPI * P)也是同理。对于既定工作负荷和体系结构来说它也是个恒量,但它主要依赖于高速缓存存储器的体积。我们把它命名为M(MBcache)。而PPM是指访问主存的成本。对于既定的工作负荷来说,通常是个固定的数字C。PPM乘以内存频率和总线频率的比值(fcore / fBus)就从总线周期(bus cycles)转化成了处理器周期。因此PM = C * fcore / fBus。套入M(MBcache)就可以得到:
(5) Tnode = α * (1 / fcore) + M(MBcache) * (1 / fbus)
这个例子说明总线频率(bus frequency)也是个恒量,方程式(5)可以简化为方程式(6):
(6) Tnode = α * (1 / fcore) + β
在这里Tcore = α * (1 / fcore),而Tmemory = β(也就是公式2里的术语。我们把这些关键点关联在一起)。首先在模型2里,公式5和公式6都有坚实的理论基础,因为我们已经分析过它是如何从公式3推理而来(它主要应用于计算机体系理论)。其次,目前的这个模型4个硬件性能参数的3个已经包括其中。还差一个参数就是内核数量(Ncores)。
我们用直观的方式来说明内核的数量,就是假设把N个内核看做是一个网络频率上运行的一个内核,我们称之为N*fcore。那么根据公式(6)我们大致可以推算出:
(7) Tcore ~ α / (N*fcore)
Tcore~ ( α / N) * (1 / fcore )
我们也可以把它写成:
(8) αN = ( α / N)
多核处理器的第一个字母Alpha可能是单核处理器的1/N次。
通过数学推算这几乎是完全可能的。
通常情况下我们是根据系统内核和总线频率(bus frequencies)来衡量计算机系统性能,如公式(5)所阐述的。但是公式(5)的左边是时间单位--这个时间单位指的是一项工作量的完成时间。这样就能更清楚的以时间为单位说明右侧的主系统参数。同时请注意内核的时钟周期τcore(是指每次内核运行周期所需的时间)也等同于(1 / fcore)。总线时钟(bus clock)周期也是同理。
(9) Tnode = αN * τcore + M(MBcache) * τBus
这个公式的转化也给了我们一个完成时间的模型,那就是2个基本的自变量τcore和τBus呈现出直线性变化。这对我们稍后使用一个简单的棋盘式对照表对真实系统数据进行分析是有帮助的。

