CN116340199B - 一种地址冲突处理系统、方法、电子设备及介质 - Google Patents
一种地址冲突处理系统、方法、电子设备及介质 Download PDFInfo
- Publication number
- CN116340199B CN116340199B CN202310630265.9A CN202310630265A CN116340199B CN 116340199 B CN116340199 B CN 116340199B CN 202310630265 A CN202310630265 A CN 202310630265A CN 116340199 B CN116340199 B CN 116340199B
- Authority
- CN
- China
- Prior art keywords
- address
- force
- write
- module
- memory
- 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
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/25—Design optimisation, verification or simulation using particle-based methods
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16C—COMPUTATIONAL CHEMISTRY; CHEMOINFORMATICS; COMPUTATIONAL MATERIALS SCIENCE
- G16C10/00—Computational theoretical chemistry, i.e. ICT specially adapted for theoretical aspects of quantum chemistry, molecular mechanics, molecular dynamics or the like
-
- 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)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种地址冲突处理系统、方法、电子设备及介质;所述系统包括依次连接的处理单元、力写回模块和存储器;所述力写回模块包括:回写地址计算模块:用于根据粒子盒子号和粒子位置号生成粒子的力写回地址;所述力写回地址为粒子在存储器中的地址;第一先入先出模块:用于先入先出缓冲,缓存回写地址计算模块生成的力写回地址;第二先入先出模块:用于先入先出缓冲,缓存处理单元输入的当前力;加法器:将当前力和从存储器中读出的初始力进行相加;控制模块:实现力写回模块控制功能;本发明用于对地址冲突处理,解决在存储器读写的情况下传统存储器原子操作连续读写效率慢的问题,避免因读写冲突导致数据异常的现象。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种地址冲突处理系统、方法、电子设备及介质。
背景技术
在分子动力学FPGA模拟加速项目中,有大量的存储器读写访问操作。其核心处理单元部件处理单元(Processing Element)计算出的粒子之间的力,需要写到存储器中。一个粒子可能会跟其相邻的多个粒子之间有作用力,因此需要多次在存储器的同一个位置写入力信息,每次写入的力为当前力和初始力相加后的结果,是存储器读后写访问操作。
存储器访问的地址冲突处理用于防止对同一地址发生读写冲突,读写冲突是指对存储器RAM内某一地址同时进行读写操作,或者是连续读写时,写的结果还没有生效,就发起了读操作,出现此种情况会导致存储器RAM内该冲突地址处的数据出现不可预见的变化。
传统的存储器读后写冲突处理中采用的方法是:将存储器的“读-处理-写”三个步骤封装成一个原子操作,即进行此原子操作时,不允许其他的读写访问发生。其实施方法为:先获取当前对存储器进行访问的地址,然后检测此地址是否正在使用中,如果在使用则发生地址冲突,停止当前访问,如果没有使用,则可进行读操作;在一个时钟周期后,读出的数据有效,对此数据进行处理,需要一个时钟周期;处理完,再将数据写回到存储器中,也需要一个时钟周期。但此种方法至少需要3个时钟周期才能进行一次完整的存储器读后写操作,速率相对较慢。
发明内容
鉴于以上所述现有技术的缺点,本发明提供一种地址冲突处理系统、方法、电子设备及介质,用于对地址冲突处理,同时解决在存储器读写的情况下传统存储器原子操作连续读写效率慢的问题,避免因读写冲突导致数据异常的现象。
为实现上述效果,本发明的技术方案如下:
第一个方面,本发明提供一种地址冲突处理系统,包括依次连接的处理单元、力写回模块和存储器;所述力写回模块包括:
回写地址计算模块:用于根据粒子盒子号和粒子位置号生成粒子的力写回地址;所述力写回地址为粒子力信息存放在存储器中的地址;
第一先入先出模块:用于先入先出缓冲,缓存回写地址计算模块生成的力写回地址;
第二先入先出模块:用于先入先出缓冲,缓存处理单元输入的当前力;
加法器:将当前力和从存储器中读出的初始力进行相加;
控制模块:实现力写回模块控制功能,根据第二先入先出模块空标志信号empty,从第一先入先出模块和第二先入先出模块中读出力写回地址和当前力,产生对存储器的读写请求信号;
其中,回写地址计算模块根据处理单元发送的粒子盒子号和粒子位置号生成粒子的力写回地址,力写回地址、处理单元发出的力写回使能信号输入到第一先入先出模块进行力写回地址写入先入先出缓冲,控制模块发送的读使能信号输入到第一先入先出模块输出经过第一先入先出模块缓冲后的力写回地址到控制模块;所述当前力指处理单元所在粒子中第i个粒子所受的当前力,等于其附近第j个粒子对其作用力的矢量,i不等于j;所述初始力指存储器所在粒子中第i个粒子计算出的合力,等于其附近N个粒子对其作用力的矢量和,N大于等于零;
处理单元发送的当前力、力写回使能信号输入到第二先入先出模块进行当前力写入先入先出缓冲,控制模块发送的读使能信号输入到第二先入先出模块输出经过第二先入先出模块缓冲后的当前力到加法器,加法器对经过第二先入先出模块缓冲后的当前力、从存储器读出的初始力进行力相加后得到合力,合力写回到存储器。
控制模块根据第二先入先出模块空标志信号empty,从第一先入先出模块读出经过第一先入先出模块缓冲后的力写回地址、从第二先入先出模块读出经过第二先入先出模块缓冲后的当前力,输出读存储器使能信号、存储器读地址、存储器写地址、存储器写使能信号到存储器。
进一步的,所述第一先入先出模块、第二先入先出模块为先入先出存储器。所述存储器为RAM存储器。
进一步的,所述存储器在发生地址冲突时,分为以下三种情况:
第一类冲突情况:从存储器连续读到2个0地址时,第二个0地址读出的初始力不是期望值,因为此时上一次写回的合力还没有写到0地址,导致读出的初始力无效,发生地址冲突;
第二类冲突情况:从存储器第一次读0地址和第2次读0地址间隔一个时钟周期时,第二个读0地址读出的初始力不是期望的值,因为此时上一次写回的合力还没有写到0地址,导致读出的初始力无效,发生地址冲突;
第三类冲突情况:从存储器第一次读0地址和第2次读0地址间隔二个时钟周期时,第二个0地址读出的初始力不是期望的值,因为此时第一次写回的合力正在向0地址写数据,导致读出的初始力无效,发生地址冲突。
第三个方面,本发明提供一种地址冲突处理方法,为了解决在分子动力学项目中加法器计算出来的合力写回到存储器时发生的读写地址冲突,设计一个旧地址数组存放最近三个时钟周期的请求地址,如果当前时钟周期的请求地址与前面三个时钟周期请求地址中的一个相同,则停止下一个读请求,直到冲突的那个地址从旧地址数组中消失,再处理当前的请求,然后继续下一个请求。
进一步的,为了不影响写入存储器中合力的正确性,所述读写地址冲突的解决方法为:设定存储器在相同地址的读请求间隔至少为3个时钟周期,即:
力写回模块检测到处理单元的力写回使能信号,回写地址计算模块根据处理单元输入的粒子盒子号和粒子位置号计算出力写回地址,力写回地址输入到第一先入先出模块进行先入先出缓冲后输出第一先入先出模块力写回地址到控制模块,得到读存储器使能信号,控制模块将读存储器使能信号输入到存储器;下一个时钟周期,力写回模块从存储器读出初始力;将初始力和处理单元计算出的当前力相加,得到合力,得到合力的过程为1个时钟周期;在下一个时钟周期将合力写回存储器中;
在合力写回到存储器完成之前,力写回模块不同时出现相同地址的读存储器命令,否则发生地址冲突;设定存储器在相同地址的读请求间隔至少为3个时钟周期。
通过读写地址冲突的解决方法的设计,在发生地址冲突时,停止处理后续请求,直到当前请求处理完再继续执行后续请求。
进一步的,所述粒子中第i个粒子所受的合力等于其附近全部粒子对其作用力的矢量和。
进一步的,所述旧地址数组中数据的移动规则为:
从旧地址数组的第一个数据值开始,每个数据值下移一位,旧地址数组的第一个数据值用新的数据替换。
进一步的,所述旧地址数组工作流程包括以下步骤:步骤1:力写回模块监测力写回使能信号,如果力写回使能信号为1,表示当前有写回数请求,根据粒子盒子号和粒子位置号计算出力写回地址,然后将力写回地址和当前力分别写入到第一先入先出模块和第二先入先出模块中;
步骤2:检测第二先入先出模块是否为非空,若第二先入先出模块不为非空,即empty=1,则结束运行,否则,旧地址数组赋初始值,发送先入先出读命令,从第一先入先出模块和第二先入先出模块中读出力写回地址和当前力;
步骤3:判断上一时钟周期读出的第一先入先出模块力写回地址;如果当前第一先入先出模块力写回地址在旧地址数组中;判断第二先入先出模块是否为非空,若第二先入先出模块为非空,则旧地址数组移位,将初始值补入旧地址数组中;判断第一先入先出模块力写回地址是否在旧地址数组中,不在则返回到步骤2,否则重复当前操作;
若第二先入先出模块不为非空,则旧地址数组移位,将初始值补入旧地址数组中;判断第一先入先出模块力写回地址是否在旧地址数组中,不在则返回到步骤3,否则重复当前操作;
步骤4:若当前第一先入先出模块力写回地址不在旧地址数组中,判断第二先入先出模块是否为非空,若第二先入先出模块不为非空,则返回到步骤2;若第二先入先出模块为非空,则继续发送先入先出读命令,读出第一先入先出模块力写回地址和当前力;旧地址数组循环附值,用第一先入先出模块力写回地址补入旧地址数组中,旧地址数组保留最近的三个地址。
第三个方面,本发明提供一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行地址冲突处理方法。
第四个方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,所述计算机程序运行时执行地址冲突处理方法。
与现有技术相比,本发明技术方案的有益效果是:
本发明通过对力写回模块中回写地址计算模块、控制模块的设计,用于解决在存储器读写的情况下,传统存储器原子操作连续读写效率慢的问题,避免因读写冲突导致数据异常的现象。设计一个旧地址数组存放最近三个时钟周期的请求地址,设定存储器在相同地址的读请求间隔至少为3个时钟周期,实现了对存储器高速的读后写访问和高速的读写冲突检测,以及对地址冲突进行处理,在没有地址冲突时,实现每一个时钟周期处理一个读请求后再写请求。
附图说明
附图仅用于示例性说明,不能理解为对本发明的限制;为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
图1为本发明实施例提供的力写回模块示意图;
图2是本发明实施例提供的力写回模块中信号示意图;
图3a、3b分别是本发明实施例提供的第一类冲突情况、第一类冲突情况解决后波形图;
图4a、4b分别是本发明实施例提供的第二类冲突情况、第二类冲突情况解决后波形图;
图5a、5b分别是本发明实施例提供的第三类冲突情况、第三类冲突情况解决后波形图;
图6是本发明实施例提供的所述旧地址数组工作流程示意图;
图7是本发明实施例提供的旧地址数组的数据移动示意图;
图8是本发明实施例提供的力写回模块仿真测试的信号示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都是本发明保护的范围。
实施例1
为了便于理解,请参阅图1,本发明提供的一种地址冲突处理系统的一个实施例,包括依次连接的处理单元、力写回模块和存储器;示意图如图1,所述力写回模块包括:
回写地址计算模块:用于根据粒子盒子号和粒子位置号生成粒子的力写回地址;所述力写回地址为粒子力信息存放在存储器中的地址,力写回模块可以根据粒子力信息存放在存储器中的地址中读出初始力;
第一先入先出模块:用于先入先出缓冲,缓存回写地址计算模块生成的力写回地址;
第二先入先出模块:用于先入先出缓冲,缓存处理单元输入的当前力;
加法器:将当前力和从存储器中读出的初始力(即存储器读出的数据)进行相加;
控制模块:实现力写回模块控制功能,根据第二先入先出模块空标志信号empty,从第一先入先出模块和第二先入先出模块中读出力写回地址和当前力,产生对存储器的读写请求信号;
其中,回写地址计算模块根据处理单元发送的粒子盒子号和粒子位置号生成粒子的力写回地址,力写回地址、处理单元发出的力写回使能信号输入到第一先入先出模块进行力写回地址写入先入先出缓冲,控制模块发送的读使能信号输入到第一先入先出模块输出经过第一先入先出模块缓冲后的力写回地址到控制模块;所述当前力指处理单元所在粒子中第i个粒子所受的当前力,等于其附近第j个粒子对其作用力的矢量,i不等于j;所述初始力指存储器所在粒子中第i个粒子上一次计算出的合力,等于其附近已经计算出的N个粒子对其作用力的矢量和,N大于等于零;
处理单元发送的当前力、力写回使能信号输入到第二先入先出模块进行当前力写入先入先出缓冲,控制模块发送的读使能信号输入到第二先入先出模块输出经过第二先入先出模块缓冲后的当前力到加法器,加法器对经过第二先入先出模块缓冲后的当前力、从存储器读出的初始力进行力相加后得到合力,合力写回到存储器。
控制模块根据第二先入先出模块空标志信号empty,从第一先入先出模块读出经过第一先入先出模块缓冲后的力写回地址、从第二先入先出模块读出经过第二先入先出模块缓冲后的当前力,输出读存储器使能信号、存储器读地址、存储器写地址、存储器写使能信号到存储器。
本发明设计的力写回模块,当力写回模块接收到处理单元的力写回使能信号请求,根据粒子位置号计算出粒子在存储器中的地址,从粒子在存储器中的地址中读出初始力,初始力与当前力相加得到合力,合力写回到存储器。
作为优选的技术方案,本实施例中,所述第一先入先出模块、第二先入先出模块为先入先出存储器。
在本发明的另一个实施例中,还提供了一种地址冲突检测方法,包括:
获取存储器待使用的地址和所述地址所在层级的目的地址;
利用所述待使用的地址和所述目的地址,将所述待使用的地址与所有目的地址进行比对;
若所述目的地址中存在所述待使用的地址,则确定发生地址冲突;
若所述目的地址中不存在所述待使用的地址,则确定不发生地址冲突;
所述存储器在发生地址冲突时,分为以下三种情况:
第一类冲突情况:如图3a中箭头起点和终点所示,从存储器连续读到2个0地址时,第二个0地址读出的初始力fx1不是期望值(期望值应为fx2),因为此时上一次写回的合力FX1还没有写到0地址,导致读出的初始力fx1无效,发生地址冲突;
第二类冲突情况:如图4a中箭头起点和终点所示,从存储器第一次读0地址和第2次读0地址间隔一个时钟周期时,第二个读0地址读出的初始力fx1不是期望的值(期望值应为fx3),因为此时上一次写回的合力FX1还没有写到0地址,导致读出的初始力无效,发生地址冲突;
第三类冲突情况:如图5a中箭头起点和终点所示,从存储器第一次读0地址和第2次读0地址间隔二个时钟周期时,第二个0地址读出的初始力fx1不是期望的值(期望值应为fx4),因为此时第一次写回的合力FX1正在向0地址写数据,导致读出的初始力无效,发生地址冲突。
在本发明的另一个实施例中,还提供了一种地址冲突处理方法,为了解决在分子动力学项目中加法器计算出来的合力写回到存储器时发生的读写地址冲突,所述力写回模块设置有一个冲突检测模块,通过冲突检测模块判断力写回模块的读写操作是否在同一地址上,从而避免因读写冲突导致数据异常的现象。设计一个旧地址数组存放最近三个时钟周期的请求地址,如果当前时钟周期的请求地址与前面三个时钟周期请求地址中的一个相同,则停止下一个读请求,直到冲突的那个地址从旧地址数组中消失,再处理当前的请求,然后继续下一个请求。因此,在没有冲突时,可以实现每一个时钟周期处理一个读后写请求;在发生地址冲突时,停止处理后续请求,直到当前请求处理完再继续后续请求,进而实现了对存储器高速的读后写访问。
作为优选的技术方案,本实施例中,为了不影响写入存储器中合力的正确性,所述读写地址冲突的解决方法为:设定存储器在相同地址的读请求间隔至少为3个时钟周期,即:
力写回模块检测到处理单元的力写回使能信号(即力写回请求),回写地址计算模块根据处理单元输入的粒子盒子号和粒子位置号计算出力写回地址,力写回地址输入到第一先入先出模块进行先入先出缓冲后输出第一先入先出模块力写回地址到控制模块,得到读存储器使能信号,控制模块将读存储器使能信号输入到存储器;下一个时钟周期,力写回模块从存储器读出初始力fx;将初始力fx和处理单元计算出的当前力Fx相加,得到合力FX,得到合力FX的过程为1个时钟周期;在下一个时钟周期将合力FX写回存储器中;
在合力FX写回到存储器完成之前,力写回模块不同时出现相同地址的读存储器命令,否则发生地址冲突;设定存储器在相同地址的读请求间隔至少为3个时钟周期。解决冲突后的波形如图3b、4b、5b。
作为优选的技术方案,本实施例中,所述粒子中第i个粒子所受的合力等于其附近全部粒子对其作用力的矢量和。
作为优选的技术方案,本实施例中,作为优选的技术方案,本实施例中,如图7,所述旧地址数组中数据的移动规则为:
从旧地址数组的第一个数据值开始,每个数据值下移一位,即:旧地址数组的第三个数据值用第二个数据值替换、旧地址数组第二个数据值用第一个数据值替换、旧地址数组的第一个数据值用新的数据替换。
旧地址数组中有三个数据,初始时:旧地址数组[0] = 旧地址数组[1]= 旧地址数组[2] = 0x1ffff;
旧地址数组移动的规则是:
旧地址数组[2] = 旧地址数组[1];
旧地址数组[1] = 旧地址数组[0];
旧地址数组[0] = 第一先入先出模块力写回地址或者初始值0x1ffff;
旧地址数组[0]中为新补入的数据;所述旧地址数组移位的规则为:第一次数据移动:旧地址数组的第三个数据值用旧地址数组的第二个数据值替换;
第二次数据移动:旧地址数组的第二个数据值用旧地址数组的第一个数据值替换;
旧地址数组的第一个数据值用新的数据替换。
作为优选的技术方案,本实施例中,为达到最佳加速效果,存储器的访问设计为流水线操作;如果写回的存储器地址不同,则每一个时钟周期实现一次存储器读写操作,如图2所示:部分信号说明:
力写回地址:如:存储器0~5地址,指示了存储器6个不同的地址;
当前力Fx1~Fx6:处理单元计算出来的当前力,分别回写到0~5地址空间;
初始力fx1~fx6:从存储器0~5地址中读出的初始力;
合力FX1~FX6:当前力与初始力相加后的合力,FX=Fx+fx。
作为优选的技术方案,本实施例中,所述旧地址数组工作流程,如图6,包括以下步骤:
步骤1:力写回模块监测力写回使能信号,如果力写回使能信号为1,表示当前有写回数请求,根据粒子盒子号和粒子位置号计算出力写回地址,然后将力写回地址和当前力Fx分别写入到第一先入先出模块和第二先入先出模块中;
步骤2:检测第二先入先出模块是否为非空(即empty是否为1),若第二先入先出模块不为非空,即empty=1,则结束运行,否则,旧地址数组赋初始值0x1ffff,发送先入先出读命令,从第一先入先出模块和第二先入先出模块中读出力写回地址和当前力;
步骤3:判断上一时钟周期读出的第一先入先出模块力写回地址;如果当前第一先入先出模块力写回地址在旧地址数组中;判断第二先入先出模块是否为非空,若第二先入先出模块为非空,则旧地址数组移位,将初始值0x1ffff补入旧地址数组中;判断第一先入先出模块力写回地址是否在旧地址数组中,不在则返回到步骤2,否则重复当前操作;
若第二先入先出模块不为非空,则旧地址数组移位,将初始值0x1ffff补入旧地址数组中;判断第一先入先出模块力写回地址是否在旧地址数组中,不在则返回到步骤3,否则重复当前操作;
步骤4:若当前第一先入先出模块力写回地址不在旧地址数组中,判断第二先入先出模块是否为非空,若第二先入先出模块不为非空,则返回到步骤2;若第二先入先出模块为非空,则继续发送先入先出读命令,读出第一先入先出模块力写回地址和当前力;旧地址数组循环附值,用第一先入先出模块力写回地址补入旧地址数组中,旧地址数组保留最近的三个地址。
作为优选的技术方案,本实施例中,测试力写回模块,验证结果的仿真波形如图8,信号1~信号8分别为:时钟信号clk、力写回使能信号、粒子盒子号、粒子位置号、读存储器使能信号、存储器读地址、存储器写使能信号、存储器写地址。给出了三种情况的波形:连续三个地址不相同;连续三个地址相同,后边再跟一个不同的地址;相同地址中间间隔一个不同地址;
从仿真波形上看到,在t0~t1时间段,力写回请求对应的地址分别为8,16,24,没有地址冲突,可以实现每一个时钟周期处理一个读后写请求(读存储器使能信号连续读了3个数,写存储器使能信号连续写了3个数);在t2~t3时间段,力写回请求对应的地址分别为8,8,8,48,前面三个地址冲突,在发生地址冲突时,停止处理后续请求,直到当前请求处理完再继续后续请求,第一个读存储器使能信号请求跟第二个读存储器使能信号请求之间隔了3个时钟周期,保证了第一个写存储器使能信号先做完,不会发生读写冲突,第二个读存储器使能信号跟第三个读存储器使能信号之间也隔了3个时钟周期;在t4~t5时间段,力写回请求对应的地址分别为8,16,8,第一个地址和第三个地址冲突,波形中第三个读存储器使能信号请求跟第二个读存储器使能信号之间隔了2个时钟周期,可以避免跟第一个地址的写存储器使能信号冲突。
本发明方法用于对地址冲突处理,解决在存储器读写的情况下传统存储器原子操作连续读写效率慢的问题,避免因读写冲突导致数据异常的现象,实现了对存储器高速的读后写连续访问,并且能处理读写冲突,提升了将分子动力学项目中计算出来的力写回到存储器的效率。
在本发明的另一个实施例中,还提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得本发明实现如上任一实施例中地址冲突处理方法。
在本实施例中,适用于来实现本发明实施例的电子设备的计算机系统包括中央处理单元(Central Processing Unit,CPU),其可以根据存储在只读存储器(Read-OnlyMemory,ROM)中的程序或者从储存部分加载到随机访问存储器(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM中,还存储有系统操作所需的各种程序和数据。CPU、ROM以及RAM通过总线彼此相连。输入/输出(Input/Output,I/O)接口也连接至总线。
以下部件连接至I/O接口:包括键盘、鼠标等的输入部分;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分;包括硬盘等的储存部分;以及包括诸如LAN(Local Area Network,局域网)卡、调制解调器等的网络接口卡的通信部分。通信部分经由诸如因特网的网络执行通信处理。驱动器也根据需要连接至I/O接口。可拆卸介质,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器上,以便于从其上读出的计算机程序根据需要被安装入储存部分。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本发明的系统中限定的各种功能。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
在本实施例中,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被计算机的处理器执行时,使计算机执行如前述任一实施例提供的地址冲突处理方法。该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的,也可以是单独存在,而未装配入该电子设备中。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (9)
1.一种地址冲突处理系统,其特征在于,包括依次连接的处理单元、力写回模块和存储器,所述力写回模块包括:
回写地址计算模块:用于根据粒子盒子号和粒子位置号生成粒子的力写回地址;所述力写回地址为粒子力信息存放在存储器中的地址;
第一先入先出模块:用于先入先出缓冲,缓存回写地址计算模块生成的力写回地址;
第二先入先出模块:用于先入先出缓冲,缓存处理单元输入的当前力;
加法器:将当前力和从存储器中读出的初始力进行相加;
控制模块:实现力写回模块控制功能,根据第二先入先出模块空标志信号empty,从第一先入先出模块和第二先入先出模块中读出力写回地址和当前力,产生对存储器的读写请求信号;
其中,回写地址计算模块根据处理单元发送的粒子盒子号和粒子位置号生成粒子的力写回地址,力写回地址、处理单元发出的力写回使能信号输入到第一先入先出模块进行力写回地址写入先入先出缓冲,控制模块发送的读使能信号输入到第一先入先出模块输出经过第一先入先出模块缓冲后的力写回地址到控制模块;所述当前力指处理单元所在粒子中第i个粒子所受的当前力,等于其附近第j个粒子对其作用力的矢量,i不等于j;所述初始力指存储器所在粒子中第i个粒子计算出的合力,等于其附近N个粒子对其作用力的矢量和,N大于等于零;
处理单元发送的当前力、力写回使能信号输入到第二先入先出模块进行当前力写入先入先出缓冲,控制模块发送的读使能信号输入到第二先入先出模块输出经过第二先入先出模块缓冲后的当前力到加法器,加法器对经过第二先入先出模块缓冲后的当前力、从存储器读出的初始力进行力相加后得到合力,合力写回到存储器;
控制模块根据第二先入先出模块空标志信号empty,从第一先入先出模块读出经过第一先入先出模块缓冲后的力写回地址、从第二先入先出模块读出经过第二先入先出模块缓冲后的当前力,输出读存储器使能信号、存储器读地址、存储器写地址、存储器写使能信号到存储器;
所述力写回模块设置有一个冲突检测模块,通过冲突检测模块判断力写回模块的读写操作是否在同一地址上,从而避免因读写冲突导致数据异常的现象;设计一个旧地址数组存放最近三个时钟周期的请求地址,如果当前时钟周期的请求地址与前面三个时钟周期请求地址中的一个相同,则停止下一个读请求,直到冲突的那个地址从旧地址数组中消失,再处理当前的请求,然后继续下一个请求,在没有冲突时,实现每一个时钟周期处理一个读后写请求;在发生地址冲突时,停止处理后续请求,直到当前请求处理完再继续后续请求,进而实现了对存储器高速的读后写访问。
2.根据权利要求1所述的一种地址冲突处理系统,其特征在于,所述第一先入先出模块、第二先入先出模块为先入先出存储器。
3.根据权利要求1所述的一种地址冲突处理系统,其特征在于,所述存储器为RAM存储器。
4.根据权利要求1所述的一种地址冲突处理系统,其特征在于,所述存储器在发生地址冲突时,分为以下三种情况:
第一类冲突情况:从存储器中连续读到2个0地址时,第二个0地址读出的初始力不是期望值,因为此时上一次写回的合力还没有写到0地址,导致读出的初始力无效,发生地址冲突;
第二类冲突情况:从存储器中第一次读0地址和第2次读0地址间隔一个时钟周期时,第二个读0地址读出的初始力不是期望的值,因为此时上一次写回的合力还没有写到0地址,导致读出的初始力无效,发生地址冲突;
第三类冲突情况:从存储器中第一次读0地址和第2次读0地址间隔二个时钟周期时,第二个0地址读出的初始力不是期望的值,因为此时第一次写回的合力正在向0地址写数据,导致读出的初始力无效,发生地址冲突。
5.一种地址冲突处理方法,其特征在于,为了解决在分子动力学项目中加法器计算出来的合力写回到存储器时发生的读写地址冲突,设计一个旧地址数组存放最近三个时钟周期的请求地址,如果当前时钟周期的请求地址与前面三个时钟周期请求地址中的一个相同,则停止下一个读请求,直到冲突的那个地址从旧地址数组中消失,再处理当前的请求;
为了不影响写入存储器中合力的正确性,所述读写地址冲突的解决方法为:设定存储器在相同地址的读请求间隔至少为3个时钟周期,即:
地址冲突处理系统检测到处理单元的力写回使能信号,回写地址计算模块根据处理单元输入的粒子盒子号和粒子位置号计算出力写回地址,力写回地址输入到第一先入先出模块进行先入先出缓冲后输出第一先入先出模块力写回地址到控制模块,得到读存储器使能信号,控制模块将读存储器使能信号输入到存储器;下一个时钟周期,地址冲突处理系统从存储器读出初始力;将初始力和处理单元计算出的当前力相加,得到合力,得到合力的过程为1个时钟周期;在下一个时钟周期将合力写回存储器中;
在合力写回到存储器完成之前,地址冲突处理方法不同时出现相同地址的读存储器命令,否则发生地址冲突;设定存储器在相同地址的读请求间隔至少为3个时钟周期。
6.根据权利要求5所述的一种地址冲突处理方法,其特征在于,所述旧地址数组中数据的移动规则为:
从旧地址数组的第一个数据值开始,每个数据值下移一位,旧地址数组的第一个数据值用新的数据替换。
7.根据权利要求6所述的一种地址冲突处理方法,其特征在于,所述旧地址数组工作流程包括以下步骤:
步骤1:力写回模块监测力写回使能信号,如果力写回使能信号为1,表示当前有写回数请求,根据粒子盒子号和粒子位置号计算出力写回地址,然后将力写回地址和当前力分别写入到第一先入先出模块和第二先入先出模块中;
步骤2:检测第二先入先出模块是否为非空,若第二先入先出模块不为非空,即empty=1,则结束运行,否则,旧地址数组赋初始值,发送先入先出读命令,从第一先入先出模块和第二先入先出模块中读出力写回地址和当前力;
步骤3:判断上一时钟周期读出的第一先入先出模块力写回地址;如果当前第一先入先出模块力写回地址在旧地址数组中;判断第二先入先出模块是否为非空,若第二先入先出模块为非空,则旧地址数组移位,将初始值补入旧地址数组中;判断第一先入先出模块力写回地址是否在旧地址数组中,不在则返回到步骤2,否则重复当前操作;
若第二先入先出模块不为非空,则旧地址数组移位,将初始值补入旧地址数组中;判断第一先入先出模块力写回地址是否在旧地址数组中,不在则返回到步骤3,否则重复当前操作;
步骤4:若当前第一先入先出模块力写回地址不在旧地址数组中,判断第二先入先出模块是否为非空,若第二先入先出模块不为非空,则返回到步骤2;若第二先入先出模块为非空,则继续发送先入先出读命令,读出第一先入先出模块力写回地址和当前力;旧地址数组循环附值,用第一先入先出模块力写回地址补入旧地址数组中,旧地址数组保留最近的三个地址。
8.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行权利要求5~7任意一项所述的一种地址冲突处理方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,所述计算机程序运行时执行权利要求5~7任意一项所述的一种地址冲突处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310630265.9A CN116340199B (zh) | 2023-05-31 | 2023-05-31 | 一种地址冲突处理系统、方法、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310630265.9A CN116340199B (zh) | 2023-05-31 | 2023-05-31 | 一种地址冲突处理系统、方法、电子设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116340199A CN116340199A (zh) | 2023-06-27 |
CN116340199B true CN116340199B (zh) | 2023-10-13 |
Family
ID=86891560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310630265.9A Active CN116340199B (zh) | 2023-05-31 | 2023-05-31 | 一种地址冲突处理系统、方法、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116340199B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006046272A1 (ja) * | 2004-10-06 | 2006-05-04 | Mitsubishi Denki Kabushiki Kaisha | メモリアクセス装置 |
CN106598548A (zh) * | 2016-11-16 | 2017-04-26 | 盛科网络(苏州)有限公司 | 存储单元读写冲突的解决方法及装置 |
CN107704266A (zh) * | 2017-08-28 | 2018-02-16 | 电子科技大学 | 一种应用于解决粒子模拟并行数据竞争的归约方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9465746B2 (en) * | 2014-01-24 | 2016-10-11 | International Business Machines Corporation | Diagnostics for transactional execution errors in reliable transactions |
-
2023
- 2023-05-31 CN CN202310630265.9A patent/CN116340199B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006046272A1 (ja) * | 2004-10-06 | 2006-05-04 | Mitsubishi Denki Kabushiki Kaisha | メモリアクセス装置 |
CN106598548A (zh) * | 2016-11-16 | 2017-04-26 | 盛科网络(苏州)有限公司 | 存储单元读写冲突的解决方法及装置 |
CN107704266A (zh) * | 2017-08-28 | 2018-02-16 | 电子科技大学 | 一种应用于解决粒子模拟并行数据竞争的归约方法 |
Non-Patent Citations (2)
Title |
---|
吴连慧 ; 周建江 ; 夏伟杰 ; .基于FPGA的DDR3多端口读写存储管理设计.单片机与嵌入式系统应用.2015,(第01期),全文. * |
杨金林 ; 杨海钢 ; .可重构存储器无地址冲突的访问机理及"比特标识"方法研究.电子与信息学报.2011,(第03期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN116340199A (zh) | 2023-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7257665B2 (en) | Branch-aware FIFO for interprocessor data sharing | |
CN101410797B (zh) | 无序处理器中的事务存储器执行的方法、设备和系统 | |
US6493773B1 (en) | Data validity measure for efficient implementation of first-in-first-out memories for multi-processor systems | |
US8441495B1 (en) | Compression tag state interlock | |
US6941308B1 (en) | Methods and apparatus for accessing a doubly linked list in a data storage system | |
US20090235026A1 (en) | Data transfer control device and data transfer control method | |
JPH0358150A (ja) | メモリ制御装置 | |
CN116340199B (zh) | 一种地址冲突处理系统、方法、电子设备及介质 | |
US20220171717A1 (en) | Adaptive out of order arbitration for numerous virtual queues | |
US20010047439A1 (en) | Efficient implementation of first-in-first-out memories for multi-processor systems | |
US6212543B1 (en) | Asymmetric write-only message queuing architecture | |
EP0497986B1 (en) | Memory access system and method | |
JP2009116395A (ja) | データ形式変換装置及びデータ形式変換プログラム及びデータ形式変換方法 | |
CN115858417B (zh) | 缓存数据处理方法、装置、设备及存储介质 | |
CN111857591A (zh) | 用于执行指令的方法、装置、设备和计算机可读存储介质 | |
US8719542B2 (en) | Data transfer apparatus, data transfer method and processor | |
US6970911B2 (en) | Distributed memory type parallel computer and write data transfer end confirming method thereof | |
CN116670659A (zh) | 地址转换服务缓冲器 | |
US7421536B2 (en) | Access control method, disk control unit and storage apparatus | |
JPH03209569A (ja) | 論理シミュレーション方法 | |
US20220229664A1 (en) | Information processing device, compiling method, and non-transitory computer-readable recording medium | |
CN114896179B (zh) | 内存页的拷贝方法、装置、计算设备及可读存储介质 | |
US11829768B2 (en) | Method for scheduling out-of-order queue and electronic device items | |
Agullo et al. | A preliminary out-of-core extension of a parallel multifrontal solver | |
CN115357526A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 |
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 |