CN114253603A - 用于处理器中的用户空间对象一致性的系统、装置和方法 - Google Patents
用于处理器中的用户空间对象一致性的系统、装置和方法 Download PDFInfo
- Publication number
- CN114253603A CN114253603A CN202110973665.0A CN202110973665A CN114253603A CN 114253603 A CN114253603 A CN 114253603A CN 202110973665 A CN202110973665 A CN 202110973665A CN 114253603 A CN114253603 A CN 114253603A
- Authority
- CN
- China
- Prior art keywords
- processor
- code sequence
- entry
- storage element
- state
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 230000015654 memory Effects 0.000 claims abstract description 96
- 238000003860 storage Methods 0.000 claims abstract description 59
- 238000013507 mapping Methods 0.000 claims description 97
- 230000004044 response Effects 0.000 claims description 33
- 230000001427 coherent effect Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 40
- 238000010586 diagram Methods 0.000 description 27
- 238000012545 processing Methods 0.000 description 12
- 238000013519 translation Methods 0.000 description 12
- 230000014616 translation Effects 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 10
- 238000007667 floating Methods 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000007792 addition Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 229910003460 diamond Inorganic materials 0.000 description 3
- 239000010432 diamond Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000001220 thermal lens spectroscopy Methods 0.000 description 3
- 230000011637 translesion synthesis Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent 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
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 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/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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on 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/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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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/1048—Scalability
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- 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/652—Page size control
-
- 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/682—Multiprocessor TLB consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/101—Collaborative creation, e.g. joint development of products or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了用于处理器中的用户空间对象一致性的系统、装置和方法。在实施例中,处理器包括:执行电路,用于执行指令;至少一个高速缓存存储器,耦合至执行电路;以及表存储元件,耦合至至少一个高速缓存存储器,表存储元件用于存储各自都用于存储在代码序列中使用的对象的对象元数据的多个条目。处理器用于使用对象元数据来提供代码序列的用户空间多对象事务原子性操作。描述并要求保护其他实施例。
Description
技术领域
实施例关于管理处理器中的对象的一致性。
背景技术
用于规模化(at-scale)计算范式的软件编程呈现出复杂的性能挑战。编程器经常处理在其中软件高性能结构体要求理解细粒度的锁、定序、多算法方式、以及精细的数据结构的大量并发性问题。在不由编程器进行仔细编排的情况下,这些工作负载在它们跨越多个节点、数千个核和复杂的等待时间层级结构而至存储器时将展现出非确定性执行行为。
具有编程背景的最近的毕业生不再学习这些低级程序结构体和语言。由于仅关注得到解决方案的时间,高级解释语言是新规范,其中所有复杂度隐藏于各种库之下,这些库将该复杂度移离编程器。这些现代的编程器甚至缺乏向低级语言、同步结构体和类似的构建块的暴露,并因此缺乏处置跟随最初开发的解决方案而来的规模化性能挑战。在解释语言下对框架和库的依赖使这些编程器不能够快速处置不在那些预制结构体内干净地适配的情况。由此,当前架构在被缩放时暴露程序的不充分,并且打破锁定并在程序中达到活锁或死锁状态的软件约定。
附图说明
图1是根据实施例的处理器的框图。
图2是根据实施例的映射表的框图。
图3是根据实施例的转换后备缓冲器的框图。
图4是根据实施例的高速缓存存储器的框图。
图5是根据实施例的操作编译器的流程图。
图6是根据另一实施例的方法的流程图。
图7A和图7B图示核架构的框图。
图8是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器的框图。
图9是根据本发明的实施例的第一更具体的示例性系统的框图。
图10是根据本发明的实施例的SoC的框图。
图11是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在各实施例中,向处理器架构提供用于启用扩展指令序列的透明原子性的硬件方案。指令集架构(ISA)的这些硬件扩展和相关联的指令促进框架和编译器在无需用于处置多种场景的显式调度和精细的软件分支的情况下收获低级别管理的益处。以此方式,历史上的编程器已管理的内容与用于生产率强调的未来趋势编程框架之间的缺口可被弥合。
在以下表1中示出规模化结构体中的常见编程问题的代表性示例。如在高层级所示出,来自若干“对象”的内容在执行局部(短时)计算之前被读取,并且随后其他“对象”被写入以公布那个计算的副作用。通过写入对象来读取对象的完整序列被视为一个原子性操作(也称为事务)。如果被读取以用于局部计算的对象由程序的其他并发部分修改,则这整个事务不能够被发布,相反,它被重启。一旦该事务开始将结果写入存储器,将被写入的所有对象就被保持于独占访问,使得在该事务完成之前,程序没有其他并发部分可读取或写入这些对象。
表1
在该示例中,伪代码“sequence{..}”结构体内的所有操作将事务的工作呈现为被维持为原子性操作。由于系统中的竞争,对于针对对象的原子性属性的反复的竞争将导致多次序列重启从而触发针对事务的重放风暴是很有可能的。出于那个原因,伪代码“times(N){..}”结构体旨在作为在N次尝试(在此,在“times(5)”中,N=5)后存在未能进行向前进展的情况下的回退情况。在这种情况下,编程器典型地实现变通策略,从指数退避延迟到替代的代码路径或仿真。对于由于竞争而导致的失败的这种显式的处置是对编程器的进一步负担,从而要求进一步专业化的知识、分析和技能。传统意义上而言,使此类序列性能良好地正确工作要求深厚的专业知识来完全适当地实现。更好的解决方案是对于如下结构体:该结构体不要求“times(N){..}”组成部分,替代地在冲突发生时透明地处置这种情况,同时仍确保向前进展。
该高水平生产率的“sequence{..}”结构体的目标是直截了当的,体现在它使编程器能够聚焦于要完成的实际工作,而非用于实现那项工作的同步或锁定属性的细节。凭借根据实施例的硬件支持机制的适当子集,通过高度功能性事务语义的这种透明锁定的风格将弥合未来编程器目标与当前硬件限制之间的缺口。
虽然该标准化示例对于示范目的是简单的,但是存在要针对真实世界使用和潜在实现方式的一些属性:对象典型地将不是静态地已知的,而是在运行时被解析的动态对象指针;现代复杂操作系统内的交互将暴露通过经由应用编程接口(API)调用(诸如,mmap、mremap、shmat、shm_open等)而被定界的区域工作的附加的挑战,并在执行期间操纵地址空间;锁定对象在完全的程序中的所有地点按一致的顺序被取得以避免死锁情形;(特别是具有解释语言或字节代码语言的)操作系统和动态运行时由于存储器竞争和分页而随时间推移将用户空间虚拟地址重映射到不同的物理地址;并且在事务的开始时以值A被观察到的对象可由程序的其他(并发的)部分改变以创建新的值B,同时程序的又一部分将它改回A,由此导致检测到A/B/A问题。
在本文中的实施例中,硬件表(在本文中称为映射表)可用于向正尝试实现可缩放系统上的软件的编程器提供低开销、低复杂度的解决方案。如本文中所描述,在实施例中可逐核地提供映射表。使用实施例,编程器(或编译器)可选择要跟踪哪个对象。在操作中的映射表进而在无需显式的编程器支持的情况下处理后台中用户之间的冲突和对象级一致性。
如本文中所使用,术语虚拟地址空间用于指在可以不是连续的且可基于程序行为在运行时期间扩展或收缩的虚拟地址(VA)空间上操作的用户软件。操作系统和/或运行时协调虚拟空间被管理的方式。虚拟空间可包含别名,使得任何两个虚拟地址可映射至同一唯一的存储位置。系统的物理地址空间进而是作用于唯一真实的物理地址(PA)映射的存储器地址,使得物理空间中没有两个地址能够指向同一唯一的存储器位置。物理地址空间可以不是连续的,并且可包含具有唯一属性(非易失性、只读、访问等待时间等)的区域。
从VA空间向PA空间的转换由转换单元执行,该转换单元可被实现为存储器管理单元,其可以是处于可编程控制下的硬件单元。转换后备缓冲器(TLB)是用于加速转换单元从VA空间向PA空间的机制的常见硬件机制,具有各种实现风格。
在平台上运行的任何程序或工作负载被称为进程,其被包含在操作系统单元内以进行跟踪。进程具有至少一个硬件执行上下文。作为进程(包括所有组成部分)的部分的整个地址空间被称为进程地址空间。进程地址空间在进程及其(多个)执行上下文或线程内是唯一的,但是跨进程不一定是唯一的。为了运行时或操作系统中的简单,一些常见的共享库可跨多个进程被映射在同一地址。进程地址空间典型地被视为那个进程的界限内的全局地址空间。操作系统或运行时拥有完整的转换单元表以计算用于进程地址空间的所有组成部分的所有VA至PA转换。
进程进而可包含多个执行硬件上下文,其中每个上下文是线程,使得这些线程全都仅是同一进程地址空间的部分。每个线程可运行程序的任何任意的部分。进程具有用于执行指令的至少一个线程。线程可使进程地址空间转换单元表的子集活跃。
在进程地址空间内,被称为堆的部分被预留用于存储器的动态分配,诸如,来自malloc()或free()的C调用。堆驻留在进程地址空间中。堆尺寸设定用于总进程执行中的最大期望的动态存储器。栈是用于由执行硬件上下文使用的、用于溢出和恢复临时值的空间。每个线程可被给予进程地址空间的、用作私有栈的部分,包括用于当线程被停止或启动时保存执行硬件上下文状态的区域。通常,不存在对用于栈的地址空间的实际独占访问的所确保的实施。线程可使用用于保存其自身的微型类堆结构体的像栈那样的空间、或可寻址暂存器,其被称为线程局部存储(TLB)。该空间可用于许多事物,但是对于栈,通常它不具有实际独占访问的所确保的实施。因此,进程地址空间可包括全局状态和堆。每个线程进而在进程地址空间内可具有栈和TLS。
原子性属性适用于进程的任何集合中的两个或更多个线程不能够看见读取-修改-写入操作内的被部分解析的状态。典型地,原子性被视为单条指令(诸如,cmpxchg或xadd)的行为。在这些操作中,存在当前值的读取操作,后跟决策,随后是新值向同一位置的潜在存储。在读取与存储之间,系统中的一些其他线程能够观察或更改该同一位置的内容。原子性属性是这样的属性,其中,一旦线程已开始原子性操作,则没有其他线程可访问(多个)受影响的位置,直到发起线程从原子性操作序列释放那个位置。
在硬件级别将原子性属性应用于超出单条读取-修改-写入指令的操作序列典型地被称为事务。事务一般跨潜在多个读取位置、若干评估和计算、以及多个写入位置来实现原子性。将所有这些操作包装在具有原子性的一个序列中是事务。
利用实施例,所有进程、线程、堆、栈和TLS遵循先前描述的布置。转换单元配置信息在进程地址空间级别是一致的,并且所有线程可在表的那个共同集合的子集上操作。无论使用实际的面向对象的编程结构体还是更经典的数据结构,在事务语义下被访问的程序数据都经由这些结构被引用并且在本文中被称为对象。每个对象保存由编译器自动生成的额外字段。在实施例中,该附加字段可被包括在对象数据中的第一地址处。具体地,该额外字段可用于提供“版本号”计数器。在实施例中,编译器可将该版本号初始化为0。随后,在事务执行期间,且更具体地在向对象的全局写入之际,该版本号可被递增。在实施例中,编译器可自动地将该“版本号”字段的递增插入在“wr_object”功能内,如表1的标准化示例中所示。在一个实施例中,该字段的尺寸可被配置成用于确保缠绕不使程序经受A/B/A翻转错误。在一个实施例中,可使用被视为无符号整数的八字节的字段尺寸。
在诸如具有图1中示出的风格的代码序列的编译期间,编译器可使用本文中描述的指令来生成事务语义。注意,在事务窗口内,编译器可将TLS用于所有短时计算。所有全局状态写入在来自标准化示例的“wr_object(..)”高级语义内被完成。
对象以某种形式的读取定序或写入定序被访问,如表1的标准化示例中所示。当任何特定对象需要更复杂的读取-修改-写入语义时,它可在“rd_object”操作下执行初始访问,将局部存储用于中间计算,并且随后将“wr_object”用作操作以实现对实际对象的更新。注意,事务中的对象的信息和数据在诸如TLB和高速缓存之类的结构中被访问和保存。在运行时期间,诸如这些(TLB、高速缓存)之类的硬件受限的结构会由于各种原因(一致性、容量、进程迁移等)而具有驱逐。
利用实施例,为用户空间提供可配置对象跟踪系统,并且一致性利用硬件支持跨被跟踪的对象被实施。利用实施例,编译器(以及显式的编程器)可使用基于ISA的指令来动态地枚举感兴趣的对象,从而利用进程空间专用映射表来登记它们,硬件对照该进程空间专用映射表跨那个进程来实施对象一致性校验。
现在参考图1,示出的是根据实施例的处理器的框图。如图1中所示,处理器100可以是任何类型的多核处理器。如所图示,处理器100包括核1100-110n。在本文中的实施例中,核110可配置有用于支持用户空间对象的自动实施的硬件。
如所示,核110包括映射表存储114,该映射表存储114包括各自都用于存储与要在事务中被访问的对象有关的信息的多个条目。在所示实施例中,映射表存储114包括控制电路113,该控制电路113可控制条目以及条目中所包括的信息的添加、移除和更新。在实施例中,控制电路113可具有与高速缓存如何维持一致性类似的硬件协议,以例如基于意图的用户代码添加/移除标记来跨映射表存储维持适当的统一性和一致性。
如进一步所图示,每个核110包括执行电路112。执行电路112可响应于所接收的指令(包括如本文中所描述的基于映射表的指令)执行各种操作。如进一步所图示,每个核110包括高速缓存层级结构115。在不同的实现方式中,高速缓存层级结构115可包括多个级别,包括核110内部的第一级高速缓存、第二级高速缓存和第三级高速缓存(L1、L3和L3),但是更多或更少的级别可以存在。附加地或替代地,末级高速缓存可以是核110外部的共享L3系统级高速缓存。
在实施例中,高速缓存层级结构115的至少一个高速缓存存储器可将一致性通知发送到映射表存储114,以基于对象的一致性的改变引起条目状态的更新。如进一步所图示,每个核110可包括存储器管理单元(MMU)118的至少部分。在实施例中,存储器管理单元118可包括转换后备缓冲器(TLB),该TLB存储虚拟地址-物理地址转换以及相关联的元数据。如本文中进一步所描述,映射表存储114中的信息的一致性可至少部分地基于从高速缓存层级结构115以及TLB 118接收的通知来维持。在图1的实施例中,映射表存储114是与高速缓存层级结构115分开的硬件存储器结构。在其他实施例中,映射表存储114可被包括在高速缓存层级结构115中。
更进一步地如图1中所示,为了实现不同核中的不同映射表之间的一致性,映射一致性子系统120可以存在。在实施例中,映射一致性子系统120可包括目录,该目录例如基于各映射表114内的条目状态的变化来接收并提供一致性更新。这些一致性更新可基于给定对象的可观察性的丢失。一致性目录基于对象的虚拟地址来跟踪这些对象,并且维持关于哪个核的映射表持有地址的所有权以及地址的一致状态的信息。一致性更新可遵循任何已知协议,包括:修改、拥有、独占、共享、无效(MOESI)、MESI或MSI。如进一步所示,高速缓存一致性子系统125可提供对高速缓存一致性信息在不同核110中的高速缓存层级结构之间的通信的类似支持。
要理解,虽然在图1的实施例中以该高层级示出,但是许多变型和替换方案是可能的。例如,虽然映射表存储114被示出为分开的存储器结构,但是在其他情况下,映射表可被包括在高速缓存层级结构的部分中。此外,虽然被示出为单个级别,但是在其他情况下,映射表层级结构可以存在,在该映射表层级结构中,更频繁地被访问和/或使用的对象可被存储在更小、更低等待时间的映射表级别中,并且其他对象可被存储在更大、更高等待时间的级别中。更进一步地,在其他实施例中,MMU 118、映射一致性子系统120、高速缓存层级结构115的高速缓存控制器、和/或结构(例如,网格结构或虚拟化结构)可替代于控制电路113或附加于控制电路113来控制映射表存储114中条目的添加、删除和更新。
对于用于支持用户空间一致性表的自动实施的硬件,某个级别的通知存在于高速缓存与TLB之间,使得驱逐被暴露于映射表,该映射表包含对象状态和版本号跟踪。虽然本文中描述的映射表支持自动化的编程器透明锁,但是该表可用于任何并发的读取方-写入方场景(从数据库到网络分组处理)中的其他软件问题。在访问映射表时,对象的用户空间(进程空间)地址被使用,其是虚拟的。作为结果,运行时或操作系统可在不破坏映射表条目或不根据锁的不适当定序而触发死锁场景的情况下移动物理页。
现在参考表2,示出的是根据实施例的ISA的映射控制指令的图示。如表2中所示,可存在多个特点的这些映射指令,这些映射指令与以下各项有关:获取给定事务的事务ID;针对事务将对象添加到映射表中;锁定映射表内的事务以验证事务结果;以及映射维持指令,用于终止事务并从映射表删除完成的事务。每条指令可具有用于指定要执行的操作(例如,给定映射控制和/或维持操作)的操作码、一个或多个操作数、立即数、和/或在指令执行中使用的附加字段,诸如表2中所示。当然要理解,附加的或不同的指令可存在于其他实施例中。
表2
下文是表1的标准化示例的编译代码版本,其中编译器已自动注入包括如表2中的基于映射的指令的附加操作以创建事务行为。所有划线的代码可自动地由编译器生成,或可由编程器显式地编码。所有没有划线的代码是表1的标准化代码。
如上文所示,划线的代码语句包括如表2中的映射指令,用于首先接收用于进程的令牌(map.get指令),并且随后针对在进程中的每个被读取和/或写入的对象将条目添加到映射表(map.add指令)。锁定指令、解锁指令和删除指令(map.lock、map.unlock和map.del)进而被包括以管理该表的一致性并创建事务行为。
注意,该代码示例缺乏对于标准化示例的“times(N){..}”组成部分的精细处置机制。任何硬件平台以及支持编译器框架的主要行为方面在于,诸如“map.add”和“map.lock”之类的所有“map”系列操作可被视为存储器优化无法通过的屏障。例如,在“map.add”指令存在的情况下,编译器不能够执行原本将会将存储器操作提升到那条“map.add”指令上方的优化。在相同方面,进行推测性执行的核不执行涉及存储器的、原本在将会将加载或存储提升到超出“map.add”在动态流中的程序顺序出现范围的任何优化。
假定对象在其存储器中结构的前八个字节中包含“版本号”字段,则可建立利用先前讨论进行编译的简单映射表。假定每个核具有映射表、以及用于为参与到特定进程空间中的那些核实施表的一致性的硬件一致性机制(与MESI类似)。
现在参考图2,示出的是根据实施例的映射表的框图。如图2中所示,映射表200包括多个条目2100-210n。如图所示,每个条目210包括各自都用于存储特定类型的信息的多个字段。如所图示,地址字段212可被配置成用于存储用于给定对象的虚拟地址。注意,该虚拟地址是所管理的对象的用户空间虚拟地址。凭借映射表200的基于用户空间虚拟地址的配置,对象被存储在其中的物理地址的变化可透明地且在不影响对象以及映射表200中的对象的条目的有效性的情况下发生。
如进一步所图示,每个条目210包括用于存储对象的尺寸(例如,按字节)的尺寸字段214。此外,版本字段215可在针对特定事务ID、条目被分配到映射表200中时存储用于对象的版本号。在实施例中,该版本号可在对象被访问时从该对象本身获取。在实施例中,版本号可被存储在对象的前8个字节中。此外,每个条目210进一步包括意图字段216。如所图示,意图字段216可定义对应的对象旨在用于读取访问还是写入访问(还是读取-修改-写入(RMW)访问)。只读对象可容易地与其他映射表共享而没有问题;然而,将对象移动到来自具有不同令牌ID的其他线程的写入意图的任何尝试将使用于该对象的该核的映射表被标记为FAIL状态。如进一步所示,每个条目210包括用于存储令牌的令牌字段218。该令牌是跨进程空间中的所有映射表的唯一ID,软件使用该唯一ID将该条目引用为“唯一事务ID”的部分。多个映射表条目(对象)可以是单个事务的部分。
最终,标记或状态字段219存在以存储与对象相关联的状态指示符。在实施例中,该状态指示符提供条目的状态,并且可以是以下之一:“OK”,其指示没有处于观察下的对象由于一致性目的而被修改或驱逐;“RECHECK”,其指示对象已由于存储器子系统中的一致性问题而改变,因此事务中的每个被标记RECHECK的对象将被验证为未改变;以及“FAIL”,其指示至脏状态的一致性违反、或者被跟踪对象版本号在尝试执行活跃事务的线程外部改变发生。尽管在图2的示例中以这些特定字段示出,但是要理解,在其他情况下,映射表可包括附加的或不同的字段。例如,在一些情况下,例如根据MESI高速缓存一致性协议的一致性信息也可被存储在每个条目中。
使用上文描述的说明性的编译器生成的代码(划线部分),图2的映射表200可在运行时期间填充有如表2中所示的对象和元数据。由于每个对象在不同时刻ti被映射,因此映射表200反映这些对象被键入且其版本号首先被校验时的各时刻值(t0、t1等)。在实施例中,响应于map.add指令,映射表200可视情况被操纵,并且一旦条目以完全排序顺序被插入到空闲槽中,对于对象的前八个字节的读取就被发起。注意,该操作可触发TLB映射和高速缓存条目映射。在适当的ti时刻按此方式被访问的对象的“版本号”字段将被存储在映射表中,以确保在执行期间没有A/B/A问题发生。
在图2的示图中,可假定没有TLB或高速缓存驱逐发生在对象上,因此标志字段219中的所有标志被示出为OK。事实上,驱逐可在程序执行期间发生,并且映射表200可被配置成当驱逐发生时从高速缓存和TLB两者接收边信道信息,以校验对象是否会变得受来自其他线程的不可观察的修改影响。在一个实施例中,映射表200可在地址经由映射表200被访问时通知TLB,该TLB进而通知高速缓存。这些其他单元进而可跟踪该一致性/驱逐信息,并且仅发送针对“映射表条目”标记的地址的驱逐通知。
要理解,处理器的附加硬件结构还可包括与对象有关的、出于本文中的用户空间对象一致性支持的信息。现在参考图3,示出的是根据实施例的转换后备缓冲器的框图。如图3中所示,TLB 300包括多个条目3100-310n。如所图示,每个条目310可用于给定的VA-PA转换。此外,每个条目310可包括如本文中所描述那样使用的对象元数据信息。
更具体地,如图所示,每个条目310可包括用于标识用于条目的TLB标签的标签字段312。基址字段314、315进而分别提供VA基址和PA基址。如图所示,每个VA基址可以用于包括至少一个对象的存储器的4K的页。尺寸字段316指示页的尺寸(例如,4KB)。并且最终标志字段318提供用于标识在一个或多个映射表中具有条目的页的对象的标志或指示符。在一个实施例中,TLB 300可被实现为下文进一步讨论的图7B的处理器的数据TLB 772。
注意,高速缓存存储器可类似地包括用于维持如本文中所述的一致性的对象元数据。现在参考图4,示出的是根据实施例的高速缓存存储器的框图。如图4中所示,高速缓存存储器400包括多个条目4100-410n。如所图示,每个条目410可存储来自给定物理地址的信息、以及供如本文中所描述地使用的对象元数据信息。
更具体地,如图所示,每个条目410可包括用于标识用于条目的高速缓存标签的标签字段412。物理地址字段414提供物理地址,给定对象(或其他数据)从该物理地址获取。一致性字段415可存储用于条目的一致性信息。在所示实施例中,一致性协议可以是修改-拥有-独占-共享-无效(MOESI)协议。一致性字段415标识条目的数据的高速缓存一致性状态。此外,每个条目410进一步包括标志字段416,该标志字段416提供用于标识条目是否与在一个或多个映射表中具有条目的对象相关联的标志或指示符。最终,数据字段418可存储对象自身(或至少其部分)。如进一步所示,数据字段418还可存储用于对象的版本号,如上文所讨论,该版本号可被包括在存储在存储器中的对象的前8个字节中。
表4示出根据实施例的基于MESI一致性协议的映射表一致性模型。
表4
利用实施例,能以无死锁方式实现多对象事务原子性行为,该无死锁方式允许编程器保持不在意硬件如何提供那些特征。换言之,用于执行事务中所涉及的对象的锁定的优化和硬件操作对编程器是透明的,该编程器可以不构想用于实现如本文中所描述的映射表的使用的上述映射控制指令且可以不将这些映射控制指令包括在程序中。
如上文所讨论,编译器可接收来自不知晓对象一致性问题的编程器的未经编译的代码。进而在编译代码时,编译器可插入如本文中所描述的映射控制和其他指令以启用用户空间多对象事务原子性操作。注意,编译器自身可利用代码实现,并且可被存储在非暂态存储介质中供在一个或多个处理器上执行。
现在参考图5,示出的是根据实施例的操作编译器的方法的流程图。如图5中所示,方法500开始于:在编译器中接收代码序列(框510)。假定该代码序列具有标准化格式,按照该标准化格式,各种对象被获取并被使用以执行一个或多个操作,这些操作的结果将被写入到一个或多个其他对象。在如由编程器提供的该高层级处,假定不存在用于处置关于对象的一致性问题的代码,例如,这些对象可由公共进程的一个或多个其他线程或由一个或多个其他进程使用。由此,编译器能以对编程器透明的方式插入用于启用无死锁操作的代码。
如图所示,在框520处,可在序列中标识一个或多个读取对象。对于每个读取对象,在框530处,编译器可在声明/签名时在对象中生成可用于存储版本号的字段。此外,该版本号可在声明/签名时被初始化(例如,初始化为0)。接下来在框540处,编译器可插入用于将这一个或多个读取对象添加到用于事务的映射表的代码。例如,编译器可为读取对象中的每个读取对象插入映射添加指令。
仍参考图5,接下来在框550处,可在序列中标识一个或多个写入对象。对于每个写入对象,在框560处,编译器可插入用于例如经由映射添加指令将这一个或多个写入对象添加到用于事务的映射表的代码。
除了插入用于将各种对象添加到映射表的代码之外,在框570处,编译器还插入用于锁定用于事务的映射表的代码。注意,该代码可在事务被执行之后、但在它通过向全局可见位置的写入(例如,写入对象自身)而被提交之前被插入在代码序列的位置中。注意,在代码序列的执行期间,在锁定映射表之际,可确定在事务中使用的对象中的任何对象在事务期间是否改变以使得陈旧的数据已被使用。此外,在框570处,编译器还可插入用于在对象更新被完成之前启用对用于每个被写入对象的版本号的更新的代码,无论每个被写入的对象响应于写入操作还是读取-修改-写入操作而被写入。
仍参考图5,编译器还可插入用于解锁用于事务的映射表的代码(框580)。注意,该解锁发生在锁定过程被完成之后。如果进程成功地完成,则在对象更新被完成且映射表被解锁之前,每个被写入对象(无论是写入还是读取-修改-写入)的版本号被递增或以其他方式被更新。如果相反一个或多个对象改变状态或以其他方式是无效的,则可通过用于这种情形的代码插入使事务失败。此刻,序列已经被编译以提供基于硬件的用户空间对象一致性支持。由此,在框590处,经更新的代码序列可被编译为机器代码。要理解,该机器代码可被存储在非暂态存储介质中,用于在正常的系统操作期间执行,以便利用对于用户空间多对象事务原子性操作的编程器透明的支持来执行事务。要理解,虽然在图5的实施例中以该高层级示出,但是许多变型和替换方案是可能的。
现在参考图6,示出的是根据另一实施例的方法的流程图。更具体地,图6的方法600是用于执行经编译的代码以执行用户空间多对象事务原子性操作的方法。由此,方法600可由核的硬件电路系统执行,该核可包括用于执行方法的处理电路系统(例如,处理设备、电路系统、专用逻辑、可编程逻辑、微代码等)并且可例如执行固件和/或软件(例如,在处理设备上运行的指令)。在一些实现方式中,方法600可由图1的一个或多个核110执行,这一个或多个核110包括利用映射表存储114或其他适当机制的一个或多个执行电路112。
如所图示,方法600开始于:例如响应于如本文中所描述的映射获得指令而获取用于事务的映射表ID(框605)。该映射表ID可从映射表的控制器获取,该控制器能以例如跨所有映射表和进程唯一的令牌的形式来发布唯一的ID。接下来,在框610处,可例如响应于如本文中描述的映射添加指令而针对事务的读取对象将一个或多个条目插入在映射表中。注意,各种信息可被包括在这些条目中,包括对象的用户空间地址、尺寸、使用意图和令牌ID。此外,条目还可存储从存储器读取的对象的当前版本号。假定存在空闲的映射表条目并且版本号被成功获取并被存储,则用于条目的标志可被设置为OK状态。
仍参考图6,接下来在框615处,可使用一个或多个读取对象来执行事务。注意,执行的结果可被存储在线程局部变量中,并且在此刻不被提交(框620)。在事务执行之后,可例如响应于如本文中所描述的一条或多条映射获得指令和映射添加指令而针对一个或多个写入对象将附加条目插入在映射表中。注意,可针对写入对象存储上文针对读取对象所描述的相同信息。此外,诸如在原始被标记为只读的对象转向读取-修改-写入或其他意图的情况下,可更新一个或多个现有条目。随后,在框625处,可例如响应于如本文中所描述的映射锁定指令而针对该事务锁定处理器的所有映射表。为此目的,每个条目可包括锁定状态指示符,该锁定状态指示符用于指示:条目是否被锁定;以及如果是,则条目不被允许由另一线程读取或写入。
作为锁定过程的部分,在菱形630处,可校验事务的每个条目以确定版本号中是否存在错误或除OK之外的状态(例如,重新校验或失败)是否存在。如果所有条目被指定为处于OK状态并且不存在版本号问题,则控制直接传递到框670,在框670处,结果可被写入到写入对象。更进一步地,这些写入对象条目中所包括的版本号可被更新(例如,被递增)以标识对写入对象的值的该更新。此后在框680处,可例如响应于如本文中所描述的映射解锁指令而解锁映射表。要理解,诸如删除用于事务的所有映射表条目或使用于事务的所有映射表条目无效之类的附加操作可以发生。
仍参考图6,相反如果确定了存在一些不一致(如在菱形630处所确定),则控制传递到框635以确定映射表事务的条目是否具有失败状态。如果是,控制传递到框660,在框660处,可使事务失败。要理解,用于处置事务的失败状态的各种操作可以发生。在一些情况下,可响应于此类失败而重试事务一次或多次。
相反,如果确定了不存在失败条目而存在重新校验状态条目,则可验证对应对象的版本号(框640)。为此目的,存储器中的对象的版本号可被获取并与映射表条目中存在的版本号进行比较,以确定对象中是否发生变化。如果版本号与菱形650处确定的不同,则事务可能失败(在框660处,上文讨论)。否则,如果不存在版本号的变化,则控制可传递到框670,在框670处,事务可提交。要理解,虽然在图6的实施例中以该高层级示出,但是许多变型和替换方案是可能的。
要理解,实施例可结合许多不同的处理器架构来使用。图7A是图示根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图7B是图示根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。此类实施例可用于提供代码序列的用户空间多对象事务原子性操作。图7A-图7B中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图7A中,处理器流水线700包括取出级702、长度解码级704、解码级706、分配级708、重命名级710、调度(也被称为分派或发布)级712、寄存器读取/存储器读取级714、执行级716、写回/存储器写入级718、异常处置级722和提交级724。注意,如本文中所描述,在给定实施例中,核可包括诸如流水线700之类的多条处理流水线。
图7B示出处理器核790,该处理器核790包括前端单元730,该前端单元730耦合到执行引擎单元750,并且前端单元730和执行引擎单元750两者都耦合到存储器单元770。核790可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核790可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元730包括分支预测单元732,该分支预测单元732耦合到指令高速缓存单元734,该指令高速缓存单元734耦合到指令转换后备缓冲器(TLB)736,该指令转换后备缓冲器736耦合到指令取出单元738,该指令取出单元738耦合到解码单元740。解码单元740(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元740可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核790包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元740中,或以其他方式在前端单元730内)。解码单元740耦合到执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括重命名/分配器单元752,该重命名/分配器单元752耦合到引退单元754和一个或多个调度器单元的集合756。(多个)调度器单元756表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元756耦合到(多个)物理寄存器堆单元758。(多个)物理寄存器堆单元758中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元758包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元758由引退单元754重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元754和(多个)物理寄存器堆单元758耦合到(多个)执行集群760。(多个)执行集群760包括一个或多个执行单元的集合762以及一个或多个存储器访问单元的集合764。执行单元762可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元756、(多个)物理寄存器堆单元758和(多个)执行集群760示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元764的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合764耦合到存储器单元770,该存储器单元770包括数据TLB单元772,该数据TLB单元772耦合到数据高速缓存单元774,该数据高速缓存单元774耦合到第二级(L2)高速缓存单元776。在一个示例性实施例中,存储器访问单元764可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元770中的数据TLB单元772。指令高速缓存单元734还耦合到存储器单元770中的第二级(L2)高速缓存单元776。L2高速缓存单元776耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线700:1)指令取出738执行取出级702和长度解码级704;2)解码单元740执行解码级706;3)重命名/分配器单元752执行分配级708和重命名级710;4)(多个)调度器单元756执行调度级712;5)(多个)物理寄存器堆单元758和存储器单元770执行寄存器读取/存储器读取级714;执行集群760执行执行级716;6)存储器单元770和(多个)物理寄存器堆单元758执行写回/存储器写入级718;7)各单元可牵涉到异常处置级722;以及8)引退单元754和(多个)物理寄存器堆单元758执行提交级724。
核790可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核790包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存单元734/774以及共享的L2高速缓存单元776,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图8是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器800的框图。图8中的实线框图示具有单个核802A、系统代理810、一个或多个总线控制器单元的集合816的处理器800,而虚线框的任选增加图示具有多个核802A-N、系统代理单元810中的一个或多个集成存储器控制器单元的集合814以及专用逻辑808的替代处理器800。
因此,处理器800的不同实现可包括:1)CPU,其中专用逻辑808是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核802A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核802A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核802A-N是大量通用有序核。因此,处理器800可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器800可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个高速缓存级别804A-N、一个或多个共享高速缓存单元的集合806、以及耦合到集成存储器控制器单元的集合814的外部存储器(未示出)。共享高速缓存单元的集合806可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元812将专用逻辑808、共享高速缓存单元的集合806、以及系统代理单元810/(多个)集成存储器控制器单元814互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,一致性被维持在一个或多个高速缓存单元806与核802A-N之间,以启用如本文中所描述的用户空间多对象事务原子性操作。
系统代理单元810包括协调和操作核802A-N的那些部件。系统代理单元810可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核802A-N以及专用逻辑808的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核802A-N在架构指令集方面可以是同构的或异构的;即,核802A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
图9-10是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参见图9,所示出的是根据本发明的实施例的第一更具体的示例性系统900的框图。如图9中所示,多处理器系统900是点对点互连系统,并且包括经由点对点互连950耦合的第一处理器970和第二处理器980。处理器970和980中的每一个都可以是处理器900的某一版本。
处理器970和980示出为分别包括集成存储器控制器(IMC)单元972和982。处理器970还包括作为其总线控制器单元的一部分的点对点(P-P)接口976和978;类似地,第二处理器980包括P-P接口986和988。处理器970、980可以经由使用点对点(P-P)接口电路978、988的P-P接口950来交换信息。如图9中所示,IMC 972和982将处理器耦合到相应的存储器,即存储器932和存储器934,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器970、980可各自经由使用点对点接口电路976、994、986、998的各个P-P接口952、954来与芯片组990交换信息。芯片组990可以任选地经由高性能接口939来与协处理器938交换信息。在一个实施例中,协处理器938是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组990可以经由接口996耦合到第一总线916。在一个实施例中,第一总线916可以是外围部件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图9中所示,各种I/O设备914可连同总线桥918一起耦合到第一总线916,该总线桥918将第一总线916耦合到第二总线920。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器915耦合到第一总线916。在一个实施例中,第二总线920可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线920,这些设备包括例如键盘和/或鼠标922、通信设备927以及存储单元928,该存储单元928诸如可包括指令/代码和数据930的盘驱动器或者其他大容量存储设备。此外,音频I/O 924可以被耦合到第二总线920。注意,其他架构是可能的。例如,代替图9的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图10,示出的是根据本发明的实施例的SoC 1000的框图。另外,虚线框是更先进的SoC上的任选的特征。在图10中,(多个)互连单元1002被耦合到:应用处理器1010,其包括一个或多个核的集合1002A-N的集合(包括组成的高速缓存单元1004A-N)以及(多个)共享高速缓存单元1006;系统代理单元1012;(多个)总线控制器单元1016;(多个)集成存储器控制器单元1014;一个或多个协处理器的集合1020,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及用于耦合到一个或多个外部显示器的显示单元1040。在一个实施例中,(多个)协处理器1020包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图9中图示的代码930)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图11是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图11示出可使用x86编译器1104来编译高级语言1102形式的程序,以生成可由具有至少一个x86指令集核的处理器1116原生执行的x86二进制代码1106。具有至少一个x86指令集核的处理器1116表示通过兼容地执行或以其他方式执行以下各项来执行与具有至少一个x86指令集核英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1104表示可操作用于生成x86二进制代码1106(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器116上执行。类似地,图11示出可以使用替代的指令集编译器1108来编译高级语言1102形式的程序,以生成可以由不具有至少一个x86指令集核的处理器1114(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码1110。指令转换器1112用于将x86二进制代码1106转换成可以由不具有x86指令集核的处理器1114原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1110相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1112通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1106的软件、固件、硬件或其组合。
以下示例涉及进一步的实施例。
在一个示例中,一种处理器包括:执行电路,用于执行指令;至少一个高速缓存存储器,耦合至执行电路;以及表存储元件,耦合至至少一个高速缓存存储器,表存储元件用于存储各自都用于存储在代码序列中使用的对象的对象元数据的多个条目,其中,处理器用于使用对象元数据来提供代码序列的用户空间多对象事务原子性操作。
在示例中,处理器用于:响应于代码序列的映射添加指令,将第一对象元数据存储在多个条目中的第一条目中,第一对象元数据包括第一对象的版本号、第一对象的状态、以及第一对象的用户空间虚拟地址。
在示例中,当第一对象的状态是重新校验状态时,处理器用于:从物理位置获取第一对象;以及至少部分地基于第一条目中的第一对象的版本号和来自物理位置的所述第一对象的版本号来确定第一对象是否已被修改。
在示例中,处理器响应于确定了第一对象已被修改而用于报告失败并终止代码序列。
在示例中,处理器用于:响应于接收到来自至少一个高速缓存存储器的、针对第一对象的驱逐消息而将第一对象的状态更新为处于重新校验状态。
在示例中,处理器用于:响应于来自第二线程的针对第一对象的使用意图的更新,将第一对象的状态更新为处于失败状态,第一线程的代码序列。
在示例中,响应于代码序列的映射锁定指令,处理器用于:验证表的、与代码序列相关联的多个条目;并且如果多个条目中的任何条目未被验证,则指示用户空间多对象事务原子性操作的失败。
在示例中,响应于针对第一对象的映射添加指令,执行电路用于:获取第一对象;使第一对象的至少部分能够被存储在至少一个高速缓存存储器中;以及将第一对象的版本号和针对第一对象的使用意图存储在表存储元件的第一条目中。
在示例中,处理器包括多个核,其中,多个核中的至少一些核包括执行电路、至少一个高速缓存存储器和表存储元件。
在示例中,处理器进一步包括耦合至多个核的一致性管理器,其中,响应于来自第一核的第一表存储元件的、与第一对象相关联的第一条目的信息,一致性管理器用于将无效通知发送到第二核的第二表存储元件,以使第二核将第二表存储元件的、与第一对象相关联的条目的状态更新为失败状态。
在示例中,至少一个高速缓存存储器的第一条目包括第一字段,该第一字段用于存储对象标识符,该对象标识符用于指示第一条目的数据包括在代码序列中使用的、具有表存储元件中的对应条目的对象。
在示例中,响应于对第一条目的一致性状态的更新,至少一个一致性存储器用于将通知发送到表存储元件的控制器,以引起对象的状态的更新。
在示例中,处理器用于防止按程序顺序遵循代码序列的存储器操作的推测性执行。
在另一示例中,一种方法包括:在编译器中接收代码序列;在编译器中标识代码序列中的一个或多个读取对象,并且对于一个或多个读取对象中的每个读取对象,将映射添加指令插入到代码序列中,映射添加指令用于使处理器针对一个或多个读取对象中的对应的一个读取对象将条目写入到映射表中;在代码序列的一条或多条数据操纵指令之后,将映射锁定指令插入到代码序列中,映射锁定指令用于使处理器相对于代码序列锁定映射表,并验证一个或多个读取对象中的任何读取对象当在代码序列外部对代码序列的执行期间是否被修改;以及将代码序列编译为经编译的代码序列并将经编译的代码序列存储在存储中,以使处理器能够以对代码序列的编程器透明的方式提供对多对象一致性原子性事务操作的硬件支持。
在示例中,方法进一步包括:在编译器中标识代码序列中的一个或多个写入对象,并且对于一个或多个写入对象中的每个写入对象,将映射添加指令插入到代码序列中,映射添加指令用于使处理器针对一个或多个写入对象中的对应的一个写入对象将条目写入到映射表中。
在示例中,方法进一步包括:将映射解锁指令插入到代码序列中,映射解锁指令用于使处理器在验证了一个或多个读取对象中的任何读取对象是否被修改之后解锁映射表。
在示例中,方法进一步包括:将更新指令插入到代码序列中,更新指令用于使处理器在代码序列期间更新存储在映射表中的一个或多个写入对象的第一写入对象的版本号,以指示对第一写入对象的写入。
在另一示例中,包括指令的计算机可读介质用于执行如以上示例中的任一项所述的方法。
在进一步的示例中,包括数据的计算机可读介质用于由至少一个机器使用以制造至少一个集成电路来执行如以上示例中的任一项的方法。
在更进一步的示例中,设备包括用于执行如以上示例中的任一项所述的方法的装置。
在又一示例中,一种系统包括:处理器以及耦合至该处理器的系统存储器。该处理器可包括:第一核,该第一核具有:第一执行电路,用于执行指令;第一高速缓存存储器,耦合至第一执行电路;以及第一表存储元件,用于存储各自都用于存储在代码序列中使用的对象的对象元数据的第一多个条目,对象元数据包括对象的用户地址空间,其中,响应于指令集架构的映射添加指令,第一表存储元件用于将第一对象的用户空间地址和第一对象的版本号存储在第一表存储元件的第一条目中;第二核,该第二核具有:第二执行电路,用于执行指令;第二高速缓存存储器,耦合至第二执行电路;以及第二表存储元件,包括各自都用于存储在另一代码序列中使用的代码的对象元数据的第二多个条目;以及一致性电路,耦合至第一核和第二核,其中,响应于第一条目从第一表存储元件的驱逐,一致性电路用于将无效消息发送到第二表存储元件,以使第二表存储元件将第二表存储元件中的、与第一对象相关联的条目的状态更新为失败状态。
在示例中,处理器响应于代码序列的映射锁定指令而用于:验证至少第一表存储元件的、与代码序列相关联的第一多个条目中的一个或多个条目;以及如果第一多个条目中的一个或多个条目中的任何条目未被验证,则指示代码序列的用户空间多对象事务原子性操作的失败。
在示例中,当第一对象的状态是重新校验状态时,处理器用于:从存储器获取代码序列的多个对象;以及确定多个对象中的任何对象是否已在代码序列外部被修改。
应理解,以上示例的各种组合是可能的。
注意,术语“电路”和“电路系统”在本文中可互换地使用。如本文中所示用,这些术语以及术语“逻辑”用来单独地或以任何组合指代模拟电路系统、数字电路系统、硬连线电路系统、可编程电路系统、处理器电路系统、微控制器电路系统、硬件逻辑电路系统、状态机电路系统和/或任何其他类型的物理硬件组件。实施例可在许多不同类型的系统中使用。例如,在一个实施例中,可以将通信设备布置为用于执行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信设备,并且相反,其他实施例可以涉及用于处理指令的其他类型的装置、或者一种或多种机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使该设备执行本文中所描述的方法与技术中的一者或多者。
实施例可被实现在代码中,并且可被存储在非暂态存储介质上,该非暂态存储介质具有存储于其上的指令,这些指令可以被用于将系统编程为用于执行这些指令。实施例还可被实现在数据中,并且可被存储在非暂态存储介质上,该非暂态存储介质如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路以执行一个或多个操作。更进一步的实施例可以在包括信息的计算机可读存储介质中实现,该计算机可读存储介质当被制造在SoC或其他处理器中时将SoC或其他处理器配置为执行一个或多个操作。该存储介质可包括但不限于:任何类型的盘,包括软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)与静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适用于存储电子指令的任何其他类型的介质。
尽管已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会众多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改和变型。
Claims (25)
1.一种用于执行代码序列的处理器,包括:
执行电路,用于执行指令;
至少一个高速缓存存储器,耦合至所述执行电路;以及
表存储元件,耦合至所述至少一个高速缓存存储器,所述表存储元件用于存储各自都用于存储在代码序列中使用的对象的对象元数据的多个条目,其中,所述处理器用于使用所述对象元数据来提供所述代码序列的用户空间多对象事务原子性操作。
2.如权利要求1所述的处理器,其中,所述处理器用于:响应于所述代码序列的映射添加指令,将第一对象元数据存储在所述多个条目中的第一条目中,所述第一对象元数据包括第一对象的版本号、所述第一对象的状态、以及所述第一对象的用户空间虚拟地址。
3.如权利要求2所述的处理器,其中,当所述第一对象的状态是重新校验状态时,所述处理器用于:从物理位置获取所述第一对象;以及至少部分地基于所述第一条目中的所述第一对象的版本号和来自所述物理位置的所述第一对象的版本号来确定所述第一对象是否已被修改。
4.如权利要求3所述的处理器,其中,所述处理器响应于确定了所述第一对象已被修改而用于报告失败并终止所述代码序列。
5.如权利要求2所述的处理器,其中,所述处理器用于:响应于接收到来自所述至少一个高速缓存存储器的、针对所述第一对象的驱逐消息而将所述第一对象的状态更新为处于重新校验状态。
6.如权利要求2所述的处理器,其中,所述处理器用于:响应于来自第二线程的针对所述第一对象的使用意图的更新,将所述第一对象的状态更新为处于失败状态,第一线程的所述代码序列。
7.如权利要求1所述的处理器,其中,响应于所述代码序列的映射锁定指令,所述处理器用于:验证所述表存储元件的所条目中的、与所述代码序列相关联的多个条目;并且如果所述多个条目中的任何条目未被验证,则指示所述用户空间多对象事务原子性操作的失败。
8.如权利要求1所述的处理器,其中,响应于针对第一对象的映射添加指令,所述执行电路用于:获取所述第一对象;使所述第一对象的至少部分能够被存储在所述至少一个高速缓存存储器中;以及将所述第一对象的版本号和针对所述第一对象的使用意图存储在所述表存储元件的第一条目中。
9.如权利要求1所述的处理器,其中,所述处理器包括多个核,其中,所述多个核中的至少一些核包括所述执行电路、所述至少一个高速缓存存储器和所述表存储元件。
10.如权利要求9所述的处理器,进一步包括耦合至所述多个核的一致性管理器,其中,响应于来自第一核的第一表存储元件的、与第一对象相关联的第一条目的信息,所述一致性管理器用于将无效通知发送到第二核的第二表存储元件,以使所述第二核将所述第二表存储元件的、与所述第一对象相关联的条目的状态更新为失败状态。
11.如权利要求1-10中的任一项所述的处理器,其中,所述至少一个高速缓存存储器的第一条目包括第一字段,所述第一字段用于存储对象标识符,所述对象标识符用于指示所述第一条目的数据包括在所述代码序列中使用的、具有所述表存储元件中的对应条目的对象。
12.如权利要求11所述的处理器,其中,响应于对所述第一条目的一致性状态的更新,所述至少一个高速缓存存储器用于将通知发送到所述表存储元件的控制器,以引起所述对象的状态的更新。
13.如权利要求1-10中的任一项所述的处理器,其中,所述处理器用于防止按程序顺序遵循所述代码序列的存储器操作的推测性执行。
14.一种用于编译代码序列的方法,包括:
在编译器中接收代码序列;
在所述编译器中标识所述代码序列中的一个或多个读取对象,并且对于所述一个或多个读取对象中的每个读取对象,将映射添加指令插入到所述代码序列中,所述映射添加指令用于使处理器针对所述一个或多个读取对象中的对应的一个读取对象将条目写入到映射表中;
在所述代码序列的一条或多条数据操纵指令之后,将映射锁定指令插入到所述代码序列中,所述映射锁定指令用于使所述处理器:相对于所述代码序列锁定所述映射表,并且验证所述一个或多个读取对象中的任何读取对象当在所述代码序列外部对所述代码序列的执行期间是否被修改;以及
将所述代码序列编译为经编译的代码序列,并且将所述经编译的代码序列存储在存储中,所述经编译的代码序列用于使所述处理器能够以对所述代码序列的编程器透明的方式提供对多对象一致性原子性事务操作的硬件支持。
15.如权利要求14所述的方法,其中,所述方法进一步包括:在所述编译器中标识所述代码序列中的一个或多个写入对象,并且对于所述一个或多个写入对象中的每个写入对象,将映射添加指令插入到所述代码序列中,所述映射添加指令用于使处理器针对所述一个或多个写入对象中的对应的一个写入对象将条目写入到所述映射表中。
16.如权利要求14所述的方法,其中,所述方法进一步包括:将映射解锁指令插入到所述代码序列中,所述映射解锁指令用于使所述处理器在验证了所述一个或多个读取对象中的任何读取对象是否被修改之后解锁所述映射表。
17.如权利要求14所述的方法,其中,所述方法进一步包括:将更新指令插入到所述代码序列中,所述更新指令用于使所述处理器在所述代码序列期间更新存储在所述映射表中的所述一个或多个写入对象的第一写入对象的版本号,以指示对所述第一写入对象的写入。
18.一种包括计算机可读指令的计算机可读存储介质,所述计算机可读指令在被执行时用于实现如权利要求14至17中任一项所述的方法。
19.一种用于执行指令集架构的映射添加指令的系统,包括:
处理器,所述处理器包括:
第一核,所述第一核具有:第一执行电路,用于执行指令;第一高速缓存存储器,耦合至所述第一执行电路;以及第一表存储元件,用于存储各自都用于存储在代码序列中使用的对象的对象元数据的第一多个条目,所述对象元数据包括所述对象的用户空间地址,其中,响应于指令集架构的映射添加指令,所述第一表存储元件用于将第一对象的用户空间地址和所述第一对象的版本号存储在所述第一表存储元件的第一条目中;
第二核,所述第二核具有:第二执行电路,用于执行指令;第二高速缓存存储器,耦合至所述第二执行电路;以及第二表存储元件,用于存储各自都用于存储在另一代码序列中使用的对象的对象元数据的第二多个条目;以及
一致性电路,耦合至所述第一核和所述第二核,其中,响应于所述第一条目从所述第一表存储元件的驱逐,所述一致性电路用于将无效消息发送到所述第二表存储元件,以使所述第二表存储元件将所述第二表存储元件中的、与所述第一对象相关联的条目的状态更新为失败状态;以及系统存储器,耦合至所述处理器。
20.如权利要求19所述的系统,其中,所述处理器响应于所述代码序列的映射锁定指令而用于:验证至少所述第一表存储元件的、与所述代码序列相关联的所述第一多个条目中的一个或多个条目;以及如果所述第一多个条目中的所述一个或多个条目中的任何条目未被验证,则指示所述代码序列的用户空间多对象事务原子性操作的失败。
21.如权利要求19所述的系统,其中,当所述第一对象的状态是重新校验状态时,所述处理器用于:从存储器获取所述代码序列的多个对象;以及确定所述多个对象中的任何对象是否已在所述代码序列外部被修改。
22.一种用于执行代码序列的设备,包括:
执行装置,用于执行指令;
至少一个高速缓存存储器装置,耦合至所述执行装置;以及
表存储装置,耦合至所述至少一个高速缓存存储器装置,所述表存储装置用于存储各自都用于存储在代码序列中使用的对象的对象元数据的多个条目,其中,所述设备用于使用所述对象元数据来提供所述代码序列的用户空间多对象事务原子性操作。
23.如权利要求22所述的设备,其中,所述设备用于:响应于所述代码序列的映射添加指令,将第一对象元数据存储在所述多个条目中的第一条目中,所述第一对象元数据包括第一对象的版本号、所述第一对象的状态、以及所述第一对象的用户空间虚拟地址。
24.如权利要求23所述的设备,其中,当所述第一对象的状态是重新校验状态时,所述设备用于:从物理位置获取所述第一对象;以及至少部分地基于所述第一条目中的所述第一对象的版本号和来自所述物理位置的所述第一对象的版本号来确定所述第一对象是否已被修改。
25.如权利要求24所述的设备,其中,所述设备用于:
响应于接收到来自所述至少一个高速缓存存储器的、针对所述第一对象的驱逐消息,将所述第一对象的状态更新为处于重新校验状态;以及
响应于来自第二线程的针对所述第一对象的使用意图的更新,将所述第一对象的状态更新为处于失败状态,第一线程的所述代码序列。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/030,999 | 2020-09-24 | ||
US17/030,999 US11960922B2 (en) | 2020-09-24 | 2020-09-24 | System, apparatus and method for user space object coherency in a processor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114253603A true CN114253603A (zh) | 2022-03-29 |
Family
ID=80473959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110973665.0A Pending CN114253603A (zh) | 2020-09-24 | 2021-08-24 | 用于处理器中的用户空间对象一致性的系统、装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11960922B2 (zh) |
CN (1) | CN114253603A (zh) |
DE (1) | DE102021120601A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115344585B (zh) * | 2022-08-03 | 2024-03-19 | 盐城天眼察微科技有限公司 | 数据版本管理方法、装置以及存储介质和电子设备 |
US20240330185A1 (en) * | 2023-03-28 | 2024-10-03 | Advanced Micro Devices, Inc. | Pseudo out-of-order store commit |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020103819A1 (en) * | 2000-12-12 | 2002-08-01 | Fresher Information Corporation | Technique for stabilizing data in a non-log based information storage and retrieval system |
US7426730B2 (en) * | 2001-04-19 | 2008-09-16 | Wre-Hol Llc | Method and system for generalized and adaptive transaction processing between uniform information services and applications |
US7395382B1 (en) * | 2004-08-10 | 2008-07-01 | Sun Microsystems, Inc. | Hybrid software/hardware transactional memory |
US9110691B2 (en) * | 2010-11-16 | 2015-08-18 | Advanced Micro Devices, Inc. | Compiler support technique for hardware transactional memory systems |
US10468077B2 (en) * | 2018-02-07 | 2019-11-05 | Intel Corporation | Adaptive object buffering and meta-data indexing using persistent memory to improve flash memory durability in tiered storage |
TW202022679A (zh) * | 2018-11-06 | 2020-06-16 | 美商多佛微系統公司 | 用於停滯主處理器的系統和方法 |
US11042381B2 (en) * | 2018-12-08 | 2021-06-22 | Microsoft Technology Licensing, Llc | Register renaming-based techniques for block-based processors |
-
2020
- 2020-09-24 US US17/030,999 patent/US11960922B2/en active Active
-
2021
- 2021-08-09 DE DE102021120601.4A patent/DE102021120601A1/de active Pending
- 2021-08-24 CN CN202110973665.0A patent/CN114253603A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11960922B2 (en) | 2024-04-16 |
US20220091987A1 (en) | 2022-03-24 |
DE102021120601A1 (de) | 2022-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6342970B2 (ja) | トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性 | |
KR102282135B1 (ko) | 영구적 저장 펜스 프로세서, 방법, 시스템, 및 명령어 | |
JP5860450B2 (ja) | ローカルにバッファリングされたデータをサポートするためのキャッシュコヒーレンスプロトコルの拡張 | |
KR101025354B1 (ko) | 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법 | |
US11816036B2 (en) | Method and system for performing data movement operations with read snapshot and in place write update | |
US9361233B2 (en) | Method and apparatus for shared line unified cache | |
US9471494B2 (en) | Method and apparatus for cache line write back operation | |
TWI723080B (zh) | 用於子頁寫入保護的方法及設備 | |
US10768680B2 (en) | Hardware apparatuses and methods to perform transactional power management | |
US9740623B2 (en) | Object liveness tracking for use in processing device cache | |
KR20080076981A (ko) | 무한 트랜잭션 메모리 시스템 | |
CN110312997A (zh) | 使用缓存行锁定来实现原子原语 | |
US10540178B2 (en) | Eliminating redundant stores using a protection designator and a clear designator | |
CN114253603A (zh) | 用于处理器中的用户空间对象一致性的系统、装置和方法 | |
Kovalev | TLB virtualization in the context of hypervisor verification | |
Sanyal et al. | Dynamically filtering thread-local variables in lazy-lazy hardware transactional memory | |
WO2017112359A1 (en) | Method and apparatus for loop-invariant instruction detection and elimination | |
CN113849222A (zh) | 流水线化乱序页未命中处理程序 | |
Taylor | Cachekata: memory hierarchy optimization via dynamic binary translation |
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 |