CN109240945B - 一种数据处理方法及处理器 - Google Patents

一种数据处理方法及处理器 Download PDF

Info

Publication number
CN109240945B
CN109240945B CN201811046055.0A CN201811046055A CN109240945B CN 109240945 B CN109240945 B CN 109240945B CN 201811046055 A CN201811046055 A CN 201811046055A CN 109240945 B CN109240945 B CN 109240945B
Authority
CN
China
Prior art keywords
data
processor
state
llc
private cache
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
Application number
CN201811046055.0A
Other languages
English (en)
Other versions
CN109240945A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201811046055.0A priority Critical patent/CN109240945B/zh
Publication of CN109240945A publication Critical patent/CN109240945A/zh
Application granted granted Critical
Publication of CN109240945B publication Critical patent/CN109240945B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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中,无效化所述第一处理器的私有缓存中的所述第一数据;第二处理器在私有缓存中对第一数据进行写操作;完成写操作后,将所述第二处理器的私有缓存中的所述第一数据写到所述LLC中,无效化所述第二处理器的私有缓存中的所述第一数据。

Description

一种数据处理方法及处理器
本申请是中国发明专利申请“一种数据处理方法及处理器”的分案申请,原申请的申请号为:201410117556.9,申请日为:2014年3月26日。
技术领域
本申请涉及计算机领域,尤其涉及一种数据处理方法及处理器。
背景技术
最近几年内,处理器厂商受到功耗和温度的限制,同时为了保持高性能运算持续增长,计算机已经朝着多核计算机体系架构方向发展。为了充分利用多核架构,应用程序被拆分成多个可独立运行在单个处理器(如CPU)上面的线程,这样设计程序可以并行执行,提高整体运行效率。
当前多核体系架构的主流设计方案的一个例子如图1a和图1b所示,图1a中共有16个CPU核(比如图1中的P0~P15),彼此通过路由(图中粗线)可相互访问;图1b中是每个处理器(即图1a中的CPU核)的缓存框架,其中*Ln代表First Level Cache(第一级缓存)L1,或者L1及Second Level Cache(第二级缓存)L2;Last Level 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提高了多核系统的并行度,但随着并行度的提高,冲突产生的概率也随之增加,一旦产生冲突进行回滚操作就会严重的伤害程序的性能。
发明内容
本申请提供一种数据处理方法及处理器,可以减少多核系统中由于数据冲突产生的回滚事件,加速关键区域的运行。
本申请采用如下技术方案。
一种数据处理方法,包括:
第一处理器开始事务处理,将第一数据读取到所述第一处理器的私有缓存中;
所述第一处理器在私有缓存中对所述第一数据进行写操作,完成后开始提交事务内存;
如果所述第一数据在被所述第一处理器写操作前的最后一次更改是由第二处理器进行的,则将所述第一处理器的私有缓存中的所述第一数据写到最后一级缓存LLC中,无效化所述第一处理器的私有缓存中的所述第一数据;
事务内存完成提交。
其中,所述方法还可以包括:
当所述第一处理器将在私有缓存中对所述第一数据进行写操作时,如果所述第一数据在被第一处理器写操作前的最后一次更改是由第二处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为独占且更改;如果所述第一数据在被第一处理器写操作前的最后一次更改是由第一处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为更改;
所述开始提交事务内存的步骤后、事务内存完成提交的步骤前还包括:
如果所述第一处理器的私有缓存中的所述第一数据的状态为独占且更改,则将所述第一数据在LLC目录中的状态设置为独占且更改。
其中,所述第一处理器开始事务处理,将第一数据读取到私有缓存中的步骤可以包括:
S11、第一处理器开始事务处理,如果私有缓存中没有需要的所述第一数据,则根据地址映射访问LLC的目录;
S12、根据所述第一数据的缓存行在LLC的目录中的第一状态指示串,获知所述第一数据的状态;如果所述第一数据的状态为更改,则进行步骤S13;
S13、根据所述第一状态指示串中的数据标识位确定具有最新的所述第一数据的处理器;如果为第二处理器,则从所述第二处理器的私有缓存将最新的所述第一数据取回到LLC,将所述第一数据在LLC的目录中的状态修改为共享;如果为第一处理器,则直接进行第一处理器在私有缓存中对所述第一数据进行写操作的步骤;
S14、将所述第一数据从所述LLC中读到所述第一处理器的私有缓存中,将所述第一状态指示串中对应于所述第一处理器的数据标识位置位。
其中,所述步骤S12中还可以包括:
如果所述第一数据的状态为独占且更改,则进行步骤S13’;
所述方法还可以包括:
S13’、将所述第一数据在LLC的目录中的状态修改为共享且更改;进行步骤S14。
其中,在开始提交事务内存的步骤后、事务内存完成提交的步骤前还可以包括:
查询所述第一数据的缓存行在所述LLC的目录中的第一状态指示串的各数据标识位,判断除了所述第一处理器对应的数据标识位以外,是否存在置位的数据标识位;如果存在,则无效化置位的数据标识位对应的处理器中的所述第一数据,并将该数据标识位复位。
一种处理器,应用在多核处理设备中,包括:
私有缓存、提交单元;
读取单元,用于当本处理器开始事务处理时,将第一数据读取到所述私有缓存中;
写操作单元,用于在所述私有缓存中对所述第一数据进行写操作,完成后指示所述提交单元开始提交事务内存;
无效化单元,用于当所述提交单元开始提交事务内存后、完成事务内存提交前,如果所述第一数据在被本处理器写操作前的最后一次更改是由其它处理器进行的,则将所述私有缓存中的所述第一数据写到最后一级缓存LLC中,无效化本处理器的私有缓存中的所述第一数据。
本申请的至少一个实施例利用在现有的硬件Transaction memory的基础上,可以加快提高预测准确性和Transaction memory对关键区域的执行效率,减少TransactionMemory运行时由于数据冲突产生的回滚时间,进一步提高多核系统的运行性能和可扩展性。当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
图1a为多核并行系统中多个处理器的示意图;
图1b为各处理器的结构示意图;
图2为数据在LLC的目录中的状态指示串的示意图;
图3为实施例一的数据处理方法的流程示意图;
图4为实施例一的第一个例子中开始时数据缓存行在LLC的目录中的状态指示串的示意图;
图5为实施例一的第一个例子中的数据处理流程示意图;
图6为实施例一的第一个例子中步骤104中数据缓存行在LLC的目录中的状态指示串的示意图;
图7为实施例一的第一个例子中步骤110中数据缓存行在LLC的目录中的状态指示串的示意图;
图8为实施例一的第二个例子中的数据处理流程示意图;
图9为实施例一的第二个例子中步骤210中数据缓存行在LLC的目录中的状态指示串的示意图;
图10为实施例一的第三个例子中的数据处理流程示意图;
图11为实施例一的第三个例子中步骤303中数据缓存行在LLC的目录中的状态指示串的示意图;
图12为实施例一的第三个例子中步骤307中数据缓存行在LLC的目录中的状态指示串的示意图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的不同特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一种配置中,进行DNS泛洪攻击防御的计算设备可包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存(memory)。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。内存可能包括一个或多个模块。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
首先介绍一下现有的硬件Transaction memory的工作原理。
硬件Transaction memory的工作原理为:先用代码告诉CPU Transaction区域的开始和结束,例如Transaction_start和Transaction_end。中间部分为执行Transaction过程中的Transaction区域,一旦执行结束,Transaction_end指令要求CPU将所有修改过的数据以原子方式提交(也就是提交过程不可被打断和访问)。执行Transaction的过程中任何读过或者写过的内存区域都会被监视起来以免产生写-读,读-写,以及写-写冲突,为了使数据冲突时能够回滚到进入Transaction区域起始的状态,在执行Transaction memory过程中所有内存写操作之前都必须将原有的数据复制一份;比如可以复制对应的一条数据缓存行到私有不可见缓存之中(例如第一层缓存),而最新写的数据都会保存在这个私有不可见的缓存中,这样一旦产生冲突将抛弃私有不可见缓存中(比如第一层缓存)更改过的数据,如果成功完成Transaction将用最新更改的数据(比如第一层缓存)代替原有的数据。
数据缓存一致性的协议有两种方式:广播,目录。广播的方式适用于核数较小的架构,而目录有很强的可扩展性,适用于多核架构,因此在这里主要以目录为基础提出本申请的实施例。
每条数据缓存行都有一个状态指示串在LLC的目录当中,如图2所示,图中Tag是数据缓存行在目录的索引标记,通常为数据高位地址,Status为状态标识,包含:Exclusive(独占),Modified(更改),Shared(共享),无效;共享状态下数据会分布到一个或多个CPU的私有缓存中,数据标识位P0~Pn-1分别对应于n个处理器CPU 1~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的目录中的状态修改为共享,进行步骤S14;如果为第一处理器,则直接进行步骤S2;
S14、将所述第一数据从所述LLC中读到所述第一处理器的私有缓存中,将所述第一状态指示串中对应于所述第一处理器的数据标识位置位。
本备选方案中的步骤S13是在事务内存的处理中,第一次采用本实施例的方法时的过程;如果在采用本实施例的方法前,最新的第一数据存在于更改该数据的第二处理器中,则第一处理器读取第一数据时,需要先从第二处理器取回第一数据到LLC。该情况下,第一处理器对第一数据进行写操作后,还需要将第二处理器中的第一数据进行无效化。
本备选方案中,S14和将所述第一数据的状态修改为共享的步骤不分先后,也可以同时进行。
本备选方案中,所述步骤S12中还可以包括:
如果所述第一数据的状态为独占且更改,则进行步骤S13’;
所述方法还可以包括:
S13’、将所述第一数据在LLC的目录中的状态修改为共享且更改;进行步骤S14。
其中,S14和S13’不分先后,也可以同时进行。
本备选方案中的步骤S13’是已经采用过本实施例的方法后,再进行事务内存的处理时的步骤。概括来说,就是如果所读取的第一数据本来的状态是更改,则改成共享;如果所读取的第一数据本来的状态是独占且更改,则改成共享且更改;这样可以区分其它处理器中是否还存在第一数据,以方便后续步骤中判断是否需要无效化其它处理器中的第一数据。
本备选方案中,所述开始提交事务内存的步骤后、事务内存完成提交的步骤前还可以包括:
查询所述第一数据的缓存行在所述LLC的目录中的第一状态指示串的各数据标识位,判断除了所述第一处理器对应的数据标识位(P1)以外,是否存在置位(为“1”)的数据标识位;如果存在,则无效化置位的数据标识位对应的处理器中的所述第一数据,并将该数据标识位复位(设置为“0”)。
这样无论是否为第一次采用本实施例的方法,在进行完步骤S4后,第一状态指示串中的状态标识均为独占且更改;且各数据标识位中,仅有和所述第一处理器对应的数据标识位的数值为“1”,以表示最后更改所述第一数据的为所述第一处理器。
下面用三个例子对比现有的数据处理过程和本实施例的数据处理过程。
第一个例子是按照现有方式完成一次数据处理,过程如下:
假设数据已经被更改,由于无效化其他CPU中的数据,CPU 1私有缓存中保留着最新数据,且LLC对应的目录结构中会反映出CPU 1具有最新数据,该数据当前的状态为Modified,因此开始时数据在LLC的目录中的状态指示串如图4所示,状态标识为Modified,数据标识位中只有对应于CPU 1的P1的值为“1”,其它的数据标识位的值均为“0”。
CPU 0在Transaction的现有读写过程如图5所示,包括步骤101~111。
101、CPU 0的Transaction处理过程开始。
102、CPU 0从本CPU的私有缓存读取数据。
103、由于CPU 0的私有缓存没有数据,因此根据地址映射访问LLC的目录。
104、LLC根据目录内容命令CPU 1将最新数据写回到内存,并从CPU1的私有缓存中取回数据到LLC,将目录中相应数据缓存行的状态标识设置为Shared,数据标识位P0,P1会被置位(数值改为“1”),将数据传回CPU0;此时对应数据的缓存行在LLC的目录中的状态指示串的如图6所示。
105、将读取的数据返回到CPU 0的私有缓存,该数据的缓存行的状态为共享;读取数据完毕。
106、在CPU 0的私有缓存操作此数据,在Transaction提交之前写操作(例如更改共享数据)不会反馈到LLC。
107、CPU 0的Transaction Memory开始提交。
108、由于数据缓存行是共享状态,因此所有写操作都必须需要无效化其他CPU的私有缓存的数据,根据地址映射查询LLC目录。
109、根据LLC目录知道CPU 1包含数据,因此无效化CPU 1的私有缓存的数据,将P1复位(数值改为“0”)。
110、设置数据缓存行在LLC的目录中的状态指示串,如图7所示,将状态标识设置为Modified,且为CPU0独占(即只有P0为“1”,其它数据标识位均为“0”)。
111、CPU0完成Transaction Memory提交。
为了避免产生冲突,步骤107~110需要在提交时合并为原子操作。
可以看到,现在数据缓存行在CPU 0的私有缓存中状态为Modified,当CPU 1再次操作时候将会重复上面的步骤(CPU 1再次操作的过程,将上面步骤中的CPU 0和CPU 1互换可以得到)。对于访问其他CPU私有缓存的操作(从其它CPU取回数据,无效化其它CPU中的数据),延迟将随着CPU核数的增加而迅速增加。
第二个例子是采用本实施例的方法进行数据处理时第一次的写过程,可以加快Transaction Memory的操作;仍假设开始时数据在CPU 1的私有缓存中,状态为Modified,即开始时数据在LLC的目录中的状态指示串也如图4所示。
该例子中的数据处理过程如图8所示,包括步骤201~211。
步骤201~205同步骤101~105,同样地,步骤204中数据缓存行在LLC的目录中的状态指示串如图6所示,即:状态标识设置为Shared,数据标识位P0,P1为“1”。
206、在CPU 0的私有缓存操作此数据,在Transaction期间对这段数据的读写都会在CPU 0私有缓存中进行;如果CPU 0只是进行读操作,则CPU0的私有缓存中的数据的状态为共享;但若有写操作由于CPU 0取数据的时候看到数据最后一次更改是其它CPU(比如CPU1),那么将CPU 0的私有缓存中的数据的状态设置为独占且更改,如图8中的步骤206所示;否则(比如最后一次更改是本CPU)按正常操作设定为Modified即可。
207、CPU 0开始提交Transaction memory。
208、若进行了写操作且CPU 0的私有缓存中数据在LLC中的状态是共享,则有可能需要无效化其他CPU的私有缓存的数据,因此根据地址映射查询LLC目录中该数据状态指示串的数据标识位。如果只是进行了读操作,则只需要无效化CPU 0的私有缓存的数据即可。
209、根据LLC目录中的P1为“1”得知CPU 1包含数据,因此无效化CPU 1的私有缓存的数据,将P1复位;若CPU 0的私有缓存中数据状态为独占且更改,则需要将CPU 0的私有缓存中状态为独占且更改(Modified&Exclusive)的数据写回到对应的LLC,同时将CPU 0的私有缓存的数据无效化,如图8中的步骤209所示;若CPU 0的私有缓存数据状态仅仅为Modified,那么保留数据在CPU 0的私有缓存中。
210、设置CPU 0进行了写操作的数据在LLC的目录中的状态指示串,如图9所示,若CPU 0的私有缓存的数据状态为Modified&Exclusive,则将状态指示串中的状态标识设置为Modified&Exclusive;若CPU 0的私有缓存的数据状态为Modified则仅仅将状态指示串中的状态标识转变为Modified;两种情况都将P0保持为“1”以表示是CPU 0最后更改该数据。
211、Transaction Memory完成提交。
为了避免干扰,步骤207~211需要在提交时合并为原子操作。
可以看到如今数据在LLC的状态为独占且更改,这个状态意味着数据已经更改,而根据数据标识位可知最后一个更改数据的CPU是CPU 0;但是本例子中CPU 0中不包含数据,因此今后其他CPU操作将无需无效化CPU 0。
第三个例子是采用本实施例的方法进行数据处理时,接在第二个例子之后进行的写过程,如图10所示,包括步骤301~308。
301、CPU 1的Transaction处理过程开始。
302、CPU 1从本CPU的私有缓存读取数据。
303、由于CPU 1的私有缓存没有数据,因此根据地址映射访问LLC的目录,根据该数据的缓存行在LLC的目录中的状态指示行获知该数据的状态为独占且更改,最后是被CPU0更改。由于CPU 1需要读取数据,因此将该数据的缓存行的状态标识变为Modified&Shared(共享且更改),并将P1置位,将P0复位,如图11所示。
304、将数据取回CPU 1的私有缓存,读取数据完毕。
305、在CPU 1的私有缓存操作此数据,在Transaction期间对这段数据的读写都会在CPU 1的私有缓存中进行;如果CPU 1对此数据只进行读操作,则将该数据在CPU 1的私有缓存的状态设置为Shared;如果CPU 1对此数据有写操作,由于CPU 1从LLC取数据的时候知道上次数据被CPU 0更改,因此将该数据在CPU 1的私有缓存的状态变为Modified&Exclusive,若CPU1从LLC取数据的时候知道上次数据被本CPU更改,则将该数据在CPU 1的私有缓存的状态变为Modified。
306、CPU 1开始提交Transaction memory。
307、如果CPU 1只进行了读操作则只需要无效化CPU 1的私有缓存的数据即可;如果进行了写操作,由于CPU 1的私有缓存中数据在LLC中的状态为Modified&Shared,有可能需要无效化其它CPU(值为“1”的数据标识位对应的CPU)中的数据;如果该数据在LLC中的状态指示串中除了P1以外其它数据标识位均为“0”,则判断其它CPU中无此数据,因此无需无效化其它CPU中的数据;若CPU 1的私有缓存的数据状态是Modified&Exclusive,判断需要将CPU 1的独占且更改的数据写回到的LLC,无效化CPU 1的私有缓存的数据,如图10中的步骤307所示;若CPU 1的私有缓存的数据状态是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 (6)

