当前位置: 首页 > article >正文

深入理解DRAM刷新机制:异步刷新为何无需扣除刷新时间?

引言

在计算机组成原理和存储器系统的学习中,DRAM(动态随机存取存储器)的刷新机制是一个关键问题。许多同学在学习时会遇到一个疑问:

“为什么异步刷新的刷新信号周期可以直接用 总时间/行数 计算(如 2ms/32=62.5μs),而集中刷新和分散刷新却需要考虑刷新操作占用的时间?”

这篇文章将系统性地分析 三种DRAM刷新方式(集中刷新、分散刷新、异步刷新),解释为什么异步刷新可以“直接除”,而其他方式不行,并探讨现代DRAM控制器如何优化刷新调度。


1. DRAM为什么需要刷新?

DRAM存储数据的方式是利用 电容电荷,但电荷会随时间泄漏,因此必须定期刷新(重新写入)以保持数据。

刷新关键参数:

  • 刷新间隔(Refresh Interval, tREFI):通常为 2ms(所有存储单元必须在2ms内刷新一次)。

  • 刷新一行的时间(tRC/tRFC):约 50-100ns(不同DRAM标准不同)。

  • 行数(Rows):例如,32×32结构的DRAM有32行。


2. 三种DRAM刷新方式

(1) 集中刷新(Burst Refresh)

  • 方式:在 2ms 的末尾,集中连续刷新所有行,期间CPU无法访问内存(产生“死时间”)。

  • 计算

    • 总刷新时间 = 行数 × 每行刷新时间(t_RC)。

    • 例如:32行 × 100ns = 3.2μs 的“死时间”。

    • 必须扣除刷新时间,否则CPU会在这3.2μs内完全停止。

(2) 分散刷新(Distributed Refresh)

  • 方式在每个正常读写周期后插入一个刷新周期,均匀分布刷新操作。

  • 计算

    • 刷新周期 = 一个正常读写周期+一个刷新周期

    • 必须扣除刷新时间,因为刷新操作会占用总线周期。

(3) 异步刷新(Asynchronous Refresh)

  • 方式由DRAM控制器管理刷新,刷新请求以固定间隔(如62.5μs)发出,但实际刷新操作可以“排队”执行。

  • 计算

    • 刷新信号周期 = 2ms / 32 = 62.5μs

    • 不扣除刷新时间,因为:

      1. 刷新操作由控制器动态调度,可以在内存空闲时执行。

      2. 只要保证 2ms 内完成所有刷新,不严格要求每次刷新按时完成。


3. 为什么异步刷新可以“直接除”?

关键区别:刷新调度方式

刷新方式是否扣除刷新时间原因
集中刷新✔️ 扣除连续刷新,CPU完全停止访问
分散刷新✔️ 扣除每次刷新占用固定周期
异步刷新❌ 不扣除刷新操作由控制器动态调度
  • 异步刷新的优势

    • 刷新请求以固定间隔(62.5μs)发出,但实际刷新可以延迟执行

    • DRAM控制器会检查内存状态:

      • 如果内存忙(CPU正在读写),延迟刷新

      • 如果内存空闲,立即执行刷新。

    • 最终保证 2ms 内完成所有行刷新,但不严格要求每次刷新按时完成。

类比理解

  • 集中刷新:像“期末考试周”,所有复习(刷新)集中在几天,期间不干别的。

  • 分散刷新:像“每天复习1小时”,固定占用时间。

  • 异步刷新:像“设定复习提醒,但可以灵活安排”,只要在截止日期前完成即可。


4. 现代DRAM控制器如何优化刷新?

现代DRAM(如DDR4/DDR5)采用 异步刷新 + 智能调度

  1. 刷新请求 以固定间隔(如62.5μs)发出。

  2. DRAM控制器 动态管理刷新:

    • 如果内存正在被访问,推迟刷新

    • 如果内存空闲,立即执行刷新。

  3. 避免CPU停顿,提高系统性能。


5. 为什么书本上不同刷新方式计算方式不同?

  • 集中/分散刷新 是早期DRAM的实现方式,刷新操作严格占用时间,必须扣除。

  • 异步刷新 是现代DRAM的主流方式,刷新由控制器优化,不严格占用周期,因此可以“直接除”。


6. 总结

刷新方式计算方式是否扣除刷新时间适用场景
集中刷新总刷新时间 = 行数 × t_RC✔️ 扣除早期DRAM
分散刷新刷新周期 = (总时间/行数) - t_RC✔️ 扣除低性能系统
异步刷新刷新周期 = 总时间/行数❌ 不扣除现代DRAM

关键结论:

  • 异步刷新 的刷新信号周期可以“直接除”(如 2ms/32=62.5μs),因为刷新操作由控制器动态调度,不占用固定时间。

  • 集中/分散刷新 必须扣除刷新时间,因为刷新操作会固定占用周期。


7. 延伸思考

  • 如果刷新操作时间很长(如高温下 t_RC 增加),异步刷新是否仍然有效?

    • 是的,但需要更智能的调度策略,避免刷新堆积。

  • DDR5如何进一步优化刷新?

    • 采用 Same-Bank Refresh,允许部分Bank刷新,其余Bank仍可访问。

 


结语

DRAM刷新机制是计算机体系结构中的重要话题,理解不同刷新方式的区别有助于优化内存性能。异步刷新凭借其灵活性成为现代DRAM的主流方案,而集中/分散刷新的计算方式则反映了早期硬件的限制。希望这篇文章能帮助大家彻底理解这个问题! 🚀

相关文章:

深入理解DRAM刷新机制:异步刷新为何无需扣除刷新时间?

引言 在计算机组成原理和存储器系统的学习中,DRAM(动态随机存取存储器)的刷新机制是一个关键问题。许多同学在学习时会遇到一个疑问: “为什么异步刷新的刷新信号周期可以直接用 总时间/行数 计算(如 2ms/3262.5μs&a…...

用DrissionPage升级维基百科爬虫:更简洁高效的数据抓取方案

一、原方案痛点分析 原代码使用urllibBeautifulSoup组合存在以下问题: 动态内容缺失:无法获取JavaScript渲染后的页面内容 反爬能力弱:基础请求头易被识别为爬虫 代码冗余:需要单独处理SSL证书验证 扩展性差:难以应…...

C++STL——容器-vector(含部分模拟实现,即地层实现原理)(含迭代器失效问题)

目录 容器——vector 1.构造 模拟实现 2.迭代器 模拟实现: ​编辑 3.容量 模拟实现: 4.元素的访问 模拟实现 5.元素的增删查改 迭代器失效问题: 思考问题 【注】:这里的模拟实现所写的参数以及返回值,都是…...

严重BUG修复及部分体验问题优化

随着Deepseek APIPython 测试用例一键生成与导出 V1.0.6的试用不断深入,会出现程序异常崩溃的问题。经群友定位,紧急修复了bug,并适当优化部分体验性问题。针对生成的测试用例xlsx文档,可以再次选中该xlsx给大模型进行推理生成新的…...

黑马 C++ 学习笔记

课程链接:黑马 C 文章目录 C 基础语法指针空指针和野指针 const 修饰指针 C 核心编程程序的内存分区模型程序运行前程序运行后new 操作符 引用引用的基本使用引用的注意事项引用作函数参数引用作函数返回值引用的本质常量引用 函数的提高函数默认参数函数默认参数函…...

Elasticsearch 证书问题解决

报错信息 javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetat org.elasticsearch.client.RestClient. extractAndWrapCause(R…...

I²C总线高级特性与故障处理分析

IC总线高级特性与故障处理深度分析 目录 1. IC基础回顾 1.1 IC通信基本原理1.2 IC总线时序与协议1.3 寻址方式与读写操作 2. IC高级特性 2.1 多主机模式2.2 时钟同步与伸展2.3 高速模式与Fast-mode Plus2.4 10位寻址扩展 3. IC总线故障与锁死 3.1 断电锁死原理3.2 总线挂起与…...

山东大学《多核平台下的并行计算》实验笔记

每年的题目都不一样,学弟学妹参考参考就行。 一、搭建linux环境 主播用的ssh+虚拟机,目前用着最顺手的 二、安装并行编程软件 MPI(Message Passing Interface),由其字面意思也可些许看出,是一个信息传递接口。可以理解为是一种独立于语言的信息传递标准。而OpenMPI和MP…...

2023年CIE SCI1区TOP:序列融合麻雀搜索算法ISSA,深度解析+性能实测

目录 1.摘要2.麻雀搜索算法SSA原理3.改进策略3.结果展示4.参考文献5.代码获取 1.摘要 麻雀搜索算法(SSA)是一种基于麻雀觅食和防捕行为的群体智能算法。然而,基本SSA在迭代过程中,种群多样性逐渐降低,容易陷入局部最优…...

elasticsearch 如果按照日期进行筛选

如果你需要按照日期进行筛选,你可以使用 Elasticsearch 的范围查询来实现。以下是一个示例代码,演示如何在 Java 中进行日期范围查询: import org.apache.http.HttpHost; import org.elasticsearch.client.RestClient; import org.elasticse…...

SpringBoot条件装配注解

SpringBoot条件装配注解 Spring Boot 提供了一系列条件装配注解,用于控制 Bean 的创建和装配过程。以下是一些常用的条件装配注解及其详细介绍: ConditionalOnClass 作用:当类路径中存在指定的类时,才会创建该 Bean。 示例&#…...

配置晟腾910b的PyTorch torch_npu环境

1.【新教程】华为昇腾NPU的pytorch环境搭建 - Lukea - 博客园 1、新建conda环境。 conda create -n pytorch python3.102、在新建好的conda环境中,安装基础的依赖。 pip install attrs cython numpy1.24.0 decorator sympy cffi pyyaml pathlib2 psutil protobuf…...

算法刷题记录——LeetCode篇(3.10) [第291~300题](持续更新)

更新时间:2025-04-02 算法题解目录汇总:算法刷题记录——题解目录汇总技术博客总目录:计算机技术系列博客——目录页 优先整理热门100及面试150,不定期持续更新,欢迎关注! 295. 数据流的中位数 中位数是…...

conda 激活环境vscode的Bash窗口

多份conda环境注意事项,当时安装了两个conda环境,miniconda和conda,导致环境总是冲突矛盾。初始化时需要更加注意。 $ C:/Users/a_hal/miniconda3/Scripts/conda.exe init bash能够显示用哪里的conda环境命令执行。 然后直接conda activate…...

网线和跳线

文章目录 一、网线二、跳线三、区别对比一句话总结 一、网线 网线(网路线): 它是一种用来连接网络设备的线,比如: 把 电脑连到交换机把 路由器连到光猫把 交换机和交换机连接起来 它的本质是:传输网络信…...

火山 RTC 引擎 2 ----APPKEY

前篇文章:火山RTC引擎 --一次失望的体验 那个DEMO可以编译运行了,但是功能不能用, 一用就崩溃。 主要原因还是没有APPKEY 一、火山引擎 APPKEY 管理 1、登录后台 账号登录-火山引擎欢迎登录火山引擎,火山引擎是字节跳动旗下的云…...

Linux中进程与计划任务

目录 一.进程 1.进程相关概念 2.进程的特征 3.进程相关的命令 3.1 ps命令 3.2 top命令 3.3 pgrep命令 3.4 pstree命令进程树 3.5 kill命令 二.计划任务 1.一次性任务 2.周期性任务crontab 三.本章涉及面试题 1.运维需要关注服务器的系统性能及如何查看 一.进程 1…...

Springboot学习笔记3.28

目录 实战第六课:文章分类开发 新增文章分类: 具体实现: 查询文章分类: 具体实现: 获取文章分类的详情 更新文章分类: 注意点: ​编辑 对校验规则进行分组: 学习时的疑惑…...

【CSS3】05-定位 + 修饰属性

本文介绍定位和CSS中的修饰属性。 目录 1. 定位 1.1 相对定位 1.2 绝对定位 1.3 定位居中 1.4 固定定位 1.5 z-index堆叠层级 2. 修饰属性 2.1 垂直对齐方式 vertical-align 2.2 过渡属性 2.3 透明度 opacity 2.4 光标类型 cursor 1. 定位 灵活改变盒子在网页中的位…...

C 语言测验

C 语言测验 引言 C 语言作为一种历史悠久且广泛使用的编程语言,自1972年由Dennis Ritchie在贝尔实验室发明以来,一直是计算机科学领域的基石。C 语言以其高效、灵活、可移植的特点,在操作系统、嵌入式系统、游戏开发等多个领域占据着重要地位。为了帮助读者深入了解C语言,…...

如何屏蔽mac电脑更新提醒,禁止系统更新

最烦mac的系统更新提醒了,过几天就是更新弹窗提醒,现在可以直接禁掉了,眼不见心不乱,不然一升级,开发环境全都不能用了,那才是最可怕的,屏蔽的方法也很简单,就是屏蔽mac系统更新的请…...

tcp的粘包拆包问题,如何解决?

TCP的粘包和拆包问题是由于TCP协议面向流的特性导致数据边界不明确,解决方案需在应用层明确数据包边界。以下是具体解决方法: 1. 固定长度消息(Fixed-Length Protocol) 实现方式:每个数据包长度固定,不足…...

Rclone同步Linux数据到google云盘

文章目录 Rclone管理云存储Rclone安装和使用说明安装rclone配置rclone连接到云盘基本备份命令高级备份选项自动化备份加密备份(可选)恢复数据常见云存储服务名称注意事项 googleCloud 平台中操作OAuth权限请求页面(OAuth同意屏幕)…...

AI人工智能-Jupyter NotbookPycharm:Py开发

安装 命令: pip install jupyter 启动 命令: jupyter notebook 启动成功后,下面网址会默认自动打开当前用户的根目录。 其实这个页面显示的内容,是我们电脑目录C:\Users\当前用户\下的文件夹 我们平常做实验,希望在…...

DDR简介

一、什么是DDR? DDR SDRAM(Double Data Rate Synchronous DYNAMIC RAM)中文名是:双倍数据速率同步动态随机存储器。 传统的SDRAM只在时钟信号的上升沿传输数据,而DDR可以同时在时钟的上升沿和下降沿传输数据&#xf…...

Kubernetes 入门篇之 Node 安装与部署

上篇记录了Master节点的安装与部署,本篇记录一下node的安装与部署。 1. 基础环境配置 关闭防火墙与交换分区(swap),关闭selinux,配置yum源参考上篇;启用 IPv4 数据包转发 和 iptables 网络过滤参考上篇&a…...

企业数据治理实践:“七剑” 合璧,释放数据价值

在数字化转型的浪潮中,数据已成为企业的核心资产,其治理水平直接关乎企业的竞争力和可持续发展能力。数据模型治理、元数据治理、数据质量治理、数据标准治理、主数据治理、数据安全治理以及数据服务平台治理,共同构成了企业数据治理的关键体…...

VRRP(虚拟路由器冗余协议)、虚拟路由器、master路由器、backup路由器

VRRP(虚拟路由器冗余协议) 1、介绍 虚拟路由冗余协议 VRRP (Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时,VRRP机制能够选举…...

基本元素定位(findElement方法)

通过ID定位:使用元素的ID属性进行定位,是最简单和最常用的方法,因为ID在页面上是唯一的。 //定位百度的搜索框元素,并且输入数据(ID定位)-唯一 chromeDriver.findElement(By.id("kw")).sendKeys("腾讯课堂")…...

多模态RAG实践:如何高效对齐不同模态的Embedding空间?

目录 多模态RAG实践:如何高效对齐不同模态的Embedding空间? 一、为什么需要对齐Embedding空间? 二、常见的对齐方法与关键技术点 (一)对比学习(Contrastive Learning) (二&#…...