存储器层次结构

内存

对于内存已经不像曾经那般陌生了,在汇编中,我们大量接触了内存,但是我们还没有对它有个确切、深入的了解。
内存其实叫做随机访问存储器(RAM,Random Access Memory),最基本的存储单位称为单元,一个单元存储1bit。
内存可以分为两种:

  • SRAM(Static RAM)
  • DRAM(Dynamic RAM)

这两者根据存储单元实现方式来区分

每个bit需要多少个晶体管运行时间是否需要刷新是否需要通电价格应用
SRAM4或61X暴怒需要可能要100X高速缓存(Cache Mymories)
DRAM110X需要1X主存(Main Memories)、显卡的帧缓存(Frame Buffers)

SRAM和DRAM都是易失的,即:断电后,会丢失所有保存的信息
因此,除此之外,还有非易失性存储器(或者叫只读存储器,ROM),现如今的ROM还提供了擦除功能(以前的ROM没有提供),但是擦除会导致ROM的磨损。BIOS和开机后执行的最初的命令都来自于ROM,同时,I/O设备的控制器也是由存储在ROM中的指令和数据组成的

磁盘

在这里插入图片描述

磁盘其实是由很多堆叠的盘片组成,这些盘片上涂油磁性材料磁头组(也叫磁臂,也就是那个Arm)的末端有多个读/写头

[!资料]

  1. 磁头组的末端有时并不是一个单独的读/写头(但是一般只有一个读读/写头),而是包含多个磁头的组合,每个磁头负责读取或写入一个磁道上的数据。这些磁头可以单独移动,以便定位到指定的磁道进行读写操作。
  2. 磁头组并非仅能感应磁场的变化,而是可以通过电流在磁性涂层上创建或改变磁场,从而实现数据的写入或擦除操作。读取数据时,磁头组则通过感应磁性涂层上磁场的变化来读取数据。

磁盘的容量由两个独立的因素决定:

  1. 记录密度:决定单独一个扇区可以存储多少bits
  2. 磁道密度:可以将相邻的磁道放置地多临近

这两个因素的乘积,称为面密度,它决定了整个磁盘的存储容量。磁盘的容量以GB为单位,但是需要注意,它的GB是2^10,这点有点奇怪。

在曾经,每一条磁道所包含的扇区数是固定的,这就意味着远离圆心的磁道的扇区之间的空隙会变的很大,因此会导致资源的浪费。
而现在使用了一些新的技术,更好的解决了这个问题,只是有点复杂

那么,磁盘是如何工作的呢?
所有的盘片都以一个固定的频率在旋转(逆时针旋转),如进一个很典型的速率是7200转/分钟。
在这里插入图片描述

盘片

![[图片资源/盘片的结构.png]]

  • 一个盘片有两个表面,上面和下面
  • 每个表面都包含一系列的同心圆,称之为磁道
  • 每个磁道包含很多个扇区扇区存储着数据,典型的:一个扇区存储512字节
  • 扇区之间有一些空隙,这些空隙不存储数据

磁盘阅读一个指定扇区需要多长时间?

在这里插入图片描述

  • 移动磁头所需的寻道时间
  • 等待磁盘移动到指定扇区所需的旋转延迟,平均情况下就是磁盘旋转一圈所花费时间的一半
  • 传输时间:该轨道在读/写头下通过的时间

磁盘的使用

现代磁盘控制器将磁盘作为一系列逻辑块提供给CPU,每个块是扇区大小的整数倍,磁盘控制器会保持物理扇区和逻辑块之间的映射
在最简单的情况下,一个逻辑块就是一个扇区。块从0开始进行编号,它是一系列增长的数字。

磁盘控制器会将一些柱面保留为备用柱面柱面就是多个盘片上的同一个磁道所形成的圆柱体),这些备用柱面没有被映射为逻辑块。如果有一个柱面的扇区坏了,磁盘控制器可以将数据复制到备用柱面,然后磁盘就能够正常工作。
这就是磁盘的格式容量会比是实际容量小的原因。

I/O总线

在这里插入图片描述
通过这张图我们可以大概地了解到他们之间的工作方式。

读取磁盘上的数据

CPU通过编写三元组来读取磁盘上的数据:指令、逻辑块号、内存地址
磁盘控制器读取和该逻辑块对应的任何扇区,它将数据复制,然后通过I/O总线传递给主存储器,然后使用中断机制通知CPU数据已被复制,然后CPU就能够执行程序处理这块内存。

固态磁盘(固态硬盘,SSDs)

在这里插入图片描述
固态硬盘中没有硬盘的机械结构,而是由许多的闪存和充当控制器的固件组成。但是在CPU看来,它和旋转磁盘完全相同,它具有相同的接口、相同的物理接口、相同的包装

在固态磁盘中由一组固件,称为闪存翻译层,它的作用和旋转磁盘中的磁盘控制器功能相同,内存可以以为单位来读取数据。一系列的页组成一个这个块和CPU眼中的逻辑块不同),当想要写入数据进固态硬盘的时候,需要找到一个被擦除的块才能够写入其中的页;如果我们想修改某一页的内容,需要将这页所处的块的内容全部复制。但是:擦除会使得闪存磨损

程序的局部性

[!资料]
程序的局部性是指程序在执行过程中表现出的一种特性,即程序倾向于在一段时间内重复访问相同的内存位置,或者倾向于使用相同的指令序列。

局部性有两种:

  • 时间局部性(Temporal Locality):这是指如果一个信息项被访问,那么它在不久的将来很可能再次被访问。例如,当程序执行时,它往往会重复执行相同的代码块,或者多次访问相同的变量。这种局部性使得缓存机制(如CPU缓存)能够有效地工作,因为常用的数据和指令可以被存储在速度较快的存储器中,以便快速访问。
  • 空间局部性(Spatial Locality):这是指如果一个信息项被访问,那么与它相邻的信息项也很可能被访问。例如,当程序访问了一个数组元素时,它很可能在不久的将来访问同一个数组的其他元素。空间局部性也使得缓存有效,因为缓存行(cache line)中的多个数据项可以一次性加载到缓存中,而不是每次只加载一个。

这种特性是计算机科学中的一项重要原理,它有助于提高程序的效率和性能。

存储器层次结构

在这里插入图片描述

存储器层次结构中的每一层都包含从下一个较低级别层次所检索的数据

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

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

相关文章

怎么获取OpenAI的api-key【人工智能】

怎么获取OpenAI的api-key【人工智能】 前言版权推荐怎么获取OpenAI的api-key1.访问控制台2.点击API keys3.点击Start verification4.点击新建密钥 最后 前言 2024-4-11 11:32:06 以下内容源自《【人工智能】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首…

自动挡变速箱 相关的东西研究

1. 原来大众POLO变速箱故障时,详细的维修流程是这样的!_易车 原来大众POLO变速箱故障时,详细的维修流程是这样的!_易车 大众POLO七速干式双离合变速箱OAM 本文主要讲解的是大众POLO双离合变速箱的维修案例,首先说一…

【C++】模版

目录 一、泛型编程二、函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则 三、类模板3.1 类模板的定义格式3.2 类模板的实例化 四、非类型模板参数五、模板的特化5.1 概念5.2 函数模板特化5.3 类模板特化5.3.1 全特化5.3…

C++初阶:模板进阶

非类型模板参数 模板参数分为类型形参与非类型形参 。 类型形参即:出现在模板参数列表中,跟在 class 或者 typename 之类的参数类型名称 。 非类型形参,就是用一个常量作为类 ( 函数 ) 模板的一个参数,在类 ( 函数 ) 模板中可将…

http与https的区别?

1、HTTP 的最大弊端——不安全 HTTP 之所以被 HTTPS 取代,最大的原因就是不安全,因为http中所有的数据都是明文传输的,自然没有安全性可言,特别是一些敏感数据,比如用户密码和信用卡信息等,一旦被第三方获取…

银川人才租赁选邦芒人力 解决企业用工难题的及时雨

人才租赁服务作为邦芒人力一体化人力资源服务的核心组成部分,其重要性不言而喻。通过银川邦芒人力作为法定雇主,企业与邦芒公司签订人才租赁合同,实现用工及人事管理的全面托管,包括人员聘用、员工档案建立、薪酬发放、社会保险处…

【PHP】内置函数ceil向上取整,floor向下取整

目录 ceil() 是 PHP 中的一个内置函数,用于对给定的浮点数进行向上取整 floor() 是 PHP 中的一个内置函数,用于对给定的浮点数进行向上取整 ceil() 用于对给定的浮点数进行向上取整 函数原型: float ceil(float $value) 参数:…

JS加密:对比JScrambler和JShaman加密效果

本文,以一个实例,比对JS加密两大神器:JScrambler、JShaman的加密结果,看看谁的加密效果更好。 注:本文不是技术文章,仅仅从加密结果的“型”上简单观查,不做技术分析,仅看哪个加密代…

【计算机考研】数据结构都不会,没有思路,怎么办?

基础阶段,并不需要过于专门地练习算法。重点应该放在对各种数据结构原理的深入理解上,也可以说先学会做选择题、应用题。 因为在考试中,大部分的算法题目,尤其是大题,往往可以通过简单的暴力解决方案得到较高的分数。…

计算机服务器中了devicdata勒索病毒怎么办,devicdata勒索病毒解密数据恢复

在企业的生产运营过程中,网络为企业的发展带来了极大便利,大大提升了企业生产效率,但网络在为人们提供便利的同时,也为企业的数据安全带来隐患,近期,云天数据恢复中心接到多家企业的求助,企业的…

C#泛型,使用反射获取泛型属性的泛型参数的类型

标题: 使用反射获取泛型属性的泛型参数类型 文章内容: 在C#编程中,使用反射可以在运行时获取类型信息、属性、方法等,并对其进行操作。本文将重点介绍如何使用反射获取泛型属性的泛型参数类型,以解决在编程中常遇到的需求。 问题描述 假设我们有一个包含泛型属性的类,…

jieba分词词性对照字典

jieba分词词性对照字典 {a: 形容词,ad: 副形词,an: 名形词,ag: 形语素,al: 形容词性惯用语,b: 区别词,bl: 区别词性惯用语,c: 连词,cc: 并列连词,d: 副词,e: 叹词,f: 方位词,h: 前缀,k: 后缀,m: 数词,mq: 数量词,n: 名词,nr: 人名,nr1: 汉语姓氏,nr2: 汉语名字,nrj: 日语人名,…

多语言婚恋交友app搭建秘籍,助你占据市场先机

在当今社交网络蓬勃发展的时代,相亲、交友已经不再局限于传统的线下相识,而是通过移动应用来实现。尤其是对于涉及国际范围的婚恋交友APP,多语言功能更是不可或缺的重要组成部分。为什么选择多语言婚恋交友APP搭建呢?通过多语言支…

大模型RAG(二)向量化(embedding)

语义向量模型是什么? 语义向量模型(Embedding Model)被广泛应用于搜索、推荐、数据挖掘等重要领域,将自然形式的数据样本(如语言、代码、图片、音视频)转化为向量(即连续的数字序列)…

客户关系CRM管理系统源码 企业crm管理系统

客户关系CRM管理系统源码 企业crm管理系统 系统功能介绍 1、 公海管理:公海类型、客户公海。 2、 线索管理:我的线索、线索列表、线索状态、线索来源。 3、 客户管理:我的客户、客户列表、成交客户、行业类别、预查、地区列表、客户状态、…

LLM 推理优化探微 (4) :模型性能瓶颈分类及优化策略

编者按: 在人工智能浪潮袭卷全球的大背景下,进一步提升人工智能模型性能,满足更多应用需求已经刻不容缓。如何优化模型延迟和吞吐量,成为了业界亟待解决的重要问题。 我们今天为大家带来的这篇文章,其观点为&#xff1…

C/C++基础----常量和基本数据类型

HelloWorld #include <iostream>using namespace std;int main() {// 打印cout << "Hello,World!" << endl;return 0; }c/c文件和关系 c和c是包含关系&#xff0c;c相当于是c的plus版本c的编译器也可以编译c语言c文件.cpp结尾.h为头文件.c为c语言…

c++ 函数进阶

1.函数默认参数 &#xff08;1&#xff09;.函数参数是可以有默认值的&#xff0c;如果某一个参数有默认值&#xff0c;那么从这个参数之后&#xff0c;从左到右&#xff0c;都必须有默认值。 &#xff08;2&#xff09;.函数声明参数有默认值&#xff0c;函数实现中不能有默…

【吊打面试官系列】Java高并发篇 - 什么是Java并发容器的实现?

大家好&#xff0c;我是锋哥。今天分享关于 【什么是Java并发容器的实现&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 什么是Java并发容器的实现&#xff1f; 何为同步容器&#xff1a;可以简单地理解为通过 synchronized 来实现同步的容器&#xff0c;如果有…

绿联 安装MariaDB数据库用于Seatable服务

绿联 安装MariaDB数据库用于Seatable服务 MariaDB MariaDB 是一个流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是MySQL的一个分支&#xff0c;提供了丰富的功能和性能&#xff0c;适用于各种应用场景。 核心功能 SQL支持: MariaDB完全支持SQL&a…