我是靠谱客的博主 闪闪皮带,最近开发中收集的这篇文章主要介绍计算机系统结构 从挂科到满分【1】第一章 计算机系统结构基础,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

镇楼神图:
在这里插入图片描述
附1:为什么要学习计算机系统结构?
根据外在的需求约束,设计计算机的系统结构,各功能部件及其连接方式以满足约束。
我们学的是结构,设计一个好的结构增益可以超过硬件本身的增益

附2:计算机系统的组织结构和计算机组成原理的区别在哪里?

  • 计算机组成原理强调的是计算机系统结构的逻辑实现,包括物理机器上的数据流,控制流
  • 计算机系统结构强调的计算机系统的软硬件之间的界面,强调的是机器语言程序员看到的层面。
  • 计算机实现强调的是用哪些硬件配置搭配,硬件装配等

具有相同系统结构的计算机可以由不同的计算组成,而同一种计算机组成可以有不同的计算机实现

第一章 计算机系统结构基础

1.1 计算机的层次

(1)计算机系统=硬件+软件
(2)虚拟机层与物理机层
在这里插入图片描述
微程序机器级的机器语言就是微指令集。而我们常说的机器语言指的是指令集。
(3)冯诺依曼结构:
在这里插入图片描述
(4)广义的系统结构定义:指令系统的结构,组成,硬件

(5)系列机
具有不同组成实现的机器但是统一系统结构组成。比如:Intel 的x86,ARM

(6)计算机系统结构的分类【Flynn分类法】
Flynn分类法的衡量指标:

  • 指令流:计算机执行的指令序列
  • 数据流:指令流调用的数据序列
  • 多倍性:在系统受限的情况下,处于同一执行阶段的指令或数据的最大数目

名词对照:

结构名称代号
指令流IS
数据流DS
控制流CS
控制部件CU
处理部件PU
存储器MM和SM

那么,把组织结构可以分为4类:

  • SISD:单指令单数据(冯诺依曼计算机属于SISD)
  • SIMD:单指令多数据
  • MISD:多指令单数据
  • MIMD:多指令多数据

在这里插入图片描述
单指令流的特征就是,CU模块只有一个,并且仅有一条CS(控制流)和一条IS(指令流)。

单数据流的特征就是,PU模块串联,只有一条进和出的DS(数据流)。

(7)并行评价标准
我们会根据计算机系统在单位时间内能够处理的最大二进制位数对并行进行评价。

(最大并行度是单位时间能处理的最大的二进制位数)

最大并行度 P m = n ∗ m P_m=n*m Pm=nm,n表示字宽,m表示字数
平均并行度
假设每个时钟周期能同时处理的二进制位数 P i P_i Pi,则T各时钟周期内的平均并行度:

P a = ∑ i = 1 T P i T P_a=frac{sum_{i=1}^TP_i}{T} Pa=Ti=1TPi
实际上就是处理了的总位数除以时钟周期数

平均利用率
μ = P a P m mu =frac{P_a}{P_m} μ=PmPa

系统型号 Handler 表示法:(k,d,w)
例题::Cray-1有1个CPU,12个相当于ALU或PE的处理部件,可以 最多实现8级流水线。字长为64位,可以实现1~14位流水线处理。所以 Cray-1系统结构可表示为:(1,12×8,64×(1~14))

1.2 计算机系统评价标准

(1)性能方案评测:性能加速比

Amdahl定律
系 统 性 能 加 速 比 S n = T 0 T n = 总 执 行 时 间 改 进 前 总 执 行 时 间 改 进 后 系统性能加速比 S_n=frac{T_0}{T_n}=frac{总执行时间_{改进前}}{总执行时间_{改进后}} Sn=TnT0=

加速比依赖于两个因素:

  • 可改进比例: F e = Δ 可 改 改 进 前 F_e=frac{Delta_{可改}}{改进前} Fe=Δ
    例子:一个需运行60秒的程序中有20秒的运算可以加速, 那么这个比例就是20/60。
  • 部件加速倍: S e = 改 进 后 改 进 前 S_e=frac{改进后}{改进前} Se= 【速度比】
    例子:若系统改进后,可改进部分的执行时间是2秒, 而改进前其执行时间为5秒,则部件加速比为5/2。

改进前的执行时间: T 0 T_0 T0
不可改进比例: 1 − F e 1-F_e 1Fe

改进后程序总的执行时间 T n = T 0 ( 1 − F e + F e S e ) T_n=T_0(1-F_e+frac{F_e}{S_e}) Tn=T0(1Fe+SeFe)

例题:将计算机某一功能的处理速度加快15倍,该功能占整个系统的运行时间的40%,则采用此增强方法之后,整个系统的性能提高多少?

解:
F e = 40 % F_e=40% Fe=40%
S e = 15 S_e=15 Se=15
S n = 1 1 − 0.4 + 0.4 15 = 1.6 S_n=frac{1}{1-0.4+frac{0.4}{15}}=1.6 Sn=10.4+150.41=1.6
可以使该系统的性能提高到原来的1.6倍

例题:某计算机系统采用浮点运算部件后,使浮点运算速度提高到原来的25倍,而系统运行某一程序的整体性能提高到原来的4倍,试计算该程序中浮点操作所占的比例。

解:
已知 S e = 25 S_e=25 Se=25 S n = 4 S_n=4 Sn=4
$ 4 = 1 ( 1 − F e + F e / 25 ) 4=frac{1}{(1-F_e+F_e/25)} 4=(1Fe+Fe/25)1

F e = 78.1 % F_e=78.1% Fe=78.1%

所以浮点操作所占比例78.1%

(2)性能方案评测:执行时间(CPU时间和CPI)

我们关注:

  • 时钟长
  • 时钟数

【1】CPU时间:
(CPU时间)执行程序所需的总时钟长=一个程序时钟数 ∗ * 单位时钟长

单位时钟长= 1 时 钟 频 率 frac{1}{时钟频率} 1

【2】CPI:每条指令的平均时钟周期数
CPI=一个程序时钟总数/一个程序的指令总数
IC=一个程序的指令总数

C P U 时 间 = I C ∗ C P I ∗ 单 位 时 钟 长 CPU时间=IC*CPI*单位时钟长 CPU=ICCPI

所以CPU性能取决于三个参数:单位时钟长,CPI(每指令耗时钟数),IC(指令数)

单位时钟长:由硬件本身决定
CPI:由计算机组成和指令系统决定
IC:取决于指令系统的结构

无论是IC还是CPI,我们都希望越小越好

例题1:【改进前改进后】
假设FP指令的比例为25%,其中,FPSQR占全部指令的 比例为2%,FP操作的CPI为4,FPSQR操作的CPI为20 ,其他指令 的平均CPI为1.33。现有两种改进方案,第一种是把FPSQR操作的 CPI减至2,第二种是把所有的FP操作的CPI减至2,试比较两种方案 对系统性能的提高程度。

解:
我们利用建表法来对问题可视化:
在这里插入图片描述
改进前的
C P I s y s t e m B e f o r e = 4 ∗ 25 % + 1.33 ∗ 75 % = 2 CPI_{systemBefore}=4*25%+1.33*75%=2 CPIsystemBefore=425%+1.3375%=2
假如采用第一种方案
C P I F P S Q R = 20 → 2 CPI_{FPSQR}=20rightarrow2 CPIFPSQR=202

C P I s y s t e m A f t e r = C P I s y s t e m B e f o r e − ( 20 − 2 ) ∗ 2 % = 1.64 CPI_{systemAfter}=CPI_{systemBefore}-(20-2)*2%=1.64 CPIsystemAfter=CPIsystemBefore(202)2%=1.64

假如采用第二种方案:
C P I F P = 4 → 2 CPI_{FP}=4rightarrow2 CPIFP=42

C P I s y s t e m A f t e r = C P I s y s t e m B e f o r e − ( 4 − 2 ) ∗ 25 % = 1.5 CPI_{systemAfter}=CPI_{systemBefore}-(4-2)*25%=1.5 CPIsystemAfter=CPIsystemBefore(42)25%=1.5

所以采取第二种方案更优。

例题2:【方案A方案B】
现有两种CPU中,有两种方案:
(1)CPU1:通过比较指令设置条件码,然后测试条件码进行 分支。
(2)CPU2:在分支指令中包括比较过程

条件分支指令都占用2个时钟周期,而所有其它指令占用1个时钟周期。对于CPU1,执行的指令中分支指令占 30%;由于每条分支指令之前都需要有比较指令,因此比较指令也 占30%。由于CPU1在分支时不需要比较,因此CPU2的时钟周期时间是CPU1的1.35倍。

问:哪一个CPU方案更快?

解:
在这里插入图片描述
CPU1和CPU2之间有什么共量?
指令之间的比例
对于CPU2而言,分支比较指令和其他指令的比例和CPU1的应该要一致,满足3:4

计算出CPI,越小越好,所以方案一?错!不一定,还要考虑IC的大小,T的大小

C P U 1 = C P I 1 ∗ I C 1 ∗ T 1 = 1.3 ∗ I C 1 ∗ T 1 CPU_{1}=CPI_1*IC_1*T_1=1.3*IC_1*T_1 CPU1=CPI1IC1T1=1.3IC1T1

C P U 2 = C P I 2 ∗ I C 2 ∗ T 2 = 1.428 ∗ I C 1 ∗ 0.7 ∗ T 1 ∗ 1.35 CPU_{2}=CPI_2*IC_2*T_2=1.428*IC_1*0.7*T_1*1.35 CPU2=CPI2IC2T2=1.428IC10.7T11.35

CPU1更小,所以方案1更优

(3)其他

对于用户关心的是单个程序的执行时间,对于数据中心管理员关心的是吞吐率。

为了对性能测试能有更好的评估,人们开发出基准测试程序套件,最常见的是SPEC系列程序,SPECweb用于测试服务器,有SPECviewperf用于测试图形系统支持openGL的性能等…

1.3 计算机系统结构发展

(1)以存储器为中心的计算机

冯诺依曼计算机时以运算器为中心的计算机,但IO速度是相对较慢的,为了改进这个问题,我们设计出以存储器为中心的计算机结构。
冯诺依曼计算机和以存储器为中心的计算机对比:
在这里插入图片描述
在这里插入图片描述
控制器和存储器的位置互换了,除此之外,指令和数据的地位一致,指令也可以进行运算。

(2)在单机系统结构层面的改进

  • 输入输出:程序控制(等待,中断技术),DMA,IO处理机(通道程序)
  • 单机器处理的并行:在不同级别采用并行技术,微指令级,指令级,线程级,进程级,任务级
  • 存储器的发展:寄存器,Cache
  • 指令系统:CISC,RISC

(3)在单机软件层面的改进

  • 软件的可移植性:系列机,兼容机
    在这里插入图片描述
  • 模拟仿真:虚拟机,模拟指令集

(5)在多机集群并行层面的改进

考虑到时间局限性(多个事件在同一时间段发生),空间局限性(多个数据在同一位置段被处理)

提高并行的技术:

  • 时间重叠:利用任务完成的分步性
  • 资源重复:使用多个同样的硬件满足需求
  • 资源共享:软件方法,多线程,多进程

机群已成为当今构建高性能并行计算机系统的最常用的结构。

最后

以上就是闪闪皮带为你收集整理的计算机系统结构 从挂科到满分【1】第一章 计算机系统结构基础的全部内容,希望文章能够帮你解决计算机系统结构 从挂科到满分【1】第一章 计算机系统结构基础所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部