Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3431501
  • 博文数量: 198
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7246
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-23 18:56
个人简介

将晦涩难懂的技术讲的通俗易懂

文章分类

全部博文(198)

文章存档

2023年(9)

2022年(4)

2021年(12)

2020年(8)

2019年(18)

2018年(19)

2017年(9)

2016年(26)

2015年(18)

2014年(54)

2013年(20)

分类: LINUX

2019-01-01 17:50:04

存储器基本知识:bankrankchannel

——lvyilong316


       bankrankchannel这些关于记忆体的名词是否已困绕许久,疑似了解却又说不出个所以然来。这篇文章就让我们一步步拆解记忆体的面纱,从架构到读写方式逐步揭开记忆体的秘密。

挥发性记忆体分 2 种,SRAMDRAM

RAMRamdom Access Memory)随机存取记忆体,之所以称作「随机存取」,是因为相较于早期的线性储存媒体(磁带)而言,因为磁带的存取是线性的,存取时间会依目前磁带位置和欲存取位置的距离而定,需转动磁带至应有的位置,距离越长、转得越久、存取时间也就越久。而 RAM 没有这种烦恼,存取时间为固定值,不会因为资料在记忆体的位置而影响存取时间。

RAM 在电脑中又可大致上分为 2 种:SRAM DRAM,两者的基础原理差不多,都是将电荷储存至内部,借由改变不同的电荷储存 0 或是 1SRAMStatic Random Access Memory)静态随机存取记忆体和 DRAMDynamic Random Access Memory)有著几点不同,SRAM 的结构较複杂、单位面积的容量较少、存取速度快,DRAM 则是构造简单、单位面积内的容量较多、存取时间较 SRAM 慢,同时 DRAM 也因为构造较简单的关系,储存的电荷会随著时间渐渐消失,因此需要有个再充电(Refresh)的动作保持电容储存的资料。

SRAM 单一位元储存区的构造

DRAM 单一位元储存区的构造

由图中 SRAM DRAM 构造可得知,SRAM 採用正反器(flip-flop)构造储存,DRAM 则是採用电容储存。因为 SRAM DRAM 种种的特性不同,SRAM 适合做为暂存器和 CPU 快取使用,DRAM 则是适合做为主记忆体或是其他装置间的快取使用。

挥发与非挥发性记忆体

挥发性记忆体(Volatile Memory)和非挥发性记忆体(Non-Volatile Memory)之间的差异在于,断电之后是否可保存内部资料,挥发性记忆体的资料会随著失去电力供应而消失,而非挥发性记忆体依然可以保有内部资料。

挥发性记忆体包含了SRAMDRAM,而非挥发性记忆体包含ROMRead-Only Memory)和Flash Memory快闪记忆体。

主记忆体子系统

DRAM 由于制造简单、高密度,作为电脑内部的主记忆体再适合不过了。但是由于主记忆体摆放在 CPU 之外,从工厂出来的晶粒需要封装和组合之后才可和 CPU 连结,因此从 CPU DRAM 晶粒之间依据层级由大至小为 channelDIMMrankchipbankrow/column,接下来就一一说明这些部分。

主记忆体由大至小,由上往下可做这样的拆分

主记忆体从 channel chip 的相对应关系

chip 往下拆分为 bank

bank 往下拆就是 1 个个的储存单元,横向 1 排称之为 row,直向 1 排称之为 column,每排 column 的下方都有个 row buffer,用以暂存读出来的 row 排资料

单一 DRAM 晶片的内部功能区块图(图片取自Micron

channel DIMM

从记忆体控制器出来之后,最先遇到的就是 channel,每个 channel 需要配有 1 组记忆体控制器、2 channel 配置 2 组……以此类推。而每个 channel 中能够拥有许多组 DIMMDual In-line Memory Module),DIMM 也就是目前消费者能够在市场上买到的记忆体模组,因为多年前的主机板必须购买记忆体颗粒(chip)直接插在主机板上,而后发展出 SIMMSingle In-line Memory Module),将多组记忆体颗粒焊在 1 片电路板上,成为记忆体模组,再将此电路板插在主机板上。接著为了增加资料吞吐量,将 1 条记忆体模组的频宽从 SIMM 32bit 改换成 DIMM 64bit,这设计依然沿用至今。

从记忆体颗粒过度到 SIMM 的时代,坊间出现了替使用者将记忆体颗粒焊到 SIMM 电路板上的服务,因为当时记忆体非常昂贵,花一些小钱就可以把记忆体延用至新的电脑上。

 

rank chip

rank 指的是连结到同 1 CSChip Select)的记忆体颗粒 chip,记忆体控制器能够对同 1 rank chip 进行读写操作,而在同 1 rank chip 也分享同样的控制讯号。以目前的电脑来说,因为 1 channel 的宽度为 64bit,所以能够同时读写 8byte 的资料,如果是具有 ECC 功能的记忆体控制器和 ECC 记忆体模组,那麽 1 channel 的宽度就是 72bit

rank 1 rank 2 共享同组 address/comand 讯号线,利用 chip select 线选择欲读取或是写入的那一组,之后将资料经由 MUX 多工器送出。

 

有些人会有错误观念,以 chip 的数量或是以记忆体模组的单、双面进行 rank 的判断,但其实要以记忆体控制器和记忆体颗粒的规格进行判断,目前家用 PC 的记忆体控制器通道绝大部分都是 64bit 宽,记忆体颗粒则是 8bit 宽,因此 8 颗并联即可满足记忆体控制器的需求,也就是 1 rank。但偶尔也有以 16bit 宽的记忆体颗粒製成的记忆体模组,此时 4 chip 就是 1 rank

 

这在採用 Intel H61/H81 晶片组和传统单channel的主机板时须特别注意,因为 Intel 限制 H61/H81 每个 channel 仅能支援 2 rank,而不是 4 rank,部分主机板每个 channel 又做了 2 组记忆体模组插槽,造成部分使用者同组 channel 放入 2 条记忆体模组时能够辨识全部的记忆体容量(双面单 rank 的记忆体模组),部分使用者则是仅能辨识一半的容量(双面双 rank 的记忆体模组)。

 

bankrowcolumn

bank 再往下分拆就是实际储存位元的电路,一般来说横向选择排数的线路称为 rowrow enablerow selectword line),直向负责传递讯号的线路为columnbitline),每组 bank 的下方还会有个 row buffersense amplifier),负责将独出的 row 资料暂存,等待 column 位址送到后输出正确的位元,以及判断储存的资料是 0 还是 1

1bank的读取操作

1 bank 的写入操作

记忆体的读写方式

上图标明了记忆体的读写方式,读取时首先记忆体控制器会将 1 组位址由位址线传到记忆体上,控制线跟著传送控制讯号;如果是多 rank 的安装情形,CS 也会送出对应的讯号选择目标 rank。接著由于每个 rank 由许多 chip 组成,1 chip 仅负责部分的资料读取,chip 接收到位址讯号后,将位址丢入内部的 row/column 解码器找出相对应的 bank 位址(每家每款产品的内部 bank 组合有可能不同,因此对应也会有所不同),接著开启 row 线,同 1 row 的内部资料就会流到 row buffer 内部,row buffer 判断讯号为 0 或是 1 之后就输出资料。

写入时除了位址资料外,还会传送欲写入的资料至晶片内部的 input buffer,同样的也是依照 row/column 解码器找出对应位置之后写入。

记忆体控制器和 DIMM 之间线路的关系。

越多越好,加速读写能力

家用电脑的记忆体控制器已经进入双通道记忆体控制器多年,加速原理为增加资料汇流排宽度,达到同时读写更多资料的能力。

 

另一种增加频宽的方法就是减少延迟,利用多个 chip 或是 bank 达成。一般的记忆体读取延迟为命令下达+记忆体读取延迟+输出资料,如果命令下达延迟为 2ns、记忆体读取延迟为 10ns、输出资料延迟为 2ns,那麽读取 2 笔资料的总延迟就会是(2102)×224ns

 

如果现在能够将资料拆分至 2 颗记忆体上,那麽 2 笔读取延迟将降低至 16ns,因为不需等到前笔资料读取完成才发出下一笔的读取命令,在第一笔资料进入记忆体读取时即可发出。这种概念也可应用到目前最夯的 SSD 上,较多CEChip Enable)封装的快闪记忆体晶片,通常都比较少 CE 封装的晶片来得快。

由时序图可得知,下方此种尽量分拆记忆体空间的作法,可大幅减少延迟

阅读(22154) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~