首页 理论教育 VIVADO环境下存储器控制器模块应用研究

VIVADO环境下存储器控制器模块应用研究

时间:2023-10-26 理论教育 版权反馈
【摘要】:在IP核的默认配置中,MC模块位于UI模块和PHY模块之间,如图5.5所示。图5.5存储器控制器模块结构MC是存储器接口的主要逻辑模块。行命令和列命令相互独立,但必须遵守DRAM的时序要求;列命令可被重新排序以获得更好的存储器接口吞吐量。这些Bank Machine记录其绑定的相应DRAM Bank或Rank状态。当DRAM完成刷新并准备好接收新的激活请求时,这些等待的请求同时发出仲裁请求。

VIVADO环境下存储器控制器模块应用研究

在IP核的默认配置中,MC(Memory Controler,存储器控制器)模块位于UI模块和PHY模块之间,如图5.5所示。

图5.5 存储器控制器模块结构

MC是存储器接口的主要逻辑模块。MC模块从UI接收请求并将其存储在逻辑队列中,请求可以进行重排序,进而优化系统吞吐量和延迟。

MC模块主要由4个部分组成:

(1)可配置数量的Bank Machine。

(2)可配置数量的Rank Machine。

(3)Column Machine。

(4)Arbiter。

1.Bank Machine

Bank Machine包含了MC模块中的大部分逻辑,它与DRAM的Bank相对应。一个给定的Bank Machine在任何时刻仅管理一个DRAM Bank。由于Bank Machine是动态分配的,所以无须为每一个物理的Bank分配一个 Bank Machine,即Bank Machine的数目可根据面积和性能折中而定。因此,当一个请求被接受时,MC模块为该请求分配一个Bank Machine;当请求完成后,MC模块释放该Bank Machine,使其能被其他请求再次分配使用。

Bank Machine必须通过产生行命令和列命令来完成当前请求。行命令和列命令相互独立,但必须遵守DRAM的时序要求;列命令可被重新排序以获得更好的存储器接口吞吐量。排序算法需要确保数据顺序的正确性。

2.Rank Machines(www.xing528.com)

Rank Machine与DRAM Rank相对应,被静态地分配给物理上的DRAM Rank。Rank Machines监测Bank Machines 的活动,并且记录Rank 或特定器件的时序参数。例如,Rank Machine监测一个时间窗口内发送至Rank的有效命令数目。当允许数目的命令被发送后,RankMachine会产生抑制信号,阻止BankMachine继续发送有效命令至Rank,直到时间窗口已经移动至可允许更多的命令。

3.Column Machine

Column Machine 会产生必要的时序信息来管理DQ数据总线。尽管可能会有多个DRAM Rank,但只有一组DQ数据总线,因此DRAM Rank中的所有列被看成一个单元进行管理。Column Machine监督Bank Machine发送的命令,并且产生Bank Machine的抑制信号使得DQ数据总线被按序使用。

4.仲裁模块

仲裁模块接收从Bank Machine发送到DRAM阵列的请求命令,并对行命令和列命令分别进行仲裁。对于每一个命令,仲裁模块选择一个行命令和一个列命令转发至物理层。仲裁模块使用轮询协议(Round Robin)以确保发送进程。

5.重排序

对DRAM的访问由行命令和列命令两个准独立的部分组成。每个请求占用一个逻辑队列入口,每一个队列入口有一个相应的Bank Machine。这些Bank Machine记录其绑定的相应DRAM Bank或Rank状态。

若有必要,Bank Machine会试图激活当前请求操作的Bank、Rank或Row。在这个过程中,Bank Machine 根据当前的DRAM状态判断时序参数是否得到满足。最终,当所有的时序参数得到满足时,Bank Machine进行仲裁并发起触发。仲裁以简单的轮询(Round-Robin)模式进行。由于可能会同时有多个Bank Machine请求发送Row命令(激活和预充电命令),所以仲裁具有十分重要的作用。

在众多的请求操作中,并不是所有的请求都需要激活操作,如果一个先前的请求已经激活了相同的Rank、Bank或Row,那么随后的请求可能会继承BankMachine的状态,避免重复进行预充电和激活。

当Rank、Bank或Row已经激活且RAS和CAS时延要求得到满足时,Bank Machine会试图发出CAS-READ或CAS-WRITE命令。不同于Row命令,所有的请求会发送一个CAS命令。在仲裁发送CAS命令之前,Bank Machine必须查看DRAM的状态、DQ数据总线的状态、优先级及次序。最终,当所有的这些参数满足其适合的状态时,Bank Machine仲裁发送CAS命令。与Row命令的操作相似,轮询仲裁使用优先级策略并选择下一个Column命令。

轮询仲裁本身是重排序的根源。例如,一个空闲的MC模块在刷新的同时接收了一批新的请求,这些请求进入队列排队等待刷新的完成。当DRAM完成刷新并准备好接收新的激活请求时,这些等待的请求同时发出仲裁请求。仲裁仅根据轮询的策略选择发送下一个激活,与请求的顺序无关,列命令也有相同的行为策略。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