计算机组成原理 第三章笔记

news2024/9/21 1:25:56

视频网址

仅仅是笔记记录,若有错误请指出。

零碎的

存储器的分类

  1. 磁表面存储器:磁盘,磁带
  2. 磁芯存储器
  3. 半导体存储器 RAM ROM
  4. 光存储器
    看下面这个思维导图

在这里插入图片描述

存储器的性能指标

  1. 存储容量:存储字数×字长
  2. 单位成本: 每位价格=总成本/总容量
  3. 存储速度:数据传输率=数据的宽度/存储周期
  4. 存取时间Ta:启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间
  5. 存取周期Tm:连续两次独立得访问存储器操作(读或写)之间所需得最小时间间隔
  6. 主存带宽Bm:数据传输率,表示每秒从主存进出信息得最大数量,单位字/秒 字节/秒(B/s)或位/秒(b/s)

存储器与CPU的协同工作

存储器的简单模型及寻址的概念

存储器芯片的基本结构

在这里插入图片描述

  1. 译码驱动电路:将地址总线的地址信号翻译乘对应存储单元的选通信号
  2. 存储矩阵:由大量相同的位存储单元阵列构成
  3. 读写电路:用来完成读/写操作。包括读出放大器和写入电路
  4. 地址线:单向输入,其根数与存储字的个数有关
  5. 数据线:双向的,其根数与读出或写入的数据位数有关
  6. 片选线:控制哪个存储芯片被选中
    数据线数和地址线数共同反映存储芯片容量的大小
    如:地址线11根,数据线8根,则芯片容量=211×8=16KB

寻址

按字节、字、半字、双字寻址,个人理解就是对内存以字节、字、半字、双字进行分割
内存储器的容量位1KB,字长为4B,
按字节寻址:210B/1B=210=1K,也就是1K个存储单元
按字寻址:210B/22B=28,也就是256个存储单元
按半字寻址:210B/21B=29,也就是512个存储的那元
按双字寻址:210B/23B=27,也就是128个存储单元

主存与CPU的连接

位扩展

在这里插入图片描述

字扩展

  1. 线选法
    在这里插入图片描述
  2. 译码片选法在这里插入图片描述

插曲:译码器:就是74LS138之类的译码器
在这里插入图片描述

  1. 使用译码器对主存容量进行字扩展
    在这里插入图片描述

字位同时扩展

在这里插入图片描述

总结:

在这里插入图片描述

小练习

在这里插入图片描述

在这里插入图片描述

双口RAM和多模块存储器

  1. 双口RAM
    在这里插入图片描述
  2. 多模块存储器
    在这里插入图片描述
    低位交叉编址:存取时间+恢复时间=一个周期,在恢复时间中可以访问下一个存储单元,高位交叉编址的恢复时间没有利用起来
    计算题:
    模块数m=4,存储周期为T,字长为W,数据总线宽度为W,总线传输周期为r,连续存取n个字,求交叉存储器的带宽
    就是有m个存储体,存储周期为T,字长为W,每个r时间启动下一个存储体,连续存取n个字,求存储器的存取速率
    连续存取n个字耗时=T+(n-1)r
    带宽=(nw)/(T+(n-1)r)

低位交叉编址可以并行工作,如总线宽度为mW时,可以同时取出长度为mW的数据

高速缓冲存储器

局部性原理

在这里插入图片描述3个5ns怎么来的,a[0]->CPU 5ns,CPU进行加法运算 5 ns,存回原存储单元 5ns,这是数组的一个元素所耗时,一共有10个,所以要×10

命中率H:CPU欲访问的信息已在Cache中的比率.设一个程序执行期间,Cache的总命中次数为Nc,访问内存的总次数为Nm,则H=Nc/(Nc+Nm),缺失率 M =1-H.
设Tc为命中时的Cache访问时间,Tm为未命中时的访问时间,那么Cache—主存系统的平均访问时间Ta=Htc+(1-H)tm

性能分析

只用写图片中蓝色的字,系统的效率e=t/系统的平均访问时间
在这里插入图片描述

地址映射

在这里插入图片描述

  1. 全相联映射:就是空位随便放
    在这里插入图片描述
  2. 在这里插入图片描述

在这里插入图片描述
总结:
在这里插入图片描述
需要理解的 :
全相联:主存字块标记|字块内地址
直接映射:主存字块标记|Cache字块地址|字块内地址
组相联:主存字块标记|组地址|字块内地址
标记项:有效位,标记位

