计算机里存储数据主要有这几个部件:CPU里的寄存器和缓存、内存(内存条)和磁盘,这里我们主要简单讲下寄存器和内存条的基础实现电路。

在前面的文章《CPU怎么计算1+1----CPU计算的电路基础》我们就讲到了晶体管怎么表示0,1,那么自然而然我们就会想到,用晶体管来做存储器,但需要多个晶体管来组成门电路,来实现数据的读/写和存储。基础的与门/非门/或门/异或门在该文里也讲到,但在该文我们只是讲了用这些基础门电路组成了加法器电路从而实现加法运算,那么数据的存储,应该怎么实现呢?

那么存储器应该如何工作呢,首先我们要决定数据存在哪儿,就是存储的地址,其次就是数据要稳定的存在,不能受其他操作的影响。好,在讲下,通过门电路,我们可以实现计算机内的逻辑单元(加法器之类的运算单元也是逻辑单元),逻辑单元可以分为两类:一类不可存储信息的(组合逻辑单元);另一类可存储信息(存储单元)。我们分别介绍和内存相关的几个结构。

组合逻辑
包括各种运算逻辑和控制逻辑,而在存储这块儿,我们需要的是地址选择控制单元,也可以叫地址译码器,它的基本电路如下

依据输入端的二进制(地址值),在输出端选中某一条电路,比如,A=0,B=0,则选中最上面的那条线,A=1,B=1,则选中最下面的那条线

还有就是读出数据的多路复用器:根据控制信号,只选择输入端的某根电路,把这根线输出到输出端

如图,若S1=0,S2=0,则A线路被选中,A的值即是输出值。

存储逻辑单元

可存储信息的结构:可用于保存二进制。

可保存1bit数据的锁存器

WE=0时(不可读写),S和R必为1,则电路稳定,out端可保持原来的值;WE=1时(可读写),则根据D的值,out端变为对应的值。然后恢复WE=0则保存起来

有了1bit的锁存器,我们就可以用n个这样的锁存器组合起来实现n bit的寄存器了

利用地址译码器、多路复用器和锁存器,我们就可以实现简单的随机存储器(RAM)了

如图

  1. 内存的寻址由一个2个输入的译码器实现。译码器根据A1和A2的输入,选中对应的一条线,即找到地址对应的存储空间。
  2. 内存存储信息的能力具体实现是由门控锁存器组成的存储矩阵保存bit信息。
  3. 读取内存的输出由多路复用器实现。根据寻址时译码器选中的某一个线路,每一列的多路复用器只能输出那个线路的对应的那个门控锁存器保存的bit。则最终的三个bit都是由同一个线路对应的三个门控锁存器的输出。

参考:https://www.jianshu.com/p/c7fc7293f239

计算机内存数据存储基本原理----寄存器和RAM的电路基础的更多相关文章

  1. java 内存数据存储

    近期在学习的过程中,越发认为基础知识的重要性,so 恶补一下 直接上图上演示样例: 图一:

  2. 51单片机RAM 数据存储区学习笔记

    转自:http://www.eepw.com.cn/article/216237_2.htm 1.RAM keil C语言编程 RAM是程序运行中存放随机变量的数据空间.在keil中编写程序,如果当前 ...

  3. NGK主网上线后内存价格上涨30倍,NGK RAM是否值得买入?

    美国加州时间10月14日上午10时,NGK主网正式上线.因为市场预期向好,NGK上线以后迎来了大涨,NGK的代币价格上涨了10倍,内存价格上涨了30倍.目前,NGK上线已经有五天的时间,盘面上已经出现 ...

  4. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  5. Go Web:数据存储(1)——内存存储

    数据可以存储在内存中.文件中.按二进制序列化存储的文件中.数据库中等. 1.内存存储 2.CSV文件存储 3.gob序列化存储 内存存储 将数据存储到内存中.此处所指的内存是指应用程序自身的内存空间( ...

  6. c语言内存四区、数据存储范围和内存存储方向

    (1)代码区通常是共享只读(代码无法修改)的,即可以被其他的程序调用,例如运行两个qq,除了数据不一样,代码都是一样的, 每次运行qq,都会将代码和数据加载到内存中,除了数据,每次加载的代码都是一样的 ...

  7. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

  8. (转) 寄存器、RAM、ROM、Flash相关概念区别整理

    转自 http://m.blog.chinaunix.net/uid-30077524-id-5570244.html 文章对这几个东西讲得很清楚,值得收藏. 寄存器 寄存器是中央处理器内的组成部份. ...

  9. DMA内存申请--dma_alloc_coherent 及 寄存器与内存【转】

    转自:https://blog.csdn.net/ic_soc_arm_robin/article/details/8203933 在项目驱动过程中会经常用到dma传输数据,而dma需要的内存有自己的 ...

随机推荐

  1. HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)

    链接:线段树求矩形面积并 扫描线+离散化 1.给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 2.看完线段树求矩形面积并 的方法后,再看这题,求的是矩形面积交,类同. 求面积时,用被覆 ...

  2. python库学习笔记——爬虫常用的BeautifulSoup的介绍

    1. 开启Beautiful Soup 之旅 在这里先分享官方文档链接,不过内容是有些多,也不够条理,在此本文章做一下整理方便大家参考. 官方文档 2. 创建 Beautiful Soup 对象 首先 ...

  3. 并不对劲的bzoj4816:loj2000:p3704[SDOI2017]数字表格

    题目大意 有函数\(f(x)\),\(f(0)=0,f(1)=1,f(x)=f(x-1)+f(x-2)\) \(t\)(\(t\leq1000\))组询问,每次给定\(n,m\)(\(n,m\leq1 ...

  4. pybot执行多条用例时,某一个用例执行失败,停止所有用例的执行

    问题: pybot执行多条用例时,某一个用例执行失败,停止所有用例的执行 解决办法: pybot -exitonfailure E:\robot\呼送项目\测试用例\基本流程\主流程.txt 参考文章 ...

  5. .NET MVC API返回JSON对象

    方法多种,自己目前采用的是自定义返回格式的方法,不需要修改配置文件. 辅助类: public class ApiResponseHelper { public static HttpResponseM ...

  6. error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [17]”转换为“LPCTSTR”

    vs2008提示 error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [17]”转换为“LPCTSTR” 在外面用vs2005编写mfc程序的 ...

  7. E20170516-gg

    accelerator  n. 加速器;油门 oscillator  n. 振荡器; 振子; oscillate  vt. 使振荡,使振动  vi. 持续周期性地摆动; frame  n. 框架; 边 ...

  8. 景女神与她的托福(BFS+状压)

    景女神与她的托福 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submis ...

  9. P4949 最短距离(树链剖分+树状数组+基环树)

    传送门 一个中午啊-- 本来打算用仙人掌搞的,后来发现直接基环树就可以了,把多出来的那条边单独记录为\((dx,dy,dw)\),剩下的树剖 然后最短路径要么直接树上跑,要么经过多出来的边,分别讨论就 ...

  10. 构造 BestCoder Round #52 (div.2) 1001 Victor and Machine

    题目传送门 题意:有中文版的 分析:首先要知道机器关闭后,w是清零的.所以一次(x + y)的循环弹出的小球个数是固定的,为x / w + 1,那么在边界时讨论一下就行了 收获:这种题目不难,理解清楚 ...