首页 > 科技 > 正文

从4个方面入手,透彻理解计算机存储层级,提升程序性能不含糊
2019-12-29 13:28:26   来源:东方头条   

计算机不论是大到超算、服务器,小到个人PC、移动终端,对外提供的核心资源,无非两种:一曰“计算”,一曰“存储”。学编程无非就是在利用这两种资源,解决现实中的信息处理问题。所以,从底层理解计算机提供的这两种资源,正是修炼编程内功的基础。本篇就带大家快速理解计算机体系中的存储层级结构。

计算机的存储设备,从CPU内部的寄存器、缓冲区、多级高速缓存,到内存、硬盘,一直延伸到网络上的远程计算机,形成一个存储的层级结构。寄存器

存储是为计算提供数据服务的,讲存储就不能不提计算。对CPU来说,其核心的计算部件属于组合电路,组合电路的特点是接收到输入数据后,经过一系列逻辑门的运算(如:与、或、非、异或),立刻得出结果。由于其自身不能存储数据,所以需要为之提供数据输入和保存输出结果,这就要有存储介质了。并且这种存储介质必须要和组合电路的速度同速,才不至于产生计算延迟,当然其容量只需要满足组合电路的一次输入或输出的数据量即可。这种存储介质就是寄存器,它是计算机的顶级存储。内存

由于寄存器只能满足运算部件一次计算的输入/输出要求,所以还需要有更大容量的存储介质,来存储程序运行时的指令和数据,这就是内存(DRAM技术)。高速缓存

但随着CPU的不断提速,内存的数据读写速度远远不能满足,因此需要有更快的存储介质,这就产生了SRAM。小容量SRAM速度基本可以满足CPU的要求,但容量增大读写速度也随之下降,且功耗和造价都比内存高。因此它不能取代内存,只能用于存储内存中的部分数据。

如果能把CPU所需指令和数据提前从内存加载到SRAM,并按CPU的需要同步更新,就可以只访问SRAM。要实现这一点,靠的就是局部性原理。具体来说,程序执行时,在将来的一段时间内会连续访问与当前数据相邻的数据(空间局部性),或者访问不久前访问过的数据(时间局部性)。这就可以在SRAM中存储与当前数据内存地址相邻的数据,或之前访问过的数据,SRAM由此成为了寄存器和内存之间的缓存。

由于SRAM容量与性能成反比,小容量虽快但存储的数据量少,为尽量减少对内存的访问,又把SRAM按容量分成了多级结构,典型的如:3级高速缓存(L1、L2、L3),其中L1又分成指令缓存和数据缓存,L2、L3是统一缓存(即指令和数据混合存储)。缓冲区

不过,CPU实在是太快了,SRAM仍不能满足CPU的读写需求,于是缓冲区就出现了。CPU在读写内存时,会先把读写请求发送到缓冲区(一个时钟周期就可以完成,所以没有延迟),之后由缓冲区访问高速缓存。缓冲区会采用“数据预取”和“合并写“等技术提升读写速度,另外缓冲区还会根据读写的依赖关系乱序执行(即CPU的内存访问重排序)。缓冲区也充当了一把缓存的角色(但缓冲区延迟了数据到内存的更新,给多核之下数据的一致性带来了麻烦,编程人不可不察)。至此,主机的存储层级就形成了,即寄存器-缓冲区-3级高速缓存-内存。

主机存储层级

硬盘

由于内存掉电后数据丢失,这就需要能持久保存、容量更大且更廉价的存储介质,来存储程序的指令和数据,这就是硬盘(如:SSD、HDD)。程序运行时会把指令和数据悉数从硬盘加载到内存,由于现代计算机能同时运行多个程序,且程序所需存储空间越来越大,内存容量远不能满足程序的加载需求。能否在程序运行时,按所需从磁盘加载而不是一次性加载呢?能,还得靠局部性原理。因此内存就成了硬盘和CPU之间的高速缓存,实现这一功能的就是虚拟内存技术(由操作系统与CPU协同实现)。远程访问

随着程序功能的增加,程序所需数据不能全在本机硬盘上存储,还需要通过网络与其他计算机进行数据交换。由于网络访问延迟太高,所以缓存思路又派上用场了,按照局部性原理可在硬盘上保存从其他计算上获取的数据。这样硬盘就成为本机和网络计算机之间的高速缓存了,比如:浏览器会在本地硬盘存储从服务器上下载的网页。至此,计算机的整体存储层级结构就形成了,即寄存器/缓冲区-高速缓存-内存-硬盘-网络。

另外还需注意一点,不同层级的存储介质之间,数据传输速度不同,如:CPU内部就是高速的内部总线、与内存之间要走系统总线、与硬盘要走I/O总线,与其他计算机要走网络。

计算机存储层级结构总结

总结一下,理解计算机的存储层级结构,需要从4个方面考虑:1、CPU处理的数据来源;2、不同访问特性的存储介质;3、不同层级存储介质之间形成的层层缓存结构;4、存储层级之间的数据传输通道即总线。

笔者的专栏《高性能编程必备的计算机硬件知识》对计算机的各个存储层级,以及如何利用存储层级的特性提升程序性能,有详细的讲解,欢迎围观。

相关热词搜索:程序性 层级 能不 含糊 透彻

上一篇:1.2亿公里外“巨石堆”2135年穿越地球,NASA:碰撞概率千分之一
下一篇:最后一页

泰安知名律师   电话:18053115917
手机:0531-80961678   微信:18053115917   QQ:709581498   邮箱:709581498@qq.com
网站地图 (XML地图 / 百度地图