当前位置: 代码迷 >> 综合 >> 【计算机体系结构】学习笔记 第一章 计算机系统设计基础
  详细解决方案

【计算机体系结构】学习笔记 第一章 计算机系统设计基础

热度:62   发布时间:2024-02-27 06:51:42.0

文章目录

  • 1.1 计算机系统的基本概念
    • 1.1.1 计算机系统的多级层次结构
    • 1.1.2 系统结构、组成与实现
      • 1. 计算机系统结构的定义System Architecture
      • 2. 计算机组成Computer Organization
      • 3. 计算机实现Computer Implementation
    • 1.1.3 计算机系统的分类
      • 1. 采用的基本器件分类
      • 2. 计算机系统成本分类
      • 3. 1966年Michael J. Flynn分类
      • 4. 1978年David J. Kuck分类
      • 5. 1972年冯泽云分类
      • 6. Handler分类法
  • 1.2 计算机系统的设计技术
    • 1.2.1 计算机系统的设计原理
      • 1. 加快经常性事件的速度
      • 2. Amdahl定律
      • 3. 程序访问的局部性规律
      • 4. Amdahl/case准则
      • 5. 成功转移法则
      • 6. Cache法则
    • 1.2.2 计算机系统的设计方法
      • 1. 软硬件舍取的基本原则
      • 2. 计算机系统设计者的主要任务
      • 3. 计算机系统设计的基本方法 (三种)
  • 1.3 计算机系统的性能评价
    • 1.3.1 CPU性能公式(CPU工作时间)
    • 1.3.2 MIPS和MFLOPS
    • 1.3.3 基准测试程序
    • 1.3.4 性能评价结果的统计和比较
  • 1.4 计算机体系结构的发展
    • 1.4.1 传统机结构特点及其演变
    • 1.4.2 系统结构的发展
      • 1. 软件对体系结构发展的影响
      • 2. 器件对体系结构发展的影响
      • 3. 应用对系统结构发展的影响
      • 4. 价格对系统结构的影响
      • 5. 算法对系统结构的影响
      • 6. 体系结构发展小结


本章要求:
了解计算机系统的多级层次结构;掌握体系结构、组成和实现的定义及属性,会透明性分析;掌握计算机系统的设计原理、性能计算;掌握计算机系统的分类,特别是Flynn分类;了解软件对计算机体系结构发展的影响。

1.1 计算机系统的基本概念

什么是计算机?计算机是一种不需要人的直观干预而能自动完成各种算术和逻辑运算的工具。随着计算机科学技术的发展和应用范围的扩大,计算机已由单一的数值计算,扩展到信息处理、知识推理等非计算领域。

  • 机器:能存储和执行相应语言程序的算法和数据结构的执行体;
  • 计算机语言:是用以描述控制流程的、有一定规则的字符集合。语言不是专属软件范畴,可以从属于计算机系统的各个层次,具有不同作用。

1.1.1 计算机系统的多级层次结构

从使用语言的角度上,将计算机系统看成按功能划分的多级层次结构

机器、汇编、高级、应用语言
低级--------------->高级

后者比前者功能更强、使用更方便;而前者是后者发展的基础,在单条指令的执行速度相比较,前者更快。

对应的多语言层次结构图如下:







多级层次结构(机器—语言)
M5: 应用语言机器------应用语言(L5)
M4: 高级语言机器------高级语言(L4)
M3: 汇编语言机器------汇编语言(L3)
M2: 操作系统机器------作业控制语言(L2)
M1: 传统机器----------机器语言(L1)
M0: 微程序机器---------微程序语言(L0) 从设计人员看到的层次:
应用程序级------用户
高级语言级------高级语言程序员
汇编语言级------汇编语言程序员
操作系统级------操作员
机器语言级------机器语言程序员
微程序控制级----逻辑程序员
硬联逻辑级------硬件设计员 

翻译 Translation :先用转换程序将高一级机器级上的程序整个变换成低一级机器级上可运行的等效程序(中间程序),然后再在低一级机器级上去实现的技术。计算机系统中的翻译功能常由应用程序包、编译程序、汇编程序等软件完成。

解释 Interpretation :在低一级机器级上用它的一串语句或指令来仿真高一级机器上的一条语句或指令的功能,通过对高一级机器语言程序中的每条语句或指令逐条解释来实现的技术。解释过程中不生成中间程序,节省了存储空间。

翻译和解释是语言实现的两种基本技术:

  • 解释比翻译费时,但节省存储空间
  • 翻译为整体行为,可以优化,效率高,与平台有关
  • 解释为局部行为,不优化,效率低,与平台无关
  • 翻译+解释:Java

控制流程的三种实现方法——全硬件、软硬件结合、全软件:

  • 逻辑上等价,物理意义上不等价
  • 硬件实现:速度快、成本高;灵活性差、占用内存少
  • 软件实现:速度低、复制费用低;灵活性好、占用内存多
  • 发展趋势:硬件实现的比例越来越高;硬件所占的成本越来越低。

