加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

java内存模型(JMM)分解

发布时间:2023-03-28 10:56:51 所属栏目:教程 来源:
导读:cpu Register也就是 cpu 寄存器。cpu寄存器是 cpu 内部集成的,在寄存器上执行操作的效率要比在主存上高出几个数量级

在cpu中至少要有六类寄存器:指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄
cpu Register也就是 cpu 寄存器。cpu寄存器是 cpu 内部集成的,在寄存器上执行操作的效率要比在主存上高出几个数量级

在cpu中至少要有六类寄存器:指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)、程序状态字寄存器(PSW)。这些寄存器用来暂存一个计算机字,其数目可以根据需要进行扩充

按与cpu远近来分,离得最近的是寄存器,然后缓存,最后内存。所以,寄存器是最贴近cpu的,而且cpu只与寄存器中进行存取。寄存器从内存中读取数据,但由于寄存器和内存读取速度相差太大,所以有了缓存。即读取数据的方式为:

cpu〈------〉寄存器〈---->缓存<----->内存

当寄存器没有从缓存中读取到数据时,也就是没有命中,那么就从内存中读取数据

cpu Cache Memory也就是cpu 高速缓存。相对于硬盘读取速度来说内存读取的效率非常高,但是与 cpu 还是相差数量级,所以在 cpu 和主存间引入了多级缓存,目的是为了做一下缓冲。

cpu内部集成的缓存称为一级缓存(L1 Cache),外部的称为二级缓存(L2 Cache)。
一级缓存中又分为数据缓存(D-Cache)和指令缓存(I-Cache)。二者可以同时被cpu进行访问,减少了争用Cache所造成的冲突,提高了cpu的效能。
cpu的一级缓存通常都是静态RAM(Static RAM/SRAM),速度非常快,但是贵
二级缓存是cpu性能表现的关键之一,在cpu核心不变化的情况下,增加二级缓存容量能使性能大幅度提高。而同一核心的cpu高低端之分往往也是在二级缓存上存在差异
三级缓存是为读取二级缓存后未命中的数据设计的一种缓存,在拥有三级缓存的cpu中,只有约5%的数据需要从内存中调用,这进一步提高了cpu的效率,从某种意义上说,预取效率的提高,大大降低了生产成本却提供了非常接近理想状态的性能

Main Memory 就是主存,主存比 L1、L2 缓存要大很多
注意:部分高端机器还有 L3 三级缓存。

内存中相关概念:

ROM(Read Only Memory)
只读储存器 ,对于电脑来讲就是硬盘,在系统停止供电的时候仍然可以保持数据
PROM
PROM是可编程的ROM,PROM和EPROM(可擦除可编程ROM)两者区别是,PROM是一次性的,也就是软件灌入后,就无法修改了,现在已经不可能使用了,而EPROM是通过紫外光的照射擦除原先的程序,是一种通用的存储器。另外一种EEPROM是通过电子擦除,价格很高,写入时间很长,写入很慢。
RAM(Random Access Memory)
随机储存器 ,就是电脑内存条。用于存放动态数据。(也叫运行内存)系统运行的时候,需要把操作系统从ROM中读取出来,放在RAM中运行,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存
静态RAM(Static RAM/SRAM)
当数据被存入其中后不会消失。SRAM速度非常快,是目前读写最快的存储设备。当这个SRAM 单元被赋予0 或者1 的状态之后,它会保持这个状态直到下次被赋予新的状态或者断电之后才会更改或者消失。需要4-6 只晶体管实现, 价格昂贵。
一级,二级,三级缓存都是使用SRAM
动态RAM(Dynamic RAM/DRAM)
DRAM 必须在一定的时间内不停的刷新才能保持其中存储的数据。DRAM只要1 只晶体管就可以实现。
DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很 多,
计算机内存就是DRAM的

目前计算机使用的主存基本都是随机读写存储器(RAM),现代RAM的结构和存取原理比较复杂,这里本文抛却具体差别,抽象出一个十分简单的存取模型来说明RAM的工作原理。

从抽象角度看,主存是一系列的存储单元组成的矩阵,每个存储单元存储固定大小的数据。每个存储单元有唯一的地址,现代主存的编址规则比较复杂,这里将其简化成一个二维地址:通过一个行地址和一个列地址可以唯一定位到一个存储单元。上图展示了一个4 x 4的主存模型。
主存的存取过程如下:

当系统需要读取主存时,则将地址信号放到地址总线上传给主存,主存读到地址信号后,解析信号并定位到指定存储单元,然后将此存储单元数据放到数据总线上,供其它部件读取。
写主存的过程类似,系统将要写入单元地址和数据分别放在地址总线和数据总线上,主存读取两个总线的内容,做相应的写操作。
这里可以看出,主存存取的时间仅与存取次数呈线性关系,因为不存在机械操作,两次存取的数据的“距离”不会对时间有任何影响,例如,先取A0再取A1和先取A0再取D3的时间消耗是一样的。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章