课堂笔记 计算机组成与系统结构

0x01 计算机系统概论

计算机的分类

  • 电子模拟计算机:连续量,运算过程连续
  • 电子数字计算机:不连续的离散数字,速度快,准确,存储量大
    • 专用计算机:有效、经济、快速,适应性差
    • 通用计算机:适应性强,但牺牲了效率、速度和经济性

通用计算机分类
通用计算机分类

计算机的发展简史

从使用器件的角度来说,计算机的发展大致经历了五代的变化

  • 电子管计算机:体积庞大,成本高,可靠性低,数据处理机开始得到应用
  • 晶体管计算机:工业控制机开始得到应用
  • 中小规模集成电路计算机:小型计算机开始出现
  • 大规模和超大规模集成电路计算机:微型计算机开始出现
  • 巨大规模集成电路计算机:单片计算机开始出现

计算机的性能指标

  • 吞吐量:表征一台计算机在某一时间间隔内能够处理的信息量
  • 响应时间:表征从输入有效到系统产生响应之间的时间度量,用时间单位来度量
  • 利用率:在给定的时间间隔内系统被实际使用的时间所占的比率,用百分比表示
  • 处理机字长:指处理机运算器中一次能够被完成二进制数运算的位数,如32位,64位
  • 总线宽度:一般指CPU中运算器与存储器之间进行互连的内部总线二进制位数
  • 存储器容量:存储器中所有存储单元的总数目,通常用KB、MB、GB、TB来表示
  • 存储器带宽:单位时间内从存储器读出的二进制数信息量,一般用字节数/秒表示
  • 主频/时钟周期:CPU的工作节拍受主时钟控制,主时钟不断产生固定频率的时钟,主时钟的频率叫CPU的主频,时钟周期为主频的倒数
  • CPU执行时间:表示CPU执行一般程序所占用的CPU时间
    CPU执行时间 = CPU时钟周期数 * CPU时钟周期
  • CPI : 执行一条指令所需的平均时钟周期数
    CPI = 执行某段程序所需的CPU时钟周期数 / 程序包含的指令条数
  • MIPS :平均每秒执行多少百万定点指令数
    MIPS = 指令数 /(程序执行时间*10^6)
    缺点:只适用于标量计算机,精度低
  • FLOPS :每秒执行浮点操作的次数
    MFLOPS = 程序中的浮点操作次数 / 程序执行时间(秒)
    同一操作在不同的机器上执行的指令可能不同,但执行的浮点运算是相同的。

计算机的硬件

在这里插入图片描述

  • 运算器:主要功能是进行加、减、乘、除等算术运算,除此之外,还可以进行逻辑运算
  • 存储器:保存或“记忆”解题的原始数据和解题步骤
    存储器与寄存器的异同:
    结构不同,存储器分为主存和辅存,寄存器在CPU之中,所有处理器都有寄存器,追求效率和速度
    为什么存储器没有名字,而寄存器有名字:
    起名就需要专门的电路去连接相应的器件,速度快,但由于储存器类型太多,每起一个名字就要有对应的专用线路去连接,成本过高
    存储器先从寄存器中取地址再访问
  • 控制器:控制计算机的各部件有条不紊地进行工作
  • 输入输出设备
  • 适配器:相当于一个转换器,可以保证外围设备用计算机系统特性所要求的形式发送或接收信息

计算机的软件

凡是用于一台计算机的各种程序,统称为这台计算机的程序或软件系统

组成与分类

  • 系统软件:管理各种独立工作的硬件,协调工作,简化程序设计,提高计算机的使用效率
    例如各种服务性程序,语言程序,操作系统,数据库管理系统
  • 应用程序:用户利用计算机来解决某些问题而编制的程序

软件的发展演变

  • 机器语言
  • 汇编语言
  • 算法语言

计算机系统的层次结构

在这里插入图片描述
系统结构是计算机总体上的一种结构知识
计算机系统结构:从层次结构出发,是对个层次界面的划分、定义及上下层功能的分配

软件与硬件的逻辑等价性

目前,随着大规模集成电路技术的发展和软件硬化的趋势,计算机的软、硬件界限已经变得模糊。任何操作可以由软件来实现,也可以由硬件来实现;任何指令的执行可以由硬件完成,也可以由软件完成(指令操作必须是在硬件的层面上)。就目前而言,一些计算机的特点是,把原来明显地在一般机器级通过编制程序实现的操作,如整数乘除法指令、浮点运算指令、处理字符串指令等、改为直接由硬件完成(把原本在软件中执行的操作,改为在硬件中执行,速度可以变快)

0x02 运算方法和运算器

数据与文字的表示方法

一些概念

机器数:是将符号“数字化”的数,是数字在计算机中的二进制表示形式(大小受机器字长的限制,符号数字化)
机器码:是将硬件序列号经过一系列加密、散列形成的一串序列号(一组二进制数字)
真值:是一个变量本身所具有的真实值,是一个理想概念,有误差,一般约定真值是约定真值

数据表示方法

在选择计算机的数的表示方式时,需要考虑以下几个因素:

  1. 要表示的数的类型(小数、整数、实数和复数)
  2. 数值范围
  3. 数值精确度
  4. 数据存储和处理所需要的硬件代价
定点数的表示方法

定点数就是小数点的位置是固定不变的,通常将数据表示成纯小数或纯整数
二进制的第一位为符号位,通常约定正号为0,负号为1
纯小数的表示范围:0<=|x|<=1-2^(-n)
纯整数的表示范围:0<=|x|<=2^n - 1
特点:表示数的范围受字长限制,表示数的范围有限,表示的精度也有限,常用定点纯整数表示方法

浮点数表示方法

小数点的位置随比例因子的不同而在一定范围内可以自由浮动
在计算机中一个任意进制数N可以写成
N = R^e.M
M称为浮点数的尾数,是一个纯小数,e是比例因子的指数,称为浮点数的指数,是一个整数。R是比例因子的基数(10,2等)
在机器中表示一个浮点数是,一是要给出尾数,用定点小数形式表示。尾数部分给出有效数字的位数,因而决定了浮点数的表示精度。二是要给出指数,用整数形式表示,常称为阶码,阶码指明小数点在数据中的位置,因而决定了浮点数的表示范围。浮点数也要有符号位
在这里插入图片描述
32位的浮点数中,S是浮点数的符号位,占一位,安排在最高位,S=0表示正数。M是尾数,放在低位部分,占用23位,小数点位置放在尾数域最左有效位的右边。E是阶码,占用8位,阶符采用隐含方式,即采用移码方法来表示正负指数,E=e+127。
当尾数的值不为0时,尾数域的最高有效位应为1,这称为浮点数的规格化表示
在这里插入图片描述
在这里插入图片描述

进制转换
  1. 非十进制数转换成十进制数
    方法:按权展开后相加
    (4B.4)16=4161+11160+4*16-1=64+11+0.25=75.25
  2. 十进制数转换成非十进制数
    方法:整数部分除基取余法;小数部分乘基取整法
  3. 二进制和十六进制间的相互转换
    方法:
    整数部分
    –从低位(小数点左边第一位)开始,每四位二进制数分为一组,最后不足四位的前面补零,每组用一位等价的十六进制数来代替;
    小数部分
    –从高位(小数点右边第一位)开始,每四位二进制数分为一组,最后不足四位的后面补零,然后按顺序写出对应的十六进制数。
十进制数串的表示方法
  1. 字符串形式
     字符串形式:一个字节存放一个十进制的数位或符号位。为了指明这样一个数,需要给出该数在主存中的起始地址和位数(串的长度)。 BCD码:用二进制代码对十进制数进行编码
  2. 压缩的十进制数串形式
     压缩的十进制数串形式:一个字节存放两个十进制的数位。它比前一种形式节省存储空间,又便于直接完成十进制数的算术运算,是广泛采用的较为理想的方法。
    用压缩的十进制数串表示一个数,也要占用主存连续的多个字节。每个数位占用半个字节(即4个二进制位),其值可用二-十编码(BCD码)或数字符的ASCII码的低4位表示。符号位也占半个字节并放在最低数字位之后,其值选用四位编码中的六种冗余状态中的有关值,如用12©表示正号用13(d)表示负号。
    在这里插入图片描述

数的机器码表示

表示的数据-------符号、小数点、数值

原码的表示
  1. 定点整数:xnxn-1x……x1x0
    在这里插入图片描述

式中[x]原是机器数,x是真值
x=+1001 则 [x]原=01001
x=-1001 则 [x]原=11001

  1. 定点小数:x0x1x2…xn,则原码表示的定义是
    在这里插入图片描述

式中[x]原是机器数,x是真值
例如,x=+0.1001,则[x]原=0.1001
   x=-0.1001,则[x]原=1.1001
   
采用原码表示法简单易懂,但它的最大缺点是加法运算复杂。
当两数相加时,如果是同号则数值相加;如果是异号,则要进行减法。而在进行减法时还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择符号。
为了解决这些矛盾,补码表示法。

补码表示法
  1. 若定点整数补码形式为xnxn-1x……x1x0,补码的定义是:
    在这里插入图片描述
    对于0,[+0]补=[-0]补=0.0000  (mod 2)
      注意,0的补码表示只有一种形式。

  2. 若定点小数补码形式为x0.x1x2…xn,补码的定义是:
    在这里插入图片描述
    x=+0.1011,则[x]补=0.1011
     x=-0.1011,则[x]补=10+x
    =10.0000(2进制)-0.1011=1.0101

采用补码表示法进行减法运算就比原码方便得多了。因为不论数是正还是负,机器总是做加法,减法运算可变为加法运算。但根据补码定义,求负数的补码要从2减去|x|。
为了用加法代替减法,结果还得在求补码时作一次减法,这显然是不方便的。下面介绍的反码表示法可以解决负数的求补问题。

反码表示法

所谓反码,就是二进制的各位数码0变为1,1变为0。也就是说,若Xi=1,则反码为xi=0;若xi=0,则反码xi=1。
这就是通过反码求补码的重要公式。这个公式告诉我们,若要一个负数变补码,其方法是符号位置1,其余各位0变1,1变0,然后在最末位(2-n)上加1。
对定点小数,反码表示的定义为:
在这里插入图片描述

移码表示法

移码通常用于表示浮点数的阶码。由于阶码是个n位的整数,假定点整数移码形式为xn…x2x1x0时,对定点整数,移码的定义是:
真值加上一个固定常数2n
[x]移=2n+x  2n>x≥-2n (2.14)
若阶码数值部分为7位,以x表示真值,则
[x]移=27+x = 128 + x 128 >x≥- 128
例如,当正数:
x=+1010101 时, [x]移=1,1010101 ;
在这里插入图片描述
移码中的逗号不是小数点,而是表示左边一位是符号位。
显然,移码中符号位x0表示的规律与原码、补码、反码相反。

字符与字符串的表示方法

字符的表示方法

国际上采用的字符系统是七单位的ASCII码(美国国家信息交换标准字符码)
在这里插入图片描述
还有一位是奇偶校验位,共8位

字符串的表示方法

字符串是指连续的一串字符,通常方式下,它们占用主存中连续的多个字节,每个字节存一个字符。
当主存字由2个或4个字节组成时,在同一个主存字中,既可按从低位字节向高位字节的顺序存放字符串的内容,也可按从高位字节向低位字节的次序顺序存放字符串的内容。

汉字的表示方法

汉字的输入编码
  1. 数字编码
    区位码是将国家标准局公布的6763个两级汉字分为94个区,每个区分94位,实际上把汉字表示成二维数组,每个汉字在数组中的下标就是区位码。区码和位码各两位十进制数字,因此输入一个汉字需按键四次。
  2. 拼音编码
    拼音码是以汉字拼音为基础的输入方法。使用简单方便,但汉字同音字太多,输入重码率很高,同音字选择影响了输入速度。
  3. 字形编码
    字形编码是用汉字的形状来进行的编码。把汉字的笔划部件用字母或数字进行编码,按笔划的顺序依次输入,就能表示一个汉字。
汉字内码

汉字内码是用于汉字信息的存储、交换、检索等操作的机内代码,一般采用两个字节表示。

汉字字模码

字模码是用点阵表示的汉字字形代码,它是汉字的输出形式。

校验码

元件故障、噪声干扰等各种因素常常导致计算机在处理信息过程中出现错误。
为了防止错误,可将信号采用专门的逻辑线路进行编码以检测错误,甚至校正错误。
通常的方法是,在每个字上添加一些校验位,用来确定字中出现错误的位置。
最简单且应用广泛的检错码是采用一位校验位的奇校验或偶校验
奇校验
设x=(x0x1…xn-1)是一个n位字,则奇校验位C定义为
在这里插入图片描述
式中:⊕代表按位加,表明只有当x中包含有奇数个1时,
才使C=1,即C#=0。
偶校验同理

定点加法减法运算

补码加法

负数用补码表示后,可以和正数一样来处理。这样,运算器里只需要一个加法器就可以了,不必为了负数的加法运算,再配一个减法器。
在这里插入图片描述
补码加法的特点:
一是符号位要作为数的一部分一起参加运算;
二是要在模2n+1的意义下相加,即超过2n+1的进位要丢掉。

补码减法

在这里插入图片描述
从[y]补求[-y]补的法则是:对[y]补包括符号位“求反且最末位加1”,即可得到[-y]补。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Luminous_song/article/details/108812080