计算机组成原理——计算机系统概论

文章阐述了计算机系统从高级语言到机器语言的多级层次结构,包括虚拟机器M4至M0的角色。讨论了编译与解释的区别,以及计算机组成与体系结构的不同。此外,还介绍了冯诺依曼计算机的特点,软件分类,硬件结构,以及计算机执行指令和程序的过程。
摘要由CSDN通过智能技术生成

多级层次结构的计算机系统 及 编译和解释的概念

对于一个实际的机器,我们可以将这个整体的指令执行过程看作由多个虚拟机器形成的流水线式的工作过程:

Created with Raphaël 2.3.0 虛拟机器M4(高级语言机器) 虚拟机器M3(汇编语言机器) 虚拟机器M2(操作系统机器) 传统机器M1(机器语言机器) 微程序机器M0(微指令系统)
  • 软件部分
    • 虛拟机器M4(高级语言机器)负责把高级语言的代码翻译成汇编语言程序
    • 虚拟机器M3(汇编语言机器)用汇编程序进一步将代码翻译成机器语言程序
    • 虚拟机器M2(操作系统机器)用机器语言解释操作系统
  • 硬件部分
    • 传统机器M1(机器语言机器)用微程序解释机器指令
    • 微程序机器M0(微指令系统)使用硬件直接执行微指令

翻译程序
将高级语言程序翻译为机器语言程序的软件称为翻译程序,有两种,一种为编译程序,一种为解释程序(语言本身是没有解释,编译之分的,任何一种语言既可以解释执行也可以编译执行,我们常说C语言是编译型的语言,是因为对C语言来说,编译是常用的执行方式)

编译
编译程序是将用户编写的高级语言程序(源程序)的全部语句一次全部翻译成机器语言程序,然后在执行机器语言程序,于是,只要源程序不变,就无需再次进行翻译工作

优点:翻译与执行是完全分开的,编译以后的机器语言,可以脱离其语言环境独立运行,执行效率极高
缺点:由于程序一旦需要修改必须先修改源代码,然后重新编译,生成新的目标文件才能开始运行,所以开发效率较低

解释
解释程序是将源程序的一条语句翻译成对应于机器语言的一条语句,并且立即执行这条语句,接着翻译源程序的下一条语句,并执行这条语句,如此反复,直至完成源程序的全部翻译工作,特点是翻译一次执行一次,即使下一次重复执行该语句,也必须重新进行翻译工作

优点:解释型语言针对不同的平台会有不同的解释器,跨平台性好;如果有错误,直接修改就可以了,改完直接可以运行,即遇到问题只需要现场解决即可,不需要重新把原来经历过的流程再重新经历一遍
缺点:边执行边准备,执行效率较低

"计算机组成"和"计算机体系结构"两个概念的辨别

“计算机组成"对应的是一些较为具体的东西,计算机组成是为了实现计算机体系结构所体现的属性而服务的,包含了许多对于程序员来说是透明的硬件细节,计算机组成倾向于解决"一个机器如何具体实现某一个功能”

"计算机体系结构"对应的是一些比较抽象概念,为能够被机器语言程序员所见到的计算机系统的属性,即概念型的结构和功能特性,由于计算机系统具有多级层次结构,在不同层次上编程的程序员所看到的计算机属性是各不相同的,计算机体系结构定义了软硬件的交界面,计算机体系结构倾向于解决"一个机器是否具有某一种功能"的问题

虽然计算机的组成在不断改变,但是计算机体系结构基本是变动不大的

计算机系统的基本构成

一台完整的计算机必须由软件和硬件两部分构成,其中硬件是基础,软件是灵魂,二者缺一不可。通常将这种既包括硬件,又包括软件的"完整计算机"称为计算机系统

软件分类

  • 系统软件:是由设计者提供给用户的、可以充分发挥计算机效能的一系列程序,用来管理整个计算机系统,比如语言处理程序、操作系统、服务性程序
    • 操作系统是系统软件的核心,其主要功能是对系统的软硬件资源进行合理的管理
    • 程序设计语言是用于编写程序的语言,是人和计算机交换信息所用的工具,通常分为机器语言、汇编语言、高级语言三类。语言处理程序是为用户设计的编程服务软件,其作用是将高级语言源程序翻译成计算机考研失败的目标程序,一般由汇编程序、解释程序、编译程序组成
  • 应用软件:是用户利用计算机提供的系统软件,按照任务的实际需要编制而成的各种程序。应用程序考研安装功能组成不同的程序包,或称为工具包,用于减少重复编程工作。应用软件包括工程计算软件、数据处理软件、过程控制软件、辅助设计软件等

硬件结构

  • 主机
    • 内存:存储数据和程序,可以直接和CPU交换信息
    • CPU
      • 运算器:完成算术运算和逻辑运算,并将运算的中间结果暂存于运算器内部
      • 控制器:控制、指挥程序和数据的输入、运行以及处理运算结果,五大部件在控制器的统一指挥下有条不紊地工作
  • I/O设备(外部设备)
    • 输入设备:将人们熟悉的信息形式转化为机器能识别的信息形式,常见的有键盘、鼠标等
    • 输出设备:将机器运算结果转化为人们熟悉的信息形式,如打印机输出、显示器输出等

冯诺依曼计算机的特点

  • 计算机由运算器、存储器、控制器、输入设备、输出设备五大部件构成
  • 指令和数据同等地位存储于存储器内(所以仅仅看内存空间,是无法对二者进行区分的,只有在程序运行到一定步骤,取出该指令或者是数据的时候,才知道该二进制数据为指令还是数据),皆可按址寻访
  • 指令和数据都是使用二进制进行表示的
  • 指令由操作码和地址码组成,操作码用来表示操作的性质(比如取数、存数、四则运算、停机、打印等),地址码用来表示操作数在存储器中的位置。下面展示了一些操作码以及对应的性质,可以进行一个直观的了解
  • 指令在存储器中按址顺序进行存放,通常指令是顺序执行的(即不需要使用像操作数那样的地址码进行存储器中位置的定位),但是在特定情况下,是可以根据运算结果或者根据设定的条件改变指令的执行顺序的
  • 计算机以运算器为中心(而现代计算机结构是以存储器为中心的),输入输出设备于存储器时间的数据传输通过运算器完成

使用计算机解决问题的步骤

  • 上机准备(人工完成)
    • 建立数学模型:将一个抽象的问题转化为一个通过数学计算解决的数学问题
    • 确定计算方法:将数学问题进一步进行简化,得到一个简单(简单指计算机可以使用四则运算进行计算)的数学表达式
    • 编制解题程序:程序是适合于计算机运算的全部步骤,编制解题程序就将运算步骤用一一对应的机器指令进行描述,简单来说就是教计算机一步步完成数学计算
  • 上机运行(机器完成)

计算机五大部件的基本介绍

主存储器/内存

又称为内存,简称为主存,包括存储体M及各种逻辑部件、控制电路等

基本构成

  • 存储体:如果将一个存储体看成一栋大楼,则存储单元可以看成这栋大楼里面的房间,存储元(又称为存储基元或者存储元件)可以看作床位,而01二进制代码标识床位是否有人
    • 存储单元:为存储数据的具体单位
      • 地址号:指对每一个存储单元赋予的一个编号,如果使用 X 表示某存储单元的地址,则该存储单元的内容可以使用 (X) 进行表示,如果 X 存储单元中存放着 Y,则有 (X) = Y,假如 Y 也是一个存储单元地址,则 Y 地址对应的存储单元的内容可以使用 (Y) ,或者使用 ((X)) 表示
      • 存储字:一个存储单元可以存储一串二进制代码,这串二进制代码为一个存储字,一个存储字的含义可以是多样的,可以为一个二进制数,可以为一串字符、可以为一条指令…
      • 存储字长:即存储字的二进制位数,早期计算机的存储字长 等于 指令字长 等于 数据字长,现在的计算机由于要求指令字长和数据字长皆要可变,于是字长不以存储字长为基准,取而代之的是"字节",一个字节被规定为8位二进制代码,于是现在的计算机的存储字长、指令字长、数据字长可以各不相同,但是都必须为字节的整数倍
  • 寄存器MAR和MDR:现在MAR和MDR都集成在了CPU芯片中
    • 存储器地址寄存器MAR:用来存放存储单元的地址(就是从PC那里得到的地址),所以其位数由存储单元的个数决定
    • 存储器数据寄存器MDR:用来存放代码(这个代码可能是从存储单元中取出的,也可能是要放入存储单元的),所以其位数由存储字长决定

主存工作方式

按存储单元的地址号实现对存储字各个二进制位的"存"和"取",为一种按地址存取的方式,即按地址访问存储器(简称访存)

运算器

不同的机器,运算器的结构也不尽相同,在设计过程中要根据具体需要进行设计
计算机的除法是通过减法和移位的方式组合实现的
计算机的乘法是通过加法和移位的方式组合实现的

基本构成

  • 算术逻辑单元(ALU):可以进行加、减、乘、除算术运算和与、或
    非、异或等逻辑运算(比较低档的CPU不能实现乘除运算,此时可以使用程序来实现该功能)。通常为一个组合电路,而组合电路的特点是如果输入撤销,输出就会相应被撤销,所以为了实现正常的运算功能,配置了三个基本的寄存器(即累加器、乘商寄存器、操作数寄存器),对数据进行保存,并且考虑到乘法的运算结果会超出原来ACC的存储范围,于是将结果的高位和低位分别存放于ACC和MQ两个寄存器中
  • 累加器(ACC):许多指令的执行过程以累加器为中心。往往在运算指令执行之前,累加器中存放一个操作数;在指令执行以后,运算结果也保存在累加器中
  • 乘商寄存器(MQ)
  • 操作数寄存器(X)
控制器

完成一条指令所要经历三个阶段

  • 取指:从程序计数器中得到需执行的指令的地址,从存储器取出一条指令
  • 分析:把指令的操作码部分交给控制单元,对指令进行分析,指出该指令要完成的操作,并按照寻址特征指明操作数的地址
  • 执行:根据操作数所在地址和指令的操作码控制相应的部件完成操作

基本构成

  • 程序计数器(PC):也被称为程序指针,存放当前需要执行的指令所在地址,与主存的MAR直接有一条直接通路,具有自动加一的功能,即可以自动形成下一条指令的存储单元地址(因为程序一般存放在内存的一个连续的区域中)。特别地,如果PC接收到一个转移指令,PC中存储的地址就会立即进行改变,使得存储器提供一个新的指令执行
  • 指令寄存器(IR):存放当前需要执行的指令,内容来自主存的MDR
  • 控制单元(CU):通过要需要执行的指令的操作码部分,进行指令分析,发送各种微操作命令序列,用来控制所有被控对象
I/O设备

基本构成

I/O设备也被称为外部设备或者外围设备(简称外设),包括各种I/O设备和相应接口。由于各种外设的工作速度、驱动方式差别很大,无法与CPU直接匹配,所以每一种I/O设备都通过I/O接口与主机联系(由CU控制),通过I/O接口电路实现信号变化、数据缓冲、与CPU联络等工作。标准输入设备和标准输出设备一般是指键盘和显示屏,二者合称为控制台

主机完成一条指令的过程

分析计算机完成一条"取数指令"过程

1.设控制器中的PC保存了"取数指令"的内存地址,于是PC将该地址交给主存储器的MAR
2.PC自加一,形成下一条指令的地址(为取出下一个指令做准备)
3.MAR将地址交给主存储器的存储体,存储器经过译码,找到相应单元
4.CPU发送"读"命令
5.存储体取出相应的"取数指令",通过数据总线交给主存储器的MDR
6.MDR对"取数指令"进行暂存
7.MDR将"取数指令"交给控制器中用来存储指令的指令寄存器IR
8.IR将得到的"取数指令"中的操作码交由CU分析
9.CU发送控制信号,IR将"取数指令"中的地址码交给MAR
10.MAR将地址交给主存储器的存储体,存储体取出相应的操作数交给MDR
11.MDR将该操作数交给ACC

分析计算机完成一条"存数指令"过程

1.控制器中的PC保存了"存数指令"的内存地址,于是PC将地址交给主存储器的MAR
2.PC自加一,形成下一条指令的地址(为取出下一个指令做准备)
3.MAR将地址交给了主存储器的存储体,存储器经过译码,找到相应单元
4.CPU发送"写"命令
5.存储体取出相应的"存数指令",通过数据总线交给主存储器的MDR
6.MDR对"存数指令"进行暂存
7.MDR将"存数指令"交给控制器中用来存储指令的指令寄存器IR
8.IR将得到的"存数指令"中的操作码交由CU分析
6.CU发送控制信号,IR将"存数指令"中的地址码交给MAR
7.MAR将地址交给了主存储器的存储体,告诉存储体该地址处将要存放数据
8.ACC将数据交给主存储器的MDR,MDR将该数据存入存储体

两个分析过程,我使用了三种颜色标识了完成一个指令必须要经历的__取指__、分析、执行的三个阶段

计算机完成一个程序的过程

1.将程序通过输入设备送入计算机中
2.将程序的首地址交给PC,进行地址的初始化
3.程序运行,不断进行指令执行的三阶段,直到所有的指令执行完毕
4.停机(其实停机也是一个指令,需要经过指令执行的三阶段)

计算机硬件的主要技术指标

  • 机器字长:指CPU一次能处理数据的位数,通常与CPU的寄存器位数有关(一般相等),字长越长,数的表示范围越大,精度越高,由于它会直接影响ALU、总线、存储字长的位数,所以机器字长的确定也不能单单从数的精度和数的表示范围来考虑。比如两个8位的二进制数进行加法运算,结果为一个8为的二进制数,此时机器字长为8位。目前计算机从8位、16位、32位、64位各个档次都有,都在发挥着各种不同的作用

  • 存储容量:现代计算机中常使用字节数来描述容量的大小,存储器容量越大,存放的信息就越多,解决复杂问题的能力就越强

    • 主存容量:即一个主存储器所能存储的最大信息容量,计算公式为存储单元个数乘以存储字长,MAR的位数反映了主存的存储单元个数,MDR反映了主存的存储字长

    • 辅存容量:通常使用字节数来进行表示

    • 基本的容量单位换算

      • 根据(这里的数字仅仅就是一种简写的形式而已,就像10000我们可以使用10^4来进行简写而已,还没有赋予每一个数据代表的现实含义)
        • 1K=1024个
        • 1M=1024K
        • 1G=1024M
        • 1T=1024G
        • 1P=1024T
      • 得到(对于上面提到的数字简写,我们对1这个数字赋予了现实含义"一个字节",于是就有了下面这个关于"字节"的单位换算;要对是否对“1”进行了赋予含义进行判别,像在表示容量的时候,比如1K X 8位,其中的"1K"仅仅表示2^10个,并没有每一个存储单元的存储字长一定为一个字节的这一层意思,这个存储字长具体是后面的"8位"进行标识的)
        • 1字节(Byte)=8位(bit)
        • 1KB( Kilobyte,千字节)=1024B
        • 1MB( Megabyte,兆字节)=1024KB
        • 1GB( Gigabyte,吉字节,千兆)=1024MB
        • 1TB( Trillionbyte,万亿字节,太字节)=1024GB
        • 1PB( Petabyte,千万亿字节,拍字节)=1024TB
        • 1字(Word)= 2字节(Byte)
        • 1页 = 256字节
        • 1节 = 16字节
  • 运算速度:运算速度和许多因素有关,早期使用完成一次加法或乘法运算所需要的时间来衡量运算速度,即普通法(这种方法显然不合理),以下列出了几种衡量运算速度的指标

    • 主频:即CPU的时钟频率(以MHz或者GHz为单位),计算机的操作在时钟信号的控制下分步执行,每个时钟信号周期完成一步操作,时钟频率的高低在很大程度上反映了CPU速度的快慢,主频越高,表示运算速度越快
    • 核数以及每一个核支持的线程数:CPU的核数是指硬件上有多个核,线程数可以模拟多个核的功能。线程越多,就越有利于同时运行多个程序,因为线程数等于CPU在某一时刻可以同时并行处理的任务数
    • 吉普森法:计算计算机器指令集中每一种指令的执行时间和该种指令占全部操作的百分比数乘积之和
      T M = ∑ i = 1 n ( f i t i ) \Tau_{M}=\sum_{\mathclap{ i=1}} ^n(f_{i}t_{i}) TM=i=1n(fiti)
    • CPI:每一条指令执行所需的时钟周期
    • IPC:一个时钟周期内所能够执行的指令数
    • MIPS:每秒执行多少百万条指令
    • FLOPS:浮点运算次数每秒

各个章节的逻辑梳理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值