1 计算机硬件组成图

冯若依曼的计算机概念主要是以运算器为中枢,IO设备和主存储器的数据传送需要经过运算器,实线为数据线,虚线为控制线和反馈线。

计算机组成原理笔记

现代计算机则是以存储器为中心:

运算器主要负责算术与逻辑运算,并把运算结果暂存在运算器中。

存储器主要用来存储数据和程序

控制器主要用来控制程序和数据的输入、解释指令、运行和处理运算结果

输入设备用来把人熟悉的信息形式转化为计算机能处理的信息形式,如键盘、鼠标

输出设备主要用来把计算机能处理的信息形式转化为人熟悉的信息形式,如屏幕、打印机输出


计算机组成原理笔记

随着集成电路的发展,控制器和运算器整合成CPU,计算器变成由以下三部分组成。cpu和内存合起来为主机。计算机各个部件有条不紊的工作都是在控制单元的控制下进行的。
 
计算机组成原理笔记

控制器是计算机的神经中枢,他负责取出指令、分析指令、执行指令


计算机组成原理笔记
 

操作码表示一个操作指令,有取指、存指、加减乘除等。


计算机组成原理笔记
 

一个指令包括操作码和地址码,地址码表示操作数所在的存储位置。下面是一个具体的计算机解题过程。

 


计算机组成原理笔记

 

2 总线

以前计算机的硬件组成是以cpu或者主存为中心进行传输数据。任何两个部件传输数据都要经过主存或者cpu,这样会影响cpu、主存的工作效率。于是出现了系统总线,通过总线来作为数据传输介质,通过主线的协调部件之间的数据传输。


计算机组成原理笔记

在任意一个时刻只能由一个部件向总线发送信息,多个部件可以同时从总线接收信息。对于上图的单总线而言,当主存要和外部设备交换信息时,必须经过cpu干预,这样会影响cpu的使用效率。于是就有了下面双总线的结构,主存可以直接和外部设备交换信息,如DMA。同时主存和cpu之间单独享用一条总线,可以提高主存和cpu之间的通信效率。

 


计算机组成原理笔记

 

对于cpu内部寄存器、算术逻辑单元之间的总线连接叫做片内总线。

对于连接各大部件的总线叫做系统总线。系统总线分为以下几种:

  • 数据总线,用于在各部件之间传递数据信息
  • 地址总线用于指出数据总线上源数据或目标数据所在的主存地址。它总是用于指出cpu欲访问的主存或者io设备的地址。
  • 控制总线,地址总线和数据总线是在各部件之间共享的,控制总线是用来决定哪个部件对于共享总线的使用权。例如cpu命令主存读写,io读写;设备准备就绪,向cpu发送中断请求;DMA向cpu发起总线请求。

 

3 存储器

存储器是计算机的记忆设备,用于存储程序和数据。

存储介质是指能够存储0,1两种状态代码的物质或者元器件,按照存储介质分的话,存储器可以分为:

  • 半导体存储器,易失性,一般用于主存。他体积小,功耗低,存取时间短。
  • 磁表面存储器,非易失性。一般用于外存,磁盘。

按照存取方式,可以分为:

  • 随机存储ram,存取数据的速度和数据所在的位置无关。主存即为此类
  • 只读存储rom,一般用于操作系统的固化,如安卓rom。只能读不可写
  • 串行访问存储器,访问的速度和数据所在的物理位置有关,如磁带存储器,无论访问哪些数据都要从介质的起始位置开始扫描;还有一种是先随机然后再串行的,如磁盘访问。首先是磁盘寻道直接找到对应的扇区,然后顺序寻访,直至找到位置。

4 cpu与主存的通信方式

cpu到读取主存某个字时,先把地址当道MAR,再由MAR经过地址总线送到主存。主存接收到读命令时,将改地址的数据读出放到数据总线上,至于MDR会把数据放到哪里,主存不关心,由cpu决定。要往主存写数据的时候,先将地址经过MAR放到地址总线,并将数据送入MDR,再向主存发起写命令。主存收到写命令后,将数据总线上的数据存入到对应地址的存储单元。


计算机组成原理笔记

5 输入输出系统

早期的IO系统,IO设备和主存的信息交换需要通过cpu,影响cpu的工作效率
计算机组成原理笔记

使用接口模块,使用总线。接口中具有数据通路也有控制通路,通过接口来模块来接收cpu的请求,或者向cpu反馈信号。接口还可以作为数据传送的缓冲地带。很多接口能够完成中断请求处理,让io能够和cpu并行工作,大大提高的cpu工作效率。

为了进一步提升效率,出现了DMA,即IO设备可以直接和主存传递数据,无需cpu干预。
 
计算机组成原理笔记

大中型计算机还有采用io通道的,io通道可以视为io和主存交换信息的一个部件,他是一种特殊的处理器。
 
计算机组成原理笔记

 

io和主机传送信息的方式有:

程序查询方式,坏处是cpu和io设备串行工作。


计算机组成原理笔记

中断方式,io设备可以和cpu并行工作,当io完成时向cpu发送中断信号,cpu停止当前工作,转入执行中断处理程序
 
计算机组成原理笔记

虽然中断可以提高并行,但是依然需要cpu参与,所以DMA在这基础上更进一步了。在DMA方式中,主存和IO设备之间有一条数据通路,主存和io交换信息时无需运行中断处理程序。


计算机组成原理笔记

DMA与程序中断相比:

  • 从数据传送来看,程序中断是由程序来传送,DMA是由硬件来传送
  • 从cpu响应时间来看,程序中断是在一条指令执行完毕之后才能响应;而DMA是在cpu的指令周期内任何一个存取周期结束后就可以响应。
  • 程序中断有处理异常事件的能力,而DMA没有。它主要用于大批数据的传送,如硬盘存取、图像处理、高速数据采集系统,用于提高数据吞吐量。
  • 程序中断需要保护现场,DMA不需要,更节约cpu资源
  • DMA优先级高于程序中断。

 

6 io接口

io接口是指主机与外部设备之间设置的一个硬件电路及其相应的软件控制。每个外部设备都有一个设备控制器通过io接口和主机通信。io接口的作用在于:

  • 一台主机通常会有多个外设,每个外设都有设备号,通过接口来选择设备。
  • 不同外设的数据处理速度不一样,和cpu速度差别很大,通过接口的数据缓冲功能来实现速度协调。
  • 很多设备都是串行传送数据的,而cpu是采用并行传送数据,通过io接口可以实现串行-并行格式的相互转换。
  • 外设的输入输出电平可能和cpu不一样,通过io接口实现电平转换
  • cpu启动外部设备需要发送各种控制信号,通过io接口来传送控制信号。
  • 外部设备都要把自己的工作状态向cpu汇报,如忙、就绪、中断,io接口可以保持设备的状态,供cpu查询。

下图是io接口的组成,io接口通过总线和cpu通信。


计算机组成原理笔记
 
计算机组成原理笔记

 

7 无符号数和有符号数

计算机中的数通常都存在寄存器中,所以称寄存器的位数为字长。无符号的数,寄存器的所有位都可以用来表示数值,而有符号的数需要占用一个位来表示符号。所以无符号的数所能表示的绝对值范围会比有符号的大。符号位用0来表示正数,1来表示负数。把符号数字化的数成为机器数,带符号的数成为真值。符号位和数值位在计算机中按照某种规则进行编码与运算,这些编码分为源码、补码、反码、移码。

原码是最简单的表示,符号位用于表示正负,数值位为真值的绝对值。小数用.来分割,符号用逗号来分割。0.1011,0,1011。


计算机组成原理笔记

为了简化cpu的运算,可以通过补码的方式,使得加法器达到减法器的效果。例如时钟,从6时移到3时,可以逆向移动三个小时,也可以正向移动9个小时,因为时钟的mod为12。整数的补码是自己,负数的补码为数值位全部取反,然后所有位加1。(A-B) mod 12等价于 (A+B补码)mod 12。

http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html

总的来说,原码、补码、反码的特点如下:

都有一个最高位来表示符号位,其他位表示数值位。点号分离小数,逗号分离符号位

当真值为正,原码补码反码表示形式相同,符号位为0,数值位等于真值。

真值为负时,三码各不相同。符号位都为1,反码数值位为原码每位求反,补码数值位为反码加1.

 

由于使用补码表示时,符号位和数值位一起编码,很难从这个形式看出真值的大小,所以就出现了移码。即在真值上+2的n次方,N为整数位数。真值的含义是数学意义上的值,有正负的概念。

 

8 定点与浮点

要在计算机中表示小数,可以用定点和浮点两种表示法。

