具有段偏移寻址的专用存储器访问路径的制作方法

文档序号:6533334阅读:147来源:国知局
具有段偏移寻址的专用存储器访问路径的制作方法
【专利摘要】公开了用于访问存储器子系统的存储器访问。接收通过寄存器来访问存储器位置的指令。在寄存器中检测标记,该标记被配置成指示要访问哪个存储器路径。在标记被配置成指示使用第一存储器路径的情况下,经由第一存储器路径来访问存储器子系统。在标记被配置成指示使用第二存储器路径的情况下,经由第二存储器路径来访问存储器子系统。
【专利说明】具有段偏移寻址的专用存储器访问路径
[0001]其它申请的交叉引用
本申请要求2012年3月23日提交的题为SPECIAL MEMORY ACCESS PATH WITHSEGMENT-OFFSET ADDRESSING的美国临时专利申请号61/615,102 (代理人档案号HICAPO11+)的优先权,其用于所有目的而通过弓I用结合到本文中。

【背景技术】
[0002]常规现代计算机架构提供整个存储器的平面寻址。也就是说,处理器可以发布32位或64位值,其指定整个存储器系统中的任何字节或字。过去已经使用段偏移寻址来允许对比使用存储在正常处理器寄存器中的位数可能寻址的更大量的存储器进行寻址,但是具有许多缺点。
[0003]结构化及其它专门化的存储器相比于常规存储器提供优点,但是关注的是能够将先前软件与这些专门化的存储器架构一起再使用(re-use)的程度。
[0004]因此,所需的事物是将专用存储器访问路径结合到常规平面寻址计算机处理器中的手段。

【专利附图】

【附图说明】
[0005]在以下详细描述和附图中公开了本发明的各种实施例。
[0006]图1是图示出根据某些实施例的用于分布式工作流程的已编程计算机系统的功能图。
[0007]图2是图示出用于常规存储器的先前架构的逻辑视图的框图。
[0008]图3是图示出将使用扩展存储器性质的架构的实施例的逻辑视图的框图。
[0009]图4是通用段偏移寻址的不例的图不。
[0010]图5是用于先前平面寻址的间接寻址指令的图示。
[0011]图6是具有使用寄存器标记(tag)的结构化存储器的间接寻址加载(load)指令的图示。
[0012]图7是结构化存储器扩展的效率的图示。
[0013]图8是图示出使用段偏移寻址的专用存储器块的实施例的框图。

【具体实施方式】
[0014]可以以许多方式来实施本发明,包括作为过程;装置;系统;物质组成;在计算机可读存储介质上包含的计算机程序产品;和/或处理器,诸如被配置成执行存储在被耦合到处理器的存储器上和/或由其提供的指令的处理器。在本说明书中,可将这些实施方式或本发明可采取的任何其它形式称为技术。一般地,在本发明的范围内可改变公开过程的步骤顺序。除非另外声明,可将诸如被描述为配置成执行任务的处理器或存储器之类的部件实施为被临时地配置成在给定时间执行任务的通用部件或被制造成执行任务的特定部件。如本文所使用的,术语‘处理器’指的是被配置成处理数据、诸如计算机程序指令的一个或多个设备、电路和/或处理核。
[0015]下面连同图示出本发明的原理的附图来提供本发明的一个或多个实施例的详细描述。结合此类实施例来描述本发明,但本发明不限于任何实施例。本发明的范围仅仅由权利要求来限制,并且本发明涵盖许多替换、修改以及等价物。在以下描述中阐述了许多特定细节以便提供对本发明的透彻理解。这些细节是出于示例的目的而提供的且可在没有这些特定细节中的某些或全部的情况下根据权利要求来实施本发明。为了明了起见,未详细地描述在关于本发明的【技术领域】中已知的技术材料,使得本发明不是不必要地含糊不清的。
[0016]如上所述,常规现代计算机架构提供整个存储器的平面寻址。处理器可以发布32位或64位值,其指定整个存储器系统中的任何字节或字。
[0017]过去,使用所谓的段偏移寻址来允许对比使用可以存储在正常处理器寄存器中的位数可以寻址的更大量的存储器进行寻址。例如,Intel X86实模式支持段以允许对比在此模式下寄存器所支持的64千字节更多的存储器进行寻址。
[0018]此基于段的寻址具有多个缺点,包括:
1.有限段尺寸:例如,X86实模式下的段为至多64千字节,因此其为将跨段分裂其数据的软件的复杂化。
2.指针开销:需要将段之间的每个指针存储为段的指示加段内的偏移。为了节省空间,常常简单地将段内指针存储为偏移,导致指针的两个不同表示;以及
3.段寄存器管理:用有限数目的段,存在用以重新加载这些段寄存器的代码尺寸和执行时间方面的开销。
[0019]由于这些问题,现代处理器已演进到支持平面寻址,并且基于段的寻址的使用已经被反对。残余机制是通过指定从存储于对(平面)地址处的位置进行访问的指定寄存器中的地址进行加载而通过寄存器进行间接寻址,所述(平面)地址是包含在寄存器中的值和可选地偏移的和。
[0020]然而,随着物理存储器的尺寸进一步增加,将大型数据集主要(如果不是完全的话)存储在存储器中是可行且有吸引力的。用这些数据集,对其进行访问的共同模式连续地或以固定步幅跨数据集的大部分进行扫描。例如,大规模矩阵计算涉及到扫描矩阵元(matrix entry)以计算结果。
[0021]给定此访问模式,可以认识到由平面寻址提供的常规存储器访问路径具有多个缺占-
^ \\\.1.该访问将高速缓存器线路带入用于数据集的当前元素的数据高速缓存中,导致具有显著的时间和空间访问局部性的其它线路的驱逐,同时未提供超过用于数据从数据集分级(staging)的太多益处。
[0022]2.该访问类似地搅拌(churn)虚拟存储器转译后备缓冲器(TLB),导致用以加载对数据集页面的参考的开销,同时驱逐其它条目(entry)以便为这些腾出空间。由于缺乏用于这些TLB条目的再使用,性能明显降低;以及
3.平面地址访问可以要求64位寻址和具有其伴随开销的非常大的虚拟地址空间,而在没有大型数据集的情况下,程序可能容易地配合到32位地址空间中。特别地,用于程序中的所有数据结构的指针的尺寸随64位平面寻址而加倍,即使在许多情况下用于此大的地址的仅有原因是大型数据集的平面寻址。
[0023]除这些缺点之外,用于加载和存储的平面寻址访问可排除提供非标准能力的专门化存储器访问路径。例如,对于大型对称矩阵而言类似地,考虑使用稀疏矩阵的应用程序,可迫使常规存储器使用诸如压缩稀疏行(CSR)之类的复杂数据结构来处理软件方面的稀疏性。专用存储器路径可以允许应用程序使用扩展存储器性质,诸如由结构化存储器提供的细粒度(fine-grain)存储器去重。结构化存储器系统/架构的一个示例是如在美国专利7,650,460中描述的HICAMP (分级式不可变内容可寻址存储器处理器),该专利被整体地通过引用结合到本文中。此类专用存储器访问路径可以提供如在美国专利7,650,460中详述的其它性质,诸如高效的快照、压缩、稀疏数据集访问、和/或原子更新。
[0024]通过扩展而不是替换常规存储器,可以在没有显著重写的情况下再使用软件。在优选实施例中,可以通过将结构化能力提供为专门化协处理器并用常规处理器和关联操作系统为物理地址空间的区域提供对结构化存储器的读/写访问来向常规处理器/系统提供结构化存储器的益处中的某些,如在题为STRUCTURED MEMORY COPROCESSOR的相关美国专利申请12/784,268 (代理人档案HICAP001)中公开的,其被整体地通过引用结合到本文中。遍及本说明书,可将协处理器可互换地称为“SITE”。
[0025]用以存储器相干高性能外部总线的形式设计有共享存储器处理器(“SMP”)可扩展性的几个现代处理器来促进此方向。遍及本说明书,“互连”广泛地指的是任何芯片间总线、芯片上总线、点到点链路、点到点连接、多点互连、电连接、互联标准、或在部件/子部件之间传输信号的任何子系统。遍及本说明书,“总线”和“存储器总线”广泛地指的是任何互连。例如,AMD Opteron处理器支持相干HyperTransport? (“cHT”)总线且Intel处理器支持QuickPath Interconnect? (“QPI”)总线。此设施允许第三方芯片参与常规处理器的存储器交易,对读请求进行响应,生成无效并处理写/写回请求。此第三方芯片只须实施处理器协议;不存在对如何在芯片内部实施这些操作的限制。
[0026]SITE利用此存储器总线可扩展性来提供HICAMP的益处中的某些而不要求具有软件支持/工具链的全处理器运行任意应用程序代码。虽然在图3中未示出,但可将本文公开的技术容易地扩展至SITE架构。SITE可表现为专门化处理器,其支持一个或多个执行上下文(context)加上用于作用于其实施的结构化存储器系统的指令集。在某些实施例中,将每个上下文作为物理页面输出,允许将每个单独地映射到不同的过程,随后在没有OS介入的情况下允许直接存储器访问,但提供过程之间的隔离。在执行上下文内,SITE支持定义一个或多个区域,其中,每个区域是存储器总线上的物理地址的连续范围。
[0027]每个区域映射到结构化存储器物理段。因此,区域具有关联迭代子寄存器,提供对当前段的高效访问。该段也仍被参考,只要物理区域仍被配置即可。可将这些区域在可感觉边界上对准,诸如将所需映射数目最小化的IM字节的边界。SITE具有其自己的本地DRAM,在此DRAM中提供段的结构化存储器实施方式。
[0028]图1是图示出根据某些实施例的用于分布式工作流程的已编程计算机系统的功能图。如所示,图1提供了根据某些实施例的被编程为执行工作流程的通用计算机系统的功能图。如将是显而易见的,可以使用其它计算机系统架构和配置来执行工作流程。包括如下所述的各种子系统的计算机系统100包括至少一个微处理器子系统,也称为处理器或中央处理单元(“CPU”)102。例如,可用单芯片处理器或用多核和/或处理器来实施处理器102。在某些实施例中,处理器102是控制计算机系统100的操作的通用数字处理器。使用从存储器110取回的指令,处理器102控制输入数据的接收和操纵以及数据在输出设备、例如显不器118上的输出和显不。
[0029]处理器102与存储器110双向地耦合,其可以包括第一主储存器,通常是随机访问存储器(“RAM”),以及第二主存储区域,通常为只读存储器(“ROM”)。如在本领域中众所周知的,可以使用主储存器作为通用存储区域并作为高速暂存存储器(scratch-padmemory),并且还可以用来存储输入数据和已处理数据。除用于在处理器102上操作的过程的其它数据和指令之外,主储存器还可以以数据对象和文本对象的形式存储编程指令和数据。如同样在本领域中众所周知的,主储存器通常包括被处理器102用来执行其功能的基本操作指令、程序代码、数据和对象,例如已编程指令。例如,主存储设备110可以包括下述任何适当计算机可读存储介质,取决于例如需要数据访问是双向的还是单向的。例如,处理器102还可以直接地且非常快速地取回频繁需要的数据并将其存储在未示出的高速缓冲存储器中。块处理器102还可包括协处理器(未示出)作为补充处理部件以帮助处理器和/或存储器110。如下面将描述的,可经由存储器控制器(未示出)和/或协处理器(未示出)将存储器110耦合到处理器102,并且存储器110可以是常规存储器、结构化存储器或其组入口 ο
[0030]可移动大容量存储设备112为计算机系统100提供附加数据存储能力,并且被双向地(读/写)或单向地(只读)耦合到处理器102。例如,储存器112还可以包括计算机可读介质,诸如磁带、闪速存储器、PC-CARDS、便携式大容量存储设备、全息存储设备、及其它存储设备。固定大容量储存器120还可以例如提供附加数据存储能力。大容量储存器120的最常见示例是硬盘驱动器。大容量储存器112、120 —般地存储通常不被处理器102主动使用的附加编程指令、数据等。将认识到的是可以以标准方式来结合保持在大容量储存器112、120内的信息(如果需要的话)作为主储存器110 (例如RRAM,作为虚拟存储器)的一部分。
[0031]除提供对存储子系统的处理器102访问之外,还可以使用总线114来提供对其它子系统和设备的访问。如所示,根据需要,这些可以包括显示监视器118、网络接口 116、键盘104和定点设备106、以及辅助输入/输出设备接口、声卡、扬声器、以及其它子系统。例如,定点设备106可以是鼠标、触针、轨迹球或平板电脑,并且对与图形用户接口相交互是有用的。
[0032]网络接口 116允许如所示地使用网络连接将处理器102耦合到另一计算机、计算机网络或电信网络。例如,通过网络接口 116,处理器102在执行方法/过程步骤的过程中可以从另一网络接收信息,例如数据对象或程序指令,或者向另一网络输出信息。可以从另一网络接收和向其输出信息,该信息常常被表示为将在处理器上执行的指令序列。可以使用由处理器102实施(例如在其上面实施/执行)的接口卡或类似设备和适当软件来将计算机系统100连接到外部网络并根据标准协议来传输数据。例如,可以在处理器102上执行本文公开的各种过程实施例,或者可以与共享处理的一部分的远程处理器相结合地跨网络来执行,该网络诸如因特网、内部网或局部网。遍及本说明书,“网络”指的是计算机部件之间的任何互连,包括因特网、以太网、内部网、局部网(“LAN”)、家域网(“HAN”)、串行连接、并行连接、广域网(“WAN”)、光纤信道、PCI/PC1-X、AGP、VLbus,串行总线(PCI Express)、运通卡(Expresscard)、无限带宽(Infiniband)、访问总线、无线 LAN、WiF1、HomePNA、光纤、G.hn、红外网络、卫星网络、微波网络、蜂窝式网络、虚拟专用网(“VPN”)、通用串行总线(“USB”)、火线(FireWire)、串行ΑΤΑ、单总线(l_Wire)、UNI/0、或任何形式的连接同构、异构系统和/或系统在一起的群组。还可以通过网络接口 116将未示出的附加大容量存储设备连接到处理器102。
[0033]可以与计算机系统100相结合地使用未不出的辅助I/O设备接口。辅助I/O设备接口可以包括通用和自定义接口,其允许处理器102发送且更典型地从其它设备接收数据,所述其它设备诸如扩音器、触敏显示器、换能器读卡机、磁带读取器、语音或笔迹识别器、生物特征读取器、照相机、便携式大容量存储设备及其它计算机。
[0034]另外,本文公开的各种实施例还涉及计算机存储产品,其具有包括用于执行各种计算机实施的操作的程序代码的计算机可读介质。该计算机可读介质是能够存储数据的任何数据存储设备,该数据然后可以被计算机系统读取。计算机可读介质的示例包括但不限于所有上述介质:磁介质,诸如硬盘、软盘以及磁带;光学介质,诸如CD-ROM磁盘;磁光介质,诸如光盘;以及专门配置的硬件设备,诸如专用集成电路(“ASIC”)、可编程逻辑器件(“PLD”)以及ROM和RAM设备。程序代码的示例包括例如由编译程序(compiler)产生的机器代码或者包含能够使用解释程序(interpreter)来执行的例如脚本之类的高级代码的文件两者。
[0035]图1中所示的计算机系统仅仅是适合于与本文公开的各种实施例一起使用的计算机系统的示例。适合于此类使用的其它计算机系统可以包括附加或更少的子系统。另外,总线114说明用于链接子系统的任何互连方案。还可以利用具有子系统的不同配置的其它计算机架构。
[0036]图2是图示出用于常规存储器的先前架构的逻辑视图的框图。在所示的示例中,如下将处理器202和存储器204耦合在一起。将算术/逻辑单元(ALU) 206耦合到寄存器组208,其包含包括例如用于间接寻址214的寄存器的寄存器。寄存器组208与高速缓存器210相关联,其又与用于存储器210的存储器控制器212耦合。
[0037]图3是图示出将使用扩展存储器性质的架构的实施例的逻辑视图的框图。与图2中的存储器204相反,存储器304包括专用于常规(例如,平面寻址)存储器的存储器以及专用于结构化(例如,HICAMP)存储器的存储器。图3上的锯齿形线(304)指示常规和结构化存储器可以是清楚分离的、交错的、散布的、在编译时间、运行时间或任何时间静态地或动态地分区的。类似地,寄存器组308包括寄存器架构,其可以适应常规存储器和/或结构化存储器;包括寄存器,其包括例如用于间接寻址的包括标记的寄存器314。还可以与存储器304类似的方式将高速缓存器310分区。标记的一个示例类似于如在题为HARDWARE-SUPPORTED PER-PROCESS METADATA TAGS 的美国专利申请 13/712,878(代理人档案:HICAP010)中描述的硬件/元数据标记,该专利申请被整体地通过引用结合到本文中。
[0038]在一个实施例中,将硬件存储器结构化成物理页面,其中,将每个物理页面表示为一个或多个间接线,其将物理页面中的每个数据位置映射到存储器中的实际数据线位置。因此,间接线包含用于页面中的每个数据线的物理线ID (“PLID”)。其还包含每个PLID条目k个标记位,其中,k是I或某个更大数,例如1-8位。因此,在某些实施例中,元数据标记在PLID上且直接地在数据中。类似地,硬件寄存器还可与软件、元数据和/或硬件标记相关联。
[0039]当过程寻求使用与其地址空间的某些部分中的线相关联的元数据标记时,针对被与另一过程共享、使得元数据标记使用可能冲突的每个页面,创建用于该页面的间接线的拷贝,确保包含在间接线中的标记的单独每个过程拷贝。由于间接线大大地小于虚拟存储器页面,所以该拷贝是相对高效的。例如,在32位PLID和64字节数据线的情况下,间接线是将表示4千字节页面、数据尺寸的1/16的256字节。并且,存储间接线中的条目中的元数据避免扩展存储器的每个数据字的尺寸以适应标记,如在现有技术架构中已完成的。存储器的字一般地目前是64位。对数据线进行寻址所需的字段尺寸显著地更小,允许用于元数据的空间,使得要适应元数据更为容易且更为低廉。
[0040]类似地,存储器控制器312包括专用于在304中控制常规存储器的逻辑以及专用于控制结构化存储器的附加逻辑,如下面将详细地描述的。
[0041]图4是通用段偏移寻址的示例的图示。过去,使用所谓的段偏移寻址来允许对比使用可以存储在正常处理器寄存器中的位数可以寻址的更大量的存储器进行寻址。存储器402被划分成段,包括段404A及其它段410B和C。图4的惯例是存储器地址从每个块的顶部朝着底部增加。在段A内,可由偏移406Y来确定寻址。因此,可以通过将与段A相关联的值与其偏移Y求和来计算绝对地址,在408处有时表示为“A:Y”。
[0042]图5是用于先前平面寻址的间接寻址指令的图示。间接寻址是被反对段偏移寻址的残余机制。在某些情况下,图5的图示可在图2的寄存器组208、存储器控制器212和存储器204之间发生。ALU 202接收用于阵列M[Z]的指令,使得其通过指定从存储于对作为以下两项的和的平面地址处的位置进行访问的指定寄存器DEST_REG中的地址进行加载而被配置成用于通过地址寄存器214的间接寻址:(I)包含在SRC_REG寄存器中的值,例如在这种情况下为M,以及可选地(2)偏移0FFSET_VA,在这种情况下为Z。基本计算是计算第一平面地址,然后使用第二平面地址。
[0043]图6是具有使用寄存器标记的结构化存储器的间接寻址加载指令的图示。虽然在图6中描述了加载,但在没有限制的情况下且如下所述,可将该技术概括为移动或存储指令。
[0044]公开了提供用以指示与专用存储器访问路径相关联的寄存器的标记。地址寄存器314中的标记被较早地设置以指示例如到结构化存储器304的专用存储器访问路径。
[0045]当加载或移动指令然后通过此寄存器314读取被指定为间接的数据时,处理器将访问改向至具有段的指示的所述专用存储器访问路径,例如在这种情况下为B,与此寄存器和偏移值相关联,在这种情况下为U,其被存储于此寄存器中。
[0046]类似地,在通过此类寄存器的间接的库(store)上,正在存储的数据通过具有段和偏移的类似指示的关联专门化存储器路径而被改向。
[0047]结构化存储器段的示例=HICAMP段。HICAMP架构是基于以下关键的三个思想:
1.内容唯一线:存储器是小的固定尺寸线的阵列,每个用物理线ID或PLID来寻址,并且存储器中的每个线具有在其寿命内不可变的唯一内容。
[0048]2.存储器段和段映射:存储器作为多个段而被访问,其中,每个段被结构化为存储器线的DAG。段表将每个段映射到表示DAG的根的PLID。用段ID (“SegID”)来识别和访问段。
[0049]3.迭代子寄存器:允许对存储在段中的数据的高效访问的处理器中的专用寄存器,包括从DAG加载数据、段内容的更新、预取和迭代。
[0050]内容唯一线。HICAMP主存储器被划分成线,每个具有固定尺寸,诸如16、32或64字节。每个线具有在其寿命期间不可变的唯一内容。用存储器系统中的重复抑制机制保证并保持了线的唯一性和不可变性。特别地,存储器系统能够由其PLID来读取线,类似于常规存储器系统中的读操作、以及通过内容的查找,而不是写。如果此类内容在之前不存在的话,通过内容操作的查找返回用于存储器线的PLID,分配线并为其指派新的PLID。当处理器需要修改线时,为了有效地向存储器中写入新的数据,其请求用于具有指定/已修改内容的线的PLID。在某些实施例中,出于线程堆栈及其它目的,存储器的单独部分在常规存储器模式下操作,其能够用常规读和写操作来进行访问。
[0051 ] PLID是硬件保护数据类型以确保软件不能直接地创建它们。存储器线和处理器寄存器中的每个字具有替换标记,该替换标记指示其是否包含PLID,并且预防软件直接地将PLID存储在寄存器或存储器线中。因此且必要地,HICAMP提供受保护参考,其中,应用程序线程只能访问其已创建或对于其而言已经明确地向其传递了 PLID的内容。
[0052]段。HICAMP中的存储器的可变尺寸、逻辑相连块被称为段且被表示为有向非循环图(“DAG”),其由固定尺寸线构成,如图3B中所示。数据元素被存储在DAG的叶线处。
[0053]每个段遵循其中从左向右填充叶线的正则表示。由于此规则和存储器系统的重复抑制,每个可能的段内容在存储器中具有唯一表示。特别地,如果图3B的字符串再次地被用软件实例化(instantiate),则该结果是对已经存在的相同DAG的参考。这样,将内容唯一性质扩展至存储器段。此外,可以独立于其尺寸在其根线的PLID的简单单指令比较中针对相等性比较HICAMP中的两个存储器段。
[0054]当通过创建新的叶线来修改段的内容时,新叶片的PLID替换父线中的旧PLID。这有效地创建用于父线的新内容,因此获取用于该父的新PLID并在上面的层次中将其替换。继续此操作,新的PLID在DAG上一直替换旧的一些直至获取用于根的新PLID。
[0055]HICAMP中的每个段由于所分配线的不可变形而是写时拷贝,即线在被分配并初始化之后不改变其内容直至其由于对其参考的缺少而被释放为止。因此,将用于段的根PLID传递至另一线程有效地向此线程传递段内容的快照和逻辑拷贝。利用此性质,并行线程能够用快照隔离高效地执行;每个线程仅需要保存感兴趣的所有段的根PLID且然后使用相应PLID来参考该段。因此,尽管其它线程的并行执行,每个线程具有顺序过程语义。
[0056]HICAMP中的线程通过以下各项而使用非阻塞同步来执行大的段的安全、原子更新:
1.保存用于原始段的根PLID;
2.修改更新内容的段并产生新的根PLID;
3.如果用于段的根PLID尚未被另一线程改变的话,使用比较并交换(“CAS”)指令等以便以原子方式用新的根PLID来替换原始根PLID,并且否则如常规CAS —样重试。
[0057]实际上,HICAMP中的廉价逻辑拷贝和写时拷贝实现Herlihy的理论构造,将CAS示为在实际应用中使用是实际上足够实用的。由于线级重复抑制,HICAMP使段的原始拷贝与新的一个之间的共享最大化。例如,如果修改图3B中的串以添加额外字符“附加于串”,则存储器包含对应于该串的段,共享原始段的所有线,仅用附加线来扩展以存储形成DAG所必需的额外内部线和附加内容。
[0058]迭代子寄存器。在HICAMP中,所有存储器访问经历称为迭代子寄存器的专用寄存器。如在题为 ITERATOR REGISTER FOR STRUCTURED MEMORY 的美国专利申请 12/842,958(代理人档案:HICAP002)中所述,其被整体地通过引用结合到本文中。迭代子寄存器有效地指到段中的数据元素。其高速缓存通过该段从DAG的根PLID到其指向的元素的路径以及元素本身,理想地是整个叶线。因此,将源操作数指定为迭代子寄存器的ALU操作以与常规寄存器操作数相同的方式访问当前元素的值。迭代子寄存器还允许读取其当前偏移或该段内的索引。
[0059]迭代子寄存器支持专用增量运算,其将迭代子寄存器的指针移动至该段中的下一(非空)元素。在HICAMP中,包含所有零的叶线是专用线且始终被指派零的PLID。因此,还用PLID零来识别参考此零线的内部线。因此,硬件能够容易地检测DAG的哪些部分包含零元素并将迭代子寄存器的位置移动至下一非零存储器线。此外,到当前位置的路径的高速缓存意味着除其已经高速缓存的那些之外,寄存器仅加载到下一元素的路径上的新的线。在包含在同一线中的下一位置的情况下,不要求存储器访问来访问下一元素。
[0060]使用DAG结构的知识,迭代子寄存器还可以响应于对段的元素的顺序访问而自动地预取存储器线。在加载迭代子寄存器时,寄存器自动地对线进行预取直至且包括包含处于指定偏移的数据元素的线。HICAMP使用减少其关联开销的多个优化和实施技术。
[0061]间接寻址中的迭代子寄存器。在一个实施例中,专用存储器路径部分地由一个或多个迭代子寄存器602提供。该寄存器指示其与之相关联的特定迭代子寄存器。在本实施例中响应于负荷而返回的数据是处于在与此迭代子寄存器相关联的段中的寄存器中指定的偏移的数据。类似性能在通过标记寄存器来间接存储时适用。
[0062]在使用迭代子寄存器的实施例中,向迭代子寄存器实施方式指示增加标记寄存器中的值,引起其预取至段内的新偏移。此外,如果关联段是稀疏的,则迭代子寄存器可重新定位至下一非空条目,而不是对应于寄存器中的确切的新偏移值的一个。在这种情况下,所得到的下一非空条目的实际偏移值被反射回到此寄存器。
[0063]在HICAMP-SITE示例中,SITE支持用虚拟段id (“VSID”)编索引的段映射,其中,每个条目指向段的根物理线标识(“PLID”)加上指示合并一更新的标志等。每个迭代子寄存器记录其已经加载的段的VSID,并支持已修改段的有条件提交(commit),如果其未改变的话,在提交时更新段映射条目。如果被标志为合并一更新,则其尝试合并。类似地,可以使区域同步至其相应的段,即至该段的最后提交状态。可以扩展段表条目以保持更多前面的段以及该段上的统计。如果存在多个段映射的话,VSID具有全系统范围或另外的每个段映射的范围。这允许在过程之间共享段。SITE还可对接到诸如Infiniband之类的网络互连以允许到其它节点的连接。这允许节点之间的高效RDMA,包括远程检查点。SITE还可对接到FLASH存储器以允许持续和记录。
[0064]在某些实施例中,使用操作的基本模型,其中,SITE是存储器控制器且所有段管理操作(分配,转换、提交等)隐含地发生并被远离软件抽象化(abstract)。在某些实施例中,有效地将SITE实施为HICAMP处理器的版本,但是用网络连接进行扩展,其中,通过超传输或QPI或其它总线而不是本地处理器核从请求生成线读和写操作和“指令”。超传输或QPI或其它总线接口模块和区域映射器的组合简单地产生针对迭代子寄存器的线读和写请求,其然后对接至HICAMP存储器系统/控制器110的其余部分。在某些实施例中,协处理器108从由处理器102发送的存储器请求的(物理)存储器地址提取VSID。在某些实施例中,SITE包括处理器/微控制器以实施例如通知、合并一更新以及固件方面的配置,从而不要求硬件逻辑。
[0065]图7是结构化存储器扩展的效率的图示。ALU 206和物理存储器304可与在图3中的相同。在实施例中,通过使对专用数据路径710的访问改向来实施从标记寄存器的间接加载,专用数据路径710不同于转到处理器TLB 702和/或常规处理器高速缓存器310(在图7中未示出)的路径706。此专用路径确定要从与此专用路径相关联的状态返回的数据。
[0066]在使用迭代子寄存器实施方式的实施例中,迭代子寄存器实施方式将寄存器偏移转化成段中的相应位置并确定用以访问此数据的手段。在实施例中,迭代子寄存器实施方式管理对应于迭代子寄存器需要或预期将需要的那些的线的单独芯片上存储器。在另一实施例中,迭代子寄存器实施方式共享一个或多个常规芯片上处理器高速缓冲存储器,但是对其正在使用的线强加单独替换策略或老化指示。特别地,其可立即从高速缓存器冲掉迭代子寄存器实施方式预期不再需要的线。
[0067]在实施例中,虚拟存储器页表704中的条目可以指示一个或多个虚拟地址对应于专用存储器访问路径及其关联数据段的时间。也就是说,将该条目标记为专用并将与该条目相关联的物理地址解释为指定经由此专用存储器路径可访问的数据段。在本实施例中,当从此类虚拟地址加载寄存器时,将该寄存器标记为使用专用存储器访问路径并与由关联页表条目指定的数据段相关联。在某些实施例中,这包括通过从虚拟存储器的具体标记部分加载该寄存器而将寄存器中的标记设置成被用作段寄存器。
[0068]在实施例中,可以使用常规页表(也示为704)来控制对数据段的访问和/或对段的读/写访问,类似于其用平面寻址而用于这些目的。特别地,用专用访问指示标记的寄存器可以进一步指示通过此寄存器是否允许读或写访问或两者,这根据页表条目许可而确定。此外,操作系统能够谨慎地控制对通过每个过程或每个线程页表提供的段的访问。
[0069]在实施例中,专用存储器访问路径710提供从偏移到存储器的单独映射,消除了对通过所述标记寄存器的每次访问时的将平面地址从虚拟地址转化成物理地址的需要。其从而减少了对TLB 702和虚拟存储器页表704的需求。例如,在使用HICAMP存储器结构的实施例中,可以将段表示为间接数据线的树或DAG,其参考其它此类间接数据线或实际数据线。
[0070]在实施例中,可以使用处理器的原子操作中的一个来保存标记寄存器,诸如比较并交换或者通过将库嵌入硬件交易存储器交易中,从而提供数据段相对于执行的其它并行线程的原子更新。在这里,“保存”指的是更新段的单独数据访问路径实施方式以反映使用标记寄存器执行的修改。
[0071]也就是说,包括HICAMP的几个结构化存储器具有其中瞬态线/状态与段/迭代子寄存器相关联的性质、使得可通过对迭代子寄存器进行原子更新来提交状态。因此,提供了触发段的结构化存储器原子更新的手段。将该手段与常规架构的原子/交易机制结合。当处理器想要给结构化存储器发信号以执行原子更新时,其可以通过标记寄存器来这样做。
[0072]交易更新的提交因此可以由标记寄存器的更新引起。硬件交易存储器将捕获任意尺寸、包括兆兆位、即百万兆的存储器容量和更新该尺寸的段的交易。例如,其它(更常规)处理器可具有交易存储器,其由于对其它处理器所允许的硬件交易存储器交易的数据尺寸的限制而被称为受限交易存储器。在某些实施例中,附加标记可以进一步反映结构化存储器将被以原子方式提交。
[0073]在使用标记虚拟页表条目的实施例中,通过将标记寄存器存储到对应于由相应虚拟页表条目指定的标记位置的虚拟存储器地址来实现此原子动作。
[0074]在实施例中,可以在给定时间存在多个标记寄存器,其将已修改数据表示为逻辑应用交易的一部分,并且可以使用上述机制来以原子方式提交这多个寄存器。
[0075]在实施例中,可以用操作系统软件来直接地访问数据段访问状态以允许其被保存并在上下文切换时恢复以及根据应用程序的需要在寄存器之间传输。在实施例中,由只有操作系统能够访问的处理器中的受保护专门化硬件寄存器来提供此设施。在实施例中,可以提供附加硬件以优化这些操作。
[0076]在实施例中,标记寄存器可以提供对结构化数据段的访问,诸如键-值库。在这种情况下,如果使用字符串作为到此库的秘钥的话,可以将标记寄存器中的值解释为到字符串的指针。在这种情况下,该秘钥本身在逻辑上指定该段内的偏移。在某些实施例中,偏移一般地将被转化成键-值对的值。
[0077]作为示例,一个键-值库可反映词典,使得秘钥“C0W”指的是值“成年牛属动物中的雌性”。在这种情况下,结构化数据段具有作为其(索引)偏移的“COW”,例如参考图6。结构化存储器保留所有其能力,包括其内容可寻址性质,使得作为串而不是整数的“cow”被简单地/本地地经由例如HICAMP PLID而索引至PLID整数,作为直接地/间接地返回键-值对的“成年牛属动物中的雌性”值的索引。
[0078]因此,在各种实施例中,对键-值库的操作可返回结构化存储器段的值或指向键-值对的值的结构化存储器段的索引/PLID。在没有软件解释/翻译的某些情况下,通过结构化存储器保留处理稀疏数据集的益处来简单地处理串偏移。在某些实施例中,附加标记还可以反映结构化存储器被视为键-值库而不是整数的阵列。
[0079]图8是图示出使用段偏移寻址的专用存储器块的实施例的框图。在步骤802中,接收用以通过寄存器对存储器位置进行访问的指令。在某些实施例中,这包括间接加载、间接移动或间接存储指令。在步骤804中,在寄存器中检测标记。该标记被配置成用隐式或显式手段来指示将经由哪个数据路径(例如,常规或专用/结构化)来访问哪个类型的存储器。在标记被配置成指示使用第一 /结构化存储器路径的步骤806中的情况下,控制转移到步骤810且经由第一存储器路径来访问存储器。同样地,在标记被配置成指示使用第二 /常规存储器路径的步骤806中的情况下,控制转移到步骤812且经由第二存储器路径来访问存储器。
[0080]在图8中参考的存储器可与图3中的分区存储器304相同。在图8中参考的路径可以是如图7中的路径706/710的路径。存储器304可支持不同的地址尺寸,例如第一 /结构化存储器可具有32位地址尺寸并可以用64位对第二 /常规存储器进行寻址。在某些实施例中,访问第一类型的存储器可要求地址转化,其中要访问第二类型的存储器可不要求地址转化。在某些实施例中,可将高速缓存器310分区成用于第一存储器路径的第一类型高速缓存器和用于第二存储器路径的第二类型高速缓存器。在某些实施例中,将不对第一存储器路径同样地使用高速缓存器310。
[0081]通过标记寄存器至专用存储器访问路径的段偏移寻址允许:
1.TLB 702和页表704访问时的减少的负荷;
2.用于访问某些数据集的正常数据高速缓存器310上的减少的负荷;
3.减少的对大的地址的需要,诸如到许多处理器的64位寻址扩展;以及
4.公开的寻址排除了如在平面寻址的情况下出现的对数据集进行再定位的需要,当数据集成长至超过预期的时,或者相反地,当尺寸并未预先已知时,排除了对用于每个段的虚拟地址范围的最大分配的需要。
[0082]此外,其允许沿着此存储器访问路径的专门化存储器支持,诸如去重、快照访问、原子更新、压缩和加密的HICAMP能力。
[0083]常见计算模式是“映射”和“还原(reduce)”。“映射”计算从一集合映射到另一集合。用本发明,能够有效地将此计算形式实现为使用此建议的从源段到目的段的计算。“还原”计算仅仅是从集合到值,因此使用源段作为到计算的输入。
[0084]虽然已出于理解清楚的目的而详细地描述了前述实施例,但本发明不限于提供的细节。存在实施本发明的许多替换方式。公开实施例是说明性的并且非限制性的。
[0085]要求保护的是:
【权利要求】
1.一种用于访问存储器子系统的存储器访问方法,包括: 接收用以通过寄存器来访问存储器位置的指令; 检测寄存器中的标记,该标记被配置成指示要访问哪个存储器路径; 在标记被配置成指示使用第一存储器路径的情况下,经由第一存储器路径来访问存储器子系统;以及 在标记被配置为指示使用第二存储器路径的情况下,经由第二存储器路径来访问存储器子系统。
2.如权利要求1所述的方法,其中,所述指令是以下各项中的一个或多个:间接加载、间接移动、以及间接存储。
3.如权利要求1所述的方法,其中,所述存储器子系统被分区成通过第一存储器路径访问的第一类型存储器和通过第二存储器路径访问的第二类型存储器。
4.如权利要求3所述的方法,其中,所述第一类型存储器是结构化存储器且所述第二类型存储器是常规存储器。
5.如权利要求3所述的方法,其中,所述第一类型存储器和所述第二类型存储器具有不同的寻址尺寸。
6.如权利要求1所述的方法,还包括通过从存储器的标记部分加载寄存器来设置寄存器中的标记。
7.如权利要求3所述的方法,其中,在调用指令之前确定访问第一类型的存储器的许可,并且在调用指令之后确定访问第二类型的存储器的许可。
8.如权利要求3所述的方法,其中,所述第一类型的存储器支持快照。
9.如权利要求3所述的方法,其中,所述第一类型的存储器支持原子更新。
10.如权利要求3所述的方法,其中,所述第一类型的存储器支持去重。
11.如权利要求3所述的方法,其中,所述第一类型的存储器支持稀疏数据集访问。
12.如权利要求3所述的方法,其中,所述第一类型的存储器支持压缩。
13.如权利要求3所述的方法,其中,所述第一类型存储器支持包括键-值库的结构化数据。
14.如权利要求3所述的方法,其中,访问第二类型存储器要求地址转化,并且其中,访问第一类型存储器不要求地址转化。
15.如权利要求1所述的方法,第一类型的高速缓存器被用于第一存储器路径,并且第二类型的高速缓存器被用于第二存储器路径。
16.如权利要求1所述的方法,还包括在要再使用寄存器的情况下,保存寄存器状态,再使用寄存器,并且当再使用操作完成时,重新加载已保存寄存器状态。
17.如权利要求1所述的方法,还包括检测标记是否指示偏移将被转化成键-值对的值。
18.如权利要求1所述的方法,其中,存储器路径是从处理器到存储器子系统的一部分的路径。
19.一种通过专用存储器访问路径来访问数据集的方法,包括: 用反映专用存储器路径的存储器段的指示加载寄存器; 提供与所述寄存器相关联的偏移指不; 通过参考此寄存器而提取处于关联偏移的值;以及 其中,所述专用存储器路径提供专用存储器数据路径,使得该值被用除正常加载和存储操作所使用的数据路径之外的数据路径提供给处理器。
20.一种用于访问存储器子系统的系统,包括: 存储器子系统; 寄存器,被耦合到包括标记的存储器子系统; 其中,接收将通过寄存器来访问存储器位置的指令;以及 其中,所述标记被配置成用标记值来指示要访问哪个类型的存储器; 存储器控制器,被配置成: 检测寄存器中的标记; 在存在标记值或标记被配置成指示使用第一存储器路径的情况下,经由第一存储器路径来访问存储器子系统;以及 在不存在标记值或标记被配置成指示使用第二存储器路径的情况下,经由第二存储器路径来访问存储器子系统。
【文档编号】G06F12/08GK104364775SQ201380014946
【公开日】2015年2月18日 申请日期:2013年3月15日 优先权日:2012年3月23日
【发明者】D.R.彻里顿 申请人:海坎普系统股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1