计组之存储系统:4、双口RAM和多模块存储器(存取周期、双端口RAM、多体并行存储器、存储体)

本文探讨了如何解决多核CPU访问主存及CPU与主存速度不匹配的问题。通过介绍双端口RAM和多模块存储器,尤其是低位交叉编址的方式,阐述了如何优化存取周期。提出当存储体数量为存取周期与恢复时间比例的整数时,性能将达到最优。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思维导图

在这里插入图片描述

存取周期

在这里插入图片描述

1、存取周期 = 存取时间 + 恢复时间
2、DRAM芯片的恢复时间可能是存取时间的几倍
3、在恢复时间期间,CPU不可以访问主存
4、俩个问题:
问题一:多核CPU都要访存,怎么办?
问题二:CPU的读写速度比主存快很多,主存恢复时间太长怎么办?

双端口RAM(解决问题1)

在这里插入图片描述

多体并行存储器(解决问题二)

在这里插入图片描述

1、连续访问:在实际运用中,大多数地址访问方式是连续的
2、当采用高位交叉编址,且地址连续访问时,由于连续访问中是访问同一个存储体,而同一个存储体由于恢复时间的原因又不能连续访问;所以这种方式并不会提高访问主存的效率,只是扩容的作用;如图所示,访问5个存储单一要5T的时间
3、当采用低位交叉编址,且地址连续访问时,由于连续访问中是访问不同的存储体,所以在访问第一个存储体后可以不用等待恢复时间直接访问第二个存储体,所以访问主存的效率大大提高。如图所示,连续取n个存储字耗时T+(n-1)r(流水线)。

取几个存储体合适呢?

在这里插入图片描述

1、取T = 4r,当存储体取3个时(m<T/r),当3块存储体访问一遍后本应该接着访问一号存储体,但是由于一号存储体需要3r的恢复时间;所以在第三块存储体访问完成后需要等待一段时间(第一块剩余的恢复时间),然后才能继续访问一号存储体。
2、T = 4r,当存储体取5个时(m>T/r),当访问完成4号存储体后,1号存储体已经过了恢复时间,但是你要接着访问5号存储体,所以,一号存储体就会被闲置一段时间。
3、最优:T = 4r,当存储体取4个时(m=T/r),性能最优

单体多字存储器

在这里插入图片描述

