计算机组成原理——组成篇

计算机的总线

1 、总线的作用及概述

解决设备间通讯问题。

总线是为了解决不同设备之间的通信问题。

总线可以连接CPU和IO设备。

计算机组成原理——组成篇

2 、总线分类:片内总线、系统总线

片内总线:连接CPU內部高速缓存、寄存器、运算单元的总线;

计算机组成原理——组成篇

系统总线:数据总线、地址总线、控制总线

计算机组成原理——组成篇

数据总线:双向传输各个部件的数据信息;数据总线的位数(总线宽度)是数据总线的重要参数(一般于CPU位数相同)

总线如果是32位 则一次可传递4个字节的数据 总线如果是64位 则一次可传递8个字节的数据

地址总线:指定源数据或目的数据在内存中的地址;地址总线的位数和存储单元相关

(地址总线的位数=n,寻址范围0~2^n-1)

控制总线:控制总线是用来发出各种控制信号的传输线;

控制信号经由控制总线从一个组件发给另一个组件;

控制组件可以监视不同组件之间的状态(就绪/未就绪);

3 、总线的总裁:为了解决总线使用权的冲突问题。

仲裁方法有三种。(链式查询、计时器定时查询、独立请求)

为了解决各设备之间的总线使用权问题;

链式查询:各个设备与仲裁器串联,当有设备申请总线使用权时,仲裁器发出使用许可,总是按照设备优先顺序接收到信号,导致优先级高的设备总是能先获取到使用权。

链式查询的优缺点:

好处:电路复杂度低,总裁方式简单

坏处:优先级低的设备难以获得总线使用权

坏处:对电脑故障敏感

计算机组成原理——组成篇

计时器定时查询:仲裁控制器对设备标号并使用计数器累计计数,其次当控制器接收到仲裁信号后,往所有设备发出计数值,计数值与设备编号保持一致时会优先获得使用权。

计时器查询的工作过程:设备主要是通过设备地址与计数器进行对比的,课程使用计数器是为了方便理解,可以理解为设备有一个唯一的设备地址,将设备地址的值与计数器比较,如果一致的话,才会得到总线使用权。

计算机组成原理——组成篇

独立请求:每个设备均有纵线独立连接仲裁器,可独立向仲裁器发送和接受请求,同时接到多个请求信号时,仲裁器有权按优先级分配使用权。

独立请求的优缺点:

好处:响应速度快,优先顺序可动态改变

坏处:设备连接多,总线控制复杂

计算机的输入输出设备

常见的输入输出设备

字符输入设备:键盘(薄膜键盘,机械键盘)。

图像输入设备:鼠标;数位板;扫描仪。

图像输出设备:显示器(CRT显示器、液晶显示器);打印机;投影仪。

输入输出接口的通用设计

数据线:IO设备与主机之间进行数据交换的传送线(单向,双向)。

状态线:IO设备状态向主机报告的信号线(是否正常连接;是否被占用)。

命令线:CPU向设备发送命令的信号线(发送读写信号;发送启动停止信号)。

设备选择线:主机选择IO设备进行操作的信号线。(对连在设备总线上进行选择)

计算机组成原理——组成篇

计算机组成原理——组成篇

计算机组成原理——组成篇

计算机组成原理——组成篇

计算机组成原理——组成篇

计算机组成原理——组成篇

CPU IO 设备的通信方法(程序中断、 DMA ):

前提:CPU速度和IO设备速度不一致

程序中断:外围设备就绪时,向CPU发出中断,专门电路相应中断信号。

提供低速设备通知CPU的一种异步的方式、CPU可以高速的运转同时兼顾低速设备的响应

第一种方法如果频繁打断CPU的工作,会降低其效率。

计算机组成原理——组成篇

因此产生了第二种方法,DMA 直接存储器访问方法:

DMA:DMA(Direct Memory Access,直接存储器访问)。对于没有DMA的情况,CPU可能需要被IO设备频繁打断,并且由CPU进行IO设备缓存与主存之间的数据拷贝,占用大量的CPU时间。对于有DMA的情况,当IO设备准备完成以后,会先通知CPU,然后后续的数据传输由DMA协助就可以完成,不再需要CPU的参与。

