首页> 中国专利> 读改写并发处理系统及读改写并发处理方法

读改写并发处理系统及读改写并发处理方法

摘要

本发明涉及芯片技术,公开了一种读改写并发处理系统及读改写并发处理方法,使得在同时对同一个地址进行读改写操作时,系统能够快速正常执行。本发明在改写操作模块和数据控制模块间添加了一个高速缓存模块,通过比较数据控制模块的返回数据和高速冲模块中缓存队列数据的地址值,保证发送给改写操作模块的数据是该地址的最新数据,从而有效解决了数据一致性的问题。

著录项

  • 公开/公告号CN1731530A

    专利类型发明专利

  • 公开/公告日2006-02-08

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN200410055459.8

  • 发明设计人 李桥;范嘉旗;

    申请日2004-08-06

  • 分类号G11C7/22(20060101);

  • 代理机构

  • 代理人

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-17 16:55:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-06-10

    授权

    授权

  • 2006-06-14

    实质审查的生效

    实质审查的生效

  • 2006-02-08

    公开

    公开

说明书

技术领域

本发明涉及芯片技术,特别涉及对数据的读改写技术。

背景技术

随着超大规模集成电路的发展,芯片的工作频率越来越高,存取速率也越来越快,对芯片完成一次读改写操作的时间,即首先将芯片内存储的数据进行读取,然后对其进行修改,最终将修改的数据重新写回芯片的总共时间越来越短。

执行读改写操作最简单的方法是采用串行处理结构。图1即为串行处理的结构示意图,如图所示,该结构主要由三个模块组成:读取模块10,修改模块20,写模块30。

其中读取模块10主要完成数据的读取操作,修改模块20是根据实际需要对已读取的数据进行操作,这种操作可以是算术操作或者逻辑操作,写模块30是将经过修改模块20修改的数据重新写回芯片的内部存储单元或者直接进行输出。

串行处理的具体步骤如下,首先由读取模块10从芯片中读取数据,数据读取完成后读取模块10就一直执行等待操作直到写模块30处理将读取的数据重新写回芯片,然后由修改模块20对读取的数据进行修改,修改完毕后由写模块30将修改的数据重新写入芯片内部存储单元或者直接输出,从而完成一次读改写操作。如果要进行第二次读改写操作,则需要第一次读改写操作完全结束以后才能进行。

由上述过程可以看出,采用串行处理方法在进行读改写的过程中只能对一个数据进行操作,因此不会存在对同一地址执行多次读改写操作而造成操作错误的问题。由于采用串行方式,下一步操作的执行依赖于上一步操作的完成,完成一次读改写操作所需的时间周期是上述三个操作的时间总和,当该时间周期大于设计要求时,串行结构显然是不合理的,需要设计其他结构来进行处理。

流水线技术是目前采用比较多的一种处理方法。其主要原理是根据一定的原则将一个任务分解为多个子任务,然后将这些子任务并行执行从而提高整个任务的执行效率。如果采用流水线技术来执行本文所述的读改写操作,可以将读改写操作细分为读操作、修改操作、写操作3个子操作来分别执行。图2是目前常用的流水线并行处理结构示意图,如图所示。该并行结构主要由四部分组成:读操作模块20,改写操作模块21,数据控制模块22,数据存储区25。其中数据控制模块22又可以细分为仲裁模块23和流水线队列24。

其中,读操作模块20用于发送读命令,在第一个读命令通过仲裁模块23被流水线队列24接收后,继续发送下一个读命令。

改写操作模块21用于接收数据控制模块22的返回数据,并对接收的数据执行修改操作,在数据修改完毕后再由该模块向数据控制模块22发送写命令。当写命令通过仲裁模块23被流水线队列接收后,才能继续执行下一个改写操作。熟悉本领域的技术人员应该知道,上述修改操作可以是简单的算术操作或逻辑操作,也可以是复杂的表项查找或更新处理。

数据控制模块22使用仲裁模块23对通过的命令进行仲裁,判断其是读命令还是写命令,再把经过仲裁过的命令存储在流水线队列24中,最终执行命令,将数据写入数据存储区25或者从数据存储区25中读取数据。熟悉本领域的技术人员应该知道,如果存储在流水线队列24中的命令为读命令,则其必须包含待读取数据的存储地址;如果存储在流水线队列24中的命令为写命令,则其除了要包含待写入数据的存储地址外还应包括待写入数据的数值。流水线队列24的长度可以根据实际要求决定。

数据存储区25用于存储数据。

在通过上述采用流水线并行处理技术实现读改写操作的过程中,流水线并行处理并不需要等待第一次读改写操作完全执行完毕以后才能执行第二次操作,其多个读改写操作可以同时进行,能够有效地提高处理的效率。然而由于改写操作模块21的处理延时,在前面一个读改写操作的改写操作执行完成之前,数据控制模块22的流水线队列24中已经存储了多个后续读改写操作的读操作。当前后的读改写操作都是针对同一个数据存储单元时,由于前面的改写操作尚未完成,后续的读操作读到的仍是旧数据,因而造成后续改写的数据也是错误的,这就出现了数据的一致性问题。

为了解决上述问题,在现有技术中通常在数据控制模块22的仲裁模块中添加一小块存储区域,按照读操作的先后顺序记录经过仲裁存储到流水线队列中的所有读操作地址。熟悉本领域的技术人员应该知道,该存储区域可以是按照队列方式来组织。当读操作模块20发送读命令时,首先由仲裁模块23进行仲裁,判断是读命令,然后将该命令与上述存储区域中所存储的读操作地址比较,如果该命令的读取地址与存储区域中所存储的地址均不相同,则说明该读命令可以存入流水线队列24;如果该命令的读取地址与存储区域中的某个地址相同,则说明前面对同一个单元的读改写操作还没有完成,于是执行等待操作,直到前面的读操作命令出队以后才能将该命令写入流水线队列24。

由于在处理过程中前后顺序始终不变,存储区域的第一个地址必然与第一个改写操作对应,后续地址也同样;一般情况下,只要前一个改写操作在后一个读操作之前执行,就能够保证每个读改写操作执行正确。因此,可以通过改写操作来触发上述存储区域的出队操作。每当仲裁通过一个改写操作,则对该存储区域执行一次出队操作,表示这个读改写操作已完成;此时如果有等待的读操作,就可以判断是否能够仲裁通过和入队。经过如上修改,就可以处理过程中数据的一致性。

在实际应用中,上述方案存在以下问题:如果后续读操作地址与存储区域中的某个地址相同时,需要执行等待操作,直到存储区域中该地址出队以后才能仲裁通过后续的读操作,从而导致读改写处理速度的下降;当所有的读操作都是针对同一个地址时,处理速度将会下降到和串行处理相同。

造成这种情况的主要原因在于,在处理时仅针对读操作,采用等待的方式来处理具有相同操作地址的读操作。

发明内容

有鉴于此,本发明的主要目的在于提供一种读改写并发处理系统及读改写并发处理方法,使得在同时对同一个地址进行读改写操作时,系统能够快速正常执行。

为实现上述目的,本发明提供了一种读改写并发处理系统,包括读操作模块、改写操作模块、数据控制模块、数据存储区以及高速缓存模块,其中,

所述读操作模块用于生成读命令;

所述数据控制模块用于根据来自所述读操作模块的读命令,从所述数据存储区中读取返回数据,并将该返回数据发送至所述高速缓存模块,且根据来自所述高速缓存模块的写命令,将修改后的数据写入所述数据存储区;

所述高速缓存模块用于将所述返回数据相应存储单元的最新数据发送给所述改写操作模块,并存储来自所述改写操作模块的修改后的数据;

所述改写操作模块用于对来自所述高速缓存模块的数据进行修改,将修改后的数据通过写命令分别发送至所述数据控制模块和所述高速缓存模块;

所述数据存储区用于存储数据。

其中,所述高速缓存模块中存储的数据至少包含所述数据的存储地址信息和数据本身的数值信息。

所述高速缓存模块还包含:

高速缓存区,用于按照先进先出队列的方式对来自所述改写操作模块的修改后的数据进行存储;

比较模块,用于按照所述队列从后到先的顺序,对来自所述数据控制模块的返回数据与所述高速缓存区的缓存数据的存储地址进行比较,如果相同,则将所述缓存数据发送至所述改写操作模块,否则,将所述返回数据发送给所述改写操作模块。

所述数据控制模块采用流水线方式执行命令,并且所述高速缓存模块中缓存队列长度与所述数据控制模块中流水线的级数一致。

所述读操作模块包含多个进行读操作的子模块,以及一个对所述子模块进行仲裁的仲裁模块;

所述改写操作模块包含多个进行改写操作的子模块,以及一个对所述子模块进行仲裁的仲裁模块。

本发明还提供了一种采用如权利要求1所述读改写并发处理系统的读改写并发处理方法,包含以下步骤:

A所述数据控制模块响应读操作命令,将返回数据发送至所述高速缓存模块;

B所述高速缓存模块将所述返回数据相应存储单元的最新数据发送给所述改写操作模块;

C所述改写操作模块修改数据,将修改后的数据通过写命令分别发送至所述数据控制模块和所述高速缓存模块。

其中,在所述步骤B中,所述高速缓存模块对来自所述数据控制模块的返回数据与所述高速缓存区的缓存数据的存储地址进行比较,如果相同,则将所述缓存数据发送至所述改写操作模块,否则,将所述返回数据发送给所述改写操作模块。

通过比较可以发现,本发明的技术方案与现有技术的区别在于,在改写操作模块和数据控制模块间添加了一个高速缓存模块,通过比较数据控制模块的返回数据和高速缓存模块中缓存队列数据的地址值,保证发送给改写操作模块的数据是该地址的最新数据,从而有效解决了数据一致性的问题。

这种技术方案上的区别,带来了较为明显的有益效果,即由于在实际的使用过程中,通过在改写操作模块和数据控制模块间添加高速缓存模块,无需在对同一地址执行读操作时进行等待操作,能够在维护数据一致性的同时有效提高系统处理数据的速度;另外该方案也能够有效维护多个读改写流程并行处理时的数据一致性。

附图说明

图1是现有技术中读改写操作的串行处理结构示意图;

图2是现有技术中读改写操作常用的流水线并行处理结构示意图;

图3是根据本发明一个实施例的读改写并发处理系统中的高速缓存模块的结构示意图;

图4是根据本发明一个实施例的读改写并发处理方法的处理流程图;

图5是根据本发明一个实施例的维护多个并发处理的读改写并发处理系统的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。

图3是根据本发明一个实施例的读改写并发处理系统的结构示意图,如图所示。该结构主要由三个模块组成:改写操作模块30、高速缓存模块(CACHE模块)31、数据控制模块34。其中改写操作模块30和数据控制模块34的结构和功能与图2中改写操作模块21和数据控制模块22的结构和功能相同。

CACHE模块31位于改写操作模块30和数据控制模块34之间,其包含两个子模块:高速缓存区32和比较模块33。

CACHE模块31用于对写操作命令执行操作,保证对改写操作模块21对同一个存储地址的数据进行操作时,其获得的数据始终是该地址的最新更新值。该功能通过高速缓存区32和比较模块33来实现。

高速缓存区32用于存储最近几次改写操作模块30的输出数值。熟悉本领域的技术人员应该知道,改写操作模块30输出的数值至少应该包含数据写入芯片数据存储区的地址以及数据本身的数值两个部分。高速缓存区32可以采用队列形式来管理,对改写操作模块30的输出数值按照时间先后顺序进行存储。

