CN104951240B - 一种数据处理方法及处理器 - Google Patents
一种数据处理方法及处理器 Download PDFInfo
- Publication number
- CN104951240B CN104951240B CN201410117556.9A CN201410117556A CN104951240B CN 104951240 B CN104951240 B CN 104951240B CN 201410117556 A CN201410117556 A CN 201410117556A CN 104951240 B CN104951240 B CN 104951240B
- Authority
- CN
- China
- Prior art keywords
- data
- processor
- privately owned
- llc
- caching
- 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.)
- Active
Links
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/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/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/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- 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
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据处理方法及处理器;方法包括:第一处理器开始事务处理,将第一数据读取到私有缓存中;第一处理器在私有缓存中对所述第一数据进行写操作,完成后开始提交事务内存;如果所述第一数据在被第一处理器写操作前的最后一次更改是由第二处理器进行的,则将所述第一处理器的私有缓存中的所述第一数据写到最后一级缓存LLC中,无效化所述第一处理器的私有缓存中的所述第一数据;事务内存完成提交。本申请能够减少多核系统中由于数据冲突产生的回滚事件,加速关键区域的运行。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种数据处理方法及处理器。
背景技术
最近几年内,处理器厂商受到功耗和温度的限制,同时为了保持高性能运算持续增长,计算机已经朝着多核计算机体系架构方向发展。为了充分利用多核架构,应用程序被拆分成多个可独立运行在单个CPU上面的线程,这样设计程序可以并行执行提高整体运行效率。
当前多核体系架构的主流设计方案的一个例子如图1a和图1b所示,图1a中共有16个CPU核,彼此通过路由(图中粗线)可相互访问,图1b中是每个处理器的框架,其中*Ln代表First Level Cache(第一级缓存)L1,或者L1及Second Level Cache(第二级缓存)L2;LastLevel Cache为最后一级缓存,简称LLC,*Ln分别和LLC及路由相连,LLC的目录和路由相连。当从内存中读出内存数据后会将内存数据均匀分摊到每个处理器的LLC。
基于这样的程序体系,需要保证数据处理的同步性和数据完整性,因此线程之间需要用某种同步机制来串行访问共享区域。Transaction memory(事务内存)的提出正是为了提高线程的并行度,同时在发生冲突能够进行回滚到发生冲突之前的状态,保证了数据完整性。当前Transaction memory技术已经进入了CPU体系架构之中,包括IBM的Blue Gen,Intel的Haswell等。
经过将近20多年的发展,Transaction memory可以分别由软件或者硬件实现,软件实现的Transaction memory执行效率非常低,而硬件实现的Transaction memory大大提高了其实用性,本文主要讨论硬件基础上的Transaction memory。
Transaction memory假设多核线程之间对于共享数据的访问很少产生写-读,读-写,以及写-写冲突,因此允许多个线程试探性的并行执行,通过隐藏数据的更新状态以及当发现产生冲突的时候进行回滚,使程序的状态能回到冲突之前的状态,利用这个特性在不影响数据完整性的前提下提高了体系结构的性能和可扩展性。虽然Transaction memory提高了多核系统的并行度,但随着并行度的提高冲突产生的概率也随之增加,一旦产生冲突进行回滚操作就会严重的伤害程序的性能。
如果采用提前无效化处理,能够加快关键区域的运行,大大减少由于对共享数据进行更新时产生的冲突。但如果直接将提前无效化处理应用到现有的Transaction memory技术中,由于提前无效化处理要求改变全局数据状态,与Transaction Memory实现的方式截然相反(Transaction Memory处理过程必须隐藏更新时的状态),因此不能与Transaction memory简单结合。
发明内容
本申请要解决的技术问题是如何减少多核系统中由于数据冲突产生的回滚事件,加速关键区域的运行。
为了解决上述问题,本申请提供了一种数据处理方法,包括:
第一处理器开始事务处理,将第一数据读取到私有缓存中;
第一处理器在私有缓存中对所述第一数据进行写操作,完成后开始提交事务内存;
如果所述第一数据在被第一处理器写操作前的最后一次更改是由第二处理器进行的,则将所述第一处理器的私有缓存中的所述第一数据写到最后一级缓存LLC中,无效化所述第一处理器的私有缓存中的所述第一数据;
事务内存完成提交。
进一步地,所述方法还包括:
当所述第一处理器将在私有缓存中对所述第一数据进行写操作时,如果所述第一数据在被第一处理器写操作前的最后一次更改是由第二处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为独占且更改;如果所述第一数据在被第一处理器写操作前的最后一次更改是由第一处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为更改;
所述开始提交事务内存的步骤后、事务内存完成提交的步骤前还包括:
如果所述第一处理器的私有缓存中的所述第一数据的状态为独占且更改,则将所述第一数据在LLC目录中的状态设置为独占且更改。
进一步地,所述第一处理器开始事务处理,将第一数据读取到私有缓存中的步骤包括:
S11、第一处理器开始事务处理,如果私有缓存中没有需要的所述第一数据,则根据地址映射访问LLC的目录;
S12、根据所述第一数据的缓存行在LLC的目录中的第一状态指示串,获知所述第一数据的状态;如果所述第一数据的状态为更改,则进行步骤S13;
S13、根据所述第一状态指示串中的数据标识位确定具有最新的所述第一数据的处理器;如果为第二处理器,则从所述第二处理器的私有缓存将最新的所述第一数据取回到LLC,将所述第一数据在LLC的目录中的状态修改为共享;如果为第一处理器,则直接进行第一处理器在私有缓存中对所述第一数据进行写操作的步骤;
S14、将所述第一数据从所述LLC中读到所述第一处理器的私有缓存中,将所述第一状态指示串中对应于所述第一处理器的数据标识位置位。
进一步地,所述步骤S12中还包括:
如果所述第一数据的状态为独占且更改,则进行步骤S13’;
所述方法还包括:
S13’、将所述第一数据在LLC的目录中的状态修改为共享且更改;进行步骤S14。
进一步地,在开始提交事务内存的步骤后、事务内存完成提交的步骤前还包括:
查询所述第一数据在LLC目录中状态指示串的各数据标识位,判断除了所述第一处理器对应的数据标识位以外,是否存在置位的数据标识位;如果存在,则无效化置位的数据标识位对应的处理器中的第一数据,并将该数据标识位复位。
本申请还提供了一种处理器,应用在多核处理设备中,包括:
私有缓存、提交单元;
读取单元,用于当本处理器开始事务处理时,将第一数据读取到所述私有缓存中;
写操作单元,用于在所述私有缓存中对所述第一数据进行写操作,完成后指示所述提交单元开始提交事务内存;
无效化单元,用于当所述提交单元开始提交事务内存后、完成事务内存提交前,如果所述第一数据在被本处理器写操作前的最后一次更改是由其它处理器进行的,则将所述私有缓存中的所述第一数据写到LLC中,无效化本处理器的私有缓存中的所述第一数据。
进一步地,所述的处理器还包括:
设置单元,用于在所述写操作单元将对所述第一数据进行写操作时,如果所述第一数据在被本处理器写操作前的最后一次更改是由其它处理器进行的,则将所述私有缓存中的第一数据的状态修改为独占且更改;如果所述第一数据在被本处理器写操作前的最后一次更改是由本处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为更改;在所述提交单元开始提交事务内存后、完成事务内存提交前,如果所述第一处理器的私有缓存中的所述第一数据的状态为独占且更改,则将所述第一数据在LLC目录中的状态设置为独占且更改。
进一步地,所述读取单元当本处理器开始事务处理时,将第一数据读取到私有缓存中是指:
所述读取单元当本处理器开始事务处理时,如果私有缓存中没有需要的所述第一数据,则根据地址映射访问LLC的目录;根据所述第一数据的缓存行在LLC的目录中的第一状态指示串,获知所述第一数据的状态;如果所述第一数据的状态为更改,则根据所述第一状态指示串中的数据标识位确定具有最新的所述第一数据的处理器,如果为其它处理器,从该其它处理器的私有缓存将最新的所述第一数据取回到LLC,将所述第一数据在LLC的目录中的状态修改为共享,将所述第一数据从所述LLC中读到本处理器的私有缓存中,将所述第一状态指示串中对应于本处理器的数据标识位置位,指示所述写操作单元在本处理器的私有缓存中对所述第一数据进行写操作;如果为本处理器,则直接指示所述写操作单元在本处理器的私有缓存中对所述第一数据进行写操作。
进一步地,所述读取单元还用于当根据地址映射访问LLC的目录,且根据所述第一数据的缓存行在LLC的目录中的第一状态指示串,获知所述第一数据的状态为独占且更改时,将所述第一数据在LLC的目录中的状态修改为共享且更改。
进一步地,所述无效化单元还用于查询所述第一数据在LLC目录中状态指示串的各数据标识位,判断除了本处理器对应的数据标识位以外,是否存在置位的数据标识位;如果存在,则无效化置位的数据标识位对应的处理器中的第一数据,并将该数据标识位复位。
本申请的至少一个实施例利用在现有的硬件Transaction memory的基础上,使用简单的预测机制无缝地将提前无效化处理与硬件Trasaction memory相结合,加快提高预测准确性和Transaction memory对关键区域的执行效率,减少Transaction Memory运行时由于数据冲突产生的回滚时间,进一步提高多核系统的运行性能和可扩展性。当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
附图说明
图1a为多核并行系统中多个处理器的示意图;
图1b为各处理器的结构示意图;
图2为数据在LLC的目录中的状态指示串的示意图;
图3为实施例一的数据处理方法的流程示意图;
图4为实施例一的第一个例子中开始时数据缓存行在LLC的目录中的状态指示串的示意图;
图5为实施例一的第一个例子中的数据处理流程示意图;
图6为实施例一的第一个例子中步骤104中数据缓存行在LLC的目录中的状态指示串的示意图;
图7为实施例一的第一个例子中步骤110中数据缓存行在LLC的目录中的状态指示串的示意图;
图8为实施例一的第二个例子中的数据处理流程示意图;
图9为实施例一的第二个例子中步骤210中数据缓存行在LLC的目录中的状态指示串的示意图;
图10为实施例一的第三个例子中的数据处理流程示意图;
图11为实施例一的第三个例子中步骤304中数据缓存行在LLC的目录中的状态指示串的示意图;
图12为实施例一的第三个例子中步骤310中数据缓存行在LLC的目录中的状态指示串的示意图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一个典型的配置中,多核系统可包括多个处理器(CPU)、一个或多个输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
首先介绍一下现有的硬件Transaction memory的工作原理。
硬件Transaction memory工作原理为:先用代码告诉CPU Transaction区域的开始和结束,例如Transaction_start和Transaction_end。中间部分为执行Transaction区域,一旦执行结束,Transaction_end指令要求CPU将所有修改过的数据以原子方式提交(也就是提交过程不可被打断和访问)。执行Transaction的过程中任何读过或者写过的内存区域都会被监视起来以免产生写-读,读-写,以及写-写冲突,为了使数据冲突时能够回滚到进入Transaction区域起始的状态,在执行Transaction memory过程中所有内存写操作之前都必须将原有的数据复制一份;比如可以复制对应的一条缓存行到私有不可见缓存之中(例如第一层缓存),而最新写的数据都会保存在这个私有不可见的缓存中,这样一旦产生冲突将抛弃私有不可见缓存中(比如第一层缓存)更改过的数据,如果成功完成Transaction将用最新更改的数据(比如第一层缓存)代替原有的数据。
数据缓存一致性的协议有两种方式:广播,目录。广播的方式适用于核数较小的架构,而目录有很强的可扩展性,适用于多核架构,因此在这里主要以目录为基础提出本申请的实施例。
每条数据缓存行都有一个状态指示串在LLC的目录当中,如图2所示,图中Tag是数据缓存行在目录的索引标记,通常为数据高位地址,Status为状态标识,包含:Exclusive(独占),Modified(更改),Shared(共享),无效;共享状态下数据会分布到一个或多个CPU的私有缓存中,数据标识位P0~Pn-1分别对应于n个处理器CPU1~CPU n-1,当对应的CPU中存在分布的数据时,数据标识位的数值为“1”,不存在分布的数据时为“0”;因此P0~Pn-1的数值可以表示共享状态下数据分布在哪几个CPU的私有缓存中。若状态为更改就只有一个CPU能够含有最新数据,即只有一个数据标识位的数值为“1”,其它均为“0”。
任何写操作都必须将数据缓存行的状态(可能为以上四种中的任一种)转变为更改状态。在变为更改状态的过程中需要对所有含有原数据的CPU发出无效化请求,即无效化相应CPU的私有缓存的数据,并将相应数据缓存行对应于该CPU的数据标识位置为“0”,同时得到最新唯一的数据,这个过程与更改之后,其他CPU需要读取这个新的数据的时间都将随着CPU核数的增加迅速变大。比如在对Transaction Memory关键区域读取更改过的数据或者提交最近更改的数据的过程中都要经过上述过程,本申请的实施例的目的就是加快这个过程,增加并行时间同时降低冲突概率。
实施例一、一种数据处理方法,如图3所示,包括:
S1、第一处理器开始事务处理,将第一数据读取到私有缓存中;
S2、第一处理器在私有缓存中对所述第一数据进行写操作,完成后开始提交事务内存;
S3、如果所述第一数据在被第一处理器写操作前的最后一次更改是由第二处理器进行的,则将所述第一处理器的私有缓存中的所述第一数据写到LLC中,无效化所述第一处理器的私有缓存中的所述第一数据;
S4、事务内存完成提交。
本实施例中,可以根据所述第一数据的缓存行在LLC目录中的第一状态指示串获知在第一处理器写操作前最后一次更新第一数据的处理器;如果是本处理器,则可以按现有方案处理;如果不是本处理器,则如图3所示,是在第一处理器进行写操作后将第一数据回写到LLC中,并无效化第一处理器私有缓存中的第一数据。
本实施例中,由于更改后的数据会放在LLC中,而不是保存在进行写操作的处理器中,且进行写操作的处理器在提交事务内存时就会被无效化,因此后续步骤中的数据更改都仅仅对LLC上面的数据进行更改,避免了处理器之间的数据传输,提高了系统的运行性能;采用本实施例的方法后,由于更改后的数据的读取时间不会因为核数增加而迅速变大,因此提高了系统的可扩展性。
本实施例的方法既可以由各处理器依据预先写入处理器的执行逻辑自发实现,也可以通过在待执行程序中增加相关指令的方式,在执行程序的过程中通过所增加的指令控制相应的处理器实现。
本实施例的一种实施方式中,所述方法还可以包括:
当所述第一处理器将在私有缓存中对所述第一数据进行写操作时,如果所述第一数据在被第一处理器写操作前的最后一次更改是由第二处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为独占且更改;如果所述第一数据在被第一处理器写操作前的最后一次更改是由第一处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为更改;
所述开始提交事务内存的步骤后、事务内存完成提交的步骤前还可以包括:
如果所述第一处理器的私有缓存中的所述第一数据的状态为独占且更改,则将所述第一数据在LLC目录中的状态设置为独占且更改。
本实施方式中,对于第一数据状态为更改的情况可以按照现有方案处理;对于前一次由其它处理器更改数据的情况,会将第一数据在第一处理器私有缓存中的状态、及提交时LLC目录中的状态设置为特殊的“独占及更改”。这样在后续处理中可以明确获知该第一数据已写回到LLC中,且第一处理器中的第一数据已被无效化过。
本实施方式的一种备选方案中,所述步骤S1具体可以包括:
S11、第一处理器开始事务处理,如果私有缓存中没有需要的所述第一数据,则根据地址映射访问LLC的目录;
S12、根据所述第一数据的缓存行在LLC的目录中的第一状态指示串,获知所述第一数据的状态;如果所述第一数据的状态为更改,则进行步骤S13;
S13、根据所述第一状态指示串中的数据标识位确定具有最新的所述第一数据的处理器,如果为第二处理器,则从所述第二处理器的私有缓存将最新的所述第一数据取回到LLC,将所述第一数据在LLC的目录中的状态修改为共享;如果为第一处理器,则直接进行步骤S2;
S14、将所述第一数据从所述LLC中读到所述第一处理器的私有缓存中,将所述第一状态指示串中对应于所述第一处理器的数据标识位置位。
本备选方案中的步骤S13是在事务内存的处理中,第一次采用本实施例的方法时的过程;如果在采用本实施例的方法前,最新的第一数据存在于更改该数据的第二处理器中,则第一处理器读取第一数据时,需要先从第二处理器取回第一数据到LLC。该情况下,第一处理器对第一数据进行写操作后,还需要将第二处理器中的第一数据进行无效化。
本备选方案中,S14和将所述第一数据的状态修改为共享的步骤不分先后,也可以同时进行。
本备选方案中,所述步骤S12中还可以包括:
如果所述第一数据的状态为独占且更改,则进行步骤S13’;
所述方法还可以包括:
S13’、将所述第一数据在LLC的目录中的状态修改为共享且更改;进行步骤S14。
其中,S14和S13’不分先后,也可以同时进行。
本备选方案中的步骤S13’是已经采用过本实施例的方法后,再进行事务内存的处理时的步骤。概括来说,就是如果所读取的第一数据本来的状态是更改,则改成共享;如果所读取的第一数据本来的状态是独占且更改,则改成共享且更改;这样可以区分其它处理器中是否还存在第一数据,以方便后续步骤中判断是否需要无效化其它处理器中的第一数据。
本备选方案中,所述开始提交事务内存的步骤后、事务内存完成提交的步骤前还可以包括:
查询所述第一数据在LLC目录中状态指示串的各数据标识位,判断除了所述第一处理器对应的数据标识位(P1)以外,是否存在置位(为“1”)的数据标识位;如果存在,则无效化置位的数据标识位对应的处理器中的第一数据,并将该数据标识位复位(设置为“0”)。
这样无论是否为第一次采用本实施例的方法,在进行完步骤S4后,第一状态指示串中的状态标识均为独占且更改;且各数据标识位中,仅有和所述第一处理器对应的数据标识位的数值为“1”,以表示最后更改所述第一数据的为所述第一处理器。
下面用三个例子对比现有的数据处理过程和本实施例的数据处理过程。
第一个例子是按照正常途径完成一次数据处理,过程如下:
假设数据已经被更改,由于无效化其他CPU中的数据,CPU1私有缓存中保留着最新数据,且LLC对应的目录结构中会反映出CPU1具有最新数据,该数据当前的状态为Modified,因此开始时数据在LLC的目录中的状态指示串如图4所示,状态标识为Modified,数据标识位中只有对应于CPU1的P1的值为“1”,其它的数据标识位的值均为“0”。
CPU0在Transaction的现有读写过程如图5所示,包括步骤101~111。
101、CPU0的Transaction处理过程开始。
102、CPU0从本CPU的私有缓存读取数据。
103、由于CPU0的私有缓存没有数据,因此根据地址映射访问LLC的目录。
104、LLC根据目录内容命令CPU1将最新数据写回到内存,同时从CPU1的私有缓存中取回数据到LLC,将目录中相应数据缓存行的状态标识设置为Shared,数据标识位P0,P1会被置位(数值改为“1”),同时将数据传回CPU0;此时对应数据的缓存行在LLC的目录中的状态指示串的如图6所示。
105、将读取的数据返回到CPU0的私有缓存,该数据的缓存行的状态为共享;读取数据完毕。
106、在CPU0的私有缓存操作此数据,在Transaction提交之前写操作(例如更改共享数据)不会反馈到LLC。
107、CPU0的Transaction Memory开始提交。
108、由于数据缓存行是共享状态,因此所有写操作都必须需要无效化其他CPU的私有缓存的数据,根据地址映射查询LLC目录。
109、根据LLC目录知道CPU1包含数据,因此无效化CPU1的私有缓存的数据,将P1复位(数值改为“0”)。
110、设置数据缓存行在LLC的目录中的状态指示串,如图7所示,将状态标识设置为Modified,且为CPU0独占(即只有P0为“1”,其它数据标识位均为“0”)。
111、CPU0完成Transaction Memory提交。
为了避免产生冲突,步骤107~110需要在提交时合并为原子操作。
可以看到,现在数据缓存行在CPU0的私有缓存中状态为Modified,当CPU1再次操作时候将会重复上面的步骤(将CPU0和CPU1互换)。对于访问其他CPU私有缓存的操作(从其它CPU取回数据,无效化其它CPU中的数据),延迟将随着CPU核数的增加而迅速增加。
第二个例子是采用本实施例的方法进行数据处理时第一次的写过程,与提前无效化技术无缝结合,可以加快Transaction Memory的操作;仍假设开始时数据在CPU1的私有缓存中,状态为Modified,即开始时数据在LLC的目录中的状态指示串也如图4所示。
该例子中的数据处理过程如图8所示,包括步骤201~211。
步骤201~205同步骤101~105,同样地,步骤204中数据缓存行在LLC的目录中的状态指示串如图6所示,即:状态标识设置为Shared,数据标识位P0,P1为“1”。
206、在CPU0的私有缓存操作此数据,在Transaction期间对这段数据的读写都会在CPU0私有缓存中进行;如果CPU0只是进行读操作,则CPU0的私有缓存中的数据的状态为共享;但若有写操作由于CPU0取数据的时候看到数据最后一次更改是其它CPU(比如CPU1),那么将CPU0的私有缓存中的数据的状态设置为独占且更改,如图8中的步骤206所示;否则(即最后一次更改是本CPU)按正常操作设定为Modified即可。
207、CPU0开始提交Transaction memory。
208、若进行了写操作且CPU0的私有缓存中数据在LLC中的状态是共享,则有可能需要无效化其他CPU的私有缓存的数据,因此根据地址映射查询LLC目录中该数据状态指示串的数据标识位。如果只是进行了读操作,则只需要无效化CPU0的私有缓存的数据即可。
209、根据LLC目录中的P1为“1”得知CPU1包含数据,因此无效化CPU1的私有缓存的数据,将P1复位;若CPU0的私有缓存中数据状态为独占且更改,则需要将CPU0的私有缓存中状态为独占且更改的数据写回到对应的LLC,同时将CPU0的私有缓存的数据无效化,如图8中的步骤209所示;若CPU0的私有缓存数据状态仅仅为Modified,那么保留数据在CPU0的私有缓存中。
210、设置CPU0进行了写操作的数据在LLC的目录中的状态指示串,如图9所示,若CPU0的私有缓存的数据状态为Modified&Exclusive,则将状态指示串中的状态标识设置为Modified&Exclusive;若CPU0的私有缓存的数据状态为Modified则仅仅将状态指示串中的状态标识转变为Modified;两种情况都将P0保持为“1”以表示是CPU0最后更改该数据。
211、Transaction Memory完成提交。
为了避免干扰,步骤207~211需要在提交时合并为原子操作。
可以看到如今数据在LLC的状态为独占且更改,这个状态意味着数据为已经更改,而根据数据标识位可知最后一个更改数据的CPU是CPU0;但是本例子中CPU0中不包含数据,因此今后其他CPU操作将无需无效化CPU0。
第三个例子是采用本实施例的方法进行数据处理时,接在第二个例子之后进行的写过程,如图10所示,包括步骤301~308。
301、CPU1的Transaction处理过程开始。
302、CPU1从本CPU的私有缓存读取数据。
303、由于CPU1的私有缓存没有数据,因此根据地址映射访问LLC的目录,根据该数据的缓存行在LLC的目录中的状态指示行获知该数据的状态为独占且更改,最后是被CPU0更改。由于CPU1需要读取数据,因此将该数据的缓存行的状态标识变为Modified&Shared(共享且更改),并将P1置位,将P0复位,如图11所示。
304、将数据取回CPU1的私有缓存,读取数据完毕。
305、在CPU1的私有缓存操作此数据,在Transaction期间对这段数据的读写都会在CPU1的私有缓存中进行;如果CPU1对此数据只进行读操作,则将该数据在CPU1的私有缓存的状态设置为Shared;如果CPU1对此数据有写操作,由于CPU1从LLC取数据的时候知道上次数据被CPU0更改,因此将该数据在CPU1的私有缓存的状态变为Modified&Exclusive,若CPU1从LLC取数据的时候知道上次数据被本CPU更改,则将该数据在CPU1的私有缓存的状态变为Modified。
306、CPU1开始提交Transaction memory。
307、如果CPU1只进行了读操作则只需要无效化CPU1的私有缓存的数据即可;如果进行了写操作,由于CPU1的私有缓存中数据在LLC中的状态为Modified&Shared,有可能需要无效化其它CPU(值为“1”的数据标识位对应的CPU)中的数据;如果该数据在LLC中的状态指示串中除了P1以外其它数据标识位均为“0”,则判断其它CPU中无此数据,因此无需无效化其它CPU中的数据;若CPU1的私有缓存的数据状态是Modified&Exclusive,判断需要将CPU1的独占且更改的数据写回到的LLC,无效化CPU1的私有缓存的数据,如图10中的步骤307所示;若CPU1的私有缓存的数据状态是Modified,那么仅仅将数据保存在CPU1的私有缓存;两种情况都会将缓存行所在LLC的目录中的状态指示串中的状态标识更改,第一种情况将状态标识设置为Modified&Exclusive(如图12所示),第二种情况将状态标识设置为Modified,两种情况都是将P1保持为“1”以表示是CPU1最后使用该数据。
308、Transaction Memory提交结束。
为了避免干扰步骤306~308需要在提交时合并为原子操作。
从现在开始,后面所有的数据更改都仅仅对LLC上面的数据进行更改,避免了CPU与CPU之间的数据传输,大大加快了在Transaction Memory中处理时间,最终减少线性处理的时间,提高整体系统的可扩展性。
实施例二、一种处理器,应用在多核处理设备中,包括:
私有缓存、提交单元;
读取单元,用于当本处理器开始事务处理时,将第一数据读取到所述私有缓存中;
写操作单元,用于在所述私有缓存中对所述第一数据进行写操作,完成后指示所述提交单元开始提交事务内存;
无效化单元,用于当所述提交单元开始提交事务内存后、完成事务内存提交前,如果所述第一数据在被本处理器写操作前的最后一次更改是由其它处理器进行的,则将所述私有缓存中的所述第一数据写到LLC中,无效化本处理器的私有缓存中的所述第一数据。
本实施例的一种实施方式中,所述处理器还可以包括:
设置单元,用于在所述写操作单元将对所述第一数据进行写操作时,如果所述第一数据在被本处理器写操作前的最后一次更改是由其它处理器进行的,则将所述私有缓存中的第一数据的状态修改为独占且更改;如果所述第一数据在被本处理器写操作前的最后一次更改是由本处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为更改;在所述提交单元开始提交事务内存后、完成事务内存提交前,如果所述第一处理器的私有缓存中的所述第一数据的状态为独占且更改,则将所述第一数据在LLC目录中的状态设置为独占且更改。
本实施方式的一种备选方案中,所述读取单元当本处理器开始事务处理时,将第一数据读取到私有缓存中具体可以是指:
所述读取单元当本处理器开始事务处理时,如果私有缓存中没有需要的所述第一数据,则根据地址映射访问LLC的目录;根据所述第一数据的缓存行在LLC的目录中的第一状态指示串,获知所述第一数据的状态;如果所述第一数据的状态为更改,则根据所述第一状态指示串中的数据标识位确定具有最新的所述第一数据的处理器,如果为其它处理器,从该其它处理器的私有缓存将最新的所述第一数据取回到LLC,将所述第一数据在LLC的目录中的状态修改为共享,将所述第一数据从所述LLC中读到本处理器的私有缓存中,将所述第一状态指示串中对应于本处理器的数据标识位置位,指示所述写操作单元在本处理器的私有缓存中对所述第一数据进行写操作;如果为本处理器,则直接指示所述写操作单元在本处理器的私有缓存中对所述第一数据进行写操作。
本备选方案中,所述读取单元还可以用于当根据地址映射访问LLC的目录,且根据所述第一数据的缓存行在LLC的目录中的第一状态指示串,获知所述第一数据的状态为独占且更改时,将所述第一数据在LLC的目录中的状态修改为共享且更改。
本备选方案中,所述无效化单元还可以用于查询所述第一数据在LLC目录中状态指示串的各数据标识位,判断除了本处理器对应的数据标识位(P1)以外,是否存在置位(为“1”)的数据标识位;如果存在,则无效化置位的数据标识位对应的处理器中的第一数据,并将该数据标识位复位(设置为“0”)。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。
Claims (10)
1.一种数据处理方法,包括:
第一处理器开始事务处理,将第一数据读取到私有缓存中;
第一处理器在私有缓存中对所述第一数据进行写操作,完成后开始提交事务内存;
如果所述第一数据在被第一处理器写操作前的最后一次更改是由第二处理器进行的,则将所述第一处理器的私有缓存中的所述第一数据写到最后一级缓存LLC中,无效化所述第一处理器的私有缓存中的所述第一数据;
事务内存完成提交。
2.如权利要求1所述的方法,其特征在于,还包括:
当所述第一处理器将在私有缓存中对所述第一数据进行写操作时,如果所述第一数据在被第一处理器写操作前的最后一次更改是由第二处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为独占且更改;如果所述第一数据在被第一处理器写操作前的最后一次更改是由第一处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为更改;
所述开始提交事务内存的步骤后、事务内存完成提交的步骤前还包括:
如果所述第一处理器的私有缓存中的所述第一数据的状态为独占且更改,则将所述第一数据在LLC目录中的状态设置为独占且更改。
3.如权利要求2所述的方法,其特征在于,所述第一处理器开始事务处理,将第一数据读取到私有缓存中的步骤包括:
S11、第一处理器开始事务处理,如果私有缓存中没有需要的所述第一数据,则根据地址映射访问LLC的目录;
S12、根据所述第一数据的缓存行在LLC的目录中的第一状态指示串,获知所述第一数据的状态;如果所述第一数据的状态为更改,则进行步骤
S13;
S13、根据所述第一状态指示串中的数据标识位确定具有最新的所述第一数据的处理器;如果为第二处理器,则从所述第二处理器的私有缓存将最新的所述第一数据取回到LLC,将所述第一数据在LLC的目录中的状态修改为共享;如果为第一处理器,则直接进行第一处理器在私有缓存中对所述第一数据进行写操作的步骤;
S14、将所述第一数据从所述LLC中读到所述第一处理器的私有缓存中,将所述第一状态指示串中对应于所述第一处理器的数据标识位置位。
4.如权利要求3所述的方法,其特征在于,所述步骤S12中还包括:
如果所述第一数据的状态为独占且更改,则进行步骤S13’;
所述方法还包括:
S13’、将所述第一数据在LLC的目录中的状态修改为共享且更改;进行步骤S14。
5.如权利要求4所述的方法,其特征在于,在开始提交事务内存的步骤后、事务内存完成提交的步骤前还包括:
查询所述第一数据在LLC目录中状态指示串的各数据标识位,判断除了所述第一处理器对应的数据标识位以外,是否存在置位的数据标识位;如果存在,则无效化置位的数据标识位对应的处理器中的第一数据,并将该数据标识位复位。
6.一种处理器,应用在多核处理设备中,包括:
私有缓存、提交单元;
读取单元,用于当本处理器开始事务处理时,将第一数据读取到所述私有缓存中;
写操作单元,用于在所述私有缓存中对所述第一数据进行写操作,完成后指示所述提交单元开始提交事务内存;
其特征在于,还包括:
无效化单元,用于当所述提交单元开始提交事务内存后、完成事务内存提交前,如果所述第一数据在被本处理器写操作前的最后一次更改是由其它处理器进行的,则将所述私有缓存中的所述第一数据写到LLC中,无效化本处理器的私有缓存中的所述第一数据。
7.如权利要求6所述的处理器,其特征在于,还包括:
设置单元,用于在所述写操作单元将对所述第一数据进行写操作时,如果所述第一数据在被本处理器写操作前的最后一次更改是由其它处理器进行的,则将所述私有缓存中的第一数据的状态修改为独占且更改;如果所述第一数据在被本处理器写操作前的最后一次更改是由本处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为更改;在所述提交单元开始提交事务内存后、完成事务内存提交前,如果本处理器的私有缓存中的所述第一数据的状态为独占且更改,则将所述第一数据在LLC目录中的状态设置为独占且更改。
8.如权利要求7所述的处理器,其特征在于,所述读取单元当本处理器开始事务处理时,将第一数据读取到私有缓存中是指:
所述读取单元当本处理器开始事务处理时,如果私有缓存中没有需要的所述第一数据,则根据地址映射访问LLC的目录;根据所述第一数据的缓存行在LLC的目录中的第一状态指示串,获知所述第一数据的状态;如果所述第一数据的状态为更改,则根据所述第一状态指示串中的数据标识位确定具有最新的所述第一数据的处理器,如果为其它处理器,从该其它处理器的私有缓存将最新的所述第一数据取回到LLC,将所述第一数据在LLC的目录中的状态修改为共享,将所述第一数据从所述LLC中读到本处理器的私有缓存中,将所述第一状态指示串中对应于本处理器的数据标识位置位,指示所述写操作单元在本处理器的私有缓存中对所述第一数据进行写操作;如果为本处理器,则直接指示所述写操作单元在本处理器的私有缓存中对所述第一数据进行写操作。
9.如权利要求8所述的处理器,其特征在于:
所述读取单元还用于当根据地址映射访问LLC的目录,且根据所述第一数据的缓存行在LLC的目录中的第一状态指示串,获知所述第一数据的状态为独占且更改时,将所述第一数据在LLC的目录中的状态修改为共享且更改。
10.如权利要求9所述的处理器,其特征在于:
所述无效化单元还用于查询所述第一数据在LLC目录中状态指示串的各数据标识位,判断除了本处理器对应的数据标识位以外,是否存在置位的数据标识位;如果存在,则无效化置位的数据标识位对应的处理器中的第一数据,并将该数据标识位复位。
Priority Applications (12)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410117556.9A CN104951240B (zh) | 2014-03-26 | 2014-03-26 | 一种数据处理方法及处理器 |
CN201811046055.0A CN109240945B (zh) | 2014-03-26 | 2014-03-26 | 一种数据处理方法及处理器 |
TW103118606A TWI638311B (zh) | 2014-03-26 | 2014-05-28 | Data processing method and processor |
US14/668,681 US9715450B2 (en) | 2014-03-26 | 2015-03-25 | Conditional data caching using transactional memory in a multiprocessor system |
EP15769090.0A EP3123351B1 (en) | 2014-03-26 | 2015-03-25 | Method and processor for processing data |
KR1020167025883A KR102398912B1 (ko) | 2014-03-26 | 2015-03-25 | 데이터를 프로세싱하기 위한 방법 및 프로세서 |
EP18198050.9A EP3441886B1 (en) | 2014-03-26 | 2015-03-25 | Method and processor for processing data |
PCT/US2015/022507 WO2015148679A1 (en) | 2014-03-26 | 2015-03-25 | Method and processor for processing data |
JP2016553649A JP6470300B2 (ja) | 2014-03-26 | 2015-03-25 | データ処理のための方法及びプロセッサ |
HK15111785.9A HK1211102A1 (zh) | 2014-03-26 | 2015-12-01 | 種數據處理方法及處理器 |
US15/619,886 US9858186B2 (en) | 2014-03-26 | 2017-06-12 | Conditional data caching transactional memory in a multiple processor system |
JP2019005950A JP6685437B2 (ja) | 2014-03-26 | 2019-01-17 | データ処理のための方法及びプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410117556.9A CN104951240B (zh) | 2014-03-26 | 2014-03-26 | 一种数据处理方法及处理器 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811046055.0A Division CN109240945B (zh) | 2014-03-26 | 2014-03-26 | 一种数据处理方法及处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104951240A CN104951240A (zh) | 2015-09-30 |
CN104951240B true CN104951240B (zh) | 2018-08-24 |
Family
ID=54165922
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811046055.0A Active CN109240945B (zh) | 2014-03-26 | 2014-03-26 | 一种数据处理方法及处理器 |
CN201410117556.9A Active CN104951240B (zh) | 2014-03-26 | 2014-03-26 | 一种数据处理方法及处理器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811046055.0A Active CN109240945B (zh) | 2014-03-26 | 2014-03-26 | 一种数据处理方法及处理器 |
Country Status (8)
Country | Link |
---|---|
US (2) | US9715450B2 (zh) |
EP (2) | EP3441886B1 (zh) |
JP (2) | JP6470300B2 (zh) |
KR (1) | KR102398912B1 (zh) |
CN (2) | CN109240945B (zh) |
HK (1) | HK1211102A1 (zh) |
TW (1) | TWI638311B (zh) |
WO (1) | WO2015148679A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150205721A1 (en) * | 2014-01-22 | 2015-07-23 | Advanced Micro Devices, Inc. | Handling Reads Following Transactional Writes during Transactions in a Computing Device |
CN109240945B (zh) | 2014-03-26 | 2023-06-06 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及处理器 |
US10318295B2 (en) * | 2015-12-22 | 2019-06-11 | Intel Corporation | Transaction end plus commit to persistence instructions, processors, methods, and systems |
KR102593362B1 (ko) * | 2016-04-27 | 2023-10-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
GB2551529B (en) | 2016-06-21 | 2018-09-12 | Advanced Risc Mach Ltd | Switching between private cache and shared memory to handle atomic operations |
US10268580B2 (en) * | 2016-09-30 | 2019-04-23 | Intel Corporation | Processors and methods for managing cache tiering with gather-scatter vector semantics |
US10528471B2 (en) | 2016-12-27 | 2020-01-07 | Eta Scale Ab | System and method for self-invalidation, self-downgrade cachecoherence protocols |
US11119923B2 (en) * | 2017-02-23 | 2021-09-14 | Advanced Micro Devices, Inc. | Locality-aware and sharing-aware cache coherence for collections of processors |
US11727997B2 (en) | 2017-07-07 | 2023-08-15 | Micron Technology, Inc. | RPMB improvements to managed NAND |
CN109614220B (zh) * | 2018-10-26 | 2020-06-30 | 阿里巴巴集团控股有限公司 | 一种多核系统处理器和数据更新方法 |
CN109684237B (zh) * | 2018-11-20 | 2021-06-01 | 华为技术有限公司 | 基于多核处理器的数据访问方法和装置 |
CN109784930B (zh) * | 2019-02-18 | 2023-07-18 | 深圳市迅雷网络技术有限公司 | 一种区块链交易数据的处理方法、装置、电子设备及介质 |
CN110265029A (zh) * | 2019-06-21 | 2019-09-20 | 百度在线网络技术(北京)有限公司 | 语音芯片和电子设备 |
CN112307067B (zh) * | 2020-11-06 | 2024-04-19 | 支付宝(杭州)信息技术有限公司 | 一种数据处理方法及装置 |
US11429910B1 (en) | 2021-08-05 | 2022-08-30 | Transit Labs Inc. | Dynamic scheduling of driver breaks in a ride-sharing service |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968292A (zh) * | 2005-12-30 | 2013-03-13 | 英特尔公司 | 无约束事务存储器系统 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH061463B2 (ja) | 1990-01-16 | 1994-01-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチプロセッサ・システムおよびそのプライベート・キャッシュ制御方法 |
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
DE4331178A1 (de) * | 1993-09-14 | 1995-03-16 | Hoechst Schering Agrevo Gmbh | Substituierte Pyridine und Pyrimidine, Verfahren zu ihrer Herstellung und ihre Verwendung als Schädlingsbekämpfungsmittel und Fungizide |
US6192451B1 (en) * | 1998-02-17 | 2001-02-20 | International Business Machines Corporation | Cache coherency protocol for a data processing system including a multi-level memory hierarchy |
US6434672B1 (en) * | 2000-02-29 | 2002-08-13 | Hewlett-Packard Company | Methods and apparatus for improving system performance with a shared cache memory |
US6868485B1 (en) * | 2002-09-27 | 2005-03-15 | Advanced Micro Devices, Inc. | Computer system with integrated directory and processor cache |
US9727468B2 (en) * | 2004-09-09 | 2017-08-08 | Intel Corporation | Resolving multi-core shared cache access conflicts |
US7237070B2 (en) * | 2005-04-19 | 2007-06-26 | International Business Machines Corporation | Cache memory, processing unit, data processing system and method for assuming a selected invalid coherency state based upon a request source |
US10031848B2 (en) * | 2005-06-14 | 2018-07-24 | Intel Corporation | Method and apparatus for improving snooping performance in a multi-core multi-processor |
US8407432B2 (en) * | 2005-06-30 | 2013-03-26 | Intel Corporation | Cache coherency sequencing implementation and adaptive LLC access priority control for CMP |
US20070143550A1 (en) * | 2005-12-19 | 2007-06-21 | Intel Corporation | Per-set relaxation of cache inclusion |
US7590805B2 (en) * | 2005-12-29 | 2009-09-15 | Intel Corporation | Monitor implementation in a multicore processor with inclusive LLC |
US8924653B2 (en) | 2006-10-31 | 2014-12-30 | Hewlett-Packard Development Company, L.P. | Transactional cache memory system |
US20090138890A1 (en) * | 2007-11-21 | 2009-05-28 | Arm Limited | Contention management for a hardware transactional memory |
US8051248B2 (en) | 2008-05-05 | 2011-11-01 | Globalfoundries Inc. | Transient transactional cache |
US8799582B2 (en) * | 2008-12-30 | 2014-08-05 | Intel Corporation | Extending cache coherency protocols to support locally buffered data |
US8627017B2 (en) | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
US8782347B2 (en) * | 2009-06-26 | 2014-07-15 | Intel Corporation | Controllably exiting an unknown state of a cache coherency directory |
US8229907B2 (en) | 2009-06-30 | 2012-07-24 | Microsoft Corporation | Hardware accelerated transactional memory system with open nested transactions |
US8301849B2 (en) | 2009-12-23 | 2012-10-30 | Intel Corporation | Transactional memory in out-of-order processors with XABORT having immediate argument |
US9274962B2 (en) * | 2010-12-07 | 2016-03-01 | Intel Corporation | Apparatus, method, and system for instantaneous cache state recovery from speculative abort/commit |
US9477600B2 (en) * | 2011-08-08 | 2016-10-25 | Arm Limited | Apparatus and method for shared cache control including cache lines selectively operable in inclusive or non-inclusive mode |
US8984228B2 (en) * | 2011-12-13 | 2015-03-17 | Intel Corporation | Providing common caching agent for core and integrated input/output (IO) module |
US9274960B2 (en) * | 2012-03-20 | 2016-03-01 | Stefanos Kaxiras | System and method for simplifying cache coherence using multiple write policies |
US20140075124A1 (en) | 2012-09-07 | 2014-03-13 | International Business Machines Corporation | Selective Delaying of Write Requests in Hardware Transactional Memory Systems |
CN109240945B (zh) | 2014-03-26 | 2023-06-06 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及处理器 |
-
2014
- 2014-03-26 CN CN201811046055.0A patent/CN109240945B/zh active Active
- 2014-03-26 CN CN201410117556.9A patent/CN104951240B/zh active Active
- 2014-05-28 TW TW103118606A patent/TWI638311B/zh active
-
2015
- 2015-03-25 US US14/668,681 patent/US9715450B2/en active Active
- 2015-03-25 EP EP18198050.9A patent/EP3441886B1/en active Active
- 2015-03-25 KR KR1020167025883A patent/KR102398912B1/ko active IP Right Grant
- 2015-03-25 JP JP2016553649A patent/JP6470300B2/ja active Active
- 2015-03-25 WO PCT/US2015/022507 patent/WO2015148679A1/en active Application Filing
- 2015-03-25 EP EP15769090.0A patent/EP3123351B1/en active Active
- 2015-12-01 HK HK15111785.9A patent/HK1211102A1/zh unknown
-
2017
- 2017-06-12 US US15/619,886 patent/US9858186B2/en active Active
-
2019
- 2019-01-17 JP JP2019005950A patent/JP6685437B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968292A (zh) * | 2005-12-30 | 2013-03-13 | 英特尔公司 | 无约束事务存储器系统 |
Also Published As
Publication number | Publication date |
---|---|
KR102398912B1 (ko) | 2022-05-17 |
CN109240945A (zh) | 2019-01-18 |
EP3441886A1 (en) | 2019-02-13 |
CN109240945B (zh) | 2023-06-06 |
US20170277635A1 (en) | 2017-09-28 |
TWI638311B (zh) | 2018-10-11 |
US20150278094A1 (en) | 2015-10-01 |
EP3441886B1 (en) | 2020-11-18 |
JP6470300B2 (ja) | 2019-02-13 |
US9858186B2 (en) | 2018-01-02 |
WO2015148679A1 (en) | 2015-10-01 |
JP2017509985A (ja) | 2017-04-06 |
EP3123351A4 (en) | 2017-10-25 |
JP6685437B2 (ja) | 2020-04-22 |
EP3123351B1 (en) | 2018-12-12 |
CN104951240A (zh) | 2015-09-30 |
US9715450B2 (en) | 2017-07-25 |
EP3123351A1 (en) | 2017-02-01 |
HK1211102A1 (zh) | 2016-05-13 |
JP2019083045A (ja) | 2019-05-30 |
KR20160138025A (ko) | 2016-12-02 |
TW201537454A (zh) | 2015-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104951240B (zh) | 一种数据处理方法及处理器 | |
KR101814577B1 (ko) | 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치 | |
CN110312997B (zh) | 使用缓存行锁定来实现原子原语 | |
TWI493349B (zh) | 用於操控經發佈至資料處理設備內局部快取記憶體結構之存取操作的設備與方法 | |
US20110219215A1 (en) | Atomicity: a multi-pronged approach | |
US20070143287A1 (en) | Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions | |
CN103299281B (zh) | 防止硬件事务存储器系统非故意丢失事务数据 | |
CN111742301A (zh) | 通过请求来日志记录对更高级别的缓存的缓存流入量 | |
US10078588B2 (en) | Using leases for entries in a translation lookaside buffer | |
Ramachandran et al. | A fast lock-free internal binary search tree | |
Ritson et al. | Exploring garbage collection with haswell hardware transactional memory | |
US9128750B1 (en) | System and method for supporting multi-threaded transactions | |
CN101425052B (zh) | 一种事务性内存的实现方法 | |
US20190121750A1 (en) | Determining cache value currency using persistent markers | |
WO2017074416A1 (en) | Managing cache operations using epochs | |
US10176102B2 (en) | Optimized read cache for persistent cache on solid state devices | |
KR20160086820A (ko) | 메모리에 동시에 액세스하는 기법 | |
JPWO2014064914A1 (ja) | データ格納装置、データ格納方法およびプログラム | |
CN105700953B (zh) | 一种多处理器缓存一致性处理方法及装置 | |
CN117472803B (zh) | 原子指令执行方法、装置及电子设备 | |
CN110727465B (zh) | 一种基于配置查找表的协议可重构一致性实现方法 | |
CN115098409A (zh) | 进行阶层式高速缓存系统回存且无效的处理器以及方法 | |
Chengduan | The Designing and Implementing of Distributed Shared Memory | |
Jain | Real World Multicore Embedded Systems: Chapter 4. Memory Models for Embedded Multicore Architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1211102 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |