ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:1.10MB ,
资源ID:20481906      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20481906.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(频率之外谁重要计算机存储系统解析Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

频率之外谁重要计算机存储系统解析Word文档下载推荐.docx

1、中央处理器的高速运算要求存储器要在很短的时间内完成指令和数据的存取操作。计算机层次结构存储器随着对计算机性能的要求越来越高,现代计算机对存储系统有三个基本要求,即:存取时间短(速度快)、存储容量大和价格成本低。而容量越大存取的时间就会长,速度越快,价格就越高。为了解决这个问题,便采用了高速缓冲存储器,主存储器和辅助存储器3个部分组成。计算机各种存储及其特点其中寄存器(Registe)是用于CPU内部各单元之间的周转,是CPU内部用来创建和储存CPU运算结果和其它运算结果的地方,拥有非常高的读写速度,里面的数据是下一步必然会用到的,所以寄存器不属于层次结构存储器。CPU内部的寄存器有很多种类型。

2、CPU对存储器中的数据进行处理时,往往先把数据取到内部寄存器中,而后再作处理。外部寄存器是计算机中其它一些部件上用于暂存数据的寄存器,它与CPU之间通过“端口”交换数据,外部寄存器具有寄存器和内存储器双重特点。而通用寄存器的数据宽度决定了处理器一次可以运行的数据量。64位技术的寄存器变化X86-64技术就是新增的几组CPU寄存器将提供更快的执行效率。标准的32位的x86架构包括8个通用寄存器,AMD在64 位X86架构中又增加了8组,将寄存器的数目提高到了16组。X86-64寄存器默认位64-bit。还增加了8组128-bit XMM寄存器,将能给单指令多数据流技术运算提供更多的空间,这些12

3、8位的寄存器将提供在矢量和标量计算模式下进行128位双精度处理,为3D建模、矢量分析和虚拟现实的实现提供了硬件基础。通过提供了更多的寄存器,按照X86-64标准生产的CPU可以更有效的处理数据,可以在一个时钟周期中传输更多的信息。高速缓冲存储器就是我们平常所说的CPU缓存,通常包括一级、二级缓存,过去的高端产品还会有三级缓存,现在中低端产品也有L3了,比如AMD羿龙II双核系列,Intel的i3系列。关于高速缓存,后面会有更详细的介绍。主存储器就是我们常说的内存条。高速缓冲存储器和主存储器(内存条)由于可以直接被CPU读取,故称之为内存储器。辅助存储器主要是指硬盘,而海量存储器则是指过去主要用

4、的磁带机一类的设备,现在随便硬盘技术的提升,辅助存储器也可以达到“海量”的标准。而且现在的辅助存储器一般都带有自身的缓存。介绍完存储结构后,可能会产生一个疑问,那就是为什么层次结构存储器会加速计算机的速度,或者说层次结构的依据是什么?下面就得引入必备的“程序的局部性原理”知识了。程序的局部性原理:是指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于程序中的某一部分。相应地,执行所访问的存储空间也局限于某个存储区域。局部性原理又表现为:时间局部性(temporal locality)和空间局部性(spatial locality)。程序的调用返回行为时间局部性是指如果程序中的某

5、条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问。空间局部性空间局部性是指一旦程序访问了某个存储单元,则不久之后。其附近的存储单元也将被访问。 空间局部性和时间局部性是有区别的。空间局部性指执行涉及很多簇聚的存储器单元的趋势,这反映了处理器顺序访问指令的倾向,同时,也反映了程序顺序访问数据单元的倾向,如处理数据表。时间局部性指处理器访问最近使用过的存储器单元的趋势,例如,当执行一个循环时,处理器重复执行相同的指令集合。 传统上,时间局部性是通过将最近使用的指令和数据值保存到高速缓存中并使用高速缓存的层次结构实现的。空间局部性通常是使用较大的高速缓

6、存并将预取机制集成到高速缓存控制逻辑中实现的。举例:当硬盘受到CPU指令控制开始读取数据时,硬盘上的控制芯会控制磁头把正在读取的簇的下一个或者几个簇中的数据读到硬盘的缓存中(由于硬盘上数据存储时是比较连续的,所以读取命中率较高),当需要读取下一个或者几个簇中的数据的时候,硬盘则不需要再次读取数据,直接把缓存中的数据传输到内存中就可以了,由于速度远远高于磁头读写的速度,所以能够达到明显改善能的目的,即根据空间局部性原理,预测下一步所需要的数据,并将其提前写入内存。为了保证CPU访问时有较高的命中率,内存储器(包括CPU缓存和内存)中的内容应该按一定的算法替换。较常用的算法是“最近最少使用算法”(

7、LRU算法),它是将最近一段时间内最少被访问过的行淘汰出局。因此需要为每行设置一个计数器,LRU算法是把命中行的计数器清零,其他各行计数器加1。当需要替换时淘汰行计数器计数值最大的数据行出局。这是一种高效、科学的算法,其计数器清零过程可以把一些频繁调用后再不需要的数据淘汰出,提高利用率。这样内存储器中的数据在更新的时候则会根据时间局布性原理把读取频率高的及其周围的相关数据留下,把低导入虚拟内存或者淘汰掉(关于虚拟内存后面会有描述)。在层次存储结构中的每一级都采用程序局部分布原理的原理来预读和更替数据。由于预读的命中率很高,故续约了时间,这也是采用层次存储结构的基础。现在高速缓存的概念已被扩充,

8、不仅在CPU和主内存之间有高速缓存而且在内存和硬盘之间也有Cache(磁盘高速缓存),乃至在硬盘与网络之间也有某种意义上的 Cache(Internet 临时文件夹)凡是位于速度相差较大的两种硬件之间的,用于协调两者数据传输速度差异的结构,均可称之为Cache。Cache与上下流之间的数据交换都是程序局部性原理。这次我们主要讨论CPU的高速缓存,前面已经介绍了CPU高速缓存是内存储器的一种,下面将介绍其产生的原因及演变。早期计算机的CPU与主存的工作速度较为接近,主内存的速度并不影响整机的运算速度。随着IC设计和半导体制造工艺的发展,CPU的运行速度远高于主内存的速度。这要求系统中主存的存取速

9、度提高,存储容量增大。而主存储器一般采用DRAM (动态随机存储器) ,其容量的提高是比较快的,但是读取速度的提高却很慢,因此在速度上与CPU主频的提高产生了不相配的情况。为解决高速CPU 与低速内存之间的速度差异,最经济、有效的方法是在两者之间插入容量不大但操作速度很高的存储器高速缓存(Cache) ,起到缓冲作用,解决了两者速度的平衡和匹配问题,对微处理器整体性能有很大提高。486时代的两个代表产品486DX和486SX早期的80486相当于把80386和完成浮点运算的数学协处理器80387以及8kB的高速缓存集成到一起,这种片内高速缓存称为一级(L1)缓存,80486还支持主板上的二级(

10、L2)缓存。缓存概念由此诞生,并一直延续到今天成为影响CPU性能的重要因素。四核Nehalem架构拥有高达8M的三级高速缓存随着CPU制造工艺的发展,二级缓存和三级缓存也能轻易的集成在CPU内核中,容量也在逐年提升。至今,在中低端产品中集成三级缓存的CPU也不少见。当然,有人可能要问,为什么不直接把内存的速度提高到和缓存一样快呢?这涉及到两个方面,为了得到更高的速度,那信号的发射频率必须提升,而为了得到更大的容量,就必须减少集成电路中信号传输中存在干扰,干扰与传播速度又正相关,如果频率提高,干扰就会增强,所以两者比较难以统一。构成缓存的6T SRAM晶体管结构图另一方面是“经济”原因,高速缓存

11、缓存通常都是静态RAM (SRAM),速度是非常的快, 但是静态RAM集成度低,存储相同的数据,静态RAM的体积是动态RAM的6倍,高同容量的静态RAM价格是动态RAM的四倍。这就限制了静态RAM容量的进一步扩大,同时缓存大小也成了CPU级别的一个重要标志。虽然我们知道了高速缓存可以大幅的提高CPU的速度,那么,它们工作的具体原理是什么呢?当CPU处理数据时,它会先到Cache中去寻找,如果数据因之前的操作已经读取而被暂存其中,就不需要再从内存中读取数据由于CPU的运行速度一般比主内存的读取速度快,主存储器周期(访问主存储器所需要的时间)为数个时钟周期。因此若要访问主内存的话,就必须等待数个C

12、PU周期从而造成浪费。Cache 的逻辑结构Cache由控制和存储器2部分组成,如上图所示,其中虚线框内为控制部分。Cache的存储器中存放着主存的部分拷贝,其控制部分有3 个功能:(1) 判断要访问的数据是否在Cache中,若在,为命中;否则,为未命中。(2) 命中时,进行Cache 的寻址。(3) 未命中时,按替换原则,确定主存中的信息块要读入到Cache 中的哪个信息块空间。CPU在缓存中找到有用的数据被称为命中,当缓存中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。从理论上讲,在一颗拥有一级缓存的CPU中,读取一级缓存的命中率为80%。也就是说CPU一级缓存中找到的有用数

13、据占数据总量的80%,剩下的20%从二级缓存中读取。由于不能准确预测将要执行的数据并将其预读到缓存中,读取二级缓存的命中率也在80%左右(从二级缓存读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用,但这已经是一个相当小的比例了。较高端的CPU中,还会带有三级缓存,它是为读取二级缓存后未命中的数据设计的种缓存,在拥有三级缓存的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率。拥有144MB缓存的八路IBM POWER5处理器但这个比例也不是绝对的,因为随着软件的发展,需要越来越多的缓存来预存将要运算的数据,如果缓存的容量不随着软件的发展而增大,就会出现不够

14、用的情况。另外在处理器缓存的发展中,Intel和AMD的处理器一级缓存在逻辑结构设计上在Core之前并不一样。AMD对一级缓存的定位是“实数据读写缓存”,基于该架构的一级数据缓存主要用于存储CPU最先读取的数据;而更多的读取数据则分别存储在二/三级缓存和系统内存当中。即二级/三级缓存中的一部分数据都要在一定的规则下搬到一级缓存中。二级缓存的容量自然对AMD CPU的整体性能影响小些。相对的,AMD则总是试图把一级缓存做的更大些。Intel在对Core之前一级缓存的理解是“数据代码指令追踪缓存”,即是说一级缓存中存储的其实只是二级缓存中数据的地址,而不是这些数据的复制。由于一级数据缓存不再存储实

15、际数据,因此“数据代码指令追踪缓存”设计能够极大地降CPU对一级数据缓存容量的要求,降低处理器的生产难度。但这种设计的弊端在于数据读取效率较“实数据读写缓存设计”低,而且对二级缓存容量的依赖性非常大。事实上CPU性能对二级缓存容量的“敏感”与否还受到诸如内存控制器,流水线长度、频率、总线架构和指令集等等多方面的影响。在多核CPU中还关乎各个物理内核之间的数据交换问题。从Core开始,Intel开始采用“实数据读写缓存”,而目前最新的Nehalm架构则像AMD一样,把内存控制器集成在CPU内部,并更新了总线。这一方面说明了AMD在CPU架构设计上的强项,另一方面在Intel采用AMD的这种占优势

16、的存储架构之后,AMD的优势将被进一步削弱。这里还涉及到一个问题:CPU提供给Cache的地址是主存的地址,要访问Cache,就必须将这个地址变换成Cache 的地址,这种地址变换为地址映射,Cache的地址映射有直接映射、全相联映射和组相联映射三种,目前的主流CPU都是采用组相联。我们常说的虚拟内存与前面的层次存储结构是不一样。先看虚拟内存的定义:虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。虚拟内存就是当物理内存不足够的时候,把

17、硬盘的一部分当作内存内部数据的周转,而不是当做内存来使用。虚拟内存原理比如当我们运行某程序时候占用了15M,不管此时内存的空闲空间够不够15M,系统都会用虚拟内存技术在硬盘上指定了一个虚拟空间,如果我们的物理内存够用,则此时这个虚拟空间里面没有信息而已 。当物理内存不足的时候,系统则会将些时内存里暂时用不上的程序存放到原先给它指定的虚拟空间中,然后留出地方给新的程序使用,在物理内存再次空闲,或者被存入虚拟空间的程序需要再次运行时,便会再将其读入内存。这样一个循环交换过程就是虚拟内存技术,为什么叫它虚拟呢,因为系统把文件释放到了硬盘上,而这个硬盘可不是内存,只是临时的保存内存信息的地方,这个区域

18、并不可以被CPU读取和运算。如果没有虚拟内存技术,我们在物理内存不够用的时候根本就启动不了新的程序,因为新的程序不能在内存中写入相关信息。虚拟内存的功能和作用都不属于计算机的层次存储结构,仅仅是操作系统单独对内存的一种管理方案。虚拟内存设置页现在主流的配机内存已经升级到2G,稍微好点儿的都采用了4G,这样大的内存很少出现用满的情况,于是有人提出是不是可以禁用虚拟内存?不可以,至少在目前的软件环境这样做是不行的,因为从1961年虚拟内存诞生以来,虚拟内存技术已经成各种计算机操作系统和许多应用软件在编写时的一个规范,即使主内存足够用,有些程序也仍然需要虚拟内存的支持,如果禁掉虚拟内存会影响系统的稳

19、定性和程序的兼容性。本文总结:本文讲述了计算机的存储层次,其中以CPU的高速缓存为主,而且其它的方面如硬盘的缓存,内存与硬盘之间都采取了与CPU高速缓存相同的原理来实现系统的加速。提供“高速缓存”的目的是为了让数据访问的速度适应CPU的处理速度,其基于的原理是内存中“程序执行与数据访问的局部性原理”,即一定程序执行时间和空间内,被访问的代码集中于一部分。为了充分发挥高速缓存的作用,不仅依靠“暂存刚刚访问过的数据”,还要使用硬件实现的指令预测与数据预取技术尽可能把将要使用的数据预先从内存中取到高速缓存里。可以这么说,以CPU缓存为代表的所有的层次存储结构都是以程序局部性原理为基础的空间换取速度。另外,CPU的寄存器和虚拟内存虽然不属于层次存储结构,但对计算机的速度和程序运行的稳定性都有非常积极的意义。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1