存储系统

简介: 存储系统

存储器的分类
从与CPU的关系看,可分为内存和外存
内存:通常由半导体存储器构成,它直接与CPU的外部总线相连,是计算机主机的组成部分。用来存放当前正在执行的数据和程序。
外存:通过接口逻辑电路与主机相连接,是作为计算机的外部设备来配置的。外存用来存放暂时不用的那些程序和数据,使用时必须先调入内存才能执行。
从存储介质来分
半导体存储器:采用超大规模集成电路工艺制作,分为随机存储器和只读存储器两大类。具有速度快、体积小、功耗低和可靠性高等优点,在计算机中主要用做高速缓存和主存。
磁表面存储器:基于电-磁转化的原理实现。主要分为硬盘、软盘、磁带存储器等。具有容量大、价格低、可长期保存信息的优点,但速度比半导体存储器慢。 硬盘用作外存,软盘和磁带存储器已经不用或很少使用了。
光盘存储器:利用光学原理实现。分为只读、可写一次、可重写三大类。具有抗干扰好、容量大、价格低、可长期保存信息(比硬盘存储时间长得多,可达几十年)的优点,但容量比硬盘小,速度也不如硬盘快。用作外存
按照存取方式来分
随机存储器RAM:CPU可以直接编址访问的存储器。分为静态RAM和动态RAM。静态RAM(SRAM)比较稳定,读写速度快,容量小,功耗大,用作高速缓存Cache;动态RAM(DRAM)容量大,用作主存(内存条)。缺点是掉电后,RAM中的信息全失。
只读存储器ROM:用户在使用时只能读出信息,不能写入新的信息,存储信息断电后不会丢失。可编程只读存储器(PROM):一次写入后无法修改,非易失,可靠性高。掩膜只读存储器(MROM):非易失,可靠性高,无法修改。可擦可编程只读存储器(EPROM):非易失,可靠性高,可擦写可编程,需要专用的电路来实现。闪存 Flash Memory :非易失,可靠性高,无需专用电路即可在线擦除及编程,速度不够快。
直接存取存储器:又称半顺序存储器,信息是按块存放的,读/写时也是按块进行的,磁盘和光盘就属于直接存取存储器。访问磁盘时先将磁头直接移动到一个小区域(磁道),再对这个小区域顺序存取。磁盘存储器访问信息的时间和信息的位置有关,一般用平均访问时间表示。
相联存储器:是一种按内容访问的存储器。迅速找到要访问的区域,由于价格高,相联存储器只用在需要高速查找的特殊场合。
按照存取作用来分
高速缓存(Cache):存放CPU在当前一小段时间内立刻要使用的程序和数据。
主存:存放CPU当前运行的程序和数据。CPU可以直接编程访问的存储器
辅助存储器:不可以直接编程访问。存放CPU当前暂不使用的大量程序和数据。
按照保存信息的时间来分
永久性存储器:只读存储器、磁盘存储器、光盘存储器和U盘存储器都是永久性存储器。
非永久性存储器:在断电后存储器中保存的信息会丢失,随机存储器就属于非永久性存储器。
层次结构
程序的局部性原理:程序在执行时所访问地址的分布不是随机的,而是相对集中的,这使得在一个小的时间段内,访存将集中在一个局部区域。利用这个原理,可将马上要用到的信息存放到CPU优先访问的高速小容量存储器Cache中,暂时不同的信息放到容量较大,速度较慢的存储器 主存 中,从而实现提高存储系统速度和容量的目的
容量大、速度快、成本低
存储器的主要技术指标
存储容量:用存储单元数×字长表示,如1M×16位、2G×8位, 16GB 。
存储速度:Cache和主存:使用存储周期来衡量存储速度。指连续访问存储器时完成一次读/写操作需要的时间。磁盘和光盘:由于存储信息的时间和信息位置有关,只能用平均存取时间来衡量存储速度。
数据传输率(访存带宽):单位时间访问存储器读/写的数据量。 == > 访存频率(存储周期的倒数) * 存储单元字长
存储器的价格:存储每位二进制数的成本
主存储器容量的扩充
位扩展:把多个存储芯片组成一个整体。使得数据位数增加,但单元个数不变。
所需芯片数:系统存储器单元字长除以芯片单元字长
连线方法:各芯片的地址线并联到地址总线;片选并联;读写并联;不同芯片的数据线连在总线的不同位上。
字扩展:把多个存储芯片组成一个整体。使得单元个数增加,但数据位数不变。
所需芯片数:系统存储器单元数除以芯片单元数
连线方法:各芯片的数据线并联到数据总线;读写并联;不同芯片的地址线连在地址总线的低位上;地址总线的高位经译码后连接到各芯片的片选上。
1K = 1024B = 210 所以 512K = 219 扩展到 2M = 2 1024K = 2 2 512K = 2*21
字位同时扩展:把多个存储芯片组成一个整体。使得单元个数增加,数据位数也增加
所需芯片数:系统存储器容量除以 芯片容量
连线方法:按扩展要求对芯片分组,每组芯片数等图存储器单元字长除以芯片单元字长。所分的组数等于系统存储器单元数除以芯片单元数。
组内连接同 :位扩展;组外连接同:字扩展

相关文章
|
iOS开发
解决App Installation failed, No code signature found.
解决App Installation failed, No code signature found.
565 0
|
数据可视化 数据挖掘 Python
数据分析案例-往届世界杯数据可视化
数据分析案例-往届世界杯数据可视化
831 0
数据分析案例-往届世界杯数据可视化
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
软件测试中的人工智能:现状与未来
【10月更文挑战第6天】 本文探讨了人工智能在软件测试中的应用,包括自动化测试、智能缺陷分析以及测试用例生成等方面。通过案例分析和未来趋势预测,文章展示了AI如何提高软件测试的效率和准确性,并指出了当前面临的挑战和未来的发展方向。
155 1
|
编译器 C++ 开发者
C++一分钟之-属性(attributes)与属性语法
【7月更文挑战第3天】C++的属性(attributes)自C++11起允许附加编译器指令,如`[[nodiscard]]`和`[[maybe_unused]]`,影响优化和警告。注意属性放置、兼容性和适度使用,以确保代码清晰和可移植。示例展示了如何使用属性来提示编译器处理返回值和未使用变量,以及利用编译器扩展进行自动清理。属性是提升代码质量的工具,但应谨慎使用。
370 13
|
域名解析 网络协议 Windows
hosts 和 dns
hosts 和 dns
238 2
|
监控 Java UED
Java一分钟之-Spring Cloud Netflix Hystrix:容错管理
【6月更文挑战第9天】Spring Cloud Hystrix是用于微服务容错管理的库,通过断路器模式防止服务雪崩。本文介绍了Hystrix的基本概念,如断路器、线程隔离和fallback机制,并展示了如何快速上手,包括添加依赖、启用注解和编写Hystrix命令。此外,还讨论了常见问题(如断路器打开、资源泄漏和不当的Fallback策略)及其解决方案。通过自定义Hystrix指标监控,可以进一步优化系统性能。理解Hystrix工作原理并适时调整配置,对于构建健壮的微服务至关重要。
328 3
|
Java 编译器 Kotlin
Kotlin 中编写静态方法的方式详解
Kotlin 中编写静态方法的方式详解
479 0
|
小程序 JavaScript Java
座位预约|座位预约小程序|基于微信小程序的图书馆自习室座位预约管理系统设计与实现(源码+数据库+文档)
座位预约|座位预约小程序|基于微信小程序的图书馆自习室座位预约管理系统设计与实现(源码+数据库+文档)
626 0
|
Kubernetes 负载均衡 Cloud Native
如何将Docker与Kubernetes集成,实现云原生应用程序
在云原生应用程序开发中,Docker和Kubernetes通常是不可或缺的工具。Docker用于容器化应用程序和其依赖项,而Kubernetes用于自动化和编排容器的部署、扩展和管理。下面是如何将Docker与Kubernetes集成
541 0
|
机器学习/深度学习 传感器 算法
基于混沌系统logistic实现图像加密,解密附matlab代码
基于混沌系统logistic实现图像加密,解密附matlab代码