信息安全系统设计基础第六周学习总结

第六章 存储器层次结构

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

1.CPU寄存器:容量小,成本高,访问快
2.高速缓存存储器:CPU和主存之间的缓存区域
3.主存:磁盘上大容量,成本低,慢速

随机访问存储器分为两类:静态,动态。SRAM比DRAM更快,更贵。SRAM作为高速缓存存储器。DRAM作为主存。

SRAM将每个位存储在一个双稳态存储单元里。只要有电,它就保持他的值。

DRAM将每个位存储为对一个电容的充电。DRAM单元在10-100ms内失去电荷,所以需要刷新或者其他的方法保证数据正确性。

DRAM表示一般写成N*W,w是一个单元的位数,N是单元数。本身称这个单元是超单元。然后N又表示为r*c,这样的表示是寻址的时候地址引脚不会太多,比如N=16,就要4个引脚。4*4的话,4需要两个引脚。但是这种二维阵列组织有个缺点:两步发送地址,增加了访问时间。

DRAM的增强型有:FPM DRAM,EDO DRAM,SDRAM,DDR SDRAM(DDR,DDR2,DDR3),Random DRAM,VRAM。

PC使用的DRAM历史:95之前FPM,96-99EDO,-02SDRAM和DDR,-10DDR3。

非易失性存储器,SRAM和DRAM都是易失的。

ROM称为只读存储器是历史原因,很多ROM都是可写的。ROM的分类是以它们能够被重编程(写)的次数和对他们进行重编程的机制来划分的。

ROM包括:PROM,EPROM,EEPROM,闪存(基于EEPROM)。

存储在ROM设备中的程序通常称为固件。

总线事物:读事物——从主存传送数据到cpu,写事物——从cpu传送数据到内存。

磁盘是广为应用的保存大量数据的存储设备:盘片,表面,主轴,RPM,磁道,扇区,柱面。

对于SRAM和DRAM,KMGT通常是1024为基,但对于磁盘,KMGT以1000为基。

像图形卡,监视器,鼠标,键盘和磁盘这样的I/O设备,都是通过I/O总线(PCI)连接到cpu和主存的。

系统总线和存储器总线是与cpu总线相关的,但pci这样的总线和底层cpu无关。

I/O总线总是比系统总线和存储器总线慢,但是它可以容纳种类繁多的第三方I/O设备。主机总线适配器将一个或多个磁盘连接到I/O总线,最常用的是SCSI和SATA,前者更贵,更快。

cpu使用一种称为存储器映射I/O的技术,在使用该技术的系统中,地址空间中有一块地址是为与I/O设备通信保留的。每个这样的地址称为一个I/O端口。当一个设备连接到总线上时,它与一个或多个端口相联系。

cpu从磁盘读数据时发生的步骤:cpu通过将命令、逻辑块号和目的存储器地址写到与磁盘相关联的存储器映射地址,发起一个磁盘读;磁盘控制器读扇区,并执行到主存的DMA传送;DMA传送完成时,磁盘控制器用中断的方式通知CPU。

现代磁盘将他们的构造呈现为一个简单的视图,一个B个扇区大小的逻辑块序列。磁盘控制器维护着逻辑块号和实际(物理)磁盘扇区之间的映射关系。这里看到,逻辑块对应扇区。

SSD包,由一个或多个闪存芯片和闪存翻译层组成。

存储器和磁盘技术的一个基本事实:增加密度比降低访问时间更容易。

DRAM和磁盘的性能滞后于cpu的性能。现代计算机频繁的使用基于SRAM的高速缓存,试图弥补处理器-存储器之间的差距。这种方法可行是因为应用程序的局部性。



局部性

 

 

一个编写良好的计算机程序尝尝具有良好的局部性。也就是说,他们倾向于引用临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。

这种倾向性,被称为局部性原理,是一个持久的概念,对硬件和软件系统的设计和性能都有着极大的影响。

局部性通常有两种不同的形式:时间局部性和空间局部性。

两者的区别在于时间对的是一个存储器位置,空间对的是附近的存储器位置。

被引用过一次的存储器位置很可能在不远的将来再被多次引用——时间。一个存储器位置被引用了一次,那么程序很可能在不远的将来引用附近的一个存储器位置——空间。

对于空间局部性,步长为1的引用模式称为顺序引用模式,这种模式具有最好的空间局部性,如数组,一个一个的顺序访问具有最好的空间局部性。

多维数组,按照行优先顺序,具有最好的空间局部性。

量化评价一个程序中局部性的简单原则:

  • 重复引用同一个变量的程序有良好的时间局部性。
  • 对于具有步长为k的引用模式的程序,步长越小,空间局部性越好。具有步长为1的引用模式的程序有很好的空间局部性。
  • 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好

 

存储器模块

 

DRAM芯片包装在存储器模块中,他是插到主板的扩展槽位上的。常见的包括168个引脚的双列直插存储器模块,他以64位为块传送数据到存储控制器和从存储控制器传出数据,还包括72个引脚的单列直插存储器模块,他以32位为块传送数据。

 

非易失性存储器

 

如果断电,DRAM和SRAM会丢失他们的信息,所以他们是易失的。

 

非易失性存储器,即使是在关电以后,也仍然保存着他们的信息。他们整体上都称为只读存储器(ROM)。

 

ROM以他们能够被重新编程的次数和对他们进行重编程所用的机制来区分的。

 

 磁盘存储

磁盘是保存大量数据的存储设备。

1.磁盘构造

磁盘是由盘片构成的。每个盘片有两个盘面,表面覆盖着磁性记录材料。盘片中央有个可以旋转的主轴,使得盘片以固定的旋转速率旋转。

技术分享

每个表面由一组称为磁道的同心圆组成的。每个磁道被划分为一组扇区,每个扇区包含相等数量的数据位,这些数据编码在扇区上的磁性材料中,扇区由一些间隙隔开,间隙存储用来标识扇区的格式化,不存储数据位。

2.磁盘容量

技术分享

技术分享

3.磁盘操作

磁盘用读/写头来读写存储在磁性表面的位,而读写头连接到一个传送臂一端,如图:

技术分享

通过沿着半径轴前后移动这个传送臂。驱动器可以将读/写头定位在盘面的任何磁道上。这样的机械运动称为寻道。

技术分享

3.逻辑磁盘块(重要)

技术分享

技术分享

4.连接到I/O设备

像图形卡、监视器、鼠标键盘和磁盘这样的输入/输出(I/O)设备,都是通过I/O总线连接到CPU和主存的。

虽然I/O总线比系统总线和存储器总线慢,但它可以容纳种类繁多的第三方I/O设备。

 

 局限性

一个编写良好的计算机程序通常具有良好的局部性。他们倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。这种倾向称为局部性原理

局部性有两种不同形式:时间局部性空间局部性。

有良好局部性的程序比局部性差的程序运行的更快。

 

 

存储器层次结构

存储器层次结构是组织存储器系统的方法,人想的,现在所有的计算机系统都使用了这种方法。

一般而言,高速缓存是一个小而快速的存储器设备,它作为存储在更大,也更慢的设备中的数据对象的缓冲区域。使用高速缓存的过程称为缓存。

存储器层次结构的中心思想是:对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。

也就是说层次结构的每一层都缓存来自较低一层的数据对象。

这里必须强调一下,这也就是说数据时不可以越级的吗?

数据总是以块大小为传送单元在第k层和第k+1层之间来回拷贝的。例子:L1和L0的传送是1个字的块,L2和L1之间是8-16个字的块。

一些概念:缓存命中,缓存不命中,牺牲块,替换策略,冷缓存,强制性不命中,冷不命中,放置策略,冲突不命中,容量不命中。

  • 编译器管理寄存器文件,缓存层次结构的最高层。
  • L1,L2和L3的缓存完全是由内置在缓存中的硬件逻辑来管理的。
  • DRAM主存作为存储在磁盘上的数据块得缓存,是由操作系统和cpu上的地址翻译硬件共同管理的。
  • AFS这样的分布式文件系统,本地磁盘作为缓存,它是由运行在本地机器上的AFS客户端进程管理的。

概况来说,基于缓存的存储器层次结构行之有效,是因为较慢的存储设备比较快的存储设备更便宜,同时,还因为程序往往展示局部性。

 

 

 

高速缓存存储器

高速缓存结构(S,E,B,m):高速缓存组、高速缓存行、块映射

 

 

一般而言,高速缓存的结构可以用元组(S,E,B,m)来描述。高速缓存的大小(或容量)C指的是所有块的大小的和。标记位和有效位不包括在内。因此,C=S*E*B.

技术分享

 

直接映射高速缓存

高速缓存确认一个请求是否命中,然后抽取出被请求的字的过程,分为三步:组选择、行匹配、字抽取

根据E(每个组的高速缓存行数)高速缓存被分为不同的类。每个组只有一行的高速缓存被称为直接映射高速缓存。

技术分享

1.直接映射高速缓存中的组选择

 

技术分享

2.直接映射高速缓存中的行匹配和字选择

 

技术分享

 

 

3.直接映射高速缓存中不命中时的行替换

  如果缓存不命中,那么需要从存储器层次结构中的下一层取出被请求的块,然后将新的块存储在组索引位指示的组中的一个高速缓行中。

替换规则:用新取出的行替换当前的行。

组相联高速缓存