DMA的出现就是为了解决批量数据的输入/输出问题。DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。这样数据的传送速度就取决于存储器和外设的工作速度。

通常系统总线是由CPU管理的,在DMA方式时,就希望CPU把这些总线让出来,即CPU连到这些总线上的线处于第三态(高阻状态),而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束信号。

因此DMA控制器必须有以下功能:

1、 能向CPU发出系统保持(HOLD)信号,提出总线接管请求;

2、 当CPU发出允许接管信号后,负责对总线的控制,进入DMA方式;

3、 能对存储器寻址及能修改地址指针,实现对内存的读写;

4、 能决定本次DMA传送的字节数,判断DMA传送是否借宿。

5、 发出DMA结束信号,使CPU恢复正常工作

计算机组成原理——组成篇

计算机储存器概述

存储器的分类

存储介质分类

  • 半导体存储器:内存、u盘、固态硬盘等
  • 磁存储器:磁带、磁盘等

存取方式分类

  • 随机存储器(RAM):随机读取、与位置无关
  • 串存储器: 与位置有关、按顺序查找
  • 只读存储器(ROM):只读不写

存储器的层次结构

读写速度

存储容量

价格

容量+价格=>位价:每比特位价格

计算机组成原理——组成篇

计算机组成原理——组成篇

缓存:速度快 位价高

主存:速度适中 位价适中

辅存:速度慢 位价低

缓存 主存层次

原理:局部性原理

CPU访问存储器时,无论是 存取指令还是 存取数据,所访问的存储单元都是 趋于聚集在一个较小的连续区域中

实现:在CPU与主存之间增加一层速度快容量小的缓存

目的:解决主存速度不足的问题

主存 辅存层次

原理:局部性的原理

实现:主存之外增加辅助存储器(磁盘、SD卡、U盘等)

目的:解决主存容量不足的问题

计算机组成原理——组成篇

计算机的主存储器与副存储

主存储器 —— 内存 RAM (随机存储器)

计算机组成原理——组成篇

工作原理:RAM,(随机存储器;Random Access Memory)通过 电容存储数据,必须每隔一段时间刷新一次,如果断电,那么一段时间后将丢失所有数据。

内存与 CPU 的交互:

计算机组成原理——组成篇

操作系统位数与内存大小关系

首先,2是从比特位来的,一个比特位可以表示0和1。

那么,对于32位地址,就有2^32次方的寻址范围可以表示,换算成数值就是4*2^30次方,指的是寻址范围,每个地址按字寻址是1byte,所以总的过程就是4 * 1024 * 1024 * 1024 * 1Byte = 4G。

32位CPU的意思是,一次CPU寻址,可以寻址32个比特位长度的地址,也就是最多2^32个数据地址,这里面,对于每个地址,寻址数据大小是一个字节1Byte,可以得到4G的结果;因此,对于32位CPU,安装超过4G的物理内存,都是浪费的。

计算机组成原理——组成篇

辅助存储器 —— 磁盘

计算机组成原理——组成篇

计算机组成原理——组成篇

工作原理:表面是可磁化的硬磁特性材料,移动磁头径向运动读取磁道信息。

磁盘内容读取主要算法

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

例题:假如磁盘最外圈磁道为1,最内圈磁道为5,磁头现在在4磁道,且磁头移动向外,求不同寻道算法的磁头移动顺序,假设磁头需要读取的顺序为142315.

