CN107391397B - 支持近存储器和远存储器访问的存储器通道 - Google Patents
支持近存储器和远存储器访问的存储器通道 Download PDFInfo
- Publication number
- CN107391397B CN107391397B CN201710382875.6A CN201710382875A CN107391397B CN 107391397 B CN107391397 B CN 107391397B CN 201710382875 A CN201710382875 A CN 201710382875A CN 107391397 B CN107391397 B CN 107391397B
- Authority
- CN
- China
- Prior art keywords
- memory
- cache
- read
- far
- dimm
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1064—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/1668—Details of memory controller
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2024—Rewritable memory not requiring erasing, e.g. resistive or ferroelectric RAM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
一种半导体芯片,包括存储器控制器电路,所述存储器控制器电路具有接口电路以耦合到存储器通道。存储器控制器包括第一逻辑电路以在存储器通道上实现第一存储器通道协议。第一存储器通道协议特定于第一易失性***存储器技术。该接口还包括第二逻辑电路以在存储器通道上实现第二存储器通道协议。第二存储器通道协议特定于第二非易失性***存储器技术。第二存储器通道协议是事务协议。
Description
本申请是申请日为2011年9月30日、申请号为201180075116.6(PCT/US2011/054421)、发明名称为“支持近存储器和远存储器访问的存储器通道”的专利申请的分案申请。
技术领域
本发明大体上涉及计算机***的领域。更特别地,本发明涉及用于实现包括非易失性存储器(memory)层的多级存储器层次结构的装置和方法。
背景技术
A.目前的存储器和储存器(storage)配置
现在,对计算机创新的限制因素之一是存储器和储存器技术。在常规的计算机***中,***存储器(也称为主存储器、初级存储器、可执行存储器)通常由动态随机访问存储器(DRAM)来实现。基于DRAM的存储器即使在不发生存储器读或写的时候也消耗功率,原因在于其必须不断地对内部电容器进行再充电。基于DRAM的存储器是易失性的,这意味着一旦断开电源,就会丢失在DRAM存储器中存储的数据。常规的计算机***还依赖于多个级别的高速缓存以改善性能。高速缓存是安置在处理器和***存储器之间的与能够从***存储器服务存储器访问请求相比更快地服务存储器访问请求的的高速存储器。此类高速缓存通常利用静态随机访问存储器(SRAM)来实现。高速缓存管理协议可以被用来确保将被最频繁访问的数据和指令存储在多级高速缓存之一内,从而减少存储器访问事务的数量并且改善性能。
关于大容量储存器(也称为二级储存器或磁盘储存器),常规的大容量储存设备通常包括磁介质(例如,硬盘驱动)、光介质(例如,光盘(CD)驱动、数字通用盘(DVD)等)、全息介质、和/或大容量储存闪速存储器(例如,固态驱动(SSD)、可移除闪速驱动等)。通常,这些储存设备被视为输入/输出(I/O)设备,原因在于其由处理器通过实现各种I/O协议的各种I/O适配器来访问。这些I/O适配器和I/O协议消耗大量的功率并且会具有对平台的形状因数和管芯(die)区域的显著影响。当具有有限电池寿命的便携式或移动设备(例如,膝上型计算机、上网本、平板计算机、个人数字助理(PDA)、便携式媒体播放器、便携式游戏设备、数字摄像机、移动电话、智能电话、功能电话等)未连接到永久性电源时,可以包括通常经由低功率互连和I/O控制器而耦合到处理器的可移除大容量储存设备(例如,嵌入式多媒体卡(eMMC)、安全数字(SD)卡),以便满足活动和空闲的功率预算。
关于固件存储器(诸如,引导存储器(也称为BIOS闪速)),常规的计算机***通常使用闪速存储器设备来存储通常被读但很少(或从不)被写到的持久***信息。例如,由处理器在引导过程期间运行以初始化关键***组件的初始指令(基本输入和输出***(BIOS)映像)通常存储在闪速存储器设备中。当前可在市场中获得的闪速存储器设备通常具有有限的速度(例如,50MHz)。该速度因用于读协议的开销(例如,2.5MHz)而进一步降低。为了加快BIOS运行速度,常规的处理器通常在引导过程的可预扩展固件接口(PEI)阶段期间,对部分的BIOS代码进行高速缓存。处理器高速缓存的大小对PEI阶段中所使用的BIOS代码(也称为“PEI BIOS代码”)的大小施加了限制。
B.相变存储器(PCM)和相关技术
相变存储器(PCM)(有时也称为相变随机访问存储器(PRAM或PCRAM)、PCME、双向统一存储器、硫属化合物RAM(C-RAM))是一种利用硫属化合物玻璃的独特特性的非易失性计算机存储器。由于因电流的经过而产生的热量,硫属化合物玻璃能够在两种状态之间切换:晶体和非晶体。PCM的近期版本能够实现两种附加的不同状态。
PCM提供比闪速更高的性能,原因在于PCM的存储器元件能够切换得更快,写(将单独的位改变为1或0)能够在不需要首先擦除整个单元块的情况下完成,并且从写的退化更慢(PCM设备可以幸存大约1亿次写周期;PCM退化是由于编程期间的热膨胀、金属(和其它材料)迁移、以及其它机制)。
附图说明
以下描述和附图被用来图示本发明的实施例。在所述附图中:
图1图示根据本发明的一个实施例的高速缓存和***存储器布置;
图2图示被用于本发明的一个实施例中的存储器和储存器层次结构;
图3图示本发明的实施例可以实现在其上的计算机***;
图4图示相同的存储器通道上的近存储器高速缓存和远存储器的实现;
图5图示能够在图4中所观察的近存储器/远存储器***上执行的写过程;
图6图示能够在图4中所观察的近存储器/远存储器***上执行的读过程;
图7A图示用于在相同的存储器通道上集成近存储器高速缓存和远存储器的“近存储器在前面”架构;
图7B-D图示能够由图7A的***所执行的过程;
图8A图示用于在相同的存储器通道上集成近存储器高速缓存和远存储器的“近存储器在前面”架构;
图8B-D图示能够由图8A的***所执行的过程;
图9A图示支持近存储器访问的存储器通道布线的应用;
图9B图示支持远存储器访问的存储器通道布线的应用;
图10图示用于访问近存储器的过程;
图11图示远存储器控制逻辑电路的实施例;
图12A-B图示可以推知支持近存储器访问和远存储器访问的存储器通道的原子过程。
具体实施方式
在以下描述中,阐述了诸如逻辑实现、操作码、指定操作数的方式、资源划分/共享/复制实现、***组件的类型和相互关系、以及逻辑划分/集成选择之类的许多特定细节,以便提供对本发明的更透彻的理解。然而,由本领域技术人员将领会的是,本发明可以在不具有此类特定细节的情况下实施。在其它实例中,未示出控制结构、门级电路和全软件指令序列,以免使本发明晦涩难懂。本领域一般技术人员利用所包括的描述将能够在不具有过度实验的情况下实现适当的功能。
在本说明书中,对“一个实施例”、“实施例”、“示例性实施例”等的引用指示了所描述的实施例可以包括特定的特征、结构、或特性,但每个实施例可以不必都包括该特定的特征、结构、或特性。此外,此类短语不必指代相同的实施例。进一步地,当结合实施例来描述特定的特征、结构、或特性时,无论是否明确地描述,都主张要在本领域技术人员的知识内结合其它实施例来实现此类特征、结构、或特性。
在以下描述和权利要求中,可以使用术语“耦合”和“连接”与其衍生物。应该理解这些术语不意为彼此的同义词。“耦合”被用来指示彼此可以或可以不处于直接物理或电气接触的两个或更多元件彼此进行协作或交互。“连接”被用来指示彼此耦合的两个或更多元件之间的通信的建立。
本文中有时使用加括号的文本和具有虚线边界(例如,大虚线、小虚线、点虚线、点)的块来图示将附加特征添加到本发明实施例的可选的操作/组件。然而,此类注释不应该视为意味着这些是仅有的选项或可选的操作/组件,和/或具有实线边界的块在本发明的某些实施例中不是可选的。
介绍
随着处理器核以及诸如虚拟化之类的新使用模型的数量增加,存储器容量和性能需要持续增长。另外,存储器功率和成本已经分别变为电子***的整体功率和成本的重要组成部分。
本发明的一些实施例通过智能地细分存储器技术之间的性能需要和容量需要来解决以上挑战。该方法的焦点在于利用相对少量的相对更高速的存储器(诸如DRAM)来提供性能同时使用明显更便宜且更密集的非易失性随机访问存储器(NVRAM)来实现大部分***存储器。以下所描述的本发明的实施例定义使得能够实现用于NVRAM的使用的分层存储器子***组织的平台配置。如以下详细描述的,存储器层次结构中的NVRAM的使用还使得能够实现诸如扩充的引导空间和大容量储存器实现之类的新的使用。
图1图示根据本发明的实施例的高速缓存和***存储器布置。具体地,图1示出存储器层次结构,包括一组内部处理器高速缓存120、可以包括一个或多个内部高速缓存106和外部高速缓存107-109这二者的充当远存储器高速缓存的“近存储器”121、以及“远存储器”122。在本发明的一些实施例中,可以被用于“远存储器”的一种特定类型的存储器是非易失性随机访问存储器(“NVRAM”)。照此,以下提供了NVRAM的概观,后面跟着远存储器和近存储器的概观。
A.非易失性随机访问存储器(“NVRAM”)
存在用于NVRAM的许多可能的技术选择,包括PCM、相变存储器和开关(PCMS)(后者是前者的更特定实现)、字节可寻址持久存储器(BPRAM)、储存类存储器(SCM)、通用存储器、Ge2Sb2Te5、可编程金属化单元(PMC)、电阻式存储器(RRAM)、RESET(重置)(非晶体)单元、SET(设置)(晶体)单元、PCME、奥弗辛斯基存储器、铁电存储器(也称为聚合物存储器和聚(N-乙烯基咔唑))、铁磁存储器(也称为自旋电子、SPRAM(自旋扭矩转换RAM)、STRAM(自旋隧道RAM)、磁阻存储器、磁存储器、磁随机访问存储器(MRAM))、以及半导体-氧化物-氮化物-氧化物-半导体(SONOS,也称为介电存储器)。
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中的闪速存储器那样在写数据之前需要擦除(利用1来改写));和/或
d)故障之前的更大数量的写(比被用于SSD中的引导ROM和闪速更多);和/或
如以上提到的,对比于一次必须重写和擦除一个完整的“块”的闪速存储器,在任何给定实现中NVRAM被访问的粒度级别可以依赖于特定的存储器控制器和特定的存储器总线或NVRAM耦合到的其它类型的总线。例如,在其中NVRAM被用作***存储器的一些实现中,尽管固有能力是以字节的粒度被访问,但NVRAM也可以以高速缓存线(例如,64字节或128字节高速缓存线)的粒度被访问,原因在于高速缓存线是存储器子***访问存储器的级别。因而,当在存储器子***内部署NVRAM时,其可以以与被用于相同的存储器子***中的DRAM(例如,“近存储器”)相同的粒度级别被访问。即使如此,由存储器控制器和存储器总线或其它类型的总线对NVRAM访问的粒度级别也小于由闪速所使用的块大小和I/O子***的控制器和总线的访问大小的粒度级别。
NVRAM还可以包含耗损均衡算法以考虑以下事实:远存储器级别处的储存单元在多个写访问之后开始耗尽,特别是其中诸如在***存储器实现中可以发生大量的写。因为高周期计数块最可能以该方式而耗尽,所以耗损均衡通过将高周期计数块与低周期计数块的地址进行交换而跨远存储器单元来散布写。注意,通常大多数地址交换对应用程序而言透明,原因在于其由硬件、较低级别的软件(例如,低级别驱动器或操作***)、或该二者的组合来处理。
B.远存储器
本发明的一些实施例的远存储器122利用NVRAM来实现,但不必限于任何特定的存储器技术。远存储器122根据其在存储器/储存器层次结构中的应用和/或其特性而可与其它指令和数据存储器/储存器技术区分。例如,远存储器122不同于:
1)静态随机访问存储器(SRAM),其可以被用于分别专用于处理器核101-104的级别0和级别1内部处理器高速缓存101a-b、102a-b、103a-b、和104a-b以及由处理器核所共享的更低级别的高速缓存(LLC)105;
2)动态随机访问存储器(DRAM),被配置为处理器100内部的高速缓存106(例如,在与处理器100相同的管芯上)和/或配置为处理器外部的一个或多个高速缓存107-109(例如,在与处理器100相同或不同的封装上);以及
3)闪速存储器/磁盘/光盘,应用为大容量储存器(未示出);以及
4)诸如闪速存储器或其它只读存储器(ROM)之类的存储器,应用为固件存储器(其能够涉及引导ROM、BIOS闪速、和/或TPM闪速)(未示出)。
远存储器122可以被用作可由处理器100直接寻址的指令和数据储存器,并且对比于应用为大容量储存器的闪速/磁盘/光盘而能够与处理器100充分地保持同步。此外,如以上所讨论的以及以下详细描述的,远存储器122可以被置于存储器总线上并且可以与继而与处理器100直接通信的存储器控制器直接通信。
远存储器122可以与其它指令和数据储存技术(例如,DRAM)组合以形成混合存储器(也称为共置一处的PCM和DRAM;第一级别存储器和第二级别存储器;FLAM(闪速和DRAM))。注意,包括PCM/PCMS的以上技术中的至少一些可以被用于作为***存储器的代替或附加的大容量储存器,并且当以该方式被应用时,不需要是由处理器随机可访问、字节可寻址或直接可寻址的。
为了解释的方便,本申请的剩余部分的大多数将把“NVRAM”或者更具体地“PCM”或“PCMS”称为用于远存储器122的技术选择。照此,在以下讨论中,术语“NVRAM”、“PCM”、“PCMS”和远存储器可以可互换地使用。然而,如以上所讨论的,应该认识到不同的技术也可以被用于远存储器。同样,该NVRAM不限于用作远存储器。
C.近存储器
“近存储器”121是被配置在远存储器122的前面的中间级别的存储器,其相对于远存储器具有更低的读/写访问延迟和/或更对称的读/写访问延迟(即,具有大致等价于写时间的读时间)。在一些实施例中,近存储器121具有比远存储器122明显更低的写延迟但类似(略低或相等)的读延迟;例如,近存储器121可以是诸如易失性随机访问存储器(VRAM)之类的易失性存储器并且可以包括DRAM或其它基于电容器的高速存储器。然而,注意,本发明的基本原理不限于这些特定的存储器类型。另外地,近存储器121比远存储器122可以具有相对更低的密度和/或制造起来可以更贵。
在一个实施例中,近存储器121被配置在远存储器122和内部处理器高速缓存120之间。在以下所描述的实施例的一些中,近存储器121被配置为一个或多个存储器侧高速缓存(MSC)107-109,以掩盖远存储器的性能和/或使用限制,包括例如写/读延迟限制和存储器退化限制。在这些实现中,MSC 107-109和远存储器122的组合以近似、等价于或超过仅将DRAM用作***存储器的***的性能级别来操作。如以下详细讨论的,尽管在图1中示出为“高速缓存”,近存储器121可以包括其中它执行作为执行高速缓存的角色的附加或代替的其它角色的模式。
近存储器121能够位于处理器管芯上(作为一个或多个高速缓存106)和/或位于处理器管芯外部(作为高速缓存107-109)(例如,在位于CPU封装上的单独的管芯上、在具有到CPU封装的高带宽链路的情况下位于CPU封装之外,例如,在存储器双列直插式存储器模块(DIMM)、立管/夹层、或计算机母板上)。近存储器121可以使用单个或多个高带宽链路(诸如,DDR或其它事务高带宽链路(如以下详细描述的))与处理器100进行通信而耦合。
示例性***存储器分配方案
图1图示了在本发明的实施例中各级别的高速缓存101-109如何关于***物理地址(SPA)空间116-119而配置。如提到的,该实施例包括具有一个或多个核101-104的处理器100,其中每个核具有其自身专用的高级高速缓存(L0)101a-104a和中级高速缓存(MLC)(L1)高速缓存101b-104b。处理器100还包括共享的LLC 105。这些各高速缓存级别的操作被良好地理解,并且本文将不详细描述。
图1中所图示的高速缓存107-109可以专用于特定的***存储器地址范围或一组非连续地址范围。例如,高速缓存107专用于充当用于***存储器地址范围#1116的MSC,并且高速缓存108和109专用于充当用于***存储器地址范围#2117和#3118的非重叠部分的MSC。后者的实现可以被用于其中由处理器100所使用的SPA空间被交错到由高速缓存107-109(例如,当配置为MSC时)所使用的地址空间中的***。在一些实施例中,该后者的地址空间被称为存储器通道地址(MCA)空间。在一个实施例中,内部高速缓存101a-106执行用于整个SPA空间的高速缓存操作。
如本文所使用的***存储器是对在处理器100上运行的软件而言可见和/或可由所述软件直接寻址的存储器;而高速缓存存储器101a-109可以在其不形成***地址空间的直接可寻址部分的意义上对软件透明地操作,但所述核也可以支持指令的运行以允许软件提供对一个或多个高速缓存中的一些或所有的一些控制(配置、策略、提示等)。将***存储器细分成区域116-119可以作为***配置过程的部分而手动执行(例如,由***设计者)和/或可以由软件来自动执行。
在一个实施例中,***存储器区域116-119使用远存储器(例如,PCM)以及在一些实施例中被配置为***存储器的近存储器来实现。***存储器地址范围#4表示使用诸如DRAM之类的可以是配置于***存储器模式(相对于高速缓存模式)中的近存储器的更高速的存储器来实现的地址范围。
图2图示了根据本发明的实施例的存储器/储存器层次结构140和用于近存储器144和NVRAM的操作的可配置模式。存储器/储存器层次结构140具有多个级别,包括:(1)高速缓存级别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和/或BIOSNVRAM 172以及可选地可信平台模块(TPM)NVRAM 173。
如所指示的,近存储器144可以被实现成采用各种不同的模式来操作,包括:第一模式,其中其操作为用于远存储器的高速缓存(近存储器作为用于FM 150B的高速缓存);第二模式,其中其操作为***存储器151A并且占用SPA空间的部分(有时被称为近存储器“直接访问”模式);以及诸如暂存存储器192或如写缓冲器193之类的一个或多个附加操作模式。在本发明的一些实施例中,近存储器是可划分的,其中每个分区可以并行地采用所支持的模式中的不同的一个来操作;并且不同的实施例可以支持由硬件(例如,熔丝、引脚)、固件、和/或软件来配置分区(例如大小、模式)(例如,通过MSC控制器124内的一组可编程范围寄存器,在其中例如可以存储不同的二进制码以标识每个模式和分区)。
图2中的***地址空间A 190被用来图示当近存储器配置为用于远存储器150B的MSC时的操作。在该配置中,***地址空间A 190表示整个***地址空间(并且***地址空间B 191不存在)。可替代地,***地址空间B 191被用来示出当近存储器的全部或部分被指派***地址空间的部分时的实现。在该实施例中,***地址空间B 191表示被指派到近存储器151A的***地址空间的范围,并且***地址空间A 190表示指派到NVRAM 174的***地址空间的范围。
另外,当充当用于远存储器150B的高速缓存时,近存储器144可以采用在MSC控制器124的控制之下的各种子模式来操作。在这些模式的每个中,近存储器地址空间(NMA)在近存储器不形成***地址空间的直接可寻址部分的意义上对软件而言是透明的。这些模式包括但不限于以下:
(1)回写高速缓存模式:在该模式中,充当FM高速缓存150B的近存储器的全部或部分被用作用于NVRAM远存储器(FM)151B的高速缓存。当在回写模式中时,每次写操作初始地定向到作为用于FM 150B的高速缓存的近存储器(假设该写所定向到的高速缓存线存在于高速缓存中)。执行对应的写操作以仅当作为用于FM 150B的高速缓存的近存储器内的高速缓存线要由另一个高速缓存线所替代时,更新NVRAM FM 151B(对比于以下所描述的直写模式,其中将每次写操作被立即传播到NVRAM FM 151B)。
(2)近存储器绕过模式:在该模式中,所有的读和写绕过充当FM高速缓存150B的NM并且直接去到NVRAM FM 151B。例如,当应用不是高速缓存友好的或需要待提交的数据以高速缓存线的粒度来存留时,可以使用这种模式。在一个实施例中,由处理器高速缓存150A和充当FM高速缓存150B的NM所执行的高速缓存彼此独立地操作。因而,可以在充当FM高速缓存150B的NM中对未在处理器高速缓存150A中被高速缓存的(并且在一些情况下可能未被允许在处理器高速缓存150A中进行高速缓存的)数据进行高速缓存,并且反之亦然。因而,可能在处理器高速缓存中被指定为“不可高速缓存”的某些数据可以在充当FM高速缓存150B的NM内进行高速缓存。
(3)近存储器读高速缓存写绕过模式:这是以上模式的变形,其中允许对来自NVRAM FM 151B中的持久数据进行读高速缓存(即,在作为用于远存储器150B的高速缓存的近存储器中对持久数据进行高速缓存以用于只读操作)。当大多数持久数据是“只读”并且应用使用是高速缓存友好时,这是有用的。
(4)近存储器读高速缓存直写模式:这是近存储器读高速缓存写绕过模式的变形,其中除读高速缓存之外,写命中(write-hit)也被高速缓存。对作为用于FM 150B的高速缓存的近存储器的每次写都引起对FM 151B的写。因而,由于高速缓存的直写性质,所以仍然保证高速缓存线存留。
当在近存储器直接访问模式中动作时,作为***存储器151A的近存储器的全部或部分对软件而言直接可见,并且形成SPA空间的部分。此类存储器可以完全在软件控制之下。此类方案可以创建用于软件的非统一存储器地址(NUMA)存储器域,其中其相对于NVRAM***存储器174而从近存储器144获得更高的性能。通过示例并非限制的方式,此类使用可以被用于需要对某些数据结构非常快访问的某些高性能计算(HPC)和图形应用。
在可替代的实施例中,近存储器直接访问模式通过“钉扎(pinning)”近存储器中的某些高速缓存线(即,具有也并行地存储在NVRAM 142中的数据的高速缓存线)而实现。此类钉扎可以采用更大的多路且组关联的高速缓存来高效地完成。
图2还图示可以被用作固件存储器的NVRAM 142的部分。例如,BIOS NVRAM 172部分可以被用来存储BIOS映像(作为在BIOS闪速170中存储BIOS信息的替代或附加)。BIOSNVRAM部分172可以是SPA空间的部分,并且可由在处理器核101-104上运行的软件直接寻址,然而BIOS闪速170可通过I/O子***115而寻址。作为另一个示例,可信平台模块(TPM)NVRAM 173部分可以被用来保护敏感***信息(例如,加密密钥)。
因而,如所指示的,NVRAM 142可以被实现成采用各种不同的模式来操作,包括:作为远存储器151B(例如,当近存储器144存在/操作时,无论近存储器是否经由MSC控制124而充当用于FM的高速缓存(在一个或多个高速缓存101A-105之后并且在没有MSC控制124的情况下被直接访问));仅NVRAM***存储器174(不作为远存储器,原因在于没有近存储器存在/操作;并且在没有MSC控制124的情况下被访问);NVRAM大容量储存器152A;BIOS NVRAM172;以及TPM NVRAM 173。虽然不同的实施例可以规定采用不同方式的NVRAM模式,但图3描述了解码表333的使用。
图3图示了本发明的实施例可以实现在其上的示例性计算机***300。计算机***300包括处理器310和存储器/储存器子***380,其中NVRAM 142被用于***存储器、大容量储存器这二者以及可选地固件存储器。在一个实施例中,NVRAM 142包括由计算机***300所使用的用于存储数据、指令、状态、以及其它持久和非持久信息的整个***存储器和储存器层次结构。如先前所讨论的,NVRAM 142能够被配置成实现***存储器、大容量储存器、和固件存储器、TPM存储器等的典型存储器和储存器层次结构中的角色。在图3的实施例中,NVRAM 142被分成FM 151B、NVRAM大容量储存器152A、BIOS NVRAM173、以及TMP NVRAM 173。还考虑具有不同角色的储存层次,并且NVRAM 142的应用不限于以上所描述的角色。
通过示例的方式,描述了当作为用于FM 150B的高速缓存的近存储器处于回写高速缓存中时的操作。在一个实施例中,当作为用于FM 150B的高速缓存的近存储器处于以上所提到的回写高速缓存模式中时,读操作将首先到达MSC控制器124,其将执行查找以确定所请求的数据是否存在于充当用于FM 150B的高速缓存的近存储器中(例如,利用标签高速缓存342)。如果存在,那么其将通过I/O子***115把数据返回到做出请求的CPU、核101-104或I/O设备。如果数据不存在,那么MSC控制器124将把该请求与***存储器地址一起发送到NVRAM控制器332。NVRAM控制器332将使用解码表333来把***存储器地址转换为NVRAM物理设备地址(PDA),并且把读操作定向到远存储器115B的该区域。在一个实施例中,解码表333包括NVRAM控制器332将其用来在***存储器地址和NVRAM PDA之间转换的地址间接表(AIT)组件。在一个实施例中,AIT作为被实现以分布存储器访问操作并且从而减少NVRAMFM 151B上的耗损的耗损均衡算法的部分而更新。可替代地,AIT可以是在NVRAM控制器332内存储的单独的表。
在从NVRAM FM 151B接收到所请求的数据时,NVRAM控制器332将把所请求的数据返回到将在充当FM高速缓存150B的MSC近存储器中存储所述数据的MSC控制器124,并且还通过I/O子***115把所述数据发送到做出请求的处理器核101-104、或I/O设备。可以从充当FM高速缓存150B的近存储器直接服务针对该数据的后续请求,直到其由某一其它的NVRAM FM数据所替代。
如所提到的,在一个实施例中,存储器写操作首先还去到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 151B。
在图3中,NVRAM控制器332被示出使用3个单独的线而连接到FM 151B、NVRAM大容量储存器152A、以及BIOS NVRAM 172。然而,这不必意味着存在将NVRAM控制器332连接到NVRAM 142的这些部分的3个单独的物理总线或通信通道。更确切地,在一些实施例中,公共存储器总线或其它类型的总线被用来将NVRAM控制器332通信耦合到FM 151B、NVRAM大容量储存器152A、以及BIOS NVRAM 172。例如,在一个实施例中,图3中的三个线表示总线,诸如存储器总线(例如,DDR3、DDR4等总线),通过其NVRAM控制器332实现事务协议来与NVRAM142通信。NVRAM控制器332还可以通过支持本地事务协议的总线与NVRAM 142通信,诸如PCI高速总线、桌面管理接口(DMI)总线、或利用事务协议和足够小的事务有效载荷大小(例如,诸如64或128字节的高速缓存线大小)的任何其它类型的总线。
在一个实施例中,计算机***300包括执行用于处理器310的中央存储器访问控制的集成存储器控制器(IMC)331,其耦合到:1)存储器侧高速缓存(MSC)控制器124,以控制对充当远存储器高速缓存150B的近存储器(NM)的访问;以及2)NVRAM控制器332以控制对NVRAM 142的访问。尽管在图3中被图示为单独的单元,但MSC控制器124和NVRAM控制器332可以逻辑地形成IMC 331的部分。
在所图示的实施例中,MSC控制器124包括指定用于充当远存储器高速缓存150B的NM的操作模式(例如,以上所描述的回写高速缓存模式、近存储器绕过模式等)的一组范围寄存器336。在所图示的实施例中,DRAM 144被用作用于充当用于远存储器150B的高速缓存的NM的存储器技术。响应于存储器访问请求,MSC控制器124可以确定(依赖于范围寄存器336中所指定的操作模式)是能够从充当用于FM 150B的高速缓存的NM服务该请求还是必须向NVRAM控制器332发送该请求,所述MSC控制器124然后可以从NVRAM 142的远存储器(FM)部分151B服务该请求。
在其中NVRAM 142利用PCMS来实现的实施例中,NVRAM控制器332是利用与PCMS技术一致的协议来执行访问的PCMS控制器。如先前所讨论的,PCMS存储器固有地能够以字节的粒度被访问。虽然如此,NVRAM控制器332可以以诸如高速缓存线(例如,64位或128位高速缓存线)或与存储器子***一致的任何其它级别的粒度之类的较低级别的粒度来访问基于PCMS的远存储器151B。本发明的基本原理不限于用于访问基于PCMS的远存储器151B的任何特定级别的粒度。然而通常,当基于PCMS的远存储器151B被用来形成***地址空间的部分时,粒度级别将高于仅能够以“块”的级别来执行重写和擦除操作的传统地被用于诸如闪速之类的其它非易失性储存技术的粒度级别(在大小方面最小为对于NOR闪速而言64千字节并且对于NAND闪速而言16千字节)。
在所图示的实施例中,NVRAM控制器332能够从解码表333读配置数据来建立先前所描述的用于NVRAM 142的模式、大小等,或可替代地,能够依赖于从IMC 331和I/O子***315所传递的解码结果。例如,在制造时或在现场中,计算机***300能够对解码表333编程,以将NVRAM 142的不同区域标记为除其它之外尤其是***存储器、经由SATA接口而暴露的大容量储存器、经由USB单批量传输(BOT)接口而暴露的大容量储存器、支持TPM储存的加密储存器。访问通过其被引向NVRAM设备142的不同分区的方式是经由解码逻辑。例如,在一个实施例中,每个分区的地址范围被定义在解码表333中。在一个实施例中,当IMC 331接收到访问请求时,对请求的目标地址进行解码以揭露请求是定向到存储器、NVRAM大容量储存器、还是I/O。如果其是存储器请求,IMC 131和/或MSC控制器124进一步根据目标地址来确定该请求是定向到作为用于FM 150B的高速缓存的NM还是到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以执行安全的访问。
在一个实施例中,被转发到NVRAM控制器332的每个请求伴随着指示访问的类型的属性(也称为“事务类型”)。在一个实施例中,NVRAM控制器332可以模拟用于所请求的访问类型的访问协议,以使得平台的其余部分仍不知道由存储器和储存器层次结构中的NVRAM142所执行的多个角色。在可替代的实施例中,NVRAM控制器332可以执行对NVRAM 142的存储器访问而不管其是何事务类型。要理解的是,解码路径能够与以上所描述的不同。例如,IMC 331可以对访问请求的目标地址进行解码并且确定其是否定向到NVRAM 142。如果其定向到NVRAM 142,那么IMC 131根据解码表333生成属性。基于该属性,IMC 131然后将请求转发到适当的下游逻辑(例如,NVRAM控制器332和I/O子***315)以执行所请求的数据访问。在又另一个实施例中,如果对应的属性未从上游逻辑(例如,IMC 331和I/O子***315)传递下去,那么NVRAM控制器332可以对目标地址进行解码。也可以实现其它解码路径。
诸如本文所描述的新存储器架构的出现提供了很多新的可能性。尽管以下进一步以大得多的长度来讨论,但就在以下快速地突显了这些可能性中的一些。
根据一个可能的实现,NVRAM 142充当用于***存储器中的传统DRAM技术的全部的替代或补充。在一个实施例中,NVRAM 142表示第二级***存储器的引入(例如,***存储器可以视为具有包括作为高速缓存150B的近存储器的第一级***存储器(DRAM设备340的部分)和包括远存储器(FM)151B的第二级***存储器(NVRAM 142的部分)。
根据一些实施例,NVRAM 142充当用于闪速/磁/光大容量储存器152B的全部的替代或补充。如先前所描述的,在一些实施例中,即使NVRAM 152A能够字节级别可寻址,NVRAM控制器332仍然可以依赖于实现而采用多个字节的块(例如,64千字节、128千字节等)来访问NVRAM大容量储存器152A。由NVRAM控制器332从NVRAM大容量储存器152A访问数据的特定方式可以对由处理器310所运行的软件而言透明。例如,即使可以与闪速/磁/光大容量储存器152A不同地访问NVRAM大容量储存器152A,操作***仍然可以将NVRAM大容量储存器152A视为标准大容量储存设备(例如,串行ATA硬盘驱动或其它标准形式的大容量储存设备)。
在其中NVRAM大容量储存器152A充当用于闪速/磁/光大容量储存器152B的全部替代的实施例中,不必使用储存器驱动器进行块可寻址储存器访问。储存器驱动器开销从储存器访问中的移除能够提高访问速度并且节约功率。在其中期望NVRAM大容量储存器152A对于OS和/或应用而言表现为块可访问且不可与闪速/磁/光大容量储存器152B区分的可替代实施例中,模拟的储存器驱动器能够被用来向软件暴露块可访问接口(例如,通用串行总线(USB)单批量传输(BOT)1.0;串行高级技术附件(SATA)3.0等)以供访问NVRAM大容量储存器152A。
在一个实施例中,NVRAM 142充当用于诸如BIOS闪速362和TPM闪速372之类的固件存储器的全部的替代或补充(在图3中利用点线来图示以指示其是可选的)。例如,NVRAM142可以包括BIOS NVRAM 172部分以补充或替代BIOS闪速362,并且可以包括TPM NVRAM173部分以补充或替代TPM闪速372。固件存储器还能够存储由TPM 334用来保护敏感***信息(例如,加密密钥)的***持久状态。在一个实施例中,将NVRAM142用于固件存储器消除了第三方闪速部件存储对***操作而言关键的代码和数据的需要。
然后继续图3的***的讨论,尽管在图3中为了简单而示出了单个处理器310,但在一些实施例中,计算机***100的架构可以包括多个处理器。处理器310可以是任何类型的数据处理器,包括通用或专用中央处理单元(CPU)、专用集成电路(ASIC)或数字信号处理器(DSP)。例如,处理器310可以是通用处理器,诸如CoreTMi3、i5、i7、2双核和四核、XeonTM、或ItaniumTM处理器,所有的这些都可从加利福尼亚州圣克拉拉市的因特尔公司获得。可替代地,处理器310可以来自另一个公司,诸如加拿大森尼维尔市的ARM持股有限公司、加拿大森尼维尔市的MIPS科技公司等。处理器310可以是专用处理器,诸如,例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入处理器等。处理器310可以在被包括在一个或多个封装内的一个或多个芯片上实现。处理器310可以属于和/或可以使用许多工艺技术(诸如,例如BiCMOS、COMS、或NMOS)中的任何一个而实现在一个或多个衬底上。在图3中所示出的实施例中,处理器310具有片上***(SOC)配置。
在一个实施例中,处理器310包括集成图形单元311,其包括用于运行诸如3D或2D图形命令之类的图形命令的逻辑。虽然本发明的实施例不限于任何特定的集成图形单元311,但在一个实施例中,图形单元311能够运行行业标准图形命令,诸如由OpenGL和/或Direct X应用编程接口(API)(例如,OpenGL4.1和Direct X 11)所规定的那些。
再次,尽管为了清楚起见,在图3中图示了单个核,但处理器310也可以包括一个或多个核101-104。在许多实施例中,一个或多个核101-104包括内部功能块,诸如一个或多个执行单元、回收单元、一组通用和特定寄存器等。如果一个或多个核是多线程或超线程的,那么每个硬件线程也可以视为“逻辑”核。核101-104可以在架构和/或指令集方面是同质或异质的。例如,一些核可以是有序的,而其它是无序的。作为另一个示例,两个或更多的核可以能够运行相同的指令集,而其它可以仅能够运行该指令集的子集或不同的指令集。
处理器310还可以包括可以被实现为SRAM和/或DRAM的一个或多个高速缓存,诸如高速缓存313。在未示出的许多实施例中,不同于高速缓存313的附加的高速缓存被实现成使得多个级别的高速缓存存在于一个或多个核101-104中的执行单元与存储器设备150B和151B之间。例如,该组共享高速缓存单元可以包括高级高速缓存(诸如级别1(L1)高速缓存)、中级高速缓存(诸如级别2(L2)、级别3(L3)、级别4(L4)、或其它级别的高速缓存、(LLC)、和/或其不同的组合。在不同的实施例中,高速缓存313可以采用不同的方式来分派,并且在不同的实施例中可以是许多不同的大小之一。例如,高速缓存313可以是8兆字节(MB)高速缓存、16MB高速缓存等。另外地,在不同的实施例中,高速缓存可以是直接映射的高速缓存、全关联的高速缓存、多路且组关联的高速缓存、或具有另一种类型的映射的高速缓存。在包括多个核的其它实施例中,高速缓存313可以包括在所有核之间共享的一个大部分,或者可以被分成若干单独功能片(例如,每个核一片)。高速缓存313还可以包括所有核之间共享的一个部分以及对于每核而言单独功能片的若干其它部分。
处理器310还可以包括归属代理314,其包括协调和操作一个或多个核101-104的那些组件。归属代理单元314可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括对于调节一个或多个核101-104和集成图形单元311的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
如所提到的,在一些实施例中,处理器310包括集成存储器控制器(IMC)331、近存储器高速缓存(MSC)控制器、以及NVRAM控制器332,所有这些能够在与处理器310相同的芯片上、或在连接到处理器310的单独的芯片和/或封装上。DRAM设备144可以在与IMC 331和MSC控制器124相同的芯片或不同的芯片上;因而,一个芯片可以具有处理器310和DRAM设备144;一个芯片可以具有处理器310并且另一个具有DRAM设备144以及(这些芯片可以在相同或不同的封装中);一个芯片可以具有一个或多个核101-104并且另一个具有IMC 331、MSC控制器124和DRAM 144(这些芯片可以在相同或不同的封装中);一个芯片可以具有一个或多个核101-104,另一个具有IMC 331和MSC控制器124,并且另一个具有DRAM 144(这些芯片可以在相同或不同的封装中)等。
在一些实施例中,处理器310包括耦合到IMC 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的单独的芯片和/或封装上。
I/O适配器338将处理器310内所利用的主机通信协议转换为与特定的I/O设备兼容的协议。对于闪速/磁/光大容量储存器152B而言,I/O适配器338可以转换的协议中的一些除其它之外尤其包括***组件互连(PCI)-高速(PCI-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的无线协议;和蜂窝协议。
在一些实施例中,I/O子***115耦合到TPM控制334以控制对诸如安全数据、加密密钥、平台配置信息等之类的***持久状态的访问。在一个实施例中,这些***持久状态被存储在TMPNVRAM 173中并且经由NVRAM控制器332被访问。
在一个实施例中,TPM 334是具有密码功能的安全微控制器。TPM 334具有多个信任相关的能力;例如,用于确保由TPM所保护的数据仅可用于相同的TPM的“密封”能力。TPM334能够使用其加密能力来保护数据和密钥(例如,秘密)。在一个实施例中,TPM 334具有允许其认证硬件设备和平台的唯一且秘密的RSA密钥。例如,TPM 334能够验证:寻求对计算机***300中存储的数据的访问的***是所预期的***。TPM 334还能够报告平台(例如,计算机***300)的完整性。这允许外部资源(例如,网络上的服务器)确定平台的可信性,但不防止由用户对平台的访问。
在一些实施例中,I/O子***315还包括管理引擎(ME)335,其是允许***管理员监视、维护、更新、升级、和修复计算机***300的微处理器。在一个实施例中,***管理员能够通过经由网络336通过ME 335来编辑解码表333的内容而远程地配置计算机***300。
为了解释的方便,本申请的剩余部分有时将NVRAM 142称为PCMS设备。PCMS设备包括非易失性的多层(垂直堆叠的)PCM单元阵列,具有低功耗,并且在位级别可修改。照此,在以下讨论中,术语“NVRAM设备”和“PCMS设备”可以可互换地使用。然而应该认识到,如以上所讨论的,除PCMS之外的不同的技术也可以被用于NVRAM 142。
应该理解,即使计算机***的处理器不具有处理器310的所有以上所描述的组件,或者具有比处理器310更多的组件,该计算机***也能够将NVRAM 142用于***存储器、大容量储存器、固件存储器和/或其它存储器和储存器目的。
在图3中所示出的特定的实施例中,MSC控制器124和NVRAM控制器332位于与处理器310相同的管芯或封装(被称为CPU封装)上。在其它实施例中,MSC控制器124和/或NVRAM控制器332可以位于管芯外或CPU封装外,通过诸如存储器总线(像DDR总线(例如,DDR3、DDR4等))、PCI高速总线、桌面管理接口(DMI)总线、或任何其它类型的总线之类的总线而耦合到处理器310或CPU封装。
作为用于远存储器的高速缓存层的近存储器的实现
如以上所讨论的,在各种配置中,近存储器能够被配置为用于远存储器的高速缓存层。本文,可以为特定的(例如,特定范围的)***存储器地址预留特定的远存储器储存设备(例如,特定安装的PCMS存储器芯片)。照此,特定的近存储器储存设备(例如,特定安装的DRAM存储器芯片)可以被设计成充当用于特定的远存储器储存设备的高速缓存层。因此,这些特定的近存储器储存设备应该具有减少最频繁访问的***存储器地址的访问时间的效果,特定的远存储器储存设备被设计成为所述***存储器地址提供储存。
根据进一步的方法,在图4中所观察的,近存储器设备被配置为用于其远存储器配对物(counterpart)的直接映射的高速缓存。如本领域中良好地理解的,直接映射的高速缓存被设计成使得高速缓存中的每个条目为更深存储中的唯一条目集而预留。也就是说,在该情况下,远存储器401的储存空间能够被视为分解成不同的储存集401_1、401_2、…401_N,其中每个集被分配高速缓存402中的条目。照此,如图4中所观察的,条目402_1为与集401_1关联的任何的***存储器地址而预留;条目402_2为与集401_2关联的任何的***存储器地址而预留等。通常,在图4以及图7a、8a和11的任何一个中出现的任何的结构“逻辑块”可以大部分地(如果不是整体地)利用逻辑电路来实现。
图4还示出可以例如从CPU处理核被提供的用于向或从***存储器的读或写事务的示例性***存储器地址的部分。实质上,一组集合位404定义***存储器地址与哪个集合相关联,并且一组标签位405定义***存储器地址与适当的集合中的哪个条目(其可以对应于高速缓存线)相对应。较低阶位403标识高速缓存线内的特定字节。
例如,根据一个示例性实现,高速缓存线大小是64字节,高速缓存402利用大约1千兆字节(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]。
根据该布置,注意四个标签位405指定与DRAM储存与PCMS储存之比对应的1至16的范围内的值。照此,高速缓存402中的每个条目将映射到16个不同的远存储器401高速缓存线(即,提供跨16个不同的远存储器401高速缓存线的可高速缓存支持)。该布置本质上定义远存储器401中的每个集合的大小(每个集合16个高速缓存线)。与高速缓存402中的条目的数量对应的集合的数量由集合位404定义。在该示例中,集合位404与地址空间的24位(地址位A[29:6])相对应,其继而与16,777,216个高速缓存条目/集合相对应。因而,64字节高速缓存线与高速缓存402内的大约1GB的储存(16,777,216x 64字节=1,073,741,824字节)相对应。
如果高速缓存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])(这本质上使集合的数量加倍)来进一步考虑。
图4中所观察的远存储器储存401可以仅与计算机***的总的远存储器储存的子集相对应。例如,用于计算***的完整***存储器可以通过包含图4中所观察的近/远存储器子***的多个实例而实现(例如,一个实例用于***存储器地址的每个唯一子集)。本文,根据一种方法,较高阶位408被用来指示多个近/远存储器子***之中的哪个特定实例申请给定的***存储器访问。例如,如果每个实例与起源于主机侧409(或更一般地,主机)的不同的存储器通道相对应,那么较高阶位408将实际上指定可应用的存储器通道。在采用被称为“置换”寻址方法的替代方法中,较高阶位408不存在。更确切地,位405表示最高阶位,并且最低阶位空间403内的位被用来确定哪个存储器通道要被用于该地址。该方法被认为通过实际上将更多随机化引入到随时间而利用的特定存储器通道中而给出更好的***性能。地址位能够采用任何次序。
图5(写)和图6(读)描绘图4的近/远存储器子***的可能的操作方案。参考图4和图5,针对写操作,集成存储器控制器431接收包括写地址和要写的数据的写事务501。该事务可以存储在缓冲器415中。在确定哪个近/远存储器子***实例应用时(例如,根据较高阶位408的分析),存储器侧控制(MSC)逻辑424的命中(hit)未命中(miss)逻辑414向近存储器高速缓存接口逻辑416提供集合位404,来使得用于可应用集合的高速缓存条目从近存储器高速缓存402来读502。本文,近存储器高速缓存接口逻辑416特定于存储器通道401上的近存储器(例如,DRAM)而负责实现协议,包括电信号的生成/接收。
如图4中所观察的,在实施例中,每个高速缓存条目与其对应的数据410一起包括嵌入标签411、脏位412和ECC信息413。嵌入标签411标识远存储器401中的条目的可应用集合中的哪个高速缓存线被高速缓存在高速缓存402中。脏位412指示被高速缓存的条目是否为用于高速缓存线的唯一有效复制。如本领域中公知的,ECC信息413被用来检测以及可能地校正从/向高速缓存402读和/或写条目时发生的错误。
在用于可应用集合的被高速缓存的条目利用近存储器高速缓存接口逻辑416被读之后,MSC命中/未命中逻辑414将刚读的条目的嵌入标签411与写事务的地址的标签405相比较503(注意,读自该高速缓存的条目可以存储在读缓冲器417中)。如果它们匹配,那么被高速缓存的条目与事务的目标相对应(高速缓存命中)。因此,命中/未命中逻辑414使得近存储器高速缓存接口逻辑利用为事务而接收的新数据来改写504高速缓存402中的刚读的高速缓存条目。处于写执行中的MSC控制逻辑424保持嵌入标签411的值不变。MSC控制逻辑424还设置脏位412以指示新写的条目与高速缓存线的唯一有效版本相对应,并且计算用于高速缓存线的新ECC数据。读自读缓冲器417中的高速缓存402的高速缓存线被丢弃。此时,该过程以高速缓存命中而结束。
如果读自高速缓存402的高速缓存线的嵌入标签411不匹配于事务地址的标签405(高速缓存未命中),与高速缓存命中一样,命中/未命中逻辑414使得近存储器高速缓存接口逻辑416将与该事务关联的新数据写505到高速缓存402中(利用如地址规定的集合位404),以实际上改写刚读自高速缓存402的高速缓存线。嵌入标签411被写为与该事务关联的标签位405。脏位412被写以指示被高速缓存的条目是用于该高速缓存线的唯一有效复制。存储器控制器的ECC逻辑420计算用于随该事务而接收到的高速缓存线的ECC信息413,并且近存储器高速缓存接口逻辑416将其与高速缓存线一起写到高速缓存402中。
关于刚读自高速缓存并且存储在读缓冲器417中的高速缓存线,近存储器命中/未命中逻辑414检查其关联的脏位506,并且如果脏位指示读缓冲器417中的高速缓存线是高速缓存线的唯一有效版本(脏位被“设置”),命中/未命中逻辑414使得NVRAM控制器432通过其远存储器接口逻辑418将高速缓存线写507到其适当的远存储器位置中(使用刚如地址而读的事务的集合位404和高速缓存线的嵌入标签位411)。本文,远存储器接口逻辑418特定于存储器通道401上的远存储器(例如,PCMS)而负责实现协议,包括电信号的生成/接收。如果读缓冲器417中的高速缓存线的脏位指示读缓冲器417中的高速缓存线不是高速缓存线的唯一有效版本,那么读缓冲器中的高速缓存线被丢弃。
本文,在其中到近存储器高速缓存和远存储器的接口416、418不忙的时刻期间,MSC控制逻辑424可以从高速缓存402读高速缓存线条目,并且针对设置了其脏位的那些高速缓存线条目,存储器控制器将把其重写到远存储器中,并且“清除”其关联的脏位以指示高速缓存402中的高速缓存线不再是高速缓存线的唯一有效复制。
此外,相关地指出,相应的近存储器高速缓存和远存储器接口416、418能够彼此完全隔离或者关于彼此具有一定重叠。本文,重叠与相应的近和远存储器协议和/或信令的相同的方面(例如,相同的时钟信号、相同的管芯上终止信号、相同的寻址信号等)相对应,并且因而可以使用相同的电路来访问近存储器高速缓存和远存储器。非重叠区域与两个协议和/或信令的不相同的方面相对应,并且因而具有可应用于近存储器高速缓存和远存储器中的仅一个的电路。
以上所描述的架构能够被用于其中MSC控制逻辑424通过与NVRAM控制器432和远存储器401通过其而耦合通过的存储器通道不同的隔离存储器通道来耦合到近存储器高速缓存402。本文,对于任何特定的通道,依赖于是近存储器高速缓存还是远存储器被耦合到通道来启用接口416、418之一而禁用另一个。同样地,启用MSC控制逻辑424和NVRAM控制器432之一而禁用另一个。在实施例中,例如可以由BIOS写到的与存储器控制器(未示出)关联的配置寄存器确定要启用哪个配置。
以上相同的架构还可以支持其中近存储器高速缓存和远存储器耦合到相同的通道421的另一个配置。在该情况下,接口416、416的集成能够被视为到通道421的单个接口。根据该配置,“启用”接口416、418这二者和控制器424、432这二者,但仅一组(用于近存储器的接口416和控制器424,以及用于远存储器的接口418和控制器432)能够在任何特定的时间点使用该通道。本文,通道的使用随时间而在近存储器信令和远存储器信令之间交替。该配置可以利用例如前述的配置寄存器中的第三设置来建立。以下讨论主要与该设置相关。
本文,通过能够将相同的通道用于近存储器访问和远存储器访问这二者,***到通道中的近存储器高速缓存能够被用作用于***到相同的通道中的远存储器储存的近存储器高速缓存。换种说法,可以将特定的***存储器地址分配到一个单个通道。***到通道中的远存储器设备为这些特定的***存储器地址提供了远存储器储存,并且***到相同的通道中的近存储器储存为这些远存储器设备提供了高速缓存空间。照此,以上所描述的调用近存储器和远存储器这二者(例如,由于高速缓存未命中和/或脏位被设置)的事务能够通过相同的通道而发生。
根据一种方法,通道被设计成包括单独的平板卡(例如,DIMM)能够***到其中的机械插座/连接器,所述单独的平板卡在其上布置了集成电路。本文,所述卡具有与通道的插座/连接器配对的对应的插座/连接器。能够将具有仅远存储器储存的一个或多个卡***到第一组连接器中,以实现用于通道的远存储器储存。仅具有近存储器储存的一个或多个卡能够***到相同的通道中并且充当用于远存储器卡的近存储器高速缓存。
本文,在远存储器储存固有地比近存储器储存更密集但近存储器储存固有地比远存储器储存更快的情况下,能够利用考虑到的“速度对密度”权衡来设计通道。也就是说,越多的近存储器卡***到通道中,通道将执行得越快,但代价是越少的由通道所支持的总储存容量。反之,越少的近存储器卡***到通道中,通道将执行得越慢,但具有由通道所支持的增强的储存容量的附加益处。极端情况可以包括其中仅在通道中填入较快的存储器储存技术(例如,DRAM)(在该情况下,其可以像用于另一个通道上的远存储器的高速缓存一样动作,或不像高速缓存一样动作而是被分配其自身的特定***存储器地址空间)或仅在通道中填入较慢的存储器储存技术(例如,PCMS)的实施例。
在其它实施例中,将近存储器和远存储器布置在相同的卡上,在该情况下,即使多个此类卡被***到相同的通道中,速度/密度权衡也由所述卡来确定。
图6描绘读事务,根据图6的方法,存储器控制器431接收包括读地址611的读事务。事务可以存储在缓冲器415中。在确定哪个近/远存储器子***(例如,哪个存储器通道)实例应用时,MSC控制器的命中未命中逻辑414向近存储器高速缓存接口逻辑416提供集合位404,以使得用于可应用集合的被高速缓存的条目从高速缓存402来读612。
在利用高速缓存接口逻辑416来读用于可应用集合的被高速缓存的条目之后,命中/未命中逻辑414将刚读的条目的嵌入标签411与读事务的地址的标签405相比较613。如果其匹配,那么被高速缓存的条目与事务的目标相对应(高速缓存命中)。因此,读过程结束。如果读自高速缓存402的高速缓存线的嵌入标签411与事务地址的标签405不匹配(高速缓存未命中),那么命中/未命中逻辑414使得远存储器接口逻辑418读614事务中所指定的地址处的远存储器储存(403、404、405)。然后,将读自远存储器的高速缓存线写到高速缓存615中,并且如果在步骤612中为读自近存储器高速缓存的高速缓存线设置了脏位,那么读自近存储器高速缓存的高速缓存线被写到远存储器616中。
尽管MSC控制器424可以执行对读自远存储器的读数据进行检查的ECC,但如以下更详细地描述的,根据各种实施例,ECC检查可以由驻存于一个或多个远存储器设备本地(例如,附到一个或多个PCMS设备被附到的相同的DIMM)的逻辑电路422来执行。该相同的逻辑电路422还可以在高速缓存未命中和脏位被“设置”的情况下为写事务计算ECC信息。
此外,在其中相同的存储器通道421被用来传送近存储器信令和远存储器信令的实施例中,逻辑电路422能够被用来“加速”以上所描述的核写和读过程。就在以下讨论了这些加速中的一些。
利用耦合到相同的存储器通道的近存储器和远存储器的读和写事务
A.近存储器在远存储器控制逻辑的“前面”
图7a示出“近存储器在前面”方法,而图8a示出“近存储器在后面”方法。以下将进一步更详细地讨论“近存储器在后面”方法。对于以下的每个模型以及其随后的讨论而言,术语“存储器控制器”或“主机”或“主机侧”被用来(主要)指代由MSC控制器或NVRAM控制器所执行的电路和/或动作。在特定的情形下应用哪个电路在以下中直截了当地理解:当近存储器高速缓存在通道上被访问时,MSC控制器被包含,然而当远存储器在通道上被访问时,NVRAM控制器被包含。此外,以下讨论还涉及远离主机侧并且位于“通道上之外”的远存储器附近的“远存储器控制器”或“远存储器控制逻辑”。本文,远存储器控制逻辑能够被视为NVRAM控制器的组件,其中NVRAM控制器的另一个组件驻存在主机上以从主机侧执行适当的远存储器访问(与以下的实施例一致)。
参考图7a,注意近存储器储存设备702_1、702_2…702_N(诸如多个DRAM芯片)独立于远存储器逻辑电路722(及其关联的远存储器储存设备701_1、701_2、…702_M(诸如多个PCMS芯片)耦合到通道721而耦合到相同的通道721。
换种说法,近存储器平台730和远存储器平台732独立于彼此而单独地连接到相同的通道721。该方法能够例如利用***到相同的存储器通道中的具有不同的相应的存储器储存技术的不同的DIMMS(例如,近存储器平台730与DRAM DIMM相对应,并且远存储器平台732与PCMS DIMM相对应)来实现。该方法还能够例如利用包含不同的相应的存储器储存技术(例如,近存储器平台730与DIMM的一侧相对应,并且远存储器平台732与DIMM的另一侧相对应)的相同的DIMM来实现。
图7b示出包括高速缓存未命中的读事务,其中远存储器控制逻辑722自动地检测高速缓存未命中并且作为响应自动地读远存储器。参考图7a和7b,主机侧MSC控制逻辑424a接收读请求761并且从高速缓存702读用于可应用集合的高速缓存线条目762。作为访问高速缓存702的通道721上的事务的部分,主机侧MSC控制逻辑424a将原始读请求的标签位705“偷传(sneak)”到通道721上。在进一步的实施例中,主机侧MSC控制逻辑424a还能够偷传指示由存储器控制器接收到的原始事务请求是读请求(而不是写请求)的信息780。
根据一种方法,在以下更详细地解释的,在近存储器地址总线的未使用行或列地址上“偷传”标签位705和读/写信息780。在进一步的实施例中,与行地址位相比更多的列地址位被用于该目的。根据还进一步的方法,通过被用于将寻址信息传送到近存储器储存设备(并且潜在地,还有远存储器设备)的通道721的命令总线组件来提供所偷传的信息705、780。
因为远程控制逻辑电路722连接到通道721,其能够“抓取(scarf)”:1)来自原始请求的标签位705(以及读事务的指示780),当其在通道721上被偷传时;2)应用于近存储器高速缓存702的读地址;以及3)高速缓存线及其关联的嵌入标签位711、脏位712以及ECC信息713,当从近存储器高速缓存702读时。本文,抓取763被理解成包括将这些信息项的任何/所有本地地(例如,在被嵌入的寄存器空间750中)存储在逻辑电路722上。
照此,还包括其自身命中/未命中逻辑723的远存储器控制逻辑电路722能够与存储器控制器的命中/未命中逻辑714并行地确定764存在高速缓存命中还是高速缓存未命中。在高速缓存命中的情况下,远存储器控制逻辑电路722不采取进一步的动作并且存储器控制器731对读自高速缓存的数据执行ECC计算,并且将其与嵌入的ECC信息714相比较以确定高速缓存读数据是否有效。
然而,在高速缓存未命中的情况下,并且在知道事务是读事务的情况下(例如,根据偷传信息780),逻辑电路722将意识到将需要读其组成的远存储器储存701来最终服务原始读请求。照此,根据一个实施例,逻辑电路722能够自动地读765其关联的远存储器资源732来检索所期望的读信息,对读自远存储器(其还具有嵌入的ECC信息)的高速缓存线执行ECC计算,并且如果在数据中不存在损坏,则提供所期望的远存储器读信息。
如以上刚提及的,为了执行这种“自动读”,应该由存储器控制器731采用某种方式来通知逻辑电路722:整体事务是与写操作相对的读操作(如果以上所描述的事务是写事务,那么逻辑电路将不需要执行远存储器的读)。根据一个实施例,如以上已经提到的,指示关于是写事务还是读事务起作用的读/写信息780被“偷传”到逻辑电路722(例如,与原始事务请求的标签信息705一起)。
与远存储器控制逻辑722自动读远存储器732并行地,存储器控制器731能够在通道721上将读请求786调度并发布到远存储器控制逻辑722。如以下更详细地描述的,在实施例中,存储器控制器731被配置成通过通道721传送两个不同的协议:i)特定于近存储器设备730的第一协议(例如,行业标准DDR DRAM协议);以及ii)特定于远存储器设备732的第二协议(例如,特定于PCMS设备的协议)。本文,近存储器高速缓存读请求762利用第一协议来实现,并且相比之下,对远存储器786的读请求利用第二协议来实现。
在进一步实施例中,如以下进一步更详细地描述的,因为由远存储器设备732响应读请求786所需的时间不能被确定无疑地预测,所以整体读事务的标识符790(“事务id”)与由存储器控制器所发送的远存储器读请求786一起被发送到远存储器控制逻辑722。当该数据最后从远存储器732读时,其最终被发送787到存储器控制器731。在实施例中,作为事务的部分,事务标识符790在将读数据发送到存储器控制器731的通道721上被返回到存储器控制器731。
本文,事务标识符790的包含用以通知存储器控制器731:读数据相关的事务。这可以在以下中尤其重要:如以下更详细描述的,远存储器控制逻辑722维持缓冲器以存储来自存储器控制器731的多个读请求,并且远存储器的读响应时间的不确定性导致来自远存储器的“无序”(OOO)读响应(在前面的读请求之前可以响应后续的读请求)。在进一步实施例中,在通道721上所使用的两个协议的特有特征在于近存储器协议将设备730看作不正式请求通道721的使用的从设备(因为其定时被良好地理解并且在存储器控制器的控制之下)。相比之下,远存储器协议允许远存储器控制逻辑722向存储器控制器731发布用于将读数据发送到存储器控制器731的请求。作为进一步的区别点,在近存储器高速缓存读的期间被“偷传”到通道上的标签705和r/w信息780在以下意义上被“偷传”:该信息被运输到远存储器控制逻辑电路,并且与潜在的远存储器访问相关(即使技术上近存储器协议在起作用)。
可替代于以上关于图7b所讨论的“自动”读,远存储器控制逻辑电路722能够被设计成制止自动读所需的数据并且作为代替在高速缓存未命中的情况下等待来自存储器控制器的读请求及对应的地址。在该情况下,当近存储器高速缓存被读时,逻辑电路722不需要抓取地址,也不需要将关于整体事务是读事务还是写事务的任何信息偷传到逻辑电路722。如果远存储器控制逻辑722能够无序地服务读请求,那么仍然可以需要将事务ID 790与读请求一起发送到远存储器控制逻辑722。
不管逻辑电路722是否对高速缓存未命中自动地执行所需的远存储器读,如图7c中所观察的,在由远存储器控制逻辑电路722检测到高速缓存未命中的情况下,远存储器控制逻辑电路722的命中/未命中逻辑电路723能够被设计成检查在抓取的高速缓存线766中是否设置脏位712。如果如此,抓取的高速缓存线将需要被写到远存储器732。照此,然后逻辑电路722能够在没有来自存储器控制器的正式请求的情况下,将抓取的高速缓存线自动地存储767到其组成的远存储器储存资源732中(包括在存储ECC信息之前重新计算ECC信息,以确保数据未损坏)。
本文,依赖于实现,对于对远存储器平台的写操作而言,逻辑电路722能够通过如以上所描述的抓取近存储器高速缓存读的较早的读地址以及将其与读自近存储器高速缓存的高速缓存线的嵌入标签信息合并来构造适当的写地址。可替代地,如果逻辑电路722不抓取高速缓存读地址,那么其能够通过当其请求从远存储器读正确信息时,将嵌入在抓取的高速缓存线中的标签信息与由存储器控制器所提供的读地址合并来构造适当的写地址。具体地,逻辑电路722能够将读请求的设置和降低阶位部分404、405与抓取的高速缓存线上的嵌入标签711合并,以完全构造正确的地址。
如以上所描述的自动执行对远存储器平台732的写消除了存储器控制器731请求对远存储器平台的写的需要,但同样并且促成使通道721完全摆脱与对远存储器平台的写相关的任何活动。这可以与通道的速度方面的显著的改善相对应。
相关地指出以上刚描述的加速对:远存储器的自动读(图7b)和对远存储器的自动写(图7c)能够依赖于设计者选择而采用任何组合(这二者、只一者)来实现。
作为对比,不具有由远存储器控制器722的存在所提供的加速的基本读事务名义上包括用于在脏位被设置时经历高速缓存未命中的读事务的6个原子操作。这些是:高速缓存读请求、高速缓存读响应、远存储器读请求、远存储器读响应、近存储器写请求(高速缓存更新)和远存储器写请求(因为脏位被设置,所以将读自高速缓存的高速缓存线加载到远存储器中)。
相比之下,在实现图7b(远存储器的自动读)和图7c(对远存储器的自动写)的加速这二者时,整体事务能够利用对通道的仅4个原子操作来完成。也就是说,能够消除远存储器读请求和远存储器写请求。
以上讨论涉及在近存储器在远存储器控制逻辑“的前面”时的读事务过程。在写事务过程的情况下,参考图7d,响应于接收到写事务751,存储器控制器发起近存储器高速缓存读并且偷传标签信息705和指示整体事务是写并不是读的信息780,如以上所描述的752。在完成近存储器的读之后,存储器控制器731在高速缓存中用新数据改写旧数据753。在实施例中,存储器控制器检查来看是否存在高速缓存命中754和/或脏位是否被设置755,以理解远存储器控制逻辑电路将采取什么动作(例如,用于通道调度),但不以其它方式对通道采取进一步的动作。
如以上所描述的,远存储器控制逻辑电路722抓取被用来访问高速缓存的地址、被偷传的信息705、780以及读自高速缓存的高速缓存线及其关联的信息756,并且根据其自身来检测高速缓存未命中757。如果存在高速缓存命中,那么远存储器控制逻辑不采取进一步的动作。如果存在高速缓存未命中,那么依赖于设计实现,类似于以上所描述的过程,逻辑电路722还能够检测758脏位是否被设置以及将被抓取的高速缓存线自动地写759到远存储器中(在没有来自存储器控制器的请求的情况下)。
采用替代的方法,存储器控制器731在检测到高速缓存未命中和脏位被设置754、755之后,将请求发送到远存储器控制逻辑722(包括写地址)以将读自高速缓存的高速缓存线写到远存储器中。存储器控制器还能够通过通道721将读自高速缓存的高速缓存线发送到远存储器控制逻辑。
B.近存储器在远存储器控制逻辑“后面”
参考图8a,其描绘了“近存储器在后面”架构,注意近存储器储存设备802_1、802_2…802_N(诸如多个DRAM芯片)至少在一定程度上通过远存储器控制逻辑电路822而耦合到通道821的至少部分。然而,本文,用于“近存储器在前面方法”的远存储器控制逻辑包括用于通道和远存储器的不同接口,相比之下,用于“近存储器在后面”方法的远存储器控制逻辑包括用于通道、远存储器和近存储器的不同接口。根据一个实施例,通道821能够被视为具有3个主要的子组件:1)命令总线841(通过其来发送读和写请求及其对应的地址);2)数据总线842(通过其来发送读和写数据);以及3)控制信号843(例如,一个或多个选择信号、一个或多个时钟使能信号、一个或多个管芯上终止信号)。
如图8a的特定方法中所描绘的,近存储器储存平台830的数据总线890可以独立地耦合891到数据总线842,但通过逻辑电路822耦合到命令总线841和控制信号843组件。远存储器储存平台831通过逻辑电路822耦合到所有3个子组件841、842、843。在替代的实施例中,像远存储器储存平台一样,近存储器储存平台830的数据总线890通过逻辑电路822耦合到通道的数据总线组件842。“近存储器在后面”架构至少可以例如利用逻辑电路822来实现,近存储器储存设备830和远存储器储存设备831都在相同的物理平台上实现(例如,***到通道中的相同的DIMM卡,其中多个此类DIMM卡能够***到通道中)。
图8b示出在高速缓存未命中情况下的用于“近存储器在后面”架构的读过程。参考图8a和8b,如果存储器控制器831接收到读请求861,那么其通过命令总线841将包含原始请求的地址的集合位804和较低阶位803的读请求862(例如,采用分包化形式)发送到远存储器控制逻辑电路822。此外,作为读请求序列的部分,原始读请求的标签位805(例如来自CPU)被“偷传”862到通道821上。根据一种方法,以下更详细地解释的,在通道821的命令总线组件841(其被用于将寻址信息传送到远存储器控制逻辑822以用于近和远存储器访问这二者)上“偷传”标签位805。本文,不像远存储器“在前面”方法那样,由于以下进一步解释的原因,在通道上不需要偷传指示原始事务是读还是写的附加信息。本文,远存储器控制逻辑822能够“切断”存储器控制器对远存储器的读请求,以确定整体事务是读事务而不是写事务。
响应于接收到的读请求,逻辑电路822在本地近存储器地址总线870上呈现关联的地址,以针对近存储器平台实现高速缓存读操作。来自近存储器平台830的适当的高速缓存线直接由近存储器平台830(在该情况下存储器控制器执行ECC计算)或者通过远存储器控制逻辑822(在该情况下逻辑822和存储器控制器831这二者都可以执行ECC计算)随后被呈现804在数据总线842上。
因为远存储器控制逻辑电路822连接到通道821,所以其能够抓取或以其它方式在本地存储863(例如,在其自身的寄存器空间850中)以下中的任何一个:1)在通道821上被偷传的标签位805;2)被用来寻址近存储器高速缓存830的地址信息;以及3)来自近存储器830的高速缓存线及其关联的嵌入标签位811、脏位812和ECC信息813,当由近存储器平台830来提供时。
作为响应,逻辑电路822的命中/未命中逻辑823能够与存储器控制器的命中/未命中逻辑814并行地确定是否存在高速缓存命中或高速缓存未命中。在高速缓存命中的情况下,将读自近存储器的信息提供到存储器控制器831,并且逻辑电路822不采取进一步的动作。在其中近存储器高速缓存平台在不通过逻辑电路822的情况下连接到数据总线的实施例中,存储器控制器831对读自近存储器高速缓存的高速缓存线执行ECC计算。在其中近存储器高速缓存平台通过逻辑电路822连接到数据总线的另一个实施例中,在逻辑电路822和存储器控制器831这二者上计算对读自近存储器高速缓存的高速缓存线的ECC计算。
在由逻辑电路822检测到高速缓存未命中的情况下,高速缓存/命中未命中逻辑电路823将意识到:将需要远存储器储存平台831的读以最终服务原始读请求。照此,根据一个实施例,逻辑电路822能够从远存储器平台831自动地读,以检索所期望的读信息864并且执行ECC计算。
与远存储器控制逻辑822自动地读远存储器831并行地,回忆起已经向存储器控制器831提供了读自近存储器的高速缓存线,存储器控制器831能够同样地检测高速缓存未命中并且作为响应在通道821上将读请求886调度和发布到远存储器控制逻辑822。如以上所提及的和如以下更详细描述的,在实施例中,存储器控制器831能够通过通道821来传送两个不同的协议:i)特定于近存储器设备830的第一协议(例如,行业标准DDR DRAM协议);以及ii)特定于远存储器设备831的第二协议(例如,特定于PCMS设备的协议)。本文,近存储器高速缓存读862通过通道821利用第一协议来实现,并且相比之下,对远存储器886的读请求利用第二协议来实现。
在进一步的实施例中,如以上所提及的和如以下更详细描述的,因为由远存储器设备831响应读请求886所需的时间不能被确定无疑地预测,所以整体读事务的标识符890(“事务id”)与由存储器控制器所发送的远存储器读请求886一起被发送到远存储器控制逻辑822。当最后从远存储器831读数据时,其最终被发送887到存储器控制器831。在实施例中,作为事务的部分,事务标识符890在将读数据发送到存储器控制器831的通道821上被返回到存储器控制器831。
本文,事务标识符890的包含用以通知存储器控制器831:读数据相关的事务。这可以在以下中尤其重要:如以下更详细描述的,远存储器控制逻辑822维持缓冲器以存储来自存储器控制器831的多个读请求,并且远存储器的读响应时间的不确定性导致来自远存储器的“无序”(OOO)读响应(在前面的读请求之前可以响应后续的读请求)。
在其中在通道上使用的两个不同的协议的进一步实施例中,两个协议的特有特征在于近存储器协议将设备830看作不正式请求通道821的使用的从设备(因为近存储器的定时被良好地理解并且在存储器控制器的控制之下)。相比之下,远存储器协议允许远存储器控制逻辑822向存储器控制器831发布用于将读数据发送到存储器控制器831的请求。作为进一步的区别点,在近存储器高速缓存读的期间被“偷传”到通道上的标签805信息在以下意义上被“偷传”:该信息被运输到远存储器控制逻辑电路822,以用于潜在的远存储器读(即使技术上近存储器协议在起作用)。
可替代自动地执行远存储器读,远存储器控制逻辑电路822能够被设计成制止自动读远存储器中所需的数据,而是等待来自存储器控制器831的读请求及对应的地址。在该情况下,当近存储器高速缓存被读时,逻辑电路822不需要保持地址,其也不需要来自存储器控制器831的关于整体事务是读事务还是写事务的任何被偷传的信息880。
不管逻辑电路822是否在高速缓存未命中的情况下自动地执行远存储器读,如图8c的过程中所观察的,逻辑电路822的命中/未命中逻辑电路823能够被设计成当高速缓存未命中发生以及脏位被设置时,将读自近存储器高速缓存的高速缓存线写到远存储器中。在该情况下,在高级别处,除对近存储器830的写在近存储器平台830不通过通道来寻址的意义上至少部分地对通道821隐藏867之外,该过程基本上与图7c中所观察的相同。如果近存储器平台830的数据总线895不直接耦合到通道的数据总线842,而是通过远存储器控制逻辑822耦合到通道的数据总线842,那么整个远存储器写能够对通道821隐藏。
采用该方式来自动执行对远存储器平台831的写不仅消除了存储器控制器831请求该写的需要,而且使通道821完全摆脱与对远存储器平台831的写相关的任何活动。这应该与通道的速度方面的显著的改善相对应。
在高速缓存未命中的情况下,为了实现高速缓存更新步骤,如果远存储器控制逻辑电路822被进一步设计成利用远存储器读操作的结果来更新近存储器高速缓存平台830,则可以实现附加的效率。本文,因为远存储器读操作869的结果与对可应用集合的最近访问相对应,所以这些结果还需要被写到用于该集合的高速缓存条目中,以便完成事务。通过利用远存储器读响应来更新高速缓存,避免了用以更新高速缓存的通过通道821对近存储器的单独的写步骤。本文,一些机制(例如,附加的协议步骤)可以需要被实现到通道中,以使得远存储器控制逻辑能够访问近存储器(例如,如果认为近存储器的使用要在存储器控制器831的控制之下调度的话)。
相关地指出以上刚描述的加速:远存储器的自动读(图8b)、对远存储器的自动写(图8c)、以及与读响应并行的高速缓存更新可以依赖于设计者选择而采用任何组合(所有、任何二者、只一者)来实现。
至于写事务过程,根据一种方法,在近存储器数据总线880直接耦合到通道数据总线842的情况下,能够执行以上关于图7d所描述的过程。在近存储器数据总线880通过远存储器控制逻辑822耦合到通道数据总线842的情况下,可以使用图8d中所呈现的另一种方法。
根据图8d的过程,响应于接收到写事务851,存储器控制器将写命令852发送到远存储器控制逻辑822(包括对应的地址和数据)并且通过通道来偷传写事务的标签信息。作为响应,远存储器控制逻辑822执行近存储器高速缓存平台830的读853,并且根据嵌入的标签信息811和偷传的标签信息805来确定发生了高速缓存未命中还是高速缓存命中854。在高速缓存命中或高速缓存未命中的情况下,当未设置脏位时855,将与写命令一起接收的新的写数据写856到近存储器高速缓存830。在高速缓存未命中且设置了脏位的情况下,远存储器控制逻辑电路将与写命令一起接收的新的写数据写到近存储器高速缓存中,并且将刚读自近存储器830的被驱逐(evicted)的高速缓存线写到远存储器831中。
根据图8b的读事务的讨论回忆起:在“近存储器在后面”方法中,指示整体事务是读还是写的信息不需要被偷传到远存储器控制逻辑。这能够从图8b和8d看到,其示出在整体读事务的情况下存储器控制器初始地传送近存储器读请求(图8a)或者在整体写事务的情况下初始地传送近存储器写事务(图8d)。
原子通道事务和物理通道集成
如图7a和8a中所观察的,存储器控制器和近存储器设备之间的通信可以通过传送存储器控制器和远存储器设备之间的通信的相同通道来载送。进一步地,如以上所提到的,近存储器和远存储器可以由存储器控制器利用不同的协议来访问(用于访问近存储器的第一协议和用于访问远存储器的第二协议。照此,可以例如在相同的存储器通道上实现两种不同的协议。就在以下讨论了这些协议的各方面。
a.近存储器高速缓存访问(第一协议)
在以上的章节中呈现了用于访问近存储器的两种基本方法:第一种其中近存储器储存设备存在于远存储器控制逻辑的“前面”,以及第二种其中近存储器储存设备存在于远存储器控制逻辑的“后面”。
i.近存储器在前面
至少在其中近存储器设备位于远存储器控制逻辑的“前面”的情况下,保留或以其它方式使用用于与***存储器通信的现存/公知的协议可以是有益的。例如,在其中近存储器高速缓存利用附到DIMM卡的DRAM设备来实现的情况下,使用被良好地建立/接受的用于与附到DIMM卡的DRAM设备进行通信的存储器访问协议(例如,目前被良好地建立/接受的协议,或者未来被良好地建立/接受的协议)可以是有益的。通过使用用于与DRAM通信的良好地建立/接受的协议,可以在以下意义上实现规模效益:具有不必被设计用于集成到具有近和远存储器级别的计算***中的DRAM设备的DIMM卡仍然可以被“***到”此类***的存储器通道中并且被用作近存储器。
此外,甚至在其中近存储器位于远存储器控制逻辑的“后面”的情况下,当尝试访问近存储器时,存储器控制器仍然可以被设计成使用良好地建立/公知的DRAM存储器访问协议来与远存储器控制逻辑通信,以使得该***作为整体可以向***的用户提供多个不同的***配置选项。例如,用户能够在使用以下内容之间选择:1)用于近存储器的“仅DRAM”DIMM卡;或者2)其上集成了DRAM和PCMS设备二者的DIMM卡(其中,DRAM充当用于位于相同的DIMM上的PCMS设备的近存储器)。
良好地建立/公知的DRAM协议的实现还允许第三个用户选项,其中不采纳两级存储器方案(近存储器和远存储器)(例如,没有PCMS设备被用来实现***存储器),而是仅安装DRAM DIMM来实现传统的“仅DRAM”***存储器。在该情况下,存储器控制器的配置将被设置成使得其表现为(不利用本文所描述的任何特征来实现近和远存储器级别的)传统存储器控制器。
照此,将启用使得存储器控制器表现得像标准存储器控制器的逻辑电路,然而将禁用使得存储器控制器采用考虑近和远存储器级别的方式来表现的逻辑电路。在***存储器仅采用可替代的***存储器技术来实现的情况下(例如,仅***PCMS DIMM卡),第四个用户选项可以是相反的。在该情况下,可以启用使得存储器控制器仅利用与可替代的***存储器技术一致的不同协议(例如,PCMS特定信令)来运行基本读和写事务的逻辑。
图9a示出适于支持良好地建立/公知的DRAM访问协议(诸如根据相同的信号的上升和下降沿来实现写和读访问的双倍数据速率(“DDR”))的存储器通道921的示例性描绘。通道921能够被视为具有3个主要的子组件:1)命令总线941(通过其来发送读和写请求及其对应的地址);2)数据总线942(通过其来发送读和写数据);以及3)控制信号943(一个或多个选择信号943_1、一个或多个时钟使能信号943_2、一个或多个管芯上终止信号943_3)。在实施例中,如以上所描述的,当存储器控制器909访问近存储器高速缓存时,不管是否其与一个或多个DIMM卡上的实际的DRAM设备和/或一个或多个相同或附加的DIMM卡上的一个或多个远存储器控制逻辑芯片进行“对话”,其都在通道上呈现传统的DDR信号。
根据通道921的操作的一个实施例,对于仅存储器访问而言:1)命令总线941在从存储器控制器909朝向近存储器储存设备的方向上载送分组,其中每个分组包括读或写请求和关联的地址;以及2)数据总线942将写数据载送到目标的近存储器设备,并且从目标的近存储器设备载送读数据。
如图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的上升和下降沿这二者被写或读。
关于控制线943,在实施例中,这些包括选择信号943_1、时钟使能线943_2、以及管芯上终止线943_3。如公知的,多个DIMM卡能够***到相同的存储器通道中。传统地,当存储器控制器读或写特定地址处的数据时,其从/向特定DIMM卡读或写数据(例如,整个DIMM卡或可能是DIMM卡的一侧或DIMM卡的其它部分)。选择信号943_1被用来激活作为操作的目标的特定DIMM卡(或DIMM卡的部分),并且去激活不是操作的目标的DIMM卡。
本文,选择信号943_1可以根据(例如,来自CPU的)原始读或写事务的位来确定,其实际上指定起源于存储器控制器的多个存储器通道中的哪个存储器通道是事务的目标,并且进一步地,***到所识别的通道中的多个DIMM卡中的哪个DIMM卡是事务的目标。想得到地,选择信号943_1能够被配置成使得***在相同的存储器通道中的每个DIMM卡(或DIMM的部分)接收其自身一个唯一的选择信号。本文,激活被发送到用于事务的活动的DIMM卡(或DIMM卡的部分)的特定选择信号,而去激活被发送到其它DIMM卡的选择信号。可替代地,信号信号如总线而路由到每个DIMM卡(或DIMM卡的部分)。所选择的DIMM卡(DIMM卡的部分)由总线的状态来确定。
时钟使能线943_2和管芯上终止线943_3是在读/写数据被呈现在通道的数据总线942上之前被激活且在读/写数据被呈现在通道的数据总线942_1上之后被去激活的功率节约特征。
在各种实施例中,在执行事务的每个步骤所需的时钟周期的数量方面精确地理解了诸如从DRAM所构造的近存储器高速缓存、近存储器事务的定时。也就是说,对于近存储器事务而言,已知完成读或写请求所需的时钟周期的数量,并且已知满足读或写请求所需的时钟周期的数量。
图10示出当应用于近存储器(例如,如以上刚描述的,通过存储器通道)时的用于近存储器访问协议的读和写操作的原子操作序列。根据图10的方法,***到相同的存储器通道中的多个DIMM卡之中的目标DIMM卡(或DIMM卡的部分)通过激活适当的选择线1001来选择。然后激活1002时钟使能线和管芯上终止线(想得到地可以存在选择线以及时钟使能和管芯上终止线的激活的一定重叠)。然后发送(例如,通过命令总线)1003具有可应用地址的读或写命令。仅所选择/激活的DIMM卡(或DIMM卡的部分)能够接收并处理命令。在写的情况下,将写数据写到已激活的设备中(例如,从存储器通道数据总线)1004。在读的情况下,从已激活的设备呈现(例如,在存储器通道数据总线上)读数据1004。
注意,图10的过程尽管描绘了采用未来的存储器协议的对近存储器的原子操作,但也能够被视为与现有的DDR协议原子操作一致。此外,包括近存储器和远存储器的未来***可以利用已经现有的DDR协议或者利用仅具有DRAM***存储器技术的未来***访问DRAM***存储器所利用的未来DRAM协议来访问近存储器。
具体地,在其中DRAM近存储器高速缓存在远存储器控制逻辑的“前面”并且其中远存储器控制逻辑电路不对具有高速缓存未命中的读事务更新DRAM近存储器高速缓存的实现中,存储器控制器将驱动通道上的信号来执行步骤1001、1002、1003并且在步骤1004中在数据总线上为写事务提供写数据。在该情况下,存储器控制器可以表现得与现存的存储器控制器或仅具有DRAM***存储器的未来***的存储器控制器非常相同。对于存储器控制器关于以下时候表现的方式也是如此:1)对于读或写事务,首先读高速缓存;以及ii)对于读或写事务,在高速缓存命中之后写高速缓存。
ii.近存储器在后面
又进一步地,在其中DRAM近存储器高速缓存在远存储器控制逻辑的“后面”的实现中,对于近存储器高速缓存的读或写而言,近存储器仍然可以利用特定于近存储器设备的协议而被访问。例如,近存储器设备可以利用良好地建立(当前或未来)的DRAM DDR协议被访问。此外,即使近存储器设备自身被远存储器控制逻辑利用以某种方式与良好地建立的DRAM协议不同的信号来具体地发信号通知,存储器控制器仍然可以在最终控制近存储器访问方面在通道921上应用良好地建立的DRAM协议来与远存储器控制逻辑进行通信,以实现近存储器访问。
本文,远存储器控制逻辑可以执行采用各种组合的任何/所有的步骤1001、1002、1003、或其各方面的局部等价物(即,在远存储器控制逻辑的“后面”而不是在通道上)。另外,存储器控制器还可以利用远存储器控制逻辑来执行采用各种组合的这些步骤中的每个,包括其中远存储器逻辑电路也执行这些相同的步骤的情况。例如,远存储器控制逻辑可以被设计成充当简单地接受最初由存储器控制器提供的来自通道的信号并且将其重新驱动到其组成的近存储器平台的“转发”设备。
可替代地,远存储器控制逻辑可以最初创建执行步骤1001、1002、1003或其各方面的至少一些所需的至少一些信号,而存储器控制器最初创建执行其它步骤所需的信号。例如,根据一种方法,在执行高速缓存读方面,在执行步骤1001时,存储器控制器可以初始地在通道上驱动选择信号。响应于接收到选择信号1001,远存储器控制逻辑可以将这些信号简单地重新驱动到其组成的近存储器平台,或者可以根据与由存储器控制器在通道上明确地呈现的信令方案不同的选择信令方案来处理和理解其含义并且启用/禁用近存储器平台(或其部分)。选择信号还可以从通道被直接提供到近存储器平台,并且还被路由到远存储器控制逻辑,因此远存储器控制逻辑能够至少识别其组成的近存储器平台(或起部分)何时被定为事务的目标。
响应于识别其组成的近存储器设备的至少部分被定为事务的目标,远存储器控制逻辑可以在步骤1002中在控制逻辑和近存储器储存设备之间的远存储器控制逻辑后面最初地且在本地创建任何/所有的时钟使能信号和/或管芯上终止信号。这些信号可以由远存储器控制逻辑根据由存储器控制器在通道上提供的时钟信号或其它信号来加工。不由远存储器控制逻辑所创建的任何时钟使能信号或管芯上终止信号可以由存储器控制器在通道上提供,并且被直接驱动到近存储器平台或由近存储器控制逻辑重新驱动。
对于近存储器高速缓存读操作而言,存储器控制器可以通过在通道的命令总线上提供合适的请求和访问来执行步骤1003。远存储器控制逻辑可以从通道接收命令(并且在本地存储其相关的地址信息)。其还可以重新驱动或以其它方式向近存储器平台呈现读命令和地址。关于步骤1004,存储器控制器还将接收高速缓存读数据。读数据可以由远存储器控制逻辑电路呈现在通道的数据总线上(在重新驱动由近存储器平台所提供的读数据时),或者读数据可以由近存储器平台在通道的数据总线上直接驱动。
关于发生在高速缓存读之后的近存储器通道操作(诸如用于写事务的在高速缓存命中之后对高速缓存的写),远存储器控制逻辑电路或存储器控制器可以按照以上刚描述的原理来执行采用各种组合的任何的步骤1001、1002、1003。在一种极端情况,远存储器控制逻辑电路独立于存储器控制器而执行步骤1001、1002、1003中的每个。在另一种极端情况,存储器控制器执行步骤1001、1002、1003中的每个,并且远存储器控制逻辑电路将其所有或一些重新驱动到近存储器平台或者接收并理解,并且然后作为响应将其自身的信号应用于近存储器平台。在这些极端情况之间,远存储器控制逻辑可以执行步骤1001、1002和1003或其方面的一些,而存储器控制器执行这些步骤或其方面的其它。
可以酌情将以上刚描述的原子操作与以上在前面的章节中所公开的实施例进行集成。
b.远存储器访问
回忆起在从DRAM构造近存储器高速缓存的情况下,例如,在执行事务的每个步骤所需的时钟周期的数量方面精确地理解近存储器事务的定时。也就是说,对于近存储器事务而言,已知完成读或写请求所需的时钟周期的数量,并且已知满足读或写请求所需的时钟周期的数量。照此,近存储器访问可以整体在存储器控制器的控制之下,或者至少存储器控制器能够精确地知道为每个近存储器访问所花费的时间(例如,为了调度的目的)。
相比之下,对于远存储器事务而言,尽管可以知道通过命令总线来完成读或写请求所需的时钟周期的数量(原因在于,存储器控制器与近存储器控制逻辑电路进行通信),但不知道满足对于远存储器设备自身的任何此类读或写请求所需的时钟周期的数量。如就在以下的讨论中将更明显的,这可以导致在通道上用于远存储器访问的与被用于近存储器访问的协议完全不同的协议的使用。
图11示出远存储器控制逻辑电路1120和直接与远存储器设备对接的关联的接口电路1135的实施例的更详细的视图。本文,例如,近存储器设备的各种储存单元可以依赖于其被访问得多频繁而具有不同的“耗尽”速率(较频繁地被访问的单元与较不频繁地被访问的单元相比耗尽得更快)。
尝试保持各种储存单元的可靠性近似相等,逻辑电路1120和/或接口电路1135可以包括在适当的时刻将较频繁地被访问的储存单元的数据内容移动到较不频繁地被访问的储存单元(并且同样地,将较不频繁地被访问的储存单元的数据内容移动到较频繁地被访问的储存单元)的耗尽均衡算法电路1136。当远存储器控制逻辑具有准备向远存储器平台发布的读或写命令时,耗尽均衡过程可以或可以不处于操作中,或者如果处于操作中,则该过程可以仅刚开始或可以接近完成或处于两者之间的任何地方。
这些不确定性以及起源于基本储存技术的其它可能的定时不确定性(诸如,根据其特定的过去使用率而应用于单独的单元的不同的访问时间)导致某些架构特征的出现。具体地,关于近存储器控制逻辑,远存储器写缓冲器1137存在以保存对远存储器的写请求,并且远存储器读缓冲器1138存在以保存远存储器读请求。本文,远存储器读和写缓冲器1137、1138的出现许可读和写请求的排队或暂时保存。
如果读或写请求准备向远存储器设备发布,但远存储器设备不处于接收任何此类请求的位置(例如,由于耗损均衡过程当前处于操作中),那么所述请求被保存在其相应的缓冲器1137、1138,直到远存储器设备准备接受和处理它们。本文,读和写请求可以在缓冲器中根据此类请求从存储器控制器和/或远存储器控制逻辑的继续传输而加强(例如,在其中如以上所描述的远存储器控制逻辑被设计成自动地访问近存储器的实现中),直到远存储器设备准备开始接收它们。
第二个架构特征是存储器控制器对通道1121上的(例如,来自CPU的)写和读事务的不同部分进行交错以增强***吞吐量的能力。例如,考虑忍受促使从远存储器读的高速缓存未命中的第一读事务。因为存储器控制器不知道何时将服务对于远存储器的读请求,不是潜在地使通道闲置而等待响应,而是存储器控制器自由发布触发用于下一(读或写)的事务的高速缓存读的请求。该过程自由继续直到达到某一硬限制。
例如,存储器控制器自由发起用于下一读事务的请求,直到其识别到远存储器控制逻辑的读缓冲器1138满了(由于高速缓存未命中将创建针对远存储器读请求的需要)或远存储器控制逻辑的写缓冲器满了(由于高速缓存未命中上的设置脏位将创建针对远存储器写请求的需要)。类似地,存储器控制器自由发起用于下一写事务的请求,直到其识别到远存储器控制逻辑的写缓冲器满了(由于高速缓存未命中上的设置脏位将创建针对远存储器写请求的需要)。
在实施例中,存储器控制器为写缓冲器1137和读缓冲器1138中的每个保持信用的计数。每当写缓冲器1137或读缓冲器1138接受新的请求时,其对应的信用计数减小。当信用计数落在用于缓冲器1137、1138任一的阈值(诸如零)以下或达到阈值时,存储器控制器1137、1138制止在通道上发布用于下一事务的任何请求。如以下更详细地描述的,存储器控制器能够理解用于读缓冲器的正确的信用计数,是通过:1)每当读请求被理解成向读缓冲器1138呈现(通过由存储器控制器通过通道直接发送,或者被理解成已经由远存储器控制逻辑自动地创建和输入)时,使读缓冲器信用计数减小;以及2)每当读响应为存储器控制器而呈现在通道1121上时,使读缓冲器信用减小。
此外,再次如以下更详细地描述的,存储器控制器能够理解用于写缓冲器的正确的信用计数,是通过:1)每当写请求被理解成向写缓冲器1137呈现(例如,通过由存储器控制器通过通道直接发送,或者被理解成由远存储器控制逻辑自动地发生)时,使写缓冲器信用计数减小;以及2)每当从写缓冲器1137服务写请求时,使写缓冲器信用减小。在实施例中,再次如以下更详细地描述的,远存储器控制逻辑1120通过将此类信息“背负(piggyback)”于远存储器读请求响应来对存储器控制器通知:从写缓冲器1137向远存储器储存设备平台1131发布写请求。本文,远存储器的读通过通道1121被返回到存储器控制器。照此,每当远存储器控制逻辑1120执行远存储器的读并且将响应传送到存储器控制器时,作为该通信的部分,远存储器控制逻辑还对存储器控制器通知自从就在前面的远存储器读响应以来已经从写缓冲器1137发布的写请求的数量。
附加的复杂在于,在实施例中,读请求可以被“无序”服务。例如,根据用于远存储器控制逻辑电路的一种设计方法,为写缓冲器1137中的写请求遮蔽(screen)读缓冲器1138中的读请求。如果两个缓冲器之间的任何的目标地址都匹配,那么利用与最近未决的写请求关联的新的写数据来服务具有写缓冲器中的一个或多个匹配的配对物的读请求。如果读请求位于不同于读缓冲器队列1138的前面的任何位置,读请求的服务将具有关于读请求被输入在队列1138中的次序对该请求进行“无序”服务的效果。在各种实施例中,远存储器控制逻辑还可以被设计成由于基础的远存储器技术(其可以在某些时间允许某一地址空间可用于读但不是所有的地址空间)而“无序”对请求进行服务。
为了使存储器控制器理解哪个读请求响应与哪个读请求事务相对应,在实施例中,当存储器控制器将读请求发送到远存储器控制逻辑时,存储器控制器还将事务的标识符(“TX_ID”)提供到近存储器控制逻辑。当远存储器控制逻辑最后服务该请求时,其将事务标识符包括在响应中。
回忆起图9a及其关于存储器通道及其由存储器控制器用于利用第一(近存储器)访问协议来访问近存储器高速缓存的使用的实施例的讨论。显著地,图9a被进一步增强以示出能够作为第一(近存储器)访问协议的部分被存储器控制器“偷传”到通道上的但仍然被远存储器控制器用来潜在地触发远存储器访问的信息。图9b示出相同的通道及其用于由存储器控制器利用第二(远存储器)访问协议来访问远存储器高速缓存的使用。
因为在各种实施例中高速缓存线的全地址的标签信息与高速缓存线的数据一起存储在近存储器高速缓存中(例如,嵌入的标签信息411、711、811),所以注意图9a指示当通道被用来访问近存储器高速缓存(读或写)时,名义上为ECC预留的某一部分的位线942_2作为代替被用于嵌入的标签信息411、711。“窃取”ECC线来包含嵌入的标签信息而不是扩展数据总线的大小允许例如为传统计算机***中的使用而制造的DIMM卡被用于具有近和远级别的储存这二者的***中。也就是说,例如,如果在没有任何远存储器的通道中安装了仅DRAM的DIMM(并且因而不表现得像用于远存储器的高速缓存),那么ECC位的全宽度将被用于ECC信息。相比之下,如果在具有远存储器的通道中安装了具有DRAM的DIMM(并且因而DRAM表现得像用于远存储器的高速缓存),那么当访问DRAM时,某一部分的ECC位942_2将实际地被用来存储数据总线上的关联的高速缓存线的地址的标签位。当近存储器高速缓存线的数据被写到近存储器中或从近存储器被读时,在图10的步骤1004期间在ECC线上呈现了嵌入的标签信息411、711、811。
同样根据以上回忆起在某些实施例中,远存储器控制逻辑可以利用作为近存储器请求的部分在存储器通道上被“偷传”到远存储器控制器的附加信息的协助,“自动地”执行某些动作。这些自动动作可以包括:1)自动地检测高速缓存命中或未命中;2)在识别高速缓存未命中和识别读事务在起作用时,对远存储器的自动读;以及3)在识别高速缓存未命中外加识别脏位被设置时,对远存储器的自动写。
如前面的章节中所讨论的,为了执行以上的1)、2)和3),通过作为触发近存储器高速缓存访问的请求的部分而将事务的标签信息405、705、805偷传到远存储器控制逻辑以及将其与读自近存储器且与高速缓存线一起存储的嵌入标签信息411、711、811相比较来检测高速缓存命中或未命中。
在实施例中,参考图9a和图10,事务的标签信息405、705、805在步骤1003中通过命令总线被偷传到远存储器控制逻辑(命令阶段)在原本将被重新产生为近存储器地址总线上的未使用列和/或行位(例如,尤其列多于行)的位置中。如以上所描述的,当高速缓存线通过抓取“被窃取的ECC位”而从近存储器被读时,能够在图10的步骤1004中做出由远存储器控制逻辑对嵌入标签信号411、711、811的抓取。然后能够比较该两个标签。
此外,为了执行以上的2)或3),远存储器控制逻辑应能够检测在起作用的事务的类型(读或写)。在其中近存储器在远存储器控制逻辑的前面的情况下,再次参考图9a和图10,在起作用的事务的类型还能够通过命令总线采用像刚以上为1)描述的用于事务的标签信息的方式那样的方式而被偷传到远存储器控制逻辑(例如,在命令阶段1003期间在命令总线上)。在其中近存储器在远存储器控制逻辑的后面的情况下,对于远存储器控制逻辑而言仅通过切断事务的来自存储器控制器的原始请求来检测整体事务是读还是写(例如,将图8b和8d相比较)是可能的。否则,与近存储器在前面方法相同的操作会受影响。
另外地,为了执行以上的3),参考图9a和图10,远存储器控制逻辑应该能够检测脏位是否被设置。本文,因为脏位是与高速缓存的数据一起嵌入在近存储器中的信息,所以另一个ECC位如刚以上关于嵌入标签信息411、711、811所描述的那样被“窃取”。照此,存储器控制器通过在近存储器写访问的步骤1004期间在通道的ECC位位置942_2之一中呈现适当的值来写脏位。类似地,远存储器控制逻辑能够通过在近存储器读访问期间抓取该相同的ECC位置来检测脏位。
参考图9b和图10,为了解决“无序”问题,事务标识符能够作为远存储器请求的部分被发送到远存储器控制逻辑电路。这还能够通过在远存储器读请求的命令阶段1003期间在命令总线上呈现事务标识符来完成。
图12a示出由存储器控制器通过通道而做出的用于远存储器的读访问的原子过程。图12a的过程可以例如在其中远存储器控制逻辑在检测到用于读事务的高速缓存未命中时不自动执行到远存储器中的读并且需要由存储器控制器来明确请求执行远存储器读的情况下完成。此外,回忆起在以上所描述的实施例中,即使远存储器控制逻辑自动地发起远存储器读,存储器控制器也能够在高速缓存未命中的情况下将读请求发布到远存储器控制逻辑(例如,见图7b和8b)。
参考图9b、11和12a,具有远存储器读地址的读请求由存储器控制器通过命令总线941来发布1201。通过命令总线所发布的读请求还包括由远存储器控制逻辑1120所保持(例如,在寄存器中)的事务标识符。
请求被置于1202读缓冲器1138中。分析保存在写缓冲器1137中的写请求,以看是否有任何一个具有匹配的目标地址1203。如果任何一个具有,那么从最近创建的写请求1204中取得用于读请求响应的数据。如果没有一个具有,那么最后从读缓冲器1138服务该读请求,从远存储器平台1131对读数据进行读,并且用于读数据的ECC信息被计算并且与和读数据1205一起存储的ECC信息相比较。如果ECC检查失效,那么远存储器控制逻辑1206引发错误。本文,参考图9b,错误可以通过选择943_1、时钟使能943_2或ODT943_3线之一来发信号通知。
如果从写缓冲器1137中取得读请求或ECC检查被清除,那么远存储器控制逻辑1120通知存储器控制器:其具有准备用于传输的读响应1207。在实施例中,如图9b中所观察的,该指示990通过为该目的而侵占的通道的选择信号线943_1、时钟使能信号线943_2或管芯上终止线943_3之一来做出。当存储器控制器(在各种实施例中,其具有用以调度通道上的事务的调度器)决定其能够接收读响应时,其将远存储器控制逻辑应该开始发送读响应的指示991发送到所述远存储器控制逻辑1208。在实施例中,如图9b中所观察的,指示991也通过为该目的而侵占的通道的选择线943_1、时钟使能信号线943_2或管芯上终止线943_3之一来做出。
然后,远存储器控制逻辑1120确定自从最后的读响应被发送以来多少写请求已经从写缓冲器1137被发布(“写缓冲器发布计数”)。然后,将读数据与事务标识符和写缓冲器发布计数一起通过通道而返回1209。在实施例中,因为ECC计算由远存储器控制逻辑来做出,所以名义上用于ECC的数据总线线本质上是“空闲的”。照此,如图9b中所观察的,事务标识符992和写缓冲器发布计数993沿着通道的ECC线942_2从远存储器控制器发送到存储器控制器。本文,写缓冲器发布计数993被存储器控制器用来计算新的信用计数,以便允许将新的写请求发送到远存储器控制逻辑1210。存储器控制器自身能够通过保持追踪已经被输入到读缓冲器1138中的读请求的数量和已经被返回的读响应的数量来调节其对读请求的发送。
图12b示出用于由存储器控制器通过通道对远存储器的写访问的基本原子过程。图12b的过程可以例如在其中远存储器控制逻辑不自动执行到远存储器中的写(例如,对具有用于读事务或写事务的脏位的高速缓存未命中)并且需要由存储器控制器来明确请求这样做的情况下完成。图12b的写过程还可以被用于不具有任何驻存的近存储器的通道(例如,仅PCMS的通道)中。根据图12b的过程,存储器控制器接收写事务1221。存储器控制器检查其写缓冲器信用计数来看是否存在足够的信用以发送写请求1222。如果如此,存储器控制器将写请求1223通过命令总线发送到远存储器控制逻辑。作为响应,远存储器控制逻辑将请求置于其写缓冲器中1224。最后,从写缓冲器来服务该写请求,ECC信息为被写到源存储器中的数据而被计算并且与该数据一起存储到远存储器中1224。
先前关于图7d(近存储器在前面)和图8d(近存储器在后面)讨论了增强的写过程。本文中,以上已经讨论了用于实现这些写过程的通道的特定组件的实施例以及远存储器控制逻辑的操作。然而,显著地,另外,关于图7d的增强的写过程,存储器控制器能够根据高速缓存读信息来确定在高速缓存未命中和脏位被设置的情况下是否需要对远存储器的写。作为响应,存储器控制器能够增加其写缓冲器计数,原因在于其理解远存储器控制逻辑将自动地执行到远存储器中的写而也将把请求自动地输入到写缓冲器中1224,以便这样做。关于图8d的增强的写过程,存储器控制器还能够接收高速缓存读信息并且如以上刚描述的那样操作。
当然,能够酌情通过仅具有远存储器技术的通道(例如,仅将DIMM***其储存技术的DDR通道是仅基于PCMS的)来利用以上所描述的远存储器原子操作。
如以上所描述的,远存储器控制逻辑能够被实现在一个或多个半导体芯片上。同样地,用于存储器控制器的逻辑电路能够被实现在一个或多个半导体芯片上。
尽管以上的讨论中的许多针对位于CPU管芯和CPU封装外部(例如,在***到发源于CPU封装的通道中的DIMM卡上)的近存储器***存储器和远存储器***存储器设备,但架构上,以上的实施例和过程仍然也能够实现在相同的CPU封装内(例如,其中通道利用DRAM和PCMS设备被装载到的衬底上的导电迹线与CPU管芯一起实现在相同的CPU封装中(远存储器控制逻辑能够被设计到CPU管芯或装载到衬底的另一个管芯中)或甚至在CPU管芯自身上(例如,其中除了用于例如实现CPU和存储器控制器的逻辑电路之外,CPU管芯还在其上集成了DRAM***存储器和PCMS***存储器,并且“通道”利用(例如,多级的)管芯上互连布线来实现)。
训练
训练是一种嵌入的配置方案,经通信耦合的半导体设备能够通过其来“想出”它们之间的适当的信令特性应该是什么。在其中仅DRAM设备耦合到相同的存储器通道的情况下,存储器控制器被训练成由DRAM的每个等级所提供的读数据。存储器控制器还被训练以向每个等级提供合适地定时的写数据。训练对于x8DRAM而言基于8位并且对于x4DRAM而言基于4位而发生。4或8位组之间的迹线长度方面的差异需要该训练分辨率(在4或8位组内,迹线需要被匹配)。因为DRAM不具有调整能力,所以主机应该做调整。这节约关于DRAM的成本和功率这二者。
当抓取由于PCMS和DRAM耦合到相同的通道而进行时,还必须训练远存储器控制器。对于从近存储器的读而言,远存储器控制器必须被训练以接受读数据。如果读数据要由来自远存储器控制器的DRAM所抓取,那么远存储器控制器必须被训练以针对DRAM(其不可调整)合适地定时数据,跟着是主机被训练以接收结果所得的数据。在远存储器控制器抓取写数据的情况下,将使用类似的两步骤过程。
Claims (12)
1.一种双列直插式存储器模块DIMM,包括:
到支持双倍数据速率DDR易失性存储器访问的存储器通道的接口;
非易失性存储器储存单元;
用于将以下指示发送到主机的第一电路:对由所述主机发送到所述DIMM的一个或多个读请求中的读请求的响应准备被发送到所述主机的指示,所述第一电路还用于将对于所述响应的相应事务标识符发送到所述主机,所述事务标识符由所述主机唯一地指派到该读请求;
高速缓存;以及,
第二电路,用于响应于由第二读请求所请求的数据存在于所述高速缓存中,通过执行对所述高速缓存的查找而不是将所述第二读请求定向到所述非易失性存储器储存单元来响应所述第二读请求,通过将所述数据从所述高速缓存通过所述接口并转发到所述存储器通道上来响应所述第二读请求。
2.根据权利要求1所述的DIMM,其中所述DIMM还包括用于对从所述非易失性存储器储存单元所读取的信息执行ECC检查的ECC电路。
3.根据权利要求1所述的DIMM,其中所述指示在所述存储器通道的管芯上终止信号线上被发送。
4.根据权利要求1所述的DIMM,其中所述非易失性存储器储存单元可用作***存储器。
5.根据权利要求1所述的DIMM,其中所述DIMM要存储ECC信息。
6.根据权利要求1所述的DIMM,其中易失性存储器DIMM可沿着所述DIMM***所述存储器通道中。
7.一种计算***,包括:
a)多个处理核;
b)网络接口;
c)***存储器控制器;
d)源自所述***存储器控制器的双倍数据速率DDR存储器通道;
e)耦合到所述DDR存储器通道的DIMM,所述DIMM包括:
i)到DDR存储器通道的接口;
ii)非易失性存储器储存单元;
iii)用于将以下指示发送到主机的第一电路:对由所述主机发送到所述DIMM的一个或多个读请求中的读请求的响应准备被发送到所述主机的指示,所述第一电路还用于将对于所述响应的相应事务标识符发送到所述主机,所述事务标识符由所述主机唯一地指派到该读请求;
iv)高速缓存;以及,
v)第二电路,用于响应于由第二读请求所请求的数据存在于所述高速缓存中,通过执行对所述高速缓存的查找而不是将所述第二读请求定向到所述非易失性存储器储存单元来响应所述第二读请求,通过将所述数据从所述高速缓存通过所述接口并转发到所述存储器通道上来响应所述第二读请求。
8.根据权利要求7所述的计算***,其中所述DIMM还包括用于对从所述非易失性存储器储存单元所读取的信息执行ECC检查的ECC电路。
9.根据权利要求7所述的计算***,其中所述指示在所述存储器通道的管芯上终止信号线上被发送。
10.根据权利要求7所述的计算***,其中所述非易失性存储器储存单元可用作***存储器。
11.根据权利要求7所述的计算***,其中所述DIMM要存储ECC信息。
12.根据权利要求7所述的计算***,其中易失性存储器DIMM沿着所述DIMM***所述存储器通道中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710382875.6A CN107391397B (zh) | 2011-09-30 | 2011-09-30 | 支持近存储器和远存储器访问的存储器通道 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/054421 WO2013048493A1 (en) | 2011-09-30 | 2011-09-30 | Memory channel that supports near memory and far memory access |
CN201180075116.6A CN104025060B (zh) | 2011-09-30 | 2011-09-30 | 支持近存储器和远存储器访问的存储器通道 |
CN201710382875.6A CN107391397B (zh) | 2011-09-30 | 2011-09-30 | 支持近存储器和远存储器访问的存储器通道 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075116.6A Division CN104025060B (zh) | 2011-09-30 | 2011-09-30 | 支持近存储器和远存储器访问的存储器通道 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391397A CN107391397A (zh) | 2017-11-24 |
CN107391397B true CN107391397B (zh) | 2021-07-27 |
Family
ID=47996224
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075116.6A Active CN104025060B (zh) | 2011-09-30 | 2011-09-30 | 支持近存储器和远存储器访问的存储器通道 |
CN201710382875.6A Active CN107391397B (zh) | 2011-09-30 | 2011-09-30 | 支持近存储器和远存储器访问的存储器通道 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075116.6A Active CN104025060B (zh) | 2011-09-30 | 2011-09-30 | 支持近存储器和远存储器访问的存储器通道 |
Country Status (5)
Country | Link |
---|---|
US (6) | US9342453B2 (zh) |
EP (3) | EP3382556A1 (zh) |
CN (2) | CN104025060B (zh) |
TW (2) | TWI587312B (zh) |
WO (1) | WO2013048493A1 (zh) |
Families Citing this family (131)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013048491A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Apparatus, method and system that stores bios in non-volatile random access memory |
EP3382556A1 (en) * | 2011-09-30 | 2018-10-03 | INTEL Corporation | Memory channel that supports near memory and far memory access |
WO2013089685A1 (en) | 2011-12-13 | 2013-06-20 | Intel Corporation | Enhanced system sleep state support in servers using non-volatile random access memory |
CN103999067A (zh) | 2011-12-21 | 2014-08-20 | 英特尔公司 | 以多个非易失性存储器为特征的高性能存储结构和*** |
CN104115132B (zh) | 2011-12-22 | 2018-02-06 | 英特尔公司 | 借助于存储器通道关闭的功率节约 |
WO2013097105A1 (en) | 2011-12-28 | 2013-07-04 | Intel Corporation | Efficient dynamic randomizing address remapping for pcm caching to improve endurance and anti-attack |
CN104126181A (zh) * | 2011-12-30 | 2014-10-29 | 英特尔公司 | 作为随机存取存储器的非易失性半导体存储装置的***存取的薄变换 |
US9940247B2 (en) * | 2012-06-26 | 2018-04-10 | Advanced Micro Devices, Inc. | Concurrent access to cache dirty bits |
US9418700B2 (en) | 2012-06-29 | 2016-08-16 | Intel Corporation | Bad block management mechanism |
US9280497B2 (en) * | 2012-12-21 | 2016-03-08 | Dell Products Lp | Systems and methods for support of non-volatile memory on a DDR memory channel |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
CN105340017A (zh) * | 2013-07-09 | 2016-02-17 | 惠普发展公司,有限责任合伙企业 | 对包括非兼容性存储器技术或与其接合的存储器模块的写入流控制 |
US9972379B2 (en) | 2013-07-26 | 2018-05-15 | Hewlett Packard Enterprise Development Lp | First data in response to second read request |
US9898365B2 (en) * | 2013-07-31 | 2018-02-20 | Hewlett Packard Enterprise Development Lp | Global error correction |
US9158720B2 (en) * | 2013-08-11 | 2015-10-13 | Qualcomm Incorporated | System and method for scalable trace unit timestamping |
KR101785301B1 (ko) | 2013-09-27 | 2017-11-15 | 인텔 코포레이션 | 디바이스들 간의 메모리 리소스를 구성하기 위한 장치, 방법 및 저장 매체 |
JP6131170B2 (ja) * | 2013-10-29 | 2017-05-17 | 株式会社日立製作所 | 計算機システム、及びデータ配置制御方法 |
US10185499B1 (en) * | 2014-01-07 | 2019-01-22 | Rambus Inc. | Near-memory compute module |
WO2015122925A1 (en) * | 2014-02-14 | 2015-08-20 | Hewlett-Packard Development Company, L.P. | Free flow assurance of atomicity of multiple updates in persistent memory |
CN103942162B (zh) * | 2014-05-14 | 2020-06-09 | 清华大学 | 在存储器中进行多访问的方法、装置和存储*** |
US9779025B2 (en) | 2014-06-02 | 2017-10-03 | Micron Technology, Inc. | Cache architecture for comparing data |
US9747048B2 (en) * | 2014-06-02 | 2017-08-29 | Micron Technology, Inc. | Systems and methods for packing data in a scalable memory system protocol |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
CN104503707B (zh) * | 2014-12-24 | 2018-03-06 | 华为技术有限公司 | 读取数据的方法以及装置 |
US9639276B2 (en) * | 2015-03-27 | 2017-05-02 | Intel Corporation | Implied directory state updates |
US10204047B2 (en) | 2015-03-27 | 2019-02-12 | Intel Corporation | Memory controller for multi-level system memory with coherency unit |
US9619396B2 (en) | 2015-03-27 | 2017-04-11 | Intel Corporation | Two level memory full line writes |
US9916252B2 (en) * | 2015-05-19 | 2018-03-13 | Linear Algebra Technologies Limited | Systems and methods for addressing a cache with split-indexes |
US10387259B2 (en) * | 2015-06-26 | 2019-08-20 | Intel Corporation | Instant restart in non volatile system memory computing systems with embedded programmable data checking |
US10073659B2 (en) | 2015-06-26 | 2018-09-11 | Intel Corporation | Power management circuit with per activity weighting and multiple throttle down thresholds |
US20170060434A1 (en) * | 2015-08-27 | 2017-03-02 | Samsung Electronics Co., Ltd. | Transaction-based hybrid memory module |
US10108549B2 (en) | 2015-09-23 | 2018-10-23 | Intel Corporation | Method and apparatus for pre-fetching data in a system having a multi-level system memory |
US10261901B2 (en) | 2015-09-25 | 2019-04-16 | Intel Corporation | Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory |
US10185501B2 (en) | 2015-09-25 | 2019-01-22 | Intel Corporation | Method and apparatus for pinning memory pages in a multi-level system memory |
EP3356943B1 (en) | 2015-10-01 | 2021-11-03 | Rambus Inc. | Memory system with cached memory module operations |
US10445003B2 (en) | 2015-10-15 | 2019-10-15 | SK Hynix Inc. | Memory system for dualizing first memory based on operation mode |
US11138120B2 (en) | 2015-10-16 | 2021-10-05 | SK Hynix Inc. | Memory system |
US9990143B2 (en) | 2015-10-16 | 2018-06-05 | SK Hynix Inc. | Memory system |
US10180796B2 (en) | 2015-10-16 | 2019-01-15 | SK Hynix Inc. | Memory system |
US9977605B2 (en) | 2015-10-16 | 2018-05-22 | SK Hynix Inc. | Memory system |
US9786389B2 (en) | 2015-10-16 | 2017-10-10 | SK Hynix Inc. | Memory system |
US9990283B2 (en) | 2015-10-16 | 2018-06-05 | SK Hynix Inc. | Memory system |
US10466909B2 (en) | 2015-10-16 | 2019-11-05 | SK Hynix Inc. | Memory system |
US9977604B2 (en) | 2015-10-16 | 2018-05-22 | SK Hynix Inc. | Memory system |
US9977606B2 (en) | 2015-10-16 | 2018-05-22 | SK Hynix Inc. | Memory system |
US10191664B2 (en) | 2015-10-16 | 2019-01-29 | SK Hynix Inc. | Memory system |
US10169242B2 (en) | 2015-10-16 | 2019-01-01 | SK Hynix Inc. | Heterogeneous package in DIMM |
US9792224B2 (en) | 2015-10-23 | 2017-10-17 | Intel Corporation | Reducing latency by persisting data relationships in relation to corresponding data in persistent memory |
US10061644B2 (en) * | 2015-11-02 | 2018-08-28 | Qualcomm Incorporated | Systems and methods for implementing error correcting code in a memory |
US10033411B2 (en) | 2015-11-20 | 2018-07-24 | Intel Corporation | Adjustable error protection for stored data |
US9824419B2 (en) * | 2015-11-20 | 2017-11-21 | International Business Machines Corporation | Automatically enabling a read-only cache in a language in which two arrays in two different variables may alias each other |
US10095618B2 (en) | 2015-11-25 | 2018-10-09 | Intel Corporation | Memory card with volatile and non volatile memory space having multiple usage model configurations |
US10303372B2 (en) | 2015-12-01 | 2019-05-28 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and operation method thereof |
US10019367B2 (en) | 2015-12-14 | 2018-07-10 | Samsung Electronics Co., Ltd. | Memory module, computing system having the same, and method for testing tag error thereof |
US10126981B1 (en) | 2015-12-14 | 2018-11-13 | Western Digital Technologies, Inc. | Tiered storage using storage class memory |
US10437483B2 (en) | 2015-12-17 | 2019-10-08 | Samsung Electronics Co., Ltd. | Computing system with communication mechanism and method of operation thereof |
US9747041B2 (en) | 2015-12-23 | 2017-08-29 | Intel Corporation | Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device |
US9898222B2 (en) * | 2015-12-24 | 2018-02-20 | Intel IP Corporation | SoC fabric extensions for configurable memory maps through memory range screens and selectable address flattening |
US9847105B2 (en) | 2016-02-01 | 2017-12-19 | Samsung Electric Co., Ltd. | Memory package, memory module including the same, and operation method of memory package |
US10007606B2 (en) | 2016-03-30 | 2018-06-26 | Intel Corporation | Implementation of reserved cache slots in computing system having inclusive/non inclusive tracking and two level system memory |
US10185619B2 (en) | 2016-03-31 | 2019-01-22 | Intel Corporation | Handling of error prone cache line slots of memory side cache of multi-level system memory |
CN105912486B (zh) * | 2016-04-27 | 2019-03-29 | 联想(北京)有限公司 | 信息处理方法及处理器 |
US10152237B2 (en) * | 2016-05-05 | 2018-12-11 | Micron Technology, Inc. | Non-deterministic memory protocol |
US10120806B2 (en) | 2016-06-27 | 2018-11-06 | Intel Corporation | Multi-level system memory with near memory scrubbing based on predicted far memory idle time |
US10474389B2 (en) * | 2016-07-05 | 2019-11-12 | Hewlett Packard Enterprise Development Lp | Write tracking for memories |
US10679722B2 (en) | 2016-08-26 | 2020-06-09 | Sandisk Technologies Llc | Storage system with several integrated components and method for use therewith |
US20180059985A1 (en) * | 2016-08-29 | 2018-03-01 | Intel Corporation | Dynamic management of relationships in distributed object stores |
US20180095884A1 (en) * | 2016-09-30 | 2018-04-05 | Intel Corporation | Mass storage cache in non volatile level of multi-level system memory |
US10379768B2 (en) * | 2016-09-30 | 2019-08-13 | Intel Corporation | Selective memory mode authorization enforcement |
US10915453B2 (en) | 2016-12-29 | 2021-02-09 | Intel Corporation | Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures |
US10445261B2 (en) | 2016-12-30 | 2019-10-15 | Intel Corporation | System memory having point-to-point link that transports compressed traffic |
CN106844244B (zh) * | 2017-01-16 | 2021-05-18 | 联想(北京)有限公司 | 一种实现固态硬盘数据交互的装置和方法 |
US10127074B2 (en) * | 2017-01-27 | 2018-11-13 | Futurewei Technologies, Inc. | Transaction identification synchronization |
JP2018156573A (ja) * | 2017-03-21 | 2018-10-04 | 東芝メモリ株式会社 | メモリ装置および情報処理システム |
CN108628776B (zh) * | 2017-03-22 | 2022-02-18 | 华为技术有限公司 | 一种数据读写访问控制方法及装置 |
CN108733311B (zh) * | 2017-04-17 | 2021-09-10 | 伊姆西Ip控股有限责任公司 | 用于管理存储***的方法和设备 |
US10552256B2 (en) | 2017-05-08 | 2020-02-04 | Samsung Electronics Co., Ltd. | Morphable ECC encoder/decoder for NVDIMM over DDR channel |
KR20180130417A (ko) * | 2017-05-29 | 2018-12-07 | 삼성전자주식회사 | 온-다이 터미네이션의 제어 방법 및 이를 수행하는 시스템 |
US10566038B2 (en) | 2017-05-29 | 2020-02-18 | Samsung Electronics Co., Ltd. | Method of controlling on-die termination and system performing the same |
US10304814B2 (en) | 2017-06-30 | 2019-05-28 | Intel Corporation | I/O layout footprint for multiple 1LM/2LM configurations |
US10437482B2 (en) | 2017-07-25 | 2019-10-08 | Samsung Electronics Co., Ltd. | Coordinated near-far memory controller for process-in-HBM |
US11188467B2 (en) | 2017-09-28 | 2021-11-30 | Intel Corporation | Multi-level system memory with near memory capable of storing compressed cache lines |
KR102331926B1 (ko) | 2017-11-17 | 2021-11-29 | 삼성전자주식회사 | 저장 장치를 포함하는 호스트 시스템의 동작 방법 및 저장 장치 제어기의 동작 방법 |
US10860244B2 (en) | 2017-12-26 | 2020-12-08 | Intel Corporation | Method and apparatus for multi-level memory early page demotion |
CN108052296B (zh) * | 2017-12-30 | 2021-02-19 | 惠龙易通国际物流股份有限公司 | 一种数据读取方法、设备及计算机存储介质 |
US10904477B2 (en) * | 2018-01-19 | 2021-01-26 | Caavo Inc | Device identification using media device keys |
US11099789B2 (en) | 2018-02-05 | 2021-08-24 | Micron Technology, Inc. | Remote direct memory access in multi-tier memory systems |
US10782908B2 (en) | 2018-02-05 | 2020-09-22 | Micron Technology, Inc. | Predictive data orchestration in multi-tier memory systems |
US11416395B2 (en) | 2018-02-05 | 2022-08-16 | Micron Technology, Inc. | Memory virtualization for accessing heterogeneous memory components |
US10880401B2 (en) | 2018-02-12 | 2020-12-29 | Micron Technology, Inc. | Optimization of data access and communication in memory systems |
US10642737B2 (en) * | 2018-02-23 | 2020-05-05 | Microsoft Technology Licensing, Llc | Logging cache influxes by request to a higher-level cache |
US11321249B2 (en) | 2018-03-26 | 2022-05-03 | Samsung Electronics Co., Ltd. | Mechanism to autonomously manage SSDS in an array |
KR102549584B1 (ko) | 2018-03-27 | 2023-06-30 | 삼성전자주식회사 | 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법 |
US10990463B2 (en) | 2018-03-27 | 2021-04-27 | Samsung Electronics Co., Ltd. | Semiconductor memory module and memory system including the same |
US11099995B2 (en) | 2018-03-28 | 2021-08-24 | Intel Corporation | Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory |
KR101936951B1 (ko) * | 2018-04-11 | 2019-01-11 | 주식회사 맴레이 | 메모리 제어 장치 및 이를 포함하는 메모리 시스템 |
US10877892B2 (en) | 2018-07-11 | 2020-12-29 | Micron Technology, Inc. | Predictive paging to accelerate memory access |
US11709623B2 (en) | 2018-08-03 | 2023-07-25 | Sk Hynix Nand Product Solutions Corp. | NAND-based storage device with partitioned nonvolatile write buffer |
US11099778B2 (en) * | 2018-08-08 | 2021-08-24 | Micron Technology, Inc. | Controller command scheduling in a memory system to increase command bus utilization |
US11409436B2 (en) * | 2018-08-08 | 2022-08-09 | Micron Technology, Inc. | Buffer management in memory systems for read and write requests |
US10769062B2 (en) | 2018-10-01 | 2020-09-08 | Western Digital Technologies, Inc. | Fine granularity translation layer for data storage devices |
US10956071B2 (en) | 2018-10-01 | 2021-03-23 | Western Digital Technologies, Inc. | Container key value store for data storage devices |
US10817430B2 (en) * | 2018-10-02 | 2020-10-27 | Micron Technology, Inc. | Access unit and management segment memory operations |
CN111512374B (zh) * | 2018-10-16 | 2022-11-11 | 华为技术有限公司 | 一种混合存储设备及访问方法 |
US10877897B2 (en) * | 2018-11-02 | 2020-12-29 | Intel Corporation | System, apparatus and method for multi-cacheline small object memory tagging |
US10740231B2 (en) * | 2018-11-20 | 2020-08-11 | Western Digital Technologies, Inc. | Data access in data storage device including storage class memory |
KR20200066774A (ko) * | 2018-12-03 | 2020-06-11 | 삼성전자주식회사 | 반도체 장치 |
US11055228B2 (en) | 2019-01-31 | 2021-07-06 | Intel Corporation | Caching bypass mechanism for a multi-level memory |
US11005501B2 (en) * | 2019-02-19 | 2021-05-11 | Micron Technology, Inc. | Error correction on a memory device |
US10852949B2 (en) | 2019-04-15 | 2020-12-01 | Micron Technology, Inc. | Predictive data pre-fetching in a data storage device |
WO2020226880A1 (en) * | 2019-05-03 | 2020-11-12 | University Of Pittsburgh-Of The Commonwealth System Of Higher Education | Method and apparatus for adaptive page migration and pinning for oversubscribed irregular applications |
WO2020226878A1 (en) * | 2019-05-03 | 2020-11-12 | University Of Pittsburgh-Of The Commonwealth System Of Higher Education | Method and apparatus for replacing data from near to far memory over a slow interconnect for oversubscribed irregular applications |
US11537521B2 (en) * | 2019-06-05 | 2022-12-27 | Samsung Electronics Co., Ltd. | Non-volatile dual inline memory module (NVDIMM) for supporting dram cache mode and operation method of NVDIMM |
US10936493B2 (en) | 2019-06-19 | 2021-03-02 | Hewlett Packard Enterprise Development Lp | Volatile memory cache line directory tags |
US10929301B1 (en) * | 2019-08-22 | 2021-02-23 | Micron Technology, Inc. | Hierarchical memory systems |
US11169928B2 (en) * | 2019-08-22 | 2021-11-09 | Micron Technology, Inc. | Hierarchical memory systems to process data access requests received via an input/output device |
KR20210034711A (ko) | 2019-09-20 | 2021-03-31 | 삼성전자주식회사 | 메모리 셀의 신뢰성에 따라 패리티 비트들을 선택적으로 생성하는 저장 장치 및 그것의 동작 방법 |
US11016905B1 (en) | 2019-11-13 | 2021-05-25 | Western Digital Technologies, Inc. | Storage class memory access |
FR3103620B1 (fr) * | 2019-11-21 | 2021-11-26 | St Microelectronics Rousset | Procédé d’écriture dans une mémoire volatile et circuit intégré correspondant |
US11907572B2 (en) * | 2019-12-30 | 2024-02-20 | Micron Technology, Inc. | Interface read after write |
CN113127386A (zh) * | 2019-12-30 | 2021-07-16 | 美光科技公司 | 存储器器件中的受损存储部分恢复 |
US11182291B2 (en) | 2020-02-03 | 2021-11-23 | International Business Machines Corporation | Using multi-tiered cache to satisfy input/output requests |
US11249921B2 (en) | 2020-05-06 | 2022-02-15 | Western Digital Technologies, Inc. | Page modification encoding and caching |
TWI749960B (zh) * | 2020-12-23 | 2021-12-11 | 瑞昱半導體股份有限公司 | 資料處理裝置與其資料存取電路 |
US11630723B2 (en) * | 2021-01-12 | 2023-04-18 | Qualcomm Incorporated | Protected data streaming between memories |
US11599415B2 (en) * | 2021-07-09 | 2023-03-07 | Microsoft Technology Licensing, Llc | Memory tiering techniques in computing systems |
KR20230021199A (ko) | 2021-08-04 | 2023-02-14 | 삼성전자주식회사 | 모드 설정을 지원하는 니어-메모리를 포함하는 전자 장치, 및 이의 동작 방법 |
CN115617709A (zh) * | 2022-09-27 | 2023-01-17 | 海光信息技术股份有限公司 | 缓存管理方法及装置、缓存装置、电子装置和介质 |
CN115910147B (zh) * | 2022-11-25 | 2023-08-18 | 湖南兴芯微电子科技有限公司 | 一种延迟可调的psram接口控制模块及控制器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6298418B1 (en) * | 1996-11-29 | 2001-10-02 | Hitachi, Ltd. | Multiprocessor system and cache coherency control method |
CN101236540A (zh) * | 2007-01-29 | 2008-08-06 | 国际商业机器公司 | 用于提供动态存储器预取的***和方法 |
CN101315614A (zh) * | 2007-06-01 | 2008-12-03 | 英特尔公司 | 支持页属性的虚拟地址至物理地址的转换 |
CN101715575A (zh) * | 2006-12-06 | 2010-05-26 | 弗森多***公司(dba弗森-艾奥) | 采用数据管道管理数据的装置、***和方法 |
CN101989183A (zh) * | 2010-10-15 | 2011-03-23 | 浙江大学 | 混合主存储器实现节能存储的方法 |
Family Cites Families (196)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3909798A (en) | 1974-01-25 | 1975-09-30 | Raytheon Co | Virtual addressing method and apparatus |
US4713755A (en) | 1985-06-28 | 1987-12-15 | Hewlett-Packard Company | Cache memory consistency control with explicit software instructions |
US5159856A (en) * | 1990-09-28 | 1992-11-03 | Mazda Motor Corporation | Automatic transmission line pressure control system |
JP3451099B2 (ja) * | 1991-12-06 | 2003-09-29 | 株式会社日立製作所 | 外部記憶サブシステム |
US6161208A (en) * | 1994-05-06 | 2000-12-12 | International Business Machines Corporation | Storage subsystem including an error correcting cache and means for performing memory to memory transfers |
US5517615A (en) * | 1994-08-15 | 1996-05-14 | Unisys Corporation | Multi-channel integrity checking data transfer system for controlling different size data block transfers with on-the-fly checkout of each word and data block transferred |
CN1100540A (zh) | 1994-08-18 | 1995-03-22 | 奥克利***公司 | 压缩的基本输入/输出*** |
FI102788B (fi) | 1995-09-14 | 1999-02-15 | Nokia Telecommunications Oy | Yhteisen levydatan hallinta kahdennetussa tietokoneyksikössä |
US6470405B2 (en) | 1995-10-19 | 2002-10-22 | Rambus Inc. | Protocol for communication with dynamic memory |
US5974576A (en) | 1996-05-10 | 1999-10-26 | Sun Microsystems, Inc. | On-line memory monitoring system and methods |
US5809526A (en) | 1996-10-28 | 1998-09-15 | International Business Machines Corporation | Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation |
JPH10154101A (ja) | 1996-11-26 | 1998-06-09 | Toshiba Corp | データ記憶システム及び同システムに適用するキャッシュ制御方法 |
US5968424A (en) | 1997-05-07 | 1999-10-19 | Shigeru Shimosawa | Manufacturing method for artificial tooth |
US6035432A (en) | 1997-07-31 | 2000-03-07 | Micron Electronics, Inc. | System for remapping defective memory bit sets |
US5822251A (en) * | 1997-08-25 | 1998-10-13 | Bit Microsystems, Inc. | Expandable flash-memory mass-storage using shared buddy lines and intermediate flash-bus between device-specific buffers and flash-intelligent DMA controllers |
US5917743A (en) | 1997-10-17 | 1999-06-29 | Waferscale Integration, Inc. | Content-addressable memory (CAM) for a FLASH memory array |
US6707948B1 (en) | 1997-11-17 | 2004-03-16 | The Regents Of The University Of California | Image compression for memory-constrained decoders |
US6202129B1 (en) | 1998-03-31 | 2001-03-13 | Intel Corporation | Shared cache structure for temporal and non-temporal information using indicative bits |
JP3098486B2 (ja) | 1998-03-31 | 2000-10-16 | 山形日本電気株式会社 | 不揮発性半導体記憶装置 |
CN1202530C (zh) | 1998-04-01 | 2005-05-18 | 三菱电机株式会社 | 在低电源电压下高速动作的静态型半导体存储装置 |
US6038166A (en) | 1998-04-01 | 2000-03-14 | Invox Technology | High resolution multi-bit-per-cell memory |
US5912839A (en) | 1998-06-23 | 1999-06-15 | Energy Conversion Devices, Inc. | Universal memory element and method of programming same |
US6559850B1 (en) * | 1998-10-30 | 2003-05-06 | Advanced Micro Devices, Inc. | Method and system for improved memory access in accelerated graphics port systems |
US6480929B1 (en) | 1998-10-31 | 2002-11-12 | Advanced Micro Devices Inc. | Pseudo-concurrency between a volatile memory and a non-volatile memory on a same data bus |
US6483736B2 (en) | 1998-11-16 | 2002-11-19 | Matrix Semiconductor, Inc. | Vertically stacked field programmable nonvolatile memory and method of fabrication |
US7889544B2 (en) | 2004-04-05 | 2011-02-15 | Super Talent Electronics, Inc. | High-speed controller for phase-change memory peripheral device |
US7827348B2 (en) * | 2000-01-06 | 2010-11-02 | Super Talent Electronics, Inc. | High performance flash memory devices (FMD) |
US6493776B1 (en) * | 1999-08-12 | 2002-12-10 | Mips Technologies, Inc. | Scalable on-chip system bus |
US6868472B1 (en) | 1999-10-01 | 2005-03-15 | Fujitsu Limited | Method of Controlling and addressing a cache memory which acts as a random address memory to increase an access speed to a main memory |
US6292874B1 (en) | 1999-10-19 | 2001-09-18 | Advanced Technology Materials, Inc. | Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges |
US8171204B2 (en) * | 2000-01-06 | 2012-05-01 | Super Talent Electronics, Inc. | Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels |
US8341332B2 (en) | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US6259627B1 (en) | 2000-01-27 | 2001-07-10 | Multi Level Memory Technology | Read and write operations using constant row line voltage and variable column line load |
US6523102B1 (en) | 2000-04-14 | 2003-02-18 | Interactive Silicon, Inc. | Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules |
US6704840B2 (en) | 2001-06-19 | 2004-03-09 | Intel Corporation | Computer system and method of computer initialization with caching of option BIOS |
US6804799B2 (en) | 2001-06-26 | 2004-10-12 | Advanced Micro Devices, Inc. | Using type bits to track storage of ECC and predecode bits in a level two cache |
US7752423B2 (en) | 2001-06-28 | 2010-07-06 | Intel Corporation | Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor |
US6912695B2 (en) | 2001-09-13 | 2005-06-28 | Pixia Corp. | Data storage and retrieval system and method |
US7911952B1 (en) * | 2002-07-12 | 2011-03-22 | Mips Technologies, Inc. | Interface with credit-based flow control and sustained bus signals |
EP1387274A3 (en) | 2002-07-31 | 2004-08-11 | Texas Instruments Incorporated | Memory management for local variables |
US6968424B1 (en) | 2002-08-07 | 2005-11-22 | Nvidia Corporation | Method and system for transparent compressed memory paging in a computer system |
US6922350B2 (en) | 2002-09-27 | 2005-07-26 | Intel Corporation | Reducing the effect of write disturbs in polymer memories |
DE60306488D1 (de) | 2003-02-27 | 2006-08-10 | St Microelectronics Srl | Eingebautes Testverfahren in einem Flash Speicher |
US7146455B2 (en) | 2003-05-19 | 2006-12-05 | Accton Technology Corporation | System and method for optimized access to memory devices requiring block writing |
US20050010811A1 (en) | 2003-06-16 | 2005-01-13 | Zimmer Vincent J. | Method and system to support network port authentication from out-of-band firmware |
US7779212B2 (en) * | 2003-10-17 | 2010-08-17 | Micron Technology, Inc. | Method and apparatus for sending data from multiple sources over a communications bus |
US20050138267A1 (en) * | 2003-12-23 | 2005-06-23 | Bains Kuljit S. | Integral memory buffer and serial presence detect capability for fully-buffered memory modules |
US7085152B2 (en) * | 2003-12-29 | 2006-08-01 | Intel Corporation | Memory system segmented power supply and control |
US7328304B2 (en) | 2004-02-27 | 2008-02-05 | Intel Corporation | Interface for a block addressable mass storage system |
US7475174B2 (en) | 2004-03-17 | 2009-01-06 | Super Talent Electronics, Inc. | Flash / phase-change memory in multi-ring topology using serial-link packet interface |
US7269708B2 (en) | 2004-04-20 | 2007-09-11 | Rambus Inc. | Memory controller for non-homogenous memory system |
US20050273584A1 (en) | 2004-06-07 | 2005-12-08 | Wisecup George D | Locating environment variables in non-volatile memory |
US7587572B1 (en) | 2004-08-31 | 2009-09-08 | Sun Microsystems, Inc. | Method and system for managing process memory configured in resizable uncompressed and compressed regions |
US7590918B2 (en) | 2004-09-10 | 2009-09-15 | Ovonyx, Inc. | Using a phase change memory as a high volume memory |
US7277988B2 (en) | 2004-10-29 | 2007-10-02 | International Business Machines Corporation | System, method and storage medium for providing data caching and data compression in a memory subsystem |
IES20040777A2 (en) | 2004-11-22 | 2006-04-19 | Pendula Ltd | Protection of electronic data |
US7290702B2 (en) | 2004-12-28 | 2007-11-06 | Elbex Video Ltd. | Method and apparatus for recording and utilizing unknown signals of remote control devices |
US7441081B2 (en) | 2004-12-29 | 2008-10-21 | Lsi Corporation | Write-back caching for disk drives |
US7426649B2 (en) | 2005-02-09 | 2008-09-16 | International Business Machines Corporation | Power management via DIMM read operation limiter |
US20060200597A1 (en) * | 2005-03-03 | 2006-09-07 | Christenson Bruce A | Method, system, and apparatus for memory controller utilization of an AMB write FIFO to improve FBD memory channel efficiency |
US7218566B1 (en) * | 2005-04-28 | 2007-05-15 | Network Applicance, Inc. | Power management of memory via wake/sleep cycles |
US7437597B1 (en) | 2005-05-18 | 2008-10-14 | Azul Systems, Inc. | Write-back cache with different ECC codings for clean and dirty lines with refetching of uncorrectable clean lines |
US7681004B2 (en) * | 2005-06-13 | 2010-03-16 | Addmm, Llc | Advanced dynamic disk memory module |
US20070005922A1 (en) | 2005-06-30 | 2007-01-04 | Swaminathan Muthukumar P | Fully buffered DIMM variable read latency |
US7797479B2 (en) | 2005-06-30 | 2010-09-14 | Intel Corporation | Technique to write to a non-volatile memory |
KR100609621B1 (ko) * | 2005-07-19 | 2006-08-08 | 삼성전자주식회사 | 메모리 블락별로 레이턴시 제어가 가능한 동기식 반도체메모리 장치 |
US8274792B2 (en) * | 2005-09-06 | 2012-09-25 | Beyond Blades Ltd. | 3-dimensional multi-layered modular computer architecture |
US7533215B2 (en) | 2005-09-15 | 2009-05-12 | Intel Corporation | Distributed and packed metadata structure for disk cache |
US7676730B2 (en) | 2005-09-30 | 2010-03-09 | Quantum Corporation | Method and apparatus for implementing error correction coding in a random access memory |
US7516267B2 (en) | 2005-11-03 | 2009-04-07 | Intel Corporation | Recovering from a non-volatile memory failure |
US7516349B2 (en) * | 2005-12-29 | 2009-04-07 | Intel Corporation | Synchronized memory channels with unidirectional links |
US7562194B2 (en) * | 2006-02-06 | 2009-07-14 | Intel Corporation | Method and apparatus for exploiting parallelism across multiple traffic streams through a single channel |
US7600078B1 (en) | 2006-03-29 | 2009-10-06 | Intel Corporation | Speculatively performing read transactions |
US7911474B2 (en) | 2006-04-03 | 2011-03-22 | Siemens Medical Solutions Usa, Inc. | Memory management system and method for GPU-based volume rendering |
US7913147B2 (en) | 2006-05-08 | 2011-03-22 | Intel Corporation | Method and apparatus for scrubbing memory |
CN101512661B (zh) | 2006-05-12 | 2013-04-24 | 苹果公司 | 用于存储设备的失真估计与纠错编码的组合 |
CN100451987C (zh) | 2006-05-23 | 2009-01-14 | 北京金元龙脉信息科技有限公司 | 对计算机bios固件进行安全风险检测的***和方法 |
US20070294543A1 (en) | 2006-06-16 | 2007-12-20 | Arachnoid Biometrics Identification Group Corp. | Method for reading encrypted data on an optical storage medium |
US7756053B2 (en) | 2006-06-30 | 2010-07-13 | Intel Corporation | Memory agent with error hardware |
US7761657B2 (en) * | 2006-07-10 | 2010-07-20 | Hitachi, Ltd. | Storage control system, control method for storage control system, port selector, and controller |
US7478197B2 (en) | 2006-07-18 | 2009-01-13 | International Business Machines Corporation | Adaptive mechanisms for supplying volatile data copies in multiprocessor systems |
US7493439B2 (en) | 2006-08-01 | 2009-02-17 | International Business Machines Corporation | Systems and methods for providing performance monitoring in a memory system |
US7587559B2 (en) | 2006-08-10 | 2009-09-08 | International Business Machines Corporation | Systems and methods for memory module power management |
US7761625B2 (en) | 2006-09-28 | 2010-07-20 | Virident Systems, Inc. | Methods for main memory with non-volatile type memory modules, and related technologies |
WO2008040028A2 (en) | 2006-09-28 | 2008-04-03 | Virident Systems, Inc. | Systems, methods, and apparatus with programmable memory control for heterogeneous main memory |
US7555605B2 (en) | 2006-09-28 | 2009-06-30 | Freescale Semiconductor, Inc. | Data processing system having cache memory debugging support and method therefor |
US8683139B2 (en) | 2006-10-31 | 2014-03-25 | Hewlett-Packard Development Company, L.P. | Cache and method for cache bypass functionality |
US7774556B2 (en) | 2006-11-04 | 2010-08-10 | Virident Systems Inc. | Asymmetric memory migration in hybrid main memory |
US7554855B2 (en) | 2006-12-20 | 2009-06-30 | Mosaid Technologies Incorporated | Hybrid solid-state memory system having volatile and non-volatile memory |
TW200845014A (en) | 2007-02-28 | 2008-11-16 | Aplus Flash Technology Inc | A bit line structure for a multilevel, dual-sided nonvolatile memory cell array |
WO2008131058A2 (en) | 2007-04-17 | 2008-10-30 | Rambus Inc. | Hybrid volatile and non-volatile memory device |
US20080270811A1 (en) | 2007-04-26 | 2008-10-30 | Super Talent Electronics Inc. | Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory |
US7739441B1 (en) * | 2007-04-30 | 2010-06-15 | Hewlett-Packard Development Company, L.P. | Communicating between a native fully buffered dual in-line memory module protocol and a double data rate synchronous dynamic random access memory protocol |
US8429493B2 (en) | 2007-05-12 | 2013-04-23 | Apple Inc. | Memory device with internal signap processing unit |
WO2008150927A2 (en) | 2007-05-30 | 2008-12-11 | Schooner Information Technology | System including a fine-grained memory and a less-fine-grained memory |
US8296534B1 (en) | 2007-06-29 | 2012-10-23 | Emc Corporation | Techniques for using flash-based memory in recovery processing |
TWI327319B (en) | 2007-07-03 | 2010-07-11 | Macronix Int Co Ltd | Double programming methods of a multi-level-cell nonvolatile memory |
US8347005B2 (en) * | 2007-07-31 | 2013-01-01 | Hewlett-Packard Development Company, L.P. | Memory controller with multi-protocol interface |
KR101498673B1 (ko) | 2007-08-14 | 2015-03-09 | 삼성전자주식회사 | 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템 |
JP5049733B2 (ja) | 2007-10-17 | 2012-10-17 | 株式会社東芝 | 情報処理システム |
US8145893B2 (en) | 2007-10-26 | 2012-03-27 | Intel Corporation | Hot-plugging a memory device |
CN101237546A (zh) | 2007-11-13 | 2008-08-06 | 东南大学 | 应用于车载环境的高速音视频海量存储方法及其装置 |
US8108609B2 (en) | 2007-12-04 | 2012-01-31 | International Business Machines Corporation | Structure for implementing dynamic refresh protocols for DRAM based cache |
EP2077559B1 (en) | 2007-12-27 | 2012-11-07 | Hagiwara Solutions Co., Ltd. | Refresh method of a flash memory |
US7941692B2 (en) | 2007-12-31 | 2011-05-10 | Intel Corporation | NAND power fail recovery |
US8094504B2 (en) | 2008-01-04 | 2012-01-10 | Integrated Device Technology Inc. | Buffered DRAM |
TWI373768B (en) | 2008-02-05 | 2012-10-01 | Phison Electronics Corp | System, controller and method for data storage |
US20090254705A1 (en) | 2008-04-07 | 2009-10-08 | International Business Machines Corporation | Bus attached compressed random access memory |
US20090271563A1 (en) | 2008-04-28 | 2009-10-29 | Microsoft Corporation | Flash memory transactioning |
TWI437429B (zh) * | 2008-06-04 | 2014-05-11 | A Data Technology Co Ltd | 多通道混合密度記憶體儲存裝置及其控制方法 |
US20090313416A1 (en) | 2008-06-16 | 2009-12-17 | George Wayne Nation | Computer main memory incorporating volatile and non-volatile memory |
US20090327837A1 (en) | 2008-06-30 | 2009-12-31 | Robert Royer | NAND error management |
US20100005212A1 (en) | 2008-07-01 | 2010-01-07 | International Business Machines Corporation | Providing a variable frame format protocol in a cascade interconnected memory system |
CN101620539B (zh) | 2008-07-01 | 2013-12-25 | 联想(北京)有限公司 | 开关机方法和计算机 |
CN102150147A (zh) | 2008-07-03 | 2011-08-10 | 惠普开发有限公司 | 存储器服务器 |
US20100125695A1 (en) | 2008-11-15 | 2010-05-20 | Nanostar Corporation | Non-volatile memory storage system |
US8205138B2 (en) | 2008-08-07 | 2012-06-19 | International Business Machines Corporation | Memory controller for reducing time to initialize main memory |
EP2313891B1 (en) * | 2008-08-08 | 2016-04-27 | Hewlett-Packard Development Company, L.P. | Independently controlled virtual memory devices in memory modules |
JP5581577B2 (ja) | 2008-08-29 | 2014-09-03 | 富士通株式会社 | データ処理装置 |
US9152569B2 (en) | 2008-11-04 | 2015-10-06 | International Business Machines Corporation | Non-uniform cache architecture (NUCA) |
KR101001147B1 (ko) | 2008-12-12 | 2010-12-17 | 주식회사 하이닉스반도체 | 상변화 메모리 장치 |
US20120030396A1 (en) * | 2009-03-02 | 2012-02-02 | Zhichun Zhu | Decoupled Memory Modules: Building High-Bandwidth Memory Systems from Low-Speed Dynamic Random Access Memory Devices |
US8375241B2 (en) | 2009-04-02 | 2013-02-12 | Intel Corporation | Method and system to improve the operations of a registered memory module |
US8331857B2 (en) | 2009-05-13 | 2012-12-11 | Micron Technology, Inc. | Wireless interface to program phase-change memories |
US8250282B2 (en) | 2009-05-14 | 2012-08-21 | Micron Technology, Inc. | PCM memories for storage bus interfaces |
US8180981B2 (en) | 2009-05-15 | 2012-05-15 | Oracle America, Inc. | Cache coherent support for flash in a memory hierarchy |
US8504759B2 (en) | 2009-05-26 | 2013-08-06 | Micron Technology, Inc. | Method and devices for controlling power loss |
US20100306453A1 (en) | 2009-06-02 | 2010-12-02 | Edward Doller | Method for operating a portion of an executable program in an executable non-volatile memory |
US8159881B2 (en) | 2009-06-03 | 2012-04-17 | Marvell World Trade Ltd. | Reference voltage optimization for flash memory |
US9123409B2 (en) | 2009-06-11 | 2015-09-01 | Micron Technology, Inc. | Memory device for a hierarchical memory architecture |
KR20100133710A (ko) | 2009-06-12 | 2010-12-22 | 삼성전자주식회사 | 메모리 시스템 및 그것의 코드 데이터 로딩 방법 |
US9208084B2 (en) | 2009-06-29 | 2015-12-08 | Oracle America, Inc. | Extended main memory hierarchy having flash memory for page fault handling |
US8612666B2 (en) | 2009-06-30 | 2013-12-17 | Intel Corporation | Method and system for managing a NAND flash memory by paging segments of a logical to physical address map to a non-volatile memory |
JP2011022657A (ja) | 2009-07-13 | 2011-02-03 | Fujitsu Ltd | メモリシステムおよび情報処理装置 |
US8626997B2 (en) | 2009-07-16 | 2014-01-07 | Micron Technology, Inc. | Phase change memory in a dual inline memory module |
CN102473140B (zh) | 2009-07-17 | 2015-05-13 | 株式会社东芝 | 存储器管理装置 |
US8341387B2 (en) | 2009-08-18 | 2012-12-25 | Dell Products, Lp | System and method to manipulate a system setting when booting an information handling system |
US8077515B2 (en) | 2009-08-25 | 2011-12-13 | Micron Technology, Inc. | Methods, devices, and systems for dealing with threshold voltage change in memory devices |
US8249099B2 (en) * | 2009-08-27 | 2012-08-21 | Texas Instruments Incorporated | External memory data management with data regrouping and channel look ahead |
JP5342014B2 (ja) | 2009-08-31 | 2013-11-13 | 株式会社日立製作所 | 複数のフラッシュパッケージを有するストレージシステム |
US20110060869A1 (en) | 2009-09-08 | 2011-03-10 | Ocz Technology Group, Inc. | Large capacity solid-state storage devices and methods therefor |
US8479061B2 (en) | 2009-09-24 | 2013-07-02 | AGIGA Tech | Solid state memory cartridge with wear indication |
US20110087824A1 (en) * | 2009-10-08 | 2011-04-14 | Giga-Byte Technology Co.,Ltd. | Flash memory accessing apparatus and method thereof |
US8234447B2 (en) | 2009-10-09 | 2012-07-31 | Hitachi, Ltd. | Storage control device for storage system provided with storage device coupled to switch network |
US8832415B2 (en) | 2010-01-08 | 2014-09-09 | International Business Machines Corporation | Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests |
JP2011108306A (ja) | 2009-11-16 | 2011-06-02 | Sony Corp | 不揮発性メモリおよびメモリシステム |
US8230172B2 (en) | 2009-12-03 | 2012-07-24 | Intel Corporation | Gather and scatter operations in multi-level memory hierarchy |
US8489803B2 (en) | 2009-12-14 | 2013-07-16 | Smsc Holdings S.A.R.L. | Efficient use of flash memory in flash drives |
US8914568B2 (en) | 2009-12-23 | 2014-12-16 | Intel Corporation | Hybrid memory architectures |
TWI433163B (zh) | 2009-12-23 | 2014-04-01 | Mstar Semiconductor Inc | 記憶體控制器及其控制方法 |
US8612809B2 (en) | 2009-12-31 | 2013-12-17 | Intel Corporation | Systems, methods, and apparatuses for stacked memory |
US8285908B2 (en) * | 2010-01-24 | 2012-10-09 | Freescale Semiconductor, Inc. | Bus bridge and method for interfacing out-of-order bus and multiple ordered buses |
US20110197031A1 (en) * | 2010-02-05 | 2011-08-11 | Nokia Corporation | Update Handler For Multi-Channel Cache |
US20110208900A1 (en) | 2010-02-23 | 2011-08-25 | Ocz Technology Group, Inc. | Methods and systems utilizing nonvolatile memory in a computer system main memory |
JP2011198091A (ja) | 2010-03-19 | 2011-10-06 | Toshiba Corp | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム |
US9189385B2 (en) | 2010-03-22 | 2015-11-17 | Seagate Technology Llc | Scalable data structures for control and management of non-volatile storage |
KR20110131781A (ko) | 2010-05-31 | 2011-12-07 | 삼성전자주식회사 | 위치정보의 정확도 확인방법 및 장치 |
GB201011146D0 (en) | 2010-07-02 | 2010-08-18 | Vodafone Ip Licensing Ltd | Mobile computing device |
US8489833B2 (en) | 2010-08-20 | 2013-07-16 | Transcend Information, Inc. | Data backup method for flash memory module and solid state drive |
US8838935B2 (en) | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
US8649212B2 (en) | 2010-09-24 | 2014-02-11 | Intel Corporation | Method, apparatus and system to determine access information for a phase change memory |
US8578110B2 (en) * | 2010-10-12 | 2013-11-05 | Hitachi, Ltd. | Memory data backup system and memory data backup control method |
US8527837B2 (en) | 2010-10-15 | 2013-09-03 | Micron Technology, Inc. | Selective error control coding in memory devices |
US8612676B2 (en) | 2010-12-22 | 2013-12-17 | Intel Corporation | Two-level system main memory |
US9779020B2 (en) * | 2011-02-08 | 2017-10-03 | Diablo Technologies Inc. | System and method for providing an address cache for memory map learning |
US20120221785A1 (en) | 2011-02-28 | 2012-08-30 | Jaewoong Chung | Polymorphic Stacked DRAM Memory Architecture |
US8595597B2 (en) | 2011-03-03 | 2013-11-26 | Intel Corporation | Adjustable programming speed for NAND memory devices |
US8462577B2 (en) | 2011-03-18 | 2013-06-11 | Intel Corporation | Single transistor driver for address lines in a phase change memory and switch (PCMS) array |
US8462537B2 (en) | 2011-03-21 | 2013-06-11 | Intel Corporation | Method and apparatus to reset a phase change memory and switch (PCMS) memory cell |
US8935484B2 (en) | 2011-03-31 | 2015-01-13 | Hewlett-Packard Development Company, L.P. | Write-absorbing buffer for non-volatile memory |
US9323458B2 (en) * | 2011-04-11 | 2016-04-26 | Inphi Corporation | Memory buffer with one or more auxiliary interfaces |
US8607089B2 (en) | 2011-05-19 | 2013-12-10 | Intel Corporation | Interface for storage device access over memory bus |
CN102209262B (zh) | 2011-06-03 | 2017-03-22 | 中兴通讯股份有限公司 | 一种内容调度的方法、装置和*** |
US20120324195A1 (en) * | 2011-06-14 | 2012-12-20 | Alexander Rabinovitch | Allocation of preset cache lines |
US8605531B2 (en) | 2011-06-20 | 2013-12-10 | Intel Corporation | Fast verify for phase change memory with switch |
CN102231424B (zh) | 2011-06-24 | 2014-04-30 | 清华大学 | 相变存储单元及相变存储器 |
US8463948B1 (en) | 2011-07-01 | 2013-06-11 | Intel Corporation | Method, apparatus and system for determining an identifier of a volume of memory |
US8767482B2 (en) | 2011-08-18 | 2014-07-01 | Micron Technology, Inc. | Apparatuses, devices and methods for sensing a snapback event in a circuit |
CN103946811B (zh) | 2011-09-30 | 2017-08-11 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
US9317429B2 (en) | 2011-09-30 | 2016-04-19 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels |
WO2013048491A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Apparatus, method and system that stores bios in non-volatile random access memory |
EP2761467B1 (en) | 2011-09-30 | 2019-10-23 | Intel Corporation | Generation of far memory access signals based on usage statistic tracking |
US9298606B2 (en) | 2011-09-30 | 2016-03-29 | Intel Corporation | Statistical wear leveling for non-volatile system memory |
EP3382556A1 (en) | 2011-09-30 | 2018-10-03 | INTEL Corporation | Memory channel that supports near memory and far memory access |
EP2761468B1 (en) | 2011-09-30 | 2019-12-11 | Intel Corporation | Platform storage hierarchy with non-volatile random access memory having configurable partitions |
US9600416B2 (en) | 2011-09-30 | 2017-03-21 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy |
WO2013048485A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Autonomous initialization of non-volatile random access memory in a computer system |
WO2013048490A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Non-volatile random access memory (nvram) as a replacement for traditional mass storage |
US8850125B2 (en) * | 2011-10-25 | 2014-09-30 | Cavium, Inc. | System and method to provide non-coherent access to a coherent memory system |
WO2013080299A1 (ja) * | 2011-11-29 | 2013-06-06 | 富士通株式会社 | データ管理装置、データコピー方法、およびプログラム |
US20130205065A1 (en) | 2012-02-02 | 2013-08-08 | Lsi Corporation | Methods and structure for an improved solid-state drive for use in caching applications |
US9311228B2 (en) | 2012-04-04 | 2016-04-12 | International Business Machines Corporation | Power reduction in server memory system |
US9471484B2 (en) * | 2012-09-19 | 2016-10-18 | Novachips Canada Inc. | Flash memory controller having dual mode pin-out |
US9280497B2 (en) * | 2012-12-21 | 2016-03-08 | Dell Products Lp | Systems and methods for support of non-volatile memory on a DDR memory channel |
KR102249416B1 (ko) * | 2014-06-11 | 2021-05-07 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 구동 방법 |
GB2548845B (en) * | 2016-03-29 | 2019-11-27 | Imagination Tech Ltd | Handling memory requests |
-
2011
- 2011-09-30 EP EP18165216.5A patent/EP3382556A1/en not_active Ceased
- 2011-09-30 EP EP11873442.5A patent/EP2761472B1/en active Active
- 2011-09-30 EP EP18165222.3A patent/EP3364304B1/en active Active
- 2011-09-30 CN CN201180075116.6A patent/CN104025060B/zh active Active
- 2011-09-30 US US13/977,603 patent/US9342453B2/en active Active
- 2011-09-30 WO PCT/US2011/054421 patent/WO2013048493A1/en active Application Filing
- 2011-09-30 CN CN201710382875.6A patent/CN107391397B/zh active Active
-
2012
- 2012-09-27 TW TW104132429A patent/TWI587312B/zh active
- 2012-09-27 TW TW101135620A patent/TWI512748B/zh active
-
2016
- 2016-03-25 US US15/081,164 patent/US9619408B2/en active Active
-
2017
- 2017-04-07 US US15/482,542 patent/US10282322B2/en active Active
- 2017-12-29 US US15/857,992 patent/US10241943B2/en active Active
-
2018
- 2018-07-26 US US16/046,587 patent/US10282323B2/en active Active
-
2019
- 2019-05-07 US US16/405,524 patent/US10691626B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6298418B1 (en) * | 1996-11-29 | 2001-10-02 | Hitachi, Ltd. | Multiprocessor system and cache coherency control method |
CN101715575A (zh) * | 2006-12-06 | 2010-05-26 | 弗森多***公司(dba弗森-艾奥) | 采用数据管道管理数据的装置、***和方法 |
CN101236540A (zh) * | 2007-01-29 | 2008-08-06 | 国际商业机器公司 | 用于提供动态存储器预取的***和方法 |
CN101315614A (zh) * | 2007-06-01 | 2008-12-03 | 英特尔公司 | 支持页属性的虚拟地址至物理地址的转换 |
CN101989183A (zh) * | 2010-10-15 | 2011-03-23 | 浙江大学 | 混合主存储器实现节能存储的方法 |
Non-Patent Citations (1)
Title |
---|
一种基于新体系结构的空间固态记录器原型***;张科;郝智泉;王贞松;《电子学报》;20080215;第36卷(第2期);285-290 * |
Also Published As
Publication number | Publication date |
---|---|
US20160210251A1 (en) | 2016-07-21 |
US10282322B2 (en) | 2019-05-07 |
TWI587312B (zh) | 2017-06-11 |
US20180189207A1 (en) | 2018-07-05 |
EP2761472B1 (en) | 2020-04-01 |
EP2761472A4 (en) | 2015-05-06 |
US9619408B2 (en) | 2017-04-11 |
CN107391397A (zh) | 2017-11-24 |
US20190332556A1 (en) | 2019-10-31 |
TW201329994A (zh) | 2013-07-16 |
WO2013048493A1 (en) | 2013-04-04 |
US20140040550A1 (en) | 2014-02-06 |
TWI512748B (zh) | 2015-12-11 |
EP3382556A1 (en) | 2018-10-03 |
US10691626B2 (en) | 2020-06-23 |
EP2761472A1 (en) | 2014-08-06 |
EP3364304A1 (en) | 2018-08-22 |
TW201604889A (zh) | 2016-02-01 |
US20190018809A1 (en) | 2019-01-17 |
US9342453B2 (en) | 2016-05-17 |
US20170249266A1 (en) | 2017-08-31 |
CN104025060B (zh) | 2017-06-27 |
CN104025060A (zh) | 2014-09-03 |
US10241943B2 (en) | 2019-03-26 |
US10282323B2 (en) | 2019-05-07 |
EP3364304B1 (en) | 2022-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391397B (zh) | 支持近存储器和远存储器访问的存储器通道 | |
JP6371431B2 (ja) | プロセッサ、方法、プログラム、およびコンピュータ可読記録媒体 | |
GB2514023B (en) | System and method for intelligently flushing data from a processor into a memory subsystem | |
CN107608910B (zh) | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 | |
US9286205B2 (en) | Apparatus and method for phase change memory drift management | |
US9600416B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy | |
TWI596474B (zh) | 用於系統存取非依電性半導體儲存體作為隨機存取記憶體之方法及半導體晶片 | |
EP2761480A1 (en) | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |