Fork me on GitHub

计算机组成原理

冯·诺依曼结构的工作原理

  • 计算机的五大组成部分
    运算器+控制器( CPU ),存储器( 内存 ),输入设备,输出设备

  • 数据和指令以二进制形式不加区别的存放在存储器中

主板芯片组:南桥和北桥

CPU 直接连接北桥,北桥还连接了内存,北桥通过内部总线连接南桥。
北桥处理快速设备,南桥处理慢速设备

I/O 桥是对南桥北桥的抽象

指令和流水线

指令:操作码 + 操作数(单操作数、双操作数、三操作数)

流水线:取指 + 译码 + 执行 或者 取指 + 译码 + 执行 + 写回

CPU 执行指令是流水线形式,不同部件做不同的操作,高效利用 CPU

速度不匹配问题

速度不匹配问题是计算机的核心问题

CPU 速度非常快,是内存的几百倍,比其他设备高更多数量级

解决办法

  1. 提升硬盘等设备的速度,和 CPU 匹配,现阶段不可能

  2. 承认局限,但充分压榨 CPU 的能力,让 CPU “ 忙死 “

  • 同步 -> 异步
  • 顺序 -> 并发
  • 增加中间层(缓存)

同步和异步

  • 同步类似与餐馆服务员服务完一位客人,客人结账离开后,服务员才接着服务下一位客人

  • 异步类似与餐馆服务员可以同时给多个客人提供服务,给第一位客人上菜后,接着去给另一位客人上菜,而不是一直等待着第一位客户结账

异步实例 DMA

  • 直接内存访问( Direct Memory Access)

  • CPU 发起一个硬盘读的操作以后,不等待硬盘完成,立刻去干别的事情,由 DMA 控制器 来负责把数据从硬盘读到内存,完成后通知 CPU

顺序和并发

顺序:同一时刻只能运行一个程序,在时间线上,程序一个接一个地运行

并发:时间片分配的形式,把 cpu 分成若干时间片,多个程序在 cpu 上分时运行,操作系统进行切换,时间片切换非常短。在单个 cpu 上形成并发的假象,多个 cpu 则是并行

并发的实现

  • 程序在执行时会霸占 cpu ( 因为只有一个 )

  • 操作系统发现一个程序需要等待 IO 操作 ( 硬盘,网络等 ) 的完成,就会让这个程序进入等待队列,数据来了再唤醒它

  • 如果发现这个程序的时间片用完了,就把这个程序放到就绪队列,等待下次运行,涉及到 CPU 的调度策略

  • CPU 释放给别的程序执行

  • ( 注:这里的程序切换,更准确的说是进程切换)

并行

多个 CPU 在同一时间执行多个程序

问题:引发对共享资源的争用问题

增加中间层 - 缓存

上帝的规则:局部性原理

  • 时间局部性:是指如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问。

  • 空间局部性:是指一旦程序访问了某个存储单元,则不久之后,其附近的存储单元也被访问。

CPU 解决速度不匹配问题 - 缓存

  • 当 CPU 要读取一个数据时,首先从 CPU 缓存中查找,找到就立即读取并发送给 CPU 处理

  • 没有找到,就从速率相对较慢的内存中读取并送给 CPU 处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存

本文标题:计算机组成原理

文章作者:Leo

发布时间:2018年03月18日 - 22:03

最后更新:2018年03月18日 - 22:03

原始链接:http://www.leozzy.com/2018/03/19/计算机组成原理/

许可协议: 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!
-------------本文结束 感谢您的阅读-------------