第3章 存储系统(2)

3.3 主存储器与CPU连接

3.3.1 连接原理

现代计算机的MAR和MDR都在CPU内部
(1)主存储器通过数据总线,地址总线,控制总线与CPU连接。
(2)数据传输率=数据总线宽度*总线频率
(4)控制总线(读写线)控制读写操作。
在这里插入图片描述


3.3.2 主存的扩展

数据总线宽度等于存储字长

  • 1.位扩展法【增加存储字长,发挥数据总线的传输能力】

    • 将数据总线的不同线连接不同的存储芯片,属于同一个地址的不同的比特位。
    • 地址线连接方式相同。
    • 数据线连接方式不同。
    • CS片选信号需要连接全部芯片
    • 例如使用8个8k*1位的的芯片改造成8k*8位的芯片 在这里插入图片描述
  • 2.字扩展法【增加存储器的字数,更好利用CPU的寻址能力,扩大寻址范围】

    • 同一根数据线地址线连接多个芯片。
    • 使用片选线控制同一地址不同芯片读取顺序。
    • 地址线的低位用于芯片内部寻址,地址线的高位用于芯片定位。地址线高位输入到地址译码器后转换成具体芯片编号。【大部分情况是这样,具体题目具体分析】。
    • 在这里插入图片描述

3.3.3 存储芯片的地址分配和片选

  • 1.线选法
    使用一个地址线对应一个芯片

    优点:不需要地址译码器。

    缺点:不能使用连续空间。

    • 原因:
      • 如下图所示A13,A14只能取值10或01。【不能为11同时存取】
      • 其空间范围是(10 0000....000010 1111...1111)和(01 0000...000001 1111...1111)。
      • 其中00 xxxx…xxxx和11 xxxx…xxxx空间没有使用到。
        在这里插入图片描述
  • 2.译码片选法
    n条地址线经过译码器可以转化成 2 n 2^n 2n个不同的芯片编号

    优点:地址空间连续。

    • 以A13,A15为片选信号为例。
    • 片选信号的A14为无效信号,可以为任何值。
    • 而A13和A15决定了芯片选取。第一个0x0,第二个0x1,第三个1x0,第四个1x1。 在这里插入图片描述

3.3.4 存储器与CPU的连接

  • 地址线的连接:
    CPU地址线的低位与存储芯片的地址线连接。高位是在扩充芯片时使用,选择具体芯片。
  • 数据线的连接:
    CPU数据线与存储器芯片不一定相等,相等可以直接连接。不相等时需要进行芯片位扩展
  • 读写控制线:
    读写线控制读写操作。可设计成两根,也可以一根。
  • 片选线的连接:
    芯片被选中由片选信号决定。由CPU通过CS传递给芯片。

3.4 外部存储器

3.4.1 磁盘存储器

  • 优点:
    ①容量大,位价格低
    ②记录介质可以重复使用
    ③记录信息可以长期保存
    非破坏读出

  • 缺点:
    ①读取速度慢
    ②机械结构复杂

1.磁盘存储器:

  • 磁盘存储器组成:磁盘驱动器,磁盘控制器,盘片。
  • 存储区域组成:磁头,柱面,扇区(扇区是读写的基本单位)
  • 磁盘指标:
    • 记录密度:
      • 道密度: 磁道个数除以磁盘半径。
      • 位密度: 磁道单位长度的二进制代码位数。【由于每个区块中数据量相同,越靠近内部,区块越小,密度越大】
      • 面密度: 位密度乘以道密度。
    • 磁盘容量:格式化后的容量变小。
    • 平均存取时间: 寻道时间(磁头移动时间)+旋转时间(定位扇区时间)+传输时间(传输数据时间)
    • 数据传输率:理论速率=磁盘转速r*磁道容量N字节
      D r = r N D_r=rN Dr=rN
  • 磁盘地址:
磁盘驱动器号[硬盘号]柱面(磁道)号[磁头臂移动]磁面号[激活磁头]扇区号

2.磁盘阵列:

