CN106407132B - 一种基于共享存储器的数据通信同步方法 - Google Patents
一种基于共享存储器的数据通信同步方法 Download PDFInfo
- Publication number
- CN106407132B CN106407132B CN201610830324.7A CN201610830324A CN106407132B CN 106407132 B CN106407132 B CN 106407132B CN 201610830324 A CN201610830324 A CN 201610830324A CN 106407132 B CN106407132 B CN 106407132B
- Authority
- CN
- China
- Prior art keywords
- data
- identification
- core
- reading
- data block
- 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
Images
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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
Abstract
本发明属于集成电路设计技术领域,具体为一种基于共享存储器的数据通信同步方法。在基于总线互连的多核SoC系统中,多个处理器之间的数据通信通常通过共享存储器来实现。本发明利用多核SoC实现并行GPDT算法,在矩阵运算中将各个处理器的计算结果利用共享存储器进行拼接或累加来构造完整结果。对于需要结果拼接的通信过程,根据每个处理器分配的工作量将共享地址空间合理地进行分割,使得每个处理器与分割之后的地址空间片段一一对应,将计算结果写入对应的地址空间;而对于需要结果累加的通信过程,则每个处理器覆盖写入同一块地址空间。为了避免数据发生冲突,本发明提供“检测标识‑修改标识‑访问存储‑还原标识”的数据同步方法,这样大大降低了发生数据冲突的概率。
Description
技术领域
本发明属于集成电路设计技术领域,具体为一种基于共享存储器的数据通信同步方法。
背景技术
在共享存储的多核处理器中,一般会引入cache结构将共享存储空间的数据缓存到本地,利用其本身的结构特性来加速多核获取数据的过程。由于每个处理器看到的存储器视图都是通过本地cache得到的,因此对于同一个存储位置的数据来说,不同的处理器可能会获取到不同的数据值。在多核处理器设计中,必须引入cache一致性维护机制,确保每个处理器核对存储器中同一位置的读取操作总能获得最新写入的值。随着多核(多线程)之间数据交互模式的日趋复杂,能否提供高效的cache一致性维护机制,直接影响到多线程工作负载在多核上的运行效率及正确性。
为了解决cache一致性问题,人们陆续提出了许多方案,其中公认比较有效并为商业多处理器系统所采用的有基于总线监听的MESI(或MOESI)协议和基于目录的协议等。
通过引入cache来提高处理器访问数据的速度的代价对于对数据访问速度要求不高的系统来说是比较高昂的,因为需要解决维护cache一致性的问题。本发明需要解决的是在不引入cache的情况下,即处理器之间的数据通信仅通过共享存储器来实现,如何来确保多核之间数据通信的同步问题。基于本发明的多核SoC需要实现的是并行GPDT算法,每个处理器负责矩阵运算的一部分,然后将各个处理器的计算结果进行拼接或累加来构造完整结果。
发明内容
本发明的目的在于提供一种在基于共享存储器的多核片上系统中解决多核之间数据通信的同步问题的方法。
对于结果拼接的通信过程,根据每个处理器分配的工作量来将共享地址空间分割,使得每个处理器与分割后的地址空间片段一一对应,每个处理器只需将本核计算得到的数据块写入本核对应的地址空间即可;对于结果累加的通信过程,则无需将地址空间分割,每个处理器都从同一个起始地址开始覆盖写入数据即可。在多个核对共享存储器进行读写时,为了避免数据发生冲突,包括避免每个处理器在其他核写入数据之前读取或者在其他核读取过程中写入,本发明设计了一种双标识位的数据同步方法,即每个处理器按照“检测标识-修改标识-访问存储-还原标识”的机制来工作。
为了对共享存储器的数据读写操作进行同步,本发明为每个处理器的每个共享数据块设计一个2 bit的标识位,用来表征该数据块对于其他处理器来说是否可读可写的情况;例如,标识位可设置如下:00,不可读不可写;01,不可读可写;10,可读不可写;11,可读可写。
设SoC系统共有N个处理器,则对于共享存储器中的每个共享数据块来说有2N bit的标识位;当某个处理器开始对共享存储器中某个数据块进行读写时,基于双标识的数据同步方法为:
读数据,具体步骤为:
(1)检测标识:读取标识并检测,如果数据不可读,等待;否则,进入步骤(2);
(2)修改标识:将读取标识暂存,并修改本核对应的标识为不可写;
(3)访问存储:将该数据块中的数据读取到本地存储器中;
(4)还原标识:将标识还原到检测标识之前的状态。
写数据,具体步骤为:
(1)检测标识:读取标识并检测,如果数据不可写,等待;否则,进入步骤(2);
(2)修改标志:将读取标识暂存,并修改本核对应的标识为不可读不可写;
(3)访问存储:将本地数据写入该核对应的数据块中;
(4)还原标识:将本核对应的标识改为不可读可写。
冗余写:
基于上述双标识数据同步规则来实现基于共享存储器的多核系统之间的通信,仍然有比较小的概率发生数据冲突,主要发生在标识的读写过程,因为每个核对标识的读取和修改之间存在标识的判断逻辑,会间隔一段时间,如果某个核需要写入共享存储器,在读取标识之后进行判断,检测到该数据块可读可写,但还未修改标识的时候,另外一个核需要读取共享存储器,对标识进行读取则检测到该数据块可读,那么会发生一个核写数据同时另一个核读数据的情况,很可能使得读取到的数据发生错误。为了避免这种数据冲突,本发明在每次读取标识之后添加一个冗余写标识的操作,将标识全部设置为不可读不可写,例如将全部标识置为00,即读取标识之后将标识锁住,等待标识的判断逻辑完成之后,再由本核对标识进行还原或者修改。这样大大降低了发生数据冲突的概率。
附图说明
图1:共享存储器结构(a)结果拼接(b)结果累加。
图2:算法中各函数表示的意义。
具体实施方式
下面结合附图,对本发明作进一步的描述。
本发明基于在多核SOC上实现并行GPDT算法。首先将每个需要共享的数据块在共享存储器中分配一块地址空间,对于结果拼接的通信过程,根据每个处理器分配到的工作量来将共享地址空间分割,使得每个处理器与分割之后的地址空间片段一一对应,每个处理器只需将本核计算得到的数据块写入本核对应的地址空间;对于结果累加的通信过程,则无需将地址空间分割,每个处理器从同一个起始地址开始覆盖写入,如图1所示。
为每个处理器对应的共享数据块设计一个2bit的标识位,用来表征该数据块对于其他处理器来说是否可读可写的情况,标识位设置如表1所示:00,不可读不可写;01,不可读可写;10,可读不可写;11,可读可写。
如果多核系统中有8个处理器,那么对于每个共享数据块来说共需要16bit的标识位来表征该数据块对于每个处理器是否可读可写的情况,该标识位也存储在共享存储器中。
当某个处理器开始对共享存储器中某个数据块进行读写时,按照如下“检测标识-修改标识-访问存储-还原标识”的数据同步机制来进行。
1、读数据,具体步骤为:
(1)检测标识:读取标识并检测,如果有任何一个核对应的标识位00/01,则表示该数据块不可读,等待;否则进入步骤(2);
(2)修改标识:如果该数据块可读,则先将读取的标识暂存,再将本核对应的标识改为10,表示该数据块正在被读取;
(3)访问存储:将该数据块中的数据读取到本地存储器中;
(4)还原标识:将标识还原到检测标识之前的状态。
2、写数据,具体步骤为:
(1)检测标识:读取标识并检测,如果有任何一个核对应的标识位为00/10,则表示该数据块不可写,等待;否则进入步骤(2);
(2)修改标识:如果该数据块可写,则先将读取的标识暂存,再将本核对应的的标识修改为00,表示该数据正在被写入;
(3)访问存储:将本地数据写入该核对应的数据块中;
(4)还原标识:将本核对应的标识改为01。
注意,写入数据后并没有将标识还原为检测标识之前的状态,而是置为01.考虑到通信同步,是由主核来负责检测标识,当所有核的标识位都为01时,才由主核将负责将所有标识置为11。
另外,由于处理器核对标识位的读取和修改之间存在判断逻辑,中间存在一段时间的间隔。如果某个核需要写入共享存储器,在读取标识之后,检测到该数据块可读可写,但还未修改标识的时候,另一个核需要读取共享存储器,就会检测该数据块可读,这时就会发生数据边写边读的情况,从而使另一个核读取到的数据发生错误,如图2所示。图2中各函数的意义如表2所示。为了避免这种情况发生,采取的措施是在每次读取标识位之后添加一个冗余写标识的操作,将全部标识置为00,对所有处理器不可读不可写,等待标识的判断逻辑完成之后,再由本核对标识进行还原或者修改,大大降低了数据发生冲突的概率。
添加冗余写操作之后的完整的数据同步机制如下:
1、读数据,具体步骤为:
(1)检测标识:读取标识,将共享存储器中所有标识置为00,检测读取到的标识,如果有任何一个核对应的标识位00/01,则表示该数据块不可读,还原标识,等待;否则进入2;
(2)修改标识:如果该数据块可读,则先将读取的标识暂存,再将本核对应的标识改为10,表示该数据块正在被读取;
(3)访问存储:将该数据块中的数据读取到本地存储器中;
(4)还原标识:将标识还原到检测标识之前的状态。
2、写数据,具体步骤为:
(1)检测标识:读取标识,将共享存储器中所有标识置为00,检测读取到的标识,如果有任何一个核对应的标识位为00/10,则表示该数据块不可写,还原标识,等待;否则进入2;
(2)修改标识:如果该数据块可写,则先将读取的标识暂存,再将本核对应的的标识修改为00,表示该数据正在被写入;
(3)访问存储:将本地数据写入该核对应的数据块中;
(4)还原标识:将本核对应的标识改为01;
(5)还原标识(仅主核):读取并检测所有核的标识,当所有核的标识位都为01时,将所有标识还原为11;否则,等待。
表1
表2
Claims (1)
1.一种基于共享存储器的数据通信同步方法,是基于双标识数据的,其特征在于,为每个处理器的每个共享数据块设计一个2 bit的标识位,用来表征该数据块对于其他处理器来说是否可读可写的情况;
设SoC系统共有N个处理器,则对于共享存储器中的每个共享数据块来说有2N bit的标识位;当某个处理器开始对共享存储器中某个数据块进行读写时,基本双标识的数据同步方法为:
读数据,具体步骤为:
(1)检测标识:读取标识并检测,如果数据不可读,等待;否则,进入步骤(2);
(2)修改标识:将读取标识暂存,并修改本核对应的标识为不可写;
(3)访问存储:将该数据块中的数据读取到本地存储器中;
(4)还原标识:将标识还原到检测标识之前的状态;
写数据,具体步骤为:
(1)检测标识:读取标识并检测,如果数据不可写,等待;否则,进入步骤(2);
(2)修改标志:将读取标识暂存,并修改本核对应的标识为不可读不可写;
(3)访问存储:将本地数据写入该核对应的数据块中;
(4)还原标识:将本核对应的标识改为不可读可写;
每次读取标识之后添加一个冗余写标识的操作,将标识全部设置为不可读不可写,即读取标识之后将标识锁住,等待标识的判断逻辑完成之后,再由本核对标识进行还原或者修改。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610830324.7A CN106407132B (zh) | 2016-09-19 | 2016-09-19 | 一种基于共享存储器的数据通信同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610830324.7A CN106407132B (zh) | 2016-09-19 | 2016-09-19 | 一种基于共享存储器的数据通信同步方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106407132A CN106407132A (zh) | 2017-02-15 |
CN106407132B true CN106407132B (zh) | 2020-05-12 |
Family
ID=57997011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610830324.7A Active CN106407132B (zh) | 2016-09-19 | 2016-09-19 | 一种基于共享存储器的数据通信同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106407132B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741137B (zh) * | 2022-05-09 | 2024-02-20 | 潍柴动力股份有限公司 | 一种基于多核微控制器的软件启动方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840390A (zh) * | 2009-03-18 | 2010-09-22 | 中国科学院微电子研究所 | 适用于多处理器系统的硬件同步电路结构及其实现方法 |
CN102396171A (zh) * | 2009-02-03 | 2012-03-28 | 康宁光缆系统有限责任公司 | 基于光纤的分布式天线系统、组件和用于监视和配置基于光纤的分布式天线系统、组件的相关方法 |
CN102521201A (zh) * | 2011-11-16 | 2012-06-27 | 刘大可 | 多核数字信号处理器片上系统及数据传输方法 |
CN103440225A (zh) * | 2013-08-21 | 2013-12-11 | 复旦大学 | 一种可重构单指令多进程的多核处理器及方法 |
WO2016134380A1 (en) * | 2015-02-20 | 2016-08-25 | Pristine Machine, LLC | Method to split data operational function among system layers |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7546423B2 (en) * | 2003-09-02 | 2009-06-09 | Sirf Technology, Inc. | Signal processing system control method and apparatus |
-
2016
- 2016-09-19 CN CN201610830324.7A patent/CN106407132B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102396171A (zh) * | 2009-02-03 | 2012-03-28 | 康宁光缆系统有限责任公司 | 基于光纤的分布式天线系统、组件和用于监视和配置基于光纤的分布式天线系统、组件的相关方法 |
CN101840390A (zh) * | 2009-03-18 | 2010-09-22 | 中国科学院微电子研究所 | 适用于多处理器系统的硬件同步电路结构及其实现方法 |
CN102521201A (zh) * | 2011-11-16 | 2012-06-27 | 刘大可 | 多核数字信号处理器片上系统及数据传输方法 |
CN103440225A (zh) * | 2013-08-21 | 2013-12-11 | 复旦大学 | 一种可重构单指令多进程的多核处理器及方法 |
WO2016134380A1 (en) * | 2015-02-20 | 2016-08-25 | Pristine Machine, LLC | Method to split data operational function among system layers |
Non-Patent Citations (1)
Title |
---|
一种基于共享存储器的通信同步机制的实现方式;罗康义;《船舶电子工程》;20041231;89-92页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106407132A (zh) | 2017-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8819684B2 (en) | Synchronizing multiple threads efficiently | |
US9519652B2 (en) | Method, apparatus, and system for operating shared resource in asynchronous multiprocessing system | |
CN104572568B (zh) | 读锁操作方法、写锁操作方法及系统 | |
US20060225074A1 (en) | Method and apparatus for communication between two or more processing elements | |
CN103279428B (zh) | 一种显式的面向流应用的多核Cache一致性主动管理方法 | |
EP3230861B1 (en) | Technologies for fast synchronization barriers for many-core processing | |
CN103092788A (zh) | 多核处理器及数据访问方法 | |
CN104813293B (zh) | 使用动态分配的脏掩码空间的存储器管理 | |
KR20160138025A (ko) | 데이터를 프로세싱하기 위한 방법 및 프로세서 | |
CN103729304A (zh) | 数据处理方法及装置 | |
US20150012714A1 (en) | Method and System for Multiple Processors to Share Memory | |
US10733101B2 (en) | Processing node, computer system, and transaction conflict detection method | |
US9015436B2 (en) | Performing an atomic operation without quiescing an interconnect structure | |
CN113032162B (zh) | 一种基于共享内存备份机制的多进程通讯方法 | |
US20070050527A1 (en) | Synchronization method for a multi-processor system and the apparatus thereof | |
CN105677468A (zh) | 缓存及其设计方法以及利用该缓存的调度方法和调度装置 | |
CN113778338A (zh) | 分布式存储数据读取效率优化方法、系统、设备和介质 | |
US9405477B2 (en) | Method and system for maintaining release consistency in shared memory programming | |
CN106407132B (zh) | 一种基于共享存储器的数据通信同步方法 | |
CN104809093A (zh) | 对串行接口传输的数据进行处理的方法及装置 | |
US10216634B2 (en) | Cache directory processing method for multi-core processor system, and directory controller | |
EP3232320A1 (en) | Transaction conflict detection method and apparatus and computer system | |
US9158682B2 (en) | Cache memory garbage collector | |
CN105183668A (zh) | 缓存刷新方法及装置 | |
KR20230000601A (ko) | 불균일 기억 장치 접근 기반의 메모리 관리 시스템 및 관리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |