计算机组成原理(二)

由于博主并不是科班出生,计算机方面的只是有所欠缺,所以写几篇博客记录下我所学的知识,希望能对各位像我一样非科班的同学有所帮助.如有错误的地方,望指正,谢谢各位大佬了!!!

计算机总线

总线的概述
  • 总线的概述
  1. 提供对外连接接口
  2. 不同设备通过USB连接
  3. 使外围设备接口统一

输入输出等设备只需要通过IO总线连接带存储器,运算器等设备上,无需一个一个连接.
在这里插入图片描述

  • 总线的分类
  1. 片内总线(CPU内部的总线,是高集成度芯片内部的信息传输线)
    在这里插入图片描述
  2. 系统总线
    连接硬盘,IO设备,USB等设备的总线.在这里插入图片描述
    系统总线总线可分为三类:
  • 数据总线:一般与CPU位数相同,双向传输数据信息,数据总线的位数是数据总线的总要参数.
  • 地址总线: 源数据在内存中的地址,地址总线的位数与存储单元有关,地址总线位数=n,寻址范围0 ~ 2^n.
  • 控制总线:是发出各种信号的传输线,由控制总线从一个组件发给另一个组件.可以监视各个组件的状态.
总线的仲裁

如下图,当硬盘和IO设备,都需要使用总线的时候,总线应该让给硬盘还是让给IO设备使用呢,这是后就需要总线的仲裁.总线的仲裁就是为了解决总线使用权的冲突问题.
在这里插入图片描述
总线仲裁的方法:

  • 链式查询
    当设备1和设备2同事需要总线的时候回发送信号给仲裁控制器,仲裁控制器回发送信号允许设备1先使用,然后才轮到设备2使用.
    在这里插入图片描述
    好处: 电路复杂度低,仲裁方式简单
    坏处:优先级低的设备难以获得使用权.对电路故障敏感.

  • 计时器定时查询
    仲裁控制器对设备编号使用计数器累计计数,接收到信号后,往所有设备发出计数值,计数值与设备编号一致则获得使用权.

    如下图,若设备3请求总线使用权的时候,会发送信号给仲裁控制器,仲裁控制器会将计数器置为3,会发送信号给所有的设备,当计数器值与设备编号一致的时候,将获取使用权.在这里插入图片描述

  • 独立请求
    独立请求每个设备均有总线独立的仲裁器,设备可以单独向仲裁器发送或接受请求,当同时收到信号,仲裁器有权按优先级分配使用权.
    在这里插入图片描述
    优点:响应快
    缺点:线路复杂

计算机的输入输出设备
  • 常见的输入输出设备
    字符输入设备:键盘,鼠标等
    图像输出设备:显示器,投影仪等
  • 输入输出接口的通用设计
    需求: 想设备发送数据?读取数据?设备是否启动成功?设备有没有被占用.
    数据线: I/O设备与主机数据交换的线,风单向传输和双向传输,
    状态线: I/O设备状态向主报告的信号线,查询设备是否练级正常,查询设备是否被占用.
    命令线: CPU向设备发送命令的信号信号线,读写启停信号等.
    设备选择线: 主机选择I/O设备进行操作,对总线上的设备进行选择.
  • CPU与IO设备通信(CPU速度与IO设备速度是不一致的)
    1. 程序中断
      当外围I/O设备准备就绪的时候,向CPU发出中断信号,CPU有专门的电路相应中断信号.
      如下图,cpu值执行主程序,打印机出于待机状态的,此时CPU发送了一个信号,启动打印机的信号,启动之后CPU继续执行主程序,打印机接收到启动信号之后就会进行准备的工作,准备完成之后打印机回向CPU发出中断信号,其后,CPU回响应这个中断信号,之后CPU会进行发送数据的操作,打印机也会同时接收数据,在某一时刻,CPU发送完成,会中断返回,回到原来的主程序中,打印机开始打印数据.
      在这里插入图片描述
      提供低速设备通知CPU的一种异步方式,cpu也可以高速运转时兼顾低速设备的响应.但是,如果频繁的打断CPU并不是一个很好的方法,这样会减缓CPU的工作效率,所以出现了DMA方法.
    2. DMA(直接存储器访问)
      DMA不需要通过CPU访问主存,可以之间访问主存,这样不需要打断CPU,提高了效率.硬盘和显卡中都有DMA的设备.
      在这里插入图片描述
计算机存储器的概述
  • 存储器的分类
    按存储介质分类,分为:
    半导体存储器: 内存,U盘,固态硬盘等
    磁存储器: 磁带,磁盘等
    按存储方式分类,分为:
    随机存储器:随机读取,与位置无关.
    串行存储器:与位置无关,按顺序查找.
    只读存储器(ROM):只读不写

  • 存储器的层次结构
    按读写速度,存储容量,价格等分不同的存储器.
    结构图(存储器的层次结构):
    分缓存,主存,辅存.
    在这里插入图片描述
    CPU,高速缓存,主存三者之间都是可以相互通信,为缓存-主存层次,主存与辅存之间是可以通信的,称为主存-辅存层次.
    在这里插入图片描述
    缓存-主存层次:
    原理:局部性原理.
    实现:在CPU与主存之间添加一层速度快的Cache.
    目的:解决主存速度不足问题.
    注:关于局部性原理,是指CPU访问存储器时,无论是存取还是读取,所访问的存储单元都聚集在一个较小的区域中.
    如图所示,当程序经常访问某片内存时,把这段内存置换到缓存.
    在这里插入图片描述

主存-辅存层次
原理:局部性原理.
实现:主存之外增加辅助存储器.
目的:解决主存容量不足问题.

计算机主存储器与辅助存储器

为什么计算机断电,内存中的内容会丢失,磁盘中的内容不会丢失?
主存储器-内存

  • 随机存储器(RAM).
  • RAM通过电容存储数据,必须隔一段时间刷新一次.
  • 如果掉电,那么一段时间之后将丢失所有数据.

cpu通过数据总线读写数据,通过地址总线获取数据地址.
在这里插入图片描述
32位系统: 最多只支持4GB内存
因为232 = 4 * 230 = 4G.
64位系统:可支持334 GB的内存
因为264 = 234 * 230 = 234.
注: 230 = 1GB.

辅助存储器-磁盘
在这里插入图片描述

  1. 表面是可磁化的硬磁特性材料.
  2. 移动刺头径向运动读取信息.

磁盘所运用的算法:

  • 先来先服务算法
  • 最短询道时间优先算法
  • 扫描算法(电梯算法)
  • 循环扫描算法

下面举一个栗子解释下各个算法怎么读取磁道的.
在这里插入图片描述
先来先服务算法: 按顺序访问进程的磁道读写需求.读取的顺序为: 1 > 4 > 2 > 3 > 1 > 5;
最短询道时间优先算法:与磁头当前位置有关,优先访问离磁头最近的磁道.读取顺序为:4 > 5 > 3 > 2 > 1 > 1
扫描算法(电梯算法):每次只往一个方向移动,到达一个方向需要服务的尽头在反方向移动,是双向的. 顺序为 4 > 3 > 2 > 1 > 1 > 5.但是存在这样的问题:当磁头刚从里向外移动而超越了某一磁道时,恰好又有一进程请求访问此磁道,这时该进程必须等待。将磁头继续从里向外,然后再从外向里扫描完处于外面的所有要访问的磁道后,才处理该进程的请求,致使该请求的请求被大大的推迟。
循环扫描算法: 只往一个方向读取, 现假设由内往外读取,是单向移动, 顺序为4 > 5 > 1 > 1 > 2 > 3.

计算机存储器的高速缓存
  • 高速缓存的工作原理
    字: 存放在一个存储单元中二进制代码组合.
    字块: 存储在连续存储单元中被看作一个单元的字组.包含多个字.
    注:一个字有32位,一个字块有B个字,主存共有M个字块.主内存总字数=B * M;主内存总容量 = 32 * B * M;
    字的地址包含两个部分,前m位指定字块的地址,后b位指定在字块中的地址2m = M,2b = B,如下图:
    在这里插入图片描述
    下面举一个题目来算下m和b:
    在这里插入图片描述

  • 计算机的高速缓存
    缓存和主存逻辑结构类似,缓存容量小,速度更快,缓存也有字和字块的概念,一个字有32位,一个字块有B个字,缓存共有C个字块,字的地址包含两个部分,前c位指定字块的地址,后b位指定在字块中的地址2c = C,2b = B;
    在这里插入图片描述
    高速缓存的工作原理:为了让CPU尽量从缓存中拿数据,这里就不得不提一下命中率,命中率是衡量缓存的重要指标,理论上CPU每次都能从高速缓存中取数据的时候,命中率为1;但实际上不可能每次都能访问到缓存,所以不可能为1.假设访问主存次数Nm,访问缓存次数Nc,那么命中率为h = Nc / (Nm + Nc);
    访问效率的计算方式:
    在这里插入图片描述
    下面做一个练习题计算命中率和访问效率,平均访问时间:
    在这里插入图片描述
    命中率: 在这里插入图片描述
    访问效率:在这里插入图片描述
    平均访问时间:
    在这里插入图片描述

  • 高速缓存的替换策略

  1. 随机算法

  2. 先进先出算法(FIFO)
    把高速缓存看做一个先进先出的队列,优先替换最先进入队列的字块.如图:
    现在如果一个编号为9的字块要进来,那么就会淘汰掉编号为1的字块,让编号的为9的字块进来.
    在这里插入图片描述

  3. 最不经常使用算法(LFU)
    此方式是优先淘汰最不;经常使用的字块,但是需要额外的空间记录自举哀的使用频率.如图:
    每次使用相对字块的时候,相对应的评率就会加1,一旦有新的字块要进来的时候,变会把使用评率最低的字块淘汰掉.
    在这里插入图片描述在这里插入图片描述

  4. 最近最少使用算法(LRU)
    优先淘汰一段时间内没有使用的字块,有多种实现方法,一般使用双向链表.把当前访问的节点置于链表前面,保证;链表头部是最近使用的.淘汰的时候淘汰链表的尾部就可以了.如图:
    每次要添加新的字块的时候,新的字块将会添加到字块的头部,尾部多余的字块将会被淘汰.
    在这里插入图片描述