从概念和功能上将计算机系统看成多级层次结构的优点:

  1. 理解软件、硬件、固件的地位和作用
  2. 理解各种语言的实质和实现途径
  3. 探索虚拟机新的实现方法和新的系统设计:由硬件固件实现——高级语言机器;多处理机系统——由真正微处理机实现。
  4. 理解计算机体系结构的定义
  5. 在一台真正的宿主机上通过模拟或仿真另一台不同的假想机器——自虚拟技术

1.1.2 系统结构、组成与实现

1. 计算机系统结构的定义System Architecture

计算机系统结构是对计算机系统中各机器级之间界面的划分和定义、对各级界面上下功能的分配,是从程序员的角度所看到的系统的属性,是概念上的结构(概念性结构)和功能上的行为(功能特性)。它不同于数据流程和控制的组织,不同于逻辑设计以及物理实现方法。其中的程序员,指的是系统程序员(包括汇编语言、机器语言、编译程序、操作系统),看到的指的是编写出能在机器上正确运行的程序所必须了解到的。

我们从两个角度理解:

  1. 计算机体系结构既然是从程序员的角度所看到的系统的属性,那么每一级机器就会有一个体系结构,而且它们相互不同;
  2. 程序员所看到的定义在传统机器界面M1的计算机体系结构,被称为计算机的基本属性。一般应包括以下几个方面(在所有体系结构的特性中,指令系统的外特性是最关键的):
    • 指令系统、数据表示、操作数的寻址方式、寄存器的构成定义
    • 中断机构和例外条件
    • 存储体系和管理、I/O结构
    • 机器工作状态定义和切换、信息保护

如何认识计算机系统:

  • 虚拟计算机定义:从不同角度所看到的计算机系统的属性是不同的
  • 主要观察角度包括:应用程序员;系统程序员:高级语言、汇编语言、操作系统;硬件设计人员。他们对计算机系统的认识通常只需要在某一个层次以上。

2. 计算机组成Computer Organization

研究硬件系统各组成部分的内部构造和相互联系,以实现机器指令级的各种功能和特性,目标是用最合理地方式将各种设备和部件连接为计算机,以达到最优的性价比,从而实现所确定的体系结构

计算机组成是计算机体系结构的逻辑实现,包括机器级内的数据流和控制流的组成以及逻辑设计等。

3. 计算机实现Computer Implementation

计算机实现是计算机组成的物理实现, 研究各部件的物理结构、机器的制造技术和工艺等,着眼于器件技术和微组装技术。主存的物理实现(如存储器采用什么器件)、逻辑电路设计、微组装技术均属计算机实现。


定义理解举例:

  • 指令系统:
    • 指令系统的确定--------体系结构
    • 指令的实现--------------组成
    • 具体电路、器件设计及装配技术—实现
  • 主存系统:
    • 主存容量与编址方式的确定-----------体系结构
    • 主存速度的确定、逻辑结构的模式—组成
    • 器件的选定、电路的设计、组装技术—实现

三者的相互关系: 随着技术、器件和应用的发展,计算机系统结构、计算机组成和计算机实现之间的界限越来越模糊

  • 具有相同体系结构的计算机可以采用不同的组成,相同的计算机组成可以采用多种不同的计算机实现(系列机与兼容机);
  • 采用不同的体系结构会使可以采用的组成技术产生差异,计算机组成也会影响系统结构;

计算机系统的层次结构理解,计算机系统可分为7个层次:

  • 第3级至第6级由软件实现,称为虚拟机;
  • 从学科领域来划分:第0级和第1级属于计算机组成原理,第2级属于计算机系统结构,第3至第5级属于系统软件,第6级属于应用软件。它们之间有交叉,例如:第4级和第5级必须依赖第3级来实现。

透明性 Transparency :本来存在的事物或属性,从某个角度去看却看不到。在多级层次结构的计算机系统中,低层机器的属性往往对高层机器的程序员是透明的

  • 传统机器级的概念性结构和功能特性,对高级语言的程序员来说是透明的,而对汇编语言的程序员来说不是透明的。这说明高级语言的程序员不必知道机器的指令系统、中断机构等,这些本来存在的属性,对高级语言的程序员来说好像不存在一样,所以说是透明的
  • 计算机组成设计的内容,如存储器采用交叉存取还是并行存取、CPU内部的数据通路的宽度是8位还是16位,对计算机体系结构和传统机器程序员来说,一般都是透明的,而对计算机组成来说这些不是透明的。
  • 例如:CPU类型、型号、主存储器容量等,对应用程序员透明,对系统程序员、硬件设计人员等不透明。例如:浮点数表示、乘法指令,对高级语言程序员、应用程序员透明,对汇编语言程序员、机器语言程序员不透明。例如:数据总线宽度、微程序,对汇编语言程序员、机器语言程序员透明,对硬件设计人员、计算机维修人员不透明。
  • 指令执行采用串行、重叠还是流水控制方式,对体系结构来说是透明的,但对计算机组成来说不是透明的。乘法指令采用专用乘法器实现,对体系结构来说是透明的,而对计算机组成来说不是透明的。存储器采用哪种芯片,对计算机体系结构和组成来说是透明的,而对计算机实现来说不是透明的。

1.1.3 计算机系统的分类

1. 采用的基本器件分类

随着计算机的更新换代,计算机性能大幅度提高,一方面依靠器件的不断更新,同时也依赖体系结构的不断改进

  • 第一代:电子管计算机
  • 第二代:晶体管计算机
  • 第三代:中小规模集成电路
  • 第四代:大或超大规模集成电路
  • 第五代:VLSI(超大规模集成电路)
  • 第六代:ULSI(甚大规模集成电路)

2. 计算机系统成本分类

划分原则是以性能为特征,按价格来划分:

  • 巨型计算机、超级计算机:HPC
  • 大型计算机:MainComputer
  • 中型计算机:MidComputer
  • 小型计算机:MiniComputer
  • 工作站:介于小型机和微型机之间,具有小型机的性能,微型机的价格
  • 微型计算机:MicroComputer

3. 1966年Michael J. Flynn分类

基本概念:

  • 指令流(instruction stream):机器执行的指令序列;
  • 数据流(data stream):由指令流调用的数据序列;
  • 多倍性(multiplicity):在系统瓶颈部件上处于同一执行阶段的指令或数据的最大可能个数。

按照指令流和数据流的多倍性进行分类:

  • 单指令流单数据流 SISD(Single Instruction stream Single Data stream):传统计算机,如IA结构的PC机。SISD典型单处理机包括:

    • 单功能部件处理机:IBM1401,VAX-11
    • 多功能部件处理机:IBM360/91,370/168, CDC6600等
    • 流水线处理机,指标量流水线处理机
  • 单指令流多数据流 SIMD(Single Instruction stream Multiple Data stream):并行处理机、阵列处理机、向量处理机、相联处理机、超标量处理机、超流水线处理机,如ILLIAC Ⅳ机;

  • 多指令流单数据流 MISD (Multiple Instruction stream Single Data stream):几条指令对同一个数据进行不同的处理,只是作为理论模型出现,没有投入到实际应用之中;

  • 多指令流多数据流 MIMD(Multiple Instruction stream Multiple Data stream):多计算机系统,可以同时执行多个指令流,这些指令流分别对不同数据流进行操作。最新的多核计算平台就属于MIMD的范畴。不论是大规模并行处理机还是对称多处理机,都属于MIMD。

Flynn分类法得到广泛应用 (SIMD, MIMD, SPMD, XIMD, …),但是主要缺点如下:

  • 分类太粗:在SIMD中包括有多种处理机;对流水线处理机的划分不明确,标量流水线为 SISD ,向量流水线为 SIMD
  • 根本问题是把两个不同等级的功能并列对待(数据流受指令流控制,造成MISD不存在)
  • 无法运用到非冯计算机的分类

4. 1978年David J. Kuck分类

库克分类:指令流、执行流、多倍性

  • 单指令流单执行流 SISE
  • 单指令流多执行流 SIME
  • 多指令流单执行流 MISE
  • 多指令流多执行流 MIME

5. 1972年冯泽云分类

用最大并行度 PmP_mPm? 分类。最大并行度 PmP_mPm? 即为在单位时间内能够处理的最大的二进制位数。

分类如下:

  • 字串位串 WSBS(Word Serial and Bit Serial)m = 1, n = 1 ,串行计算机,如EDVAC(1, 1);
  • 字并位串 WPBS(Word Parallel and Bit Serial)m = 1, n > 1 ,传统单处理机,如Pentium(32, 1);
  • 字串位并 WSBP(Word Serial and Bit Parallel)m > 1,n= 1 ,并行计算机、相联计算机,如MPP(1, 16384), STARAN(1, 256),DAP;
  • 字并位并 WPBP(Word Parallel and Bit Parallel)m > 1,n > 1 ,全并行计算机,如ASC(64, 32),IILIAC IV(64, 64) , PEPE(32, 288),Cmmp(16, 16)。

这一分类的主要缺点:仅考虑数据并行,没有考虑指令、任务、作业的并行。

6. Handler分类法

Wolfgan Handler 于1977年提出,又称为 ESC(Erlange Classification Scheme) 分类法,它根据并行度和流水线分类,把计算机硬件结构分成三个层次, 并分别考虑它们的可并行性和流水处理程度

  • 程序级 k :程序控制部件 PCU 的个数;
  • 操作级 d :算术逻辑部件 ALU 或处理部件 PU 的个数;
  • 逻辑级 w :每个算术逻辑部件包含的逻辑线路 ELC 的套数。

表示方法:t(系统型号)=(k,d,w) 。例如:

  • t(EDVAC) = (1, 1, 1)
  • t(Pentium) = (1, 1, 32)
  • t(STARAN) = (1, 8192, 1)
  • t(ILLIAC IV) = (1, 64, 64)
  • t(Cmmp) = (16, 1, 16)

1.2 计算机系统的设计技术

1.2.1 计算机系统的设计原理

1. 加快经常性事件的速度

这是计算机设计中最重要也最广泛采用的设计准则,使经常性事件的处理速度加快能明显提高整个系统的性能。在计算机系统的设计中,对经常发生的情况,赋予它优先的处理权和资源使用权,以得到更多的总体上的改进。

在当今的微处理机实现技术中,经常发生的事件由硬件完成,而不经常发生的事件交由软件完成。要能够确定什么是大概率事件,同时要说明针对该事件进行的改进将如何提高机器的性能

2. Amdahl定律

系统对某一部件采用某种更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频率,或所占总执行时间的比例

Amdahl表达式的解释:TeT_eTe? 是改进前的执行总时间,ToT_oTo? 是改进后的执行总时间,fef_efe? 是可改进部分占改进前执行总时间的比例,rer_ere? 是可改进部分的加速倍数:

Amdahl举例:在计算机系统中,某一功能的处理时间为整个系统运行时间的50%。
(1)若使该功能的处理速度加快10倍,根据Amdahl定律,这样做可以使整个系统的性能提高多少倍?
解:由题意可知 fe=0.5,re=10f_e=0.5, r_e=10fe?=0.5,re?=10性能之比等于执行时间之比的反比,根据Amdahl定律知加速比: Sp=TeTo=1[(1?fe)+fere]=1[(1?0.5)+0.510]=10.5+0.05≈1.82S_p = \frac{T_e}{T_o} = \frac {1}{\Big[ (1-f_e) + \frac{f_e}{r_e} \Big]} = \frac{1}{\Big[ (1-0.5) + \frac{0.5}{10} \Big]} = \frac{1}{0.5 + 0.05} \approx 1.82Sp?=To?Te??=[(1?fe?)+re?fe??]1?=[(1?0.5)+100.5?]1?=0.5+0.051?1.82
(2)若要使整个系统的性能提高1.5倍,则该功能的处理速度应加快多少倍?
解:根据Amdahl定律有: Sp=1.5=TeTo=1[(1?fe)+fere]=10.5+0.5reS_p = 1.5 = \frac{T_e}{T_o} = \frac {1}{\Big[ (1-f_e) + \frac{f_e}{r_e} \Big]} = \frac{1}{0.5 + \frac{0.5}{r_e}}Sp?=1.5=To?Te??=[(1?fe?)+re?fe??]1?=0.5+re?0.5?1? 解得:re=3r_e = 3re?=3 该功能的处理速度应加快3倍。

3. 程序访问的局部性规律

程序访问局部性是指程序执行过程中,频繁重新使用那些最近已被用过的数据和指令。

90%/10% 定量规律:一个程序执行时间中的 90% 是花费在 10% 程序代码上。这是构成存储体系(存储层次)的主要规律,是虚存、Cache高速缓存得以实现的依据。

4. Amdahl/case准则

一个平衡的计算机系统,其CPU每1MIPS的速度应有1MB的主存容量1Mb/s的I/O吞吐率。这一准则为设计平衡的计算机系统提出了三者之间的参考指标。由于是统计结果,具体应用还需要适当调整。

5. 成功转移法则

对于转移指令(可以控制CPU执行内存中某处代码的指令):向后转移指令90% 的成功率;向前转移指令20% 的成功率。这一转移法则为预测处理提供了参考信息。

6. Cache法则

容量为 C 的直接映像Cache的失效率与容量为 C/2 的二路组相联Cache的失效率大致相等。这一法则指出在相同命中率条件下,增加相联度(控制复杂性的增加)可以换取Cache容量的减小。


1.2.2 计算机系统的设计方法

1. 软硬件舍取的基本原则

原则一:在现有器件和技术条件下,系统要有高的性能价格比。
原则二:不应对组成和实现技术有过多的限制。
原则三:对软件提供更多更好的支持(OS、编译、高级语言)。

2. 计算机系统设计者的主要任务

要满足用户对功能上的要求,以及相应的对价格和性能的要求 (Money);在满足功能要求的基础上,进行设计的优化 (Optimization);设计应能适应日后的发展趋势 (state-of-the-art)。

计算机发展的基本趋势:

  • 一个芯片上的晶体管数量大约每年增加25%,因此每三年可增加一倍;
  • 器件的开关速度增长基本类似于DRAM的密度,每年增长约60%,因此每三年将增长三倍;
  • 访问存储器的周期改进相应较慢,每十年约减少1/3;
  • 硬盘密度每年增加25%,每三年增加一倍,访问时间则每十年减少1/3。