1.一种数据处理方法,包括:
第一处理器开始事务处理,将第一数据读取到所述第一处理器的私有缓存中;
所述第一处理器在私有缓存中对所述第一数据进行写操作,完成后开始提交事务内存;
如果所述第一数据在被所述第一处理器写操作前的最后一次更改是由第二处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为独占且更改,在第一处理器进行写操作后将所述第一处理器的私有缓存中的所述第一数据写到最后一级缓存LLC中,无效化所述第一处理器的私有缓存中的所述第一数据;如果所述第一处理器的私有缓存中的所述第一数据的状态为独占且更改,则将所述第一数据在LLC目录中的状态设置为独占且更改;
事务内存完成提交。
2.如权利要求1所述的方法,其特征在于,还包括:
如果所述第一数据在被第一处理器写操作前的最后一次更改是由第一处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为更改。
3.如权利要求1所述的方法,其特征在于,所述第一处理器开始事务处理,将第一数据读取到私有缓存中的步骤包括:
S11、第一处理器开始事务处理,如果私有缓存中没有需要的所述第一数据,则根据地址映射访问LLC的目录;
S12、根据所述第一数据的缓存行在LLC的目录中的第一状态指示串,获知所述第一数据的状态;如果所述第一数据的状态为更改,则进行步骤S13;
S13、根据所述第一状态指示串中的数据标识位确定具有最新的所述第一数据的处理器;如果为第二处理器,则从所述第二处理器的私有缓存将最新的所述第一数据取回到LLC,将所述第一数据在LLC的目录中的状态修改为共享;如果为第一处理器,则直接进行第一处理器在私有缓存中对所述第一数据进行写操作的步骤;
S14、将所述第一数据从所述LLC中读到所述第一处理器的私有缓存中,将所述第一状态指示串中对应于所述第一处理器的数据标识位置位。
4.如权利要求3所述的方法,其特征在于,所述步骤S12中还包括:
如果所述第一数据的状态为独占且更改,则进行步骤S13’;
所述方法还包括:
S13’、将所述第一数据在LLC的目录中的状态修改为共享且更改;进行步骤S14。
5.如权利要求4所述的方法,其特征在于,在开始提交事务内存的步骤后、事务内存完成提交的步骤前还包括:
查询所述第一数据的缓存行在所述LLC的目录中的第一状态指示串的各数据标识位,判断除了所述第一处理器对应的数据标识位以外,是否存在置位的数据标识位;如果存在,则无效化置位的数据标识位对应的处理器中的所述第一数据,并将该数据标识位复位。
6.一种处理器,应用在多核处理设备中,包括:
私有缓存、提交单元;
读取单元,用于当本处理器开始事务处理时,将第一数据读取到所述私有缓存中;
写操作单元,用于在所述私有缓存中对所述第一数据进行写操作,完成后指示所述提交单元开始提交事务内存;
其特征在于,还包括:
无效化单元,用于当所述提交单元开始提交事务内存后、完成事务内存提交前,如果所述第一数据在被本处理器写操作前的最后一次更改是由其它处理器进行的,则将所述私有缓存中的所述第一数据的状态修改为独占且更改,在进行写操作后将所述私有缓存中的所述第一数据写到最后一级缓存LLC中,无效化本处理器的私有缓存中的所述第一数据;如果所述本处理器的私有缓存中的所述第一数据的状态为独占且更改,则将所述第一数据在LLC目录中的状态设置为独占且更改。
CN201811046055.0A 2014-03-26 2014-03-26 一种数据处理方法及处理器 Active CN109240945B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811046055.0A CN109240945B (zh) 2014-03-26 2014-03-26 一种数据处理方法及处理器

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201811046055.0A CN109240945B (zh) 2014-03-26 2014-03-26 一种数据处理方法及处理器
CN201410117556.9A CN104951240B (zh) 2014-03-26 2014-03-26 一种数据处理方法及处理器

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201410117556.9A Division CN104951240B (zh) 2014-03-26 2014-03-26 一种数据处理方法及处理器

