首页 > 系统相关 >一个故事看懂内存条工作原理

一个故事看懂内存条工作原理

时间:2023-05-22 15:31:39浏览次数:54  
标签:故事 内存条 一个 比特 CPU 内存 原理 我们


微信公众号

我是内存条

我是一个内存条,刚刚从深圳的一个工厂里被生产出来,跟我一起的还有一批小伙伴,长得跟我一模一样,下了流水线后我们就被扔进了一处黑暗的角落。

“这是哪里啊,黑漆漆的”,一个小伙伴说到。

“这里是内存条仓库”,黑暗中有人在说话,声音中略有一丝沧桑,像是一个老头。


一个故事看懂内存条工作原理_行地址

一个故事看懂内存条工作原理_存储芯片_02

“谁?谁在那里”

“别怕,我也是一个内存条,比你们早几个月被生产出来”,那老头说到。

“啥,你都被关在这里几个月了,完了完了”,小伙伴急了。

“不是的,我出去过,后来被发现是残次品,又被回收了关在了这里,你们跟我不一样,刚刚生产出来,应该很快就能出去,被安装到电脑主板上,实现你们的价值。”

“电脑主板?那是什么地方?”,我好奇的问到。


一个故事看懂内存条工作原理_fpga开发_03

一个故事看懂内存条工作原理_存储芯片_04

那声音继续说到:“那是计算机最核心的地方,是一个巨大的电路板,上面住着CPU、硬盘、网卡、显卡、声卡,当然,还有我们内存条。计算机必须有我们才能正常运转,因为CPU工作需要的指令和数据都存储在咱们内存中”

刚说完,我们身边亮起了灯光,这时,我们才看清我和小伙伴们的样子。


一个故事看懂内存条工作原理_存储芯片_05

一个故事看懂内存条工作原理_行地址_06

“我们身上那几块黑乎乎的东西是什么,真是有点拉低颜值啊!”

“你可别小瞧了它们,那可是咱们内存条的核心存储芯片,我们的数据都是放在这里面的,它们一个就是1GB,总共16个,就是16GB的空间呢!”,那老头又开口说到。

奇怪的是,我们还是看不到他。

“你在哪里,怎么亮了灯还是看不到你呢?”,一个小伙伴问到。

“我在隔壁的柜子里,像我这种残次品估计是没机会出去了”

“你刚才说16个存储芯片,这不是明明只有8个吗?”

“你转过身去看看,背上还有8个呢”

我们几个纷纷转身看去,果然如此。

老头继续说到:“除了存储芯片,还有PCB电路板金手指,这三部分共同构成了我们的身体。”

“金手指是什么东西?”

“就是脚下那一排土豪金颜色的部分了,那是我们连接主板插槽的接触点,一面有120个,两面就是240个,因为每个点看起来像手指,人们就把这叫做金手指了”。

“那为什么中间留了一个缺口呢?”

“我们的每个金手指都有不同的功能,正反面可不能弄混,为了防止愚蠢的人类把我们插错,所以中间留了一个缺口,要是弄反了可是插不进去的。通过主板上的电路,我们就能接通到计算机的总线系统上,可以和CPU对话了。”

原来如此,我们都若有所思的点点头。

数据存储

接下来,这位老头还讲了很多我们内存条先辈的故事。

原来,我们还有一个更专业的名字:RAM,随机存储器,因为我们可以随意读写任意位置的数据。

老头还说,现在计算机基本上都是二进制的,不管什么样的数据或者代码指令,在我们这里都是一串串的0和1的比特位。

为了存储这一个比特位,我们的先辈们可是费了不少功夫!

曾经有两种电路方案摆在先辈们的面前,第一种是静态方案:


一个故事看懂内存条工作原理_fpga开发_07

一个故事看懂内存条工作原理_行地址_08

是不是很复杂?我也觉得。这种电路方案的好处是可以稳定的维持在0和1之间的某个状态,所以叫静态SRAM

但是需要用到的晶体管实在太多了,一个比特位就要用好几个晶体管,16GB那得用多少才够啊,成本太高了,造出来我们的个头肯定会特别大,主板上空间这么局促,哪里装得下啊。

先辈们没有选择这种方案,用了第二种方案:



一个故事看懂内存条工作原理_行地址_09

一个故事看懂内存条工作原理_数据_10

看,是不是简单了许多?通过一个电容器的电荷就能决定这是一个1还是一个0。

