龙空技术网

内存(Memory)介绍

有灵魂的程序猿 207

前言:

而今看官们对“内存用于存储”大约比较讲究,兄弟们都需要分析一些“内存用于存储”的相关文章。那么小编在网摘上收集了一些关于“内存用于存储””的相关知识,希望看官们能喜欢,你们快快来了解一下吧!

简单点来说

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。

内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。 内存是由内存芯片、电路板、金手指等部分组成的。

详细说说内存

内存(Memory)是计算机系统中的一种关键组件,用于存储和访问数据和指令。它是计算机的临时存储器,用于暂时存储正在执行的程序和数据。

内存通常由一系列存储单元组成,每个存储单元都有一个唯一的地址。每个存储单元可以存储一个固定大小的数据单元,通常是以字节为单位。这些存储单元可以通过地址进行访问,以读取或写入数据。

内存在计算机系统中扮演着至关重要的角色。它不仅用于存储正在执行的程序和数据,还用于存储操作系统、应用程序和其他系统组件。内存的速度非常快,可以迅速读取和写入数据,因此对于计算机的性能和响应速度至关重要。

内存可以分为多个层次,包括主存储器(主内存)和辅助存储器(如硬盘、固态硬盘等)。主存储器是计算机直接访问的内存,它通常是易失性的,即在断电时会丢失存储的数据。辅助存储器则用于长期存储数据,它可以持久保存数据,但访问速度相对较慢。

内存的大小通常以字节为单位进行表示,例如1GB(千兆字节)或8GB(吉字节)。较大的内存容量可以容纳更多的程序和数据,从而提供更好的性能和多任务处理能力。

下面介绍一下关于内存概念性的东西:

CHANNEL:双通道,使内存的带宽增加一倍,数据存取速度也相应增加一倍(理论上)。(内存的带宽决定“桥梁”的宽窄) 内存通道独立,CPU可分别寻址、读取数据。

BANK:Memory chip中的存储单元,假如是X4的话有一个存储单元里面有四个bit数据, Bank,Row,column 组成了内存中cell的定位坐标。

RANK:CPU每次会从cache里面读取64bit的数据,内存控制器从内存读取的也是64bit的数据,这是大佬规定好的。

对于X4的话,那我们就需要16颗芯片。为了组成所需的位宽(64bit ),就需要多颗芯片颗粒并联工作,那么这一个64bit的数据芯片的集合就是一个内存条的Rank。对于X4颗粒, 需要16(64/4)颗芯片颗粒

关于SRAM和DRAM在另外一篇文章里写了

SRAM是一种静态随机存取存储器,它使用触发器电路来存储数据。SRAM的特点是读取速度快、访问延迟低,而且不需要刷新操作。它通常用于高速缓存(Cache)和寄存器等需要快速访问的存储器中。由于SRAM的构造比较复杂,因此它的成本相对较高,容量也相对较小。

DRAM是一种动态随机存取存储器,它使用电容器来存储数据。DRAM的特点是存储密度高、成本相对较低,但读取速度较慢,需要定期刷新以保持数据的有效性。DRAM通常用于主存储器(Main Memory),它可以存储大量的数据,但相对于SRAM,访问延迟较高。

Cache(缓存)是一种高速存储器,用于临时存储计算机中频繁访问的数据。它的目的是提高计算机的性能,通过减少对主存储器的访问次数来加快数据的读取和写入速度。Cache通常使用SRAM作为存储介质,因为SRAM的读取速度快,可以更快地提供数据给处理器。

所以,可以将SRAM理解为一种高速存储器,而DRAM则是主存储器的一种形式。Cache则是一种使用SRAM作为存储介质的高速缓存。

Cache作用原理

是为了更好的利用局部性原理,减少CPU访问主存的次数。CPU是不会直接去访问内存的,都是通过cache间接访问主存, 每次需要访问主存时, 遍历一遍全部cache line(固定为64bit), 查找主存的地址是否在某个cache line中. 如果cache中没有找到, 则分配一个新的cache entry, 把主存的内存copy到cache line中, 再从cache line中读取.

cache entry包含:

1) cache line

2) tag : 标记cache line对应的主存的地址

3) flag : 标记当前cache line是否invalid, 如果是数据cache, 还有是否dirty

回写策略:cache中的数据更新后,需要回写到主存, 回写的时机有:

1) 每次更新都回写. write-through cache

2) 更新后不回写,标记为dirty, 仅当cache entry被evict(驱赶)时才回写

3) 更新后, 把cache entry送如回写队列, 待队列收集到多个entry时批量回写.

cache一致性问题 有两种情况可能导致cache中的数据过期

1) DMA, 有其他设备直接更新主存的数据

2) SMP, 同一个cache line存在多个CPU各自的cache中. 其中一个CPU对其进行了更新.

SPD(SerialPresenceDetect串行存在探测)

1个8针的SOIC封装(3mm*4mm)256字 EEPROM 芯片。记录了诸如内存的速度、容量、电压与行、列地址带宽等参数信息。当开机时PC的BIOS将自动读取SPD中记录的信息,如果没有SPD,就容易出现死机或致命错误的现象。

SPD的内容一般由内存模组制造商写入。实际上,SPD的有效信息只用了128个字节,一般的一个字节至少对应一种参数,有的参数需要多个字节来表述(如产品序列号,生产商在DEDEC组织中的代码)。

ECC内存:Error Checking and Correction即应用了能够实现错误检查和纠正技术(ECC)的内存条。

有没有发现这照片里面是十九块大的芯片,其中中间的一块是内存控制器,那么剩下十八块是什么呢?不是只需要十六块吗?

其中十六块是我们上面所说的十六颗芯片,剩下两块呢?

有没有想过为什么要用16颗芯片,而不用一块芯片,这样不就节省空间吗?

当使用一颗芯片的时候,芯片坏了,就直接凉了。然后当我们使用16颗芯片的时候,当有一块坏了,我们可以使用一颗ECC芯片对数据进行纠错和恢复。再坏一颗,那就再算一次。

奇偶校验(Parity Check)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。

Parity Check是通过在原来数据位的基础上增加一个数据位来检查当前8位数据的正确性,但随着数据位的增加Parity用来检验的数据位也成倍增加,就是说当数据位为16位时它需要增加2位用于检查,当数据位为32位时则需增加4位,依此类推。

ECC(错误检查和纠正),这种技术也是在原来的数据位上外加校验位来实现的。不同的是两者增加的方法不一样,这也就导致了两者的主要功能不太一样。它与Parity不同的是如果数据位是8位,则需要增加5位来进行ECC错误检查和纠正,数据位每增加一倍,ECC只增加一位检验位,也就是说当数据位为16位时ECC位为6位,32位时ECC位为7位,数据位为64位时ECC位为8位,依此类推,数据位每增加一倍,ECC位只增加一位。

总之,在内存中ECC能够容许错误,并可以将错误更正,使系统得以持续正常的操作,不致因错误而中断,且ECC具有比Parity更先进的自动识别、更正的能力,可以将Parity无法检查出来的错误位查出并将错误修正。

标签: #内存用于存储 #内存用于存储信息的部件