替换算法

  1. 随机算法(RAND):随机地确定替换地Cache块。它的实现比较简单,但没有依据程序访问的局部性原理,故可能命中率较低
  2. 先进先出算法(FIFO):选择最早调入的行进行替换。它比较容易实现。也没有依据程序访问的局部性原理,可能会把一些需要经常使用的程序块也作为最早进入Cache的块替换掉(如循环程序)
  3. 近期最少使用算法(LRU):依据程序访问的局部性原理选择近期内长久未访问过的存储行作为替换的行,是堆栈类算法.实现:每行设置一个计数器,Cache每命中一次,命中行计数器清零,其他行计数器都加1,替换的时候将计数值最大的行踢出去
  4. 最不经常使用算法(LFU):将一段时间内被访问次数最少的存储行换出,也需要设置一个计数器,从0开始计数,被访问的行计数器加1,替换时将计数值最小的行换出
    例子:
    全相联映射:空位随意放,这里按照顺序来放,LRU算法视频上是这么说的:从后往前找,保留最后一个主存地址块号,从前往后数,第一个就是被踢出去的主存地址块号。
    到了2的时候,Cache已经满了,
    5,11 只有一个那保留
    4 出现了三次,前面两次的划掉,保留最后一个
    6 出现了两次,第一次的划掉,保留最后一个
    22 14 8 只有一个那保留
    从前往后数,第一个就是12,被踢出去的就是12.
    个人理解:从前往后数,在cache中找到第一个为未命中的(以最新状态为准,比如说4 未命中 命中 命中,那么最新状态就是命中),直接踢出去
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    过程: 替换策略以FIFO为例
    商 余数 组号 第几个 标记就是商
    4 除以 4 1 0 0 1
    6 除以 4 1 2 2 1
    12 除以4 3 0 0 2
    4 除以4 1 0 商和余数相同命中了
    8 除以4 2 0 0 满了把4替换出去
    14 除以4 3 2 2 2
    22 除以4 5 2 2 满了把6替换出去
    6 除以 4 1 2 2 满了把14替换出去
    4 除以4 1 0 0 满了把12踢出去
    11 除以4 2 3 3 1
    5 除以4 1 1 1
    2 除以4 0 2 2 把22 踢出去

    二路组相联映射
    已知 除数 商 余数 倒推出被除数
    除数;Cache的组数,这个是固定死的
    商就是 标记
    余数就是确定Cache是那一组的
    那么只要商(标记)和余数(Cache的组号)相同倒推出来的被除数一定相同

    在这里插入图片描述
    在这里插入图片描述
    例题:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Cache工作原理

在这里插入图片描述
需要知道的:

  1. 地址结构的分析
    十进制:地址除以组数,商为标记Tag,余数为组号Index
    二进制:组数为2的n次方,高位为Tag,低位为组号Index
  2. Cache容量的几岁按
    标记项:
    地址映射:有效位,标记位
    替换算法:替换算法控制位
    写策略:一致性维护位
    数据项

写策略

命中

解决的问题就是如何保证Cache中的数据与主存中的数据保持一致的问题

  1. 写回法:写命中时改Cache中的内容,等该块被踢出去的时候再写回内存
    在这里插入图片描述

  2. 全写法:就是写命中的时候同时把数据写入Cache和主存
    在这里插入图片描述

未命中

  1. 非写分配法:只写入主存,不调入Cache
    在这里插入图片描述

  2. 写分配法:把主存中的块调入Cache,在Cache中修改,搭配写回法使用
    在这里插入图片描述

小结

写回法搭配写分配法: CPU <——>Cache<——>主存
全写法搭配非写分配法:在这里插入图片描述

虚拟存储器

在这里插入图片描述

  1. 页式虚拟存储器
    在这里插入图片描述

  2. 段式虚拟存储器
    在这里插入图片描述

  3. 段页式虚拟存储器
    把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页,程序对主存的调入,调出以页为基本单位,每个程序对应一个段表,每段对应一个页表。虚拟地址:段号+段内页号+页内地址
    例题在这里插入图片描述

  4. 快表TLB
    在这里插入图片描述

半导体存储器

RAM

在这里插入图片描述

存储周期:从启动存储到下次存取的时间在这里插入图片描述在这里插入图片描述

DRAM的刷新

  1. 一般是2ms刷新一次
  2. 每次刷新一行
    之所以要用行列地址,是需要减少连通线的数量
  3. 刷新就是读出一行的信息后重新写入,占用1个读/写周期
    在这里插入图片描述