在我们身上的每一个存储芯片里,这样的比特位存储单元都有很多:


一个故事看懂内存条工作原理_fpga开发_11

一个故事看懂内存条工作原理_存储芯片_12


再缩小一下看,它们密密麻麻的排列着,每一个位都由行地址和列地址来确定的:


一个故事看懂内存条工作原理_存储芯片_13

一个故事看懂内存条工作原理_数据_14

图源知乎@老狼

但这种电路方案有个毛病,就是里面的那个电容会“漏电”,电容中的电荷会慢慢消失,电压也就变小了,这样就没办法区分这是表示的1还是0了,为了解决这个问题,必须得周期性的去给它们充电,才能维持数据的稳定,这叫动态数据刷新,所以这种方案叫动态DRAM

内存编址

老头正给我们讲的兴起,突然有人把我们打包起来,所有的小伙伴都被分开了。

又经过了好长一段日子的黑暗和孤独,那一天突然咔嚓一声,我的金手指和卡槽连接了起来,难道这就是传说中的主板吗?


一个故事看懂内存条工作原理_数据_15

一个故事看懂内存条工作原理_数据_16

“你就是内存啊,我们可等你好久了,你来了我们总算可以开始工作了!”,旁边一个家伙跟我打起了招呼。

“你哪位啊?”

“你好,我是CPU里的阿Q,你看就在你隔壁,咱们以后少不了要天天打交道了。对了,快告诉我,你有多大存储空间?”

我检查了一下,回答道:“我有16GB空间,也就是137438953472个比特位!”

“哇,这么多!太给力了!不过我该怎么使用你来存储数据呢?”

“这简单,你要访问哪个bit位,告诉我芯片号、bank号、行地址、列地址,我把数据取给你不就行了吗!”

“怎么这么麻烦?你这不讲武德啊,这些内部细节应该封装一下啊,提供给我一个简单接口就是了”,阿Q吐槽道。

“两位大哥,看这里”,这时,主板上不远处又有一个家伙开口了。

“你是谁?”我和阿Q异口同声的问到。

这家伙眯着眼说到:“我是内存控制器,专门为二位服务的。”

“啥,你要控制我?”

“您别误会,我就是一个中介,为两位提供服务而已”

见我俩一头雾水,这家伙接着说到:“内存老哥,你的存储数据电路单元中的电容是不是经常漏电,需要定时刷新?而且按照规定,最多64ms就得要刷新一次?你放心,这数据刷新的工作以后就交给我了”

“你怎么知道的?”

这家伙笑了笑继续说道:“这算啥,我还知道你的数据存储在你身上的每一个存储芯片之上,每一个芯片里面又分了很多个分片,每个分片里面又有很多的比特位存储格子。想要访问哪个比特位,就得指定对应的芯片、对应的分片、对应格子的行地址和列地址,我说的对不对?”


一个故事看懂内存条工作原理_行地址_17

一个故事看懂内存条工作原理_存储芯片_18

我点了点头,没想到这家伙居然对我了解的这么清楚。

“阿Q啊,你们CPU这边想要访问数据,肯定不想这么麻烦吧?”,这家伙笑着问到。

“那当然!”

“所以啊,我就派上用场了啊,用比特位作为读写单元太麻烦了,咱们按8个比特位为一组,叫做一个字节,你们CPU这边统一给内存兄弟的存储空间编址,以后要读取数据的时候呢,就把地址交给我,我再告诉内存兄弟具体是读写哪个芯片哪个分片的哪些位置,怎么样,是不是为你们解决了大麻烦?”,说完,内存控制器露出了得意的笑容。

“听上去不错啊,咱们开始吧!”

“现在还不行,还没通电呢!”

不过我们没等太久,就听见一阵嘶嘶声响,来电了!

随后我们就开始配合工作起来,初次见面,合作的就非常顺利,CPU对我所有的存储位按照字节为单位进行了统一编址,以后只需要一个地址,内存控制器就转换成具体的数据存储位置交给我,我再完成读写操作就可以了。


一个故事看懂内存条工作原理_存储芯片_19

一个故事看懂内存条工作原理_fpga开发_20

后来,看到内存控制器表现非常不错,在阿Q的牵线下,还把他集成到了CPU内部,现在成为了他们的一份子了!

我和CPU一直相处的不错,可没过多久,他们居然开始嫌我慢了,要说慢,硬盘那家伙可比我慢多了!

他们发现拿我没有办法,于是在CPU内部又搞了个缓存出来,不用每次都问我要数据,倒是给我省了不少工作量。

我的日子就这样过着,本以为就要在这主板上干到退休了,没想到那一天,一个浏览器程序告诉我说:“内存大哥你完了,刚刚我看到主人在网上买新的DDR4内存条,你要被淘汰了”

难道我也要被打入小黑屋了吗?

标签:故事,内存条,一个,比特,CPU,内存,原理,我们
From: https://blog.51cto.com/u_15202985/6324814

相关文章

  • AOP-基本概念以及底层原理(JDK动态代理实现)
    1.什么是AOP1.面向切面编程(面向方面),利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高开发效率2.通俗描述:不通过修改源代码方式,在主干功能里添加新功能 AOP(底层原理) 1.AOP底层使用到了动态代理1.两......
  • 计算机组成原理:控制器实验
    实验名称:4控制器实验实验目的掌握微程序控制器的组成原理。掌握微程序的编制、写入,观察微程序的运行过程。基于数据通路图,掌握微程序控制器的工作原理。基于微程序流程图,掌握微程序控制器的工作原理。基于信号时序图,掌握微程序控制器的工作原理。掌握一个简单CPU的组成......
  • 计算机组成原理:运算器实验
    实验名称:1.1基本运算器实验实验目的了解运算器的组成结构。基于数据通路图,观测并分析运算器的工作原理。基于信号时序图,观测并分析运算器的工作原理。实验设备PC机一台,TDX-CMX实验系统一套。实验预习学习使用TDX-CMX实验台,然后回答下列问题。实验台上“时序与......
  • 计算机组成原理:阵列乘法器设计实验
    实验名称:1.2阵列乘法器设计实验实验目的了解运算器的组成结构。基于数据通路图,观测并分析运算器的工作原理。基于信号时序图,观测并分析运算器的工作原理。实验设备PC机一台,TDX-CMX实验系统一套。实验预习画出4*4阵列乘法器原理图,分析延迟与哪些因素有关。答:(上传图片......
  • 计算机组成原理:存储器实验
    实验名称:2存储器实验实验目的掌握静态随机存储器RAM工作特性及数据的读写方法。基于信号时序图,了解读写静态随机存储器的原理。掌握Cache的原理及其设计方法。熟悉FPGA应用设计及EDA软件的使用。实验设备PC机一台,TDX-CMX实验系统一套。实验预习静态随机存储器实验1......
  • 计算机组成原理:系统总线与总线接口实验
    实验名称:3.系统总线与总线接口实验实验目的理解总线的概念及其特性。掌握控制总线的功能和应用。理解总线的功能和和典型工作流程。掌握在总线上协调ALU和外设交换数据的方法。实验设备PC机一台,TDX-CMX实验系统一套。实验预习1、阅读实验指导书,然后回答问题。本实......
  • RocketMQ事务消息原理
    一、RocketMQ事务消息原理:        RocketMQ在4.3版本之后实现了完整的事务消息,基于MQ的分布式事务方案,本质上是对本地消息表的一个封装,整体流程与本地消息表一致,唯一不同的就是将本地消息表存在了MQ内部,而不是业务数据库,事务消息解决的是生产端的消息发送与本地事务执行......
  • 对$nextTick的理解,及其实现原理
    1.对$nextTick的理解:VUE中数据变化后,是异步更新DOM的,如果想数据变化后,操作dom,这个时候获取到的是没有变化的值eg:<divclass="msg">{{msg}}</div>mounted(){this.msg='我是测试文字'console.log(document.querySelector('.msg'......
  • Android 热补丁之 Tinker 原理解析
    阅读本文大概需要1分钟。哈,一晃好几天没更文了,然后后台又一大堆读者给我留言,说没有我的文章,感觉生活都没有动力了,对于这样的读者,我只能说:你肯定单身吧?主要是上周五开始就出去旅游了,跟着老板一起出去嗨了一把。所以一直没更新,但是,我是不会忘记你们的,这不,刚回归就给大家带来一篇干......
  • 聊聊Mybatis的实现原理
    使用示例平时我们使用的一般是集成了Spring或是SpringBoot的Mybatis,封装了一层,看源码不直接;如下,看看原生的Mybatis使用示例示例解析通过代码可以清晰地看出,MyBatis的操作主要分为两大阶段:第一阶段:MyBatis初始化阶段。该阶段用来完成MyBatis运行环境的准备工作,读取配置并初......