CN117242433A - 用于在以存储器为中心和以核心为中心的存储操作之间实施排序的方法 - Google Patents
用于在以存储器为中心和以核心为中心的存储操作之间实施排序的方法 Download PDFInfo
- Publication number
- CN117242433A CN117242433A CN202280032283.0A CN202280032283A CN117242433A CN 117242433 A CN117242433 A CN 117242433A CN 202280032283 A CN202280032283 A CN 202280032283A CN 117242433 A CN117242433 A CN 117242433A
- Authority
- CN
- China
- Prior art keywords
- ordering
- token
- memory
- processor
- mem
- 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 description 21
- 238000012545 processing Methods 0.000 claims abstract description 11
- 230000008569 process Effects 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 6
- 238000012790 confirmation Methods 0.000 claims description 3
- 238000012546 transfer Methods 0.000 abstract description 2
- 238000010200 validation analysis Methods 0.000 description 7
- 238000011010 flushing procedure Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
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)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
在下文称为“MC‑Mem‑Op”的以存储器为中心的存储操作和下文称为“CC‑Mem‑Op”的以核心为中心的存储操作之间的排序使用下文称为“IC围栏”的中心间围栏来实施。IC围栏由排序原语或排序指令来实现,该IC围栏使得存储器控制器、高速缓存控制器等通过不将在该IC围栏之前到达的MC‑Mem‑Op(或有时CC‑Mem‑Op)重排序为在该IC围栏之后而在整个存储器流水线中和在该存储器控制器处实施MC‑Mem‑Op和CC‑Mem‑Op的排序。对IC围栏的处理还使得该存储器控制器向发出IC围栏指令的线程发出排序确认。当接收到该排序确认时,IC围栏在核心处被跟踪并被指定为完成。实施方案包括完成级别特定的高速缓存刷新操作,其在与IC围栏一起使用时以减少的数据传输和完成时间提供高速缓存的CC‑Mem‑Op和MC‑Mem‑Op之间的正确排序。
Description
背景技术
本节所述的方法是可以实行的方法,但不一定是先前已经设想或实行过的方法。因此,除非另有说明,否则不应假设:本节所述的任何方法仅由于其包含在本节中而假定它们是现有技术。另外,不应假设:本节所述的任何方法仅由于其包含在本节中而假定它们是公知的、例行的或常规的。
当代处理器采用性能优化,其可引起存储操作(诸如加载、存储和读取-修改-写入)的无序执行,这在多线程或多处理器/多核心具体实施中可能是有问题的。在简单示例中,一组指令可指定第一线程更新存储在存储器位置处的值并且随后第二线程使用更新值例如进行计算。如果基于指令的排序而以预期的次序执行,那么第一线程将在第二线程检索到并使用存储在存储器位置处的值之前更新存储在该存储器位置处的值。然而,性能优化可重排序存储器访问,使得第二线程在存储在存储器位置处的值已被第一线程更新之前使用该值,从而导致非预期且不正确的结果。
为了解决该问题,处理器支持由围栏指令实现的存储器屏障或存储器围栏(也简称为围栏),其使得处理器对在围栏指令之前和之后发出的存储操作实施排序约束。在以上示例中,可使用围栏指令来确保第二线程对存储器位置的访问不被重排序在第一线程对存储器位置的访问之前,从而保留预期的序列。通常通过以下来实现这些围栏:阻塞后续存储器请求,直到所有先前存储器请求已确认其已到达“一致性点”,即,由通信线程共享的存储器层级中的某个级别,并且在该级别以下保留对相同地址的访问之间的排序。此类存储操作和围栏是以核心为中心的,因为它们在处理器处被跟踪,并且排序在处理器处被实施。
由于计算吞吐量比存储器带宽更快地扩展,因此已开发出各种技术来向增长的计算能力保持馈送数据。存内处理(PIM)将处理能力并入存储器模块内,使得可直接在存储器模块内处理任务。在动态随机存取存储器(DRAM)的上下文中,示例性PIM配置包括矢量计算元件和本地寄存器。向量计算元件和本地寄存器允许存储器模块在本地执行一些计算,诸如算术计算。这允许存储器控制器在不需要跨存储器模块接口的数据移动的情况下并行地触发多个存储器模块处的本地计算,这可极大地改善性能,尤其是对于数据密集型工作负载而言。
围栏可以与处理器相同的方式与存储器中的计算元件一起使用,以对由存储器内计算元件执行的存储操作实施排序约束。此类存储操作和围栏是以存储器为中心的,因为它们在存储器内计算元件处被跟踪,并且排序在存储器内计算元件处被实施。
前述围栏的技术问题中的一个技术问题在于,虽然它们对于分别为以核心为中心的存储操作和以存储器为中心的存储操作单独实施排序约束是有效的,但是它们不足以在以核心为中心的存储操作和以存储器为中心的存储操作之间实施排序。以核心为中心的围栏对于以存储器为中心的存储操作而言是不够的,后者可能要求排序保留超过一致性点,即使它们不以相同地址为目标,因为以存储器为中心的请求可能访问多个地址以及近存储器寄存器,并且必须对发生冲突的任何请求进行排序。以存储器为中心的围栏是不够的,因为它们仅确保以存储器为中心的存储操作和未被高速缓存的以核心为中心的存储操作(其必然在相同存储器级别(例如,存储器侧高速缓存或存储器内计算单元)处完成)在作为完成点的存储器级别处按次序递送。具有发出以存储器为中心的存储操作的线程的核心需要知晓以存储器为中心的存储操作何时已在作为完成点的存储器级别处被调度,以允许需要看到以存储器为中心的存储操作的结果的后续以核心为中心的存储操作的安全提交。然而,存储器内计算单元(甚至存储器侧高速缓存中的那些计算单元)可能不以与传统以核心为中心的存储操作相同的方式向核心发送确认,从而使核心不知晓以存储器为中心的存储操作的当前状态。因此,需要一种技术解决方案来解决如何在以存储器为中心的存储操作和以核心为中心的存储操作之间实施排序的技术问题。
附图说明
在附图的图中以示例而非限制的方式描绘了实施方案,并且在附图中相同的附图标号是指类似的元件。
图1A示出了由处理器中的两个线程实现的示例性伪代码。
图1B示出了包括以核心为中心的围栏以确保正确执行的示例性伪代码。
图1C示出了包括以存储器为中心的围栏以确保正确执行的示例性伪代码。
图1D示出了已被添加到线程A的指令的IC围栏。
图2A示出了使用IC围栏在以存储器为中心的存储操作和以核心为中心的存储操作之间实施排序。
图2B示出了使用IC围栏在以核心为中心的存储操作和以存储器为中心的存储操作之间实施排序。
图2C示出了使用IC围栏在以存储器为中心的存储操作和以存储器为中心的存储操作之间实施排序。
图2D示出了使用CC围栏在以核心为中心的存储操作和以核心为中心的存储操作之间实施排序。
图3是示出用于使用IC围栏在以存储器为中心的存储操作和以核心为中心的存储操作之间实施排序的方法的流程图。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对实施方案的透彻理解。然而,对于本领域技术人员将显而易见的是,这些实施方案可在没有这些具体细节的情况下实践。在其他情况下,以框图形式示出了公知的结构和设备,以避免不必要地模糊这些实施方案。
I.概述
II.IC围栏介绍
III.IC围栏具体实施
A.排序令牌
B.级别特定的高速缓存刷新
I.概述
针对不能在下文称为“MC-Mem-Op”的以存储器为中心的存储操作和下文称为“CC-Mem-Op”的以核心为中心的存储操作之间实施排序的技术问题的技术解决方案使用下文称为“IC围栏”的中心间围栏。IC围栏由排序原语(本文中也称为排序指令)来实现,其使得存储器控制器、高速缓存控制器等(本文中称为“存储器控制器”)通过不将在该IC围栏之前到达的MC-Mem-Op(或有时CC-Mem-Op)重排序为在该IC围栏之后而在整个存储器流水线中和在该存储器控制器处实施MC-Mem-Op和CC-Mem-Op的排序。IC围栏还包括确认机制,其涉及存储器控制器向发出IC围栏指令的线程发出排序确认。当从存储器控制器接收到排序确认时,IC围栏在核心处被跟踪并被指定为完成。该技术解决方案适用于具有任何数量的核心的任何类型的处理器以及任何类型的存储器控制器。
该技术解决方案在保持正确性的同时以比仅使用以核心为中心的围栏和以存储器为中心的围栏更细的颗粒度适应CC-Mem-Op和MC-Mem-Op代码区域的混合。这允许更有效地使用存储器侧处理部件,而不需要向每个MC-Mem-Op的核心线程发送完成确认,这提高了效率并且减少了总线流量。实施方案包括完成级别特定的高速缓存刷新操作,其以相对于常规高速缓存刷新减少的数据传输和完成时间提供高速缓存的CC-Mem-Op和MC-Mem-Op之间的正确排序。如本文所用,术语“完成级别”是指由通信线程共享的存储器系统中的点,并且在该点以下保证保留所有所要求的CC-MC排序,例如,MC访问和与存储器控制器的目标地址冲突的CC访问之间的排序。
II.IC围栏介绍
图1A示出了由处理器中的两个线程实现的示例性伪代码。在该示例中,线程A更新y的值,使用y的更新值来更新x的值,并且随后将标记设定为值1以指示x的值已被更新且准备好使用。假定标记的初始值为0,预期线程B循环,直到线程A将标记设定为值1。线程B随后检索x的更新值。
处理器的性能优化可重排序存储器访问并且使得线程B检索x的旧值。例如,性能优化可使得线程B的“val=x”指令在“while(!flag);”指令之前执行,取决于线程A何时更新x的值,这可使得线程B检索x的旧值。
图1B示出了包括以核心为中心的围栏(CC围栏)以确保正确执行的示例性伪代码。图1B的伪代码与图1A中的相同,除了在“x=x+y”指令之后CC围栏已添加在线程A中,并且在“while(!flag);”指令之后另一CC围栏已添加在线程B中。线程A中的CC围栏防止标记(“flag=1”)的设定被重排序在CC围栏之前。这确保使线程A对标记的写入仅在保证线程A对x和y所做的更新对其它线程(在该示例中具体地为线程B)可见时才对其它线程可见。相似地,线程B中的CC围栏确保对x的值的读取(“val=x”)不被重排序在CC围栏之前。这确保对x值的读取发生在对设定标记的读取之后。
图1C示出了包括以存储器为中心的围栏(MC围栏)以确保正确执行的示例性伪代码。图1C的伪代码与图1A中的相同,除了对y和x的计算已使用MC-Mem-Op卸载到存储器中的PIM单元以减少核心处理器上的计算负担并且减少存储器总线流量。然而,在某些情况下,这导致确保MC-Mem-Op(以及任何未被高速缓存的CC-Mem-Op)按次序执行的新的排序要求。在图1C中示出的示例中,对y的PIM更新必须在对x的PIM更新之前,以确保x当被线程B读取时是正确的值。
由于CC围栏不足以在存储器计算单元处实施排序,因此由以存储器为中心的排序原语(MC-OPrim)实现的MC围栏被插入到“PIM:y=y+10”指令和“PIM:x=x+y”指令之间的线程A的代码中。在2020年3月3日提交的名称为“Lightweight Memory OrderingPrimitives”的美国专利申请号16/808,346中描述了以存储器为中心的排序原语,该专利申请的全部内容以引用的方式以其全文并入本文用于所有目的。MC-OPrim从核心沿存储器管道向下流动到存储器以在到存储器的途中保持排序。对y的PIM更新和对x的PIM更新之间的MC围栏确保指令在存储器处的执行期间被正确排序。由于该排序在存储器处实施,因此MC-OPrim遵循MC-Mem-Op的相同的“即发即弃”语义,因为它不被核心跟踪并且允许核心处理其它指令。如在图1B的示例中,在图1C中,线程B中的CC围栏确保对x的值的读取(“val=x”)不被重排序在CC围栏之前。
图1C的示例示出了即使CC围栏和MC围栏具有可用性,CC-Mem-Op和MC-Mem-Op的混合也是具有挑战性的,因为这些现有解决方案都不足以提供所要求的排序。具体地,对y和x的更新必须在线程A中的CC-Mem-Op之前完成,或者至少看起来完成,以将标记的值更新为1,即,使指令“flag=1”对线程B可见。CC围栏对于完成级别超过一致性点的MC-Mem-Op而言是不够的,因为它们不对超过一致性点的MC-Mem-Op实施排序。MC围栏是不够的,因为它们仅确保MC-Mem-Op和未被高速缓存的CC-Mem-Op(其必然在相同存储器级别处完成)在作为完成点的存储器级别处按次序递送。
在图1C中,核心需要知晓更新y和x的值的MC-Mem-Op何时已在存储器控制器处在完成点被调度以允许线程A的“flag=1”指令的安全提交。然而,更新y和x的值的PIM执行单元不以与传统CC-Mem-Op相同的方式向执行线程A的核心发送确认,因此核心不知晓这些MC-Mem-Op的状态并且不知道它们何时已被调度。这些限制要求以较粗的颗粒度实现线程A和线程B的代码区域。
根据一个实施方案,该技术问题通过包括使用IC围栏来提供CC-Mem-Op和MC-Mem-Op之间的排序的技术解决方案来解决。图1D示出了已被添加到线程A的指令的IC围栏。更具体地,IC围栏在标记更新为1之前,即,在“flag=1”指令之前,被添加到线程A的指令。IC围栏由在存储器控制器处实施MC-Mem-Op的排序的排序原语或排序指令来实现。对IC围栏的处理还使得该存储器控制器向发出IC围栏指令的线程发出确认或确证。在图1D的示例中,线程A接收到在IC围栏之前分别经由“PIM:y=y+10”和“PIM:x=x+y”指令更新y和x的值的MC-Mem-Op已由对应的存储器控制器调度的确认。线程A至少在非推测的基础上等待另外的处理指令,直到接收到确认。这允许在保持正确性的同时以比仅使用以核心为中心的围栏和以存储器为中心的围栏更细的颗粒度混合CC-Mem-Op和MC-Mem-Op指令,而不需要针对每个MC-Mem-Op向核心线程发送完成确认。
III.IC围栏具体实施
图2A至图2D示出了在以核心为中心的存储操作和以存储器为中心的存储操作之间可能出现的四种可能的中心间排序,反之亦然。在这些示例中,MC-Mem-Op是指一个或多个以存储器为中心的存储操作,并且CC-Mem-Op是指任何数量和类型的一个或多个以核心为中心的存储操作。
在图2A和图2C中,分别使用线程A中的IC围栏和线程B中的CC围栏来实现MC-Mem-Op和CC-Mem-Op之间以及MC-Mem-Op和MC-Mem-Op之间的排序。在这些示例中,至少在非推测的基础上,IC围栏确保发出核心从存储器控制器接收到MC-Mem-Op在继续处理下一个存储操作之前已被调度的确认。
在图2B中,使用级别特定(LS)高速缓存刷新来实现CC-Mem-Op和MC-Mem-Op之间的排序,这将在下文中更详细地描述,即IC围栏和CC围栏。最后,在图2D中,使用CC围栏来完成CC-Mem-Op和CC-Mem-Op之间的排序,这对于该场景而言是足够的,因为核心知晓第一组CC-Mem-Op何时已在存储器控制器处被调度,并且随后可继续处理第二组CC-Mem-Op。CC围栏也足以确保完成级别在一致性点之后的MC-Mem-Op的正确排序,因为此类操作可被配置为以低成本向核心发送确认。例如,可以在一致性点之前在高速缓存中执行MC-Mem-Op。
假设使用一个或多个以核心为中心的存储操作来实现图2A、图2C、图2D的步骤3和步骤4以及图2B的步骤4和步骤5中的线程间同步(CC-Mem-Op-sync)。线程间同步可通过允许一个线程发信号通知另一线程其已完成一组存储操作的任何机制来实现。例如,在图2A的步骤3的CC-Mem-Op-Sync中,线程A发信号通知线程B其已完成步骤1中的MC-Mem-Op。CC-Mem-Op-sync的一个非限制性示例是使用如图1A至图1D中示出且本文先前描述的标记,即,在线程A中设定标记并且在线程B中读取该标记。
出于解释的目的,本文在被实现为排序原语或指令的上下文中描述IC围栏,但是实施方案不限于该示例,并且IC围栏可由附加到现有同步指令的新语义来实现,诸如memfence、waitcnt、原子LD/ST/RMW等。
IC围栏指令具有超过一致性点的相关联完成级别,例如,在存储器侧高速缓存处、在DRAM PIM中等。完成级别可被指定例如指令参数值。完成级别可经由字母数字值、代码等指定。软件开发者可将IC围栏指令的完成级别指定为需要排序的先前存储操作的完成级别。例如,在图1D中,IC围栏指令可指定完成级别,该完成级别是分别更新y和x的先前两个PIM命令的完成级别,例如,存储器侧高速缓存或DRAM。
根据一个实施方案,每个IC围栏指令在发出核心处被跟踪,直到在发出核心处接收到确认在IC围栏指令之前的存储操作已在与IC围栏指令的相关联完成级别处被调度的一个或多个排序确认。随后,IC围栏被视为完成,并且在核心处被相应地指定(例如,标记),从而允许核心继续处理CC-Mem-Op-syncs。用于跟踪其它CC-Mem-Op和/或CC围栏的相同机制可与IC围栏指令一起使用。
在完成级别处,存储器控制器确保以程序冲突次序排序在IC围栏之后的任何存储操作不可绕过在其到存储器的路径上排序在IC围栏之前的另一存储操作。例如,根据一个实施方案,存储器控制器确保排序在IC围栏指令之后的、访问与排序在IC围栏指令之前的指令相同的地址的存储操作不被重排序在IC围栏指令之前。
A.排序令牌
根据一个实施方案,使用排序令牌在存储器流水线中的部件处执行存储操作的排序,使得在完成级别处的一个或多个存储器控制器发出排序确认令牌,并且由核心跟踪IC围栏。排序令牌可以由任何类型的数据实现,诸如字母数字字符或字符串、代码等。
当IC围栏用于提供未被高速缓存的MC-Mem-Op和未被高速缓存的CC-Mem-Op之间的排序(图2A)或未被高速缓存的MC-Mem-Op之间的排序(图2C)并且IC围栏指令由核心C1发出时,排序令牌T1被标记有由IC围栏指令指定并被插入到存储器流水线中的完成级别,例如,存储器侧高速缓存、DRAM PIM等。例如,用于排序令牌T1的元数据可指定来自IC围栏指令的完成级别。排序令牌T1沿与来自核心C1的拟排序的任何先前存储操作相同的存储器流水线向下流动,直到排序令牌到达完成级别。例如,如果IC围栏指令被定义为对先前MC-Mem-Op进行排序(图2A、图2C)并且MC-Mem-Op绕过高速缓存,则排序令牌T1也绕过高速缓存并且流向MC-Mem-Op的完成级别。根据一个实施方案,排序令牌T1不在完成级别以下流动。例如,如果完成级别是存储器侧高速缓存,则排序令牌T1不流经存储器侧高速缓存到主存储器。
在整个存储器流水线中,存储器部件(诸如高速缓存控制器、存储器侧高速缓存控制器、存储器控制器(例如,主存储器控制器)等)确保存储操作的排序,使得在排序令牌T1之前的存储操作不会例如由于重排序而落在排序令牌T1之后。根据一个实施方案,存储器部件的处理逻辑被配置为识别排序令牌并且实施防止相对于排序令牌T1的前述重排序的重排序约束。在使用到与IC围栏相关联的完成级别(存储器侧高速缓存的多个切片或多个存储器控制器)的路径分集(即,多个路径)的架构中,经这些路径中的每个路径复制排序令牌T1。例如,存储器流水线分叉点处的部件可被配置为复制排序令牌T1。
根据一个实施方案,使用状态表来减少可归因于由于路径分集而复制排序令牌的网络流量。在路径分叉点处,状态表跟踪已通过分叉点的以存储器为中心的操作的类型。如果以存储器为中心的操作尚未在特定路径上从发出核心发出(其具有与来自相同核心的最近IC围栏操作相同的类型),则不在该特定路径上复制排序令牌T1,而是针对该特定路径生成隐式排序确认令牌T2。这避免发出不太可能需要的排序令牌T1,从而减少了网络流量。当接收到排序确认令牌T2时,可重置状态表。
一旦排序令牌T1和排序令牌T1的任何复制版本达到与排序令牌T1相关联的完成级别,排序令牌T1就在跟踪完成级别处的未决存储操作的结构(诸如存储器控制器队列)中排队。根据一个实施方案,存储器控制器使用排序令牌T1的完成级别(例如,通过检查排序令牌T1的元数据)来确定排序令牌是否已达到完成级别。排序令牌T1不被提供给存储器流水线中的超过完成级别的部件。例如,对于具有存储器侧高速缓存的相关联完成级别的排序令牌,排序令牌不被提供给主存储器控制器。
如果存在多个此类结构,诸如多个存储体队列,则在这些结构中的每个结构处复制排序令牌T1。相对于在排序令牌T1之前的存储操作,通过确保没有在排序令牌T1之后的存储操作被重排序在排序令牌T1之前,对在这些结构上执行的存储操作的任何重排序保留排序令牌T1的排序。例如,根据一个实施方案,存储器控制器确保排序在排序令牌T1之后的、访问与排序在排序令牌T1之前的指令相同的地址的存储操作不被重排序在排序令牌T1之前。这可包括针对跨越多个地址的操作(诸如多播PIM操作)执行屏蔽地址比较。如果特定存储器流水线架构支持混叠、访问在去往存储器的路上遍历不同路径(例如,如果存在用于以核心为中心的操作和以存储器为中心的操作的独立队列),则根据一个实施方案,通过沿所有可能的路径传播排序令牌并且在排序令牌到达队列的前部时阻塞队列来防止重排序。在这种情况下,队列被阻塞,直到相关联重排序令牌到达包含可能与该队列混叠的操作的任何其它队列的前部。
一旦排序令牌T1在完成级别处排队,就向发出核心发送排序确认令牌T2。例如,在完成级别处的存储器控制器将排序令牌T1存储到其存储未决存储操作的队列中,并且随后向核心C1发出排序确认令牌T2。根据一个实施方案,在路径分集的情况下,在每个合并点处,排序确认令牌T2在其从存储器控制器到核心的路径上被合并。
在从到完成级别的所有路径接收到排序确认令牌T2时或者当核心C1接收到最终合并的排序确认令牌T2令牌时,IC围栏指令被视为完成。在一些具体实施中,存在静态数量的路径,并且核心等待从路径中的所有路径接收到确认令牌T2。合并的确认令牌T2可以在存储器流水线中的每个分叉点处生成,直到最终合并的确认令牌T2在最靠近核心C1的分叉点处生成。合并的排序确认令牌T2表示来自路径中的所有路径的排序确认令牌T2。一旦核心C1已接收到确认令牌T2中的所有确认令牌或最终合并的确认令牌T2,核心C1就将IC围栏指令指定为完成并且继续提交后续存储操作。
根据一个实施方案,当接收到排序确认令牌时,排序确认令牌识别IC围栏指令以使得核心能够知道哪个IC围栏指令可被指定为完成。这可以不同方式来实现,具体实现方式可取决于特定具体实施而变化。根据一个实施方案,每个排序令牌包括识别对应的IC围栏指令的指令标识数据。指令标识数据可以是可用于识别IC围栏指令的任何类型的数据或标引,诸如数字、字母数字代码等。发出排序确认令牌的存储器控制器将指令标识数据包括在排序确认令牌中,例如,包括在排序确认令牌的元数据中。然后,核心使用排序确认令牌中的指令标识数据来将IC围栏指令指定为完成。在先前示例中,当核心C1生成排序令牌T1时,核心C1将识别特定IC围栏指令的指令标识数据包括在排序令牌T1或其元数据中。当在排序令牌T1的完成级别处的特定存储器控制器将排序令牌T1存储到其未决存储操作队列中并且生成排序确认令牌T2时,特定存储器控制器将来自排序令牌T1的识别特定IC围栏指令的指令标识数据包括在排序确认令牌T2中。当核心C1接收到排序确认令牌时,核心C1读取识别特定IC围栏指令的指令标识数据并且将特定IC围栏指令指定为完成。在对于每个存储器级别在任何给定时间仅单个IC围栏指令未决的实施方案中,不需要指令标识数据,并且存储器级别识别哪个IC围栏指令可被指定为完成。
该方法提供允许核心继续使用通常与CC围栏一起采用的现有优化以与IC围栏一起采用的技术有益效果和效果。例如,当IC围栏指令经由窗口内推测未决时,可以向高速缓存发出在IC围栏之后的以核心为中心的存储操作,诸如加载。因此,对IC围栏指令的后续以核心为中心的存储操作不被延迟,而是可推测地发出。
B.级别特定的高速缓存刷新
如本文先前相对于图2B所述,IC围栏可用于提供CC-Mem-Op和MC-Mem-Op之间的正确排序。然而,可能存在CC-Mem-Op的结果存储在存储器部件(诸如存储缓冲器、高速缓存等)中而这些存储器部件在一致性点之前并且因此不可被存储器侧计算单元访问的情况,即使存储器侧计算单元需要使用CC-Mem-Op的结果。
根据一个实施方案,该技术问题通过使用级别特定的高速缓存刷新操作来使CC-Mem-Op的结果对存储器侧计算单元可用的技术解决方案来解决。级别特定的高速缓存刷新操作具有对应于同步的完成级别的相关联存储器级别,诸如存储器侧高速缓存、主存储器等。存储在完成级别(例如,核心侧存储缓冲器和高速缓存)之前的存储器部件中的脏数据被推送到由级别特定的高速缓存刷新操作指定的存储器级别。程序员可基于后续MC-Mem-Op将在该处操作的存储器级别来指定用于级别特定的高速缓存刷新操作的存储器级别。例如,在图2B中,如果步骤7中的MC-Mem-Op将对存储器侧高速缓存中的数据进行操作,则存储器侧高速缓存的级别被指定用于级别特定的高速缓存刷新。应当指出的是,直写式高速缓存(例如,在GPU中使用的那些高速缓存)通常已支持用于将脏数据向下刷新到指定的一致性点的原语——为实现我们的目的,操作必须向下刷新到完成点(其可以比一致性点更远)。
在一个实施方案中,级别特定的高速缓存刷新操作在核心处被跟踪,直到接收到当前存储在完成级别之前的存储器部件中的CC-Mem-Op的结果(例如,脏数据)已被存储到超过一致性点的相关联存储器级别的确认。当接收到确认时,核心将级别特定的高速缓存刷新操作指定为完成并且继续处理下一组指令。例如,在图2B中,步骤2中的级别特定的高速缓存刷新确保步骤1中由线程A执行的CC-Mem-Op的结果将对线程B可见。
在一个实施方案中,级别特定的高速缓存刷新操作在核心处被跟踪,直到接收到CC-Mem-Op的结果(例如,脏数据)已被向下刷新到指定的高速缓存级别的确认(到完成点的回写操作仍在进行中,但未必完成)。在这种情况下,IC围栏需要防止由该刷新操作触发的先前未决的CC回写请求在指定的高速缓存级别以下的所有高速缓存级别上与其自身重排序。除此之外,还需要防止在先前的MC请求和其自身之间的重排序。
级别特定的高速缓存刷新操作可由特殊原语或指令来实现,或者由作为现有高速缓存刷新指令的语义来实现。存储器特定的高速缓存刷新操作提供了将CC-Mem-Op的结果提供给可能在主存储器(诸如存储器侧高速缓存)之前的超过一致性点的特定存储器级别的技术效果和有益效果,从而相对于将所有脏数据推送到主存储器的常规高速缓存刷新节省计算资源和时间。
级别特定的高速缓存刷新操作可以将所有脏数据从在完成级别之前的所有存储器部件移动到与级别特定的高速缓存刷新操作相关联的存储器级别。例如,来自所有存储缓冲器和高速缓存的所有脏数据被刷新到由级别特定的高速缓存刷新操作指定的存储器级别。
根据一个实施方案,级别特定的高速缓存刷新操作将脏数据中的少于全部脏数据(即,脏数据的子集)从在完成级别之前的存储器部件存储到与级别特定的高速缓存刷新操作相关联的存储器级别。这可通过发布核心跟踪与某些CC-Mem-Op相关联的地址来实现。可根据由CC-Mem-Op指定的地址来确定要跟踪的地址。另选地,可通过在级别特定的高速缓存刷新指令中提供的提示或分界来识别要跟踪的地址。例如,软件开发者可以为级别特定的高速缓存刷新指定特定阵列、区域、地址范围或结构,并且跟踪与特定阵列或结构相关联的地址。
级别特定的高速缓存刷新操作随后仅将与所跟踪的地址相关联的脏数据存储到与级别特定的高速缓存刷新操作相关联的存储器级别。这减少了被刷新到完成点的脏数据的量,这继而减少了执行级别特定的高速缓存刷新所要求的计算资源和时间的量,并且允许核心更快地继续处理其它指令。根据一个实施方案,通过在高速缓存级别(例如,1级高速缓存、2级高速缓存、3级高速缓存等)的基础上执行地址跟踪来提供另外的改进。这进一步减少了存储到与级别特定的高速缓存刷新操作相关联的存储器级别的脏数据的量。
图3是示出用于使用IC围栏在以存储器为中心的存储操作和以核心为中心的存储操作之间实施排序的方法的流程图300。在步骤302中,核心线程执行第一组存储操作。例如,第一组存储操作可以是由图2A至图2C中的线程A执行的MC-Mem-Op或CC-Mem-Op。在该示例中,不考虑图2D的CC-Mem-Op/CC-Mem-Op场景,因为该场景不使用IC围栏。
在第一组存储操作已发出之后,在步骤304中,如果第一组存储操作是CC-Mem-Op,则执行级别特定的高速缓存刷新操作。例如,如图2B所示,线程A包括用于在CC-Mem-Op之后执行级别特定的高速缓存刷新的指令。为级别特定的高速缓存刷新所选择的级别是在IC围栏之后的指令的存储器级别。例如,在图1D中,线程B需要能够看到由线程A写入的标记的值。如果由线程A写入的标记的值被存储在高速缓存中,则需要将标记值刷新到可由线程B的存储操作访问的存储器级别。如果那些存储操作是MC-Mem-Op,则级别特定的高速缓存刷新的级别是例如存储器侧高速缓存或主存储器的级别。如果第一组存储操作是MC-Mem-Op,如图2A和图2C所示,则不需要执行步骤304的级别特定的高速缓存刷新操作。
在步骤306中,核心处理IC围栏指令并且将排序令牌插入到存储器流水线中。例如,线程A的指令包括IC围栏指令,其在被处理时使得具有相关联完成级别的排序令牌T1被插入到存储器流水线中。在步骤308中,排序令牌T1沿存储器流水线向下流动并且针对多个路径进行复制。
在步骤310中,在完成级别处的一个或多个存储器控制器接收排序令牌并将其排队,并且实施排序约束。例如,在完成级别处的存储器控制器将排序令牌T1存储到存储器控制器用于存储未决存储操作的队列中。存储器控制器通过以下来实施排序约束:确保队列中的在排序令牌T1之前的存储操作不被重排序在排序令牌T1之后,并且队列中的在排序令牌T1之后的存储操作不被重排序在排序令牌T1之前。
在步骤312中,将排序令牌排队的在完成级别处的存储器控制器向核心发出排序确认令牌。例如,在完成级别处的每个存储器控制器响应于排序令牌T1被排队到存储器控制器用于存储未决存储操作的队列中而向核心发出排序确认令牌T2。根据一个实施方案,排序确认令牌T2包括指令标识数据,该指令标识数据识别使得排序令牌T1被发出的IC围栏指令。来自多个路径的排序确认令牌T2可被合并以创建合并的排序确认令牌。
在步骤314中,核心接收排序确认令牌T2,并且在接收到最后一个排序确认令牌T2或者合并的排序确认令牌T2时,将IC围栏指令指定为完成,例如通过将IC围栏指令标记为完成。当等待接收一个或多个排序确认令牌T2时,核心不处理超过IC围栏指令的指令,至少不在非推测的基础上。这确保在核心继续处理在IC围栏之后的指令之前,至少在完成级别处的存储器控制器处调度在IC围栏之前的指令。
在步骤316中,核心继续处理在IC围栏之后的指令。在图2A至图2C中,执行CC-Mem-Op-sync以例如设定标记的值,如先前相对于图1D所讨论的,其然后允许执行CC围栏指令和后续CC-Mem-Op(图2A)或MC-Mem-Op(图2B、图2C)。
Claims (20)
1.一种处理器,所述处理器被配置为:
发出排序令牌,以及
响应于排序确认令牌而将排序指令指定为完成。
2.根据权利要求1所述的处理器,其中所述排序令牌具有与一个或多个先前存储操作的完成级别相同的相关联完成级别。
3.根据权利要求1所述的处理器,其中存储器流水线中的一个或多个存储器部件防止在所述排序令牌之前的存储操作被重排序在所述排序令牌之后。
4.根据权利要求1所述的处理器,其中在存储器流水线中经多个路径复制所述排序令牌。
5.根据权利要求1所述的处理器,其中:
所述排序令牌具有相关联完成级别,并且
所述排序确认令牌由在所述完成级别处处理所述排序令牌的存储器控制器发出。
6.根据权利要求1所述的处理器,其中所述排序确认令牌由存储器控制器响应于所述存储器控制器将所述排序令牌存储在存储未决存储操作的队列中而发出。
7.根据权利要求1所述的处理器,其中所述排序确认令牌是多个复制的排序确认令牌中的最后一个排序确认令牌或者是表示所述多个复制的排序确认令牌的合并的排序确认令牌。
8.根据权利要求1所述的处理器,其中所述处理器被进一步配置为:
响应于处理排序指令而发出所述排序令牌,以及
实施相对于所述排序指令的存储操作重排序约束。
9.根据权利要求1所述的处理器,其中所述处理器被进一步配置为:在发出所述排序令牌之前,使得在完成点之前存储在存储器位置中的更新数据被存储到指定的完成级别。
10.根据权利要求9所述的处理器,其中所述更新数据是由一个或多个先前存储操作生成的数据的子集。
11.一种存储器控制器,所述存储器控制器被配置为:
基于排序令牌来实施排序约束,以及
向发出所述排序令牌的处理器线程发出排序确认令牌。
12.根据权利要求11所述的存储器控制器,其中基于所述排序令牌来实施所述排序约束包括:防止排序在所述排序令牌之后的一个或多个存储操作被重排序在所述排序令牌之前。
13.根据权利要求11所述的存储器控制器,其中基于所述排序令牌来实施所述排序约束包括:防止针对与在所述排序令牌之前的存储操作相同的存储器地址的、排序在所述排序令牌之后的一个或多个存储操作被重排序在针对所述相同的地址的、在所述排序令牌之前的存储操作之前。
14.根据权利要求11所述的存储器控制器,其中响应于所述排序令牌存储在所述存储器控制器的未决存储操作队列中而向发出所述排序令牌的所述处理器线程发出所述排序确认令牌。
15.根据权利要求11所述的存储器控制器,其中所述存储器控制器是高速缓存控制器、存储器侧高速缓存控制器或主存储器控制器中的一者或多者。
16.一种方法,所述方法包括:
由处理器发出排序令牌,以及
由所述处理器响应于排序确认令牌而将排序指令指定为完成。
17.根据权利要求16所述的方法,其中所述排序令牌具有与一个或多个先前存储操作的完成级别相同的相关联完成级别。
18.根据权利要求16所述的方法,其中存储器流水线中的一个或多个存储器部件防止在所述排序令牌之前的存储操作被重排序在所述排序令牌之后。
19.根据权利要求16所述的方法,其中在存储器流水线中经多个路径复制所述排序令牌。
20.根据权利要求16所述的方法,其中:
所述排序令牌具有相关联完成级别,并且
所述排序确认令牌由在所述完成级别处处理所述排序令牌的存储器控制器发出。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/219,446 US20220317926A1 (en) | 2021-03-31 | 2021-03-31 | Approach for enforcing ordering between memory-centric and core-centric memory operations |
US17/219,446 | 2021-03-31 | ||
PCT/US2022/022482 WO2022212458A1 (en) | 2021-03-31 | 2022-03-30 | Approach for enforcing ordering between memory-centric and core-centric memory operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117242433A true CN117242433A (zh) | 2023-12-15 |
Family
ID=83449083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280032283.0A Pending CN117242433A (zh) | 2021-03-31 | 2022-03-30 | 用于在以存储器为中心和以核心为中心的存储操作之间实施排序的方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220317926A1 (zh) |
EP (1) | EP4315062A1 (zh) |
JP (1) | JP2024511777A (zh) |
KR (1) | KR20230160912A (zh) |
CN (1) | CN117242433A (zh) |
WO (1) | WO2022212458A1 (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6725340B1 (en) * | 2000-06-06 | 2004-04-20 | International Business Machines Corporation | Mechanism for folding storage barrier operations in a multiprocessor system |
US8997103B2 (en) * | 2009-09-25 | 2015-03-31 | Nvidia Corporation | N-way memory barrier operation coalescing |
US9582276B2 (en) * | 2012-09-27 | 2017-02-28 | Apple Inc. | Processor and method for implementing barrier operation using speculative and architectural color values |
US10216430B2 (en) * | 2015-07-01 | 2019-02-26 | Cavium, Llc | Local ordering of instructions in a computing system |
US10504270B2 (en) * | 2016-12-22 | 2019-12-10 | Apple Inc. | Resource synchronization for graphics processing |
US10572376B2 (en) * | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
US10359955B2 (en) * | 2017-02-23 | 2019-07-23 | Western Digital Technologies, Inc. | Data storage device configured to perform a non-blocking control update operation |
JP6944107B2 (ja) * | 2017-07-11 | 2021-10-06 | 富士通株式会社 | 情報処理装置、情報処理システム及びプログラム |
US11201739B2 (en) * | 2019-05-02 | 2021-12-14 | Shopify Inc. | Systems and methods for tying token validity to a task executed in a computing system |
-
2021
- 2021-03-31 US US17/219,446 patent/US20220317926A1/en active Pending
-
2022
- 2022-03-30 CN CN202280032283.0A patent/CN117242433A/zh active Pending
- 2022-03-30 EP EP22782070.1A patent/EP4315062A1/en active Pending
- 2022-03-30 WO PCT/US2022/022482 patent/WO2022212458A1/en active Application Filing
- 2022-03-30 JP JP2023558136A patent/JP2024511777A/ja active Pending
- 2022-03-30 KR KR1020237036801A patent/KR20230160912A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
WO2022212458A1 (en) | 2022-10-06 |
KR20230160912A (ko) | 2023-11-24 |
JP2024511777A (ja) | 2024-03-15 |
US20220317926A1 (en) | 2022-10-06 |
EP4315062A1 (en) | 2024-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8375176B2 (en) | Lock mechanism to enable atomic updates to shared memory | |
US9223578B2 (en) | Coalescing memory barrier operations across multiple parallel threads | |
US8997103B2 (en) | N-way memory barrier operation coalescing | |
US9696928B2 (en) | Memory transaction having implicit ordering effects | |
US6038646A (en) | Method and apparatus for enforcing ordered execution of reads and writes across a memory interface | |
US8627048B2 (en) | Mechanism for irrevocable transactions | |
US8024522B1 (en) | Memory ordering queue/versioning cache circuit | |
US8370609B1 (en) | Data cache rollbacks for failed speculative traces with memory operations | |
US7877630B1 (en) | Trace based rollback of a speculatively updated cache | |
US20080301378A1 (en) | Timestamp based transactional memory | |
US7945741B2 (en) | Reservation required transactions | |
US20110219215A1 (en) | Atomicity: a multi-pronged approach | |
US9619303B2 (en) | Prioritized conflict handling in a system | |
US8898395B1 (en) | Memory management for cache consistency | |
US8051247B1 (en) | Trace based deallocation of entries in a versioning cache circuit | |
CN101814018A (zh) | 事务存储器(tm)系统中的读和写监控属性 | |
US8019944B1 (en) | Checking for a memory ordering violation after a speculative cache write | |
US20090138680A1 (en) | Vector atomic memory operations | |
US20190179541A1 (en) | Issuing write requests to a fabric | |
US9606923B2 (en) | Information processing device with shared memory, memory order guarantee method using counters fence instructions in relation to cache-oriented requests, and recording medium storing program | |
US8010745B1 (en) | Rolling back a speculative update of a non-modifiable cache line | |
US12079631B2 (en) | Method and system for hardware-assisted pre-execution | |
US8161250B2 (en) | Methods and systems for partially-transacted data concurrency | |
US8370576B1 (en) | Cache rollback acceleration via a bank based versioning cache ciruit | |
US10725927B2 (en) | Method and apparatus for co-managed cache system |
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 |