CN111316248A - 促进对存储器局部域信息的访问 - Google Patents
促进对存储器局部域信息的访问 Download PDFInfo
- Publication number
- CN111316248A CN111316248A CN201880071960.3A CN201880071960A CN111316248A CN 111316248 A CN111316248 A CN 111316248A CN 201880071960 A CN201880071960 A CN 201880071960A CN 111316248 A CN111316248 A CN 111316248A
- Authority
- CN
- China
- Prior art keywords
- memory
- local
- computing environment
- processing
- domain
- 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 title claims abstract description 403
- 238000012545 processing Methods 0.000 claims abstract description 173
- 238000011156 evaluation Methods 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 91
- 238000013519 translation Methods 0.000 claims description 85
- 230000008569 process Effects 0.000 claims description 64
- 239000000872 buffer Substances 0.000 claims description 42
- 238000004590 computer program Methods 0.000 claims description 19
- 238000004891 communication Methods 0.000 claims description 2
- 230000014616 translation Effects 0.000 description 82
- 230000006870 function Effects 0.000 description 28
- 230000008901 benefit Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 238000007726 management method Methods 0.000 description 8
- 230000006658 host protein synthesis Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008520 organization Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000005056 compaction Methods 0.000 description 4
- 239000004744 fabric Substances 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000002372 labelling Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000003471 mutagenic agent Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000606643 Anaplasma centrale Species 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000011867 re-evaluation Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced 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/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
- 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
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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
- 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
- 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/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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/602—Details relating to cache prefetching
-
- 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
-
- 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
-
- 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/654—Look-ahead translation
-
- 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/657—Virtual address space management
-
- 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/68—Details of 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/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main 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/70—Details relating to dynamic memory management
- G06F2212/702—Conservative garbage collection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
通过确定存储器单元的局部域信息以处理计算环境内的能力,便于计算环境内的处理。在确定后,存储器单元的局部域信息可缓存在数据结构中,以用于与存储器单元对计算环境的处理能力的一个或多个亲和度评估相关联的局部域信息的一个或多个后续查找。
Description
技术领域
本发明涉及促进对存储器局部域信息的访问。
背景技术
在非一致存储器存取(NUMA)系统中,多个处理器通常分布在多个书(例如板或抽屉)上,每本书包括与该书局部的存储器连接的一个或多个处理器。这些书通过网络互连,使得一本书上的处理器也可以访问其它书上的存储器。
NUMA系统中的处理器可以快速和有效地访问局部存储器。然而,当处理器需要访问不同书上的远程存储器时,存在延迟,延迟被称为等待时间。在互连这些书的网络上也存在带宽问题。
发明内容
通过提供用于促进计算环境内的处理的计算机程序产品来克服现有技术的缺点且提供额外优点。该计算机程序产品包括可由处理电路读取并且存储指令的计算机可读存储介质,当执行该指令时执行方法。该方法包括,例如,确定存储器单元对计算环境内的处理能力的局部域信息;以及将存储器单元的局部域信息缓存在数据结构中,以促进与存储器单元对计算环境的处理能力的一个或多个亲和度评估相关联的局部域信息的一个或多个后续查找。有利地,将存储器单元的所确定的局部域信息缓存在数据结构中通过减少随后取得局部域信息的处理开销来促进计算环境内的处理,并且因此增强了系统性能。
在一个或多个实施例中,存储器单元是虚拟存储器单元,并且确定包括将虚拟存储器单元转换成实存储器单元,并且使用实存储器单元来从配置阵列中获取局部域信息,该配置阵列包括关于计算环境的物理组件的系统位置信息。
在一个或多个实施例中,缓存可包括将存储器单元的局部域信息缓存在与计算环境的操作系统或应用相关联的配置阵列缓存器中。在一个或多个其它实现中,缓存可包括将存储器单元的局部域信息缓存在计算环境的转换后备缓冲器中。
在一个或多个实施例中,计算环境是非一致存储器访问(NUMA)计算环境,并且存储器单元对处理能力的局部域信息包括识别存储器单元对其具有基于局部性的亲和度的NUMA计算环境的特定处理域的信息。
在一个或多个实现中,该方法还包括确定存储器单元是否具有对计算环境的多个处理域中的一个处理域的局部亲和度。确定可包括从数据结构取得存储器单元的局部域信息,以用于与计算环境内处理域的局部性进行比较。在一个或多个示例中,数据结构是与计算环境的操作系统或应用相关联的配置阵列缓存或计算环境的阵列转换后备缓冲器中的一者。此外,在一个或多个示例中,该方法可包括当存储器单元的局部域信息与处理域的局部性匹配时,设置指定局部亲和度的指示符。在一个或多个附加实施例中,该方法可以包括基于存储器单元具有对处理域的局部亲和度,由处理域对存储器单元执行垃圾收集过程。
本文还描述并要求保护与一个或多个方面相关的计算机系统和计算机实现的方法。此外,本文还描述并要求保护与一个或多个方面相关的服务。
通过本发明的技术实现了附加的特征和优点。本发明的其它实施例和方面在本文中被详细描述并且被认为是所要求保护的发明的一部分。
附图说明
本发明的一个或多个方面作为示例在说明书结尾处的权利要求中被特别指出并清楚地要求保护。从下面结合附图的详细描述中,本发明的前述和其它目的、特征和优点将变得显而易见,其中:
图1A描绘了用于结合和使用本发明的一个或多个方面的计算环境的一个示例;
图1B描述了根据本发明的一个或多个方面的图1A的书(例如抽屉、板、服务器等)的进一步细节;
图2描绘了根据本发明的一个或多个方面的图1A的书的存储器层级结构的一个示例;
图3描述了结合和使用本发明的一个或多个方面的计算环境的进一步细节;
图4A-4C描述了以结合和使用本发明的一个或多个方面的相对于计算环境的系统架构的各个级别的存储器局部性;
图5A和5B描述了以结合和使用本发明的一个或多个方面的在计算环境中垃圾收集工作队列的替换实现;
图6描绘了结合和使用本发明的一个或多个方面的计算环境的另一示例;
图7A描述了地址转换的一个示例;
图7B描绘了地址转换的另一示例;
图7C描绘了根据本发明一个或多个方面的转换后备缓冲器(TLB)缓存存储器单元的局部域信息的一个示例;
图8描述了结合和使用本发明的一个或多个方面的地址转换设施的一个实施例;
图9描述了以结合和使用本发明的一个或多个方面的计算环境的一个示例的简化示意图;
图10A描述了根据本发明的一个或多个方面的load_domain(负载_域)指令的一个实施例;
图10B描述了根据本发明的一个或多个方面的依照load_domain指令进行处理的一个实施例;
图11描绘了根据本发明的一个或多个方面用于获得计算环境内的存储器单元的局部域信息的处理的替代实施例;
图12描绘了根据本发明的一个或多个方面的用于获得存储器单元的局部域信息的过程的另一实施例;
图13A描述了根据本发明的一个或多个方面,结合将局部域信息缓存在转换后备缓冲器(TLB)内的存储器访问处理的一个实施例;
图13B描述了根据本发明的一个或多个方面,图13A中用于访问存储器和管理局部域信息的处理的另一个实施例,其中存在TLB未命中,并且域信息当前不在转换后备缓冲器中;
图14A描述了根据本发明的一个或多个方面的is_local_domain指令的一个实施例;
图14B描述了根据本发明的一个或多个方面的依照is_local_domain指令来确定(例如,要进行垃圾收集的)存储器单元对于当前处理域是否是局部的处理的一个实施例;
图15A描述了根据本发明的一个或多个方面的存储器管理器初始化处理的一个实施例;
图15B描述了根据本发明的一个或多个方面的存储器管理器初始化处理的替换实施例;
图16描述了根据本发明的一个或多个方面的存储器分配请求处理的一个实施例;
图17描述了根据本发明的一个或多个方面的与例如垃圾收集处理相关联的存储器压缩相关的处理的一个实施例;
图18描述了根据本发明的一个或多个方面的与存储器解除分配(deallocation)相关的处理的一个实施例;
图19A-19B描述了根据本发明的一个或多个方面的促进计算环境内的处理的一个实施例;
图20A描绘了用于结合和使用本发明的一个或多个方面的计算环境的另一示例;
图20B描述了图20A的存储器的进一步细节;
图21描绘了云计算环境的一个实施例;以及
图22描绘了抽象模型层的示例。
具体实施方式
下面参考附图中示出的非限制性示例更全面地解释本发明的各方面及其某些特征、优点和细节。省略了对公知的计算系统、设备、处理技术等的描述,以免不必要地使本发明在细节上变得模糊。然而,应当理解,详细描述和特定示例虽然指示了本发明的各方面,但其仅以说明的方式给出,而不是以限制的方式给出。在本发明的基本概念的精神和/或范围内的各种替换、修改、添加和/或重新安排对于本领域技术人员来说从本公开中将是显而易见的。还注意,本文公开了许多发明方面和特征,并且除非不一致,否则每个公开的方面或特征可与特定应用所期望的任何其它公开的方面或特征组合,例如,用于促进计算环境内的处理,诸如促进计算环境内的基于亲和度域(affinity-domain-based)的处理。
说明性实施例可以仅通过示例而不是限制的方式使用特定代码、设计、架构、协议、布局、示意图或工具来描述。此外,为了描述的清楚,在一些实例中使用特定软件、工具和数据处理环境仅作为示例来描述说明性实施例。说明性实施例可以结合其它相当或类似目的结构、系统、应用或架构来使用。说明性实施例可以以硬件、软件或其组合来实现。
本公开中的示例仅用于清楚描述,而不是限制于说明性实施例。从本公开可以想到附加的数据、操作、动作、任务、活动和操纵,并且在说明性实施例的范围内可以设想这些附加的数据、操作、动作、任务、活动和操纵。
本文列出的任何优点仅是示例,并且不旨在限制说明性实施例。附加的或不同的优点可以通过特定的说明性实施例实现。此外,特定说明性实施例可具有本文所列优点中的一些、全部或不具有本文所列优点。
垃圾收集是自动存储器管理过程,其识别存储器中不再被引用的数据单元(例如,对象),并释放这些对象。为了检测未使用的存储器,垃圾收集过程通常扫描一组动态分配的数据项或堆,并且针对每个存储器位置识别该位置的任何使用是否在应用的存储器中的任何地方是可检测的。垃圾收集可能占用程序中的总处理时间的显著比例,并且因此可能对性能具有显著影响。此外,垃圾收集存储器扫描可能导致实际应用程序(“增变器”)的非期望的长时间暂停。这在某些系统架构中甚至可能被更多地放大,诸如在当今的服务器设计中常见的非一致存储器访问架构,其中存储器位置的子集对于一组处理器比对于另一组处理器更快。
因此,根据一个或多个方面,提供了用于促进基于亲和度域的垃圾收集的能力。在一个或多个实现中,本文公开了基于地址导出的亲和度的关联垃圾收集处理。
首先参考图1A描述了用于结合和使用本发明的一个或多个方面的计算环境的一个示例。在一个示例中,计算环境100基于由美国纽约州阿蒙克市的国际商业机器公司(International Business Machines Corporation)提供的z/架构的一个实施例在IBM公开案第SA22-7832-10号(2015年3月)“z/架构工作原理(z/Architecture Principles of Operation)”中进行描述,其通过全文引用的方式并入本文。注意,是美国纽约州阿蒙克市国际商业机器公司的注册商标。
在另一示例中,计算环境可基于由纽约州阿蒙克市国际商业机器公司提供的PowerPower架构的一个实施例在国际商业机器公司2015年4月9日的“Power ISATM版本2.07B”中进行描述,其通过全文引用的方式并入本文。进一步注意,POWER是美国纽约州阿蒙克市国际商业机器公司的注册商标。
计算环境还可基于其它架构,包括但不限于英特尔x86架构。也存在其它示例。
在一个示例中,计算环境100包括多本书(即,抽屉、板等)102。书包括一个或多个中央处理(CP)集群104(也称为节点)和系统控制器(SC)106(例如,SC芯片)。系统控制器对书102进行互连,并且可以与一个或多个CP集群分离和/或成为一个或多个CP集群的一部分。关于书102的进一步细节将参考图1B进行描述。
如图所示,在一个示例中,书102包括多个(例如,2个)中央处理集群104。中央处理集群104包括多个中央处理器芯片110,每个芯片耦合到系统控制器106。中央处理器芯片110包括一个或多个核120(也称为处理器或中央处理单元(CPU)),例如,每个芯片八个核。此外,在一个示例中,中央处理器芯片110耦合到例如一个或多个双列直插存储器模块(DIMM)122,其提供以供CP集群104使用的存储器。
CP集群104使用主存储器以及存储器缓存器来促进处理。参考图2描述了CP集群104采用的存储器层级的一个示例。在一个示例中,存储器层级200包括主存储器202、共享L4缓存器204、一个或多个共享L3缓存器206、一个或多个专用L2缓存器208、以及处理器120中的一个或多个专用L1缓存器210。在该示例实现中,L4缓存器204是系统控制器106的一部分,其提供到其它书的连接。尽管本文描述了示例存储器层级,但是其它示例也是可能的。
关于CP集群104的一个示例的进一步细节将参考图3进行描述。在一个示例中,CP集群104以通用计算设备的形式被示出。CP集群104可以包括但不限于经由一个或多个总线和/或其它连接310彼此耦合的一个或多个处理器或处理单元304(例如,核120)、存储器306(例如,称为主存储器或存储装置,例如,存储器202)以及一个或多个输入/输出(I/O)接口308。
总线310表示任意多种类型的总线结构中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及处理器或局部总线(使用各种总线架构中的任一者)。通过示例且非限制性地,此类架构包括工业标准架构(ISA)、微通道架构(MCA)、增强ISA(EISA)、视频电子标准协会(VESA)局部总线、以及外围组件互连(PCI)。
存储器306可以包括和/或耦合到例如缓存器320,诸如共享缓存器(例如,L4缓存器204和/或L3缓存器206),其可以耦合到处理器304的局部缓存器322(例如,L2缓存器208和/或L1缓存器210)作为包括将处理器、芯片、CP集群和多本系统中的一个或多个存储器控制器互连的复杂总线系统的缓存层级的一部分。此外,存储器306可以包括一个或多个程序或应用330、操作系统332和一个或多个计算机可读程序指令334,以及垃圾收集逻辑336或指令。在一个或多个实施例中,计算机可读程序指令334可以被配置成执行本发明的方面的实施例的功能。
CP集群104还可以经由例如I/O接口308与一个或多个外部设备340、一个或多个网络接口342、和/或一个或多个数据存储设备344进行通信。示例性外部设备包括用户终端、磁带驱动、指向设备、显示器等。网络接口342使得CP集群104能够与一个或多个网络(诸如,局域网(LAN)、广域网(WAN)和/或公用网络(例如,因特网))进行通信,提供与其它计算设备或系统的通信。
数据存储设备344可存储一个或多个程序346、一个或多个计算机可读程序指令348和/或数据等。计算机可读程序指令可被配置为执行本发明的方面的实施例的功能。
CP集群104可包括和/或耦接到可移动/不可移动、易失性/非易失性计算机系统存储介质。例如,计算机系统102可包括和/或耦接到不可移动、非易失性磁性介质(通常称为“硬盘驱动”)、用于从可移动非易失性磁盘(例如,“软盘”)读取及写入至可移动非易失性磁盘的磁盘驱动器,和/或用于从可移动非易失性光盘(诸如,CD-ROM、DVD-ROM或其它光学介质)读取或写入至可移动非易失性光盘的光盘驱动。应理解,其它硬件和/或软件组件可与CP集群104结合使用。示例包括但不限于:微代码、设备驱动、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动、以及数据档案存储系统等。
CP集群104可与众多其它通用或专用计算系统环境或配置一起操作。可适合于供CP集群104使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机(PC)系统、服务器计算机系统、瘦客户机、厚客户机、手持型或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、主计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。
以上结合图1A-3描述的计算环境是非一致存储器存取(NUMA)计算环境或系统的一个示例。非一致存储器存取(NUMA)是在多处理中使用的计算机存储器设计,其中存储器存取时间取决于相对于处理器的存储器位置。在NUMA下,处理器可以比非局部存储器(即,对于另一个处理器是局部的存储器或在处理器之间共享的存储器)更快地访问处理器自己的局部存储器。在该计算环境中,所有NUMA存储器在单个公共全局地址空间中被系统中的处理器访问,而不管存储器是特定处理器的局部存储器还是非局部存储器。如上所述,在NUMA计算环境中,处理器分布在多个书(例如抽屉或板)上,并且每本书可以包括该书局部的一个或多个处理器连接的存储器。这些书通过如图1A和1B所示的网络互连,使得一个书上的处理器可以访问其它书上的存储器。如上所述,在该计算环境中的垃圾收集可能是耗时的,并且对系统性能具有显著影响。还如上所述,作为垃圾收集过程的一部分的存储器扫描可能在计算上是昂贵的,潜在地导致实际应用程序(“增变器”)的非期望的长暂停。这可能在诸如当今服务器设计中常见的非一致存储器访问系统等计算环境中被放大,在此类计算环境中存储器位置的子集对于一组处理器比对于其它组处理器更快。如在此所公开的,因此,希望在可能的情况下,用具有对这些存储器位置的最快访问的处理器,对应用堆的每组存储器位置执行存储器扫描。
这种关联垃圾收集的一种方式是从已知紧密连接到特定处理器核的存储器池为每个软件执行线程分配堆存储器,并将软件线程绑定到同一核上的硬件执行线程。不利的是,这种组织需要软件栈中的显著的侵入性改变。例如,这种组织将需要请求在附接到特定处理器的存储器中的存储器分配的能力,包括从应用向操作系统的适当请求,以及进一步从操作系统向管理程序的适当请求。而且,其将需要绑定如此分配给处理器节点的存储器,即,当处理器页调出存储器并随后页调入存储器时,页调入发生在对与原始请求的同一处理器分配的存储器上。此外,其将需要将软件线程绑定到硬件处理器,使得在已经分配了附连到处理器的存储器后,执行继续驻留在该核上,从而限制了操作系统和管理程序两者的调度自由度。在该结构中,对于多个线程T(N),存在分配的堆H(T(n)),每个线程T(n)应用从H(T(n))分配堆存储器,并且在进行垃圾收集时,分配给T(n)的垃圾收集工作者线程执行堆的扫描。不幸的是,这种方式在自由分配存储器、自由分配执行线程的能力方面将是非期望地限制性的,并且在需要改变系统接口方面过于侵入,导致降低的系统效率以及不能将该关联垃圾收集处理应用到传统系统。因此,需要一种不同的方式,用于例如在传统系统中执行更有效的垃圾收集,同时还保留操作系统和管理程序做出有效的资源分配决定的自由度。
有利地,本文公开了基于地址导出的亲和度的关联垃圾收集过程。根据一个或多个方面,提供了用于促进对处理器分配垃圾收集操作的方法、系统和计算机程序产品,该处理器最紧密地耦合到垃圾收集操作被分配到其上的存储器区域(在此也称为处理器的亲和度域)。注意,在本文提供的描述中,局部域、亲和度域或域可以互换使用。在一个或多个实施例中,局部域可具有多个存储器位置、单元等,并且是例如相对于一个或多个处理器例如具有共同存取性能或多个特性的域。在一个或多个实现中,局部域可由数字或描述来识别。取决于讨论,局部域也可以表示对特定处理器或处理器组而言最局部的特定存储器。
作为示例,并且如本文进一步解释的,关联垃圾收集过程可包括确定存储器区域被分配了什么亲和度域或局部域,并且基于所确定的局部域,可执行测试以确定该局部域是否对应于所考虑的特定(例如,当前)处理器的局部域。基于局部域匹配,在该特定处理器上(立即或通过在该特定处理器的工作队列(例如,垃圾收集工作队列)中对垃圾收集操作进行排队)发起(或指示发起)垃圾收集操作。否则,存储器区域可由具有匹配局部域的另一处理器扫描,且不由特定(例如,当前)处理器扫描。
在此讨论了各种实施例。在一个实施例中,讨论了反映传统垃圾收集工作队列的一致工作队列。可以确定特定处理器何时获得元素,并且当该工作不对应于特定处理器的工作域时跳过该工作。在另一个实施例中,可以在入队操作时进行确定。还可以使用各种硬件实施例,存储器区域的局部域基于这些硬件实施例。在一个实施例中,硬件实施例提供了测试“这个区域(或位置、或页等)是在当前处理器上吗?”在另一实施例中,硬件可提供返回区域的特定局部域的指令。在此还描述了通过垃圾收集服务操纵的垃圾收集线程局部化的实施例。
如上所述,垃圾收集访问大量数据,以便扫描存储器以寻找可重用的存储器。作为示例,在IBM系统z/架构中,系统架构的至少一个级别(即,书级别)的等待时间可能明显不一致,从而使得期望在书局部处理器上执行垃圾收集扫描和压缩。当前,在系统z/架构中,不存在针对请求从特定书的存储器中对存储器进行分配的机制,使得难以将存储器与特定书相关联。因此,本文公开了允许在其中管理程序和操作系统不向应用提供接口以在所选局部域上分配多个块的系统中可用的局部垃圾收集扫描和压缩的益处的方法、系统和计算机程序产品。
标记和扫描垃圾收集算法体现垃圾收集的一种方式。利用这种算法,从程序变量开始探测指针,并且标记所遇到的所有记录。然后,对堆中的所有记录进行扫描,并且回收任何未标记的记录,并且所有已标记的记录被标记为未标记。该方式的假设是每个记录的大小是已知的,作为指针的字段是已知的,并且回收的记录被保存在空闲列表中。
仅作为特定示例,Boehm-Demer-Weiser(BDW)标记和扫描垃圾收集器由于其可移植性和语言独立性而是流行的垃圾收集器。其优化了称为模糊根垃圾收集器的一类垃圾收集器。该垃圾收集器可用于通过假设任何字长的值是潜在的应用存储器堆引用来放弃关于对象布局的根和知识的精确信息。任何含糊地出现以引用应用存储器堆的值,尽管可能简单地具有看起来像应用存储器堆引用的值,但该值被用作为存储器引用,并且其所引用的对象被认为是“活动的”,即,不是垃圾收集的候选者。被模糊引用的对象不可移动,因为它们的模糊根不可用对象的新地址重写,即,如果模糊值实际上不是存储器引用,而仅仅看起来像存储器引用,则其仍然不应当被修改。BDW垃圾收集器模糊地对待寄存器、静态区域和线程激活栈。如果对象布局信息可用(例如来自应用程序员或编译器),则BDW垃圾收集器可以利用该信息,但是否则,包含在对象中的值也被含糊地处理。
模糊根垃圾收集器的优点在于其与应用编程语言和编译器的独立性。BDW垃圾收集器支持对以C和C++编码的应用的垃圾收集,这排除了准确的垃圾收集,因为它们不是数据类型安全的。BDW还经常与数据类型安全语言一起使用,其编译器不提供支持准确的垃圾收集所必需的精确信息。最低要求是源程序不隐藏来自垃圾收集的存储器引用,并且编译器不执行隐藏来自垃圾收集的存储器引用的变换。因此,BDW垃圾收集可能比任何其它垃圾收集器用于更多样化的设置。结果,BDW垃圾收集器已经被严重调整,既用于基本性能,也用于最小化模糊根的负面影响。
注意,通过非限制性示例的方式呈现上述BDW标记和清除垃圾收集器。各种垃圾收集器(包括其它标记和清除收集器)以及其它垃圾收集方式(诸如基于复制的收集器或世代式收集器)可结合本文所公开的实施例来实践。一般地,在一个或多个方面中,本文公开了一种过程,该过程包括决定局部地执行工作,以及例如按照处理器亲和度来访问或维护要由收集器执行的工作单元。
标记和清除垃圾收集(诸如由BDW垃圾收集器实现的)的基本结构是深度优先搜索应用存储器堆上的所有可达指针。为此,使用来自应用的寄存器文件、应用栈和数据段中的已知根的初始根指针组来找到对应用的存储器堆的存储器引用。这是通过启动具有这些已知根的标记栈来实现的。
标记阶段从标记栈中移除应用存储器堆地址,并使用存储器引用结合关于指向所发现的指针的对象的信息来提供存储在该对象中的任何指针。关于对象的必要的最小量的信息是在其开始地址和长度中,开始地址和长度可以从存储器分配器获得。对于这种对象,任何适当对准的数据字都可以是合法的指针。然后,将以这种方式找到的任何新发现的合法应用存储器堆地址推到标记栈上,并且在标记阵列中标记可达对象。该算法重复,直到应用存储器堆为空。以下代码段是标记和扫描算法的示例:
在算法遍历了所有可达应用存储器堆对象后,标记位表示所有可达对象的位图。可以使用在应用存储器堆上的线性扫描来解除分配所有未标记的对象。以下代码段是标记和扫描算法的一个实施例的扫描和空闲列表编译的示例:
如上所述,诸如以上概述的具有标记和扫描算法的递归方法可能由于需要太多资源执行功能而影响性能。上述一般标记和扫描算法的一种替代方式是在垃圾收集工作队列上实现循环,而不是递归方式。使用这种方式,并且仅作为示例,标记和扫描算法的标记部分可以被修改如下:
上述处理有利地将基本标记和扫描算法转换成基于入列的算法,其中管理队列以建立基于局部域的垃圾收集处理所需的局部关系,如本文所公开的。
可以在各种系统架构级别上实现本文公开的基于局部域的垃圾收集处理。图4A-4C描述了可以利用这些概念的不同系统级的示例。在图4A中,示出了NUMA计算环境的书0(B0)和书1(B1)102,其还包括诸如上面结合图1A-3所述的书(或抽屉或板)级互连。每个书102包括(在该示例中)多个CPU芯片120,每个CPU芯片具有芯片局部域,以及多个存储器通道400,每个存储器通道具有与同一芯片120上的处理器不同的局部特性。如图4B所示,应用图像410可以跨越多个局部域层级上的多个局部域中的存储器通道上的处理器和存储器。图4C描绘了图4A的计算环境,其中系统控制器芯片106被示为向所描绘的架构添加另一层级。在该实现中,示出了多个存储器通道400,其具有与同一CPU芯片120上的处理器不同的局部特征。在所示的架构中,存在CPU芯片局部域和系统芯片局部域两者。如所解释的,应用或应用图像可以具有针对其分配的不同的CPU芯片中的不同处理器,并且具有不同的局部存储器或不同的存储器通道,并且可以跨越不同的书(或抽屉、板等)。即,单个应用可以利用在多个书上运行的多个处理器。
作为进一步的解释,并且如上所述,在一个实施例中,诸如图5A中所示的一致(或全局)工作队列可与如本文所公开的关联垃圾收集处理一起使用。单个一致或全局工作队列实现可有利地用于其中提供垃圾收集工作队列的某些传统系统中。根据一个或多个方面,使用如图5A中所示的一致或全局垃圾收集工作队列的垃圾收集处理的一个实施例可以采用(仅作为示例)诸如以下的算法:
在此过程中,获得候选地址的局部域(或存储器区域),并且然将其与当前处理器的局部域进行比较。假设存在匹配,则垃圾收集处理被分配给该处理器。使用这种方式,处理器仅在局部域匹配时才执行垃圾收集处理。在另一个实施例中,当工作队列中没有可用于处理器的局部条目时,垃圾收集工作器(即,处理器)可以执行非局部GC存储器区域扫描。该过程的一个示例性实现可以是:
利用这种方式,如果处理器运行完局部存储器以对其执行垃圾收集,则该处理器可以分担其它处理器的垃圾收集工作量,以便更快地完成整个垃圾收集工作。
如上所述,在另一实现中,工作队列可以在计算环境的一个或多个架构级上针对每一局部域分配。在图5B的示例中,每本书102(图1A-4C)被分配一个工作队列。该实现假定映射对于入列到正确的域队列中是足够稳定的,并且当从工作队列中取得项时仍然允许正确的分配。在一个或多个实施例中,对应于局部域的每个工作队列可被分配在对应于该局部域的存储器中。
可以根据架构内的局部域的所需数量来利用任何数量的工作队列。例如,可以利用CPU芯片级和/或系统芯片级的局部域。在这种方式中,GC处理被简化,因为处理器仅在相关联的(即,局部化的)工作队列结构中的存储器上工作。仅作为示例,利用这种方式来实现垃圾收集处理的一个实施例可以是:
while(!empty(myWQ)){
next_candidate_address=mq_head->address;
do_gc(next_candidate_address);
mq_head++;
}
在这种多个工作队列的实现中,在处理器不具有进行垃圾收集的局部存储器的情况下,也可以由处理器实现负载共享。这种过程的示例可以是:
注意,在多队列环境中,需要在最初做出将工作项(即,要经历垃圾收集的存储器区域)放置在哪里的决定。该代码的示例可以包括:
还注意,在一个或多个实施例中,处理器可以是亲和度或局部感知的,并且(例如)在处理器没有额外的局部域存储器要扫描时优先考虑下一个最近的存储器端口。这种处理的示例可以是:
根据一个或多个进一步的方面,提供了以下能力,以用于促进获得存储器的域信息,以及确定存储器单元相对于计算环境(诸如上面讨论的NUMA计算环境)的当前处理域的局部性,用于促进基于亲和度域的垃圾收集。
下面参考图6描述了用于以结合和使用本发明的一个或多个方面的计算环境的另一示例。参考图6,在一个示例中,计算环境600可以再次基于由纽约阿蒙克市的国际商业机器公司提供的z/架构。在另一个示例中,计算环境可以基于由美国纽约阿蒙克市的国际商业机器公司提供的POWER体系结构。
计算环境600包括提供虚拟机支持的中央处理器复合体(CPC)602。CPC602经由一个或多个控制单元608耦合到一个或多个输入/输出(I/O)设备606。中央处理器复合体602包括例如耦合到一个或多个中央处理器(又名中央处理单元(CPU))610的处理器存储器604(又名主存储器、主存储装置、中央存储装置)以及输入/输出子系统611,下面描述其中的每一个。
处理器存储器604包括例如一个或多个虚拟机612、管理虚拟机的虚拟机管理器(诸如管理程序614)、以及处理器固件615。管理程序614的一个示例是由纽约阿蒙克市的国际商业机器公司提供的管理程序有时被称为主机。此外,如本文所使用的,固件包括例如处理器的微代码和/或毫代码。其包括例如在实现更高级的机器代码中使用的硬件级指令和/或数据结构。在一个实施例中,其包括例如专有代码,该专有代码通常作为包括可信软件的微代码或底层硬件专用的微代码来传递,并且控制操作系统对系统硬件的访问。
CPC的虚拟机支持提供了操作大量虚拟机612的能力,每个虚拟机能够与不同的程序620一起操作并且运行客户操作系统622,诸如Linux。每个虚拟机612能够用作单独的系统。也就是说,每个虚拟机可以被独立地重置,运行客户机操作系统,并且利用不同的程序来操作。在虚拟机中运行的操作系统或应用程序看起来可以访问整个系统,但是实际上,仅系统的一部分是可用的。
处理器存储器604被耦合到中央处理器(CPU)610,其是可分配给虚拟机的物理处理器资源。例如,虚拟机612包括一个或多个逻辑处理器,每个逻辑处理器表示可以动态分配给虚拟机的物理处理器资源610的全部或份额。在一个或多个实施例中,中央处理器610可以包括诸如本文所描述的地址转换设施630。
另外,在一个实施例中,每个CPU610是在处理核(也称为核)632内执行的硬件线程。核包括一个或多个线程,并且在该示例中,核632包括四个硬件线程。在其它示例中,计算环境可以包括一个或多个核,并且每个核可以包括一个或多个硬件线程。
如上面结合图1A-3所提出的,在一个或多个实现中,计算环境600可以是非一致存储器访问(NUMA)计算环境或系统。如所解释的,在该计算环境中,处理器存储器604可以被分配到例如横跨一个或多个核、处理器或中央处理单元(诸如中央处理单元610)。此外,如上所述,可以在NUMA计算环境(包括在CPU级别处)中定义局部域的各个级。在一个或多个实现中,连接到特定CPU610的处理器存储器604可以被认为是该处理器局部的。
此外,处理器存储器604被耦合到I/O子系统611。输入/输出子系统611引导输入/输出控制单元608和设备606与主存储器604之间的信息流。输入/输出子系统611被耦合到中央处理复合体,因为其可以是中央处理复合体的一部分或者与中央处理复合体分离。
在一个示例中,虚拟机的模型可以是V=V模型,其中虚拟机的实存储器或绝对存储器可以由主机虚拟存储器而不是实存储器或绝对存储器来支持。每个虚拟机具有连续的虚拟存储器空间。物理资源可以由主机614管理,并且共享的物理资源可以由主机根据需要分派给客户操作系统,以满足它们的处理需求。该V=V虚拟机(即,可分页客户机)模型假设客户机操作系统和物理共享机器资源之间的交互由主机控制,因为大量客户机通常排除主机简单地划分硬件资源并将硬件资源分配给所配置的客户机。
在一个实施例中,主机(例如,)和处理器(例如,系统z)硬件/固件以受控的协作方式彼此交互,以便处理客户操作系统操作而不需要从/向客户操作系统和主机转移控制。客户机操作可以经由允许将要为客户解释性地执行指令的设施(包括可分页存储模式客户机)直接执行,而无需主机干预。该设施提供了主机可以发布的指令(开始解释执行(SIE)),该指令指定了称为状态描述的控制块,该控制块保持客户(虚拟机)状态和控制,诸如执行控制和模式控制。该指令将机器置于解释执行模式,其中客户指令和中断被直接处理,直到出现需要主机注意的条件。当出现这种条件时,解释执行结束,或者呈现主机中断,或者SIE指令完成存储所遇到的条件的细节;后一动作被称为拦截。
本文描述的计算环境支持架构功能,例如动态地址转换(DAT)。在操作系统的适当支持下,动态地址转换设施可以用于向用户提供其中存储装置看起来大于在配置中可用的主存储装置(也称为主存储器)的系统。该明显的主存储装置被称为虚拟存储装置,并且用于指定虚拟存储装置中的位置的地址被称为虚拟地址。用户的虚拟存储器可能远远超过配置中可用的主存储装置的大小,并且通常被保持在辅助存储装置(例如,不能直接寻址的存储装置)中。虚拟存储装置被认为是由被称为页的地址块组成。仅最近引用的虚拟存储装置的页被分配以占用物理主存储装置(例如,随机存取存储器(RAM))的块。当用户引用在主存储器中未出现的虚拟存储装置的页时,该页被带入以替换主存储装置中不太可能被需要的页。存储装置的页的交换可以由操作系统在用户不知道的情况下执行。
此外,在虚拟计算环境中,解释性执行架构提供了用于绝对存储的存储模式,称为可分页存储模式。在可分页存储模式中,主机级的动态地址转换用于映射客户机主存储装置。主机具有通过使用主机DAT将可分页存储模式客户机的实存储分散到主机实存储装置中任何位置的可用帧并将客户机数据页调出到辅助存储装置的能力。该技术在分配实机器资源时提供了灵活性,同时保留了用于客户机的绝对存储的连续范围的预期表现。
虚拟机环境可以多次调用DAT的应用:首先在客户机级通过客户机管理的转换表将客户虚拟地址转换成客户非虚拟地址,然后对于可分页客户机,在主机级将相应的主机虚拟地址(即客户非虚拟地址)转换成主机非虚拟地址,例如主机实地址或绝对地址。
与虚拟存储装置相关联的虚拟地址序列被称为地址空间,并且动态地址转换设施可以用于提供多个地址空间。这些地址空间可以用于提供用户之间的隔离度。该支持可以包括用于每个用户的完全不同的地址空间,从而提供完全的隔离,或者共享区域可以通过将每个地址空间的一部分映射到单个公共存储区域来提供。还提供了允许半特权程序访问一个以上这种地址空间的指令。动态地址转换提供了例如来自多个不同地址空间的虚拟地址的转换,而不需要改变控制寄存器中的转换参数。
动态地址转换是在存储引用期间将虚拟地址转换成相应的实地址或绝对地址的过程。动态地址转换可以针对由CPU生成的指令和数据地址来指定。在一个实施例中,通过动态地址转换形成的实或绝对地址以及然后通过加前缀形成的绝对地址的长度为64位。虚拟地址可以是主要虚拟地址、次要虚拟地址、存取寄存器(AR)指定的虚拟地址或归属虚拟地址。分别借助于主要、次要、AR指定或归属地址空间控制元件(ASCE)来转换地址。在选择适当的地址空间控制元素之后,转换过程对于所有四种类型的虚拟地址是相同的。地址空间控制元素可以是段表指定或区域表指定。段表指定或区域表指定使得转换将要借助于由操作系统在实或绝对存储装置中建立的表来执行。
在使用段表指定或区域表指定的转换的过程中,三种类型的信息单元是识别的-区域、段和页。因此,虚拟地址被分成四个字段。在一个示例中,位0-32被称为区域索引(RX),位33-43被称为段索引(SX),位44-51被称为页索引(PX),且位52-63被称为字节索引(BX)。虚拟地址的RX部分本身被分成三个段。在一个实施例中,位0-10被称为区域第一索引(RFX),位11-21被称为区域第二索引(RSX),而位22-32被称为区域第三索引(RTX)。
参考图7A描述了将虚拟地址转换为实地址的一个示例。该过程在这里被称为DAT走(walk)(或页走),其中,地址转换表被走以将一个地址(例如,虚拟地址)转换为另一地址(例如,实地址)。在该示例中,地址空间控制元素(ASCE)700包括表原点702,以及指定类型(DT)控制704,其是转换的开始级别的指示(即,在层级地址转换中的哪个级别开始的指示)。使用表原点702和DT704,定位特定表的原点。然后,基于该表,虚拟地址的位被用于索引到特定表中以获得下一级表的原点。例如,如果选择了区域第一表(RFT)706,则虚拟地址的位0-10(RFX)708被用于索引到区域第一表中以获得区域第二表(RST)710的原点。然后,虚拟地址的位11-21(RSX)712被用于索引到区域第二表310中以获得区域第三表(RTT)714的原点。类似地,虚拟地址的位22-32(RTX)716被用于索引到区域第三表714中以获得段表718的原点。然后,虚拟地址的位33-43(SX)720被用于索引到段表718中以获得页表722的原点,并且虚拟地址的位44-51(PX)724被用于索引到页表722中以获得具有页帧实地址(PFRA)726的页表条目(PTE)725。然后,将页帧实地址与偏移728(位52-63)组合(例如,连接)以获得实地址。然后可以应用加前缀以获得相应的绝对地址。
参考图7B描述了地址转换的另一示例。在该示例中,执行DAT走以将初始客户机虚拟地址转换成最终主机实地址。在这个示例中,地址空间控制元素(ASCE)700是客户机地址空间控制元素,并且ASCE700的DT704指示由客户机地址转换结构760确定的客户机转换将在由表原点702指向的区域第一表706处开始。因此,初始客户机虚拟地址(例如,RFX708)的适当位被用于索引到区域第一表706中以获得区域第一表的条目的指针。区域第一表项(RFTE)的地址是客户机实地址或绝对地址。在应用了主存储装置原点和限制的情况下,该客户机实或绝对地址对应于主机虚拟地址。然后,使用主机地址转换结构770来转换该中间主机虚拟地址。具体地,地址空间控制元素(ASCE)750是用于指示主机地址转换结构772中的转换的开始级的主机地址空间控制元素。基于由ASCE750的DT 754指示的开始级(例如,区域第一表),主机虚拟地址的特定位被用于索引到所指示的表中,其中表原点752将要用于使用主机地址转换结构772的转换,如参考图7A所描述的。继续进行与客户机RFTE相对应的主机虚拟地址的转换,直到获得主机页帧实地址(PFRA)774a。
中间主机页帧实地址处的数据是指向客机地址转换结构的下一级(例如,在该特定示例中,客机区域第二表710)的指针,并且转换继续,如上所述。具体地,主机地址转换结构776、778、780和782用于分别转换与客机区域第二表710、区域第三表714、段表718和页表722相关联的中间主机虚拟地址,从而分别产生主机PFRA 774b、774c、774d和774e。主机页帧实地址774e包括客户机页表条目725的地址。客机页表条目725包括客机页帧实地址726,其与从初始客机虚拟地址的偏移连接以获得相应的客机绝对地址。然后主存储原点和限制被应用来计算对应的主机虚拟地址,然后如上所述,使用地址转换结构784来转换该主机虚拟地址,以获得主机页帧实地址774f。然后,将主机页帧实地址与主机虚拟地址的偏移(例如,位52-63)结合(例如,连接),以获得最终主机实地址。这完成了客机虚拟地址到主机实地址的转换。
尽管在以上示例中,转换开始于区域第一表,但这仅是一个示例。对于客户机或主机,转换可以在任何级开始。
此外,在一个实施例中,为了改进地址转换,虚拟地址到实或绝对地址转换映射可以存储在与地址转换相关联的结构的条目中,例如转换后备缓冲器(TLB)。TLB是由存储器管理硬件用来改进虚拟地址转换速度的缓存器。下一次请求虚拟地址的转换时,将检查TLB,如果TLB中存在TLB命中,则从其中取得实或绝对地址。否则,如上所述,执行页走。
在一个示例中,如图7C所示,转换后备缓冲器790可以包括一个或多个条目792。条目可以用于计算环境的主机或客户机,并且可以用指示符或值来标记。此外,DOM指示符794可被提供以供如下所述使用。(例如,DOM指示符可以存储局部域,或者可替换地,局部域指示符(例如,域是局部的,域不是局部的),根据本发明的一个或多个方面。进一步地,条目可以与地址转换表的页表条目、区域表条目或段表条目相关联。转换后备缓冲器的许多实施方式是可能的。
如所指示的,客机转换可被包括在TLB中。这些条目可以是隐含地包括一个或多个主机转换的复合客机/主机条目。例如,客户机虚拟TLB条目可缓冲从初始客户机虚拟地址向下到最终主机实或绝对地址的整个转换。在这种情况下,如以上图7B中所述,客机TLB条目隐式地包括所有中间主机转换772、776、778、780和782以及最终主机转换784。在另一个示例中,层级TLB可包含TLB的第一级中的条目,其缓冲从初始客户机虚拟地址向下到客户机页表722的关联的原点的转换。例如,该第一级条目表示组合的区域和段表条目(CRSTE),且可称为TLB的CRSTE部分。此外,层级TLB可包含与第二级TLB分离的条目,其缓冲从客户机页表条目地址向下到最终主机实或绝对地址的转换。在该示例中,第一级TLB中的客户机条目隐式地包括对应于支持客户机区域和段表的主机转换的中间主机转换772、776、778和780,而第二级TLB中的客户机条目隐式地包括支持客户机页表的中间主机转换782和最终主机转换784,如图7B中所描述的。转换后备缓冲器的许多实施方式是可能的。
图8描述了可以根据本发明的一个或多个方面使用的地址转换设施800的一个实施例。如图所示,地址转换设施800可包括输入多路复用器810,其多路复用转换请求,请求包括例如针对TLB 801的加载存储单元(LSU)查找请求和针对TLB 802的数据缓存(DC)查找请求(其中表缓存在数据缓存器内实现)。将选择的TLB查找请求803转发到转换后备缓冲器(TLB)820以及转换引擎830。在TLB未命中时,TLB请求基于TLB查找请求803而发起或启动转换引擎830。注意,如果存在TLB命中,则将TLB查找结果805写入到(例如)可位于数据缓存器中的表缓存器840。假设存在TLB未命中,则转换830处理查找请求,并且在这样做时,可将表获取请求806发送到表缓存器840,其返回获取结果807。转换引擎830将转换结果808写入TLB 820,以便在下一次选择发起TLB查找请求时,转换结果将在TLB820内,从而导致请求命中。
如最初所注意到的,随着处理器设计继续变得越来越不对称和不一致,将处理任务步置到对于给定存储器单元(例如,位置、地址、区域、页等)具有最低或最佳等待时间和最佳带宽特性的处理器(或更一般地,放置到处理域)变得越来越有利。如上所述,在NUMA计算环境中,实存储器被连接到特定处理域或与特定处理域相关联,例如特定处理器核、处理器芯片、处理器模块、处理器书和其它物理结构,而不是由共享的单个对称交换机统一访问。因此,最靠近存储器的元件对于该存储器具有更好的存取特性。
在另一方面,如本文结合完全虚拟化系统和/或结合传统软件栈所描述的,可有利地使用对存储器的性能亲和度和物理局部域的发现。在这些上下文中,希望提供识别存储器单元到特定处理域的亲和度或局部性的机制。
在半虚拟化系统中,例如PHYP及其实现的PAPR规范,提供了用于请求连接到特定处理器或处理器节点的存储器的机制。然而,这些系统要求将要经由管理程序调用执行的存储器管理,而不是直接在操作系统或应用中执行的。
如本文所讨论的,为了使应用能够定位靠近存储器的处理器上的处理,有必要确定存储器相对于处理能力的亲和度,使得存储器单元上的处理任务可以被放置在适当的处理域(例如,处理器)上或由适当的处理域执行。因此,根据本文公开的一个或多个方面,提供了用于查询存储器单元的亲和度或局部性的接口,以例如促进计算环境内的处理,诸如促进基于域的垃圾收集过程。
根据一个实施例,提供了指令(load_domain),该指令占用存储器单元并提供该存储器的物理局部域信息。在一个实施例中,域信息可以是唯一地识别存储器的一个或多个与位置相关(或与亲和度相关)的属性(例如,识别相关的处理器核、节点、书等)的数字。根据一个方面,查询响应可以唯一地识别最接近的处理域或能力,并且可以用于经由例如通过对记载或合并系统结构的表的查找或者通过提供该表的系统调用等来获得物理系统信息从而导出下一个最接近的处理能力等。
根据一个或多个方面,可以提供系统调用或指令中的至少一个,以便针对存储器单元获得处理器标识(ID)或令牌,该处理器标识(ID)或令牌识别其对应的区域标识符(例如,区域号码,诸如书编号、处理器编号等)。在另一实施例中,可返回指针,其中指针提供关于存储器所对应的层级和节点的信息或到每一处理元件的距离的信息。在又一实施例中,可提供获取存储器地址和处理器标识符且将存储器位置的距离返回到被识别的处理器的指令。如果需要,该距离可被标准化和抽象化。
在一个或多个实现中,本文所公开的功能可被限于受信任应用,例如由管理员执行签名的、设置UID和/或程序,以防止应用发现系统细节。
图9描述了计算环境(诸如上述NUMA计算环境)的一个实施例,该计算环境被描述为简化的示例性转换结构,该转换结构包括书102以及例如配置(config)阵列900、一个或多个主机901和一个或多个客机系统或虚拟机902。在一个或多个其它实现中,书102(诸如在上述z/Architecture计算环境中的)可以被其它域级处理所替代,诸如芯片、连接到核的存储器端口等。配置阵列900可以包括物理系统信息,该信息指定(或指示)例如特定存储器位于计算环境内的什么位置。例如,配置阵列900可以包括系统内物理存储器的局部域信息905。根据本文所公开的一个或多个方面,该信息可经由地址转换过程来访问或作为地址转换过程的一部分。具体地,在获得主机实际或绝对地址后,该地址可用于引用配置阵列,并且具体地,引用阵列内的局部域信息以获得计算环境的特定存储器区域的域信息。
图10A描述了根据本发明的一个或多个方面的load_domain(加载_域)(或getdomain)指令的一个实施例。如图所示,load_domain指令可以包括例如一个或多个操作码字段1000,其包括指示load_domain操作的操作码(opcode),以及在所描述的示例中,包括地址操作数1001,用于确定作为地址转换过程的一部分的指定地址的域,以及包括目标返回(RT)字段1002,其指示用于加载域操作的目标返回值。处理load_domain指令可以包括例如,对于给定的存储器地址、位置、区域(这里通常称为存储器的单元(或存储器单元))等,确定相对于期望的处理结构级别(例如NUMA计算环境的书级别)的局部域信息。域信息可以作为例如单个数字或作为打包描述结构的地址返回。该处理可以涉及走多级页表,并且访问计算环境的配置阵列(config阵列)内的信息,即域信息。如下所述,然后可以将局部域信息缓存在诸如配置阵列缓存器的数据结构中,或者缓存在转换后备缓冲器中,以便在下一次需要地址查找时,可以减少用于取得信息的处理开销。
图10B描述了与load_domain指令相关联的处理的一个实施例。如图10B所示,加载域处理1001可包括执行地址转换1010以获得主机实(或绝对)地址,然后使用该主机实地址来执行配置阵列查找1020,以例如获得该实地址的域信息,并返回域信息1030,该域信息1030然后可被缓存在例如配置阵列缓存器(CAC)中或转换后备缓冲器(TLB)1040中,这完成了加载域处理1003。
注意,本文公开的处理对计算环境作出了若干假设。例如,假设存储器不以子页粒度在域之间条带化。然而,如果存储器被条带化,则有可能通过在设定域开始条带化并进而遵循一种模式或者通过所有页遵循同一模式来解决条带化。因此,这些基于模式的条纹也可以由本文描述的处理来处理。此外,假设为了可达,每个页面将在硬件中具有TLB转换条目。
计算环境内的处理效率可通过高效地提供数据来增强。为了访问局部域信息,在架构的转换之后,可以在配置阵列中提供查找,例如上面所描述的。处理可通过使配置阵列可访问和/或通过使配置阵列可有效访问来增强。此外,通过采集数据结构中的局部域查找的结果,并提供寻找或引用该信息的方式,可以提高效率。针对该缓存数据结构的多种方式是可能的。例如,操作系统或应用可以具有与其相关联的配置阵列缓存器,在一个或多个实施例中,该配置阵列缓存器可以由虚拟地址直接访问,从而避免在先前已经获得了所需的局部域信息的情况下将进行地址转换的需要。在一个或多个实施例中,该配置阵列缓存器可由应用维护。注意,任何应用维护的存储结构都可用于此目的。图11描述了可能涉及的处理的一个实施例。如图所示,作为执行地址转换1100的一部分,可确定所需局部域信息在配置阵列缓存器中是否局部可用1110。如果"否",则执行配置阵列查找1120,将相关配置阵列信息提取到配置阵列缓存器中1130。利用配置阵列缓存器中的域信息,局部域信息可被返回1140。
如上文结合图7C所述,在另一实施例中,局部域信息(一旦取得到)可缓存在例如转换后备缓冲器中。图12中描绘了其一个实施例,其中与执行地址转换相关联1200,所需局部域信息可从相应TLB条目(例如,如图7C中的DOM字段所示)获得1210,并将其返回1220。注意,在这点上,使用TLB结构来管理所取得的局部域信息在域信息很小(诸如几位)的情况下可能是有利的。这种方式可能比单独的配置阵列缓存更有效,单独的配置阵列缓存导致阵列处理开销。
图13A和13B描绘了用于提供或更新TLB结构内的特定存储器单元的局部域信息的示例实施例。在图13A中,示出了存储器存取过程,其例如包含执行例如上文所描述的地址转换1300,以及确定是否存在TLB命中1310。如果"否",则可执行TLB"走"1320,如上所述。假定存在TLB命中,则可使用例如配置阵列来访问存储器1330,并且可将数据和配置阵列信息发送回TLB 1340。如果在TLB中尚未存在特定页表条目1350的局部域信息,则可用局部域信息更新TLB 1360,且可返回数据1370。
图13B描绘了局部域信息请求的一个实施例,其中所需信息当前不在TLB结构中。执行地址转换1300,进行是否存在TLB命中的询问1310。如果"是",则返回所需局部域信息1395。否则,存在TLB走1320,如上所述,且所请求的局部域信息从系统配置阵列获得1380。注意,如果需要,局部域信息可被伪装为假负载。TLB结构(例如图7C中所示)用局部域信息更新1390,且可返回该信息1395。
本领域技术人员将注意到,可以采用对本文讨论的处理的各种增强。例如,一个或多个附加助手函数可用于识别诸如存储器范围的位置的范围。可获得相关联的局部域的开始,且可识别属于同一局部域的所有存储器位置。即,例如,如果需要找到与特定存储器芯片相关联的存储器地址,则可以找到存储器的局部范围。在一个或多个实施例中,可以识别诸如1兆字节或1千兆字节页的大存储器区域,使得可以一次针对大量地址而获得或指定局部域信息。这样,处理可以避免测试下一个例如百万个存储器地址的局部性。
图14A描述了根据本发明的一个或多个方面的is_local_domain指令的一个实施例。如图所示,is_local_domain指令可以包括例如一个或多个操作码字段1400,其包括指示is_local_domain操作的操作码,以及例如用于确定存储器是否是局部的过程的地址位置或存储器单元1402,以及可以是结果标识符的可选的结果指示符1404。在一个或多个实现中,结果标识符可以指示指定的存储器单元或地址对于诸如处理器的处理域是局部的还是非局部的。例如,is_local_domain指令可以根据指定的地址是在连接到局部处理器的存储信道上的局部域中还是远程的而将标志设置为真或假。注意,该指令可能存在变化,其可指定局部性级别作为指令的一部分或者作为操作数,即,存储器是连接到局部处理器还是连接到相同局部板上的处理器中的一个处理器的存储器等。此外,局部性可以相对于另一种结构(例如,相对于系统芯片,板等)来指定。因此,在一个或多个实现中,可以在确定是否存在对例如处理器的局部亲和度时考虑接近级别。
图14B描述了与is_local_domain指令相关的处理的一个实施例。如图14B中所说明,is_local_domain处理1401可包括获得存储器单元或地址1410,以及获得例如当前处理器的局部域1420。处理确定存储器单元是否是局部的1430。如果"是",则可以设置指定局部亲和度的结果指示符1440,这完成了is_local_domain处理1445。否则,如果存储器单元(或地址)不是局部的1430,可以设置指定局部亲和度的结果指示符1435,这完成了处理。
注意,在一个或多个实施例中,结果指示符可以是条件代码或其它指示符,例如标志,以提供关于指定的存储器单元是否是局部的信息。
在一个或多个实现中,可以提供可选的服务功能。例如,可以提供domain_range或local_domain_range指令以提供局部域的大小,例如,对自然对齐的大小进行编码,并且可以结合所提供的地址来使用。此外,可以提供domain_start、domain_end或local_domain_start、local_domain_end,以便于分别定义扩展的指定存储器范围的开始和结束。在一个或多个实施例中,局部性可以根据最小周围大小或具有相同局部性的最大已知程度来定义。
根据一个或多个进一步的方面,提供了创建和管理由诸如硬件处理器(或处理器线程)的处理域使用的存储器池的能力,以促进基于局部域的处理,诸如上述基于亲和度域的垃圾收集处理。该能力在诸如上述NUMA计算环境的计算环境中特别有利。
如本文所述,在特定处理器局部的存储器上执行操作,或者更一般地,在特定处理域局部的存储器上执行操作,有利地促进了计算环境内的处理。然而,在全虚拟化环境中,可能没有请求与特定处理域相关联的存储器的接口。因此,本文公开了创建与不同物理处理域相关联的存储池以便获得局部速度和带宽优势的方式,即使处理器(或处理域)不能从管理者(诸如从操作系统或管理程序)请求这种局部化的存储器。
通常,存储器分配从例如分配给应用的存储器堆发生,并且在存储器分配期间,不考虑空闲存储器到特定处理域的局部性。存储器堆可以是分配给任何请求处理域(例如,处理器)的空闲存储器的列表,并且下一个请求者(例如,处理器)可以从该堆获得例如下一个空闲存储器地址。这在NUMA计算环境中可能是有问题的,在NUMA计算环境中,空闲存储器可能与计算环境内的多个不同局部域相关联,而下一个空闲存储器可能与距请求存储器的当前硬件线程(或处理器线程)较远的局部域相关联。这在跨多个局部域在若干处理器上执行的多线程应用中可能是特别有问题的。
有利地,在此公开了由局部域组织的存储器池或空闲列表,其允许请求存储器的应用线程被分配该线程局部的存储器。注意,在这点上,如上所述,可以在计算环境的各个级别定义局部性。而且,注意,局部域可以在NUMA计算环境中的多个局部级别中的一个或多个级别处被定义,诸如在板局部、处理器局部、线程局部等。在本文公开的一个或多个实现方式中,仅通过示例讨论处理器局部分配。
有利地,在一个或多个方面,本文公开了基于局部域的存储器池的创建和使用,被称为基于局部域的空闲列表。在一个或多个实现方式中,获得存储器堆的存储器,并通过将存储器的不同部分分配给相应的基于局部域的空闲列表来分类。在存储器部分按局部域分类到不同空闲列表的情况下,则当分配存储器时,存储器可从对应于请求者(例如,请求处理器)的局部域的局部域空闲列表中获得。如下所述,在存储器分配时,可以可选地重新评估下一空闲存储器以确认局部性亲合度仍然存在。如果例如由于在虚拟化环境中执行的应用的线程的重新分配而导致局部域已改变,则重新评估的存储器可被重新分配给另一基于局部域的空闲列表。而且,在垃圾收集压缩时,可以可选地重新评估下一个要处理的存储器的局部信息,以确保持续的基于局部的亲和度。
图15A描述了根据本发明的一个或多个方面的存储器管理器初始化处理的一个实施例。(注意,这里公开的处理可以由处理器或耦合到处理器的组件执行,该处理器负责在对应用的请求下分配和解除分配存储器(以及可能的垃圾收集存储器)。如图所示,处理开始于针对应用的存储器堆请求存储器范围1502。将存储器范围分为诸如页、对象、地址等的存储器单位,并且获得下一个未处理的存储器单位1504。使用例如上述load_domain指令来获得当前存储器单位的局部域(LD)1506。在定义局部域0到n(LD0…LDn)的情况下,处理确定当前存储器单位的所获得的局部域是否在局部域0(LD0)1508中,且如果"是",则将该存储器单位添加到局部域0(LD0)的空闲列表1510。否则,处理确定与当前存储器单元相关联的局部域是否在局部域1(LD1)中1512,如果是,则将该存储器单元添加到局部域1的空闲列表中1514。否则,处理继续到局部域n(LDn)1516,其中处理假定局部域与局部域n匹配,并将存储器单元添加到局部域n的空闲列表1518。基于当前存储器单元被添加到局部域,处理确定是否存在更多未处理的存储器单元1520,并且如果"是",则从存储器范围选择下一个未处理的存储器单元。在没有另外的未处理的存储器单元时,该启动处理完成1521。
在一个或多个实现中,操作系统可返回单个大的连续存储器范围,并且可获得对应于计算环境的不同局部域的各种子区域(即,各种子存储器区域)。图15B中描述了这种情况的一个实施例。如图所示,处理开始于1530,针对存储器堆请求存储器的范围1532。这可以包括返回具有范围的开始的地址1534。指令domain_end或domain_range可用于获得返回的范围中在同一局部域中的区域的大小1536。然后,可使用(例如)上文所论述的load_domain指令来识别该特定区域的局部性域1538。在获得了区域和局部域后,处理可确定当前存储器区域是否在局部域0中1540,如果是,则将该区域(地址、结束)添加到局部域0的空闲列表1542。否则,处理确定所标识的区域是否在局部域1中1544,如果是,则将该区域(地址、结束)添加到局部域1的空闲列表1546。该过程继续直到局部域n(LDn)1548,其中将该区域(地址、结束)添加到局部域n的空闲列表1550。在将区域添加到特定的空闲列表后,地址递增到存储器的刚处理的区域的末尾加11552,并且处理确定是否存在更多未处理的存储器区域1554。如果是,则处理返回以通过确定下一存储器区域的结束来确定下一区域的范围1536。否则,基于不存在剩余的未处理的存储器,处理完成1556。注意,在一个或多个其它实施例中,可返回多个大的连续范围,其中例如图15B的处理针对每一各所返回的存储器范围而执行。
在一个或多个其它实施例中,不是执行例如上面结合图15A和15B所述的处理,而是在存储器分配期间执行这些方法的一部分,以在空闲列表中创建足够的存储器来满足所呈现的请求。
作为进一步的示例,图16描绘了在存储器单元已被分配到诸如上文所描述的相应的基于局部域的空闲列表后存储器分配请求处理的一个实施例。如图所示,存储器分配1601可以包括请求存储器单元(例如,对象、页等)1602,以及访问当前处理器线程的局部性域的空闲列表1604。可选地,可以评估返回的存储器单元以确定其仍然在当前处理器线程的局部域中1606。例如,上述load_domain指令可以用于从空闲列表获得的存储器单元,其结果与局部线程的局部域进行比较。在另一实施例中,这可以使用诸如上述的is_local_domain指令来执行。如果存储器单元不再处于当前处理器的局部域中,则可将存储器单元重新分配给存储器单元当前对应的另一局部域的空闲列表1608。在重新分配后,处理可从当前处理器线程的相关联的空闲列表获得下一存储器单元。在获得当前局部域中的存储单元后,存储对象被分配给调用程序,指向所分配对象的指针可被返回给调用程序1610,这完成了分配过程1612。注意,根据该处理,可以将存储器请求分配给根据现有存储器分配接口请求分配存储器的过程或任务的局部域,从而确保与现有源代码的兼容性。在另一实施例中,可根据本发明的分配接口在分配请求中指定局部域,其中存储器单元是从对应的基于局部域的空闲列表中选择的。
根据一个或多个进一步的方面,存储器单元的局部性可以在例如垃圾收集处理期间并且特别地与存储器管理器的存储器压缩相关联地被重新评估或重新建立。图17描述了这种重新评估处理的一个实施例。存储器压缩开始于1701,重新分配存储器单元1702并识别虚拟环境中最初被分配该存储器单元的局部域(例如,原始分配的基于局部域的空闲列表)1704。在1706,选择存储器单元的目标页(对应于所选局部域中的页),并且在1708,处理确定目标页是否仍在该局部域中。如果"否",则可将目标页重新分配给另一局部域,即,与该页相关联的另一局部域空闲列表1710。注意,在这一点上,load_domain指令可以用于从空闲列表获得的存储器区域,并将其与局部处理器(或线程)的局部域进行比较。在另一实施例中,这可以使用上述is_local_domain指令来执行。在确认了局部域后,可将存储器单元复制到目标页1712,这完成了对被重新分配的存储器单元1714的处理。注意,可对每个重新分配的存储器单元(例如,对象)执行该过程。
在一个或多个其它实现中,作为存储器压缩处理的一部分或与其相关联,存储器区域亲和度不必以基于原始局部的分配为基础。相反,局部亲和度在此上下文中可基于例如对存储器单元的重复访问。例如,如果存储器单元由特定局部域中的特定处理器重复访问,则即使原始分配是针对不同的处理域,也可能期望将存储器单元分配给发生重复访问的特定处理域。因此,存储器单元(对象、缓冲器等)可以被移动到在重复访问该范围的处理器(或处理域)的局部域中的页。这样,"局部性"可以是基于实际处理的最期望的局部亲合度。因此,不是询问原始局部分配是什么,而是作出什么是最佳局部的决定,以便优化存储器对特定应用的不同处理域的亲和度。还应注意,如上所述,局部可以是分层的,并且存储器的分配可以在分层级别中的任何一个或多个处执行。因此,在一个实施例中,存储器压缩可以选择将对象相对于书级别放置在局部,而不考虑单独的处理器。
图18描绘了根据本发明的一个或多个方面的可以与存储器解除分配相关联地执行的处理的一个实施例。该处理可以针对每个解除分配的存储器部分(或实体)(例如,页、对象、地址范围等)而执行。存储器解除分配可以响应于直接存储器解除分配请求(例如,根据POSIX标准规范的free()调用的)或者响应于垃圾收集而解除分配的存储器而执行。获取解除分配的存储器部分1800,并且使用例如上述load_domain指令来确定当前存储器部分的局部域1802。在获得被解除分配的存储器部分的局部域后,处理确定该存储器是否在局部域0中1804,如果是,则将该存储器添加到局部域0的相应域空闲列表中1806。否则,处理确定存储器是否在局部域1中1808,如果是,则将该存储器添加到局部域1的空闲列表中1810。该过程继续直到局部域n,在此假定存储器在局部域n中1812,并且存储器被添加到局部域n的空闲列表中1814,这完成了对被解除分配的存储器的处理1807。
本发明的一个或多个方面不可分地依赖于计算机技术,并便于计算机内的处理,并改进其性能。参考图19A-19B描述了与本发明的一个或多个方面相关的便于计算环境内的处理的一个实施例的进一步细节。
通过以下步骤来促进计算环境内的处理(1900):确定存储器单元对计算环境内的处理能力的局部域信息(1902),以及将存储器单元的局部域信息缓存在数据结构中,以便于与存储器单元对计算环境的处理能力的一个或多个亲和度评估相关联的局部域信息的一个或多个后续查找(1904)。
在一个或多个实施例中,存储器单元是虚拟存储器单元,并且确定包括将虚拟存储器单元转换成实存储器单元,并且使用实存储器单元从配置指令中获取包括关于计算环境的物理组件的系统位置信息的局部域信息(1906)。在一个示例中,缓存包括将存储器单元的局部域信息缓存在与计算环境的操作系统或应用相关联的配置阵列缓存器中(1908)。在另一个示例中,缓存包括将存储器单元的局部域信息缓存到计算环境的转换后备缓冲器中(1910)。
如图19B所示,在一个或多个实施例中,计算环境是非统一存储器访问(NUMA)计算环境,并且存储器单元对处理能力的局部域信息包括识别存储器单元对其具有基于局部性的亲和度的NUMA计算环境的特定域的信息(1912)。
在一个或多个实现中,该处理还包括确定存储器单元是否具有对计算环境的多个处理域中的处理域的局部亲和度,其中该确定包括从数据结构中取得存储器单元的局部域信息,以便于与计算环境中的处理域的局部性进行比较(1914)。在一个或多个实施例中,数据结构是与计算环境的操作系统或应用相关联的配置阵列缓存器或者计算环境的转换后备缓冲器(1916)。在一个或多个示例中,该处理还包括当存储器单元的局部域信息与处理域的局部性相匹配时设置指定局部性亲和度的指示符(1918)。基于存储器单元具有对处理域的局部亲和度,该方法还可以包括由处理域对存储器单元执行垃圾收集处理(1920)。
在不背离本发明的各方面的精神的情况下,许多变化是可能的。
其它类型的计算环境也可结合和使用本发明的一个或多个方面,包括但不限于仿真环境,仿真环境的示例参考图20A进行描述。在该示例中,计算环境20例如包括经由例如一个或多个总线28和/或其它连接彼此耦接的本机中央处理单元(CPU)22、存储器24、以及一个或多个输入/输出设备和/或接口26。作为示例,计算环境20可包括由纽约州阿蒙克市国际商业机器公司提供的PowerPC处理器或pSeries服务器;和/或基于由国际商业机器公司、英特尔公司或其它公司提供的架构的其它机器。
本机中央处理单元22包括一个或多个本机寄存器30,诸如在环境内处理期间所使用的一个或多个通用寄存器和/或一个或多个专用寄存器。此类寄存器包括表示任何特定时间点的环境的状态的信息。
此外,本机中央处理单元22执行存储在存储器24中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器24中的仿真器代码32。该代码使得在一个架构中配置的计算环境能够仿真另一架构。举例而言,仿真器器码32允许基于除z/架构之外的架构的机器(诸如,PowerPC处理器、pSeries服务器、或其它服务器或处理器)仿真z/架构并执行基于z/结构研发的软件和指令。
参考图20B描述了与仿真器代码32有关的进一步细节。存储在存储器24中的访客指令40包括被研发为在除本机CPU 22的架构外的架构中执行的软件指令(例如,与机器指令相关)。例如,访客指令40可能已被设计为在z/结构处理器上执行,但是替代地,在本机CPU 22(其可以是例如英特尔处理器)上进行仿真。在一个示例中,仿真器代码32包括指令提取例程42以从存储器24获得一个或多个访客指令40,并且可选地为所获得的指令提供局部缓冲。仿真器代码322还包括指令转译例程44以确定已获得的访客指令的类型并将访客指令转译成一个或多个对应的本机指令46。该转译包括例如识别要由访客指令执行的功能并选择本机指令执行该功能。
此外,仿真器代码32包括仿真控制例程48以使本机指令被执行。仿真控制例程48可使本机CPU 22执行仿真一个或多个先前获得的访客指令的本机指令的例程,并且在该执行结束时,将控制返回到指令提取例程以仿真下一访客指令或访客指令组的获取。本机指令46的执行可包括将数据从存储器24加载到寄存器中,将数据从寄存器存储回存储器,或者执行如由转译例程确定的某些类型的算术或逻辑运算。
例如,每个例程以软件实现,该软件存储在存储器中并由本机中央处理单元22执行。在其它示例中,一个或多个例程或操作以固件、硬件、软件或它们的一些组合来实现。仿真处理器的寄存器可使用本机CPU的寄存器30或通过使用存储器24中的位置来仿真。在实施例中,访客指令40、本机指令46和仿真器代码32可存在于同一存储器中或者可分配在不同的存储器设备中。
如本文中所使用的,固件包括例如处理器的微代码或毫代码(Millicode)。例如,固件包括用于实现较高级机器代码的硬件级指令和/或数据结构。在一个实施例中,固件包括例如专有代码,该专有代码通常被传送作为包括针对基础硬件的受信任软件或微代码并且控制操作系统对系统硬件的访问的微代码。
所获得、转换和执行的客户指令40可以是例如本文描述的指令中的一者。具有一种架构(例如,z/架构)的指令从存储器中被提取、转译并表示为具有另一架构(例如,PowerPC、pSeries、英特尔等)的一系列本机指令46。此类本机指令然后被执行。
一个或多个方面可以涉及云计算。
首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特征包括:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图21,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的局部计算设备可以与其相通信的一个或者多个云计算节点10,局部计算设备例如可以是个人数字助理(PDA)或移动电话54A,台式电脑54B、笔记本电脑54C和/或汽车计算机系统54N。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在局部计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图2显示的各类计算设备54A-N仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。
现在参考图22,其中显示了云计算环境50(图21)提供的一组功能抽象层。首先应当理解,图22所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图22所示,提供下列层和对应功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)体系结构的服务器62;服务器63;刀片服务器64;存储设备65;网络和网络组件66。软件组件的示例包括:网络应用服务器软件67以及数据库软件68。
虚拟层70提供一个抽象层,该层可以提供下列虚拟实体的示例:虚拟服务器71、虚拟存储72、虚拟网络73(包括虚拟私有网络)、虚拟应用和操作系统74,以及虚拟客户端75。
在一个示例中,管理层80可以提供下述功能:资源供应功能81:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能82:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个示例中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能83:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能85:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层90提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航91;软件开发及生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;以及内存相似性和/或垃圾收集处理96。
在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除了上述之外,可以由提供客户环境管理的服务提供商提供、给予、部署、管理、服务一个或多个方面。例如,服务提供商可以创建、维护、支持计算机代码和/或为一个或多个客户执行一个或多个方面的计算机基础设施。作为回报,服务提供商可以例如根据订阅和/或费用协议从客户接收付款。附加地或替代地,服务提供商可以从向一个或多个第三方销售广告内容来接收付款。
在一方面,可以部署应用以执行一个或多个实施例。作为一个示例,应用的部署包括提供可操作以执行一个或多个实施例的计算机基础结构。
作为另一方面,可以部署计算基础设施,包括将计算机可读代码集成到计算系统中,其中与计算系统结合的代码能够执行一个或多个实施例。
作为又一方面,可以提供一种用于集成计算基础设施的过程,包括将计算机可读代码集成到计算机系统中。该计算机系统包括计算机可读介质,其中该计算机介质包括一个或多个实施例。与计算机系统结合的代码能够执行一个或多个实施例。
尽管以上描述了各种实施例,但这些仅是示例。例如,具有其它体系结构的计算环境可用于合并和使用一个或多个实施例。此外,可以使用不同的存储器和/或缓存层级。许多变化是可能的。
此外,其它类型的计算环境可以受益并被使用。作为示例,适用于存储和/或执行程序代码的数据处理系统是可用的,其包括通过系统总线直接或间接耦接到存储器元件的至少两个处理器。存储器元件包括例如在程序代码的实际执行期间使用的局部存储器,大容量存储和缓存存储器,该缓存存储器提供至少一些程序代码的临时存储,以便减少执行期间必须从大容量存储重新取回代码的次数。
输入/输出或I/O设备(包括但不限于键盘,显示器,指示设备,DASD,磁带,CD,DVD,拇指驱动器和其它存储介质等)可以直接耦接到系统或通过介入I/O控制器而耦接到系统。网络适配器还可以耦接到系统,以使数据处理系统能够通过介入私有或公共网络而耦接到其它数据处理系统或远程打印机或存储设备。调制解调器,电缆调制解调器和以太网卡只是可用类型的网络适配器中的一小部分。
本文使用的术语仅出于描述特定实施例的目的,并不意图限制本发明。如这里所使用的,单数形式“一”,“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元素和/或组件的存在,但不排除存在或者添加一个或多个其它特征、整数、步骤、操作、元素、组件和/或它们的组合。
以下权利要求中的所有装置或步骤加功能元件的相应结构、材料、动作和等同物(如果有的话)旨在包括如所具体要求保护的用于结合其它要求保护的元件来执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了对一个或多个实施例的描述,但是并不旨在穷举或限制于所公开的形式。许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释各个方面和实际应用,并且使本领域普通技术人员能够理解具有各种修改的各种实施例适合于预期的特定用途。
Claims (20)
1.一种用于促进计算环境内的处理的计算机程序产品,所述计算机程序产品包括:
计算机可读存储介质,其能够由处理电路读取并且存储用于执行方法的指令,所述方法包括:
确定存储器单元对所述计算环境内的处理能力的局部域信息;以及
将所述存储器单元的所述局部域信息缓存在数据结构中,以促进与所述存储器单元对所述计算环境的所述处理能力的一个或多个亲和度评估相关联的所述局部域信息的一个或多个后续查找。
2.根据权利要求1所述的计算机程序产品,其中,所述存储器单元是虚拟存储器单元,并且所述确定包括:将所述虚拟存储器单元转换为实存储器单元,以及使用所述实存储器单元来从配置阵列中获取所述局部域信息,所述配置阵列包括关于所述计算环境的物理组件的系统位置信息。
3.根据权利要求1所述的计算机程序产品,其中,所述缓存包括:将所述存储器单元的所述局部域信息缓存在与所述计算环境的操作系统或应用相关联的配置阵列缓存器中。
4.根据权利要求1所述的计算机程序产品,其中,所述缓存包括:将所述存储器单元的所述局部域信息缓存在所述计算环境的转换后备缓冲器中。
5.根据权利要求1所述的计算机程序产品,其中,所述计算环境是非一致存储器访问(NUMA)计算环境,并且所述存储器单元对所述处理能力的所述局部域信息包括识别所述存储器单元对其具有基于局部性的亲和度的NUMA计算环境的特定处理域的信息。
6.根据权利要求1所述的计算机程序产品,还包括:确定所述存储器单元是否具有对所述计算环境的多个处理域中的处理域的局部亲和度,所述确定包括:从所述数据结构取得所述存储器单元的所述局部域信息,以用于与所述计算环境内所述处理域的局部性进行比较。
7.根据权利要求6所述的计算机程序产品,其中,所述数据结构是与所述计算环境的操作系统或应用相关联的配置阵列缓存器或所述计算环境的转换后备缓冲器中的一者。
8.根据权利要求6所述的计算机程序产品,还包括:当所述存储器单元的所述局部域信息与所述处理域的所述局部性匹配时,设置指定局部亲和度的指示符。
9.根据权利要求6所述的计算机程序产品,还包括:基于所述存储器单元具有对所述处理域的局部亲和度,由所述处理域对所述存储器单元执行垃圾收集过程。
10.一种计算机系统,用于促进计算环境内的处理,所述计算机系统包括:
存储器;以及
与所述存储器通信的处理器,其中,所述计算机系统被配置为执行方法,所述方法包括:
确定存储器单元对所述计算环境内的处理能力的局部域信息;以及
将所述存储器单元的所述局部域信息缓存在数据结构中,以促进与所述存储器单元对所述计算环境的所述处理能力的一个或多个亲和度评估相关联的所述局部域信息的一个或多个后续查找。
11.根据权利要求10所述的计算机系统,其中,所述存储器单元是虚拟存储器单元,并且所述确定包括:将所述虚拟存储器单元转换为实存储器单元,以及使用所述实存储器单元来从配置阵列中获取所述局部域信息,所述配置阵列包括关于所述计算环境的物理组件的系统位置信息。
12.根据权利要求10所述的计算机系统,其中,所述缓存包括:将所述存储器单元的所述局部域信息缓存在与所述计算环境的操作系统或应用相关联的配置阵列缓存器中。
13.根据权利要求10所述的计算机系统,其中,所述缓存包括:将所述存储器单元的所述局部域信息缓存在所述计算环境的转换后备缓冲器中。
14.根据权利要求10所述的计算机系统,其中,所述计算环境是非一致存储器访问(NUMA)计算环境,并且所述存储器单元对所述处理能力的所述局部域信息包括识别所述存储器单元对其具有基于局部性的亲和度的NUMA计算环境的特定处理域的信息。
15.根据权利要求10所述的计算机系统,其中,还包括:确定所述存储器单元是否具有对所述计算环境的多个处理域中的处理域的局部亲和度,所述确定包括:从所述数据结构取得所述存储器单元的所述局部域信息,以用于与所述计算环境内所述处理域的局部性进行比较。
16.根据权利要求15所述的计算机系统,还包括:基于所述存储器单元具有对所述处理域的局部亲和度,由所述处理域对所述存储器单元执行垃圾收集过程。
17.一种用于促进计算环境内的处理的计算机实现的方法,所述计算机实现的方法包括:
确定存储器单元对所述计算环境内的处理能力的局部域信息;以及
将所述存储器单元的所述局部域信息缓存在数据结构中,以促进与所述存储器单元对所述计算环境的所述处理能力的一个或多个亲和度评估相关联的所述局部域信息的一个或多个后续查找。
18.根据权利要求17所述的计算机实现的方法,其中,所述计算环境是非一致存储器访问(NUMA)计算环境,并且所述存储器单元对所述处理能力的局部域信息包括识别所述存储器单元对其具有基于局部性的亲和度的NUMA计算环境的特定处理域的信息。
19.根据权利要求17所述的计算机实现的方法,还包括:确定所述存储器单元是否具有对所述计算环境的多个处理域中的处理域的局部亲和度,所述确定包括:从所述数据结构取得所述存储器单元的所述局部域信息,以用于与在所述计算环境内所述处理域的局部性进行比较。
20.根据权利要求19所述的计算机实现的方法,还包括:基于所述存储器单元具有对所述处理域的局部亲和度,由所述处理域对所述存储器单元执行垃圾收集过程。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/807,949 | 2017-11-09 | ||
US15/807,949 US10445249B2 (en) | 2017-11-09 | 2017-11-09 | Facilitating access to memory locality domain information |
PCT/IB2018/058444 WO2019092548A1 (en) | 2017-11-09 | 2018-10-29 | Facilitating access to memory locality domain information |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111316248A true CN111316248A (zh) | 2020-06-19 |
CN111316248B CN111316248B (zh) | 2024-04-26 |
Family
ID=66328520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880071960.3A Active CN111316248B (zh) | 2017-11-09 | 2018-10-29 | 促进对存储器局部域信息的访问 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10445249B2 (zh) |
JP (1) | JP7486419B2 (zh) |
CN (1) | CN111316248B (zh) |
DE (1) | DE112018005404T5 (zh) |
GB (1) | GB2581924B (zh) |
WO (1) | WO2019092548A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10552309B2 (en) | 2017-11-09 | 2020-02-04 | International Business Machines Corporation | Locality domain-based memory pools for virtualized computing environment |
US10445249B2 (en) | 2017-11-09 | 2019-10-15 | International Business Machines Corporation | Facilitating access to memory locality domain information |
US10997083B2 (en) * | 2018-09-04 | 2021-05-04 | Arm Limited | Parallel page table entry access when performing address translations |
US11544113B2 (en) * | 2019-11-20 | 2023-01-03 | Google Llc | Task scheduling for machine-learning workloads |
US11467937B2 (en) * | 2020-06-26 | 2022-10-11 | Advanced Micro Devices, Inc. | Configuring cache policies for a cache based on combined cache policy testing |
US11687449B2 (en) * | 2020-09-10 | 2023-06-27 | International Business Machines Corporation | Concurrent marking garbage collection |
KR20220049215A (ko) * | 2020-10-14 | 2022-04-21 | 삼성전자주식회사 | 메모리 장치, 호스트 장치 및 이들을 포함하는 메모리 시스템 |
US11995342B2 (en) * | 2021-12-22 | 2024-05-28 | Micron Technology, Inc. | Host initiated garbage collection |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05233458A (ja) * | 1991-09-30 | 1993-09-10 | Apple Computer Inc | コンピュータシステムのメモリ管理装置 |
CN1989492A (zh) * | 2004-09-30 | 2007-06-27 | 国际商业机器公司 | 处理器资源虚拟化的系统和方法 |
US20140115291A1 (en) * | 2012-10-19 | 2014-04-24 | Advanced Micro Devices, Inc. | Numa optimization for garbage collection of multi-threaded applications |
JP2016004461A (ja) * | 2014-06-18 | 2016-01-12 | 富士通株式会社 | 情報処理装置、入出力制御装置および情報処理装置の制御方法 |
CN106293881A (zh) * | 2016-08-11 | 2017-01-04 | 上海交通大学 | 一种基于非一致性i/o访问构架的性能监控器及其监控方法 |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6363410B1 (en) | 1994-12-13 | 2002-03-26 | Microsoft Corporation | Method and system for threaded resource allocation and reclamation |
US5784697A (en) | 1996-03-27 | 1998-07-21 | International Business Machines Corporation | Process assignment by nodal affinity in a myultiprocessor system having non-uniform memory access storage architecture |
US6289424B1 (en) | 1997-09-19 | 2001-09-11 | Silicon Graphics, Inc. | Method, system and computer program product for managing memory in a non-uniform memory access system |
US6546546B1 (en) | 1999-05-19 | 2003-04-08 | International Business Machines Corporation | Integrating operating systems and run-time systems |
US6865585B1 (en) | 2000-07-31 | 2005-03-08 | Microsoft Corporation | Method and system for multiprocessor garbage collection |
US6615322B2 (en) | 2001-06-21 | 2003-09-02 | International Business Machines Corporation | Two-stage request protocol for accessing remote memory data in a NUMA data processing system |
US7389506B1 (en) | 2002-07-30 | 2008-06-17 | Unisys Corporation | Selecting processor configuration based on thread usage in a multiprocessor system |
US7185167B2 (en) | 2003-06-06 | 2007-02-27 | Microsoft Corporation | Heap allocation |
US7380039B2 (en) | 2003-12-30 | 2008-05-27 | 3Tera, Inc. | Apparatus, method and system for aggregrating computing resources |
US7149866B2 (en) | 2004-06-04 | 2006-12-12 | International Business Machines Corporation | Free item distribution among multiple free lists during garbage collection for more efficient object allocation |
US7383396B2 (en) | 2005-05-12 | 2008-06-03 | International Business Machines Corporation | Method and apparatus for monitoring processes in a non-uniform memory access (NUMA) computer system |
US7962707B2 (en) | 2005-07-06 | 2011-06-14 | Honeywell International Inc. | Apparatus and method for deterministic garbage collection of a heap memory |
US7577813B2 (en) | 2005-10-11 | 2009-08-18 | Dell Products L.P. | System and method for enumerating multi-level processor-memory affinities for non-uniform memory access systems |
US7512745B2 (en) | 2006-04-28 | 2009-03-31 | International Business Machines Corporation | Method for garbage collection in heterogeneous multiprocessor systems |
JP5233458B2 (ja) | 2008-07-15 | 2013-07-10 | 株式会社ニコン | 画像編集装置及び画像編集プログラム |
US8245008B2 (en) | 2009-02-18 | 2012-08-14 | Advanced Micro Devices, Inc. | System and method for NUMA-aware heap memory management |
US8312219B2 (en) | 2009-03-02 | 2012-11-13 | International Business Machines Corporation | Hybrid caching techniques and garbage collection using hybrid caching techniques |
CN102460400B (zh) | 2009-06-29 | 2014-09-24 | 惠普开发有限公司 | 基于管理程序的本地和远程虚拟内存页面管理 |
US8200718B2 (en) | 2009-07-02 | 2012-06-12 | Roberts Michael L | Parallelized, incremental garbage collector |
US8943108B2 (en) | 2009-12-23 | 2015-01-27 | International Business Machines Corporation | Hardware off-load memory garbage collection acceleration |
US8621150B2 (en) | 2010-04-09 | 2013-12-31 | International Business Machines Corporation | Data placement optimization using data context collected during garbage collection |
US8468289B2 (en) | 2010-10-22 | 2013-06-18 | International Business Machines Corporation | Dynamic memory affinity reallocation after partition migration |
US8797332B2 (en) | 2010-12-15 | 2014-08-05 | Ati Technologies Ulc | Device discovery and topology reporting in a combined CPU/GPU architecture system |
US11099982B2 (en) | 2011-03-31 | 2021-08-24 | Oracle International Corporation | NUMA-aware garbage collection |
CN104040500B (zh) | 2011-11-15 | 2018-03-30 | 英特尔公司 | 基于线程相似性的调度线程执行 |
JP5573829B2 (ja) * | 2011-12-20 | 2014-08-20 | 富士通株式会社 | 情報処理装置およびメモリアクセス方法 |
US9418003B2 (en) | 2012-10-10 | 2016-08-16 | Salesforce.Com, Inc. | System, method and computer program product for conditionally performing garbage collection |
US10061622B2 (en) | 2013-02-26 | 2018-08-28 | Red Hat Israel, Ltd. | Updating memory topology information for virtual machines |
US10114662B2 (en) | 2013-02-26 | 2018-10-30 | Red Hat Israel, Ltd. | Updating processor topology information for virtual machines |
US9342342B2 (en) | 2013-03-15 | 2016-05-17 | International Business Machines Corporation | Refreshing memory topology in virtual machine operating systems |
US10007525B2 (en) | 2014-10-24 | 2018-06-26 | International Business Machines Corporation | Freelist based global completion table having both thread-specific and global completion table identifiers |
US10142231B2 (en) | 2016-03-31 | 2018-11-27 | Intel Corporation | Technologies for network I/O access |
US10223282B2 (en) | 2017-05-23 | 2019-03-05 | International Business Machines Corporation | Memory affinity management |
US10445249B2 (en) | 2017-11-09 | 2019-10-15 | International Business Machines Corporation | Facilitating access to memory locality domain information |
US10552309B2 (en) | 2017-11-09 | 2020-02-04 | International Business Machines Corporation | Locality domain-based memory pools for virtualized computing environment |
US10691590B2 (en) | 2017-11-09 | 2020-06-23 | International Business Machines Corporation | Affinity domain-based garbage collection |
-
2017
- 2017-11-09 US US15/807,949 patent/US10445249B2/en active Active
-
2018
- 2018-10-29 DE DE112018005404.7T patent/DE112018005404T5/de active Pending
- 2018-10-29 GB GB2007647.7A patent/GB2581924B/en active Active
- 2018-10-29 CN CN201880071960.3A patent/CN111316248B/zh active Active
- 2018-10-29 WO PCT/IB2018/058444 patent/WO2019092548A1/en active Application Filing
- 2018-10-29 JP JP2020524789A patent/JP7486419B2/ja active Active
-
2019
- 2019-05-31 US US16/427,595 patent/US11119942B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05233458A (ja) * | 1991-09-30 | 1993-09-10 | Apple Computer Inc | コンピュータシステムのメモリ管理装置 |
CN1989492A (zh) * | 2004-09-30 | 2007-06-27 | 国际商业机器公司 | 处理器资源虚拟化的系统和方法 |
US20140115291A1 (en) * | 2012-10-19 | 2014-04-24 | Advanced Micro Devices, Inc. | Numa optimization for garbage collection of multi-threaded applications |
JP2016004461A (ja) * | 2014-06-18 | 2016-01-12 | 富士通株式会社 | 情報処理装置、入出力制御装置および情報処理装置の制御方法 |
CN106293881A (zh) * | 2016-08-11 | 2017-01-04 | 上海交通大学 | 一种基于非一致性i/o访问构架的性能监控器及其监控方法 |
Also Published As
Publication number | Publication date |
---|---|
US11119942B2 (en) | 2021-09-14 |
CN111316248B (zh) | 2024-04-26 |
US20190138219A1 (en) | 2019-05-09 |
US20190286572A1 (en) | 2019-09-19 |
WO2019092548A1 (en) | 2019-05-16 |
GB2581924A (en) | 2020-09-02 |
JP2021502637A (ja) | 2021-01-28 |
JP7486419B2 (ja) | 2024-05-17 |
US10445249B2 (en) | 2019-10-15 |
GB202007647D0 (en) | 2020-07-08 |
DE112018005404T5 (de) | 2020-06-25 |
GB2581924B (en) | 2022-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111316248B (zh) | 促进对存储器局部域信息的访问 | |
US11132290B2 (en) | Locality domain-based memory pools for virtualized computing environment | |
US10445248B2 (en) | Host page management using active guest page table indicators | |
US11016907B2 (en) | Increasing the scope of local purges of structures associated with address translation | |
US10241924B2 (en) | Reducing over-purging of structures associated with address translation using an array of tags | |
US10180910B2 (en) | Host-based resetting of active use of guest page table indicators | |
US10515020B2 (en) | Marking storage keys to indicate memory used to back address translation structures | |
US10802986B2 (en) | Marking to indicate memory used to back address translation structures | |
CN109074316B (zh) | 页面错误解决方案 | |
US10282305B2 (en) | Selective purging of entries of structures associated with address translation in a virtualized environment | |
US10169243B2 (en) | Reducing over-purging of structures associated with address translation | |
US10248573B2 (en) | Managing memory used to back address translation structures | |
US10162764B2 (en) | Marking page table/page status table entries to indicate memory used to back address translation structures | |
US10255069B2 (en) | Cleared memory indicator | |
US20180018283A1 (en) | Selective purging of guest entries of structures associated with address translation | |
US10691590B2 (en) | Affinity domain-based garbage collection | |
KR20230170079A (ko) | 동적 주소 변환 보호 리세트 명령 |
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 |