每个组都保存有多于一个的高速缓存行

技术分享

1.组相联高速缓存中的组选择

与直接映射高速缓存一样,组索引位标识组。

技术分享

2.组相联高速缓存中的行匹配和字选择

比直接映射高速缓存更复杂

技术分享

3.组相联高速缓存中不命中时的行替换

 

全相联高速缓存

一个全相联高速缓存是由一个包含所有高速缓行的组(E=C/B)组成的。

基本结构:

技术分享

1.全相联高速缓存中的组选择

只有一个组,所以很简单

技术分享

2.全相联高速缓存中的行匹配和字选择

全相联高速缓存与组相联高速缓存一样

技术分享

 

编写高速缓存友好的代码

局部性比较好的程序更容易有较低的不命中率,而不命中率较低的程序往往比不命中率较高的程序运行的更快。

下面就是我们用来确保代码高速缓存友好的基本方法:

让最常见的情况运行得快。程序通常把大部分时间都花在少量的核心函数上,而这些函数通常把大部分时间都花在了少量循环上。

每个循环内部缓存不命中数量最小。(对局部变量的反复引用是好的,步长为1的引用模式是好的)

 

资料引用《深入理解》教材PDF版

问题:对组相联高速缓存中不命中时的行替换还不能够完全理解。

 

 

家庭作业

6.29

由练习题6.13图得

组7中命中的十六进制存储器地址为:

 

(1101111011100)=0x1BDC

(1101111011101)=0x1BDD

(1101111011110)=0x1BDE

(1101111011111)=0x1BDF

组5中命中的十六进制存储器地址为:

(0111000110100)=0x0E34

(0111000110101)=0x0E35

(0111000110110)=0x0E36

(0111000110111)=0x0E37

组4中命中的十六进制存储器地址为:

(1100011110000)=0x18F0

(1100011110001)=0x18F1

(1100011110010)=0x18F2

(1100011110011)=0x18F3

(0000010110000)=0x00B0

(0000010110001)=0x00B1

(0000010110010)=0x00B2

(0000010110011)=0x00B3

组2中没有命中的存储器地址。

 

6.30

A.

CT

CT

CT

CT

CT

CT

CT

CT

CI

CI

CO

CO

 

B.

操作

地址

命中?

读出的值(或未知)

0x409

-

0x40A

-

0x833

0xD0

转载于:https://www.cnblogs.com/20135230pjy/p/4910449.html

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

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

相关文章

phpStudy + PhpStorm + XDebug调试【绝对能用】

具体参照的是这篇文章:https://blog.csdn.net/weixin_40418199/article/details/79088365 文章有些地方说的不是很详细想重写整理下。 【PHPStudy演示的版本为:PHP5.4.45-Apache】 1.PHPStudy配置 PHPStudy自带了XDebug的扩展,不需要下载 php…

加密编码类型的密文特征分析

转载https://blog.csdn.net/weixin_45728976/article/details/109219997 MD5、sha1、HMAC算法、NTLM等相似加密类型 1、MD5——示例21232F297A57A5A743894A0E4A801FC3 一般MD5值是32位由数字“0-9”和字母“a-f”所组成的字符串,如图。如果出现这个范围以外的字符…

孙叫兽进阶之路之如何进行情绪管理

程序员不光有硬实力,更要有软实力。 程序员文武双全之道。 ---孙叫兽,前端全栈程序员,微信公众号:电商程序员。 情绪的作用,存在于我们每天的工作和生活中,无时不刻地影响着人们的思想和行为。如何控制和管…

javaone_JavaOne正在重建动力

javaone在JavaOne上度过了一个非常忙碌的一周,今年的活动有很多让人喜欢的地方。 有很多惊喜的公告,很多很好的内容/会议,并且在场地和组织上都有很多改进。 对于一直耐心等待我发表所有演讲的人们,我为您的延迟表示歉意……给4个…

夜神模拟器安装证书之burp抓包

安装步骤 1.http 不需要安装证书即可抓app包 2.https 需要安装证书 一、设置burp代理 注意IP是本机下的ip 二、模拟器设置代理 点击wifi长按鼠标修改网络 三、导出CA证书 模拟器中进入http://burp页面,点击黄色的地方下载 下载证书,可以选择本…

接手一个项目,后缀名为.bak文件,原来它是这个意思

.bak是备份文件,为文件格式扩展bai名,这类文件一du般在.bak前面加上应该有zhi原来的扩展名比如windows.dll.bak,或是windows_dll.bak,有dao的则是由原文件的后缀名和bak混合而成,如proteus的备份文件为.DBK。很多软件,…

java大佬是如何快速配置IntelliJ IDEA的Tomcat及安装配置Tomcat及java开发环境

