CN101989241A - 读-修改-写处理系统及方法 - Google Patents
读-修改-写处理系统及方法 Download PDFInfo
- Publication number
- CN101989241A CN101989241A CN 200910165363 CN200910165363A CN101989241A CN 101989241 A CN101989241 A CN 101989241A CN 200910165363 CN200910165363 CN 200910165363 CN 200910165363 A CN200910165363 A CN 200910165363A CN 101989241 A CN101989241 A CN 101989241A
- Authority
- CN
- China
- Prior art keywords
- write
- order
- read
- data
- revise
- 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.)
- Granted
Links
Images
Landscapes
- Multi Processors (AREA)
- Dram (AREA)
Abstract
一种读-修改-写处理系统及方法。所述读-修改-写处理系统通过子命令生成单元,使得任一时刻读-修改-写处理系统可以并行处理多个“读-修改-写”命令。以同类型命令优先通过的方式对所获得的内存操作命令进行仲裁,使得同一类型的命令可以得到优先通过,并随即处理。所述读-修改-写处理系统及方法可以避开“对于同一激活行的读写访问之间存在的时间间隔较大”这一问题对访存性能的影响,并可以减少数据总线的读写方向切换次数,从而提高了访存带宽。
Description
技术领域
本发明涉及内存访问处理领域,特别涉及读-修改-写处理系统及方法。
背景技术
现代计算机系统普遍采用SDRAM内存(包括DDR1,DDR2,DDR3等)。对于该类内存,有三类用户访问内存的操作命令:
(1)读命令。用户使用该命令,可以从某个SDRAM内存中取出一个数据。
(2)写命令。用户使用该命令,可以将数据存入某个SDRAM内存。
(3)“读-修改-写”命令。用户使用该命令,可以从某个SDRAM内存取出一个数据;然后对这个数据进行修改(如加上某个数、减去某个数等)后得到一个新数;最后,将这个新数再存入该SDRAM内存。
“读-修改-写”命令在现代计算机系统中有着较为广泛的应用。比如,在操作系统中,可以使用“读-修改-写”命令实现进程间同步;在数字信号处理领域,可以用“读-修改-写”命令直接对内存中的数据块进行计算,不必再经过CPU,从而可以提高处理速度。
目前,SDRAM内部至少包括8个存储阵列、8个敏感放大器等两类子部件。对于SDRAM来说,为实现用户发出的各种操作命令,其本身所需要的基本操作命令有激活(ACT)、读(RD)、写(WE)以及写回(PRE)。
激活命令:从SDRAM内部的存储阵列中,将数据行传输到相应敏感放大器,敏感放大器中的数据行称为“激活行”。SDRAM部件中最多可以有8个激活行存在。
读命令:从“激活行”中,取出所要访问的数据。
写命令:将数据写入“激活行”。
写回命令:将“激活行”写回SDRAM的内部存储阵列。
基于以上说明,对于读命令,一般的处理流程是:首先用激活命令激活所要访问的数据行;然后,用读命令访问“激活行”,读出数据;最后,使用写回命令将激活行写回存储阵列。
而对于写命令,一般的处理流程是:首先用激活命令激活所要访问的数据行;然后,用写命令将数据写入“激活行”;最后,使用写回命令将激活行写回存储阵列。
在某个数据行被激活后,在其收到写回命令之前,可连续使用读、写或者写、读命令序列进行先读后写或者先写后读的内存访问操作。在读之后、写之前,需要暂停若干拍,才能正确地完成操作序列。同样地,在写之后,读之前,也需要暂停若干拍,才能正确地完成操作序列。
如果在任一时刻系统只能处理一个“读-修改-写”命令,那么当需要批量处理大量“读-修改-写”命令的时候,系统就只能依次串行处理。这时,由于对于同一激活行的读、写访问之间存在的时间间隔较大(前述的读、写之间要暂停若干拍),将会影响访存带宽。
并且,对于SDRAM,其采用双向数据总线。在总线完成读数据的传输之后、开始写数据传输之前,数据总线至少需要空闲1拍,以完成数据总线的方向切换。类似地,在总线完成写数据的传输之后、开始读数据传输之前,数据总线至少需要空闲1拍,以完成数据总线的方向切换。
如果系统在处理多个“读-修改-写”命令时,反复切换读、写数据传输,则数据总线的读写方向切换次数过多,那么也将会影响访存带宽。
在例如美国专利申请“Memory controller having a read-modify-write function”(专利申请号:11/072,870)中,提出了一种“读-修改-写”命令的实现系统。然而,该系统的读入数据线和写出数据线是相互独立的,不适合“使用双向数据线”的情况;再者,该系统在处理一个“读-修改-写”命令的时候,不能同时处理其它命令,必须在当前的“读-修改-写”命令处理完以后,才能处理其它命令。
而又例如美国专利申请“Memory controller and method for optimized read/modify/write performance”(专利申请号:11/779,277)中,提出了一种“读-修改-写”命令的实现系统。该系统能够同时处理多个命令,并且该系统也适合“使用双向数据线”的情况。然而,该系统使用了三个不同的命令队列:读命令队列、写命令队列、读修改写命令队列。同一队列内部、不同队列之间的关系都比较复杂,这导致调度算法的硬件实现较复杂。
因此,如何在进行内存访问时较少地影响访存带宽且硬件实现代价较少,就成为了现阶段比较关注的一个问题。
发明内容
本发明解决的问题是现有技术对于内存访问时,影响访存带宽的问题。
本发明还解决的问题是现有技术实现内存访问时,硬件实现较复杂的问题。
为解决上述问题,本发明提供一种读-修改-写处理系统,包括:命令分发单元、子命令生成单元、仲裁单元、信号生成单元、双向数据传输单元、计算单元以及数据缓冲单元,其中,
命令分发单元,将所获得的读-修改-写命令分发至与所述读-修改-写命令的访问地址对应的子命令生成单元;
子命令生成单元,将获得的读-修改-写命令拆分成操作序列,基于所述操作序列依次生成内存操作命令,并发送至仲裁单元;
仲裁单元,以同类型命令优先通过的方式对所获得的内存操作命令进行仲裁,将通过的内存操作命令发送至信号生成单元,并将读-修改-写命令对应的数据修改信息发送至计算单元;
信号生成单元,将所获得的内存操作命令转换成符合内存的规定格式的操作信号后发送至内存,并根据操作信号控制双向数据传输单元的数据传输操作;
双向数据传输单元,根据信号生成单元的控制,从内存中读取数据或从数据缓冲单元中获得数据并写入内存中;
计算单元,根据数据修改信息对从内存中读取的数据进行修改,获得修改后数据,并发送至数据缓冲单元;
数据缓冲单元,暂存计算单元获得的计算结果。
相应地,本发明还提供一种读-修改-写处理方法,包括:
将读-修改-写命令按其访问地址进行划分;
并行处理所划分的各条读-修改-写命令,包括:将读-修改-写命令拆分成操作序列,并基于所述操作序列依次生成内存操作命令;
以同类型命令优先通过的方式对所生成的内存操作命令进行仲裁;
将通过仲裁的内存操作命令转换成符合内存的规定格式的操作信号;
根据操作信号进行数据传输,从内存中读取数据,或根据与读-修改-写命令对应的数据修改信息将从内存中读取的数据修改后写入内存。
与现有技术相比,本发明具有以下优点:通过子命令生成单元,在任一时刻读-修改-写处理系统可以同时处理多个“读-修改-写”命令。当需要批量处理大量“读-修改-写”命令的时候,就可以通过该方式并行处理。这时,可以避开“对于同一激活行的读写访问之间存在的时间间隔较大”这一问题对访存性能的影响,从而提高了访存带宽。
以同类型命令优先通过的方式对所获得的内存操作命令进行仲裁,使得同一类型的命令可以得到优先通过,并随即处理。在该类型命令处理完成后,再通过另一类型的命令。通过该策略,可以避免例如反复切换读、写数据传输,则数据总线的读写方向切换次数就较少。因而,相应的“读、写访问间需暂停若干拍”出现的次数就较少,在处理批量“读-修改-写”命令时,就可以提高访存带宽。
附图说明
图1是应用读-修改-写处理系统对内存进行读-修改-写操作示意图。
图2是本发明读-修改-写处理系统的一种实施方式与SDRAM内存配合示意图;
图3是图2所示读-修改-写处理系统中子命令生成单元的一种结构示意图;
图4是图2所示读-修改-写处理系统中仲裁单元和寄存器A、寄存器B的配合示意图;
图5是本发明读-修改-写处理方法的一种实施方式图。
具体实施方式
通过对现有技术的分析可以得知,若任一时刻系统只能处理一个“读-修改-写”命令,那么当需要批量处理大量“读-修改-写”命令的时候,系统就只能依次串行处理。则由于“对于同一激活行的读、写访问之间存在的时间间隔较大”这一问题,在批量处理“读-修改-写”命令时就会影响访存带宽。
通过对现有技术的分析还可以得知,在批量处理大量“读-修改-写”命令的时候,若反复切换读、写数据传输,则也将由于“读、写访问间需暂停若干拍”出现的次数较多,而影响访存带宽。
基于此,本发明针对现有技术影响访存带宽的成因,进行相应解决,通过同时处理多个“读-修改-写”命令以及减少读、写数据传输切换的次数,来提高访存带宽。其具体实现将在以下结合附图进行详细说明。
参照图1所示,在内存访问操作时,一般都是由处理器(或各类型的功能单元)向读-修改-写处理系统发出读-修改-写请求,由读-修改-写处理系统从内存,例如SDRAM中读取数据进行修改,并将修改后数据写入SDRAM。
参照图2所示,本发明读-修改-写处理系统的一种实施方式包括:命令分发单元1、若干个子命令生成单元、仲裁单元3、信号生成单元4、双向数据传输单元5、计算单元6以及数据缓冲单元7,其中,
命令分发单元1,将所获得的读-修改-写命令分发至与所述读-修改-写命令的访问地址对应的子命令生成单元;
子命令生成单元,将获得的读-修改-写命令拆分成操作序列,基于所述操作序列依次生成内存操作命令,并发送至仲裁单元3;
仲裁单元3,以同类型命令优先通过的方式对所获得的内存操作命令进行仲裁,将通过的内存操作命令发送至信号生成单元4,并将读-修改-写命令对应的数据修改信息发送至计算单元6(数据修改信息和读命令一起,经由读数据通道53转发至计算单元6);
信号生成单元4,将所获得的内存操作命令转换成符合内存的规定格式的操作信号后发送至内存9,并根据操作信号控制双向数据传输单元5的数据传输操作;
双向数据传输单元5,根据信号生成单元的控制,从内存中读取数据或从数据缓冲单元7中获得数据并写入内存9中;
计算单元6,根据数据修改信息对从内存中读取的数据进行修改,获得修改后数据,并发送至数据缓冲单元7;
数据缓冲单元7,暂存计算单元6获得的计算结果。
上述读-修改-写处理系统中,通过命令分发单元1将需批量处理的读-修改-写命令分发至子命令生成单元,由与访问地址对应的子命令生成单元并行处理对应的读-修改-写命令,生成相应内存操作命令,并通过仲裁单元3以同类型命令优先通过的仲裁策略对内存操作命令进行仲裁。从而,各子命令生成单元生成的内存操作命令得以通过所述仲裁策略,按类型被顺序通过以得到后续的执行。该仲裁策略由于使得同一种类型的内存操作命令被一起执行,减少了各类型内存操作命令的切换次数。特别对于读-修改-写命令中涉及的读、写访问间隔较大的问题有较大的改善作用。因而通过上述读-修改-写处理系统的并行+仲裁策略的处理方式,改善了批量处理“读-修改-写”命令时影响访存带宽的问题。相应地,也就提高了访存带宽。
以下将通过应用上述读-修改-写处理系统对SDRAM内存进行读-修改-写操作的实例,来进行进一步说明。
继续参照图2所示,例如对于具有8个存储阵列(Bank 0~Bank 7)和8个敏感放大器(图未示)的SDRAM内存9,上述读-修改-写处理系统也可相应有8个结构完全相同的子命令生成单元20~27。假设当前向所述读-修改-写处理系统一次发送8个读-修改-写命令,分别对应上述存储阵列Bank 0~Bank 7的访问地址的。以下为说明方便,定义存储阵列Bank 0~Bank 7的访问地址分别为addr0~addr7。且该8个读-修改-写命令的发送时间也依访问地址Bank 0~Bank 7的顺序排列。
当命令分发单元1获得所述8个读-修改-写命令时,会解析各命令获取访问地址,然后根据子命令生成单元与访问地址的映射关系,将命令发送至对应的子命令生成单元。其中可选地,所述映射关系可以映射表的方式存于命令分发单元中。
例如,命令分发单元1根据子命令生成单元20与addr0的映射关系,将访问地址为addr0的读-修改-写命令分发至子命令生成单元20;命令分发单元1根据子命令生成单元21与addr1的映射关系,将访问地址为addr1的读-修改-写命令分发至子命令生成单元21......命令分发单元1根据子命令生成单元27与addr7的映射关系,将访问地址为addr7的读-修改-写命令分发至子命令生成单元27。
接着,当各个子命令生成单元获得分发的读-修改-写命令时,均会执行相同的操作。以下仅以子命令生成单元20为例,其他子命令生成单元的操作过程可参考此处说明。参照图3所示,所述子命令生成单元20的一种实例可以包括:次态生成逻辑、状态寄存器以及子命令生成逻辑。
当子命令生成单元20获得分发的读-修改-写命令时,次态生成逻辑会结合当前获得的状态以及仲裁通过信号(该信号会在后面作详细说明),获得当前可生成的SDRAM操作命令对应的状态,并发送至状态寄存器。所述状态寄存器就可根据该状态将读-修改-写命令拆分为一个操作序列。例如,该操作序列包括:激活,读,写,写回等。假定激活、读、写、写回对应的状态分别为00、01、10、11,若所述状态寄存器以该操作序列输出,则子命令生成逻辑在获得00后,就会生成激活SDRAM的存储阵列Bank 0的操作命令。同时,状态寄存器还会将00返回至次态生成逻辑。
以下就是子命令生成单元20在生成SDRAM操作命令时所需参考的事件:
(1)只有在激活操作命令被仲裁通过后,才会生成读操作命令;
(2)只有在读操作命令被仲裁通过后,才有“读数据”从SDRAM存储阵列返回给计算单元6;
(3)只有在计算单元6完成了对“读数据”的修改以后,才会生成写操作命令;
(4)只有在写操作命令被仲裁通过后,才会生成写回操作命令。
上述事件将在后续的说明中分别予以进一步描述。
接下来,当仲裁单元3获得各个子命令生成单元发来的SDRAM操作命令后,就会依据仲裁策略对于所述SDRAM操作命令进行筛选通过。参照图4所示,所述仲裁单元3的一种实例可以包括:
过滤逻辑30~37,其分别对应接收子命令生成单元20~27发送的SDRAM操作命令,并根据当前寄存器A和寄存器B的值,对所接收的SDRAM操作命令进行过滤,将过滤通过的SDRAM操作信号发送至8选1逻辑38中;
8选1逻辑38,将过滤逻辑30~37发送的过滤后操作命令作为通过仲裁的SDRAM操作命令输出,并以所述通过仲裁的SDRAM操作命令对应的访问地址,向其对应的子命令生成单元发送相应仲裁通过信号。
所述仲裁单元3执行的仲裁策略是同类型命令优先通过,并且由于仲裁所要解决的主要是读、写访问切换次数过多的问题,因而此处的仲裁策略可以仅对于读、写操作命令应用。而对于上述提到的激活以及写回操作命令的仲裁则可以按接收的时间顺序依次通过;当接收时间也相同时,则随机选择一个命令通过。
例如,过滤逻辑30首先接收到的是子命令生成单元20发送的激活存储阵列Bank 0的操作命令,由于此时该激活操作命令是最先到达仲裁单元3的,因而所述过滤逻辑30会将激活操作命令发送至8选1逻辑38,而8选1逻辑38也会将该激活操作命令输出,并同时向子命令生成单元20发送激活操作命令仲裁通过的信号。
而当子命令生成单元20获得激活操作命令仲裁通过的信号时,就会依前述说明,按操作序列生成读操作命令,并再次发送至过滤逻辑30。以上激活命令的仲裁过程对于其他子命令生成单元21~27发送的激活操作命令也相同。
关于写回操作命令的仲裁过程也可参照激活操作命令的相关说明。
而对于读、写操作命令的仲裁,所述同类型命令优先通过的仲裁策略就是:当前一个通过的命令是读操作命令时,那么,接下来仍然让读操作命令优先通过;当前一个通过的命令是写操作命令时,那么,接下来仍然让写操作命令优先通过。采用该仲裁策略,就能够使得各个子命令生成单元产生的读操作命令和写操作命令在同一批次中得到处理,减少了读、写访问切换次数,使得处理批量“读-修改-写”命令时,只需经过一次读、写访问间的暂停若干拍操作,从而提高了访存带宽。
为实现以上仲裁策略,可以通过例如加入时序寄存器与仲裁单元3配合,通过时序寄存器对于读、写操作命令的仲裁通过进行约束,以控制仲裁单元3的仲裁过程。
结合图2和图4所示,所述读-修改-写处理系统还可以包括两个时序寄存器,寄存器A和寄存器B。其中,寄存器A用于约束读操作命令的仲裁通过;寄存器B用于约束写操作命令的仲裁通过。也就是说,当寄存器A的值不为0时,读操作命令不能仲裁通过;当寄存器B的值不为0时,写操作命令不能仲裁通过。
具体地说,如果有读操作命令仲裁通过,例如子命令生成单元20发送的对存储阵列Bank 0的读操作命令仲裁通过,则8选1逻辑38通知寄存器B置m(m是一个不小于1的整数)。
如果没有读操作命令仲裁通过,那么寄存器B在未获得8选1逻辑38通知的情况下会执行下列操作:
如果寄存器B不为零,则寄存器B减1,若减1操作后,仍没有读操作命令仲裁通过,则继续减1,直至零;
如果寄存器B为零,则寄存器保持为零。
而如果有写操作命令仲裁通过,则8选1逻辑38通知寄存器A置n(n是一个不小于1的整数);
如果没有写操作命令仲裁通过,那么寄存器A在未获得8选1逻辑38通知的情况下会执行下列操作:
如果寄存器A不为零,则寄存器A减1,若减1操作后,仍没有写操作命令仲裁通过,则继续减1,直至零;
如果寄存器A为零,则寄存器保持为零。
通过使用寄存器A和寄存器B,可以达到如下效果:
当写操作命令仲裁通过后,如果下一拍同时有读操作命令和写操作命令参与仲裁,那么,由于寄存器A已被置为n,读操作命令不能仲裁通过,而写操作命令能够仲裁通过。这样,就使得在写操作命令仲裁通过后,后续的写操作命令优先于读操作命令被仲裁通过。反之,亦然。
继续参照图2所示,当信号生成单元4收到仲裁单元3发送的SDRAM操作命令后,就会将之转换成符合SDRAM内存9的规定格式的操作信号后发送至SDRAM内存9。
信号生成单元4发送至SDRAM内存9的操作信号可以包括:1位CS_N信号,1位RAS_N信号,1位CAS_N信号,1位WE_N信号,3位BANK信号,15位ADDR信号。
其中,BANK信号的设置和操作命令的来源有关:如果操作命令由“子命令生成单元20”生成,那么BANK信号将设置为000;如果操作命令由“子命令生成单元21”生成,那么BANK信号将设置为001;如果操作命令由“子命令生成单元22”生成,那么BANK信号将设置为010;如果操作命令由“子命令生成单元23”生成,那么BANK信号将设置为011;如果操作命令由“子命令生成单元24”生成,那么BANK信号将设置为100;如果操作命令由“子命令生成单元25”生成,那么BANK信号将设置为101;如果操作命令由“子命令生成单元26”生成,那么BANK信号将设置为110;如果操作命令由“子命令生成单元27”生成,那么BANK信号将设置为111。
15位ADDR信号的内容由“子命令生成单元”根据读-修改-写命令的访问地址生成。
当信号生成单元4收到的操作命令为激活时,CS_N信号置0,RAS_N信号置0,CAS_N信号置1,WE_N信号置1;
当信号生成单元4收到的操作命令为写回时,CS_N信号置0,RAS_N信号置0,CAS_N信号置1,WE_N信号置0;
当信号生成单元4收到的操作命令读时,CS_N信号置0,RAS_N信号置1,CAS_N信号置0,WE_N信号置1;
当信号生成单元4收到的操作命令为写时,CS_N信号置0,RAS_N信号置1,CAS_N信号置0,WE_N信号置0。
此处主要对于读、写操作命令的处理进行说明,信号生成单元4收到读操作命令时,按照上述说明的格式向SDRAM内存9发送读操作信号,并且控制双向数据传输单元5在约定的时间后开始从SDRAM内存9的相应访问地址读取数据;当信号生成单元4收到写操作命令时,按照上述说明的格式向SDRAM内存9发送写操作信号,并且控制双向数据传输单元5在约定的时间后开始向SDRAM内存9的相应访问地址写入数据。其中,该约定时间必须符合SDRAM内存9的要求。SDRAM内存9的生产厂家会提供该参数。在系统正式工作之前,需要将该参数配置到双向数据传输单元5中。
继续参照图2所示,所述双向数据传输单元5可以包括双向数据控制单元51、写数据通道52以及读数据通道53。
结合上述说明,信号生成单元4收到读操作命令时,按照上述说明的格式向SDRAM内存9发送读操作信号,并且控制双向数据传输单元5中的双向数据控制单元51在约定的时间后将数据传输方向设置为“读”,从而进行从SDRAM内存9的相应访问地址读取数据的操作。所读取的数据发送至读数据通道53。
因此,为配合所述双向数据控制单元51,当有读操作命令通过仲裁后,仲裁单元3会向读数据通道53发送消息,消息的内容包括:
1)读操作命令仲裁通过的信号;
2)生成该读操作命令的子命令生成单元的编号;
3)计算单元6所需要的数据修改信息。在读数据通道53收到上述消息后,将开始计时。在等待与所述双向数据控制单元51相同的约定时间后,从双向数据控制单元51接收其从SDRAM中相应存储阵列读取的数据,并将该数据、子命令生成单元的编号以及数据修改信息一起发送给计算单元6。
例如,子命令生成单元20的读操作命令仲裁通过,仲裁单元3就会向读书据通道53发送消息,包括:读操作命令仲裁通过,子命令生成单元编号为20以及相应的数据修改信息。在所述约定时间后,读数据通道53从双向数据控制单元51接收其从SDRAM中存储阵列Bank 0读取的数据,并将该读数据、子命令生成单元的编号20以及数据修改信息一起发送给计算单元6。
当信号生成单元4收到写操作命令时,按照上述说明的格式向SDRAM内存9发送写操作信号,并且控制双向数据传输单元5中的双向数据控制单元51在约定的时间后将数据传输方向设置为“写”,从而进行向SDRAM内存9的相应访问地址写入数据的操作。所写入的数据经由写数据通道52从数据缓冲单元7获得。
因此,为配合所述双向数据控制单元51,当有写操作命令通过仲裁后,仲裁单元3会向写数据通道52发送消息,消息的内容包括:
(1)写操作命令仲裁通过;
(2)生成该写操作命令的子命令生成单元的编号。在写数据通道52收到上述消息后,将开始计时。在等待与所述双向数据控制单元51相同的约定时间后,根据生成该写操作命令的子命令生成单元的编号,从数据缓冲单元7中相应的缓冲寄存器中取出数据,发送给双向数据控制单元51。
例如,子命令生成单元20的写操作命令仲裁通过,仲裁单元3就会向写书据通道53发送消息,包括:写操作命令仲裁通过,子命令生成单元编号为20。在所述约定时间后,写数据通道52从数据缓冲单元7中与存储阵列Bank0相应的缓冲寄存器中取出修改后的数据,并发送给双向数据控制单元51。
读-修改-写命令的目的就是从SDRAM内存中读取数据,并修改该数据后重新写入SDRAM内存中。而修改部分的操作就由计算单元6完成。所述计算单元6在获得了读数据通道53发送的读数据、子命令生成单元的编号以及数据修改信息后,根据数据修改信息对读数据进行修改,获得修改数据后将其和子命令生成单元的编号一起发送至数据缓冲单元7,并通知该子命令生成单元修改数据已完成。
而数据缓冲单元7,对应子命令生成单元20~27,其共有8个缓冲寄存器。例如,0号缓冲寄存器对应子命令生成单元20,也即对应存储阵列Bank 0。因而,例如子命令生成单元20生成的写操作命令,其所需要的数据通过以下方式获得:由计算单元6根据数据修改信息对从存储阵列Bank 0中读取的数据修改后,存入0号缓冲寄存器中。
结合上述写数据通道52的举例说明,当子命令生成单元20生成的写操作命令仲裁通过后,写数据通道52从数据缓冲单元7中的0号缓冲寄存器取出修改后数据,并发送给双向数据控制单元51。而双向数据控制单元51就会向SDRAM内存9的存储阵列Bank 0写入修改后数据。
对应于上述读-修改-写处理系统的工作过程,本发明还提供了一种读-修改-写处理方法,参照图5所示,所述读-修改-写处理方法的一种实施方式包括:
步骤s1,将读-修改-写命令按其访问地址进行划分;
步骤s2,并行处理所划分的各条读-修改-写命令,包括:将读-修改-写命令拆分成操作序列,并基于所述操作序列依次生成内存操作命令;
步骤s3,以同类型命令优先通过的方式对所生成的内存操作命令进行仲裁;
步骤s4,将通过仲裁的内存操作命令转换成符合内存的规定格式的操作信号;
步骤s5,根据操作信号进行数据传输,从内存中读取数据,或根据与读-修改-写命令对应的数据修改信息将从内存中读取的数据修改后写入内存。
其中,所述将读-修改-写命令拆分成的操作序列包括:激活命令、读命令、写命令以及写回命令;所述依次生成内存操作命令包括:
在激活操作命令被仲裁通过后,才会生成读操作命令;
在完成了对读取数据的修改以后,才会生成写操作命令;
在写操作命令被仲裁通过后,才会生成写回操作命令。
虽然本发明已以较佳实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (10)
1.一种读-修改-写处理系统,其特征在于,包括:命令分发单元、若干个子命令生成单元、仲裁单元、信号生成单元、双向数据传输单元、计算单元以及数据缓冲单元,其中,
命令分发单元,将所获得的读-修改-写命令分发至与所述读-修改-写命令的访问地址对应的子命令生成单元;
子命令生成单元,将获得的读-修改-写命令拆分成操作序列,基于所述操作序列依次生成内存操作命令,并发送至仲裁单元;
仲裁单元,以同类型命令优先通过的方式对所获得的内存操作命令进行仲裁,将仲裁通过的内存操作命令发送至信号生成单元,并将读-修改-写命令对应的数据修改信息发送至计算单元;
信号生成单元,将所获得的内存操作命令转换成符合内存的规定格式的操作信号后发送至内存,并根据操作信号控制双向数据传输单元的数据传输操作;
双向数据传输单元,根据信号生成单元的控制,从内存中读取数据或从数据缓冲单元中获得数据并写入内存中;
计算单元,根据数据修改信息对从内存中读取的数据进行修改,获得修改后数据,并发送至数据缓冲单元;
数据缓冲单元,暂存计算单元获得的计算结果。
2.如权利要求1所述的读-修改-写处理系统,其特征在于,所述双向数据传输单元包括:双向数据控制单元、读数据通道以及写数据通道,其中,
所述双向数据控制单元根据信号生成单元的控制设置数据传输方向,在数据传输方向为“读”时,从内存中读取数据,并发送至读数据通道;在数据传输方向为“写”时,经由写数据通道从数据缓冲单元中获得修改后数据,并写入内存。
3.如权利要求1所述的读-修改-写处理系统,其特征在于,所述仲裁单元在内存操作命令仲裁通过后,还向相应子命令生成单元发送仲裁通过信号。
4.如权利要求3所述的读-修改-写处理系统,其特征在于,所述子命令生成单元数量与内存中存储阵列数量对应,包括:次态生成逻辑、状态寄存器以及子命令生成逻辑,其中,
次态生成逻辑,根据当前状态以及仲裁通过信号,获得当前可生成的内存操作命令对应的状态;
状态寄存器,根据次态生成逻辑生成的状态将读-修改-写命令拆分为一个操作序列,发送至子命令生成逻辑,并将当前输出的操作序列中命令的状态返回次态生成逻辑;
子命令生成逻辑,根据状态寄存器发送的操作序列,依次生成内存操作命令,并按操作序列依次发送至仲裁单元。
5.如权利要求3所述的读-修改-写处理系统,其特征在于,所述读-修改-写处理系统还包括第一时序寄存器和第二时序寄存器,分别用于约束读操作命令和写操作命令的仲裁通过。
6.如权利要求5所述的读-修改-写处理系统,其特征在于,所述仲裁单元包括:
若干过滤逻辑,与子命令生成单元数量相同,其分别对应接收子命令生成单元发送的内存操作命令,并根据当前第一时序寄存器和第二时序寄存器的值,对所接收的内存操作命令进行过滤,将过滤通过的内存操作信号发送至多路选择逻辑;
多路选择逻辑,将过滤逻辑发送的过滤后操作命令作为通过仲裁的内存操作命令输出,并以所述通过仲裁的内存操作命令对应的访问地址,向其对应的子命令生成单元发送相应仲裁通过信号。
7.如权利要求6所述的读-修改-写处理系统,其特征在于,所述过滤逻辑在第一时序寄存器为零时,过滤通过读操作命令;在第二时序寄存器为零时,过滤通过写操作命令。
8.如权利要求1所述的读-修改-写处理系统,其特征在于,所述命令分发单元包括映射表,根据映射表中子命令生成单元与访问地址的映射关系,将所获得的读-修改-写命令分发至对应的子命令生成单元。
9.一种读-修改-写处理方法,其特征在于,包括:
将读-修改-写命令按其访问地址进行划分;
并行处理所划分的各条读-修改-写命令,包括:将读-修改-写命令拆分成操作序列,并基于所述操作序列依次生成内存操作命令;
以同类型命令优先通过的方式对所生成的内存操作命令进行仲裁;
将通过仲裁的内存操作命令转换成符合内存的规定格式的操作信号;
根据操作信号进行数据传输,从内存中读取数据,或根据与读-修改-写命令对应的数据修改信息将从内存中读取的数据修改后写入内存。
10.如权利要求9所述的读-修改-写处理方法,其特征在于,所述将读-修改-写命令拆分成的操作序列包括:激活命令、读命令、写命令以及写回命令;所述依次生成内存操作命令包括:
在激活操作命令被仲裁通过后,才会生成读操作命令;
在完成了对读取数据的修改以后,才会生成写操作命令;
在写操作命令被仲裁通过后,才会生成写回操作命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910165363 CN101989241B (zh) | 2009-08-07 | 2009-08-07 | 读-修改-写处理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910165363 CN101989241B (zh) | 2009-08-07 | 2009-08-07 | 读-修改-写处理系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101989241A true CN101989241A (zh) | 2011-03-23 |
CN101989241B CN101989241B (zh) | 2012-08-08 |
Family
ID=43745780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910165363 Active CN101989241B (zh) | 2009-08-07 | 2009-08-07 | 读-修改-写处理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101989241B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107835989A (zh) * | 2015-07-13 | 2018-03-23 | 华为技术有限公司 | 共享存储控制器及使用共享存储控制器的方法 |
CN112291212A (zh) * | 2020-10-16 | 2021-01-29 | 北京锐安科技有限公司 | 静态规则的管理方法、装置、电子设备和存储介质 |
CN112805676A (zh) * | 2018-09-17 | 2021-05-14 | 美光科技公司 | 基于数据总线模式对读取操作和写入操作的调度 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5448519A (en) * | 1984-10-05 | 1995-09-05 | Hitachi, Ltd. | Memory device |
US6799293B2 (en) * | 2001-06-19 | 2004-09-28 | Adaptec, Inc. | Sparse byte enable indicator for high speed memory access arbitration method and apparatus |
US7363442B2 (en) * | 2004-11-12 | 2008-04-22 | International Business Machines Corporation | Separate handling of read and write of read-modify-write |
CN101493755B (zh) * | 2009-02-27 | 2010-08-04 | 武汉中岩科技有限公司 | 一种同时读写存储器的方法及数据采集装置 |
-
2009
- 2009-08-07 CN CN 200910165363 patent/CN101989241B/zh active Active
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107835989A (zh) * | 2015-07-13 | 2018-03-23 | 华为技术有限公司 | 共享存储控制器及使用共享存储控制器的方法 |
CN107835989B (zh) * | 2015-07-13 | 2020-12-01 | 华为技术有限公司 | 共享存储控制器及使用共享存储控制器的方法 |
CN112805676A (zh) * | 2018-09-17 | 2021-05-14 | 美光科技公司 | 基于数据总线模式对读取操作和写入操作的调度 |
US11874779B2 (en) | 2018-09-17 | 2024-01-16 | Micron Technology, Inc. | Scheduling of read operations and write operations based on a data bus mode |
CN112805676B (zh) * | 2018-09-17 | 2024-04-05 | 美光科技公司 | 基于数据总线模式对读取操作和写入操作的调度 |
CN112291212A (zh) * | 2020-10-16 | 2021-01-29 | 北京锐安科技有限公司 | 静态规则的管理方法、装置、电子设备和存储介质 |
CN112291212B (zh) * | 2020-10-16 | 2023-02-28 | 北京锐安科技有限公司 | 静态规则的管理方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101989241B (zh) | 2012-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4742116B2 (ja) | アウトオブオーダdramシーケンサ | |
US5870625A (en) | Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command | |
US8880745B2 (en) | Efficient scheduling of transactions from multiple masters | |
CN107391400A (zh) | 一种支持复杂访存指令的内存扩展方法和系统 | |
CN101211321A (zh) | 分层存储器读取/写入微指令调度器 | |
US20100017544A1 (en) | Direct memory access controller and data transmitting method of direct memory access channel | |
CN112948293A (zh) | 一种多用户接口的ddr仲裁器及ddr控制器芯片 | |
CN111857831B (zh) | 一种存储体冲突优化方法、并行处理器及电子设备 | |
CN101989241B (zh) | 读-修改-写处理系统及方法 | |
US8886844B2 (en) | Efficient scheduling of read and write transactions in dynamic memory controllers | |
US20070101032A1 (en) | Bus arbitration circuit and bus arbitration method | |
JP2010152585A (ja) | 複数バスを有するシステムlsi | |
CN112256203A (zh) | Flash存储器的写入方法、装置、设备、介质及系统 | |
JP5058116B2 (ja) | ストリーミングidメソッドによるdmac発行メカニズム | |
EP1685495B1 (en) | Electronic data processing circuit that transmits packed words via a bus | |
US7788466B2 (en) | Integrated circuit with a plurality of communicating digital signal processors | |
JPS592058B2 (ja) | 記憶装置 | |
JPH05120207A (ja) | デ−タ転送方式 | |
JPH0895899A (ja) | Dma転送制御装置 | |
JPS5999522A (ja) | 入出力制御方式 | |
JPS63259746A (ja) | バンクメモリ間のデ−タ転送方式 | |
JPS63205751A (ja) | バス制御装置 | |
JPS63188233A (ja) | 中央演算処理装置 | |
JP2003228546A (ja) | ダイレクト・メモリ・アクセス制御装置 | |
JPH02187849A (ja) | バス・インターフェース装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |