
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
存储器是程序员在学习计算机技术的时候需要重点掌握的一个编程开发技术,而本文我们就通过案例分析来简单了解一下,存储器基础知识分享。
一、局部性原理
局部性原理是用于制定存储器系统数据管理策略的一个理论基础,我们可以分为2个维度来理解:
1、时间局部性(TemporalLocality):时间局部性表示一个指令或数据被访问过后,在短时间内有很大概率会再次访问。例如,在程序中的一些函数、循环语句或者变量往往会在短时间内被多次调用;
2、空间局部性(SpatialLocality):空间局部性表示一个指令或数据被访问过之后,与它相邻地址的数据有很大概率也会被访问。例如,在程序中访问了数据的项元素之后,往往也会访问继续后续的元素。
在计算机组成原理中,很多策略中都会体现到局部性原理,我们在学习中可以有意识地关联起来。例如在管理CPU高速缓存时,除了可以将当前正在访问的内存数据加到到缓存中,还可以把相邻内存的数据一并缓存起来(即CPU缓存行),也能够提高缓存命中率。
二、认识存储器系统
1、为什么存储器系统要分层?
小伙伴们应该都知道内存和硬盘都是存储器设备。其实,在CPU内部中的寄存器和CPUL1/L2/L3缓存也同样是存储设备,而且它们的访问速度比内存和硬盘快几个数量级。那么,为什么要使用内存和硬盘,直接扩大CPU的存储能力不行吗?这就要提到存储器的3个主要的性能指标:速度+容量+每位价格。
一般来说,存储器的容量越大则速度越低,速度越高则价格越高。想要获得一个同时满足容量大、速度高且价格低的“神奇存储器”是很难实现的。因此,现代计算机系统会采用分层架构,以满足整个系统在容量、速度和价格上大的性价比。
2、存储器的层次结构
在现代计算机系统中,一般采用“CPU寄存器-CPU高速缓存-内存-硬盘”四级存储器结构。自上而下容量逐渐增大,速度逐渐减慢,单位价格也逐渐降低。
1、CPU寄存器:存储CPU正在使用的数据或指令。寄存器是靠近CPU控制器和运算器的存储器,它的速度快;
2、CPU高速缓存:存储CPU近期要用到的数据和指令。CPU高速缓存是位于CPU和内存中间的一层缓存。缓存和内存之间的数据调动是由硬件自动完成的,对上层是完全透明的。
3、内存:存储正在运行或者将要运行的程序和数据;
4、硬盘:存储暂时不使用或者不能直接使用的程序和数据。硬盘主要解决存储器系统容量不足的问题,硬盘的速度虽然比内存慢,但硬盘的容量可以比内存大很多,而且断电不丢失数据。
在此基础上,对各个层级上进行局部优化,就形成了完整的存储器系统:
优化1-CPU三级缓存:在CPUCache的概念刚出现时,CPU和内存之间只有一个缓存,随着芯片集成密度的提高,现代的CPUCache已经普遍采用L1/L2/L3多级缓存的结构来改善性能;
优化2-虚拟内存:程序不能直接访问物理地址,而是访问虚拟地址,虚拟地址需要经过地址变换(AddressTranslation)才能映射到存放数据的物理地址;
优化3-页缓存:为了提高读写效率和保护磁盘,操作系统在文件系统中使用了页缓存机制。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。