孙叫兽,前端全栈工程师,java工程师。编译器及工具可以在主页QQ群群文件获取。 JDK 可以到官网下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Tomcat下载:Http://tomcat.apache.org/ IntelliJ IDEA下载:https://www.jetbrain…

应急响应 WEB 分析日志攻击,后门木马(手动分析 和 自动化分析.)

转载文章:https://blog.csdn.net/weixin_54977781/article/details/124976164?spm1001.2100.3001.7377&utm_mediumdistribute.pc_feed_blog_category.none-task-blog-classify_tag-17-124976164-null-null.nonecase&depth_1-utm_sourcedistribute.pc_feed_…

thinkphp第一节结构

thinkphp 网站:http://thinkphp.cn 输入网址:localhost:8080/demo/ 则说明thinkphp安装成功 目录结构如下: application子目录结构: common:公用文件目录 home:Home模板 Runtime:记录运行信息 home目录下&a…

孙叫兽进阶之路之软件开发生命周期

孙叫兽,前端全栈开发工程师,java工程师。 软件开发生命周期:

常用的30+种未授权访问漏洞汇总

未授权访问漏洞汇总预览 1 、FTP 未授权访问(21) 2 、LDAP 未授权访问(389) 3 、Rsync 未授权访问(873) 4 、ZooKeeper 未授权访问(2181) 5 、Docker 未授权访问(2375&a…

孙叫兽进阶之路之敏捷开发

孙叫兽,前端全栈工程师,java工程师,技术交流请添加主页QQ群,微信公众号:电商程序员

四:理解Page类的运行机制(例:基于PageStatePersister的页面状态存取)

有人说类似gridview datalist这样的控件最好不要用在高并发,IO大的网站中企业应用中为了快速开发到可以用一用因为这是一类"沉重"的组件我们姑且不谈这种看法的正确性(我个人觉得有道理)只谈它为什么笨重:因为这些控件给页面带来了大量的viewstate<input type&quo…

Fiddler使用教程

一、简介及原理 1.1 Fiddler简介 Fiddler 是一个 HTTP 协议调试代理工具&#xff0c;它能够记录并检查所有你的电脑和互联网之间的 HTTP 通讯。Fiddler 提供了电脑端、移动端的抓包、包括 http 协议和 https 协议都可以捕获到报文并进行分析&#xff1b;可以设置断点调试、截取…

我是如何用JSP在网络上架构一个网上招标系统,以推进网站无纸化,过程电子化,管理智能化的发展

声明&#xff1a;部分代码参考与网络&#xff0c;如有侵权请联系博主删除&#xff0c;博主本着学习的态度和大家一起成长。 项目github地址&#xff1a;https://github.com/sunmenglei/sunmengleiwangshangzhaobiao/ 背景&#xff1a;从本世纪初&#xff0c;互联网开始加速发展…

我是如何使用git把本地代码上传到github上的,值得借鉴

背景&#xff1a;最近开发了一套招标系统&#xff0c;我是如何用JSP在网络上架构一个网上招标系统&#xff0c;以推进网站无纸化&#xff0c;过程电子化&#xff0c;管理智能化的发展。 使用git进行上传。 首先自己得有git工具及github账号&#xff0c;自己没有的提前准备一下。…

期中总结

期中总结&#xff1a; 第一章 计算机系统漫游 1.1 Linux基础 1.Linux命令 command [options] [arguments] //中括号代表是可选的&#xff0c;即有些命令不需要选项也不需要参数 选项&#xff08;options&#xff09;或参数&#xff08;arguments&#xff09; 选项是调整命令执…

Kali WPScan的使用(WordPress扫描工具)

一、WPScan简介 WordPress网站介绍 WordPress是全球流行的博客网站&#xff0c;全球有上百万人使用它来搭建博客。他使用PHP脚本和Mysql数据库来搭建网站。 Wordpress作为三大建站模板之一&#xff0c;在全世界范围内有大量的用户&#xff0c;这也导致白帽子都会去跟踪 WordPr…

【jquery系列|Jquery总结篇】包含各种实例,文末有彩蛋!

孙叫兽,前端全栈工程师,微信公众号:电商程序员,如果本文对你有帮助,记得收藏点赞+关注。 jQuery 是一个 JavaScript 库,极大地简化了 JavaScript 编程,很容易学习。(注:本文不演示效果) 简介:jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优…

文件包含之日志中毒(User-Agent)

目录 一、本地文件包含 二、日志中毒 获取反弹shell获得目标服务器的完全控制权 方法一&#xff1a; 方法二&#xff1a;/var/log/auth.log 一、本地文件包含 本地文件包含漏洞指的是包含本地的php文件&#xff0c;而通过PHP文件包含漏洞入侵网站&#xff0c;可以浏览同服务器所…