3. 计算机系统设计的基本方法 (三种)

方法一 由上往下设计

  • 先考虑如何满足应用要求,确定好面对使用者那级机器应有什么基本功能和特性,如基本命令、指令或语言结构、数据类型和格式等,然后再逐级往下设计,每级都考虑怎样优化上一级实现。
  • 方法特征:它适合于专用机设计,不适合于通用机设计。对于所面向的应用领域,性能和性能价格比很高。随着通用计算机价格降低,目前已经很少采用

方法二 由下往上设计

  • 不管应用要求,只根据能拿到的器件参照或吸收已有各种机器的特点,先设计出微程序机器级(如果采用微程序控制)及传统机器级,然后再为不同应用配多种操作系统和编译系统软件。
  • 方法特征:设计周期长。当一种结构的机器完成以后,硬件技术又已发展了一大步,容易使软件和硬件脱节,整个计算机系统的效率降低。20世纪60—70年代前常用此方法。

方法三 由中间开始设计(中间指传统机器级界面)

  • 先进行合理的软、硬件功能分配,既要考虑能拿到的硬、器件,又要考虑可能的应用所需的算法和数据结构,先定义好这个交界面。确定哪些功能由硬件实现,哪些功能由软件实现,同时还要考虑好硬件对操作系统、编译系统的实现提供些什么支持。然后由这个中间点分别往上、往下进行软件和硬件的设计。
  • 方法特征:设计周期短,软硬件结合,软硬件功能分配合理。

提高微处理器性能的方法:

  • 提高主频。提高主频可使系统中的各个部件受益,是提高系统性能最直接的方法。
  • 多线程。可隐藏访存延迟,是提高系统吞吐率的有效办法。
  • 2Bump技术。时钟信号的上升、下降沿均发送和接收控制信息,将频率提高两倍,此技术既可用于逻辑电路也可用于总线。
  • 提高IPC技术。即为先进的流水技术。
  • 合理分配软、硬件功能
  • 优化片内Cache。将二、三级Cache尽量放在处理器内部。
  • 加大通用寄存器数量。
  • 乱序发送/乱序完成的指令调度技术。
  • 预取技术。
  • 分支预测技术。

1.3 计算机系统的性能评价

1.3.1 CPU性能公式(CPU工作时间)

一个程序在CPU上运行所需的时间:TCPU=IN×CPI×TCT_{CPU} = I_N \times CPI \times T_CTCPU?=IN?×CPI×TC? 其中,CPI=∑i=1n(CPIi×IiIN)CPI = \sum\limits^n_{i=1}(CPI_i \times \frac{I_i}{I_N})CPI=i=1n?(CPIi?×IN?Ii??)

1.3.2 MIPS和MFLOPS

MIPS每秒(可执行)百万条指令:MIPS=INTE×106=ININ×CPI×TC×106=RCCPI×106MIPS = \frac{I_N}{T_E \times 10^6} = \frac{I_N}{I_N \times CPI \times T_C \times 10^6} = \frac{R_C}{CPI \times 10^6}MIPS=TE?×106IN??=IN?×CPI×TC?×106IN??=CPI×106RC??

MFLOPS每秒(可执行)百万条浮点指令:MFLOPS=IFNTE×106MFLOPS = \frac{I_{FN}}{T_E \times 10^6}MFLOPS=TE?×106IFN??

例1 用一台40MHz处理机执行标准测试程序,它含的混合指令数和相应所需的时钟周期数如下:

指令类型       指令条数       时钟周期数
整数运算       45000            1
数据传送       32000            2
浮点运算       15000            2
控制转移       8000             2

求有效CPI、MIPS速率和程序的执行时间。

解:依题意知 IN=105I_N = 10^5IN?=105n=4n = 4n=4CPI=∑i=1n(CPIi×IiIN)=∑i=14(1×0.45+2×0.32+2×0.15+2×0.08)=1.55MIPS=RCCPI×106=40×1061.55×106≈25.8TCPU=IN×CPI×TC=105×1.55×140×10?6=3.875(ms)\begin{aligned}CPI &= \sum\limits^n_{i=1}(CPI_i\times \frac{I_i}{I_N}) \\ &= \sum\limits^4_{i = 1}(1 \times 0.45 + 2\times 0.32 + 2 \times 0.15 + 2\times 0.08) \\ &= 1.55 \\ MIPS &= \frac{R_C}{CPI \times 10^6} = \frac{40\times 10^6}{1.55 \times 10^6} \approx 25.8 \\ T_{CPU} &= I_N \times CPI \times T_C \\ &= 10^5 \times 1.55 \times \frac{1}{40 \times 10^{-6}} = 3.875(ms) \end{aligned}CPIMIPSTCPU??=i=1n?(CPIi?×IN?Ii??)=i=14?(1×0.45+2×0.32+2×0.15+2×0.08)=1.55=CPI×106RC??=1.55×10640×106?25.8=IN?×CPI×TC?=105×1.55×40×10?61?=3.875(ms)?

例2 某工作站采用时钟频率为15MHz、处理速率为10MIPS的处理机来执行一个已知混合程序。假定每次存储器存取为1周期延迟、试问:
(1)此计算机的有效CPI是多少?
解:容易知道:CPIold=RoldMIPS×106=15×10610×106=1.5CPI_{old} = \frac{R_{old}}{MIPS \times 10^6} = \frac{15 \times 10^6 }{10 \times 10^6} = 1.5CPIold?=MIPS×106Rold??=10×10615×106?=1.5
(2)假定将处理机的时钟提高到30MHz,但存储器子系统速率不变。这样,每次存储器存取需要两个时钟周期。如果30%指令每条只需要一次存储存取,而另外5%每条需要两次存储存取,还假定已知混合程序的指令数不变,并与原工作站兼容,试求改进后的处理机性能。
解:依题意可知:30%的指令需要一次存储存取,则这些指令在处理器提高时钟频率之后需要增加1个时钟周期;另外5%的指令需要增加2个时钟周期。

改进后性能提高情况可用CPU时间之比表示:

思考题:如果FP操作的比例为25%,平均CPI=4,其它指令的CPI=1.33, FPSQR操作的比例为2%,CPI=20。假若有两种设计方案,分别将FP操作和FPSQR操作的CPI都减为2。试比较这两个方案哪个更好?

1.3.3 基准测试程序

用于评价计算机系统性能的基准测试程序 Benchmark

  • 采用实际应用程序。如C语言的各种编译程序及CAD工具软件等;
  • 采用核心程序。从实际程序中抽取少量关键循环程序段来组成核心程序,以此来评估性能;
  • 合成测试程序。它类似于核心程序方法,但这种合成测试程序是人为编制的。因此它比核心程序离实际程序更远。较流行的合成测试程序有Whetstone和Dhrystone两种.

SPEC测试程序:在1988年,美国HP、DEC、MIPS以及SUN公司,发起成立了 SPEC(Standard Performance Evaluation Corporation) (标准性能评估协会)。SPEC是一个非盈利社团,致力于建立、维护和认可一个基准测试程序标准化集,以用于最新一代高性能计算机的性能衡量。SPEC89、92、95和2000共四个版本。

SPEC89由10个工程/科学测试程序(GCC, Espresso, Splce2g6, DODUC, NASA7, Li, Eqntott, Matrix300, FPPPP, TOMCATV)组成。其中4个用C语言编写(GCC, Espresso, Li, Eqntott),用于整数运算,6个用FORTRAN语言编写,用于浮点运算。计算所得SPECmark的分值越大越好,它是相对于 VAX—11/780 的性能,lSPEC分值约相当于 0.2 ~ 0.3MFLOPS 。SPEC89后来演化出两个测试程序集:SPECmark测量10个程序的执行速率,SPECthruput考察系统的吞吐率。

SPEC92由20个测试程序组成,包括CINT92(6)和CFP92(14),参照机是 VAX11/780

SPEC95由18个测试程序组成,包括CINT95(8)和CFP95(10),参照机是 SUN SPARC 10/40

SPEC2000由26个测试程序组成,包括CINT2000(12)和CFP2000(14),参照机是 SUN Ultra5_10 300MHz, Alpha Station 500/500(System#1), Personal Workstation 500au(System#2), Alpha Server 4100 5/533(System#3)

另外,说到高性能计算,一般都是利用搭建集群配合加速卡做并行计算实现。但用相同的硬件实现更快的方法,那就是做测试了。比较有名的就是 Linpack 性能测试了。Linpack 已经成为国际上最流行的、用于测试高性能计算机系统浮点性能的 benchmark ,高性能领域就是利用其中的HPL测试。

1.3.4 性能评价结果的统计和比较

峰值性能:理想情况下计算机系统可获得的最高理论性能值,不能真实反映系统实际性能。

持续性能:实际性能又称为持续性能,它的值只有峰值性能的5%到35%(因算法而异)。持续性能的表示常用算术平均、几何平均和调和平均三种平均值方法。RiR_iRi? :由 nnn 个程序组成的工作负荷中执行第 iii 个程序的速率,TiT_iTi? :执行第 iii 个程序所需的时间

  • 算术性能平均值 AmA_mAm?Am=1n∑i=1nRi=1n∑i=1n1Ti=1n(1T1+1T2+?+1Tn)A_m = \frac{1}{n} \sum\limits^n_{i=1}R_i = \frac{1}{n}\sum\limits^n_{i=1} \frac{1}{T_i} = \frac{1}{n}(\frac{1}{T_1} + \frac{1}{T_2} + \dots + \frac{1}{T_n})Am?=n1?i=1n?Ri?=n1?i=1n?Ti?1?=n1?(T1?1?+T2?1?+?+Tn?1?)
  • 几何性能平均值 GmG_mGm?Gm=(∏i=1nRi)n=(∏i=1n1Tin)G_m = \sqrt[n]{(\prod^n_{i=1}R_i)} = \sqrt[n]{(\prod_{i=1}^n\frac{1}{T_i}})Gm?=n(i=1n?Ri?) ?=n(i=1n?Ti?1? ?)
  • 调和性能平均值 HmH_mHm?Hm=n∑i=1n1Ri=n∑i=1nTi=nT1+T2+?+TnH_m =\frac{n}{\sum\limits^n_{i=1}\frac{1}{R_i}} = \frac{n}{\sum\limits^n_{i=1}T_i} = \frac{n}{T_1 + T_2 + \dots +T_n}Hm?=i=1n?Ri?1?n?=i=1n?Ti?n?=T1?+T2?+?+Tn?n?

例3 已知四个程序在三台计算机上的执行时间(s)如下表:

假设四个程序中每一个都有100 000 000条指令要执行,计算这三台计算机中每台机器上每个程序的MIPS速率。根据这些速率值,你能否得出有关三台计算机相对性能的明确结论?你能否找到一种将它们统计排序的方法?试说明理由。

解:根据式 MIPS=IN/(TE×106)MIPS = I_N / (T_E \times 10^6)MIPS=IN?/(TE?×106) 可得出每台机器每个程序的MIPS速率如下:

由上述机器的MIPS速率,可知每台机器对4个程序有不同的处理速度,而且大小顺序不同,所以不能得出明确的结论。下面可采用统计的方法比较各机器的性能,如机器A的算术平均:Am=1n∑i=1nRi=14×(100+0.1+0.2+1)≈25.3A_m = \frac{1}{n}\sum\limits^n_{i=1}R_i = \frac{1}{4} \times (100 + 0.1 + 0.2 + 1) \approx 25.3Am?=n1?i=1n?Ri?=41?×(100+0.1+0.2+1)25.3
因此:

  • 如果按照算术平均比较性能,机器A最快,机器B最慢;
  • 如果按照几何平均比较性能,机器C最快,机器B最慢;
  • 如果按照调和平均比较性能,机器C最快,机器B最慢。

1.4 计算机体系结构的发展

1.4.1 传统机结构特点及其演变

冯·诺依曼提出了存储程序机器的结构:

传统计算机结构模式的主要特点是:

  1. 存储程序方式。指令与数据都以字的方式存放在同一存储器中,没有区别;
  2. 指令串行执行,并由控制器加以集中控制;
  3. 单位定长的一维线性空间的存储器。
  4. 使用低级机器语言,数据以二进制形式表示。
  5. 单处理机结构,以运算器作为中心

传统计算机结构模式的主要缺点有:

  1. 存在有两个瓶颈:物理瓶颈 access 和智能瓶颈 execution
  2. 低级的机器语言和高级的程序设计语言之间,存在着巨大的语义差距
  3. 复杂的数据结构对象,无法直接存放到一维线性地址空间的存储器中,必须经过地址映象

非冯计算机的发展:什么是非冯计算机?

  • 从传统的指令驱动型改变为数据驱动型,出现了数据流机计算机
  • 从传统的指令驱动型改变为需求驱动型,出现各种图归约计算机
  • 处理非数值化信息的智能计算机,自然语言、声音、图形和图像处理、虚拟现实处理等
  • 第五代计算机,由推理机和知识库机等组成,历经10年,召开过多次专题国际会议
  • 神经网络计算机、仿生计算机、量子计算机
  • 可重构计算/非冯结构

1.4.2 系统结构的发展

1. 软件对体系结构发展的影响

软件对体系结构的影响,主要是解决软件的可移植性

  • 软件成本越来越高
  • 软件产量和可靠性的提高困难
  • 积累了大量成熟的软件
  • 排错比编写困难、软件生产率低,因而出现了软件危机

可移植性是指一个软件可不经修改或只需少量修改,便可由一台机器移植到另一台机器上运行。实现软件的可移植性有三个主要途径:

  • 统一高级语言: 采用同一种不依赖于任何具体机器的高级语言,编写所有的系统软件和应用软件。但是要面对应用、看法和习惯势力三个问题,至今还没有这样一种高级语言,短期内很难实现。

  • 采用系列机方法:系列机是由同一厂商生产的,体系结构相同、组成和实现不同的不同档次(速度、容量、成本和可靠性)的机器。如IBM公司的360、370系列计算机,DEC公司的PDP-ll系列机 和INTEL公司的80X86系列微型计算机。与之相关的一个概念是兼容机,是由不同厂商生产,体系结构相同、组成和实现不同的不同档次的机器。

    相同的指令系统,可以采用顺序执行、重迭、流水和并行处理方式;相同的32位字长,数据通路宽度为8位、16位、32位、64位。如PC系列机就有:

    • 不同主频:4.7MHz,500MHz,1GHz,2.4GHz, 3GHz, …
    • 不同扩展:Pentium、Pentium Pro、Pentium MMX、Pentium SSE、Pentium SSE2
    • 不同Cache:Pentium、Celeron、Xeon
    • 不同字长:8位、16位、32位、64位

    采用系列机方法的主要优点:系列机之间软件兼容,可移植性好;插件、接口等相互兼容;便于实现机间通信;便于维修、培训;有利于提高产量、降低成本。采用系列机方法的主要缺点:限制了计算机系统结构的发展,如PC系列机,其系统结构非常落后,使用也最普及。

    可以说,系列机方法较好地解决了硬件技术更新发展快(体系结构要求不断更新)而软件编写开发周期比较长(软件环境要求相对稳定)之间的矛盾。但是它只是解决了体系结构相同的计算机之间的软件移植,也限制了体系结构的发展。

  • 模拟与仿真 Simulation Emulation 定义:在一台现有的计算机上实现另一台计算机的指令系统。全部用软件实现的叫模拟Simulation ,用软件、硬件、固件混合实现的叫仿真 Emulation

    模拟:用一台机器的指令系统,去解释另一台体系结构不同的机器的指令系统,以实现软件的移植。(实现容易、速度较慢)
    模拟的实现方法:在A计算机上通过解释或编译实现B计算机的指令系统。A机器称为宿主机,B机器称为虚拟机

    仿真:直接用微程序去解释另一台体系结构不同的机器的指令系统,以实现软件的移植。(微程序编写困难、实现速度较快)
    仿真的实现方法:直接用A机器的一段微程序,解释执行B机器的指令。A机器称为宿主机,B机称为目标机

    模拟与仿真可实现体系结构不同的机器之间软件的移植。对于使用频率较高的指令,尽可能用仿真方法以提高运算速度,而对使用频率低且难于用仿真实现的指令(包括I/O指令等)则用模拟方法加以实现。

三种方法比较:

  • 方法一中,采用统一的高级语言是努力的目标,但不能解决已有目标代码的兼容。
  • 方法二是目前最有效的方法,但限制了计算机系统结构的发展。
  • 方法三中,仿真的速度低,芯片设计的负担重。用于同一系列机内的兼容,1/10~1/2的芯片面积将用于仿真。

开放式系统 open system :1978年由国际标准化组织(ISO)首先提出了关于开放式系统的新概念,指—种独立于厂商且遵循有关国际标准而建立的,具有系统可移植性、交互操作性,从而能够允许用户自主选择具体实现技术和多厂商产品渠道的系统集成技术的系统。它是相对于原来的封闭系统或专有系统而言的。

2. 器件对体系结构发展的影响

器件发展使得计算机的主频速度、单芯片的集成度飞速提高(如1979年推出的8088/8086,主频约5MHz,单芯片上集成2.9万个晶体管;1997年推出的PII主频在300MHz左右,单芯片上集成1500万个晶体管),可以说:

  • 器件的发展使得体系结构技术下移速度加快,大型机的系统迅速出现在低端机。
  • 器件的发展使得器件原有的使用性质发生了转变(通用型→现场型→专用型)。
  • 器件的发展会影响到算法、语言和软件的发展
  • 器件的发展改变了传统的逻辑设计思想和逻辑设计方法(逻辑化简?设计周期?提高效能?)。
  • 器件是推动体系结构发展的主要动力和最活跃的因素,是计算机更新换代的标志之一。

3. 应用对系统结构发展的影响

计算机的应用范围:数值计算、数据库及事务处理系统、CAD、多媒体处理、人工智能。在确定了某个应用领域以后,系统结构设计者的首要任务是确保系统中的每一个功能部件都获得更高的性能。系统结构设计者总是根据用户(市场)需求设计或改进系统结构,以适应发展。

4. 价格对系统结构的影响

性能与价格(性/价比)均衡改善与提高,性能或价格较小的变化产生比原系统好的性/价比,提高系统的绝对性能,而价格增长又比较合理。

5. 算法对系统结构的影响

充分利用算法和系统结构这两者的优势,构建一种有效的解决问题的方法;改进和提高基本的系统结构;利用并行性获得高速度。

6. 体系结构发展小结

软件是促使计算机体系结构发展的最重要的因素。没有软件,机器就不能运行,所以为了能方便地使用现有软件,就必须考虑体系结构的设计;

应用需求是促使计算机体系结构发展的最根本的动力。机器是给人用的,我们追求更快更好,机器就要做得更快更好;

器件是促使计算机体系结构发展最活跃的因素。没有器件就产生不出电脑,器件的每一次升级都带来计算机体系结构的改进。