首页 > 其他分享 >DRAM层级结构

DRAM层级结构

时间:2024-09-28 13:49:15浏览次数:1  
标签:层级 chip 内存 times bank DRAM row channel 结构

本文的所有图片的来源都是gmy老师的PPT。

DRAM层级结构示意图:

首先我们看一下Bank内的结构:

有五个基本命令:

ACTIVATE: 打开一个row。由于DRAM是用电容来保存信息的,所以打开一个row就意味着这些电容里的电荷被释放掉了。因此需要用row buffer将这些信息暂时保存住。

READ: 将row buffer里的某些数据读出来。

WRITE: 将某些数据写入row buffer

PRECHARGE: 将row buffer里的东西写回。也就是说,这个row被关闭了。

REFRESH: 由于电容会漏电,所以需要周期性把内容读出来再重新写回去,这个操作就是refresh。

chip就是内存颗粒。内存颗粒过大的话,会导致良品率过低,所以为了增大容量,一个Rank上会分成很多个chip。PCB板上走线越少越好,所以将数据位平均分配给这些chip,比如假如数据总线长度是64bit,然后一个rank上有8个chip,那就每个chip分8位。这些chip共用command line和address line。这样,每个chip的引脚数就少了,有利于降低芯片封装的成本。

那么,为什么chip内部还要分成多个bank,而不是干脆做成一个大bank呢?我觉得主要是因为多个bank的内存访问是独立的,所以分成多个bank可以增大内存访问的并行度,因为bank不是简单的组合逻辑,CPU可以将一连串访存命令分别发送给各个bank,然后等这些bank分别返回这些数据,示意图:

那么,是不是bank越小越好呢?我的理解是,虽然bank小了之后,chip里可以有更多bank,从而并行度增加,但是实际上我们并不需要这么高的并行度,而且chip里的bank太多会导致走线占用的面积增大。所以工业界的选择是,DDR3的一个chip里放8个bank,DDR4的一个chip里放16个bank。

由于内存条不能太大,即rank的面积有限,所以为了增大容量,一个channel上允许插多个rank。各个rank的内存访问是独立的,所以同样也能增加带宽。

channel的信道容量有限,所以不能插太多rank(一般1到4)。因此为了进一步增大容量,可以增加channel的个数(一般2到4)。各个channel的访问是独立的,所以增加channel的个数也可以增大带宽。

到这里我们就知道了,所谓插内存条组成多通道,意思就是要将这些内存条分散在各个channel上,这样它们占用的是不同的channel的信道资源,所以理想情况下带宽可以翻倍。

我们平时用的内存条两边都有内存颗粒,这种内存条其实叫做DIMM,全称Dual-Inline-Memory-Modules,也就是说,一根内存条上有两个rank。

DDR的含义是Double Data Rate,也就是说在数据总线的时钟的上升沿和下降沿都传输数据。我的问题:为什么不直接增加数据总线的时钟频率?

内存颗粒的访问其实是比较慢的(10到30ns),但是channel bus的带宽可以很高(1到3Gb/s)。CPU读取主存时,是一次性读出64字节的,因此为了充分利用channel bus的带宽,同时减少PCB板上的走线数和芯片的引脚数,我们增加chip内部的访问的宽度,然后通过burst transfer来将这些访问通过有限的高速I/O引脚分批次传输。比如假如数据总线是64bit,有8个chip,一个chip虽然只有8bit的数据引脚,但是它内部是一次读取出64bit的,这些读出来的数据分8次通过总线传输到CPU。这种分8次传输的方式叫做burst-8。

举个例子,假如数据总线的时钟频率是1200MHz,由于是DDR,所以每个时钟周期可以传输两次数据,所以带宽就是2 $\times$ 1200MHz $\times$ 8bits $\times$ 8 chips。内存颗粒的时钟频率只需要2 $\times$ 1200MHz $\times$ 8bits $\times$ 8 chips $\div$ (64bits $\times$ 8chips) = 300MHz。这样,我们就可以在有限的chip内部时钟频率下(因为内存颗粒的访问速度有限),将数据高速传输到数据总线上。

Burst-8的时序图:

注意,burst-8只需要一个READ指令,而不是8个。

标签:层级,chip,内存,times,bank,DRAM,row,channel,结构
From: https://www.cnblogs.com/searchstar/p/18437556

相关文章

  • 英文论文基本结构
    IntroductionIntroduction一般是最后写,作为全文的一个缩影(索引)。一般是简要介绍大背景,然后介绍一些重要的相关工作,指出其不足,然后引出我们的工作,介绍我们的工作的主要贡献。最后一般还会介绍一下全文结构,哪节讲了什么,方便读者针对性阅读。Background详细介绍相关工作。可以指......
  • openGauss 数据库系统的特点与结构
    openGauss数据库系统是一款由华为公司基于开源PostgreSQL数据库开发的高性能、高可靠性的关系型数据库管理系统。以下是关于openGauss数据库系统的特点与结构的详细阐述:特点高性能:多核优化:openGauss针对多核处理器进行了优化,支持多核并行计算,充分利用硬件资源,提高数据处......
  • 结构型设计模式详解与对比:优化你的系统设计
    结构型设计模式(StructuralDesignPatterns)主要关注类和对象的组合,以形成更大的结构。它们通过识别实体之间的关系,帮助设计师确保系统的各个部分能够协同工作。以下是几种常见的结构型设计模式及其详细介绍和对比:一,代理模式(ProxyPattern)用途:为另一个对象提供一个替身......
  • WiFi基础(五):802.11帧结构与WiFi控制帧、管理帧、数据帧
    liwen012024.09.22前言前面介绍了WiFi的工作原理和WiFi的接入过程,这里将通过分析WiFi具体数据包结构,让你对WiFi工作原理和接入过程有一个更进一步的了解。前面文章可以通过下面连接查看:《WiFi基础(四):WiFi工作原理及WiFi接入过程》(一)802.11帧802.11无线WiFi......
  • 嵌入式学习--数据结构+算法
    嵌入式学习--数据结构+算法数据结构1.1数据1.2逻辑结构1.3存储结构1)顺序存储结构2)链式存储结构1.4操作(数据的运算)算法2.1算法与程序2.2算法与数据结构2.3算法的特性2.4如何评价一个算法的好坏?2.5时间复杂度2.6空间复杂度数据结构数据的逻辑结构、存储结构、......
  • 【数据结构】堆(Heap)详解
     在深入了解堆这一重要的数据结构之前,不妨先回顾一下我之前的作品——“二叉树详解”。上篇文章......
  • 数据结构:速通并查集
    并查集用来干什么:处理不相交的集合的合并以及查询相交集合的个数等情况例题(自行搜索):36024年第一批笔试算法题传染病防控 并查集具有三个操作initfindunioninit初始化集合,将当前所有节点的父节点设置为自己intfa[]=newint[10000];intsize[]=newint[10000];//这里是......
  • 数据结构day1
    目录1.1数据1.2逻辑结构1.3存储结构1)顺序存储结构2)链式存储结构1.4操作(数据的运算)2.1算法与程序2.2算法与数据结构2.3算法的特性2.4如何评价一个算法的好坏?2.5时间复杂度2.6空间复杂度数据结构数据的逻辑结构、存储结构、数据的操作(数据的运算)1.1数据数......
  • 数据结构顺序表
    顺序表、单向链表、单向循环链表、双向链表、双向循环链表、顺序栈、链式栈、循环队列(顺序队列)、链式队列1)逻辑结构:线性结构2)存储结构:顺序、链式3)特点:一对一,每一个节点最多有一个前驱和一个后继,首节点无前驱,尾节点无后继顺序表特点:内存连续(数组)1)逻辑结构:线性结构2......
  • 相亲交友系统的社会影响:家庭结构的变化 随着互联网技术的发展,相亲交友系统已成为许多
      随着互联网技术的发展,相亲交友系统已成为许多单身人士寻找伴侣的重要途径。这些平台不仅改变了人们的社交方式,还对家庭结构产生了深远的影响。本文将探讨相亲交友系统如何促使家庭结构发生变化,并通过简单的Python代码示例展示一些相关的技术实现。更加多元的家庭组合相亲交友系......