CN117546135A - 具有混合dram/持久性存储器通道仲裁的存储器控制器 - Google Patents
具有混合dram/持久性存储器通道仲裁的存储器控制器 Download PDFInfo
- Publication number
- CN117546135A CN117546135A CN202280044630.1A CN202280044630A CN117546135A CN 117546135 A CN117546135 A CN 117546135A CN 202280044630 A CN202280044630 A CN 202280044630A CN 117546135 A CN117546135 A CN 117546135A
- Authority
- CN
- China
- Prior art keywords
- arbiter
- memory
- command
- sub
- commands
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 349
- 230000002085 persistent effect Effects 0.000 title claims abstract description 75
- 238000000034 method Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 15
- 230000009977 dual effect Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 5
- 229940125364 angiotensin receptor blocker Drugs 0.000 description 72
- 239000004744 fabric Substances 0.000 description 15
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000007726 management method Methods 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 7
- 239000002333 angiotensin II receptor antagonist Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 5
- 238000012797 qualification Methods 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Dram (AREA)
Abstract
本发明公开了一种存储器控制器,包括:命令队列,该命令队列具有用于接收针对存储器通道的存储器访问命令的输入端,以及用于保存预定数量的存储器访问命令的多个条目;和仲裁器,该仲裁器从该命令队列中选择存储器命令以用于分派到耦接到该存储器通道的持久性存储器和DRAM存储器中的一者。该仲裁器包括:第一层子仲裁器电路,该第一层子仲裁器电路耦接到该命令队列以用于从DRAM命令和持久性存储器命令中选择候选命令;和第二层子仲裁器电路,该第二层子仲裁器电路耦接到该第一层子仲裁器电路以用于接收该候选命令并且从该候选命令中选择至少一个命令。
Description
背景技术
计算机***通常使用廉价和高密度的动态随机存取存储器(DRAM)芯片作为主存储器。现今销售的大多数DRAM芯片与由联合电子设备工程委员会(JEDEC)发布的各种双倍数据速率(DDR)DRAM标准兼容。DDR存储器控制器用于根据公布的DDR标准管理各种存储器访问代理和DDR DRAM之间的接口。
具有持久性存储的非易失性双列直插存储器模块(“NVDIMM-P”)是存储类存储器,其可代替标准DDR DIMM使用,但除了用于更快地访问频繁请求的数据的易失性存储器之外还包括持久性存储器。然而,这些存储器具有非确定性访问时延并且可具有可能暂时延迟对非易失性存储器的访问的板上媒体管理活动,并且因此这些存储器需要握手协议来向主机控制器通知来自NVDIMM-P的数据的可用性。JEDEC正在开发事务协议以减轻这种非确定性的性能影响,提供启用无序事务的能力并且堆叠命令。
附图说明
图1以框图形式示出了现有技术中已知的加速处理单元(APU)和存储器***;
图2以框图形式示出了根据一些实施方案的适合于在类似图1的APU的APU中使用的存储器控制器;
图3以框图形式示出了根据一些实施方案的一对存储器通道和APU;
图4以框图形式示出了根据一些实施方案的适合于在图2的存储器控制器中使用的存储器控制器的一部分;
图5以框图形式示出了根据附加实施方案的适合于在图2的存储器控制器200中使用的存储器控制器的一部分;并且
图6以图示形式示出了根据一些实施方案的处理存储器访问命令的过程。
在以下描述中,在不同的附图中使用相同的附图标号指示类似或相同的项。除非另有说明,否则字词“耦接”及其相关联的动词形式包括直接连接和通过本领域已知的方式的间接电连接两者,并且除非另有说明,否则对直接连接的任何描述也意味着使用合适形式的间接电连接的另选实施方案。
具体实施方式
存储器控制器包括命令队列,该命令队列具有用于接收针对存储器通道的存储器访问命令的输入端,以及用于保存预定数量的存储器访问命令的多个条目。仲裁器从该命令队列中选择存储器命令以用于分派到连接到该存储器通道的持久性存储器和DRAM存储器中的一者。该仲裁器包括:第一层子仲裁器电路,该第一层子仲裁器电路连接到该命令队列以用于从DRAM命令和持久性存储器命令中选择候选命令;和第二层子仲裁器电路,该第二层子仲裁器电路连接到该第一层子仲裁器电路以用于接收该候选命令并且从该候选命令中选择至少一个命令。
一种方法包括接收包括DRAM命令和持久性存储器命令的多个存储器访问请求。将该存储器访问命令放置在命令队列中以等待分派到DRAM存储器和持久性存储器。从该命令队列中选择多个候选命令,其中该候选命令中的至少两者选自该DRAM命令和该持久性存储器命令。从该候选命令中选择至少一个命令以用于在该存储器通道上从该第二层发送。
数据处理***包括存储器通道,该存储器通道连接到DRAM存储器和持久性存储器。存储器控制器连接到该存储器通道并且包括命令队列和仲裁器。该命令队列具有用于接收针对存储器通道的存储器访问命令的输入端,以及用于保存预定数量的存储器访问命令的多个条目。该仲裁器从该命令队列中选择存储器命令以用于传输到该持久性存储器和该DRAM存储器中的一者。该仲裁器包括:第一层子仲裁器电路,该第一层子仲裁器电路连接到该命令队列以用于从DRAM命令和持久性存储器命令中选择候选命令;和第二层子仲裁器电路,该第二层子仲裁器电路连接到该第一层子仲裁器电路以用于接收该候选命令并且从该候选命令中选择至少一个命令。
图1以框图形式示出了现有技术中已知的加速处理单元(APU)100和存储器***130。APU 100是适合于用作主机数据处理***中的处理器的集成电路,并且通常包括中央处理单元(CPU)核心复合体110、图形核心120、一组显示引擎122、存储器管理集线器140、数据织构125、一组***控制器160、一组***总线控制器170和***管理单元(SMU)180。
CPU核心复合体110包括CPU核心112和CPU核心114。在该示例中,CPU核心复合体110包括两个CPU核心,但是在其他实施方案中,CPU核心复合体110可包括任意数量的CPU核心。CPU核心112和114中的每个核心双向连接至***管理网络(SMN)(该SMN形成控制织构)和数据织构125,并且能够将存储器访问请求提供到数据织构125。CPU核心112和114中的每个核心可以是一体式核心,或者还可以是具有共享某些资源诸如高速缓存的两个或更多个一体式核心的核心复合体。
图形核心120是高性能图形处理单元(GPU),该GPU能够以高度集成和并行方式执行图形操作诸如顶点处理、片段处理、着色、纹理混合等。图形核心120双向连接至SMN和数据织构125,并且能够将存储器访问请求提供到数据织构125。就此而言,APU 100可支持其中CPU核心复合体110和图形核心120共享相同存储空间的统一存储器架构,或其中CPU核心复合体110和图形核心120共享存储空间的一部分、同时图形核心120还使用CPU核心复合体110不能访问的私有图形存储器的存储器架构。
显示引擎122渲染并光栅化由图形核心120生成的对象以用于在监测器上显示。图形核心120和显示引擎122双向连接到公共存储器管理集线器140以用于统一转换为存储器***130中的适当地址,并且存储器管理集线器140双向连接到数据织构125以用于生成此类存储器访问并且接收从存储器***返回的读取数据。
数据织构125包括用于在任何存储器访问代理和存储器管理集线器140之间路由存储器访问请求和存储器响应的横杆开关。数据织构还包括由基本输入/输出***(BIOS)定义的、用于基于***配置确定存储器访问的目的地的***存储器映射,以及用于每个虚拟连接的缓冲器。
***控制器160包括通用串行总线(USB)控制器162和串行高级技术附件(SATA)接口控制器164,它们中的每一者双向连接至***集线器166和SMN总线。这两个控制器仅仅是可用于APU 100的***控制器的示例。
***总线控制器170包括***控制器或“南桥”(SB)172以及***部件互连高速(PCIe)控制器174,它们中的每一者双向连接至输入/输出(I/O)集线器176和SMN总线。I/O集线器176也双向连接至***集线器166和数据织构125。因此,例如,CPU核心可通过数据织构125通过I/O集线器176路由的访问对USB控制器162、SATA接口控制器164、SB 172或PCIe控制器174中的寄存器进行编程。APU 100的软件和固件存储在***数据驱动器或***BIOS存储器(未示出)中,***数据驱动器或***BIOS存储器可以是多种非易失性存储器类型中的任一种,诸如只读存储器(ROM)、闪存电可擦除可编程ROM(EEPROM)等。通常,BIOS存储器通过PCIe总线访问,并且***数据驱动器通过SATA接口。
SMU 180是控制APU 100上的资源的操作并使这些资源之间的通信同步的本地控制器。SMU 180管理APU 100上的各种处理器的上电定序,并且经由复位、启用和其他信号控制多个芯片外设备。SMU 180包括一个或多个时钟源(未示出),诸如锁相环路(PLL),以为APU 100的每个部件提供时钟信号。SMU 180还管理各种处理器和其它功能块的功率,并且可从CPU核心112和114以及图形核心120接收测量功率消耗值以确定适当的功率状态。
在该实施方案中,存储器管理集线器140及其相关联的物理接口(PHY)151和152与APU 100集成。存储器管理集线器140包括存储器通道141和142以及功率引擎149。存储器通道141包括主机接口145、存储器通道控制器143和物理接口147。主机接口145通过串行存在检测链路(SDP)将存储器通道控制器143双向连接至数据织构125。物理接口147将存储器通道控制器143双向连接至PHY 151,并且符合DDR PHY接口(DFI)规范。存储器通道142包括主机接口146、存储器通道控制器144和物理接口148。主机接口146通过另一SDP将存储器通道控制器144双向连接至数据织构125。物理接口148将存储器通道控制器144双向连接至PHY152,并且符合DFI规范。功率引擎149通过SMN总线双向连接到SMU 180,通过APB连接到PHY151和PHY 152,并且还双向连接到存储器通道控制器143和144。PHY 151具有到存储器通道131的双向连接。PHY 152具有双向连接存储器通道133。
存储器管理集线器140是具有两个存储器通道控制器的存储器控制器的实例化,并且使用共享功率引擎149以将在下面进一步描述的方式控制存储器通道控制器143和存储器通道控制器144两者的操作。存储器通道141和142中的每个存储器通道可连接到最先进的DDR存储器(诸如DDR版本四(DDR4)、低功率DDR4(LPDDR4)、图形DDR版本五(gDDR5))和高带宽存储器(HBM),并且可适于未来存储器技术。这些存储器提供高总线带宽和高速操作。同时,它们还提供低功率模式以节省用于电池供电应用诸如膝上型计算机的功率,并且还提供内置热监控。
存储器***130包括存储器通道131和存储器通道133。存储器通道131包括连接至DDRx总线132的一组双列直插存储器模块(DIMM),包括代表性的DIMM 134、136和138,它们在该示例中对应于单独的存储列。同样,存储器通道133包括连接至DDRx总线129的一组DIMM,包括代表性的DIMM 135、137和139。
APU 100作为主机数据处理***的中央处理单元(CPU)操作并且提供在现代计算机***可用的各种总线和接口。这些接口包括两个双数据速率(DDRx)存储器通道、用于连接至PCIe链路的PCIe根复合体、用于连接至USB网络的USB控制器以及到SATA大容量存储设备的接口。
APU 100还实现各种***监控和功率节省功能。具体地,一个***监测功能是热监测。例如,如果APU 100变热,则SMU 180可降低CPU核心112和114和/或图形核心120的频率和电压。如果APU 100变得过热,则可将其完全关断。SMU 180还可经由SMN总线从外部传感器接收热事件,并且作为响应,SMU 180可降低时钟频率和/或电源电压。
图2以框图形式示出了适合于在类似于图1的APU的APU中使用的存储器控制器200。存储器控制器200通常包括存储器通道控制器210和功率控制器250。存储器通道控制器210通常包括接口212、存储器接口队列214、命令队列220、地址生成器222、内容可寻址存储器(CAM)224、包括重放队列230的重放控制逻辑231、刷新逻辑部件块232、定时块234、页表236、仲裁器238、纠错码(ECC)检查电路242、ECC生成块244、数据缓冲器246、非易失性(NV)缓冲器247和NV队列248。
接口212具有通过外部总线到数据织构125的第一双向连接,并且具有输出端。在存储器控制器200中,该外部总线与由ARM Holdings,PLC of Cambridge,England规定的高级可扩展接口版本四(称为AXI4)兼容,但在其他实施方案中可以是其他类型的接口。接口212将存储器访问请求从称为FCLK(或MEMCLK)域的第一时钟域转换到存储器控制器200内部的称为UCLK域的第二时钟域。类似地,存储器接口队列214提供从UCLK域到与DFI接口相关联的DFICLK域的存储器访问。
地址生成器222解码通过AXI4总线从数据织构125接收的存储器访问请求的地址。存储器访问请求包括物理地址空间中以归一化格式表示的访问地址。地址生成器222将归一化地址转换成可用于对存储器***130中的实际存储器设备进行寻址以及高效地调度相关访问的格式。该格式包括将存储器访问请求与特定存储列、行地址、列地址、存储体地址和存储体组相关联的区域标识。在启动时,***BIOS查询存储器***130中的存储器设备以确定它们的大小和配置,并且对与地址生成器222相关联的一组配置寄存器进行编程。地址生成器222使用存储在配置寄存器中的配置来将归一化地址转换成适当格式。地址生成器222对包括NVDIMM-P存储器在内的存储器的地址范围进行解码,并且将指示存储器访问请求是否是对NVDIMM-P的请求的经解码信号存储在命令队列220中。然后,仲裁器238可相对于其他请求以适当优先级来优先化NVDIMM-P请求。命令队列220是从APU 100中的存储器访问代理诸如CPU核心112和114以及图形核心120接收的存储器访问请求的队列。命令队列220存储由地址生成器222解码的地址字段以及允许仲裁器238高效地选择存储器访问的其他地址信息,包括访问类型和服务质量(QoS)标识。CAM 224包括实施排序规则诸如写后写(WAW)以及写后读(RAW)排序规则的信息。
纠错码(ECC)生成块244确定要发送到NVDIMM-P的写入数据的ECC。ECC检查电路242对照输入ECC检查所接收的ECC。
重放队列230是用于存储由仲裁器238选取的所选择的存储器访问的临时队列,所选择的存储器访问正在等待响应,诸如地址和命令奇偶校验响应。重放控制逻辑231访问ECC检查电路242以确定所返回的ECC是正确的还是指示错误。重放控制逻辑231发起并控制重放序列,在该重放序列中,在这些周期中的一个周期出现奇偶校验错误或ECC错误的情况下重放访问。所重放的命令放置在存储器接口队列214中。
刷新逻辑部件232包括用于各种下电、刷新和终端电阻(ZQ)校准循环的状态机,这些校准循环与从存储器访问代理接收的正常读取和写入存储器访问请求分开生成。例如,如果存储器存储列处于预充电下电,则必须周期性地唤醒该存储器存储列以运行刷新循环。刷新逻辑部件232周期性地生成刷新命令以防止由于电荷从DRAM芯片中的存储器单元的存储电容器泄漏而引起的数据错误。此外,刷新逻辑部件232周期性地校准ZQ以防止由于***的热变化而导致的片上终端电阻的失配。
仲裁器238双向连接到命令队列220并且是存储器通道控制器210的核心。该仲裁器通过智能调度访问来提高效率以提高存储器总线的使用率。仲裁器238使用定时块234通过基于DRAM定时参数确定命令队列220中的某些访问是否有资格发布来实施正确的定时关系。例如,每个DRAM在激活命令之间具有最小规定时间,称为“tRC”。定时块234维持一组计数器,该组计数器基于该定时参数和JEDEC规范中规定的其他定时参数来确定合格性,并且该定时块双向连接至重放队列230。页表236维持关于仲裁器238的存储器通道的每个存储体和存储列中的活动页面的状态信息,并且双向连接至重放队列230。
NV缓冲器247将NV读取命令存储在NV队列248中,既用于重放序列,又用于管理NV读取响应。NV缓冲器247双向连接到存储器接口队列214以用于处理RD_RDY和SEND命令,并且连接到仲裁器238以用于在一个或多个SEND命令可用时提供SEND命令作为输入,如下面进一步描述的。
响应于从接口212接收到写入存储器访问请求,ECC生成块244根据写入数据计算ECC。数据缓冲器246存储用于所接收的存储器访问请求的写入数据和ECC。当仲裁器238选取对应写入访问以用于调度到存储器通道时,数据缓冲器将组合写入数据/ECC输出到存储器接口队列214。
功率控制器250通常包括到高级可扩展接口版本一(AXI)的接口252、高级***总线(APB)接口254和功率引擎260。接口252具有到SMN的第一双向连接,该第一双向连接包括用于接收图2中单独示出的标记为“EVENT_n”的事件信号的输入端,以及输出端。APB接口254具有连接到接口252的输出端的输入端,以及用于通过APB连接到PHY的输出端。功率引擎260具有连接到接口252的输出端的输入端,以及连接到存储器接口队列214的输入端的输出端。功率引擎260包括一组配置寄存器262、微控制器(μC)264、自刷新控制器(SLFREF/PE)266和可靠读/写定时引擎(RRW/TE)268。配置寄存器262通过AXI总线编程,并且存储配置信息以控制存储器控制器200中各种块的操作。因此,配置寄存器262具有连接到这些块的输出端,这些块在图2中未详细示出。自刷新控制器266是除了由刷新逻辑部件232自动生成刷新之外还允许手动生成刷新的引擎。可靠读/写定时引擎268向存储器或I/O设备提供连续存储器访问流,用于诸如DDR接口最大读取时延(MRL)训练和回送测试等目的。
存储器通道控制器210包括允许其选取存储器访问以用于调度到相关联的存储器通道的电路***。为了做出期望的仲裁决定,地址生成器222将地址信息解码成预解码信息,预解码信息包括存储器***中的存储列、行地址、列地址、存储体地址和存储体组,并且命令队列220存储预解码信息。配置寄存器262存储配置信息以确定地址生成器222解码所接收的地址信息的方式。仲裁器238使用所解码的地址信息、由定时块234指示的定时资格信息以及由页表236指示的活动页面信息来高效地调度存储器访问,同时遵守诸如服务质量(QoS)要求等其他标准。例如,仲裁器238实现对访问打开页面的优先,以避免改变存储器页面所需的预充电和激活命令的开销,并且通过将对一个存储体的开销访问与对另一个存储体的读和写访问交错来隐藏对一个存储体的开销访问。特别是在正常操作期间,仲裁器238通常保持页面在不同的存储体中打开,直到需要对这些页面进行预充电,然后选择不同的页面。
图3以框图形式示出了根据一些实施方案的数据处理***300。数据处理***300包括存储器***330和APU 310。APU 310包括类似于存储器控制器200(图2)的存储器控制器,其支持用于与存储器***330接口连接的异类存储器通道。除了正常DDRx存储器通道之外,APU 310还支持具有正常寄存的DIMM或RDIMM 334和336以及NVDIMM-P 338的异类存储器通道332上的NVDIMM-P 338(除了仅具有通过总线342连接的RDIMM 344、346和348的同类存储器通道340之外)。虽然在该实施方案中异类存储器通道332连接到NVDIMM-P和RDIMM两者,但在一些实施方案中异类存储器通道具有与所有NVDIMM-P类型DIMM接口连接的能力。APU 310上的存储器控制器和NVDIMM-P 338之间的事务由链路ECC保护。链路ECC确保了存储器控制器和NVDIMM之间的通过存储器通道332的数据传输的数据完整性。
虽然在该实施方案中描述了NVDIMM-P类型DIMM,但其他实施方案采用本文中的技术以通过异类存储器通道与其他类型的存储类存储器(SCM)模块接口连接。如本文所使用,SCM指示具有可在***存储器空间中寻址的非易失性存储器的存储器模块。SCM模块中的非易失性存储器可与RAM一起被缓冲和/或与SCM模块上的RAM配对。从操作***(OS)的角度来看,SCM存储器地址映射与常规DRAM群体并排出现。OS通常知道SCM定义的地址范围是与常规存储器“不同”类型的存储器。这种区别是为了向OS通知该存储器可能是更潜在的并且具有持久性质量。OS可将SCM存储器映射为直接访问存储器或文件***访问存储器。直接访问意味着OS访问作为物理可寻址存储器的SCM地址范围。文件***访问意味着OS管理作为文件***的一部分的持久性存储器并且管理经由基于文件的API的对SCM的访问。最终,请求到达SCM地址范围内的存储器控制器,而与更高级的OS如何管理访问无关。
图4以框图形式示出了根据一些实施方案的适合于在图2的存储器控制器200中使用的存储器控制器的一部分400。所描绘的部分400包括命令队列220、NV队列248、仲裁器238和存储器接口队列214。如上所述,命令队列220接收针对存储器通道的存储器访问请求,并且包括用于保存预定数量的存储器访问请求(例如,64个请求)的多个条目。
仲裁器238被设置用于选择来自命令队列220和NV队列248的存储器请求以用于分派到持久性存储器诸如NVDIMM 338和DRAM存储器诸如连接到存储器通道(诸如异类存储器通道332(图3))的RDIMM 334和336中的对应一者。仲裁器238包括第一层子仲裁器电路302、第二层子仲裁器电路304和最终仲裁器306。
第一层子仲裁器电路302连接到命令队列220和NV队列248并且包括用于从DRAM命令和持久性存储器命令中选择候选命令的比较逻辑。在第一层子仲裁器电路302的输出端处呈现多个候选命令,该输出端连接到第二层子仲裁器电路304的相应输入端。在一些实施方案中,第一层子仲裁器电路302包括至少两个第一层子仲裁器,其各自从候选DRAM命令和持久性存储器命令中进行选择并且各自具有指示选定候选命令的输出端。在该实施方案中,命令队列220保存DRAM命令和最初在存储器控制器处接收的持久性存储器命令两者。保存在命令队列220中的持久性存储器命令包括诸如XREAD和XWRITE的缓冲的持久性存储器命令、诸如PWRITE的持久性存储器写入命令、以及诸如SREAD的推测性读取命令,如果期望的数据被缓冲,则这些命令将立即从非易失性存储器返回读取结果,但如果期望的数据没有被缓冲而是必须从持久性存储器读取,则这些命令将进入非易失性读取周期并且当结果可用时返回结果。对于通过存储器通道传输的某些非易失性读取命令,由于读取所请求的数据的不可预测的过程,非易失性DIMM通常在非确定性时间段之后进行响应,所请求的数据可在非易失性DIMM处的非易失性存储器中、在非易失性DIMM处的DRAM中、或者在介质控制器处的高速缓存中。在非确定性时间段期间,其他存储器访问命令通常被实现并且从存储器接口队列中移除。当非易失性DIMM处的介质控制器完成读取所请求的数据的过程时,它向存储器控制器发送就绪响应信号“RD_RDY”。
NV缓冲器247包括NV队列248和某些非易失性双列直插存储器模块(NVDIMM)控制电路以用于执行特定于NVDIMM或其他持久性存储器模块的控制功能。NV队列248将已经由NVDIMM控制电路为XREAD命令生成的XREAD命令保存在NV缓冲器247中。如果其他非易失性读取命令采用RD_RDY/SEND过程,则它们也被存储在NV队列248中从而等待实现。命令被保存从而等待来自非易失性存储器的RD_RDY信号,该RD_RDY信号指示数据已准备好被传输回存储器控制器。当接收到响应数据时,从NV队列248中移除相关联的未决非易失性读取命令。在该实施方案中,在NVDIMM过程下,单独SEND命令不与特定未决非易失性读取命令相关联,直到数据被发送为止,并且因此仅要求NV队列248跟踪未决SEND命令的数量并且将单个SEND命令呈现给第一层子仲裁器电路302。
在一些实施方案中,一个或多个单独命令队列可用于非易失性存储器命令,诸如XREAD和XWRITE命令。在此类实施方案中,单独命令队列还具有连接到第一层子仲裁器电路302的输入端的条目,其与所描绘的到命令队列220和NV队列248的连接并行。在该实施方案中,第一层子仲裁器电路302具有来自NV队列248的单个输入端,其接收未决SEND命令以供考虑作为候选。
第二层子仲裁器电路304连接到第一层子仲裁器电路302以用于接收由第一层子仲裁器电路302选择的候选命令。第二层子仲裁器电路304通常包括比较逻辑以实现一组排序规则并且从候选命令中选择至少一个命令。在该实施方案中,第二层子仲裁器电路304选择多个第二层候选命令,该多个第二层候选命令在第二层子仲裁器电路304的相应输出端处呈现给最终仲裁器306。在其他实施方案中,不使用最终仲裁器,而是第二层子仲裁器电路304进行最终命令选择。
最终仲裁器306具有连接到第二层子仲裁器电路304的多个输入端和连接到存储器接口队列214的至少一个输出端。最终仲裁器306包括用于选择至少一个命令作为最终仲裁获胜者以用于分派到存储器接口队列214的比较逻辑。最终仲裁器306还包括用于执行诸如***用于DRAM存储器的刷新命令的功能的逻辑。可包括各种其他控制电路以将输入提供到仲裁器238的子仲裁器,诸如定时块234、页表236和刷新逻辑部件232(图2)。
图5以框图形式示出了根据附加实施方案的适合于在图2的存储器控制器200中使用的存储器控制器的一部分500。部分500包括仲裁器238和与仲裁器238的操作相关联的一组控制电路560。在该实施方案中,仲裁器238是三层仲裁器,其包括一组第一层子仲裁器530、一组第二层子仲裁器540和最终仲裁器550。在该实施方案中,类似于图4的实施方案,命令队列220保存DRAM命令和持久性存储器命令两者,而NV队列(“NVQ”)564保存用于持久性存储器读取的XREAD命令,该XREAD命令等待来自持久性存储器的读取结果已就绪的信号。
第一层子仲裁器530包括读取列子仲裁器512(“READ COL ARB”)、写入列子仲裁器535(“WRITE COL ARB”)、页未命中子仲裁器532(“PM ARB”)、事务读取子仲裁器537(“XREADARB”)和页冲突子仲裁器522(“PC ARB”)。第二层子仲裁器540包括列子仲裁器542(“COLARB”)和行子仲裁器544(“ROW ARB”)。
READ COL ARB 512包括连接到命令队列220的输入端、连接到NV队列564的输入端、连接到定时块234的输入端和连接到COL ARB 542的输出端。READ COL ARB 512针对未决XREAD命令从某些可用DRAM命令和持久性存储器命令中进行选择,这些命令包括读取CAS命令、SREAD命令和SEND命令。在该实施方案中,READ COL ARB 512具有来自NV队列564的单个输入端,其接收SEND命令以供考虑作为候选。XREAD命令被保存在NV队列564中从而等待实现,而读取CAS命令和SREAD命令被保存在命令队列220中。典型地,直到接收到响应数据,SEND命令才与单独XREAD命令相关联,因此仅要求NV队列564基于未实现的RD_RDY响应来跟踪未决的SEND命令的数量。因此,在该实施方案中,READ COL ARB 512的输入宽度是命令队列220中的条目的数量加上来自NV队列564的输入。READ COL ARB 512包括数字逻辑以便在选择候选命令以作为子仲裁获胜者呈现在输出端时比较每个命令的各种定时和优先级特性,包括命令是否是页命中。
WRITE COL ARB 535包括连接到命令队列220的输入端、连接到定时块234的输入端和连接到COL ARB 542的输出端。WRITE COL ARB 535还从DRAM命令和持久性存储器命令中进行选择,这些命令包括写入CAS命令和事务写入命令(XWRITE)。在该实施方案中,WRITECOL ARB 535的输入宽度为命令队列220中的条目的数量,因为写入命令和XWRITE命令两者被保存在命令队列220中。WRITE COL ARB 535包括数字逻辑以便在选择候选命令以作为获胜者呈现在连接到COL ARB 542的输出端处时比较每个命令的各种定时和优先级特性。READ COL ARB 512和WRITE COL ARB在选择作为页命中的候选命令时一起用作页命中子仲裁器,同时还仲裁SREAD、SEND和XWRITE命令。
PM ARB 532包括连接到命令队列220的输入端、连接到定时块234的输入端和连接到ROW ARB 544的输出端。PM ARB 532的输入宽度是命令队列220中的条目的数量。PM ARB532包含用于比较页未命中命令的各种特性并且选择候选命令以作为仲裁获胜者呈现在输出端处的数字逻辑。
XREAD ARB 537包括连接到命令队列220的输入端、连接到定时块234的输入端和连接到ROW ARB 544的输出端,并且具有与PM ARB 532类似的宽度。XREAD ARB从保存在命令队列220中的XREAD命令中选择候选,并且在连接到ROW ARB 544的输出端处呈现候选作为仲裁获胜者。
PC ARB 522包括连接到命令队列220的输入端、连接到定时块234的输入端和连接到寄存器534的输出端。PC ARB 522还具有命令队列220的大小的输入宽度。PC ARB 522包括用于基于命令特性(通常为优先级和/或年龄)选择页冲突命令作为子仲裁获胜者的数字逻辑。在该实施方案中,PC ARB 522不将获胜候选呈现给第二层子仲裁器,而是将其直接馈送到寄存器534以输入到最终仲裁器550中。
子仲裁器的第二层包括COL ARB 542和ROW ARB 544。这些子仲裁器中的每一者可在其输入端处包括用于在每个时钟周期接收候选命令的寄存器,类似于寄存器514、524及534。COL ARB 542在其两个输入端处接收来自READ COL ARB 512的候选命令和来自WRITECOL ARB 535的候选命令,并且基于命令特性来选择子仲裁获胜者。获胜候选被馈送到寄存器514以输入到最终仲裁器550。类似地,ROW ARB 544在其输入端处接收来自PM ARB 532和XREAD ARB 537的候选命令,并且基于命令特性来选择子仲裁获胜者。获胜候选被馈送到寄存器524以输入到最终仲裁器550。
寄存器514具有连接到COL ARB 542的输出端的数据输入、用于接收UCLK信号的时钟输入和输出。寄存器524具有连接到ROW ARB 544的输出端的数据输入、用于接收UCLK信号的时钟输入和输出。寄存器534具有连接到PC ARB 522的输出端的数据输入、用于接收UCLK信号的时钟输入端和输出端。
最终仲裁器550具有连接到刷新控制逻辑部件232的输出端的第一输入端、来自页关闭预测器562的第二输入端、连接到输出寄存器514的输出端的第三输入端、连接到输出寄存器524的输出端的第四输入端、连接到输出寄存器534的输出端的第五输入端、用于向队列214提供标记为“CMD”的第一仲裁获胜者的第一输出端。
控制电路560包括如先前相对于图2所描述的定时块234和页表236、页关闭预测器562。定时块234具有连接到页表236的输入端,以及连接到READ COL ARB 512、WRITE COLARB 535、页未命中仲裁器532、XREAD ARB 537和PC ARB 522的输入端和输出端。页表236具有连接到命令队列220的输入端的输出端、连接到定时块234的输入端的输出端和连接到页关闭预测器562的输入端的输出端。页关闭预测器562具有连接到页表236的一个输出端的输入端、连接到输出寄存器514的输出端的输入端以及连接到最终仲裁器550的第二输入端的输出端。
READ COL ARB 512、WRITE COL ARB 535、页未命中仲裁器532、XREAD ARB 537和PC ARB 522中的每一者具有连接到定时块234的输出端以确定命令队列220中落入这些相应类别中的命令的定时资格的输入端。定时块234包括二进制计数器的阵列,该阵列对与针对每个存储列中的每个存储体的特定操作相关的持续时间进行计数。确定状态所需的定时器的数目取决于定时参数、给定存储器类型的存储体的数量以及***在给定存储器通道上支持的存储列的数量。所实现的定时参数的数目进而取决于***中所实现的存储器的类型。例如,与其他DDRx存储器类型相比,DDR5存储器和GDDR5存储器需要更多的定时器来遵守更多的定时参数。通过包括被实现为二进制计数器的通用定时器的阵列,定时块234可以被缩放并且重新用于不同的存储器类型。
在操作中,仲裁器238通过考虑每个条目的页状态、每个存储器访问请求的优先级和这些请求之间的相关性而从命令队列220和刷新控制逻辑232选择存储器访问命令。优先级与从AXI4总线接收且存储在命令队列220中的请求的服务质量或QoS相关,但是可以基于存储器访问的类型和仲裁器238的动态操作来更改。最终仲裁器550在这三个子仲裁获胜者之间进行选择以及选择来自刷新控制逻辑232的刷新操作,并且可以进一步将读取或写入命令修改为具有如由页关闭预测器562确定的自动预充电命令的读取或写入。
READ COL ARB 512和WRITE COL ARB 535在页命中(即,用于打开页的读取或写入周期)以及SEND命令、SREAD命令和XWRITE命令之间进行仲裁。由定时块234中的定时器跟踪并且由READ COL ARB 512检查的定时资格参数包括例如行地址选通(RAS)到列地址选通(CAS)延迟时间(tRCD)和CAS到CAS时延(tCCD)。例如,tRCD指定在RAS周期中已经打开页之后在对该页的读取访问之前必须经过的最小时间量。COL ARB 542基于所指派的访问优先级来选择子仲裁获胜者。在一个实施方案中,优先级是4位、独热值,因此指示四个值中的优先级,然而,应当显而易见的是,此四级别优先级方案仅为一个示例。读取CAS、SREAD和SEND命令由READ COL ARB 512在适当的时间选择以保持数据总线活动。因为这些DRAM和持久性存储器读取在被实现时都占用数据总线,所以有利的是在READ COL ARB 512处一起对其进行仲裁以减小READ COL ARB 512中的比较逻辑的复杂性(并且因此减小大小),以及减小到最终仲裁器550的输入的数量。
页冲突是当存储体中的一行当前被激活时对该存储体中的另一行的访问。PC ARB522在命令队列220中对与当前在对应的存储体和存储列中打开的页冲突的页的访问之间进行仲裁。PC ARB 522选择导致发出预充电命令的子仲裁获胜者。由定时块234中的定时器跟踪并且由PC ARB 522检查的定时资格参数包括例如活动以预充电命令周期(tRAS)。用于写入命令的页冲突子仲裁也考虑候选写入命令的存储体组号。PC ARB 522基于所指派的访问优先级来选择子仲裁获胜者。如果PC ARB 522检测到相同优先级级别的两个或更多个请求,则最老的条目获胜。
页未命中是对处于预充电状态的存储体的访问。页未命中仲裁器532在命令队列220中对预充电的存储器存储体的访问之间进行仲裁。由定时块234中的定时器跟踪且由页未命中仲裁器532检查的定时资格参数包括例如预充电命令周期(tRP)。如果存在在相同优先级级别是页未命中的两个或更多个请求,则最老的条目获胜。
每个子仲裁器为它们各自的子仲裁获胜者输出优先级值。最终仲裁器550比较来自COL ARB 542、ROW ARB 544和PC ARB 522中的每一者的子仲裁获胜者的优先级值。最终仲裁器550通过执行一组相对优先级比较来确定子仲裁获胜者之间的相对优先级。最终仲裁器550还确定子仲裁获胜者是否冲突(即,它们是否指向相同的DRAM存储体和存储列)。当不存在此类冲突时,则最终仲裁器550选择具有最高优先级的命令。当存在冲突时,则最终仲裁器550遵循以下规则。当COL ARB 542的子仲裁获胜者的优先级值高于PC ARB 522的子仲裁获胜的优先级值并且两者均指向相同存储体和存储列时,则最终仲裁器550选择由COLARB 542指示的访问。当PC ARB 522的子仲裁获胜者的优先级值高于COL ARB 542的子仲裁获胜者的优先级值时并且两者均指向相同存储体和存储列时,则最终仲裁器550基于若干附加因素选择获胜者。在一些情况下,页关闭预测器562通过设定自动预充电属性而致使页在由COL ARB 542指示的访问结束时关闭。
如果SREAD由READ COL ARB 512拾取,则它像SEND命令那样被处理,并且在SREAD命中持久性存储器高速缓存(诸如NVDIMM高速缓存)的情况下,数据总线时隙被保留以用于接收SREAD命令的读取数据。如果发现SREAD为未命中,则持久性存储器模块不发送数据,从而导致数据总线时隙中的未占用时隙预留。在该情况下,当SREAD的响应到达存储器控制器时,控制器将生成针对SREAD的SEND命令。在READ COL ARB 512内,优先级最初由来自存储器访问代理的请求优先级设定,但基于访问类型(读取或写入)和访问序列而动态地调整优先级。一般来讲,COL ARB 542将较高隐式优先级指派给读取,但实现优先级提升机制以确保写入在完成方面取得进展。
每当COL ARB 542选择读取或写入命令时,页关闭预测器562就确定是否发送具有自动预充电(AP)属性的命令。在读取或写入周期期间,自动预充电属性用预定义地址位来设定,并且自动预充电属性致使DDR设备在读取或写入周期完成之后关闭页,这避免了存储器控制器稍后发送用于该存储体的单独预充电命令的需要。页关闭预测器562考虑命令队列220中已经存在的访问与所选择命令访问的存储体相同的存储体的其他请求。如果页关闭预测器562将存储器访问转换成AP命令,则对该页的下一次访问将是页未命中。
在其他实施方案中,仲裁器238可包括不同数量的层和不同数量的子仲裁器。例如,一些实施方案包括两层:耦接到命令队列的第一层子仲裁器电路,其用于从DRAM命令和持久性存储器命令中选择候选命令;以及耦接到第一层子仲裁器电路的第二层子仲裁器电路,其用于接收候选命令并且从候选命令中选择最终仲裁获胜者。使用所描绘的第一层中的子仲裁器512、535、532、537和522来构造一个此类实施方案,其中来自第一层的子仲裁获胜者被直接馈送到最终仲裁器,该最终仲裁器在单个比较步骤中执行所描述的COL ARB542、ROW ARB 544和最终仲裁器550的功能。在又一些其他实施方案中,READ COL ARB和WRITE COL ARB被合并,因为候选读取命令和写入命令不同时被仲裁并且它们的仲裁共享类似逻辑。在此类实施方案中,可以读取突发模式和写入突发模式使用相同仲裁逻辑。在写入仲裁模式中,NV队列564输入被屏蔽掉。
图6是根据一些实施方案的用于处理存储器访问命令的过程的流程图600。所描绘的过程适合于通过仲裁器(诸如图3和图4所描绘的仲裁器)或其他存储器控制器布置来实现。在框602处,过程通过选择DRAM和持久性存储器访问命令以用于分派到存储器通道而开始。一般来说,命令在存储器控制器处被接收并且被放置在命令队列中以等待分派到DRAM存储器和持久性存储器。在一些实施方案中,DRAM和持久性存储器命令(除了SEND命令之外)都存在于单个命令队列中,诸如命令队列220(图2)。如框604处所示,在诸如NV队列248(图4)的持久性存储器队列处提供用于过程中持久性或非易失性存储器读取(“NV读取”)的命令。如上文所讨论,在一些实施方案中,仅要求NV队列248跟踪等待实现的NV队列248中保存的用于XREAD的未决SEND命令或其他持久性存储器读取命令的数量。
在框606处,一个或多个第一层子仲裁器从DRAM命令和持久性存储器命令中选择候选命令。通常,DRAM命令包括READ和WRITE命令以及此类命令的变体,其可被解码为诸如READ CAS的形式以用于与所采用的DRAM技术一起使用。持久性存储器命令包括持久性存储器模块命令,诸如XREAD(有时称为“X-READ”)、XWRITE(有时称为“X-WRITE”)、SREAD以及可特定于所采用的特定持久性存储器的其他非易失性存储器命令。一些持久性存储器命令已经要求投入持久性存储器模块中的非易失性存储,而其他命令可从与持久性存储器模块相关联的DRAM缓冲器(诸如NVDIMM-P)来实现。这两种变体在本文中被称为持久性存储器命令。
与针对DRAM和持久性存储器使用单独子仲裁器相比,在框606处从DRAM和持久性存储器命令中选择候选提供了若干优点。当DRAM和持久性存储器都存在于存储器通道上时,最终命令选择需要复杂的比较,该比较需要分配给不同仲裁器,因此没有仲裁器是定时瓶颈。在包括具有更简单比较逻辑的更多子仲裁器输入或具有更复杂比较逻辑的更少子仲裁器输入之间存在折衷。本文中描述的过程(例如,如图3或图4所示的那样实现的过程)避免了大量输入并且同时通过在子仲裁器之间有效地分配比较逻辑来减小比较逻辑的复杂度。这种分配产生具有较少冗余的有效逻辑,从而允许仲裁器满足存储器总线的速度需求而无需过大的比较逻辑。此外,本文中的技术采用资源中心仲裁组织(基于交叉DIMM类型)而不是功能组织(即,基于隔离DIMM类型)。此类方法合并不同数据命令(诸如CAS、SREAD、SEND、XWRITE)以避免数据总线竞争,并且合并一个数据命令、一个行命令和一个预充电命令以避免命令总线竞争。
在框608处,一个或多个第二层子仲裁器从由第一层子仲裁器提供的候选中进行选择。例如,在图5的具体实施中,COL ARB 542从可为DRAM命令(通常为页命中)或持久性存储器命令的候选命令中进行选择,而ROW ARB 544也从可为DRAM行打开命令(页未命中)或持久性存储器命令的候选命令中进行选择。在一些实施方案中,如上文所讨论,第二层子仲裁器还充当最终子仲裁器。在此类实施方案中,第二层子仲裁器的比较逻辑具有如上文所讨论的较高复杂性。
在框610处,最终仲裁器从第二层子仲裁器中选择至少一个命令以用于分派到存储器通道。如可理解的,在任何特定命令分派周期中,最终仲裁器可选择DRAM命令或持久性存储器命令。根据此过程在仲裁器的多个层之间分配选择逻辑允许合并DRAM命令和持久性存储器命令的选择的有效过程,同时允许仲裁器设计满足DRAM仲裁过程的速度需求,同时处理与处理相同通道上的持久性存储器命令相关联的添加复杂性。因此,如本文所述的存储器控制器和数据处理***改善了存储器控制器与非易失性存储器模块接口连接的能力。
图2的存储器控制器200或其任何部分(诸如仲裁器238)可由呈数据库形式的计算机可访问数据结构或可由程序读取并且直接或间接用于制造集成电路的其他数据结构来描述或表示。例如,该数据结构可以是高级设计语言(HDL)诸如Verilog或VHDL中的硬件功能性的行为级描述或寄存器传送级(RTL)描述。描述可由合成工具读取,合成工具可合成描述以产生包括来自合成库的门列表的网表。网表包括门集,门集也表示包括集成电路的硬件的功能性。然后可以放置和路由网表以产生描述待应用于掩码的几何形状的数据集。然后可以在各种半导体制造步骤中使用掩模以产生集成电路。另选地,计算机可访问存储介质上的数据库可以是网表(具有或不具有合成库)或数据集(根据需要)或图形数据***(GDS)II数据。
虽然已描述了特定实施方案,但是对这些实施方案的各种修改对于本领域技术人员将是显而易见的。例如,存储器通道控制器210和/或功率引擎250的内部架构在不同的实施方案中可有所变化。存储器控制器200可接口连接至除了NVDIMM-P和DDRx之外的其他类型的存储器,诸如高带宽存储器(HBM)、RAMbus DRAM(RDRAM)等。虽然所示的实施方案示出了对应于单独DIMM的每个存储器存储列,但在其他实施方案中,每个DIMM可支持多个存储列。此外,虽然通常支持异类存储器通道,但异类通道可完全用非易失性DIMM填充。此外,虽然本文中讨论的示例性类型的非易失性读取命令为XREAD命令,但支持其他类型的非易失性读取命令。例如,NVDIMM-P规范提供了推测性读取(SREAD)命令,如果在非易失性DIMM上的DRAM中发现所请求的存储器,则该命令具有确定性响应时间,但如果非易失性DIMM确定所请求的数据在DRAM中不可用并且它必须替代地从非易失性存储介质读取,则该命令被解释为具有非确定性响应时间的非易失性读取。在一些实施方案中,如果发生此类“未命中”,则SREAD命令也被添加到NV队列并且然后类似于XREAD被处理。
因此,所附权利要求书旨在覆盖所公开实施方案的落入所公开实施方案的范围内的所有修改。
Claims (20)
1.一种存储器控制器,包括:
命令队列,所述命令队列具有用于接收针对存储器通道的存储器访问命令的输入端,以及用于保存预定数量的存储器访问命令的多个条目;和
仲裁器,所述仲裁器用于从所述命令队列中选择存储器命令以用于分派到耦接到所述存储器通道的持久性存储器和DRAM存储器中的一者,所述仲裁器包括:
第一层子仲裁器电路,所述第一层子仲裁器电路耦接到所述命令队列以用于从DRAM命令和持久性存储器命令中选择候选命令;和
第二层子仲裁器电路,所述第二层子仲裁器电路耦接到所述第一层子仲裁器电路以用于接收所述候选命令并且从所述候选命令中选择至少一个命令。
2.根据权利要求1所述的存储器控制器,其中所述第一层子仲裁器电路包括至少两个第一层子仲裁器,其各自从候选DRAM命令和持久性存储器命令中进行选择并且各自具有指示选定候选命令的输出端。
3.根据权利要求2所述的存储器控制器,其中:
所述第一层子仲裁器包括从读取列地址选通(CAS)和SREAD命令中进行选择的读取列子仲裁器、从写入CAS和X-WRITE命令中进行选择的写入列子仲裁器、页未命中子仲裁器和X-READ子仲裁器,其各自选择相应候选命令;
所述第二层子仲裁器电路包括从所述读取列子仲裁器和所述写入列子仲裁器中选择候选命令的第一子仲裁器,以及从所述页未命中子仲裁器和所述X-READ子仲裁器中选择候选命令的第二子仲裁器;并且
其中所述仲裁器还包括从所述第一子仲裁器和所述第二子仲裁器的所述候选命令中选择的最终仲裁器。
4.根据权利要求3所述的存储器控制器,还包括耦接到所述命令队列以用于选择页冲突候选命令的页冲突子仲裁器,并且其中所述最终仲裁器还从所述页冲突候选命令中选择。
5.根据权利要求3所述的存储器控制器,其中所述读取列子仲裁器还从SEND命令中选择以用于所述持久性存储器。
6.根据权利要求5所述的存储器控制器,还包括持久性存储器命令队列,所述读取列子仲裁器从所述持久性存储器命令队列中选择SEND命令。
7.根据权利要求6所述的存储器控制器,其中基于从非易失性双列直插存储器模块(NVDIMM)控制电路发送的读取就绪响应,所述存储器控制器向所述持久性存储器命令队列提供SEND命令。
8.一种方法,包括:
在存储器控制器处接收包括DRAM命令和持久性存储器命令的多个存储器访问命令;
将所述存储器访问命令放置在命令队列中以等待分派到DRAM存储器和持久性存储器;
从所述命令队列中选择多个候选命令,所述候选命令中的至少两者选自所述DRAM命令和所述持久性存储器命令;以及
从所述候选命令中选择至少一个命令以用于在存储器通道上发送。
9.根据权利要求8所述的方法,其中选择所述多个候选命令通过至少两个第一层子仲裁器来执行,所述第一层子仲裁器各自从候选DRAM命令和持久性存储器命令中进行选择并且各自具有指示选定候选命令的输出端。
10.根据权利要求8所述的方法,其中选择多个候选命令包括从读取列地址选通(CAS)和SREAD命令中选择第一候选,从写入CAS和X-WRITE命令中选择第二候选,从页未命中命令中选择第三候选,以及从X-READ命令中选择第四候选。
11.根据权利要求10所述的方法,还包括从所述第一候选和所述第二候选中选择第二层候选命令,以及从所述第三候选和所述第四候选中选择另一个第二层候选。
12.根据权利要求11所述的方法,其中从所述候选命令中选择至少一个命令以用于在存储器通道上发送包括从所述第二层候选中选择最终候选。
13.根据权利要求12所述的方法,其中选择多个候选命令还包括从来自持久性存储器队列的可用SEND命令中进行选择。
14.一种数据处理***,包括:
存储器通道,所述存储器通道耦接到DRAM存储器和持久性存储器;
存储器控制器,所述存储器控制器耦接到所述存储器通道,包括:
命令队列,所述命令队列具有用于接收针对所述存储器通道的存储器访问命令的输入端,以及用于保存预定数量的存储器访问命令的多个条目;和
仲裁器,所述仲裁器用于从所述命令队列中选择存储器命令以用于传输到所述持久性存储器和所述DRAM存储器中的一者,所述仲裁器包括:
第一层子仲裁器电路,所述第一层子仲裁器电路耦接到所述命令队列以用于从DRAM命令和持久性存储器命令中选择候选命令;和
第二层子仲裁器电路,所述第二层子仲裁器电路耦接到所述第一层子仲裁器电路以用于接收所述候选命令并且从所述候选命令中选择至少一个命令。
15.根据权利要求14所述的数据处理***,其中所述第一层子仲裁器电路包括至少两个第一层子仲裁器,其各自从候选DRAM命令和持久性存储器命令中进行选择并且各自具有指示选定候选命令的输出端。
16.根据权利要求15所述的数据处理***,其中:
所述第一层子仲裁器包括从读取列地址选通(CAS)和SREAD命令中进行选择的读取列子仲裁器、从写入CAS和X-WRITE命令中进行选择的写入列子仲裁器、页未命中子仲裁器和X-READ子仲裁器,其各自选择相应候选命令;
所述第二层子仲裁器电路包括从所述读取列子仲裁器和所述写入列子仲裁器中选择候选命令的第一子仲裁器,以及从所述页未命中子仲裁器和所述X-READ子仲裁器中选择候选命令的第二子仲裁器;并且
其中所述仲裁器还包括从所述第一子仲裁器和所述第二子仲裁器的所述候选命令中选择的最终仲裁器。
17.根据权利要求16所述的数据处理***,还包括耦接到所述命令队列以用于选择页冲突候选命令的页冲突子仲裁器,并且其中所述最终仲裁器还从所述页冲突候选命令中选择。
18.根据权利要求16所述的数据处理***,其中所述读取列子仲裁器还从SEND命令中选择以用于所述持久性存储器。
19.根据权利要求18所述的数据处理***,还包括持久性存储器命令队列,从所述持久性存储器命令队列向所述读取列子仲裁器提供SEND命令。
20.根据权利要求19所述的数据处理***,其中基于从非易失性双列直插存储器模块(NVDIMM)控制电路发送的读取就绪响应,所述存储器控制器向所述持久性存储器命令队列提供SEND命令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/354,806 US11995008B2 (en) | 2021-06-22 | 2021-06-22 | Memory controller with hybrid DRAM/persistent memory channel arbitration |
US17/354,806 | 2021-06-22 | ||
PCT/US2022/031102 WO2022271404A1 (en) | 2021-06-22 | 2022-05-26 | Memory controller with hybrid dram/persistent memory channel arbitration |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117546135A true CN117546135A (zh) | 2024-02-09 |
Family
ID=84490315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280044630.1A Pending CN117546135A (zh) | 2021-06-22 | 2022-05-26 | 具有混合dram/持久性存储器通道仲裁的存储器控制器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11995008B2 (zh) |
EP (1) | EP4359902A1 (zh) |
KR (1) | KR20240022655A (zh) |
CN (1) | CN117546135A (zh) |
WO (1) | WO2022271404A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891758A (zh) * | 2024-03-12 | 2024-04-16 | 成都登临科技有限公司 | 一种基于仲裁的存储访问***、处理器及计算设备 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5898687A (en) * | 1996-07-24 | 1999-04-27 | Cisco Systems, Inc. | Arbitration mechanism for a multicast logic engine of a switching fabric circuit |
US6092158A (en) * | 1997-06-13 | 2000-07-18 | Intel Corporation | Method and apparatus for arbitrating between command streams |
US5926628A (en) * | 1997-07-15 | 1999-07-20 | International Business Machines Corporation | Selectable priority bus arbitration scheme |
US6295586B1 (en) * | 1998-12-04 | 2001-09-25 | Advanced Micro Devices, Inc. | Queue based memory controller |
JP3609656B2 (ja) * | 1999-07-30 | 2005-01-12 | 株式会社日立製作所 | コンピュータシステム |
US6804758B2 (en) * | 2001-06-29 | 2004-10-12 | Xgi Technology Inc. | Method for adaptive arbitration of requests for memory access in a multi-stage pipeline engine |
US7007123B2 (en) * | 2002-03-28 | 2006-02-28 | Alcatel | Binary tree arbitration system and method using embedded logic structure for controlling flag direction in multi-level arbiter node |
US7366854B2 (en) | 2003-05-08 | 2008-04-29 | Hewlett-Packard Development Company, L.P. | Systems and methods for scheduling memory requests utilizing multi-level arbitration |
US7461216B2 (en) * | 2006-02-23 | 2008-12-02 | Hewlett-Packard Development Company, L.P. | Memory controller |
US7617368B2 (en) * | 2006-06-14 | 2009-11-10 | Nvidia Corporation | Memory interface with independent arbitration of precharge, activate, and read/write |
US7664907B1 (en) * | 2006-11-02 | 2010-02-16 | Nvidia Corporation | Page stream sorter with dynamic binning |
US8271746B1 (en) * | 2006-11-03 | 2012-09-18 | Nvidia Corporation | Tiering of linear clients |
WO2008131058A2 (en) * | 2007-04-17 | 2008-10-30 | Rambus Inc. | Hybrid volatile and non-volatile memory device |
US8259738B2 (en) * | 2007-05-01 | 2012-09-04 | Net Navigation Systems, Llc | Channel service manager with priority queuing |
JP2008287528A (ja) * | 2007-05-18 | 2008-11-27 | Renesas Technology Corp | リクエスト調停装置及びメモリコントローラ |
US7739461B2 (en) * | 2007-07-10 | 2010-06-15 | International Business Machines Corporation | DRAM power management in a memory controller |
US7673087B1 (en) * | 2008-03-27 | 2010-03-02 | Xilinx, Inc. | Arbitration for an embedded processor block core in an integrated circuit |
US8838853B2 (en) * | 2010-01-18 | 2014-09-16 | Marvell International Ltd. | Access buffer |
US8615629B2 (en) * | 2010-01-18 | 2013-12-24 | Marvell International Ltd. | Access scheduler |
US20130268735A1 (en) * | 2011-12-29 | 2013-10-10 | Enric Gibert Codina | Support for speculative ownership without data |
KR20140028618A (ko) * | 2012-08-29 | 2014-03-10 | 삼성전자주식회사 | 쓰기 페일을 줄이는 메모리 장치, 이를 포함하는 메모리 시스템 및 그 쓰기 방법 |
US8867533B2 (en) * | 2013-01-08 | 2014-10-21 | Apple Inc. | Multi-tier switch interface unit arbiter |
US20140379846A1 (en) * | 2013-06-20 | 2014-12-25 | Nvidia Corporation | Technique for coordinating memory access requests from clients in a mobile device |
US9330432B2 (en) * | 2013-08-19 | 2016-05-03 | Apple Inc. | Queuing system for register file access |
US9576637B1 (en) * | 2016-05-25 | 2017-02-21 | Advanced Micro Devices, Inc. | Fine granularity refresh |
US10402120B2 (en) | 2016-07-15 | 2019-09-03 | Advanced Micro Devices, Inc. | Memory controller arbiter with streak and read/write transaction management |
US10684969B2 (en) * | 2016-07-15 | 2020-06-16 | Advanced Micro Devices, Inc. | Command arbitration for high speed memory interfaces |
KR20180118329A (ko) | 2017-04-21 | 2018-10-31 | 에스케이하이닉스 주식회사 | 메모리 시스템, 데이터 처리 시스템 및 그것의 동작 방법 |
JP2020016954A (ja) | 2018-07-23 | 2020-01-30 | キオクシア株式会社 | メモリシステム |
US10649922B2 (en) | 2018-08-06 | 2020-05-12 | Apple Inc. | Systems and methods for scheduling different types of memory requests with varying data sizes |
US11409436B2 (en) * | 2018-08-08 | 2022-08-09 | Micron Technology, Inc. | Buffer management in memory systems for read and write requests |
US11099778B2 (en) * | 2018-08-08 | 2021-08-24 | Micron Technology, Inc. | Controller command scheduling in a memory system to increase command bus utilization |
-
2021
- 2021-06-22 US US17/354,806 patent/US11995008B2/en active Active
-
2022
- 2022-05-26 KR KR1020247002401A patent/KR20240022655A/ko unknown
- 2022-05-26 CN CN202280044630.1A patent/CN117546135A/zh active Pending
- 2022-05-26 WO PCT/US2022/031102 patent/WO2022271404A1/en active Application Filing
- 2022-05-26 EP EP22828983.1A patent/EP4359902A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891758A (zh) * | 2024-03-12 | 2024-04-16 | 成都登临科技有限公司 | 一种基于仲裁的存储访问***、处理器及计算设备 |
CN117891758B (zh) * | 2024-03-12 | 2024-05-17 | 成都登临科技有限公司 | 一种基于仲裁的存储访问***、处理器及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
US11995008B2 (en) | 2024-05-28 |
WO2022271404A1 (en) | 2022-12-29 |
KR20240022655A (ko) | 2024-02-20 |
US20220405214A1 (en) | 2022-12-22 |
EP4359902A1 (en) | 2024-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107924375B (zh) | 用于高速存储器接口的命令仲裁 | |
JP7521132B2 (ja) | アービトレーション中の書き込みバンクグループのマスク | |
CN115516563B (zh) | 用于dram的刷新管理 | |
US11748034B2 (en) | Signalling for heterogeneous memory systems | |
JP7195484B1 (ja) | 不揮発性デュアルインラインメモリモジュールのコマンドリプレイ | |
CN117501230A (zh) | 多存储列存储器控制器中的高效存储列切换 | |
CN115885268A (zh) | Dram命令拖尾管理 | |
CN117546135A (zh) | 具有混合dram/持久性存储器通道仲裁的存储器控制器 | |
EP3270294B1 (en) | Command arbitration for high-speed memory interfaces | |
CN117120992A (zh) | 用于多队列存储器控制器的信用方案 | |
US20210357336A1 (en) | Efficient memory bus management | |
JP2024528414A (ja) | ハイブリッドdram/永続メモリチャネルアービトレーションを有するメモリコントローラ | |
US20240211173A1 (en) | Performance of bank refresh | |
CN117099076A (zh) | Dram命令拖尾效率管理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |