For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
我们在上文中给大家简单介绍了计算机运行模式的一些基础知识等内容,而本文我们就通过案例分析再来学习一下,计算机内存包含哪些类型。
计算机内存模型一般是指计算系统底层与编程语言之间的约束规范,主要是描述计算机程序与共享存储器访问的行为特征表现。
根据介绍计算机运行模型来看,计算机内存模型可以帮助以及指导我们理解Java内存模型,主要在如下的两个方面:
系统底层希望能够对程序进行更多的优化策略,一般主要是针对处理器和编译器,从而提高运行性能。
为编程语言带来了更多的可编程性问题,主要是复杂的内存模型会有更多的约束,从而增加了程序设计的编程难度。
由此可见,内存模型用于定义处理器间的各层缓存与共享内存的同步机制,以及线程与内存之间交互的规则。
在操作系统层面,内存主要可以分为物理内存与虚拟内存的概念,其中:
物理内存(PhysicalMemory):通常指通过安装内存条而获得的临时储存空间。主要作用是在计算机运行时为操作系统和各种程序提供临时储存。常见的物理内存规格有256M、512M、1G、2G等。
虚拟内存(VirtualMemory):计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
一般情况下,当物理内存不足时,可以用虚拟内存代替,在虚拟内存出现之前,程序寻址用的都是物理地址。
从常见的存储介质来看,主要有:寄存器(Register),高速缓存(Cache),随机存取存储器(RAM),只读存储器(ROM)等4种,按照读取快慢的顺序是:Register>Cache>RAM>ROM。其中:
寄存器(Register):CPU处理器的一部分,主要分为通用寄存器和专用寄存器。
高速缓存(Cache):用于减少CPU处理器访问内存所需平均时间的部件,一般是指L1/L2/L3层高级缓存。
随机存取存储器(RandomAccessMemory,RAM):与CPU直接交换数据的内部存储器,它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
只读存储器(Read-OnlyMemory,ROM):所存储的数据通常都是装入主机之前就写好的,在工作的时候只能读取而不能像随机存储器那样随便写入。
由于CPU的运算速度比主存(物理内存)的存取速度快很多,为了提高处理速度,现代CPU不直接和主存进行通信,而是在CPU和主存之间设计了多层的Cache(高速缓存),越靠近CPU的高速缓存越快,容
量也越小。
按照数据读取顺序和与CPU内核结合的紧密程度来看,大多数采用多层缓存策略,的就三层高速缓存架构。
也就是我们常说的,CPU高速缓存有L1和L2高速缓存(即一级高速缓存和二级缓存高速),部分CPU还具有L3高速缓存(即三级高速缓存):
CPU内核读取数据时,先从L1高速缓存中读取,如果没有命中,再到L2、L3高速缓存中读取,假如这些高速缓存都没有命中,它就会到主存中读取所需要的数据。
每一级高速缓存中所存储的数据都是下一级高速缓存的一部分,越靠近CPU的高速缓存读取越快,容量也越小。
当然,系统还拥有一块主存(即主内存),由系统中的所有CPU共享。拥有L3高速缓存的CPU,CPU存取数据的命中率可达95%,也就是说只有不到5%的数据需要从主存中去存取。
因此,高速缓存大大缩小了高速CPU内核与低速主存之间的速度差距,基本体现在如下:
L1高速缓存:接近CPU,容量小、存取速度快,每个核上都有一个L1高速缓存。
L2高速缓存:容量更大、速度低些,在一般情况下,每个内核上都有一个独立的L2高速缓存。
L3高速缓存:接近主存,容量大、速度低,由在同一个CPU芯片板上的不同CPU内核共享。
总结来说,CPU通过高速缓存进行数据读取有以下优势:
写缓冲区可以保证指令流水线持续运行,可以避免由于CPU停顿下来等待向内存写入数据而产生的延迟。
通过以批处理的方式刷新写缓冲区,以及合并写缓冲区中对同一内存地址的多次写,减少对内存总线的占用。
综上所述,一般来说,对于单线程程序,编译器和处理器的优化可以对编程开发足够透明,对其优化的效果不会影响结果的准确性。
而在多线程程序来说,为了提升性能优化的同时又达到兼顾执行结果的准确性,需要一定程度上内存模型规范。
由于经常会采用多层缓存策略,这就导致了一个比较的并发编程三大问题之一的共享变量的可见性问题,除了可见性问题之外,当然还有原子性问题和有序性问题。
由此来看,在计算机内存模型中,主要可以提出主存和工作内存的概念,其中:
主存:一般指的物理内存,主要是指RAM随机存取存储器和ROM只读存储器等
工作内存:一般指寄存器,还有以及我们说的三层高速缓存策略中的L1/L2/L3层高级缓存Cache等
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。