<think>嗯,用户这次的问题聚焦在"并行存储器"上,结合之前讨论的存储体基础概念,显然是想深入理解并行存储技术。用户引用了5篇资料,其中[1][2][4]直接相关,需要重点参考。 用户可能正在学习计算机系结构,尤其是存储系统优化部分。从ta引用资料的学术性来看,应该是本科生或研究生水平。ta特别强调要结合之前的问答,说明需要知识连贯性——上次详细解释了存储体的物理结构,这次自然要延伸到并行架构。 关键是要厘清三个层次:定义(什么是并行)、结构(如何物理实现)、原理(怎样提升性能)。引用[1]的并行存储器定义是核心基础,[2]的SRAM示例[4]的缓存分技术则提供了具实现案例。有趣的是[3]提到的编址方式其实隐含了并行访问的地址映射逻辑。 需要警惕引用[5]的堆内存管理是干扰项,虽然涉及存储但属于软件层面。重点应该放在硬件层面的并行机制上,特别是: - 如何通过存储体实现并发访问(引用[1]) - 地址映射的数学关系(交叉编址) - 结构差异:高位交叉vs低位交叉(引用[4]暗示了这点) - 性能收益的量化分析(带宽提升公式) 用户可能没意识到但值得补充的点:现代GPU的显存架构就是并行的极端案例(如HBM2技术),以及这种设计对功耗的影响。不过当前回答还是聚焦基础原理更稳妥。 最后生成的问题要引导ta思考实际应用(如解决内存墙问题)设计权衡(成本/复杂度),这比纯理论探讨更有价值。</think>### 并行存储器的定义、结构与工作原理 #### **1. 定义** **并行存储器**(Multi-Bank Parallel Memory)是一种通过物理划分个独立存储体(Memory Bank),实现**并行数据访问**的存储架构。核心目标是通过**并行操作**提升存储带宽效率,关键技术包括: - **交叉编址**:将连续地址映射到不同存储体 - **独立控制电路**:每个存储体拥有专属地址译码/读写电路[^1][^2] - **并发访问能力**:支持同时访问存储体(如CPU同时读取指令数据) > **关键指标**:存储带宽提升倍数 ≈ 存储体数量(理想情况下)[^1] --- #### **2. 物理结构** 并行存储器的典型结构如下: ```mermaid graph LR A[CPU] --> B[存储控制器] B --> C[存储体0] B --> D[存储体1] B --> E[存储体2] B --> F[存储体3] C --> G[独立地址译码器] D --> H[独立数据通道] ``` | 组件 | 功能说明 | |------------------|--------------------------------------------------------------------------| | **存储体阵列** | 4/8/16个独立存储体,每个存储体含完整存储单元阵列(如64K×16位)[^2] | | **交叉编址逻辑** | 将连续地址按模N(N=存储体数)映射到不同存储体(例如:地址0→Bank0,地址1→Bank1) | | **独立数据通道** | 每个存储体直连独立数据总线,支持并发传输[^1] | | **仲裁控制器** | 协调存储体的访问冲突(如个请求访问同一Bank时排队)[^4] | --- #### **3. 工作原理** ##### **3.1 地址映射机制** - **低位交叉编址**(常用):地址低位决定存储体编号 $$ \text{Bank ID} = \text{Address} \mod N $$ *示例*:4存储体系统(N=4) - 地址0(二进制`00`)→ Bank0 - 地址1(二进制`01`)→ Bank1 - 地址2(二进制`10`)→ Bank2 - 地址3(二进制`11`)→ Bank3[^1][^3] - **高位交叉编址**:地址高位决定存储体编号(适用于大块连续数据) ##### **3.2 并行访问流程** 1. **请求分发**: CPU发送地址序列(如Addr0, Addr1, Addr2, Addr3)至存储控制器 2. **并行操作**: - Addr0 → Bank0 启动读取 - Addr1 → Bank1 启动读取 - *各存储体独立工作,无相互等待* 3. **数据返回**: 4存储体通过独立数据总线同时返回结果[^1][^4] ##### **3.3 冲突处理** 当个请求访问**同一存储体**时: ```python if request_bank == busy_bank: queue_request() # 请求进入等待队列 else: execute_parallel() # 立即执行 ``` *冲突会导致性能下降,设计时需优化数据分布*[^4] --- #### **4. 性能优势分析** | 场景 | 传统单存储体 | 并行(N=4) | |---------------------|---------------------|----------------------| | 读取4个连续地址 | 4个周期(串行) | **1个周期**(并行) | | 随机访问4个不同Bank | 4个周期(串行) | **1个周期**(并行) | | 访问4个同Bank地址 | 4个周期 | **4个周期**(冲突) | > **理论带宽增益**: > $$ \text{带宽提升} = \frac{\text{单存储体带宽} \times N}{\text{冲突概率} + 1} $$ > 冲突概率取决于访问模式(理想随机访问时冲突概率≈1/N)[^1][^4] --- #### **5. 应用实例** 1. **CPU缓存**:L1/L2缓存划分为存储体,支持流水线发射(如同时取指令+读数据)[^4] 2. **GPU显存**:HBM显存采用1024存储体,实现TB/s级带宽 3. **高性能内存**:DDR5 DIMM包含2个独立通道,每个通道管理个Bank Group > *关键价值*:**突破"内存墙"限制**,解决CPU计算速度与内存访问速度不匹配问题[^1][^2] --- ### 相关问题 1. **并行存储器的地址映射策略如何影响程序性能?** (对比低位交叉编址与高位交叉编址的适用场景) 2. **存储体冲突(Bank Conflict)在GPU编程中如何优化?** (分析矩阵转置等场景的数据布局策略) 3. **并行架构在DRAM与SRAM中的实现差异是什么?** (比较DRAM Bank的刷新机制与SRAM Bank的延迟特性) 4. **如何通过存储体数量设计平衡系统成本与带宽?** (讨论存储体数量与地址总线复杂度的关系) [^1]: 并行存储器的定义与实现方式 [^2]: SRAM芯片的存储体结构示例 [^3]: 存储单元编址与单位化原理 [^4]: 缓存分技术提升并行访问能力
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值