【计算机基础】计算机基本组成与数值的表示

0. Preface

快要软考和期末考啦,这不得临时抱佛脚一波?
赶紧顺着教材来对计算机的一些基础进行复习吧!下面开始!

学习目标

  1. 巩固基础,了解计算机内部结构、运作方式、经典问题。
  2. 所学到的知识可应用于:期末考试、软考、考研等。

参考教材:《计算机组成原理》、《软件设计师教程》

注意,以下为纯理论,适合用于背书!

1. 硬件基本组成

本小节介绍 硬件的基本组成,其中,重点介绍 CPU 的功能与组成

1.1 计算机基本组成

基本组成
基本组成

计算机由软件和硬件组成,相辅相成。

  • 中央处理单元CPU :CPU主要由控制器、运算器组成
  • 存储器:存储器分为内部存储器与外部存储器
    • 内部存储器:即内存,一般是RAM随机存储器,主存。速度高,容量相对硬盘要小
    • 外部存储器:例如,我们的软盘、硬盘、光盘等
  • 输入输出设备:即外设,例如,我们的键盘是输入设备,我们的显示屏是输出设备

1.2 CPU 中央处理单元

基本组成

CPU基本组成

1.2.1 CPU 的功能

  • 程序控制:重要职能,通过执行指令来控制程序的执行顺序
  • 时间控制:对各种操作进行时间上的控制,对整个执行时间、操作信号的出现时间、持续时间及出现的时间顺序都进行严格控制
  • 操作控制:一条指令需要若干操作信号,CPU产生每条指令的操作信号,并将操作信号送往不同的部件,控制相应的部件按指令的功能要求进行操作
  • 数据处理:根本任务,对数据进行逻辑运算、加工等处理

1.2.2 CPU 的组成

CPU主要由 运算器和控制器组成,当然,为了存储临时变量以及部件之间进行数据通信,CPU也带有寄存器组以及内部总线等其他结构。下面一一介绍:

运算器

  • (1)功能:执行运算:基本运算、逻辑运算。受控制器指挥

  • (2)组成:

    • 算数逻辑运算单元ALU :Arithmetic and Logic Unit, ALU。

      负责算数运算与逻辑运算

    • 累加寄存器AC:简称累加器。通用寄存器,当ALU执行运算时,为ALU提供工作区。

      例如,ALU进行 a - b 运算,先将 a 暂时取出存放在AC,再从内存中取出 b ,然后执行 a - b 算出结果,将结果存放回AC中。

      运算的结果是放在AC中的。

    • 数据缓冲寄存器DR:主要作用:作为CPU和内存、外部设备之间数据传送的中转站,以及缓冲。

      例如,在对内存进行读写时操作时,DR暂时存放内存的一条指令或一个数据,将不同时间段内读写的数据隔离。

      在单累加器结构的运算器中,DR还能兼作为操作数寄存器。

    • 状态条件寄存器PSW:保存一些运算过程中产生的状态,以条件码保存,例如要进位保存一个(C)

      条件码内容主要分为 状态标志和控制标志
      例如:
      运算结果进位标志(C)
      运算结果溢出标志(V)
      运算结果为0标志(Z)
      运算结果为负标志(N)
      中断标志(I)
      方向标志(D)
      单步标志等等

      这些标志通常由一位触发器保存,通常,一个算数操作产生一个运算结果,一个逻辑操作产生一个判决。

控制器

  • (1)功能:控制器用于控制整个CPU的工作,决定计算机运行过程的自动化。

保证程序正确执行,处理异常事件。

一般包括:
指令控制逻辑,时序控制逻辑,总线控制逻辑 和 中断控制逻辑等几个部分。

指令控制逻辑要完成取指令、分析指令、执行指令的操作。这个过程可描述为:
取指令、指令译码、按指令操作码执行、形成下一条指令地址等步骤。

时序控制逻辑:要为每条指令按时间顺序提供应有的控制信号;
总线逻辑:多个功能部件服务的信息通路的控制电路
中断控制逻辑:用于控制各种中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU处理

  • (2)组成:

    • 指令寄存器IR:当CPU执行一条指令时,先把它从内存取到缓冲寄存器DR,再送入IR暂存,指令译码器,根据IR的内容产生各种微操作指令,控制其他组成部件工作,完成所需功能

    • 程序计数器PC:具有寄存信息和计数两种功能,又称为指令计数器。

      程序执行有两种顺序:顺序执行 转移执行 。

      在程序开始执行前,将程序的起始地址送入PC,在程序加载到内存时确定。执行指令时,CPU将修改PC的内容,使其的内容总是将要执行的下一条指令地址。

      顺序执行:修改的地址只是简单地+1
      转移执行:后继的指令地址根据当前指令地址加上一个位移量;或者根据转移指令给出的直接转移地址得到。

    • 地址寄存器AR:保存当前CPU访问的内存单元地址。

      内存和CPU存在速度差异,需要AR保存地址信息,直到内存读写操作完成为止。

    • 指令译码器ID:指令分为 操作码 和地址码两部分。

      指令译码器对指令中的操作码字段进行分析解释,识别该指令规定的操作,向操作控制器发出具体的控制信号,控制各部件工作,完成所需功能。

寄存器组 :分为专用寄存器和通用寄存器。运算器和控制器中的寄存器是专用寄存器,其作用是固定的。通用寄存器用途广泛并可由程序员规定其用途,数目因处理器不同有所差异

2. 数值的表示

计算机的本质是电路,一般的电路有开、关两种状态。计算机用 0、1 分别表示这两种状态;0和1组成二进制数,进而可以通过这个计算机电路实现数的运算。虽然现代计算机的组成远远没有那么简单,已集成很多例如三极管等存在更多状态的元件,但数值在计算机内部的表示依然是二进制,这种表示形式称为机器数。

机器数分为无符号与带符号;无符号即正数,带符号则将最高位代表正或负。带符号的机器数可采用原码、反码、补码、移码等不同的编码方法,这些编码方法称为码制。

2.1 码制

本小节介绍常见码制:原码、反码、补码和移码

原码
原码就是除了最高位以外,其他位直接采用这个数的绝对值对应的二进制表示,例如:
8位的 6 和 -6 分别表示为:

// 6
0 000 0110

// -6
1 000 0110

其中,由于原码的特性,数值 0 用原码表示为:

// 0
1 000 0000

// 或
0 000 0000

反码
反码通过对原码取反,表示该正数的负数。
例如,8位的 6 和 -6 分别表示为:

// 6
0 000 0110

// -6 反码
1 111 1001

其中,0的原码为 0000 0000,其反码也可以表示为 1111 1111 也代表0

补码
相信大家在上面原码和补码的例子中已经发现了,采用上述两种编码方式,0都有1种以上的表示方式,容易产生歧义。补码的出现,很好地解决了0的歧义的问题。

对于正数而言,正数的补码与其原码、反码都相同,即直接使用二进制表示,并且符号位为0。
对于负数而言,负数的补码则是其绝对值,即其对应的正数的反码+1,例如:

// 6
0 000 0110
    
// -6 补码
1 111 1010
// 0
0 000 0000

// 0 的补码 : 反码+1
1 111 1111 + 0 000 0001 = 0 000 0000

移码
移码是指在数X上增加一个偏移量来定义,常用于表示浮点数中的阶码。

举个例子,当机器字长为n, 偏移量为 2^(n-1) 时:

// 0 移码,n=8:
0(D) = 0 000 0000 + 1 000 0000 = 1 000 000 
    
// 偏移量为 2^(n-1),时,也等于 其补码将符号位取反
6(D) = 1 111 1010 (补) 
6(D) = 0 111 1010 (移)

2.2 定点数和浮点数

带小数的数值在计算机内部怎么表示呢?一般为定点数和浮点数:

定点数
定点数即小数点的位置固定不变,通过一定的约定规则 约定 小数点位置在哪,例如,定点整数约定小数点在最低有效数值之后。

浮点数
我们学习高级语言时,通常用浮点类型的数据来表示小数。例如在 JAVA 中,浮点数基本类型为 float 和 double。但是它既然表示的是小数,为什么不直接叫小数类型,而是浮点类型呢?因为在计算机内部,所谓浮点数,指的是小数点的位置可随时变换的数(通常多用于小数的表示)

在十进制中,一个数可有多种表示,例如,科学计数法中,125.123 = 1.25123 * 10^2 。
同样地,在二进制中,1011.10101 = 0.101110101 * 2^4 (计算方法很简单,可以理解为位运算,二进制中的位运算的 * 2 = 左移一位)。其中,2^4中的4称为阶码,0.101110101称为尾数,总结成公式则为 N = 2^E * F

用阶码和尾数表示的数叫浮点数。 对于浮点数的计算、如何尽可能提高精度,请读者自行查阅相关基础学科资料,例如《数值分析》

2.3 校验码

无论数值如何表示,数据总是要在计算机中运行的。计算机的本质是电路,数据在计算机内部的传输离不开硬件,传输过程中一旦某个器件出错或受到电气干扰,都有可能造成数据的出错。

为了提高数据在传送过程的稳定性,尽可能保证数据正确无误,一是提高硬件水平,即电路的可靠性,二是使用校验码来进行查错和纠错。

奇偶校验码
奇偶校验码是最简单的校验码之一,增加一位校验位来使编码的1个数变为奇数或偶数,使码距变为2。

  • 码距
    所谓码距,指的是一个编码系统中的任意两个合法编码之间至少有多少个二进制位不同。例如,四位8421码的 1011 与 1010 都是合法编码,分别表示十进制的11 以及 10,改变任意1位都是合法编码,码距为1。如果要传输的目标数值是十进制的11,但是传输过程中末位的1丢失,变成1010,那么设备最终就会接收到十进制的10来做处理。

  • 奇偶校验
    直接列表举例:

    原数据奇校验偶校验
    101101010(校验位) 101101011(校验位) 10110101
    010010111 010010110 01001011

    注意,所谓1 的数量是 奇数还是偶数,是算上校验位的!

常见的奇偶校验类型有:水平奇偶校验、垂直奇偶校验、水平垂直奇偶校验。
所谓水平、垂直,则是相对数据的列而言的,例如,上述列表举例的就是水平奇偶校验。垂直校验的例子请读者自行查询。

海(汉)明码
海明码可进行校验与纠错。

由于海明码的原理略为复杂,篇幅有限三言两语讲不清,此处推荐一个优秀参考博文的连接:
博客园-海明码优秀参考博文:https://www.cnblogs.com/godoforange/p/12003676.html#4208078614

需要注意的是,海明码只能检测出2位错,纠1位错。

循环冗余校验码CRC

循环冗余校验码广泛应用于数据通信领域和磁介质存储系统中,其原理也很复杂,此处也推荐一个优秀参考文章连接:

知乎-CRC优秀参考文章:https://zhuanlan.zhihu.com/p/61636624

3. 总结

本文从计算机的基本组成以及数值在计算机内部的表示两个知识点展开,重点介绍了CPU的组成,以及回顾了一些二进制、码制的知识,帮助大家快速复习。但需要注意的是,校验码是我们考试的重点,本文篇幅原因这部分介绍得较少,请读者注意补充。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值