CN105740164A - 支持缓存一致性的多核处理器、读写方法、装置及设备 - Google Patents
支持缓存一致性的多核处理器、读写方法、装置及设备 Download PDFInfo
- Publication number
- CN105740164A CN105740164A CN201410756732.3A CN201410756732A CN105740164A CN 105740164 A CN105740164 A CN 105740164A CN 201410756732 A CN201410756732 A CN 201410756732A CN 105740164 A CN105740164 A CN 105740164A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- processor
- buffer memory
- processor cores
- 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
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/0815—Cache consistency protocols
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- 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
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- 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
Abstract
本申请公开了一种支持缓存一致性的多核处理器,一种基于所述多核处理器的数据读取方法及装置、一种基于所述多核处理器的数据写入方法及装置,一种基于所述多核处理器的内存分配方法及装置,以及一种设备。其中支持缓存一致性的多核处理器包括:复数个处理器内核,与复数个处理器内核分别对应的本地缓存;不同处理器内核的本地缓存分别用于缓存不同地址范围的内存空间中的数据,每个处理器内核通过互连总线访问其他处理器内核本地缓存中的数据。本申请的技术方案,提供了一种从传统多核处理器架构中移除缓存目录和共享缓存的新思路,不仅实现了缓存的一致性,而且将私有缓存共享化,在解决私有缓存与共享缓存之间矛盾的同时,提升处理器的整体性能。
Description
技术领域
本申请涉及多核处理器领域,具体涉及一种支持缓存一致性的多核处理器。本申请同时提供一种基于所述多核处理器的数据读取方法及装置、一种基于所述多核处理器的数据写入方法及装置,一种基于所述多核处理器的内存分配方法及装置,一种设备,以及另一种支持缓存一致性的多核处理器。
背景技术
在计算机技术发展过程中,主存储器(即:通常所说的物理内存或者内存)的存取速度一直比中央处理器的操作速度慢得多,使中央处理器(CPU)的高速处理能力不能得到充分发挥。为了缓和CPU和主存储器之间速度不匹配的矛盾,在两者之间引入了高速缓冲存储器(cache,通常简称为缓存)。
高速缓冲存储器的容量一般比主存储器小很多,但它的存取速度能与CPU相匹配。根据程序局部性原理,CPU正在访问的指令和数据,在以后的时间段中可能会被多次访问到,而该指令和数据附近的内存区域,也可能会被多次访问。因此,计算机硬件通常自动地将与CPU访问相关的内存区域中的数据调入高速缓冲存储器,从而CPU在访问内存中的数据时,可以先访问Cache,如果未能在Cache中命中,再访问内存。采用这种方式,能够尽量减少CPU对内存的直接访问,从而提高计算机系统整体的处理速度。
最近几年,计算机已经朝着多核计算机体系架构方向发展。为了加快CPU核心的处理速度,通常将每个CPU核心需要访问的数据存储在其私有缓存中(例如:L1Cache和L2Cache)。由于任何一份数据都可能被多个CPU私有缓存所持有,为了减少缓存冗余,于是引入了共享缓存,即:通常将最后一级缓存(lastlevelcache,简称LLC)在各个处理器内核间共享,请参见附图1所示的多核处理器架构的示意图。共享缓存使得多个处理器内核可以共享某些数据,降低通讯延迟,同时减少数据的冗余备份,提高缓存空间利用率。
由于私有缓存的存在导致同一个数据可能存在多个副本,为了保证数据一致性,现有技术通常使用基于目录的一致性协议,即:用缓存目录跟踪数据在不同CPU内核的私有缓存里的轨迹,记录每个数据在哪些私有缓存中存在副本,并根据目录内容执行读写控制,例如:当某个CPU内核需要针对私有缓存中的数据执行写操作时,首先通过缓存目录查询哪些私有缓存存储了其副本,并通知这些私有缓存将相应数据置为无效,然后再执行写操作,从而保证数据的一致性。
采用上述架构以及基于缓存目录的数据一致性协议,存在以下问题:
1)由于缓存目录需要跟踪数据在不同CPU内核的私有缓存里的轨迹,随着CPU内核数目的增多,缓存目录也必然不断变大,不仅占用缓存容量,而且严重影响多核扩展能力。
2)私有缓存和共享缓存之间存在不可避免的矛盾,私有缓存由于包含多份相同数据导致缓存利用率降低,而共享缓存虽然可以减少冗余,提高缓存的利用率,但是随着CPU核数的增加,共享LLC需要与每个CPU内核相连,LLC设计中产生的硬件冗余度也同时变大,延迟变长,导致访问时间过长。
3)当前架构导致缓存一致性协议需要对所有CPU内核的私有缓存数据进行检查,最终决定其工作行为,制约读取操作性能,比如每次读取数据都要访问LLC以及缓存目录,保证当前访问数据与其他CPU内核私有缓存数据完整一致,导致数据访问性能降低。
发明内容
本申请提供一种支持缓存一致性的多核处理器,以解决现有多核处理器的缓存目录占用缓存空间、影响数据访问性能、以及访问共享缓存时延长的问题。本申请另外提供一种基于所述多核处理器的数据读取方法和装置,一种基于所述多核处理器的数据写入方法和装置,一种基于所述多核处理器的内存分配方法及装置,以及一种设备。
本申请提供一种支持缓存一致性的多核处理器,包括:
复数个处理器内核,与所述复数个处理器内核分别对应的本地缓存;
不同处理器内核的本地缓存分别用于缓存不同地址范围的内存空间中的数据,每个处理器内核通过互连总线访问其他处理器内核本地缓存中的数据。
可选的,所述每一处理器内核均使用其本地缓存所对应的相应地址范围的内存空间中的内存。
可选的,所述多核处理器还包括:
内存控制器,与所述复数个处理器内核相连,用于供所述处理器内核访问内存中的数据。
可选的,所述每个处理器内核的本地缓存包括:一级缓存和二级缓存。
此外,本申请还提供一种基于上述任意一项所述多核处理器的数据读取方法,包括:
待执行读取数据操作的处理器内核,根据所述数据的内存地址,判断是否为本处理器内核负责缓存的数据;
若是,从本地缓存中读取所述数据;
若否,向负责缓存所述数据的远端处理器内核发送读取数据请求,并接收所述远端处理器内核返回的所述数据。
可选的,所述根据所述数据的内存地址,判断是否为本处理器内核负责缓存的数据,包括:
根据所述数据的内存地址,按照预先设定的对内存空间进行缓存的地址划分规则,计算负责缓存所述数据的处理器内核编号;
判断所述处理器内核编号是否与本内核一致,若一致,则判定所述数据是本处理器内核负责缓存的数据。
可选的,所述预先设定的内核对内存空间进行缓存的地址划分规则是指,每个处理器内核负责缓存内存中以下地址范围中的数据:
MEM/N×n至MEM/N×(n+1)-1;
其中,MEM为内存容量,N为处理器内核的数目,n为处理器内核的编号,其取值范围是0至N-1。
可选的,采用如下公式计算负责缓存所述数据的处理器内核编号:
处理器内核编号=(A×N/MEM)modN;
其中,A为所述数据的内存地址。
可选的,所述从本地缓存中读取数据包括:
根据所述数据的内存地址,判断所述数据是否已在本地缓存中缓存;
若是,从本地缓存读取所述数据;
若否,根据所述数据的内存地址访问内存,读取所述数据,并将所述数据所在内存数据块写入本地缓存。
可选的,所述向负责缓存所述数据的远端处理器内核发送数据读取请求,并接收所述远端处理器内核返回的所述数据,包括:
向负责缓存所述数据的远端处理器内核发送数据读取请求,所述请求包含所述数据的内存地址和请求方的处理器内核编号;
所述远端处理器内核从其本地缓存中读取所述数据;
所述远端处理器内核将读取的所述数据返回给所述请求方。
可选的,所述远端处理器内核从本地缓存中读取所述数据,包括:
所述远端处理器内核根据所述数据的内存地址,判断所述数据是否已在本地缓存中缓存;
若是,从所述本地缓存读取所述数据;
若否,根据所述数据的内存地址访问内存,读取所述数据,并将所述数据所在内存数据块写入本地缓存。
相应的,本申请还提供一种基于上述任意一项所述多核处理器的数据读取装置,包括:
读操作判断单元,用于待执行读取数据操作的处理器内核,根据所述数据的内存地址,判断是否为本处理器内核负责缓存的数据;
本地缓存读取单元,用于当所述读操作判断单元的输出为“是”时,从本地缓存中读取所述数据;
远端缓存读取单元,用于当所述读操作判断单元的输出为“否”时,向负责缓存所述数据的远端处理器内核发送读取数据请求,并接收所述远端处理器内核返回的所述数据。
可选的,所述读操作判断单元包括:
读编号计算子单元,用于根据所述数据的内存地址,按照预先设定的对内存空间进行缓存的地址划分规则,计算负责缓存所述数据的处理器内核编号;
编号判断子单元,用于判断所述处理器内核编号是否与本内核一致,若一致,则判定所述数据是本处理器内核负责缓存的数据。
可选的,所述读编号计算子单元采用的地址划分规则是指,每个处理器内核负责缓存内存中以下地址范围中的数据:
MEM/N×n至MEM/N×(n+1)-1;
其中,MEM为内存容量,N为处理器内核的数目,n为处理器内核的编号,其取值范围是0至N-1。
可选的,所述编号计算子单元具体用于,采用如下公式计算缓存所述数据的处理器内核编号:
处理器内核编号=(A×N/MEM)modN;
其中,A为所述数据的内存地址。
可选的,所述本地缓存读取单元包括:
本地缓存判断子单元,用于根据所述数据的内存地址,判断所述数据是否已在本地缓存中缓存;
缓存读取执行子单元,用于当所述本地缓存判断子单元的输出为“是”时,从本地缓存读取所述数据;
内存读取子单元,用于当所述本地缓存判断子单元的输出为“否”时,根据所述数据的内存地址访问内存,读取所述数据,并将所述数据所在内存数据块写入本地缓存。
可选的,所述远端缓存读取单元包括:
请求发送子单元,用于向负责缓存所述数据的远端处理器内核发送数据读取请求,所述请求包含所述数据的内存地址和请求方的处理器内核编号;
远端读取子单元,用于所述远端处理器内核从其本地缓存中读取所述数据;
数据返回子单元,用于所述远端处理器内核将读取的所述数据返回给所述请求方。
可选的,所述远端读取子单元包括:
远端缓存判断子单元,用于所述远端处理器内核根据所述数据的内存地址,判断所述数据是否已在本地缓存中缓存;
远端缓存读取执行子单元,用于当所述远端缓存判断子单元的输出为“是”时,远端处理器内核从其本地缓存读取所述数据;
远端内存读取子单元,用于当所述远端缓存判断子单元的输出为“否”时,远端处理器内核根据所述数据的内存地址访问内存,读取所述数据,并将所述数据所在内存数据块写入本地缓存。
此外,本申请还提供一种基于上述任意一项所述多核处理器的数据写入方法,包括:
待执行写数据操作的处理器内核,根据写操作的内存地址,判断所述数据是否为本处理器内核负责缓存的数据;
若是,向本地缓存中写入所述数据;
若否,向负责缓存所述数据的远端处理器内核发送写数据请求,由所述远端处理器内核将所述数据写入其本地缓存中;所述请求包含执行写操作的内存地址以及数据。
可选的,所述根据写操作的内存地址,判断所述数据是否为本处理器内核负责缓存的数据,包括:
根据执行写操作的内存地址,按照预先设定的对内存空间进行缓存的地址划分规则,计算负责缓存该数据的处理器内核编号;
判断所述处理器内核编号是否与本内核一致,若一致,则判定所述数据是本处理器内核负责缓存的数据。
可选的,所述方法包括:
所述待执行写数据操作的处理器内核或者远端处理器内核,在向对应的本地缓存写入所述数据时,为所述数据所在的缓存数据块设置更新标记;
相应的,当设置更新标记的缓存数据块从缓存换出时,将所述缓存数据块中的数据写入相应的内存地址中。
相应的,本申请还提供一种基于上述任意一项所述多核处理器的数据写入装置,包括:
写操作判断单元,用于待执行写数据操作的处理器内核,根据写操作的内存地址,判断所述数据是否为本处理器内核负责缓存的数据;
本地缓存写入单元,用于当所述写操作判断单元的输出为“是”时,向本地缓存中写入所述数据;
远端缓存写入单元,用于当所述写操作判断单元的输出为“否”时,向负责缓存所述数据的远端处理器内核发送写数据请求,由所述远端处理器内核将所述数据写入其本地缓存中;所述请求包含执行写操作的内存地址以及数据。
可选的,所述写操作判断单元包括:
写编号计算子单元,用于根据执行写操作的内存地址,按照预先设定的对内存空间进行缓存的地址划分规则,计算负责缓存该数据的处理器内核编号;
编号判断子单元,用于判断所述处理器内核编号是否与本内核一致,若一致,则判定所述数据是本处理器内核负责缓存的数据。
可选的,所述本地缓存写入单元和所述远端缓存写入单元不仅分别包含实现其功能的实体子单元,还包括更新标记设置子单元,用于在向对应的本地缓存写入所述数据时,为所述数据所在的缓存数据块设置更新标记;
相应的,所述装置还包括:
内存同步单元,用于当设置更新标记的缓存数据块从缓存换出时,将所述缓存数据块中的数据写入相应的内存地址中。
此外,本申请还提供一种基于上述任意一项所述多核处理器的内存分配方法,包括:
接收来自处理器内核的内存分配请求;
按照预先设定的对内存空间进行缓存的地址划分规则,确定所述处理器内核负责缓存的内存空间的地址范围;
根据所述请求中包含的待分配内存单元数量,从所述地址范围对应的内存空间中为所述处理器内核分配相应数量的内存单元。
相应的,本申请还提供一种基于上述任意一项所述多核处理器的内存分配装置,包括:
分配请求接收单元,用于接收来自处理器内核的内存分配请求;
地址范围确定单元,用于按照预先设定的对内存空间进行缓存的地址划分规则,确定所述处理器内核负责缓存的内存空间的地址范围;
内存分配执行单元,用于根据所述请求中包含的待分配内存单元数量,从所述地址范围对应的内存空间中为所述处理器内核分配相应数量的内存单元。
此外,本申请还提供一种设备,包括:根据上述任意一项所述的多核处理器;内存控制器,与所述多核处理器中的复数个处理器内核相连,用于供所述处理器内核访问内存中的数据;内存,与所述内存控制器相连,用于存储供所述处理器内核访问的数据。
可选的,所述每一处理器内核均使用其本地缓存所对应的相应地址范围的内存空间中的内存。
此外,本申请还提供另一种支持缓存一致性的多核处理器,包括:
复数个处理器内核,所述复数个处理器内核被划分为至少两个分组;
与每个处理器内核分组分别对应的本地缓存;
不同处理器内核分组的本地缓存分别用于缓存不同地址范围的内存空间中的数据,每个处理器内核分组通过互连总线访问其他处理器内核分组本地缓存中的数据。
与现有技术相比,本申请具有以下优点:
本申请的支持缓存一致性的多核处理器以及数据读写方法相配合,提供了一种从传统多核处理器架构中移除缓存目录和共享缓存的新思路。本技术方案通过采用预先设定的方式将内存空间与CPU内核进行映射,使得不同处理器内核的本地缓存分别负责缓存不同地址范围中的内存数据,缓存中不会存在同一数据的多个副本,因此在移除缓存目录的情况下,依然实现了缓存的一致性,在节省对缓存空间占用的同时,提高数据访问的性能;此外,由于每个处理器内核可以通过互连总线访问其他处理器内核本地缓存中的数据,相当于将私有缓存共享化,不仅解决了私有缓存与共享缓存之间的矛盾,而且可以充分利用私有缓存数据延迟较小的特性,提升处理器的整体性能;进一步地,由于移除了共享缓存LLC,简化了互联结构,因此在节省功耗和芯片面积的同时,也加快了访问缓存的速度。
附图说明
图1是现有技术的多核处理器系统架构的示意图;
图2是本申请的一种支持缓存一致性的多核处理器的架构示意图;
图3是本申请的一种基于新型多核处理器的数据读取方法的实施例的流程图;
图4是本实施例提供的判断是否为本地负责缓存的内存数据的处理流程图;
图5是本申请的一种基于新型多核处理器的数据读取装置的实施例示意图;
图6是本申请的一种基于新型多核处理器的数据写入方法的实施例流程图;
图7是本申请的一种基于新型多核处理器的数据写入装置的实施例示意图;
图8是本申请的一种基于新型多核处理器的内存分配方法的实施例流程图;
图9是本申请的一种基于新型多核处理器的内存分配装置的实施例示意图;
图10是本申请的一种设备的示意图;
图11是本申请的另一种支持缓存一致性的多核处理器的架构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请中,分别提供了一种支持缓存一致性的多核处理器、一种基于所述多核处理器的数据读取方法及装置、一种基于所述多核处理器的数据写入方法及装置、一种基于所述多核处理器的内存分配方法及装置,以及一种设备。下面对本申请的实施例逐一进行详细说明。
请参考图2,其为本申请的一种支持缓存一致性的多核处理器的架构示意图,所述支持缓存一致性的多核处理器包括:复数个处理器内核201-1至201-n,每个处理器内核分别包含两级本地缓存(L1缓存和L2缓存),以及用于供每个处理器内核访问内存的内存控制器202;其中,不同处理器内核的本地缓存分别用于缓存不同地址范围的内存空间中的数据,每个处理器内核通过互连总线访问其他处理器内核本地缓存中的数据。
传统的多核处理器之所以要占用一定的缓存空间维护缓存目录,并且在读写数据时频繁访问缓存目录,就是为了维护缓存中的数据一致性,而导致缓存数据不一致的本质原因是:不同处理器内核的私有缓存(即:本申请所述的本地缓存)的存在,使得数据可能存在多个副本。为了解决这一问题,本申请的技术方案另辟蹊径,提出了不采用缓存目录的新方案,即:不同处理器内核的本地缓存分别负责缓存不同地址范围的内存空间中的数据,这样内存中的数据只可能在一个处理器内核的本地缓存中缓存,从而在不采用缓存目录的情况下,依然可以保证缓存数据的一致性(为了便于描述,下文中将处理器内核与不同地址范围内存空间之间的对应关系,简称为单一内存映射机制)。
对内存地址范围的划分,可以采用不同的方式,为了提高数据访问的效率,避免操作系统在内存的分配与管理过程中出现过多的内存碎片,通常将内存地址范围按照处理器内核的数目划分成多个连续的区间,并预先设定每个处理器内核负责缓存其中一个区间中的内存数据,不同的处理器内核负责缓存不同区间中的内存数据。
例如,多核处理器中包含N=256个内核,内存的容量MEM=1TB,其内存空间地址范围的十六进制表示形式为:0x0000000000至0xFFFFFFFFFF,将该地址范围按照处理器内核的数目进行划分,即:划分为256个连续的内存区间,每个内存区间的大小为1TB/256=4GB,每个处理器内核负责缓存的内存空间的地址范围是:MEM/N×n至MEM/N×(n+1)-1,其中,n为处理器内核的编号,得到如下所示的内核与其负责缓存的内存空间之间的映射关系:
采用上述划分方式后,0号处理器内核的本地缓存,即:L1Cache和L2Cache负责缓存内存地址在0x0000000000—0x00FFFFFFFF范围内的数据,其他处理器内核的本地缓存也是同样的道理,也就是说每个处理器内核负责缓存的内存空间彼此是不同的,因此在缓存中不会同时存在同一数据的多个副本,从而在不采用缓存目录的情况下,同样保证了缓存数据的一致性,一方面消除了缓存目录对缓存空间的占用,另一方面,因为数据属于哪个缓存是确定的,所以处理器可以直接进行数据访问,不需要再查询缓存目录,从而可以提升访问数据的性能。
在采用上述单一内存映射机制的基础上,每个处理器内核通过互连总线访问其他处理器内核本地缓存中的数据,也就是说,每个处理器内核不仅可以访问本地缓存中的数据,也可以通过处理器内核彼此之间的互连总线访问其他处理器内核本地缓存中的数据,从而实现了处理器内核之间本地缓存的共享化。
例如,0号内核需要读取的内存数据,属于1号内核负责缓存的内存空间中的数据,因此0号内核通过其缓存控制器向1号内核的缓存控制器发送数据读取请求,1号内核的缓存控制器从本地缓存中获取数据并返回给0号内核(在具体实施中,如果1号内核在其本地L1Cache和L2Cache中没有命中,则从内存中读取该数据)。
采用上述方式,每个处理器内核的本地缓存可以在全部处理器内核之间共享,实现了本地缓存的共享化,不仅解决了现有技术中私有缓存与共享缓存之间的矛盾,同时还可以利用私有缓存数据延迟小的特性提升整体性能。
而且,由于实现了本地缓存的共享化,就可以从多核处理器的体系结构中移除共享缓存(LLC),从而简化互联结构。例如,在8CPU核的系统中,内核与共享缓存之间的互联,大致占用1个CPU核的功耗,和一半CPU(4个CPU核)的芯片面积,同时由于线的延迟(wirelatency),大致占用一半访问LLC的延迟时间,而本申请的技术方案通过移除LLC,大大简化了互联结构,因此在节省功耗和芯片面积的同时,也加快了访问缓存的速度。
基于上述硬件架构,可以实现缓存的一致性以及私有缓存的共享化,考虑到内核访问本地缓存要比访问其他处理器内核的本地缓存快,因此本申请提供的多核处理器,还在上述硬件架构的基础上,从处理器内核使用内存的角度提出了一种优选实施方式:每一个处理器内核均使用其本地缓存所对应的相应地址范围的内存空间中的内存。
此处所述的处理器内核使用内存是指,处理器内核请求操作系统为其分配内存、对分配的内存进行读写、管理,以及通过释放内存将其交还操作系统的过程。
具体说,某个处理器内核向操作系统请求分配内存时,操作系统采用类似NUMA(Non-uniformMemoryArchitecture—非一致性内存架构)架构下的内存分配方式为其分配内存。在NUMA架构下,几个处理器通过内存总线与一块内存相连构成一个节点(node),整个系统被分为若干个这样的节点,处于某个节点中的内存被称为本地内存(localmemory),处于其他节点中的内存对于该节点而言被称为外部内存(foreignmemory),操作系统在为运行于某个处理器上的应用程序分配内存时,通常从该处理器的本地内存中进行分配,而不是外部内存,从而提高数据访问性能。
在本技术方案中,运行于所述多核处理器上的操作系统可以采用类似的内存分配机制,将每个处理器内核和其负责缓存的内存空间作为一个虚拟节点,当某个内核向操作系统申请内存时,操作系统从该虚拟节点的本地内存(即:该内核负责缓存的内存)中为其分配内存,由于本技术方案的架构采用了单一内存映射机制,这部分内存中的数据通常会被加载到该内核的本地缓存中,因此该内核可以直接访问本地缓存就可以完成所需的数据读写操作,避免了访问其他内核的本地缓存所增加的时延,从而达到进一步提高性能的目的。
需要说明的是,在上述实施例给出的架构中每个处理器内核包含两级本地缓存,而且集成了内存控制器,在其他实施方式中每个处理器内核可以仅包含一级本地缓存、或者多级本地缓存,也可以不在多核处理器内部集成内存控制器;此外,缓存与内存空间的映射可以采用不同于上述例子的其他方式,操作系统也可以采用其他内存分配机制。上述这些都属于具体实施方式的变更,只要能够满足不同处理器内核的本地缓存分别负责缓存不同地址范围的内存空间中的数据,并且每个处理器内核通过互连总线访问其他处理器内核本地缓存中的数据,就都可以实现本申请的技术方案,并取得相应的有益效果,即:在移除共享缓存和缓存目录的情况下,实现缓存数据的一致性以及各处理器内核本地缓存的共享化。
在上述实施例中,提供了一种支持缓存一致性的多核处理器,为了便于下文的描述,将上述实施例提供的多核处理器统称为新型多核处理器。此外,本申请还提供一种基于新型多核处理器的数据读取方法。本实施例与第一实施例相同的部分不再赘述,下面重点描述不同之处。
请参看图3,其为本申请的一种基于新型多核处理器的数据读取方法的实施例的流程图。所述方法包括如下步骤:
步骤301:待执行读取数据操作的处理器内核,根据所述数据的内存地址,判断是否为本处理器内核负责缓存的数据;若是,执行步骤302,否则执行步骤303。
在具体实施中,处理器内核读取数据的过程是由缓存控制器完成的,现有技术中,缓存控制器先在本地的一级缓存中查找所述数据,如果未命中,则继续在本地的下一级缓存中查找,如果所有本地缓存均未命中,则缓存控制器向总线发出load(加载)命令,通过内存控制器从内存中读取所述数据,并返回给所述处理器内核。
在本技术方案中,由于采用了单一内存映射机制,处理器内核发出读数据请求后,缓存控制器可以先判断该数据是否是本处理器内核负责缓存的数据,然后再进行相应的读取操作。在具体实施中,所述判断过程可以包括步骤301-1和步骤301-2,下面结合附图4做进一步说明。
步骤301-1:根据所述数据的内存地址,按照预先设定的对内存空间进行缓存的地址划分规则,计算负责缓存所述数据的处理器内核编号。
所述对内存空间进行缓存的地址划分规则,可以根据需要进行相应的设定,在本实施例中,采用了一种简便易行的划分规则:将内存地址范围按照处理器内核的数目划分成多个大小相同的连续区间,并分别与每个处理器内核建立映射关系。
具体说,每个处理器内核负责缓存内存中以下地址范围中的数据:
MEM/N×n至MEM/N×(n+1)-1;
其中,MEM为内存容量,N为处理器内核的数目,n为处理器内核的编号,其取值范围是0至N-1。对映射关系的举例说明,请参见第一实施例中的相关部分,此处不再赘述。
基于上述地址划分规则,可以采用如下所示公式计算负责缓存所述数据的处理器内核编号,其中,A为待读取数据的内存地址:
处理器内核编号=(A×N/MEM)modN;
例如,在第一实施例所列举的例子中,多核处理器中包含N=256个内核,内存容量MEM=1TB,其内存空间地址范围的十六进制表示形式为:0x0000000000至0xFFFFFFFFFF,将该地址范围按照上述地址划分规则,被划分为256个连续的内存区间,每个内存区间的大小为1TB/256=4GB,待读取数据的内存地址的十六进制表示形式为:0x080000A000,采用上述公式进行计算得到处理器内核编号为8,即:待读取数据是由8号内核负责缓存的。
步骤301-2:判断所述处理器内核编号是否与本内核一致,若一致,则判定所述数据是本处理器内核负责缓存的数据。
如果步骤301-1计算得到的处理器内核编号与发出数据读取请求的本处理器内核的编号一致,则说明待访问数据是本处理器内核负责缓存的数据,则执行步骤302;否则说明该数据由其他处理器内核缓存,执行步骤303。
步骤302:从本地缓存中读取所述数据。
执行到本步骤,说明待读取数据由发出数据读取请求的处理器内核负责缓存,根据程序的局部性原理,以及处理器硬件采用的预测机制,所述待读取数据通常会在请求方的本地缓存中命中,如果未命中,则使用内存地址,从内存获取所述数据,并将所述数据所在的内存数据块加载到本地缓存中,以提高后续的访问性能。
在具体实施中,请求方的缓存控制器,可以采用地址映射的方式实现内存地址到Cache地址的转换,并判断所述数据是否在本地缓存中命中。
例如:内存与缓存之间进行数据传输的最小单元是缓存数据块(即:通常所说的Cacheline),内存地址通常可以划分为tag、setindex和offset三个部分,缓存的逻辑结构则包含多个组、每个组包含多个缓存数据块,每个缓存数据块都包含tag标记和多个存储单元。
根据内存地址中的setindex可以确定所述数据属于缓存中的哪个组,并将该组中每个缓存数据块的tag标记和内存地址中的tag进行比较,若找到两者一致的缓存数据块,则说明所需访问的内存数据所在的数据块已经被加载到缓存中,缓存命中,根据内存地址中的offset偏移量访问命中的缓存数据块获取所述数据。
如果未在本地缓存中命中,则向总线发起load请求,由内存控制器根据所述内存地址从内存中获取所述数据,并将该数据返回给缓存控制器,由缓存控制器再将其提供给发起请求的处理器内核。
由于当前读取的所述数据是由发起请求的处理器内核负责缓存的,因此如果在上述过程中所述数据是从内存中获取的,那么应该将该数据加载到所述处理器内核的缓存中。在具体实施中,由于内存和缓存之间进行数据传输的最小单元是缓存数据块(Cacheline),因此可以根据一个缓存数据块所包含数据的大小,将内存中相应大小的、包含被读取数据的内存数据块一并加载到所述处理器内核的缓存中。
步骤303:向负责缓存所述数据的远端处理器内核发送读取数据请求,并接收所述远端处理器内核返回的所述数据。
执行到本步骤,说明待读取的数据是其他处理器内核负责缓存的(为了与请求方相区分,在本申请中将负责缓存所述数据的其他处理器内核称为远端处理器内核),因此请求方并不直接进行本地缓存的查找,而是向在步骤301中计算得到的远端处理器内核发出读取数据的请求,并接收所述远端处理器内核返回的数据。
在具体实施时,请求方的缓存控制器向所述远端处理器内核的缓存控制器发送读取数据的请求时,也向其传输所述数据的内存地址,并可以一并提供请求方的处理器内核编号;远端处理器内核的缓存控制器采用与步骤302中类似的方式在其本地缓存中进行查找,如果命中,直接将获取的数据返回给请求方的缓存控制器,否则根据内存地址从内存中获取所述数据并返回给请求方。
由于被请求的数据是由远端处理器内核负责缓存的,因此在上述处理过程中,如果所述数据是由远端处理器内核从内存获取的,那么远端处理器内核的缓存控制器从内存获取所述数据后,将所述数据加载到其本地缓存中;而请求方的处理器内核在获取所述数据后,不在其本地缓存中存储,下次需要访问所述数据时,依然从远端处理器内核获取。采用这种方式,可以保证所述数据仅在所述远端处理器的本地缓存中存在,而不会在多核处理器的缓存中同时存在多个副本,从而从读操作的角度保证了缓存数据的一致性。
在上述的实施例中,提供了一种基于新型多核处理器的数据读取方法,与之相对应的,本申请还提供一种基于新型多核处理器的数据读取装置。请参看图5,其为本申请的一种基于新型多核处理器的数据读取装置实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种基于新型多核处理器的数据读取装置,包括:读操作判断单元501,用于待执行读取数据操作的处理器内核,根据所述数据的内存地址,判断是否为本处理器内核负责缓存的数据;本地缓存读取单元502,用于当所述读操作判断单元的输出为“是”时,从本地缓存中读取所述数据;远端缓存读取单元503,用于当所述读操作判断单元的输出为“否”时,向负责缓存所述数据的远端处理器内核发送读取数据请求,并接收所述远端处理器内核返回的所述数据。
可选的,所述读操作判断单元包括:
读编号计算子单元,用于根据所述数据的内存地址,按照预先设定的对内存空间进行缓存的地址划分规则,计算负责缓存所述数据的处理器内核编号;
编号判断子单元,用于判断所述处理器内核编号是否与本内核一致,若一致,则判定所述数据是本处理器内核负责缓存的数据。
可选的,所述读编号计算子单元采用的地址划分规则是指,每个处理器内核负责缓存内存中以下地址范围中的数据:
MEM/N×n至MEM/N×(n+1)-1;
其中,MEM为内存容量,N为处理器内核的数目,n为处理器内核的编号,其取值范围是0至N-1。
可选的,所述编号计算子单元具体用于,采用如下公式计算缓存所述数据的处理器内核编号:
处理器内核编号=(A×N/MEM)modN;
其中,A为所述数据的内存地址。
可选的,所述本地缓存读取单元包括:
本地缓存判断子单元,用于根据所述数据的内存地址,判断所述数据是否已在本地缓存中缓存;
缓存读取执行子单元,用于当所述本地缓存判断子单元的输出为“是”时,从本地缓存读取所述数据;
内存读取子单元,用于当所述本地缓存判断子单元的输出为“否”时,根据所述数据的内存地址访问内存,读取所述数据,并将所述数据所在内存数据块写入本地缓存。
可选的,所述远端缓存读取单元包括:
请求发送子单元,用于向负责缓存所述数据的远端处理器内核发送数据读取请求,所述请求包含所述数据的内存地址和请求方的处理器内核编号;
远端读取子单元,用于所述远端处理器内核从其本地缓存中读取所述数据;
数据返回子单元,用于所述远端处理器内核将读取的所述数据返回给所述请求方。
可选的,所述远端读取子单元包括:
远端缓存判断子单元,用于所述远端处理器内核根据所述数据的内存地址,判断所述数据是否已在本地缓存中缓存;
远端缓存读取执行子单元,用于当所述远端缓存判断子单元的输出为“是”时,远端处理器内核从其本地缓存读取所述数据;
远端内存读取子单元,用于当所述远端缓存判断子单元的输出为“否”时,远端处理器内核根据所述数据的内存地址访问内存,读取所述数据,并将所述数据所在内存数据块写入本地缓存。
在上述实施例中,提供了一种基于新型多核处理器的数据读取方法,相应的,本申请还提供一种基于新型多核处理器的数据写入方法。本实施例与第一或第二实施例相同的部分不再赘述,下面重点描述不同之处。
请参看图6,其为本申请提供的一种基于新型多核处理器的数据写入方法的实施例的流程图。所述方法包括如下步骤:
步骤601:待执行写数据操作的处理器内核,根据写操作的内存地址,判断所述数据是否为本处理器内核负责缓存的数据;若是,执行步骤602,否则执行步骤603。
在具体实施中,待执行写操作的处理器内核,可以先根据执行写操作的内存地址,按照预先设定的对内存空间进行缓存的地址划分规则,计算负责缓存该数据的处理器内核编号;然后判断所述处理器内核编号是否与本内核一致,若一致,则判定所述数据是本处理器内核负责缓存的数据。上述处理过程与第二实施例的步骤301基本相同,请参见第二实施例中的相关说明,此处不再赘述。
步骤602:向本地缓存中写入所述数据。
执行到本步骤,说明待写数据是由发出写操作请求的处理器内核负责缓存的,因此发出请求的处理器内核首先在本地缓存中查找,如果命中,则直接向相应的缓存中写入所述数据,否则,根据所述写操作的内存地址从内存将对应的数据块加载到本地缓存中,然后将所述数据写入本地缓存中。
在具体实施时,发出写操作请求的处理器内核的缓存控制器,可以采用地址映射的方式实现内存地址到Cache地址的转换,并判断所述数据是否在本地缓存中命中,相关说明请参见第二实施例的步骤302中的相关说明。
如果命中,可以根据内存地址中的offset偏移量,定位当前命中的缓存数据块(Cacheline)中的具体数据单元,并将本次写操作的具体数据写入所述数据单元中。
如果未命中,可以在本地缓存中为写操作地址所对应的内存数据块分配一个缓存数据块,并将所述内存数据块写入新分配的缓存数据块中,然后根据所述写操作内存地址的offset偏移量将本次写操作的数据写入该缓存控制块的相应数据单元中。
步骤603:向负责缓存所述数据的远端处理器内核发送写数据请求,由所述远端处理器内核将所述数据写入其本地缓存中。
执行到本步骤,说明本次写操作的数据是由其他处理器内核负责缓存的,即:由本申请所述的远端处理器内核负责缓存。因此写操作的请求方并不在本地缓存中操作,而是向在步骤601中计算得到的远端处理器内核发出写数据请求,由远端处理器内核将本次写操作的数据写入其本地缓存中。
在具体实施时,请求方的缓存控制器向所述远端处理器内核的缓存控制器发送写数据的请求时,也向其传输所述数据的内存地址、数据内容以及数据长度信息;远端处理器内核的缓存控制器采用步骤602中类似的方式在其本地缓存中进行查找,如果命中,直接将所述数据写入命中的缓存数据块的相应数据单元中,否则根据写操作的内存地址,先将内存中相应的数据块加载到本地缓存中,然后再将所述数据写入本地缓存中。
通过执行步骤602或者603,本次写操作的数据被写入发起写请求的处理器内核的本地缓存或者是远端处理器内核的本地缓存中,而不会在两个处理器内核的本地缓存中都执行写操作,因此从写操作的角度保证了缓存数据的一致性。
在具体实施中,如果仅针对缓存执行了数据写入操作,而未对内存中的相应数据进行同步更新,会导致两者的不一致,为了保证内存和缓存中的数据一致性,现有技术通常采用直写策略(writethrough)或者写回策略(write-back)。
其中,直写策略是指任一处理器内核针对本地缓存执行的写操作也会同时写入内存,以保证内存的数据能同步地更新;写回策略则是指数据一般只写入缓存中,只有当该数据被再次更改时,才将原更新的数据写入内存相应的地址中,然后再接受再次更新的数据。
现有技术中,如果采用直写策略,由于内存的访问速度慢,会降低处理器整体的写速度;而采用写回策略,虽然可以减少对内存的访问次数,但是在多核环境下,需要访问缓存目录并执行相应的“无效”操作,例如:当某个CPU内核需要针对私有缓存中的数据执行写操作时,首先通过缓存目录查询哪些私有缓存存储了其副本,并通知这些私有缓存将相应数据所在缓存数据块置为无效,然后再执行写操作,从而保证数据的一致性。当有多个处理器内核依次针对某内存数据块执行写操作时,每个处理器内核私有缓存中的相应缓存数据块就会反复多次被置为无效,从而引发“乒乓”现象,导致数据访问性能显著下降。
而本申请提供的数据写入方法,是基于采用单一内存映射机制的多核处理器架构的,在该架构中不同处理器内核的本地缓存分别用于缓存不同地址范围的内存空间中的数据,在这种情况下,不需要使用缓存目录跟踪数据在不同CPU内核的私有缓存里的轨迹,也不需要执行上述“无效”操作,因此采用写回策略在减少内存访问次数的同时,不会引发“乒乓”现象,能够显著提高数据的访问性能。
具体说,在步骤602或者603中,发起写数据操作请求的处理器内核或者远端处理器内核,在向对应的本地缓存写入所述数据时,并不同时将所述数据写入对应的内存中,而是为所述数据所在的缓存数据块设置更新标记(也称为dirty标记),表明该数据被修改过。
当缓存已满,缓存控制器需要采用预先设定的策略进行缓存数据块的替换时,如果将要被换出的缓存数据块带有更新标记,则将该缓存数据块写入相应的内存地址中,从而保证缓存数据与内存数据的一致性。
综上所述,本申请提供的上述数据读写方法,发起数据访问操作的处理器内核,先判断被访问的数据是否是由自己负责缓存的数据,若是,在本地缓存或者内存中执行数据访问操作,否则请求远端处理器内核进行相应的数据访问操作并返回必要的结果。采用上述数据读写方法,剔除了访问缓存目录和维护缓存目录的开销,也不需要执行繁琐的“无效”操作,就可以保证缓存数据的一致性,从而在简化数据访问过程的同时,提高数据访问的性能。
在上述的实施例中,提供了一种基于新型多核处理器的数据写入方法,与之相对应的,本申请还提供一种基于新型多核处理器的数据写入装置。请参看图7,其为本申请的一种基于新型多核处理器的数据写入装置实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种基于新型多核处理器的数据写入装置,包括:写操作判断单元701,用于待执行写数据操作的处理器内核,根据写操作的内存地址,判断所述数据是否为本处理器内核负责缓存的数据;本地缓存写入单元702,用于当所述写操作判断单元的输出为“是”时,向本地缓存中写入所述数据;远端缓存写入单元703,用于当所述写操作判断单元的输出为“否”时,向负责缓存所述数据的远端处理器内核发送写数据请求,由所述远端处理器内核将所述数据写入其本地缓存中;所述请求包含执行写操作的内存地址以及数据。
可选的,所述写操作判断单元包括:
写编号计算子单元,用于根据执行写操作的内存地址,按照预先设定的对内存空间进行缓存的地址划分规则,计算负责缓存该数据的处理器内核编号;
编号判断子单元,用于判断所述处理器内核编号是否与本内核一致,若一致,则判定所述数据是本处理器内核负责缓存的数据。
可选的,所述本地缓存写入单元和所述远端缓存写入单元不仅分别包含实现其功能的实体子单元,还包括更新标记设置子单元,用于在向对应的本地缓存写入所述数据时,为所述数据所在的缓存数据块设置更新标记;
相应的,所述装置还包括:
内存同步单元,用于当设置更新标记的缓存数据块从缓存换出时,将所述缓存数据块中的数据写入相应的内存地址中。
此外,本申请还提供一种基于新型多核处理器的内存分配方法。请参看图8,其为本申请提供的一种基于新型多核处理器的内存分配方法的实施例的流程图。本实施例与第一实施例相同的部分不再赘述,下面重点描述不同之处。
所述基于新型多核处理器的内存分配方法包括如下步骤:
步骤801:接收来自处理器内核的内存分配请求。
在多核处理器中,每个处理器内核需要使用内存时,例如:运行在该处理器内核上的线程需要为某个数据结构分配内存,就会以函数调用等方式向操作系统发送请求,请求操作系统为其分配内存空间,操作系统就会接收到所述请求,该请求中不仅包含请求分配内存单元的数量,还包含发出所述请求的处理器内核的标识,例如:内核编号。所述内存单元是指,在内存中进行数据存储的最小单位,通常也是操作系统进行内存分配的最小单位,例如:以8bit为最小单位,即:通常所说的字节。
步骤802:按照预先设定的对内存空间进行缓存的地址划分规则,确定所述处理器内核负责缓存的内存空间的地址范围。
多核处理器中的每个处理器内核,按照所述预先设定的对内存空间进行缓存的地址划分规则,缓存不同地址范围的内存空间中的数据,而运行于所述多核处理器上的操作系统也按照该地址划分规则为每个处理器内核分配内存。
在具体实施中,可以根据实际需要设定不同的所述地址划分规则,例如,可以将内存地址范围按照处理器内核的数目划分成多个大小相同的连续区间,并分别与每个处理器内核建立映射关系,具体例子说明请参见第一实施例中的相关部分。
在本步骤中,根据所述请求中包含的处理器内核标识,以及预先设定的上述规则,可以确定所述处理器内核负责缓存的内存空间的地址范围。例如,在第一实施例给出的内存地址空间划分的例子中,如果1号内核向操作系统请求分配128字节的内存,则可以确定该处理器内核负责缓存的内存空间的地址范围为:0x0100000000—0x01FFFFFFFF。
步骤803:根据所述请求中包含的待分配内存单元数量,从所述地址范围对应的内存空间中为所述处理器内核分配相应数量的内存单元。
操作系统根据请求中包含的待分配内存单元的数量,在步骤802确定的地址范围对应的内存空间中,查找满足所述数量要求的空闲内存块(尚未被分配的内存块),并按照一定的策略从中选择一个相应大小的内存块,然后将该内存块的起始地址返回给所述处理器内核,即:将该内存块分配给该处理器内核,该处理器内核就可以使用该内存块执行数据存储、读写等操作。
通过上面的描述可以看出,在新型多核处理器上运行的操作系统,采用上述内存分配方法为每个内核分配的内存块,都位于该内核负责缓存的内存地址范围中,而这部分内存块中的数据如果被加载到缓存中,自然是加载到该内核的本地缓存中,由此可见,每个内核对内存数据的访问通常通过查找本地缓存即可完成,只有少量共享数据需要访问其他内核的本地缓存,由于访问本地缓存速度快、时延小,因此可以显著提高数据访问性能。
在上述的实施例中,提供了一种基于新型多核处理器的内存分配方法,与之相对应的,本申请还提供一种基于新型多核处理器的内存分配装置。请参看图9,其为本申请的一种基于新型多核处理器的内存分配装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种基于新型多核处理器的内存分配装置,包括:分配请求接收单元901,用于接收来自处理器内核的内存分配请求;地址范围确定单元902,用于按照预先设定的对内存空间进行缓存的地址划分规则,确定所述处理器内核负责缓存的内存空间的地址范围;内存分配执行单元903,用于根据所述请求中包含的待分配内存单元数量,从所述地址范围对应的内存空间中为所述处理器内核分配相应数量的内存单元。
此外,本申请还提供一种设备,请参看图10,其为所述设备的示意图。本申请提供的所述设备包括:第一实施例所述的支持缓存一致性的多核处理器1001;内存控制器1002,与所述多核处理器中的复数个处理器内核相连,用于供所述处理器内核访问内存中的数据;内存1003,与所述内存控制器相连,用于存储供所述处理器内核访问的数据。
所述设备不包含在多核之间共享的最后一级缓存,也没有采用缓存目录,但是由于采用了第一实施例所述的支持缓存一致性的多核处理器,不同处理器内核的本地缓存分别用于缓存不同地址范围的内存空间中的数据,每个处理器内核通过互连总线访问其他处理器内核本地缓存中的数据,从而实现了缓存数据的一致性以及每个内核的本地缓存在多核之间的共享化。不仅剔除了缓存目录对缓存空间的占用、提高数据访问性能,而且解决了私有缓存与共享缓存之间的矛盾,并且充分利用私有缓存数据延迟较小的特性,从而提升所述设备的整体性能。
为了进一步提高数据访问性能,所述设备中的每一处理器内核均使用其本地缓存所对应的相应地址范围的内存空间中的内存。具体说明请参见上述实施例中的相关文字,此处不再赘述。
此外,本申请还提供另一种支持缓存一致性的多核处理器,请参考图11,其为本申请的另一种支持缓存一致性的多核处理器的架构示意图。所述多核处理器包括:n个处理器内核分组1101-1至1101-n,每个分组包括两个处理器内核、以及对应的本地缓存(L1缓存和L2缓存),所述多核处理器还包括用于访问内存的内存控制器1102;不同处理器内核分组的本地缓存分别用于缓存不同地址范围的内存空间中的数据,每个处理器内核分组通过互连总线访问其他处理器内核分组本地缓存中的数据。
在本实施例提供的多核处理器架构中,所述复数个处理器内核被划分为n个分组,从每个分组内部的角度看,组内的内核共享同样的缓存,包括L1缓存和L2缓存;从分组间的角度看,组内的共享缓存则是每一分组的本地缓存。
如果将每个处理器内核分组看作一个虚拟内核,那么本实施例与第一实施例所描述的架构在基本原理上是一致的,不同虚拟内核(即:内核分组)的本地缓存分别用于缓存不同地址范围的内存空间中的数据,每个虚拟内核(即:内核分组)通过互连总线访问其他虚拟内核(即:内核分组)本地缓存中的数据。因此,上述基于第一实施例所述多核处理器的相关描述、数据读写方法、以及内存分配方法等也都适用于本实施例提供的多核处理器架构,此处不再赘述。
上述实施例给出的是一个示意性的例子,在具体实施中,所述处理器内核分组的数目、每个分组内的内核数目、每个分组本地缓存的级数、以及内存控制器是否集成在多核处理器内部,都可以根据具体情况进行相应的调整。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (29)
1.一种支持缓存一致性的多核处理器,其特征在于,包括:
复数个处理器内核,与所述复数个处理器内核分别对应的本地缓存;
不同处理器内核的本地缓存分别用于缓存不同地址范围的内存空间中的数据,每个处理器内核通过互连总线访问其他处理器内核本地缓存中的数据。
2.根据权利要求1所述的支持缓存一致性的多核处理器,其特征在于,所述每一处理器内核均使用其本地缓存所对应的相应地址范围的内存空间中的内存。
3.根据权利要求1-2任一所述的支持缓存一致性的多核处理器,其特征在于,还包括:
内存控制器,与所述复数个处理器内核相连,用于供所述处理器内核访问内存中的数据。
4.根据权利要求3所述的支持缓存一致性的多核处理器,其特征在于,所述每个处理器内核的本地缓存包括:一级缓存和二级缓存。
5.一种基于权利要求1所述多核处理器的数据读取方法,其特征在于,包括:
待执行读取数据操作的处理器内核,根据所述数据的内存地址,判断是否为本处理器内核负责缓存的数据;
若是,从本地缓存中读取所述数据;
若否,向负责缓存所述数据的远端处理器内核发送读取数据请求,并接收所述远端处理器内核返回的所述数据。
6.根据权利要求5所述的数据读取方法,其特征在于,所述根据所述数据的内存地址,判断是否为本处理器内核负责缓存的数据,包括:
根据所述数据的内存地址,按照预先设定的对内存空间进行缓存的地址划分规则,计算负责缓存所述数据的处理器内核编号;
判断所述处理器内核编号是否与本内核一致,若一致,则判定所述数据是本处理器内核负责缓存的数据。
7.根据权利要求6所述的数据读取方法,其特征在于,所述预先设定的内核对内存空间进行缓存的地址划分规则是指,每个处理器内核负责缓存内存中以下地址范围中的数据:
MEM/N×n至MEM/N×(n+1)-1;
其中,MEM为内存容量,N为处理器内核的数目,n为处理器内核的编号,其取值范围是0至N-1。
8.根据权利要求7所述的数据读取方法,其特征在于,采用如下公式计算负责缓存所述数据的处理器内核编号:
处理器内核编号=(A×N/MEM)modN;
其中,A为所述数据的内存地址。
9.根据权利要求5-8任一所述的数据读取方法,其特征在于,所述从本地缓存中读取数据包括:
根据所述数据的内存地址,判断所述数据是否已在本地缓存中缓存;
若是,从本地缓存读取所述数据;
若否,根据所述数据的内存地址访问内存,读取所述数据,并将所述数据所在内存数据块写入本地缓存。
10.根据权利要求9所述的数据读取方法,其特征在于,所述向负责缓存所述数据的远端处理器内核发送数据读取请求,并接收所述远端处理器内核返回的所述数据,包括:
向负责缓存所述数据的远端处理器内核发送数据读取请求,所述请求包含所述数据的内存地址和请求方的处理器内核编号;
所述远端处理器内核从其本地缓存中读取所述数据;
所述远端处理器内核将读取的所述数据返回给所述请求方。
11.根据权利要求10所述的数据读取方法,其特征在于,所述远端处理器内核从本地缓存中读取所述数据,包括:
所述远端处理器内核根据所述数据的内存地址,判断所述数据是否已在本地缓存中缓存;
若是,从所述本地缓存读取所述数据;
若否,根据所述数据的内存地址访问内存,读取所述数据,并将所述数据所在内存数据块写入本地缓存。
12.一种基于权利要求1所述多核处理器的数据读取装置,其特征在于,包括:
读操作判断单元,用于待执行读取数据操作的处理器内核,根据所述数据的内存地址,判断是否为本处理器内核负责缓存的数据;
本地缓存读取单元,用于当所述读操作判断单元的输出为“是”时,从本地缓存中读取所述数据;
远端缓存读取单元,用于当所述读操作判断单元的输出为“否”时,向负责缓存所述数据的远端处理器内核发送读取数据请求,并接收所述远端处理器内核返回的所述数据。
13.根据权利要求12所述的数据读取装置,其特征在于,所述读操作判断单元包括:
读编号计算子单元,用于根据所述数据的内存地址,按照预先设定的对内存空间进行缓存的地址划分规则,计算负责缓存所述数据的处理器内核编号;
编号判断子单元,用于判断所述处理器内核编号是否与本内核一致,若一致,则判定所述数据是本处理器内核负责缓存的数据。
14.根据权利要求13所述的数据读取装置,其特征在于,所述读编号计算子单元采用的地址划分规则是指,每个处理器内核负责缓存内存中以下地址范围中的数据:
MEM/N×n至MEM/N×(n+1)-1;
其中,MEM为内存容量,N为处理器内核的数目,n为处理器内核的编号,其取值范围是0至N-1。
15.根据权利要求14所述的数据读取装置,其特征在于,所述编号计算子单元具体用于,采用如下公式计算缓存所述数据的处理器内核编号:
处理器内核编号=(A×N/MEM)modN;
其中,A为所述数据的内存地址。
16.根据权利要求12-15任一所述的数据读取装置,其特征在于,所述本地缓存读取单元包括:
本地缓存判断子单元,用于根据所述数据的内存地址,判断所述数据是否已在本地缓存中缓存;
缓存读取执行子单元,用于当所述本地缓存判断子单元的输出为“是”时,从本地缓存读取所述数据;
内存读取子单元,用于当所述本地缓存判断子单元的输出为“否”时,根据所述数据的内存地址访问内存,读取所述数据,并将所述数据所在内存数据块写入本地缓存。
17.根据权利要求16所述的数据读取装置,其特征在于,所述远端缓存读取单元包括:
请求发送子单元,用于向负责缓存所述数据的远端处理器内核发送数据读取请求,所述请求包含所述数据的内存地址和请求方的处理器内核编号;
远端读取子单元,用于所述远端处理器内核从其本地缓存中读取所述数据;
数据返回子单元,用于所述远端处理器内核将读取的所述数据返回给所述请求方。
18.根据权利要求17所述的数据读取装置,其特征在于,所述远端读取子单元包括:
远端缓存判断子单元,用于所述远端处理器内核根据所述数据的内存地址,判断所述数据是否已在本地缓存中缓存;
远端缓存读取执行子单元,用于当所述远端缓存判断子单元的输出为“是”时,远端处理器内核从其本地缓存读取所述数据;
远端内存读取子单元,用于当所述远端缓存判断子单元的输出为“否”时,远端处理器内核根据所述数据的内存地址访问内存,读取所述数据,并将所述数据所在内存数据块写入本地缓存。
19.一种基于权利要求1所述多核处理器的数据写入方法,其特征在于,包括:
待执行写数据操作的处理器内核,根据写操作的内存地址,判断所述数据是否为本处理器内核负责缓存的数据;
若是,向本地缓存中写入所述数据;
若否,向负责缓存所述数据的远端处理器内核发送写数据请求,由所述远端处理器内核将所述数据写入其本地缓存中;所述请求包含执行写操作的内存地址以及数据。
20.根据权利要求19所述的数据写入方法,其特征在于,所述根据写操作的内存地址,判断所述数据是否为本处理器内核负责缓存的数据,包括:
根据执行写操作的内存地址,按照预先设定的对内存空间进行缓存的地址划分规则,计算负责缓存该数据的处理器内核编号;
判断所述处理器内核编号是否与本内核一致,若一致,则判定所述数据是本处理器内核负责缓存的数据。
21.根据权利要求19-20任一所述的数据写入方法,其特征在于,包括:
所述待执行写数据操作的处理器内核或者远端处理器内核,在向对应的本地缓存写入所述数据时,为所述数据所在的缓存数据块设置更新标记;
相应的,当设置更新标记的缓存数据块从缓存换出时,将所述缓存数据块中的数据写入相应的内存地址中。
22.一种基于权利要求1所述多核处理器的数据写入装置,其特征在于,包括:
写操作判断单元,用于待执行写数据操作的处理器内核,根据写操作的内存地址,判断所述数据是否为本处理器内核负责缓存的数据;
本地缓存写入单元,用于当所述写操作判断单元的输出为“是”时,向本地缓存中写入所述数据;
远端缓存写入单元,用于当所述写操作判断单元的输出为“否”时,向负责缓存所述数据的远端处理器内核发送写数据请求,由所述远端处理器内核将所述数据写入其本地缓存中;所述请求包含执行写操作的内存地址以及数据。
23.根据权利要求22所述的数据写入装置,其特征在于,所述写操作判断单元包括:
写编号计算子单元,用于根据执行写操作的内存地址,按照预先设定的对内存空间进行缓存的地址划分规则,计算负责缓存该数据的处理器内核编号;
编号判断子单元,用于判断所述处理器内核编号是否与本内核一致,若一致,则判定所述数据是本处理器内核负责缓存的数据。
24.根据权利要求22-23任一所述的数据写入装置,其特征在于,所述本地缓存写入单元和所述远端缓存写入单元不仅分别包含实现其功能的实体子单元,还包括更新标记设置子单元,用于在向对应的本地缓存写入所述数据时,为所述数据所在的缓存数据块设置更新标记;
相应的,所述装置还包括:
内存同步单元,用于当设置更新标记的缓存数据块从缓存换出时,将所述缓存数据块中的数据写入相应的内存地址中。
25.一种基于权利要求1所述多核处理器的内存分配方法,其特征在于,包括:
接收来自处理器内核的内存分配请求;
按照预先设定的对内存空间进行缓存的地址划分规则,确定所述处理器内核负责缓存的内存空间的地址范围;
根据所述请求中包含的待分配内存单元数量,从所述地址范围对应的内存空间中为所述处理器内核分配相应数量的内存单元。
26.一种基于权利要求1所述多核处理器的内存分配装置,其特征在于,包括:
分配请求接收单元,用于接收来自处理器内核的内存分配请求;
地址范围确定单元,用于按照预先设定的对内存空间进行缓存的地址划分规则,确定所述处理器内核负责缓存的内存空间的地址范围;
内存分配执行单元,用于根据所述请求中包含的待分配内存单元数量,从所述地址范围对应的内存空间中为所述处理器内核分配相应数量的内存单元。
27.一种设备,其特征在于,包括:
权利要求1所述的支持缓存一致性的多核处理器;
内存控制器,与所述多核处理器中的复数个处理器内核相连,用于供所述处理器内核访问内存中的数据;
内存,与所述内存控制器相连,用于存储供所述处理器内核访问的数据。
28.根据权利要求27所述的设备,其特征在于,所述每一处理器内核均使用其本地缓存所对应的相应地址范围的内存空间中的内存。
29.一种支持缓存一致性的多核处理器,其特征在于,包括:
复数个处理器内核,所述复数个处理器内核被划分为至少两个分组;
与每个处理器内核分组分别对应的本地缓存;
不同处理器内核分组的本地缓存分别用于缓存不同地址范围的内存空间中的数据,每个处理器内核分组通过互连总线访问其他处理器内核分组本地缓存中的数据。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410756732.3A CN105740164B (zh) | 2014-12-10 | 2014-12-10 | 支持缓存一致性的多核处理器、读写方法、装置及设备 |
US14/964,296 US10409723B2 (en) | 2014-12-10 | 2015-12-09 | Multi-core processor supporting cache consistency, method, apparatus and system for data reading and writing by use thereof |
EP15868111.4A EP3230850B1 (en) | 2014-12-10 | 2015-12-10 | Multi-core processor having cache consistency |
PCT/US2015/065042 WO2016094686A1 (en) | 2014-12-10 | 2015-12-10 | Multi-core processor having cache consistency |
KR1020177017191A KR102505176B1 (ko) | 2014-12-10 | 2015-12-10 | 캐시 일관성을 가진 멀티-코어 프로세서 |
JP2017531592A JP2018503181A (ja) | 2014-12-10 | 2015-12-10 | キャッシュ一貫性を有するマルチコアプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410756732.3A CN105740164B (zh) | 2014-12-10 | 2014-12-10 | 支持缓存一致性的多核处理器、读写方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105740164A true CN105740164A (zh) | 2016-07-06 |
CN105740164B CN105740164B (zh) | 2020-03-17 |
Family
ID=56108197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410756732.3A Active CN105740164B (zh) | 2014-12-10 | 2014-12-10 | 支持缓存一致性的多核处理器、读写方法、装置及设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10409723B2 (zh) |
EP (1) | EP3230850B1 (zh) |
JP (1) | JP2018503181A (zh) |
KR (1) | KR102505176B1 (zh) |
CN (1) | CN105740164B (zh) |
WO (1) | WO2016094686A1 (zh) |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250492A (zh) * | 2016-07-28 | 2016-12-21 | 五八同城信息技术有限公司 | 索引的处理方法及装置 |
CN107844435A (zh) * | 2017-11-08 | 2018-03-27 | 北京锐安科技有限公司 | 一种缓存系统、方法及装置 |
CN107894914A (zh) * | 2016-09-30 | 2018-04-10 | 华为技术有限公司 | 缓存一致性处理方法和装置 |
CN108804348A (zh) * | 2017-05-02 | 2018-11-13 | 迈络思科技有限公司 | 并行处理环境中的计算 |
CN109062613A (zh) * | 2018-06-01 | 2018-12-21 | 杭州中天微系统有限公司 | 多核互联二级缓存访问验证方法 |
CN109164976A (zh) * | 2016-12-21 | 2019-01-08 | 北京忆恒创源科技有限公司 | 利用写缓存优化存储设备性能 |
CN109213641A (zh) * | 2017-06-29 | 2019-01-15 | 展讯通信(上海)有限公司 | 缓存一致性检测系统及方法 |
CN109684237A (zh) * | 2018-11-20 | 2019-04-26 | 华为技术有限公司 | 基于多核处理器的数据访问方法和装置 |
CN109726017A (zh) * | 2017-10-30 | 2019-05-07 | 阿里巴巴集团控股有限公司 | 一种应用程序之间共享缓存的方法及装置 |
WO2019085649A1 (zh) * | 2017-11-02 | 2019-05-09 | 华为技术有限公司 | 一种缓存访问方法、多级缓存系统及计算机系统 |
CN109857342A (zh) * | 2019-01-16 | 2019-06-07 | 盛科网络(苏州)有限公司 | 一种数据读写方法及装置、交换芯片及存储介质 |
CN110221985A (zh) * | 2019-06-06 | 2019-09-10 | 成都海光集成电路设计有限公司 | 跨芯片维护缓存一致性策略的装置与方法 |
CN110865968A (zh) * | 2019-04-17 | 2020-03-06 | 成都海光集成电路设计有限公司 | 多核处理装置及其内核之间数据传输方法 |
CN110874273A (zh) * | 2018-08-31 | 2020-03-10 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
CN111414318A (zh) * | 2020-03-24 | 2020-07-14 | 江南大学 | 一种基于提前更新的数据一致性实现方法 |
CN111581133A (zh) * | 2020-05-06 | 2020-08-25 | 苏州浪潮智能科技有限公司 | 一种多核存储器一致性的方法、系统、设备及可读介质 |
CN112100093A (zh) * | 2020-08-18 | 2020-12-18 | 海光信息技术有限公司 | 保持多处理器共享内存数据一致性的方法和多处理器系统 |
CN112148665A (zh) * | 2019-06-28 | 2020-12-29 | 深圳市中兴微电子技术有限公司 | 缓存的分配方法及装置 |
CN112463711A (zh) * | 2020-12-11 | 2021-03-09 | 北京航空航天大学 | 一种针对众核处理器的从核软件缓存共享方法 |
CN112558861A (zh) * | 2020-09-29 | 2021-03-26 | 北京清微智能科技有限公司 | 一种面向多核处理器阵列的数据加载和存储系统及方法 |
CN112559432A (zh) * | 2020-12-22 | 2021-03-26 | 上海金卓科技有限公司 | 一种多核通讯系统 |
CN112988036A (zh) * | 2019-12-16 | 2021-06-18 | 瑞昱半导体股份有限公司 | 存储器数据存取装置及其方法 |
CN113254321A (zh) * | 2021-06-07 | 2021-08-13 | 恒为科技(上海)股份有限公司 | 一种评估处理器内存访问性能的方法及系统 |
CN113986778A (zh) * | 2021-11-17 | 2022-01-28 | 海光信息技术股份有限公司 | 一种数据处理方法、共享缓存、芯片系统及电子设备 |
CN114063921A (zh) * | 2021-11-12 | 2022-02-18 | 福建师范大学 | 一种基于强化学习的固态硬盘映射记录缓存管理方法 |
WO2022150996A1 (zh) * | 2021-01-13 | 2022-07-21 | 王志平 | 一种处理器缓存结构的实现方法 |
CN115114192A (zh) * | 2021-03-23 | 2022-09-27 | 北京灵汐科技有限公司 | 存储器接口、功能核、众核系统和存储数据访问方法 |
WO2022199357A1 (zh) * | 2021-03-23 | 2022-09-29 | 北京灵汐科技有限公司 | 数据处理方法及装置、电子设备、计算机可读存储介质 |
CN115203076A (zh) * | 2021-04-02 | 2022-10-18 | 滕斯托伦特股份有限公司 | 数据结构优化的专用存储器缓存 |
CN115374046A (zh) * | 2022-10-21 | 2022-11-22 | 山东云海国创云计算装备产业创新中心有限公司 | 一种多处理器数据交互方法、装置、设备及存储介质 |
CN115587051A (zh) * | 2022-10-28 | 2023-01-10 | 海光信息技术股份有限公司 | 缓存目录更新方法、数据处理方法、相关装置及设备 |
CN116167310A (zh) * | 2023-04-25 | 2023-05-26 | 上海芯联芯智能科技有限公司 | 一种验证多核心处理器缓存一致性的方法及装置 |
WO2023103767A1 (zh) * | 2021-12-06 | 2023-06-15 | 合肥杰发科技有限公司 | 基于同构多核的多操作系统及通信方法、芯片 |
CN117608864A (zh) * | 2024-01-23 | 2024-02-27 | 中诚华隆计算机技术有限公司 | 一种多核缓存一致性方法及系统 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10067763B2 (en) * | 2015-12-11 | 2018-09-04 | International Business Machines Corporation | Handling unaligned load operations in a multi-slice computer processor |
US10318356B2 (en) * | 2016-03-31 | 2019-06-11 | International Business Machines Corporation | Operation of a multi-slice processor implementing a hardware level transfer of an execution thread |
CN106776046B (zh) * | 2017-01-13 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种scst读写优化方法及系统 |
US11288010B2 (en) * | 2017-09-25 | 2022-03-29 | Intel Corporation | Efficiently storing computer processor data structures in computer memory |
CN108366111B (zh) * | 2018-02-06 | 2020-04-07 | 西安电子科技大学 | 一种用于交换设备的数据包低时延缓存装置与方法 |
US10942853B2 (en) | 2018-12-20 | 2021-03-09 | International Business Machines Corporation | System and method including broadcasting an address translation invalidation instruction with a return marker to indentify the location of data in a computing system having mutiple processors |
CN110018790B (zh) * | 2019-03-26 | 2020-05-19 | 华中科技大学 | 一种保证持久性内存中数据崩溃一致性的方法及系统 |
US10785098B1 (en) * | 2019-04-30 | 2020-09-22 | Alibaba Group Holding Limited | Network configuration using multicast address modulation |
CN112559433B (zh) * | 2019-09-25 | 2024-01-02 | 阿里巴巴集团控股有限公司 | 一种多核互联总线、核间通信方法及多核处理器 |
TWI719745B (zh) * | 2019-12-09 | 2021-02-21 | 瑞昱半導體股份有限公司 | 記憶體資料存取裝置及其方法 |
US11579799B2 (en) * | 2020-03-18 | 2023-02-14 | Micron Technology, Inc. | Dynamic selection of cores for processing responses |
US11474885B2 (en) * | 2020-04-07 | 2022-10-18 | Micron Technology, Inc. | Method for an internal command of a first processing core with memory sub-system that caching identifiers for access commands |
US11227361B2 (en) | 2020-05-06 | 2022-01-18 | Renesas Electronics Corporation | Image processing device with parallel memory access |
US11663021B2 (en) * | 2020-11-24 | 2023-05-30 | Dell Products L.P. | System and method for providing granular processor performance control |
US11928038B2 (en) | 2022-06-21 | 2024-03-12 | International Business Machines Corporation | Managing data sets based on user activity |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101958834A (zh) * | 2010-09-27 | 2011-01-26 | 清华大学 | 支持高速缓存一致的片上网络系统及数据请求方法 |
US20120137075A1 (en) * | 2009-06-09 | 2012-05-31 | Hyperion Core, Inc. | System and Method for a Cache in a Multi-Core Processor |
CN102591800A (zh) * | 2011-12-31 | 2012-07-18 | 龙芯中科技术有限公司 | 一种弱一致性存储模型的数据访存系统和方法 |
US20140297960A1 (en) * | 2011-01-21 | 2014-10-02 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Multi-core system and method of data consistency |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4442487A (en) * | 1981-12-31 | 1984-04-10 | International Business Machines Corporation | Three level memory hierarchy using write and share flags |
US5479624A (en) * | 1992-10-14 | 1995-12-26 | Lee Research, Inc. | High-performance interleaved memory system comprising a prime number of memory modules |
US6618117B2 (en) | 1997-07-12 | 2003-09-09 | Silverbrook Research Pty Ltd | Image sensing apparatus including a microcontroller |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
US6859864B2 (en) * | 2000-12-29 | 2005-02-22 | Intel Corporation | Mechanism for initiating an implicit write-back in response to a read or snoop of a modified cache line |
US20110087859A1 (en) * | 2002-02-04 | 2011-04-14 | Mimar Tibet | System cycle loading and storing of misaligned vector elements in a simd processor |
US20060112226A1 (en) | 2004-11-19 | 2006-05-25 | Hady Frank T | Heterogeneous processors sharing a common cache |
US20070143546A1 (en) * | 2005-12-21 | 2007-06-21 | Intel Corporation | Partitioned shared cache |
US20070168620A1 (en) | 2006-01-19 | 2007-07-19 | Sicortex, Inc. | System and method of multi-core cache coherency |
US7565492B2 (en) * | 2006-08-31 | 2009-07-21 | Intel Corporation | Method and apparatus for preventing software side channel attacks |
US7853754B1 (en) | 2006-09-29 | 2010-12-14 | Tilera Corporation | Caching in multicore and multiprocessor architectures |
JP4294059B2 (ja) * | 2007-03-22 | 2009-07-08 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および情報処理方法 |
JP5136550B2 (ja) * | 2007-06-01 | 2013-02-06 | 富士通株式会社 | 情報処理装置及び情報処理装置の再構成方法 |
US8948267B1 (en) | 2007-11-21 | 2015-02-03 | Marvell International Ltd. | System and method of video coding using adaptive macroblock processing |
CN101178933B (zh) * | 2007-12-05 | 2010-07-28 | 苏州壹世通科技有限公司 | 一种闪存阵列装置 |
US8621184B1 (en) | 2008-10-31 | 2013-12-31 | Netapp, Inc. | Effective scheduling of producer-consumer processes in a multi-processor system |
US8806129B2 (en) | 2008-11-21 | 2014-08-12 | International Business Machines Corporation | Mounted cache memory in a multi-core processor (MCP) |
WO2010093003A1 (ja) | 2009-02-13 | 2010-08-19 | 日本電気株式会社 | 演算資源割当装置、演算資源割当方法、及び、演算資源割当プログラム |
US9208093B2 (en) | 2009-04-21 | 2015-12-08 | Empire Technology Development Llc | Allocation of memory space to individual processor cores |
US8615633B2 (en) | 2009-04-23 | 2013-12-24 | Empire Technology Development Llc | Multi-core processor cache coherence for reduced off-chip traffic |
US8751737B2 (en) | 2009-06-26 | 2014-06-10 | Alcatel Lucent | Method and apparatus for using a shared ring buffer to provide thread synchronization in a multi-core processor system |
WO2011060366A2 (en) | 2009-11-13 | 2011-05-19 | Anderson Richard S | Distributed symmetric multiprocessing computing architecture |
CN101706755A (zh) | 2009-11-24 | 2010-05-12 | 中国科学技术大学苏州研究院 | 片上多核处理器的高速缓存协作系统及其协作处理方法 |
US8904114B2 (en) | 2009-11-24 | 2014-12-02 | Empire Technology Development Llc | Shared upper level cache architecture |
US8874855B2 (en) | 2009-12-28 | 2014-10-28 | Empire Technology Development Llc | Directory-based coherence caching |
EP2581834A4 (en) | 2010-06-14 | 2014-12-31 | Fujitsu Ltd | MULTICULTURAL PROCESSOR SYSTEM, INTERMEDIATE COHERENCE CONTROL PROCEDURE, AND INTERMEDIATE COHERENCE CONTROL PROGRAM |
JP5633564B2 (ja) | 2010-06-23 | 2014-12-03 | 富士通株式会社 | マルチコアシステムおよび外部入出力バス制御方法 |
WO2011161829A1 (ja) | 2010-06-25 | 2011-12-29 | 富士通株式会社 | マルチコアプロセッサシステム、制御プログラム、および制御方法 |
JP5516744B2 (ja) | 2010-08-27 | 2014-06-11 | 富士通株式会社 | スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法 |
US8554851B2 (en) * | 2010-09-24 | 2013-10-08 | Intel Corporation | Apparatus, system, and methods for facilitating one-way ordering of messages |
US20130246825A1 (en) * | 2011-03-25 | 2013-09-19 | Research In Motion Limited | Method and system for dynamically power scaling a cache memory of a multi-core processing system |
US9619301B2 (en) | 2011-04-06 | 2017-04-11 | Telefonaktiebolaget L M Ericsson (Publ) | Multi-core memory model and speculative mode processor management |
US8892924B2 (en) | 2011-05-31 | 2014-11-18 | Intel Corporation | Reducing power consumption of uncore circuitry of a processor |
US8943287B1 (en) | 2012-07-17 | 2015-01-27 | Rockwell Collins, Inc. | Multi-core processor system configured to constrain access rate from memory |
US20140032854A1 (en) * | 2012-07-30 | 2014-01-30 | Futurewei Technologies, Inc. | Coherence Management Using a Coherent Domain Table |
US9342454B2 (en) * | 2012-08-02 | 2016-05-17 | International Business Machines Corporation | Nested rewind only and non rewind only transactions in a data processing system supporting transactional storage accesses |
US9218289B2 (en) | 2012-08-06 | 2015-12-22 | Qualcomm Incorporated | Multi-core compute cache coherency with a release consistency memory ordering model |
US9244853B2 (en) | 2012-08-10 | 2016-01-26 | Qualcomm Incorporated | Tunable multi-tiered STT-MRAM cache for multi-core processors |
WO2014130037A1 (en) | 2013-02-21 | 2014-08-28 | Empire Technology Development, Llc | One-cacheable multi-core architecture |
US9223710B2 (en) | 2013-03-16 | 2015-12-29 | Intel Corporation | Read-write partitioning of cache memory |
JP5843801B2 (ja) * | 2013-03-19 | 2016-01-13 | 株式会社東芝 | 情報処理装置およびデバッグ方法 |
JP6060770B2 (ja) * | 2013-03-28 | 2017-01-18 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム |
CN104462007B (zh) | 2013-09-22 | 2018-10-02 | 南京中兴新软件有限责任公司 | 实现多核间缓存一致性的方法及装置 |
US9418018B2 (en) * | 2013-12-31 | 2016-08-16 | Samsung Electronics Co., Ltd. | Efficient fill-buffer data forwarding supporting high frequencies |
US9122800B1 (en) | 2014-05-30 | 2015-09-01 | Honeywell International Inc. | System and method of non-intrusive measurement of memory access profiles of threads in a multi-core processor |
CN104360981B (zh) | 2014-11-12 | 2017-09-29 | 浪潮(北京)电子信息产业有限公司 | 面向多核多处理器平台的Cache一致性协议的设计方法 |
-
2014
- 2014-12-10 CN CN201410756732.3A patent/CN105740164B/zh active Active
-
2015
- 2015-12-09 US US14/964,296 patent/US10409723B2/en active Active
- 2015-12-10 EP EP15868111.4A patent/EP3230850B1/en active Active
- 2015-12-10 KR KR1020177017191A patent/KR102505176B1/ko active IP Right Grant
- 2015-12-10 WO PCT/US2015/065042 patent/WO2016094686A1/en active Application Filing
- 2015-12-10 JP JP2017531592A patent/JP2018503181A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120137075A1 (en) * | 2009-06-09 | 2012-05-31 | Hyperion Core, Inc. | System and Method for a Cache in a Multi-Core Processor |
CN101958834A (zh) * | 2010-09-27 | 2011-01-26 | 清华大学 | 支持高速缓存一致的片上网络系统及数据请求方法 |
US20140297960A1 (en) * | 2011-01-21 | 2014-10-02 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Multi-core system and method of data consistency |
CN102591800A (zh) * | 2011-12-31 | 2012-07-18 | 龙芯中科技术有限公司 | 一种弱一致性存储模型的数据访存系统和方法 |
Cited By (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250492B (zh) * | 2016-07-28 | 2019-11-19 | 五八同城信息技术有限公司 | 索引的处理方法及装置 |
CN106250492A (zh) * | 2016-07-28 | 2016-12-21 | 五八同城信息技术有限公司 | 索引的处理方法及装置 |
CN107894914A (zh) * | 2016-09-30 | 2018-04-10 | 华为技术有限公司 | 缓存一致性处理方法和装置 |
CN109164976A (zh) * | 2016-12-21 | 2019-01-08 | 北京忆恒创源科技有限公司 | 利用写缓存优化存储设备性能 |
CN108804348A (zh) * | 2017-05-02 | 2018-11-13 | 迈络思科技有限公司 | 并行处理环境中的计算 |
CN108804348B (zh) * | 2017-05-02 | 2023-07-21 | 迈络思科技有限公司 | 并行处理环境中的计算 |
CN109213641A (zh) * | 2017-06-29 | 2019-01-15 | 展讯通信(上海)有限公司 | 缓存一致性检测系统及方法 |
CN109213641B (zh) * | 2017-06-29 | 2021-10-26 | 展讯通信(上海)有限公司 | 缓存一致性检测系统及方法 |
CN109726017A (zh) * | 2017-10-30 | 2019-05-07 | 阿里巴巴集团控股有限公司 | 一种应用程序之间共享缓存的方法及装置 |
CN109726017B (zh) * | 2017-10-30 | 2023-05-26 | 阿里巴巴集团控股有限公司 | 一种应用程序之间共享缓存的方法及装置 |
WO2019085649A1 (zh) * | 2017-11-02 | 2019-05-09 | 华为技术有限公司 | 一种缓存访问方法、多级缓存系统及计算机系统 |
CN107844435A (zh) * | 2017-11-08 | 2018-03-27 | 北京锐安科技有限公司 | 一种缓存系统、方法及装置 |
CN109062613B (zh) * | 2018-06-01 | 2020-08-28 | 杭州中天微系统有限公司 | 多核互联二级缓存访问验证方法 |
US11550646B2 (en) | 2018-06-01 | 2023-01-10 | C-Sky Microsystems Co., Ltd. | Method of verifying access of multi-core interconnect to level-2 cache |
CN109062613A (zh) * | 2018-06-01 | 2018-12-21 | 杭州中天微系统有限公司 | 多核互联二级缓存访问验证方法 |
CN110874273A (zh) * | 2018-08-31 | 2020-03-10 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
CN110874273B (zh) * | 2018-08-31 | 2023-06-13 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
CN109684237A (zh) * | 2018-11-20 | 2019-04-26 | 华为技术有限公司 | 基于多核处理器的数据访问方法和装置 |
CN109684237B (zh) * | 2018-11-20 | 2021-06-01 | 华为技术有限公司 | 基于多核处理器的数据访问方法和装置 |
CN109857342A (zh) * | 2019-01-16 | 2019-06-07 | 盛科网络(苏州)有限公司 | 一种数据读写方法及装置、交换芯片及存储介质 |
CN110865968A (zh) * | 2019-04-17 | 2020-03-06 | 成都海光集成电路设计有限公司 | 多核处理装置及其内核之间数据传输方法 |
CN110865968B (zh) * | 2019-04-17 | 2022-05-17 | 成都海光集成电路设计有限公司 | 多核处理装置及其内核之间数据传输方法 |
CN110221985A (zh) * | 2019-06-06 | 2019-09-10 | 成都海光集成电路设计有限公司 | 跨芯片维护缓存一致性策略的装置与方法 |
CN110221985B (zh) * | 2019-06-06 | 2021-04-23 | 成都海光集成电路设计有限公司 | 跨芯片维护缓存一致性策略的装置与方法 |
CN112148665B (zh) * | 2019-06-28 | 2024-01-09 | 深圳市中兴微电子技术有限公司 | 缓存的分配方法及装置 |
CN112148665A (zh) * | 2019-06-28 | 2020-12-29 | 深圳市中兴微电子技术有限公司 | 缓存的分配方法及装置 |
CN112988036A (zh) * | 2019-12-16 | 2021-06-18 | 瑞昱半导体股份有限公司 | 存储器数据存取装置及其方法 |
CN111414318B (zh) * | 2020-03-24 | 2022-04-29 | 江南大学 | 一种基于提前更新的数据一致性实现方法 |
CN111414318A (zh) * | 2020-03-24 | 2020-07-14 | 江南大学 | 一种基于提前更新的数据一致性实现方法 |
CN111581133A (zh) * | 2020-05-06 | 2020-08-25 | 苏州浪潮智能科技有限公司 | 一种多核存储器一致性的方法、系统、设备及可读介质 |
CN112100093B (zh) * | 2020-08-18 | 2023-11-21 | 海光信息技术股份有限公司 | 保持多处理器共享内存数据一致性的方法和多处理器系统 |
CN112100093A (zh) * | 2020-08-18 | 2020-12-18 | 海光信息技术有限公司 | 保持多处理器共享内存数据一致性的方法和多处理器系统 |
CN112558861A (zh) * | 2020-09-29 | 2021-03-26 | 北京清微智能科技有限公司 | 一种面向多核处理器阵列的数据加载和存储系统及方法 |
CN112558861B (zh) * | 2020-09-29 | 2023-03-10 | 北京清微智能科技有限公司 | 一种面向多核处理器阵列的数据加载和存储系统及方法 |
CN112463711A (zh) * | 2020-12-11 | 2021-03-09 | 北京航空航天大学 | 一种针对众核处理器的从核软件缓存共享方法 |
CN112463711B (zh) * | 2020-12-11 | 2023-03-31 | 北京航空航天大学 | 一种针对众核处理器的从核软件缓存共享方法 |
CN112559432A (zh) * | 2020-12-22 | 2021-03-26 | 上海金卓科技有限公司 | 一种多核通讯系统 |
WO2022150996A1 (zh) * | 2021-01-13 | 2022-07-21 | 王志平 | 一种处理器缓存结构的实现方法 |
CN115114192A (zh) * | 2021-03-23 | 2022-09-27 | 北京灵汐科技有限公司 | 存储器接口、功能核、众核系统和存储数据访问方法 |
WO2022199357A1 (zh) * | 2021-03-23 | 2022-09-29 | 北京灵汐科技有限公司 | 数据处理方法及装置、电子设备、计算机可读存储介质 |
CN115203076A (zh) * | 2021-04-02 | 2022-10-18 | 滕斯托伦特股份有限公司 | 数据结构优化的专用存储器缓存 |
CN115203076B (zh) * | 2021-04-02 | 2024-04-05 | 滕斯托伦特股份有限公司 | 数据结构优化的专用存储器缓存 |
CN113254321B (zh) * | 2021-06-07 | 2023-01-24 | 上海恒为智能科技有限公司 | 一种评估处理器内存访问性能的方法及系统 |
CN113254321A (zh) * | 2021-06-07 | 2021-08-13 | 恒为科技(上海)股份有限公司 | 一种评估处理器内存访问性能的方法及系统 |
CN114063921B (zh) * | 2021-11-12 | 2023-06-27 | 福建师范大学 | 一种基于强化学习的固态硬盘映射记录缓存管理方法 |
CN114063921A (zh) * | 2021-11-12 | 2022-02-18 | 福建师范大学 | 一种基于强化学习的固态硬盘映射记录缓存管理方法 |
CN113986778A (zh) * | 2021-11-17 | 2022-01-28 | 海光信息技术股份有限公司 | 一种数据处理方法、共享缓存、芯片系统及电子设备 |
WO2023103767A1 (zh) * | 2021-12-06 | 2023-06-15 | 合肥杰发科技有限公司 | 基于同构多核的多操作系统及通信方法、芯片 |
CN115374046A (zh) * | 2022-10-21 | 2022-11-22 | 山东云海国创云计算装备产业创新中心有限公司 | 一种多处理器数据交互方法、装置、设备及存储介质 |
CN115587051A (zh) * | 2022-10-28 | 2023-01-10 | 海光信息技术股份有限公司 | 缓存目录更新方法、数据处理方法、相关装置及设备 |
CN116167310A (zh) * | 2023-04-25 | 2023-05-26 | 上海芯联芯智能科技有限公司 | 一种验证多核心处理器缓存一致性的方法及装置 |
CN117608864A (zh) * | 2024-01-23 | 2024-02-27 | 中诚华隆计算机技术有限公司 | 一种多核缓存一致性方法及系统 |
CN117608864B (zh) * | 2024-01-23 | 2024-04-09 | 中诚华隆计算机技术有限公司 | 一种多核缓存一致性方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3230850A4 (en) | 2018-06-20 |
EP3230850B1 (en) | 2021-01-13 |
EP3230850A1 (en) | 2017-10-18 |
WO2016094686A1 (en) | 2016-06-16 |
CN105740164B (zh) | 2020-03-17 |
US20160170886A1 (en) | 2016-06-16 |
JP2018503181A (ja) | 2018-02-01 |
US10409723B2 (en) | 2019-09-10 |
KR102505176B1 (ko) | 2023-02-28 |
KR20170095251A (ko) | 2017-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105740164A (zh) | 支持缓存一致性的多核处理器、读写方法、装置及设备 | |
US10248576B2 (en) | DRAM/NVM hierarchical heterogeneous memory access method and system with software-hardware cooperative management | |
CN108804350B (zh) | 一种内存访问方法及计算机系统 | |
JP6460497B2 (ja) | ファイルアクセス方法およびファイルアクセス装置、ならびに記憶装置 | |
US8966219B2 (en) | Address translation through an intermediate address space | |
CN109582214B (zh) | 数据访问方法以及计算机系统 | |
US11210020B2 (en) | Methods and systems for accessing a memory | |
EP2472412B1 (en) | Explicitly regioned memory organization in a network element | |
JP2017519275A (ja) | データキャッシング方法、キャッシュおよびコンピュータシステム | |
US11237980B2 (en) | File page table management technology | |
CN109815165A (zh) | 用于存储和处理高效压缩高速缓存行的系统和方法 | |
JP6088951B2 (ja) | キャッシュメモリシステムおよびプロセッサシステム | |
US7925857B2 (en) | Method for increasing cache directory associativity classes via efficient tag bit reclaimation | |
WO2019128958A1 (zh) | 缓存替换技术 | |
CN107870867B (zh) | 32位cpu访问大于4gb内存空间的方法与装置 | |
WO2024066195A1 (zh) | 缓存管理方法及装置、缓存装置、电子装置和介质 | |
JP2015158798A (ja) | キャッシュメモリシステムおよびプロセッサシステム | |
US11256630B2 (en) | Cache address mapping method and related device | |
CN113010452A (zh) | 一种高效且支持QoS的虚拟内存架构 | |
US20230088344A1 (en) | Storage medium management method and apparatus, device, and computer-readable storage medium | |
CN110362509B (zh) | 统一地址转换方法与统一地址空间 | |
CN107870870B (zh) | 访问超过地址总线宽度的内存空间 | |
US11669450B2 (en) | Computer including cache used in plural different data sizes and control method of computer | |
WO2023217255A1 (zh) | 数据处理方法、装置、处理器及计算机系统 | |
WO2015002632A1 (en) | Lookup of a data structure containing a mapping between a virtual address space and a physical address space |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |