CN110235107A - 比较并交换异动 - Google Patents

比较并交换异动 Download PDF

Info

Publication number
CN110235107A
CN110235107A CN201780085426.3A CN201780085426A CN110235107A CN 110235107 A CN110235107 A CN 110235107A CN 201780085426 A CN201780085426 A CN 201780085426A CN 110235107 A CN110235107 A CN 110235107A
Authority
CN
China
Prior art keywords
data
unusual fluctuation
value
relatively
exchange
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201780085426.3A
Other languages
English (en)
Other versions
CN110235107B (zh
Inventor
潘尼德拉·库马尔·马纳瓦
布鲁斯·詹姆斯·梅休森
克拉斯·玛格努斯·布鲁斯
杰弗里·马蒂厄·拉库巴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN110235107A publication Critical patent/CN110235107A/zh
Application granted granted Critical
Publication of CN110235107B publication Critical patent/CN110235107B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Abstract

比较并交换异动可通过主机设备发出以请求处理单元取决于比较数据值是否匹配从储存位置读取的目标数据值来选择是否将交换数据值写入对应于目标地址的储存位置。比较并交换数据值在比较并交换异动的数据字段内传送。比较数据值经打包进数据字段的第一区域中,该第一区域取决于目标地址的偏移部分并且在数据字段内具有对应于储存位置内的目标数据值的位置的位置。这减少了用于处理比较并交换异动的处理单元处所需的等待时间及电路系统。

Description

比较并交换异动
技术领域
本发明的技术关于数据处理的领域。
背景技术
数据处理装置可以支持一比较并交换异动,该比较并交换异动触发:从存储器或高速缓存中的储存位置的数据值的读取;读取数据值与比较数据值的比较;以及如若比较数据值匹配目标数据值,则触发交换数据值至储存位置的写入。这可能对于其中不同过程具有对共享资源的存取的示例有用。例如,通过比较并交换异动靶向的位置可以储存锁定变量,该锁定变量决定过程是否具有对共享数据的存取。比较并交换异动可执行锁定变量与给定值的比较以检查锁定当前是否由另一过程设定,并且如若锁定当前并未设定,则将交换数据值写入至储存位置以主张锁定。使用共享资源的后续处理随后可取决于成功执行以主张锁定的比较并交换异动。
发明内容
至少一些示例提供一种装置,该装置包含:
主机设备,用于发出指定目标地址且包含用于传送至少一个操作数值的数据字段的异动,其中主机设备被配置为发出比较并交换异动,该比较并交换异动的该至少一个操作数值包含比较数据值及交换数据值;以及
处理单元,响应于比较并交换异动,用于取决于比较数据值是否匹配从储存位置读取的目标数据值而选择是否将交换数据值写入至对应于目标地址的储存位置,目标地址的偏移部分指示在储存位置内的目标数据值的位置;
其中当发出比较并交换异动时,主机设备被配置为将比较数据值打包进该数据字段的第一区域中,该第一区域根据目标地址的该偏移部分选择并且在该数据字段内具有对应于储存位置内的目标数据值的位置的位置。
至少一些示例提供一种主机设备,该主机设备包含:
异动发出电路系统,用于发出指定目标地址且包含用于传送至少一个操作数值的数据字段的异动;
其中异动发出电路系统被配置为发出比较并交换异动,该比较并交换异动的该至少一个操作数值包含比较数据值及交换数据值,该比较并交换异动用于控制处理单元以取决于比较数据值是否匹配从储存位置读取的目标数据值来选择是否将交换数据值写入至对应于目标地址的储存位置,该目标地址的偏移部分指示储存位置内的目标数据值的位置;
其中当发出比较并交换异动时,异动发出电路系统被配置为将比较数据值打包进该数据字段的第一区域中,该第一区域取决于目标地址的该偏移部分选择并且在该数据字段内具有对应于该储存位置内的目标数据值的位置的位置。
至少一些示例提供一种处理单元,该处理单元包含:
异动接收电路系统,用于接收指定目标地址且包含用于传送至少一个操作数值的数据字段的异动,其中该异动接收电路系统被配置为接收比较并交换异动,该比较并交换异动的该至少一个操作数值包含比较数据值及交换数据值;
数据存取电路系统,响应于比较并交换异动以读取对应于目标地址的储存位置,该目标地址的偏移部分指示储存位置内的目标数据值的位置;以及
处理电路系统,响应于比较并交换异动,用于取决于比较数据值是否匹配目标数据值来选择数据存取电路系统是否将交换数据值写入至该储存位置;
其中处理电路系统被配置为将比较数据值置于该数据字段的第一区域内,该第一区域根据目标地址的该偏移部分选择并且在数据字段内具有对应于储存位置内的目标数据值的位置的位置。
至少一些示例提供一种数据处理方法,该方法包含:
发出比较并交换异动,该比较并交换异动指定目标地址且包含用于传送比较数据值及交换数据值的数据字段;以及
响应于比较并交换异动,取决于比较数据值是否匹配从储存位置读取的目标数据值而选择是否将交换数据值写入至对应于目标地址的储存位置,该目标地址的偏移部分指示在储存位置内的目标数据值的位置;
其中在比较并交换异动中,将比较数据值打包进该数据字段的第一区域中,该第一区域根据目标地址的该偏移部分选择并且在该数据字段内具有对应于储存位置内的目标数据值的位置的位置。
本方法的进一步方面、特征及优势将在结合附图阅读时从示例的以下描述中显而易见。
附图说明
图1图示支持比较并交换异动的装置的示例;
图2示意地图示处理原子异动的示例;
图3图示原子异动的示例性编码;
图4图示用于比较的打包原子异动的数据字段的另一方法;
图5图示用于当如图4中所示编码时处理原子异动的处理电路系统的示例;
图6图标编码比较并交换异动以便比较数据值打包进数据字段中对应于储存位置中的目标数据值的位置的区域中的示例;
图7图标不同数据大小的数据字段的进一步示例;
图8图示用于当如图6中所示编码时处理比较并交换异动的处理电路系统的示例;
图9图标用于比较的用于编码数据字段的若干替换方案;
图10为图标在请求主机设备处产生原子异动的方法的流程图;以及
图11为图标在处理单元处处理原子异动的方法的流程图。
具体实施方式
主机设备支持一或多个类型的异动,该异动指定目标地址且包含用于传送至少一个操作数值的数据字段。异动通过处理单元来处理。经支持的一种类型的异动为比较并交换异动,该异动的数据字段传送至少两个操作数,包括比较数据值及交换数据值。响应于比较并交换异动,处理单元取决于比较数据值是否匹配从储存位置读取的目标数据值来选择是否将交换数据值写入至对应于目标地址的储存位置。
目标地址的偏移部分识别储存位置内的目标数据值的位置。当发出比较并交换异动时,主机设备将比较数据值打包进数据字段的第一区域中,该第一区域取决于偏移部分选择,以便第一区域在数据字段内具有对应于储存位置内的目标数据值的位置的位置。通过取决于正存取的特定地址改变数据字段内的比较数据值的位置,比较数据值已经与储存位置内的目标数据值的位置对齐,并因此于在比较数据值与目标数据值之间执行比较之前不需要进一步移位数据字段。这通过允许比较操作更快速地开始、减少与执行比较并交换异动关联的总体等待时间而提高效能,并且也有助于通过消除移位器而减少处理电路系统中的电路额外负担。
交换数据值可经打包进邻近于第一区域的数据字段的第二区域。不同于指定在数据字段中传送的单个操作数的其他类型异动,对于比较并交换异动将传送至少两个操作数。人们通常期待应定义异动,以便操作数在数据字段中以某种固定顺序打包以简化编码及译码。然而,发明者认为对于每次异动以相同顺序编码比较数据值及交换数据值将使得对齐比较数据值与目标数据值同时仍维持数据大小对齐变得很难(处理系统可通常更有效地处理数据,如若给定大小的数据区块与为该大小的倍数的地址对齐)。
反之,比较数据值及交换数据值的相对顺序可取决于地址的偏移部分而变化。第一区域及第二区域可以形成数据字段的组合部分,该组合部分在数据字段内的偏移处开始,该偏移对应于该组合部分的大小的倍数。当目标地址相对于比较数据及交换数据值的组合大小的倍数对齐时,交换数据值可以打包进在数据字段中的第一区域之后的第二区域中。当目标地址相对于组合大小的倍数不对齐时,主机设备可将交换数据值打包进在数据字段中的第一区域之前的第二区域中。因此,交换数据值及比较数据值的顺序可取决于正存取的特定地址及其相对于组合大小的倍数对齐而变化。尽管这可能看起来像可更好地避免的复杂性(例如,而不是可总是将交换数据值置于比较数据值之前或之后),但可变顺序编码具有以下优势,比较数据值位于与储存位置中的目标数据值的位置对齐的位置中,而包含比较数据值及交换数据值的整个数据区块仍然与数据大小边界对齐。将操作数区块与数据大小边界对齐可帮助提高处理异动的效率,例如缓冲器、多任务器、处理逻辑等等可在某种大小的块中处理数据,并且因此可更有效地运行,如若含有比较/交换数据值的区块对应于对齐的区块。
处理单元可以具有算术逻辑单元(ALU),该算术逻辑单元用于对从数据字段提取的比较数据值及从储存位置读取的目标数据值执行比较操作。在比较操作中,ALU可以接收比较并交换异动的数据字段的不移位版本作为其输入的一者。上述对于与储存位置中的目标数据值的位置对齐的比较值的编码意谓在ALU之前的移位不必要且可忽略该移位以节省时间及减少电路额外负担。
移位器可仍然设置在处理单元中,该处理单元用于执行移位操作以移位数据字段,以将交换数据值与储存位置内的目标数据值的位置对齐。针对交换值的移位操作可与执行比较操作的ALU并行执行,以便隐藏与移位交换数据值关联的等待时间。因为在处理单元可决定是否将移位交换数据值写入至储存位置之前需要比较操作的结果,所以比较操作对整个处理等待时间的影响大于移位操作,并且因此通过编码异动的数据字段以有助减少与比较操作关联的等待时间,所以比较并交换操作的总体等待时间可减少。
主机设备也可支持至少一个其他类型的异动,该异动的数据字段用于传送单个操作数值。其他类型的异动可触发处理单元以使用取决于至少单个操作数数据值的值更新储存位置。对于一些形式的异动,写入至储存位置的值也可取决于从储存位置读取的值。例如,处理单元可通过对传送操作数及储存位置的上述值执行算术/逻辑操作(例如,添加或减去值,或使用逻辑操作,诸如AND、OR等等将其组合)而生成新值。
对于至少一个其他类型的异动,单个操作数数据值可经打包进数据字段的相同第一区域中,该第一区域基于地址的偏移部分选择,该地址的偏移部分将用于传送比较并交换操作的比较数据值。因此,通过使用此第一区域传送单个操作数,操作数与储存位置内的目标值的位置对齐,如此简化另一处理。因此,将单个操作数异动及比较并交换异动编码,使得ALU可使用在接收的异动的数据字段与ALU的输入的一者之间的相同映射,而不管接收的异动是否为单个操作数异动或比较并交换异动的一者。通过对于ALU而不管异动类型使用相同输入操作数映射,这消除了对用于在不同选项之间选择以用于输入至ALU的额外多任务逻辑的需要,如此减少了处理单元处的电路系统数量并且减少了等待时间。
具有如上文论述的数据字段的异动可包含原子异动,该原子异动用于控制处理单元以对储存位置中的数据执行不可分割地观察到的操作组。原子异动可在其中多个过程共享对共享数据的存取的情况下尤其有用。例如,与高速缓存/存储器关联的逻辑可通过阻止对正处理的相同地址的其他存取直到与原子异动关联的全部操作完成而实现原子性。产生异动原子有助于避免由来自多个过程的不适当的定时存取引起的误差。例如,在与锁定变量的设定关联的比较并交换操作的情况下,如若此作为单独的非原子读取、比较及写入操作实施,则第二过程可尝试在第一过程已读取锁定变量之后但在第一过程已写入锁定变量以主张锁定之前主张锁定,因此通过第二过程触发的读取可侦测到仍然未主张锁定,从而导致第二过程写入锁定以主张锁定本身。因此,这可导致第一过程及第二过程两者相信其保持该锁定,其可由于对由锁定控制的关联共享资源并行存取而导致错误。通过产生异动原子,可避免此种误差,因为如若第一过程首先启动其异动,则继续第二过程的异动是不可能的。共享对共享数据的存取的过程可为在系统的不同主机设备上执行的过程,或在相同设备(例如,在相同硬设备上运行的不同虚拟机,或在多线程环境中的不同线程)上执行的过程。
用于处理异动的处理单元可为在主机设备本身内的处理电路系统。然而,效能可通过使用处理单元提高,该处理单元更靠近其中储存目标数据的存储器或高速缓存。例如,处理单元可设置在用于维持主机设备与至少一个其他主机设备或高速缓存之间相干性的互连内,或用于控制对存储器的存取的存储器控制器内。通过执行靠近高速缓存或存储器的原子异动,不仅与异动关联的等待时间通过避免由读出数据值至主机设备、在主机设备中执行ALU操作随后将结果写回至存储器而导致的延迟减少,而且对于原子异动实现异动的原子性更简单。
图1示意地图标数据处理装置2的示例,数据处理装置2包括共享对存储器系统的存取的若干主机设备4、主机设备6。在此示例中,主机设备包括中央处理单元(CPU)4及图形处理单元(GPU)6,但应将理解,也可提供其他类型的主机设备,例如网络接口控制器或显示器控制器。CPU 4及GPU 6每个具有用于从存储器系统进行缓存数据的至少一个高速缓存8。存储器系统经由相干性互连10存取,其管理主机设备4、主机设备6中的各别高速缓存8与系统中的任意其他高速缓存(例如,耦接至互连的系统级高速缓存12,该互连未指定至任一特定主机)之间的相干性。当在其局部高速缓存8中存取数据时,主机设备4、主机设备6可以将相干性异动发送至相干性互连10。响应于异动,如若决定彼等高速缓存可保存来自对应地址的数据,则互连10将探听请求传送至其他高速缓存,以取决于正采用的相干性协议的要求,定位所需数据的最新副本并触发过时数据的失效或将更改过的数据写回至存储器(如若需要)。如若数据需要从主存储器14撷取,则相干性互连10可经由一或多个存储器控制16触发对存储器14的读取请求,以及类似地写入至主存储器可通过相干性互连10触发。主机设备每个具有异动接口18,其负责生成发送至互连10的异动及接收来自互连的响应,以及响应于由其他主机发出的异动而处理通过互连触发的探听请求。接口18可看作用于产生异动的异动发出电路系统。
除了相干性协议(其可致使数据得以读取至高速缓存8中或写入至存储器)的常规读取或写入异动以外,系统也可支持通过靠近储存的数据的位置处的处理单元20处理的原子异动。如图2所示,通常原子异动涉及:数据存取电路系统32,从通过目标地址识别的高速缓存12或存储器14中的储存位置读取值;算术/逻辑单元(ALU)34,对由请求主机设备提供的读取数据值及操作数执行算术或逻辑操作(尽管对于下述原子交换操作,可略过ALU);以及数据存取电路系统32,将结果值写回至经寻址储存位置。在执行原子异动之前储存在储存位置中的旧值,或者回应于原子异动由ALU 34产生的新值,也返回至请求主机设备。读取、ALU操作及写入以原子方式发生,以便其作为不可分割的一系列操作处理,该等操作无法部分地完成或与对存储器或高速缓存执行的其他操作交错完成。
例如,以下类型的原子异动可通过处理单元20支持:
当在系统高速缓存12中储存原子异动的目标数据时,异动可以使用互连内的处理单元20处理。当目标数据储存在主存储器14中时,原子异动可通过对应存储器控制器16内的处理单元20处理。应理解,用于处理原子异动的处理单元20也可位于系统2中的其他位置。
因此,每个原子异动可能需要一个或两个操作数跨互连10从主机设备传送至处理单元20。对于原子加载、储存及交换操作,将传送单个操作数;但对于原子比较操作,将传送两个操作数:比较数据值及交换数据值。如在图3中所示,异动可以包括:数据字段22,用于传送该一个或两个操作数;及控制字段24,提供待存取的储存位置的目标地址及任意其他控制信息,诸如指定待执行的原子操作的类型或指定用于原子加载/储存异动的ALU操作的类型的信息(例如,ALU操作可从大量应用中选出,例如加、减、乘、AND、OR、NAND、NOR、XOR等等的一者)。
操作数值打包进数据字段影响用于在处理单元20处执行原子操作的逻辑的复杂性。图4图示说明打包数据字段的另一方式的比较示例。系统可以支持处理不同大小的数值的原子操作,例如操作数值可例如为1字节值、2字节值或4字节值。另一方面,对高速缓存或存储器的读取可返回可具有更大大小(例如8或16字节)的数据的整个高速缓存列。因此,目标数据值可仅位于读取高速缓存列的一部分内。为了避免需要在将数据字段与从地址储存位置读取的数据值组合之前移位数据字段,对于诸如原子加载、原子储存及原子交换的非比较原子操作,将单个操作数(D)打包进与地址储存位置内的目标数据值的位置对齐的数据字段的区域中可能是有用的。例如,在图4中,当地址具有指示目标数据启动经寻址位置的最低有效字节的偏移部分0×0时,数据值D可位于在数据字段中的偏移0处启动的区域内。在图4的右手侧图标的示例中,当地址偏移为0×2时,数据值D与数据字段内的偏移2对齐,以便在将数据字段与目标值组合之前不再需要移位数据字段。取决于正使用的操作数的大小,可以执行ALU的适宜遮蔽,以保证不含有目标数据值的储存位置的其他部分不会由原子操作的结果改写。
然而,对于原子比较并交换操作,将传送两个数据值:比较值(C)及交换值(S)。在此情况下,比较并交换数据值的至少一者可能位于与数据字段的区域中,该区域与地址储存位置中的目标数据值的位置对齐。为提高处理异动的效率,通常期望将待传送的数据区块与数据大小边界对齐,该数据大小边界对应于比较并交换数据值的组合大小的倍数。例如,在图4中,组合数据大小为4字节,因此最好将操作数数据的组合区块在偏移0处或在偏移4处启动,而不是相对于4字节数据大小边界错开区块。图4图标示例,其中比较数据置于操作数区块的下部中;及交换数据置于上部中,而不管正存取的特定地址。
然而,如在图5图示,当如图4所示的打包数据字段时,在处理单元20内需要移位器50以移位比较值C来在将移位值输入至ALU 34之前将其与经寻址储存位置内的目标数据值的位置对齐。同时,因为由于数据值D已与目标值A对齐,非比较并交换异动不需要移位,所以提供多任务器52以当将第二操作数供应至ALU 34时在数据字段的移位与非移位版本之间选择。移位器50及多任务器52需要额外电路系统并且也增大与操作关联的等待时间,因为比较操作无法启动直到移位的结果生效。
图6图标数据字段的编码,其中比较并交换数据值的顺序取决于目标地址的偏移部分。在此示例中,比较数据值C经打包进数据字段的第一区域中,该第一区域基于目标地址的偏移部分选择且对应于储存位置内的地址目标数据A的位置。交换数据置于操作数数据的对齐区块的另一半中,该操作数数据与对应于交换并比较值的组合大小的数据大小边界对齐。
因此,如若目标地址与对应于彼组合大小的数据大小边界对齐,则比较数据值将在数据字段中的交换数据值之前,其中比较数据值正处于第一区域中,该第一区域对应于比包含交换数据值的第二区域更少的偏移。例如,图6的左手侧图标示例,其中两个操作数的组合大小为2字节,以及此种情况下的地址偏移为0×2,其为组合大小的整倍数。因此,比较数据C在2字节对齐区块中的较低位置(偏移2)处,该2字节对齐区块与目标地址的偏移部分对齐,以及交换数据S在偏移3处的上部位置中。
另一方面,如图6的右手部分图标,当地址偏移不是组合数据大小的整倍数时,包含交换数据S的第二区域在包含比较数据C的第一区域之前。例如,对于不是2字节的倍数的地址偏移0×5,比较数据C经打包进在偏移5处的2字节对齐区块的上部中,以及交换数据置于偏移4处的对齐区块的另一半中。因此,比较数据C可仍然与地址储存位置内的目标数据的位置对齐,以及操作数数据的组合区块仍然与组合数据大小边界对齐。
图7图示打包不同大小操作数的数据字段的进一步示例。图7的示例A)及示例B)图标以下情况,其中操作数大小为2字节,且因此操作数数据的4字节组合区块与4字节边界对齐,即置于偏移0或偏移4处。当如示例A)中的地址偏移0×0与4字节边界对齐时,比较数据C在区块的下半部的偏移0处以及交换数据S在上半部的偏移2处。在示例B)中,当地址偏移0x2相对于4字节数据结构边界不对齐时,比较数据在四个字节区块的上半部的第一区域中(在偏移2处)及交换数据在下半部中的第二区域中(在偏移0处)。示例C)及示例D)图标四个字节操作数的类似示例。尽管图6及图7中的全部示例图标包含数据的8字节字段的示例,但应理解这不是必需的并且可以提供其他大小数据字段。同时,数据字段不需要在异动内的单个微片中传送以及在一些示例中数据字段可分成两个或更多个微片(单独的数据在更狭小的总线中传送),该等微片组合形成表示异动的整个分包。
如在图8中图示,当用于比较及交换操作的交换及比较数据以图6及图7中论述的方式打包时,则此通过消除对图5中所示的移位器50及多任务器52的需要而简化处理单元20。因为比较数据C已经与地址储存位置内的目标数据A的位置对齐,所以不需要在可启动ALU操作之前移位。同时,因为对ALU 34的第二操作数在数据字段的相同区域中,而不管操作为比较并交换操作还是另一类型的原子操作,所以不需要多任务器52,因为数据字段与ALU的第二操作数之间的映像对于上述的所有类型的原子异动来说相同。即,为比较并交换操作及非比较并交换原子操作两者而送至ALU中的操作数来自相同字节的数据报。尽管交换数据值S与目标数据值A不对齐,并且因此经历由处理单元20内的移位器54执行的移位操作,但与移位操作54关联的等待时间可离开关键路径,因为当处理比较及交换操作时移位可与由ALU 34执行的比较并行执行。因此,此方法除减小逻辑大小以外消除了处理原子操作中的等待时间。注意,不但对于比较及交换操作的等待时间减少,而且对于其他类型的原子操作的等待时间也减少,因为不需要穿过多任务器52。
对于比较,图9图示若干其他方式,其中原子比较及交换操作可在数据字段内编码同时考虑数据与大小边界对齐。选项2图标示例,其中交换数据与经寻址目标数据对齐,以及比较数据经打包至大小对齐区块的另一半中。选项3图标示例,其中比较数据置于大小对齐区块的较低地址位置中,而不管目标地址与组合大小对齐的地址边界是否对齐。选项4图标示例,其中交换数据置于较低地址位置处,而不管目标地址。选项5图标示例,其可通过在单独的数据微片中传送比较及交换数据值,使待传送的比较及交换数据两者与储存位置内的目标数据值A的位置对齐。
下表图标图9中图标的选项所需的不同移位:
情形A)指当目标地址与对应于交换及比较值的组合大小的大小边界对齐的情形,以及情形B)指当目标地址相对组合数据大小边界不对齐的情形。尽管不管选择哪个选项,看起来可能仍然需要相等量的移位(比较值及交换值的一者或另一者将必须移位),但在图6中所示的建议方法的优势为对于比较操作不需要移位,其使得移位等待时间在与执行比较的ALU关联的等待时间下被隐藏。相反,对比较值的移位将必须与ALU操作按顺序地执行。建议的选项允许完全消除移位器50。同时,数据字段22与对ALU的输入之间的映射可能对于比较并交换操作及其他类型的原子异动两者相同,从而消除多任务器52。尽管选项5不需要对比较并交换数据值的任何额外逻辑运算,但它将具有为原子比较异动所用两倍的出站数据带宽的缺点,并且也可能需要通过互连10的特殊处理,因为原子比较并交换异动的格式将与其他原子异动不同。
图10图标在请求主机设备4、请求主机设备6处产生原子异动的方法。在步骤100处,决定待产生的原子异动的类型。如若异动为非比较并交换异动,则在步骤102处,异动的操作数经打包进数据字段的第一区域中,该第一区域基于目标地址的偏移部分选择,以便第一区域与地址储存位置中的目标值的位置对齐。在步骤104处,随后发出异动。
另一方面,如若原子异动为比较并交换异动,则在步骤106处,比较值经打包进数据字段的第一区域中,该第一区域以步骤102中相同的方式选择。在步骤108处,决定目标地址是否与比较及交换数据值的组合大小的倍数对齐。如若对齐地址,则在步骤110处,交换数据值经打包进数据字段的第二区域中,该第二区域在用于比较值的第一区域之后;然而如若地址不与组合数据大小的倍数对齐,则在步骤112处,交换数据值经打包进第二区域中,该第二区域在含有比较数据值的第一区域之前。步骤108、步骤110及步骤112的效应是整个操作数数据区块为与组合数据大小的适宜倍数对齐的数据大小,但比较数据值的位置变化,以将其与具有交换值的地址储存位置内的目标值的位置对齐,随后填充数据的组合区块的剩余部分。另外,在步骤104处,异动随后通过主机内的异动发出接口18发出至互连10。
图11图标在处理单元20处处理原子异动的方法。在步骤120处,原子异动通过异动接收电路系统(图2中的接口36)来接收。在步骤122处,由目标地址识别的储存位置由数据存取电路系统32读取。在步骤124处,来自异动的数据字段的不移位版本及从存储器14或高速缓存12读取的高速缓存列经提供为对ALU 34的输入操作数。在步骤126处,控制电路36决定待执行的异动类型。如若异动为非比较并交换异动,则在步骤128处,ALU 34对数据字段及读取值执行算术运算,屏蔽操作数的部分或在含有所需数据的部分之外的结果,随后在步骤130处,将结果写入至地址储存位置。对于原子交换操作,ALU操作的结果等于在数据字段中传送的操作数,所以其独立于从储存位置读取的值(或者可绕过ALU 34)。在步骤132处,读取储存位置中的旧值或由ALU 34产生的新值中的任一者取决于异动的类型返回至请求器。
对于比较并交换异动,在步骤126之后,在步骤134处,ALU执行比较操作以比较数据字段与从高速缓存或存储器读取的值。比较值位于数据字段的第一区域中,该第一区域基于目标地址的偏移部分选择,以与储存位置内的目标数据值的位置对齐。因此,在比较期间,例如基于位掩码,可忽略不包含目标值的数据字段的部分及读取高速缓存列。同时,与比较并列地,在步骤136处,移位器54移位数据字段以将交换值与目标数据值对齐。在步骤138处,基于ALU 34的结果决定比较数据值与目标数据值之间是否存在匹配,并且如若是,则在步骤140处,移位的交换值经写入至地址储存位置。如若ALU侦测到比较值与目标数据值不匹配,则忽略步骤140。在步骤132处,对于比较并交换异动,在步骤122处从储存位置读取的旧值返回至请求器。
在本申请中,术语“被配置为……”用于表示设备的元件具有能执行所定义操作的配置。在此情况下,“配置”是指硬件或软件互连的布置或方式。例如,设备可具有提供所定义操作的专用硬件;或者,处理器或其他处理装置可被程序化以执行功能。“被配置为”并不意味着需要以任何方式改变设备组件以提供所定义操作。
虽然已参考附加图式在本文中详细描述了本发明的说明性实施例,但应当理解的是,本发明不限于那些精确的实施例,并且本领域技术人员可在不背离由所附权利要求所定义的本发明的范围及精神的情况下在本文中实施各种变化、添加及修改。

Claims (17)

1.一种装置,包括:
主机设备,该主机设备用于发出指定目标地址且包含用于传送至少一个操作数值的数据字段的异动,其中,该主机设备被配置为发出比较并交换异动,针对该比较并交换异动的所述至少一个操作数值包含比较数据值和交换数据值;以及
处理单元,该处理单元响应于该比较并交换异动,用于取决于该比较数据值是否匹配从储存位置读取的目标数据值而选择是否将该交换数据值写入对应于该目标地址的储存位置,该目标地址的偏移部分指示在该储存位置内的该目标数据值的位置;
其中,当发出该比较并交换异动时,该主机设备被配置为将该比较数据值打包进所述数据字段的第一区域中,该第一区域根据该目标地址的该偏移部分选择并且在该数据字段内具有对应于该储存位置内的该目标数据值的该位置的位置。
2.根据权利要求1所述的装置,其中,该主机设备被配置为将该交换数据值打包进所述数据字段的第二区域,该第二区域邻近于所述第一区域。
3.根据权利要求2所述的装置,其中,该第一区域及该第二区域形成在所述数据字段内的偏移处开始的该数据字段的组合部分,该偏移对应于所述组合部分的大小的倍数。
4.根据前述权利要求中的任一项所述的装置,其中,当该目标地址相对于所述比较数据值及所述交换数据值的组合大小的倍数对齐时,该主机设备被配置为将该交换数据值打包进在该数据字段中的该第一区域之后的第二区域中;以及
当该目标地址相对于所述组合大小的倍数不对齐时,该主机设备被配置为将该交换数据值打包进在该数据字段中的该第一区域之前的第二区域中。
5.根据前述权利要求中的任一项所述的装置,其中,该处理单元包含算术逻辑单元,该算术逻辑单元用于对从该数据字段提取的该比较数据值及从该储存位置读取的该目标数据值执行比较操作。
6.根据权利要求5所述的装置,其中,在该比较操作中,该算术逻辑单元被配置为接收该比较并交换异动的该数据字段的不移位版本作为其输入操作数中的一者。
7.根据权利要求5和6中的任一项所述的装置,其中,该处理单元包含移位器,该移位器用于执行移位操作以移位该数据字段,以将该交换数据值与该储存位置内的该目标数据值的位置对齐。
8.根据权利要求7所述的装置,其中,该移位器被配置为与执行该比较操作的该算术逻辑单元并行地执行该移位操作。
9.根据前述权利要求中的任一项所述的装置,其中,该主机设备被配置为发出至少一个其他类型的异动,针对该异动的所述数据字段包含单个操作数数据值,以及该处理单元响应于所述至少一个其他类型的异动,以使用取决于至少所述单个操作数数据值的值更新对应于该目标地址的该储存位置;
其中,对于所述至少一个其他类型的异动,该主机设备被配置为将所述单个操作数数据值打包进所述数据字段的所述第一区域中。
10.根据权利要求9所述的装置,其中,该处理单元包含算术逻辑单元,该算术逻辑单元用于响应于给定异动产生待写入该储存位置的值,以及该给定异动的所述数据字段与至该算术逻辑单元的输入中的一者之间的映射对于该比较并交换异动及所述至少一个其他类型的异动两者来说相同。
11.根据前述权利要求中的任一项所述的装置,其中,包含所述数据字段的所述异动包含用于控制该处理单元以执行不可分割地观察到的操作组的原子异动。
12.根据前述权利要求中的任一项所述的装置,包含每个被配置为发出所述异动的多个主机设备。
13.根据前述权利要求中的任一项所述的装置,包含互连,该互连用于维持该主机设备与至少一个其他主机设备或高速缓存之间的相干性,其中该互连包含该处理单元。
14.根据前述权利要求中的任一项所述的装置,包含用于控制对存储器的存取的存储器控制器,其中,该存储器控制器包含该处理单元。
15.一种主机设备,包含:
异动发出电路系统,该异动发出电路系统用于发出指定目标地址且包含用于传送至少一个操作数值的数据字段的异动;
其中,该异动发出电路系统被配置为发出比较并交换异动,针对该比较并交换异动的所述至少一个操作数值包含比较数据值及交换数据值,该比较并交换异动用于控制处理单元以取决于该比较数据值是否匹配从该储存位置读取的目标数据值来选择是否将该交换数据值写入至对应于该目标地址的储存位置,该目标地址的一偏移部分指示该储存位置内的该目标数据值的该位置;
其中,当发出该比较并交换异动时,该异动发出电路系统被配置为将该比较数据值打包进所述数据字段的第一区域中,该第一区域取决于该目标地址的所述偏移部分选择并且在所述数据字段内具有对应于该储存位置内的该目标数据值的位置的位置。
16.一种处理单元,包含:
异动接收电路系统,该异动接收电路系统用于接收指定目标地址且包含用于传送至少一个操作数值的数据字段的异动,其中,该异动接收电路系统被配置为接收比较并交换异动,针对该比较并交换异动的所述至少一个操作数值包含比较数据值及交换数据值;
数据存取电路系统,该数据存取电路系统响应于该比较并交换异动以读取对应于该目标地址的储存位置,该目标地址的偏移部分指示该储存位置内的目标数据值的位置;以及
处理电路系统,该处理电路系统响应于该比较并交换异动,用于取决于该比较数据值是否匹配该目标数据值来选择该数据存取电路系统是否将该交换数据值写入至所述储存位置;
其中,该处理电路系统被配置为将该比较数据值置于所述数据字段的第一区域内,该第一区域取决于该目标地址的所述偏移部分选择并且在所述数据字段内具有对应于该储存位置内的该目标数据值的位置的位置。
17.一种数据处理方法,包含以下步骤:
发出比较并交换异动,该比较并交换异动指定目标地址且包含用于传送比较数据值及交换数据值的数据字段;以及
响应于该比较并交换异动,根据该比较数据值是否匹配从该储存位置读取的目标数据值而选择是否将该交换数据值写入对应于该目标地址的储存位置,该目标地址的偏移部分指示在该储存位置内的该目标数据值的位置;
其中,在该比较并交换异动中,将该比较数据值打包进所述数据字段的第一区域中,该第一区域根据该目标地址的所述偏移部分选择且在该数据字段内具有对应于该储存位置内的该目标数据值的位置的位置。
CN201780085426.3A 2017-02-08 2017-12-20 比较和交换事务 Active CN110235107B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/427,335 US10223002B2 (en) 2017-02-08 2017-02-08 Compare-and-swap transaction
US15/427,335 2017-02-08
PCT/GB2017/053827 WO2018146439A1 (en) 2017-02-08 2017-12-20 Compare-and-swap transaction

Publications (2)

Publication Number Publication Date
CN110235107A true CN110235107A (zh) 2019-09-13
CN110235107B CN110235107B (zh) 2023-12-26

Family

ID=60937794

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780085426.3A Active CN110235107B (zh) 2017-02-08 2017-12-20 比较和交换事务

Country Status (8)

Country Link
US (1) US10223002B2 (zh)
EP (1) EP3580657B1 (zh)
JP (1) JP7158390B2 (zh)
KR (1) KR102558103B1 (zh)
CN (1) CN110235107B (zh)
IL (1) IL268320B (zh)
TW (1) TWI759397B (zh)
WO (1) WO2018146439A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10445096B2 (en) 2017-04-05 2019-10-15 Cavium, Llc Managing lock and unlock operations using traffic prioritization
US10331500B2 (en) 2017-04-05 2019-06-25 Cavium, Llc Managing fairness for lock and unlock operations using operation prioritization
US20210373975A1 (en) * 2020-05-29 2021-12-02 Advanced Micro Devices, Inc. Workgroup synchronization and processing

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0039227A2 (en) * 1980-04-25 1981-11-04 Data General Corporation Data processing system
US5241635A (en) * 1988-11-18 1993-08-31 Massachusetts Institute Of Technology Tagged token data processing system with operand matching in activation frames
US5889983A (en) * 1997-01-21 1999-03-30 Intel Corporation Compare and exchange operation in a processing system
WO2001097160A1 (en) * 2000-06-14 2001-12-20 Bull Hn Information Systems, Inc. Method and data processing system for emulating virtual memory working spaces
US20020078307A1 (en) * 2000-12-15 2002-06-20 Zahir Achmed Rumi Memory-to-memory copy and compare/exchange instructions to support non-blocking synchronization schemes
WO2006106428A2 (en) * 2005-04-07 2006-10-12 Ati Technologies, Inc Method and apparatus for fragment processing in a vitual memory system
US20100095064A1 (en) * 2008-10-14 2010-04-15 Aviles Joaquin J Pattern Matching Technique
US20110154000A1 (en) * 2009-12-18 2011-06-23 Fryman Joshua B Adaptive optimized compare-exchange operation
US20130103718A1 (en) * 2011-10-21 2013-04-25 International Business Machines Corporation Memory pattern searching via displaced-read memory addressing
US20150212945A1 (en) * 2014-01-28 2015-07-30 Stmicroelectronics International N.V. Cache memory system with simultaneous read-write in single cycle

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6285372A (ja) * 1985-10-09 1987-04-18 Nec Corp マルチプロセツサシステムにおけるコンペアアンドスワツプ方式
US8099448B2 (en) * 2005-11-02 2012-01-17 Qualcomm Incorporated Arithmetic logic and shifting device for use in a processor
US20080184019A1 (en) 2007-01-30 2008-07-31 International Business Machines Corporation Method for embedding short rare code sequences in hot code without branch-arounds
US20110010522A1 (en) * 2009-06-12 2011-01-13 Cray Inc. Multiprocessor communication protocol bridge between scalar and vector compute nodes
US9304940B2 (en) * 2013-03-15 2016-04-05 Intel Corporation Processors, methods, and systems to relax synchronization of accesses to shared memory
JP2016157399A (ja) 2015-02-26 2016-09-01 富士通株式会社 情報処理装置、情報処理システム及び排他制御プログラム
US9749266B2 (en) * 2015-08-28 2017-08-29 International Business Machines Corporation Coalescing messages using a network interface controller

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0039227A2 (en) * 1980-04-25 1981-11-04 Data General Corporation Data processing system
US5241635A (en) * 1988-11-18 1993-08-31 Massachusetts Institute Of Technology Tagged token data processing system with operand matching in activation frames
US5889983A (en) * 1997-01-21 1999-03-30 Intel Corporation Compare and exchange operation in a processing system
WO2001097160A1 (en) * 2000-06-14 2001-12-20 Bull Hn Information Systems, Inc. Method and data processing system for emulating virtual memory working spaces
US20020078307A1 (en) * 2000-12-15 2002-06-20 Zahir Achmed Rumi Memory-to-memory copy and compare/exchange instructions to support non-blocking synchronization schemes
WO2006106428A2 (en) * 2005-04-07 2006-10-12 Ati Technologies, Inc Method and apparatus for fragment processing in a vitual memory system
US20100095064A1 (en) * 2008-10-14 2010-04-15 Aviles Joaquin J Pattern Matching Technique
US20110154000A1 (en) * 2009-12-18 2011-06-23 Fryman Joshua B Adaptive optimized compare-exchange operation
US20130103718A1 (en) * 2011-10-21 2013-04-25 International Business Machines Corporation Memory pattern searching via displaced-read memory addressing
US20150212945A1 (en) * 2014-01-28 2015-07-30 Stmicroelectronics International N.V. Cache memory system with simultaneous read-write in single cycle

Also Published As

Publication number Publication date
JP7158390B2 (ja) 2022-10-21
WO2018146439A1 (en) 2018-08-16
TW201830248A (zh) 2018-08-16
WO2018146439A9 (en) 2019-08-01
CN110235107B (zh) 2023-12-26
KR20190112019A (ko) 2019-10-02
EP3580657B1 (en) 2021-02-24
EP3580657A1 (en) 2019-12-18
IL268320A (en) 2019-09-26
US10223002B2 (en) 2019-03-05
US20180225047A1 (en) 2018-08-09
IL268320B (en) 2021-09-30
JP2020506483A (ja) 2020-02-27
KR102558103B1 (ko) 2023-07-21
TWI759397B (zh) 2022-04-01

Similar Documents

Publication Publication Date Title
US7437517B2 (en) Methods and arrangements to manage on-chip memory to reduce memory latency
US4928225A (en) Coherent cache structures and methods
US7360031B2 (en) Method and apparatus to enable I/O agents to perform atomic operations in shared, coherent memory spaces
JP4981041B2 (ja) キャッシュする方法、装置及びシステム
JP2002373115A (ja) 共有キャッシュメモリのリプレイスメント制御方法及びその装置
CN110235107A (zh) 比较并交换异动
JP2006252358A (ja) ディスクアレイ装置及びその共有メモリ装置、ディスクアレイ装置の制御プログラム及び制御方法
US7210006B2 (en) Computer system supporting read-to-write-back transactions for I/O devices
JPH10293720A (ja) コンピュータシステムにおけるキャッシュ・コヒーレンシー機構および主メモリに保持されている項目に関してキャッシュの内容のコヒーレンシー状態を変更する方法
US6038642A (en) Method and system for assigning cache memory utilization within a symmetric multiprocessor data-processing system
KR20070040340A (ko) 소형 캐시 시스템에서 원자적 보존 라인에 라이트백하는것을 배제하는 방법 및 시스템
EP0380842A2 (en) Method and apparatus for interfacing a system control unit for a multiprocessor system with the central processing units
US20030177311A1 (en) Data storage and a data storage method in a data handling system
CN1910560A (zh) 用于在回写高速缓存中同时窥探推入或窥探取消操作过程中取消回写操作的系统和方法
US11275589B2 (en) Method for managing the supply of information, such as instructions, to a microprocessor, and a corresponding system
EP1895419B1 (en) Information processing system, information processing board, and method of updating cache tag and snoop tag
US20040111564A1 (en) Computer system implementing synchronized broadcast using skew control and queuing
CN109791521B (zh) 提供数据访问的原子集的装置及方法
US7120756B2 (en) Computer system including a promise array
JPS59217284A (ja) デ−タ処理装置のシステム制御装置
JPH07253924A (ja) 情報処理装置
JPH0492940A (ja) トランザクション実行方式
JPH11120078A (ja) 並列処理プロセッサおよびメモリ管理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant