计算机组成原理(源自王道B站视频)

第一章 计算机系统概述

一、计算机的发展

 1.硬件的发展

(1)第一代:电子管时代

(2)第二代:晶体管时代

(3)第三代:中小规模集成电路时代

(4)第四代:大规模、超大规模集成电路时代

2.发展趋势:(1)更微型、多用途;(2)更巨型、超高速

二、计算机系统层次结构

 1.计算机系统的基本组成   硬件+软件
 2.计算机硬件的基本组成

        输入设备+输出设备+存储器+运算器+控制器(冯·诺依曼计算机)

        特点:

        (1)指令和数据以同等地位存于存储器,可按地址寻访;

        (2)指令和数据用二进制表示;

        (3)指令由操作码地址码组成;

        (4)以运算器为中心;(现代计算机以存储器为核心;CPU=运算器+控制器)

        (5)主存与辅存:主存储器(归为主机,手机内存)与辅助存储器(归为I/O设备,机械硬盘,固态硬盘)

 3.主存储器的基本组成  存储体+MAR+MDR

                存储体+存储地址寄存器(MAR)+存储数据寄存器(MDR)

 4.运算器的基本组成 ACC+MQ+X+ALU

 5.控制器的基本组成  CU+IR+PC

 6.工作过程

 7.软件

(1)系统软件:用来管理整个计算机系统

        eg:操作系统、数据库管理系统、标准程序库、网络软件、语言处理程序、服务程序

(2)应用软件:按任务需要编制成的各种程序

        eg:抖音、王者荣耀、QQ、微信

 8.翻译程序

(1)汇编程序(汇编器):将汇编语言程序翻译成机器语言程序。

(2)编译程序(编译器):将高级语言翻译成机器语言或汇编语言。(只需翻译一次)

(3)解释程序(解释器):将源程序翻译机器指令并立即执行。(每次执行都要翻译)

三、计算机的性能指标

1.存储器容量:存储器中存储单元的总数目。总容量=存储单元个数×存储字长 bit

(2^MAR × MDR)eg.MAR为32位,MDR为8位  总容量=2^32 * 8 bit = 4GB 

(1KB=1024B=2^10B  1MB=2^20B  1GB=2^30B,用来描述文件大小)

2.CPU性能指标

(1)主频与时钟周期:CPU内数字脉冲信号振荡的频率。

        CPU主频=时钟周期的倒数 ( f=1/T ),单位:Hz

        CPU时钟周期,单位:微秒,纳秒

(2)CPI:执行一条指令所需的时钟周期数

         执行一条指令的耗时=CPI×CPU钟周期

(3)CPU执行时间 = CPU时钟周期数/主频 = (指令条数×CPI)/ 主频 = 时钟周期数×时钟周期

eg.某CPU主频为1000Hz,某程序包含100条指令,平均来看指令的CPI=3。则该程序在CPU上执行需要多久?                                     100*3*(1/1000) = 0.3s

(4)IPS:每秒执行多少条指令; IPS = 主频 / 平均CPI    (KIPS,MIPS)

         FLOPS:每秒执行多少次浮点运算; FLOPS = 程序中的浮点操作次数 / 程序执行时间(s)(KFLOPS  MFLOPS  GFLOPS  TFLOPS)

        此处的K、M、G、T为数量单位(大多用来描述频率、速率)       K= 10^3,M=10^6,G=10^9,T=10^12

3.数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)

4.吞吐量:指系统在单位时间内处理请求的数量。

5.响应时间:表示发起一个有效请求到系统产生响应之间的等待时间。

第二章 数据的表示和运算

一、进制转换

1.进制表示

        二进制: 1011B        十进制:165D        十六进制:165H   0x165   

2.十进制转换为其他进制   

(1)转换为二进制:整数部分取余法,小数部分乘基取整法(小数部分有可能无法精确转换)

(2)转换为其他进制:先转换为二进制,再通过二进制转换为其他进制

3.真值和机器数

        真值:实际的带正负号的数值(人类习惯的样子)

        机器数:把正负号数字化的数(存到机器里的样子)

二、BCD码

三、无符号整数的表示和运算

1.表示:(1)全部二进制位都是数值位,没有符号位。

              (2)n比特无符号整数表示范围0~2^n-1,超出则溢出。

2.运算:(1)加法:从最低位开始,按位相加,并往更高位进位。

              (2)减法:被减数不变,减数全部按位取反,末位+1,减法变加法。

四、带符号整数的表示和运算

1.带符号整数的表示:原码、补码、反码

        (1)原码:符号位不参与运算,需设计复杂的硬件电路才能处理,成本高昂

        (2)补码:用补码表示真值——符号位可以参与运算

        (3)原码→反码→补码的转换

              注:①原码和反码可以通过数值位取反相互转换;

                     ②补码转换为反码:补码→原码→反码

                  ③原码与补码相互转换(机算法:将数值位取反,末尾加一)手算法如下图

2.带符号整数的运算:

  (1)补码加法运算:补码数值位不能解读为位权

  (2)补码减法运算:将减法变加法(与无符号整数减法处理方法类似)

        注:已知一个数的补码,求其负数的补码(手算法:可以从右往左找到第一个1,这个1左边的全部位按位取反)机算法如下图:

  (3)各种码的基本特性(特别注意补码:范围为-128~127,最小的数与真值0的表示)

  (4)移码:只能用于表示整数,表示范围与补码相同(-2^n~2^n-1)

3.定点小数的表示和运算

(1)定点小数的编码表示:原码、反码、补码()

        原码:符号位与数值位用“点”隔开

        相互转换方式与定点整数完全相同

(2)定点小数的运算:同样需要先转换为补码,方法与整数一致

(3)特性比较:位数扩展不一样,0向后扩展

五、奇偶校验码

奇校验码:整个校验码中1的个数为奇数

偶校验码:整个校验码中1的个数为偶数

六、电路的基本原理和加法器设计

1.逻辑运算

2.补码/无符号数加减运算器

(1)加法器原理

(2)补码加/减法运算方法(减法运算时:Sub赋予Cin值为1,Y经过非门即按位取反)

(3)溢出判断

        情况一(上溢):正+正=负;  情况二(下溢):负+负=正

方法二:判断符号位的进位Cs,最高数值位的进位C1,Cs与C1不同时有溢出。

硬件判断:逻辑表达式   V=Cs⊕C1  (若V=0,无溢出;若V=1,有溢出)

异或逻辑:不同为1,相同为0

方法三:采用双符号位  正数符号位00,负数符号位11(相加后符号位两个数字不相同则有溢出)

硬件判断:同样用将得到的符号位进行异或运算

(4)如何解决溢出:符号扩展,将短数据扩展为长数据

        整数在符号位与数值位之间扩展,定点小数在数值位后面扩展

3.标志位生成

OF:溢出标志        SF:符号标志        ZF:零标志        CF:进位/错位标志

七、定点数的移位运算

算数移位:左移一位相当于×基数,右移一位相当于÷基数

1.原码的算数移位

        符号位不变,仅对数值进行移位;定点小数与定点整数算数移位相同

2.反码的算数移位

3.补码的算数移位

右移相当于÷2;左移相当于×2

4.逻辑移位

可以看作是无符号数的算数移位

        逻辑右移:高位补0,低位舍弃

        逻辑左移:低位补0,高位舍弃

5.循环移位

八、定点数的乘除运算

1.原码的乘法运算

(1)原码一位乘法(最后记住修改符号位

        当前位为1则加上被乘数,当前位为0则加0

(2)手算模拟

2.补码乘法运算

(1)补码一位乘法:进行n轮加法、移位,最后再多来一次加法(即符号位也参与到运算),每次加法可能+0、+[X]补、+[-X]补

: 1)根据当前MQ中的最低位、辅助位来确定加什么;

                ①辅助位-MQ最低位=1时,ACC+[x]补;

                ②辅助位-MQ最低位=0时,ACC+0

                ③辅助位-MQ最低位=-1时,ACC+[-x]补;

         2)每次移位是“补码的算数右移”(正数右移高位补0,负数右移高位补1);

         3)符号位参与运算。

(2)手算模拟

3.原码的除法运算

(1)恢复余数法:先默认商1,如果出错则恢复余数

        注:(1)根据余数正负判断商0还是商1;

               (2)最后一步商余数为负,也需要恢复余数并改为商0;

               (3)最终结果的余数需要×2^-n次方

               (4)记住最后有符号位的确定。

(2)手算模拟:

(3)加减交替法(不恢复余数法)

4.补码的除法运算

        加减交替法(根据余数和除数是否同号判断商0还是商1,且最后结果的商,末位位置1)

总结:

九、浮点数的表示和运算

1.浮点数的表示

2.浮点数规格化

当浮点数的尾数超出存储空间时,需要进行规格化(要求尾数最高数值位必须是一个有效值)

  规格化的特点:

补码规格化中尾数最高数值位必须和尾数符号位相反

3.IEEE 754标准

移码 = 阶码真值 + 偏移量

:(1)当阶码E全为0,尾数M不全为0时,表示非规格化小数  ±(0.xx...x)2×2^-126

       (2)当阶码E全为0,尾数M全为0时,表示真值±0

       (3)当阶码E全为1,尾数M全为0时,表示无穷大±∞

       (4)当阶码E全为1,尾数M不全为0时,表示非数值"NaN"

4.浮点数的运算

eg.二进制浮点数加减运算(注意这里是补码浮点运算规则)

第三章 存储系统

一、存储器的基本概念

1.存储器的层次结构

        越靠近上层的读写速度越快、容量越小、价格越高

2.存储器的分类

按存储介质分类:半导体存储器、磁表面存储器、光存储器        

按存取方式分类:相联存储器(按内容查找)、(按地址查找)随机存储器、顺序存储器、直接存储器

按信息的可更改性:读写存储器、只读存储器(ROM-辅存)

按信息的可保存性:易失性存储器、非易失性存储器、破坏性读出存储器(如DRAM芯片)、非破坏性读出存储器(如SRAM芯片、磁盘)

3.存储器的性能指标

存储容量:存储字数×字长(2^MAR×MDR)

单位成本:每位价格=总成本/总容量

存储速度:数据传输率=数据的宽度/存储周期(数据宽度即存储字长;存储周期=存取时间+存取周期)

主存带宽(Bm):又称为数据传输率,表示每秒从主存进出信息的最大数量,单位为:字/秒、

字节/秒(B/s) 或 位/秒(b/s)

二、主存储器的基本组成(RAM+ROM)

1.存储器芯片的基本组成

基本元件:MOS管(作为通电"开关")+电容,存储电荷(即存储二进制0/1)

译码器:将地址信号转化为字选通线的高低电平

eg.某芯片容量为64K×16位,则地址线有16根,数据线有16根,片选线1根,读写控制线至少1根(读写分开则为两根),另外还有供电引脚线和接地引脚线

2.寻址

3.DRAM和SRAM

RAM:(存放指令数据)易失性的,支持随机存取

DRAM芯片:使用栅极电容存储信息,用于主存(即标题1中的图中结构)

SRAM芯片:使用双稳态触发器存储信息,用于Cache,速度更快

对比图

DRAM的刷新

DRAM的地址线复用技术:将行、列地址通过地址线分两次送,可使地址线更少,芯片引脚更少

:(1)在计算DRAM下的引脚数量时,地址引脚需要减半的;

        (2)刷新由存储器独立完成,不需要CPU控制。

4.只读存储器ROM(辅存)

ROM是非易失性的,且很多ROM也具有随机存取的特性

MROM-掩模式只读(不可重写);       PROM-可编程只读(可写一次);

EPROM-可擦除编程只读(可多次重写);

UVEPROM-紫外线擦除所有信息;        EEPROM-电擦除特定的字;

Flash Memory-闪存(U盘、SD卡)(需要先擦除再写入,写比读慢);

SSD-固态硬盘:控制单元+存储单元(Flash芯片)可进行多次快速擦除重写

主板上的BIOS芯片:存储“自举装入程序”,负责引导装入操作系统

5.双口RAM&多模块存储器

存取周期T

(1)双口RAM

(2)多体并行存储器

下图中,m模块数 即M0,M1,M2,M3共计四块,当m=T/r时流水线效率最佳。

6.主存储器与CPU的连接

(1)单块存储芯片与CPU连接

(2)存储器芯片的输入输出信号

(3)增加主存的存储字数

        ①位扩展:位(即数据线)进行扩展

        ②字扩展:

        线选法:将专门的地址线作为片选信号来选中某一块芯;若CPU有n条多余的地址线,则有n个片选信号。

        译码器片选法:通过译码器,n条多余的地址线可以有2^n个片选信号。

