当前位置: 首页 > news >正文

02计算机组成原理-存储器技术(上)

02计算机组成原理-存储器技术(上)

  • 引言
  • 1.存储器基本概念介绍
    • 1.1局部性原理
    • 1.2块
    • 1.3命中
  • 2.存储器分层结构
  • 3.磁盘存储器

引言

从早期开始,我们的程序员就希望我们的电脑可以存储无限的数据,并且还能以极快的速度进行存储。本章开始,我们就来探讨一下我们是如何构建一个超大容量的存储器的。

想象一下,假设你正在厨房里准备一顿晚餐。你已经从冰箱里拿出了蔬菜、肉类和一些调料,放在了厨房的台面上。但是,你发现还需要一瓶橄榄油来烹饪,而你并没有在台面上找到它。于是,你开始在厨房的橱柜和架子上寻找橄榄油。经过一番搜索,你终于找到了那瓶橄榄油,并将其放在了台面上你之前准备好的食材旁边。现在,台面上摆放着你需要的所有食材和调料,你不再需要频繁地在橱柜和台面之间往返寻找。接下来,你可以专注于烹饪,把大部分时间都花在准备和烹饪晚餐上,而不是在寻找食材和调料上。试比较这两种情况:一种是在你的台面上有很多调料;另一 种是台面上只有一个调料,你不得不频繁的去架子上寻找。很明显,在台面上放很多调料可以节省时间。而且,就像你不会同时以相同的概率使用每一种调料,一个程序也不会同时以相同的概率访问它全部的代码或数据。否则, 不可能让存储器在保持大容量的同时又能快速访问。同理,我们可以构建一个大容量的虚拟存储器,它能像小容量的存储器那样被快速访问。我们称之为“虚拟存储器”或“虚拟内存”的机制,使得大容量的存储设备(如硬盘)可以像小容量的快速存储器一样被访问,同时仍然保持了其大容量和高速度的特性。这种机制的关键在于它利用了程序的局部性原理。

1.存储器基本概念介绍

存储器其实是存储器系统,每种不同的存储器它们是什么原理,采用什么技术构成的,我们会给大家介绍。先给大家介绍几个概念:

1.1局部性原理

局部性原理:是指CPU在访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。即在任何时间内. 程序访问的只是地址空间相对较小的一部分内容。这种特性在程序执行时表现得尤为明显,即程序在执行时倾向于引用临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。

局部性原理主要分为两种类型:时间局部性和空间局部性。

时间局部性:某个数据项在被访问之后可能很快被再次访问的特性,即某个数据项在一个较短的时间间隔内很可能又被访问。程序循环、堆栈等结构是产生时间局部性的主要原因。例如,在循环语句中,循环体内部的指令和数据会被反复访问,因此它们的时间局部性很高。

空间局部性:某个数据项在被访问之后,与其地址相近的数据项可能很快被访问的特性。程序的指令大部分时间是顺序执行的,而且程序的数据结构(如数组)是连续存放的。这种顺序执行和连续存放的特性使得空间局部性得以体现。

在以上代码片段中,对sum的访问具有良好的时间局部性,对a数组的访问具有良好的空间局部性。

注意对a数组没有时间局部性,因为时间局部性是对同一个地址空间,而循环中是对数组里面的每一个元素进行访问,而不是重复地访问具体某一个。

存储器层次结构的设计正是基于局部性原理,旨在平衡存储速度、容量和成本之间的矛盾,以达到更高的系统性能。基于这两个局部性原理,现代计算机系统使用多级存储器来优化性能与成本的平衡。

1.2块

无论数据如何分层,数据的处理和交换过程都是两个层之间相互交换,不可能跨层交换,所以在描述的存储器层次结构中,“”(Block)或""(Line)是数据传输的基本单位。

当数据从一个层次迁移到另一个层次时,并不是以字节或者单个数据项为单位,而是以固定大小的数据块进行。
这个设计选择主要是为了效率考虑:虽然一次性移动较大块的数据可能会暂时占用更多带宽,但它减少了管理和迁移数据所需的元数据开销,整体上提高了系统的性能。

块大小(即行长度)是一个重要的设计参数,它影响着缓存的效率、命中率以及硬件复杂度。块大小的选择需要权衡多个因素,包括程序访问模式、缓存大小、以及硬件设计的复杂性和成本。常见的块大小有32字节、64字节、128字节等,具体大小根据不同的系统和应用需求而定。

1.3命中

在存储器层次结构中,“命中”(Hit)指的是处理器请求的数据恰好存在于高速缓存(即高层存储器)中,这意味着数据可以迅速获取,无需访问更慢的下一层存储器,从而显著减少数据访问延迟。

相反,“缺失”(Miss)发生时,处理器请求的数据不在高速缓存中,系统必须继续到下一层存储器(如主存)中去查找所需的数据块。这个过程涉及更多的延迟,因为下层存储器的访问速度通常较慢。

命中率(Hit Rate)是衡量存储器层次结构效率的关键指标之一,它表示数据请求在高速缓存中命中的概率。高命中率意味着大多数数据请求可以在高速缓存中得到满足,从而系统整体运行效率高,响应速度快。

缺失率(Miss Rate),即1减去命中率,反映了数据请求不能在高速缓存中找到而需要从下一层存储器获取的比例,它是评估和优化存储器层次设计时需要关注的重要参数。通过提高命中率、降低缺失率,可以有效提升系统的整体性能。

命中时间(Hit Time)是指处理器在高速缓存中成功找到所需数据所需的时间,它包括了访问延迟和比较标记以及有效位(用于确认数据有效性的信息)的时间。由于高速缓存使用的是高速且成本较高的技术,它的访问速度远超于下层存储器,因此命中时间相对较短。
这个时间包括了以下几个部分:

  1. 查找时间:在高速缓存中查找指定地址所需的时间。这通常通过比较地址标签(tag)来完成。
  2. 数据传输时间:一旦找到数据,将数据从高速缓存传输到处理器所需的时间。

缺失代价(Miss Penalty)则是当数据在高速缓存中未命中时,必须从下一层存储器(如主存)中检索数据所经历的额外延迟。这个代价包括了多个步骤:识别缺失、访问下一层存储器获取数据、将数据传输到高速缓存中(可能还需要替换高速缓存中已有的某个数据块),最后再将数据传送给处理器。这个过程远比单纯的命中时间要长,是影响系统性能的关键因素。

  1. 等待时间:等待低层存储器响应请求的时间。这通常比高层存储器的响应时间要长得多。
  2. 数据传输时间:将数据从低层存储器传输到高层存储器(如从主存到高速缓存)的时间。
  3. 处理缺失的额外开销:这包括在高层存储器中找到一个空的块来存储新数据(替换策略)、更新相关数据结构(如目录或标签数组)等所需的时间。

2.存储器分层结构

存储器系统是一个具有不同容量,成本和访问时间的存储设备的层次结构:

存储器层次结构的设计正是基于局部性原理,旨在平衡存储速度、容量和成本之间的矛盾,以达到更高的系统性能。基于这两个局部性原理,现代计算机系统使用多级存储器来优化性能与成本的平衡。存储器层次结构通常包括以下几级:

  1. 寄存器(Registers):这是离CPU最近的存储器,访问速度最快,成本也最高,容量最小。它们通常由CPU直接访问,用于存储当前正在处理的数据和指令。
  2. 高速缓存(Cache):位于CPU和主存之间,速度比主存快得多,但成本也更高。缓存通常使用SRAM(静态随机访问存储器)来实现,因为SRAM比DRAM(动态随机访问存储器)更快,但更昂贵。缓存利用局部性原理来存储最近被访问的数据和指令,以便快速访问。
  3. 主存储器(Main Memory)或RAM(Random Access Memory):这是大多数程序直接访问的存储器。主存通常使用DRAM来实现,因为它每比特的成本比SRAM低得多。主存的容量比缓存大得多,但访问速度比缓存慢。
  4. 辅助存储器(Secondary Storage):如硬盘、固态硬盘(SSD)、光盘等,这些存储器的容量大,但访问速度比主存慢得多。它们用于存储不经常访问的数据和程序,以及需要长期保存的数据。

构建存储器层次结构主要有 4 种技术:
1、DRAM(动态随机存取存储器):

  • 1.主要用于主存储器(通常称为RAM)。
  • 2.每比特成本低于SRAM,但速度较慢。
  • 3.容量大,每比特占用空间较少,因此等量的硅可以制造更多的DRAM。
  • 4.需要定期刷新以保持数据,因为电容会漏电。

2、SRAM(静态随机存取存储器):

  • 1.通常用于高速缓存(Cache)和寄存器。
  • 2.每比特成本高于DRAM,但速度更快。
  • 3.不需要刷新电路来保持数据,因为使用交叉反接的晶体管来存储数据。

3、闪存(Flash Memory):

  • 1.非易失性存储器,即使断电也能保持数据。
  • 2.通常用于个人移动设备中的二级存储器,如SSD(固态驱动器)和USB闪存盘。
  • 3.访问速度比DRAM慢,但比磁盘快。
  • 4.每比特成本介于DRAM和磁盘之间。

4、磁盘(Disk):

  • 1.通常是服务器中容量最大且速度最慢的一层。
  • 2.访问时间最长,但每比特成本最低。
  • 3.分为HDD(硬盘驱动器)和SSD(固态驱动器,虽然这里的SSD与闪存中的SSD有所不同,但技术上更接近于闪存)。

tips:构成主存的还有只读存储器(ROM),用于存放固定不变的信息。比如BIOS


随着时间推移,这些技术持续发展,比如SSD(固态硬盘)的普及大幅提升了二级存储的速度,逐渐在某些场景下替代传统的机械硬盘;同时,新的存储技术如3D XPoint和MRAM等,也在探索更优的性能与成本平衡点,以满足未来计算需求。今天我们先来讲磁盘存储器

3.磁盘存储器

磁盘存储器:硬盘存储器作为传统的数据存储设备,其工作原理基于磁性记录技术。

抽象化后大概张:

数据就存放磁盘面上,磁盘装在磁盘驱动器上,而磁盘驱动器的核心部件就是机械臂杆连的磁头用于读写数据,磁盘控制器是硬盘存储器和主机的接口。

我们主要看磁盘的存储的功能,所以主要讲盘片,大家可以看到图中是有多个盘面的,磁盘会向同心圆一样,中间是空心的,空心的原因是为了安装一个转轴,一圈称为一个磁道,数据就存在这一个个磁道上。一圈分成多个扇区,一个扇区是记录数据的最小的基本单位。大家注意:磁盘的两面是都能用的,细心点的同学可以看到是用两片夹住的。换扇区的时候是盘面转,机械臂杆是固定不动的。接下来大家看点书面的东西:

数据组织结构:

柱面:磁盘由多个盘面组成,每个盘面有多个磁道。每个磁道被划分为多个扇区,扇区是磁盘上存储数据的最小单元。访问每个盘面的磁头连在一起相互协调运动,以确保每个盘面的磁头同时访问到相同的扇区,这些扇区就构成了一个柱面。

在硬盘中,柱面(Cylinder)是一个逻辑概念,它代表了所有盘面在相同半径上的磁道组成的集合。当操作系统需要读取或写入一系列连续的数据时,理想情况下,它会首先定位到包含这些数据的第一个柱面,然后在该柱面内顺序读取或写入不同盘面的扇区,而无需移动磁头到不同的磁道,这样可以大大提高数据传输速度。找数据过程:柱面—>盘面—>扇区

数据访问:

寻道(Seek):当需要访问的数据不在当前磁头所在的磁道上时,磁头需要移动到目标磁道上。这个过程称为寻道,所需的时间称为寻道时间。这是数据访问过程中最耗时的步骤,涉及到将磁头从当前位置移动到目标数据所在的磁道上。寻道时间直接影响了硬盘的随机访问性能。

平均寻道时间是衡量硬盘随机访问性能的重要指标,通常介于3毫秒到13毫秒之间。然而,这个平均值是基于理论上的所有可能寻道距离的平均,实际情况中由于数据访问的局部性(即程序倾向于连续或附近区域访问数据),以及操作系统的智能调度(如预读和缓存策略),实际平均寻道时间往往低于厂商提供的标称值,大约在标称值的25%到33%之间。

操作系统和应用程序的行为对实际性能有很大影响。例如,文件连续读取、缓存策略和I/O调度算法(如CFQ、Deadline、Noop等)可以减少不必要的寻道操作,利用数据访问的局部性,从而缩短平均寻道时间和整体响应时间。

旋转延迟(Rotational Delay):
即使磁头已经位于正确的磁道上,也还需要等待盘片旋转,使目标扇区移动到磁头下方。这个时间取决于当前扇区与磁头之间的角度差以及盘片的旋转速度。这个等待时间称为旋转延迟。

理论上平均旋转延迟是磁盘旋转一周时间(周期)的一半。这是因为一旦磁盘开始旋转,磁头有可能在旋转周期的任何时刻到达目标位置,因此平均而言,它需要等待半个周期。

给定磁盘每分钟的转速(RPM),我们可以计算出平均旋转延迟。
公式是:
平均旋转延迟=(每分钟转数/2×60)秒

数据传输(Data Transfer):当目标扇区旋转到磁头下方时,磁头就可以开始读写数据了。这个过程的时间取决于扇区的大小和磁盘的转速。这个数据传输速度相对较快,但受制于硬盘的内部传输速率和接口速度。

磁盘缓存:大多数磁盘控制器内置有高速缓存,用来存储最近访问过的数据。该缓存仅保存最近传输过的扇区数据。这样做有几个好处:

传统上,硬盘数据布局遵循扇区-磁道-柱面模型,在传统模型中,人们通常认为邻近的块在同一磁道上,访问同一柱面上的块不需要寻道时间,因此访问时间较短。然而,随着磁盘接口层次的提升和技术的演进,这些假设不再适用。特别是为了优化连续数据读写的性能,硬盘的数据布局有了很大的改变:

逻辑块地址(LBA):随着硬盘容量的增加,CHS(Cylinder-Head-Sector,柱面-磁头-扇区)寻址方式已不再适用,现代硬盘广泛使用逻辑块地址(Logical Block Addressing, LBA)来标识每一个存储块。LBA提供了一个统一、连续的地址空间,隐藏了底层的物理布局复杂性。

大概先写这些吧,今天的博客就先写到这,谢谢您的观看。

http://www.jsqmd.com/news/466067/

相关文章:

  • 探秘温州新石器无人车:未来出行体验,销售中心实地体验分享
  • 富文本编辑器模板1
  • 墨盒买哪家好?格之格提醒你一定要选靠谱大品牌 - yangyuan-shunfeng
  • Spring的Bean是线程安全的吗
  • Spring Bean 生命周期
  • 疑似口服美容假洋牌真相调查:国内最火8个口服美容品牌深度解析 - 资讯焦点
  • 计算机毕业设计源码:基于python与Flask的京东手机数据分析系统 pyecharts requests爬虫 电子产品 电商 商品 推荐系统 数据分析 可视化 大数据 大模型(建议收藏)✅
  • 注塑机数据采集如何实现与 MES 系统的双向数据闭环?
  • IACheck AI报告文档审核为新能源汽车高压安全检测报告审核提供支撑
  • 格之格硒鼓怎么样?品质硬核、选购省心,办公耗材优选之选(1) - yangyuan-shunfeng
  • 2026年硒鼓耐用品牌推荐:格之格为何成为大众的首选品牌?(1) - yangyuan-shunfeng
  • 数组随课笔记
  • Python变量作用域和相关的关键字
  • 买硒鼓买什么牌子好?格之格易加粉2 - yangyuan-shunfeng
  • 2026南通全屋定制小红书运营服务商推荐:抖音视频拍摄/抖音陪跑/新媒体运营/短视频培训/企业IP打造培训课程/选择指南 - 优质品牌商家
  • CSS 盒模型常见面试题及答案
  • Laravel 10.x重磅更新:全新特性解析
  • 课堂随笔小记(企业实训第三天)——2026/3/11
  • unsloth 安装在google colab
  • Spring 核心知识点全解析(IOC+AOP)
  • 基于Java springboot健身器材用品商城网站系统(源码+文档+运行视频+讲解视频)
  • 春节礼品推荐,养元六个核桃有“心”意也有“新”意 - yangyuan-shunfeng
  • 2026年IntelliJ IDEA最新下载、安装教程,附详细图文
  • 算法杂记内容2
  • 基于双重验证的多模态皮肤病变智能分析系统
  • JMeter脚本开发
  • AI原生应用开发:如何利用LLM实现自然语言理解
  • 7×24 小时 远程遥控,AiPy 管家 VS OpenClaw 助手,AiPy 凭实力 C 位出道!
  • 2026年自动变速箱维修选购攻略,泽丰专修是优选品牌 - 工业设备
  • 关于 Ubuntu22.0.4下载ros2时,无法定位软件包ros-humble-desktop 的解决办法