RAID0无冗余,无校验,无容错能力,条带化,提高存取速度
RAID1有容错能力,代价是容量减半
RAID2-RAID5通过校验提高容错能力
总结通过多个磁盘,提高传输率。并行提高数据吞吐量,镜像提高安全可靠性,数据校验位提供容错能力。

3.4.2 固态硬盘

固态硬盘(SSD)基于闪存技术的存储技术。
S S D 组成 = { 一个或多个闪存芯片 闪存翻译层【用于将逻辑块号映射到对应的物理地址】 SSD组成 = \begin{cases} 一个或多个闪存芯片\\ 闪存翻译层【用于将逻辑块号映射到对应的物理地址】 \end{cases} SSD组成={一个或多个闪存芯片闪存翻译层【用于将逻辑块号映射到对应的物理地址】
数据读写单位:页。【IO总线指明逻辑块号,映射成页号】
页内有数据,不允许写入数据。重新写入数据到页中需要将一整块擦除重新写入。 【先将旧数据放入新物理地址,再重新写入,最后修改闪存翻译层的映射地址】。写比读慢。
在这里插入图片描述
对比:

固态硬盘机械硬盘
扇区
磁道

在这里插入图片描述

  • 缓轻磨损:
    • 1.动态磨损:优先选择累计擦除次数少的闪存块。
    • 2.静态磨损:将读多写少的数据迁移到被多次擦除的区域。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

性能优化“万金油”:缓存Cache

1、首次请求数据时,先从缓存中获取,如果没有,则继续向数据库中获取。获取到数据后,将数据保存到缓存中。再次请求数据,一样先从缓存中获取,成功获取,“缓存命中”。多次请求中,命中次数占全部请求次数的比例,叫“命中率”。如果数据源的数据发生变化,而缓存中的数据没…

4.11作业

服务器端 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer> //服务器端类 #include<QMessageBox> //消息对话框 #include<QTcpSocket> //客户端类 #include<QList> //链表容器QT_BEGIN_NAMESPACE namespace Ui { cla…

【JAVASE】抽象类和接口及其抽象类和接口的区别

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G-CSDN博客 目标&#xff1a; 1. 抽象类 2. 接口 3. Object 类 1. &am…

linux中rpm包与deb包的区别及使用

文章目录 1. rpm与deb的区别2. deb软件包的格式和使用2.1 deb软件包命令遵行如下约定2.2 dpkg命令2.3 apt-命令 3. Unix和Linux的区别Reference 1. rpm与deb的区别 有的系统只支持使用rpm包安装&#xff0c;有的只支持deb包安装&#xff0c;混乱安装会导致系统问题。 关于rpm和…

C语言——实践小游戏(贪吃蛇)代码版

大家好久不见&#xff0c;我是残念我回来了&#xff0c;希望在你看完之后&#xff0c;能对你有所帮助&#xff0c;有什么不足请指正&#xff01;共同学习交流 本文由&#xff1a;残念ing原创CSDN首发&#xff0c;如需要转载请通知 个人主页&#xff1a;残念ing-CSDN博客&#x…

Linux网络名称空间的调试方法全面分析

Linux网络名称空间是一种广泛使用的技术&#xff0c;用于隔离网络环境&#xff0c;特别是在容器化和微服务架构中&#x1f4e6;。然而&#xff0c;随着网络名称空间的广泛应用&#xff0c;开发者和系统管理员可能会遇到需要调试网络名称空间配置和性能的情况&#x1f50d;。本文…

智能驾驶的关键技术:自主泊车轨迹规划

智能驾驶的关键技术&#xff1a;自主泊车轨迹规划 搭载先进的车载传感器、控制器、执行器等装置&#xff0c;具备复杂环境感知、智能化决策等功能的车辆&#xff0c;我们称之其为智能车。智能车的车载决策规划模块用于生成车辆的行驶行为&#xff0c;直接体现车辆行驶的智慧水…

【Tars-go】腾讯微服务框架学习使用01--初始化服务

1 初始INIT-Demo运行 按照官网描述 go get 安装框架依赖 # < go 1.16 go get -u github.com/TarsCloud/TarsGo/tars/tools/tarsgo go get -u github.com/TarsCloud/TarsGo/tars/tools/tars2go # > go 1.16 go install github.com/TarsCloud/TarsGo/tars/tools/tarsgolat…

【网安小白成长之路】6.pkachu、sql-lbas、upload-lbas靶场搭建

&#x1f42e;博主syst1m 带你 acquire knowledge&#xff01; ✨博客首页——syst1m的博客&#x1f498; &#x1f51e; 《网安小白成长之路(我要变成大佬&#x1f60e;&#xff01;&#xff01;)》真实小白学习历程&#xff0c;手把手带你一起从入门到入狱&#x1f6ad; &…

python---3--sort、lambdalen(list1)、sorted_numbers = sorted(numbers)、list.sort()

学习目标&#xff1a; lambda len(list1) sorted_numbers sorted(numbers)list.sort() 目录 学习目标&#xff1a; 学习内容&#xff1a; 匿名函数 lambda表达式 lambda [参数]: 函数 不需要return len(list1) sorted_numbers sorted(numbers) list.sort(keyNone, r…

进程通信(管道)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言 两个进程直接可以进行数据的直接传递吗&#xff1f;答案显然是不可以。 为什么&#xff1f; 我们简单概括就是进程具有独立性&#xff0c;如果说有两个进程&#xff0c;第一个进程可以访问第二个进程的数据&#xff…

ssm“健康早知道”微信小程序

采用技术 ssm“健康早知道”微信小程序的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 需求分析 利用ssm、Java、MyEclipse和mysql数据库等知识点&#xff0c;结合相关设…

【CSDN创作优化2】内嵌图片 `<img>` 标签`height`和`width`属性

【CSDN创作优化2】内嵌图片 标签height和width属性 写在最前面<img> 标签简介控制图像尺寸&#xff1a;height和width属性实例为什么要指定height和width注意事项 使用百分比进行响应式设计小结 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字…

idea 配置各种背景颜色-护眼绿

idea 配置各种背景颜色 1、打开 IDEA 软件&#xff0c;点击左上角的【File】——>【Settings】 2、点击左侧栏中的【Editor】——>【Color Scheme】选项&#xff0c;点击右侧的【scheme】下拉选择你想要的颜色方案。 3、背景色设置护眼绿或其他特定颜色的背景&#xf…

scratch绘制五边形花朵 2024年3月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

目录 scratch绘制五边形花朵 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程…

训练营第二十天(二叉树 part06)

训练营第二十天&#xff08;二叉树 part06&#xff09; 654.最大二叉树 力扣题目地址(opens new window) 题目 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下&#xff1a; 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出…

C++模板初阶(个人笔记)

模板初阶 1.泛型编程2.函数模板2.1函数模板的实例化2.2模板参数的匹配规则 3.类模板3.1类模板的实例化 1.泛型编程 泛型编程&#xff1a;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。模板是泛型编程的基础。 //函数重载 //交换函数的逻辑是一致的&#xff0c…

Java 类加载过程

Java 类加载过程 类的生命周期类的加载过程加载验证准备解析初始化 类的生命周期 类的生命周期&#xff1a; 加载&#xff08;Loading&#xff09;— 验证&#xff08;Verification&#xff09;— 准备&#xff08;Preparation&#xff09;— 解析&#xff08;Resolution&#…

【ArcGIS微课1000例】0109:ArcGIS计算归一化水体指数(NDWI)

文章目录 一、加载数据二、归一化水体指数介绍三、归一化水体指数计算四、注意事项一、加载数据 加载配套数据0108.rar(本实验的数据与0108的一致)中的Landsat8的8个单波段数据,如下所示: Landsat8波段信息对照表如下表所示: 接下来学习在ArcGIS平台上,基于Landsat8数据…

贪心算法|763.划分字母区间

力扣题目链接 class Solution { public:vector<int> partitionLabels(string S) {int hash[27] {0}; // i为字符&#xff0c;hash[i]为字符出现的最后位置for (int i 0; i < S.size(); i) { // 统计每一个字符最后出现的位置hash[S[i] - a] i;}vector<int> …