eg.38译码器,即3条地址线,通过译码器可以有8条输出,下图中高电平1连接的CS有效

        ③字位同时扩展法:

三、外部存储器

1.外存储器

(1)计算机的外存储器又称为辅助存储器,目前主要使用磁表面存储器。

(2)优缺点:即可作为输入设备,也可以作为输出设备

2.磁盘设备的组成

磁盘驱动器:核心部件是磁头组件和盘片组件

磁盘控制器:是硬盘存储器和主机的接口,主流的标准有IDE、SCSI、SATA等

3.性能指标

(1)磁盘容量        (2)记录密度:越往外密度越小,每条磁道记录信息量相同

(3)平均存取时间

(4)数据传输率:磁盘存储器在单位时间内向主机传送数据的字节数,称为数据传输率。

        假设磁盘转数r(转/秒),每条磁道容量为N个字节,则数据传输率为Dr=rN

3.磁盘地址与硬盘工作过程

4.磁盘阵列

RAID0:

RAID1:

5.SSD固态硬盘

四、Cache高速缓冲存储器(重点)

1.引入Cache原因

        在现在的计算机中,从主存中取到数据,处理器需要花费上百个时钟周期。如果没有cache,那么处理器在等待数据的大部分时间内将会停滞不动。

2.工作原理

采用局部性原理

空间局部性:现在使用的信息,很可能在最近的未来会使用与其相邻的信息

时间局部性:现在使用的信息,很可能在最近的未来也要用到。

3.性能分析

:Cache中的一个块也称为行

4.Cache和主存的映射方式

即如何区分Cache与主存的数据块对应关系(三种方式)

(1)全相联映射(主存块可放在Cache任意位置)

(2)直接映射(主存块只能放在特定位置)       

主存对应的Cache块号 = 主存块号 % Cache总块数

:1)主存块号最后三位地址就是Cache中的块号,所以将其余位作为标记即可;

       2)若Cache总块数为2^n,则主存块号末尾n位直接对应Cache块号。

(3)组相联映射(Cache块分为若干组,每个主存块可放到特定分组中的任意位置)

主存对应的Cache组号 = 主存块号 % 分组数;

:1)主存块号最后两位地址对应Cache的组号,将其余位作为标记即可;

       2)一个组内有n个块,就称为n路相联映射。

(4)总结对比

全相联直接组相联
特点任意位置特定位置特定分组中的任意位置
主存地址结构标记+块内地址标记+行号+块内地址标记+组号+块内地址
优点Cache存储空间利用充分对任意地址,对比一个标记,速度最快综合效果好
缺点可能对比所有行的标记,速度慢Cache利用不充分,命中率低
5.Cache替换算法(重点)

提要:全相联映射—Cache满了,需要在全局中选择替换哪一块;

           直接映射—对应位置非空,则直接替换;(无需考虑替换算法)

           组相联映射—分组内满了才需要替换,需要在分组内选择替换哪一块。

(1)随机算法(RAND)

        原理:若Cache满了,则随机选择替换一块。

        缺点:虽然实现简单,但命中率低,实际效果不稳定。

(2)先进先出算法(FIFO)

        原理:若Cache满了,则替换最先被调入Cache的块。

        缺点:未考虑局部性原理,最先被调入Cache的块可能是被频繁访问的。

(3)近期最少使用(LRU)

        原理:为每一个Cache块设置一个“计数器”,用于记录每个Cache块已经有多久没有被访问了。当Cache满后,替换”计数器“值最大的。

        特点:

                ①Cache块的总数= 2^{n},则计数器的位数只需要n位,且Cache装满后所有计数器的值一定不重复。

                ②基于局部性原理,近期被访问过的主存块,未来很可能仍会被访问,LRU算法实际运行效果优秀,Cache命中率高。

                ③若频繁访问的主存块数量>Cache行的数量,则有可能发生"抖动"(即频繁的换入换出现象—刚被替换的块很快又被访问)。

(4)最近不常使用(LFU)

        原理:为每一个Cache块设置一个“计数器”,用于记录每个Cache块被访问过几次,当Cache满后,替换”计数器“值最小的(访问次数最少的)。

        缺点:曾经被经常访问的主存块在未来不一定会用到。并没有很好地遵循局部性原理,因此实际运行效果不如LRU。

6.Cache写策略

作用:CPU修改Cache中数据副本,如何确保主存中数据母本的一致性

(1)写命中(在Cache中写入)

        ①写回法:当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。减少了访存次数,但存在数据不一致的隐患。

        通过“脏位”判断块是否被修改,只换出被修改的块。

        ②全写法:当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓冲。CPU写的速度很快,但写操作频繁时,可能会因写缓冲饱和而发生阻塞。

(2)写不命中

        ①写分配法:当CPU对Cache不命中时,把主存中的块调入Cache,在Cache中修改。通常搭配写回法使用,改完后要被换出,才在主存中修改。

        ②非写分配法:当CPU对Cache写不命中时,只写入主存,不调入Cache,搭配全写法使用。

五、虚拟存储器

定义:在操作系统的管理下,只把当前需要的部分数据调入主存,暂不需要的部分留在辅存中。在用户看来,似乎获得了一个超大的主存。

1.页式虚拟存储器(使用页表,每行称作页表项)

逻辑地址=逻辑页号+页内地址(虚地址=虚页号+页内地址)

物理地址=主存块号+页内地址(实地址=实页号+页内地址)

一个程序(进程)在逻辑上被分为若干个大小相等的”页面“,”页面“大小与”块“的大小相同。每个页面可以离散的存放在不同的主存块中。

引入快表:相当于存放慢表的副本,是在地址变换中起到加速的作用;

若快表中查询不到(未命中),则会去页表(慢表)中查找,并将相应数据放入快表中。
 

2.段式虚拟存储

按照功能模块拆分出不同大小的模块。

虚拟地址=段号+段内地址

3.段页式虚拟存储

把程序按逻辑结构分段,每段在分固定大小的页,主存空间也划分为大小相等的页,每个程序对应一个段表,每段对应一个页表。

虚拟地址=段号+段内地址+页内地址

第四章 指令系统

一、指令格式

1.指令概念

又称机器指令,是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。

一条指令就是机器语言的一个语句,一条指令通常要包括操作码和地址码两部分:操作码主要指明用户干什么,地址码主要指明对谁操作。。

一台计算机的所有指令集合构成该机的指令系统,也称为指令集。

2.指令分类

(1)零地址指令:不需要操作数,如空操作、停机、关中断等指令。

(2)一地址指令:

        ①只需要单操作数,如加1,减1,取反,求补,完成一条指令需要3次访存:取指→读→写。

        ②需要两个操作数,但其中一个隐含在某个寄存器中,需要两次访存:取和读。

(3)二地址指令:常用于需要两个操作数的算术运算、逻辑运算相关指令。

        完成一条指令需要访存四次,分别为取指→读第一个操作数→读第二个操作数→写回第一个操作数。

(4)三地址指令:常用于两个操作数的算术运算、逻辑运算,结果放在第三个地址中。

完成一条指令需要访存四次,分别为取指→读第一个操作数→读第二个操作数→写到第三个操作数。

(5)四地址指令:在三地址指令基础上,执行指令后,将PC的值修改为第四个操作数所指地址

注:若指令长度不变,地址码数量越多,寻址能力就越差

按指令长度分类

(1)半长指令:是机器指令长度一半

(2)单字长指令:与机器指令长度一样

(3)双字长指令:是机器指令长度两倍

定长指令字结构:指令系统中所有指令的长度相等;

变长指令字结构:指令系统中各种指令的长度不等。

按操作码的长度分类

(1)定长操作码:指令系统中所有指令的操作码长度相同;

(2)可变长操作码:指令系统中各指令的操作码长度可变。

按操作类型分类

3.扩展操作码指令格式

指令是定长的,但是操作码的长度可变。

通常情况下,使用频率高的指令分配短的操作码;而使用频率低的指令分配长的操作码,减少指令译码和分析的时间。

二、指令寻址

1.指令寻址(由PC指出)

(1)顺序寻址

PC+”1“,这里的1指指令字长,每次取值结束后PC会+1

(2)跳跃寻址

执行转移类指令导致的PC值改变

每一条指令的执行都分为“取指令”、“执行指令”两个阶段

2.数据寻址

定义:确定本条指令的地址码指明的真实地址。

(1)直接寻址:操作数的真实地址,访存次数为一次(指令执行期间)。

(2)间接寻址:操作数地址的地址。

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值