选择性错误校正码和存储器访问粒度切换的制作方法

xiaoxiao2020-10-23  9

选择性错误校正码和存储器访问粒度切换的制作方法
【专利说明】
【背景技术】
[0001]计算机存储器易受错误侵害。为了缓解这样的存储器错误,可以采用鲁棒的存储器错误保护系统,其使得能够通过使用各种错误校正码(ECC)来检测和/或校正存储器错误。许多存储器错误保护系统由于针对存储器事务提取(例如过提取)的显著的(significant)数据而导致增加的带宽和功率开销。这样的存储器错误保护系统可以采用例如芯片删除ECC (chipkill-ECC),其使得能够检测两个存储器芯片故障并且能够校正一个存储器芯片故障。这样的存储器错误保护系统可能要求为每一个64字节存储器事务提取128字节数据,这导致一半数据的过提取以及带宽和/或功率开销的浪费。
[0002]不同应用可能偏好在计算机存储器系统中采用不同类型的访问粒度。访问粒度是指在存储器系统处的单个存储器访问操作期间访问的数据量。多线程应用可能例如偏好提供数据局部性的较少使用的较小访问粒度而顺序或单线程应用可能偏爱提供数据局部性的较高使用的较大访问粒度。在一些示例中,较大访问粒度可以被偏好用于当具有脏数据(dirty data)的高速缓存线(cache line)被逐出(evict)时由于数据可以立即从例如应用写回而具有增加的脏数据的应用。
【附图说明】
[0003]图1A描绘了依照本文所公开的教导实现的示例存储器控制器。
[0004]图1B是使用图1A的示例存储器控制器提供用于存储器系统的选择性粒度访问和选择性存储器保护的示例系统。
[0005]图2描绘了可以结合图1A和IB的示例存储器控制器使用以提供选择性访问粒度和选择性存储器错误保护的示例装置。
[0006]图3A是表示可被执行以实现图2的示例装置以确定和实现所选存储器模式的示例机器可读指令的流程图。
[0007]图3B是表示可被执行以使用不同存储器模式访问存储器的示例机器可读指令的流程图。
[0008]图4是表示可被执行以实现图2的示例装置以在不同存储器模式之间切换的示例机器可读指令的流程图。
【具体实施方式】
[0009]在存储器系统中提供强错误保护一般要求使用大访问粒度(例如针对单个存储器访问操作检索的大数据量)的宽存储器通道和因此的大高速缓存线。访问具有相对低的空间局部性的数据的一些应用在使用大访问粒度时浪费存储器功率和带宽,因为大部分所检索的数据不相关和/或不被请求操作所使用。如本文所使用的,具有低空间局部性的数据是不连续存储在物理存储器中或存储在相对接近的存储器位置内使得单个读取访问可以检索感兴趣的多个数据的数据。
[0010]本文所公开的示例系统和方法可以用于实现具有选择性粒度和选择性错误保护的存储器系统。通过基于应用行为和/或系统存储器利用来选择不同的存储器错误保护技术(例如ECC技术)和不同的访问粒度,本文所公开的示例系统和方法可以用于增加存储器系统中的系统性能、功率效率、能量效率和/或可靠性。本文所公开的系统和方法可以利用对常规硬件和操作系统的相对少的修改来实现,并且因此是可缩放的并且可以利用现有服务器和/或数据中心实现。
[0011]本文所公开的示例系统和方法使得能够在存储器系统中实现不同的存储器模式。用于选择性实现不同存储器模式的本文所公开的示例技术可以用于将较大存储器访问粒度与较强存储器错误保护技术组合并且将较小存储器访问粒度与不太强但是更高效的存储器错误保护技术组合。用于选择性地实现不同存储器模式的这样的所公开的技术相比于之前的存储器系统而言增加了存储器系统的性能和/或效率。
[0012]本文所公开的示例存储器控制器管理存储器中的数据布局、管理存储器访问的调度并且管理存储器通道集成。本文所公开的示例系统和方法提供高速缓存以便以混合访问粒度管理数据。本文所公开的示例系统和方法使得能够在每个存储器页面基础上和/或在每个应用基础上选择不同的存储器访问粒度。本文所公开的示例还使得能够管理跨物理存储器的不同区域并发地实现的多个存储器访问粒度。
[0013]提供选择性存储器错误保护和选择性存储器访问粒度的示例装置包括基于请求而确定所选存储器模式的存储器控制器。所述存储器模式指示存储器页面要存储对应类型的错误保护信息并且存储数据以用于使用对应访问粒度的检索。在一些这样的示例中,存储器控制器要在存储器页面中存储数据和错误保护信息以用于使用所述访问粒度的检索。
[0014]提供选择性存储器错误保护和存储器访问粒度的本文所公开的示例系统包括基于请求而确定所选存储器模式的存储器管理器。在一些示例中,存储器模式指示存储器页面要存储对应类型的错误保护信息并且存储数据以用于使用对应访问粒度的检索。在一些示例中,系统包括在存储器页面中存储数据和错误保护信息以用于使用对应访问粒度的检索的存储器控制器。在一些示例中,系统包括包含多个高速缓存线以基于对应访问粒度存储存储器页面的数据的部分的高速缓存。
[0015]提供选择性存储器错误保护和选择性存储器访问粒度的本文所公开的示例方法包括基于对访问存储器中的数据的请求而确定所选存储器模式。在一些示例中,存储器模式指示存储器页面要存储对应类型的错误保护信息并且使用对应访问粒度而被访问。在一些示例中,示例方法包括通过使用对应于对应访问粒度的通道数据宽度来将对应类型的错误保护信息和数据写入到存储器页面。
[0016]联合电子设备工程会议(JEDEC)双数据速率同步动态随机存取存储器(DDRxSDRAM)是在DRAM架构中广泛使用的标准。对于JEDEC标准DRAM,存储器控制器经由一个或多个存储器通道控制物理存储器。DDRx DRAM芯片一次递送特定数目的数据位,例如4、8、16等。这可以称为DRAM芯片宽度。在一些系统中,每一个存储器通道提供具有64位宽度的数据总线(例如数据可以被一次递送64位)。
[0017]对于64位存储器通道数据总线,包括x8 DRAM芯片(例如一次递送8位数据的DRAM芯片)的组块(rank)要求8个DRAM芯片一起工作以输出整个64位字。在一些系统中,使用多个双列直插存储器模块(DIMM)来实现物理存储器。每一个DIMM—般包括或者多个组块。组块是可以一起用于读取和/或写入操作的DRAM芯片的最小集合。在一些示例中,将组块在逻辑上划分成4至16个存储体,其中每一个存储体具有相同的字大小。对应于存储器通道的组块可以并发地处理存储器操作以增加存储器并行性。在一些示例中,可以并发地访问组块内的所有存储体(例如可以并行操作)并且可以在存储器通道数据总线上交织(interleave)数据以增加存储器并行性。交织是指通过跨存储器阵列的多个存储体或芯片存储数据的不同部分来以非连续的方式在存储器阵列中布置数据的方式,使得当多个存储体或芯片在存储器通道上被同时访问时可以同时从跨存储器阵列的不同存储体或芯片检索数据的不同的关联的部分以改进存储器性能和存储器错误保护。在一些示例中,与存储器控制器相关联的多个存储器通道可以以锁步方式一起工作以充当单个逻辑存储器通道以便提供用于单个读取和/或写入操作的较宽存储器数据总线(例如128位等)。
[0018]在一些示例中,存储器读取和/或写入(例如由处理器发布)可以请求递送64B的整个高速缓存线。高速缓存线可以映射到组块内的不同DRAM芯片。在这样的示例中,组块中的所有DRAM芯片在读取和/或写入操作期间对整个高速缓存线做贡献。在一些示例中,以成组(burst)模式执行读取和/或写入操作以便递送整个高速缓存线。例如,对于64位存储器通道,8的成组长度可以使用单个成组操作来递送整个64B高速缓存线。
[0019]关于存储器错误保护,为了保护存储器中的数据以防错误,一些示例系统通过使用具有错误校正码(ECC)能力的存储器模块(例如DMM)来实现存储器保护(例如ECCDIMM)。ECC DIMM具有比非ECC DIMM相对更大的存储容量以用于存储附加于数据的ECC信息。在一些示例中,为了递送ECC,用于ECC DIMM的存储器通道数据总线是72位宽,包括用于数据的64位和用于ECC的8位(例如一次可以与递送8位ECC同时递送64位数据)。与ECC DIMM相关联的存储器控制器在每一个读取和/或写入操作上对用于ECC DIMM的ECC进行编码和/或解码以检测和/或校正错误。
[0020]存在不同类型的ECC。单个位错误校正和双位错误检测(SE⑶ED) ECC是供64位数据(例如标准DIMM的数据宽度)使用的8位码并且可以容忍(例如校正)I位错误。一些错误可能超过SECDED的容限,诸如全局电路故障和完全的芯片故障。芯片删除校正是提供更强的错误保护(例如比SE⑶ED更强)的存储器ECC类型。
[0021]芯片删除校正容忍(例如校正)一个芯片故障并且可以检测高达两个芯片故障。因此,实现芯片删除校正的存储器系统甚至在发生DRAM芯片故障时也可以继续操作。使用芯片删除校正的存储器保护提供相对于SE⑶ED的更强可靠性。可以通过对位错误校正ECC进行交织来在存储器系统中实现芯片删除校正。例如,用于x4 DRAM的芯片删除校正可以使用四个交织的SE⑶ED码实现。在这样的示例中,DRAM芯片的每一个数据引脚被用于不同的SE⑶ED码。因此,DRAM芯片故障在每一个SE⑶ED码中表现为I位错误。为了实现这样的交织的SE⑶ED设计,在一些示例中使用256位宽数据总线上的存储器通道。
[0022]实现芯片删除校正的一些存储器系统可以使用具有单个符号错误校正和双符号错误检测(SS⑶SD)能力的基于符号的里德-所罗门(RS)码。对于芯片删除校正存储器保护,从来自DRAM芯片的b位数据构造b位符号,使得芯片故障显现为符号错误。在一些示例中,四ECC符号RS码提供具有SSCDSD能力的4位符号。在这样的示例中,代码具有128位数据和16位ECC。存储器系统可以使用该代码来实现用于x4 DRAM的芯片删除校正。在x8 DRAM系统中,SS⑶SD RS码具有较高的开销。因此,实现芯片删除校正的一些存储器系统使用x4 DRAM。
[0023]ECC方案可以基于 DRAM芯片宽度和所使用的存储器通道数目实现。例如,x4 DRAM芯片可以提供具有高位效率的强存储器保护。x4 ECC DIMM具有可以实现利用64位宽存储器通道的芯片删除校正的两个ECC DRAM芯片,其使得能够实现64B的小访问粒度(64位X8的成组=64B)。提供128B的中等访问粒度的具有并行的两个x4 ECC DMM的128位宽存储器通道可以实现双芯片删除校正。提供256B的大访问粒度的256位宽存储器通道可以实现四芯片删除校正。对于x8 DRAM芯片,使用具有64B的访问粒度的64位宽存储器通道实现SE⑶ED,使用具有128B的访问粒度的128位宽存储器通道实现芯片删除校正,并且使用具有256B的访问粒度的256位宽存储器通道实现双芯片删除校正。对于xl6 DRAM芯片,使用具有64B的访问粒度的64位宽存储器通道实现SE⑶ED,使用具有128B的访问粒度的128位宽存储器通道实现DEC (双位错误校正码),并且使用具有256B的访问粒度的256位存储器通道实现芯片删除。
[0024]不同ECC方案(例如SE⑶ED、芯片删除等)可以提供用于存储器系统的不同水平的保护。例如,在存储器接口处具有大访问粒度的ECC方案可以提供较强的存储器保护。然而,更强的存储器保护可能要求更多的开销。例如,强存储器保护可能要求宽存储器总线,并且因此多个存储器通道可能必须以锁步方式工作以提供宽存储器总线。在一些示例中,如果处理器侧的访问粒度(例如高速缓存线大小)不匹配存储器子系统侧的访问粒度,则可能出现显著的性能和能量惩罚。在一些示例中,x8 DRAM中的芯片删除在锁步模式中使用两个存储器通道,从而将存储器访问粒度增加至128B。在这样的示例中,如果处理器使用64B高速缓存线,存储器控制器必须读取与处理器请求的两倍一样多的数据并且然后在存储控制器计算ECC之后丢弃一半数据,这浪费功率和带宽。一般地,具有较宽DRAM芯片的强存储器保护机制使用大访问粒度并且可能引入粒度失配。在将处理器侧(例如通过使用大高速缓存线)和存储器侧的粒度匹配于相同的固定访问粒度的之前的系统中可能并未节省存储器带宽和/或功率以防浪费,因为不同的应用偏爱不同的访问粒度。将处理器和存储器处的访问粒度匹配在固定粒度的之前的系统可能增加带宽和/或浪费功率,如果数据局部性在不同应用之间不同而使得固定访问粒度通过例如过提取或欠提取处理器处的数据而产生跨不同应用的全然不同的性能结果的话。
[0025]在本文所公开的一些示例系统和方法中,选择访问粒度(例如最佳访问粒度)是应用相关的。例如,以较小访问粒度实现具有低空间局部性的应用而以较大访问粒度实现具有较高空间局部性的应用(例如通常一起使用的相关联的数据存储于在存储器中接近于彼此的物理上靠近的存储器单元中,使得可以通过使用单个行缓冲器访问或通道访问来同时检索它们)。本文所公开的示例系统和方法提供具有用于采用应用的数据局部性特性的不同应用的可选访问粒度的存储器架构并且改进总体系统性能。此外,本文所公开的示例系统和方法提供对优选地以较高粒度实现的应用的增加的存储器保护。
[0026]本文所公开的示例系统和方法提供范围在具有强存储器保护的大粒度存储器访问与具有不太强但更高效的存储器保护的小粒度存储器访问之间的可选存储器模式。在本文所公开的示例系统和方法中,存储器模式被用于限定存储器访问粒度和存储器保护技术(例如ECC技术)的不同组合。本文所公开的示例系统和方法确定用于每一个应用的存储器模式以提供高弹性、高吞吐量和功率高效的存储器系统。特别地,本文所公开的示例系统和方法可以提供具有较少(例如最小)性能开销的强存储器保护和功率效率。本文所公开的示例系统和方法可以与具有不同存储器行为的不同现代应用结合使用。
[0027]图1A图示了可以用于为存储器系统提供选择性粒度访问和存储器保护的示例存储器控制器(MC) 114。在所图示的示例中,存储器控制器114基于存储器访问请求101而确定所选存储器模式。所选存储器模式指示存储器页面要存储对应于所选存储器模式的错误保护信息类型并且存储数据以用于使用对应于存储器模式的访问粒度的检索。存储器控制器114使用存储器模式逻辑103将数据和错误保护信息存储在存储器页面中以用于使用访问粒度的检索。
[0028]图1B是可以使用图1A的存储器控制器(MC) 114来提供用于存储器系统的选择性粒度访问和选择性存储器保护的示例系统100。示例系统100使得能够选择用于具有特定存储器行为的特定应用的不同访问粒度和不同存储器错误保护方案。示例系统100允许操作系统134、硬件、应用、用户或其组合选择用于特定应用的包括存储器错误保护方案和/或访问粒度的存储器模式。如本文所公开的那样选择用于特定应用的包括特定存储器错误保护方案和/或访问粒度的特定存储器模式增加性能、功率效率和/或存储器带宽利用而同时维持系统可靠性。
[0029]在图1B所图示的示例中,示例系统100包括包含经由片上网络108与对应高速缓存106 (例如最后一级高速缓存(LLC))通信的多个处理核104的多核处理器102。所图示的示例的多核处理器102包括多个图1A的存储器控制器114。在所图示的示例中,为了访问(例如读取和/或写入)一个或多个存储器设备112中的数据,最后一级高速缓存存储体106中的每一个与对应存储器控制器114通信。在所图示的示例中,最后一级高速缓存存储体106本地高速缓存在多核处理器102中被频繁访问的数据以供由核104执行的线程来检索。当线程请求的数据在对应最后一级高速缓存存储体106中不可用时和/或当线程请求将数据写入到存储器112时,对应存储器控制器114访问存储器112中的存储器位置以完成这样的数据读取和/或写入。
[0030]在所图示的示例中,为了保护数据以防错误,使用错误校正码(ECC) DMM (例如DIMM 110)实现存储器112。ECC DIMM 110具有比非ECC DIMM更大的存储容量以用于除数据之外还存储数据存储器错误保护信息(例如ECC)。与对应DIMM 110相关联的每一个存储器通道118提供包括用于数据的64位和用于存储器错误保护(例如ECC)的8位的72位宽总线。存储器控制器114对供ECC DMM 110用于经由存储器通道118的读取和/或写入操作的ECC进行解码和/或编码以检测和/或校正错误。存在可以用于保护数据以防错误的不同类型的存储器ECC。例如,存储器控制器114可以实现SE⑶ED、芯片删除、SS⑶SD等以供与ECC DIMM 110—起使用。
[0031]在所图示的示例中,系统100被配置成在不同存储器模式之间进行选择,所述不同存储器模式提供范围从具有较大访问粒度(例如在单个存储器访问操作期间访问较多数据)的较强错误保护到具有较小访问粒度(例如在单个存储器访问操作期间访问较少数据)的不太强的错误保护的不同水平的保护。在所图示的示例中,系统100可以在用于利用具有不同芯片宽度的DRAM设备(例如x4、x8或Xl6 DRAM设备)构造的存储器112的三个存储器模式之间进行选择。存储器控制器114具有用于在系统100中可选的不同存储器模式(例如SE⑶ED、芯片删除、双芯片删除、四芯片删除等)的ECC逻辑(例如图2的精细粒度模式逻辑204、中等粒度模式逻辑206和粗糙粒度模式逻辑)。所图示的示例的存储器控制器114能够访问多个存储器通道(例如存储器通道118中的每一个)并且基于要实现的存储器模式而独立和/或同时控制每一个存储器通道118。
[0032]图1B所图示的示例示出当指定存储器访问粒度和错误保护类型的不同存储器模式时可以使用在示例系统100中的不同访问粒度120、122和124。在所图示的示例中,精细粒度模式120将存储器通道118独立地用作分离的64位宽逻辑通道,从而使得能够实现64B存储器访问126。在所图示的示例中,精细粒度模式120使用用于x4 DRAM系统的芯片删除校正和用于x8和xl6 DRAM系统的SECDED。所图示的示例的中等粒度模式122使用处于锁步模式中的两个存储器通道118以形成128位宽存储器通道,从而使得能够实现128B存储器访问128。在所图示的示例中,中等粒度模式122使用用于x4 DRAM系统的双芯片删除、用于x8 DRAM系统的芯片删除和用于xl6 DRAM系统的DEC。中等粒度模式122中的存储器保护由于中等粒度模式122的较大访问粒度而比精细粒度模式120提供的更强。粗糙粒度模式124使用处于锁步模式中的四个存储器通道118以形成256位宽存储器通道,从而使得能够实现256B存储器访问130。在所图示的示例中,粗糙粒度模式124使用用于x4 DRAM系统的四芯片删除、用于x8 DRAM系统的双芯片删除和用于xl6 DRAM系统的芯片删除。粗糙粒度模式124中的存储器保护由于较大的访问粒度而比精细粒度模式120和中等粒度模式122提供的更强。
[0033]在所图示的示例中,当实现精细粒度存储器模式120时,对应存储器控制器114独立控制存储器通道118,并且当实现中等粒度或粗糙粒度存储器模式124时,存储器控制器114同时控制多个存储器通道118。存储器通道118被提供有相应装置116以管理存储器通道、存储器保护、数据布局和/或存储器调度。在图2中示出装置116的示例详细图示。在所图示的示例中示出三个存储器模式120、122和124 ;然而,在系统100中可以附加地或可替换地实现任何其它存储器模式。例如,可以实现具有更强存储器保护的更大访问粒度。另外,在系统100中可以使用更少或更多存储器模式。
[0034]为了实现不同存储器模式,示例系统100在存储器112中维护与不同存储器模式兼容的数据布局以降低模式切换开销。在所图示的示例中,当在示例系统100中实现三个存储器模式(例如64B精细粒度模式、128B中等粒度模式和256B粗糙粒度模式)时,跨所有存储器控制器114在256B边界处交织数据,然后在相同存储器控制器114内跨所有四个64位物理通道交织64B数据块。由于当实现每一个存储器模式时数据以类似方式交织,因此存储器模式之间的数据布局不改变。如果存储器模式在精细粒度模式与粗糙粒 度模式之间改变,数据布局保持相同而仅ECC位被重新生成和替换。
[0035]所图示的示例的存储器控制器114的示例装置116控制与不同粒度相关联的存储器请求的调度。在一些示例中,存储器请求包括从存储器页面进行读取的请求或向存储器页面进行写入的请求。在一些实例中,以不同粒度调度存储器请求在例如粗糙粒度请求以锁步方式使用多个存储器通道118以提供更大访问粒度时产生调度挑战。可以仅在多个存储器通道118同时可用时调度粗糙粒度请求。在一些实例中,当存储器通道118被用于精细粒度请求时存储器通道118可能对于粗糙粒度请求不可用。由于粗糙粒度请求使用多个存储器通道118,当接收到多个精细粒度请求时,粗糙粒度请求可以被推迟相对长的持续时间。在一些示例中,仅在服务了所有精细粒度请求之后服务粗糙粒度请求导致比所期望的相对更低的系统性能,因为对应于粗糙粒度请求的数据的检索可能被延迟显著长的持续时间。为了避免或克服这样的不合期望的低性能,装置116通过在粗糙粒度请求已经由于精细粒度请求而被推迟时将粗糙粒度请求优先化为更高优先级来使得能够以更加及时的方式服务粗糙粒度请求。当存储器控制器114的装置116检测到粗糙粒度请求的推迟时,升高粗糙粒度请求的优先级使得具有正常优先级的精细粒度请求不被调度,直到具有升高的优先级的粗糙粒度请求被服务为止。在一些示例中,装置116基于粗糙粒度请求已经待决而没有被服务多久来确定何时增加粗糙粒度请求的优先级。例如,如果请求在阈值时间段内未被服务(例如超时),装置116可以增加粗糙粒度请求的优先级。以此方式,粗糙粒度请求不阻碍精细粒度请求被服务。
[0036]在所图示的示例中,示例虚拟存储器管理器(VMM) 132 (在操作系统(OS) 134内示出)管理具有不同访问粒度和ECC方案的存储器页面。所图示的示例的虚拟存储器管理器132管理用于每一个物理存储器页面(例如存储在存储器112中的存储器页面)的存储器模式信息并且向存储器控制器114传播存储器模式信息。例如,虚拟存储器管理器132可以指定要在存储器112处实现的存储器模式类型(例如精细粒度模式或粗糙粒度模式)和在该特定存储器模式中要在存储器112处实现的ECC类型(例如芯片删除、SE⑶ED等)。虚拟存储器管理器132可以基于来自应用的请求和/或基于操作系统134做出的确定来指定要在存储器模式112处实现的存储器模式。在所图示的示例中,虚拟存储器管理器132使得应用或软件能够指定被实现用于存储在存储器112中的特定存储器页面的特定存储器模式(例如从应用接收的请求指定特定存储器模式)。在图1B所图示的示例中,为了向存储器控制器114传播用于特定存储器页面的存储器模式信息(例如由应用指定的存储器模式),与存储器页面相关联的页面表条目(PTE) 148被虚拟存储器管理器132扩增以包括特定存储器模式。在所图示的示例中,页面表条目148和存储器模式信息被存储在存储器112中并且被高速缓存在转译后备缓冲器(TLB)(未示出)中以使得应用(例如图2的应用212)能够相对快速地访问页面表条目148。以此方式,可以使用用于具有相关联的页面表条目(例如页面表条目148)的存储器页面的TLB来处理存储器访问请求。如果发生TLB未命中(例如所请求的数据未存储在TLB中),存储器访问请求和模式信息从页面表(例如页面表148)加载或检索并且存储在TLB中。在所图示的示例中,然后将模式信息传播到存储器控制器114以访问存储器112。页面表条目148通过高速缓存层级(例如包括TLB和高速缓存106)而传播到存储器控制器114,使得存储器控制器114可以实现对应ECC逻辑和用于存储在存储器112处的存储器页面的访问粒度。
[0037]存储器模式的选择可以静态(例如在编译操作系统134或应用时)或动态(例如在操作系统134和/或应用的运行时环境的执行期间)完成。在一些示例中,当静态执行选择时,编程器或(编译器的)自动调节器可以通过使用注释、提示、编译器附注和/或默认模式来指定特定存储器模式和/或提供存储器模式信息(例如特定ECC和/或特定访问粒度)。例如,当基于存储器访问型式分配存储器时,编程器可以声明特定访问粒度。在一些示例中,编程器将命令嵌入到程序中以声明用于特定数据或存储器分配的特定存储器模式。在编译期间,编译器生成用于特定数据和/或存储器分配的标签以标注特定存储器模式。编译器还可以通过分析在编译期间与数据相关联的程序的源代码来生成标签。当操作系统134管理特定数据时,操作系统134基于标签向具有数据的存储器页面指派存储器模式。在一些示例中,编程器可以指定与大访问粒度相关联的更强存储器错误保护以供存储关键数据的存储器页面使用,并且指定与小访问粒度相关联的不太强但是更高效的存储器错误保护以用于存储不太关键的数据(例如可以容易地从另一源重构的临时数据)的存储器页面。在一些示例中,虚拟存储器管理器132和/或操作系统134基于编程器、应用和/或操作系统134指定的特定访问粒度和/或特定ECC而分配使用特定存储器模式的存储器页面。在一些示例中,如果特定ECC未被编程器选择,系统100 (例如操作系统134和/或虚拟存储器管理器132)选择用于大访问粒度的强存储器错误保护并且选择用于较小访问粒度的不太强但更高效的存储器错误保护。
[0038]存储器模式的选择还可以改变(例如存储器模式可以在精细粒度模式和粗糙粒度模式之间切换)。为了确定何时系统100将会受益于改变存储器模式的选择,剖绘器(profiler) 146可以从高速缓存106和存储器控制器114收集空间局部性信息、存储器通道和高速缓存使用数据、存储器故障率、行缓冲器命中率等。在所图示的示例中,剖绘器146可以使用硬件、软件或硬件和软件的组合实现。而且,尽管在所图示的示例中将剖绘器146示出在处理器102外部,但是剖绘器146可以实现在处理器102中,或者剖绘器146的一些部分可以实现在处理器102中而剖绘器146的其它部分可以实现在处理器102外部。在一些示例中,由剖绘器146收集的数据存储在高速缓存或类高速缓存结构中。操作系统134可以不时评估来自剖绘器146的所收集的数据以确定应当使用不同的存储器模式。例如,操作系统134可以评估应用的数据使用。在这样的示例中,如果大部分数据使用具有低空间局部性(例如相关联的数据跨存储器112的不同64字节部分存储),则操作系统134可以确定可以使用利用64B高速缓存线的精细粒度存储器模式。可替换地,如果大部分数据使用具有高空间局部性(例如相关联的数据连续地存储在存储器112的特定64字节部分内),则可以使用利用128B高速缓存线的中等粒度存储器模式或者可以使用利用256B高速缓存线的粗糙粒度存储器模式。在一些示例中,操作系统134还分析存储器带宽并且在存储器带宽利用为高(例如可用性为低)的情况下选择不使用粗糙粒度存储器模式。
[0039]在监视高速缓存106处的空间局部性中,高速缓存线(例如高速缓存线136a)可以包括指示高速缓存线自从其被存储在高速缓存中时以来已经被访问的标志。例如,当高速缓存线已经被访问时可以将标志设成“ I”并且当高速缓存线尚未被访问时可以将标志设成“O”。当高速缓存线被逐出时,可以将标志信息发送到剖绘器146以供分析。剖绘器146还可以使用针对每一个高速缓存线而包括的地址空间标识符(ASID)来分析特定应用的空间局部性。
[0040]在一些示例中,操作系统134评估从剖绘器146收集的不同结果(例如在上个时间段期间的访问粒度、在上个时间段期间使用的存储器带宽、模式切换开销等)并且向不同结果指派权重以确定是否应当切换存储器模式和/或要实现什么存储器模式。例如,模式切换开销可以在是否切换存储器模式的确定中比存储器带宽使用更重地加权。在一些示例中,当结果与已经被逐出的数据相关联时,操作系统134不分析从剖绘器146收集的结果。操作系统134可以在存储器112中保留先入先出(FIFO)使得可以将被逐出的项写入到FIFO。操作系统134可以扫描FIFO区以除在类高速缓存结构中存储的空间局部性信息之外还收集溢出的信息。
[0041]不同存储器模式之间的切换在执行期间对于存储器页面针对其改变型式并且因此改变访问粒度偏好的应用而言是有用的。当切换存储器模式时,特定存储器页面可能不可用,直到切换完成为止(例如,直到根据新选择的存储器模式重构ECC为止)。
[0042]在确定是否在存储器模式之间进行切换中,操作系统134还可以考虑切换到不同存储器模式的成本,因为切换存储器112中的访问粒度和ECC要求ECC重构,这要求移动或重组织大量数据。当例如存储器系统100空闲并且不太关注功耗时,切换到不同存储器模式的成本可以相对低。当存储器系统100不空闲和/或对于系统100而言较为关注功耗时,切换到不同存储器模式可以发生在存储器事件期间,诸如在页面迀移期间或系统检查点期间。在这样的存储器事件期间,切换到不同的存储器模式由于已经作为这样的存储器事件的部分发生的存储器112中的数据的读取和/或写入而招致用于重构ECC的相对少的开销。当操作系统134决定切换存储器模式时,操作系统134可以等待这样的存储器事件(例如页面迀移或系统检查点)发生。如果这样的存储器事件在阈值时间段(例如时间间隔或时期)内未发生,可以推迟存储器模式的切换,并且可以基于剖绘器146新收集的数据而做出是否切换存储器模式的新确定。一旦开始模式切换,切换存储器模式不要求处理器核104介入。
[0043]所图示的示例的高速缓存106实现多粒度高速缓存层级以基于所选存储器模式匹配用于访问存储器112的不同访问粒度。例如,所图示的示例的高速缓存106使得能够针对精细粒度模式而高速缓存64B数据,针对中等粒度模式而高速缓存128B数据并且针对粗糙粒度模式而高速缓存256B数据。高速缓存106之一的详细视图示出与对应有效位和/或脏位(dirty bit) 138相关联的高速缓存线136 (例如64B数据)以指示对应高速缓存线包含有效数据还是脏数据。如果其数据已经改变(例如数据不同于存储在存储器112处的数据)则高速缓存线136可以被标记为脏的。设置脏位138意味着对应数据被写通到存储器112 (例如当高 速缓存线136被逐出时)。
[0044]在所图示的示例中,基于存储器模式的最小访问粒度规定高速缓存106的内部总线宽度(例如64B)。宽度对于与不同存储器模式相关联的不同访问粒度保持相同。当高速缓存106接收128B宽数据或更宽数据时(例如当实现中等或粗糙粒度模式时),高速缓存106向相同的高速缓存线集合分配两个或更多高速缓存线136并且为共分配的高速缓存线136指派共享标签。例如,在系统100中实现粗糙粒度模式的情况下,高速缓存线136a、高速缓存线136b、高速缓存线136c和高速缓存线136d被一起分配并且跨所有高速缓存线136a-136d共享单个标签值(例如“I”)。将所指派的标签存储为标签选择位140。在所图示的示例中,由于高速缓存线136a-136d共享标签值,它们被组合以形成高速缓存扇区。
[0045]在所图示的示例中,所指派的标签还存储在标签条目142处。在所图示的示例中,高速缓存线矢量144充当指针并且与标签条目142相关联以指向被指派给标签条目142的对应高速缓存线136 (例如高速缓存线136a-136d)。由高速缓存线矢量144指向的高速缓存线136是较大高速缓存线(例如256B数据)内的逻辑子高速缓存线(例如64B数据)。
[0046]在所图示的示例中,核104和/或存储器控制器114使用标签选择位140来标识对应高速缓存线136的标签142。这样的标识在例如高速缓存线(例如诸如256B之类的较大高速缓存线)被逐出时是有用的。在这样的示例中,高速缓存线136b可以在其对应标签选择位140处具有标签值“I”。在所图示的示例中,标签值“I”在对应标签条目142处以经由对应高速缓存线矢量144标识高速缓存线136a、136c和136d。一旦将高速缓存线136a、136c和136d标识为与高速缓存线136b相关联,则可以逐出所有高速缓存线136a_136d。
[0047]图2描绘了可以与图1A和IB的示例存储器控制器114以及图1B的示例系统100结合使用以提供选择性存储器访问粒度和选择性存储器错误保护类型的示例装置116。所图示的示例的示例装置116实现在图1A和IB的存储器控制器114中。在图2所图示的示例中,示例装置116包括示例模式控制器202、示例精细粒度模式逻辑204、示例中等粒度模式逻辑206、示例粗糙粒度模式逻辑208和示例调度器210。所图示的示例的示例精细粒度模式逻辑204、示例中等粒度模式逻辑206和示例粗糙粒度模式逻辑208对应于图1A的存储器模式逻辑103。
[0048]所图示的示例的操作系统134 (图1B)的虚拟存储器管理器132 (图1B)接收操作请求。操作请求包括例如从图1的高速缓存106和/或存储器112读取数据和/或向其写入数据的请求。在所图示的示例中,虚拟存储器管理器132从应用212和/或操作系统134接收操作请求。在一些示例中,操作请求指定优选或特定存储器模式。存储器模式包括精细粒度模式(例如图1B的精细粒度模式120)、中等粒度模式(例如图1B的中等粒度模式122)和粗糙粒度模式(例如图1B的粗糙粒度模式124)。精细粒度模式提供具有不太强但是更高效的ECC保护的较小访问粒度。中等粒度模式提供具有相对于由精细粒度模式提供的保护更强的ECC保护的中等访问粒度。粗糙粒度模式提供具有相对于精细和中等粒度模式更强的ECC保护的较大访问粒度。在一些示例中,应用212可以基于将提供性能与访问粒度和存储器错误保护之间的可接受的平衡的存储器模式而选择特定存储器模式。例如,如果应用212具有低空间局部性,应用212可以选择精细粒度模式,因为其提供较小访问粒度,并且在操作请求中(例如对写入到存储器页面的请求)指定精细粒度模式的选择。如果例如,应用具有高空间局部性,应用212选择粗糙粒度模式,因为其提供较大访问粒度,并且在操作请求中指定粗糙粒度模式的选择。所图示的示例的虚拟存储器管理器132经由页面表条目148 (图1B)向存储器控制器114的装置116传送由应用212和/或操作系统134标识的存储器模式。页面表条目148被扩增以包括特定所选存储器模式以用于使特定存储器页面向所图示的示例的模式控制器202传播特定存储器模式以使得模式控制器202可以实现用于存储器页面的对应ECC逻辑和访问粒度。
[0049]所图示的示例的模式控制器202通过使用对应精细粒度模式逻辑204、中等粒度模式逻辑206或粗糙粒度模式逻辑208来在存储器112(图1B)处实现与页面表条目148中标识的存储器模式相关联的特定ECC技术和特定访问粒度。如果在虚拟存储器管理器132处从应用212接收的操作请求指定精细粒度模式的选择,则模式控制器202使用精细粒度模式逻辑204来实现对应ECC和访问粒度(例如以使用对应于精细粒度模式的错误保护类型和访问粒度来读取和/或写入到存储器112)。所图示的示例的精细粒度模式逻辑204被提供有逻辑电路,其将每一个存储器通道用作单独的64位宽逻辑通道以使得能够实现64B存储器访问126 (图1B)。所图示的示例的精细粒度模式逻辑204还被提供有实现用于x4DRAM系统的错误保护的芯片删除校正类型和用于x8和xl6 DRAM系统的错误保护的SE⑶ED类型的逻辑。
[0050]如果在虚拟存储器管理器132处从应用212接收的操作请求包括中等粒度模式的选择,则模式控制器202使用中等粒度模式逻辑206来实现对应的ECC和访问粒度(例如使用对应于中等粒度模式的错误保护类型和访问粒度读取和/或写入到存储器112)。所图示的示例的中等粒度模式逻辑206被提供有在锁步模式中使用两个存储器通道来形成128位宽存储器通道以使得能够实现128B存储器访问的逻辑。所图示的示例的中等粒度模式逻辑206还被提供有实现用于x4 DRAM系统的错误保护的双芯片删除类型、用于x8 DRAM系统的错误保护的芯片删除类型和用于xl6 DRAM系统的错误保护的DEC类型的逻辑。
[0051]如果在虚拟存储器管理器132处从应用212接收的操作请求包括粗糙粒度模式的选择,则模式控制器202使用粗糙粒度模式逻辑208来实现对应ECC和访问粒度(例如使用对应于粗糙粒度模式的错误保护类型和访问粒度来读取和/或写入到存储器112)。所图示的示例的粗糙粒度模式逻辑208被提供有在锁步模式中使用四个存储器通道118来形成256位宽存储器通道以使得能够实现256B存储器访问的逻辑。所图示的示例的粗糙粒度模式逻辑208还被提供有实现用于x4 DRAM系统的错误保护的四芯片删除类型、用于x8 DRAM系统的错误保护的双芯片删除类型和用于xl6 DRAM系统的错误保护的芯片删除类型的逻辑。
[0052]在所图示的示例中,为了实现不同的存储器模式,示例模式控制器202使用与所有不同存储器模式兼容的存储器112中的数据布局来布置存储器112中的数据以降低或防止涉及每一次选择不同存储器模式时重组织存储器112中的数据的布局的开销。在所图示的示例中,通过具有三个存储器模式(例如64B精细粒度模式、128B中等粒度模式和256B粗糙粒度模式),跨所有存储器控制器在256B边界处交织数据,然后跨对应于相同存储器控制器114的所有四个64位物理通道交织64B数据块。由于数据对于所有存储器模式以类似方式交织,当在不同存储器模式之间进行切换时数据布局不改变。当存储器模式改变时,数据布局保持相同并且重新生成ECC位。
[0053]所图示的示例的调度器210控制具有不同访问粒度的存储器请求(例如读取和/或写入到存储器112的请求)的调度。为了调度具有不同粒度的存储器请求,调度器210被配置成在不同存储器模式的不同需要之间仲裁。例如,针对使用粗糙粒度模式存储的数据的数据访问请求(例如粗糙粒度请求)以锁步方式使用多个存储器通道以提供较大访问粒度,使得当服务粗糙粒度请求时没有存储器通道可用于其它同时的访问。在所图示的示例中,当多个存储器通道同时可用时调度粗糙粒度请求。在一些示例中,如果需要用于粗糙粒度模式的访问粒度的所有存储器通道例如由于存储器通道被用于服务精细粒度请求而不可用,粗糙粒度请求不可服务。由于粗糙粒度请求使用多个存储器通道,因此粗糙粒度请求可以在接收到多个精细粒度请求时被连续推迟。在一些实例中,仅在所有精细粒度请求被服务之后服务粗糙粒度请求使系统性能降级。为了以更加及时的方式服务粗糙粒度请求,调度器210优先化粗糙粒度请求使得它们不会由于服务精细粒度请求而在过度长的持续时间内被推迟。当调度器210检测到粗糙粒度请求已经被推迟过久(例如其推迟的持续时间超过阈值)时,调度器210增加粗糙粒度请求的优先级使得具有正常优先级的精细粒度请求不在具有升高的优先级的粗糙粒度请求之前被调度。
[0054]所图示的示例的模式控制器202还可以使得能够在不同存储器模式之间进行切换(例如精细粒度模式可以切换到粗糙粒度模式)。在所图示的示例中,为了确定何时切换到不同的存储器模式,剖绘器146从高速缓存106和存储器控制器114收集空间局部性信息、存储器通道和高速缓存使用数据、存储器故障率等。所图示的示例的操作系统134的分析器214不时评估来自剖绘器146的所收集的数据以确定应当实现不同的存储器模式。例如,分析器214可以评估应用212的数据使用。在这样的示例中,如果大部分数据使用具有低空间局部性(例如相关联的数据跨存储器112的不同非连续64字节部分存储),则分析器214可以确定应当实现利用64B高速缓存线的精细粒度模式。可替换地,如果大部分数据使用具有高空间局部性(例如相关联的数据在存储器112的连续字节部分内),则可以实现利用128B高速缓存线的中等粒度模式或者粗糙粒度模式。分析器214还可以分析存储器带宽使用和/或可用性并且避免在存储器带宽可用性为低的情况下实现粗糙粒度模式。在一些示例中,分析器214评估从剖绘器146收集的各种结果并且向各种结果指派权重以确定是否应当选择不同的存储器模式和/或应当选择什么存储器模式。
[0055]在确定是否在存储器模式之间进行切换中,分析器214还可以分析在存储器模式之间切换的成本,因为切换在存储器112中的一个或多个存储器页面中使用的访问粒度和EC C涉及重确定ECC,这在存储器112内移动大量数据。当例如存储器控制器114空闲并且不太关注功耗时,在存储器模式之间切换的成本可以为低。在存储器控制器114不空闲和/或较为关注功耗的情况下,在存储器模式之间切换可以发生在诸如页面迀移或系统检查点事件之类的存储器事件期间。在这样的存储器事件期间,发生存储器112中的数据读取和/或写入并且因此在这些事件期间切换到不同的存储器模式招致用于重构ECC的相对少的开销。一旦分析器214决定切换存储器模式,分析器214可以等待这样的存储器事件发生。如果这样的存储器事件在阈值时间段内未发生,可以推迟存储器模式的切换,并且可以基于剖绘器146新收集的数据做出是否切换存储器模式的新确定。为了切换存储器模式,虚拟存储器管理器132可以通过更新页面表条目148来向模式控制器202传播新的存储器模式。模式控制器202使用用于使用精细粒度模式逻辑204、中等粒度模式逻辑206和/或粗糙粒度模式逻辑208的新存储器模式的ECC技术和访问粒度并且实现存储器112处的对应ECC技术和对应访问粒度。
[0056]所图示的示例的高速缓存106提供多粒度高速缓存层级以实现由应用212指定或选择的存储器模式。所图示的示例的高速缓存106使得能够实现用于精细粒度模式的64B高速缓存线大小、用于中等粒度模式的128B高速缓存线大小和用于粗糙粒度模式的256B高速缓存线大小。对于其中应用212指定中等或粗糙粒度模式的示例,高速缓存106接收128B或更宽数据并且向相关联的高速缓存线的相同集合分配两个或更多高速缓存线。高速缓存106为所有相关联的高速缓存线(例如两个或更多高速缓存线136)指派相同标签(例如标签142)。所指派的标签142存储在高速缓存106处,并且高速缓存线矢量144与所指派的标签142相关联以指向标签142被指派给的尚速缓存线136。在图2所图不的不例中,被高速缓存线矢量144指向的高速缓存线136是较大高速缓存线(例如256B数据)内的逻辑子高速缓存线(例如64B数据)。在所图示的示例中,标签选择位140指示指派给高速缓存线136或相关联的高速缓存线136的集合的标签142。由标签选择位140提供的这样的标识在例如高速缓存线(例如诸如256B高速缓存线之类的较大高速缓存线)被逐出时是有用的。
[0057]图2的示例装置116使得能够在存储器系统中的不同存储器访问粒度和不同类型的错误保护技术之间切换。基于应用行为和/或系统存储器利用来选择不同存储器错误保护技术(例如ECC技术)和存储器访问粒度增加系统性能、功率效率、能量效率和可靠性。
[0058]虽然已经在图2中图示了实现装置116的示例方式,但是可以以任何其它方式组合、划分、重布置、省略、消除和/或实现图2中图示的元件、过程和/或设备中的一个或多个。另外,图2的示例模式控制器202、示例精细粒度模式逻辑204、示例中等粒度模式逻辑206、示例粗糙粒度逻辑208、示例调度器210和/或更一般地示例装置116可以通过硬件、软件、固件和/或硬件、软件和/或固件的任何组合实现。因此,例如,示例模式控制器202、示例精细粒度模式逻辑204、示例中等粒度模式逻辑206、示例粗糙粒度逻辑208、示例调度器210和/或更一般地示例装置116中的任一个可以通过一个或多个电路、(一个或多个)可编程处理器、(一个或多个)专用集成电路(ASIC)、(一个或多个)可编程逻辑器件(PLD)和/或(一个或多个)现场可编程逻辑器件(FPLD)等实现。当本专利的装置和/或系统权利要求中的任一个被阅读以涵盖纯粹软件和/或固件实现方式时,示例模式控制器202、示例精细粒度模式逻辑204、示例中等粒度模式逻辑206、示例粗糙粒度逻辑208和/或示例调度器210中的至少一个由此被明确限定成包括诸如存储器、DVD、CD等之类的存储软件和/或固件的有形计算机可读存储介质。另外,图2中图示的示例装置116可以包括除图2中图示的那些之外或者替代于图2中图示的那些的一个或多个元件、过程和/或设备,和/或可以包括所图示的元件、过程和设备中的任一个或全部中的多于一个。
[0059]在图3A、3B和4中示出表示用于实现图2的示例装置116的示例机器可读指令的流程图。在这些示例中,机器可读指令包括用于供类似于或等同于图1B的处理器102的一个或多个处理器执行的一个或多个程序。(一个或多个)程序可以体现在存储在诸如与处理器102相关联的存储器之类的有形计算机可读存储介质上的软件中,但是(一个或多个)完整程序和/或其部分可以可替换地由除处理器102之外的一个或多个设备执行和/或体现在固件或专用硬件中。另外,尽管参照图3A、3B和4中图示的流程图描述(一个或多个)示例程序,但是可以可替换地使用实现示例系统100和/或示例装置116的许多其它方法。例如,块的执行次序可以改变,和/或所描述的块中的一些可以改变、消除或组合。
[0060]如以上提到的,图3A、3B和/或4的示例过程可以使用存储在诸如硬盘驱动器、闪速存储器、只读存储器(“R0M”)、高速缓存、随机存取存储器(“RAM”)和/或其中在任何持续时间内(例如在延长的时间段内、永久地、简短实例、用于临时缓冲和/或用于信息的高速缓存)存储信息的任何其它物理储存器之类的有形计算机可读存储介质(例如存储设备或存储盘)上的编码指令(例如计算机可读指令)来实现。如本文所使用的,术语有形计算机可读存储介质被明确限定成包括任何类型的计算机可读存储设备和/或存储盘并且排除传播信号。此外或可替换地,图3A、3B和/或4的示例过程可以使用存储在诸如硬盘驱动器、闪速存储器、只读存储器、高速缓存、随机存取存储器和/或其中在任何持续时间内(例如在延长的时间段内、永久地、简短实例、用于临时缓冲和/或用于信息的高速缓存)存储信息的任何其它存储介质之类的非暂时性计算机可读介质(例如存储设备或存储盘)上的编码指令(例如计算机可读指令)来实现。如本文所使用的,术语非暂时性计算机可读介质被明确限定成包括任何类型的计算机可读介质并且排除传播信号。如本文所使用的,当短语“至少”被用作权利要求的前序中的过渡术语时,其以与术语“包括”是开放式的相同的方式是开放式的。因此,使用“至少”作为其前序中的过渡术语的权利要求可以包括除在权利要求中明确记载的那些之外的元件。
[0061]图3A是表示可被执行以实现图2的示例存储器控制器114以确定和实现所选存储器模式的示例机器可读指令的流程图。存储器控制器114 (图2)基于访问存储器中的数据的请求而确定要使用的所选存储器模式(块301)。存储器模式指示存储器页面要存储对应类型的错误保护信息并且使用对应存储器访问粒度而被访问。存储器控制器114基于在块301处确定的存储器模式而实现具有对应访问粒度的错误保护(块303)。例如,存储器控制器114通过使用对应于对应访问粒度的通道数据宽度来将对应类型的错误保护信息(例如对应ECC)和数据写入到存储器页面。
[0062]图3B是表示使用不同存储器模式访问存储器的机器可读指令的流程图。在所图示的示例中,虚拟存储器管理器132 (图2)接收操作请求(块302)。在所图示的示例中,操作请求是从高速缓存106 (图2)和/或存储器112 (图2)读取数据和/或向其写入数据的请求。操作请求包括指定诸如精细粒度模式、中等粒度模式或粗糙粒度模式之类的特定存储器模式的信息。在所图示的示例中,应用212基于访问粒度和存储器错误保护而选择提供合期望的性能的特定存储器模式。
[0063]虚拟存储器管理器132基于从应用212接收的存储器操作请求而标识存储器模式(块304)并且通过更新页面表条目148 (图2)来将存储器模式传送到模式控制器202 (图
2)。如果从应用212接收的操作请求指定精细粒度模式,模式控制器202实现精细粒度模式逻辑204以生成ECC信息并且将访问粒度配置成用于所请求的存储器访问。所图示的示例的精细粒度模式逻辑204将每一个存储器通道118 (图1B)配置为64位宽逻辑通道以使得能够实现64B存储器访问126 (图1B)。所图示的示例的精细粒度模式逻辑204还实现逻辑以实现用于x4 DRAM系统的错误保护的芯片删除校正类型和用于x8和xl6 DRAM系统的错误保护的SECDED类型。如果从应用212接收的操作请求指定中等粒度模式,模式控制器202实现中等粒度模式逻辑206以生成ECC信息并且配置用于所请求的存储器访问的访问粒度。所图示的示例的中等粒度模式逻辑206将存储器通道18中的两个配置成操作在锁步模式中以构造128位宽存储器通道以使得能够实现128B存储器访问128 (图1B)。所图示的示例的中等粒度模式逻辑206还实现用于x4 DRAM系统的错误保护的双芯片删除类型、用于x8 DRAM系统的错误保护的芯片删除类型和/或用于xl6 DRAM系统的错误保护的DEC类型。如果从应用212接收的操作请求指定粗糙粒度模式,模式控制器202实现粗糙粒度模式逻辑208以生成错误保护信息(例如ECC)并且配置要用于所请求的存储器访问的访问粒度。所图示的示例的粗糙粒度模式逻辑208将存储器通道118中的四个配置成操作在锁步模式中以构造256位宽存储器通道以使得能够实现256B存储器访问130 (图1B)。所图示的示例的粗糙粒度模式逻辑208还实现用于x4 DRAM系统的错误保护的四芯片删除类型、用于x8 DRAM系统的错误保护的双芯片删除类型和/或用于xl6 DRAM系统的错误保护的芯片删除类型。
[0064]调度器210 (图2)确定在操作请求中指定的存储器模式是否为精细粒度模式(块306)?如果所指定的存储器模式不是精细粒度模式(块306),调度器210确定是否充足数目的存储器通道可用(块308)于以锁步方式操作以实现中等粒度模式或粗糙粒度模式。例如,粗糙粒度请求可能要求四个存储器通道以锁步方式操作并且这样的存储器通道可能在另一存储器操作正在被实现时(例如要求单个存储器通道的精细粒度请求)不可用。如果充足数目的存储器通道可用于以锁步方式操作以执行所请求的存储器操作(块308),模式控制器202使用所选错误保护技术和访问粒度来服务所请求的存储器操作(块310)。在所图 示的示例中,如果充足数目的存储器通道不可用于执行所请求的存储器操作(块308),调度器210基于调度策略增加针对所请求的存储器操作的优先级(块312)。在一些示例中,调度策略可以指定涉及请求待决的时间量的待决阈值持续时间。例如,如果所请求的存储器操作在调度策略限定的阈值时间段内未被服务(例如超时),调度器210可以增加针对所请求的存储器操作的优先级。在一些示例中,用于调度策略的待决持续时间可以基于例如性能准则、带宽准则、功耗准则和/或任何其它合适的准则来预确定。请求的增加的优先级用于使调度器210推迟服务精细粒度请求,直到中等粒度或粗糙粒度请求被服务为止,并且一旦存在可用于服务所请求的操作的充足通道就调度所请求的操作。在服务所请求的操作(块310)或升高所请求的操作的优先级(块312)之后,然后控制返回到块302。在所图示的示例中,在控制返回到块302以等待另一操作请求的接收的同时,调度器210也继续监视高优先级请求(在图3B中通过虚线示出)直到充足的存储器通道可用于服务高优先级请求为止。
[0065]返回到块306,如果接收到精细粒度请求,调度器210确定是否存在待决的高优先级请求(块314)。如果中等或粗糙粒度请求由于操作在锁步模式中的充足数目的存储器通道的不可用性而不能够被服务,高优先级请求可以是待决的。如果高优先级请求待决(块314),模式控制器202确定是否充足数目的存储器通道可用于执行待决高优先级请求(块316)。如果充足数目的存储器通道不可用(块316),搁置当前请求(块318)并且控制返回到块316以允许存储器通道变为可用于服务待决的高优先级请求。一旦充足数目的存储器通道可用于执行待决的高优先级请求(块316),模式控制器202使用对应的错误保护技术和访问粒度来执行待决的高优先级请求(块320)。然后由模式控制器202根据对应的错误保护技术和访问粒度来服务当前操作请求(例如精细粒度请求)(块310)。如果高优先级请求未处于待决(块314),模式控制器202使用对应的错误保护技术和访问粒度来服务当前操作请求(块310)。在服务待决优先级请求(块320)和/或服务当前请求(块310)之后,控制返回到块302。
[0066]图4是表示可以被执行以实现在不同存储器模式之间切换的图2的示例系统200的示例机器可读指令的流程图。剖绘器146 (图2)从高速缓存106 (图2)和存储器控制器114 (图2)收集空间局部性信息、存储器通道和高速缓存使用数据、存储器故障率等(块402)ο操作系统134 (图2)的分析器214周期性地评估来自剖绘器146的所收集的数据以确定是否应当实现不同的存储器模式(块404)。在确定是否切换存储器模式中,分析器214评估应用212 (图2)的数据使用。在一些示例中,如果大部分数据使用具有低空间局部性(例如相关联的数据跨存储器112的多个非连续64字节部分存储),分析器214确定实现利用64B高速缓存线的精细粒度模式。可替换地,如果大部分数据使用具有高空间局部性(例如相关联的数据存储在存储器112的连续64字节部分中),实现利用128B高速缓存线的中等粒度模式或利用256B高速缓存线的粗糙粒度模式。在一些示例中,分析器214还考虑存储器带宽,并且避免在存储器带宽(例如可用性)为低的情况下实现粗糙粒度模式。在一些示例中,分析器214评估从剖绘器146收集的各种结果并且向各种结果指派权重以确定是否切换存储器模式和/或要实现什么存储器模式。
[0067]如果分析器214确定不应当切换存储器模式(块404),控制返回到块402,在此处剖绘器146继续收集存储器使用数据。如果分析器214确定应当切换存储器模式(块404),分析器214确定是否存在用于切换存储器模式的显著开销(例如成本)。切换存储器模式可能是昂贵的,因为切换访问粒度和存储器112 (图2)中的错误保护信息要求重确定ECC或其它错误保护码,这要求访问大量数据。当例如存储器控制器114空闲并且不太关注功耗时,切换存储器模式的成本可以为低。如果分析器214确定存在用于切换存储器模式的显著开销(块406),分析器214确定是否发生存储器事件(例如页面迀移或系统检查点事件)(块408)。在存储器模式之间进行切换可以发生在存储器事件期间,因为读取和/或写入存储器112中的数据发生在这样的事件期间,并且因此在这些事件期间切换存储器模式招致用于重构ECC的较少开销。如果存储器事件要在阈值时间段内发生(块408),为了执行新的存储器模式,虚拟存储器管理器132 (图2)使用页面表条目148 (图2)向模式控制器202传送新的存储器模式并且模式控制器202通过使用对应的错误保护技术和访问粒度服务存储器请求来实现新的存储器模式(块410)。如果存储器事件未在阈值时间段内发生(块408),控制返回到块402并且基于新收集的数据做出是否切换存储器模式的确定。如果分析器214确定不存在用于切换存储器模式的显著开销(块406),虚拟存储器管理器132使用页面表条目148向模式控制器202传送新的存储器模式并且模式控制器202使用对应的错误保护技术和访问粒度服务存储器请求来实现新的存储器模式(块410)。控制然后返回到块 402。
[0068]尽管上文公开了示例方法、装置和除其它组件之外尤其包括在硬件上执行的软件的制造品,但是应当指出的是,这样的方法、装置和制造品仅仅是说明性的并且不应当被视为是限制性的。例如,设想到这些硬件和软件组件中的任何或全部可以排他性地体现在硬件中、排他性地体现在软件中、排他性地体现在固件中,或者在硬件、软件和/或固件的任何组合中。因此,虽然上文描述了示例方法、装置和制造品,但是所提供的示例不是实现这样的方法、装置和制造品的仅有方式。
[0069]尽管已经在本文中描述了某些方法、装置、系统和/或制造品,但是本专利覆盖的范围不限于此。相反,本专利覆盖字面上或在等同物的原则之下合理地落在随附权利要求的范围内的所有方法、装置和制造品。
【主权项】
1.一种提供选择性存储器错误保护和存储器访问粒度的装置,包括: 存储器控制器,用于: 基于请求而确定所选存储器模式,所述存储器模式指示存储器页面要存储对应类型的错误保护信息并且存储用于使用对应访问粒度的检索的数据;以及 将数据和错误保护信息存储在存储器页面中以用于使用所述访问粒度的检索。2.权利要求1的装置,其中所述存储器模式由操作系统或在操作系统上执行的应用来选择。3.权利要求1的装置,其中所述请求是从存储器页面进行读取的请求或向存储器页面进行写入的请求中的至少一个,所述请求从应用接收。4.权利要求1的装置,其中所述错误保护信息是错误校正码。5.权利要求1的装置,其中所述存储器控制器基于第二请求而标识第二存储器模式,第二存储器模式指示第二存储器页面要存储第二类型的错误保护信息并且存储用于使用第二访问粒度的检索的数据。6.权利要求5的装置,其中第二类型的错误保护信息提供比所述类型的错误保护信息更强的错误弹性并且第二访问粒度对应于比所述访问粒度更宽的数据通道。7.权利要求5的装置,其中所述存储器控制器将多个存储器通道配置成操作在锁步中以实现第二访问粒度。8.权利要求1的装置,其中所述请求包括指定存储器模式的信息。9.权利要求1的装置,其中所述存储器模式是基于存储器控制器的操作条件来选择的。10.一种提供选择性存储器错误保护和存储器访问粒度的系统,包括: 存储器管理器,从操作系统或在操作系统上执行的应用接收请求中的所选存储器模式,所述存储器模式指示存储器页面要存储对应类型的错误保护信息并且存储用于使用对应访问粒度的检索的数据; 存储器控制器,将数据和错误保护信息存储在存储器页面中以用于使用对应访问粒度的检索;以及 高速缓存,包括基于对应访问粒度来存储存储器页面的数据的部分的多个高速缓存线。11.权利要求10的系统,其中所述高速缓存向存储数据的部分的多个高速缓存线指派标签。12.权利要求11的系统,其中所述标签与指向存储数据的部分的多个高速缓存线的矢量相关联。13.权利要求10的系统,其中多个高速缓存线被组合以形成高速缓存扇区。14.权利要求10的系统,其中所述存储器控制器生成对应于存储器模式的错误保护信息。15.权利要求10的系统,其中所述请求是分配存储器页面的请求、从存储器页面进行读取的请求或向存储器页面进行写入的请求中的至少一个。16.一种提供选择性存储器错误保护和存储器访问粒度的方法,包括: 基于访问存储器中的数据的请求而确定所选存储器模式,所述存储器模式指示存储器页面要存储对应类型的错误保护信息并且使用对应访问粒度而被访问;以及 使用对应于对应访问粒度的通道数据宽度将对应类型的错误保护信息和数据写入到存储器页面。17.权利要求17的方法,其中所述存储器模式由操作系统和在操作系统上执行的应用来选择。18.权利要求16的方法,还包括: 基于存储器性能而确定要在存储器页面处实现的第二存储器模式,第二存储器模式指示存储器页面要存储第二类型的错误保护信息并且使用第二访问粒度而被访问,其中错误保护信息是错误校正码;以及 使用对应于第二访问粒度的第二通道数据宽度将第二类型的错误保护信息和数据写入到存储器页面,其中第二通道数据宽度是所述通道数据宽度的两倍。
【专利摘要】本文公开了提供选择性存储器错误保护和存储器访问粒度的示例方法、系统和装置。示例系统包括基于请求而确定所选存储器模式的存储器控制器。所述存储器模式指示存储器页面要存储对应类型的错误保护信息并且存储用于使用对应访问粒度的检索的数据。存储器控制器将数据和错误保护信息存储在存储器页面中以用于使用错误保护信息和访问粒度的检索。
【IPC分类】G11C29/42, G06F11/08
【公开号】CN104903864
【申请号】CN201280078087
【发明人】S.李, N.P.朱皮, D.H.庸
【申请人】惠普发展公司,有限责任合伙企业
【公开日】2015年9月9日
【申请日】2012年11月2日
【公告号】EP2915045A1, US20150278004, WO2014070200A1

最新回复(0)