小数点固定在某处的表示方式称为定点表示。如果小数点位置在数符后面,那么该数为纯小数,当小数点位置在数值部分最后,那么该数为纯整数。如果使用原码,小数定点机的表示范围为【-(1减2的-n次方),(1减2的-n次方)】,整数定点机的表示范围为【-(2的n次方-1),2的n次方-1】


计算机组成原理笔记

 

由于更多的时候,真值并不是纯小数或者纯整数,所以不适合用定点表示法,于是就有了浮点表示法,即小数点位置可以浮动。


计算机组成原理笔记

 


计算机组成原理笔记

对于位数固定的数,基数越大能表示的数值范围越大,但是精度越小,反之亦然。

与定点数相比,在位数一样的情况下,浮点数所能表示的数值范围、精度、溢出处理、程序编程方面都由于定点数。但是在运算速度、运算规则、硬件成本方面不如定点数。

小数十进制转换二进制方法http://www.cnblogs.com/upzone/articles/1389365.html

当浮点数的尾数为0或者阶码等于或者小于所能表示的最小值,那么机器会把该浮点数当做0来看待,称为机器0.

现代计算机一般采用iee754标准。


计算机组成原理笔记
 9 定点运算

移位运算,对于二进制而言,左移N位相当于乘于2的N次方,右移N位相当于除以2的N次方。可以用移位加减法来代替乘法运算。


计算机组成原理笔记
 

 上面有符号的移位称为算术移位,对于无符号的移位称为逻辑移位,不管是左移还是右移,空位都用0来填补。

一般来说,减法运算都通过补码的方式转换成加法运算,称为补码加减法。时钟例子,6-3等价于6+9 mod 12.


计算机组成原理笔记
 

 

当两个正数相加或者两个负数相加的时候就会出现溢出的情况,这样一来计算就不准确了。在补码加减法中判断溢出的方式是当两个相同符号的补码相加之后的结果符号发生变化的时候即为溢出。

溢出的例子,补码加减法的结果是118,但是期望的值是-138。


计算机组成原理笔记

按照笔算的方式去计算乘法,计算机实现起来比较复杂。于是通过分析笔算过程,把两数相乘分拆为多次移位和加法运算,对于两个四位数相乘,需要做四次移位和四次加法运算。

针对每种算术运算都要有一个对应的硬件配置,核心是加法器和寄存器;当进行逻辑运算时,也需要对应的逻辑电路,ALU电路则是同时具备算术运算和逻辑运算的部件。


计算机组成原理笔记

 

13 指令一般由操作码和地址码组成,操作码表示操作的类型,比如加减乘除、移位、传送转移等。地址码表示源操作数所在的地址、中间结果存放的地址、下一条指令的地址。这里的地址可以是主存的地址、寄存器的地址或者设备的地址。一条指令,地址码可以是一个至多个。

操作类型有以下几种:

  • 数据传送包括寄存器与寄存器之间、寄存器与存储单元、存储单元与存储单元之间的数据传送。从源到目的地的传送,如对存储器的读load或者写store。
  • 算术逻辑运算,即加减乘除、加1、减一、求补数。还有与或非、异或等逻辑运算。
  • 移位
  • 转移,打破顺序执行程序指令,在某些情况下把下一条执行指令指向另一个位置。
  • 输入输出,完成从外部设备的寄存器读取一个字到cpu的寄存器,或者反过来把cpu寄存器的数据写入到外部设备的寄存器。
  • 其他,等待指令、停机指令、空操作指令等。

寻址方式是指确定本条指令的数据地址,以及下一条指令的指令地址,他与硬件结构密切相关。他可以分为指令寻址和数据寻址两大类。

指令寻址可以分为顺序寻址和跳跃寻址两大类,顺序寻址由PC自增(PC用于存放下一条指令的地址),自动形成下一条指令的地址;跳跃寻址则要通过转移指令来完成,如下图。


计算机组成原理笔记

 

数据寻址种类较多,必须指定一个字段来表示寻址的种类。因为指令中的地址通常并不是数据所在的真实地址所以称为形式地址A。数据所在的真实地址则称为有效地址EA。


计算机组成原理笔记

各类寻址包括:

立即寻址,地址字段并不是地址,而是操作数本身。

直接寻址,地址字段就是EA,可以直接访问存储器得到数据。

隐含寻址,指令中的某个操作数地址隐含在累加器ACC中。

间接寻址,形式地址指向主存中的某个位置为EA,再由EA找到数据本身。

寄存器寻址,数据直接存在寄存器上面,指令包含了寄存器的编号,无需读主存,性能好

堆栈寻址,用寄存器来存储栈顶指针SP,操作数只能从SP指向的主存位置存取。


计算机组成原理笔记

 

14 cpu结构

cpu包含运算部件和控制部件两大部分。

当程序一旦进入存储器之后,就由计算机自动完成取指令和执行指令的操作,这一系列操作就是由控制器完成的。它负责协调控制计算机各个部件执行程序的指令序列,基本功能是取指令、分析指令、执行指令。

  • 取指令,控制器必须能够自动的从存储器中取出指令。能够发出取指令的命令,能够将主存中的指令取出放到控制器里。
  • 分析指令,包括分析这个指令要完成什么样子的操作,分析指令的操作数地址,能够找到有效指令。
  • 执行指令,根据分析出来的操作类型和操作数,形成操作控制信号序列,通过对运算单元、主存、io设备的操作完成指令。
  • 此外控制器还必须能够控制主机和io之间的信息交换,以及对总线的管理。也要具备处理中断的能力

总的来说,控制器必须能够控制程序的顺序执行(指令控制),产生完成每条指令所需的控制命令(操作控制),对各种操作实施的时间控制(时间控制),对数据进行算术和逻辑运算(数据加工)和处理中断的能力。


计算机组成原理笔记
 

15 指令周期

cpu执行完一条指令所需要的时间称为指令周期。指令周期包括取指阶段和执行阶段
计算机组成原理笔记

下面的四个周期都有访问主存的操作,取指周期是为了取得指令,间址周期是为了取得有效地址,执行周期是为了取得操作数,中断周期是为了保存程序断点。
 
计算机组成原理笔记

下图是一个取指周期的数据流。PC存放当前指令的地址,该地址经过MAR送至地址总线。控制部件cu向存储器发出读命令,使对应MAR所指地址内容经过数据总线送到MDR,再送到IR。于此同时PC+1形成下一条指令的地址。


计算机组成原理笔记

16 提高cpu性能除了升级硬件之外,更重要的是改进系统结构,提高系统并行性。

目前使用的最广泛的提高系统并行性的方法是,指令流水线。

串行时


计算机组成原理笔记

流水线技术,利用重叠时间,不同的指令在不同的部件上面并发执行。和软件的并发执行(cpu时间+io等待)的道理是相同的,所谓的bigpipe也是采用这种流水线的思路。
 
计算机组成原理笔记

 

17 中断

使用中断来进行主机和io设备之间的交换信息,可以提高cpu和io设备的并行性,提高cpu的效率。

除此之外,中断还有很多其他的作用。下面是引发中断的一些原因:

  • 人为设置的中断,他是在程序中人为设定的。一旦执行到这种人为中断时,计算机会停止当前的程序,转入中断处理程序。
  • 程序性事故,比如溢出、除0、操作码不能识别。
  • 硬件故障,磁盘坏掉、电源掉电
  • io设备,启动之后,数据就绪就会向cpu发送中断请求。
  • 外部事件,比如通过键盘,ctrl+c来中断命令。

在一个指令周期结束后,cpu会检查中断请求触发器,查看是否有来自中断源的请求。当同时出现多个中断请求时,按照优先级来安排处理。对于io设备,一般来说高速设备的优先级会更高。


计算机组成原理笔记
 中断判优可以采用软件、也可以使用硬件来实现。

在中断周期后,cpu要自动完成一系列指令。首先是保护现场,把PC中的指令保存到存储器中,可以存在特定的地址单元(如0号地址),也可以存在堆栈。然后寻找中断服务程序的入口地址,并把地址放到pc中。然后关闭中断响应,避免在中断周期中出现嵌套中断。

 

18 控制单元

机器内的大部分操作都是cpu内部的操作或者访问主存的操作,cpu内部的操作速度很较快,而访问主存的操作速度较慢,一般把最长的时间作为基准,所以把访问一次主存的时间作为机器周期


计算机组成原理笔记
 

 

 


 
 


 
 
 
 

 

 

 

 


 


 


 

 

 

 

 


 

 

 


 

 


 


 
 

 


 
 
 
 

 





 

 

相关文章: