CN112100093B - 保持多处理器共享内存数据一致性的方法和多处理器*** - Google Patents
保持多处理器共享内存数据一致性的方法和多处理器*** Download PDFInfo
- Publication number
- CN112100093B CN112100093B CN202010834269.5A CN202010834269A CN112100093B CN 112100093 B CN112100093 B CN 112100093B CN 202010834269 A CN202010834269 A CN 202010834269A CN 112100093 B CN112100093 B CN 112100093B
- Authority
- CN
- China
- Prior art keywords
- shared memory
- processor
- cache
- slave
- processors
- 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 46
- 230000001360 synchronised effect Effects 0.000 claims description 8
- 238000013500 data storage Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 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
- G06F12/0815—Cache consistency protocols
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明的实施例公开一种保持多处理器共享内存数据一致性的方法和多处理器***,属于计算机技术领域,用于解决现有多处理器***中处理器访问共享内存数据不一致的问题。所述方法用于包括至少一个主处理器和至少一个从处理器的多处理器***,所述主处理器具有共享内存写入权限,所述从处理器无共享内存写入权限,各处理器通过***总线彼此相连,且共用***内存中预先划分的共享内存,所述方法包括:主处理器更新自身缓存中与共享内存对应的缓存数据,并将更新后的与共享内存对应的缓存数据写入共享内存;主处理器通知从处理器更新缓存;从处理器将自身缓存中与所述共享内存对应的缓存数据更新为当前所述共享内存中的数据。
Description
技术领域
本发明计算机技术领域,尤其涉及一种保持多处理器共享内存数据一致性的方法和多处理器***。
背景技术
在多处理器***中,***总线将多个处理器连接在一起,***内存可以被各个处理器访问。各个处理器独立运行,但有时需要相互协作来完成特定任务,为此,多个处理器可以通过访问***内存中一块公共的内存块作为共享内存,以实现数据共享。各个处理器的缓存中都存在一份共享内存数据的副本。
然而,不同的处理器读写各自的缓存会导致缓存中的数据与***内存出现差异,***运行会由于共享内存数据不一致而出错。
为解决这个问题,现有的办法是针对共享内存块禁用处理器的缓存,各处理器直接读写***内存完成对共享内存的操作,但是这样会导致处理器读写共享内存的速度严重下降。
发明内容
有鉴于此,本发明实施例提供一种保持多处理器共享内存数据一致性的方法和多处理器***,用于解决现有多处理器***中处理器访问共享内存数据不一致的问题,以及禁用缓存来实现读写内存会造成处理器性能下降的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供一种保持多处理器共享内存数据一致性的方法,用于多处理器***,所述多处理器***中包括至少一个主处理器和至少一个从处理器,所述主处理器具有共享内存写入权限,所述从处理器无共享内存写入权限,各处理器通过***总线彼此相连,且共用***内存中预先划分的共享内存,所述方法包括:
所述主处理器更新自身缓存中与所述共享内存对应的缓存数据,并将更新后的与所述共享内存对应的缓存数据写入所述共享内存;
所述主处理器通知所述从处理器更新缓存;
所述从处理器清除自身缓存中与所述共享内存对应的缓存数据,并读取当前所述共享内存中的数据写入自身与所述共享内存对应的缓存中。
结合第一方面,在第一方面的第一种实施方式中,所述主处理器通知所述从处理器更新缓存,包括:
所述主处理器向所述从处理器对应的同步寄存器写入预设控制字;
所述从处理器清除自身缓存中与所述共享内存对应的缓存数据,包括:
所述从处理器对应的同步寄存器根据所述预设控制字,触发所述从处理器清除自身缓存中与所述共享内存对应的缓存数据。
结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,多个所述从处理器各自对应一个所述同步寄存器,或者多个所述从处理器对应同一个所述同步寄存器。
结合第一方面,在第一方面的第三种实施方式中,在所述主处理器更新自身缓存中与所述共享内存对应的缓存数据之前,还包括:
确定当前多处理器***中的主处理器和从处理器;
打开所述主处理器对所述共享内存的写入权限,关闭所述从处理器对所述共享内存的写入权限。
结合第一方面的第三种实施方式,在第一方面的第四种实施方式中,所述确定当前多处理器***中的主处理器,包括:
在当前多处理器***中指定多个主处理器;
所述主处理器更新自身缓存中与所述共享内存对应的缓存数据,并将更新后的与所述共享内存对应的缓存数据写入所述共享内存,包括:
多个主处理器各自更新自身缓存中与所述共享内存对应的缓存数据;
根据预先设置的同步机制,控制本次更新缓存的多个主处理器将更新后的与所述共享内存对应的缓存数据先后写入***的共享内存中。
结合第一方面,在第一方面的第五种可能的实现方式中,在所述主处理器更新自身缓存中与所述共享内存对应的缓存数据之前,还包括:
在***内存中为所述主处理器和从处理器分配共享内存;其中,设置共享内存的大小为主处理器和从处理器缓存行大小的公倍数,且共享内存的起始地址按照所述共享内存的大小与主处理器和从处理器的缓存行对齐。
第二方面,本发明实施例提供一种一种多处理器***,包括至少一个主处理器和至少一个从处理器,所述主处理器具有共享内存写入权限,所述从处理器无共享内存写入权限,各处理器通过***总线彼此相连,且共用***内存中预先划分的共享内存;
所述主处理器,用于更新自身缓存中与所述共享内存对应的缓存数据,并将更新后的与所述共享内存对应的缓存数据写入所述共享内存;还用于在将缓存数据写入所述共享内存后,通知所述从处理器更新缓存;
所述从处理器,用于在所述共享内存更新后,清除自身缓存中与所述共享内存对应的缓存数据,并读取当前所述共享内存中的数据写入自身与所述共享内存对应的缓存中。
结合第二方面,在第二方面的第一种实施方式中,所述***还包括与所述从处理器对应的同步寄存器;
所述主处理器,具体用于通过向所述从处理器对应的同步寄存器写入预设控制字来通知所述从处理器更新缓存;
所述同步寄存器,用于根据所述预设控制字,触发对应的从处理器清除自身缓存中与所述共享内存对应的缓存数据。
结合第二方面的第一种实施方式,在第二方面的第二种实施方式中,多个所述从处理器各自对应连接一个所述同步寄存器,或者多个所述从处理器对应连接同一个所述同步寄存器。
结合第二方面,在第二方面的第三种实施方式中,所述***还包括:
主从设置单元,用于确定当前多处理器***中的主处理器和从处理器:
权限设置单元,用于打开所述主从设置单元确定的主处理器对所述共享内存的写入权限,关闭所述从处理器对所述共享内存的写入权限。
结合第二方面的第三种实施方式,在第二方面的第四种实施方式中,所述***还包括写入控制单元;
所述主从设置单元,具体用于在当前多处理器***中指定多个主处理器;
所述写入控制单元,用于在多个主处理器各自更新自身缓存中与所述共享内存对应的缓存数据后,根据预先设置的同步机制,控制本次更新缓存的多个主处理器将更新后的与所述共享内存对应的缓存数据先后写入***的共享内存中。
结合第二方面,在第二方面的第五种实施方式中,所述***还包括:
共享内存设置单元,用于在***内存中为所述主处理器和从处理器分配共享内存;其中,设置共享内存的大小为主处理器和从处理器缓存行大小的公倍数,且共享内存的起始地址按照所述共享内存的大小与主处理器和从处理器的缓存行对齐。
本发明实施例提供的一种保持多处理器共享内存数据一致性的方法及多处理器***,通过在多处理器***中设置主、从处理器,在主处理器更新自身缓存中与所述共享内存对应的缓存数据后,通过主处理器更新共享内存中的数据,随后主处理器通知从处理器更新缓存,从处理器根据主处理器的通知将共享内存中的数据更新到自身缓存中,本发明能够在主处理器缓存有更新时及时更新共享内存并通知从处理器更新缓存的共享内存数据,能够在不禁用处理器缓存的情况下实现共享内存数据的一致性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种保持多处理器共享内存数据一致性的方法流程示意图;
图2为本发明多处理器***实施例一的结构示意图;
图3为本发明多处理器***实施例二的结构示意图;
图4为本发明多处理器***实施例三的结构示意图;
图5为本发明多处理器***实施例四的结构示意图;
图6为本发明多处理器***实施例五的结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供一种保持多处理器共享内存数据一致性的方法,用于多处理器***,本发明提供的方法中,在多处理器***初始化完成之后,需要先确定当前多处理器***中的主处理器和从处理器,随后打开所述主处理器对所述共享内存的写入权限(即主处理器还可以具有对共享内存的读取权限),关闭所述从处理器对所述共享内存的写入权限(即从处理器只具有共享内存的读取权限)。即,该方法所适用的多处理器***中包括预先设置的至少一个主处理器和至少一个从处理器,所述主处理器具有共享内存写入权限,所述从处理器无共享内存写入权限,各处理器通过***总线彼此相连,且共用***内存中预先划分的共享内存。
图1为本发明实施例提供的一种保持多处理器共享内存数据一致性的方法流程示意图,如图1中所示,该方法包括:
步骤S11:主处理器更新自身缓存中与所述共享内存对应的缓存数据,并将更新后的与所述共享内存对应的缓存数据写入***内存的共享内存中;
本发明实施例中,搭建好多处理器硬件***后,先将***初始化,在步骤S11执行之前,需要预先在***内存中为所述主处理器和从处理器分配共享内存,分配共享内存需要满足两个条件:(1)设置共享内存的大小为主处理器和从处理器缓存行大小的公倍数,优选地,共享内存的大小为主处理器和从处理器缓存行大小的最小公倍数;例如,主处理器的缓存行大小为16字节,从处理器缓存行大小为8字节,则共享内存的大小可以为16字节或32字节或64字节等;(2)设置共享内存的起始地址按照所述共享内存的大小与主处理器和从处理器的缓存行对齐,例如:若主、从处理器为32位,若共享内存的大小为16字节,则共享内存的起始地址按16的倍数与缓存行对齐,共享内存的起始地址可以为0x00000000或0x00000010或0x00000020等。由于缓存更新以整行为单位,如果共享内存起始地址不与缓存行对齐,会导致行头数据被替换为异常数据,同样地如果共享内存大小不是主处理器和从处理器缓存行大小的公倍数,会导致行尾数据被替换为异常数据。
步骤S12:所述主处理器通知从处理器更新缓存;
步骤S13:所述从处理器清除自身缓存中与所述共享内存对应的缓存数据,并读取当前所述共享内存中的数据写入自身与所述共享内存对应的缓存中。
本实施例中,通过在多处理器***中设置主、从处理器,在主处理器更新自身缓存中与所述共享内存对应的缓存数据后,通过主处理器更新共享内存中的数据,随后主处理器通知从处理器更新缓存,从处理器根据主处理器的通知将共享内存中的数据更新到自身缓存中。本实施例中,主处理器负责写共享内存,从处理器只能读不能写共享内存,这样可以保证不会出现多个处理器同时写共享内存造成数据冲突的情况。本实施例能够在主处理器缓存有更新时及时更新共享内存并通知从处理器更新缓存的共享内存数据,能够在不禁用处理器缓存的情况下实现共享内存数据的一致性。
优选地,步骤S12中主处理器向所述从处理器对应的同步寄存器写入预设控制字;从处理器对应的同步寄存器根据所述预设控制字,触发所述从处理器清除自身缓存中与所述共享内存对应的缓存数据。具体地,主处理器可以通过***总线访问从处理器对应的同步寄存器(Sync Register,SynReg),通过向SynReg写数据来通知其他从处理器更新缓存,比如可以预先将SynReg定义成32位寄存器,其比特0设置为1表示需要更新缓存,当某个从处理器的同步寄存器SynReg的比特0被主处理器设置为1,则该从处理器需要将缓存中的共享内存数据丢弃,并重新从***的共享内存中加载最新的数据到缓存中。
本发明实施例中,作为一可选实施例,多处理器***中的多个从处理器可以各自对应一个同步寄存器,例如同步寄存器可以设置在每个从处理器内部,或者,同步寄存器可以作为***级资源由多个处理器共享,即多个所述从处理器对应同一个所述同步寄存器。
在一可选实施例中,在预先设置当前多处理器***中的主、从处理器时,可以指定多个主处理器,即当前多处理器***具有多个具有共享内存写入权限的主处理器。为了避免多个主处理器同时对共享内存执行写入操作时造成数据冲突,在基于具有多个主处理器的***实施本发明提供的方法时,步骤S11中,多个主处理器各自更新自身缓存中与所述共享内存对应的缓存数据,随后在多个主处理器需要往(尤其是需要同时往)共享内存写入数据时,根据预先设置的同步机制(包含多个主处理器的写入顺序),控制本次更新缓存的多个主处理器将更新后的与所述共享内存对应的缓存数据先后写入***的共享内存中。本实施例中,考虑到多个主处理器先后写入共享内存后,不同主处理器的缓存数据会出现不一致的情况,例如若有两个主处理器,第一主处理器先将自身更新的缓存中与所述共享内存对应的缓存数据写入共享内存后,第二主处理器又将自身更新的缓存中与所述共享内存对应的缓存数据写入共享内存,则第二处理器写入共享内存时,会将第一主处理器之前写入的数据覆盖掉。因此,在最后一个主处理器写入共享内存后,不仅需要通知所有从处理器更新缓存,还需要通知其他主处理器(之前写入共享内存的主处理器)也更新缓存。
或者,换个角度来说,对于具有多个主处理器的***,是为了使更多的处理器具有共享内存写入权,如果多个主处理器更新自身与所述共享内存对应的缓存数据的事件同时发生,则需要同步机制控制写入共享内存的顺序,并在最后一个主处理器写入共享内存完成后,将其他主处理器也视为从处理器,向所有从处理器和其他主处理器都发送更新缓存的通知,以便所有从处理器和其他主处理器都根据当前共享内存中的数据更新缓存,以保证缓存的共享内存数据一致化;如果多个主处理器更新自身与所述共享内存对应的缓存数据的事件并不是同时发生,例如当前只有其中一个主处理器更新了自身与所述共享内存对应的缓存数据,则直接将其他所有主处理器都视为从处理器,执行步骤S12,通知全部从处理器和其它所有主处理器更新缓存。显然,在本实施例中,还需要预先为各主处理器设置对应的同步寄存器,以便其作为从处理器接收其他主处理器发来的更新缓存通知。
进一步地,在另一可选实施例中,本发明提供的多处理器共享内存数据一致化的实现方法,还可以包括:根据预先设置的仲裁机制,将从处理器转换为主处理器或者将主处理器转换为从处理器的步骤。在转变处理器的主、从角色时,还需要同时变更该处理器的共享内存读写权限,此处不再赘述。
在一可选实施例中,步骤S12中主处理器通知从处理器更新缓存时,还向从处理器提供本次实际更新的共享内存中的具体数据存储信息,所述存储信息包括数据存储地址、大小等信息,例如:所述共享内存大小为10M,实际上本次只更新了最开始的1M数据,则主处理器通知从处理器更新缓存时,将只需要更新共享内存一开始1M的数据内容的信息提供给从处理器,则从处理器只需要更新自身缓存中与所述共享内存对应的一开始的1M大小的缓存数据即可,不需要更新整个10M的共享内存数据,这样,可以进一步提高内存数据更新速度。
本发明实施例提供的上述多处理器共享内存数据一致化的实现方法,不仅能够保证多处理器访问共享内存数据的一致性,还可以继续使用缓存来提高访问内存的速度。
对应于本发明实施例提供的多处理器共享内存数据一致化的实现方法,本发明实施例还提供一种多处理器***,如图2所示,该***包括:至少一个主处理器1和至少一个从处理器2,主处理器1具有共享内存写入权限,从处理器2无共享内存写入权限,各处理器通过***总线3彼此相连,且共用***内存中预先划分的共享内存4。其中,主处理器1,用于更新自身缓存中与共享内存4对应的缓存数据,并将更新后的与所述共享内存对应的缓存数据写入共享内存4;还用于在将缓存数据写入共享内存4后,通知从处理器2更新缓存;从处理器2,用于在共享内存4更新后,清除自身缓存中与所述共享内存对应的缓存数据,并读取当前共享内存4中的数据写入自身与所述共享内存对应的缓存中。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图3为本发明多处理器***实施例二的结构示意图。参看图3,本实施例在图2的基础上,所述多处理***还包括:与从处理器对应的同步寄存器5;其中,主处理器1,具体用于通过向从处理器2对应的同步寄存器5写入预设控制字来通知从处理器2更新缓存;同步寄存器5,用于根据所述预设控制字,触发对应的从处理器2清除自身缓存中与所述共享内存对应的缓存数据。图3中,每个从处理器2对应一个同步寄存器5,同步寄存器5可以设置于从处理器2的内部或外部。实际上,在同步寄存器5设置于从处理器2外部时,多个从处理器2也可以对应连接同一个所述同步寄存器(图中未示出),即同步寄存器可以作为***级资源由多个处理器共享,此处不再赘述。
图4为本发明多处理器***实施例三的结构示意图。参看图4,本实施例在图2所示实施例的基础上,所述多处理***还包括:
主从设置单元6,用于确定当前多处理器***中的主处理器1和从处理器2;
权限设置单元7,用于打开主从设置单元6确定的主处理器1对所述共享内存的写入权限,关闭主从设置单元6确定的从处理器2对所述共享内存的写入权限。
图5为本发明多处理器***实施例四的结构示意图。参看图5,本实施例在图4所示实施例的基础上,所述多处理***还包括写入控制单元8;其中,主从设置单元6,具体用于在当前多处理器***中指定多个主处理器1和从处理器2;写入控制单元8,用于在多个主处理器1各自更新自身缓存中与所述共享内存对应的缓存数据后,根据预先设置的同步机制,控制本次更新缓存的多个主处理器1将更新后的与所述共享内存对应的缓存数据先后写入***的共享内存4中。为了使更多的处理器具有共享内存写入权,如果多个主处理器更新自身与所述共享内存对应的缓存数据的事件同时发生,则需要同步机制控制写入共享内存的顺序,并在最后一个主处理器写入共享内存完成后,将其他主处理器也视为从处理器,向所有从处理器和其他主处理器都发送更新缓存的通知,以便所有从处理器和其他主处理器都根据当前共享内存中的数据更新缓存,以保证缓存的共享内存数据一致化;如果多个主处理器更新自身与所述共享内存对应的缓存数据的事件并不是同时发生,例如当前只有其中一个主处理器更新了自身与所述共享内存对应的缓存数据,则直接将其他所有主处理器都视为从处理器,执行步骤S12,通知全部从处理器和其它所有主处理器更新缓存。本实施例中,若通过同步寄存器来接收更新处理器的缓存通知,则每个主处理器1还各自对应一个同步寄存器5。
图6为本发明多处理器***实施例五的结构示意图。参看图6,本实施例在图2所示实施例的基础上,所述多处理***还包括:
共享内存设置单元9,用于在***内存中为主处理器1和从处理器2分配共享内存4;其中,设置共享内存4的大小为主处理器1和从处理器2缓存行大小的公倍数,且共享内存4的起始地址按照所述共享内存的大小与主处理器1和从处理器2的缓存行对齐。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种保持多处理器共享内存数据一致性的方法,其特征在于,用于多处理器***,所述多处理器***中包括至少一个主处理器和至少一个从处理器,所述主处理器具有共享内存写入权限,所述从处理器无共享内存写入权限,各处理器通过***总线彼此相连,且共用***内存中预先划分的共享内存,所述方法包括:
所述主处理器更新自身缓存中与所述共享内存对应的缓存数据,并将更新后的与所述共享内存对应的缓存数据写入所述共享内存;
所述主处理器通知所述从处理器更新缓存;所述主处理器向所述从处理器对应的同步寄存器写入预设控制字,并向从处理器提供本次实际更新的共享内存中的具体数据存储信息;
所述从处理器清除自身缓存中与所述共享内存对应的缓存数据,并读取当前所述共享内存中的数据写入自身与所述共享内存对应的缓存中;
所述从处理器清除自身缓存中与所述共享内存对应的缓存数据,包括:
所述从处理器对应的同步寄存器根据所述预设控制字,触发所述从处理器清除自身缓存中与所述共享内存对应的缓存数据;
在所述主处理器更新自身缓存中与所述共享内存对应的缓存数据之前,还包括:确定当前多处理器***中的主处理器和从处理器;所述确定当前多处理器***中的主处理器,包括:在当前多处理器***中指定多个主处理器;
所述主处理器更新自身缓存中与所述共享内存对应的缓存数据,并将更新后的与所述共享内存对应的缓存数据写入所述共享内存,包括:
多个主处理器各自更新自身缓存中与所述共享内存对应的缓存数据;
根据预先设置的同步机制,控制本次更新缓存的多个主处理器将更新后的与所述共享内存对应的缓存数据先后写入***的共享内存中。
2.根据权利要求1所述的保持多处理器共享内存数据一致性的方法,其特征在于,多个所述从处理器各自对应一个所述同步寄存器,或者多个所述从处理器对应同一个所述同步寄存器。
3.根据权利要求1所述的保持多处理器共享内存数据一致性的方法,其特征在于,在所述主处理器更新自身缓存中与所述共享内存对应的缓存数据之前,还包括:
打开所述主处理器对所述共享内存的写入权限,关闭所述从处理器对所述共享内存的写入权限。
4.根据权利要求1所述的保持多处理器共享内存数据一致性的方法,其特征在于,在所述主处理器更新自身缓存中与所述共享内存对应的缓存数据之前,还包括:
在***内存中为所述主处理器和从处理器分配共享内存;其中,设置共享内存的大小为主处理器和从处理器缓存行大小的公倍数,且共享内存的起始地址按照所述共享内存的大小与主处理器和从处理器的缓存行对齐。
5.一种多处理器***,其特征在于,包括至少一个主处理器和至少一个从处理器,以及与所述从处理器对应的同步寄存器,所述主处理器具有共享内存写入权限,所述从处理器无共享内存写入权限,各处理器通过***总线彼此相连,且共用***内存中预先划分的共享内存;
所述主处理器,用于更新自身缓存中与所述共享内存对应的缓存数据,并将更新后的与所述共享内存对应的缓存数据写入所述共享内存;还用于在将缓存数据写入所述共享内存后,通知所述从处理器更新缓存;所述主处理器具体用于通过向所述从处理器对应的同步寄存器写入预设控制字来通知所述从处理器更新缓存,并向从处理器提供本次实际更新的共享内存中的具体数据存储信息;
所述从处理器,用于在所述共享内存更新后,清除自身缓存中与所述共享内存对应的缓存数据,并读取当前所述共享内存中的数据写入自身与所述共享内存对应的缓存中;
所述同步寄存器,用于根据所述预设控制字,触发对应的从处理器清除自身缓存中与所述共享内存对应的缓存数据;
还包括主从设置单元,用于确定当前多处理器***中的主处理器和从处理器,具体用于在当前多处理器***中指定多个主处理器;
写入控制单元,用于在多个主处理器各自更新自身缓存中与所述共享内存对应的缓存数据后,根据预先设置的同步机制,控制本次更新缓存的多个主处理器将更新后的与所述共享内存对应的缓存数据先后写入***的共享内存中。
6.根据权利要求5所述的多处理器***,其特征在于,多个所述从处理器各自对应连接一个所述同步寄存器,或者多个所述从处理器对应连接同一个所述同步寄存器。
7.根据权利要求5所述的多处理器***,其特征在于,还包括:
权限设置单元,用于打开所述主从设置单元确定的主处理器对所述共享内存的写入权限,关闭所述从处理器对所述共享内存的写入权限。
8.根据权利要求5所述的多处理器***,其特征在于,还包括:
共享内存设置单元,用于在***内存中为所述主处理器和从处理器分配共享内存;其中,设置共享内存的大小为主处理器和从处理器缓存行大小的公倍数,且共享内存的起始地址按照所述共享内存的大小与主处理器和从处理器的缓存行对齐。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010834269.5A CN112100093B (zh) | 2020-08-18 | 2020-08-18 | 保持多处理器共享内存数据一致性的方法和多处理器*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010834269.5A CN112100093B (zh) | 2020-08-18 | 2020-08-18 | 保持多处理器共享内存数据一致性的方法和多处理器*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112100093A CN112100093A (zh) | 2020-12-18 |
CN112100093B true CN112100093B (zh) | 2023-11-21 |
Family
ID=73753977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010834269.5A Active CN112100093B (zh) | 2020-08-18 | 2020-08-18 | 保持多处理器共享内存数据一致性的方法和多处理器*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112100093B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896179B (zh) * | 2022-07-12 | 2022-09-27 | 统信软件技术有限公司 | 内存页的拷贝方法、装置、计算设备及可读存储介质 |
CN115599459B (zh) * | 2022-12-13 | 2023-04-07 | 成都启英泰伦科技有限公司 | 一种跨电源域多处理器运行装置及其通信方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5241664A (en) * | 1990-02-20 | 1993-08-31 | International Business Machines Corporation | Multiprocessor system |
US6480940B1 (en) * | 1998-10-30 | 2002-11-12 | Nec Corporation | Method of controlling cache memory in multiprocessor system and the multiprocessor system based on detection of predetermined software module |
US6519685B1 (en) * | 1999-12-22 | 2003-02-11 | Intel Corporation | Cache states for multiprocessor cache coherency protocols |
CN1529254A (zh) * | 2003-10-20 | 2004-09-15 | 中兴通讯股份有限公司 | 嵌入式***中主从式多处理器的引导方法 |
CN101043510A (zh) * | 2007-04-29 | 2007-09-26 | 中兴通讯股份有限公司 | Pci-e总线分布式***单板内及单板间数据通讯方法 |
CN102541805A (zh) * | 2010-12-09 | 2012-07-04 | 沈阳高精数控技术有限公司 | 一种基于共享内存的多处理器通信方法及其实现装置 |
CN105740164A (zh) * | 2014-12-10 | 2016-07-06 | 阿里巴巴集团控股有限公司 | 支持缓存一致性的多核处理器、读写方法、装置及设备 |
CN105808497A (zh) * | 2014-12-30 | 2016-07-27 | 华为技术有限公司 | 一种数据处理方法 |
CN108829631A (zh) * | 2018-04-27 | 2018-11-16 | 江苏华存电子科技有限公司 | 一种提升多核处理器的信息管理方法 |
CN108934033A (zh) * | 2017-05-26 | 2018-12-04 | 大唐移动通信设备有限公司 | 一种基站的升级、回退方法和装置 |
CN110955512A (zh) * | 2018-09-27 | 2020-04-03 | 阿里巴巴集团控股有限公司 | 缓存处理方法、装置、存储介质、处理器及计算设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004107180A1 (ja) * | 2003-05-30 | 2004-12-09 | Fujitsu Limited | マルチプロセッサシステム |
-
2020
- 2020-08-18 CN CN202010834269.5A patent/CN112100093B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5241664A (en) * | 1990-02-20 | 1993-08-31 | International Business Machines Corporation | Multiprocessor system |
US6480940B1 (en) * | 1998-10-30 | 2002-11-12 | Nec Corporation | Method of controlling cache memory in multiprocessor system and the multiprocessor system based on detection of predetermined software module |
US6519685B1 (en) * | 1999-12-22 | 2003-02-11 | Intel Corporation | Cache states for multiprocessor cache coherency protocols |
CN1529254A (zh) * | 2003-10-20 | 2004-09-15 | 中兴通讯股份有限公司 | 嵌入式***中主从式多处理器的引导方法 |
CN101043510A (zh) * | 2007-04-29 | 2007-09-26 | 中兴通讯股份有限公司 | Pci-e总线分布式***单板内及单板间数据通讯方法 |
CN102541805A (zh) * | 2010-12-09 | 2012-07-04 | 沈阳高精数控技术有限公司 | 一种基于共享内存的多处理器通信方法及其实现装置 |
CN105740164A (zh) * | 2014-12-10 | 2016-07-06 | 阿里巴巴集团控股有限公司 | 支持缓存一致性的多核处理器、读写方法、装置及设备 |
CN105808497A (zh) * | 2014-12-30 | 2016-07-27 | 华为技术有限公司 | 一种数据处理方法 |
CN108934033A (zh) * | 2017-05-26 | 2018-12-04 | 大唐移动通信设备有限公司 | 一种基站的升级、回退方法和装置 |
CN108829631A (zh) * | 2018-04-27 | 2018-11-16 | 江苏华存电子科技有限公司 | 一种提升多核处理器的信息管理方法 |
CN110955512A (zh) * | 2018-09-27 | 2020-04-03 | 阿里巴巴集团控股有限公司 | 缓存处理方法、装置、存储介质、处理器及计算设备 |
Non-Patent Citations (1)
Title |
---|
CPU缓存一致性协议MESI;枫飘雪落;《博客园》;https://www.cnblogs.com/yanlong300/p/8986041.html;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112100093A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3280207B2 (ja) | I/oチャネル・コントローラ、多重プロセッサ・システム、キャッシュ・コヒーレンシを維持する方法、i/o同期を提供する方法 | |
US6625698B2 (en) | Method and apparatus for controlling memory storage locks based on cache line ownership | |
KR100861691B1 (ko) | 미러링된 로크 캐시들을 사용한 데이터 전파 | |
US7003635B2 (en) | Generalized active inheritance consistency mechanism having linked writes | |
JPH05127995A (ja) | ローカルキヤツシユに共通のページ間の一貫性を確保する方法 | |
US6757786B2 (en) | Data consistency memory management system and method and associated multiprocessor network | |
KR20040100884A (ko) | 아토믹 업데이트 프리미티브 제공 방법, 비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템, 컴퓨터 판독 가능 기록 매체, 비동기식 프로세싱 환경에서의 동기화 방법 및 동기화 프로세서 | |
US9208088B2 (en) | Shared virtual memory management apparatus for providing cache-coherence | |
CN103154909A (zh) | 分布式高速缓冲存储器一致性协议 | |
CN112100093B (zh) | 保持多处理器共享内存数据一致性的方法和多处理器*** | |
US10929293B2 (en) | Atomic operations for fabric shared memories | |
US20120124297A1 (en) | Coherence domain support for multi-tenant environment | |
CN114416387A (zh) | 基于同构多核的多操作***及通信方法、芯片 | |
US8732410B2 (en) | Method and apparatus for accelerated shared data migration | |
KR101695845B1 (ko) | 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치 | |
US6021466A (en) | Transferring data between caches in a multiple processor environment | |
US20180189181A1 (en) | Data read method and apparatus | |
JPWO2010052799A1 (ja) | 情報処理装置及びメモリ制御装置 | |
EP2979192B1 (en) | Implementing coherency with reflective memory | |
EP0396940B1 (en) | Cache memory and related consistency protocol | |
JP2007241601A (ja) | マルチプロセッサシステム | |
US11360906B2 (en) | Inter-device processing system with cache coherency | |
CN116685958A (zh) | 一种访问数据的方法和装置 | |
JPH09190375A (ja) | 共有メモリ管理方法 | |
US11086660B2 (en) | Server virtual address space |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information |
Address after: 300 000 Tianjin Binhai New Area Tianjin Huayuan Industrial Zone No. 18 Haitai West Road North 2-204 industrial incubation-3-8 Applicant after: Haiguang Information Technology Co.,Ltd. Address before: 300 000 Tianjin Binhai New Area Tianjin Huayuan Industrial Zone No. 18 Haitai West Road North 2-204 industrial incubation-3-8 Applicant before: HAIGUANG INFORMATION TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |