CN106462505B - 同步计算环境中对状态指示符的更新 - Google Patents
同步计算环境中对状态指示符的更新 Download PDFInfo
- Publication number
- CN106462505B CN106462505B CN201580028949.5A CN201580028949A CN106462505B CN 106462505 B CN106462505 B CN 106462505B CN 201580028949 A CN201580028949 A CN 201580028949A CN 106462505 B CN106462505 B CN 106462505B
- Authority
- CN
- China
- Prior art keywords
- processor
- update
- memory
- page
- instruction
- 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.)
- Expired - Fee Related
Links
- 230000001360 synchronised effect Effects 0.000 title claims abstract description 19
- 238000003860 storage Methods 0.000 claims abstract description 92
- 238000000034 method Methods 0.000 claims abstract description 59
- 238000012545 processing Methods 0.000 claims description 81
- 238000006243 chemical reaction Methods 0.000 claims description 20
- 238000013519 translation Methods 0.000 claims description 18
- 230000008859 change Effects 0.000 claims description 7
- 241000208340 Araliaceae Species 0.000 claims 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims 1
- 235000003140 Panax quinquefolius Nutrition 0.000 claims 1
- 235000008434 ginseng Nutrition 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 29
- 230000006870 function Effects 0.000 description 27
- 238000004891 communication Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 238000005192 partition Methods 0.000 description 7
- 238000012790 confirmation Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 239000011800 void material Substances 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- JUZNIMUFDBIJCM-ANEDZVCMSA-N Invanz Chemical group O=C([C@H]1NC[C@H](C1)SC=1[C@H](C)[C@@H]2[C@H](C(N2C=1C(O)=O)=O)[C@H](O)C)NC1=CC=CC(C(O)=O)=C1 JUZNIMUFDBIJCM-ANEDZVCMSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 101100111162 Arabidopsis thaliana ARPN gene Proteins 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000012141 concentrate 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
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000001125 extrusion Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000010387 memory retrieval Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- VIKNJXKGJWUCNN-XGXHKTLJSA-N norethisterone Chemical compound O=C1CC[C@@H]2[C@H]3CC[C@](C)([C@](CC4)(O)C#C)[C@@H]4[C@@H]3CCC2=C1 VIKNJXKGJWUCNN-XGXHKTLJSA-N 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0656—Data buffering arrangements
-
- 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/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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/0673—Single storage device
-
- 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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- 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
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)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
通过强制缓存项中的更新以使在存储器中可见(即,存储器中页表项中)同步对页表的更新的同步能力。使用同步指令,这确保:指令已经完成之后,使对出现在同步指令之前的缓存项的那个更新在存储器中可见。可以使用同步帮助存储器管理操作,如用于改变大部分存储器为只读的批量操作、管理存储器页的自由列表的操作和/或与终结进程相关联的操作。
Description
技术领域
一个或更多示例一般涉及多处理器计算环境内的处理,并且特别涉及更新由多处理器计算环境使用的页表中的状态指示符。
背景技术
页表是用于存储虚拟地址和物理地址之间的映射的数据结构。虚拟地址和虚拟存储器相关联,该虚拟内存用于提供额外的物理存储器。如已知的,物理存储器是定义了大小的,并且为了使物理存储器看来比原有的更大,使用虚拟存储器。虚拟存储器被映射到物理存储器,并且提供技术以使用虚拟地址定位页表项,该页表项包括用于访问物理存储器的物理地址。
每个页表项包括状态指示符,用于管理项目以及/或者与项目相关联的存储器的页面。更进一步地,为优化性能,在高速缓存如变换索引缓冲(TLB)中维护页表项的缓存副本。因此,当页表项修改时,缓存副本要更新或者使无效,以及当缓存副本更新时,在页表中要反映更新。
发明内容
通过提供用于同步计算环境中对状态指示符的更新的方法、系统和计算机程序产品,克服了先前技术的缺点,提供了有点。计算机程序产品包括处理电路可读的计算机可读存储媒体以及用于执行方法的由处理电路执行的存储的指令。方法包括:例如,由第一处理器从第二处理器接收同步请求,指示第一处理器提交位于存储器中的地址转换结构的一个或多个条目的一个或多个状态指示符的挂起的更新;根据接收的同步请求,由第一处理器执行同步操作以提交一个或多个状态指示符的挂起的更新;以及根据完成同步操作,由第一处理器向第二处理器指示完成。
涉及一个或多个实施例的方法和系统也在这里也说明并且要求权利。更进一步地,涉及一个或多个实施例的服务也在这里说明并且可以要求权利。
实现了额外的特征和优点。在这里详细说明了其它实施例和方面,并且被认为是要求权利的发明的一部分。
附图说明
在说明书的结束处的权利要求中,作为示例特别指出和明确要求一个或更多方面。从下面与附图一起做出的详细说明,前述的和其它的对象、特征和优点是显然的,在附图中:
图1描述合并和使用同步能力的一个或更多方面的计算环境的一个示例;
图2描述合并和使用同步能力的一个或更多方面的计算环境的另一个示例;
图3A还是描述合并和使用同步能力的一个或更多方面的计算环境的另一个示例;
图3B描述图3A的存储器的更进一步的细节;
图4描述页表项的一个示例;
图5描述同步指令的一个实现;
图6描述同步逻辑的一个实施例;
图7描述同步逻辑的另一个实施例;
图8描述与存储操作相关联的逻辑的一个实施例;
图9描述与存储器指令相关联的逻辑的一个实施例;
图10描述与存储器指令相关联的逻辑的另一个实施例;
图11描述重配置地址空间的一个示例;
图12描述使页只读的一个实施例;
图13描述使页只读的另一个实施例;
图14描述管理存储器页的自由列表的逻辑的一个实施例;
图15描述根据终结进程管理存储器的逻辑的一个实施例;
图16描述计算机程序产品的一个实施例;
图17描述云计算节点的一个实施例;
图18描述描述云计算环境的一个实施例;以及
图19描述提取模型层的一个示例。
具体实现方式
根据一个或更多方面,提供同步能力,以通过强制缓存的条目中挂起的更新在存储器中可见(即,在存储器内页表项中),同步对页表的更新。作为一个示例,使用同步指令,确保指令完成之后对同步指令之前的缓存条目的更新在存储器中可见。这里在特定的示例中,同步指令称为RCsync指令,因为它正在同步页表的参考(R)和变化(C)指示符的更新。但是,在其它实施例中,对页表的状态指示符的其它更新可以使用相同的指令或不同的指令更新。
在一个实施例中,使用同步以帮助存储器管理操作,如用于将大部分存储器变为只读的批量操作,管理存储器页的自由列表的操作,以及/或者与终结进程相关联的操作。
不同架构的计算环境可以合并和使用这里提供的同步能力的一个或更多方面。例如,基于PowerPC架构的环境,也称为PowerISA,由国际商业机器公司提供并在2013年5月3日的Power ISATM Version 2.07中说明,据此在这里通过引用合并它的全部,可以包括一个或多个方面,以及其它架构的计算环境,如z/Architecture,由国际商业机器公司提供并在z/Architecture-操作的原理,出版号SA22-7932-09,第10版,2012年9月中说明,据此在这里通过引用合并它的全部。
POWER,POWER ARCHITECTURE,POWERPC,Z/ARCHITECTURE,IBM,AIX,POWERVM,Z/OS和Z/VM(在这里被引用)是New York Armonk的国际商业机器公司的注册商标。这里使用的其它名称可以是国际商业机器公司或其它公司的注册商标、商标或产品名称。
参考图1说明合并和使用同步能力的一个或更多方面的计算环境的一个示例。在一个示例中,计算环境100包括多个处理器(中央处理单元-CPU)102,并且每个处理器包括例如至少一个存储器管理单元(MMU)104、一个或更多地址转换结构105、一个或更多高速缓存106和同步单元107以提供这里说明的同步能力。
每个处理器102可通信地连接到包含一个或更多高速缓存110的存储器部分108(相同的部分或不同的部分),并且连接到输入/输出(I/O)子系统112(又是相同的子系统或不同的子系统)。I/O子系统112可通信地连接到外部I/O设备114,该外部I/O设备114可以包括例如数据输入设备、传感器和/或输出设备如显示器。
存储器管理单元104用于管理存储器部分108,包括通过提供地址转换帮助访问存储器。为改善地址转换,存储器管理单元利用一个或更多地址转换结构105,包括变换索引缓冲(TLB)和段后备缓冲器(SLB),该TLB和SLB在一个实施例中位于MMU中。在更进一步的实施例中,地址转换结构105也包括有效到真实地址转换(ERTA)结构,该ERTA结构例如位于处理器中的MMU外。
图2中描述了合并和使用同步能力的一个或更多方面的计算环境的更进一步的实施例。参考图2,在一个示例中,计算环境200包括通过一个或更多控制单元206连接到一个或更多输入/输出(I/O)设备204的中央处理联合(CPC)202。中央处理联合202包括连接到一个或更多中央处理器(也称为中央处理单元(CPU))210和I/O子系统212的处理器存储器208(也称为主存储器、主存储、中央存储),下面会说明它们中的每一个。
处理器存储器208包括一个或更多虚机214(一个示例是PowerPC结构)或一个或更多逻辑分区214(一个示例是z/Architecture),以及包括管理程序218和其它处理器固件220的处理器固件216。如这里使用的,固件包括例如处理器的微码和毫码。它包括例如更高级别机器代码的实现中使用的硬件级别的指令和/或数据结构。在一个实施例中,它包括例如通常作为微码交付的私有代码,该私有代码包括被信任的软件或底层硬件特有的微码并控制操作系统对系统硬件的访问。
每个虚机或逻辑分区214作为单独的系统起作用,并且包含一个或更多应用222以及其中可选地包含常驻操作系统224,每个虚机或逻辑分区情况可能不同。在一个实施例中,操作系统是z/VM操作系统、z/OS操作系统、z/Linux操作系统、TPF操作系统、AIX操作系统、Power Linux操作系统、IBM i/OS操作系统或者由New York Armonk的国际商业机器公司提供的另一种操作系统;或者由另一个公司提供的另一个操作系统。虚机由管理程序218管理,如由New York Armonk的国际商业机器公司提供的PowerVM;以及逻辑分区由管理程序218管理,如由New York Armonk的国际商业机器公司提供的处理器资源/系统管理器(PR/SM)。
中央处理器210是可分配给虚机或分配给逻辑分区的物理处理器资源。例如,每个虚机或逻辑分区214包括一个或更多逻辑处理器,每个逻辑处理器表示可以动态分配给虚机或分区的一个或更多物理处理器210的全部或一部分。中央处理器可以包括存储器管理单元(MMU)230、一个或更多地址转换结构231、至少一个高速缓存232和用于提供这里说明的同步能力的同步单元234。
输入/输出子系统212指引输入/输出设备204和主存储器208之间的信息流。它连接到中央处理联合,因为它可以是中央处理联合的一部分或从其分离。I/O子系统缓解了中央处理器直接与输入/输出设备通信的任务,并且允许数据处理与输入/输出处理并发进行。为提供通信,I/O子系统使用I/O通信适配器。有各种类型的通信适配器,包括例如信道、I/O适配器、PCI卡、以太网卡、小型计算机存储接口(SCSI)卡等。更进一步地,在管理到或来自输入/输出设备204的信息流中,I/O子系统使用一个或更多输入/输出路径作为通信链路。
参考图3A说明合并和使用同步能力的一个或更多方面的计算环境的另一个实施例。在这个示例中,计算环境300包括例如本地中央处理单元(CPU)302、存储器304以及通过例如一个或更多总线308和/或其它连接互相连接的一个或更多输入/输出设备和/或接口306。作为示例,计算环境300可以包括PowerPC处理器或者由New York Armonk的国际商业机器公司提供的Power Systems服务器;由California Alto Palo的惠普公司提供的带有Intel Itanium II处理器的HP Superdome;以及/或者基于由国际商业机器公司、惠普、英特尔、Oracle或其它公司提供的结构的其它机器。
本地中央处理单元302包括一个或更多本地寄存器310,如环境内处理期间使用的一个或更多一般用途寄存器和/或一个或更多特殊用途寄存器,以及一个或更多地址转换结构311。这些寄存器包括表示在任何特殊时间点的环境的状态的信息。
此外,本地中央处理单元302执行存储器304中存储的指令和代码。在一个特殊的示例中,中央处理单元执行存储器304中存储的仿真器代码312。这个代码使在一个结构中配置的计算环境能够仿真另一个结构。例如,仿真器代码312允许基于不同于z/Architecture的结构的机器,如PowerPC处理器、Power System服务器、HP Superdome服务器或者其它来仿真z/Architecture并执行基于z/Architecture开发软件和指令,或者允许基于不同于Power Architecture的结构的机器,如HP Superdome服务器或者其它来仿真Power Architecture并执行基于Power Architecture开发软件和指令。
参考图3B说明涉及仿真器代码312的更进一步的细节。存储器304中存储的宾客指令350包含软件指令(例如,与机器指令相关联),开发该软件指令以在不同于本地CPU 302的结构中执行。例如,宾客指令350可能已经被设计在Power Architecture或z/Architecture处理器102上执行,但是正在本地CPU 302上仿真,该本地CPU 302可能是例如Intel Itanium II处理器。在一个示例中,仿真器代码312包括取指令例程352以从存储器304获得一个或更多宾客指令350,并且可选地提供本地缓存给获得的指令。它也包括指令转换例程354以确定已经获得的宾客指令的类型,并且将宾客指令转换为一个或更多相应的本地指令356。这个转换包括:例如,识别要由宾客指令执行的功能以及选择执行那个功能的本地指令。
更进一步地,仿真器代码312包括仿真控制例程360以促使执行本地指令。仿真控制例程360可以促使本地CPU 302执行本地指令的程序,该本地指令仿真一个或更多以前得到的宾客指令,并且在这样的执行结束时将控制返还给取指令例程以仿真获得下一个宾客指令或一组宾客指令。本地指令356的执行可以包括:从存储器304装载数据到寄存器;将数据从寄存器存储回存储器;或者执行由转换例程确定的某种类型的结构或逻辑操作。
每个程序例如以软件实现,该软件在存储器中存储并由本地中央处理单元302执行。换句话说,一个或更多程序或操作以固件、硬件、软件或其某种组合实现。可以使用本地CPU的寄存器310或通过使用存储器304中的位置仿真仿真处理器的寄存器。在实施例中,宾客指令350、本地指令356和仿真器代码312可以驻留在相同的存储器中,或者可以在不同存储器设备之间分配。
在实现中,这里说明的同步能力可以由正在执行仿真的CPU提供,或者由仿真软件提供。各种实现是可能的。
上面说明的计算环境只是可以使用的计算环境的示例。可以使用其它环境,包括但不限于:具有多个处理器的其它环境、其它分区的环境和/或其它仿真的环境;实施例不限于任何一种环境。
但是,每个计算环境使用虚拟寻址的方面,包括称为页表的数据结构。如已知的,物理存储器是定义了大小的,并且为了使物理存储器看来比原有的更大,使用虚拟存储器。虚拟存储器通过例如定位页表项(PTE)的hash页表(HPT)技术被映射到真实的存储器。虚拟存储器的每个段被映射到由有效的段ID(ESID)识别的段ID(SID)项。由程序使用的有效地址包括例如ESID、页部分和字节部分,并且用于选择SID项,该SID项包括ESID值以及虚拟段ID(VSID)值。VSID值表示由hashing算法使用搜索hash页表的虚拟地址的高位比特。基于VSID的hash过的值用于定位页表项(PTE)。页表项包括物理存储器的页的地址。为了改善性能,一旦找到PTE,有效地址的页部分PTE中找到的物理存储器页的地址存储在高速缓存结构中,如变换索引缓冲(TLB),使得对相同有效地址页的访问将在TLB中“找到”并避免PTE搜索。在其它实施例中,可以使用其它高速缓存结构代替或者除了TLB之外,以存储页表项,包括但不限于有效到真实地址转换(ERAT)结构。
参考图4说明与页表项相关联的更进一步的细节。每个页表项400映射一个虚拟数字到一个真实页号。作为用于Power ISA结构的示例,页表项包括下面的:
与LP((ARPN||LP)0:59-P)连接的APRN提供真实地址440的第一部分442,以及来自有效地址的字节部分444提供真实地址的第二部分。
关于页表和页表项的一个实现的更进一步的细节在2013年5月3日的Power ISATMVersion 2.07规范中说明,该规范由国际商业机器公司提供,并且在这里通过引用合并它的全部。
使用hash页表转换地址只是转换技术的一个示例。其它地址转换方法,包括使用转换表的层次的那些,在下面的出版物中说明:z/Architecture-操作的原理,出版号SA22-7932-09,第10版,2012年9月,以及Intel Itanium Architecture软件开发者手册第2卷:系统结构,文档号:245318,2010年10月,每个因此在这里通过引用合并它的全部。在一个示例中,对于z/Architecture,表的层次称为动态地址转换(DAT)表;以及对于Power ISA,表称为根表。
如这里说明的,提供同步能力以同步对页表项的更新。参考图5说明可以使用的这里称为RCsync的同步指令的一个示例。在一个实现中,RCsync指令500包括:指示同步操作的操作码502a、502b;用于指示同步操作的类型的L域504(例如,L=3指示RCsync操作);以及元素障碍(E)域506,在这个实施例中该域是0。在其它实施例中,RCsync指令有它自己的opcode,而不是对多种同步操作使用通用的opcode并通过L域指定RCsync。很多变化是可能的。
参考图6说明使用例如RCsync的同步逻辑的一个实施例。在一个实施例中,多个处理器正在执行这个逻辑,包括:本地处理器和一个或更多远程处理器,该本地处理器是初始化同步进程的处理器,该远程处理器正在执行响应同步进程初始化的处理。
参考图6,最初,本地处理器发起RCsync指令,步骤600,该本地处理器广播RCsync请求给一个或更多远程处理器,步骤602。在实施例中,作为示例,RCsync请求被广播给相同逻辑分区(LPAR)、虚机(VM)或其它组中的所有处理器;给使用相同地址空间的处理器;或者给配置的所有处理器。在一个特殊的示例中,如果广播发给所有处理器,那么使用LPAR id、VM id或其它标识符发送它,以及如果接收请求的处理器不是LPAR、VM或其它组的一部分,那么它立即确认完成。
广播请求之后,本地处理器等待远程处理器的确认它们已经完成RCsync处理,步骤604。在可供选择的实施例中,本地处理器检查它是否已经连续地或以预先确定的间隔收到确认。如果它还未从向其广播请求的远程处理器收到确认,查询606,那么它继续等待,步骤604。否则,同步完成,这意味着存储器中的页表项已经更新以反映缓存的项(例如,TLB)的变化(例如,更新的R/C指示符),步骤608。
在每个远程处理器上,从本地处理器接收RCsync请求,步骤620,并且标记所有挂起的参考和变化(R/C)更新请求,步骤622。例如,当参考和/或变化(R/C)更新发生在高速缓存(例如TLB)中时,挂起的更新被放到存储队列中用于逐渐写到存储器。(在更进一步的实施例中,挂起的R/C更新存储在独立的R/C更新队列中。)因此,当接收到RCsync请求时,在队列中标记RCsync请求之前到来的每个更新,并且发起提交挂起的对存储器的地址转换缓存更新。更进一步地,在一个实施例中,执行可选的步骤,在该步骤中处理标记的R/C更新请求的加速的写回,步骤624。
在更进一步的实施例中,对接收RCsync请求响应,并且在执行标记之前,如果没有挂起的更新的队列,那么创建一个;以及/或者可以执行处理以确保队列最新。
远程处理器然后等待,直到至少一个存储队列的R/C更新被写到存储器(例如,PTE),步骤626。在可供选择的实现中,远程处理器可以不断地检查是否更新被写到存储器或者以预先确定的间隔检查。至少一个R/C更新被写到存储器之后,远程处理器检查是否所有标记的更新被写到存储器,查询628。如果所有标记的R/C更新未被写到存储器,查询628,那么处理器继续等待,步骤626。否则,指示远程RCsync的完成给请求者,即本地处理器,步骤630。
在一个可供选择的实施例中,在步骤622,技术可以确定存储或其它队列中R/C更新项的数目,并且等待在步骤626中要处理的被计算的项的数目。
仍然在另一个可供选择的实施例中,额外的对存储或其它队列的存储器请求的产生在步骤622中可选地被停止,并且处理器等待,直到指示RCsync请求完成之前存储或其它队列在步骤626中为空。
除了上面的,在一个实施例中,本地处理器也在本地执行同步,确保本地缓存的页表(例如,本地TLB)中的任何变化被写到存储器(例如,到PTE的存储器中副本)。
参考图7说明使用例如RCsync的同步逻辑的另一个实施例。在一个实施例中,多个处理器正在执行这个逻辑,包括本地处理器和一个或更多远程处理器,该本地处理器是发起同步进程的处理器,该远程处理器正在执行响应同步进程的发起的处理。
参考图7,最初,本地处理器发起RCsync指令,步骤700,该本地处理器向一个或更多远程处理器(例如,系统或其子集中所有远程处理器)广播RCsync请求,步骤702。本地处理器然后等待来自远程处理器的确认:它们完成了RCsync处理,步骤704。在可供选择的实施例中,本地处理器检查它是否连续地或以预先确定的间隔接收到确认。如果它还未从向其广播请求的所有远程处理器接收到确认,查询706,那么它继续等待,步骤704.否则,同步完成,步骤708。
在每个远程处理器上,从本地处理器接收到RCsync请求,步骤720,并且标记被放置在存储队列中而不是标记存储队列中每个飞行中的R/C更新请求,然后假定按顺序处理队列,当标记来到对头时,它知道RCsync被接收到之前到来的所有更新被处理,步骤722。
通过开始将R/C更新写到页表处理队列,步骤723。更进一步地,在一个实施例中,执行可选的步骤,在该步骤中处理R/C更新请求的加速的写回,步骤724。
在更进一步的实施例中,对接收RCsync请求响应,并且在执行标记之前,如果没有挂起的更新的队列,那么创建一个;以及/或者可以执行处理以确保队列最新。
远程处理器然后等待,直到来到队列的前端或头,步骤726。根据来到对头的标记,远程处理器向请求者(即,本地处理器)指示远程RCsync完成,步骤728。
在一个实施例中,技术可以确定步骤722中存储或其它队列中项数,并且等待在步骤726中要处理的被计算的项的数目。
仍然在另一个可供选择的实施例中,额外的对存储或其它队列的存储器请求的产生在步骤722中可选地被停止,并且处理器等待,直到指示RCsync请求完成之前存储或其它队列在步骤726中为空。
此外,除了上面的,在一个实施例中,本地处理器也在本地执行同步,确保本地高速缓存的页表(例如,本地TLB)中的任何变化被写到存储器(例如,到PTE的存储器中副本)。
在一个方面,RCsync确保挂起的远程参考和变化(R/C)更新已经在所有确定要接收RCsync请求的远程节点完成。在一个实现中,当发出RCsync时,对应于RCsync之前的存储器状态R/C更新已经完成。在完成RCsync之后,对每个页表项,只有反映RCsync时或之后的页表项的值的页表项更新是可能的。因此,如果RCsync之前设置页表项为只读,但是以前是可写的,那么RCsync强制页表项中任何C指示符设置,并且完成RCsync之后不对C指示符做更进一步的改变,因为新的PTE值禁止它。但是,如果在TLB中设置C指示符,指示写已经发生,那么将来使用TLB的写是可能的,直到TLB是无效的或被更新。类似地,如果设置PTE为无效,那么RCsync操作之后没有R/C更新发生,因为新的PTE值禁止它。
根据现有的存储器系统,当缓存的TLB项从为了允许读取被从缓存转变为允许写时,页表项(它的有效和/或写允许)在给TLB项添加写允许之前被读取和更新。因此,一旦存储器中PTE项已经更新为无效和/或没有写允许,TLB项不触发C指示符更新。
参考图8说明与存储操作以及唤醒使用RCsync中使用缓存项相关联的逻辑的实施例。存储操作之前和或之后可以执行RCsync,并且因此不管什么时候执行RCsync都使用这个逻辑。
参考图8,最初,处理器接收到存储指令,在该指令中数据被写到存储器中的特定页,步骤800。根据接收的存储指令,处理器在一个或更多地址转换结构中执行查找,如变换索引缓冲(TLB)或有效地址到真实地址转换结构(ERAT),以确定是否对应于页的转换项已经缓存,步骤802。如果缓存项如TLB和/或ERAT项存在,查询804,那么关于下述做进一步确定:是否缓存项显示变化指示符为更新的(例如,C=1),指示这个页以前已经被写,查询806。如果它被设置(例如,C=1),那么在地址转换中使用该项以提供真实地址,步骤808,并且处理随着存储前进,步骤810。
返回到查询804,但是如果缓存项未存在,那么通过从存储器检索至少一个有关页表项创建对应于当前页转换的缓存项,步骤814。其后,检查页表项的有效性和写允许以得到最新的读/写状态,步骤816。假定页表项是有效的并且已经授予写允许,那么对应于当前页转换的缓存项中的变化指示符转换这个,例如C=1(参考指示符和/或其它指示符也可选地在TLB中设置),步骤818。在一个实施例中,在存储队列中输入写更新以更新至少C比特以指示当前页已经修改,即C=1。
然后添加更新的缓存项到一个或更多高速缓存(例如,TLB和/或ERAT),步骤820,并且处理在步骤808继续。但是,在上面的处理中,如果要么页表项是无效的,那么未授予写允许,那么存储不前进,以及可选地呈现错误。
返回到查询806,如果缓存项不显示变化指示符为写设置,那么使缓存项无效(例如,缓存项中的V指示符设置为0或项被删除)或者被忽略,步骤830,并且处理前进到步骤814。
除了上面的存储处理,RCsync指令之前或之后也可以执行其它处理。即,RCsync之前或之后可以发出存储器指令(例如加载、存储等)。在一个特殊的示例中,在允许缓存项预取的实现中,如TLB或ERAT项,执行逻辑以检查参考指示符,从而确认第一次使用的缓存项的有效性。在其它实施例中,TLB项在它们第一次使用以对应于存储器指令执行存储器地址转换之前不预取。
参考图9说明处理存储器指令的逻辑的实施例。在一个示例中,如果允许缓存项(例如,TLB项、ERAT项等)的预取而不设置参考指示符(例如,R=1),那么使用这个逻辑。
参考图9,最初,处理器接收到访问所选择的存储器页的存储器指令,步骤900。根据接收到的存储器指令,处理器在高速缓存如TLB或ERAT中执行查找以确定是否以前已经缓存对应于要访问的页地址转换,步骤902。如果对应于要访问的存储器页的项在高速缓存中存在,查询904,那么关于下述做进一步确定:是否缓存项指示参考指示符被更新(例如,R=1),指示这个页以前已经被访问,查询906。如果它未指示参考指示符被设置,那么使用缓存项执行地址转换以及计算用于存储器访问的真实地址,步骤908。然后处理随着存储器指令前进,步骤910。
返回到查询904,如果缓存项未存在,那么通过从存储器检索有关的页表项创建缓存项,步骤914。其后,如果存储器指令是存储指令,那么检查页表项的有效性以及可选地写允许以得到最新的状态,步骤916。假定页表项是有效的,参考指示符是更新的,例如R=1(以及可选地,变化指示符和/或页表项的其它指示符),步骤918。在至少一个实施例中,在存储队列中输入写更新以更新至少R比特以指示当前页已经修改,即R=1。在另一个实施例中,响应正在执行的存储操作,C=1也可以同时更新。
然后添加对应于用于当前页地址的地址转换的更新的缓存到一个或更多高速缓存(例如,TLB和/或ERAT),并且参考指示符(和/或可选地,一个或更多其它指示符)被指示为更新的,步骤920。然后处理在步骤908继续。但是,在上面的处理中,如果页表项是无效的,存储器指令不前进,以及可选地,呈现错误。
返回到查询906,如果缓存项未显示参考指示符为被设置,那么使缓存项无效或被忽略,步骤930,以及处理到步骤914继续。
参考图10说明与处理存储器指令相关联的逻辑的另一个实施例。在一个示例中,如果允许缓存项(例如TLB项、ERAT项等)的预取而不设置参考指示符(例如R=1),那么使用这个逻辑。
参考图10,最初,处理器接收到访问所选择的存储器页的存储器指令,步骤1000。根据接收到的存储器指令,处理器在高速缓存如TLB或ERAT中执行查找以确定是否以前已经缓存要访问的页,步骤1002。如果对应于要访问的存储器页的项在高速缓存中存在,查询1004,那么关于下述做进一步确定:是否缓存项指示参考指示符被更新(例如,R=1),指示这个页以前已经被访问,查询1006。如果它未指示参考指示符被设置,那么使用缓存项执行地址转换以及计算用于存储器访问的真实地址,步骤1008。然后处理随着存储器指令前进,步骤1010。更进一步地,在一个实施例中,如果希望,那么操作是合法的,步骤1012。
返回到查询1004,如果缓存项未存在,那么通过从存储器检索有关页表项创建缓存项,步骤1014。其后,如果存储器指令是存储指令,那么检查页表项的有效性和写允许以得到最新的状态,步骤1016。假定页表项是有效的,参考指示符是更新的,例如R=1(以及可选地,变化指示符和/或页表项的其它指示符),步骤1018。
然后添加更新的缓存项到一个或更多高速缓存(例如,TLB和/或ERAT),并且参考指示符(和/或可选地,一个或更多其它指示符)被指示为更新的,步骤1020。然后处理在步骤1008继续。但是,在上面的处理中,如果页表项是无效的,存储器指令不前进,以及可选地,呈现错误。
返回到查询1006,如果缓存项未显示参考指示符为更新的,那么从要在验证中使用的存储器检索页表项,这个与一个或更多的步骤1008和1010并行进行,该一个或更多的步骤1008和1010与页项的并发验证并行地使用缓存项执行处理步骤,步骤1030。例如,如果缓存项未显示参考指示符为更新的,那么处理器发起并行的验证(该验证包含步骤1014、1016、1018、1020,并且并行执行步骤1008和1010。然后,如果这是有效的项,那么处理应该被验证(即,应该允许完成在步骤1008和1010做的工作)。然后处理继续到步骤1012,在该步骤如果使能位于步骤1002的缓存项,那么操作被验证。
根据一个或更多方面,处理器执行同步操作,从而早晚强制对页表项挂起的更新。即,在弱有序的存储器系统中,页表项可以最终被更新,但是没有关于更新它们的时间的保证。因此,同步处理根据接收的同步指令强制更新。更进一步地,在一个实现中,执行同步而不要求使各高速缓存和/或页表项无效。
存在可以使用这样的同步进程的很多情况,包括存储器页上执行的批量操作,作为示例,如重配置、管理存储器页的自由列表以及进程终结时执行拆卸。执行同步以强制页表项的更新,以及因此在例如要使无效(例如C=1)的项中提供选择性,而不是使所有项无效。
可以使用同步操作的示例情况是重配置地址空间,如参考图11说明的。参考图11,最初,本地处理器发出RCsync操作以强制具有任何挂起的R/C更新(或者在其它示例中的其它状态更新)的页表项的更新,步骤1100。其后,从执行RCsync指令的本地处理器接收到RCsync请求的每个远程处理器执行如这里说明的同步操作。与正在进行的RCsync操作并行地,步骤1100,本地处理器使用例如TLBIEL指令或本地IPTE指令(例如,当安装了本地TLB清除工具并且M4中的LC比特是1时的IPTE指令),请求每个远程处理器执行对应于远程处理器的一个或更多高速缓存中的多个页表项的批量无效化,步骤1102a到1102c。作为示例,项的无效化包括设置项中的有效指示符为特殊值(例如,V=0);或者否则使项不可用等。
完成由本地处理器请求的远程RCsync操作之后,每个远程处理器发送指示给本地处理器,指示RCsync操作的完成,不管各远程处理器上的本地无效化是否完成,步骤1103。根据本地处理器接收到远程处理器已经完成RCsync同步操作的指示,本地处理器继续通过更新存储器中一个或更多页表项重配置地址空间以反映重配置的地址空间的状态,以及对处理器的缓存项执行本地无效化操作,步骤1104,从而确保没有对应于重配置之前的地址空间的C=过时的缓存项存储在本地处理器上。当远程处理器完成无效化时,远程处理器等待地址重配置完成,例如通过步骤1106。其后,在本地和远程处理器上可以重新开始执行,步骤1106。通过执行RCsync,在一个实施例中,本地处理器不需要等待直到远程处理器上的本地无效化已经完成,而是接收到远程处理器已经完成RCsync同步处理的指示之后可以并行进行,并且因此存储在存储器中的页表项包含R和C状态指示符的最近状态以及可选地PTE中包含的其它信息,该PTE根据一个或更多方面由远程处理器更新并可以用RCsync同步。
在一个特殊的示例中,可以使用同步操作重配置地址空间以对应只读地址空间。根据一个实施例,已经被写的页是已知的,所以它们可以被跟踪、写到磁盘等。作为特殊的示例,因为技术的原因,如分区迁移以及写时复制技术的使用,使地址空间只读。例如,使用写时复制,用于Unix操作系统中的fork()操作以及用于其它操作。在一个这样的实施例中,使用写时复制大的存储器区域而不会招致与复制对应于这样的区域的所有存储器页相关联的长初始延迟。例如,作为一个示例,使用写时复制技术,使整个存储器只读,允许多个进程共享存储器页。然后,当特殊的进程希望写它的存储器空间的副本到特定的页时,在允许进程开始写到这样的页之前,实现写时复制的系统功能复制那页,并且使它可写。
参考图12说明使页只读的逻辑的一个实施例。在一个示例中,本地处理器(即,想使地址空间只读的那个)更新对应于被使只读的存储器页的页表项以指示只读(例如,设置图4的标记pp的页保护比特,即页表项的第二个双字的比特0、62和63,以不准许写到主题页),步骤1200,然后执行同步操作,如RCsync以同步(例如,挤出)所有参考和变化指示符,用于这些指示符的更新可能处于飞行中,直到发出RCsync操作的点,步骤1202。
远程处理器接收到RCsync操作,继续进行它,如上所述,步骤1204,并且指示完成。步骤1206。其它远程处理也继续,步骤1208。
本地处理器接收到完成指示,以及同步操作由远程处理器完成之后,本地处理器具有远程存入页(例如,那些具有C=1的)的精确列表。更进一步地,远程处理器不能使用新的页用于存储操作,因为页表项被设置为只读,并且因此使例如图8中说明的变化指示符检查技术失败。
本地处理器现在使对应于具有设置的变化指示符(例如,C=1)的页表项的地址转换缓存项无效,步骤1210。例如,本地处理器使它自己本地的项无效,并且广播指示给远程处理器,指挥远程处理器使它们自己的缓存项无效。这些缓存的页表项对应于所有页,该页在步骤1200中的更新之后可能仍然由远程处理器写更新(因为存入其它页的企图将使图8的技术失败),并且表示较小集合的页要被无效化,如果不得不被无效化而所有页表项中不存在精确的R/C信息。这些缓存的页表项的无效化可以使用广播全局硬件无效指令如TLBIE或IPTE,或者包括广播单个批量无效化请求的软件序列(例如,使用处理器间中断工具),连同软件协调的每个远程处理器上的本地缓存无效化,例如使用TLBIEL指令或本地IPTE指令响应要无效化的页的列表。此外,处理具有设置了的变化指示符的页,如将页写到磁盘等。
在另一个实施例中,对应于步骤1200的第一页表项更新技术在执行RCsync之前更新所有要无效化的页表项,以及第二处理步骤1210更新为只读,以便更进一步同步对正在由远程处理器执行的页表项的更新以响应RCsync。
参考图13说明使页只读的逻辑的另一个实施例。在一个示例中,本地处理器(即,想使地址空间只读的那个)发出第一同步操作,如RCsync指令给远程处理器,步骤1300。远程处理器接收到同步操作并且继续它,如上所述,步骤1302,然后发送指示完成的指示,步骤1304。更进一步地,在远程处理器的处理继续,步骤1305。(在另一个实施例中,不执行第一同步操作,如图12中所示)。
根据从远程处理器接收到的用于同步操作的完成指示,本地处理器更新对应于要使只读的存储器页的页表项以指示只读,以及使具有设置了的变化指示符(例如,C=1)的缓存项无效化,如上所述,并且调度用于那些页的处理,步骤1306。在修改的页的处理的一个实施例中,修改的页写到外部存储器(例如,如硬盘或闪存)。其后,第二同步操作如RCsync由本地处理器发出以同步(例如,挤出)所有剩余页表R和C状态更新,该更新从初始RCsync已经存在,步骤1300,该初始RCsync处于飞行中直到发出第二同步操作的点,步骤1308。
如上所述,远程处理器接收到RCsync操作并处理它,步骤1310,,以及指示完成,步骤1311。其它远程处理也继续,步骤1312。第二同步操作由远程处理器完成之后,本地处理器拥有了远程存入页(例如(C=1)的精确列表。更进一步地,远程处理器不能使用新的页用于存储,因为页表项被设置为只读,并且因此使变化指示符检查技术失败。
如这里说明的,本地处理器使具有设置了的变化指示符(例如(C=1)的缓存项无效,步骤1314。根据一个或更多方面,这个第二处理步骤,步骤1314,对应于任何在第一和第二RCsync之间已经修改的页的处理。在这个实施例中,多数更新在步骤1306期间可以发起并被无效化,并且其它处理(如对应于写修改的页到外部存储器的I/O操作)可以与RCsync的处理重叠,步骤1308。另外,处理具有设置了变化指示符的页,如写页到磁盘等。
此外,通过执行TLBIE或IPTE连同无效化请求的硬件广播,或者通过本地和远程处理器中的每个上正在执行的的软件同步的本地无效化,可以执行无效化。
在至少一个可供替换的实施例中,步骤1306通过设置有效的指示符为无效指示存储器中页表项被无效化,以及第二步骤1314更新页表项到只读状态,例如为了更进一步同步页表项更新。
在其它使页只读的实施例中,首先可以使页表项无效,然后可以标记项为只读。
同步操作的另一个用途是更新存储器页的自由列表。在使用虚拟存储器的系统中,操作系统保留存储器页的自由列表,例如当页被页入、分配缓存器或由应用请求新的页时,使用该自由列表。保留自由列表的目标是将很少使用的页放到自由列表。因此,操作系统寻找具有R=0的页或检查额外的参考信息用于更小粒度的处理。在一个实施例中,额外的信息对应于最后引用(例如,对页的读或写)的时间戳,或者指示是否引用已经在多个时间片中的每个发生的比特向量,比特向量的每个比特对应于一个这样的时间片。
参考图14说明了使用同步操作管理自由列表的一个实施例。最初,本地处理器(例如,正在管理自由列表的处理器)发出第一同步操作,如RCSync以便得到最新信息,步骤1400。如上所述,接收到同步请求的远程处理器处理它,步骤1402,然后指示完成,步骤1404。另外,远程处理继续,步骤1406。(在另一个实施例中,不执行这个第一同步操作)。
根据从要执行同步操作的所有远程处理器接收到完成指示,本地处理器执行一些任务,步骤1408。这些任务包括:例如,识别用于自由列表的一个或更多页,如参考指示符未设置(例如,R=0)的那些页;可选地,如果变化指示符被设置(例如,C=1),那么调度一个或更多页用于写磁盘;在页表项中设置一个或更多页为无效(或者在自由列表上标记它们这样);以及/或者如这里说明的(例如,使用IPTE、TLBIE),对任何缓存地址转换项执行无效化,该缓存地址转换项对应于需要无效化的页。
其后,本地处理器发出第二同步操作如RCsync给远程处理器,步骤1410。远程处理器处理第二同步操作,步骤1412,并且指示完成,步骤1414。更进一步地,其它远程处理继续,步骤1416。
由要执行同步操作的远程处理器完成同步操作之后,本地处理器拥有了被远程使用的页的精确列表。如这里说明的,本地处理器现在只无效化具有设置了的变化或参考指示符(例如,C=1或R=1)的页表项和/或缓存项,步骤1418。这是对于从第一同步操作变到第二同步操作的页的清理。在一个实施例中,只有已知已经由一个或更多处理器引用并且可能在一个或更多转换缓存器中的页需要无效化,因此减少了对页无效化的需要。此外,处理具有设置了的变化指示符的页,如将页写到磁盘等。
使用同步处理的另一个示例是在进程结束时发生的进程拆除中。在进程拆除中,如果这个进程是唯一的用户,那么那个进程的所有页要无效化或放到自由列表上。同样在进程拆除中,如果页要写回,那么发起写回处理。
参考图15说明使用同步操作执行进程拆除的一个实施例。最初,本地处理器(例如,正在执行进程拆除的处理器)发出第一同步操作,如RCSync以便得到最新信息,步骤1500。如上所述,接收到同步请求的远程处理器处理它,步骤1502,然后指示完成,步骤1504。另外,远程处理继续,步骤1506。(在另一个实施例中,不执行这个第一同步操作)。
根据从要执行同步操作的所有远程处理器接收到完成指示,本地处理器执行一些任务,步骤1508。这些任务包括:例如,对进程的每个页,如果页只在进程中使用,那么设置页为无效;可选地,如这里说明的(例如,使用IPTE、TLBIE),对任何需要无效化的页,执行缓存的地址转换的无效化;以及如果页要写回到磁盘,那么发起写回操作。
其后,本地处理器发出第二同步操作如RCsync给远程处理器,步骤1510。远程处理器处理第二同步操作,步骤1512,并且指示完成,步骤1514。更进一步地,其它远程处理继续,步骤1516。
由要执行同步操作的远程处理器完成同步操作之后,本地处理器拥有了被远程使用的页的精确列表。如这里说明的,本地处理器现在只无效化具有设置了的变化或参考指示符(例如,C=1或R=1)的页表项和/或缓存项,步骤1518。这是对于从第一同步操作变到第二同步操作的页的清理。此外,处理具有设置了的变化指示符的页,如将页写到磁盘等。
这里详细说明的是可以由一些技术使用以得到用于页表项的最新状态信息的同步能力。在一个示例中,同步操作使用RCsync指令,该指令确保在多处理器系统中对页表项的动态更新部分的所有更新已经完成,该页表项在执行RCsync之前已经存在。在一个实施例中,单个RCsync确保所有类型的更新已经完成;以及在另一个实施例中,RCsync提供额外的参数以指定某些域(例如,更新C域而不是R等)。很多变化是可能的。
在更进一步的实施例中,可以由执行一系列指令以及/或由写一个或更多控制寄存器指示RCsync。其它变化也是可能的。
在一个实施例中,根据在接收到RCsync时识别的缓存项中挂起的更新,使用单个指令而不无效化缓存项(即,当允许缓存项保持有效)RCsync更新要被更新的所有页表项。
目前接收最新R/C指示符的方法需要每个PTE无效化(例如,TLBIE)。但是,根据一个或更多方面,单个广播可以更新R/C(以及/或者其它PTE状态信息)并加速处理。例如,在到每个远程处理器的单个往返中,所有RCsync执行之前挂起的R/C更新交付给存储器。这个同步处理可以与使用单个软件请求执行本地TLB无效化的基于处理器间中断(IPI)的TLB无效化一起使用。
根据一个或更多方面,提供同步进程,该同步进程使具有弱有序的存储器的计算环境能够在本地执行例如批量降级、无效化等,该具有弱有序的存储器具有延迟的R/C更新(即,没有连贯的的更新配置计算系统,因为不在任何特定的时间量保证更新)。
这里这在一些示例中,虽然它是被更新的页表,但是一个或更多方面可以应用到其它地址转换结构。更进一步地,除了页的其它存储器单元可以被访问并/或存储。页和页表的使用只是示例。更进一步地,存储器的页可以是任何大小,4K或大于或小于4K。
参考图16,在一个示例中,计算机程序产品1600包括,例如一个或更多永久的计算机可读存储媒体1602以在其上存储计算机可读程序代码工具、逻辑和/或指令1604,以提供并促进一个或更多实施例。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除了上面的,可以由提供客户环境的管理的服务提供者提供、提供、部署、管理、服务于等一个或更多方面。例如,服务提供者可以为一个或更多客户创建、维护、支持等执行一个或更多示例的计算机代码和/或计算机基础设施。作为回报,服务提供者按照例如合同和/或协议可以从客户收到报酬。此外或可供选择地,服务提供者可以从向一个或更多第三方销售广告内容获得报酬。
在一个示例,可以部署应用用于执行一个或更多实施例。作为一个示例,应用的部署包含提供可操作的计算机基础设施以执行一个或更多实施例。
作为更进一步的方面,可以部署计算基础设施,包含集成计算机可读代码到计算系统中,在该计算系统中,与计算系统结合的代码能够执行一个或更多实施例。
还是作为更进一步的方面,可以提供用于集成计算基础设施的过程,包含集成计算机可读代码到计算系统中。计算机系统包含计算机可读介质,在该计算机系统中,计算机介质包含一个或更多实施例。与计算机系统结合的代码能够执行一个或更多实施例。
虽然上面说明了各种实施例,但是这些只是示例。例如,其它结构的计算环境可以用于合并和使用一个或更多实施例。更进一步地,可以使用不同指令、指令格式、指令域和/或指令值。仍然更进一步地,同步可以以其它方式执行。很多变化是可能的。
更进一步地,其它类型的计算环境可能受益并被使用。作为示例,适于存储和/或执行程序代码的数据处理系统是可用的,该数据处理系统包括至少两个通过系统总线与存储器元件直接或间接连接的处理器。存储器元件包括:例如,程序代码的实际执行期间使用的本地存储器、大容量存储器和高速缓存存储器,该高速缓冲存储器提供至少一些代码的临时存储,以便减少执行期间从大规模存储器检索代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指向设备、DASD、磁带、CD、DVD、拇指存储器和其它存储器媒体等)可以直接或通过插入I/O控制器连接到系统。网络适配器也可以连接到系统以使数据处理系统能够通过插入的私有或公共网络变为连接到其它数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡只是一些可用类型的网络适配器。
在进一步的实施例中,一个或多个示例是关于云计算的。首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特征包括:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连处理器网络的基础架构。
现在参考图17,其中显示了云计算处理器的一个示例。图17显示的云计算处理器6010仅仅是适合的云计算节点的一个示例,不应对本发明实施例的功能和使用范围带来任何限制。总之,云计算处理器6010能够被用来实现和/或执行以上所述的任何功能。
云计算处理器6010具有计算机系统/服务器6012,其可与众多其它通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器6012一起操作的计算系统、环境和/或配置的示例包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。
计算机系统/服务器6012可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器6012可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
如图17所示,云计算处理器6010中的计算机系统/服务器6012以通用计算设备的形式表现。计算机系统/服务器6012的组件可以包括但不限于:一个或者多个处理器或者处理单元6016,系统存储器6028,连接不同系统组件(包括系统存储器6028和处理单元6016)的总线6018。
总线6018表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器6012典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器6012访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器6028可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)6030和/或高速缓存存储器6032。计算机系统/服务器6012可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统6034可以用于读写不可移动的、非易失性磁介质(未显示,通常称为“硬盘驱动器”)。尽管未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线6018相连。存储器6028可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块6042的程序/实用工具6040,可以存储在存储器6028中,这样的程序模块6042包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块6042通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器6012也可以与一个或多个外部设备6014(例如键盘、指向设备、显示器6024等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器6012交互的设备通信,和/或与使得该计算机系统/服务器6012能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口6022进行。并且,计算机系统/服务器6012还可以通过网络适配器6020与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器6020通过总线6018与计算机系统/服务器6012的其它模块通信。应当明白,尽管图中未示出,其它硬件和/或软件模块可以与计算机系统/服务器6012一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
现在参考图18,其中显示了示例性的云计算环境6050。如图所示,云计算环境6050包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算处理器6010,本地计算设备例如可以是个人数字助理(PDA)或移动电话6054A,台式电脑6054B、笔记本电脑6054C和/或汽车计算机系统6054N。云计算处理器6010之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算处理器6010进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境6050提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图18显示的各类计算设备54A-N仅仅是示意性的,云计算处理器6010以及云计算环境6050可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。
现在参考图19,其中显示了云计算环境6050(图18)提供的一组功能抽象层。首先应当理解,图3所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图19所示,提供下列层和对应功能:
硬件和软件层6060包括硬件和软件组件。硬件组件的示例包括:主机,例如系统;基于RISC(精简指令集计算机)体系结构的服务器,例如IBM系统;IBM系统;IBM系统;存储设备;网络和网络组件。软件组件的示例包括:网络应用服务器软件,例如IBM应用服务器软件;数据库软件,例如IBM数据库软件。(IBM,zSeries,pSeries,xSeries,BladeCenter,WebSphere以及DB2是国际商业机器公司在全世界各地的注册商标)。
虚拟层6062提供一个抽象层,该层可以提供下列虚拟实体的示例:虚拟服务器、虚拟存储、虚拟网络(包括虚拟私有网络)、虚拟应用和操作系统,以及虚拟客户端。
在一个示例中,管理层6064可以提供下述功能:资源供应功能:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个示例中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层6066提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航;软件开发及生命周期管理;虚拟教室的教学提供;数据分析处理;以及交易处理。
这里使用的术语的目的只是为了说明特殊的实施例并且不打算做限制。如这里使用的,单数形式“a”、“an”和“the”也打算包括复数形式,除非上下文另外明确指示。将更进一步被理解的是:当在这个规范中使用时,术语“包含”和/或“包含”指定陈述的特征、整体、步骤、操作、元件和/或组件,但是不排除一个或更多其它特征、整体、步骤、操作、元件、组件和/或它们的组的存在或增加。
如果存在,下面的强烈要求中的所有方法或步骤的相应的结构、材料、行为和等价物加上功能元素打算包括任何结构、材料或行为用于执行功能结合其它要求的元素,如特别要求的。为了图解和说明的目的已经提供了一个或更多实施例的说明,但是不打算以公开的形式成为详尽的或限制的。很多修改和变化对那些本领域的一般技术人员将是显然的。选择和说明实施例以便最好地解释各种方面和实际应用以及使本领域的其他一般技术人员能够理解具有各种修改的各种实施例适合预期的特殊用途。
Claims (17)
1.一种方法,用于同步对计算环境中状态指示符的更新,所述方法包含:
由第一处理器从第二处理器接收同步请求,所述同步请求指令所述第一处理器交付位于存储器中的地址转换结构的一个或更多项的一个或更多状态指示符的挂起的更新,并接收执行对应于第一处理器的一个或更多缓存中的多个页表项的无效化的请求;
基于接收所述同步请求,由所述第一处理器执行同步操作以交付所述一个或更多状态指示符的挂起的更新,以及,并行于执行同步操作,执行对应于所述第一处理器的一个或更多缓存中的多个页表项的无效化;以及
基于完成所述同步操作,由所述第一处理器向所述第二处理器指示完成;
基于所述第二处理器接收所述第一处理器已经完成所述同步操作的指示,第二处理器继续通过更新存储器中的一个或更多页表项重配置地址空间以反映重配置的地址空间的状态,以及,对处理器的缓存项执行本地无效化操作,以确保没有对应于重配置之前的地址空间的过时的缓存项存储在所述第二处理器上。
2.根据权利要求1所述的方法,其中所述一个或更多状态指示符包含变化指示符或参考指示符中的至少一个,所述变化指示符指示与所述变化指示符相关联的存储器单元是否已经被更新,所述参考指示符指示与所述参考指示符相关联的存储器单元是否已经被访问。
3.根据权利要求2所述的方法,其中所述存储器单元包含存储器的页,所述地址转换结构包含页表,以及其中所述变化指示符和所述参考指示符位于对应于所述存储器的页的页表项中。
4.根据权利要求2所述的方法,其中交付所述一个或更多状态指示符的挂起的更新包括基于所述第一处理器的本地结构中的所述变化指示符或所述参考指示符的变化值中的至少一个,由所述第一处理器更新所述地址转换结构中的所述变化指示符或所述参考指示符中的至少一个。
5.根据权利要求1所述的方法,其中由所述第一处理器接收所述同步请求是基于由所述第二处理器发行出的同步指令。
6.根据权利要求1所述的方法,其中执行所述同步操作包括:
标记所述第一处理器的队列中用于所述一个或更多状态指示符的一个或更多挂起的更新;以及
根据队列中标记的一个或更多挂起的更新请求,更新一个或更多地址转换结构的项。
7.根据权利要求1所述的方法,其中执行所述同步操作包括:
基于接收所述同步请求,将标记放置到队列中,所述队列包括在所述标记之前的用于所述一个或更多状态指示符的一个或更多挂起的更新请求;以及
基于所述标记之前的所述队列中的所述一个或更多挂起的更新请求,更新所述地址转换结构的一个或更多项,其中基于到达所述标记指示所述同步操作的完成。
8.根据权利要求1所述的方法,其中配置所述计算环境用于所述地址转换结构的不连贯的更新,因为在特定的时间量中不保证对所述地址转换结构的更新。
9.根据权利要求1所述的方法,其中接收所述同步请求包括由多个处理器接收所述同步请求,所述多个处理器执行同步并发送完成指示。
10.根据权利要求9所述的方法,其中所述多个处理器是处理器的选择组,所述处理器的选择组基于一个或更多分区、分组或特殊地址空间的使用来选择。
11.一种计算机系统,用于同步对计算环境中状态指示符的更新,所述计算机系统包括:
存储器;以及
与所述存储器通信的处理器,其中配置所述计算机系统以执行一种方法,所述方法包括:
由第一处理器从第二处理器接收同步请求,所述同步请求指令所述第一处理器交付位于存储器中的地址转换结构的一个或更多项的一个或更多状态指示符的挂起的更新,并接收执行对应于第一处理器的一个或更多高速缓存中的多个页表项的无效化的请求;
基于接收所述同步请求,由所述第一处理器执行同步操作以交付所述一个或更多状态指示符的挂起的更新,以及,并行于执行同步操作,执行对应于所述第一处理器的一个或更多缓存中的多个页表项的无效化;以及
基于完成所述同步操作,由所述第一处理器向所述第二处理器指示完成;
基于所述第二处理器接收所述第一处理器已经完成所述同步操作的指示,第二处理器继续通过更新存储器中的一个或更多页表项重配置地址空间以反映重配置的地址空间的状态,以及,对处理器的缓存项执行本地无效化操作,以确保没有对应于重配置之前的地址空间的过时的缓存项存储在所述第二处理器上。
12.根据权利要求11所述的计算机系统,其中所述一个或更多状态指示符包含变化指示符或参考指示符中的至少一个,所述变化指示符指示与所述变化指示符相关联的存储器单元是否已经被更新,所述参考指示符指示与所述参考指示符相关联的存储器单元是否已经被访问。
13.根据权利要求12所述的计算机系统,其中所述存储器单元包含存储器的页,所述地址转换结构包含页表,以及其中所述变化指示符和所述参考指示符位于对应于所述存储器的页的页表项中。
14.根据权利要求12所述的计算机系统,其中交付所述一个或更多状态指示符的挂起的更新包括基于所述第一处理器的本地结构中的所述变化指示符或所述参考指示符的变化值中的至少一个,由所述第一处理器更新所述地址转换结构中的所述变化指示符或所述参考指示符中的至少一个。
15.根据权利要求11所述的计算机系统,其中执行所述同步操作包括:
标记所述第一处理器的队列中用于所述一个或更多状态指示符的一个或更多挂起的更新;以及
根据队列中标记的一个或更多挂起的更新请求,更新一个或更多地址转换结构的项。
16.根据权利要求11所述的计算机系统,其中执行所述同步操作包括:
基于接收所述同步请求,将标记放置到队列中,所述队列包括在所述标记之前的用于所述一个或更多状态指示符的一个或更多挂起的更新请求;以及
基于所述标记之前的所述队列中的所述一个或更多挂起的更新请求,更新所述地址转换结构的一个或更多项,其中基于到达所述标记指示所述同步操作的完成。
17.一种计算机可读存储介质,可由处理电路读取,并且存储用于由所述处理电路执行的指令,用于执行如权利要求1到10的任何一项所述的用于同步对计算环境中状态指示符的更新的方法的所有步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/292,604 US9785554B2 (en) | 2014-05-30 | 2014-05-30 | Synchronizing updates of page table status indicators in a multiprocessing environment |
US14/292,604 | 2014-05-30 | ||
PCT/IB2015/053728 WO2015181687A1 (en) | 2014-05-30 | 2015-05-21 | Synchronizing updates to status indicators in a computing environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106462505A CN106462505A (zh) | 2017-02-22 |
CN106462505B true CN106462505B (zh) | 2019-06-04 |
Family
ID=54698201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580028949.5A Expired - Fee Related CN106462505B (zh) | 2014-05-30 | 2015-05-21 | 同步计算环境中对状态指示符的更新 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9785554B2 (zh) |
JP (1) | JP6362769B2 (zh) |
CN (1) | CN106462505B (zh) |
DE (1) | DE112015001977B4 (zh) |
GB (1) | GB2540912B (zh) |
WO (1) | WO2015181687A1 (zh) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8484162B2 (en) | 2008-06-24 | 2013-07-09 | Commvault Systems, Inc. | De-duplication systems and methods for application-specific data |
US8930306B1 (en) | 2009-07-08 | 2015-01-06 | Commvault Systems, Inc. | Synchronized data deduplication |
US11449394B2 (en) | 2010-06-04 | 2022-09-20 | Commvault Systems, Inc. | Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources |
US9116850B2 (en) | 2010-12-14 | 2015-08-25 | Commvault Systems, Inc. | Client-side repository in a networked deduplicated storage system |
US9020900B2 (en) | 2010-12-14 | 2015-04-28 | Commvault Systems, Inc. | Distributed deduplicated storage system |
US9218376B2 (en) | 2012-06-13 | 2015-12-22 | Commvault Systems, Inc. | Intelligent data sourcing in a networked storage system |
US9665591B2 (en) | 2013-01-11 | 2017-05-30 | Commvault Systems, Inc. | High availability distributed deduplicated storage system |
US10380072B2 (en) | 2014-03-17 | 2019-08-13 | Commvault Systems, Inc. | Managing deletions from a deduplication database |
US9811427B2 (en) | 2014-04-02 | 2017-11-07 | Commvault Systems, Inc. | Information management by a media agent in the absence of communications with a storage manager |
US9785554B2 (en) | 2014-05-30 | 2017-10-10 | International Business Machines Corporation | Synchronizing updates of page table status indicators in a multiprocessing environment |
US9384133B2 (en) | 2014-05-30 | 2016-07-05 | International Business Machines Corporation | Synchronizing updates of page table status indicators and performing bulk operations |
US9575673B2 (en) | 2014-10-29 | 2017-02-21 | Commvault Systems, Inc. | Accessing a file system using tiered deduplication |
US10339106B2 (en) | 2015-04-09 | 2019-07-02 | Commvault Systems, Inc. | Highly reusable deduplication database after disaster recovery |
US20160350391A1 (en) | 2015-05-26 | 2016-12-01 | Commvault Systems, Inc. | Replication using deduplicated secondary copy data |
US20170192868A1 (en) | 2015-12-30 | 2017-07-06 | Commvault Systems, Inc. | User interface for identifying a location of a failed secondary storage device |
US10146695B2 (en) * | 2016-09-22 | 2018-12-04 | Unisys Corporation | System and method for implementing an efficient large system page invalidation |
US10417102B2 (en) | 2016-09-30 | 2019-09-17 | Commvault Systems, Inc. | Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including virtual machine distribution logic |
CN108572926B (zh) * | 2017-03-13 | 2022-02-22 | 阿里巴巴集团控股有限公司 | 一种用于同步中央处理器所属缓存的方法和装置 |
CN107231417B (zh) * | 2017-05-31 | 2020-05-26 | 深圳市亚启科技有限公司 | 一种低速链路下网络节点间数据同步方法及系统 |
US11016696B2 (en) | 2018-09-14 | 2021-05-25 | Commvault Systems, Inc. | Redundant distributed data storage system |
US11010258B2 (en) | 2018-11-27 | 2021-05-18 | Commvault Systems, Inc. | Generating backup copies through interoperability between components of a data storage management system and appliances for data storage and deduplication |
US11200124B2 (en) | 2018-12-06 | 2021-12-14 | Commvault Systems, Inc. | Assigning backup resources based on failover of partnered data storage servers in a data storage management system |
US11200168B2 (en) * | 2018-12-10 | 2021-12-14 | International Business Machines Corporation | Caching data from remote memories |
US11698727B2 (en) | 2018-12-14 | 2023-07-11 | Commvault Systems, Inc. | Performing secondary copy operations based on deduplication performance |
US20200327017A1 (en) | 2019-04-10 | 2020-10-15 | Commvault Systems, Inc. | Restore using deduplicated secondary copy data |
US11463264B2 (en) | 2019-05-08 | 2022-10-04 | Commvault Systems, Inc. | Use of data block signatures for monitoring in an information management system |
US11442896B2 (en) | 2019-12-04 | 2022-09-13 | Commvault Systems, Inc. | Systems and methods for optimizing restoration of deduplicated data stored in cloud-based storage resources |
US11816037B2 (en) | 2019-12-12 | 2023-11-14 | Advanced Micro Devices, Inc. | Enhanced page information co-processor |
US11099956B1 (en) | 2020-03-26 | 2021-08-24 | Commvault Systems, Inc. | Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations |
US11687424B2 (en) | 2020-05-28 | 2023-06-27 | Commvault Systems, Inc. | Automated media agent state management |
GB2603489B (en) * | 2021-02-04 | 2023-02-22 | Advanced Risc Mach Ltd | A data processing apparatus and method for address translation |
US11645175B2 (en) | 2021-02-12 | 2023-05-09 | Commvault Systems, Inc. | Automatic failover of a storage manager |
US12112200B2 (en) | 2021-09-13 | 2024-10-08 | International Business Machines Corporation | Pipeline parallel computing using extended memory |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6286092B1 (en) * | 1999-05-12 | 2001-09-04 | Ati International Srl | Paged based memory address translation table update method and apparatus |
US8307194B1 (en) * | 2003-08-18 | 2012-11-06 | Cray Inc. | Relaxed memory consistency model |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5197139A (en) * | 1990-04-05 | 1993-03-23 | International Business Machines Corporation | Cache management for multi-processor systems utilizing bulk cross-invalidate |
CA2107056C (en) * | 1993-01-08 | 1998-06-23 | James Allan Kahle | Method and system for increased system memory concurrency in a multiprocessor computer system |
US6119204A (en) | 1998-06-30 | 2000-09-12 | International Business Machines Corporation | Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization |
US6647468B1 (en) | 1999-02-26 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Method and system for optimizing translation buffer recovery after a miss operation within a multi-processor environment |
US6360231B1 (en) | 1999-02-26 | 2002-03-19 | Hewlett-Packard Company | Transactional memory for distributed shared memory multi-processor computer systems |
US6751721B1 (en) | 2000-08-31 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | Broadcast invalidate scheme |
US6779049B2 (en) * | 2000-12-14 | 2004-08-17 | International Business Machines Corporation | Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism |
US6745272B2 (en) | 2001-04-04 | 2004-06-01 | Advanced Micro Devices, Inc. | System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system |
US7096323B1 (en) | 2002-09-27 | 2006-08-22 | Advanced Micro Devices, Inc. | Computer system with processor cache that stores remote cache presence information |
US7073043B2 (en) * | 2003-04-28 | 2006-07-04 | International Business Machines Corporation | Multiprocessor system supporting multiple outstanding TLBI operations per partition |
US7552254B1 (en) | 2003-07-30 | 2009-06-23 | Intel Corporation | Associating address space identifiers with active contexts |
US20050080934A1 (en) | 2003-09-30 | 2005-04-14 | Cota-Robles Erik C. | Invalidating translation lookaside buffer entries in a virtual machine (VM) system |
US7363463B2 (en) * | 2005-05-13 | 2008-04-22 | Microsoft Corporation | Method and system for caching address translations from multiple address spaces in virtual machines |
US8423747B2 (en) | 2008-06-30 | 2013-04-16 | Intel Corporation | Copy equivalent protection using secure page flipping for software components within an execution environment |
US7454590B2 (en) * | 2005-09-09 | 2008-11-18 | Sun Microsystems, Inc. | Multithreaded processor having a source processor core to subsequently delay continued processing of demap operation until responses are received from each of remaining processor cores |
US7739476B2 (en) | 2005-11-04 | 2010-06-15 | Apple Inc. | R and C bit update handling |
US7549035B1 (en) | 2006-09-22 | 2009-06-16 | Sun Microsystems, Inc. | System and method for reference and modification tracking |
US8296520B2 (en) | 2007-12-19 | 2012-10-23 | International Business Machines Corporation | System and method for optimizing neighboring cache usage in a multiprocessor environment |
US8001328B2 (en) | 2008-01-29 | 2011-08-16 | International Business Machines Corporation | Method and process for expediting the return of line exclusivity to a given processor through enhanced inter-node communications |
US8312219B2 (en) | 2009-03-02 | 2012-11-13 | International Business Machines Corporation | Hybrid caching techniques and garbage collection using hybrid caching techniques |
US8234407B2 (en) | 2009-06-30 | 2012-07-31 | Oracle America, Inc. | Network use of virtual addresses without pinning or registration |
US8566524B2 (en) | 2009-08-31 | 2013-10-22 | International Business Machines Corporation | Transactional memory system with efficient cache support |
US8930635B2 (en) | 2009-12-14 | 2015-01-06 | International Business Machines Corporation | Page invalidation processing with setting of storage key to predefined value |
US9448938B2 (en) | 2010-06-09 | 2016-09-20 | Micron Technology, Inc. | Cache coherence protocol for persistent memories |
US8788761B2 (en) | 2010-09-24 | 2014-07-22 | Nvidia Corporation | System and method for explicitly managing cache coherence |
DE112011103433B4 (de) * | 2010-11-26 | 2019-10-31 | International Business Machines Corporation | Verfahren, System und Programm zum Steuern von Cache-Kohärenz |
US9916257B2 (en) | 2011-07-26 | 2018-03-13 | Intel Corporation | Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory |
US9418010B2 (en) | 2013-04-17 | 2016-08-16 | Apple Inc. | Global maintenance command protocol in a cache coherent system |
US9411745B2 (en) | 2013-10-04 | 2016-08-09 | Qualcomm Incorporated | Multi-core heterogeneous system translation lookaside buffer coherency |
US9785554B2 (en) | 2014-05-30 | 2017-10-10 | International Business Machines Corporation | Synchronizing updates of page table status indicators in a multiprocessing environment |
US9384133B2 (en) | 2014-05-30 | 2016-07-05 | International Business Machines Corporation | Synchronizing updates of page table status indicators and performing bulk operations |
-
2014
- 2014-05-30 US US14/292,604 patent/US9785554B2/en not_active Expired - Fee Related
- 2014-09-09 US US14/481,244 patent/US9785555B2/en not_active Expired - Fee Related
-
2015
- 2015-05-21 GB GB1620122.0A patent/GB2540912B/en active Active
- 2015-05-21 WO PCT/IB2015/053728 patent/WO2015181687A1/en active Application Filing
- 2015-05-21 CN CN201580028949.5A patent/CN106462505B/zh not_active Expired - Fee Related
- 2015-05-21 DE DE112015001977.4T patent/DE112015001977B4/de active Active
- 2015-05-21 JP JP2017514988A patent/JP6362769B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6286092B1 (en) * | 1999-05-12 | 2001-09-04 | Ati International Srl | Paged based memory address translation table update method and apparatus |
US8307194B1 (en) * | 2003-08-18 | 2012-11-06 | Cray Inc. | Relaxed memory consistency model |
Also Published As
Publication number | Publication date |
---|---|
GB201620122D0 (en) | 2017-01-11 |
US20150347306A1 (en) | 2015-12-03 |
GB2540912A (en) | 2017-02-01 |
CN106462505A (zh) | 2017-02-22 |
JP2017520869A (ja) | 2017-07-27 |
WO2015181687A1 (en) | 2015-12-03 |
US9785555B2 (en) | 2017-10-10 |
US20150347300A1 (en) | 2015-12-03 |
JP6362769B2 (ja) | 2018-07-25 |
DE112015001977T5 (de) | 2017-03-09 |
US9785554B2 (en) | 2017-10-10 |
GB2540912B (en) | 2017-12-20 |
DE112015001977B4 (de) | 2024-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106462505B (zh) | 同步计算环境中对状态指示符的更新 | |
US9836411B2 (en) | Synchronizing updates of page table status indicators and performing bulk operations | |
US11016907B2 (en) | Increasing the scope of local purges of structures associated with address translation | |
CN106133683B (zh) | 计算系统中的架构模式配置 | |
US9329850B2 (en) | Relocation of instructions that use relative addressing | |
CN105446793B (zh) | 迁移虚拟资产的方法和设备 | |
CN106133682B (zh) | 用于能在多种架构中初始化的控制实用工具的公用引导序列 | |
US10572385B2 (en) | Granting exclusive cache access using locality cache coherency state | |
US20180018283A1 (en) | Selective purging of guest entries of structures associated with address translation | |
KR20190088996A (ko) | 전용 캐시에서 캐시 라인의 배타적 홀드를 연장하기 위한 퍼실리티 | |
TWI665605B (zh) | 用於暫時抑制受約束儲存器運算元請求之處理之電腦程式產品、電腦實施方法及電腦系統 | |
CN111279323B (zh) | 通过多个处理器对共享高速缓存行的并发修改 | |
US10528482B2 (en) | Cache management | |
US10572387B2 (en) | Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer | |
US20170118005A1 (en) | Non-disruptively splitting a coordinated timing network | |
CN107636624A (zh) | 没有使用的特殊指令的垃圾收集 | |
TWI729678B (zh) | 用於移動資料及設定儲存金鑰指令之電腦程式產品、電腦系統及電腦實施方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190604 |
|
CF01 | Termination of patent right due to non-payment of annual fee |