一种并发数据的缓存方法及结构技术

技术编号:13638439 阅读:57 留言:0更新日期:2016-09-03 03:37
一种并发数据的缓存方法,A每组数据写入,A1监测是否有写锁定状态缓存分区:若有转入步骤A2‑2;若无A2监测是否存在空闲状态缓存分区:A21若有A21‑1选定一组空闲状态缓存分区置为写锁定状态;A21‑2向缓存分区写入数据:A21‑3判断数据是否写入成功:若成功,则该组数据写入完成;若失败,则将该缓存分区置为写满状态,转入步骤A1;A22若无空闲状态缓存分区,结束数据写入;步骤B数据读取,B1实时监测是否存在写满状态下缓存分区:若有B11选定该组缓存分区置为读锁定状态;B12读取该缓存分区内的缓存数据,当判断缓存分区读取完毕时,将其设为空闲状态,转入步骤B1;若没有,转入步骤B1,继续数据读取,其对缓存分区访问施加严格读写锁,可有效优化数据处理速率。

【技术实现步骤摘要】

本专利技术涉及辐射检测领域的数据采集技术,具体涉及一种高速数据采集的缓存方法和设备。
技术介绍
现有技术中的高速数据采集系统,其每个数据通道一般都对应设有一个独立的用于缓存通道数据的FIFO(First Input First Ouput,先入先出队列),然而在实际的数据采集中,经常遇到数据采集率高、速度快,而数据处理时间长,速度较慢的矛盾,当缓存容量大时,这种原始数据的速率较高,对网络接收和数据处理提出了较高的要求。以全数字PET为例,图1为全数字PET设备中数据采集与处理流程示意图,探测器各通道对接收到信号进行采样和编码,以特定格式的数据包发送到网络。PET成像所需的有效事件分布于不同的探测器通道,两者之间的匹配关系可通过事件采样时间来标定。来自各探测器通道的有效事件以及噪声数据混合在一起,串行分布于网络传输链路中,当采集服务器接收到这些数据后,基于符合算法从中筛选出有效事件,并进行时间、能量校正,然后根据重建算法将筛选结果转换为PET图像。理想情况下数据采集应与符合处理并发执行,实时完成数据筛选、时间校正、能量校正,从而降低重建前数据存储所需的资源要求。但是由于通道数量多,且每个通道中数据量十分巨大,每秒需要同时处理1.5GB至3GB的数据,若无法及时进行处理,会导致有效事件的丢包,进而导致数据筛选、时间校正、能量校正的有效性降低,图像重建无法实现或者虽然能实现但是严重影响精准性。
技术实现思路
本专利技术的目的在于提供一种并发数据的缓存方法及结构,能够有效解决数据采集率高、速度块,而数据处理时间长、速度慢的问题,尤其适用于全数字PET中的探测器数据采集。为达到上述目的,本专利技术的解决方案是:本专利技术公开一种并发数据的缓存方法,包括以下步骤:缓存分区的工作状态设置为空闲状态、写锁定状态、写满状态以及读锁定状态中的任意一种,(A)每组数据写入时,(A1)实时监测是否存在写锁定状态缓存分区:若有写锁定状态缓存分区直接转入步骤(A2-2)进行该组数据写入;若没有写锁定状态缓存分区,(A2)实时监测是否存在空闲状态的缓存分区:(A21)若有处于空闲状态的缓存分区,(A21-1)选定一组空闲状态的缓存分区置为写锁定状态;(A21-2)向所述写锁定状态的缓存分区写入该组数据:(A21-3)判断所述数据是否写入成功:若写入成功,则该组数据写入完成,结束本次数据写入;若写入失败,则将当前缓存分区置为写满状态,并转入步骤(A1)继续该组数据的写入;(A22)若没有处于空闲状态的缓存分区,则结束该组数据写入;步骤(B)数据读取时,(B1)实时监测是否存在写满状态下的缓存分区:若有处于写满状态下的缓存分区,(B11)选定该组写满状态的缓存分区置为读锁定状态;(B12)读取该读锁定状态缓存分区内的缓存数据,当判断所述读锁定状态缓存分区读取完毕时,将所述缓存设置为空闲状态,同时转入步骤(B1)继续下一组缓存分区的读取;若没有写满状态的缓存分区,转入步骤(B1),继续数据的读取。所述缓存分区中,同时只存在一组写锁定状态缓存分区与一组读锁定状态缓存分区;优选的,全部数据写入进程结束时,若存在一组未写满的缓存分区,则将该组缓存分区置为写满状态以进行数据的读取。依次顺序访问各缓存分区以监测是否存在写锁定或空闲状态的缓存分区;优选的,采取遍历、与数据写入访问相同的顺序、缓存分区写入完成主动上报中的任一方式实时监测是否存在写满状态的缓存分区;所述缓存分区内部采用分级管理的方式进行数据写入操作,所述缓存分区中包括多个大小相同的缓存扇区,且所述缓存扇区一一编码,且包括多个大小相同的缓存页面,所述每组写入数据的大小与所述缓存页面大小相同设置,则所述步骤(A21-3)中,判断所述数据是否写入成功包括以下步骤:每组数据写入缓存分区的每一缓存扇区后,缓存扇区内部计数,确定当前缓存扇区编码,比较所述缓存扇区编码与所述缓存扇区的最大编码数大小:若该缓存扇区编码小于所述缓存分区的最大编码数,判断下一组数据能够在本缓存分区中写入成功,
若缓存扇区编码等于所述缓存分区的最大编码数,则判断所述缓存分区已满,转入步骤(A1),将下一组数据写入下一个缓存分区中;优选的,所述数据按照编码顺序写入至所述缓存扇区中,且所述缓存页面一一编码,所述数据写入至缓存扇区时,按照缓存页面的编码顺序依次写入。所述步骤(A21-3)中,所述数据写入成功判断包括以下步骤:向所述写锁定状态的缓存分区写入外部发送的数据组:当判断所述写锁定状态缓存分区未写满时,写入成功,继续该组缓存分区的数据写入;当判断所述写锁定状态缓存分区写满或外部数据写完毕时,将该组缓存分区置为写满状态,并转入步骤(A1)继续下一组外部数据的写入;进一步的,所述写锁定状态的缓存分区写满判断包括以下步骤:向所述写锁定状态的缓存分区写入外部发送的数据时,比较外部数据量与所述写锁定状态的缓存分区剩余空间大小,若外部数据的数量大于所述写锁定状态的缓存分区剩余空间,判断所述写锁定状态的缓存分区写满;或,向所述写锁定状态的缓存分区写入外部发送的数据时,系统报错,则判断所述写锁定状态的缓存分区写满。所述步骤(B1)之前,还包括实时监测是否存在读锁定状态缓存分区的步骤,若有,直接转入步骤(B12)读取所述读锁定状态缓存分区内的缓存数据;若无,则转入步骤(B1);优选的,所述数据读取速度大于数据写入速度;优选的,其应有于生产者与消费者模型。本专利技术公开了一种并发数据的缓存结构,其同时进行数据的写入与读取,包括一组数据写入线程、一组数据读取线程、一组数据缓存模块以及一分区控制模块;所述数据缓存模块包括多组缓存分区;所述分区控制模块与所述数据缓存模块通信连接以控制所述多个缓存分区的工作状态以及被访问顺序,所述分区控制模块用于将所述每个缓存分区的工作状态设置为空闲状态、写锁定状态、写满状态以及读锁定状态中的任意一种,仅当所述缓存分区为空闲状态时支持写锁定,且所述缓存分区处于写锁定状态时支持数据写入,仅当所述缓存分区为写满状态时支持读锁定,且所述缓存分区处于读锁定状态时支持数据读出;所述数据写入线程与所述数据读取线程分别经由所述分区控制模块与各缓存分区通信连接,所述分区控制模块控制所述数据写入线程与所述数据读取线程访问缓存分区的顺序,以使得所述数据写入线程与所述数据读取线程根据所访问缓存分区的工作状态进行数据的写入与读取。所述每组缓存分区包括一控制单元以及多组缓存扇区,所述缓存扇区一一编码设置,所述控制单元与所述每组缓存扇区通信连接,以控制每组缓存分区中,数据写入缓存扇区的顺序;进一步优选的,所述每组缓存扇区包括一控制组件以及多个缓存页面,所述缓存页面一一编码且每组写入数据的大小与缓存页面相同设置,所述控制组件与所述缓存页面分别通向连接,以控制每组缓存扇区中,数据写入缓存页码的顺序。所述分区控制模块包括一写锁定判断单元以及一读锁定判断单元;所述写锁定判断单元与数据缓存模块通信连接,以控制数据缓存模块中缓存分区的访问顺序、写锁定与去写锁定,所述数据写入线程与所述写锁定判断单元通信连接以根据所述写锁定判断单元确定的访问顺序访问的缓存分区,并根据当前访问缓存分区的工作状态进行数据的写入操作;所述读锁定判断单元与相应的数据缓存模块通信连接,本文档来自技高网
...

【技术保护点】
一种并发数据的缓存方法,其特征在于:包括以下步骤:缓存分区的工作状态设置为空闲状态、写锁定状态、写满状态以及读锁定状态中的任意一种,(A)每组数据写入时,(A1)实时监测是否存在写锁定状态缓存分区:若有写锁定状态缓存分区直接转入步骤(A2‑2)进行该组数据写入;若没有写锁定状态缓存分区,(A2)实时监测是否存在空闲状态的缓存分区:(A21)若有处于空闲状态的缓存分区,(A21‑1)选定一组空闲状态的缓存分区置为写锁定状态;(A21‑2)向所述写锁定状态的缓存分区写入该组数据:(A21‑3)判断所述数据是否写入成功:若写入成功,则该组数据写入完成,结束本次数据写入;若写入失败,则将当前缓存分区置为写满状态,并转入步骤(A1)继续该组数据的写入;(A22)若没有处于空闲状态的缓存分区,则结束该组数据写入;步骤(B)数据读取时,(B1)实时监测是否存在写满状态下的缓存分区:若有处于写满状态下的缓存分区,(B11)选定该组写满状态的缓存分区置为读锁定状态;(B12)读取该读锁定状态缓存分区内的缓存数据,当判断所述读锁定状态缓存分区读取完毕时,将所述缓存设置为空闲状态,同时转入步骤(B1)继续下一组缓存分区的读取;若没有写满状态的缓存分区,转入步骤(B1),继续数据的读取。...

【技术特征摘要】
1.一种并发数据的缓存方法,其特征在于:包括以下步骤:缓存分区的工作状态设置为空闲状态、写锁定状态、写满状态以及读锁定状态中的任意一种,(A)每组数据写入时,(A1)实时监测是否存在写锁定状态缓存分区:若有写锁定状态缓存分区直接转入步骤(A2-2)进行该组数据写入;若没有写锁定状态缓存分区,(A2)实时监测是否存在空闲状态的缓存分区:(A21)若有处于空闲状态的缓存分区,(A21-1)选定一组空闲状态的缓存分区置为写锁定状态;(A21-2)向所述写锁定状态的缓存分区写入该组数据:(A21-3)判断所述数据是否写入成功:若写入成功,则该组数据写入完成,结束本次数据写入;若写入失败,则将当前缓存分区置为写满状态,并转入步骤(A1)继续该组数据的写入;(A22)若没有处于空闲状态的缓存分区,则结束该组数据写入;步骤(B)数据读取时,(B1)实时监测是否存在写满状态下的缓存分区:若有处于写满状态下的缓存分区,(B11)选定该组写满状态的缓存分区置为读锁定状态;(B12)读取该读锁定状态缓存分区内的缓存数据,当判断所述读锁定状态缓存分区读取完毕时,将所述缓存设置为空闲状态,同时转入步骤(B1)继续下一组缓存分区的读取;若没有写满状态的缓存分区,转入步骤(B1),继续数据的读取。2.根据权利要求1所述的并发数据的缓存方法,其特征在于:所述缓存分区中,同时只存在一组写锁定状态缓存分区与一组读锁定状态缓存分区;优选的,全部数据写入进程结束时,若存在一组未写满的缓存分区,则将该组缓存分区置为写满状态以进行数据的读取。3.根据权利要求1或2所述的并发数据的缓存方法,其特征在于:依次顺序访问各缓存分区以监测是否存在写锁定或空闲状态的缓存分区;优选的,采取遍历、与数据写入访问相同的顺序、缓存分区写入完成主动上报中的任一方式实时监测是否存在写满状态的缓存分区。4.根据权利要求1所述的并发数据的缓存方法,其特征在于:所述缓存分区内部采用分级管理的方式进行数据写入操作,所述缓存分区中包括多个大小相同的缓存扇区,且所述缓存扇区一一编码,且包括多个大小相同的缓存页面,所述每组写入数据的大小与所述缓存页面大小相同设置,则所述步骤(A21-3)中,判断所述数据是否写入成功包括以下步骤:每组数据写入缓存分区的每一缓存扇区后,缓存扇区内部计数,确定当前缓存扇区编码,比较所述缓存 扇区编码与所述缓存扇区的最大编码数大小:若该缓存扇区编码小于所述缓存分区的最大编码数,判断下一组数据能够在本缓存分区中写入成功,若缓存扇区编码等于所述缓存分区的最大编码数,则判断所述缓存分区已满,转入步骤(A1),将下一组数据写入下一个缓存分区中;优选的,所述数据按照编码顺序写入至所述缓存扇区中,且所述缓存页面一一编码,所述数据写入至缓存扇区时,按照缓存页面的编码顺序依次写入。5.根据权利要求1所述的并发数据的缓存方法,其特征在于:所述步骤(A21-3)中,所述数据写入成功判断包括以下步骤:向所述写锁定状态的缓存分区写入外部发送的数据组:当判断所述写锁定状态缓存分区未写满时,写入成功,继续该组缓存分区的数据写入;当判断所述写锁定状态缓存分区写满或外部数据写完毕时,将该组缓存分区置为写满状态,并转入步骤(A1...

【专利技术属性】
技术研发人员:徐驰
申请(专利权)人:武汉数字派特科技有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利