DDR5 dimm里为什么要设计两个channel?

存储技术

600人已加入

描述

为什么DDR5要设计sub channel的概念,sub channel的设计初衷是什么?一个sub channel的带宽是32bit,要组成一个64bit的cache line岂不是还是需要两个channel同时工作?

首先引入2个概念:

1、Burst Length: 突发(Burst) 是指在同一行中相邻的存储单元连续进行数据传输的方式。连续传输的周期数就是突发长度 (Burst Lengths,简称BL)。

对于DDR3和DDR4内存,其BL=8: 对于DDR5内存,其BL=16.

2、Cache line: 我们知道CPU是不能直接读取内存当中的数据,CPU要想读取内存当中的数据,首先要将数据从内存里加载到高速缓存cache中,然后再读取cache中的数据

数据传输

我们将一个cache平均分成相等的很多块,每一个块大小我们称之为cache line

例如: 一个32 Bytes大小的cache,如果我们将其平均分成32块,那么每一块cache line就是1Byte,总共有32行cache line。如果我们将其平均分成8块,那么cache line大小就是4 Bytes,总共8行cache line。

cache line是cache和内存之间数据传输的最小单位。什么是最小单位?

例: cache从Memory获取数据的最小单位是64Bytes,当cache要从内存里读取一个32 Bytes的数据时,不会只把这32 Bytes的数据读进来,而是会把64 Bytes的数据一起读进来

而对于X86架构的CPU来讲,它的Cache line大小正好就是64Bytes。

在我们DDR4时,数据位宽是64位的,就是我们一次读写64bit的数据,每次读写最高的BurstLength是8位,乘起来就是64bit*8=512bit=64Byte,也就是我们X86架构的CPU cache line 的大小。

那么到了DDR5的时候,每次读写最高的Burst Length变为了16位,如果我们的通道还是维持64bit的位宽,那么我们乘起来就是64bit*16=1024bit,1024bit超过了我们的cpu cache line%的传统大小。如果我们依然要这么做的话,那么我们的内存控制器的架构,从底层硬件到上层读写数据的软件配套都要去改,这样改动就非常大。所以在DDR5时,就引入了sub-channel的概念

每个sub-channel有效数据位是32位,32bit*16 (Burst Length) =512bit,这样就能够满足我们cpu cache line 的需求。所以就是DDR5引入sub-channel的原因。

Reference:为什么DDR5要在一个dimm里面设计两个channel?- 知乎 (zhihu.com)

审核编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分