计算机组织结构 随笔 【1】

前序:“计算机组成” 和 “计算机实现” 到底有啥区别?

初学者可能分不清计算机组成和计算机实现两种概念,计算机组成说的是计算机系统结构的逻辑实现,而计算机实现指的是计算机系统结构的物理实现,如果用我们计科本科科目来讲的话,数字电路那门课就是学的是计算机实现,而计组那门课学的就是计算机组成,一个学的是物理,一个学的是逻辑。

举些例子,研究计算乘法我们是用乘法器还是用多个加法器实现,这是计算机组成研究的事情,而怎样用电路实现一个乘法器是计算机实现研究的事情;再比如,研究主存的编址方式,容量,访问这些是计算机组成研究的事物,但我们研究主存的逻辑电路怎样设计,微组件的组装,使用的材料这些是计算机实现的研究。

第一话:计算机系统结构的基本概述

  • 系统结构的层次
  • 系统结构的分类
  • 系统结构设计的定量原理
  • 系统结构测评
  • 其他补充

首先需要注意的是,我们在此处所说的“系统结构”,不是“操作系统结构”,而是计算机架构的逻辑结构。20世纪八十年代,RISC结构(精简指令集结构)出现是一次非常重大的变革,因为RISC简化了指令系统,使得更多的芯片能够用于实现流水Cache,为当今出现的多种智能便携设备奠定了基础。

但是在2002年之后,计算机性能增长率面临了瓶颈,主要是因为我们能进一步对指令级的并行开发改进已经很少了,还有存储器的访问速度慢,大功率这些问题。之后大家都更加倾向于多核处理器的研究了,2004年Intel放弃了单核处理器的研究,这是系统结构的一个重大转折,从只依靠指令并行转向开发线程并行和数据级并行。(多核处理器以及多线程开发潮流的出现)

系统结构的层次

我们所说的计算机系统结构指的是的计算机逻辑架构,即便日后我们的文字里面出现:“计算机系统”,也不是指“操作系统”,而是指计算机本身的逻辑结构。一个计算机系统是由软件和硬件组成的,我们划分为以下几层:微程序机器级别,传统机器语言级别,操作系统级别,汇编语言级别,高级应用语言级别,应用语言级别。(如下图)
在这里插入图片描述
第一层是微程序机器级别(微指令)就是为指令系统,这里是由固件和硬件完成的微指令解释,如果在微程序机器级别实现的话叫做仿真,可以定义出多种指令系统。

第二层是传统机器语言(机器指令),机器指令就是在这一层实现。但是不是所有的计算机都有第一层的,直接就是第二层,比如RISC结构就是采用这种实现方法,这样的好处是速度快,这里仍然是属于物理机的范畴,因为实现机器语言的解释需要到固件和硬件。

第三级就是操作系统级别(机器指令和系统调用),到了这里就是出现了操作系统,也就说出现了虚拟机,在这里仍然可以对物理机进行调用。这里的机器语言分为两个部分,一个是传统的机器指令,另一部分是操作系统级指令,传统的机器指令是用于解释下一层(汇编层)的指令的。而操作系统级指令是指:对于像读写文件,打开/关闭文件诸如此类的系统接口(系统调用)。

第四级是汇编语言级别(汇编指令),这里是介于机器语言和高级语言的一个缓冲区,不一定所有的高级语言都编译为汇编,有的直接就编译为机器语言。汇编指令会编译为第二层和第三层的机器语言来交给机器执行。

第五级是高级语言(自然语言),这里就是我们日常用的像C++,Python,Java之类的,假如我们是执行的时候(一行行执行)才转为机器语言和汇编语言的那叫:解释。假如我们是提前转化好的,那叫编译,解释的好处是占用的存储空间小,而编译的好处是速度快。

第六层是应用语言,就是我们常用的那些SQL语言了,专门用于解决某些问题而设立的。

这六个级别,高一级的会把自己的语言解释或者编译为比自己低级的语言执行。

虚拟机大部分是由软件实现的,物理机是一定由固件/硬件实现的,虚拟机的有些操作也可以由固件/硬件实现,最典型的例子就是智能手机上面的摄像头。

固件是有软件功能的硬件,比如我们把软件固化到ROM里面,固件肯定会比纯硬件实现慢,但是会更加灵活(毕竟像ROM是可以擦除修改的,但纯硬件造好了就改不得了)。

系统结构的分类

对系统结构进行分类最常用的是Flynn分类法。
根据Flynn分类法,在系统结构里面大家使用的 ”通货“ 分为三类:【IS】指令流,【DS】数据流,【CS】控制流。控制流可以理解为是对部件的控制指令之类的。

而部件分为:【CU】控制部件,【PU】处理部件,【MM】存储部件。

根据数据流和指令流的关系分为四种,SISD,SIMD,MIMD,MISD。

区分的时候关注两件事:出现多个PU-MM组合那就是MD,出现多个CU-PU组合那就是MI。
在这里插入图片描述
冯诺依曼计算机是SISD的计算机。

系统结构设计的定量原理

这里介绍的是我们日后研究系统设计的一些法则性的东西,我们关注的是定量计算。

经常性事件
做优化需要优先考虑经常发生的事情,比如说,溢出和不溢出,那不溢出肯定是经常发生的,所以我们尽量优化不溢出的情况,

Amdahl定律
把优化权重考虑进来是amdahl定律的核心。关注两个参数:【Fe】可改进比,【Se】加速比。
F e = 部 件 的 执 行 时 间 总 执 行 时 间 Fe=\frac{部件的执行时间}{总执行时间} Fe=
S e = 部 件 改 进 前 耗 时 部 件 改 进 后 耗 时 Se=\frac{部件改进前耗时}{部件改进后耗时} Se=
系统性能能提高的倍数:
S = T o l d T n e w = 1 ( 1 − F e ) + F e S e S=\frac{T_{old}}{T_{new}}=\frac{1}{(1-Fe)+\frac{Fe}{Se}} S=TnewTold=(1Fe)+SeFe1

这里同时揭示了一个事实,当 S e → ∞ Se\rightarrow \infty Se S → 1 1 − F e S\rightarrow\frac{1}{1-Fe} S1Fe1,我们对部件改进的越多,得到的总体性能提升就会越小。

CPU性能公式

  • IC:程序的指令数量
  • CPI:每条指令需要的时钟周期数量

C P I = 程 序 耗 费 时 钟 周 期 数 I C CPI=\frac{程序耗费时钟周期数}{IC} CPI=IC
C P U 时 间 = 程 序 耗 费 时 钟 周 期 数 ∗ 时 钟 周 期 CPU时间=程序耗费时钟周期数*时钟周期 CPU=

程序局部性原理
局部性分为时间局部性和空间局部性,时间局部性的意思是当前用到的信息,推理可能是之后也用到的;空间局部性的意思是用到了当前区域,推理那可能附近的区域也会用到。

系统结构设计的任务

构造新的计算机系统结构需要考虑设计的结构是面向专门领域还是面向通用处理的;考虑使用什么标准,所谓标准就是像I/O总线有PCI,VME,SCSI标准,浮点数标准有IEEE,DEC,IBM;考虑在不同级别使用软件还是硬件实现功能。

设计系统分为从上而下设计,从下而上设计,以及从中间设计,当前,前两种已经淘汰了,从上而下设计就是先设计应用领域语言,再逐层下来,这样设计的系统结构移植性和兼容性好,从下而上设计的速度快,目前折中采用从中间开始设计(操作系统为虚拟机边界)
在这里插入图片描述

系统结构性能测评标准

我们经常说谁比谁快,这个快到底怎样衡量呢?我们可以让两台计算机执行同一个任务,谁先完成谁就快的方法来比较,单单一个任务不能说明什么问题,还有,怎样选择有代表性的任务测评出来的结果才中肯,这就是性能测试专业需要考虑的范畴,当前最常见的测评套件是SPEC程序(但是是基于UNIX的)。研究测评,我们从两个角度考虑,第一个,单个比赛的结果的评比方法,第二个,多个比赛结果一起评比方法。(就好比运动会单个比赛和班级总成绩)

先来看单个比赛的评比方法:

执行时间和吞吐率
执行时间好理解,不多解释,吞吐率是(完成任务的数量 / 所有任务的数量)。

  • 时间角度标准:执行时间
  • 空间角度标准:吞吐率

再来看整合多个比赛的评比方法:

调和平均,加权几何平均
调和平均的意思是把多个比赛结果的工作负担作为权重,计算权重和平均。
∑ ( w i R i ) n \frac{\sum(w_iR_i)}{n} n(wiRi)
几何平均的意思是把多个比赛结果的工作负担作为权重,计算权重积平均。
∏ ( w i R i ) n \sqrt[n]{\prod(w_iR_i)} n(wiRi)

其他概念补充

冯诺伊曼计算机
冯诺依曼计算机的特点:以运算器作为中心,SISD计算机,指令和数据同等地位,存储器按地址访问,指令有操作码和地址码,采用二进制运算。
在这里插入图片描述
模拟和仿真
模拟的意思在当前计算机是用软件方法模拟一个计算机的指令系统,用解释的方式实现,最常见的应用是虚拟机,这是指我们VMware,VirtualBox那种虚拟机,俗称 “沙盒” ,但速度很慢的。

仿真的意思是用当前计算机的微程序去解释另一台计算机的指令系统,这叫做仿真,我们之前做的那种Android x86系统就是仿真。

在这里插入图片描述
并行
并行的意思是在一段时间内完成多个任务。我们最开始研究是指令级并行,当多核计算机出现之后,大家开始研究线程并行,进程并行,任务并行,到现在的分布式计算,属于多机并行,多机群并行。

透明
意思是不可见的意思,当某种程序员设计的层次对更底部的层是不可见的时候,我们叫那些部件对于程序员透明。比如说:虚存器对于系统程序员不透明,对于应用程序员透明。说白了就是没有权限的意思。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值