计算机内存数据存储基本原理----寄存器和RAM的电路基础
计算机里存储数据主要有这几个部件: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)了

如图
- 内存的寻址由一个2个输入的译码器实现。译码器根据A1和A2的输入,选中对应的一条线,即找到地址对应的存储空间。
- 内存存储信息的能力具体实现是由门控锁存器组成的存储矩阵保存bit信息。
- 读取内存的输出由多路复用器实现。根据寻址时译码器选中的某一个线路,每一列的多路复用器只能输出那个线路的对应的那个门控锁存器保存的bit。则最终的三个bit都是由同一个线路对应的三个门控锁存器的输出。
参考:https://www.jianshu.com/p/c7fc7293f239
计算机内存数据存储基本原理----寄存器和RAM的电路基础的更多相关文章
- java 内存数据存储
近期在学习的过程中,越发认为基础知识的重要性,so 恶补一下 直接上图上演示样例: 图一:
- 51单片机RAM 数据存储区学习笔记
转自:http://www.eepw.com.cn/article/216237_2.htm 1.RAM keil C语言编程 RAM是程序运行中存放随机变量的数据空间.在keil中编写程序,如果当前 ...
- NGK主网上线后内存价格上涨30倍,NGK RAM是否值得买入?
美国加州时间10月14日上午10时,NGK主网正式上线.因为市场预期向好,NGK上线以后迎来了大涨,NGK的代币价格上涨了10倍,内存价格上涨了30倍.目前,NGK上线已经有五天的时间,盘面上已经出现 ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- Go Web:数据存储(1)——内存存储
数据可以存储在内存中.文件中.按二进制序列化存储的文件中.数据库中等. 1.内存存储 2.CSV文件存储 3.gob序列化存储 内存存储 将数据存储到内存中.此处所指的内存是指应用程序自身的内存空间( ...
- c语言内存四区、数据存储范围和内存存储方向
(1)代码区通常是共享只读(代码无法修改)的,即可以被其他的程序调用,例如运行两个qq,除了数据不一样,代码都是一样的, 每次运行qq,都会将代码和数据加载到内存中,除了数据,每次加载的代码都是一样的 ...
- 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 ...
- (转) 寄存器、RAM、ROM、Flash相关概念区别整理
转自 http://m.blog.chinaunix.net/uid-30077524-id-5570244.html 文章对这几个东西讲得很清楚,值得收藏. 寄存器 寄存器是中央处理器内的组成部份. ...
- DMA内存申请--dma_alloc_coherent 及 寄存器与内存【转】
转自:https://blog.csdn.net/ic_soc_arm_robin/article/details/8203933 在项目驱动过程中会经常用到dma传输数据,而dma需要的内存有自己的 ...
随机推荐
- 强大的DataGrid组件[7]_自定义DataGrid——Silverlight学习笔记[15]
基本知识讲解 1)两种状态 DataGrid的单元格的状态有两类,即编辑状态和非编辑状态. 在实际开发中,如果一个单元格所在的列不设为只读的话(即要求可读写),那么这个单元格就存在这两种状态.按需要, ...
- lucene 索引文件大小分布_tim
Hi, I have index ~31G where27% of the index size is .fdt files (8.5G)20% - .fdx files (6.2G)37% - .f ...
- hdu3709 (平衡数) 数位DP
Balanced Number Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- P5107 能量采集
传送门 官方题解 话说最后的答案忘记取模了结果连暴力都挂了可海星-- //minamoto #include<bits/stdc++.h> #define R register #defi ...
- spring/spring boot/spring cloud书籍推荐
最近看了一些spring书籍,主要都是工作需要,实话说,没有必要买这么多书,每个主题一本就足够了,其他的补充可以通过项目实战和上网看官网或者博客补充. 说是推荐,其实只是一些简单读后感想而已,每本书都 ...
- play framework
Compilation errorThe file {module:docviewer}/app/controllers/PlayDocumentation.java could not be com ...
- Linux命令-自动挂载文件/etc/fstab功能详解
Linux命令-自动挂载文件etcfstab功能详解 一./etc/fstab文件的作用 磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载. 系 ...
- [SDOI2013]spring
Description Input Output Sample Input 3 3 1 2 3 4 5 6 1 2 3 0 0 0 0 0 0 4 5 6 Sample Output 2 HINT 容 ...
- Hdu 3289 Rain on your Parade (二分图匹配 Hopcroft-Karp)
题目链接: Hdu 3289 Rain on your Parade 题目描述: 有n个客人,m把雨伞,在t秒之后将会下雨,给出每个客人的坐标和每秒行走的距离,以及雨伞的位置,问t秒后最多有几个客人可 ...
- Jumping Jack CodeForces - 11B
Jumping Jack CodeForces - 11B 就是一个贪心. 基本思路: 正负没有关系,先取绝对值. 首先跳过头,然后考虑怎么回来. 设超过头的步数为kk.如果kk为偶数,那么直接在前面 ...