CN111930527B - 一种多核异构平台维护cache一致性的方法 - Google Patents
一种多核异构平台维护cache一致性的方法 Download PDFInfo
- Publication number
- CN111930527B CN111930527B CN202010598426.7A CN202010598426A CN111930527B CN 111930527 B CN111930527 B CN 111930527B CN 202010598426 A CN202010598426 A CN 202010598426A CN 111930527 B CN111930527 B CN 111930527B
- Authority
- CN
- China
- Prior art keywords
- cache
- state
- processing core
- data information
- core
- 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
- 238000000034 method Methods 0.000 title claims abstract description 21
- 230000001360 synchronised effect Effects 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 abstract 1
- 230000007717 exclusion Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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
-
- 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
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- 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)
Abstract
本发明公开了一种多核异构平台维护cache一致性的方法,首先,依次接收多核异构平台上的N个处理核心向内存空间进行读取和/或写入的数据信息,其中,处理核心为CPU、GPU或FPGA;接收到某个处理核心的读写请求后,根据当期所有处理核心的cache状态,判定是否达到准备读、准备写的状态,如果是,则同意该处理核心的访问请求以及cache状态更新,处理核心发起相关的内存数据访问,更新状态,返回第一步;如果否,则拒绝该处理核心的访问请求以及cache状态更新,使用cache无效和cache写回操作调整状态,使得满足当前处理核心的请求,更新状态返回前一步。本发明可通过软件或硬件实现,灵活的设计,可满足不同硬件平台的使用。
Description
技术领域
本发明涉及嵌入式或移动设备领域,特别是涉及一种多核异构平台维护cache一致性的方法。
背景技术
在嵌入式或移动设备领域,异构多核架构被广泛使用,比如常用的智能手机、智能终端、安防设备和视频处理设备等,异构多核架构是指在同一个芯片(通常为SOC)上集成多个不同类型的CPU,如ARM、DSP、GPU、TPU或其他协处理器,多个处理器之间共享系统总线和芯片资源,满足不同场景的应用需求。大多数情况下,每个处理器都有自己独立的cache模块(高速缓冲存储器),用来提高内存访问效率,这个cache模块由硬件实现且与CPU架构/指令集高度关联,多个处理器的cache模块彼此独立,对于单核或者SMP架构CPU,cache模块能够很好的处理一致性问题,但是对于异构多核系统,在多个核心间传递数据时,cache一致性问题难以由硬件来解决。
发明内容
针对上述技术问题,本发明提供了一种多核异构平台维护cache一致性的方法,可通过软件或硬件实现,具有设计灵活、可移植性强、可保证多核架构CPU的cache具有高度一致性的优点。
本发明的技术方案是:
一种多核异构平台维护cache一致性的方法,包括以下步骤:
S1、依次接收多核异构平台上的N个处理核心向内存空间进行读取和/或写入的数据信息,其中,处理核心为CPU、GPU或FPGA;
S2、接收到某个处理核心的读写请求后,根据当期所有处理核心的cache状态,判定是否达到准备读、准备写的状态,如果是,则同意该处理核心的访问请求以及cache状态更新,进入步骤S3,如果否,则拒绝该处理核心的访问请求以及cache状态更新,进入步骤S4;
S3、处理核心发起相关的内存数据访问,更新状态,返回步骤S1;
S4、使用cache无效和cache写回操作调整状态,使得满足当前处理核心的请求,更新状态返回步骤S3。
在上述技术方案中,处理核心的cache状态的设定方法如下:
当为内存空间中的数据信息没有被缓存到CPU的cache中时,设定为UNCACHED状态;
当内存空间中的数据信息已经被缓存到CPU的cache中,cache中的数据信息与内存空间中的数据信息保持一致时,设定为CACHED状态;
当CPU的cache中的数据信息发生修改,修改后的数据信息没有同步到内存空间中,cache中的数据信息与内存空间中的数据信息不一致时,设定为MODIFIED状态;
当CPU的cache中的数据信息与内存空间中的数据信息不一致,cache中的数据信息无效时,设定为DIRTY状态。
步骤S2中,还包括以下步骤:
S21、第n个处理核心向内存空间读取数据信息,执行准备读操作,读取数据信息完成后,执行已读操作,判定此时第n个处理核心的cache状态为CACHED;
S22、第n+1个处理核心向内存空间写入数据信息,执行准备写操作,写入数据信息完成后,执行已写操作,判定此时第n+1个处理核心的cache状态为MODIFIED,第n个处理核心的cache状态修正为DIRTY;
S23、第n+1个处理核心执行写回操作后,将第n+1个处理核心的cache状态修正为CACHED,第n个处理核心向内存空间读取数据信息,此时第n个处理核心的cache状态为DIRTY,执行失效操作,将第n个处理核心的cache状态为修正为UNCACHED。
在上述技术方案中,任意一个处理核心向内存空间进行读取或写入操作时,对状态和操作加锁,同时设定其他处理核心无向内存空间进行读取或写入操作的权限。这样使得每个处理核心对共享内存的访问在状态机的控制下执行,对于状态数据本身,通过数据对象中的同步锁来进行同步,保证同一时刻只能有一个处理核心访问数据对象本身的数据。
上述技术方案中,步骤S2中,未达到准备读、准备写的状态的情况如下:
当前处理核心的状态为DIRTY,或者存在状态为MODIFIED的其他处理核心。
上述技术方案中,步骤S3中,更新状态的步骤如下:
读数据完成后,当前处理核心的状态改为CACHED;
写数据完成后,当前处理核心的状态改为MODIFIED,状态为CACHED的其他核心的状态改为DIRTY。
上述技术方案中,步骤S4中,使用cache无效和cache写回操作调整状态的步骤如下:
如果当前处理核心的状态为DIRTY,当前处理核心执行失效操作并更新状态为UNCACHED;
如果存在状态为MODIFIED的其他处理核心,这些处理核心执行写回操作并更新状态为CACHED。
本发明的核心是维护多核间共享数据的状态,保证各个处理核心在数据存取时具有一致的状态,按照设计的状态逻辑和状态约束,数据能在在多个核心上正确的读写和写入,使得多核异构平台上多个核心间传递数据时,可保证各处理核心的cache高度的一致性。
本发明的有益效果是:
1、可通过软件或硬件实现,灵活的设计,可满足不同硬件平台的使用;
2、作为一种底层组件,可为软件设计提供统一的多核间数据共享和数据交互方法,增强了程序的可移植性;
3、可支持读写锁或互斥锁逻辑,在任意时刻只有一个处理核心写数据或多个核读数据,保证数据在多核访问时可控。
附图说明
图1是本发明实施例中当前CPU和其他CPU的所有状态的转换逻辑图。
具体实施方式
下面结合附图对本发明的实施例作进一步说明。
实施例1:
本实施例中当前CPU和其他CPU的所有状态的转换逻辑如图1所示。一种多核异构平台维护cache一致性的方法,包括以下步骤:
S1、依次接收多核异构平台上的N个处理核心向内存空间进行读取和/或写入的数据信息,其中,处理核心为CPU,也可以是GPU,也可以是FPGA,还可以是特定功能硬件处理模块,还可以是神经网络加速单元,等等类似的都可以。
S2、接收到某个处理核心的读写请求后,根据当期所有处理核心的cache状态,判定是否达到准备读、准备写的状态,如果是,则同意该处理核心的访问请求以及cache状态更新,进入步骤S3,如果否,则拒绝该处理核心的访问请求以及cache状态更新,进入步骤S4。
S3、处理核心发起相关的内存数据访问,更新状态,返回步骤S1。
S4、使用cache无效和cache写回操作调整状态,使得满足当前处理核心的请求,更新状态返回步骤S3。
在实施例1中,处理核心的cache状态的设定方法如下:
当为内存空间中的数据信息没有被缓存到CPU的cache中时,设定为UNCACHED状态;
当内存空间中的数据信息已经被缓存到CPU的cache中,cache中的数据信息与内存空间中的数据信息保持一致时,设定为CACHED状态;
当CPU的cache中的数据信息发生修改,修改后的数据信息没有同步到内存空间中,cache中的数据信息与内存空间中的数据信息不一致时,设定为MODIFIED状态;
当CPU的cache中的数据信息与内存空间中的数据信息不一致,cache中的数据信息无效时,设定为DIRTY状态。
实施例2:
在实施例1的基础上,实施例2的步骤S2还包括以下步骤:
S21、第n个处理核心向内存空间读取数据信息,执行准备读操作,读取数据信息完成后,执行已读操作,判定此时第n个处理核心的cache状态为CACHED;
S22、第n+1个处理核心向内存空间写入数据信息,执行准备写操作,写入数据信息完成后,执行已写操作,判定此时第n+1个处理核心的cache状态为MODIFIED,第n个处理核心的cache状态修正为DIRTY;
S23、第n+1个处理核心执行写回操作后,将第n+1个处理核心的cache状态修正为CACHED,第n个处理核心向内存空间读取数据信息,此时第n个处理核心的cache状态为DIRTY,执行失效操作,将第n个处理核心的cache状态为修正为UNCACHED。
在实施例1和实施例2中,任意一个处理核心向内存空间进行读取或写入操作时,对状态和操作加锁,同时设定其他处理核心无向内存空间进行读取或写入操作的权限。这样使得每个处理核心对共享内存的访问在状态机的控制下执行,对于状态数据本身,通过数据对象中的同步锁来进行同步,保证同一时刻只能有一个处理核心访问数据对象本身的数据。
上述两个实施例的核心是维护多核间共享数据的状态,保证各个处理核心在数据存取时具有一致的状态,按照设计的状态逻辑和状态约束,数据能在在多个核心上正确的读写和写入,使得多核异构平台上多个核心间传递数据时,可保证各处理核心的cache高度的一致性。
上述两个实施例,步骤S2中,未达到准备读、准备写的状态的情况如下:
当前处理核心的状态为DIRTY,或者存在状态为MODIFIED的其他处理核心。
上述两个实施例,步骤S3中,更新状态的步骤如下:
读数据完成后,当前处理核心的状态改为CACHED;
写数据完成后,当前处理核心的状态改为MODIFIED,状态为CACHED的其他核心的状态改为DIRTY。
上述两个实施例,步骤S4中,使用cache无效和cache写回操作调整状态的步骤如下:
如果当前处理核心的状态为DIRTY,当前处理核心执行失效操作并更新状态为UNCACHED;
如果存在状态为MODIFIED的其他处理核心,这些处理核心执行写回操作并更新状态为CACHED。
本发明所述的实施例,可通过软件或硬件实现,灵活的设计,可满足不同硬件平台的使用。作为一种底层组件,可为软件设计提供统一的多核间数据共享和数据交互方法,增强了程序的可移植性。可支持读写锁或互斥锁逻辑,在任意时刻只有一个处理核心写数据或多个核读数据,保证数据在多核访问时可控。
接下来以两个处理核心的数据读写举例说明,其步骤如下:
a、初始化一个数据对象,分配内存空间,每个处理核心的cache状态设置为UNCACHED;
b、某个处理核心,假设为X,要读取数据,执行准备读操作,状态不改变,请求锁;
c、X读取内存空间中的数据;
d、X读取完成,执行已读操作,X的cache状态设为CACHED,释放锁;
e、某个处理核心,假设为Y,要写入数据,执行准备写操作,内存空间状态不改变,请求锁;
f、Y向内存空间中写入数据;
g、Y写入数据完成,执行已写操作,Y的cache状态设为MODIFIED,X的cache状态设置为DIRTY,释放锁;
h、X读取数据,X的状态为DIRTY,执行失效操作,X的cache状态设置为UNCACHED,Y执行写回操作,Y的状态变为CACHED,重复步骤b。
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
Claims (5)
1.一种多核异构平台维护cache一致性的方法,其特征在于,包括以下步骤:
S1、依次接收多核异构平台上的N个处理核心向内存空间进行读取和/或写入的数据信息,其中,处理核心为CPU、GPU或FPGA;
S2、接收到某个处理核心的读写请求后,根据当前所有处理核心的cache状态,判定是否达到准备读、准备写的状态,如果是,则同意该处理核心的访问请求以及cache状态更新,进入步骤S3,如果否,则拒绝该处理核心的访问请求以及cache状态更新,进入步骤S4;
S3、处理核心发起相关的内存数据访问,更新状态,返回步骤S1;
S4、使用cache无效和cache写回操作调整状态,使得满足当前处理核心的请求,更新状态返回步骤S3;
步骤S2中,处理核心的cache状态的设定方法如下:
当为内存空间中的数据信息没有被缓存到CPU的cache中时,设定为UNCACHED状态;
当内存空间中的数据信息已经被缓存到CPU的cache中,cache中的数据信息与内存空间中的数据信息保持一致时,设定为CACHED状态;
当CPU的cache中的数据信息发生修改,修改后的数据信息没有同步到内存空间中,cache中的数据信息与内存空间中的数据信息不一致时,设定为MODIFIED状态;
当CPU的cache中的数据信息与内存空间中的数据信息不一致,cache中的数据信息无效时,设定为DIRTY状态;
步骤S2中,还包括以下步骤:
S21、第n个处理核心向内存空间读取数据信息,执行准备读操作,读取数据信息完成后,执行已读操作,判定此时第n个处理核心的cache状态为CACHED;
S22、第n+1个处理核心向内存空间写入数据信息,执行准备写操作,写入数据信息完成后,执行已写操作,判定此时第n+1个处理核心的cache状态为MODIFIED,第n个处理核心的cache状态修正为DIRTY;
S23、第n+1个处理核心执行写回操作后,将第n+1个处理核心的cache状态修正为CACHED,第n个处理核心向内存空间读取数据信息,此时第n个处理核心的cache状态为DIRTY,执行失效操作,将第n个处理核心的cache状态修正为UNCACHED。
2.根据权利要求1所述的一种多核异构平台维护cache一致性的方法,其特征在于,任意一个处理核心向内存空间进行读取或写入操作时,对状态和操作加锁,同时设定其他处理核心无向内存空间进行读取或写入操作的权限。
3.根据权利要求1所述的一种多核异构平台维护cache一致性的方法,步骤S2中,未达到准备读、准备写的状态的情况如下:
当前处理核心的状态为DIRTY,或者存在状态为MODIFIED的其他处理核心。
4.根据权利要求1所述的一种多核异构平台维护cache一致性的方法,步骤S3中,更新状态的步骤如下:
读数据完成后,当前处理核心的状态改为CACHED;
写数据完成后,当前处理核心的状态改为MODIFIED,状态为CACHED的其他核心的状态改为DIRTY。
5.根据权利要求1所述的一种多核异构平台维护cache一致性的方法,步骤S4中,使用cache无效和cache写回操作调整状态的步骤如下:
如果当前处理核心的状态为DIRTY,当前处理核心执行失效操作并更新状态为UNCACHED;
如果存在状态为MODIFIED的其他处理核心,这些处理核心执行写回操作并更新状态为CACHED。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010598426.7A CN111930527B (zh) | 2020-06-28 | 2020-06-28 | 一种多核异构平台维护cache一致性的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010598426.7A CN111930527B (zh) | 2020-06-28 | 2020-06-28 | 一种多核异构平台维护cache一致性的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111930527A CN111930527A (zh) | 2020-11-13 |
CN111930527B true CN111930527B (zh) | 2023-12-08 |
Family
ID=73316710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010598426.7A Active CN111930527B (zh) | 2020-06-28 | 2020-06-28 | 一种多核异构平台维护cache一致性的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111930527B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114217809B (zh) * | 2021-04-14 | 2024-04-30 | 无锡江南计算技术研究所 | 一种无横向一致性的众核精简Cache协议实现方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101958834A (zh) * | 2010-09-27 | 2011-01-26 | 清华大学 | 支持高速缓存一致的片上网络系统及数据请求方法 |
CN104991868A (zh) * | 2015-06-09 | 2015-10-21 | 浪潮(北京)电子信息产业有限公司 | 一种多核处理器系统和缓存一致性处理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160026436A1 (en) * | 2014-07-24 | 2016-01-28 | Qualcomm Incorporated | Dynamic Multi-processing In Multi-core Processors |
CN109614220B (zh) * | 2018-10-26 | 2020-06-30 | 阿里巴巴集团控股有限公司 | 一种多核系统处理器和数据更新方法 |
-
2020
- 2020-06-28 CN CN202010598426.7A patent/CN111930527B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101958834A (zh) * | 2010-09-27 | 2011-01-26 | 清华大学 | 支持高速缓存一致的片上网络系统及数据请求方法 |
CN104991868A (zh) * | 2015-06-09 | 2015-10-21 | 浪潮(北京)电子信息产业有限公司 | 一种多核处理器系统和缓存一致性处理方法 |
Non-Patent Citations (1)
Title |
---|
多核处理器Cache一致性的改进;刘柯;《西安邮电大学学报》;第20卷(第2期);第98-104页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111930527A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3974597B2 (ja) | 非対称型異種マルチプロセッサ環境でアトミック更新プリミティブを提供するための方法 | |
US20040098575A1 (en) | Processor cache memory as RAM for execution of boot code | |
EP3701377B1 (en) | Method and apparatus for updating shared data in a multi-core processor environment | |
Dubois et al. | Synchronization, coherence, and event ordering in multiprocessors | |
CN106462395B (zh) | 多线程处理器架构中的线程等待 | |
US20140337857A1 (en) | Synchronizing Multiple Threads Efficiently | |
CN101631328B (zh) | 一种对共享资源互斥访问的同步方法、装置和网络设备 | |
US20160246540A1 (en) | Scheduling of data migration | |
CN103119912A (zh) | 多处理器计算平台中的处理器间通信技术 | |
CN114580344B (zh) | 测试激励生成方法、验证方法、验证系统及相关设备 | |
US7620954B2 (en) | Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors | |
US10152436B2 (en) | Mutual exclusion in a non-coherent memory hierarchy | |
CN108932154B (zh) | 一种分布式虚拟机管理器 | |
JP2012038293A (ja) | マシンビジョン用マルチプロセッサシステムオンチップ | |
JP4566264B2 (ja) | 格納および予約命令を利用して関連アプリケーションと相互参照してキャッシュライン・ポーリングを行う方法、システム、装置、およびプログラム | |
CN103377157A (zh) | 一种用于嵌入式数控系统的双核数据通信方法 | |
US7080213B2 (en) | System and method for reducing shared memory write overhead in multiprocessor systems | |
US7353342B1 (en) | Shared lease instruction support for transient blocking synchronization | |
CN111930527B (zh) | 一种多核异构平台维护cache一致性的方法 | |
CN112346879B (zh) | 进程管理方法、装置、计算机设备及存储介质 | |
JP7449308B2 (ja) | ハードウェアアクセラレータ中の競合カーネルのためのロック回路 | |
WO2023168835A1 (en) | Improving spinlock performance with cache line demote in operating system kernel | |
US11314686B2 (en) | Hardware for supporting time triggered load anticipation in the context of a real time OS | |
CN116680229A (zh) | 一种分布式共享内存协议的操作方法 | |
Asri et al. | CASPHAr: Cache-Managed Accelerator Staging and Pipelining in Heterogeneous System Architectures |
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 |