计算机组成原理:最详细笔记

前言

  • 个人觉得:《计算机组成原理》这门课,应该设置为大学公共必修课(起码理工科)!

  • 学这门课之前,小编在学习ARM架构,结果越看越迷糊,就果断转入这门课程的学习!

  • 免责声明:本文参考的文章有:《王道计算机组成原理》学习笔记总目录+思维导图;B站视频:2019 王道考研 计算机组成原理;配套教材是《2021年计算机组成原理考研复习指导(王道论坛版)》[如需要这本书,请自己想办法获取],还用了《2020版计算机组成原理·高分笔记·周伟主编》;如果您是考研党:请点击跳转知乎经验贴,了解408

  • 本文食用说明:对于考研学子,说真的,建议学完一遍计组,再做题,因为王道这本书里面习题编排的不是很严谨!(前面很多题目,到后面章节才可以找到答案!)。本文的章节序号完全按照《2021年计算机组成原理考研复习指导(王道论坛版)》记录的,与视频有点出入!

计算机组成原理比较经典的书籍有:

  • 唐朔飞的《计算机组成原理》、《计算机组成原理——学习指导与习题解答》
  • 自中英的《计算机组成原理》
  • 李春葆的《计算机组成原理联考辅导教程》

第一章 计算机系统概述

计算机组成原理:最详细笔记

2.现代计算机的组织结构

计算机组成原理:最详细笔记
五大部分:
  • 输入设备,是指将外部信息以计算机能读懂的方式输入进来,如键盘,鼠标等

  • 输出设备,就是将计算机处理的信息以人所能接受的方式输出出来,比如显示屏,打印机。

  • 存储器,存储器分为 主存储器(内存储器,CPU能直接访问)和 辅助存储器(外存储器,协助主存储器记忆更多的信息,辅助存储器的信息需要导入到主存储器中,才可以被CPU访问)。

    主存储器的工作方式是按存储单元的地址进行存取,这种存取方式称为按地址存取方式(相联存储器既可以既可以按照地址寻址,又可以按照内容寻址,为了与传统存储器区别,又称为内容寻址的存储器!)

    主存储器是由地址寄存器(MAR),数据寄存器(MDR),存储体,时序控制逻辑,地址寄存器存放访存地址,经过地址译码后找到所选的存储单元。数据寄存器,是存储器与其他部件的中介,用于暂存要从存储器读或写的信息。时序控制逻辑用于产生存储器操作所需的各种时序信号。在现代CPU,MAR和MDR是在CPU中的。

    计算机组成原理:最详细笔记
  • 控制器,控制器是计算机的指挥中心,有其指挥各部件自动协调第进行工作,现代计算机将运算器和控制器集成到一个芯片上,合成为中央处理器,简称CPU。有程序计数器(PC)、指令寄存器(IR)和控制单元(CU)。

    计算机组成原理:最详细笔记
    CPU和主存之间通过一组总线相连,总线中有地址、控制和数据3组信号线。MAR中的地址信息会直接送到地址线上,用于指向读/写操作的主存存储单元;控制线中有读/写信号线,指出数据是从CPU写入主存还是从主存读出到CPU,根据是读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上的数据接收到MDR中。

    1.2.3 计算机软件的分类

    1.系统软件和应用软件

    计算机软件,一般分为系统软件和应用软件

    • 系统软件包括 操作系统,数据库管理系统,语言处理系统(比如编译器),分布式软件系统,网络软件系统,标准库系统,服务性系统(比如连接程序)。

    • 应用软件包括各种科学计算类程序,工程设计类程序,数据统计与处理程序。

    注意:数据库管理系统和数据库系统是有区别的。数据库管理系统是系统软件。而数据库系统一般是由数据库,数据库管理系统,数据库管理员和应用系统构成。所以只能说它里面有系统软件,但并不能说它为系统软件。

    2.三个级别的语言

    • 1)机器语言。又称二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。
    • 2)汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为计算机的机器语言后,才能在计算机的硬件系统上执行。
    • 3)高级语言。高级语言(如C、C++、Java等)是为方便程序设计人员写出解决问题的处理方案和解题过程的程序。通常高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序。

    由高级语言转换到汇编语言的过程叫做编译,由汇编语言转换到机器语言的过程叫做汇编,边翻译边执行的叫做解析。

    机器语言是唯一可以控制cpu的语言,因为它的符号不利于人识别和书写,为了方便理解和记忆,将机器语言换一些通俗易懂的符号,这就变成了汇编语言。一般来说在在编译器中高级语言先转换为汇编在转换为机器语言,也有直接转换为机器语言的情况。

    机器语言是计算机唯一可以直接执行的语言,汇编语言用助记符编写,以便记忆。而正则语言是编译原理中符合正则文法的语言。

    解释程序的特点是翻译一句执行一句,边翻译边执行:由高级语言转化为汇编语言的过程称为编译,把汇编语言源程序翻译成机器语言程序的过程称为汇编。

    1.2.4 计算机的工作过程

    2.指令执行过程的描述(点击链接,视频20min处有详细讲解)

    计算机组成原理:最详细笔记
    计算机组成原理:最详细笔记
    计算机组成原理:最详细笔记
    计算机组成原理:最详细笔记
    上图是计算机的工作流程,首先PC将指令地址发送给MAR,MAR根据地址在存储体中找到指令数据存放在MDR中,之后MDR将指令存放在IR中,取指令结束,之后指令中的操作码进入CU中,地址码重复上述取指令步骤,将数据发送到ACC中,执行指令结束。注意区分指令和数据的依据:指令周期的不同阶段

    1.3 计算机性能指标

    计算机组成原理:最详细笔记
  • 运算速度
  • 吞吐量,指系统在单位时间内处理请求的数量 ;从用户观点看,它是评价计算机系统性能的综合参数!

    响应时间,指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结构的等待时间。

    CPU时钟周期。通常为节拍脉冲或T周期,即主频的倒数,它是CPU中最小的时间单位,每个动作至少需要1个时钟周期。

    主频(CPU时钟频率)。机器内部主时钟的频率,是衡量机器速度的重要参数。

    • CPU周期又称为机器周期,由多个时钟周期组成!
    • 指令周期>CPU周期>时钟周期

    CPI(Clock cycle Per Instruction),即执行一条指令所需的时钟周期数。

    CPU执行时间,指运行一个程序所花费的时间。
    CPU执行时间 = CPU时钟周期数/主频 = (指令条数xCPI)/主频
    CPU的性能取决于三个要素:主频、CPI 、指令条数

    IPS(Instructions Per Second) =主频/平均CPI,每秒执行多少指令

    MIPS(Million Instructions Per Second)=即每秒执行多少百万条指令。

    MFLOPS(Mega Floating-point Operations Per Second)=浮点操作次数/(执行时间x106),即每秒执行多少百万次浮点运算。

    GFLOPS(Giga Floating-point Operations Per Second)=浮点操作次数/(执行时间x109),即每秒执行多少十亿次浮点运算。

    TFLOPS(Tera Floating-point Operations Per Second)=浮点操作次数/(执行时间x1012),即每秒执行多少万亿次浮点运算。

    1.4本章开头提出的问题回答

    1) 计算机由哪几部分组成哪部分为中心/h3>
    • 1)计算机由哪几部分组成哪部分为中心br>
      计算机由运算器、控制器、存储器、输入设备及输出设备五大部分构成,现代计算机通常把运算器和控制器集成在一个芯片上,合称为中央处理器。
      而在微处理器面世之前(早期的冯·诺依曼机),运算器和控制器分离,而且存储器的容量很小,因此设计成以运算器为中心的结构,其他部件都通过运算器完成信息的传递。
      随着微电子技术的进步,同时计算机需要处理、加工的信息量也与日俱增,大量IO设备的速度和CPU的速度差距悬殊,因此以运算器为中心的结构不能满足计算机发展的要求。现代计算机已经发展为以存储器为中心,使IO操作尽可能地绕过CPU,直接在IO设备和存储器之间完成,以提高系统的整体运行效率。

    2) 主频高的CPU一定比主频低的CPU快吗什么/h3>
    • 2)主频高的CPU一定比主频低的CPU快吗什么br>
      衡量CPU运算速度的指标有很多,不能以单独的某个指标来判断CPU的好坏。CPU的主频,即CPU内核工作的时钟频率。CPU的主频表示CPU内数字脉冲信号振荡的速度,主频和实际的运算速度存在一定的关系,但目前还没有一个确定的公式能够定量两者的数值关系,因为CPU的运算速度还要看CPU的流水线的各方面的性能指标(架构、缓存、指令集、CPU的位数、 Cache大小等)。由于主频并不直接代表运算速度,因此在一定情况下很可能会出现主频较高的CPU实际运算速度较低的现象

    来看看小编的配置,感受一下,以后计算机组成原理中的Cache和主频等

    计算机组成原理:最详细笔记

    【复习提示】

    本章内容较为繁杂,由于计算机中数的表示和运算方法与人们日常生活中的表示和运算方法不同,因此理解也较为困难。纵观近几年的真题,不难发现 unsigned、shot、int、long、foat、 double等在C语言中的表示、运算、溢出判断、隐式类型转换、强制类型转换、IEEE754浮点数的表示,以及浮点数的运算,都是考研考查的重点,需要牢固掌握。

    在学习本章时,请读者思考以下问题:

    • 1)在计算机中,为什么要采用二进制来表示数据/li>
    • 2)计算机在字长足够的情况下能够精确地表示每个数吗不能,请举例说明。
    • 3)字长相同的情况下,浮点数和定点数的表示范围与精度有什么区别/li>
    • 4)用移码表示浮点数的阶码有什么好处/li>

    请读者在本章的学习过程中寻找答案,本章末尾会给出参考答案。

    2.1 数制与编码

    还是要系统学习一下,不然之前的0x1010还查了好久!

    2.1.1 进位计数制及其相互转化

    知识点回顾与重点考点(如果知道了,就不用看了)

    计算机组成原理:最详细笔记
    计算机组成原理:最详细笔记
    计算机组成原理:最详细笔记
    计算机组成原理:最详细笔记

知识回顾与重点考点

计算机组成原理:最详细笔记
计算机组成原理:最详细笔记

2.1.4 字符与字符串

计算机组成原理:最详细笔记
计算机组成原理:最详细笔记

字符串

计算机组成原理:最详细笔记

知识回顾与重要考点

计算机组成原理:最详细笔记

任意两个码字之间最少变化的二进制位数称为码距,码距大于等于2的数据校验码开始具有检错的能力。码距越大,检错、纠错能力越强。奇偶校验码的码距等于2,可以检测出一位错误(或奇数位错误),但不能确定出错的位置,也不能检测出偶数位错误;海明码的码距大于2,因此不仅可以发现错误,还能指出错误的位置。仅靠增加奇偶校验位的位数不能提高正确性,还要考虑码距。

具有检、纠错能力的数据校验码的实现原理:在编码中,除合法码字外,再加入一些非法码字,当某个合法码字出现错误时,就变为非法码字。合理安排非法码字的数量和编码规则就能达到纠错的目的。

1.奇偶校验码

原编码上加一个校验位,码距等于2!

计算机组成原理:最详细笔记
知识回顾与重要考点

计算机组成原理:最详细笔记
计算机组成原理:最详细笔记
计算机组成原理:最详细笔记
计算机组成原理:最详细笔记

3. 循环冗余校验(CRC)码

终于知道了《UVM实战》中的CRC校验是什么回事了!

计算机组成原理:最详细笔记
计算机组成原理:最详细笔记
计算机组成原理:最详细笔记

CRC校验码是可以纠错的,前面这个是因为信息位太长

计算机组成原理:最详细笔记

2.2 定点数的表示和运算

2.3 浮点数的表示与运算

2.4 算数逻辑单元(ALU)

2.5 本章开头提出的问题回答

1)在计算机中,为什么要采用二进制来表示数据/h3>
  • 1)在计算机中,为什么要采用二进制来表示数据br>
    从可行性来说,采用二进制,只有0和1两个状态,能够表示0、1两种状态的电子器件很多,如开关的接通和断开、晶体管的导通和截止、磁元件的正负剩磁、电位电平的高与低等,都可表示0、1两个数码。使用二进制,电子器件具有实现的可行性。
    从运算的简易性来说,二进制数的运算法则少,运算简单,使计算机运算器的硬件结构大大简化(十进制的乘法九九口诀表有55条公式,而二进制乘法只有4条规则)从逻辑上来说,由于二进制0和1正好和逻辑代数的假( false)和真(true)相对应,有逻辑代数的理论基础,用二进制表示二值逻辑很自然。

2)计算机在字长足够的情况下能够精确地表示每个数吗不能,请举例说明。

  • 2)计算机在字长足够的情况下能够精确地表示每个数吗不能,请举例说明。

    计算机采用二进制来表示数据,在字长足够时,可以表示任何一个整数。而二进制表示小数时只能够用1(2)的和的任意组合表示,即使字长很长,也不可能精确表示出所有小数,只能无限逼近。例如0.1就无法用二进制精确地表示。

3)字长相同的情况下,浮点数和定点数的表示范围与精度有什么区别/h3>
  • 3)字长相同的情况下,浮点数和定点数的表示范围与精度有什么区别br>
    字长相同时,浮点数取字长的一部分作为阶码,所以表示范围比定点数要大,而取一部分作为阶码也就代表着尾数部位的有效位数减少,而定点数字长的全部位都用来表示数值本身,精度要比同字长的浮点数更大。

4)用移码表示浮点数的阶码有什么好处/h3>
  • 4)用移码表示浮点数的阶码有什么好处br>
    移码的两个好处
    ①浮点数进行加减运算时,时常要比较阶码的大小,相对于原码和补码,移码比较大小更方便。
    ②检验移码的特殊值(0和max)时比较容易。阶码以移码编码时的特殊值如下。0:表示指数为负无穷大,相当于分数分母无穷大,整个数无穷接近0,在尾数也为0时可用来表示0:尾数不为零表示未正规化的数。max:表示指数正无穷大,若尾数为0,则表示浮点数超出表示范围(正负无穷大);尾数不为0,则表示浮点数运算错误

2.6 常见问题

1.如何表示一个数值数据算机中的数値数据都是二进制数吗/h3>
  • 1.如何表示一个数值数据算机中的数値数据都是二进制数吗br>
    在计算机内部,数值数据的表示方法有以下两大类。
    ①直接用二进制数表示。分为无符号数和有符号数,有符号数又分为定点数表示和浮点数表示。无符号数用来表示无符号整数(如地址等信息);定点数用来表示整数;浮点数用来表示实数。
    ②二进制编码的十进制数,一般都采用8421码(也称NBCD码)来表示,用来表示整数。
    所以,计算机中的数值数据虽然都用二进制来编码表示,但不全

    来源:杰之行

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年5月8日
下一篇 2022年5月8日

相关推荐