Publications (2)

Publication Number Publication Date
CN109240945A CN109240945A (zh) 2019-01-18
CN109240945B true CN109240945B (zh) 2023-06-06

Family

ID=54165922

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201410117556.9A Active CN104951240B (zh) 2014-03-26 2014-03-26 一种数据处理方法及处理器
CN201811046055.0A Active CN109240945B (zh) 2014-03-26 2014-03-26 一种数据处理方法及处理器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201410117556.9A Active CN104951240B (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) CN104951240B (zh)
HK (1) HK1211102A1 (zh)
TW (1) TWI638311B (zh)
WO (1) WO2015148679A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
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
CN104951240B (zh) 2014-03-26 2018-08-24 阿里巴巴集团控股有限公司 一种数据处理方法及处理器
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
CN101010670A (zh) * 2004-09-09 2007-08-01 英特尔公司 解决高速缓存冲突

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH061463B2 (ja) 1990-01-16 1994-01-05 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムおよびそのプライベート・キャッシュ制御方法
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
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
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
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
CN104951240B (zh) 2014-03-26 2018-08-24 阿里巴巴集团控股有限公司 一种数据处理方法及处理器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
CN101010670A (zh) * 2004-09-09 2007-08-01 英特尔公司 解决高速缓存冲突

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ELF:基于无用块消除和低重用块过滤的共享Cache管理策略;隋秀峰等;《计算机学报》;20110115(第01期);全文 *
多核处理器并行编程模型的研究与设计;曹折波等;《计算机工程与设计》;20100716(第13期);全文 *

Also Published As

Publication number Publication date
CN109240945A (zh) 2019-01-18
KR20160138025A (ko) 2016-12-02
EP3123351A1 (en) 2017-02-01
KR102398912B1 (ko) 2022-05-17
JP6470300B2 (ja) 2019-02-13
EP3123351A4 (en) 2017-10-25
CN104951240A (zh) 2015-09-30
TWI638311B (zh) 2018-10-11
TW201537454A (zh) 2015-10-01
EP3441886B1 (en) 2020-11-18
WO2015148679A1 (en) 2015-10-01
JP2017509985A (ja) 2017-04-06
CN104951240B (zh) 2018-08-24
JP6685437B2 (ja) 2020-04-22
JP2019083045A (ja) 2019-05-30
HK1211102A1 (zh) 2016-05-13
US9715450B2 (en) 2017-07-25
US9858186B2 (en) 2018-01-02
US20150278094A1 (en) 2015-10-01
EP3123351B1 (en) 2018-12-12
EP3441886A1 (en) 2019-02-13
US20170277635A1 (en) 2017-09-28

Similar Documents

Publication Publication Date Title
CN109240945B (zh) 一种数据处理方法及处理器
KR101814577B1 (ko) 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치
US8688951B2 (en) Operating system virtual memory management for hardware transactional memory
US7925839B1 (en) System and method for performing memory operations in a computing system
US6023747A (en) Method and system for handling conflicts between cache operation requests in a data processing system
JP5536658B2 (ja) バッファメモリ装置、メモリシステム及びデータ転送方法
US20110167222A1 (en) Unbounded transactional memory system and method
JP2010507160A (ja) データ処理装置の共有メモリへの書込みアクセス要求の処理
US9645931B2 (en) Filtering snoop traffic in a multiprocessor computing system
US10078588B2 (en) Using leases for entries in a translation lookaside buffer
GB2507759A (en) Hierarchical cache with a first level data cache which can access a second level instruction cache or a third level unified cache
US9003130B2 (en) Multi-core processing device with invalidation cache tags and methods
US7356650B1 (en) Cache apparatus and method for accesses lacking locality
US10740233B2 (en) Managing cache operations using epochs
US11321233B2 (en) Multi-chip system and cache processing method
US10528471B2 (en) System and method for self-invalidation, self-downgrade cachecoherence protocols
US7383390B1 (en) Resource-limited directories with fine-grained eviction
US20230195628A1 (en) Relaxed invalidation for cache coherence

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