计算机的指令系统
  • 机器指令的形式
    主要有:操作码和地址码.
    操作码:明确指令要完成的操作,反应机器操作的种类.比如操作码有8位,那它就有28=256种操作.

    地址码:给出的是操作数的地址,分三地址指令/二地址指令/一地址指令.
    三地址指令:(c奥做1地址和2地址放到3地址中)
    在这里插入图片描述
    二地址指令:(操作1地址和2地址放到1地址或者2地址中)
    在这里插入图片描述
    一地址指令:可以是自己对自己的操作,也可以ACC(自增)
    在这里插入图片描述
    零地址指令:
    在机器指令中无地址码,一般是执行空操作,停机操作,中断返回操作.
    在这里插入图片描述

  • 机器指令的操作类型
    机器指令的操作类型有操作数之间的加减乘除运算,操作数之间的非等逻辑位运算,移位操作,以及控制指令,包括等待指令/停机指令,空操作指令,中断指令等.

  • 机器指令的寻址方式

  1. 指令寻址
    顺序寻址是从101 => 102 => 103 => 104 => 105,然后105执行JMP 102指令,又调到102,此为跳跃寻址.
    在这里插入图片描述
  2. 数据寻址
    在这里插入图片描述
    立即寻址:
    在这里插入图片描述
    直接寻址:
    在这里插入图片描述
    间接寻址:
    在这里插入图片描述
    三种寻址方式优缺点:
    在这里插入图片描述
计算机的控制器(x协调控制计算机运行的)

控制器的组成:
在这里插入图片描述

  • 程序控制器
    用来存储下一条指令地址,循环从程序计数器中拿出指令,当指令被拿出,指向下一条指令.
  • 时序发生器
    电气工程领域的,用于发送时序脉冲,cpu依据不同的时序脉冲由节奏的进行工作.
  • 指令译码器
    由操作码和地址码组成.用于翻译操作码对应的操作以及控制传输地址码对应的数据.
  • 指令寄存器
    从主存或高速缓存存取计算机指令.
  • 主存地址寄存器
    保存当前CPU要访问的内存单元的地址.
  • 主存数据寄存器
    保存当前CPU正要读写的主存数据
  • 通用寄存器
    用于暂时存放或传送数据或指令,保存ALU的运算中间结果.容量比一般寄存器大.
计算机的运算器
  • 数据缓冲器
    分为输入缓冲和输出缓冲,输入缓冲暂时存放外设送来的数据,输出缓冲暂时存放送往外设的数据.
  • ALU
    是算术逻辑单元,主要完成常见的位运算,以及算术运算.
    如下图即ALU的图解,A和B为输入,F为输出,K为各种运算线路.在这里插入图片描述
  • 状态寄存器
    可以存放运算状态(溢出,结果正负等),存放运算控制信息(调试跟踪标记位,允许中断等).
  • 通用寄存器
    用于暂时存放或传送数据或指令,保存ALU的中间结果,容量比一般寄存器大.
计算机指令的执行过程
  • 指令的执行过程
    在这里插入图片描述
    执行时序图:
    在这里插入图片描述
    在这里插入图片描述

  • 指令执行的问题
    运算器和控制器不能同时工作.(CPU的综合利用率不高).
    CPU的流水线设计:
    在这里插入图片描述
    CPU流水线设计是串行执行效率的3倍,公式如下:
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值