• 计算机组成原理——计算机系统概述(课程笔记)


    说明

    1. 博客作为笔记备份,不定时更新
    2. 参考内容为《计算机组成原理(第3版)》唐朔飞 高等教育出版社;王道考研《计算机组成原理考研复习指导2023》
    3. 文中的例题摘自王道考研《计算机组成原理考研复习指导2023》,大多是我个人认为较为典型的题目以及错题的部分整理

    计算机系统概述

    1.计算机发展历程

    硬件发展

    计算机的发展

    • 第一代计算机 1946~1957 电子管时代
      • 逻辑元件采用电子管
      • 使用机器语言进行编程
      • 主存用延迟线或磁鼓存储信息,容量极小
      • 体积庞大,成本高
      • 运算速度较低,一般只有几千次到几万次每秒
    • 第二代计算机 1958~1964 晶体管时代
      • 逻辑元件采用晶体管
      • 运算速度提高到几万次到几十万次每秒
      • 主存使用磁芯存储器
      • 开始出现高级语言及其编译程序,有了操作系统的雏形
    • 第三代计算机 1965~1971 中小规模集成电路时代
      • 逻辑元件采用中小规模集成电路
      • 半导体存储器开始取代磁芯存储器
      • 高级语言发展迅速,操作系统进一步发展,开始有了分时操作系统
    • 第四代计算机 1972年至今 超大规模集成电路时代
      • 逻辑元件采用大规模集成电路和超大规模集成电路,产生了微处理器
      • 使用并行、流水线、高速缓存器、虚拟存储器等概念

    计算机元件的发展

    • 摩尔定律
      • 当价格不变时,集成电路上可容纳的晶体管的个数,约每隔18个月会增加一倍,性能也将提升一倍
    • 半导体存储芯片的发展
    • 微处理器的发展
      • 1971年 Intel公司开发第一个微处理器Intel 4004
      • Intel 8008(8位)
      • Intel 8086(16位)
      • Intel 80386(32位)
      • Pentium(32位)
      • Pentium III(64位)
      • ······

    软件发展

    • 计算机语言的发展
      • 面向机器的机器语言和汇编语言
      • 面向问题的高级语言
        • 科学计算和工程计算的FORTRAN
        • 结构化程序设计的PASCAL
        • 面向对象的C++
        • 适应网络环境的JAVA
    • 操作系统的发展
      • Windows
      • Linux
      • UNIX

    2.计算机系统层次结构

    2.1 计算机系统的组成

    • 硬件系统和软件系统共同构成一个完整的计算机系统
      • 硬件:有形的物理的设备
      • 软件:在硬件上运行的程序和文档

    2.2 计算机硬件

    • 冯·诺依曼机——“存储程序”的思想
      • 采用“存储程序”的工作方式
      • 计算机硬件系统由运算器、存储器、控制器、输入/输出设备5部分组成
      • 指令和数据以同等地位存储在存储器中,形式上没有区别(但计算机应能够区分它们)
      • 指令和数据均以二进制代码表示,指令由操作码和地址码组成
      • 注:存储程序的基本思想是,将事先编制好的程序和原始数据送入主存后才能执行,一旦程序被启动执行,就无需操作人员的干预,计算机会自动逐条执行指令,直至程序结束 ^f7d089
    • 计算机功能部件
      • 输入设备
        • 将程序和数据以机器所能识别和接受的信息形式输入计算机
      • 输出设备
        • 将计算机处理的结果以人们所能接受的形式或其他系统所要求的信息形式输出
      • 存储器 [[存储系统]]
        • 分为主存储器([[存储系统#2 主存储器]])和辅助存储器([[存储系统#3 外部存储器]])
        • 主存储器的工作方式是按存储单元的地址进行存取,称为按地址存取方式
      • 运算器
        • 是计算机的执行部件,用于进行算术运算和逻辑运算
        • 运算器的核心部件是ALU
        • 运算器中包含若干通用寄存器,如累加器ACC、乘商寄存器MQ、操作数寄存器X、变址寄存器IX、基址寄存器BR等,其中前三个是必须的
        • 运算器中的程序状态寄存器PSW用于存放ALU运算得到的一些标志信息或处理机的状态信息
      • 控制器
        • 控制器是计算机的指挥中心,指挥各个部件自动协调的进行工作
        • 控制器由程序计数器PC、指令寄存器IR、控制单元CU组成
        • PC存放当前欲执行指令的地址,可自动加一形成下一条指令的地址,它与主存的MAR之间有一条直接通路
        • IR存放当前的指令,其内容来自于MDR。指令中的操作码送到CU,用来分析指令并发出各种微操作命令序列;地址码送到MAR,用于取操作数
      • 一般将运算器和控制器集成在一个芯片上,称为CPU。
      • CPU和主存储器共同组成主机

    2.3 计算机软件

    系统软件和应用软件

    • 系统软件是一组保证计算机系统高效、正确运行的基础软件,通常作为系统资源提供给用户使用
      • 操作系统OS
      • 数据库管理系统DBMS
      • 语言处理程序
      • 分布式软件系统
      • 网络软件系统
      • 标准库程序
      • 服务性程序
    • 应用软件是指用户为了解决某个应用领域中的各类问题而编制的程序
      • 各种科学计算类程序
      • 工程设计类程序
      • 数据统计与处理程序

    三个级别的语言

    • 机器语言
      • 二进制代码语言,需要编程人员记忆每条指令的二进制代码
      • 是计算机唯一可直接识别和执行的语言
    • 汇编语言
      • 用助记符代替二进制的指令代码
      • 使用汇编语言编辑的程序,必须经过汇编程序(系统软件)的翻译,将其转换为机器语言程序后,才能在计算机硬件系统上运行
    • 高级语言
      • 高级语言要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序
    • 翻译程序有三类 ^e47077
      • 汇编程序(汇编器):将汇编语言程序翻译成机器语言程序
      • 解释程序(解释器):将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行
      • 编译程序(编译器):将高级语言程序翻译成汇编语言或机器语言程序

    软件和硬件的逻辑功能等价性

    • 对某一功能来说,既可以由硬件实现,又可以由软件实现,就称它们在功能上是等价的,这一等价性被称为软、硬件逻辑功能的等价性
    • 软件和硬件的逻辑功能等价性是计算机系统设计的重要依据,软件和硬件的功能分配及其界面的确定是计算机系统结构研究的重要内容

    2.4 计算机系统的层次结构

    在这里插入图片描述

    • 计算机系统的多级层次结构,是根据从各种角度所看到的机器之间的有机联系,来分清彼此之间的界面,明确各自的功能,以便构成合理、高效的计算机系统
    • 第一级——微程序机器层:一个实在的硬件层,它由机器硬件直接执行微指令
    • 第二级——传统机器语言层:一个实际的机器层,由微程序解释机器指令系统
    • 第三级——操作系统层:由操作系统程序实现。操作系统程序是由机器指令和广义指令组成的,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,所以这一层也称混合层
    • 第四级——汇编语言层:为用户提供一种符号化的语言,由汇编程序支持和执行
    • 第五级——高级语言层:面向用户,为方便用户编写应用程序而设置的,由各种高级语言编译程序支持和执行
    • 说明
      • 高级语言层上面还可以有应用程序层
      • 纯硬件系统称为裸机;3~5层称为虚拟机,就是软件实现的机器,虚拟机只对该层的观察者存在(类似于计算机网络的分层)
      • 软硬件的交界面的划分不是绝对的

    2.5 计算机系统的工作原理

    “存储程序”的工作方式

    每条指令的执行过程:( P 6 图 1.4 P_{6}图1.4 P61.4

    • 从主存取指令
    • 对指令进行译码
    • 计算下一条指令地址
    • 取操作数执行
    • 将结果送回存储器

    从源程序到可执行文件

    以UNIX中的GCC编译器程序为例:
    在这里插入图片描述

    • 预处理阶段
      • 预处理器cpp对源程序中以字符#开头的命令进行处理
    • 编译阶段
      • 编译器ccl对预处理后的源程序进行编译,生成一个汇编语言源程序
    • 汇编阶段
      • 汇编器as将hello.s翻译成机器语言指令,把这些指令打包成一个可重定位目标文件hello.o,它是一种二进制文件
    • 链接阶段
      • 链接器ld将多个可重定位目标文件和标准库函数printf所在的可重定位目标模块printf.o合并,生成可执行文件hello

    程序执行过程

    • 程序的执行过程就是数据在CPU、主存储器和I/O设备之间流动的过程,所有的数据的流动都是通过总线、I/O接口等进行的
    • 在程序的执行过程中,必须依靠操作系统的支持

    指令执行过程

    • 取指: P C → M A R → M → M D R → I R PC\rightarrow MAR\rightarrow M\rightarrow MDR\rightarrow IR PCMARMMDRIR
    • 分析指令: O P ( I R ) → C U OP(IR)\rightarrow CU OP(IR)CU
    • 执行指令: A d ( I R ) → M A R → M → M D R → A C C Ad(IR)\rightarrow MAR\rightarrow M\rightarrow MDR\rightarrow ACC Ad(IR)MARMMDRACC

    2.6 例题

    不同类型软件的区分

    1. ( P 10 P_{10} P10)下列不属于系统软件的是()
      A.数据库系统 B.操作系统 C.编译程序 D.以上都属于系统程序
      解答:数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员组成,其中数据库管理系统是系统程序

    语言的转化

    1. ( 2016 2016 2016)将高级语言源程序转化为机器级目标代码文件的程序是()
      A. 汇编程序 B. 链接程序 C. 编译程序 D. 解释程序
      解答:翻译程序是只把高级语言源程序转换成机器语言程序(目标代码)的软件,有两种:(1)编译程序,将高级语言源程序一次全部翻译成目标程序;(2)解释程序,将源程序的一条语句翻译成对应的机器目标代码后立即执行,翻译一句执行一句,不会生成目标程序。汇编程序也是一种翻译程序,它将汇编语言源程序翻译为机器语言程序

    3.计算机性能指标

    字长

    • 字长又称机器字长,是计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数,通常与CPU的寄存器位数、加法器有关(一般等于内部寄存器的大小)
    • 机器字长 & 指令字长 & 存储字长
      • 机器字长
        • 通常所说的16位或32位机器,16、32指字长(机器字长)
        • 机器字长通常指CPU内部用于整数运算的数据通路的宽度,因此字长等于CPU内部用于整数运算的运算器位数和通用寄存器的位数,它反映了计算机处理信息的能力
      • 指令字长
        • 一个指令字中包含的二进制代码位数
        • 一般取存储字长的整数倍。若指令字长等于存储字长的2倍,则需2个访存周期来取出一条指令;若指令字长等于存储字长,则取指周期等于机器周期
      • 存储字长
        • 一个存储单元存储的二进制代码位数

    数据通路带宽

    • 数据总线一次所能并行传送信息的位数
    • 各个子系统通过数据总线连接形成的数据传送路径称为数据通路

    主存容量

    • 主存储器所能存储信息的最大容量
    • MAR的位数反映存储单元的个数,反映可寻址范围的最大值(不一定是实际存储器的存储容量)

    运算速度

    • 吞吐量和响应时间
      • 吞吐量
        • 指系统在单位时间内处理请求的数量
        • 它取决于信息能多快的输入内存,CPU能多快的取指,数据能多快的从内存存取,以及所得的结果能多快的从内存送给一台外部设备
        • 因为几乎每一步都和主存有关,因此系统的吞吐率主要取决于主存的存取周期
      • 响应时间
        • 指用户向计算机发送一个请求,到系统对这个请求做出响应并获得所需结果的等待时间
        • 通常包括CPU时间(运行一个程序所花费的时间)和等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等的时间)
    • 主频(CPU时钟频率)和CPU时钟周期
      • CPU时钟周期
        • 是CPU中最小的时间单位,通常为节拍脉冲或T周期,即主频的倒数
        • 执行指令的每个动作至少需要1个时钟周期
      • 主频(CPU时钟频率)
        • 机器内部的时钟频率,是衡量机器速度的重要参数
        • 对于同一型号的计算机,主频越高,完成指令的一个执行步骤所需的时间越短,执行指令的速度越快
        • C P U 时 钟 周 期 = 1 主 频 CPU时钟周期=\cfrac{1}{主频} CPU=1,主频通常以赫兹Hz为单位,1Hz表示每秒一次
    • CPI clock cycle per instruction 执行一条指令所需的时钟周期数
      • 不同指令的时钟周期数可能不同,因此对于一个程序或一个机器来说,其CPI指该程序或该机器指令集中所有指令执行所需的平均时钟周期数
    • CPU执行时间
      • 运行一个程序花费的时间
      • C P U 执 行 时 间 = C P U 时 钟 周 期 数 主 频 = 指 令 条 数 × C P I 主 频 CPU执行时间=\cfrac{CPU时钟周期数}{主频}=\cfrac{指令条数\times CPI}{主频} CPU=CPU=×CPI
      • 上式表明,CPU的性能(CPU执行时间)取决于主频、CPI、指令条数,这三者是相互制约的
    • MIPS 每秒执行多少百万条指令
      • M I P S = 指 令 条 数 执 行 时 间 × 1 0 6 = 主 频 C P I × 1 0 6 MIPS=\cfrac{指令条数}{执行时间\times 10^6}=\cfrac{主频}{CPI\times 10^6} MIPS=×106=CPI×106
      • MIPS对不同机器进行性能比较是由缺陷的,因为不同机器的指令集不同,指令的功能也就不同;不同机器的CPI和时钟周期也不同,因而同一条指令在不同机器上的执行时间也不同
    • 关于浮点运算的指标
      • MFLOPS 每秒执行多少百万次浮点运算 M F L O P S = 浮 点 操 作 次 数 执 行 时 间 × 1 0 6 MFLOPS=\cfrac{浮点操作次数}{执行时间\times 10^6} MFLOPS=×106
      • GFLOPS
      • TFLOPS

    基准程序 Benchmark

    • 是专门用来进行性能评价的一组程序,能反映机器在运行实际负载时的性能,可通过在不同机器上运行相同的Benchmark来比较在不同机器上的运行时间
    • 不同场合应选用不同的基准程序

    几个专业术语

    • 系列机
      • 具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列
    • 兼容
      • 指软件或硬件的通用性
    • 软件可移植性
      • 指把使用在某个系列计算机中的软件直接或进行很少的修改,就能运行在另一个系列计算机中的可能性
    • 固件
      • 将程序固化在ROM中组成的部件
      • 是一种具有软件特性的硬件,吸收了软硬件各自的优点,执行速度高于软件,灵活性优于硬件

    例题

    1. P 16 P_{16} P16)在CPU的寄存器中,()对用户是完全透明的
      A. 程序计数器 B. 指令寄存器 C. 状态寄存器 D. 通用寄存器
      解答:汇编程序员可通过指定待执行指令的地址来设置PC的值;状态寄存器、通用寄存器只有为汇编程序员可见才能实现编程;IR、MAR、MDR是CPU的内部工作寄存器,对程序员不可见。选B
      错误原因:错选A,认为PC的值是自动加一的,以为它对程序员透明,忽略了汇编程序员可设定PC的值
    2. 计算机操作的最小单位时间是()
      A. 时钟周期 B. 指令周期 C.CPU周期 D.中断周期
      解答:易混淆的是A和C。时钟周期就是CPU时钟周期,是最基本的时间单位。CPU周期又称机器周期,它由多个时钟周期组成。选A
      错误原因:错选C,对概念理解不透彻
    3. 计算机中,CPU的CPI与下列()因素无关
      A. 时钟频率 B.系统结构 C. 指令集 D. 计算机组织
      解答:CPI:执行一条指令花费的时钟周期数,系统结构、指令集、计算机组织都会影响CPI;时钟频率会影响时钟周期的时间长度,但是不会影响执行指令花费的时钟周期
      错误原因:错选D
    4. 2010 2010 2010)下列选项中,能缩短程序执行时间的措施是()
      I. 提高CPU时钟频率 II.优化数据通路结构 III.对程序进行编译优化
      A. 仅I和II B.仅I 和III C.仅II 和III D. I、II、III
      解答:CPU时钟频率越高,完成指令的一个执行步骤所花时间越短,执行指令速度越快;数据通路的功能是实现CPU内部的运算器和寄存器及寄存器之间的数据交换,优化数据通路结构,可有效提高计算机系统的吞吐量,从而加快程序的执行;计算机程序需要先转化成机器指令序列才能最终得到执行,通过对程序进行编译优化可得到更优的指令序列,从而加快指令的执行。选D
      错误原因:错选D。本题和上一题类似,考察了有关程序执行时间的影响因素

    4. 小结 易混淆知识点

    翻译程序、解释程序、汇编程序、编译程序

    • 翻译程序有两种:编译程序和解释程序
    • 编译程序和汇编程序的区别
      • 若源语言是诸如C、C++、Java等高级语言,目标语言是诸如汇编语言或机器语言等低级语言,这样的翻译程序就是编译程序
      • 若源语言是汇编语言,目标语言是机器语言,这样的翻译程序称为汇编语言
      • 二者的主要区别在于源语言和目标语言

    计算机体系结构 VS 计算机组成

    • 计算机体系结构指机器语言或汇编语言程序员所能看见的传统机器的属性,包括指令集、数据类型、存储器寻址技术等,大多属于抽象的属性
    • 计算机组成是指如何实现计算机体系结构所体现的属性,它包含对许多程序员来说透明的硬件细节
    • 例如,指令系统属于结构的问题,但指令的实现:如何取指、分析指令、取操作数、如何运算等,这都属于组成的问题。即“组成”在于如何实现“结构”

    更新文档

    更新日期更新内容
  • 相关阅读:
    linux 安装操作 redis
    java PipedReader类、PipedWriter类
    C++网络编程之,客户连接服务器,并向服务器发信息,服务器接收信息,当输入End两者全关闭。如果两者需要相互收和发信息,需要掌握多线程。
    【数组】逐步求和得到正数的最小值
    QT几个小知识点总结
    14.FreeRTOS 消息缓存 Message Buffer
    mock+封装axios+vuex分发
    java毕业设计——基于java+jsp+Servlet的B2C网上拍卖系统设计与实现——网上拍卖系统
    Prompt 驱动架构设计:探索复杂 AIGC 应用的设计之道?
    Hadoop3.1.3 集群环境搭建
  • 原文地址:https://blog.csdn.net/qq_45800517/article/details/125422664