比较模块33用于将数据控制模块34的返回数据与高速缓存区32中存储的数据进行比较。如上所述,数据控制模块34的返回数据应该包含数据本身的数值以及数据在数据存储区的存储地址,通过比较返回数据的存储地址与高速缓存区32中的数据对应于其写入芯片数据存储区中的存储地址,确保返回给改写操作模块30的数值始终是该存储地址的最新更新值。通过比较,如果没有发现高速缓存区32中有与返回数据属于同一存储地址的数据,则该返回数据即为该存储地址最新数据,直接将其返回给改写操作模块30;如果高速缓存区32中发现存在与返回地址属于同一存储地址的数据,则该返回数据是该存储地址最新的数据,需要将其发送给改写操作模块30,如果在高速缓存区32中同时发现多个与返回地址属于同一存储地址的数据,则应取该存储地址最新的更新值返回。熟悉本领域的技术人员应该知道,如果芯片的存储区域采用线性表管理时,对地址的比较可以是比较各个存储单元的地址索引值;如果芯片的存储区域采用哈希表管理时,对地址的比较可以是比较哈希算法的关键词是否相同。

以上简单描述了利用CACHE模块31来维护并行处理过程中数据一致性的各个模块的功能,下面将详细说明其具体的实现过程,图4即为其具体的实现流程图。

首先进入步骤310,CACHE模块31接收数据控制模块34的返回数据。

然后进入步骤320,将上述返回数据与高速缓存区32中存储的数据进行比较,判断返回数据与存储的数据是否属于同一存储单元。需要说明的是,如果高速缓存区32为空或者高速缓存区32所存储的数据中不存在与返回数据属于相同存储单元的数据,则表示返回数据是该存储单元的最新数据,在这种情况下进入步骤340;另一方面,如果高速缓存区32所存储的数据中存在与返回数据相同存储单元的数据,则表示该存储单元的数据已经进行了修改,返回数据并不是该存储单元的最新数据,而应是高速缓存区32中存储的数据,此时进入步骤330。

在步骤330中,将高速缓存区32的相应的存储的数据发送给改写操作模块30,进行改写处理。

在步骤340中,将来自数据控制模块34的返回数据发送给改写操作模块30,进行改写处理。

最后进入步骤350,将经过改写操作后的数据发送给数据控制模块34,并同时将其存入高速缓存区32。

当相邻下一个返回数据到来时,重复执行步骤310到350的操作。

以上是对根据本发明的原理的维护并行处理过程中数据一致性的处理方法的说明。下面分别对几种常见的情况予以具体的解释。

首先假设高速缓存队列只能存储一个改写数据,即高速缓存队列的长度为1,通过上述步骤可以发现,如果相邻两个读改写操作是针对同一数据存储单元,那么数据控制模块34相邻的返回数据是也是针对同一数据存储单元的。改写操作模块30对第一个返回数据执行改写操作后,将其输出数据发送给数据控制模块34的同时也将其写入高速缓存区32。由于该输出数据所对应的数据存储单元地址与第二个返回数据的存储单元地址相同,在第二个返回数据到达时,通过比较发现高速缓存区32中的数据是该地址的最新更新值,因此自动返回高速缓存区32中的数据,而丢弃原返回数据,从而有效的实现了数据一致性的维护。由于在实现过程中没有执行等待操作,因而能够有效提高维护的效率。

在上述过程中,由于高速缓存队列的长度为1,不存在任何缓存队列管理问题,返回时只需将缓存数据直接返回。对于高速缓存队列长度大于1的情形,其基本执行步骤与队列长度为1时相似,但执行过程中需要对缓存队列执行一定的管理操作。

下面将简单描述缓存队列长度为2时的处理情况。假设连续三次读改写操作均针对同一数据存储单元,那么数据控制模块34连续三次返回的数据也是针对同一数据存储单元。这连续三次返回的数据按照时间先后顺序分别称为第一返回数据、第二返回数据、第三返回数据。

