CN108780423A - 多级存储器管理 - Google Patents
多级存储器管理 Download PDFInfo
- Publication number
- CN108780423A CN108780423A CN201780019383.9A CN201780019383A CN108780423A CN 108780423 A CN108780423 A CN 108780423A CN 201780019383 A CN201780019383 A CN 201780019383A CN 108780423 A CN108780423 A CN 108780423A
- Authority
- CN
- China
- Prior art keywords
- storage address
- memory
- nearly
- register array
- remote
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 claims abstract description 363
- 238000003860 storage Methods 0.000 claims abstract description 275
- 230000004044 response Effects 0.000 claims description 34
- 230000015556 catabolic process Effects 0.000 claims description 32
- 238000006731 degradation reaction Methods 0.000 claims description 32
- 238000000034 method Methods 0.000 claims description 31
- 230000000593 degrading effect Effects 0.000 claims description 5
- 230000001960 triggered effect Effects 0.000 claims 2
- 238000007726 management method Methods 0.000 description 47
- 238000012545 processing Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 14
- 230000002093 peripheral effect Effects 0.000 description 13
- 238000012546 transfer Methods 0.000 description 13
- 239000002245 particle Substances 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 238000013507 mapping Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000000151 deposition Methods 0.000 description 3
- 230000005611 electricity Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000003032 molecular docking Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 210000001525 retina Anatomy 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
-
- 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
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/12—Replacement control
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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
- G06F2212/1021—Hit rate 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Dram (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
多级存储器管理电路可以在近存储器和远存储器之间重映射数据。在一个实施例中,寄存器阵列存储近存储器地址和映射到近存储器地址的远存储器地址。寄存器阵列中的条目的数量小于近存储器中的页的数量。重映射逻辑确定所请求数据的远存储器地址从寄存器阵列中缺失,并从寄存器阵列中选择可用的近存储器地址。重映射逻辑还发起在远存储器地址处到所选近存储器地址的所请求数据的写。重映射逻辑进一步将所述远存储器地址写到对应于所选近存储器地址的寄存器阵列的条目。
Description
相关申请
本申请要求在35 U.S.C. §365(c)下对2016年3月22日提交的标题为“MULTI-LEVELMANAGEMENT”的美国申请No.15/077424的优先权。
技术领域
本发明的实施例一般涉及存储器装置,并且更具体地涉及诸如近存储器和远存储器的多级存储器的管理。
版权声明/许可
本专利文档的公开的部分可包含受版权保护的材料。版权所有者不反对任何人复制本专利文档或本专利公开,因为其出现在专利和商标局专利文件或记录中,但无论如何以其它方式保留所有版权权利。版权声明应用于如下面描述的所有数据,以及于此的随附附图中,以及应用于下面描述的任何软件:版权©2016,Intel公司,保留所有权利。
背景技术
存储器装置普遍存在于计算装置中以存储用于处理器执行操作并实现计算装置的功能的数据和代码。存储器***中存在从具有统一性能特性的平坦存储器空间移动到更加异构的存储器***(其也可以被称为多级存储器***)的趋势。多级存储器***的示例是包括耦合到相同处理器的更慢存储器和更快存储器的***。在此类多级存储器***中,访问较快存储器相对于访问较慢存储器的比率可能影响***性能。
附图说明
以下描述包括对具有说明的附图的讨论,所述说明作为本发明的实施例的实现的示例而被给出。附图应当作为示例而不是作为限制来理解。如本文所使用的,对一个或多个“实施例”的参考应被理解为描述被包括在本发明的至少一个实现中的特定特征、结构和/或特性。因此,本文中出现的诸如“在一个实施例中”或“在备选实施例中”的短语描述了本发明的各种实施例和实现,并且不一定都指相同实施例。然而,它们也不一定相互排斥。
图1是包括多级存储器管理电路的***的实施例的框图。
图2是包括多级存储器管理电路的***的实施例的框图。
图3是根据实施例的用于存储近存储器地址和映射到近存储器地址的远存储器地址的寄存器阵列的表示。
图4是根据实施例的用于对从近存储器到远存储器的数据写进行分级的寄存器阵列的表示。
图5A是管理多级存储器的过程的实施例的流程图,其包括在近存储器和远存储器之间重映射数据。
图5B是管理多级存储器的过程的实施例的流程图,其包括通过可用的近存储器地址来更新寄存器阵列。
图6是在其中可以实现多级存储器管理电路的计算***的实施例的框图。
图7是在其中可以实现多级存储器管理电路的移动装置的实施例的框图。
下面是某些细节和实现的描述,包括附图的描述,其可以描绘下面描述的一些或所有实施例,以及讨论本文呈现的发明概念的其它潜在实施例或实现。
具体实施方式
如上面简要提到的,计算***可以包括多种类型的主存储器,例如更快的存储器和更慢的存储器。例如,在一个实施例中,***包括“近存储器”和“远存储器”两者。近存储器和远存储器是具有不同特性(例如不同的操作特性)的存储器。在一个实施例中,近存储器是比远存储器更快的存储器。例如,近存储器可以具有高带宽和/或低时延。与近存储器相比,远存储器可以具有更低的带宽和/或更高的时延。近存储器可以(但不一定)被部署比远存储器物理上更靠近处理器。此外,近存储器可以(但不一定)是“本地存储器”,并且远存储器可以是“非本地存储器”。在具有多个处理器的***中,本地存储器是指配到处理器之一的存储器的区域。非本地存储器是指配到另一处理器的存储器的区域。近存储器和远存储器也可以(或备选地)被称为不同“级”的存储器,并且因此具有近存储器和远存储器两者的***可以是“多级存储器***”的示例。具有近存储器和远存储器两者的***也可以称为“异构存储器***”。
包括存储器的多个级别可以改进整体***性能。例如,由于近存储器的低时延和/或高带宽,包括近存储器区域可以是有益的。然而,处理器附近的有限地盘(limited realestate)或成本可能限制近存储器的大小。因此,通常可以通过包括具有比近存储器更高时延和/或更低带宽的远存储器区域来改进***性能,而其可以更便宜并且位于更远离处理器。例如,堆叠式DRAM可以提供近存储器的区域,并且具有较低性能的传统DRAM或其它存储器技术可以提供远存储器的区域。然而,要理解,近存储器和远存储器不限于任何具体的存储器技术。而是,如上面所解释的,近存储器区域是基于其相对于远存储器区域的特性来定义的。
多插槽***还可以包括多级存储器。例如,多插槽***可以将每个插槽与其自己的本地存储器耦合。在一个此类示例中,映射到给定插槽的存储器是近存储器,并且映射到其它插槽的存储器是远存储器。此类多插槽***可以实现称为非统一存储器访问(NUMA)的一类存储器组织。当核访问其插槽的本地存储器(例如,近存储器)时,NUMA可以减少存储器时延,但是当访问映射到其它插槽的存储器区域(例如,远存储器)时,增加存储器时延。因此,在多级存储器***中,最大化对近存储器的参考的数量并最小化对远存储器的参考可以改进***性能。相应地,管理多级存储器以便在近存储器中找到频繁或最近访问的数据可以对***性能具有积极影响。
如本文所描述的,在一个实施例中,多级存储器管理电路可以在近存储器和远存储器之间重映射地址,而不要求相当大的重映射结构。多级存储器管理电路可以包括寄存器阵列以存储近存储器地址和映射到近存储器地址的远存储器地址。在一个实施例中,寄存器阵列中的条目的数量小于并且独立于近存储器的大小,并且可以基于期望的性能特性来选择。
在一个实施例中,多级存储器管理电路包括重映射逻辑,其在检测到对位于远存储器中的数据的请求时,检查寄存器阵列以查看远存储器地址是否已经在寄存器阵列中。如果远存储器地址在寄存器阵列中,则数据在由寄存器阵列所指示的位置处的近存储器中。如果远存储器地址不在寄存器阵列中,则重映射逻辑选择可用存储器地址并使所请求的数据从远存储器复制到在所选近存储器地址处的近存储器。然后,重映射逻辑可以更新寄存器阵列以反映映射。
在寄存器阵列中未留有可用的近存储器地址的情况下,在一个实施例中,重映射逻辑触发中断以使OS更新寄存器阵列。OS可以在中断处置期间基于寄存器阵列来更新页表,并通过可用的近存储器地址来更新寄存器阵列。在一个实施例中,在重映射逻辑重映射多个页之后发生中断处置,从而分摊OS在多个页而不是仅一个页上产生的成本。
图1是包括多级存储器管理电路的***的实施例的框图。***100包括计算装置中的存储器子***的元件。处理器110表示执行操作***(OS)和应用的主机计算平台的处理单元,其可以统称为存储器的“主机”。OS和应用执行引起存储器访问的操作。处理器110可包括一个或多个单独的处理器。每个单独的处理器可以包括单核和/或多核处理单元。处理单元可以是诸如CPU(中央处理单元)的主要处理器和/或诸如GPU(图形处理单元)的外设处理器。***100可被实现为片上***(SOC)101,或者通过独立组件来实现。
存储器控制器120表示用于***100的一个或多个存储器控制器电路或装置。存储器控制器120表示响应于通过处理器110执行操作而生成存储器访问命令的控制逻辑。如果某事(例如,“x”)“响应于”另一事件(例如,“y”)而发生,则x可以直接或间接地响应于y。例如,y的出现最终可能导致x的出现,但可能存在其它中间事件和/或条件。在其它情形中,y可能不一定导致x的出现,并且即使y尚未发生,x也可能发生。此外,“响应于”并不排除存在附加的和/或不同的使役(causative)事件。因此,术语“响应于”还可以意味着“至少部分地响应于”。存储器控制器120访问一个或多个存储器装置140。在一个实施例中,存储器装置140作为不同的通道而被组织和管理,其中每个通道耦合到总线和信号线(其并行地耦合到多个存储器装置)。每个通道是独立可操作的。因此,每个通道被独立地访问和控制,并且定时、数据转移、命令和地址交换以及其它操作对于每个通道是分离的。在一个实施例中,每个通道的设置由单独的模式寄存器或其它寄存器设置来控制。在一个实施例中,每个存储器控制器120管理单独的存储器通道,尽管***100可以配置成具有由单个控制器所管理的多个通道,或者配置成在单个通道上具有多个控制器。在一个实施例中,存储器控制器120是主机处理器110的一部分,例如在相同管芯上实现的或在与处理器相同的封装空间中实现的逻辑。
存储器控制器120包括I/O接口逻辑122以耦合到***总线。I/O接口逻辑122(以及存储器装置140的I/O接口逻辑142)可以包括引脚、连接器、信号线和/或其它硬件以连接所述装置。I/O接口逻辑122可以包括硬件接口。通常,集成电路内的导线与焊盘或连接器耦合,以对装置之间的信号线或迹线进行接口。I/O接口逻辑122可以包括驱动器、接收器、收发器、终端和/或其它电路,以在装置之间在信号线上发送和/或接收信号。***总线可以实现为将存储器控制器120耦合到存储器装置140的多个信号线。***总线至少包括时钟(CLK)132、命令/地址(CMD)和写数据(DQ)134、读DQ 136以及零个或更多个其它信号线138。在一个实施例中,存储器控制器120和存储器之间的总线或连接可以称为存储器总线。用于CMD 134的信号线可以称为“C/A总线”(或ADD/CMD总线,或指示命令和地址信息的转移的某一其它称呼)。用于写和读DQ 136的信号线可以称为“数据总线”。在一个实施例中,独立通道具有不同的时钟信号、C/A总线、数据总线和其它信号线。因此,***100可以被认为具有多个“***总线”(在独立的接口路径可以被认为是单独的***总线的意义上)。将理解,除了显式示出的线,***总线可以包括选通信令线、警报线、辅助线和其它信号线。
将理解,***总线包括配置成以带宽进行操作的数据总线(DQ 136)。基于***100的设计和/或实现,DQ 136可每存储器装置140具有更多或更少的带宽。例如,DQ 136可以支持具有x32接口、x16接口、x8接口或其它接口的存储器装置。约定“xN”(其中N是二进制整数)指存储器装置140的接口大小,其表示与存储器控制器120交换数据的多个信号线DQ136。存储器装置的接口大小是关于多少个存储器装置可以在***100中每通道同时使用或者并行地耦合到相同信号线的控制因子。术语“耦合”可以指直接或间接地被物理地、电地和/或通信地连接的元件,并且可以与本文中的术语“连接”互换使用。
存储器装置140表示***100的存储器资源。对存储器装置的参考可以应用于不同的存储器类型。存储器装置一般指易失性存储器技术。易失性存储器是如果对装置中断功率则其状态(以及因此存储在其上的数据)是不确定的存储器。非易失性存储器指即使对装置中断功率其状态也是确定的存储器。动态易失性存储器要求刷新存储在装置中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器),或诸如同步DRAM(SDRAM)的某一变体。如本文描述的存储器子***可以与许多存储器技术兼容,例如DDR3(双数据速率版本3,由JEDEC(联合电子装置工程委员会)在2007年6月27日最初发行,当前为发行版21)、DDR4(DDR版本4,由JEDEC在2012年9月发布的初始规范)、LPDDR3(低功率DDR版本3,JESD209-3B,由JEDEC在2013年8月发布)、LPDDR4(低功率双倍数据速率(LPDDR)版本4,JESD209-4,由JEDEC于2014年8月最初发布)、WIO2(宽I/O 2(WideIO2),JESD229-2,由JEDEC于2014年8月最初发布)、HBM(高带宽存储器DRAM,JESD235,由JEDEC于2013年10月最初发布)、DDR5(DDR版本5,当前正由JEDEC讨论)、LPDDR5(当前正由JEDEC讨论)、HBM2(HBM版本2,当前正由JEDEC讨论)、和/或其它存储器技术,以及基于此类规范的衍生物或扩展的技术。
除了易失性存储器之外或对易失性存储器备选地是,在一个实施例中,对存储器装置的参考可以指非易失性存储器装置,即使对装置中断功率,其状态也是确定的。在一个实施例中,非易失性存储器装置是块可寻址存储器装置,例如NAND或NOR技术。因此,存储器装置还可以包括将来代非易失性装置,诸如三维交叉点存储器装置,或其它字节可寻址非易失性存储器装置。在一个实施例中,存储器装置可以是或包括多阈值级NAND闪速存储器、NOR闪速存储器、单级或多级相变存储器(PCM)、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)存储器(其结合忆阻器技术),或自旋转移矩(STT)-MRAM,或上面的任何存储器的组合、或其它存储器。本文涉及“DRAM”的描述可以应用于允许随机访问的任何存储器装置,无论是易失性还是非易失性的。存储器装置或DRAM可以指管芯其本身和/或指封装的存储器产品。
在一个实施例中,每个存储器装置140是单独的存储器管芯,其可以每管芯包括多个(例如,2个)通道。每个存储器装置140包括I/O接口逻辑142,其具有通过装置的实现所确定的带宽(例如,x16或x8或某一其它接口带宽)。I/O接口逻辑142使能存储器装置与存储器控制器120进行接口。I/O接口逻辑142可以包括硬件接口,并且可以根据存储器控制器的I/O 122,但在存储器装置端。在一个实施例中,多个存储器装置140被并联连接到相同的数据总线。例如,***100可以配置有并行耦合的多个存储器装置140,其中每个存储器装置响应命令并访问每个存储器装置内部的存储器资源160。对于写操作,独立存储器装置140可以写整体数据字的一部分,并且对于读操作,独立存储器装置140可以获取整体数据字的一部分。
在一个实施例中,存储器装置140被直接部署在计算装置的主板或主机***平台(例如,在其上部署处理器110的印刷电路板(PCB))上。在一个实施例中,存储器装置140可被组织成存储器模块130。在一个实施例中,存储器模块130表示双列直插式存储器模块(DIMM)。在一个实施例中,存储器模块130表示用于共享访问或控制电路的至少一部分的多个存储器装置的其它组织,所述访问或控制电路可以是与主机***平台分离的板、分离的电路、或分离的装置。存储器模块130可以包括多个存储器装置140,并且存储器模块可以包括对到部署在其上的所包括存储器装置的多个单独通道的支持。
存储器装置140各自包括存储器资源160。存储器资源160表示数据的存储位置或存储器位置的独立阵列。通常,存储器资源160作为成行的数据而被管理,经由高速缓存线(行)和位线(行内的独立位)控制来访问。存储器资源160可以被组织为存储器的单独通道、颗粒排列(rank)、和存储体(bank)。通道是到存储器装置140内的存储位置的独立控制路径。颗粒排列指跨多个存储器装置的公共位置(例如,不同装置内的相同行地址)。存储体指存储器装置140内的存储器位置的阵列。在一个实施例中,存储器的存储体被划分为子存储体,其具有用于子存储体的共享电路的至少一部分。
在一个实施例中,存储器装置140包括一个或多个寄存器144。寄存器144表示为存储器装置的操作提供配置或设置的存储装置或存储位置。在一个实施例中,寄存器144可以为存储器装置140提供存储位置来存储用于由存储器控制器120访问的数据(作为控制或管理操作的一部分)。在一个实施例中,寄存器144包括模式寄存器。在一个实施例中,寄存器144包括多用途寄存器。寄存器144内的位置的配置可以将存储器装置140配置成以不同的“模式”进行操作,其中命令和/或地址信息或信号线可以取决于模式而触发存储器装置140内的不同操作。寄存器144的设置可以指示I/O设置(例如,定时、端接或ODT(管芯上端接)、驱动器配置和/或其它I/O设置)的配置。
在一个实施例中,存储器装置140包括作为与I/O 142关联的接口硬件的一部分的ODT 146。ODT指在功率供应干线和在接收器侧的信号线之间的连接阻抗。在一个实施例中,功率供应干线是VDD或高压供应。在一个实施例中,存储器装置可以从信号线端接到VSS或地或低电压供应。在一个实施例中,存储器装置可以将信号线端接到VDD和VSS。
存储器装置140包括控制器150,其表示存储器装置内的控制逻辑,所述控制逻辑用于控制存储器装置内的内部操作。例如,控制器150对由存储器控制器120发送的命令进行解码,并生成用于执行或满足命令的内部操作。控制器150可以基于寄存器144来确定选择什么模式,并基于所选模式来配置存储器资源160的操作的执行和/或访问。控制器150生成控制信号以控制存储器装置140内的位的路由,来为所选模式提供适当的接口,并将命令引导到适当的存储器位置或地址。
再次参考存储器控制器120,存储器控制器120包括命令(CMD)逻辑124,其表示生成命令以发送到存储器装置140的逻辑或电路。通常,存储器子***中的信令包括在命令内或伴随命令的地址信息,其用于指示或选择其中存储器装置应该执行命令的一个或多个存储器位置。在一个实施例中,控制器150包括命令逻辑152,其用于接收和解码经由I/O 142从存储器控制器120接收的命令和地址信息。基于所接收的命令和地址信息,控制器150可以控制存储器装置140内的电路和逻辑的操作的定时以执行命令。根据一个实施例,控制器150负责遵守标准或规范。
在一个实施例中,存储器控制器120包括刷新(REF)逻辑126。可以在存储器装置140是易失性的并且需要被刷新以保持确定性状态的情况下使用刷新逻辑126。在一个实施例中,刷新逻辑126指示用于刷新的位置和要执行的刷新的类型。刷新逻辑126可以在存储器装置140内触发自刷新,和/或通过发送刷新命令来执行外部刷新。来自存储器控制器的外部刷新可以包括所有存储体刷新和/或每存储体刷新。所有存储体刷新引起并行耦合的所有存储器装置140内的所选存储体的刷新。每存储体刷新引起指定存储器装置140内的指定存储体的刷新。在一个实施例中,存储器装置140内的控制器150包括刷新逻辑154以在存储器装置140内应用刷新。在一个实施例中,刷新逻辑154生成内部操作以根据从存储器控制器120接收的外部刷新来执行刷新。刷新逻辑154可以确定刷新是否被引导到存储器装置140,以及响应于所述命令刷新什么存储器资源160。
根据一个实施例,SOC 101包括用于在近存储器和远存储器之间重映射数据的多级存储器管理电路103。管理多级存储器的不同方法可以具有不同的益处和缺点。
管理多级存储器的一种方式是使用存储器分区。在实现存储器分区的***的一个示例中,操作***(OS)对物理地址空间进行分区并将程序数据映射到碰巧可用的任何存储器区域。在实现存储器分区的***中,当使用模式改变时,OS还可以机会地将热页(hotpage)从远存储器重映射到近存储器。“重映射”指映射或重映射,并涉及创建地址之间的关系。例如,如果页已从远存储器重映射到近存储器,则数据已从远存储器移动到近存储器,并且可以将对远存储器地址的访问转换成或重引导到近存储器地址。存储器分区的益处是用于通过依靠OS来利用现有的存储器管理策略的可能,所述OS通常负责存储器管理。然而,存储器分区的一个缺点是它倾向于缓慢响应改变的局域性特性。例如,当程序访问存储器中的新页时,通常页将在移动到新区域之前被密集使用。因此,在一种此类方法中,OS可能不能够足够快地响应新页访问以利用近存储器的性能益处。
管理多级存储器的另一方式是使用硬件重映射。在一个此类示例中,硬件负责在没有OS干预的情况下在近存储器和远存储器之间重映射数据。例如,硬件以类似于高速缓存的方式来维持存储器的重映射表。当发生对远存储器中的新页的参考时,硬件可以立即将数据从远存储器复制到近存储器,这可以使能捕获大量的重使用。硬件重映射的一个缺点是重映射结构的成本,这可能是相当大的。例如,重映射结构的大小与近存储器的大小相联系(其中每页一个条目)。在一个示例中,在具有组织成4 KB页的2 GB近存储器的存储器中,重映射结构会具有512 K条目。在此示例中,如果使用了4字节标签,则会将2 MB的存储用于标签。因此,对于硬件重映射所要求的存储装置可能是相当大的。
相反,在一个实施例中,多级存储器管理电路可以在近存储器和远存储器之间重映射地址,而不要求相当大的重映射结构。再次参考图1,在一个实施例中,多级存储器管理电路103与处理器110和存储器控制器120耦合。根据一个实施例,重映射逻辑105检测对来自处理器110的数据的请求。在重映射逻辑105检测对位于远存储器中的数据的请求之后,重映射逻辑105通过查找寄存器阵列107中的远存储器地址来检查看数据是否已被重映射到近存储器。寄存器阵列107是“升级寄存器阵列”。在一个实施例中,升级寄存器阵列107包括用于指示哪些远存储器地址被映射到近存储器地址的所选子集的条目。如果重映射逻辑105确定所请求数据的远存储器地址在升级寄存器阵列107中,则重映射逻辑105可以确定所请求数据被复制到的近存储器地址。然后,重映射逻辑105可以向存储器控制器120发送对在数据被复制到的近存储器地址处的数据的请求。
在一个实施例中,如果重映射逻辑105确定远存储器地址不在升级寄存器阵列107中,并且因此不在近存储器中,则重映射逻辑105可以将所请求数据移动到近存储器。例如,重映射逻辑105可以从升级寄存器阵列107中选择可用的近存储器地址,并且发起将所请求数据写到所选近存储器地址。因此,在一个实施例中,重映射逻辑将远存储器中的物理地址重映射到近存储器中的物理地址。
在所请求数据尚未被复制到近存储器的事件中,在一个实施例中,重映射逻辑105将请求转发到远存储器。然后,重映射逻辑105可以将数据从远存储器复制到近存储器并将地址存储在升级寄存器阵列107中。然后,重映射逻辑105可以将对相同远存储器地址的随后请求重引导到数据被复制到的近存储器地址。
如下面更详细描述的,如果重映射逻辑105确定在升级寄存器阵列107中不存在可用条目,则重映射逻辑105向处理器110发送中断。中断也可以被称为陷阱或异常,并且是由硬件或软件向处理器发射的信号,其响应于某一事件而请求注意。处理器可以通过暂停其当前活动、保存其状态、以及执行用于处置所述事件的称为中断处置器(也可以称为中断服务例程(ISR))的功能来响应中断。可以使用从硬件发送到处理器的电信号来实现来自硬件的中断(称为硬件中断)。硬件中断通常是异步的,并且可以在指令执行的中间发生。发起硬件中断的动作可以称为中断请求(IRQ)。在一些情况下,中断可以由指令集中的特殊指令所触发,所述指令在其被执行时引起中断(例如,同步中断)。
在一个实施例中,中断使OS执行中断处置器代码以通过可用的近存储器地址来更新寄存器阵列。为了更新寄存器阵列107,OS可以选择可用的不同近存储器地址,或者如果没有近存储器地址可用,则OS可以选择“牺牲品”以降级到远存储器。“降级”页在本文中指将页从近存储器复制到远存储器或其它存储装置。降级页可以在近存储器中为新页腾出空间。图5B和对应的描述包括关于更新寄存器阵列的方法的附加细节。在一个实施例中,在选择将哪些数据从近存储器复制到远存储器之后,OS可以使数据立即被复制,或者OS可以将意图的写存储到“降级”寄存器阵列。因此,一个实施例包括降级寄存器阵列109以将从近存储器到远存储器的数据的复制进行分级。其它实施例不包括降级寄存器阵列109,而是可以在决定降级数据之后使数据立即(或至少在没有实质延迟的情况下)被复制。寄存器阵列107和109可以通过能够存储本文描述的相关信息的任何硬件结构来实现。
在一个实施例中,将升级寄存器阵列107的更新授权给OS使能OS选择应该将哪些数据放置在近存储器和远存储器中。例如,OS可以通过使那些区域对多级存储器管理电路103不可用来固定(pin)近存储器中的某些关键存储器区域。在一个此类示例中,OS留意它已决定不可用的区域,并且不将那些近存储器地址写到寄存器阵列以用于重映射。升级寄存器阵列107的更新的授权还可以利用高级应用知识在从近存储器中选择新的牺牲品时帮助指导替换决定。此外,允许OS具有对存储器的映射的某种控制可以消除对大标签结构的要求。如上面所提到的,在一个实施例中,寄存器阵列107存储指示哪些远存储器地址被映射到近存储器地址的所选子集的信息。在一个此类实施例中,寄存器阵列中的条目的数量可以独立于并小于近存储器中的页的数量。因此,在一个实施例中,多级存储器管理电路可以实现与硬件重映射关联的性能增益,而不要求用于近存储器中每一个页的标签阵列。此外,多级存储器管理电路可以在页一被参考时就使能页被重映射,而不是等待OS来重映射它们。
此外,与每一次移动页时会产生与中断处置关联的成本的其它方法相比,对于更大数量的页可一次产生成本。例如,对于当由寄存器阵列107重映射许多页时,可一次产生与中断处置和页表修改关联的成本,因此在多个页上分摊成本。因此,实施例可以最小化与OS中断关联的固定成本。此外,在一个实施例中,通过包括重映射逻辑以立即使页被移动到近存储器,多级存储器管理电路可以利用可能在实际工作负载中发生的短突发使用模式。因此,在一个实施例中,多级管理电路可以允许页从远存储器到近存储器的大量转移在硬件控制下,但也允许OS以较粗粒度来管理存储器的映射。
在一个实施例中,SOC 101包括直接存储器访问(DMA)引擎111,其用于访问存储器资源160以在近存储器和远存储器之间转移数据。在一个实施例中,DMA引擎111可以在处理器110发起DMA转移的意义上相对独立于处理器110而访问存储器资源160,并且然后能够在DMA引擎111执行转移时执行其它操作。在一个实施例中,处理器110基于降级寄存器阵列109的条目而发起DMA转移。在一个此类实施例中,DMA引擎111读降级寄存器阵列109的条目并将页从降级寄存器阵列109中指示的近存储器地址复制到对应的远存储器地址。因此,在一个实施例中,可以在后台由DMA引擎111处置释放近存储器中的空间。当DMA转移完成时,DMA引擎111可以向处理器110发送指示转移完成的中断。尽管图1描绘了降级寄存器阵列109,但是其它实施例可以在没有专用的降级寄存器阵列而是有例如通用DMA寄存器的情况下利用DMA转移。在其它实施例中,OS和/或重映射逻辑105可以使用降级寄存器阵列109来留意要转移的数据而不要求DMA引擎111。例如,OS可以在降级寄存器阵列109中存储要从近存储器降级的页的地址。然后,OS和/或重映射逻辑105可以基于降级寄存器109的条目来生成用于转移数据的命令。
因此,如本文所描述的多级存储器管理电路可以保留OS管理方法的低成本和简单性,同时捕获硬件方法的性能益处。
图2是包括多级存储器管理电路的***的实施例的框图。***200示出了计算装置的存储器子***的部分,并且提供了图1的***100的实施例的一个示例。主机210表示将管理对***存储器的访问的逻辑。主机210可以包括处理器或SOC上的存储器控制器或其它电路,或者与处理器集成以控制存储器访问。
存储器装置220表示存储用于主机***执行操作的代码和/或数据的多个装置。存储器装置220可以被组织为颗粒排列240,以促进同时访问更大数量的位。颗粒排列包括并行的多个存储器装置。在一个实施例中,颗粒排列240共享数据引脚、命令/地址(C/A)引脚和时钟引脚。每个颗粒排列240包括用于在不同颗粒排列之间进行选择的特定一个或多个使能信号。如所示的,***200包括N个颗粒排列240。信号线的特定分组不一定按颗粒排列来物理地分组。在一个实施例中,在颗粒排列240之间重使用某些信号线。在一个实施例中,所有存储器装置220共享相同的***总线230,例如数据总线和命令/地址(C/A)总线,并共享时钟或选通信号(其可以包括一个或多个信号线)。***200可以使用使能信号(例如CKE(时钟使能)和芯片选择(CS)和/或CS和其它使能信号)以将一个颗粒排列或装置分组与另一个进行区分。因此,作为相同颗粒排列240的一部分的存储器装置220可以共享相同的使能/选择信号。在涉及除存储器子***外的一些事物之间的I/O接口的实现中,颗粒排列240可以表示通过公共总线的装置的某一其它分组。
主机210包括命令逻辑212以生成对存储器装置220的命令。在一个实施例中,命令逻辑212与多级存储器管理电路211耦合。根据实施例,多级存储器管理电路211在近存储器和远存储器之间重映射数据。如图2中所描绘的,多级存储器管理电路211包括重映射逻辑205、升级寄存器阵列207和降级寄存器阵列209。多级存储器管理电路211可以与上面在图1中描述的多级存储器管理电路103相同或类似。例如,重映射逻辑205可以检测对存储器装置220中的数据的请求,并且如果请求是对远存储器中的地址,则确定那些地址是否在升级寄存器阵列207中。如果远存储器地址在升级寄存器阵列207中,则重映射逻辑205可以将请求的地址修改为所请求数据被复制到的对应近存储器地址。多级存储器管理电路211还可以包括降级寄存器阵列209,其用于帮助将数据转移到远存储器(或其它存储装置)以清除近存储器中的空间。
存储器装置220包括解码器222,其表示用于从主机210接收和解码命令的逻辑。解码可以确定命令是否应用于存储器装置。在一个实施例中,存储器装置220包括寄存器224,其用于设置一个或多个配置参数。寄存器224的设置可以指示I/O设置(例如,定时、端接或ODT(管芯上端接)、驱动器配置和/或其它I/O设置)的配置。
图3是根据实施例的用于存储近存储器地址的寄存器阵列的表示。图3的寄存器阵列300是升级寄存器阵列的示例,例如上面讨论的图1的升级寄存器阵列107。在一个实施例中,升级寄存器阵列300包括用于指示远存储器310中的哪些地址已被映射到近存储器308中的地址的子集的信息。如所示的,近存储器308小于远存储器310,尽管在其它实施例中近存储器308可以在大小上大于或等于远存储器310。
在一个实施例中,升级寄存器阵列300包括用于在远存储器中存储地址的远存储器地址字段302。升级寄存器阵列300还包括近存储器地址字段304。近存储器地址字段304用于在近存储器中存储地址。远存储器地址字段302和近存储器地址字段304也可以分别被称为对远存储器和近存储器中的数据的存储指针。升级寄存器阵列300包括存储远存储器地址到近存储器地址的子集的映射的多个条目。近存储器地址的子集包括少于所有近存储器地址,并且可以在从1到近存储器地址的数量减1的范围内。例如,在一个实施例中,寄存器阵列包括256个条目以存储近存储器中256个页的地址,其中近存储器包括多于256个总页。其它实施例可以包括512、1024或另一整数数量的条目以保存近存储器地址的子集。可以基于期望的性能和/或硬件考虑来选择条目的数量。例如,较少数量的条目可引起较不昂贵的实现,但是可能由于OS中断的增加的频率而具有减少的性能。在另一示例中,更大数量的条目可以改进性能,但是可能增加成本。在一个实施例中,无论是采用更大还是更小数量的条目,升级寄存器阵列300中的条目的数量都小于近存储器308中的页的数量。因此,在一个此类实施例中,升级寄存器阵列300不具有对应于近存储器308中的每一个页的条目。此类方法可以使能性能增加而不要求过大的标签结构。
如所示的,升级寄存器阵列300还包括占用位306。“占用位”是指示对应近存储器地址是否可用于重映射的至少一个位。因此,“占用位”也可以称为“可用位”以代表相反的状态。尽管使用术语“位”,但是寄存器阵列的每个条目可以具有多于单个位以代表给定的近存储器地址是否可用、和/或以传达关于条目的其它状态信息。如上面所讨论的,在一个实施例中,重映射逻辑(例如,图1的重映射逻辑105)用于基于占用位306的值来选择可用的近存储器地址。为了说明性目的,图3还包括对应的近存储器地址是可用还是被占用的视觉表示307。
在一个实施例中,经由物理存储器地址而可访问升级寄存器阵列300的条目。因此,在一个此类实施例中,处理器(例如,图1的处理器110)可以通过对物理存储器地址的读和写命令来访问升级寄存器阵列300。经由物理存储器地址来访问升级寄存器阵列300的条目的能力可以使能OS在中断处置期间读和修改升级寄存器阵列300的条目以更新升级寄存器阵列300。在图3所示的示例中,升级寄存器阵列300包括条目301A-301D中的四个近存储器地址。以其中阵列300部分是满的操作的状态来描绘升级寄存器阵列300。例如,两个条目301A、301B可用,并且两个条目301C、301D被占用,如由占用位306的值和对应的视觉表示307所指示的。在一个实施例中,寄存器阵列300执行根据图5A中所示的内容的方法的实施例。
图4是根据实施例的用于将从近存储器到远存储器的数据写进行分级的寄存器阵列的表示。如上面所讨论的,在一个实施例中,当升级寄存器阵列是满的时,重映射逻辑触发中断。作为响应,OS要通过新的可用近存储器地址来更新升级寄存器阵列。在不存在可用的近存储器地址的事件中,OS可以选择近存储器中的页以移动到远存储器,并相应地释放用于升级寄存器阵列的近存储器地址。在一个实施例中,***可以采用降级寄存器阵列来辅助从近存储器到远存储器的数据的转移。
图4的寄存器阵列400是降级寄存器阵列的示例。降级寄存器阵列400是上面讨论的图1的降级寄存器阵列109的实施例的示例。在一个实施例中,降级寄存器阵列400包括近存储器地址字段402和远存储器地址字段404。在一个实施例中,近存储器地址字段402用于保存要从其中复制数据的近存储器308中的地址。远存储器地址字段404用于保存要将数据复制到的远存储器310中的地址。因此,在一个实施例中,降级寄存器阵列400的条目401A-401D指示哪些页要从近存储器被复制,以及页要被复制到的远存储器中的位置。
在一个实施例中,响应于中断请求,DMA引擎(例如图1的DMA引擎111)要将由近存储器地址字段402指向的数据写到存储在远存储器地址字段404中的远存储器地址。在其它实施例中,OS和/或重映射逻辑可以通过使用到存储器的常规读和写命令而不是采用DMA引擎来转移数据。在一个实施例中,降级寄存器阵列400包括完成位406。“完成位”是用于指示由对应的近存储器地址字段指向的数据是否已被复制的至少一个位。因此,“完成位”也可以被称为“未完成位”以代表相反的状态。尽管使用术语“位”,但是降级寄存器阵列400的每个条目可以具有多于单个位来代表对应的存储器转移是否已经完成、和/或以传达关于所述条目的其它状态信息。类似于图3,在一个实施例中,可以使降级寄存器阵列400的条目经由物理存储器地址可访问。例如,降级寄存器阵列400可以被指配物理存储器地址,并且因此经由存储器读和写命令可访问。下面将根据图5A中所示出的方法来进一步详细讨论图4。
图5A是管理多级存储器的过程的实施例的流程图,包括在近存储器和远存储器之间重映射数据。如上面所描述的,多级存储器管理电路可以包括寄存器阵列,其用于存储近存储器地址和被映射到近存储器地址的远存储器地址。多级存储器管理电路还可以包括重映射逻辑,其用于响应于对远存储器中的数据的请求而重映射地址。重映射逻辑在其一检测到对远存储器的请求是就可以执行重映射,并且因此可以利用突发使用模式来改进***性能,而不要求过大的标签阵列。多级存储器管理电路的示例被包括在图1(多级存储器管理电路103)和图2(多级存储器管理电路211)中。寄存器阵列的示例被包括在图3(升级寄存器阵列300)中。
过程550的操作可以由多级存储器管理电路来执行。在一个实施例中,重映射逻辑检测对远存储器中的数据的请求,551。例如,处理器(例如,图1的处理器110)可以请求位于远存储器中的页,并且重映射逻辑可以检测或接收请求。响应于所述请求,重映射逻辑可以确定所请求数据的远存储器地址是否在寄存器阵列中,552。例如,参考图3,重映射逻辑可以检查每个条目301A-301D的远存储器地址字段302以查看条目301A-301D是否包括所请求数据的远存储器地址。如果远存储器地址在寄存器阵列中(554“是”分支),则重映射逻辑从对应于寄存器阵列中的远存储器地址的近存储器地址请求数据,556。例如,再次参考图3,如果条目301C中的远存储器地址匹配所请求数据的远存储器地址(即,如果存在“命中”),则重映射逻辑可以将请求重新路由到存储在条目301C的近存储器地址字段304中的对应近存储器地址。
如果远存储器地址不在寄存器阵列中(554“否”分支),则重映射逻辑确定阵列中是否存在可用的近存储器地址,555。例如,参考图3,如果重映射逻辑检查寄存器阵列300的占用条目301C、301D并确定存储在条目301C、301D的远存储器地址字段302中的远存储器地址与所请求数据的远存储器地址不匹配(即,如果不存在“命中’’),则重映射逻辑可以继续寻找可用的近存储器地址。在一个实施例中,确定是否存在可用的近存储器地址涉及确定是否存在具有清除的占用位的条目。在图3中所示的示例中,根据实施例,重映射逻辑会通过读条目301A、301B的占用位306来确定存在可用的近存储器地址。然而,如果寄存器阵列中不存在可用的近存储器地址(557“否”分支),则重映射逻辑发送中断请求以使OS(或另一逻辑或处理器执行的指令)通过可用条目来更新寄存器阵列,566。
再次返回到阵列中存在可用近存储器地址的情形(557“是”分支),重映射逻辑从寄存器阵列中选择可用的近存储器地址,558。在其中寄存器阵列的条目包括占用位的一个实施例中,选择可用的近存储器地址基于对应的占用位的值。例如,重映射逻辑选择其中占用位等于‘0’(指示条目可用)的条目。在图3中所示的示例中,重映射逻辑可以选择条目301A或条目301B。
在一个实施例中,在选择近存储器地址之后,重映射逻辑发起从远存储器地址到所选近存储器地址的数据的写,562。发起从远存储器的数据的写可包括生成对远存储器地址的读命令以读数据,并生成对近存储器地址的写命令以写数据。在另一实施例中,重映射逻辑经由DMA引擎来触发数据的写。
在一个实施例中,重映射逻辑将远存储器地址写在对应于所选近存储器地址的寄存器阵列的条目中,564。例如,参考图3,如果选择条目301A,则重映射逻辑可以将远存储器地址存储在条目301A的远存储器地址字段302中。
在一个实施例中,重映射逻辑修改对应的占用位以指示所选近存储器地址不可用,567。在其中占用位指示不可用性的实施例中,所述位可被设置成“1”,例如,以指示近存储器地址不可用。然而,在其中寄存器阵列包括“可用位”而不是“占用位”的另一实施例中,重映射逻辑可以将可用位清除成“0”以指示可用性。如上面所提到的,其它实施例可以采用具有多于一个位的字段来指示状态。因此,重映射逻辑可以通过将数据从远存储器复制到近存储器来响应对远存储器的检测到的访问,并且更新寄存器阵列以留意重映射,直到OS可以更新页表为止。
如上面所提到的,根据实施例,当来自远存储器的页被复制到近存储器时,寄存器阵列中的所有近存储器地址将被消耗。然后,OS可以通过可用的近存储器地址来更新寄存器阵列。图5B是用于通过可用近存储器地址来更新寄存器阵列的过程的实施例的流程图。在一个实施例中,过程570的操作由OS(例如,经由中断处置器)、固件、驱动器、或其它***软件所执行。尽管以下描述有时具体地指OS,但是其它实施例可以采用其它***软件来执行所描述的操作。在一个此类实施例中,当重映射逻辑响应于确定寄存器阵列是满的而发送中断请求时,过程570开始。例如,参考图5A,重映射逻辑向处理器发送中断请求来触发OS,以通过可用条目来更新寄存器阵列,566。再次参考图5B,OS检测到中断请求,其指示在寄存器阵列中不存在可用条目,572。在一个实施例中,响应于中断请求,OS基于寄存器阵列的占用条目来更新页表,574。
页表是用于将页的物理地址映射到虚拟地址的数据结构。存储器可以被组织为页,所述页是由页表中的条目所引用的存储器的块。在一个此类实施例中,OS负责通过管理页表来定义映射。一些实施例还包括转换后备缓冲器(TLB),其用于将虚拟页地址转换为物理页地址。TLB是用于虚拟地址转换的专门缓存。当接收到对虚拟地址的请求时,硬件可以首先尝试使用TLB将地址转换为物理地址。如果虚拟地址不在TLB中,则可以使用页表来转换地址。因此,在一个实施例中,当重映射逻辑(例如图1的重映射逻辑105)使页从一个物理地址移动到另一物理地址时,***更新TLB和页表以将给定的虚拟地址映射到新的物理地址。在一个此类实施例中,OS负责更新页表。硬件机制(例如,存储器控制器或其它存储器管理硬件)可以在***操作并且遭遇TLB未命中时更新TLB。相应地,在一个此类实施例中,重映射逻辑提供与虚拟到物理地址映射分离的映射的附加层。当重映射逻辑确定升级寄存器阵列是满的时,重映射逻辑可以触发中断以使OS更新页表。
在一个实施例中,OS通过基于寄存器阵列中的信息将页表中的远存储器地址替换为远存储器地址被映射到的近存储器地址来更新页表。类似地,如果多级管理电路或OS使页从近存储器移动到远存储器,则OS可以通过远存储器地址来替换页表中的近存储器地址。
一旦OS更新页表,则OS可以用新的未分配页的地址来填充寄存器阵列。为了填充寄存器阵列,OS识别近存储器中的可用页,576。识别可用页可涉及识别未分配或以其它方式可用的页。在一个实施例中,OS维持“重映射区域”的记录,其是近存储器中的未分配页的列表。在一个此类实施例中,选择近存储器中的可用页涉及从由OS所维持的列表中选择页。识别可用页还可以(或者备选地)涉及使页可用。例如,如果未分配的页没有剩余,则OS可以通过将页移出近存储器(例如,到远存储器或其它存储装置)来使页可用。在一个此类实施例中,OS可以选择页以用于降级到远存储器以使新页可用。
在其中OS从近存储器中选择页以用于降级的一个实施例中,OS将位于近存储器地址的数据复制到远存储器。在一个实施例中,OS或硬件(例如,重映射逻辑)发起将位于所选近存储器页的地址的数据复制到远存储器中的地址。复制数据可以由软件或硬件来执行,并且可以在选择近存储器中的页时被立即执行,或者可被排队以用于稍后执行。例如,在一个实施例中,OS可以保存哪些页要从近存储器转移到远存储器的记录。此类记录可被保存在寄存器阵列(例如图4的降级寄存器阵列400)中。例如,参考图4,OS可以将近存储器中的页(所述页已被选择以用于降级到远存储器)的地址写到给定条目的近存储器地址字段402。OS可以进一步将可用远存储器地址的地址写到对应于要被降级的近存储器中的页的远存储器地址字段404。然后,OS或重映射逻辑可以触发DMA引擎,以将数据从降级寄存器阵列中指示的近存储器地址复制到对应的远存储器地址。
在一个实施例中,OS将近存储器中的可用页的地址写到寄存器阵列,578。新选择的可用页可以具有与寄存器阵列中的近存储器地址的先前子集不同的地址。因此,在一个此类实施例中,OS可以被说成通过可用近存储器地址的不同或新子集来更新寄存器阵列。在一个实施例中,OS修改对应于可用近存储器地址的占用位以指示可用性,580。
因此,在一个实施例中,在检测到中断请求时,OS可以通过可用的近存储器地址来更新寄存器阵列,这可以使能重映射逻辑继续在近存储器和远存储器之间重映射数据。
图6是其中可实现多级存储器管理的计算***的实施例的框图。***600表示根据本文描述的任何实施例的计算装置,并且可以是膝上型计算机、桌上型计算机、服务器、游戏或娱乐控制***、扫描器、复印机、打印机、路由或交换装置、或其它电子装置。***600包括处理器620,其提供***600的指令的执行、处理、和操作管理。处理器620可包括任何类型的微处理器、中央处理单元(CPU)、处理核、或其它处理硬件以提供***600的处理。处理器620控制***600的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑装置(PLD)、或诸如此类、或此类装置的组合。
存储器子***630表示***600的主存储器,并且提供要由处理器620所执行的代码或者在执行例程中要使用的数据值的暂时存储装置。存储器子***630可包括一个或多个存储器装置,诸如只读存储器(ROM)、闪速存储器、一种或多种随机存取存储器(RAM)、或其它存储器装置、或此类装置的组合。存储器子***630除了其它事项外还存储和托管操作***(OS)636,以提供软件平台以便在***600中执行指令。此外,从存储器子***630存储和执行其它指令638以提供***600的逻辑和处理。OS 636和指令638由处理器620所执行。存储器子***630包括存储器装置632,存储器子***630在存储器装置632中存储数据、指令、程序或其它项。在一个实施例中,存储器子***包括存储器控制器634,其是用于生成命令并向存储器装置632发出命令的存储器控制器。将理解到,存储器控制器634可能是处理器620的物理部分。
在一个实施例中,***600还包括与处理器620和存储器子***630耦合的多级存储器管理电路621。多级存储器管理电路621可以根据本文描述的任何实施例在近存储器和远存储器之间执行重映射。例如,多级存储器管理电路621可以与图1的多级存储器管理电路103相同或类似。
处理器620和存储器子***630被耦合到总线/总线***610。总线610是表示通过适当桥接器、适配器和/或控制器而被连接的任何一个或多个单独物理总线、通信线/接口、和/或点对点连接的抽象。因此,总线610例如可包括以下一项或多项:***总线、外设组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小计算机***接口(SCSI)总线、通用串行总线(USB)、或电气与电子工程师协会(IEEE)标准1394总线(通常称为“火线”)。总线610中的总线也可对应于网络接口650中的接口。
***600还包括耦合到总线610的一个或多个输入/输出(I/O)接口640、网络接口650、一个或多个内部海量存储装置660以及外设接口670。I/O接口640可包括一个或多个接口组件,用户通过其与***600进行交互(例如视频、音频和/或字母数字式对接)。网络接口650向***600提供通过一个或多个网络与远程装置(例如服务器、其它计算装置)通信的能力。网络接口650可包括以太网适配器、无线互连组件、USB(通用串行总线)或其它基于有线或无线标准的接口或专有接口。
直接存储器访问(DMA)引擎623包括用于在存储器632中的不同位置之间和/或在存储器632和存储装置660之间执行数据的转移的逻辑和/或寄存器。根据一个实施例,处理器620发起DMA转移,并且然后能够在DMA引擎623执行转移时执行其它操作。
存储装置660可以是或包括用于以非易失性方式存储大量数据的任何常规介质,诸如一个或多个基于磁、固态或光的盘或组合。存储装置660以永久状态保存代码或指令和数据662(即,保留值而不管对***600中断功率)。存储装置660通常可被认为是“存储器”,尽管存储器630是用于向处理器620提供指令的执行或操作存储器。鉴于存储装置660是非易失性的,存储器630可包括易失性存储器(即,如果对***600中断功率,则数据的值或状态是不确定的)。
外设接口670可包括上面未具体提到的任何硬件接口。外设一般指被相关地连接到***600的装置。相关连接是其中***600提供在其上执行操作并且用户与其进行交互的软件和/或硬件平台的连接。
图7是其中可实现多级存储器管理电路的移动装置的实施例的框图。装置700表示移动计算装置,诸如计算平板、移动电话或智能电话、无线使能的e-阅读器、可穿戴计算装置或其它移动装置。将理解到,一般示出了某些组件,并且在装置700中并未示出此类装置的所有组件。
装置700包括处理器710,其执行装置700的主要处理操作。处理器710可包括一个或多个物理装置,诸如微处理器、应用处理器、微控制器、可编程逻辑装置或其它处理部件。由处理器710所执行的处理操作包括操作平台或操作***(在其上执行应用和/或装置功能)的执行。处理操作包括涉及与人类用户或与其它装置的I/O(输入/输出)的操作、涉及功率管理的操作、和/或涉及将装置700连接到另一装置的操作。处理操作还可包括涉及音频I/O和/或显示I/O的操作。
在一个实施例中,装置700包括音频子***720,其表示与向计算装置提供音频功能相关联的硬件(例如音频硬件和音频电路)和软件(例如驱动器、编解码器)组件。音频功能可包括扬声器和/或耳机输出,以及麦克风输入。用于此类功能的装置可被集成到装置700中,或被连接到装置700。在一个实施例中,用户通过提供由处理器710所接收和处理的音频命令与装置700进行交互。
显示子***730表示为用户提供视觉和/或触觉显示以与计算装置进行交互的硬件(例如显示装置)和软件(例如驱动器)。显示子***730包括显示接口732,其包括用于向用户提供显示的具体屏幕或硬件装置。在一个实施例中,显示接口732包括与处理器710分离的逻辑,其用于执行与显示相关的至少某一处理。在一个实施例中,显示子***730包括向用户提供输出和输入两者的触摸屏装置。在一个实施例中,显示子***730包括向用户提供输出的高清(HD)显示器。高清可指具有大约100每英寸像素(PPI)或更大的像素密度的显示并且可以包括诸如全HD(例如,1080P)、视网膜显示、4K(超高清或UHD)、或其它格式的格式。
I/O控制器740表示涉及与用户进行交互的硬件装置和软件组件。I/O控制器740可操作以管理作为音频子***720和/或显示子***730的一部分的硬件。此外,I/O控制器740示出了连接到装置700的附加装置的连接点,用户通过所述附加装置可能与***进行交互。例如,可被附连到装置700的装置可包括麦克风装置、扬声器或立体声***、视频***或其它显示装置、键盘或小键盘装置、或供特定应用使用的其它I/O装置(诸如读卡器或其它装置)。
如上面所提到的,I/O控制器740可与音频子***720和/或显示子***730进行交互。例如,通过麦克风或其它音频装置的输入可为装置700的一个或多个应用或功能提供输入或命令。此外,代替显示输出或除了显示输出外,还可提供音频输出。在另一示例中,如果显示子***包括触摸屏,则显示装置还充当输入装置,其可至少部分由I/O控制器740来管理。可能在装置700上还存在附加按钮或开关以提供由I/O控制器740所管理的I/O功能。
在一个实施例中,I/O控制器740管理诸如加速计、摄像机、光传感器或其它环境传感器、陀螺仪、全球定位***(GPS)、或可被包括在装置700中的其它硬件的装置。输入可以作为直接用户交互的一部分,以及向***提供环境输入以影响其操作(诸如针对噪声进行过滤、针对亮度检测来调整显示器、针对摄像机来应用闪光灯、或其它特征)。在一个实施例中,装置700包括功率管理750,其管理电池功率使用、电池的充电、以及与功率节省操作相关的特征。
存储器子***760包括用于将信息存储在装置700中的一个或多个存储器装置762。存储器子***760可包括非易失性(在对存储器装置中断功率时状态不改变)和/或易失性(在对存储器装置中断功率时状态不确定)存储器装置。存储器装置762可存储应用数据、用户数据、音乐、照片、文档或其它数据,以及与装置700的应用和功能的执行相关的***数据(不管是长期的还是暂时的)。在一个实施例中,存储器子***760包括存储器控制器764(其也可被视为装置700的控制的一部分,并且可潜在地被视为处理器710的一部分)。存储器控制器764包括调度器,其用于生成命令并向存储器装置762发出命令。在一个实施例中,装置700进一步包括与处理器710和存储器子***760耦合的多级存储器管理电路763。多级存储器管理电路763可以根据本文中描述的任何实施例在近存储器和远存储器之间执行重映射。例如,多级存储器管理电路763可以与图1的多级存储器管理电路103相同或类似。
连接性770包括硬件装置(例如无线和/或有线连接器和通信硬件)和软件组件(例如驱动器、协议栈),其用于使能装置700与外部装置进行通信。外部装置可以是单独装置,诸如其它计算装置、无线接入点或基站、以及诸如耳机、打印机或其它装置的外设。
连接性770可包括多个不同类型的连接性。概括地说,装置700被示出具有蜂窝连接性772和无线连接性774。蜂窝连接性772一般指由无线载波所提供的蜂窝网络连接性,诸如经由GSM(全球移动通信***)或变形或衍生物、CDMA(码分多址)或变形或衍生物、TDM(时分复用)或变形或衍生物、LTE(长期演进-也称为“4G”)或其它蜂窝服务标准所提供的连接性。无线连接性774指非蜂窝的无线连接性,并且可包括个域网(诸如蓝牙)、局域网(诸如WiFi)、和/或广域网(诸如WiMax)、或其它无线通信。无线通信指通过非固态介质通过使用调制的电磁辐射来转移数据。有线通信通过固态通信介质而发生。
外设连接780包括硬件接口和连接器、以及软件组件(例如驱动器、协议栈)以进行外设连接。将理解到,装置700可能是到其它计算装置的外设装置(“到”782),以及具有连接到它的外设装置(“从”784)。装置700通常具有“对接(docking)”连接器以连接到其它计算装置,为了诸如管理(例如下载和/或上载、改变、同步)装置700上内容的目的。此外,对接连接器可允许装置700连接到某些外设,这些外设允许装置700控制例如到视听***或其它***的内容输出。
除了专有对接连接器或其它专有连接硬件外,装置700可经由公共连接器或基于标准的连接器进行外设连接780。公共类型可包括通用串行总线(USB)连接器(其可包括多个不同硬件接口中的任一个)、包括MiniDisplayPort(MDP)的DisplayPort、高清多媒体接口(HDMI)、火线、或其它类型。
装置700可以由电池、无线充电、可再生能源(例如,太阳能)来提供功率,或者在连接到墙上插座时被提供功率。
在一个实施例中,一种多级存储器管理电路,其包括寄存器阵列,所述寄存器阵列用于存储近存储器的近存储器地址和映射到所述近存储器地址的远存储器地址。所述寄存器阵列中的条目的数量小于所述近存储器中的页的数量。所述多级存储器管理电路包括重映射逻辑,所述重映射逻辑用于检测对位于远存储器中的数据的请求。所述重映射逻辑用于进一步确定所请求数据的远存储器地址从所述寄存器阵列中缺失,并从所述寄存器阵列中选择可用近存储器地址。所述重映射逻辑用于进一步发起从所述远存储器地址到所选择的近存储器地址的所述数据的写。所述重映射逻辑用于进一步将所述远存储器地址写到对应于所选择的近存储器地址的所述寄存器阵列的条目。
在一个实施例中,所述寄存器阵列的给定条目包括占用位,并且所述重映射逻辑用于基于对应的占用位的值来选择所述可用近存储器地址。
在一个实施例中,响应于所述可用近存储器地址的选择,所述重映射逻辑用于进一步修改所述对应的占用位以指示所选择的近存储器地址不可用。
在一个实施例中,所述重映射逻辑用于响应于确定所述寄存器阵列中没有近存储器地址可用,而触发中断请求以通过可用近存储器地址来更新所述寄存器阵列。
在一个实施例中,所更新的寄存器阵列用于包括可用近存储器地址的不同子集。
在一个实施例中,所述多级存储器管理电路进一步包括第二寄存器阵列,所述第二寄存器阵列用于将被选择以用于降级的近存储器地址存储到可用远存储器地址。响应于所述中断请求,直接存储器访问(DMA)引擎用于将由被选择以用于降级的所述近存储器地址所指向的页写到存储在所述第二寄存器阵列中的所述可用远存储器地址。
在一个实施例中,所述寄存器阵列的条目经由物理存储器地址可访问。
在一个实施例中,响应于确定所述请求的所述远存储器地址在所述寄存器阵列中,所述重映射逻辑用于请求位于对应的近存储器地址的所述数据。
在一个实施例中,一种要与存储器装置耦合的***,所述***包括:处理器,所述处理器用于请求位于远存储器中的数据;以及寄存器阵列,所述寄存器阵列用于存储近存储器的近存储器地址和映射到所述近存储器地址的远存储器地址。所述寄存器阵列中的条目的数量小于所述近存储器中的页的数量。所述***进一步包括与所述处理器耦合的重映射逻辑。所述重映射逻辑用于确定所请求数据的远存储器地址从所述寄存器阵列中缺失,并从所述寄存器阵列中选择可用近存储器地址。所述重映射逻辑用于发起在所述远存储器地址到所选择的近存储器地址的所请求数据的写,以及将所述远存储器地址写到对应于所选择的近存储器地址的所述寄存器阵列的条目。
在一个实施例中,所述寄存器阵列的给定条目包括占用位,并且所述重映射逻辑用于基于对应的占用位的值来选择所述可用近存储器地址。
在一个实施例中,响应于所述可用近存储器地址的选择,所述重映射逻辑用于进一步修改所述对应的占用位以指示所选择的近存储器地址不可用。
在一个实施例中,响应于确定所述寄存器阵列中没有近存储器地址可用,所述重映射逻辑用于进一步将中断请求发送到所述处理器以通过可用近存储器地址来更新所述寄存器阵列。在一个实施例中,所更新的寄存器阵列用于包括可用近存储器地址的不同子集。
在一个实施例中,所述***进一步包括第二寄存器阵列,所述第二寄存器阵列用于将被选择以用于降级的近存储器地址存储到可用远存储器地址。响应于所述中断请求,直接存储器访问(DMA)引擎用于将由被选择以用于降级的所述近存储器地址所指向的页写到存储在所述第二寄存器阵列中的所述可用远存储器地址。
在一个实施例中,所述寄存器阵列的条目经由物理存储器地址可访问。
在一个实施例中,响应于确定所述请求的所述远存储器地址在所述寄存器阵列中,所述重映射逻辑用于请求位于对应的近存储器地址的所述数据。
在一个实施例中,所述***进一步包括以下项中的任何一项:通信地耦合到所述处理器的显示器、通信地耦合到所述处理器的网络接口、或被耦合以向所述***提供功率的电池。
在一个实施例中,一种管理具有多级存储器的***的方法涉及检测对远存储器中的数据的请求。所述方法进一步涉及确定所请求数据的远存储器地址是否在寄存器阵列中。所述寄存器阵列用于存储近存储器的近存储器地址和映射到所述近存储器地址的远存储器地址。所述寄存器阵列中的条目的数量小于所述近存储器中的页的数量。所述方法进一步涉及从所述寄存器阵列中选择可用近存储器地址,以及发起从所述远存储器地址到所选择的近存储器地址的所述数据的写。所述方法进一步涉及将所述远存储器地址写到对应于所选择的近存储器地址的所述寄存器阵列的条目。
在一个实施例中,所述寄存器阵列的给定条目包括占用位,并且基于对应的占用位的值来选择所述可用近存储器地址。
在一个实施例中,所述方法进一步涉及响应于所述可用近存储器地址的选择,而修改所述对应的占用位以指示所选择的近存储器地址不可用。
在一个实施例中,所述方法进一步涉及响应于确定所述寄存器阵列中没有近存储器地址可用,而触发中断请求以通过可用近存储器地址来更新所述寄存器阵列。
本文中所示出的流程图提供了各种过程动作的序列的示例。流程图可指示要由软件或固件例程所执行的操作以及物理操作。在一个实施例中,流程图可示出有限状态机(FSM)的状态,其可用硬件和/或软件来实现。尽管按具体序列或顺序所示出,但是除非以其它方式规定,否则可以修改动作的顺序。从而,所示出的实施例应仅作为示例来理解,并且过程可按不同顺序来执行,并且一些动作可被并行执行。此外,在各种实施例中可省略一个或多个动作;因此,并不是在每一个实施例中都要求所有动作。其它过程流程是可能的。
某种程度上,本文中描述了各种操作或功能,它们可被描述或者定义为软件代码、指令、配置、和/或数据。内容可以是直接可执行的(“对象”或“可执行”形式)源代码或差异代码(“德尔塔”或“补丁”代码)。本文中描述的实施例的软件内容可经由制品(具有存储在其上的内容)或经由操作通信接口以经由通信接口来发送数据的方法所提供。机器可读存储介质可使机器执行所描述的功能或操作,并且包括以由机器(例如计算装置、电子***等)可访问的形式存储信息的任何机制,诸如可记录/不可记录介质(例如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储器装置等)。通信接口包括与任何硬连线、无线、光等介质进行接口以与另一装置(诸如存储器总线接口、处理器总线接口、因特网连接、盘控制器等)进行通信的任何机制。通信接口可通过提供配置参数和/或发送信号来配置成使通信接口准备好提供描述软件内容的数据信号。通信接口可经由发送到通信接口的一个或多个命令或信号所访问。
本文中描述的各种组件可以是用于执行所描述的操作或功能的部件。本文中描述的每个组件包括软件、硬件、或这些的组合。组件可被实现为软件模块、硬件模块、专用硬件(例如专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。
除了本文中所描述的内容,在不脱离本发明的所公开实施例和实现的范畴的情况下,可对本发明的所公开实施例和实现进行各种修改。因此,本文中的说明和示例应当以说明性而非约束性意义来直译。本发明的范畴应仅通过参考随附权利要求来衡量。
Claims (21)
1. 一种多级存储器管理电路,包括:
寄存器阵列,所述寄存器阵列用于存储近存储器的近存储器地址和映射到所述近存储器地址的远存储器地址,其中所述寄存器阵列中的条目的数量小于所述近存储器中的页的数量;以及
重映射逻辑,所述重映射逻辑用于:
检测对位于远存储器中的数据的请求;
确定所请求数据的远存储器地址从所述寄存器阵列中缺失;
从所述寄存器阵列中选择可用近存储器地址;
发起从所述远存储器地址到所选择的近存储器地址的所述数据的写;以及
将所述远存储器地址写到对应于所选择的近存储器地址的所述寄存器阵列的条目。
2. 如权利要求1所述的多级存储器管理电路,其中:
所述寄存器阵列的给定条目包括占用位;以及
其中所述重映射逻辑用于基于对应的占用位的值来选择所述可用近存储器地址。
3.如权利要求2所述的多级存储器管理电路,其中:
响应于所述可用近存储器地址的选择,所述重映射逻辑用于进一步修改所述对应的占用位以指示所选择的近存储器地址不可用。
4.如权利要求2所述的多级存储器管理电路,其中所述重映射逻辑用于进一步:
响应于确定所述寄存器阵列中没有近存储器地址可用,而触发中断请求以通过可用近存储器地址来更新所述寄存器阵列。
5.如权利要求4所述的多级存储器管理电路,其中:
所更新的寄存器阵列用于包括可用近存储器地址的不同子集。
6. 如权利要求4所述的多级存储器管理电路,进一步包括:
第二寄存器阵列,所述第二寄存器阵列用于将被选择以用于降级的近存储器地址存储到可用远存储器地址;以及
其中,响应于所述中断请求,直接存储器访问(DMA)引擎用于将由被选择以用于降级的所述近存储器地址所指向的页写到存储在所述第二寄存器阵列中的所述可用远存储器地址。
7.如权利要求1所述的多级存储器管理电路,其中所述寄存器阵列的条目经由物理存储器地址可访问。
8.如权利要求1所述的多级存储器管理电路,其中响应于确定所述请求的所述远存储器地址在所述寄存器阵列中,所述重映射逻辑用于请求位于对应的近存储器地址的所述数据。
9.一种要与存储器装置耦合的***,所述***包括:
处理器,所述处理器用于请求位于远存储器中的数据;
寄存器阵列,所述寄存器阵列用于存储近存储器的近存储器地址和映射到所述近存储器地址的远存储器地址,其中所述寄存器阵列中的条目的数量小于所述近存储器中的页的数量;
与所述处理器耦合的重映射逻辑,所述重映射逻辑用于:
确定所请求数据的远存储器地址从所述寄存器阵列中缺失;
从所述寄存器阵列中选择可用近存储器地址;
发起在所述远存储器地址到所选择的近存储器地址的所请求数据的写;以及
将所述远存储器地址写到对应于所选择的近存储器地址的所述寄存器阵列的条目。
10. 如权利要求9所述的***,其中:
所述寄存器阵列的给定条目包括占用位;以及
所述重映射逻辑用于基于对应的占用位的值来选择所述可用近存储器地址。
11.如权利要求10所述的***,其中响应于所述可用近存储器地址的选择:
所述重映射逻辑用于进一步修改所述对应的占用位以指示所选择的近存储器地址不可用。
12.如权利要求11所述的***,其中:
响应于确定所述寄存器阵列中没有近存储器地址可用,所述重映射逻辑用于进一步将中断请求发送到所述处理器以通过可用近存储器地址来更新所述寄存器阵列。
13.如权利要求12所述的***,其中:
所更新的寄存器阵列用于包括可用近存储器地址的不同子集。
14. 如权利要求12所述的***,进一步包括:
第二寄存器阵列,所述第二寄存器阵列用于将被选择以用于降级的近存储器地址存储到可用远存储器地址;以及
其中,响应于所述中断请求,直接存储器访问(DMA)引擎用于将由被选择以用于降级的所述近存储器地址所指向的页写到存储在所述第二寄存器阵列中的所述可用远存储器地址。
15.如权利要求9所述的***,其中所述寄存器阵列的条目经由物理存储器地址可访问。
16.如权利要求9所述的***,其中响应于确定所述请求的所述远存储器地址在所述寄存器阵列中,所述重映射逻辑用于请求位于对应的近存储器地址的所述数据。
17.如权利要求9所述的***,进一步包括以下项中的任何一项:通信地耦合到所述处理器的显示器;通信地耦合到所述处理器的网络接口;或被耦合以向所述***提供功率的电池。
18.一种管理具有多级存储器的***的方法,所述方法包括:
检测对远存储器中的数据的请求;
确定所请求数据的远存储器地址是否在寄存器阵列中,其中所述寄存器阵列用于存储近存储器的近存储器地址和映射到所述近存储器地址的远存储器地址,其中所述寄存器阵列中的条目的数量小于所述近存储器中的页的数量;
从所述寄存器阵列中选择可用近存储器地址;
发起从所述远存储器地址到所选择的近存储器地址的所述数据的写;以及
将所述远存储器地址写到对应于所选择的近存储器地址的所述寄存器阵列的条目。
19. 如权利要求18所述的方法,其中:
所述寄存器阵列的给定条目包括占用位;以及
其中基于对应的占用位的值来选择所述可用近存储器地址。
20.如权利要求19所述的方法,进一步包括:响应于所述可用近存储器地址的选择,而修改所述对应的占用位以指示所选择的近存储器地址不可用。
21.如权利要求19所述的方法,进一步包括:
响应于确定所述寄存器阵列中没有近存储器地址可用,而触发中断请求以通过可用近存储器地址来更新所述寄存器阵列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/077,424 | 2016-03-22 | ||
US15/077,424 US9583182B1 (en) | 2016-03-22 | 2016-03-22 | Multi-level memory management |
PCT/US2017/018719 WO2017165042A1 (en) | 2016-03-22 | 2017-02-21 | Multi-level memory management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108780423A true CN108780423A (zh) | 2018-11-09 |
CN108780423B CN108780423B (zh) | 2023-06-02 |
Family
ID=58056591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780019383.9A Active CN108780423B (zh) | 2016-03-22 | 2017-02-21 | 多级存储器管理电路、管理方法和管理设备 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9583182B1 (zh) |
CN (1) | CN108780423B (zh) |
DE (1) | DE112017001471T5 (zh) |
TW (1) | TWI735529B (zh) |
WO (1) | WO2017165042A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111506521A (zh) * | 2019-01-31 | 2020-08-07 | 华为技术有限公司 | 一种存储器、数据请求写入方法及控制器 |
CN111506515A (zh) * | 2019-01-31 | 2020-08-07 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
CN112949235A (zh) * | 2021-04-16 | 2021-06-11 | 山东高云半导体科技有限公司 | 电子设备的配置方法、装置、处理器及存储介质 |
CN113704142A (zh) * | 2021-09-02 | 2021-11-26 | 海飞科(南京)信息技术有限公司 | 片上存储的地址重映射电路 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017049594A1 (en) | 2015-09-25 | 2017-03-30 | Intel Corporation | Efficient memory activation at runtime |
US9583182B1 (en) * | 2016-03-22 | 2017-02-28 | Intel Corporation | Multi-level memory management |
US10901894B2 (en) * | 2017-03-10 | 2021-01-26 | Oracle International Corporation | Allocating and accessing memory pages with near and far memory blocks from heterogeneous memories |
US11188467B2 (en) | 2017-09-28 | 2021-11-30 | Intel Corporation | Multi-level system memory with near memory capable of storing compressed cache lines |
CN107911228B (zh) * | 2017-10-09 | 2023-02-03 | 西安交大捷普网络科技有限公司 | 一种多级设备***的管理方法 |
US10860244B2 (en) | 2017-12-26 | 2020-12-08 | Intel Corporation | Method and apparatus for multi-level memory early page demotion |
CN110858127B (zh) | 2018-08-22 | 2023-09-12 | 慧荣科技股份有限公司 | 数据存储装置 |
TWI684130B (zh) * | 2018-08-22 | 2020-02-01 | 慧榮科技股份有限公司 | 資料儲存裝置 |
TWI670599B (zh) * | 2018-08-28 | 2019-09-01 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法以及儲存控制器 |
US11526448B2 (en) | 2019-09-27 | 2022-12-13 | Intel Corporation | Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning |
US11348637B2 (en) | 2020-08-31 | 2022-05-31 | Micron Technology, Inc. | Electrical distance-based remapping in a memory device |
US20230170037A1 (en) * | 2021-11-30 | 2023-06-01 | Qualcomm Incorporated | Hybrid memory system with increased bandwidth |
US20230185745A1 (en) * | 2021-12-13 | 2023-06-15 | Cryptography Research, Inc. | Data flow control module for autonomous flow control of multiple dma engines |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0489556A2 (en) * | 1990-11-30 | 1992-06-10 | Xerox Corporation | Consistency protocols for shared memory multiprocessors |
CN1573722A (zh) * | 2003-05-24 | 2005-02-02 | 三星电子株式会社 | 总线仲裁器和总线仲裁方法 |
CN101216805A (zh) * | 2007-01-07 | 2008-07-09 | 国际商业机器公司 | 用于在处理器存储装置内的数据移动的方法和*** |
US20150006805A1 (en) * | 2013-06-28 | 2015-01-01 | Dannie G. Feekes | Hybrid multi-level memory architecture |
US20150379678A1 (en) * | 2014-06-25 | 2015-12-31 | Doa'a M. Al-otoom | Techniques to Compose Memory Resources Across Devices and Reduce Transitional Latency |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6208542B1 (en) * | 1998-06-30 | 2001-03-27 | Sandisk Corporation | Techniques for storing digital data in an analog or multilevel memory |
US6339813B1 (en) * | 2000-01-07 | 2002-01-15 | International Business Machines Corporation | Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory |
KR20090087498A (ko) * | 2006-12-06 | 2009-08-17 | 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) | 고-용량, 비-휘발성 스토리지를 위한 캐시로서의 솔리드-스테이트 스토리지 장치, 시스템 및 방법 |
US8438334B2 (en) * | 2009-12-22 | 2013-05-07 | International Business Machines Corporation | Hybrid storage subsystem with mixed placement of file contents |
US20120017039A1 (en) | 2010-07-16 | 2012-01-19 | Plx Technology, Inc. | Caching using virtual memory |
US8830716B2 (en) * | 2012-09-29 | 2014-09-09 | Intel Corporation | Intelligent far memory bandwith scaling |
US9430386B2 (en) * | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
US9032099B1 (en) | 2013-12-12 | 2015-05-12 | Intel Corporation | Writeback mechanisms for improving far memory utilization in multi-level memory architectures |
US9613704B2 (en) * | 2013-12-25 | 2017-04-04 | Aplus Flash Technology, Inc | 2D/3D NAND memory array with bit-line hierarchical structure for multi-page concurrent SLC/MLC program and program-verify |
US9583182B1 (en) * | 2016-03-22 | 2017-02-28 | Intel Corporation | Multi-level memory management |
-
2016
- 2016-03-22 US US15/077,424 patent/US9583182B1/en active Active
-
2017
- 2017-01-06 US US15/400,122 patent/US9921961B2/en not_active Expired - Fee Related
- 2017-02-07 TW TW106103939A patent/TWI735529B/zh active
- 2017-02-21 DE DE112017001471.9T patent/DE112017001471T5/de active Pending
- 2017-02-21 CN CN201780019383.9A patent/CN108780423B/zh active Active
- 2017-02-21 WO PCT/US2017/018719 patent/WO2017165042A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0489556A2 (en) * | 1990-11-30 | 1992-06-10 | Xerox Corporation | Consistency protocols for shared memory multiprocessors |
CN1573722A (zh) * | 2003-05-24 | 2005-02-02 | 三星电子株式会社 | 总线仲裁器和总线仲裁方法 |
CN101216805A (zh) * | 2007-01-07 | 2008-07-09 | 国际商业机器公司 | 用于在处理器存储装置内的数据移动的方法和*** |
US20150006805A1 (en) * | 2013-06-28 | 2015-01-01 | Dannie G. Feekes | Hybrid multi-level memory architecture |
US20150379678A1 (en) * | 2014-06-25 | 2015-12-31 | Doa'a M. Al-otoom | Techniques to Compose Memory Resources Across Devices and Reduce Transitional Latency |
Non-Patent Citations (1)
Title |
---|
肖建青等: "SPARC V8处理器中存储管理单元的设计", 《科学技术与工程》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111506521A (zh) * | 2019-01-31 | 2020-08-07 | 华为技术有限公司 | 一种存储器、数据请求写入方法及控制器 |
CN111506515A (zh) * | 2019-01-31 | 2020-08-07 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
CN111506521B (zh) * | 2019-01-31 | 2023-10-20 | 华为技术有限公司 | 一种存储器、数据请求写入方法及控制器 |
CN111506515B (zh) * | 2019-01-31 | 2023-11-03 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
US11886361B2 (en) | 2019-01-31 | 2024-01-30 | SK Hynix Inc. | Memory controller and operating method thereof |
CN112949235A (zh) * | 2021-04-16 | 2021-06-11 | 山东高云半导体科技有限公司 | 电子设备的配置方法、装置、处理器及存储介质 |
CN113704142A (zh) * | 2021-09-02 | 2021-11-26 | 海飞科(南京)信息技术有限公司 | 片上存储的地址重映射电路 |
CN113704142B (zh) * | 2021-09-02 | 2022-06-14 | 海飞科(南京)信息技术有限公司 | 片上存储的地址重映射电路 |
Also Published As
Publication number | Publication date |
---|---|
US9921961B2 (en) | 2018-03-20 |
TW201734806A (zh) | 2017-10-01 |
TWI735529B (zh) | 2021-08-11 |
US20170277633A1 (en) | 2017-09-28 |
WO2017165042A1 (en) | 2017-09-28 |
DE112017001471T5 (de) | 2018-12-06 |
CN108780423B (zh) | 2023-06-02 |
US9583182B1 (en) | 2017-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108780423A (zh) | 多级存储器管理 | |
US10636476B2 (en) | Row hammer mitigation with randomization of target row selection | |
CN107924693B (zh) | 多区块***中的可编程的片上端接定时 | |
US10482947B2 (en) | Integrated error checking and correction (ECC) in byte mode memory devices | |
US9971697B2 (en) | Nonvolatile memory module having DRAM used as cache, computing system having the same, and operating method thereof | |
TWI721003B (zh) | 記憶體裝置及用於記憶體管理的系統 | |
US20180004659A1 (en) | Cribbing cache implementing highly compressible data indication | |
US10025737B2 (en) | Interface for storage device access over memory bus | |
US8977806B1 (en) | Hybrid memory module | |
US11966286B2 (en) | Read retry to selectively disable on-die ECC | |
US10558570B2 (en) | Concurrent accesses of asymmetrical memory sources | |
US11709777B2 (en) | Memory system | |
US20160378366A1 (en) | Internal consecutive row access for long burst length | |
US11657889B2 (en) | Error correction for dynamic data in a memory that is row addressable and column addressable | |
US20180095821A1 (en) | Extended application of error checking and correction code in memory | |
US20170160987A1 (en) | Multilevel main memory indirection | |
US20220121398A1 (en) | Perfect row hammer tracking with multiple count increments | |
US20180004668A1 (en) | Searchable hot content cache | |
US11042315B2 (en) | Dynamically programmable memory test traffic router | |
US20210286727A1 (en) | Dynamic random access memory (dram) with scalable meta data |
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 |