CN112069091B - 一种应用于分子动力学模拟软件的访存优化方法及装置 - Google Patents
一种应用于分子动力学模拟软件的访存优化方法及装置 Download PDFInfo
- Publication number
- CN112069091B CN112069091B CN202010828235.5A CN202010828235A CN112069091B CN 112069091 B CN112069091 B CN 112069091B CN 202010828235 A CN202010828235 A CN 202010828235A CN 112069091 B CN112069091 B CN 112069091B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- access
- line
- 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/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/0877—Cache access modes
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N99/00—Subject matter not provided for in other groups of this subclass
- G06N99/007—Molecular computers, i.e. using inorganic molecules
-
- 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)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种应用于分子动力学模拟软件的访存优化方法及装置,该方法包括:基于运行平台的从核阵列的架构,将每个从核的本地存储空间分别划分为第一缓存区、第二缓存区和第三缓存区;基于访存数据的总量大小和访存是否规则对数据访存模式进行分类,根据访存模式将访存数据分别存入对应的缓存区;在第一缓存区中,采用哈希映射的方式进行数据映射查找,采用链地址法解决数据冲突,并利用从核之间的寄存器通信进行数据共享;在第二缓存区中,采用双缓冲技术批量访问规则数据,隐藏从核和主存的通信开销。本发明减小了查找开销,提高了空间利用率和命中率,可有效提升程序运行效率。
Description
技术领域
本发明涉及访存优化技术领域,特别涉及一种应用于分子动力学模拟软件的访存优化方法及装置。
背景技术
MD(molecular dynamics,分子动力学)是通过一套建立在经典牛顿运动定律基础上的分子模拟方法。针对BCC(body-centered cubic,体心立方)结构特点,大规模MD并行模拟软件Crystal-MD使用的数据结构是Lattice Neighbor List。该数据结构是依据原子的空间分布顺序,将原子的位置、速度等信息依次存储在相应数组的相应位置上,使得数组的索引与空间上的晶格点一一对应。由于原子的信息是根据原子空间分布的顺序规则地存储在数组中,因此空间上与原子相互作用的邻居原子同样规则地分布在数组中。根据截断半径和晶格常数,程序中可以计算出中心原子的索引与邻居原子在数组中索引的偏移量。基于BCC结构特点,在整个模拟过程中原子基本上都固定在晶格点上。在晶格点上要发送给邻居进程作为其ghost区域的原子在整个模拟过程中都是确定的。因此,在模拟开始时,程序计算出需要发送给邻居进程或从邻居进程接收原子的索引,并将这些索引存储在数组中。在之后的每个时间步不需要再进行计算,只需要根据存储在数组中的索引,发送和接收原子信息即可。
Crystal-MD在计算过程中涉及到的数据访存有规则访存和离散访存。文献1(张凯,异构多核平台访存优化研究与应用[D],北京科技大学,2018)结合神威·太湖之光平台提出了一种应用于Crystal-MD的访存优化方法,即将神威·太湖之光上从核的LDM(LocalData Memory,本地存储空间)划分为SWC(Software Cache,软件缓存)和DAC(DirectAccess Cache,直接访问区域)两个区域,在不同的区域中分别通过软件Cache技术和双缓冲技术来优化计算过程中的离散访存和规则访存,有效地提高了数据重用性,减少了访存次数。
上述文献1在设计软件Cache结构时采取的冲突解决方式是开放地址法线性探测的方式,即当查询数据关键字的哈希地址出现冲突时,地址加一继续查询,直到遇到空行。所以,需要预留空行作为SWC缺失的标志,这势必会浪费一定的空间。而且由于采用线性探测法,可能会出现探索次数过多也未能找到数据,数据查询时间开销可能会很大。此外,该文献提出的访存优化方法没有充分利用神威·太湖之光从核阵列的架构特性。因此,需要结合神威·太湖之光平台对Crystal-MD程序进行进一步的访存优化。
发明内容
本发明提供了一种应用于分子动力学模拟软件的访存优化方法及装置,以至少部分解决现有的访存优化方法所存在的上述技术问题。
为解决上述技术问题,本发明提供了如下技术方案:
一方面,本发明提供了一种应用于分子动力学模拟软件的访存优化方法,该应用于分子动力学模拟软件的访存优化方法包括:
基于分子动力学模拟软件运行平台的从核阵列的架构,将所述运行平台的每个从核的本地存储空间分别划分为第一缓存区、第二缓存区以及第三缓存区;
基于访存数据的总量大小和访存是否规则,对访存数据的访存模式进行分类,根据访存数据的访存模式将访存数据分别存入对应的缓存区中;
在所述第一缓存区中,采用哈希映射的方式进行数据映射查找,采用链地址法解决数据冲突,并利用从核之间的寄存器通信进行数据共享;在所述第二缓存区中,采用双缓冲技术批量访问规则数据,隐藏从核和主存的通信开销。
其中,所述第一缓存区用于存放离散访存的数据,所述第二缓存区用于存放规则访存的数据,所述第三缓存区用于存放本地临时变量数据。
其中,基于访存数据的总量大小和访存是否规则对访存数据的访存模式进行分类,根据访存数据的访存模式将访存数据分别存入对应的缓存区中,包括:
若访存数据的总量小于所述第二缓存区的可用空间,确定访存数据的访存模式为第一类模式,将访存数据存放在所述第二缓存区;
若访存数据的总量大于所述第二缓存区的可用空间且访存为规则访存,确定访存数据的访存模式为第二类模式,将访存数据存放在所述第二缓存区;
若访存数据的总量大于所述第二缓存区的可用空间且访存为不规则访存,确定访存数据的访存模式为第三类模式,将访存数据存放在所述第一缓存区。
其中,在所述第一缓存区中采用预设的软件Cache数据结构存储数据;
其中,所述软件Cache数据结构的Cache行包括索引行和数据行;其中,所述索引行包括对应数据行的唯一标志符,哈希映射采用链地址法时所使用的前、后指针,根据最近最少使用LRU替换策略而记录的最近的数据访问顺序。
其中,所述采用哈希映射的方式进行数据映射查找,包括:
计算出待查询数据的查询关键字所对应的哈希值,并且获取以计算出的哈希值为关键字的链表头指针;
若计算出的哈希值没有相应的链表,则从主存中读取所述待查询数据至所述第一缓存区,并采用LRU替换策略更新第一缓存区数据的访问顺序;
若Cache命中且当前Cache索引行的关键字与查询关键字的哈希值相等,则根据变量下标索引返回值,采用LRU替换策略更新第一缓存区数据的访问顺序;
若Cache未命中且当前Cache索引行不是链表的尾指针,则更新当前哈希值为链表下一个Cache索引行,以继续查询所述待查询数据;若当前Cache索引行是链表的尾指针,则从主存中读取所述待查询数据至所述第一缓存区,并根据LRU替换策略更新第一缓存区数据的访问顺序。
其中,所述第一缓存区与主存的通信方式为:
获取还没有存储数据的Cache空行或者是需要替换的Cache行,以将主存中获取的数据填入所获取的Cache空行或者需要替换的Cache行中;
通过DMA方式访问主存,批量传输数据,从主存中读取一个Cache行的数据至所述第一缓存区中;并在DMA传输数据的同时,调用LRU替换策略,更新第一缓存区数据的访问顺序,并更新Cache行的索引信息;
在数据传输完成后,获取此次查询到的数据。
其中,所述更新Cache行的索引信息,包括:
若写入数据的Cache行为空行,则直接将其加入到新Hash链表中;
若写入数据的Cache行不是空行,则将其从原Hash链表中删除;若其为原Hash链表的头指针,则更改Cache行对应的偏移数组Cache_Offset中原Hash链表对应的头指针为该Hash链表中第二个Cache索引行;
将Cache索引行添加到新的Hash链表中时,若其在新Hash链表中为头指针,则更新Cache行对应的Cache_Offset数组当前哈希值所对应的头指针。
其中,所述LRU替换策略,包括:
若Cache命中,则将当前查询数据所命中的Cache行从LRU链表中删除,将其连接到LRU链表的尾部,使其成为尾指针;
若Cache未命中,则从主存中读取当前查询数据到Cache空行,并将对应的Cache空行连接到LRU链表尾部成为尾指针;或从主存中读取当前查询数据到最近未访问的Cache行,同时修改头指针,使其指向LRU的第二个节点,并将填入数据的新行连接到LRU链表尾部,使其指向LRU的最后一个Cache行。
其中,所述利用从核之间的寄存器通信进行数据共享,包括:
若查询的数据在当前从核中,则发送信息告知对方从核不需要数据;
处理对方发送的消息,避免同组从核获取数据失败;若查询数据在同组从核的第一缓存区中,则将包含查询关键字的消息发送给同组从核,并进入等待状态;接收同组从核发送的消息并处理,获取所需数据;若收到同组从核发送的消息包含查询关键字,则当前从核根据查询关键字获取数据,并通过寄存器通信返回一个响应信息;若收到的同组从核发送的消息为响应信息,则接收数据;若接收到的同组从核发送的消息为一个空信息,则不需要回复消息。
另一方面,本发明还提供了一种应用于分子动力学模拟软件的访存优化装置,所述访存优化装置包括至少一个存储器和处理器;所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现上述方法。
又一方面,本发明还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现上述方法。
本发明提供的技术方案带来的有益效果至少包括:
本发明设计了一种新的软件Cache结构,使用链地址法解决了数据冲突问题,减少了离散数据的平均访存时间,在一定程度上弥补了现有的软件Cache查找开销过大、空间利用率低等不足;并且本发明实现了SWC共享,增大了软件Cache容量,提高了命中率;从而可有效地提升Crystal-MD程序的运行效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的应用于分子动力学模拟软件的访存优化方法的流程示意图;
图2为本发明实施例提供的从核LDM划分示意图;
图3为本发明实施例提供的划分的数据访存模式及对应存储方式示意图;
图4为本发明实施例提供的软件Cache结构的Cache行格式示意图;
图5为本发明实施例提供的软件Cache结构示意图;
图6为本发明实施例提供的SWC共享示意图;
图7为本发明实施例提供的共享前后SWC命中率对比图;
图8为本发明实施例提供的原子规模为100*100*100的Crystal-MD程序运行时间对比图;
图9为本发明实施例提供的原子规模为400*400*400的Crystal-MD程序运行时间对比图;
图10为本发明实施例提供的原子规模为1600*1600*1600的Crystal-MD程序运行时间对比图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
第一实施例
本实施例提供了一种应用于分子动力学模拟软件的访存优化方法,本实施例结合神威·太湖之光平台,充分利用其从核阵列的架构特性,设计了一种新的软件Cache结构,对Crystal-MD计算过程中涉及到的数据访存进行访存优化。
该方法可以由电子设备实现,该电子设备可以是终端或者服务器。该应用于分子动力学模拟软件的访存优化方法的执行流程如图1所示,包括以下步骤:
S101,基于分子动力学模拟软件运行平台的从核阵列的架构,将运行平台的每个从核的本地存储空间分别划分为第一缓存区、第二缓存区和第三缓存区;
其中,如图2所示,在本实施中,划分出的第一缓存区用于存放离散访存的数据,这部分称之为SWC(Software Cache,软件Cache),划分出的第二缓存区用于存放规则访存的数据,这部分称之为RAB(Regular Access Buffer,规则访存缓存区),划分出的第三缓存区则用于存放本地临时变量等其他数据。
S102,基于访存数据的总量大小和访存是否规则,对访存数据的访存模式进行分类,根据访存数据的访存模式将访存数据分别存入对应的缓存区中;
其中,通过分析Crystal-MD程序中主要访存变量,本实施例将数据访存模式划分为三个类型,如图3所示,若访存数据的总量小于RAB可用空间,确定访存数据的访存模式为第一类模式,将访存数据存放在RAB;若访存数据的总量大于RAB可用空间且访存为规则访存,确定访存数据的访存模式为第二类模式,将访存数据存放在RAB;若访存数据的总量大于RAB可用空间且访存为不规则访存,确定访存数据的访存模式为第三类模式,将访存数据存放在SWC。
S103,在第一缓存区中,采用哈希映射的方式进行数据映射查找,采用链地址法解决数据冲突,并利用从核之间的寄存器通信进行数据共享;在第二缓存区中,采用双缓冲技术批量访问规则数据,隐藏从核和主存的通信开销。
其中,本实施例在SWC中采用如图4和图5所示的新的软件Cache数据结构存储数据;其中,flag是定义的空标志,Cache行结构中的tag为数据行唯一标志符,pre、next为哈希映射采用链地址法时所使用的前后指针,l_pre、l_next为根据最近最少使用LRU替换策略而记录的最近的数据访问顺序。
本实施例的SWC的实现过程如下:
1、SWC初始化
1)申请索引区和数据区。Cache_Index指向新开辟索引空间的首地址,Cache_Data指向新开辟数据空间的首地址。
2)初始化标志字段。设置索引区索引标志为空行flag,设置Cache_Offset数组每个数据为flag,flag是定义的空标志。
3)设置LRU的头指针和尾指针为flag,表示LRU替换策略中目前没有访问过数据。
2、SWC查找数据,采用哈希映射的方式进行数据映射查找,采用链地址法解决数据冲突,利用其进行数据重用以减少访存的次数。
1)计算出待查询数据的查询关键字所对应的哈希值,并且获取以计算出的哈希值为关键字的链表头指针;
2)若计算出的哈希值没有相应的链表,则从主存中读取待查询数据至SWC,并采用LRU替换更新SWC数据的访问顺序;
3)若Cache命中且当前Cache索引行的关键字与查询关键字的哈希值相等,则根据变量下标索引index返回值,采用LRU替换策略更新SWC数据的访问顺序;
4)若Cache未命中且当前Cache索引行不是链表的尾指针,则更新当前哈希值为链表下一个Cache索引行,继续比对关键字;若当前Cache索引行是链表的尾指针,则从主存中读取待查询数据至SWC,并根据LRU替换策略更新SWC数据的访问顺序。
3、SWC与主存通信。
1)获取还没有存储数据的Cache空行或者是需要替换的Cache行,以将主存中获取的数据填入所获取的Cache空行或者需要替换的Cache行中;
2)通过DMA方式访问主存,批量传输数据,从主存地址为src的地方向后读取一个Cache行的数据到LDM中对应的空间里;
3)在DMA传输数据的同时,调用LRU替换策略,更新SWC数据的访问顺序,并更新Cache行的索引信息;
4)在数据传输完成后,获取此次查询到的数据。
4、SWC更新Cache行的索引信息。
1)若写入数据的Cache行为空行,它没有原Hash链表,则直接将其加入到新Hash链表中即可;若新Hash链表也为空,则它便为头指针,更新Cache_Offset数组当前哈希值所对应的头指针。
2)若写入数据的Cache行不是空行,说明它是根据替换策略得到的需要替换的Cache行,它原本就在一个Hash链表中。此时需要将其从原Hash链表中删除;若其为原Hash链表的头指针,则更改Cache行的偏移数组Cache_Offset中原Hash链表对应的头指针为该Hash链表中第二个Cache索引行;
3)将Cache索引行添加到新的Hash链表中时,若其在新Hash链表中为头指针,则更新Cache行对应的Cache_Offset数组当前哈希值所对应的头指针。
5、SWC的LRU替换策略。
1)若Cache命中,只需将当前查询数据所命中的Cache行从LRU链表中删除,将其连接到LRU链表的尾部,使其成为尾指针即可;
2)若Cache未命中,则从主存中读取当前查询数据到Cache空行,由于空行原本不在LRU链表中,因此不必进行删除节点操作,只需将对应的Cache空行连接到LRU链表尾部成为尾指针即可;
3)若Cache未命中,则从主存中读取当前查询数据到最近未访问的Cache行(即LRU的头节点),同时修改头指针,使其指向LRU的第二个节点,并将填入数据的新行连接到LRU链表尾部,tail指向LRU的最后一个Cache行。
6、共享SWC读取数据,利用从核之间的寄存器通信进行共享,以提高命中率,增大软件Cache的容量,如图6所示。
1)若查询的数据在当前从核中,则不必进行寄存器通信,但由于同组从核会等待请求数据而进入阻塞状态,故也需要发送信息告知对方从核不需要数据;
2)处理对方发送的消息,避免同组从核获取数据失败;
3)若查询数据在同组从核的SWC中,则将包含查询关键字的消息发送给同组从核,并进入等待状态;
4)接收同组从核发送的消息并处理,获取所需数据;
5)若收到同组从核发送的消息包含查询关键字,则当前从核根据查询关键字获取数据,并通过寄存器通信返回一个响应信息;若收到的同组从核发送的消息为响应信息,则接收数据;若接收到的同组从核发送的消息为一个空信息,则不需要回复消息。
共享前后SWC命中率对比图如图7所示;其中,小规模是指原子规模为100*100*100,中规模是指原子规模为400*400*400,大规模是指原子规模为1600*1600*1600,从图7可以看出,共享后的命中率要高于共享前。
在神威·太湖之光的1个核组上运行测试采用不同访存优化方法的Crystal-MD程序;其中,同一原子规模下的采用不同访存优化方法的Crystal-MD程序的运行时间对比分别如图8、图9和图10所示。可见,采用本实施例提出的访存优化方法的Crystal-MD程序的运行效率得到了有效提升。
综上,本实施例设计了一种新的软件Cache结构,使用链地址法解决了数据冲突问题,减少了离散数据的平均访存时间,在一定程度上弥补了现有的软件Cache查找开销过大、空间利用率低等不足;并且本实施例实现了SWC共享,增大了软件Cache容量,提高了命中率;有效提升了Crystal-MD程序运行效率。
第二实施例
本实施例提供一种应用于分子动力学模拟软件的访存优化装置,所述访存优化装置包括至少一个存储器和处理器;所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现上述第一实施例的方法。
其中,该装置可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)和一个或一个以上的存储器,其中,存储器中存储有至少一条指令,所述指令由处理器加载并执行。
第三实施例
本实施例提供一种计算机可读存储介质,该存储介质中存储有至少一条指令,所述指令由处理器加载并执行,以实现上述第一实施例的方法。其中,该计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。其内存储的指令可由终端中的处理器加载并执行。
此外,需要说明的是,本发明可提供为方法、装置或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
最后需要说明的是,以上所述是本发明优选实施方式,应当指出,尽管已描述了本发明优选实施例,但对于本技术领域的技术人员来说,一旦得知了本发明的基本创造性概念,在不脱离本发明所述原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
Claims (3)
1.一种应用于分子动力学模拟软件的访存优化方法,其特征在于,包括:
基于分子动力学模拟软件运行平台的从核阵列的架构,将所述运行平台的每个从核的本地存储空间分别划分为第一缓存区、第二缓存区以及第三缓存区;
基于访存数据的总量大小和访存是否规则,对访存数据的访存模式进行分类,根据访存数据的访存模式将访存数据分别存入对应的缓存区中;
在所述第一缓存区中,采用哈希映射的方式进行数据映射查找,采用链地址法解决数据冲突,并利用从核之间的寄存器通信进行数据共享;在所述第二缓存区中,采用双缓冲技术批量访问规则数据,隐藏从核和主存的通信开销;
所述第一缓存区用于存放离散访存的数据,所述第二缓存区用于存放规则访存的数据,所述第三缓存区用于存放本地临时变量数据;
在所述第一缓存区中采用预设的软件Cache数据结构存储数据;
其中,所述软件Cache数据结构的Cache行包括索引行和数据行;其中,所述索引行包括对应数据行的唯一标志符,哈希映射采用链地址法时所使用的前、后指针,根据最近最少使用LRU替换策略而记录的最近的数据访问顺序;
所述采用哈希映射的方式进行数据映射查找,包括:
计算出待查询数据的查询关键字所对应的哈希值,并且获取以计算出的哈希值为关键字的链表头指针;
若计算出的哈希值没有相应的链表,则从主存中读取所述待查询数据至所述第一缓存区,并采用LRU算法更新第一缓存区数据的访问顺序;
若Cache命中且当前Cache索引行的关键字与查询关键字的哈希值相等,则根据变量下标索引返回值,采用LRU替换策略更新第一缓存区数据的访问顺序;
若Cache未命中且当前Cache索引行不是链表的尾指针,则更新当前哈希值为链表下一个Cache索引行,以继续查询所述待查询数据;若当前Cache索引行是链表的尾指针,则从主存中读取所述待查询数据至所述第一缓存区,并根据LRU替换策略更新第一缓存区数据的访问顺序;
所述第一缓存区与主存的通信方式为:
获取还没有存储数据的Cache空行或者是需要替换的Cache行,以将主存中获取的数据填入所获取的Cache空行或者需要替换的Cache行中;
通过DMA方式访问主存,批量传输数据,从主存中读取一个Cache行的数据至所述第一缓存区中;并在DMA传输数据的同时,调用LRU替换策略,更新第一缓存区数据的访问顺序,并更新Cache行的索引信息;
在数据传输完成后,获取此次查询到的数据;
所述更新Cache行的索引信息,包括:
若写入数据的Cache行为空行,则直接将其加入到新Hash链表中;
若写入数据的Cache行不是空行,则将其从原Hash链表中删除;若其为原Hash链表的头指针,则更改Cache行对应的偏移数组Cache_Offset中原Hash链表对应的头指针为该Hash链表中第二个Cache索引行;
将Cache索引行添加到新的Hash链表中时,若其在新Hash链表中为头指针,则更新Cache行对应的Cache_Offset数组当前哈希值所对应的头指针;
所述LRU替换策略,包括:
若Cache命中,则将当前查询数据所命中的Cache行从LRU链表中删除,将其连接到LRU链表的尾部,使其成为尾指针;
若Cache未命中,则从主存中读取当前查询数据到Cache空行,并将对应的Cache空行连接到LRU链表尾部成为尾指针;或从主存中读取当前查询数据到最近未访问的Cache行,同时修改头指针,使其指向LRU的第二个节点,并将填入数据的新行连接到LRU链表尾部,使其指向LRU的最后一个Cache行;
所述利用从核之间的寄存器通信进行数据共享,包括:
若查询的数据在当前从核中,则发送信息告知对方从核不需要数据;
处理对方发送的消息,避免同组从核获取数据失败;若查询数据在同组从核的第一缓存区中,则将包含查询关键字的消息发送给同组从核,并进入等待状态;接收同组从核发送的消息并处理,获取所需数据;若收到同组从核发送的消息包含查询关键字,则当前从核根据查询关键字获取数据,并通过寄存器通信返回一个响应信息;若收到的同组从核发送的消息为响应信息,则接收数据;若接收到的同组从核发送的消息为一个空信息,则不需要回复消息。
2.如权利要求1所述的应用于分子动力学模拟软件的访存优化方法,其特征在于,基于访存数据的总量大小和访存是否规则,对访存数据的访存模式进行分类,根据访存数据的访存模式将访存数据分别存入对应的缓存区中,包括:
若访存数据的总量小于所述第二缓存区的可用空间,确定访存数据的访存模式为第一类模式,将访存数据存放在所述第二缓存区;
若访存数据的总量大于所述第二缓存区的可用空间且访存为规则访存,确定访存数据的访存模式为第二类模式,将访存数据存放在所述第二缓存区;
若访存数据的总量大于所述第二缓存区的可用空间且访存为不规则访存,确定访存数据的访存模式为第三类模式,将访存数据存放在所述第一缓存区。
3.一种应用于分子动力学模拟软件的访存优化装置,所述装置包括至少一个存储器和处理器;其特征在于,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行,以实现如权利要求1-2任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010828235.5A CN112069091B (zh) | 2020-08-17 | 2020-08-17 | 一种应用于分子动力学模拟软件的访存优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010828235.5A CN112069091B (zh) | 2020-08-17 | 2020-08-17 | 一种应用于分子动力学模拟软件的访存优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112069091A CN112069091A (zh) | 2020-12-11 |
CN112069091B true CN112069091B (zh) | 2023-09-01 |
Family
ID=73661390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010828235.5A Active CN112069091B (zh) | 2020-08-17 | 2020-08-17 | 一种应用于分子动力学模拟软件的访存优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112069091B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061449A (en) * | 1997-10-10 | 2000-05-09 | General Instrument Corporation | Secure processor with external memory using block chaining and block re-ordering |
CN1499382A (zh) * | 2002-11-05 | 2004-05-26 | 华为技术有限公司 | 廉价冗余磁盘阵列系统中高效高速缓存的实现方法 |
CN101136029A (zh) * | 2007-08-23 | 2008-03-05 | 南京联创科技股份有限公司 | 主内存数据中心数据处理方法 |
CN105787227A (zh) * | 2016-05-11 | 2016-07-20 | 中国科学院近代物理研究所 | 结构材料辐照损伤的多gpu分子动力学模拟方法 |
CN106407005A (zh) * | 2016-08-31 | 2017-02-15 | 中国科学院计算机网络信息中心 | 一种基于多尺度耦合的并行进程合并方法及系统 |
CN106528001A (zh) * | 2016-12-05 | 2017-03-22 | 北京航空航天大学 | 一种基于非易失性存储器和软件raid的缓存系统 |
CN110297787A (zh) * | 2018-03-22 | 2019-10-01 | 龙芯中科技术有限公司 | I/o设备访问内存的方法、装置及设备 |
CN110909073A (zh) * | 2018-09-14 | 2020-03-24 | 宏达国际电子股份有限公司 | 基于智能合约分享隐私数据的方法及系统 |
CN110928483A (zh) * | 2018-09-19 | 2020-03-27 | 华为技术有限公司 | 数据存储、数据获取方法及设备 |
CN111429974A (zh) * | 2020-03-24 | 2020-07-17 | 山东大学 | 超级计算机平台上的分子动力学模拟短程力并行优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9367251B2 (en) * | 2013-05-10 | 2016-06-14 | Arista Networks, Inc. | System and method of a shared memory hash table with notifications |
-
2020
- 2020-08-17 CN CN202010828235.5A patent/CN112069091B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061449A (en) * | 1997-10-10 | 2000-05-09 | General Instrument Corporation | Secure processor with external memory using block chaining and block re-ordering |
CN1499382A (zh) * | 2002-11-05 | 2004-05-26 | 华为技术有限公司 | 廉价冗余磁盘阵列系统中高效高速缓存的实现方法 |
CN101136029A (zh) * | 2007-08-23 | 2008-03-05 | 南京联创科技股份有限公司 | 主内存数据中心数据处理方法 |
CN105787227A (zh) * | 2016-05-11 | 2016-07-20 | 中国科学院近代物理研究所 | 结构材料辐照损伤的多gpu分子动力学模拟方法 |
CN106407005A (zh) * | 2016-08-31 | 2017-02-15 | 中国科学院计算机网络信息中心 | 一种基于多尺度耦合的并行进程合并方法及系统 |
CN106528001A (zh) * | 2016-12-05 | 2017-03-22 | 北京航空航天大学 | 一种基于非易失性存储器和软件raid的缓存系统 |
CN110297787A (zh) * | 2018-03-22 | 2019-10-01 | 龙芯中科技术有限公司 | I/o设备访问内存的方法、装置及设备 |
CN110909073A (zh) * | 2018-09-14 | 2020-03-24 | 宏达国际电子股份有限公司 | 基于智能合约分享隐私数据的方法及系统 |
CN110928483A (zh) * | 2018-09-19 | 2020-03-27 | 华为技术有限公司 | 数据存储、数据获取方法及设备 |
CN111429974A (zh) * | 2020-03-24 | 2020-07-17 | 山东大学 | 超级计算机平台上的分子动力学模拟短程力并行优化方法 |
Non-Patent Citations (1)
Title |
---|
A new software cache structure on Sunway TaihuLight;Jianjiang Li 等;《The Journal of Supercomputing》;4779–4798 * |
Also Published As
Publication number | Publication date |
---|---|
CN112069091A (zh) | 2020-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103246616B (zh) | 一种长短周期访问频度的全局共享缓存替换方法 | |
KR100978156B1 (ko) | 스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑 스킴을 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능 기록 매체 | |
US7249152B2 (en) | Dynamic disk space management by multiple database server instances in a cluster configuration | |
US20170242794A1 (en) | Associative and atomic write-back caching system and method for storage subsystem | |
CN109815163A (zh) | 基于预测的高效高速缓存行处理的系统和方法 | |
CN107256196A (zh) | 基于闪存阵列的支持零拷贝的缓存系统及方法 | |
JP2000112814A (ja) | メモリアロケ―ション方法及びメモリアロケ―ション装置 | |
SG175109A1 (en) | Performing concurrent rehashing of a hash table for multithreaded applications | |
CN110109873B (zh) | 一种用于消息队列的文件管理方法 | |
CN103229164B (zh) | 数据访问方法和装置 | |
US8086641B1 (en) | Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same | |
CN115168248B (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
CN115168247B (zh) | 用于并行处理器中动态共享存储空间的方法及相应处理器 | |
CN112148217B (zh) | 全闪存储系统的重删元数据的缓存方法、装置及介质 | |
CN116501249A (zh) | 一种减少gpu内存重复数据读写的方法及相关设备 | |
CN108304259A (zh) | 内存管理方法及系统 | |
CN102024051B (zh) | 分布式内存数据库数据更新方法 | |
CN113779154B (zh) | 一种分布式学习索引模型的构建方法及应用 | |
Li et al. | Phast: Hierarchical concurrent log-free skip list for persistent memory | |
CN112069091B (zh) | 一种应用于分子动力学模拟软件的访存优化方法及装置 | |
CN107273443B (zh) | 一种基于大数据模型元数据的混合索引方法 | |
CN111221773B (zh) | 一种基于rdma高速网络和跳表的数据存储架构方法 | |
CN111475099A (zh) | 一种数据存储方法、装置及其设备 | |
US20140297960A1 (en) | Multi-core system and method of data consistency | |
CN105808160A (zh) | 基于SSD的mpCache混合存储系统 |
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 |