硬件基础:存储器

之前对存储器做过简单的汇总,参考这篇文章:

计算机/微机存储技术_路溪非溪的博客-CSDN博客

这次,我们从数字集成电路的角度再次补充学习一下存储器的知识。

定义和分类

从这里面我们能知道一些关键词。

存储介质主要是半导体器件和磁性材料。

磁性材料因为有NS极性,可以表示两种状态,因此可以用来存储二进制数,比如早期的磁盘;

半导体器件通常分为双稳态电路或者CMOS晶体管,双稳态电路能保存0和1两种状态,CMOS晶体管有通和断两种状态,因此都可以用来表示和存储二进制数据或者程序。

存储元指的是存储的二进制位数,存储单元指的是一次最小可以读取的数据块。

比如8位二进制数,我们最少一次可以读写一个字节。

分类如下:

易失性,顾名思义就是说容易丢失;非易失性,就是说不容易丢失;

我们重点看下主流的半导体存储器:

ROM

ROM和RAM是很早期的概念了,沿用至今,存储器也一直在更新换代,现在的ROM也已经能读写了,但是因为历史原因,这个概念一直在使用,我们要知道的是,到了这个时代,不要以为ROM就真的只能读不能写。

Flash,闪存,就强调一个快。

RAM

双极型就是指以三极管为主要存储单元。

现在MOS型是主流。

计算机中主要的几种存储器类型

比如L1 L2常指一级缓存、二级缓存。

主存指的是内存;

像硬盘、Flash这些都属于外存。

顺序存储

顺序存储器SAM并不是说是一种RAM或者一种ROM,更多的是指一种存储方式,一种存储原理,在有些地方比如单片机里的有些寄存器就用到了这样的存储结构。

在存取信息时,只能按存储单元的位置,顺序地一个接一个地进行存取的存储器。最典型的是磁带存储器。

了解即可,现在很少听到这种说法了。

这里有个FIFO和FILO的概念可以了解下。

描述了存和取的两种方式。

另外,这个移位寄存器的原理也可以学习下。

比如:

1位

多位

可实现并行输入和并行输出。

这里更多的是了解一种存储方式,而不是某种存储介质。

ROM

注意,不能写入数据是针对早期的ROM来说的。

ROM的工作原理基本如下所示:

我们指定一串地址码,对应的存储器里有地址译码器;

控制逻辑控制数据的读和写。

等等。

比如早期由二极管组成的ROM

现在基本都是使用MOS了

核心原理无非就是晶体管的导通和关断,以此来识别是1还是0

根据地址选中“字线”,然后从“位线”上将数据读出去,就和行列阵差不多。

PROM

PROM是早期的一种只读存储器,而且,只能写入一次。

PROM内部是通过熔丝来记录二进制状态的,编程时需要加约20V的高电压。

当熔丝保持连接的时候,读出来的就是高电平,也就是1,当熔丝熔断,读出来的就是0

新的PROM全是1,我们编程时将需要变成0的地方给熔断。

由此可见,这种就是一次性的。

这是三四十年前的产品了,当时编程还需要专门的高压编程器。

了解即可。

EPROM

PROM只能读,不能写,是一次性的存储产品。

随着技术的发展,出现了可改写的只读存储器EPROM。

EPROM可以擦除原来的信息,然后再写入新的信息。

不过,那时候的擦除比较麻烦,需要用紫外灯照射大概几十分钟,才能将里面的数据给擦除。编程的时候也是使用的高压编程器。

中间的透明区域就是照紫光灯的地方。

现在已经被淘汰了。

它存储的时候是通过层叠栅MOS管的浮栅来实现的,如下所示:

这里提一下,我们常说的几纳米工艺,这里的几纳米几纳米就是指的MOS管中间的沟道距离。

写入的时候是通过给MOS管栅极和漏极加高电压,然后将沟道的电子给引入浮栅之中,从而形成封锁,因为周围是二氧化硅绝缘层,断电之后电子就可以保存在浮栅之中很长时间。

擦除的时候,是通过照射紫外灯,浮栅中的电子在强光的照射下获得能量,然后逃逸出去回到原来的位置。

新的EPROM默认读出来都是1,此时浮栅中还没有电子,处于1状态。

当写入0之后,浮栅中就有电子了,读出来也就是0了。

写入数据的过程,实际就是注入电子的过程。

因此,EPROM有个特点,就是编程(加高压)时只能把1写成0,不能把0写成1,只有用紫外线照射时才能将0写成1,也就是释放电子。注意区分编程(写)、读和擦除。只有先擦除才能编程,因为不擦除就没法把0写成1,也就没法写入想要写入的数据。

EEPROM

到了EEPROM,又有了很大的改进。

擦除时只需要常规电压即可,约12V,编程时也是差不多的电压。

小插曲:我发现高低电平,最终都是通过各种控制方式接入地或者电源。

擦除过程,释放电子,恢复成1,如下:

编程过程,锁住电子,存入0,如下:

同样的,编程之前要擦除,和EPROM不同的是,EPROM只能整片整片地用紫外光擦除,EEPROM可以一位一位地用电擦除。

EEPROM现在用的还是蛮多的。

注意,有时候用单片机操作某个EEPROM时,只接入了3.3V或者5V电压,但是EEPROM明明是要用12V电压才能工作呀?这是因为EEPROM芯片内部集成了升压模块。

Flash

现在的嵌入式主流存储器,SD卡、U盘等都属于这种类型。

ROM一般都要先擦后写,只要写了,就随时能读。

擦和写才是存储的关键。

就是因为只能把1编程成0,而不能把0编程成1,所以必须要先擦除才能写。

每次擦除以块为单位。不过这几个缺点我们平时使用时看不到,因为有内部的控制器帮我们处理掉了,比如读写干扰就通过校验给规避掉了。所以为什么新买的SD卡或者TF卡一般都要先格式化一次呢,那就是整片擦除。

Flash一般只用常规电压来驱动即可,比如3.3V、5V等。

擦写的核心原理也是电子的存储和释放。

NOR FLASH,内部是或非门的结构not or

这里说的数据线和地址线指的是内部的结构组成,不是外部引脚的接线。

NAND FLASH,内部是与非门的结构,not and

仅供参考,具体以芯片手册为准。

RAM

一般分为SRAM和DRAM

SRAM

静态存储器SRAM内部由双稳态电路(锁存器)构成。

SRAM的最大特点就是“快”,缓存就是用SRAM来做的,CPU内部寄存器也是用SRAM来做的,总而言之,就是一个字:快、快、快、……

当然,电池没电了,数据还是会丢失。只是一种弥补,并非解决。

其实掉电丢失,很多时候就需要这样的特性,内存就是这样的,就相当于整个应用是个局部变量,每次开机后都会重新跑一遍程序,程序还是原来的状态,如果是保存起来的,反而麻烦,还得恢复到新的状态。只保留一些必要的信息,其他信息每次开机都是稳定的流程。

因为使用了锁存器,所以不需要擦除就能写,但换来的就是掉电之后锁存器的状态就丢失了,也就是SRAM的数据就丢失了。因为锁存器需要电平才能正常工作。

常规结构简略图如下:

仅供参考,具体以芯片手册为准。

用的器件较多,所以SRAM的成本还是蛮高的,可以看到实现1位数据的存储需要6个MOS管。

DRAM

动态存储器DRAM相比SRAM速度没那么快,但是成本比SRAM要低。

为什么DRAM速度没那么快呢?因为DRAM需要定时刷新。

MOS管的分布电容,里面的电荷存储时间是有限的,所以为了避免电荷释放掉,就需要定时刷新。如果不刷新,电容电量就没了,数据状态也就改变了。

现在电脑的内存DDR就是使用DRAM来做的。

SRAM实现一位数据的保存需要6个管子,而DRAM只需要1个,多的也只需要3个。

图中的电容Cs就是用来存储0和1的。

电容有电就是1,电容没电了就是0。

一般20ms左右就需要刷新一次。

3管的示例:

这里的电容C就是MOS管分布电容。

了解即可。

更多详细内容查阅相关资料。

大容量DRAM中单管的用的比较多。

可以看到上面有个专门的刷新电路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/649173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亿发中小型企业erp软件智能化赋能,专业助力广东制造行业生产流程管理

在当前经济全球化的环境下,广东省的中小型制造业企业正面临多方面的严峻挑战。包括产品质量的维护、分销渠道的稳定、生产成本降低以及减轻生产过程中的资源消耗等难题。目前,随着信息技术的迅速发展,一些先进的IT工具,比如企业资…

STM32实现软件IIC协议操作OLED显示屏(1)

时间记录:2024/1/25 一、IIC协议介绍 (1)协议介绍 IIC(又称I2C,Inter-Integrated Circuit),即集成电路总线,是一种两线式串行总线,由PHILIPS公司开发,用…

OSS上传下载乱码问题

配置headers: "Content-Disposition": attachment; filename*UTF-8${encodeURIComponent(file.file.name)},

【GitHub项目推荐--开源小游戏】【转载】

01 回合制生存游戏 Cataclysm-DDA 是一款回合制生存游戏,背景设置在后世界末日的世界中。虽然有些人将其描述为“僵尸游戏”,但《大灾变》远不止这些。努力在一个严酷、持久、程序生成的世界中生存。 为食物、设备寻找一个死去的文明的残余物。或者&am…

ThinkPHP+uni-app框架熊猫电竞赏金电竞系统源码PHP含APP+H5

熊猫电竞赏金电竞系统源码,包含APP、H5和搭建视频教程,支持运营级搭建,这套源码是基于ThinkPHPUniaapp框架开发的。 赏金电竞系统源码 APPh5搭建视频 可搭建!运营级! 赏金赛源码,用户通过平台打比赛&#x…

小白水平理解面试经典题目LeetCode 594 Longest Harmonious Subsequence(最大和谐字符串)

594 最大和谐字符串 这道题属于字符串类型题目,解决的办法还是有很多的,暴力算法,二分法,双指针等等。 题目描述 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 现在,给你一个整数数组 nums …

用vue实现微信小程序的点餐首页-纯前端效果

一、效果图 图片来源于网络 二、代码 <template><view class"container"><view class"top"><image src"../../static/img/home.png" class"home"></image></view><view class"content&…

安装好IntelliJ IDEA点击无反应,如何解决配置文件不一致导致的启动问题

在我们的开发生涯中&#xff0c;遇到IDE工具出现问题是在所难免的。最令人头疼的莫过于&#xff0c;你的IDEA(IntelliJ IDEA)无法启动&#xff0c;而且没有任何错误提示。这篇文章将详细讲解如何解决IntelliJ IDEA 2023.3.3版本启动失败的问题&#xff0c;这个问题可能也适用于…

Linux的文件系统、软硬链接、动静态库

前要&#xff1a;本次我想给您带来关于 IO 和文件的知识&#xff0c;而文件在本系列中分为内存上的文件和磁盘上的文件。 1.文件概念 1.1.文件读写 在谈及系统接口之前&#xff0c;我们先来从 C 语言的角度来谈及一些前要知识&#xff0c;以辅助我们后续来理解系统 IO。 我们…

LeetCode.2859. 计算 K 置位下标对应元素的和

题目 题目链接 分析 这道题的题意很明确。就是求每一个下标的二进制中1的个数为k的下标所对应的元素值之和。 Java 中有 库函数 Integer.bitCount(num)&#xff0c;这个函数的返回值就是 num 中 1 的个数。 代码 class Solution {public int sumIndicesWithKSetBits(List…

uniapp状态管理Vuex介绍及vuex核心概念

状态管理Vuex Vuex 是什么&#xff1f; Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。 uni-app 内置了 Vuex 什么是“状态管理模式”&#xff1f; <!…

英特尔正式发布OpenVINO™ 2023.3版本

2024年1月24日&#xff0c;英特尔正式发布了OpenVINO™ 2023.3版本&#xff08;Release Notes for Intel Distribution of OpenVINO Toolkit 2023.3&#xff09;。OpenVINO™是英特尔针对自家硬件平台开发的一套深度学习工具库&#xff0c;包含推断库&#xff0c;模型优化等等一…

决策树的基本构建流程

决策树的基本构建流程 决策树的本质是挖掘有效的分类规则&#xff0c;然后以树的形式呈现。 这里有两个重点&#xff1a; 有效的分类规则&#xff1b;树的形式。 有效的分类规则&#xff1a;叶子节点纯度越高越好&#xff0c;就像我们分红豆和黄豆一样&#xff0c;我们当然…

【Java基础】聊聊你不知道的注解那些事

在实际的开发中&#xff0c;我们大量使用了注解&#xff0c;无论是spring、还是本身jdk提供的&#xff0c;注解都是围绕一个java程序员的开发生活&#xff0c;所以本篇主要介绍注解相关的概念、理论、实践。 定义注解 注解和异常非常相似&#xff0c;都可以自定义&#xff0c…

如何在html5中的canvas绘制文本自动换行?

在这篇文章中我们讲解了怎么解决canvas绘图过程中,drawText的换行问题,先看一个大家平时在canvas绘制文本都会遇到的问题: 一个150*100的canvas画布,加个边框明显边界 <canvas id="canvas" style="border:solid 1px darkgoldenrod;" width="2…

ubuntuNginx反向代理和负载均衡

配置两台服务器确保nginx启动并且可以访问 配置nginx代理服务器 可以选择直接安装或者编译安装nginx rootubuntu:~# apt install libgd-dev #安装依赖 rootubuntu:~# apt update rootubuntu:~# apt install libpcre3 libpcre3-dev rootubuntu:~# apt-get install openssl…

jQuery遍历(其他遍历)

1、.add&#xff08;&#xff09;: 添加元素到匹配的元素集合 例一&#xff1a; <script> $(document).ready(function(){ $("div").add("p").css("background-color","red") }) </script…

前端canvas项目实战——简历制作网站(二)——右侧属性栏(颜色)

目录 前言一、效果展示二、实现步骤1. 实现一个自定义的选色板2. 创建属性工厂&#xff0c;为每个对象定制属性3. 为canvas对象注册监听器&#xff0c;点击不同对象时更新属性列表 三、Show u the code后记 前言 上一篇博文中&#xff0c;我们实现了左侧工具栏&#xff0c;通过…

kubernetes实战教程:kubernetes简介

kubernetes实战教程:kubernetes简介 简介 官网:https://kubernetes.io/zh-cn/ 一款生产级别的容器编排系统,也成为k8s,用于自动部署,扩展和管理容器化应用的开源系统.Google在2014年开源了kubernetes(后续就用k8s来代替了)这个项目.k8s建立在Google大规模运行生产工作负载十几…

解决vue 2.6通过花生壳ddsn(frp内网穿透)实时开发报错Invalid Host header和websocket

请先核对自己的vue版本&#xff0c;我的是2.6.14&#xff0c;其他版本未测试 起因 这两天在维护一个基于高德显示多个目标&#xff08;门店&#xff09;位置的项目&#xff0c;由于高德要求定位必须使用https服务&#xff0c;遂在本地无法获取到定位坐标信息&#xff0c;于是…