计算机组成原理:存储系统【三】


🌈个人主页:godspeed_lucip
🔥 系列专栏:计算机组成与原理基础
- 🚀1 只读存储器ROM
- ✈️1.1 总览
- ✈️1.2 各种ROM
- ✈️1.3 计算机内部重要的ROM
- ✈️1.4 总结
- 🚀2 主存储器与CPU的连接
- 🛩️2.1 总览
- 🛩️2.2 芯片输入输出信号的常用缩写
- 🛩️2.3 位扩展
- 🛰️2.3.1 单块芯片的连接
- 🛰️2.3.2 两块芯片的位扩展
- 🛰️2.3.3 多块芯片的位扩展
- 🛩️2.4 字拓展
- 🛰️2.4.1 译码器片选法
- 🛰️2.4.2 线选法
- 🛩️2.5 字位同时扩展
- 🛩️2.6 总结
- 🛩️2.7 关于译码器的补充
- 🚀3 双口RAM与多模块存储器
- 🛫3.1 知识总览
- 🛫3.2 双端口RAM
- 🛸3.2.1 示意图
- 🛸3.2.2 访问情况
- 🛫3.3 多体并行器
- 🛸3.3.1 访问时间
- 🛫3.4 多模块存储器
- 🛫3.5 总结
- 🚀4 总结
🚀1 只读存储器ROM
✈️1.1 总览

✈️1.2 各种ROM

注意:虽然闪存既可以读也可以写,但是它还是属于ROM
✈️1.3 计算机内部重要的ROM
计算机主机的结构如图所示

在关机后,主存中RAM的数据全部被清除,那么如果不采取其他措施,CPU就无法读取指令。
操作系统实际上是安装在辅存中,CPU需要读取主板上BIOS(属于ROM)芯片上的“自举装入程序”,它负责引导操作系统的装入(开机)。
逻辑上,我们应该将主存视为RAM+ROM的组成。CPU将二者统一编码,比如说,ROM占1KB,则ROM存储单元编号为1-1023,而RAM存储单元的编号起始位为1024。
✈️1.4 总结

ROM也具有“随机存取”的特点
🚀2 主存储器与CPU的连接
🛩️2.1 总览

🛩️2.2 芯片输入输出信号的常用缩写

字扩展:字扩展就是要增加存储字的数量
位扩展:增大数据的范围
🛩️2.3 位扩展
🛰️2.3.1 单块芯片的连接

🛰️2.3.2 两块芯片的位扩展

🛰️2.3.3 多块芯片的位扩展

🛩️2.4 字拓展
🛰️2.4.1 译码器片选法
(1)两块芯片的字拓展

与之前一样,两块芯片接入同样的电信号、同时并联接入数据总线,这就要求同一时间只有一块芯片可以工作,使用A13位控制芯片的片选信号(称为1-2译码器)。这样,可表示地址范围从212变为213。
(2)多块芯片的字扩展
使用上文的思路,只要片选信号足够多,就可以连接多块芯片(由1-2译码器变为2-4译码器、3-8译码器)

如图所示的电路,地址范围由一块芯片的213变为215
🛰️2.4.2 线选法
(1)基本思路与译码器片选法一致,但是它不是采用译码器。假设有两块芯片,则A13、A14直接与芯片连接,可想而知,只有当A13、A14位01或10时芯片才单独工作,输出的信号才有效。这样就使地址空间不连续。而采用译码器片选法得到的地址空间是连续的。
🛩️2.5 字位同时扩展

🛩️2.6 总结

🛩️2.7 关于译码器的补充

一般来说,CPU与主存之间是如此连接的,CPU在将地址电信号发出后,会等信号稳定后再发出主存请求信号,译码器才工作,这样主存得到的就是一个稳定的信号。
🚀3 双口RAM与多模块存储器
🛫3.1 知识总览

🛫3.2 双端口RAM
🛸3.2.1 示意图

它的作用是优化多核CPU访问一根内存条的速度。同时它需要两组完全独立的数据线、地址线、控制线。CPU、RAM中也要有更复杂的控制电路。
🛸3.2.2 访问情况

解决办法:

🛫3.3 多体并行器
1. 假设电脑中有四个内存条,每个内存条中有八个存储单元。在给存储单元编号时,可以先将内存条编号,再将存储单元编号。有高位交叉编址及低位交叉编址。如图所示。

2. 将各存储单元的编号写为十进制,分别为
高位编址:
| 0 | 8 | 16 | 24 |
|---|---|---|---|
| 1 | 9 | 17 | 25 |
| … | … | … | … |
| 7 | 15 | 23 | 31 |
低位编址:
| 0 | 1 | 2 | 3 |
|---|---|---|---|
| 4 | 5 | 6 | 7 |
| … | … | … | … |
| 28 | 29 | 30 | 31 |
🛸3.3.1 访问时间
(1)我们知道,主存在一次读写操作后(假设时间为r),需要一定时间进行恢复(一般较长,这里假设为3r)。
(2)当使用高位交叉编址时,CPU按序访问主存,由于0-8号存储单元连续的分布在一条主存内,则每访问一个存储单元都要花费4r的时间,如图所示

(3)当使用低位交叉编址时,CPU按序访问主存,由于0-4号存储单元是一次分布在M0-M4中,读写操作完成后主存立即进行恢复(这个操作无须CPU介入)。所以当访问完第4个存储单元后,第1个存储单元已经恢复并可以立即访问,如图所示。

可以看出低位编址的性能大大超过高位编址
(4)可以看出,

🛫3.4 多模块存储器
分为多体并行存储器、单体多字存储器

可以看出,单体多字存储器的灵活性较差,特别是当目的数据不是连续的4个单元时,单体存储器会读入较多的无用数据。
🛫3.5 总结

🚀4 总结
计算机组成原理如一座精密的交响乐团,微观中展现着电子的舞蹈,宏观中奏响着科技的交响曲。
它拆解复杂问题为简单指令,通过微处理器的默契协作,创造出无尽可能。
存储单元如记忆的灯塔,指引信息的航程。
总线是信息的大道,连接着各个功能模块,使计算机成为无比高效的智慧之器。
在计算机组成原理的魔法指导下,世界逐渐变得更加智能、便捷、创新。
渴望挑战计算机组成与原理的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多CO的奇迹吧。我们推出了引领趋势的💻CO专栏:《计算机组成原理基础》 ,旨在深度探索CO的实际应用和创新。🌐🔍


相关文章:
计算机组成原理:存储系统【三】
🌈个人主页:godspeed_lucip 🔥 系列专栏:计算机组成与原理基础 🚀1 只读存储器ROM✈️1.1 总览✈️1.2 各种ROM✈️1.3 计算机内部重要的ROM✈️1.4 总结 🚀2 主存储器与CPU的连接🛩️2.1 总览&…...
学习Android的第十三天
目录 Android TextClock 文本时钟控件 TextClock 控件主要属性和方法 简单的 TextClock 参考文档 Android AnalogClock 控件 AnalogClock 属性 Android Chronometer 计时器 Chronometer 属性 Chronometer 主要方法 范例: 完整的计时器 范例: …...
【开源】SpringBoot框架开发学校热点新闻推送系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 新闻类型模块2.2 新闻档案模块2.3 新闻留言模块2.4 新闻评论模块2.5 新闻收藏模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 新闻类型表3.2.2 新闻表3.2.3 新闻留言表3.2.4 新闻评论表3.2.5 新闻收藏表 四、系统展…...
代码随想录刷题笔记 DAY 28 | 复原 IP 地址 No.93 | 子集 No.78 | 子集 II No.90
文章目录 Day 2801. 复原 IP 地址(No. 93)1.1 题目1.2 笔记1.3 代码 02. 子集(No. 78)2.1 题目2.2 笔记2.3 代码 03. 子集 II(No. 90)3.1 题目3.2 笔记3.3 代码 Day 28 01. 复原 IP 地址(No. 9…...
LeetCode LCR 085. 括号生成
题目链接https://leetcode.cn/problems/IDBivT/description/ 正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 class Solution {public List<String> generateParenthesis(int n) {List<String>…...
django定时任务(django-crontab)
目录 一:安装django-crontab: 二:添加django_crontab到你的INSTALLED_APPS设置: 三:运行crontab命令来创建或更新cron作业: 四:定义你的cron作业 五:创建你的管理命令ÿ…...
【教3妹学编程-算法题】输入单词需要的最少按键次数 II
2哥 : 叮铃铃,3妹,准备复工了啊,过年干嘛呢,是不是逛吃逛吃,有没有长胖呢。 3妹:切,不想上班,假期能不能重来一遍啊,虽然在家我妈张罗着要给我相亲呢。可是在家还是很好的…...
突破编程_C++_高级教程(多线程编程实例)
1 生产者-消费者模型 生产者-消费者模型是一种多线程协作的设计模式,它主要用于处理生产数据和消费数据的过程。在这个模型中,存在两类线程:生产者线程和消费者线程。生产者线程负责生产数据,并将其放入一个共享的数据缓冲区&…...
精读《Function Component 入门》
1. 引言 如果你在使用 React 16,可以尝试 Function Component 风格,享受更大的灵活性。但在尝试之前,最好先阅读本文,对 Function Component 的思维模式有一个初步认识,防止因思维模式不同步造成的困扰。 2. 精读 什…...
类的构造方法
在类中,出成员方法外,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每个类实例化一个对象时,类都会自动调用构造方法。 构造方法的特点: 构…...
ChatGPT和LLM
ChatGPT和LLM(大型语言模型)之间存在密切的关系。 首先,LLM是一个更为抽象的概念,它包含了各种自然语言处理任务中使用的各种深度学习模型结构。这些模型通过建立深层神经网络,根据已有的大量文本数据进行文本自动生成…...
「优选算法刷题」:判定字符是否唯一
一、题目 实现一个算法,确定一个字符串 s 的所有字符是否全都不同。 示例 1: 输入: s "leetcode" 输出: false 示例 2: 输入: s "abc" 输出: true限制: 0 < len(s) < 100 s[i]仅包含小写字母 二…...
详解自定义类型:枚举与联合体!
目录 编辑 一、枚举类型 1.枚举类型的声明 2.枚举类型的优点 3.枚举类型的使用 二、联合体类型(共用体) 1.联合体类型的声明 2.联合体的特点 3.相同成员的结构体和联合体的对比 4.联合体大小的计算 5.用联合体判断大小端 三.完结散花 悟已往之不谏&…...
第13章 网络 Page738~741 13.8.3 TCP/UDP简述
libcurl是C语言写成的网络编程工具库,asio是C写的网络编程的基础类型库 libcurl只用于客户端,asio既可以写客户端,也可以写服务端 libcurl实现了HTTP\FTP等应用层协议,但asio却只实现了传输层TCP/UDP等协议。 在学习http时介绍…...
Tomcat要点总结
一、Tomcat 服务中部署 WEB 应用 1.什么是Web应用 (1) WEB 应用是多个 web 资源的集合。简单的说,可以把 web 应用理解为硬盘上的一个目录, 这个目录用于管理多个 web 资源。 (2)Web 应用通常也称之为…...
Ubuntu 20.04 安装RVM
RVM是管理Ruby版本的工具,使用RVM可以在单机上方便地管理多个Ruby版本。 下载安装脚本 首先使下载安装脚本 wget https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer 如果出现了 Connection refused 的情况, 可以考虑执行以下命令修改dns,再执…...
Ps:污点修复画笔工具
污点修复画笔工具 Spot Healing Brush Tool专门用于快速清除图像中的小瑕疵、污点、尘埃或其他不想要的小元素。 它通过分析被修复区域周围的内容,无需手动取样,自动选择最佳的修复区域来覆盖和融合这些不完美之处,从而实现无痕修复的效果。 …...
JAVA面试题17
什么是Java中的静态内部类?它与非静态内部类有什么区别? 答案:静态内部类是定义在另一个类中的类,并且被声明为静态。与非静态内部类不同,静态内部类不依赖于外部类的实例,可以直接访问外部类的静态成员。 …...
数据备份和恢复
数据备份和恢复 什么情况下会用到数据备份呢 数据丢失的场景 人为误操作造成的某些数据被误操作 软件BUG造成数据部分或者全部丢失 硬件故障造成数据库部分或全部丢失 安全漏洞被入侵数据恶意破坏 非数据丢失场景 基于某个时间点的数据恢复 开发测试环境数据库搭建 相同数据库的…...
核心篇 - 集成IS-IS配置实战
文章目录 一. 实验专题1.1. 实验1:配置单区域集成IS-IS1.1.1. 实验目的1.1.2. 实验拓扑1.1.3. 实验步骤(1)配置IP地址(2)配置IS-IS 1.1.4. 实验调试(1)查看邻接表(2)查看…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...
leetcode73-矩阵置零
leetcode 73 思路 记录 0 元素的位置:遍历整个矩阵,找出所有值为 0 的元素,并将它们的坐标记录在数组zeroPosition中置零操作:遍历记录的所有 0 元素位置,将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...
goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...
用鸿蒙HarmonyOS5实现国际象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码,使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...
