计算机组成原理 —— 存储系统(概述)

news2024/10/7 18:30:26

计算机组成原理 —— 存储系统(概述)

  • 存储系统
  • 按层次划分
  • 按照存储介质分类
  • 按照存储方式分类
  • 按照信息可更改性分类
  • 根据信息的可保存性分类
  • 存储器性能指标

我们今天来学习计算机组成原理中的存储系统

存储系统

存储系统是计算机系统中用于存放数据和程序的重要组成部分,它确保了数据的安全持久化与高效访问。存储系统包含了多种类型的存储设备和技术,这些设备在速度、容量、成本和耐用性方面各有特点,共同构成了现代计算环境中的多层次存储体系。下面简要介绍存储系统的几个关键组成部分:

  1. 主存储器(RAM):即随机存取存储器,是计算机中最快、最直接的存储形式,可以直接与CPU交换数据。但断电后,其中的数据会丢失。
  1. 辅助存储器(外存)
  • 硬盘驱动器(HDD):传统的机械硬盘,利用磁性材料存储数据,容量大、成本相对较低,但读写速度较慢。
  • 固态硬盘(SSD):使用闪存技术存储数据,没有机械部件,因此读写速度快、响应时间短,但成本相对较高。
  • 混合硬盘(SSHHD):结合了HDD的大容量和SSD的高速度,通过智能缓存技术提升性能。
  1. 存储网络(SAN、NAS)
  • 存储区域网络(SAN):通过专用的高速网络连接存储设备和服务器,提供块级数据访问,适用于大型企业环境。
  • 网络附加存储(NAS):通过标准网络协议(如NFS、SMB/CIFS)提供文件级数据共享,适合中小企业或家庭使用。
  1. 云存储:利用互联网将数据存储在远程服务器上,用户可以通过网络随时随地访问数据。云存储提供了弹性扩展、高可用性和按需付费等优势。
  1. 内存数据库和缓存系统:为了进一步加快数据访问速度,可以使用内存数据库(如Redis、Memcached)或缓存系统来临时存储热点数据,减少对慢速磁盘访问的依赖。
  1. 分布式存储系统:在大规模数据处理场景下,如大数据分析、云计算平台,分布式存储系统(如Hadoop HDFS、Ceph)通过跨多台服务器分布数据,实现数据的高可用性、高扩展性和容错能力。

拿一台手机举例子:

以现代智能手机为例,其存储系统主要包括两大部分:运行内存(RAM)和非运行内存(通常指的是ROM,即只读存储器,但实际上现代手机的ROM更类似于闪存,具有读写功能)。

运行内存(RAM):

运行内存是手机执行多任务能力和流畅度的关键因素。它类似于电脑的内存条,用于暂时存储CPU正在处理的数据和应用程序运行时需要的信息。RAM的大小直接影响到手机能够同时运行多少应用程序以及这些应用运行的流畅程度。例如,一部高端手机可能配备8GB、12GB甚至16GB的RAM,允许用户无缝切换多个大型应用和游戏,而不必担心重新加载或卡顿。

非运行内存(ROM/内置存储/辅存):

虽然传统意义上的ROM是只读的,现代手机中这一部分更多是指内置的闪存存储,用于存放操作系统、预装应用、用户数据(如照片、视频、音乐、文档等)以及下载的应用程序。这部分存储通常是较大的,比如128GB、256GB或更高,且数据在断电后仍能保存。闪存技术(如eMMC、UFS)因其速度快、功耗低被广泛应用于此。UFS 3.1是一种较新的高速存储标准,能显著提升应用加载速度和数据传输效率。

外部存储扩展:

许多手机还支持通过microSD卡进行存储扩展,这为用户提供了额外的存储空间,可以存放更多的媒体文件或应用数据。不过,随着内置存储容量的增大,支持扩展存储的手机逐渐减少。

云存储集成:

除了物理存储之外,现代手机还紧密集成了云存储服务,如Google云端硬盘、iCloud等,用户可以将数据备份到云端,实现跨设备同步,同时也作为本地存储的一种补充。

在这里插入图片描述

按层次划分

存储系统按照层次分类,主要分为以下几个层级,从速度最快到最慢依次排列,同时容量通常也从最小到最大:

  1. 寄存器(Registers):位于CPU内部,是最快的存储层级,容量极小,用于暂存最常用的数据和指令。
  1. 高速缓存(Cache):紧邻CPU,分为多级(L1、L2、L3等),用来存储频繁访问的数据和指令,以减少访问主存的延迟。Cache的访问速度非常快,但容量相对较小。
  1. 主存储器(Main Memory / RAM):即随机存取存储器,是程序运行期间活跃数据的主要存储区域。相比Cache,它的容量更大,但访问速度较慢,断电后数据丢失。
  1. 辅助存储器(Secondary Storage)
  • 固态硬盘(SSD):使用闪存技术,提供快速的数据读写速度,无机械部件,较传统硬盘更耐用,但成本相对较高。
  • 硬盘驱动器(HDD):通过旋转磁盘和移动读写头来存储数据,容量大、成本低,但速度较慢。
  • 其他类型:包括混合硬盘(SSHHD)、光盘、磁带等,依据不同的应用场景选择不同的存储介质。
  1. 离线存储(Offline Storage):如磁带库、光盘库等,主要用于长期归档和备份,访问速度慢,但存储成本低廉,适合不经常访问但需要长期保存的数据。

在这里插入图片描述

这种层次化的结构设计旨在通过将最常用的数据存储在速度更快但成本更高的存储介质上,而将不常访问的数据存储在速度较慢但成本更低的介质上,从而在性能与成本之间取得平衡,优化整体系统效率。此外,多级缓存技术和虚拟内存技术等也被广泛应用于存储系统中,以进一步提升数据访问速度和系统性能。

按照存储介质分类

按照存储介质分类,存储器可以分为以下几类:

  1. 半导体存储器
  • MOS型存储器:包括DRAM(动态随机存取存储器)和SRAM(静态随机存取存储器),是现代计算机中主存储器的主要构成。
  • Flash存储器:如NAND和NOR Flash,常用于USB闪存驱动器、固态硬盘(SSD)和嵌入式系统中的非易失性存储。
  1. 磁表面存储器
  • 硬盘驱动器(HDD):利用旋转磁盘和磁头读写数据,常见于个人电脑、服务器和数据中心。
  • 磁带:通常用于数据备份和归档,具有高容量和低成本,但访问速度较慢。
  1. 光存储器
  • CD/DVD/Blu-ray光盘:利用激光读取盘面上的微小凹坑或改变材料反射率来存储数据。包括只读光盘(CD-ROM, DVD-ROM),可写一次光盘(WORM),以及可重写光盘(CDRW, DVD-RW, BD-RE)。
  1. 磁芯存储器:虽然已基本被淘汰,但在早期计算机系统中曾被用作主存储器,利用磁化状态存储二进制信息。

在这里插入图片描述

每种存储介质都有其特定的优缺点,比如半导体存储器速度快但成本相对较高,磁表面存储器容量大、成本低但访问速度慢,光存储器则通常用于长期存储和分发大量数据。在实际应用中,根据数据访问速度、存储容量、成本效益和数据持久性等需求,会选择不同的存储介质和技术。

按照存储方式分类

按照存储方式分类,存储器可以归纳为以下几类:

  1. 随机存取存储器(Random Access Memory, RAM)
  • 允许在相同的时间内访问任何存储位置的数据,包括动态RAM (DRAM) 和静态RAM (SRAM)。这类存储器通常作为计算机的主存储器,速度快但易失(即断电后数据丢失)。
  1. 只读存储器(Read-Only Memory, ROM)
  • 包括各种类型的ROM,如掩膜ROM、PROM(可编程ROM)、EPROM(可擦除可编程ROM)、EEPROM(电可擦除可编程ROM)和Flash ROM。早期的ROM是永久性地存储数据,后来的变体允许一定程度上的数据修改。
  1. 顺序存储器
  • 这类存储器访问数据时需要按照一定的顺序进行,如磁带。尽管在现代计算中不作为主要存储方式,但在某些特定应用如数据备份和归档中仍有使用。
  1. 直接访问存储器
  • 如硬盘驱动器和固态硬盘,虽然通常不直接以此分类命名,但从原理上讲,它们允许通过寻址直接访问特定数据块,有时也被视为一种“直接访问”的存储方式。
  1. 外存储器或辅助存储器
  • 包括硬盘、固态硬盘、USB闪存驱动器、光盘等,这类存储器特点是容量大、持久存储,但访问速度通常慢于RAM。

在这里插入图片描述

这种分类方式侧重于存储器如何被访问和数据处理的方式,每种存储方式都有其特定的用途和适用场景,为计算机系统提供了多样化的数据存储解决方案。

按照信息可更改性分类

根据信息的可更改性来划分,存储器可以分为以下三类:

  1. 只读存储器(Read-Only Memory, ROM)
  • 这类存储器中的信息一旦写入就无法修改或只能通过特殊手段修改。早期的ROM芯片内容固定,不可更改;后来发展出可编程ROM (PROM)、可擦除可编程ROM (EPROM)、电可擦除可编程ROM (EEPROM) 和一次性编程ROM (OTPROM) 等,其中后者几类虽可修改,但仍保持“只读”这一基本属性,因为修改过程不如RAM那样频繁和直接。
  1. 可读写存储器(Read-Write Memory)
  • 主要包括随机存取存储器(RAM),如动态RAM (DRAM) 和静态RAM (SRAM)。这类存储器中的信息既可以读取也可以随时写入或修改,但通常断电后数据会丢失(易失性存储)。
  1. 半永久性存储器
  • 虽然这不是一个严格的分类术语,但可以用来描述那些数据更改相对不频繁,但又不是完全只读的存储介质,如固态硬盘(SSD)和硬盘驱动器(HDD)。这些存储器允许用户多次读写数据,且断电后数据依然保留,但相比于RAM,它们的写入操作更为复杂且寿命有限。

在这里插入图片描述

综上,存储器的分类依据信息可更改性的不同,反映了存储技术在灵活性、耐用性及应用场景上的多样性。

根据信息的可保存性分类

根据信息的可保存性,存储器可以分为两大类:

  1. 易失性存储器(Volatile Memory)
  • 这类存储器在失去电源供应后,所存储的信息会立即消失。最典型的例子是随机存取存储器(RAM),包括动态RAM(DRAM)和静态RAM(SRAM)。易失性存储器由于其高速读写特性,通常用作计算机的主内存,用于临时存储运行中的程序和数据。
  1. 非易失性存储器(Non-Volatile Memory)
  • 非易失性存储器的特点是在断电后仍然能保持存储的数据不变。这类存储器广泛应用于需要长期或永久保存数据的场景。常见的非易失性存储器包括:
  • 固态硬盘(SSD)和硬盘驱动器(HDD):基于闪存技术或磁性记录技术,用于存储操作系统、应用程序和用户文件。
  • USB闪存盘、存储卡(如SD卡):便携式的非易失性存储设备,广泛用于数据传输和存储。
  • ROM(只读存储器)及其衍生类型如PROM、EPROM、EEPROM等,虽然原始的ROM是严格意义上的只读,但后续的改进允许某种程度上的编程和擦写,同时保持数据的非易失性。
  • 光盘(CD, DVD, Blu-ray):虽然逐渐被数字存储取代,但仍是一种非易失性的数据存储方式,适合长期归档。

在这里插入图片描述

这种分类强调了存储器在断电状态下的数据保持能力,是选择存储解决方案时的一个重要考量因素,尤其是在考虑数据持久性、系统重启后的数据恢复能力等方面。

存储器性能指标

存储器的性能指标是评估存储器工作效率和能力的一系列关键因素,主要包含但不限于以下几点:

  1. 存储容量:这是存储器可以容纳的总数据量,通常以字节(B)、千字节(KB)、兆字节(MB)、吉字节(GB)等为单位表示。存储容量越大,能存储的信息越多。
  2. 存取时间(Access Time):指从发出读取或写入指令到开始读取或写入数据所需的时间,单位通常为纳秒(ns)。存取时间越短,存储器的工作效率越高。
  3. 存取周期(Cycle Time 或 Memory Cycle Time):完成一次读取或写入操作所需的全部时间,包括了存取时间和必要的恢复时间。它是连续两次独立访问存储器操作之间所需的最短时间间隔。
  4. 带宽(Bandwidth 或 Data Transfer Rate):存储器在单位时间内能够传输的数据量,体现为每秒传输的比特数(bps)、字节数(Bps)或字数。带宽越高,数据传输速度越快。
  5. 可靠性:衡量存储器在预期使用时间内无故障运行的概率,通常用平均无故障时间(Mean Time Between Failures, MTBF)来表示。
  6. 功耗:存储器在工作时消耗的电能,对移动设备尤其重要,因为它影响电池寿命。
  7. 集成度:单位体积或单位面积内可以集成的存储单元数量,反映了技术的先进程度。
  8. 单位成本:每位(比特)存储的成本,用于衡量存储器经济性。
  9. 性能价格比:存储器性能与成本之间的比例,是评价存储器性价比的重要指标。
  10. 可靠性:存储器在规定条件下持续正确执行其功能的能力,包括错误检测和纠正能力。

在这里插入图片描述

这些指标共同决定了存储器在实际应用中的表现,设计者和用户会根据具体需求,权衡这些指标来选择合适的存储解决方案。

在这里插入图片描述

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

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

相关文章

【报错解决】引入@ComponentScan注解注册bean容器后,导致的接口404问题

引入ComponentScan注解注册bean容器后,导致的接口404问题 背景 由于微服务开发中,经常需要在公共模块在引入一些公共模块,供其他服务使用,但是其他服务需要在启动类中配置ComponentScan注解扫描这个公共模块下注册的 bean&#…

sixLabors.ImageSharp图片截取

一、nuget <PackageReference Include"SixLabors.ImageSharp" Version"3.1.4" /> 二、代码 using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Diagnostics; u…

Leetcode 剑指 Offer II 083.全排列

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个不含重复数字的整数数组 nums &#xff0c;返回其 所有可…

轻量级日志系统——Loki

目录 一、loki简介 二、Loki 快速上手 第一步安装 Loki 第二步安装 Promtail 第三步安装granafa 三、LogQL 语法 四、Loki收集nginx日志 1、修改nginx配置 2、nginx服务器上安装promtail 3、添加doshbarod 一、loki简介 Loki是 Grafana Labs 团队最新的开源项目&am…

【图解IO与Netty系列】Netty源码解析——事件循环

Netty源码解析——事件循环 Netty事件循环源码解析select()processSelectedKeys()NioMessageUnsafe#read()NioByteUnsafe#read() runAllTasks() Netty事件循环 当Netty服务端启动起来以后&#xff0c;就可以接受客户端发送的请求&#xff0c;接收到客户端发来的请求后就会有事…

大数据学习-大数据介绍

意义 从海量的数据中分析出海量数据背后的价值 需要分析海量的数据&#xff0c;就需要存储、计算和分析 那就需要分布式多台计算机合适的工具来处理数据 工具 特点 大数据的核心工作&#xff1a;从海量的、高增长的、多类别的、信息密度低的数据中挖掘出高质量的结果 数据存储…

RedHat9 | Web服务配置与管理(Apache)

一、实验环境 1、Apache服务介绍 Apache服务&#xff0c;也称为Apache HTTP Server&#xff0c;是一个功能强大且广泛使用的Web服务器软件。 起源和背景 Apache起源于NCSA httpd服务器&#xff0c;经过多次修改和发展&#xff0c;逐渐成为世界上最流行的Web服务器软件之一。…

C++ STL ③

sort排序 #include <iostream> #include <algorithm> using namespace std;int main() {int a[5],i;cout<<"请输入数组元素:"<<endl;for(i0;i<5;i){cin>>a[i];}sort(a,a5,greater<int>());for(i0;i<5;i){cout<<a[i…

系统架构师考点--数据库系统

大家好。今天我来总结一下数据库系统的相关考点。本考点一般情况下上午场考试占3-5分&#xff0c;下午场案例分析题也会出现。 一、数据库系统 数据&#xff1a;数据库中存储的基本对象&#xff0c;是描述事物的符号记录。数据的种类:文本、图形、图像、音频、视频、学生的档…

基于Redis和openresty实现高并发缓存架构

目录 概述缓存架构设计实践代码路由业务封装redis 效果 概述 本文是对项目中 QPS 高并发相关问题的一种解决方案&#xff0c;利用 Nginx 与 Redis 的高并发、超低延迟响应&#xff0c;结合 Canal 进行实现。 openrestry官网 当程序需要提供较高的并发访问时&#xff0c;往往需…

状态压缩DP——AcWing 291. 蒙德里安的梦想

状态压缩DP 定义 状态压缩DP是一种利用二进制数来表示状态的动态规划算法。它通过将状态压缩成一个整数&#xff0c;从而减少状态数量&#xff0c;提高算法效率。 运用情况 状态压缩DP通常用于解决具有状态转移和最优解性质的问题&#xff0c;例如组合优化、图论、游戏等问…

UDS服务——TransferData (0x36)

诊断协议那些事儿 诊断协议那些事儿专栏系列文章,本文介绍TransferData (0x36)—— 数据传输,用于下载/上传数据时用的,数据的传输方向由不同的服务控制:0x34服务表示下载,0x35服务表示上传。通过阅读本文,希望能对你有所帮助。 文章目录 诊断协议那些事儿传输数据服务…

Redis-事务-watch-unwatch

文章目录 1、监视key2、提交事务 1、监视key 打开两个窗口&#xff0c;第一个窗口先监视key&#xff0c;然后开始事务&#xff0c;然后再打开第二个窗口&#xff0c;修改balance为0 2、提交事务 此时事务被打断

银河麒麟V10 SP1.1操作系统 离线安装 nginx1.21.5、redis 服务

银河麒麟官网地址&#xff1a;国产操作系统、麒麟操作系统——麒麟软件官方网站 一、查看系统版本 命令&#xff1a;nkvers 我的是 release V10 (SP1)&#xff0c;根据这个版本去官网找对应的rpm包 银河麒麟操作系统的rpm包必须从官方找&#xff0c; 要是随便找个Centos的rp…

1.SG90

目录 一.实物图 二.原理图 三.简介 四.工作原理 一.实物图 二.原理图 三.简介 舵机&#xff08;英文叫Servo&#xff09;&#xff0c;是伺服电机的一种&#xff0c;伺服电机就是带有反馈环节的电机&#xff0c;这种电机可以进行精确的位置控制或者输出较高的扭矩。舵机…

基于深度学习的图像识别技术与应用是如何?

基于深度学习的图像识别技术与应用在当今社会中扮演着越来越重要的角色。以下是对该技术与应用的详细解析&#xff1a; 一、技术原理 深度学习是一种模拟人脑处理和解析数据的方式的技术和方法论。在图像识别领域&#xff0c;深度学习主要通过深度神经网络&#xff08;如卷积…

我理解的文本表示模型

词袋模型与N-grams模型 1 词袋模型 (Bag of Words)1.1 one-hot 取值 (Binary)1.2 Term Frequency 取值 (TF)普通频数 r a w t f raw_{tf} rawtf​频率范数归一化对数频数 1.3 Inverse document frequency (IDF)1.4 TF-IDF scores 取值 N-Gram 最简单的文本建模场景&#xff1a…

定义多个类对象,分别输入和输出各对象中的时间(时:分:秒)

在前面的文章中&#xff0c;类中只有公用数据而无成员函数&#xff0c;而且只有1个对象。可以直接在主函数中进行输入和输出。若有多个对象&#xff0c;需要分别引用多个对象中的数据成员&#xff0c;可以写出如下程序&#xff1a; &#xff08;1&#xff09;编写程序&#xff…

stata17中java installation not found或java not recognozed的问题

此问题在于stata不知道去哪里找java,因此需要手动的告诉他 方法1&#xff1a; 1.你得保证已经安装并配置好java环境 2.在stata中输入以下内容并重启stata即可 set java_home "D:\Develope\JDk17" 其中java_home后面的""里面的内容是你的jdk安装路径 我的…

【Java算法】滑动窗口 上

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【算法工作坊】算法实战揭秘 &#x1f456;一. 长度最小的子数组 题目链接&#xff1a;209.长度最小的子数组 算法原理 滑动窗口 滑动窗口算法常用于处理数组/字符串等序列问题&#xff0c;通过定义一…