支持近存储器和远存储器访问的存储器通道的制作方法

文档序号:6485207阅读:119来源:国知局
支持近存储器和远存储器访问的存储器通道的制作方法
【专利摘要】一种半导体芯片,包括存储器控制器电路,所述存储器控制器电路具有接口电路以耦合到存储器通道。存储器控制器包括第一逻辑电路以在存储器通道上实现第一存储器通道协议。第一存储器通道协议特定于第一易失性系统存储器技术。该接口还包括第二逻辑电路以在存储器通道上实现第二存储器通道协议。第二存储器通道协议特定于第二非易失性系统存储器技术。第二存储器通道协议是事务协议。
【专利说明】支持近存储器和远存储器访问的存储器通道
【技术领域】
[0001]本发明大体上涉及计算机系统的领域。更特别地,本发明涉及用于实现包括非易失性存储器(memory)层的多级存储器层次结构的装置和方法。
【背景技术】
[0002]A.目前的存储器和储存器(storage)配置
现在,对计算机创新的限制因素之一是存储器和储存器技术。在常规的计算机系统中,系统存储器(也称为主存储器、初级存储器、可执行存储器)通常由动态随机访问存储器(DRAM)来实现。基于DRAM的存储器即使在不发生存储器读或写的时候也消耗功率,原因在于其必须不断地对内部电容器进行再充电。基于DRAM的存储器是易失性的,这意味着一旦断开电源,就会丢失在DRAM存储器中存储的数据。常规的计算机系统还依赖于多个级别的高速缓存以改善性能。高速缓存是安置在处理器和系统存储器之间的与能够从系统存储器服务存储器访问请求相比更快地服务存储器访问请求的的高速存储器。此类高速缓存通常利用静态随机访问存储器(SRAM)来实现。高速缓存管理协议可以被用来确保将被最频繁访问的数据和指令存储在多级高速缓存之一内,从而减少存储器访问事务的数量并且改善性能。
[0003]关于大容量储存器(也称为二级储存器或磁盘储存器),常规的大容量储存设备通常包括磁介质(例如,硬盘驱动)、光介质(例如,光盘(⑶)驱动、数字通用盘(DVD)等)、全息介质、和/或大容量储存闪速存储器(例如,固态驱动(SSD)、可移除闪速驱动等)。通常,这些储存设备被视为输入/输出(I/O)设备,原因在于其由处理器通过实现各种I/O协议的各种I/O适配器来访问。这些I/O适配器和I/O协议消耗大量的功率并且会具有对平台的形状因数和管芯(die)区域的显著影响。当具有有限电池寿命的便携式或移动设备(例如,膝上型计算机、上网本、平板计算机、个人数字助理(PDA)、便携式媒体播放器、便携式游戏设备、数字摄像机、移动电话、智能电话、功能电话等)未连接到永久性电源时,可以包括通常经由低功率互连和I/O控制器而耦合到处理器的可移除大容量储存设备(例如,嵌入式多媒体卡(eMMC)、安全数字(SD)卡),以便满足活动和空闲的功率预算。
[0004]关于固件存储器(诸如,引导存储器(也称为BIOS闪速)),常规的计算机系统通常使用闪速存储器设备来存储通常被读但很少(或从不)被写到的持久系统信息。例如,由处理器在引导过程期间运行以初始化关键系统组件的初始指令(基本输入和输出系统(BIOS)映像)通常存储在闪速存储器设备中。当前可在市场中获得的闪速存储器设备通常具有有限的速度(例如,50MHz)。该速度因用于读协议的开销(例如,2.5MHz)而进一步降低。为了加快BIOS运行速度,常规的处理器通常在引导过程的可预扩展固件接口(PEI)阶段期间,对部分的BIOS代码进行高速缓存。处理器高速缓存的大小对PEI阶段中所使用的BIOS代码(也称为“PEI BIOS代码”)的大小施加了限制。
[0005]B.相变存储器(PCM)和相关技术
相变存储器(PCM)(有时也称为相变随机访问存储器(PRAM或PCRAM)、PCME、双向统一存储器、硫属化合物RAM (C-RAM))是一种利用硫属化合物玻璃的独特特性的非易失性计算机存储器。由于因电流的经过而产生的热量,硫属化合物玻璃能够在两种状态之间切换:晶体和非晶体。PCM的近期版本能够实现两种附加的不同状态。
[0006]PCM提供比闪速更高的性能,原因在于PCM的存储器元件能够切换得更快,写(将单独的位改变为I或O)能够在不需要首先擦除整个单元块的情况下完成,并且从写的退化更慢(PCM设备可以幸存大约I亿次写周期;PCM退化是由于编程期间的热膨胀、金属(和其它材料)迁移、以及其它机制)。
【专利附图】

【附图说明】
[0007]以下描述和附图被用来图示本发明的实施例。在所述附图中:
图1图示根据本发明的一个实施例的高速缓存和系统存储器布置;
图2图示被用于本发明的一个实施例中的存储器和储存器层次结构;
图3图示本发明的实施例可以实现在其上的计算机系统;
图4图示相同的存储器通道上的近存储器高速缓存和远存储器的实现;
图5图示能够在图4中所观察的近存储器/远存储器系统上执行的写过程;
图6图示能够在图4中所观察的近存储器/远存储器系统上执行的读过程;
图7A图示用于在相同的存储器通道上集成近存储器高速缓存和远存储器的“近存储器在前面”架构;
图7B-D图示能够由图7A的系统所执行的过程;
图8A图示用于在相同的存储器通道上集成近存储器高速缓存和远存储器的“近存储器在前面”架构;
图8B-D图示能够由图8A的系统所执行的过程;
图9A图示支持近存储器访问的存储器通道布线的应用;
图9B图示支持远存储器访问的存储器通道布线的应用;
图10图示用于访问近存储器的过程;
图11图示远存储器控制逻辑电路的实施例;
图12A-B图示可以推知支持近存储器访问和远存储器访问的存储器通道的原子过程。【具体实施方式】
[0008]在以下描述中,阐述了诸如逻辑实现、操作码、指定操作数的方式、资源划分/共享/复制实现、系统组件的类型和相互关系、以及逻辑划分/集成选择之类的许多特定细节,以便提供对本发明的更透彻的理解。然而,由本领域技术人员将领会的是,本发明可以在不具有此类特定细节的情况下实施。在其它实例中,未示出控制结构、门级电路和全软件指令序列,以免使本发明晦涩难懂。本领域一般技术人员利用所包括的描述将能够在不具有过度实验的情况下实现适当的功能。
[0009]在本说明书中,对“一个实施例”、“实施例”、“示例性实施例”等的引用指示了所描述的实施例可以包括特定的特征、结构、或特性,但每个实施例可以不必都包括该特定的特征、结构、或特性。此外,此类短语不必指代相同的实施例。进一步地,当结合实施例来描述特定的特征、结构、或特性时,无论是否明确地描述,都主张要在本领域技术人员的知识内结合其它实施例来实现此类特征、结构、或特性。
[0010]在以下描述和权利要求中,可以使用术语“耦合”和“连接”与其衍生物。应该理解这些术语不意为彼此的同义词。“耦合”被用来指示彼此可以或可以不处于直接物理或电气接触的两个或更多元件彼此进行协作或交互。“连接”被用来指示彼此耦合的两个或更多元件之间的通信的建立。
[0011]本文中有时使用加括号的文本和具有虚线边界(例如,大虚线、小虚线、点虚线、点)的块来图示将附加特征添加到本发明实施例的可选的操作/组件。然而,此类注释不应该视为意味着这些是仅有的选项或可选的操作/组件,和/或具有实线边界的块在本发明的某些实施例中不是可选的。
[0012]介绍
随着处理器核以及诸如虚拟化之类的新使用模型的数量增加,存储器容量和性能需要持续增长。另外,存储器功率和成本已经分别变为电子系统的整体功率和成本的重要组成部分。
[0013]本发明的一些实施例通过智能地细分存储器技术之间的性能需要和容量需要来解决以上挑战。该方法的焦点在于利用相对少量的相对更高速的存储器(诸如DRAM)来提供性能同时使用明显更便宜且更密集的非易失性随机访问存储器(NVRAM)来实现大部分系统存储器。以下所描述的本发明的实施例定义使得能够实现用于NVRAM的使用的分层存储器子系统组织的平台配置。如以下详细描述的,存储器层次结构中的NVRAM的使用还使得能够实现诸如扩充的引导空间和大容量储存器实现之类的新的使用。
[0014]图1图示根据本发明的实施例的高速缓存和系统存储器布置。具体地,图1示出存储器层次结构,包括一组内部处理器高速缓存120、可以包括一个或多个内部高速缓存106和外部高速缓存107-109这二者的充当远存储器高速缓存的“近存储器”121、以及“远存储器”122。在本发明的一些实施例中,可以被用于“远存储器”的一种特定类型的存储器是非易失性随机访问存储器(“NVRAM”)。照此,以下提供了 NVRAM的概观,后面跟着远存储器和近存储器的概观。
[0015]A.非易失性随机访问存储器(“NVRAM”)
存在用于NVRAM的许多可能的技术选择,包括PCM、相变存储器和开关(PCMS)(后者是前者的更特定实现)、字节可寻址持久存储器(BPRAM)、储存类存储器(SCM)、通用存储器、Ge2Sb2Te5、可编程金属化单元(PMC)、电阻式存储器(RRAM)、RESET (重置)(非晶体)单元、SET (设置)(晶体)单元、PCME、奥弗辛斯基存储器、铁电存储器(也称为聚合物存储器和聚(N-乙烯基咔唑))、铁磁存储器(也称为自旋电子、SPRAM (自旋扭矩转换RAM)、STRAM (自旋隧道RAM)、磁阻存储器、磁存储器、磁随机访问存储器(MRAM))、以及半导体-氧化物-氮化物-氧化物-半导体(SONOS,也称为介电存储器)。
[0016]NVRAM具有以下特性:
(1)即使在断开电源的情况下其也保持其内容,与被用于固态磁盘(SSD)中的闪速存储器类似,并且与易失性的SRAM和DRAM不同;
(2)比诸如SRAM和DRAM之类的易失性存储器更低的功耗;
(3)与SRAM和DRAM类似的随机访问(也称为可随机寻址);
(4)以比SSD中找到的闪速(一次仅能够重写和擦除一“块”一在大小方面最小为对于NOR闪速而言64千字节并且对于NAND闪速而言16千字节)更低的粒度级别(例如,字节级别)而可重写且可擦除;
(5)被用作系统存储器并且被分配系统存储器地址空间的全部或部分;
(6)能够通过使用事务协议(支持事务标识符(ID)以区分不同事务以使得能够无序地完成那些事务的协议)的总线而耦合到处理器,并且允许以小到足以支持将NVRAM作为系统存储器来操作的粒度级别(例如,诸如64或128字节的高速缓存线大小)的访问。例如,总线可以是通过其来运行与通常所使用的非事务协议相对的事务协议的存储器总线(例如,诸如DDR3、DDR4等的DDR总线)。作为另一个示例,总线可以是通常通过其来运行事务协议(本地事务协议)的总线,诸如PCI高速(PCIE)总线、桌面管理接口(DMI)总线、或利用事务协议和足够小的事务有效载荷大小(例如,诸如64或128字节的高速缓存线大小)的任何其它类型的总线;
(7)以下中的一个或多个:
a)比诸如闪速之类的非易失性存储器/储存器技术更快的写速度;
b)非常高的读速度(比闪速更快,并且接近或等价于DRAM读速度);
c)直接可写(不同于像被用于SSD中的闪速存储器那样在写数据之前需要擦除(利用I来改写));和/或
d)故障之前的更大数量的写(比被用于SSD中的引导ROM和闪速更多);和/或 如以上提到的,对比于一次必须重写和擦除一个完整的“块”的闪速存储器,在任何给
定实现中NVRAM被访问的粒度级别可以依赖于特定的存储器控制器和特定的存储器总线或NVRAM耦合到的其它类型的总线。例如,在其中NVRAM被用作系统存储器的一些实现中,尽管固有能力是以字节的粒度被访问,但NVRAM也可以以高速缓存线(例如,64字节或128字节高速缓存线)的粒度被访问,原因在于高速缓存线是存储器子系统访问存储器的级另O。因而,当在存储器子系统内部署NVRAM时,其可以以与被用于相同的存储器子系统中的DRAM (例如,“近存储器”)相同的粒度级别被访问。即使如此,由存储器控制器和存储器总线或其它类型的总线对NVRAM访问的粒度级别也小于由闪速所使用的块大小和I/O子系统的控制器和总线的访问大小的粒度级别。
[0017]NVRAM还可以包含耗损均衡算法以考虑以下事实:远存储器级别处的储存单元在多个写访问之后开始耗尽,特别是其中诸如在系统存储器实现中可以发生大量的写。因为高周期计数块最可能以该方式而耗尽,所以耗损均衡通过将高周期计数块与低周期计数块的地址进行交换而跨远存储器单元来散布写。注意,通常大多数地址交换对应用程序而言透明,原因在于其由硬件、较低级别的软件(例如,低级别驱动器或操作系统)、或该二者的组合来处理。
[0018]B.远存储器
本发明的一些实施例的远存储器122利用NVRAM来实现,但不必限于任何特定的存储器技术。远存储器122根据其在存储器/储存器层次结构中的应用和/或其特性而可与其它指令和数据存储器/储存器技术区分。例如,远存储器122不同于:
I)静态随机访问存储器(SRAM),其可以被用于分别专用于处理器核101-104的级别O和级别I内部处理器高速缓存101a-b、102a-b、103a_b、和104a_b以及由处理器核所共享的更低级别的高速缓存(LLC) 105 ; 2)动态随机访问存储器(DRAM),被配置为处理器100内部的高速缓存106(例如,在与处理器100相同的管芯上)和/或配置为处理器外部的一个或多个高速缓存107-109 (例如,在与处理器100相同或不同的封装上);以及
3)闪速存储器/磁盘/光盘,应用为大容量储存器(未示出);以及
4 )诸如闪速存储器或其它只读存储器(ROM )之类的存储器,应用为固件存储器(其能够涉及引导ROM、BIOS闪速、和/或TPM闪速)(未示出)。
[0019]远存储器122可以被用作可由处理器100直接寻址的指令和数据储存器,并且对比于应用为大容量储存器的闪速/磁盘/光盘而能够与处理器100充分地保持同步。此外,如以上所讨论的以及以下详细描述的,远存储器122可以被置于存储器总线上并且可以与继而与处理器100直接通信的存储器控制器直接通信。
[0020]远存储器122可以与其它指令和数据储存技术(例如,DRAM)组合以形成混合存储器(也称为共置一处的PCM和DRAM ;第一级别存储器和第二级别存储器;FLAM (闪速和DRAM))。注意,包括PCM/PCMS的以上技术中的至少一些可以被用于作为系统存储器的代替或附加的大容量储存器,并且当以该方式被应用时,不需要是由处理器随机可访问、字节可寻址或直接可寻址的。
[0021]为了解释的方便,本申请的剩余部分的大多数将把“NVRAM”或者更具体地“PCM”或“PCMS”称为用于远存储器122的技术选择。照此,在以下讨论中,术语“NVRAM”、“PCM”、“PCMS”和远存储器可以可互换地使用。然而,如以上所讨论的,应该认识到不同的技术也可以被用于远存储器。同样,该NVRAM不限于用作远存储器。
[0022]C.近存储器
“近存储器” 121是被配置在远存储器122的前面的中间级别的存储器,其相对于远存储器具有更低的读/写访问延迟和/或更对称的读/写访问延迟(即,具有大致等价于写时间的读时间)。在一些实施例中,近存储器121具有比远存储器122明显更低的写延迟但类似(略低或相等)的读延迟;例如,近存储器121可以是诸如易失性随机访问存储器(VRAM)之类的易失性存储器并且可以包括DRAM或其它基于电容器的高速存储器。然而,注意,本发明的基本原理不限于这些特定的存储器类型。另外地,近存储器121比远存储器122可以具有相对更低的密度和/或制造起来可以更贵。
[0023]在一个实施例中,近存储器121被配置在远存储器122和内部处理器高速缓存120之间。在以下所描述的实施例的一些中,近存储器121被配置为一个或多个存储器侧高速缓存(MSC) 107-109,以掩盖远存储器的性能和/或使用限制,包括例如写/读延迟限制和存储器退化限制。在这些实现中,MSC 107-109和远存储器122的组合以近似、等价于或超过仅将DRAM用作系统存储器的系统的性能级别来操作。如以下详细讨论的,尽管在图1中示出为“高速缓存”,近存储器121可以包括其中它执行作为执行高速缓存的角色的附加或代替的其它角色的模式。
[0024]近存储器121能够位于处理器管芯上(作为一个或多个高速缓存106)和/或位于处理器管芯外部(作为高速缓存107-109)(例如,在位于CPU封装上的单独的管芯上、在具有到CPU封装的高带宽链路的情况下位于CPU封装之外,例如,在存储器双列直插式存储器模块(DIMM)、立管/夹层、或计算机母板上)。近存储器121可以使用单个或多个高带宽链路(诸如,DDR或其它事务高带宽链路(如以下详细描述的))与处理器100进行通信而耦合。[0025]示例性系统存储器分配方案
图1图示了在本发明的实施例中各级别的高速缓存101-109如何关于系统物理地址(SPA)空间116-119而配置。如提到的,该实施例包括具有一个或多个核101-104的处理器100,其中每个核具有其自身专用的高级高速缓存(L0)101a-104a和中级高速缓存(MLC)(LI)高速缓存101b-104b。处理器100还包括共享的LLC 105。这些各高速缓存级别的操作被良好地理解,并且本文将不详细描述。
[0026]图1中所图示的高速缓存107-109可以专用于特定的系统存储器地址范围或一组非连续地址范围。例如,高速缓存107专用于充当用于系统存储器地址范围#1 116的MSC,并且高速缓存108和109专用于充当用于系统存储器地址范围#2 117和#3 118的非重叠部分的MSC。后者的实现可以被用于其中由处理器100所使用的SPA空间被交错到由高速缓存107-109 (例如,当配置为MSC时)所使用的地址空间中的系统。在一些实施例中,该后者的地址空间被称为存储器通道地址(MCA)空间。在一个实施例中,内部高速缓存101a-106执行用于整个SPA空间的高速缓存操作。
[0027]如本文所使用的系统存储器是对在处理器100上运行的软件而言可见和/或可由所述软件直接寻址的存储器;而高速缓存存储器101a-109可以在其不形成系统地址空间的直接可寻址部分的意义上对软件透明地操作,但所述核也可以支持指令的运行以允许软件提供对一个或多个高速缓存中的一些或所有的一些控制(配置、策略、提示等)。将系统存储器细分成区域116-119可以作为系统配置过程的部分而手动执行(例如,由系统设计者)和/或可以由软件来自动执行。
[0028]在一个实施例中,系统存储器区域116-119使用远存储器(例如,PCM)以及在一些实施例中被配置为系统存储器的近存储器来实现。系统存储器地址范围#4表示使用诸如DRAM之类的可以是配置于系统存储器模式(相对于高速缓存模式)中的近存储器的更高速的存储器来实现的地址范围。
[0029]图2图示了根据本发明的实施例的存储器/储存器层次结构140和用于近存储器144和NVRAM的操作的可配置模式。存储器/储存器层次结构140具有多个级别,包括:(I)高速缓存级别150,其可以包括处理器高速缓存150A(例如,图1中的高速缓存101A-105),并且可选地作为用于远存储器150B的高速缓存的近存储器(在如本文所描述的某些操作模式中),(2)系统存储器级别151,当近存储器存在时,其可以包括远存储器151B (例如,诸如PCM的NVRAM)(或当近存储器不存在时,仅包括作为系统存储器174的NVRAM),并且可选地作为系统存储器151A操作的近存储器(在如本文所描述的某些操作模式中),(3)大容量储存器级别152,其可以包括闪速/磁/光大容量储存器152B和/或NVRAM大容量储存器152A (例如,NVRAM 142的部分);以及(4)固件存储器级别153,其可以包括BIOS闪速170和/或BIOS NVRAM 172以及可选地可信平台模块(TPM) NVRAM 173。
[0030]如所指示的,近存储器144可以被实现成采用各种不同的模式来操作,包括:第一模式,其中其操作为用于远存储器的高速缓存(近存储器作为用于FM 150B的高速缓存);第二模式,其中其操作为系统存储器151A并且占用SPA空间的部分(有时被称为近存储器“直接访问”模式);以及诸如暂存存储器192或如写缓冲器193之类的一个或多个附加操作模式。在本发明的一些实施例中,近存储器是可划分的,其中每个分区可以并行地采用所支持的模式中的不同的一个来操作;并且不同的实施例可以支持由硬件(例如,熔丝、引脚)、固件、和/或软件来配置分区(例如大小、模式)(例如,通过MSC控制器124内的一组可编程范围寄存器,在其中例如可以存储不同的二进制码以标识每个模式和分区)。
[0031]图2中的系统地址空间A 190被用来图示当近存储器配置为用于远存储器150B的MSC时的操作。在该配置中,系统地址空间A 190表示整个系统地址空间(并且系统地址空间B 191不存在)。可替代地,系统地址空间B 191被用来示出当近存储器的全部或部分被指派系统地址空间的部分时的实现。在该实施例中,系统地址空间B 191表示被指派到近存储器151A的系统地址空间的范围,并且系统地址空间A 190表示指派到NVRAM 174的系统地址空间的范围。
[0032]另外,当充当用于远存储器150 B的高速缓存时,近存储器144可以采用在MSC控制器124的控制之下的各种子模式来操作。在这些模式的每个中,近存储器地址空间(NMA)在近存储器不形成系统地址空间的直接可寻址部分的意义上对软件而言是透明的。这些模式包括但不限于以下:
(I)回写高速缓存模式:在该模式中,充当FM高速缓存150B的近存储器的全部或部分被用作用于NVRAM远存储器(FM)151B的高速缓存。当在回写模式中时,每次写操作初始地定向到作为用于FM 150B的高速缓存的近存储器(假设该写所定向到的高速缓存线存在于高速缓存中)。执行对应的写操作以仅当作为用于FM 150B的高速缓存的近存储器内的高速缓存线要由另一个高速缓存线所替代时,更新NVRAM FM 151B (对比于以下所描述的直写模式,其中将每次写操作被立即传播到NVRAMFM 151B)。
[0033](2)近存储器绕过模式:在该模式中,所有的读和写绕过充当FM高速缓存150B的匪并且直接去到NVRAM FM 151B。例如,当应用不是高速缓存友好的或需要待提交的数据以高速缓存线的粒度来存留时,可以使用这种模式。在一个实施例中,由处理器高速缓存150A和充当FM高速缓存150B的匪所执行的高速缓存彼此独立地操作。因而,可以在充当FM高速缓存150B的NM中对未在处理器高速缓存150A中被高速缓存的(并且在一些情况下可能未被允许在处理器高速缓存150A中进行高速缓存的)数据进行高速缓存,并且反之亦然。因而,可能在处理器高速缓存中被指定为“不可高速缓存”的某些数据可以在充当FM高速缓存150B的匪内进行高速缓存。
[0034](3)近存储器读高速缓存写绕过模式:这是以上模式的变形,其中允许对来自NVRAM FM 151B中的持久数据进行读高速缓存(即,在作为用于远存储器150B的高速缓存的近存储器中对持久数据进行高速缓存以用于只读操作)。当大多数持久数据是“只读”并且应用使用是高速缓存友好时,这是有用的。
[0035](4)近存储器读高速缓存直写模式:这是近存储器读高速缓存写绕过模式的变形,其中除读高速缓存之外,写命中(write-hit)也被高速缓存。对作为用于FM 150B的高速缓存的近存储器的每次写都引起对FM 151B的写。因而,由于高速缓存的直写性质,所以仍然保证高速缓存线存留。
[0036]当在近存储器直接访问模式中动作时,作为系统存储器151A的近存储器的全部或部分对软件而言直接可见,并且形成SPA空间的部分。此类存储器可以完全在软件控制之下。此类方案可以创建用于软件的非统一存储器地址(NUMA)存储器域,其中其相对于NVRAM系统存储器174而从近存储器144获得更高的性能。通过示例并非限制的方式,此类使用可以被用于需要对某些数据结构非常快访问的某些高性能计算(HPC)和图形应用。[0037]在可替代的实施例中,近存储器直接访问模式通过“钉扎(pinning)”近存储器中的某些高速缓存线(即,具有也并行地存储在NVRAM 142中的数据的高速缓存线)而实现。此类钉扎可以采用更大的多路且组关联的高速缓存来高效地完成。
[0038]图2还图示可以被用作固件存储器的NVRAM 142的部分。例如,BIOS NVRAM 172部分可以被用来存储BIOS映像(作为在BIOS闪速170中存储BIOS信息的替代或附加)。BIOSNVRAM部分172可以是SPA空间的部分,并且可由在处理器核101-104上运行的软件直接寻址,然而BIOS闪速170可通过1/0子系统115而寻址。作为另一个示例,可信平台模块(TPM) NVRAM 173部分可以被用来保护敏感系统信息(例如,加密密钥)。
[0039]因而,如所指示的,NVRAM 142可以被实现成采用各种不同的模式来操作,包括:作为远存储器151B (例如,当近存储器144存在/操作时,无论近存储器是否经由MSC控制124而充当用于FM的高速缓存(在一个或多个高速缓存101A-105之后并且在没有MSC控制124的情况下被直接访问))HXnvram系统存储器174 (不作为远存储器,原因在于没有近存储器存在/操作;并且在没有MSC控制124的情况下被访问);NVRAM大容量储存器152A ;BIOS NVRAM 172 ;以及TPM NVRAM 173。虽然不同的实施例可以规定采用不同方式的NVRAM模式,但图3描述了解码表333的使用。
[0040]图3图示了本发明的实施例可以实现在其上的示例性计算机系统300。计算机系统300包括处理器310和存储器/储存器子系统380,其中NVRAM 142被用于系统存储器、大容量储存器这二者以及可选地固件存储器。在一个实施例中,NVRAM 142包括由计算机系统300所使用的用于存储数据、指令、状态、以及其它持久和非持久信息的整个系统存储器和储存器层次结构。如先前所讨论的,NVRAM 142能够被配置成实现系统存储器、大容量储存器、和固件存储器、TPM存储器等的典型存储器和储存器层次结构中的角色。在图3的实施例中,NVRAM 142被分成FM 151B、NVRAM大容量储存器152A、BIOS NVRAM 173、以及TMPNVRAM 173。还考虑具有不同角色的储存层次,并且NVRAM 142的应用不限于以上所描述的角色。
[0041]通过示例的方式,描述了当作为用于FM 150B的高速缓存的近存储器处于回写高速缓存中时的操作。在一个实施例中,当作为用于FM 150B的高速缓存的近存储器处于以上所提到的回写高速缓存模式中时,读操作将首先到达MSC控制器124,其将执行查找以确定所请求的数据是否存在于充当用于FM 150B的高速缓存的近存储器中(例如,利用标签高速缓存342)。如果存在,那么其将通过1/0子系统115把数据返回到做出请求的CPU、核101-104或1/0设备。如果数据不存在,那么MSC控制器124将把该请求与系统存储器地址一起发送到NVRAM控制器332。NVRAM控制器332将使用解码表333来把系统存储器地址转换为NVRAM物理设备地址(PDA),并且把读操作定向到远存储器115B的该区域。在一个实施例中,解码表333包括NVRAM控制器332将其用来在系统存储器地址和NVRAM PDA之间转换的地址间接表(AIT)组件。在一个实施例中,AIT作为被实现以分布存储器访问操作并且从而减少NVRAM FM 151B上的耗损的耗损均衡算法的部分而更新。可替代地,AIT可以是在NVRAM控制器332内存储的单独的表。
[0042]在从NVRAM FM 151B接收到所请求的数据时,NVRAM控制器332将把所请求的数据返回到将在充当FM高速缓存150B的MSC近存储器中存储所述数据的MSC控制器124,并且还通过1/0子系统115把所述数据发送到做出请求的处理器核101-104、或1/0设备。可以从充当FM高速缓存150B的近存储器直接服务针对该数据的后续请求,直到其由某一其它的NVRAM FM数据所替代。
[0043]如所提到的,在一个实施例中,存储器写操作首先还去到MSC控制器124,该MSC控制器124将该存储器写操作写到充当FM高速缓存150B的MSC近存储器中。在回写高速缓存模式中,当接收到写操作时,可以不将数据直接发送到NVRAM FM 151B。例如,可以仅当充当在其中存储所述数据的FM高速缓存150B的MSC近存储器中的位置必须被重新用于为不同的系统存储器地址而存储数据时,将所述数据发送到NVRAM FM 151B。当这发生时,MSC控制器124注意到数据当前不在NVRAM FM 151B中并且因而将从充当FM高速缓存150B的近存储器中检索该数据并且把其发送到NVRAM控制器332。NVRAM控制器332查找用于系统存储器地址的PDA并且然后将数据写到NVRAM FM 15IB。
[0044]在图3中,NVRAM控制器332被示出使用3个单独的线而连接到FM 151B、NVRAM大容量储存器152A、以及BIOS NVRAM 172。然而,这不必意味着存在将NVRAM控制器332连接到NVRAM 142的这些部分的3个单独的物理总线或通信通道。更确切地,在一些实施例中,公共存储器总线或其它类型的总线(诸如以下参考图4A-M所描述的那些)被用来将NVRAM控制器332通信耦合到FM 151B,NVRAM大容量储存器152A、以及BIOS NVRAM 172。例如,在一个实施例中,图3中的三个线表示总线,诸如存储器总线(例如,DDR3、DDR4等总线),通过其NVRAM控制器332实现事务协议来与NVRAM 142通信。NVRAM控制器332还可以通过支持本地事务协议的总线与NVRAM 142通信,诸如PCI高速总线、桌面管理接口(DMI)总线、或利用事务协议和足够小的事务有效载荷大小(例如,诸如64或128字节的高速缓存线大小)的任何其它类型的总线。
[0045]在一个实施例中,计算机系统300包括执行用于处理器310的中央存储器访问控制的集成存储器控制器(IMC) 331,其耦合到:1)存储器侧高速缓存(MSC)控制器124,以控制对充当远存储器高速缓存150B的近存储器(匪)的访问;以及2) NVRAM控制器332以控制对NVRAM 142的访问。尽管在图3中被图示为单独的单元,但MSC控制器124和NVRAM控制器332可以逻辑地形成MC 331的部分。
[0046]在所图示的实施例中,MSC控制器124包括指定用于充当远存储器高速缓存150B的匪的操作模式(例如,以上所描述的回写高速缓存模式、近存储器绕过模式等)的一组范围寄存器336。在所图示的实施例中,DRAM 144被用作用于充当用于远存储器150B的高速缓存的匪的存储器技术。响应于存储器访问请求,MSC控制器124可以确定(依赖于范围寄存器336中所指定的操作模式)是能够从充当用于FM 150B的高速缓存的匪服务该请求还是必须向NVRAM控制器332发送该请求,所述MSC控制器124然后可以从NVRAM 142的远存储器(FM)部分151B服务该请求。
[0047]在其中NVRAM 142利用PCMS来实现的实施例中,NVRAM控制器332是利用与PCMS技术一致的协议来执行访问的PCMS控制器。如先前所讨论的,PCMS存储器固有地能够以字节的粒度被访问。虽然如此,NVRAM控制器332可以以诸如高速缓存线(例如,64位或128位高速缓存线)或与存储器子系统一致的任何其它级别的粒度之类的较低级别的粒度来访问基于PCMS的远存储器151B。本发明的基本原理不限于用于访问基于PCMS的远存储器151B的任何特定级别的粒度。然而通常,当基于PCMS的远存储器151B被用来形成系统地址空间的部分时,粒度级别将高于仅能够以“块”的级别来执行重写和擦除操作的传统地被用于诸如闪速之类的其它非易失性储存技术的粒度级别(在大小方面最小为对于NOR闪速而言64千字节并且对于NAND闪速而言16千字节)。
[0048]在所图示的实施例中,NVRAM控制器332能够从解码表333读配置数据来建立先前所描述的用于NVRAM 142的模式、大小等,或可替代地,能够依赖于从MC 331和I/O子系统315所传递的解码结果。例如,在制造时或在现场中,计算机系统300能够对解码表333编程,以将NVRAM 142的不同区域标记为除其它之外尤其是系统存储器、经由SATA接口而暴露的大容量储存器、经由USB单批量传输(BOT)接口而暴露的大容量储存器、支持TPM储存的加密储存器。访问通过其被引向NVRAM设备142的不同分区的方式是经由解码逻辑。例如,在一个实施例中,每个分区的地址范围被定义在解码表333中。在一个实施例中,当MC331接收到访问请求时,对请求的目标地址进行解码以揭露请求是定向到存储器、NVRAM大容量储存器、还是I/O。如果其是存储器请求,IMC 131和/或MSC控制器124进一步根据目标地址来确定该请求是定向到作为用于FM 150B的高速缓存的匪还是到FM 151B。对于FM 151B访问而言,该请求被转发到NVRAM控制器332。如果该请求定向到I/O (例如,非储存和储存I/O设备),那么IMC 131将该请求传递到I/O子系统115。I/O子系统115进一步对该地址解码以确定该地址是指向NVRAM大容量储存器152A、BIOS NVRAM 172还是其它非储存或储存I/O设备。如果该地址指向NVRAM大容量储存器152A或BIOS NVRAM 172,那么I/O子系统115将该请求转发到NVRAM控制器332。如果该地址指向TMP NVRAM 173,那么I/O子系统115将该请求传递到TPM 334以执行安全的访问。
[0049]在一个实施例中,被转发到NVRAM控制器332的每个请求伴随着指示访问的类型的属性(也称为“事务类型”)。在一个实施例中,NVRAM控制器332可以模拟用于所请求的访问类型的访问协议,以使得平台的其余部分仍不知道由存储器和储存器层次结构中的NVRAM 142所执行的多个角色。在可替代的实施例中,NVRAM控制器332可以执行对NVRAM142的存储器访问而不管其是何事务类型。要理解的是,解码路径能够与以上所描述的不同。例如,IMC 331可以对访问请求的目标地址进行解码并且确定其是否定向到NVRAM 142。如果其定向到NVRAM 142,那么MC 131根据解码表333生成属性。基于该属性,IMC 131然后将请求转发到适当的下游逻辑(例如,NVRAM控制器332和I/O子系统315)以执行所请求的数据访问。在又另一个实施例中,如果对应的属性未从上游逻辑(例如,IMC 331和I/O子系统315)传递下去,那么NVRAM控制器332可以对目标地址进行解码。也可以实现其它解码路径。
[0050]诸如本文所描述的新存储器架构的出现提供了很多新的可能性。尽管以下进一步以大得多的长度来讨论,但就在以下快速地突显了这些可能性中的一些。
[0051]根据一个可能的实现,NVRAM 142充当用于系统存储器中的传统DRAM技术的全部的替代或补充。在一个实施例中,NVRAM 142表示第二级系统存储器的引入(例如,系统存储器可以视为具有包括作为高速缓存150B的近存储器的第一级系统存储器(DRAM设备340的部分)和包括远存储器(FM) 151B的第二级系统存储器(NVRAM 142的部分)。
[0052]根据一些实施例,NVRAM 142充当用于闪速/磁/光大容量储存器152B的全部的替代或补充。如先前所描述的,在一些实施例中,即使NVRAM 152A能够字节级别可寻址,NVRAM控制器332仍然可以依赖于实现而采用多个字节的块(例如,64千字节、128千字节等)来访问NVRAM大容量储存器152A。由NVRAM控制器332从NVRAM大容量储存器152A访问数据的特定方式可以对由处理器310所运行的软件而言透明。例如,即使可以与闪速/磁/光大容量储存器152A不同地访问NVRAM大容量储存器152A,操作系统仍然可以将NVRAM大容量储存器152A视为标准大容量储存设备(例如,串行ATA硬盘驱动或其它标准形式的大容量储存设备)。
[0053]在其中NVRAM大容量储存器152A充当用于闪速/磁/光大容量储存器152B的全部替代的实施例中,不必使用储存器驱动器进行块可寻址储存器访问。储存器驱动器开销从储存器访问中的移除能够提高访问速度并且节约功率。在其中期望NVRAM大容量储存器152A对于OS和/或应用而言表现为块可访问且不可与闪速/磁/光大容量储存器152B区分的可替代实施例中,模拟的储存器驱动器能够被用来向软件暴露块可访问接口(例如,通用串行总线(USB)单批量传输(BOT)L O ;串行高级技术附件(SATA)3.0等)以供访问NVRAM大容量储存器152A。
[0054]在一个实施例中,NVRAM 142充当用于诸如BIOS闪速362和TPM闪速372之类的固件存储器的全部的替代或补充(在图3中利用点线来图示以指示其是可选的)。例如,NVRAM142可以包括BIOS NVRAM 172部分以补充或替代BIOS闪速362,并且可以包括TPM NVRAM173部分以补充或替代TPM闪速372。固件存储器还能够存储由TPM 334用来保护敏感系统信息(例如,加密密钥)的系统持久状态。在一个实施例中,将NVRAM 142用于固件存储器消除了第三方闪速部件存储对系统操作而言关键的代码和数据的需要。
[0055]然后继续图3的系统的讨论,尽管在图3中为了简单而示出了单个处理器310,但在一些实施例中,计算机系统100的架构可以包括多个处理器。处理器310可以是任何类型的数据处理器,包括通用或专用中央处理单元(CPU)、专用集成电路(ASIC)或数字信号处理器(DSP)。例如,处理器310可以是通用处理器,诸如C0re?i3、i5、i7、2双核和四核、Xeon?、或Itanium?处理器,所有的这些都可从加利福尼亚州圣克拉拉市的因特尔公司获得。可替代地,处理器310可以来自另一个公司,诸如加拿大森尼维尔市的ARM持股有限公司、加拿大森尼维尔市的MIPS科技公司等。处理器310可以是专用处理器,诸如,例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入处理器等。处理器310可以在被包括在一个或多个封装内的一个或多个芯片上实现。处理器310可以属于和/或可以使用许多工艺技术(诸如,例如BiCM0S、C0MS、或NM0S)中的任何一个而实现在一个或多个衬底上。在图3中所示出的实施例中,处理器310具有片上系统(SOC)配置。
[0056]在一个实施例中,处理器310包括集成图形单元311,其包括用于运行诸如3D或2D图形命令之类的图形命令的逻辑。虽然本发明的实施例不限于任何特定的集成图形单元311,但在一个实施例中,图形单元311能够运行行业标准图形命令,诸如由OpenGL和/或Direct X应用编程接口(API)(例如,OpenGL 4.1和Direct X 11)所规定的那些。
[0057]再次,尽管为了清楚起见,在图3中图示了单个核,但处理器310也可以包括一个或多个核101-104。在许多实施例中,一个或多个核101-104包括内部功能块,诸如一个或多个执行单元、回收单元、一组通用和特定寄存器等。如果一个或多个核是多线程或超线程的,那么每个硬件线程也可以视为“逻辑”核。核101-104可以在架构和/或指令集方面是同质或异质的。例如,一些核可以是有序的,而其它是无序的。作为另一个示例,两个或更多的核可以能够运行相同的指令集,而其它可以仅能够运行该指令集的子集或不同的指令集。[0058]处理器310还可以包括可以被实现为SRAM和/或DRAM的一个或多个高速缓存,诸如高速缓存313。在未示出的许多实施例中,不同于高速缓存313的附加的高速缓存被实现成使得多个级别的高速缓存存在于一个或多个核101-104中的执行单元与存储器设备150B和151B之间。例如,该组共享高速缓存单元可以包括高级高速缓存(诸如级别I (LI)高速缓存)、中级高速缓存(诸如级别2 (L2)、级别3 (L3)、级别4 (L4)、或其它级别的高速缓存、(LLC)、和/或其不同的组合。在不同的实施例中,高速缓存313可以采用不同的方式来分派,并且在不同的实施例中可以是许多不同的大小之一。例如,高速缓存313可以是8兆字节(MB)高速缓存、16MB高速缓存等。另外地,在不同的实施例中,高速缓存可以是直接映射的高速缓存、全关联的高速缓存、多路且组关联的高速缓存、或具有另一种类型的映射的高速缓存。在包括多个核的其它实施例中,高速缓存313可以包括在所有核之间共享的一个大部分,或者可以被分成若干单独功能片(例如,每个核一片)。高速缓存313还可以包括所有核之间共享的一个部分以及对于每核而言单独功能片的若干其它部分。
[0059]处理器310还可以包括归属代理314,其包括协调和操作一个或多个核101-104的那些组件。归属代理单元314可以包括例如功率控制单元(P⑶)和显示单元。P⑶可以是或包括对于调节一个或多个核101-104和集成图形单元311的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
[0060]如所提到的,在一些实施例中,处理器310包括集成存储器控制器(MC)331、近存储器高速缓存(MSC)控制器、以及NVRAM控制器332,所有这些能够在与处理器310相同的芯片上、或在连接到处理器310的单独的芯片和/或封装上。DRAM设备144可以在与MC331和MSC控制器124相同的芯片或不同的芯片上;因而,一个芯片可以具有处理器310和DRAM设备144 ;一个芯片可以具有处理器310并且另一个具有DRAM设备144以及(这些芯片可以在相同或不同的封装中);一个芯片可以具有一个或多个核101-104并且另一个具有IMC 331、MSC控制器124和DRAM 144 (这些芯片可以在相同或不同的封装中);一个芯片可以具有一个或多个核101-104,另一个具有MC 331和MSC控制器124,并且另一个具有DRAM144 (这些芯片可以在相同或不同的封装中)等。
[0061]在一些实施例中,处理器310包括耦合到MC 331的I/O子系统115。I/O子系统115使得能够实现处理器310与以下串行或并行I/O设备之间的通信:一个或多个网络336(诸如,局域网、广域网、或因特网)、储存I/O设备(诸如,闪速/磁/光大容量储存器152B、BIOS闪速362、TPM闪速372)、以及一个或多个非储存I/O设备337 (诸如,显示器、键盘、扬声器等)。I/O子系统115可以包括平台控制器中枢(PCH)(未示出),其进一步包括若干I/O适配器338和其它I/O电路以提供对储存及非储存I/O设备和网络的访问。为了实现此,I/O子系统115可以具有用于所利用的每个I/O协议的至少一个集成I/O适配器338。I/O子系统115能够处于与处理器310相同的芯片上、或者连接到处理器310的单独的芯片和/或封装上。
[0062]I/O适配器338将处理器310内所利用的主机通信协议转换为与特定的I/O设备兼容的协议。对于闪速/磁/光大容量储存器152B而言,I/O适配器338可以转换的协议中的一些除其它之外尤其包括外围组件互连(PCI)-高速(PC1-E),3.0、USB,3.0、SATA, 3.0、小型计算机系统接口(SCSI)、超级-640 ;以及电气与电子工程师协会(IEEE) 1394 “火线”。对于BIOS闪速362而言,I/O适配器338可以转换的协议中的一些除其它之外尤其包括串行外围接口(SPI)、微总线。另外地,可以存在一个或多个无线协议I/O适配器。无线协议的示例除其它之外尤其被用于个域网,诸如IEEE 802.15和蓝牙,4.0 ;无线局域网,诸如基于IEEE 802.11的无线协议;和蜂窝协议。
[0063]在一些实施例中,I/O子系统115耦合到TPM控制334以控制对诸如安全数据、加密密钥、平台配置信息等之类的系统持久状态的访问。在一个实施例中,这些系统持久状态被存储在TMP NVRAM 173中并且经由NVRAM控制器332被访问。
[0064]在一个实施例中,TPM 334是具有密码功能的安全微控制器。TPM 334具有多个信任相关的能力;例如,用于确保由TPM所保护的数据仅可用于相同的TPM的“密封”能力。TPM 334能够使用其加密能力来保护数据和密钥(例如,秘密)。在一个实施例中,TPM 334具有允许其认证硬件设备和平台的唯一且秘密的RSA密钥。例如,TPM 334能够验证:寻求对计算机系统300中存储的数据的访问的系统是所预期的系统。TPM 334还能够报告平台(例如,计算机系统300)的完整性。这允许外部资源(例如,网络上的服务器)确定平台的可信性,但不防止由用户对平台的访问。
[0065]在一些实施例中,I/O子系统315还包括管理引擎(ME) 335,其是允许系统管理员监视、维护、更新、升级、和修复计算机系统300的微处理器。在一个实施例中,系统管理员能够通过经由网络336通过ME 335来编辑解码表333的内容而远程地配置计算机系统300。
[0066]为了解释的方便,本申请的剩余部分有时将NVRAM 142称为PCMS设备。PCMS设备包括非易失性的多层(垂直堆叠的)PCM单元阵列,具有低功耗,并且在位级别可修改。照此,在以下讨论中,术语“NVRAM设备”和“PCMS设备”可以可互换地使用。然而应该认识到,如以上所讨论的,除PCMS之外的不同的技术也可以被用于NVRAM 142。 [0067]应该理解,即使计算机系统的处理器不具有处理器310的所有以上所描述的组件,或者具有比处理器310更多的组件,该计算机系统也能够将NVRAM 142用于系统存储器、大容量储存器、固件存储器和/或其它存储器和储存器目的。
[0068]在图3中所示出的特定的实施例中,MSC控制器124和NVRAM控制器332位于与处理器310相同的管芯或封装(被称为CPU封装)上。在其它实施例中,MSC控制器124和/或NVRAM控制器332可以位于管芯外或CPU封装外,通过诸如存储器总线(像DDR总线(例如,DDR3、DDR4等))、PCI高速总线、桌面管理接口(DMI)总线、或任何其它类型的总线之类的总线而耦合到处理器310或CPU封装。
[0069]作为用于远存储器的高速缓存层的近存储器的实现
如以上所讨论的,在各种配置中,近存储器能够被配置为用于远存储器的高速缓存层。本文,可以为特定的(例如,特定范围的)系统存储器地址预留特定的远存储器储存设备(例如,特定安装的PCMS存储器芯片)。照此,特定的近存储器储存设备(例如,特定安装的DRAM存储器芯片)可以被设计成充当用于特定的远存储器储存设备的高速缓存层。因此,这些特定的近存储器储存设备应该具有减少最频繁访问的系统存储器地址的访问时间的效果,特定的远存储器储存设备被设计成为所述系统存储器地址提供储存。
[0070]根据进一步的方法,在图4中所观察的,近存储器设备被配置为用于其远存储器配对物(counterpart)的直接映射的高速缓存。如本领域中良好地理解的,直接映射的高速缓存被设计成使得高速缓存中的每个条目为更深存储中的唯一条目集而预留。也就是说,在该情况下,远存储器401的储存空间能够被视为分解成不同的储存集401_1、401_2、…401_N,其中每个集被分配高速缓存402中的条目。照此,如图4中所观察的,条目402_1为与集401_1关联的任何的系统存储器地址而预留;条目402_2为与集401_2关联的任何的系统存储器地址而预留等。通常,在图4以及图7a、8a和11的任何一个中出现的任何的结构“逻辑块”可以大部分地(如果不是整体地)利用逻辑电路来实现。
[0071]图4还示出可以例如从CPU处理核被提供的用于向或从系统存储器的读或写事务的示例性系统存储器地址的部分。实质上,一组集合位404定义系统存储器地址与哪个集合相关联,并且一组标签位405定义系统存储器地址与适当的集合中的哪个条目(其可以对应于高速缓存线)相对应。较低阶位403标识高速缓存线内的特定字节。
[0072]例如,根据一个示例性实现,高速缓存线大小是64字节,高速缓存402利用大约I千兆字节(GB)的DRAM储存来实现,并且远存储器储存401利用大约16千兆字节(GB)的PCMS储存来实现。地址部分405、404和403对应于34位的地址空间A [33:0]。本文,较低阶位403对应于地址位A [5:0],集合地址位404对应于地址位A [29:6],并且标签地址位405对应于地址位A [33:30]。
[0073]根据该布置,注意四个标签位405指定与DRAM储存与PCMS储存之比对应的I至16的范围内的值。照此,高速缓存402中的每个条目将映射到16个不同的远存储器401高速缓存线(即,提供跨16个不同的远存储器401高速缓存线的可高速缓存支持)。该布置本质上定义远存储器401中的每个集合的大小(每个集合16个高速缓存线)。与高速缓存402中的条目的数量对应的集合的数量由集合位404定义。在该示例中,集合位404与地址空间的24位(地址位A[29:6])相对应,其继而与16,777,216个高速缓存条目/集合相对应。因而,64字节高速缓存线与高速缓存402内的大约IGB的储存(16,777,216 x 64字节=I, 073,741,824 字节)相对应。
[0074]如果高速缓存402的大小被加倍以包括2GB的DRAM,那么将存在每个集合8个高速缓存线(而不是16),原因在于DRAM =PCMS比将加倍到2:16=1:8。照此标签405将利用3位(A[33:31])而不是4位来表达。DRAM空间的加倍通过将附加的最高有效位提供到集合位404 (即,地址位A [30:6]而不是A [29:6])(这本质上使集合的数量加倍)来进一步考虑。
[0075]图4中所观察的远存储器储存401可以仅与计算机系统的总的远存储器储存的子集相对应。例如,用于计算系统的完整系统存储器可以通过包含图4中所观察的近/远存储器子系统的多个实例而实现(例如,一个实例用于系统存储器地址的每个唯一子集)。本文,根据一种方法,较高阶位408被用来指示多个近/远存储器子系统之中的哪个特定实例申请给定的系统存储器访问。例如,如果每个实例与起源于主机侧409 (或更一般地,主机)的不同的存储器通道相对应,那么较高阶位408将实际上指定可应用的存储器通道。在采用被称为“置换”寻址方法的替代方法中,较高阶位408不存在。更确切地,位405表示最高阶位,并且最低阶位空间403内的位被用来确定哪个存储器通道要被用于该地址。该方法被认为通过实际上将更多随机化引入到随时间而利用的特定存储器通道中而给出更好的系统性能。地址位能够采用任何次序。
[0076]图5 (写)和图6 (读)描绘图4的近/远存储器子系统的可能的操作方案。参考图4和图5,针对写操作,集成存储器控制器431接收包括写地址和要写的数据的写事务501。该事务可以存储在缓冲器415中。在确定哪个近/远存储器子系统实例应用时(例如,根据较高阶位408的分析),存储器侧控制(MSC)逻辑424的命中(hit)未命中(miss)逻辑414向近存储器高速缓存接口逻辑416提供集合位404,来使得用于可应用集合的高速缓存条目从近存储器高速缓存402来读502。本文,近存储器高速缓存接口逻辑416特定于存储器通道401上的近存储器(例如,DRAM)而负责实现协议,包括电信号的生成/接收。
[0077]如图4中所观察的,在实施例中,每个高速缓存条目与其对应的数据410 —起包括嵌入标签411、脏位412和ECC信息413。嵌入标签411标识远存储器401中的条目的可应用集合中的哪个高速缓存线被高速缓存在高速缓存402中。脏位412指示被高速缓存的条目是否为用于高速缓存线的唯一有效复制。如本领域中公知的,ECC信息413被用来检测以及可能地校正从/向高速缓存402读和/或写条目时发生的错误。
[0078]在用于可应用集合的被高速缓存的条目利用近存储器高速缓存接口逻辑416被读之后,MSC命中/未命中逻辑414将刚读的条目的嵌入标签411与写事务的地址的标签405相比较503 (注意,读自该高速缓存的条目可以存储在读缓冲器417中)。如果它们匹配,那么被高速缓存的条目与事务的目标相对应(高速缓存命中)。因此,命中/未命中逻辑414使得近存储器高速缓存接口逻辑利用为事务而接收的新数据来改写504高速缓存402中的刚读的高速缓存条目。处于写执行中的MSC控制逻辑424保持嵌入标签411的值不变。MSC控制逻辑424还设置脏位412以指示新写的条目与高速缓存线的唯一有效版本相对应,并且计算用于高速缓存线的新ECC数据。读自读缓冲器417中的高速缓存402的高速缓存线被丢弃。此时,该过程以高速缓存命中而结束。
[0079]如果读自高速缓存402的高速缓存线的嵌入标签411不匹配于事务地址的标签405 (高速缓存未命中),与高速缓存命中一样,命中/未命中逻辑414使得近存储器高速缓存接口逻辑416将与该事务关联的新数据写505到高速缓存402中(利用如地址规定的集合位404),以实际上改写刚读自高速缓存402的高速缓存线。嵌入标签411被写为与该事务关联的标签位405。脏位412被写以指示被高速缓存的条目是用于该高速缓存线的唯一有效复制。存储器控制器的ECC逻辑420计算用于随该事务而接收到的高速缓存线的ECC信息413,并且近存储器高速缓存接口逻辑416将其与高速缓存线一起写到高速缓存402中。
[0080]关于刚读自高速缓存并且存储在读缓冲器417中的高速缓存线,近存储器命中/未命中逻辑414检查其关联的脏位506,并且如果脏位指示读缓冲器417中的高速缓存线是高速缓存线的唯一有效版本(脏位被“设置”),命中/未命中逻辑414使得NVRAM控制器432通过其远存储器接口逻辑418将高速缓存线写507到其适当的远存储器位置中(使用刚如地址而读的事务的集合位404和高速缓存线的嵌入标签位411)。本文,远存储器接口逻辑418特定于存储器通道401上的远存储器(例如,PCMS)而负责实现协议,包括电信号的生成/接收。如果读缓冲器417中的高速缓存线的脏位指示读缓冲器417中的高速缓存线不是高速缓存线的唯一有效版本,那么读缓冲器中的高速缓存线被丢弃。
[0081]本文,在其中到近存储器高速缓存和远存储器的接口 416、418不忙的时刻期间,MSC控制逻辑424可以从高速缓存402读高速缓存线条目,并且针对设置了其脏位的那些高速缓存线条目,存储器控制器将把其重写到远存储器中,并且“清除”其关联的脏位以指示高速缓存402中的高速缓存线不再是高速缓存线的唯一有效复制。
[0082]此外,相关地指出,相应的近存储器高速缓存和远存储器接口 416、418能够彼此完全隔离或者关于彼此具有一定重叠。本文,重叠与相应的近和远存储器协议和/或信令的相同的方面(例如,相同的时钟信号、相同的管芯上终止信号、相同的寻址信号等)相对应,并且因而可以使用相同的电路来访问近存储器高速缓存和远存储器。非重叠区域与两个协议和/或信令的不相同的方面相对应,并且因而具有可应用于近存储器高速缓存和远存储器中的仅一个的电路。
[0083]以上所描述的架构能够被用于其中MSC控制逻辑424通过与NVRAM控制器432和远存储器401通过其而耦合通过的存储器通道不同的隔离存储器通道来耦合到近存储器高速缓存402。本文,对于任何特定的通道,依赖于是近存储器高速缓存还是远存储器被耦合到通道来启用接口 416、418之一而禁用另一个。同样地,启用MSC控制逻辑424和NVRAM控制器432之一而禁用另一个。在实施例中,例如可以由BIOS写到的与存储器控制器(未示出)关联的配置寄存器确定要启用哪个配置。
[0084]以上相同的架构还可以支持其中近存储器高速缓存和远存储器耦合到相同的通道421的另一个配置。在该情况下,接口 416、416的集成能够被视为到通道421的单个接口。根据该配置,“启用”接口 416、418这二者和控制器424、432这二者,但仅一组(用于近存储器的接口 416和控制器424,以及用于远存储器的接口 418和控制器432)能够在任何特定的时间点使用该通道。本文,通道的使用随时间而在近存储器信令和远存储器信令之间交替。该配置可以利用例如前述的配置寄存器中的第三设置来建立。以下讨论主要与该设置相关。
[0085]本文,通过能够将相同的通道用于近存储器访问和远存储器访问这二者,插入到通道中的近存储器高速缓存能够被用作用于插入到相同的通道中的远存储器储存的近存储器高速缓存。换种说法,可以将特定的系统存储器地址分配到一个单个通道。插入到通道中的远存储器设备为这些特定的系统存储器地址提供了远存储器储存,并且插入到相同的通道中的近存储器储存为这些远存储器设备提供了高速缓存空间。照此,以上所描述的调用近存储器和远存储器这二者(例如,由于高速缓存未命中和/或脏位被设置)的事务能够通过相同的通道而发生。
[0086]根据一种方法,通道被设计成包括单独的平板卡(例如,DIMM)能够插入到其中的机械插座/连接器,所述单独的平板卡在其上布置了集成电路。本文,所述卡具有与通道的插座/连接器配对的对应的插座/连接器。能够将具有仅远存储器储存的一个或多个卡插入到第一组连接器中,以实现用于通道的远存储器储存。仅具有近存储器储存的一个或多个卡能够插入到相同的通道中并且充当用于远存储器卡的近存储器高速缓存。
[0087]本文,在远存储器储存固有地比近存储器储存更密集但近存储器储存固有地比远存储器储存更快的情况下,能够利用考虑到的“速度对密度”权衡来设计通道。也就是说,越多的近存储器卡插入到通道中,通道将执行得越快,但代价是越少的由通道所支持的总储存容量。反之,越少的近存储器卡插入到通道中,通道将执行得越慢,但具有由通道所支持的增强的储存容量的附加益处。极端情况可以包括其中仅在通道中填入较快的存储器储存技术(例如,DRAM)(在该情况下,其可以像用于另一个通道上的远存储器的高速缓存一样动作,或不像高速缓存一样动作而是被分配其自身的特定系统存储器地址空间)或仅在通道中填入较慢的存储器储存技术(例如,PCMS )的实施例。
[0088]在其它实施例中,将近存储器和远存储器布置在相同的卡上,在该情况下,即使多个此类卡被插入到相同的通道中,速度/密度权衡也由所述卡来确定。[0089]图6描绘读事务,根据图6的方法,存储器控制器431接收包括读地址611的读事务。事务可以存储在缓冲器415中。在确定哪个近/远存储器子系统(例如,哪个存储器通道)实例应用时,MSC控制器的命中未命中逻辑414向近存储器高速缓存接口逻辑416提供集合位404,以使得用于可应用集合的被高速缓存的条目从高速缓存402来读612。
[0090]在利用高速缓存接口逻辑416来读用于可应用集合的被高速缓存的条目之后,命中/未命中逻辑414将刚读的条目的嵌入标签411与读事务的地址的标签405相比较613。如果其匹配,那么被高速缓存的条目与事务的目标相对应(高速缓存命中)。因此,读过程结束。如果读自高速缓存402的高速缓存线的嵌入标签411与事务地址的标签405不匹配(高速缓存未命中),那么命中/未命中逻辑414使得远存储器接口逻辑418读614事务中所指定的地址处的远存储器储存(403、404、405)。然后,将读自远存储器的高速缓存线写到高速缓存615中,并且如果在步骤612中为读自近存储器高速缓存的高速缓存线设置了脏位,那么读自近存储器高速缓存的高速缓存线被写到远存储器616中。
[0091]尽管MSC控制器424可以执行对读自远存储器的读数据进行检查的ECC,但如以下更详细地描述的,根据各种实施例,ECC检查可以由驻存于一个或多个远存储器设备本地(例如,附到一个或多个PCMS设备被附到的相同的DMM)的逻辑电路422来执行。该相同的逻辑电路422还可以在高速缓存未命中和脏位被“设置”的情况下为写事务计算ECC信
肩、O
[0092]此外,在其中相同的存储器通道421被用来传送近存储器信令和远存储器信令的实施例中,逻辑电 路422能够被用来“加速”以上所描述的核写和读过程。就在以下讨论了这些加速中的一些。
[0093]利用耦合到相同的存储器通道的近存储器和远存储器的读和写事务 A.近存储器在远存储器控制逻辑的“前面”
图7a示出“近存储器在前面”方法,而图8a示出“近存储器在后面”方法。以下将进一步更详细地讨论“近存储器在后面”方法。对于以下的每个模型以及其随后的讨论而言,术语“存储器控制器”或“主机”或“主机侧”被用来(主要)指代由MSC控制器或NVRAM控制器所执行的电路和/或动作。在特定的情形下应用哪个电路在以下中直截了当地理解:当近存储器高速缓存在通道上被访问时,MSC控制器被包含,然而当远存储器在通道上被访问时,NVRAM控制器被包含。此外,以下讨论还涉及远离主机侧并且位于“通道上之外”的远存储器附近的“远存储器控制器”或“远存储器控制逻辑”。本文,远存储器控制逻辑能够被视为NVRAM控制器的组件,其中NVRAM控制器的另一个组件驻存在主机上以从主机侧执行适当的远存储器访问(与以下的实施例一致)。
[0094]参考图7a,注意近存储器储存设备702_1、702_2...702_Ν (诸如多个DRAM芯片)独立于远存储器逻辑电路722 (及其关联的远存储器储存设备701_1、701_2、…702_Μ (诸如多个PCMS芯片)耦合到通道721而耦合到相同的通道721。
[0095]换种说法,近存储器平台730和远存储器平台732独立于彼此而单独地连接到相同的通道721。该方法能够例如利用插入到相同的存储器通道中的具有不同的相应的存储器储存技术的不同的DMMS (例如,近存储器平台730与DRAM DIMM相对应,并且远存储器平台732与PCMS DIMM相对应)来实现。该方法还能够例如利用包含不同的相应的存储器储存技术(例如,近存储器平台730与DIMM的一侧相对应,并且远存储器平台732与DIMM的另一侧相对应)的相同的DIMM来实现。
[0096]图7b示出包括高速缓存未命中的读事务,其中远存储器控制逻辑722自动地检测高速缓存未命中并且作为响应自动地读远存储器。参考图7a和7b,主机侧MSC控制逻辑424a接收读请求761并且从高速缓存702读用于可应用集合的高速缓存线条目762。作为访问高速缓存702的通道721上的事务的部分,主机侧MSC控制逻辑424a将原始读请求的标签位705 “偷传(sneak)”到通道721上。在进一步的实施例中,主机侧MSC控制逻辑424a还能够偷传指示由存储器控制器接收到的原始事务请求是读请求(而不是写请求)的信息780。
[0097]根据一种方法,在以下更详细地解释的,在近存储器地址总线的未使用行或列地址上“偷传”标签位705和读/写信息780。在进一步的实施例中,与行地址位相比更多的列地址位被用于该目的。根据还进一步的方法,通过被用于将寻址信息传送到近存储器储存设备(并且潜在地,还有远存储器设备)的通道721的命令总线组件来提供所偷传的信息705,780ο
[0098]因为远程控制逻辑电路722连接到通道721,其能够“抓取(scarf )”:1)来自原始请求的标签位705 (以及读事务的指示780),当其在通道721上被偷传时;2)应用于近存储器高速缓存702的读地址;以及3)高速缓存线及其关联的嵌入标签位711、脏位712以及ECC信息713,当从近存储器高速缓存702读时。本文,抓取763被理解成包括将这些信息项的任何/所有本地地(例如,在被嵌入的寄存器空间750中)存储在逻辑电路722上。
[0099]照此,还包括其自身命中/未命中逻辑723的远存储器控制逻辑电路722能够与存储器控制器的命中/未命中逻辑714并行地确定764存在高速缓存命中还是高速缓存未命中。在高速缓存命中的情况下,远存储器控制逻辑电路722不采取进一步的动作并且存储器控制器731对读自高速缓存的数据执行ECC计算,并且将其与嵌入的ECC信息714相比较以确定高速缓存读数据是否有效。
[0100]然而,在高速缓存未命中的情况下,并且在知道事务是读事务的情况下(例如,根据偷传信息780),逻辑电路722将意识到将需要读其组成的远存储器储存701来最终服务原始读请求。照此,根据一个实施例,逻辑电路722能够自动地读765其关联的远存储器资源732来检索所期望的读信息,对读自远存储器(其还具有嵌入的ECC信息)的高速缓存线执行ECC计算,并且如果在数据中不存在损坏,则提供所期望的远存储器读信息。
[0101]如以上刚提及的,为了执行这种“自动读”,应该由存储器控制器731采用某种方式来通知逻辑电路722:整体事务是与写操作相对的读操作(如果以上所描述的事务是写事务,那么逻辑电路将不需要执行远存储器的读)。根据一个实施例,如以上已经提到的,指示关于是写事务还是读事务起作用的读/写信息780被“偷传”到逻辑电路722 (例如,与原始事务请求的标签信息705 —起)。
[0102]与远存储器控制逻辑722自动读远存储器732并行地,存储器控制器731能够在通道721上将读请求786调度并发布到远存储器控制逻辑722。如以下更详细地描述的,在实施例中,存储器控制器731被配置成通过通道721传送两个不同的协议:i)特定于近存储器设备730的第一协议(例如,行业标准DDR DRAM协议);以及ii)特定于远存储器设备732的第二协议(例如,特定于PCMS设备的协议)。本文,近存储器高速缓存读请求762利用第一协议来实现,并且相比之下,对远存储器786的读请求利用第二协议来实现。[0103]在进一步实施例中,如以下进一步更详细地描述的,因为由远存储器设备732响应读请求786所需的时间不能被确定无疑地预测,所以整体读事务的标识符790 (“事务id”)与由存储器控制器所发送的远存储器读请求786 —起被发送到远存储器控制逻辑722。当该数据最后从远存储器732读时,其最终被发送787到存储器控制器731。在实施例中,作为事务的部分,事务标识符790在将读数据发送到存储器控制器731的通道721上被返回到存储器控制器731。
[0104]本文,事务标识符790的包含用以通知存储器控制器731:读数据相关的事务。这可以在以下中尤其重要:如以下更详细描述的,远存储器控制逻辑722维持缓冲器以存储来自存储器控制器731的多个读请求,并且远存储器的读响应时间的不确定性导致来自远存储器的“无序”(000)读响应(在前面的读请求之前可以响应后续的读请求)。在进一步实施例中,在通道721上所使用的两个协议的特有特征在于近存储器协议将设备730看作不正式请求通道721的使用的从设备(因为其定时被良好地理解并且在存储器控制器的控制之下)。相比之下,远存储器协议允许远存储器控制逻辑722向存储器控制器731发布用于将读数据发送到存储器控制器731的请求。作为进一步的区别点,在近存储器高速缓存读的期间被“偷传”到通道上的标签705和r/w信息780在以下意义上被“偷传”:该信息被运输到远存储器控制逻辑电路,并且与潜在的远存储器访问相关(即使技术上近存储器协议在起作用)。
[0105]可替代于以上关于图7b所讨论的“自动”读,远存储器控制逻辑电路722能够被设计成制止自动读所需的数据并且作为代替在高速缓存未命中的情况下等待来自存储器控制器的读请求及对应的地址。在该情况下,当近存储器高速缓存被读时,逻辑电路722不需要抓取地址,也不需要将关于整体事务是读事务还是写事务的任何信息偷传到逻辑电路722。如果远存储器控制逻辑722能够无序地服务读请求,那么仍然可以需要将事务ID 790与读请求一起发送到远存储器控制逻辑722。
[0106]不管逻辑电路722是否对高速缓存未命中自动地执行所需的远存储器读,如图7c中所观察的,在由远存储器控制逻辑电路722检测到高速缓存未命中的情况下,远存储器控制逻辑电路722的命中/未命中逻辑电路723能够被设计成检查在抓取的高速缓存线766中是否设置脏位712。如果如此,抓取的高速缓存线将需要被写到远存储器732。照此,然后逻辑电路722能够在没有来自存储器控制器的正式请求的情况下,将抓取的高速缓存线自动地存储767到其组成的远存储器储存资源732中(包括在存储ECC信息之前重新计算ECC信息,以确保数据未损坏)。
[0107]本文,依赖于实现,对于对远存储器平台的写操作而言,逻辑电路722能够通过如以上所描述的抓取近存储器高速缓存读的较早的读地址以及将其与读自近存储器高速缓存的高速缓存线的嵌入标签信息合并来构造适当的写地址。可替代地,如果逻辑电路722不抓取高速缓存读地址,那么其能够通过当其请求从远存储器读正确信息时,将嵌入在抓取的高速缓存线中的标签信息与由存储器控制器所提供的读地址合并来构造适当的写地址。具体地,逻辑电路722能够将读请求的设置和降低阶位部分404、405与抓取的高速缓存线上的嵌入标签711合并,以完全构造正确的地址。
[0108]如以上所描述的自动执行对远存储器平台732的写消除了存储器控制器731请求对远存储器平台的写的需要,但同样并且促成使通道721完全摆脱与对远存储器平台的写相关的任何活动。这可以与通道的速度方面的显著的改善相对应。
[0109]相关地指出以上刚描述的加速对:远存储器的自动读(图7b)和对远存储器的自动写(图7c)能够依赖于设计者选择而采用任何组合(这二者、只一者)来实现。
[0110]作为对比,不具有由远存储器控制器722的存在所提供的加速的基本读事务名义上包括用于在脏位被设置时经历高速缓存未命中的读事务的6个原子操作。这些是:高速缓存读请求、高速缓存读响应、远存储器读请求、远存储器读响应、近存储器写请求(高速缓存更新)和远存储器写请求(因为脏位被设置,所以将读自高速缓存的高速缓存线加载到远存储器中)。
[0111]相比之下,在实现图7b (远存储器的自动读)和图7c (对远存储器的自动写)的加速这二者时,整体事务能够利用对通道的仅4个原子操作来完成。也就是说,能够消除远存储器读请求和远存储器写请求。
[0112]以上讨论涉及在近存储器在远存储器控制逻辑“的前面”时的读事务过程。在写事务过程的情况下,参考图7d,响应于接收到写事务751,存储器控制器发起近存储器高速缓存读并且偷传标签?目息705和指不整体事务是写并不是读的彳目息780,如以上所描述的752。在完成近存储器的读之后,存储器控制器731在高速缓存中用新数据改写旧数据753。在实施例中,存储器控制器检查来看是否存在高速缓存命中754和/或脏位是否被设置755,以理解远存储器控制逻辑电路将采取什么动作(例如,用于通道调度),但不以其它方式对通道采取进一步的动作。
[0113]如以上所描述的,远存储器控制逻辑电路722抓取被用来访问高速缓存的地址、被偷传的信息705、780以及读自高速缓存的高速缓存线及其关联的信息756,并且根据其自身来检测高速缓存未命中 757。如果存在高速缓存命中,那么远存储器控制逻辑不采取进一步的动作。如果存在高速缓存未命中,那么依赖于设计实现,类似于以上所描述的过程,逻辑电路722还能够检测758脏位是否被设置以及将被抓取的高速缓存线自动地写759到远存储器中(在没有来自存储器控制器的请求的情况下)。
[0114]采用替代的方法,存储器控制器731在检测到高速缓存未命中和脏位被设置754、755之后,将请求发送到远存储器控制逻辑722 (包括写地址)以将读自高速缓存的高速缓存线写到远存储器中。存储器控制器还能够通过通道721将读自高速缓存的高速缓存线发送到远存储器控制逻辑。
[0115]B.近存储器在远存储器控制逻辑“后面”
参考图8a,其描绘了“近存储器在后面”架构,注意近存储器储存设备802_1、802_2...802_N (诸如多个DRAM芯片)至少在一定程度上通过远存储器控制逻辑电路822而耦合到通道821的至少部分。然而,本文,用于“近存储器在前面方法”的远存储器控制逻辑包括用于通道和远存储器的不同接口,相比之下,用于“近存储器在后面”方法的远存储器控制逻辑包括用于通道、远存储器和近存储器的不同接口。根据一个实施例,通道821能够被视为具有3个主要的子组件:1)命令总线841 (通过其来发送读和写请求及其对应的地址);
2)数据总线842 (通过其来发送读和写数据);以及3)控制信号843 (例如,一个或多个选择信号、一个或多个时钟使能信号、一个或多个管芯上终止信号)。
[0116]如图8a的特定方法中所描绘的,近存储器储存平台830的数据总线890可以独立地耦合891到数据总线842,但通过逻辑电路822耦合到命令总线841和控制信号843组件。远存储器储存平台831通过逻辑电路822耦合到所有3个子组件841、842、843。在替代的实施例中,像远存储器储存平台一样,近存储器储存平台830的数据总线890通过逻辑电路822耦合到通道的数据总线组件842。“近存储器在后面”架构至少可以例如利用逻辑电路822来实现,近存储器储存设备830和远存储器储存设备831都在相同的物理平台上实现(例如,插入到通道中的相同的DIMM卡,其中多个此类DIMM卡能够插入到通道中)。
[0117]图Sb示出在高速缓存未命中情况下的用于“近存储器在后面”架构的读过程。参考图8a和8b,如果存储器控制器831接收到读请求861,那么其通过命令总线841将包含原始请求的地址的集合位804和较低阶位803的读请求862 (例如,采用分包化形式)发送到远存储器控制逻辑电路822。此外,作为读请求序列的部分,原始读请求的标签位805(例如来自CPU)被“偷传”862到通道821上。根据一种方法,以下更详细地解释的,在通道821的命令总线组件841 (其被用于将寻址信息传送到远存储器控制逻辑822以用于近和远存储器访问这二者)上“偷传”标签位805。本文,不像远存储器“在前面”方法那样,由于以下进一步解释的原因,在通道上不需要偷传指示原始事务是读还是写的附加信息。本文,远存储器控制逻辑822能够“切断”存储器控制器对远存储器的读请求,以确定整体事务是读事务而不是写事务。
[0118]响应于接收到的读请求,逻辑电路822在本地近存储器地址总线870上呈现关联的地址,以针对近存储器平台实现高速缓存读操作。来自近存储器平台830的适当的高速缓存线直接由近存储器平台830 (在该情况下存储器控制器执行ECC计算)或者通过远存储器控制逻辑822 (在该情况下逻辑822和存储器控制器831这二者都可以执行ECC计算)随后被呈现804在数据总线842上。
[0119]因为远存储器控制逻辑电路822连接到通道821,所以其能够抓取或以其它方式在本地存储863 (例如,在其自身的寄存器空间850中)以下中的任何一个:1)在通道821上被偷传的标签位805 ;2)被用来寻址近存储器高速缓存830的地址信息;以及3)来自近存储器830的高速缓存线及其关联的嵌入标签位811、脏位812和ECC信息813,当由近存储器平台830来提供时。
[0120]作为响应,逻辑电路822的命中/未命中逻辑823能够与存储器控制器的命中/未命中逻辑814并行地确定是否存在高速缓存命中或高速缓存未命中。在高速缓存命中的情况下,将读自近存储器的信息提供到存储器控制器831,并且逻辑电路822不采取进一步的动作。在其中近存储器高速缓存平台在不通过逻辑电路822的情况下连接到数据总线的实施例中,存储器控制器831对读自近存储器高速缓存的高速缓存线执行ECC计算。在其中近存储器高速缓存平台通过逻辑电路822连接到数据总线的另一个实施例中,在逻辑电路822和存储器控制器831这二者上计算对读自近存储器高速缓存的高速缓存线的ECC计笪
ο
[0121]在由逻辑电路822检测到高速缓存未命中的情况下,高速缓存/命中未命中逻辑电路823将意识到:将需要远存储器储存平台831的读以最终服务原始读请求。照此,根据一个实施例,逻辑电路822能够从远存储器平台831自动地读,以检索所期望的读信息864并且执行ECC计算。
[0122]与远存储器控制逻辑822自动地读远存储器831并行地,回忆起已经向存储器控制器831提供了读自近存储器的高速缓存线,存储器控制器831能够同样地检测高速缓存未命中并且作为响应在通道821上将读请求886调度和发布到远存储器控制逻辑822。如以上所提及的和如以下更详细描述的,在实施例中,存储器控制器831能够通过通道821来传送两个不同的协议:i)特定于近存储器设备830的第一协议(例如,行业标准DDR DRAM协议);以及ii)特定于远存储器设备831的第二协议(例如,特定于PCMS设备的协议)。本文,近存储器高速缓存读862通过通道821利用第一协议来实现,并且相比之下,对远存储器886的读请求利用第二协议来实现。
[0123]在进一步的实施例中,如以上所提及的和如以下更详细描述的,因为由远存储器设备831响应读请求886所需的时间不能被确定无疑地预测,所以整体读事务的标识符890(“事务id”)与由存储器控制器所发送的远存储器读请求886 —起被发送到远存储器控制逻辑822。当最后从远存储器831读数据时,其最终被发送887到存储器控制器831。在实施例中,作为事务的部分,事务标识符890在将读数据发送到存储器控制器831的通道821上被返回到存储器控制器831。
[0124]本文,事务标识符890的包含用以通知存储器控制器831:读数据相关的事务。这可以在以下中尤其重要:如以下更详细描述的,远存储器控制逻辑822维持缓冲器以存储来自存储器控制器831的多个读请求,并且远存储器的读响应时间的不确定性导致来自远存储器的“无序”(000)读响应(在前面的读请求之前可以响应后续的读请求)。
[0125]在其中在通道上使用的两个不同的协议的进一步实施例中,两个协议的特有特征在于近存储器协议将设备830看作不正式请求通道821的使用的从设备(因为近存储器的定时被良好地理解并且在存储器控制器的控制之下)。相比之下,远存储器协议允许远存储器控制逻辑822向存储器控制器831发布用于将读数据发送到存储器控制器831的请求。作为进一步的区别点 ,在近存储器高速缓存读的期间被“偷传”到通道上的标签805信息在以下意义上被“偷传”:该信息被运输到远存储器控制逻辑电路822,以用于潜在的远存储器读(即使技术上近存储器协议在起作用)。
[0126]可替代自动地执行远存储器读,远存储器控制逻辑电路822能够被设计成制止自动读远存储器中所需的数据,而是等待来自存储器控制器831的读请求及对应的地址。在该情况下,当近存储器高速缓存被读时,逻辑电路822不需要保持地址,其也不需要来自存储器控制器831的关于整体事务是读事务还是写事务的任何被偷传的彳目息880。
[0127]不管逻辑电路822是否在高速缓存未命中的情况下自动地执行远存储器读,如图Sc的过程中所观察的,逻辑电路822的命中/未命中逻辑电路823能够被设计成当高速缓存未命中发生以及脏位被设置时,将读自近存储器高速缓存的高速缓存线写到远存储器中。在该情况下,在高级别处,除对近存储器830的写在近存储器平台830不通过通道来寻址的意义上至少部分地对通道821隐藏867之外,该过程基本上与图7c中所观察的相同。如果近存储器平台830的数据总线895不直接耦合到通道的数据总线842,而是通过远存储器控制逻辑822耦合到通道的数据总线842,那么整个远存储器写能够对通道821隐藏。
[0128]采用该方式来自动执行对远存储器平台831的写不仅消除了存储器控制器831请求该写的需要,而且使通道821完全摆脱与对远存储器平台831的写相关的任何活动。这应该与通道的速度方面的显著的改善相对应。
[0129]在高速缓存未命中的情况下,为了实现高速缓存更新步骤,如果远存储器控制逻辑电路822被进一步设计成利用远存储器读操作的结果来更新近存储器高速缓存平台830,则可以实现附加的效率。本文,因为远存储器读操作869的结果与对可应用集合的最近访问相对应,所以这些结果还需要被写到用于该集合的高速缓存条目中,以便完成事务。通过利用远存储器读响应来更新高速缓存,避免了用以更新高速缓存的通过通道821对近存储器的单独的写步骤。本文,一些机制(例如,附加的协议步骤)可以需要被实现到通道中,以使得远存储器控制逻辑能够访问近存储器(例如,如果认为近存储器的使用要在存储器控制器831的控制之下调度的话)。
[0130]相关地指出以上刚描述的加速:远存储器的自动读(图Sb)、对远存储器的自动写(图Sc)、以及与读响应并行的高速缓存更新可以依赖于设计者选择而采用任何组合(所有、任何二者、只一者)来实现。
[0131]至于写事务过程,根据一种方法,在近存储器数据总线880直接耦合到通道数据总线842的情况下,能够执行以上关于图7d所描述的过程。在近存储器数据总线880通过远存储器控制逻辑822耦合到通道数据总线842的情况下,可以使用图8d中所呈现的另一种方法。
[0132]根据图8d的过程,响应于接收到写事务851,存储器控制器将写命令852发送到远存储器控制逻辑822 (包括对应的地址和数据)并且通过通道来偷传写事务的标签信息。作为响应,远存储器控制逻辑822执行近存储器高速缓存平台830的读853,并且根据嵌入的标签信息811和偷传的标签信息805来确定发生了高速缓存未命中还是高速缓存命中854。在高速缓存命中或高速缓存未命中的情况下,当未设置脏位时855,将与写命令一起接收的新的写数据写856到近存储器高速缓存830。在高速缓存未命中且设置了脏位的情况下,远存储器控制逻辑电路将与写命令一起接收的新的写数据写到近存储器高速缓存中,并且将刚读自近存储器830的被驱逐(evicted)的高速缓存线写到远存储器831中。
[0133]根据图Sb的读事务的讨论回忆起:在“近存储器在后面”方法中,指示整体事务是读还是写的信息不需要被偷传到远存储器控制逻辑。这能够从图8b和8d看到,其示出在整体读事务的情况下存储器控制器初始地传送近存储器读请求(图8a)或者在整体写事务的情况下初始地传送近存储器写事务(图8d)。
[0134]原子通道事务和物理通道集成
如图7a和8a中所观察的,存储器控制器和近存储器设备之间的通信可以通过传送存储器控制器和远存储器设备之间的通信的相同通道来载送。进一步地,如以上所提到的,近存储器和远存储器可以由存储器控制器利用不同的协议来访问(用于访问近存储器的第一协议和用于访问远存储器的第二协议。照此,可以例如在相同的存储器通道上实现两种不同的协议。就在以下讨论了这些协议的各方面。
[0135]a.近存储器高速缓存访问(第一协议)
在以上的章节中呈现了用于访问近存储器的两种基本方法:第一种其中近存储器储存设备存在于远存储器控制逻辑的“前面”,以及第二种其中近存储器储存设备存在于远存储器控制逻辑的“后面”。
[0136]1.近存储器在前面
至少在其中近存储器设备位于远存储器控制逻辑的“前面”的情况下,保留或以其它方式使用用于与系统存储器通信的现存/公知的协议可以是有益的。例如,在其中近存储器高速缓存利用附到DMM卡的DRAM设备来实现的情况下,使用被良好地建立/接受的用于与附到DIMM卡的DRAM设备进行通信的存储器访问协议(例如,目前被良好地建立/接受的协议,或者未来被良好地建立/接受的协议)可以是有益的。通过使用用于与DRAM通信的良好地建立/接受的协议,可以在以下意义上实现规模效益:具有不必被设计用于集成到具有近和远存储器级别的计算系统中的DRAM设备的DIMM卡仍然可以被“插入到”此类系统的存储器通道中并且被用作近存储器。
[0137]此外,甚至在其中近存储器位于远存储器控制逻辑的“后面”的情况下,当尝试访问近存储器时,存储器控制器仍然可以被设计成使用良好地建立/公知的DRAM存储器访问协议来与远存储器控制逻辑通信,以使得该系统作为整体可以向系统的用户提供多个不同的系统配置选项。例如,用户能够在使用以下内容之间选择:1)用于近存储器的“仅DRAM”DMM卡;或者2)其上集成了 DRAM和PCMS设备二者的DMM卡(其中,DRAM充当用于位于相同的DMM上的PCMS设备的近存储器)。
[0138]良好地建立/公知的DRAM协议的实现还允许第三个用户选项,其中不采纳两级存储器方案(近存储器和远存储器)(例如,没有PCMS设备被用来实现系统存储器),而是仅安装DRAM DIMM来实现传统的“仅DRAM”系统存储器。在该情况下,存储器控制器的配置将被设置成使得其表现为(不利用本文所描述的任何特征来实现近和远存储器级别的)传统存储器控制器。
[0139]照此,将启用使得存储器控制器表现得像标准存储器控制器的逻辑电路,然而将禁用使得存储器控制器采用考虑近和远存储器级别的方式来表现的逻辑电路。在系统存储器仅采用可替代的系统存储器技术来实现的情况下(例如,仅插入PCMS DMM卡),第四个用户选项可以是相反的。在该情况下,可以启用使得存储器控制器仅利用与可替代的系统存储器技术一致的不同协议(例如,PCMS特定信令)来运行基本读和写事务的逻辑。
[0140]图9a示出适于支持良好地建立/公知的DRAM访问协议(诸如根据相同的信号的上升和下降沿来实现写和读访问的双倍数据速率(“DDR”))的存储器通道921的示例性描绘。通道921能够被视为具有3个主要的子组件:1)命令总线941 (通过其来发送读和写请求及其对应的地址);2)数据总线942 (通过其来发送读和写数据);以及3)控制信号943(一个或多个选择信号943_1、一个或多个时钟使能信号943_2、一个或多个管芯上终止信号943_3)。在实施例中,如以上所描述的,当存储器控制器909访问近存储器高速缓存时,不管是否其与一个或多个DMM卡上的实际的DRAM设备和/或一个或多个相同或附加的DIMM卡上的一个或多个远存储器控制逻辑芯片进行“对话”,其都在通道上呈现传统的DDR信号。
[0141]根据通道921的操作的一个实施例,对于仅存储器访问而言:1)命令总线941在从存储器控制器909朝向近存储器储存设备的方向上载送分组,其中每个分组包括读或写请求和关联的地址;以及2)数据总线942将写数据载送到目标的近存储器设备,并且从目标的近存储器设备载送读数据。
[0142]如图9a中所观察的,数据总线942由超出实际的读/写数据线942_1的附加的线来构成。具体地,数据总线942还包括多个ECC线942_2和选通线942_3。如所公知的,ECC位与高速缓存线的数据一起存储,以使得能够检测与高速缓存线的读/写关联的数据损坏错误。例如,64字节(64B)高速缓存线可以附加地包括8字节(8B)的ECC信息,以使得所存储的信息的实际数据宽度是72字节(72B)。选通线942_3通常基于每数据线来指派(例如,选通线对被指派用于每8或4位的数据/ECC)。在双倍数据速率方法中,信息能够根据选通942_3的上升和下降沿这二者被写或读。
[0143]关于控制线943,在实施例中,这些包括选择信号943_1、时钟使能线943_2、以及管芯上终止线943_3。如公知的,多个DIMM卡能够插入到相同的存储器通道中。传统地,当存储器控制器读或写特定地址处的数据时,其从/向特定DIMM卡读或写数据(例如,整个DIMM卡或可能是DIMM卡的一侧或DIMM卡的其它部分)。选择信号943_1被用来激活作为操作的目标的特定DMM卡(或DMM卡的部分),并且去激活不是操作的目标的DMM卡。
[0144]本文,选择信号943_1可以根据(例如,来自CPU的)原始读或写事务的位来确定,其实际上指定起源于存储器控制器的多个存储器通道中的哪个存储器通道是事务的目标,并且进一步地,插入到所识别的通道中的多个DIMM卡中的哪个DIMM卡是事务的目标。想得到地,选择信号943_1能够被配置成使得插入在相同的存储器通道中的每个DIMM卡(或DIMM的部分)接收其自身一个唯一的选择信号。本文,激活被发送到用于事务的活动的DIMM卡(或DIMM卡的部分)的特定选择信号,而去激活被发送到其它DIMM卡的选择信号。可替代地,信号信号如总线而路由到每个DMM卡(或DMM卡的部分)。所选择的DMM卡(DMM卡的部分)由总线的状态来确定。
[0145]时钟使能线943_2和管芯上终止线943_3是在读/写数据被呈现在通道的数据总线942上之前被激活且在读/写数据被呈现在通道的数据总线942_1上之后被去激活的功率节约特征。
[0146]在各种实施例中,在执行事务的每个步骤所需的时钟周期的数量方面精确地理解了诸如从DRAM所构造的近存储器高速缓存、近存储器事务的定时。也就是说,对于近存储器事务而言,已知完成读或写请求所需的时钟周期的数量,并且已知满足读或写请求所需的时钟周期的数量。
[0147]图10示出当应用于近存储器(例如,如以上刚描述的,通过存储器通道)时的用于近存储器访问协议的读和写操作的原子操作序列。根据图10的方法,插入到相同的存储器通道中的多个DIMM卡之中的目标DIMM卡(或DIMM卡的部分)通过激活适当的选择线1001来选择。然后激活1002时钟使能线和管芯上终止线(想得到地可以存在选择线以及时钟使能和管芯上终止线的激活的一定重叠)。然后发送(例如,通过命令总线)1003具有可应用地址的读或写命令。仅所选择/激活的DIMM卡(或DIMM卡的部分)能够接收并处理命令。在写的情况下,将写数据写到已激活的设备中(例如,从存储器通道数据总线)1004。在读的情况下,从已激活的设备呈现(例如,在存储器通道数据总线上)读数据1004。
[0148]注意,图10的过程尽管描绘了采用未来的存储器协议的对近存储器的原子操作,但也能够被视为与现有的DDR协议原子操作一致。此外,包括近存储器和远存储器的未来系统可以利用已经现有的DDR协议或者利用仅具有DRAM系统存储器技术的未来系统访问DRAM系统存储器所利用的未来DRAM协议来访问近存储器。
[0149]具体地,在其中DRAM近存储器高速缓存在远存储器控制逻辑的“前面”并且其中远存储器控制逻辑电路不对具有高速缓存未命中的读事务更新DRAM近存储器高速缓存的实现中,存储器控制器将驱动通道上的信号来执行步骤1001、1002、1003并且在步骤1004中在数据总线上为写事务提供写数据。在该情况下,存储器控制器可以表现得与现存的存储器控制器或仅具有DRAM系统存储器的未来系统的存储器控制器非常相同。对于存储器控制器关于以下时候表现的方式也是如此:1)对于读或写事务,首先读高速缓存;以及ii)对于读或与事务,在闻速缓存命中之后与闻速缓存。
[0150]i1.近存储器在后面
又进一步地,在其中DRAM近存储器高速缓存在远存储器控制逻辑的“后面”的实现中,对于近存储器高速缓存的读或写而言,近存储器仍然可以利用特定于近存储器设备的协议而被访问。例如,近存储器设备可以利用良好地建立(当前或未来)的DRAM DDR协议被访问。此外,即使近存储器设备自身被远存储器控制逻辑利用以某种方式与良好地建立的DRAM协议不同的信号来具体地发信号通知,存储器控制器仍然可以在最终控制近存储器访问方面在通道921上应用良好地建立的DRAM协议来与远存储器控制逻辑进行通信,以实现近存储器访问。
[0151]本文,远存储器控制逻辑可以执行采用各种组合的任何/所有的步骤1001、1002、1003、或其各方面的局部等价物(B卩,在远存储器控制逻辑的“后面”而不是在通道上)。另外,存储器控制器还可以利用远存储器控制逻辑来执行采用各种组合的这些步骤中的每个,包括其中远存储器逻辑电路也执行这些相同的步骤的情况。例如,远存储器控制逻辑可以被设计成充当简单地接受最初由存储器控制器提供的来自通道的信号并且将其重新驱动到其组成的近存储器平台的“转发”设备。
[0152]可替代地,远存储器控制逻辑可以最初创建执行步骤1001、1002、1003或其各方面的至少一些所需的至少一些信号,而存储器控制器最初创建执行其它步骤所需的信号。例如,根据一种方法,在执行高速缓存读方面,在执行步骤1001时,存储器控制器可以初始地在通道上驱动选择信号。响应于接收到选择信号1001,远存储器控制逻辑可以将这些信号简单地重新驱动到其组成的近存储器平台,或者可以根据与由存储器控制器在通道上明确地呈现的信令方案不同的 选择信令方案来处理和理解其含义并且启用/禁用近存储器平台(或其部分)。选择信号还可以从通道被直接提供到近存储器平台,并且还被路由到远存储器控制逻辑,因此远存储器控制逻辑能够至少识别其组成的近存储器平台(或起部分)何时被定为事务的目标。
[0153]响应于识别其组成的近存储器设备的至少部分被定为事务的目标,远存储器控制逻辑可以在步骤1002中在控制逻辑和近存储器储存设备之间的远存储器控制逻辑后面最初地且在本地创建任何/所有的时钟使能信号和/或管芯上终止信号。这些信号可以由远存储器控制逻辑根据由存储器控制器在通道上提供的时钟信号或其它信号来加工。不由远存储器控制逻辑所创建的任何时钟使能信号或管芯上终止信号可以由存储器控制器在通道上提供,并且被直接驱动到近存储器平台或由近存储器控制逻辑重新驱动。
[0154]对于近存储器高速缓存读操作而言,存储器控制器可以通过在通道的命令总线上提供合适的请求和访问来执行步骤1003。远存储器控制逻辑可以从通道接收命令(并且在本地存储其相关的地址信息)。其还可以重新驱动或以其它方式向近存储器平台呈现读命令和地址。关于步骤1004,存储器控制器还将接收高速缓存读数据。读数据可以由远存储器控制逻辑电路呈现在通道的数据总线上(在重新驱动由近存储器平台所提供的读数据时),或者读数据可以由近存储器平台在通道的数据总线上直接驱动。
[0155]关于发生在高速缓存读之后的近存储器通道操作(诸如用于写事务的在高速缓存命中之后对高速缓存的写),远存储器控制逻辑电路或存储器控制器可以按照以上刚描述的原理来执行采用各种组合的任何的步骤1001、1002、1003。在一种极端情况,远存储器控制逻辑电路独立于存储器控制器而执行步骤1001、1002、1003中的每个。在另一种极端情况,存储器控制器执行步骤1001、1002、1003中的每个,并且远存储器控制逻辑电路将其所有或一些重新驱动到近存储器平台或者接收并理解,并且然后作为响应将其自身的信号应用于近存储器平台。在这些极端情况之间,远存储器控制逻辑可以执行步骤1001、1002和1003或其方面的一些,而存储器控制器执行这些步骤或其方面的其它。
[0156]可以酌情将以上刚描述的原子操作与以上在前面的章节中所公开的实施例进行集成。
[0157]b.远存储器访问
回忆起在从DRAM构造近存储器高速缓存的情况下,例如,在执行事务的每个步骤所需的时钟周期的数量方面精确地理解近存储器事务的定时。也就是说,对于近存储器事务而言,已知完成读或写请求所需的时钟周期的数量,并且已知满足读或写请求所需的时钟周期的数量。照此,近存储器访问可以整体在存储器控制器的控制之下,或者至少存储器控制器能够精确地知道为每个近存储器访问所花费的时间(例如,为了调度的目的)。
[0158]相比之下,对于远存储器事务而言,尽管可以知道通过命令总线来完成读或写请求所需的时钟周期的数量(原因在于,存储器控制器与近存储器控制逻辑电路进行通信),但不知道满足对于远存储器设备自身的任何此类读或写请求所需的时钟周期的数量。如就在以下的讨论中将更明显的,这可以导致在通道上用于远存储器访问的与被用于近存储器访问的协议完全不同的协议的使用。
[0159]图11示出远存储器控制逻辑电路1120和直接与远存储器设备对接的关联的接口电路1135的实施例的更详细的视图。本文,例如,近存储器设备的各种储存单元可以依赖于其被访问得多频繁而具有不同的“耗尽”速率(较频繁地被访问的单元与较不频繁地被访问的单元相比耗尽得更快)。
[0160]尝试保持各种储存单元的可靠性近似相等,逻辑电路1120和/或接口电路1135可以包括在适当的时刻将较频繁地被访问的储存单元的数据内容移动到较不频繁地被访问的储存单元(并且同样地,将较不频繁地被访问的储存单元的数据内容移动到较频繁地被访问的储存单元)的耗尽均衡算法电路1136。当远存储器控制逻辑具有准备向远存储器平台发布的读或写命令时,耗尽均衡过程可以或可以不处于操作中,或者如果处于操作中,则该过程可以仅刚开始或可以接近完成或处于两者之间的任何地方。
[0161]这些不确定性以及起源于基本储存技术的其它可能的定时不确定性(诸如,根据其特定的过去使用率而应用于单独的单元的不同的访问时间)导致某些架构特征的出现。具体地,关于近存储器控制逻辑,远存储器写缓冲器1137存在以保存对远存储器的写请求,并且远存储器读缓冲器1138存在以保存远存储器读请求。本文,远存储器读和写缓冲器1137、1138的出现许可读和写请求的排队或暂时保存。
[0162]如果读或写请求准备向远存储器设备发布,但远存储器设备不处于接收任何此类请求的位置(例如,由于耗损均衡过程当前处于操作中),那么所述请求被保存在其相应的缓冲器1137、1138,直到远存储器设备准备接受和处理它们。本文,读和写请求可以在缓冲器中根据此类请求从存储器控制器和/或远存储器控制逻辑的继续传输而加强(例如,在其中如以上所描述的远存储器控制逻辑被设计成自动地访问近存储器的实现中),直到远存储器设备准备开始接收它们。
[0163]第二个架构特征是存储器控制器对通道1121上的(例如,来自CPU的)写和读事务的不同部分进行交错以增强系统吞吐量的能力。例如,考虑忍受促使从远存储器读的高速缓存未命中的第一读事务。因为存储器控制器不知道何时将服务对于远存储器的读请求,不是潜在地使通道闲置而等待响应,而是存储器控制器自由发布触发用于下一(读或写)的事务的高速缓存读的请求。该过程自由继续直到达到某一硬限制。
[0164]例如,存储器控制器自由发起用于下一读事务的请求,直到其识别到远存储器控制逻辑的读缓冲器1138满了(由于高速缓存未命中将创建针对远存储器读请求的需要)或远存储器控制逻辑的写缓冲器满了(由于高速缓存未命中上的设置脏位将创建针对远存储器写请求的需要)。类似地,存储器控制器自由发起用于下一写事务的请求,直到其识别到远存储器控制逻辑的写缓冲器满了(由于高速缓存未命中上的设置脏位将创建针对远存储器写请求的需要)。
[0165]在实施例中,存储器控制器为写缓冲器1137和读缓冲器1138中的每个保持信用的计数。每当写缓冲器1137或读缓冲器1138接受新的请求时,其对应的信用计数减小。当信用计数落在用于缓冲器1137、1138任一的阈值(诸如零)以下或达到阈值时,存储器控制器1137、1138制止在通道上发布用于下一事务的任何请求。如以下更详细地描述的,存储器控制器能够理解用于读缓冲器的正确的信用计数,是通过:1)每当读请求被理解成向读缓冲器1138呈现(通过由存储器控制器通过通道直接发送,或者被理解成已经由远存储器控制逻辑自动地创建和输入)时,使读缓冲器信用计数减小;以及2)每当读响应为存储器控制器而呈现在通道1121上时,使读缓冲器信用减小。
[0166]此外,再次如以下更详细地描述的,存储器控制器能够理解用于写缓冲器的正确的信用计数,是通过:1)每当写请求被理解成向写缓冲器1137呈现(例如,通过由存储器控制器通过通道直接发送,或者被理解成由远存储器控制逻辑自动地发生)时,使写缓冲器信用计数减小;以及2)每当从写缓冲器1137服务写请求时,使写缓冲器信用减小。在实施例中,再次如以下更详细地描述的,远存储器控制逻辑1120通过将此类信息“背负(piggyback)”于远存储器读请求响应来对存储器控制器通知:从写缓冲器1137向远存储器储存设备平台1131发布写请求。本文,远存储器的读通过通道1121被返回到存储器控制器。照此,每当远存储器控制逻辑1120执行远存储器的读并且将响应传送到存储器控制器时,作为该通信的部分,远存储器控制逻辑还对存储器控制器通知自从就在前面的远存储器读响应以来已经从写缓冲器1137发布的写请求的数量。
[0167]附加的复杂在于,在实施例中,读请求可以被“无序”服务。例如,根据用于远存储器控制逻辑电路的一种设计方法,为写缓冲器1137中的写请求遮蔽(screen)读缓冲器1138中的读请求。如果两个缓冲器之间的任何的目标地址都匹配,那么利用与最近未决的写请求关联的新的写数据来服务具有写缓冲器中的一个或多个匹配的配对物的读请求。如果读请求位于不同于读缓冲器队列1138的前面的任何位置,读请求的服务将具有关于读请求被输入在队列1138中的次序对该请求进行“无序”服务的效果。在各种实施例中,远存储器控制逻辑还可以被设计成由于基础的远存储器技术(其可以在某些时间允许某一地址空间可用于读但不是所有的地址空间)而“无序”对请求进行服务。
[0168]为了使存储器控制器理解哪个读请求响应与哪个读请求事务相对应,在实施例中,当存储器控制器将读请求发送到远存储器控制逻辑时,存储器控制器还将事务的标识符(“TX_ID”)提供到近存储器控制逻辑。当远存储器控制逻辑最后服务该请求时,其将事务标识符包括在响应中。
[0169]回忆起图9a及其关于存储器通道及其由存储器控制器用于利用第一(近存储器)访问协议来访问近存储器高速缓存的使用的实施例的讨论。显著地,图9a被进一步增强以示出能够作为第一(近存储器)访问协议的部分被存储器控制器“偷传”到通道上的但仍然被远存储器控制器用来潜在地触发远存储器访问的信息。图%示出相同的通道及其用于由存储器控制器利用第二 (远存储器)访问协议来访问远存储器高速缓存的使用。
[0170]因为在各种实施例中高速缓存线的全地址的标签信息与高速缓存线的数据一起存储在近存储器高速缓存中(例如,嵌入的标签信息411、711、811),所以注意图9a指示当通道被用来访问近存储器高速缓存(读或写)时,名义上为ECC预留的某一部分的位线942_2作为代替被用于嵌入的标签信息411、711。“窃取”ECC线来包含嵌入的标签信息而不是扩展数据总线的大小允许例如为传统计算机系统中的使用而制造的DIMM卡被用于具有近和远级别的储存这二者的系统中。也就是说,例如,如果在没有任何远存储器的通道中安装了仅DRAM的DIMM (并且因而不表现得像用于远存储器的高速缓存),那么ECC位的全宽度将被用于ECC信息。相比之下,如果在具有远存储器的通道中安装了具有DRAM的DI丽(并且因而DRAM表现得像用于远存储器的高速缓存),那么当访问DRAM时,某一部分的ECC位942_2将实际地被用来存储数据总线上的关联的高速缓存线的地址的标签位。当近存储器高速缓存线的数据被写到近存储器中或从近存储器被读时,在图10的步骤1004期间在ECC线上呈现了嵌入的标签信息411、711、811。
[0171]同样根据以上回忆起在某些实施例中,远存储器控制逻辑可以利用作为近存储器请求的部分在存储器通道上被“偷传”到远存储器控制器的附加信息的协助,“自动地”执行某些动作。这些自动动作可以包括:1)自动地检测高速缓存命中或未命中;2)在识别高速缓存未命中和识别读事务在起作用时,对远存储器的自动读;以及3)在识别高速缓存未命中外加识别脏位被设置时,对远存储器的自动写。
[0172]如前面的章节中所讨论的,为了执行以上的1)、2)和3),通过作为触发近存储器高速缓存访问的请求的部分而将事务的标签信息405、705、805偷传到远存储器控制逻辑以及将其与读自近存储器且与高速缓存线一起存储的嵌入标签信息411、711、811相比较来检测高速缓存命中或未命中。
[0173]在实施例中,参考图9a和图10,事务的标签信息405、705、805在步骤1003中通过命令总线被偷传到远存储器控制逻辑(命令阶段)在原本将被重新产生为近存储器地址总线上的未使用列和/或行位(例如,尤其列多于行)的位置中。如以上所描述的,当高速缓存线通过抓取“被窃取的ECC位”而从近存储器被读时,能够在图10的步骤1004中做出由远存储器控制逻辑对嵌入标签信号411、711、811的抓取。然后能够比较该两个标签。
[0174]此外,为了执行以上的2)或3),远存储器控制逻辑应能够检测在起作用的事务的类型(读或写)。在其中近存储器在远存储器控制逻辑的前面的情况下,再次参考图9a和图10,在起作用的事务的类型还能够通过命令总线采用像刚以上为I)描述的用于事务的标签信息的方式那样的方式而被偷传到远存储器控制逻辑(例如,在命令阶段1003期间在命令总线上)。在其中近存储器在远存储器控制逻辑的后面的情况下,对于远存储器控制逻辑而言仅通过切断事务的来自存储器控制器的原始请求来检测整体事务是读还是写(例如,将图Sb和8d相比较)是可能的。否则,与近存储器在前面方法相同的操作会受影响。
[0175]另外地,为了执行以上的3),参考图9a和图10,远存储器控制逻辑应该能够检测脏位是否被设置。本文,因为脏位是与高速缓存的数据一起嵌入在近存储器中的信息,所以另一个ECC位如刚以上关于嵌入标签信息411、711、811所描述的那样被“窃取”。照此,存储器控制器通过在近存储器写访问的步骤1004期间在通道的ECC位位置942_2之一中呈现适当的值来写脏位。类似地,远存储器控制逻辑能够通过在近存储器读访问期间抓取该相同的ECC位置来检测脏位。
[0176]参考图9b和图10,为了解决“无序”问题,事务标识符能够作为远存储器请求的部分被发送到远存储器控制逻辑电路。这还能够通过在远存储器读请求的命令阶段1003期间在命令总线上呈现事务标识符来完成。
[0177]图12a示出由存储器控制器通过通道而做出的用于远存储器的读访问的原子过程。图12a的过程可以例如在其中远存储器控制逻辑在检测到用于读事务的高速缓存未命中时不自动执行到远存储器中的读并且需要由存储器控制器来明确请求执行远存储器读的情况下完成。此外,回忆起在以上所描述的实施例中,即使远存储器控制逻辑自动地发起远存储器读,存储器控制器也能够在高速缓存未命中的情况下将读请求发布到远存储器控制逻辑(例如,见图7b和8b)。
[0178]参考图9b、ll和12a,具有远存储器读地址的读请求由存储器控制器通过命令总线941来发布1201。通过命令总线所发布的读请求还包括由远存储器控制逻辑1120所保持(例如,在寄存器中)的事务标识符。
[0179]请求被置于1202读缓冲器1138中。分析保存在写缓冲器1137中的写请求,以看是否有任何一个具有匹配的目标地址1203。如果任何一个具有,那么从最近创建的写请求1204中取得用于读请求响应的数据。如果没有一个具有,那么最后从读缓冲器1138服务该读请求,从远存储器平台1131对读数据进行读,并且用于读数据的ECC信息被计算并且与和读数据1205 —起存储的ECC信息相比较。如果ECC检查失效,那么远存储器控制逻辑1206引发错误。本文,参考图%,错误可以通过选择943_1、时钟使能943_2或ODT 943_3线之一来发信号通知。
[0180]如果从写缓冲器1137中取得读请求或ECC检查被清除,那么远存储器控制逻辑1120通知存储器控制器:其具有准备用于传输的读响应1207。在实施例中,如图9b中所观察的,该指示990通过为该目的而侵占的通道的选择信号线943_1、时钟使能信号线943_2或管芯上终止线943_3之一来做出。当存储器控制器(在各种实施例中,其具有用以调度通道上的事务的调度器)决定其能够接收读响应时,其将远存储器控制逻辑应该开始发送读响应的指示991发送到所述远存储器控制逻辑1208。在实施例中,如图9b中所观察的,指示991也通过为该目的而侵占的通道的选择线943_1、时钟使能信号线943_2或管芯上终止线943_3之一来做出。
[0181]然后,远存储器控制逻辑1120确定自从最后的读响应被发送以来多少写请求已经从写缓冲器1137被发布(“写缓冲器发布计数”)。然后,将读数据与事务标识符和写缓冲器发布计数一起通过通道而返回1209。在实施例中,因为ECC计算由远存储器控制逻辑来做出,所以名义上用于ECC的数据总线线本质上是“空闲的”。照此,如图9b中所观察的,事务标识符992和写缓冲器发布计数993沿着通道的ECC线942_2从远存储器控制器发送到存储器控制器。本文,写缓冲器发布计数993被存储器控制器用来计算新的信用计数,以便允许将新的写请求发送到远存储器控制逻辑1210。存储器控制器自身能够通过保持追踪已经被输入到读缓冲器1138中的读请求的数量和已经被返回的读响应的数量来调节其对读请求的发送。
[0182]图12b示出用于由存储器控制器通过通道对远存储器的写访问的基本原子过程。图12b的过程可以例如在其中远存储器控制逻辑不自动执行到远存储器中的写(例如,对具有用于读事务或写事务的脏位的高速缓存未命中)并且需要由存储器控制器来明确请求这样做的情况下完成。图12b的写过程还可以被用于不具有任何驻存的近存储器的通道(例如,仅PCMS的通道)中。根据图12b的过程,存储器控制器接收写事务1221。存储器控制器检查其写缓冲器信用计数来看是否存在足够的信用以发送写请求1222。如果如此,存储器控制器将写请求1223通过命令总线发送到远存储器控制逻辑。作为响应,远存储器控制逻辑将请求置于其写缓冲器中1224。最后,从写缓冲器来服务该写请求,ECC信息为被写到源存储器中的数据而被计算并且与该数据一起存储到远存储器中1224。
[0183]先前关于图7d (近存储器在前面)和图8d (近存储器在后面)讨论了增强的写过程。本文中,以上已经讨论了用于实现这些写过程的通道的特定组件的实施例以及远存储器控制逻辑的操作。然而,显著地,另外,关于图7d的增强的写过程,存储器控制器能够根据高速缓存读信息来确定在高速缓存未命中和脏位被设置的情况下是否需要对远存储器的写。作为响应,存储器控制器能够增加其写缓冲器计数,原因在于其理解远存储器控制逻辑将自动地执行到远存储器中的写而也将把请求自动地输入到写缓冲器中1224,以便这样做。关于图8d的增强的写过程,存储器控制器还能够接收高速缓存读信息并且如以上刚描述的那样操作。
[0184]当然,能够酌情通过仅具有远存储器技术的通道(例如,仅将DMM插入其储存技术的DDR通道是仅基于PCMS的)来利用以上所描述的远存储器原子操作。
[0185]如以上所描述的,远存储器控制逻辑能够被实现在一个或多个半导体芯片上。同样地,用于存储器控制器的逻辑电路能够被实现在一个或多个半导体芯片上。
[0186]尽管以上的讨论中的许多针对位于CPU管芯和CPU封装外部(例如,在插入到发源于CPU封装的通道中的DIMM卡上)的近存储器系统存储器和远存储器系统存储器设备,但架构上,以上的实施例和过程仍然也能够实现在相同的CPU封装内(例如,其中通道利用DRAM和PCMS设备被装载到的衬底上的导电迹线与CPU管芯一起实现在相同的CPU封装中(远存储器控制逻辑能够被设计到CPU管芯或装载到衬底的另一个管芯中)或甚至在CPU管芯自身上(例如,其中除了用于例如实现CPU和存储器控制器的逻辑电路之外,CPU管芯还在其上集成了 DRAM系统存储器和PCMS系统存储器,并且“通道”利用(例如,多级的)管芯上互连布线来实现)。
[0187]训练
训练是一种嵌入的配置方案,经通信耦合的半导体设备能够通过其来“想出”它们之间的适当的信令特性应该是什么。在其中仅DRAM设备耦合到相同的存储器通道的情况下,存储器控制器被训练成由DRAM的每个等级所提供的读数据。存储器控制器还被训练以向每个等级提供合适地定时的写数据。训练对于x8 DRAM而言基于8位并且对于x4 DRAM而言基于4位而发生。4或8位组之间的迹线长度方面的差异需要该训练分辨率(在4或8位组内,迹线需要被匹配)。因为DRAM不具有调整能力,所以主机应该做调整。这节约关于DRAM的成本和功率这二者。
[0188]当抓取由于PCMS和DRAM耦合到相同的通道而进行时,还必须训练远存储器控制器。对于从近存储器的读而言,远存储器控制器必须被训练以接受读数据。如果读数据要由来自远存储器控制器的DRAM所抓取,那么远存储器控制器必须被训练以针对DRAM(其不可调整)合适地定时数据,跟着是主机被训练以接收结果所得的数据。在远存储器控制器抓取写数据的情况下,将使用类似的两步骤过程。
【权利要求】
1.一种由布置在卡上的逻辑电路执行的方法,所述卡具有连接器以插入到支持近存储器高速缓存访问和远存储器访问的存储器通道中,包括: 从所述存储器通道接收由耦合到所述存储器通道的主机所处理的读请求事务的目标地址的第一标签组件; 响应于所述读请求事务,接收读自近存储器高速缓存的高速缓存线的地址的第二标签组件; 将所述第一和第二标签组件相比较以确定所述高速缓存线对应于高速缓存命中还是高速缓存未命中。
2.根据权利要求1所述的方法进一步包括: 响应于检测到发生了高速缓存未命中,执行以下中的至少一个: 从远存储器自动地读期望的高速缓存线; 检测读自近存储器的所述高速缓存线的脏位被设置,并且将读自所述近存储器的所述高速缓存线自动地写到远存储器中。
3.根据权利要求1所述的方法,其中在所述从远存储器读所述期望的高速缓存线之后,所述逻辑电路进一步对所述期望的高速缓存线的数据执行ECC计算。
4.根据权利要求1所述的方法,其中所述近存储器高速缓存利用DRAM技术来实现,并且所述远存储器利用PC M技术来实现。
5.根据权利要求1所述的方法,其中所述近存储器高速缓存驻存在所述卡上。
6.根据权利要求1所述的方法,进一步包括: 响应于检测到发生了高速缓存未命中,执行以下操作: 从所述主机接收所述读请求事务的标识符,以及作为在将读自远存储器的所述高速缓存线的数据运输到所述主机的所述通道上的通信的部分而在所述通道上呈现所述读请求事务的所述标识符。
7.根据权利要求1所述的方法,其中所述第一标签组件随由所述主机根据被用于访问所述近存储器的第一通道协议而在所述通道上所呈现的第一读请求一起被接收。
8.根据权利要求7所述的方法,其中所述第二标签组件随由所述主机根据被用于访问所述远存储器的第二通道协议而在所述通道上所呈现的第二读请求一起被接收。
9.一种半导体芯片,包括: 到存储器通道的接口; 读缓冲器,保存从所述存储器通道接收到的远存储器读请求; 逻辑电路,响应于在所述存储器通道上发布的近存储器读请求而检测读自近存储器的高速缓存线的高速缓存未命中,所述近存储器用于所述远存储器的高速缓存,所述逻辑电路响应于此而另外执行以下中的至少一个: 发起从所述远存储器读期望的高速缓存线,所述期望的高速缓存线包含由使得所述近存储器读请求被发布在所述存储器通道上的事务所寻找的数据; 检测读自近存储器的所述高速缓存线的脏位被设置,以及将读自所述近存储器的所述高速缓存线自动地写到远存储器中。
10.根据权利要求9所述的半导体芯片,其中所述逻辑电路从所述第一接口接收读自近存储器的所述高速缓存线的地址的标签信息和所述事务的地址的标签信息这二者。
11.根据权利要求9所述的半导体芯片,其中所述逻辑电路包括与所述第一接口不同的第二接口,以耦合到所述远存储器,并且其中所述半导体芯片通过所述第一接口来接收接收所述事务的地址的标签信息。
12.根据权利要求9所述的半导体芯片,进一步包括ECC逻辑,为读自所述近存储器的所述高速缓存线和/或写到所述远存储器中的所述高速缓存线计算ECC信息。
13.根据权利要求9所述的半导体芯片,进一步包括存储所述事务的地址的第一标签组件的第一寄存器空间和存储读自所述近存储器的所述高速缓存线的地址的第二标签组件的第二寄存器空间,所述第二标签组件嵌入于读自所述近存储器的所述高速缓存线。
14.根据权利要求9所述的半导体芯片,其中所述近存储器利用DRAM来实现,并且所述远存储器组件利用PCM来实现。
15.根据权利要求14所述的半导体芯片,其中所述半导体芯片进一步包括用于所述PCM远存储器的耗尽均衡算法逻辑电路。
16.根据权利要求14所述的半导体芯片,其中所述半导体芯片进一步包括保存对所述远存储器的写请求的写请 求缓冲器和保存对所述远存储器的读请求的读请求缓冲器。
17.—种半导体芯片,包括: 存储器控制器电路,具有接口电路以耦合到存储器通道,所述存储器控制器电路包括; 第一逻辑电路,通过接口电路来在存储器通道上实现第一存储器通道协议,所述第一存储器通道协议特定于第一易失性系统存储器技术; 第二逻辑电路,通过接口电路来在存储器通道上实现第二存储器通道协议,所述第二存储器通道协议特定于第二非易失性系统存储器技术,所述第二存储器通道协议是事务协议。
18.根据权利要求17所述的半导体芯片,其中所述第一类型的存储器储存技术是DRAM,并且所述第二类型的存储器储存技术是PCM。
19.根据权利要求17所述的半导体芯片,其中所述存储器通道包括命令总线、数据总线以及控制线。
20.根据权利要求17所述的半导体芯片,其中作为实现所述第一存储器通道协议的部分,所述第一逻辑电路不从所述第一接口接收读请求,并且其中作为实现所述第二存储器通道协议的部分,所述第二逻辑电路从所述接口接收读请求。
21.一种计算机系统,包括: 存储器控制器电路,具有接口电路以耦合到存储器通道,所述存储器控制器电路包括; 第一逻辑电路,通过接口电路来在存储器通道上实现第一存储器通道协议,所述第一存储器通道协议特定于第一易失性系统存储器技术; 第二逻辑电路,通过接口电路来在存储器通道上实现第二存储器通道协议,所述第二存储器通道协议特定于第二非易失性系统存储器技术,所述第二存储器通道协议是事务协议; 第一存储器设备,由第一易失性系统存储器技术构成并耦合到存储器通道;以及 第二存储器设备,由第二非易失性系统存储器技术构成并耦合到存储器通道。
22.根据权利要求21所述的计算机系统,其中所述第一类型的存储器储存技术是DRAM,并且所述第二类型的存储器储存技术是PCM。
23.根据权利要求21所述的计算机系统,其中所述存储器通道包括命令总线、数据总线以及控制线。
24.根据权利要求23所述的计算机系统,进一步包括沿着所述命令总线的在通道和第二存储器设备之间的远存储器控制逻辑电路。
25.根据权利要求24所述的计算机系统,其中所述远存储器控制电路还沿着所述命令总线处于所述通道和所述第一存储器设备之间。
【文档编号】G06F13/16GK104025060SQ201180075116
【公开日】2014年9月3日 申请日期:2011年9月30日 优先权日:2011年9月30日
【发明者】B.奈尔, R.K.拉马努简, M.P.斯瓦米纳桑, T.托马斯, T.波尔佩迪 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1