1
1
mirror of https://github.com/foxsen/archbase.git synced 2026-02-03 02:14:40 +08:00

修正*号的使用,正文中使用它应该加上转义符

包括第1章和第12章部分内容。

感谢@nahso指出问题。

Resolved #13
This commit is contained in:
Zhang Fuxin
2021-11-06 18:20:37 +08:00
parent 84e053d3c9
commit f22e1a9635
2 changed files with 5 additions and 5 deletions

View File

@@ -110,7 +110,7 @@ autofit()
什么叫性能性能的最本质定义是“完成一个任务所需要的时间”。对中央气象台的台长来说性能就是算明天的天气预报需要多长时间。如果甲计算机两个小时能算完24小时的天气预报乙计算机一个小时就算完显然乙的性能比甲好。完成一个任务所需要的时间可以由完成该任务需要的指令数、完成每条指令需要的拍数以及每拍需要的时间三个量相乘得到。完成任务需要的指令数与算法、编译器和指令的功能有关每条指令需要的拍数与编译器、指令功能、微结构设计相关每拍需要的时间也就是时钟周期与结构、电路设计、工艺等因素有关。
完成一个任务的指令数首先取决于算法。我们刚开始做龙芯的时候计算所的一个老研究员讲过一个故事。说20世纪六七十年代的时候美国的计算机每秒可以算一亿次苏联的计算机每秒算一百万次结果算同一个题目苏联的计算机反而先算完因为苏联的算法厉害。以对N个数进行排序的排序算法为例冒泡排序算法的运算复杂度为O(N*N)快速排序算法的运算复杂度为O(N*log2(N))如果N为1024则二者执行的指令数差100倍。
完成一个任务的指令数首先取决于算法。我们刚开始做龙芯的时候计算所的一个老研究员讲过一个故事。说20世纪六七十年代的时候美国的计算机每秒可以算一亿次苏联的计算机每秒算一百万次结果算同一个题目苏联的计算机反而先算完因为苏联的算法厉害。以对N个数进行排序的排序算法为例冒泡排序算法的运算复杂度为O(N\*N)快速排序算法的运算复杂度为O(N\*log2(N))如果N为1024则二者执行的指令数差100倍。
编译器负责把用户用高级语言如C、Java、JavaScript等写的代码转换成计算机硬件能识别的、由一条条指令组成的二进制码。转换出来的目标码的质量的好坏在很大程度上影响完成一个任务的指令数。在同一台计算机上运行同一个应用程序用不同的编译器或不同的编译选项运行时间可能有几倍的差距。

View File