对第一返回数据执行改写操作完成后,将改写后的数据发送给数据控制模块34,同时对缓存队列执行出队操作,并将上述改写后的数据写入高速缓存区32。

由于该写入的数据所对应的数据存储单元与后面两个返回数据所对应的数据存储单元相同,当第二返回数据到来时,经比较发现该返回数据不是该数据存储单元的最新数据,因此需要将缓存中的数据交给改写操作模块30。在改写操作完成后,将改写后的数据发送给数据控制模块34,同时对缓存队列执行出队操作,并将上述改写后的数据写入高速缓存区32。此时高速缓存区32的缓存队列中存储数据所对应的数据存储单元地址均与即将到来的第三返回数据所对应的数据存储单元地址相同。假设第一返回数据经改写后存储在缓存队列中的数据称为数据一;第二返回数据经改写后存储在缓存队列中的数据称为数据二。

当第三返回数据到来时,首先与数据二进行比较,如果发现两者所对应的数据存储单元相同,则返回数据二;如果不同,则再与数据一进行比较。熟悉本领域的技术人员应该知道,上述操作可以按照队列尾元素优先的原则来实现,即队列中如果有多个数据与待操作的返回数据所对应的数据存储单元地址相同时,优先返回最靠近队列尾的数据。由于数据一和数据二所对应的数据存储单元和第三返回数据所对应的数据存储单元相同,所以优先返回数据二,即最新的数据,从而能够有效维护三个连续数据的一致性。

接下来再描述高速缓存区32缓存队列长度大于2的情形。在这种情况下,其执行过程与缓存队列长度为2时的操作相似。如果不断加大高速缓存的容量,即不断增加缓存队列的长度,就能够保证更多连续的读改写操作正确执行。当缓存队列长度与整个读改写操作流程中正在处理的读操作数目一样多时,就可以保证所有读改写操作都是正确的,从而解决了流水线并行处理流程中的数据一致性问题。

在实际处理过程中,可能存在多个读改写流程针对同一数据存储区进行操作的情况,图5即为根据本发明一个实施例的维护多个并发处理过程中读改写并发处理系统的结构示意图,如图所示。该结构包括多个读操作模块40、41、42和改写操作模块45、46、47,仲裁模块43、44、48和51,CACHE模块49、数据控制模块50、数据存储区53。其中数据控制模块50、数据存储区53与图2中数据控制模块22、数据存储区25的功能和结构相同,CACHE模块49与图3中CACHE模块31功能和结构相同。

对于多个读操作模块和写操作模块,其每一对读操作模块和改写操作模块都对应系统中一个模块的读改写操作。如读操作模块40和写操作模块45对应系统中第1个模块的读改写操作,读操作模块41和写操作模块46则对应系统中第2个模块的读改写操作,读操作模块32和写模块操作47则对应系统中第n个模块的读改写操作。

仲裁模块则是对系统中模块的读改写操作进行仲裁。如仲裁模块43用于对各个读操作模块进行仲裁,判断是哪个模块的读命令正在被处理;仲裁模块48则是对CACHE模块49返回的数据进行仲裁,判断应该将数据交给哪个改写操作模块进行处理;仲裁模块44则是对改写操作模块的输出数据进行仲裁,判断应该将哪个改写数据交给CACHE模块49。

对于多个读改写过程的处理方法,与前面所述单个读改写操作的处理方法基本相同。所不同的是在具体的处理过程中需要对各个读改写操作进行仲裁后方能进行处理。熟悉本领域的技术人员应该知道,在实际处理过程中,对于读命令,除了要包含待读取数据的地址外,还应该包括其所对应的读改写操作号,用于表示其究竟是在执行系统哪个模块的读改写操作;同样的,返回数据和写命令除了要包含原有的数据及数据地址外,也应该包括其对应的读改写操作号。

虽然通过参照本发明的某些优选实施例,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号