内存条是怎么存储数据的?
作者:小道萧兮 未经授权 不得二次转载
链接:https://www.jianshu.com/p/0aa5c09b2a6b
一、如何存储数据
由于保存数据的重要性,科学家一直在思考,在电路中使用何种方式可以保存数据。
如果使某个器件一直输出高电平,那不就是 1 了吗?一直输出低电平,那不就是 0 了吗?而且还要可以自由切换 0 和 1。
接下来,内存条闪亮登场。
二、RAM
内存条还有一个更专业的名字:RAM (Random Access Memory) 随机存储器,因为可以随意读写任意位置的数据。
现在计算机基本上都是二进制的,不管什么样的数据或者代码指令,在我们这里都是一串串的 0 和 1 的比特位。
为了存储这一个比特位,曾经有两种电路方案摆在先辈们的面前,第一种是静态方案:
是不是有点复杂?我也觉得。这种电路方案的好处是可以稳定的维持在 0 和 1 之间的某个状态,所以叫静态 SRAM (Static Random Access Memory)。
但是需要用到的晶体管太多了,一个比特位就要用好几个晶体管,16GB 那得用多少才够啊,成本太高了,造出来我们的个头肯定会特别大,主板上空间这么局促,哪里装得下啊。
还有第二种方案:
这样是不是简单了许多?只通过一个电容器的电荷就能决定这是一个 1 还是一个 0,这样就存储了 1bit。
在每一个存储芯片里,这样的比特位存储单元都有很多,例如一个 16G 的内存条有 137438953472 bit,也就是有 137438953472 个这样的电容。
但这种电路方案有个毛病,就是里面的那个电容会“漏电”,电容中的电荷会慢慢消失,电压也就变小了,这样就没办法区分这是表示的 1 还是 0 了。
为了解决这个问题,必须得周期性的去给它们充电,才能维持数据的稳定,这叫动态数据刷新,所以这种方案叫 DRAM (Dynamic Random Access Memory)。
三、内存控制器
当我们需要读取数据时,要访问哪个 bit 位,通过芯片号、bank 号、行地址、列地址,就可以了。
是不是有点麻烦,这些内部细节应该封装一下,提供给一个简单接口就是了,于是 内存控制器 登场了。
内存控制器就像一个中介,位于 CPU 与 内存条之间。
内存存储数据的电路单元中,电容经常漏电,需要定时刷新,按照规定,最多 64ms 就得要刷新一次,这数据刷新的工作就由内存控制器管理。
内存条的数据存储在每一个存储芯片之上,每一个芯片里面又分了很多个分片,每个分片里面又有很多的比特位存储格子。想要访问哪个比特位,就得指定对应的芯片、对应的分片、对应格子的行地址和列地址。
CPU这边想要访问数据,肯定不想这么麻烦,所以内存控制器就派上用场了。
用 bit 作为读写单元太麻烦了,咱们按 8 bit 为一组,叫做一个字节 byte,CPU 统一给内存的存储空间编址,以后要读取数据的时候呢,就把地址交给内存控制器,再告诉内存具体是读写哪个芯片哪个分片的哪些位置。
以后只需要一个地址,内存控制器就转换成具体的数据存储位置,去读取内存,再由内存完成读写操作就可以了。
由于内存控制器的重要性,现在,内存控制器已经集成到了 CPU 内部,成为了 CPU 的一份子了。
随着 CPU 的发展,CPU 的速度越来越快,开始嫌内存慢了,要说慢,硬盘那可比内存慢多了!于是在 CPU 内部又搞了个缓存出来,不用每次都问内存要数据,而是把一些常用的数据存储在 CPU 内部的缓存中。
只不过 CPU 内部的缓存不会太大,仅存放一些常用的数据,大部分数据还是需要通过内存进行读取。
猜您喜欢:
戳我,查看GAN的系列专辑~!
一顿午饭外卖,成为CV视觉的前沿弄潮儿!
最新最全100篇汇总!生成扩散模型Diffusion Models
ECCV2022 | 生成对抗网络GAN部分论文汇总
CVPR 2022 | 25+方向、最新50篇GAN论文
ICCV 2021 | 35个主题GAN论文汇总
超110篇!CVPR 2021最全GAN论文梳理
超100篇!CVPR 2020最全GAN论文梳理
拆解组新的GAN:解耦表征MixNMatch
StarGAN第2版:多域多样性图像生成
附下载 | 《可解释的机器学习》中文版
附下载 |《TensorFlow 2.0 深度学习算法实战》
附下载 |《计算机视觉中的数学方法》分享
《基于深度学习的表面缺陷检测方法综述》
《零样本图像分类综述: 十年进展》
《基于深度神经网络的少样本学习综述》
内存条是怎么存储数据的?相关推荐
- 计算机内存中如何储存数据,内存条是如何存储数据的?
什么是内存呢?在计算机的组成结构中,有一个很重要的部分,就是存储器.存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作.存储器的种类很多,按其用途可分为主存储 ...
- 2021年大数据HBase(十三):HBase读取和存储数据的流程
全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 HBase读取和存储数据的流程 一.HBase读取数据的流程 ...
- .pgr照片文件解析,C++与Java存储数据差别大小端模式
一..pgr是什么? .pgr文件是二进制的图像文件,可以用普通的文本文件打开,或者查看十六进制的文本信息: 读取需要了解~~~非常重要 !!! 基本数据类型的大小端存储模式 表头Header 详细信 ...
- string生成固定长度的哈希_Redis 选择Hash还是String 存储数据?
点击上方"Java之间",选择"置顶或者星标" 你关注的就是我关心的! 作者:goodspeed 微信公众号:四月(ID:hiiiapril) 在stackov ...
- 在python中使用json格式存储数据
在python中使用json格式存储数据 代码如下: import jsonlist1 = [{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]},{'C': ...
- android studio数据库存储数据,如何使用API 23在android studio中的数据库中存储数据?...
大多数时候我不会发布任何内容,因为我可以在其他帖子中找到我需要的所有内容,但是现在我已经有几天了,您如何在数据库中存储任何内容?这是我的Java代码如何使用API 23在android studi ...
- 关于外部存储器件对存储数据的管理。
一引子 :需要大量存储数据时,一般都不会使用单片机内部存储资源(单片机内部的eerom或者flash模拟eeprom只适合存储少量的数据).一般是通过I2C/SPI接口外部扩展eeprom或者flas ...
- 使用嵌入式关系型SQLite数据库存储数据
除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NUL ...
- android的数据存储方式有哪几种方式,Android存储数据的5种方式
第一种:SharedPreferences 1.使用键值对的方式存储数据 2.通常用于:保存用户的偏好设置.选择是否保存密码.记录文档阅读的位置等 3.实现方式(写入): a).获取SharedPre ...
最新文章
- java编写代码时易出错_归纳:编写Java程序最容易犯的21种错误
- 分析Cocos2d-x横版ACT手游源码 1、公共
- oracle之二控制文件
- 利用均值漂移实现图像分割的原理和OpenCV代码
- solr创建core
- java的知识点34——线程通信 || 生产者与消费者问题
- spring api 中文_Spring高级技术梳理
- protobuf在go中的应用
- POJ 3159 Candies
- 动态生成的DOM做点击事件无效
- MySQL InnoDB存储引擎
- 电脑公司 Ghost XP SP3 国庆特别版 v2011.10
- 云上的Growth hacking之路,打造产品的增长引擎
- 注意力公式步骤每一步的含义,总共三步
- Xcode 4.2 中的Automatic Reference Counting (ARC)
- ACC 时间范围处理
- 微信绑定的卡服务器,微信亲属卡有什么作用 微信亲属卡怎么绑定
- 学生版计算机隐藏游戏,玩了近15年的QQ,才发现这3个隐藏功能,学生党看完炸锅了!...
- 2022-06-30 Android app WakeLock息屏状态下唤醒屏幕并且解锁demo
- Autofill Framework(自动填写)用法详解