@@ -51,7 +51,7 @@ CPI = \frac{\sum^{n}_{i=1}IC_i\times CPI_i}{Instruction\ count} = \sum^{n}_{i=1}
$$
这个求CPI的公式是每类指令的CPI乘以该类指令在程序的执行指令数中所占的比例。CPIi需要通过测量得到因为必须考虑流水线效率、Cache失效和TLB失效、保留站阻塞等情况。
由上述CPI公式知程序的CPU时钟周期数=CPI*程序的执行指令数所以CPU性能公式即CPU时间的计算可以表示为
由上述CPI公式知程序的CPU时钟周期数=CPI\*程序的执行指令数所以CPU性能公式即CPU时间的计算可以表示为
$$
\mbox{CPU时间}=\mbox{程序的执行指令数}\times CPI \times \mbox{时钟周期}
$$
@@ -657,7 +657,7 @@ SPEC CPU2017是SPEC组织于2017年再次更新的CPU基准测试程序集
### 并行系统基准测试程序
并行计算机系统多核、多线程和多处理器系统等和单计算机系统不同的是其存在并行性的瓶颈包括多个线程之间共享资源的竞争和算法中数据的相互依赖等。面向并行系统的基准测试程序就是测试和评价并行系统的性能在并行计算机体系结构的研究中起着重要的作用。这里主要介绍SPLASH-2、PARSEC和Linkpack三种并行基准测试程序集。
并行计算机系统多核、多线程和多处理器系统等和单计算机系统不同的是其存在并行性的瓶颈包括多个线程之间共享资源的竞争和算法中数据的相互依赖等。面向并行系统的基准测试程序就是测试和评价并行系统的性能在并行计算机体系结构的研究中起着重要的作用。这里主要介绍SPLASH-2、PARSEC和Linpack三种并行基准测试程序集。
1SPLASH-2
@@ -678,7 +678,7 @@ theme_box()
3Linpack
Linpack是线性系统软件包Linear system package的缩写开始于1974年由美国阿贡国家实验室应用数学所主任Jim Pool提出并设计是一套专门解线性系统问题的数学软件。Linpack用于用高斯消元法求解一元N次稠密线性代数方程组的测试当前在国际上已经成为最流行的用于测试高性能计算机系统浮点性能的基准测试程序。Linpack测试包括三类Linpack100、Linpack1000和HPL。Linpack100求解规模为100阶的稠密线性代数方程组它只允许采用编译优化选项进行优化不得更改代码甚至代码中的注释也不得修改。Linpack1000求解规模为1000阶的线性代数方程组达到指定的精度要求可以在不改变计算量的前提下做算法和代码的优化。HPL即High Performance Linpack也叫高度并行计算基准测试。前两种测试运行规模较小已不适合现代计算机的发展因此现在使用较多的测试标准为HPL。HPL是针对现代并行计算机提出的测试方式用户在不修改任意测试程序的基础上可以调节问题规模的大小N矩阵大小、使用到的CPU数目和使用各种优化方法等来执行该测试程序以获取最佳的性能。衡量计算机性能的一个重要指标就是计算峰值浮点计算峰值是指计算机每秒能完成的浮点计算最大次数。理论浮点峰值是该计算机理论上能达到的每秒能完成的浮点计算最大次数它主要是由CPU的主频决定的。理论浮点峰值CPU主频×CPU每个时钟周期执行浮点运算的次数×系统中CPU核数。实测浮点峰值是指Linpack测试值也就是在这台机器上运行Linpack测试程序通过各种调优方法得到的最优的测试结果。用高斯消元法求解线性方程组当求解问题规模为N时浮点运算次数为(2/3 * N3+2*N2)。因此只要给出问题规模N测得系统计算时间T系统的峰值=计算量(2/3 * N3+2*N2)/计算时间T测试结果以浮点运算每秒FLOPS给出。一般程序的运行几乎不可能达到Linpack的实测浮点峰值更不用说达到理论浮点峰值了。这两个值只是作为衡量机器性能的一个指标用来表明机器的处理能力和潜能。
Linpack是线性系统软件包Linear system package的缩写开始于1974年由美国阿贡国家实验室应用数学所主任Jim Pool提出并设计是一套专门解线性系统问题的数学软件。Linpack用于用高斯消元法求解一元N次稠密线性代数方程组的测试当前在国际上已经成为最流行的用于测试高性能计算机系统浮点性能的基准测试程序。Linpack测试包括三类Linpack100、Linpack1000和HPL。Linpack100求解规模为100阶的稠密线性代数方程组它只允许采用编译优化选项进行优化不得更改代码甚至代码中的注释也不得修改。Linpack1000求解规模为1000阶的线性代数方程组达到指定的精度要求可以在不改变计算量的前提下做算法和代码的优化。HPL即High Performance Linpack也叫高度并行计算基准测试。前两种测试运行规模较小已不适合现代计算机的发展因此现在使用较多的测试标准为HPL。HPL是针对现代并行计算机提出的测试方式用户在不修改任意测试程序的基础上可以调节问题规模的大小N矩阵大小、使用到的CPU数目和使用各种优化方法等来执行该测试程序以获取最佳的性能。衡量计算机性能的一个重要指标就是计算峰值浮点计算峰值是指计算机每秒能完成的浮点计算最大次数。理论浮点峰值是该计算机理论上能达到的每秒能完成的浮点计算最大次数它主要是由CPU的主频决定的。理论浮点峰值 = CPU主频 \* CPU每个时钟周期执行浮点运算的次数 \* 系统中CPU核数。实测浮点峰值是指Linpack测试值也就是在这台机器上运行Linpack测试程序通过各种调优方法得到的最优的测试结果。用高斯消元法求解线性方程组当求解问题规模为N时浮点运算次数为$(\frac{2}{3} * N^{3} + 2 * N^{2})$。因此只要给出问题规模N测得系统计算时间T系统的峰值 = 计算量$(\frac{2}{3} * N^{3} + 2 * N^{2})$ / 计算时间T测试结果以浮点运算每秒FLOPS给出。一般程序的运行几乎不可能达到Linpack的实测浮点峰值更不用说达到理论浮点峰值了。这两个值只是作为衡量机器性能的一个指标用来表明机器的处理能力和潜能。
### 其他常见的基准测试程序集
@@ -740,7 +740,7 @@ theme_box()
### 分析建模的方法
分析建模的方法试图快速并且有效地捕获计算机系统的行为并且对许多性能问题快速提供答案。由于处理器是个巨复杂系统很难用一个模型来准确描述所以可以独立地为处理器的各个部分建立分析模型在忽略硬件实现细节的情况下考虑其对性能的影响从而能够量化地分析影响处理器性能的因素且具有速度快、灵活性高的特点。举一个最简单的分析建模的例子。计算系统的平均内存访问时间T = Tc + (1-h)*TmT表示平均内存访问时间h是Cache命中率Tc是Cache的访问时间Tm是内存的访问时间。这个模型对计算机存储系统的行为进行了简化建模但也体现了某些特定参数的改变所产生的影响例如Cache命中率的变化、内存访问时间的变化都会对平均内存访问时间产生影响。
分析建模的方法试图快速并且有效地捕获计算机系统的行为并且对许多性能问题快速提供答案。由于处理器是个巨复杂系统很难用一个模型来准确描述所以可以独立地为处理器的各个部分建立分析模型在忽略硬件实现细节的情况下考虑其对性能的影响从而能够量化地分析影响处理器性能的因素且具有速度快、灵活性高的特点。举一个最简单的分析建模的例子。计算系统的平均内存访问时间T = Tc + (1-h) \* TmT表示平均内存访问时间h是Cache命中率Tc是Cache的访问时间Tm是内存的访问时间。这个模型对计算机存储系统的行为进行了简化建模但也体现了某些特定参数的改变所产生的影响例如Cache命中率的变化、内存访问时间的变化都会对平均内存访问时间产生影响。
分析建模的方法中常常用到主成分分析方法。主成分分析方法也称为矩阵数据分析,是数学上用来降维的一种方法,其原理是设法将原来的变量重新组合成一组新的互相无关的综合变量,同时根据实际需要从中可以取出少数几个综合变量尽可能多地反映原来变量的信息。主成分分析方法可以用于分析程序中微体系结构无关的特性,以及对基准测试程序进行冗余性分析。