你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:
- 了解大厂经验
- 拥有和大厂相匹配的技术等
希望看什么,评论或者私信告诉我!
文章目录
- 一 前言
- 二、冯诺依曼体系
- 三、时钟周期
- 四、内存是如何实现的
- 五、更严谨的说法
- 六、总结
一 前言
内存 想必我们每个人都听过,但它是既熟悉又陌生,今天呢,我们就来解开 内存 的面纱。
注意:文章是之前发头条的,但头条有个问题就是时间一长文章就没有办法编辑了,所以后续会再这个平台上汇总
二、冯诺依曼体系
冯诺依曼结构概述图
通过冯诺依曼体系概述图,我们可以知道,存储器是特别重要的一部分。前面几篇文章中,我们知道了作为一个整体计算机是如何执行指令的以及明白了核心组成部分CPU是如何进行计算的。
这边文章我们一起来看一下另一个核心组成部分,内存是如何实现的?
在具体说明内存是怎么实现之前,我们先来看另一个概念:时钟周期
三、时钟周期
从CPU是如何进行计算中,我们知道时钟在CPU中,并且是不断振荡的。一个完整的振荡为一个周期,如图:
CPU的一个时钟周期
一个CPU的时钟频率为2.5 GHz,意味着它的时钟每秒钟会振荡2.5亿次,那么 时钟周期就是 1/2.5 GHz = 0.4 ns。
四、内存是如何实现的
然后理想情况下非门的时钟周期是这样的:
非门
理想环境
in和out在同一个周期内,同时变化。
然而现实是有延迟的:信号传递延迟、计算延迟,如图:
真实环境
所以我们只考虑**时钟结束时的输出,**中间的结果不考虑因为没有意义。故而一个小芯片真实环境下的时钟周期,如下:
真实环境
这个芯片的作用是:当load=1时,芯片开始加载 in输入的数据并保持不变,一直到下次load=1时才改变,如:
这个芯片实现了内存的基本功能,就是有数据写入时内存发生变换,没有数据写入时,内存中的数据保持上次的结果不变。
接下来,我们来拆分一下如何实现:
out(t+1)=in(t)
答案是DFF芯片,全称为Data Flip Flop,它是一种数字电路元件,用于存储和传输二进制数据。它可以将输入数据存储在内部存储器中,并在时钟信号的作用下将其输出。DFF芯片通常用于计算机内存、寄存器、时序逻辑电路等领域。在数字电路中,DFF是最基本的存储器元件之一,它可以实现各种逻辑功能,如计数器、移位寄存器、状态机等。
多说一句,归根到底DFF芯片还是想之前讲CPU的实现那样,是由最基础的门:或门、与门、非门构成的
DFF
所以上面那个Bit芯片是这样组成的
Bit
然后内存是由Bit芯片一点一点组装起来的( 可以这样形象化的理解 )
Memory hierarchy
按照这种方式,我们可以实现任意大小的内存,比如:
既然内存有这么多的Register组成,那每一个Register 的 in 和 out 如何选择呢?
RAM
1. address表示Register地址。
- Mux(多路复用器):将多个输入信号通过一个选择信号选择其中一个输出。Mux的输入端可以有多个,但是只有一个输出端。选择信号的位数决定了Mux的输入端口数,例如,一个2:1的Mux有两个输入端口和一个选择信号端口,一个4:1的Mux有四个输入端口和两个选择信号端口。 Dmux(分路器):将一个输入信号通过一个选择信号分配到多个输出。
3. DMux的输出端可以有多个,但是只有一个输入端。选择信号的位数决定了Dmux的输出端口数,例如,一个1:2的Dmux有一个输入端口和两个输出端口,一个1:4的Dmux有一个输入端口和四个输出端口。
也就是说当address传入一个地址时,DMux根据地址选择一个Register进行相关的操关比如 load操作,而 Mux根据 address选择一个 Register进行结果输出
五、更严谨的说法
现代计算机中使用的DRAM通常是基于同步动态随机存取存储器(SDRAM)技术的。SDRAM使用电容来存储数据,但是与传统的DRAM不同,它还包含了一个内部时钟,可以在时钟的边沿上进行读写操作。这种同步的方式可以提高DRAM的访问速度和效率。 SDRAM通常使用DFF(触发器)来辅助存储数据。
六、总结
本文通过图文并茂的方式,详细介绍了内存的实现原理,包括冯诺依曼体系、时钟周期、DFF芯片等方面的内容。同时,还介绍了内存的组成方式和内存的读写操作。本文通俗易懂,适合初学者了解内存的基本原理。