刷新方案1

每次读写完都刷新一行 也就是分散刷新,当写作业举例,这个就是天天写作业
系统的存储周期变为1μs,前0.5μs用于正常读写,后0.5μs用于刷新某行

刷新方案2

2ms内集中安排时间全部刷新,存储周期还是0.5μs,用于刷新存储器的时间称为访存“死区”。就是开学前一天疯狂补作业

刷新方案3

2ms内每行刷新1次即可。2ms内产生128次刷新请求,每隔2ms/128=15.6μs一次 每个15.6μs内有0.5μs的“死时间”
在这里插入图片描述

ROM

  • MROM(掩膜式只读存储器) 存储内容由半导体制造厂按用户提出的要求在芯片的生产过程中直接写入,无法修改
  • PROM(一次可编程只读存储器) 需用用专门的设备一次性写入,之后无法修改
  • EPROM(可擦除可编程只读存储器)
  • UVEPROM(紫外线擦除)
  • EEPROM(电擦除)
  • Flash Memory(闪存) 就是U盘
  • SSD(固态硬盘) 控制单元+Flash芯片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/196902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android Studio Linux系统模拟器启动异常

一、报错&#xff1a;/dev/kvm device permission denied 1、首先检查/dec/kvm的所属关系 命令&#xff1a;ls -al /dev/kvm 可以看到&#xff0c;属于root用户&#xff0c;组也是root用户 2、查看当前用户是否在root组 命令&#xff1a;grep root /etc/group 显然是没有的…

C语言学习笔记-数组

C 数组 C 语言支持数组数据结构&#xff0c;它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据&#xff0c;但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量&#xff0c;比如 runoob0、runoob1、…、runoob99&#x…

Project3:Ants Vs. SomeBees

Ants Vs. SomeBees1. 前言2. Phase 1&#xff1a;Basic gameplay3. Phase 2&#xff1a;More Ants&#xff01;4. Phase 3: Water and Might5. 测试结果1. 前言 本项目是 CS 61A 的第三个项目&#xff0c;要求是实现一个类似于植物大战僵尸的游戏&#xff0c;这里 Ants 就相当…

【redis】redis的过期策略以及内存淘汰机制

前言 今天我们讨论下redis的过期策略以及内存淘汰机制&#xff0c;如果你想要考察一个人对redis的了解&#xff0c;那吗这个问题是必选的&#xff0c;从他对这个问题的回答中&#xff0c;就可以了解到他的redis深浅。 过期策略 先来介绍下&#xff0c;Redis key 过期删除的策…

虹科产品 | 使用Redis企业版数据库为MySQL增添魅力!

MySQL读取数据慢&#xff1f; 难以轻松扩展&#xff1f; 数据搜索效率低&#xff1f; 无法实时分发数据集&#xff1f; 虹科Redis企业版数据库解决方案来了&#xff01;企业将Redis企业版数据库与MySQL一起使用&#xff0c;可以实现企业缓存或复制数据库&#xff0c;从而使应用…

MATLAB 非线性规划

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

uniapp APP分享;判断用户是否安装APP,已安装直接打开,未安装跳转下载页;uniapp 在外部打开APP(schemes)

场景&#xff1a; A将某商品分享给B&#xff0c;B点击后判断是否安装APP&#xff0c;若安装直接打开&#xff0c;没有安装则跳转下载页&#xff1b; 知识点&#xff1a; uniapp APP分享&#xff1b;判断用户是否安装APP&#xff0c;已安装直接打开&#xff0c;未安装跳转下载…

从零开始的数模(十一)微分方程建模

目录 一、概念 1.1什么是微分方程建模 1.2使用场合 二、基于python的微分方程建模 2.1scipy.integrate.odeint() 函数 ​编辑2.2案例 ​编辑 三、基于MATLAB的微分方程建模 四、偏微分方程的求解 一、概念 1.1什么是微分方程建模 微分方程建模是数学模型的重要方法&am…

AcWing 1081. 度的数量(数位DP)

AcWing 1081. 度的数量&#xff08;数位DP&#xff09;一、问题二 、数位DP三、解析1、题意理解2、题目分析三、代码一、问题 二 、数位DP 这道题是一道数位DP的题目&#xff0c;其实数位DP更像我们在高中阶段学过的排列组合问题中的分类讨论。 数位DP顾名思义就是按照数字的…

B/S端界面控件DevExtreme v22.2新功能 - 如何在日历中显示周数?

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等&#xff09;构建交互式的Web应用程序&#xff0c;该套件附带功能齐…

LeetCode-1145. 二叉树着色游戏【深度优先搜索,二叉树】

LeetCode-1145. 二叉树着色游戏【深度优先搜索&#xff0c;二叉树】题目描述&#xff1a;解题思路一&#xff1a;深度优先搜索分别计算x的左子树lsz和右子树rsz的节点个数。那么除去x与其左右子树的父子树的节点个数为n-1-lsz-rsz。贪心的&#xff0c;那么二号玩家其实可以占据…

Java基础学习笔记(十八)—— 转换流、对象操作流

转换流、对象操作流1 转换流1.1 构造方法1.2 指定编码读写2 对象操作流2.1 对象操作流概述2.2 对象序列化流2.3 对象反序列化流2.4 案例1 转换流 1.1 构造方法 转换流就是来进行字节流和字符流之间转换的 InputStreamReader&#xff1a;是从字节流到字符流的桥梁&#xff0c;…

Linux(八)线程概念

1、线程的本质 线程就是一个进程内部的控制序列 是CPU进行执行调度的基本单元。&#xff08;调度一段代码的执行是通过线程完成的&#xff09; 一个进程中至少有一个线程&#xff08;所以进程与线程的数量关系是 一对一 或 一对多&#xff09; 2、为什么把线程称为LWP LWP…

数学建模之熵权法(SPSSPRO与MATLAB)

数学建模之熵权法&#xff08;SPSSPRO与MATLAB&#xff09;一、基本原理对于某项指标&#xff0c;可以用熵值来判断某个指标的离散程度&#xff0c;其信息熵值越小&#xff0c;指标的离散程度越大(表明指标值得变异程度越大&#xff0c;提供的信息量越多)&#xff0c;该指标对综…

Maxout 激活函数与 Max-Feature-Map (MFM)

前言 最近在读 A Light CNN for Deep Face Representation With Noisy Labels 提到 maxout 激活函数&#xff0c;虽然很好理解&#xff0c;激活的时候选取最大值即可&#xff0c;但是具体细节看了看相关的资料反倒混淆了。参考了一个相关的视频&#xff0c;大致屡清楚为什么说…

技术周 | qemu网络收发包流程

通常我们使用qemu创建虚拟机时&#xff0c;会使用下面的选项指定虚拟网卡设备的类型&#xff0c;以及桥接、tap设备参数等&#xff0c;如下&#xff1a; -device选项用于给虚拟机分配虚拟设备&#xff0c;如磁盘设备、网卡设备等 -netdev选项用于配置虚拟设备的后端&#xff0…

MACD底背离选股公式以及技术指标公式

今天介绍MACD底背离选股公式&#xff0c;整体来说编写难度比较大&#xff0c;按照MACD底背离的定义&#xff0c;需要分别找到2个价格波段低点以及快线DIF的2个低点&#xff0c;并进行比较&#xff0c;最终实现选股。 一、MACD底背离选股公式&#xff08;平替版&#xff09; 首先…

ES6 简介(一)

文章目录ES6 简介&#xff08;一&#xff09;一、 概述1、 导读2、 Babel 转码器2.1 是什么2.2 配置文件 .babelrc2.3 命令行转码2.4 babel-node2.5 babel/register2.6 polyfill2.7 浏览器环境二、 变量1、 let2、 const3、 ES6 声明变量4、 顶层对象的属性5、 globalThis 对象…

TCP协议面试灵魂12 问(二)

为什么不是两次&#xff1f; 根本原因: 无法确认客户端的接收能力。 分析如下: 如果是两次&#xff0c;你现在发了 SYN 报文想握手&#xff0c;但是这个包滞留在了当前的网络中迟迟没有到达&#xff0c;TCP 以为这是丢了包&#xff0c;于是重传&#xff0c;两次握手建立好了…

机器视觉高速发展催热人工智能市场,深眸科技深度布局把握新机遇

曾经&#xff0c;冰箱侧身的标签、空调背面不显眼的小螺丝、微波炉角落里的型号编码等质量检测&#xff0c;是工业生产线中最费人工、最难检测的“老大难”。这主要是因为我国家电行业长期以混产为主要生产方式&#xff0c;一条生产线上可能有几十种型号的钣金件产品同时经受质…