计算机内存数据存储基本原理----寄存器和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需要的内存有自己的 ...
随机推荐
- 优化VMware提高虚拟机运行速度的技巧
vmware虚拟机如何设置不当的话会造成运行速度慢,并影响主机运行,甚至会出现死机. 以下是提高vmware虚拟机运行速度的几个技巧: 文章来自:http://blog.csdn.net/shanzh ...
- Python装饰器单例
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/dutsoft/article/details/52057981#!/usr/bin/python#c ...
- Python基础第七天
一.内容 二.练习 练习1 题目:编写函数,函数执行的时间是随机的 图示: 代码: import time import random def func(): s = 1 l = [] for i i ...
- IJ:IJ来了
ylbtech-IJ:IJ来了 1.返回顶部 1. 2. 2.2. 3. 4. 2.返回顶部 1. 2. 3. 3. Welcome to IntelliJ IDEA返回顶部 1. 2.2. 2.2. ...
- 超强XSS攻击利器
======================================================================= BackTrack 5 R1 XSS研究之XSSer(超 ...
- 我使用过的Linux命令之hexdump - ”十六“进制查看器(转载)
转载:http://codingstandards.iteye.com/blog/805778 本文链接:http://codingstandards.iteye.com/blog/805778 ...
- 在Visual studio 中解除 TFS 的账号绑定
在Visual Studio中, 只要使用了TFS, 就会要求输入用户名密码验证 . 但是一旦点击验证对话框下部的:记住用户名密码 以后都不能再修改用户名了. 而且重装Visual Studio 听说 ...
- H5页面在微信端的分享
微信分享,咋一看好像很复杂,实则非常简单.只需要调用微信官方出的微信jssdk,加上些许配置,就可以实现h5页面在微信上的分享,官方文档地址为:https://mp.weixin.qq.com/wik ...
- git上拉取tag,识别最新tag在此版本上新增tag
通过shell 脚本自动获取最新tag,并输入最新版本后,推到git上 # 拉取分支上现有的tags git fetch --tags echo -e "所有tag列表" git ...
- js判断是否为ie浏览器,精确显示各个ie版本
function IETester(userAgent){ var UA = userAgent || navigator.userAgent; if(/msie/i.test(UA ...