[计算机科学#6]:从锁存器到内存,计算机存储的构建与原理

[LOGO]:CoreKSets

           【核知坊】:释放青春想象,码动全新视野。          

            我们希望使用精简的信息传达知识的骨架,启发创造者开启创造之路!!!          


内容摘要在上一篇文章中,我们深入了解了计算机如何通过二进制进行高效加法计算。然而,计算仅仅是计算机功能的一部分,如何保存这些计算结果也很重要。存储对于计算机而言,就如同人类的记忆一样不可或缺。我们通过记忆保存信息,以便在未来需要时能够随时调用。计算机虽然不会像人脑那样“遗忘”,但如果没有存储机制,它将无法保存任何数据,每次计算的结果都会在瞬间消失。本文将带你走进计算机存储的世界,从基础的寄存器到复杂的内存模块,逐步揭开计算机存储的基本原理。

关键词:状态保持 RAM 内存


其他相关文章:

[计算机科学#5]:计算机的“数学大脑”——核心部件ALU揭秘-CSDN博客

[计算机科学#4]:二进制如何塑造数字世界(0和1的力量)-CSDN博客

[计算机科学#3]:布尔逻辑 (计算机数学基础)-CSDN博客

1. 常见存储器


        存储器是计算机系统中用于存储数据的关键组件,尽管存在多种类型,但它们的核心功能都是存储数据。不同存储器的主要区别在于是否持久存储(数据是否在断电后保留)和存储速度(读写数据的快慢)。易失性存储器(如RAM)在断电后会丢失数据,但读写速度快,适合临时存储;而非易失性存储器(如ROM、闪存、硬盘)则能在断电后保留数据,适合长期存储。这些特性决定了它们各自的应用场景和成本效益。

1.1 RAM(随机存储)

        RAM是计算机中用于临时存储数据的关键组件,支持快速的随机读写操作,适合频繁的数据访问。例如,当你在电脑上玩游戏时,游戏的实时状态(如角色位置、任务进度等)会被存储在 RAM 中,以便快速读取和更新。然而,RAM 是易失性存储器,一旦断电,数据就会丢失。因此,游戏进度需要定期保存到硬盘等非易失性存储设备中。RAM 的常见类型包括 DRAM(动态随机存取存储器),它通过电容器存储数据,但需要定期刷新以保持数据完整性。

1.2 SRAM(静态存储)

        SRAM是 RAM 的一种类型,使用锁存器存储数据,因此不需要定期刷新,数据在电源持续供应的情况下可以长期保持。SRAM 的速度通常比 DRAM 更快,功耗更低,但成本更高,因此常用于对速度和稳定性要求较高的场景,如 CPU 缓存和高端显卡。例如,在游戏主机中,SRAM 可能用于存储地图数据或角色状态,以便快速读取并确保数据的稳定性。

1.3 DRAM(动态随机存取存储器)

        DRAM是RAM的一种,使用电容器存储数据,需要定期刷新以保持数据完整性。它比SRAM成本更低,但速度较慢,功耗更高。由于其成本效益,DRAM是现代计算机主内存的主要组成部分,用于存储操作系统、应用程序和当前正在处理的数据。

1.4 ROM(只读存储器)

        ROM是一种非易失性存储器,数据在制造过程中写入,通常不可更改。它用于存储固件或系统软件,如BIOS或路由器固件。ROM用于存储启动程序和系统级软件,这些软件在设备启动时加载,用于初始化硬件和操作系统。

1.5 PROM(可编程只读存储器)

        PROM是一种可编程的非易失性存储器,用户可以在制造后写入数据,但写入后通常不可更改。PROM用于存储定制的固件或配置数据,例如嵌入式系统中的启动代码。

1.6 EPROM(可擦写可编程只读存储器)

        EPROM是一种可擦写的非易失性存储器,数据可以通过紫外线照射擦除,然后重新编程。EPROM用于需要多次更新固件的场景,例如开发阶段的嵌入式系统。

1.7EEPROM(电可擦写可编程只读存储器)

        EEPROM是一种可以通过电信号擦写数据的非易失性存储器,擦写速度快,支持多次写入。EEPROM用于存储需要频繁更新的小量数据,如设备的配置参数或用户设置。

1.8 Flash Memory(闪存)

        闪存是一种非易失性存储器,数据在断电后仍然保留。它结合了EEPROM的优点,但具有更高的密度和更低的成本。闪存广泛应用于USB闪存驱动器、固态硬盘(SSD)、智能手机和嵌入式设备中,用于存储操作系统、应用程序和用户数据。

1.9 NVRAM(非易失性随机存取存储器)

        NVRAM是一种非易失性存储器,结合了RAM的随机存取特性和非易失性存储器的数据保留能力。它通常使用电池或其他电源技术来保持数据。NVRAM用于需要在断电时保留数据的场景,例如工业控制系统和某些嵌入式设备。

1.10磁盘存储(HDD/SSD)

        硬盘驱动器(HDD)和固态硬盘(SSD)是用于长期存储数据的设备。HDD使用磁性介质存储数据,而SSD使用闪存技术。磁盘存储用于存储操作系统、应用程序、用户文件和其他大量数据,是计算机系统的主要存储设备。

2. 锁存器


2.1 AND-OR 锁存器

        AND-OR锁存器是一种基础的数字电路存储元件,具有独特的功能和结构特点。它能够存储一个比特的信息,即0或1,通过反馈机制保持输出状态,直到被新的输入信号改变。这种锁存器有两个主要输入:“置位”输入和“复位”输入。置位输入用于将锁存器的输出设置为1,而复位输入则用于将输出设置为0。当置位和复位输入均为0时,锁存器会保持其当前的输出状态不变,这意味着它可以“记住”之前存储的值,即使在没有新的输入信号时也能保持稳定。但是,AND-OR锁存器的置位和复位输入不能同时为1,否则会导致锁存器的输出状态不确定。这种互斥特性要求在实际应用中对输入信号进行严格控制,以避免冲突。

2.2 GATED 锁存器

        上述内容你可能看后感觉非常不易理解,于是我们对其进行改进,将它封装为一个更容易理解的锁存器部件,该部件有2个输入:DATA_INPUT(需要配置存储的数据,0或1) 和 WRITE_ENABLE(读写开关,配置1可以随意更改输出,配置0只能读取不能修改),一个输出DATA_OUPT。

3. 寄存器


        寄存器由一组锁存器组成,可以同时存储多位二进制,寄存器存储的位数就叫做位宽。常见的寄存器位宽有,8位、16位、32位、64位,当今的大多数电脑位宽都是32位和64位。寄存器的主要特点是其读写速度非常快,通常比主内存(RAM)的访问速度要快得多。它们通常位于CPU内部或靠近CPU的位置,用于存储CPU在执行程序时需要频繁访问的数据,如指令地址、操作数、中间结果等。寄存器的使用可以显著提高计算机的运行效率,因为它们减少了对主内存的访问次数。

        如图,8位寄存器由8个锁存器组成,通过一根控制线统一管理这些锁存器的读写操作。当这根控制线激活写功能时,数据输入端的每一位都可以被写入到对应的锁存器中,从而更新寄存器的输出状态。而当写功能关闭(即进入只读模式)时,即使输入端的数据发生变化,锁存器中之前保存的状态也不会被修改。由于这根控制线同时管理所有8个锁存器的写操作,因此这种操作被称为“写入一个字节(8位)”。

4.矩阵寄存器


        随着对存储容量需求的增加,单纯通过扩展8位寄存器的方式(如直接并排放置更多锁存器)来构建16位、32位或64位寄存器变得越来越不灵活。这种简单扩展不仅会导致线路复杂度急剧增加,还会显著提高硬件成本和控制难度。因此,研究人员们探索了更高效的设计方法。

        他们采用了一种矩阵形式的布局,将锁存器规则地排列成网格状,利用行线和列线的交叉点来唯一标识每个锁存器。通过在矩阵中增加一些逻辑门,可以精确地控制任何一个锁存器,从而实现对任何一个数据位的读写操作。然而,如果直接使用行和列的交叉位置来控制每个锁存器,会导致控制线路数量过多,从而增加控制成本。

        为了优化这一过程,研究人员利用了二进制的特性。他们将锁存器的位置用行列序号来表示,而这些序号则用二进制形式表示。通过这种方式,每个锁存器都可以通过一个唯一的地址来标识。这种使用二进制序号来标识锁存器位置的方法被称为地址。通过地址机制,可以高效地定位和访问矩阵中的任何一个锁存器,从而显著减少了控制线路的数量,并简化了整体的控制逻辑。

        通过该方式我们可以拓展更大的不同规模的寄存器矩阵,例如256(8位地址),1024(10位地址),2048(11位地址)等寄存器。

5.更大的存储器


        通过矩阵布局和地址编码的方式,可以高效地将小型寄存器块组合成更大容量的寄存器系统。例如,我们可以使用8个256比特的寄存器块,通过8条数据地址线来精确选择每个寄存器块中的任意一个比特位。同时,利用3条存储块片选地址线来确定操作哪一个256比特的寄存器块。此外,仅需一条数据线即可输入待存储的数据位,而读写操作则通过单独的读写控制线来管理。这种设计不仅优化了线路数量,还提高了存储系统的灵活性和可扩展性。

        6.寄存器表


        在许多应用场景中,为了更直观地使用和管理寄存器,我们常常将寄存器抽象为一张数据和地址对应的表格。这种表格形式的表示方法能够清晰地展示每个寄存器的地址以及其对应的数据内容,使得开发者可以快速定位和操作所需的寄存器。

        对于那些经常接触嵌入式系统的开发者来说,这种表格形式的寄存器表示在各种模块的说明文档中屡见不鲜。例如,在微控制器或嵌入式芯片的文档中,寄存器表格通常会详细列出每个寄存器的地址、名称、位宽、默认值以及功能描述。通过这些表格,开发者可以轻松地了解如何通过特定的地址访问和修改寄存器中的数据,从而实现对硬件模块的精确控制。

文章总结


        从简单的锁存器到复杂的内存模块,计算机存储系统的发展经历了漫长的过程。寄存器和内存作为计算机存储体系的核心部分,各自承担着不同的任务。寄存器用于快速存储和处理数据,而内存则为计算机提供了广阔的工作空间。通过合理的存储组织方式和高效的寻址机制,计算机能够高效地管理海量数据,从而实现复杂的计算任务。在未来,随着技术的不断进步,计算机存储系统还将继续发展。例如,新型存储介质如闪存(Flash)和相变存储器(PCM)的出现,为计算机存储带来了新的可能性。这些存储介质具有更高的存储密度、更快的读写速度和更低的功耗,有望进一步提升计算机的性能和效率。无论技术如何发展,存储始终是计算机不可或缺的一部分,它将陪伴着计算机不断前行。

        感谢阅览,如果你喜欢该内容的话,可以点赞,收藏,转发。由于 Koro 能力有限,有任何问题请在评论区内提出,Koro 看到后第一时间回复您!!!


其他精彩内容:

[计算机科学#1]:计算机的前世今生,从算盘到IBM的演变之路-CSDN博客

[计算机科学#2]:从继电器到晶体管的电子计算机发展史(庞然大物的进化)-CSDN博客


参考内容:

Crash Course Computer Science(Y-T)

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

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

相关文章

如何删除Google Chrome中的所有历史记录【一键清除】

谷歌浏览器记录了用户访问过的网站。这方便了查找,但有时也需要清理。删除所有历史记录很简单,只要按照以下步骤操作。 1. 打开谷歌浏览器 首先要启动谷歌浏览器。点击右上角的三个点,进入主菜单。 2. 进入历史记录界面 在菜单中找到“历史…

关于浏览器对于HTML实体编码,urlencode,Unicode解析

目录 HTML实体编码 URL编码 Unicode编码 解析层次逻辑 为什么<script></script>不可以编码符号 为什么不能编码JavaScript:协议 为什么RCDATA标签中的都会被解析成文本 为什么HTML编码了<>无法执行 HTML实体编码 通过特殊语法&#xff08;<、>…

【数据分享】2020年中国高精度森林覆盖数据集(免费获取)

森林作为全球陆地生态系统的主体&#xff0c;分布面积广、结构复杂&#xff0c;承担着调节气候、维护生态安全、改善环境等方面的重要作用。我国的森林资源丰富&#xff0c;据《中国森林资源报告&#xff1a;2014—2018》统计&#xff0c;我国森林覆盖率已经达到23.04%。森林覆…

C语言学习之动态内存的管理

学完前面的C语言内容后&#xff0c;我们之前给内存开辟空间的方式是这样的。 int val20; char arr[10]{0}; 我们发现这个方式有两个弊端&#xff1a;空间是固定的&#xff1b;同时在声明的时候必须指定数组的长度&#xff0c;一旦确定了大小就不能调整的。 而实际应用的过程中…

【深度学习-Day 2】图解线性代数:从标量到张量,理解深度学习的数据表示与运算

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

首页数据展示

排版 现在做首页的排版&#xff0c;依旧是偷antd里面的东西 使用card包裹list的样式 import React from react import axios import { Card, Col, Row, List } from antd import { EditOutlined, EllipsisOutlined, SettingOutlined } from ant-design/icons; import { Avat…

使用Set和Map解题思路

前言 Set和Map这两种数据结构,在解决一些题上&#xff0c;效率很高。跟大家简单分享一些题以及如何使用Set和Map去解决这些题目。 题目链接 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 138. 随机链表的复制 - 力扣&#xff08;LeetCode&#xff09; 旧…

尝试leaflet+webassemly

前言 笔者在github发现rust版本的leaflet&#xff0c;发现是用wasm-bindgen包装的&#xff0c;尝试使用一下 Issues slowtec/leaflet-rshttps://github.com/slowtec/leaflet-rs 正文 准备 新建一个react项目&#xff0c;安装rsw依赖 pnpm i -D vite-plugin-rsw cargo ins…

机器学习实战,天猫双十一销量与中国人寿保费预测,使用多项式回归,梯度下降,EDA数据探索,弹性网络等技术

前言 很多同学学机器学习时总感觉&#xff1a;“公式推导我会&#xff0c;代码也能看懂&#xff0c;但自己从头做项目就懵”。 这次我们选了两个小数据集&#xff0c;降低复杂度&#xff0c;带大家从头开始进行分析&#xff0c;建模&#xff0c;预测&#xff0c;可视化等&…

SQL数据库系统全解析:从入门到实践

一、数据库世界入门指南 在数字时代&#xff0c;数据就像新时代的石油&#xff0c;而数据库系统就是储存和管理这些宝贵资源的仓库。对于初学者来说&#xff0c;理解数据库的基本概念是迈入这个领域的第一步。 数据库本质上是一个有组织的数据集合&#xff0c;它允许我们高效…

【大模型】图像生成:StyleGAN3:生成对抗网络的革命性进化

深度解析StyleGAN3&#xff1a;生成对抗网络的革命性进化 技术演进与架构创新代际技术对比StyleGAN3架构解析 环境配置与快速入门硬件要求安装步骤预训练模型下载 实战全流程解析1. 图像生成示例2. 自定义数据集训练3. 潜在空间操作 核心技术深度解析1. 连续信号建模2. 傅里叶特…

PHP-Cookie

Cookie 是什么&#xff1f; cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时&#xff0c;这台计算机将会发送 cookie。通过 PHP&#xff0c;您能够创建并取回 cookie 的值。 设置Cookie 在PHP中&#xff0c;你可…

“Everything“工具 是 Windows 上文件名搜索引擎神奇

01 Everything 和其他搜索引擎有何不同 轻量安装文件。 干净简洁的用户界面。 快速文件索引。 快速搜索。 快速启动。 最小资源使用。 轻量数据库。 实时更新。 官网&#xff1a;https://www.voidtools.com/zh-cn/downloads/ 通过网盘分享的文件&#xff1a;Every…

CSS:选择器-基本选择器

文章目录 1、通配选择器2、元素选择器3、类选择器4、ID选择器 1、通配选择器 2、元素选择器 3、类选择器 4、ID选择器

一种动态分配内存错误的解决办法

1、项目背景 一款2年前开发的无线网络通信软件在最近的使用过程中出现网络中传感器离线的问题&#xff0c;此软件之前已经使用的几年了&#xff0c;基本功能还算稳定。这次为什么出了问题。 先派工程师去现场调试一下&#xff0c;初步的结果是网络信号弱&#xff0c;并且有个别…

React 第三十四节 Router 开发中 useLocation Hook 的用法以及案例详解

一、useLocation基础用法 作用&#xff1a;获取当前路由的 location 对象 返回对象结构&#xff1a; {pathname: "/about", // 当前路径search: "?namejohn", // 查询参数&#xff08;URL参数&#xff09;hash: "#contact", …

DeepSeek-Prover-V2-671B最新体验地址:Prover版仅适合解决专业数学证明问题

DeepSeek-Prover-V2-671B最新体验地址&#xff1a;Prover版仅适合解决专业数学证明问题 DeepSeek 团队于 2025 年 4 月 30 日正式在Hugging Face开源了其重量级新作 —— DeepSeek-Prover-V2-671B&#xff0c;这是一款专为解决数学定理证明和形式化推理任务而设计的超大规模语…

tornado_登录页面(案例)

目录 1.基础知识​编辑 2.脚手架&#xff08;模版&#xff09; 3.登录流程图&#xff08;processon&#xff09; 4.登录表单 4.1后&#xff08;返回值&#xff09;任何值&#xff1a;username/password &#xff08;4.1.1&#xff09;app.py &#xff08;4.1.2&#xff…

Android学习总结之自定义view设计模式理解

面试题 1&#xff1a;请举例说明自定义 View 中模板方法模式的应用 考点分析 此问题主要考查对模板方法模式的理解&#xff0c;以及该模式在 Android 自定义 View 生命周期方法里的实际运用。 回答内容 模板方法模式定义了一个操作的算法骨架&#xff0c;把一些步骤的实现延…

【Scrapy】简单项目实战--爬取dangdang图书信息

目录 一、基本步骤 1、新建项目 &#xff1a;新建一个新的爬虫项目 2、明确目标 &#xff08;items.py&#xff09;&#xff1a;明确你想要抓取的目标 3、制作爬虫 &#xff08;spiders/xxspider.py&#xff09;&#xff1a;制作爬虫开始爬取网页 4、存储内容 &#xff08;p…