先来先服务算法( FCFS :按顺序访问进程的磁道读写需求。读取顺序为142315.

最短寻道时间优先算法( SSTF :与磁头当前位置有关,优先访问离磁头最近的磁道。读取顺序为452311

扫描算法(电梯算法 /SCAN ):每次只往一个方向移动,到达一个方向的尽头后反方向移动。读取顺序为432115

循环扫描算法( C-SCAN :只往一个方向移动。读取顺序为451123

计算机的高速缓存

高速缓存的工作原理

前提知识之主存存取数据的方法

  1. :指存放在一个存储单元中的二进制代码组合

  2. 字块:存储在连续的存储单元中而被看作是一个单元的一组字

计算机组成原理——组成篇

计算机组成原理——组成篇

计算机组成原理——组成篇

例题:假设主存用户空间容量为4G,字块大小为4M,字长为32位,则对于字地址中的块地址m和块内地址b的位数,至少应该是多少?

计算机组成原理——组成篇

高速缓存的内部存储结构与主存的逻辑结构非常类似,缓冲容量较小,缓冲的速度更快

计算机组成原理——组成篇

计算机组成原理——组成篇

CPU 可以从高速缓存和主存中获取数据,前者的效率比后者高。

命中率

  • 命中率是衡量缓存的重要性能指标
  • 理论上CPU每次都能从高速缓存存取数据时候,命中率为1

计算机组成原理——组成篇

计算机组成原理——组成篇

计算机组成原理——组成篇

例题

假设CPU在执行某段程序时,共访问了Cache命中2000次,访问主存50次,已知Cache的存取时间为50ns,主存的存取时间为200ns,求Cache-主存系统的命中率、访问效率和平均访问时间。

:命中率、访问效率、平均访问时间分别是0.97、91.7%、54.5ns

计算机组成原理——组成篇

高速缓冲的替换策略

替换时机:高速缓存内没有需要运行的数据,就会从主存内拿数据。

计算机组成原理——组成篇

替换算法:随机算法、先进先出算法( FIFO )、最不经常使用算法( LFU )、最近最少使用算法( LRU

  • 随机算法( RAND :每一次需要发生替换,随机选取一个高速缓存的位置,然后把相关的内容替换掉
  • 先进先出算法( FIFO ):把高速缓存看做是一个先进先出的队列,优先替换最先进入的字块

计算机组成原理——组成篇
  • 最不经常使用算法( LFU ):优先淘汰掉最不经常使用的字快,需要额外的空间记录字块的使用频率

计算机组成原理——组成篇

计算机组成原理——组成篇
  • 最近最少使用算法( LRU ):优先淘汰一段时间内没有使用的字块;有多种实现方法,一般是用双向列表;把当前访问节点置与链表前面(保证链表头部节点是最近使用的)

计算机的指令系统

机器指令的形式

机器指令主要由两部分组成:操作码.地址码

操作码:操作码指明指令所要完成的操作;操作码的位数反映了机器的操作种类(比如有8位,那么就是2^8 = 256种操作)

地址码:直接给出操作数或者操作数的地址;分 三地址指令二地址指令一地址指令零地址指令

计算机组成原理——组成篇

三地址指令:

二地址指令:

一地址指令:

零地址指令:

机器指令的操作类型(数据传输、算数逻辑操作、位移操作、控制指令)

1. 数据传输

  • 寄存器之间、寄存器与存储单元、存储单元之间的传送(存储单元可以是主存,高速缓存,硬盘等等…)
  • 数据读写、交换地址数据、清零置一等操作

2. 算数逻辑操作

  • 操作数之间的加减乘除的运算
  • 操作数的与或非等逻辑位运算

3. 位移操作

  • 数据左移(乘2)、数据右移(除2)
  • 完成数据在算术逻辑单元的必要操作

4. 控制指令

  • 等待、停机、空操作、中断等

机器指令的寻址方式(指令寻址、数据寻址)

指令寻址(顺序寻址、跳跃寻址)

1. 顺序寻址:通过程序计数器PC加1,自动形成下一条指令的地址

计算机组成原理——组成篇

计算机组成原理——组成篇

2. 跳跃寻址:通过转移指令实现

计算机组成原理——组成篇

数据寻址(立即寻址、直接寻址、间接寻址)

1. 立即寻址:机器指令内包含了操作的数据,无需访问存储器

2. 直接寻址:机器指令内包含了数据在内存中的地址,无需计算数据地址

计算机组成原理——组成篇

3. 间接寻址 :机器指令内包含了数据地址在内存的地址,通过内存地址找到真正的数据。需要访问一次或多次主存来获取操作数

计算机组成原理——组成篇

数据寻址的优缺点

计算机组成原理——组成篇

计算机的控制器

控制器是协调和控制计算机运行的

程序计数器

  1. 用来存储下一条指令的地址
  2. 循环从程序计数器中拿出指令
  3. 当指令被拿出时指向下一条指令

时序发生器

  1. 电气工程领域,用于发送时序脉冲
  2. CPU依据不同的时序脉冲有节奏的进行工作

指令译码器

  1. 是控制器的主要部件之一
  2. 计算机指令有操作码和地址码组成
  3. 翻译操作码对应的操作以及控制传输地址码对应的数据

指令寄存器

  1. 也是控制器的主要部件之一
  2. 从主存或高速缓存取计算机指令

主存地址寄存器

  1. 保存当前CPU正要访问的单元的地址

主存数据寄存器

  1. 保存当前CPU正要读或写的主存数据

通用寄存器

  1. 暂时存放或存送数据或指令
  2. 可保存ALU的运算中间的结果
  3. 容量比一般专业寄存器要大

计算机的运算器

运算器时用来进行数据运算加工的

数据缓存器

  1. 分为输入缓冲和输出缓冲
  2. 输入缓冲暂时存放外设送过来的数据
  3. 输出缓冲暂时存放送往外设的数据

ALU

  1. ALU:算术逻辑单元,是运算器的主要组成
  2. 常见的位运算(左右移、与、非)
  3. 算术运算(加减乘除)

计算机组成原理——组成篇

状态字寄存器

  1. 存放运算状态(条件码、进位、溢出、结果正负等)
  2. 存放运算控制信息(调试跟踪标记位、允许中断位等)

通用寄存器

  1. 用于暂时存放或传送数据或指令
  2. 可保存ALU的运算中间结果
  3. 容量比一般专用寄存器要大

CPU 指令执行的过程

由于是在 cpu 内执行的 , 所以涉及的设备有 : 控制器 ( 程序计数器 , 指令译码器 , 时序发生器 , 指令寄存器 )

高速缓存 ( 数据缓存器 , 指令缓存器 ), 运算器 ( 通用寄存器 , 数据寄存器 , 状态寄存器 ), 他们是由片内总线连接的 ;

计算机组成原理——组成篇

计算机组成原理——组成篇

详细过程是 :

首先,系统operator(自己)调用系统功能的时候,会生成指令,和数据,然后它们缓存入指令缓存和数据缓存中(例:数据缓存有”地址”1,数据120;

指令缓存有地址101,操作码MOV,地址码RO,R1),接着程序计数器会把指令缓存中,指令的地址记录下来(例:101), 指令会通过片内总线传输到指令寄存器(操作码,地址码),接着又从指令寄存器发送到指令译码器中,之后程序计数器会+1(例:变成102), 之后指令译码器译码完成(把汇编语言变成机器语言),之后其通过片内总线发送控制信号给运算器进行运算:

例如,把指令缓存中,地址101,操作码MOV,地址码R0,R1的数据中的R1,加载到ALU(算数逻辑单元,是逻辑门),再通过片内总线的数据总线,传入数据缓存器,然后把R1数据覆盖掉R0,记录运算状态(状态寄存器)并送出运算结果给UI至此,就完成了这条指令的操作,CPU会执行下一条指令(如果有发起操作)

CPU 的流水线设计

执行过程中,控制器和运算器不能同时工作,所以CPU综合利用率不高所以需要流水线设计

计算机组成原理——组成篇

计算机组成原理——组成篇

可以看到,非流水线情况,指令只能一条一条被执行,而流水线的情况,系统可以并发执行指令(不等前一条结束,后一条指令就可以执行),从而大大增加执行效率

计算机组成原理——组成篇

Original: https://www.cnblogs.com/ZhouKali/p/16175500.html
Author: Zh0uKal1
Title: 计算机组成原理——组成篇

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622188/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Read View的可见性判断理解

    读了 @SnailMann大佬【MySQL笔记】正确的理解MySQL的MVCC及实现原理 收益颇丰,非常感谢! 但对其中如何判断事务是否可见性还是不太理解,于是作了本文,在原博客基…

    数据库 2023年6月16日
    079
  • 汇编语言Assembly Language.asm–8086(持续更新)

    汇编语言Assembly Language.asm–8086 数据转移指令MOV 数据流向图 XCHG OPD,OPS数据交换指令 功能:将源操作数和目的操作数内容互换…

    数据库 2023年6月14日
    073
  • 一个属性同时使用Autowired和Resource注解会发生什么?

    首发于公众号:BiggerBoy右侧图片wx扫码关注有惊喜欢迎关注,查看更多技术文章 如题,如果在同一个属性上使用@Autowired注解注入bean1,然后使用@Resource…

    数据库 2023年6月11日
    077
  • 中文技术文档写作规范

    使用 markdown 格式书写文档 只使用一二三级标题,三级标题下面的并列性内容使用列表展示 二级标题前使用行分隔符表示分隔 段落之间使用一个空行隔开 一句话或者以逗号分隔的句子…

    数据库 2023年6月6日
    082
  • 图文实例解析,InnoDB 存储引擎中行锁的三种算法

    前文提到,对于 InnoDB 来说,随时都可以加锁(关于加锁的 SQL 语句这里就不说了,忘记的小伙伴可以翻一下上篇文章),但是并非随时都可以解锁。具体来说,InnoDB 采用的是…

    数据库 2023年6月6日
    099
  • kafka学习

    Kafka概述 Kafka是分布式(点对点模式)(发布-订阅模式)消息系统,由Scala 写成, 它主要用于处理流式数据。本质是基于消息队列缓存数据. Kafka对消息保存时根据T…

    数据库 2023年6月16日
    082
  • Hbase中(java.io.IOException: Could not locate executable nullbinwinutils.exe in the Hadoop binarie)

    报错信息如下: 结合大神分析,应该为本机使用Hbase时,没有配置其环境变量。 出处:https://www.cnblogs.com/jessezeng/p/5520915.htm…

    数据库 2023年6月11日
    085
  • Redis学习(1)—Redis概述

    什么是NoSQL NoSQL:Not Only SQL,意思不仅仅是SQL,它是属于 非关系型数据库。那什么是关系型数据库?数据结构是一种有行有列的数据库。 NoSQL数据库是为了…

    数据库 2023年6月14日
    079
  • 索引的树结构

    二分查找 二叉树 二叉平衡树 B-TREE :二叉平衡树的基础上,使加载一次节点,可以加载更多路径数据,同时把查询范围缩减到更小 缺点:业务数据的大小可能远远超过了索引数据的大小,…

    数据库 2023年5月24日
    065
  • 数据结构堆

    引用 [](https://zh.wikipedia.org/wiki/%E5%A0%86%E7%A9%8D “维基百科堆结构”) [堆结构](https:…

    数据库 2023年6月9日
    093
  • 为什么说不变模式可以提高性能

    在Java中基础类型的包装类都是不可变的类,如Boolean、Byte、Character、Double、Float、Integer、Long、Short,另外还有String。这…

    数据库 2023年6月16日
    0103
  • java中如何打印出一个类中所有变量呢?

    下文笔者将讲述,使用java代码打印出一个类中所有变量的方法分享,如下所示: 在日常开发中,我们经常需获取一个类的变量信息,然后操作变量,那么该如何编写此类代码呢?当然我们可以借助…

    数据库 2023年6月11日
    074
  • 安装Pycharm2022.2.1版本操作说明

    下载pycharm:https://www.jetbrains.com.cn/pycharm/download/#section=windows 我下载的是社区版”Co…

    数据库 2023年6月14日
    0162
  • MySQL实战45讲 16

    16 | “order by”是怎么工作的? 以市民表为例,假设要查询城市是”杭州”的所有人名字,并且按照姓名 排序返回前 1000…

    数据库 2023年6月14日
    098
  • SpringMvc(一)-初识

    1、环境搭建 1.1 jar包 4.3.18.RELEASE org.springframework spring-web ${spring.version} org.spring…

    数据库 2023年6月16日
    084
  • JavaWeb核心篇(1)——HTTP/Tomcat/Servlet

    JavaWeb核心篇(1)——HTTP/Tomcat/Servlet 在正式讲解JavaWeb前,我们先来了解一下JavaWeb: Web:全球广域网,也被称为万维网(www),能…

    数据库 2023年6月14日
    0109
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球