首页 > 其他分享 >计算机存储单元结构

计算机存储单元结构

时间:2023-07-22 10:13:00浏览次数:64  
标签:计算机 晶体管 BL SRAM 存储器 DRAM 存储单元 结构

存储层次结构概况

这是我们非常熟悉的冯·诺依曼计算机结构, 那这其中哪些部件和存储功能有关呢? 

 

存储器和外部记录介质肯定具有存储功能,另外还有一个自带存储功能的运算器,为了描述方便,我们把这些部件统称为存储器。那么我们看一下计算机中对存储器有哪些要求 ?

1、首先存储器当中应该保存了将要运行的程序和需要运算的数据,那这些内容在系统通电启动的时候就应该在存储器当中了,而且在断电之后也不会丢失。那么具有这样特定的存储器我们称之为非易失性存储器。而断电后存储的信息就会丢失的存储器则称为易失性存储器。

  • 易失性存储器:主存和CPU中的通用寄存器都是易失性的存储器,断电后信息就丢失了
  • 非易失性存储器:bios芯片和硬盘:在系统通电之后CPU必须要从bios芯片开始执行程序,然后这段程序把硬盘等设备配置好之后再将更多的程序和数据从硬盘搬运到内存,之后CPU才可以在内存里执行程序。 因此在系统中必须要有非易失性的存储器。

2、其次,这样的存储器肯定得是可读又可写的。那在这个结构当中硬盘和主存都是可读可写的, 而bios芯片则是一个只读的芯片,倒不是说它完全不支持写操作,而是对它的写需要 借助特殊的设备或者特殊的操作过程,非常的麻烦,无法支持经常性地写入数据。

3、最后,存储器最好是能够支持随机访问。所谓随机访问是指对存储器当中任何一个数据的访问所花费的时间与这个数据所在的位置没有关系。对主存的读写和Bios芯片的读都是支持随机访问的。而硬盘内部实际上是由多个盘片构成,这些盘片处于高速旋转的状态,并由一个机械的读写头去寻找需要访问的数据的位置。这就不是随机访问的模式,而且由于期中有机器部件的存在,速度就变得非常的慢。

DRAM和SRAM

SRAM比较快,DRAM比较慢,SRAM比较贵,DRAM比较便宜,记住这些结论是很容易的, 但是比是什么更重要的是为什么,我们就从电路的级别来探索DRAM 和SRAM为什么会具有他们这样各自的特点。

DRAM

这是我们计算机中使用的内存条,准确的说叫内存模组,这上图这个内存模组中共有8块DRAM芯片。

DRAM芯片内部核心结构就是这个存储阵列,由若干行、若干列构成。如果外部给定行地址和列地址,DRAM中有地址译码逻辑电路,就能选中一个存储单元,而每个存储单元往往包含若干个比特,常见的有4比特和8比特,每个比特都采用如下的电路结构,称为DRAM的基本存储单元。

DRAM的基本存储单元(1bit)

这个基本单元就是都过一个电容来保存一个比特,写入就是由外部的数据线驱动对电容进行充电或者放电的操作,从而完成写入0或1,读操作则是由电容对外部的数据信号线进行驱动,从而完成读出0或1。

这个电路非常简单,由于电容存在漏电效应,需要定期“刷新”以保证DRAM的存储信息的正确性。如果原先保存的数据是0,则通过刷新使它保持无电荷状态,如果原先保存的数据为1,则补充这个电容的电荷。

现在PC机中大多是采用DRAM作为主存储器(即内存),DRAM也有很多种不同的实现,比如SDRAM这个s是同步的缩写,那它是在DRAM的基本结构基础上对输入输出接口进行时钟同步。从而提高了读写的效率,而现在更为常用的内存 则是在SDARAM的基础上又进行了进一步的改进,比如说这些年有DDR1,DDR2,DDR3, 这些不同的内存标准都是在SDRAM的基础上进行的改进和升级。

总体来说,DRAM的基本存储单元简单,所以能做到很高的集成度,而且功耗也比较低,我们可以用较低的成本制造大容量的DRAM芯片。它的读写是通过充放电的方式,所以速度较慢,而且它还需要定期刷新,这进一步影响了DRAM的读写性能。

SRAM

SRAM的基本存储单元(1bit)

这个结构共有6个晶体管,M1~M6表示,6个合在一起才可以保存一个比特。对外有3个接口信号,BL、~BL用于传送读写时的数据,WL用于标识外部是否能访问这个存储单元。

 

 写入数据1时的工作过程:

  1. 首先,只有通电,VCC总为1,地总为0
  2. 将BL置为1,这样~BL为0,要写入的数据就准备好了
  3. 然后我们需要访问这个SRAM单元,要将WL置为1,随之M5、M6的gate端也为1
  4. 根据NMOS、PMOS的性质,可推导出电路保持稳定且不会有冲突(分析略),Q = 1,~Q = 0
  5. 因为晶体管的速度很快,写入过程也很快,等这几个晶体管稳定后,写入过程就结束了
  6. 现在可以撤销WL信号了(即由1变0),从而M5、M6关闭,BL和~BL也可以撤销了
  7. M4处于导通状态,电源对传到Q,使得M1、M2的Gate端始终为1
  8. 那么在这4个晶体管的相互作用下,SRAM就保持住了刚才写入的1
  9. WL保持为0,则存储的数据始终为1,当然不能断电(断电Vdd没有了)

 

读出数据1时的工作过程:

  1. 把WL置为1,因此M5、M6会是导通状态
  2. 此时外部并不驱动BL和~BL,它们会通过M5、M6被SRAM驱动
  3. BL被驱动为1,~BL被驱动为0

晶体管的开关速度远比电容充放电速度快,所以SRAM更快。但是它每存储一个比特就需要6个晶体管,晶体管数量多会造成芯片面积大,带来集成度和价格高的问题。同时每个晶体管都是要耗电的,晶体管越多功耗就越高。现在CPU中的高速缓存都是用SRAM实现的。

 

标签:计算机,晶体管,BL,SRAM,存储器,DRAM,存储单元,结构
From: https://www.cnblogs.com/lanlancky/p/17572900.html

相关文章

  • 计算机组成预习提纲
    当然,请见下面的计算机组成预习提纲示例,使用Markdown格式:计算机专业计算机组成预习提纲1.计算机组成基础计算机组成的定义与发展历程计算机的五大组成部分:运算器、控制器、存储器、输入设备、输出设备冯·诺依曼体系结构与哈佛体系结构2.运算器运算器的功能与组成整数......
  • matlab 郭彦甫 3 结构化程式与自定义函数
    1.脚本文件  保存文件格式 *.m  文件格式函数部分  fx  包含绝大部分的函数介绍注释为   行前加一个 %    如果为连续多行 需要先选中这些行 右键选择注释两个 %%  将下面的部分分为section   区块 通常用于debug    ......
  • 7.21语言结构学习
    语言结构学习第一题,答案;第二题,答案写,第一题,答案多少;第二题,答案多少......
  • 数据结构思维 翻译完成
    数据结构思维中文版原书:ThinkDataStructures:AlgorithmsandInformationRetrievalinJava译者:飞龙版本:1.0.0自豪地采用谷歌翻译在线阅读PDF格式EPUB格式MOBI格式代码仓库赞助我协议CCBY-NC-SA4.0......
  • c++入门以及简单顺序结构-习题
    1.c++入门以及简单顺序结构-习题1.计算(a+b)*c的值inta,b,c;cin>>a>>b>>c;cout<<(a+b)*c;2.带余除法inta,b;cin>>a>>b;cout<<a/b<<""<<a%b;//c++中取余结果正负只与%前面的正负有关系 cout<<5%2<<endl;//输出1 c......
  • 2.分支结构-习题
    2.分支结构-习题1.偶数【题目描述】读入一个正整数a,如果a为偶数输出yes。【输入】一个正整数a【输出】偶数输出yes,否则什么也不输出。【输入样例】12【输出样例】yes#include<iostream>usingnamespacestd;intmain(){ inta; cin>>a; if(a%2==0) { c......
  • SVN的标准目录结构:trunk、branches、tags
    我们在一些著名开源项目的版本库中,通常可以看到trunk,branches,tags等三个目录。由于SVN固有的特点,目录在SVN中并没有特别的意义,但是这三个目录却在大多数开源项目中存在,这是因为这三个目录反映了软件开发的通常模式。trunk是主分支,是日常开发进行的地方。branches是分支......
  • 计算机网络基础
    1.同网段主机之间通信(1)主机首先根据IP号和子网掩码来计算网络号,查看是否处于同一网段(2)根据ARP协议(2-1)首先,在本机的ARP缓存表中查看目的IP地址的MAC地址(2-2)如果查询到对应条目,则直接封装数据包进行转发(2-3)如果不存在对应条目,则在使用ARP协议进行广播查询(2-3-1)主机封装广播数......
  • go 结构体嵌套interface
    packagemainimport"fmt"//结构体嵌套接口,可以在结构体绑定的方法直接实现接口中的方法,直接调用接口中的方法typeaainterface{ a() b()}typeworldstruct{ aa Ageint}func(hworld)a(){ fmt.Println("helloa方法")}func(hworld)b(){ fmt.Println("hello......
  • 数据结构练习笔记——链式栈的设计与实现
    链式栈的设计与实现【问题描述】采用链式存储结构实现栈的基本操作,并借助栈实现进制转换。【输入形式】整数【输出形式】二进制数【样例输入】10【样例输出】1010#include<iostream>usingnamespacestd;#include<stdlib.h>structsnode{intdata;sn......