计算机之存储器简介

存储器是用来存储程序和各种数据信息的记忆部件。按照不同的分类标准有许多不同的分类。
按在计算机系统中的作用分类如下:


存储器一般来说可以分为内部存储器(内存),外部存储器(外存),缓冲存储器(缓存)以及闪存这几个大类。
(1)内存

内存也称为主存储器,位于系统主机板上,可以同CPU直接进行信息交换。其主要特点是:运行速度快,容量小。
(2)外存

外存也称为辅助存储器,不能与CPU之间直接进行信息交换。其主要特点是:存取速度相对内存要慢得多,存储容量大。
注意:内存与外存本质区别是,一个是内部运行提供缓存和处理的功能,也可以理解为协同处理的通道;而外存主要是针对储存文件、图片、视频、文字等信息的载体,也可以理解为储存空间。

(3)缓存
缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。

(4)闪存
闪存(Flash Memory)是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位(注意:NOR Flash 为字节存储。),区块大小一般为256KB到20MB。闪存是电子可擦除只读存储器(EEPROM)的变种,闪存与EEPROM不同的是,EEPROM能在字节水平上进行删除和重写而不是整个芯片擦写,而闪存的大部分芯片需要块擦除。由于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的BIOS(基本程序)、PDA(个人数字助理)、数码相机中保存资料等。

计算机组成原理中,存储器是用于存储程序和数据的核心组件,其结构和分类在计算机系统中具有重要作用。存储器的分类可以从多个角度进行,例如按介质、存取方式以及在计算机中的作用等。 存储器的层次结构是计算机系统设计中的关键概念,通常分为三级:高速缓冲存储器(Cache)、主存储器(主存)和辅助存储器(外存)。高速缓冲存储器位于CPU和主存之间,速度最快但容量较小,用于存储频繁访问的数据[^1]。主存储器通常由RAM和ROM组成,其中RAM用于临时存储可读写的数据,而ROM用于存储固定的、不可修改的数据[^3]。辅助存储器如硬盘和固态硬盘则用于长期存储大量数据,其特点是容量大但速度较慢。 RAM(随机存取存储器)是易失性存储器,断电后数据会丢失,而ROM(只读存储器)是非易失性存储器,断电后数据仍能保留。RAM又分为静态RAM(SRAM)和动态RAM(DRAM),前者速度更快但成本较高,后者容量更大但需要定期刷新。 Cache(高速缓冲存储器)是为了解决CPU和主存之间的速度差异而设计的,它利用程序的局部性原理,将最近或即将访问的数据存储在速度更快的Cache中,从而减少CPU等待时间[^1]。 存储器的层次结构通过合理分配不同类型的存储器,使得计算机在性能和成本之间取得平衡。高速缓存的访问速度最快,其次是主存,最后是外存。这种结构确保了计算机能够在满足速度需求的同时,兼顾存储容量和成本控制[^1]。 ### 存储器分类 存储器可以按照在计算机中的作用进行分类,包括主存储器(内存)、辅助存储器(外存)和缓冲存储器(缓存)。主存储器直接与CPU交互,用于存储当前运行的程序和数据;辅助存储器用于长期存储大量数据;缓冲存储器则用于临时存储数据以平衡速度差异[^2]。 ### RAM和ROM的工作原理 RAM允许数据的随机读写,其工作原理基于电子存储单元的状态变化。DRAM使用电容存储电荷来表示数据位,需要定期刷新以维持数据;而SRAM使用触发器电路来存储数据,不需要刷新,因此速度更快。ROM的工作原理则基于预设的电路连接,数据在制造时就被写入,之后只能读取,不能更改。 ### Cache的工作原理 Cache的工作原理基于程序的局部性原理,即程序倾向于访问最近使用过的数据或其附近的地址。当CPU需要访问数据时,首先检查Cache中是否有该数据。如果有,则直接从Cache中读取,否则从主存中读取,并将该数据加载到Cache中以供后续访问。 ### 存储层次结构 存储层次结构的设计目的是为了提高整体系统的性能,通过将高速但昂贵的存储器用于关键数据,同时使用低速但便宜的存储器处理大量数据,从而达到性能和成本的最佳平衡。这种结构利用了局部性原理,使得大多数数据访问可以在高速存储器中完成。 ```python # 示例代码:模拟简单的Cache机制 class SimpleCache: def __init__(self, size): self.cache = {} self.size = size def get(self, key): return self.cache.get(key, None) def put(self, key, value): if len(self.cache) >= self.size: # 简单的FIFO替换策略 self.cache.pop(next(iter(self.cache))) self.cache[key] = value # 使用示例 cache = SimpleCache(3) cache.put('a', 1) cache.put('b', 2) cache.put('c', 3) print(cache.get('a')) # 输出: 1 cache.put('d', 4) # 'a' 将被移除 print(cache.get('a')) # 输出: None ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值