CN104778131B - 一种数据缓存方法及一种缓冲存储器 - Google Patents
一种数据缓存方法及一种缓冲存储器 Download PDFInfo
- Publication number
- CN104778131B CN104778131B CN201510213718.3A CN201510213718A CN104778131B CN 104778131 B CN104778131 B CN 104778131B CN 201510213718 A CN201510213718 A CN 201510213718A CN 104778131 B CN104778131 B CN 104778131B
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- data cached
- currently
- buffer unit
- 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
- 238000000034 method Methods 0.000 title claims abstract description 35
- 108010001267 Protein Subunits Proteins 0.000 claims description 17
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000003111 delayed effect Effects 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 claims description 3
- 210000004027 cell Anatomy 0.000 description 12
- 241000288673 Chiroptera Species 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种数据缓存方法及一种缓冲存储器,该方法,包括:S1:接收输入源发来的缓存数据;S2:根据当前缓存单元中存储的缓存数据及当前拍的缓存数据,判断当前拍的缓存数据是否满足归并条件,如果是,则执行步骤S3,否则,将下一个空闲缓存单元作为当前缓存单元,执行步骤S3;S3:将当前拍的缓存数据存储到当前缓存单元中,返回步骤S1。通过本发明提供了一种数据缓存方法及一种缓冲存储器,能够节省存储空间。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种数据缓存方法及一种缓冲存储器。
背景技术
随着计算机技术的快速发展,单核处理器受性能的限制已不能满足人们日益增多的需求,为了实现更高的性能需要,多核处理器的研究与应用与日俱增。如何提高多核***的并行处理能力和实现更高的存储带宽,越来越受到重视。在多核***运行中,每个核心是协同处理的,对于每个核心产生的共享数据,需要进行缓冲再处理,否则会出现乱序,一致性的问题。为了避免产生这些问题,在内核与存储体、外设之间使用共享存储端的结构,它能够起到数据缓冲与处理的作用。
现有技术中,缓冲存储器中通过端口接收外部输入源发来的数据,将同一拍的数据存储在同一个缓存单元中,将不同拍的数据存储在不同的缓存单元中。
通过上述描述可见,现有技术的缓冲存储器在一拍的数据比较少时,也要通过一个缓存单元来存储,浪费了存储空间。
发明内容
有鉴于此,本发明提供了一种数据缓存方法及一种缓冲存储器,能够节省存储空间。
一方面,本发明提供了一种数据缓存方法,包括:
S1:接收输入源发来的缓存数据;
S2:根据当前缓存单元中存储的缓存数据及当前拍的缓存数据,判断当前拍的缓存数据是否满足归并条件,如果是,则执行步骤S3,否则,将下一个空闲缓存单元作为当前缓存单元,执行步骤S3;
S3:将当前拍的缓存数据存储到当前缓存单元中,返回步骤S1。
进一步地,在所述S1之前,还包括:预先设置写数据的缓存单元和读数据的缓存单元,其中,缓存单元包括:写数据的缓存单元、读数据的缓存单元,所述缓存数据包括:写数据、读数据;
所述S2中,所述将下一个空闲缓存单元作为当前缓存单元,包括:将下一个空闲写数据的缓存单元作为当前写数据的缓存单元,将下一个空闲读数据的缓存单元作为当前读数据的缓存单元;
所述S3,包括:将当前拍的缓存数据中的写数据存储到当前写数据的缓存单元中,将当前拍的缓存数据中的读数据存储到当前读数据的缓存单元中。
进一步地,还包括:
所述S2,包括:
B1:判断当前缓存单元中存储的缓存数据及当前拍的缓存数据是否都满足读数据和写数据均小于等于第一预设值,如果是,则执行步骤B2,否则,判定当前拍的缓存数据不满足归并条件;
B2:获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据的所有输入源的地址与当前缓存单元中存储的缓存数据的所有输入源的地址中,是否存在相同的地址,如果是,则判定当前拍的数据不满足归并条件,否则,判定当前拍的数据满足归并条件。
进一步地,所述S2,包括:
A1:判断当前拍的缓存数据的数量与当前缓存单元中存储的缓存数据的数量之和是否小于等于第二预设值,如果是,则执行步骤A2,否则,判定当前拍的缓存数据不满足归并条件;
A2:获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据存储到当前缓存单元中是否会造成地址访问顺序错误,如果是,则判定当前拍的数据不满足归并条件,否则,判定当前拍的数据满足归并条件。
进一步地,还包括:预先设置用于指示写位置的写指针和用于指示读位置的读指针;
实时判断写指针与读指针的差值的绝对值是否小于等于第三预设值,当判断结果为是时,向所述输入源发送停止发送缓存数据的信号,以使所述输入源停止发送缓存数据,当判断结果为否时,不向所述输入源发送停止发送缓存数据的信号,以使所述输入源继续发送缓存数据;
其中,由缓存单元组成的缓存体是先入先出的结构。
另一方面,本发明提供了一种缓冲存储器,包括:
接收单元,用于接收输入源发来的缓存数据;
第一判断单元,用于根据当前缓存单元中存储的缓存数据及当前拍的缓存数据,判断当前拍的缓存数据是否满足归并条件,当判断结果为是时,通知存储单元,当判断结果为否时,将下一个空闲缓存单元作为当前缓存单元,通知存储单元;
存储单元,用于将当前拍的缓存数据存储到当前缓存单元中,通知接收单元。
进一步地,还包括:
第一设置单元,用于设置写数据的缓存单元和读数据的缓存单元,其中,缓存单元包括:写数据的缓存单元、读数据的缓存单元,所述缓存数据包括:写数据、读数据;
所述第一判断单元,用于将下一个空闲写数据的缓存单元作为当前写数据的缓存单元,将下一个空闲读数据的缓存单元作为当前读数据的缓存单元;
所述存储单元,用于将当前拍的缓存数据中的写数据存储到当前写数据的缓存单元中,将当前拍的缓存数据中的读数据存储到当前读数据的缓存单元中。
进一步地,所述第一判断单元,包括:第一判断子单元、第二判断子单元;
第一判断子单元,用于判断当前缓存单元中存储的缓存数据及当前拍的缓存数据是否都满足读数据和写数据均小于等于第一预设值,当判断结果为是时,通知所述第二判断子单元,当判断结果为否时,判定当前拍的缓存数据不满足归并条件;
第二判断子单元,用于获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据的所有输入源的地址与当前缓存单元中存储的缓存数据的所有输入源的地址中,是否存在相同的地址,当判断结果为是时,则判定当前拍的数据不满足归并条件,当判断结果为否时,判定当前拍的数据满足归并条件。
进一步地,所述第一判断单元,包括:第三判断子单元、第四判断子单元;
所述第三判断子单元,用于判断当前拍的缓存数据的数量与当前缓存单元中存储的缓存数据的数量之和是否小于等于第二预设值,当判断结果为是时,通知所述第四判断子单元,当判断结果为否时,判定当前拍的缓存数据不满足归并条件;
所述第四判断子单元,用于获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据存储到当前缓存单元中是否会造成地址访问顺序错误,当判断结果为是时,则判定当前拍的数据不满足归并条件,当判断结果为否时,判定当前拍的数据满足归并条件。
进一步地,所述缓冲存储器包括:缓存体;所述缓存体包括:所述缓存单元;所述缓存体是先入先出的结构;
还包括:第二设置单元,用于设置用于指示写位置的写指针和用于指示读位置的读指针;
第二判断单元,用于实时判断写指针与读指针的差值的绝对值是否小于等于第三预设值,当判断结果为是时,向所述输入源发送停止发送缓存数据的信号,以使所述输入源停止发送缓存数据,当判断结果为否时,不向所述输入源发送停止发送缓存数据的信号,以使所述输入源继续发送缓存数据;
和/或,
所述缓冲存储器的缓存体是寄存器文件的结构,所述缓存单元包括寄存器;
和/或,
还包括:状态监控单元,用于通过有效寄存器来记录每个缓存单元的状态,在当前的缓存单元能够存储接收到的缓存数据时,将当前的缓存单元标记为空闲,否则,标记为不空闲。
本发明提供了一种数据缓存方法及一种缓冲存储器,在存储接到的缓存数据之前,确定当前拍的缓存数据是否满足归并条件,如果满足归并条件则可以将当前拍的缓存数据与之前拍的缓存数据存储到同一个缓存单元中,不用将不同拍的数据存储在不同的缓存单元中,节省了存储空间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种数据缓存方法的流程图;
图2是本发明一实施例提供的另一种数据缓存方法的流程图;
图3是本发明一实施例提供的一种缓冲存储器的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种数据缓存方法,该方法可以包括以下步骤:
步骤101:接收输入源发来的缓存数据;
步骤102:根据当前缓存单元中存储的缓存数据及当前拍的缓存数据,判断当前拍的缓存数据是否满足归并条件,如果是,则执行步骤104,否则,执行步骤103;
步骤103:将下一个空闲缓存单元作为当前缓存单元,执行步骤104;
步骤104:将当前拍的缓存数据存储到当前缓存单元中,返回步骤101。
本发明实施例提供了一种数据缓存方法,在存储接到的缓存数据之前,确定当前拍的缓存数据是否满足归并条件,如果满足归并条件则可以将当前拍的缓存数据与之前拍的缓存数据存储到同一个缓存单元中,不用将不同拍的数据存储在不同的缓存单元中,节省了存储空间。
输入源向缓存单元中写入缓存数据,这些缓存数据中,有些是需要写入到其他设备的写数据,有些是需要从其他设备中读取数据的读数据,一般情况下,读数据的位宽远远小于写数据的位宽,也就是说,一般一拍缓存数据中,读数据的数量远远小于写数据的数量,在存储时,如果不将读数据与写数据区分,就需要按照写数据的位宽来预留足够大的存储空间。举例来说,假设在一个缓存单元中,需要为读数据预留10bit,需要为写数据预留100bit。有两个输入源,一个是向缓冲存储器中写入读数据的本地读输入源,另一个是向缓冲存储器中写入写数据的本地写输入源,在不区分读数据和写数据时,需要在缓存单元中预留200bit,在区分读数据和写数据时,将读数据和写数据分开存储,则只需预留110bit即可。为了节省存储空间,将读数据、写数据分开存储。在一种可能的实现方式中,在所述步骤101之前,还包括:预先设置写数据的缓存单元和读数据的缓存单元,其中,缓存单元包括:写数据的缓存单元、读数据的缓存单元,所述缓存数据包括:写数据、读数据;
所述步骤103中,所述将下一个空闲缓存单元作为当前缓存单元,包括:将下一个空闲写数据的缓存单元作为当前写数据的缓存单元,将下一个空闲读数据的缓存单元作为当前读数据的缓存单元;
所述步骤104,包括:将当前拍的缓存数据中的写数据存储到当前写数据的缓存单元中,将当前拍的缓存数据中的读数据存储到当前读数据的缓存单元中。
在一种可能的实现方式中,判断是否满足归并条件,可以通过以下步骤实现:所述步骤102,包括:
B1:判断当前缓存单元中存储的缓存数据及当前拍的缓存数据是否都满足读数据和写数据均小于等于第一预设值,如果是,则执行步骤B2,否则,判定当前拍的缓存数据不满足归并条件;
B2:获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据的每个输入源的地址与当前缓存单元中存储的缓存数据的每个输入源的地址中,是否存在相同的地址,如果是,则判定当前拍的数据不满足归并条件,否则,判定当前拍的数据满足归并条件。
一个缓存单元中存储的数据的数量是有限的,为了节省空间,充分利用一个缓存单元的存储空间,可以在一个缓存单元中存储接近于缓存单元的最大空间的数据,举例来说,一个缓存单元的存储空间是10个数据,在进行数据的归并时,可以将下面的第二预设值设置为8个,重复利用存储空间。在一种可能的实现方式中,所述步骤102,包括:
A1:判断当前拍的缓存数据的数量与当前缓存单元中存储的缓存数据的数量之和是否小于等于第二预设值,如果是,则执行步骤A2,否则,判定当前拍的缓存数据不满足归并条件;
A2:获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据存储到当前缓存单元中是否会造成地址访问顺序错误,如果是,则判定当前拍的数据不满足归并条件,否则,判定当前拍的数据满足归并条件。
由于将不同拍的数据存储在同一个缓存单元中,可能会造成在读取缓存单元中数据时,无法确定数据输入的先后顺序,造成缓存数据的访问顺序错误,为了避免这种情况,在进行归并前,需要判断是否会造成地址访问顺序错误,如果会,则不进行归并。举例来说,A2可以通过以下方式实现:获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,根据当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据的每个输入源的地址与当前缓存单元中存储的缓存数据的每个输入源的地址中,是否存在相同的地址,如果是,则判定当前拍的数据不满足归并条件,否则,判定当前拍的数据满足归并条件。
由于缓存单元的数量有限,当输入源不断向缓存单元中写入数据,而缓存单元中的数据无法及时被读取时,造成没有足够的空闲缓存单元,可能会发生数据阻塞,输入源无法继续写入数据,发过来的数据就会丢失,为了避免这种情况发生,在一种可能的实现方式中,该方法还包括:
实时确定当前剩余的空闲缓存单元的数量,当确定出当前剩余的空闲缓存单元的数量小于第三预设值时,通知输入源停止发送缓存数据,直到确定出当前剩余的空闲缓存单元的数量大于等于第三预设值时,通知输入源继续发送缓存数据。
在该实现方式中,当前空闲缓存单元将要被用完时,可以提前通知输入源暂停发送缓存数据,当有足够的缓存单元时,通知输入源继续发送缓存数据。
在一种可能的实现方式中,该方法还包括:预先设置用于指示写位置的写指针和用于指示读位置的读指针;
实时判断写指针与读指针的差值的绝对值是否小于等于第三预设值,当判断结果为是时,向所述输入源发送停止发送缓存数据的信号,以使所述输入源停止发送缓存数据,当判断结果为否时,不向所述输入源发送停止发送缓存数据的信号,以使所述输入源继续发送缓存数据;
其中,由缓存单元组成的缓存体是先入先出的结构。
在该实现方式中,缓存体是先入先出的结构,通过指针来确定剩余的空闲缓存单元,缓存体是先入先出的结构,还可以保证不同拍的缓存数据中,同一地址的访问顺序的一致性,避免了对同一地址的缓存数据的访问顺序的混乱。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
在该实施例中,缓冲存储器的缓存体是先入先出的结构,缓存体是寄存器文件的结构,缓存单元由寄存器组成,该缓冲存储器将缓存数据中的读数据和写数据分开存储。该缓冲存储器有8个端口,可以接收来自8个输入源发来的缓存数据,8个输入源是:本地读数据的第一输入源、本地读数据的第二输入源、本地写数据的第一输入源、本地写数据的第二输入源、网络读数据的第一输入源、网络读数据的第二输入源、网络写数据的第一输入源、网络写数据的第二输入源。
如图2所示,本发明实施例提供了一种数据缓存方法,该方法可以包括以下步骤:
步骤201:预先设置写数据的缓存单元和读数据的缓存单元,其中,缓存单元包括:写数据的缓存单元、读数据的缓存单元,所述缓存数据包括:写数据、读数据。
步骤202:接收每个输入源发来的缓存数据。
在同一拍中,所有的缓存数据中可能同时存在读数据和写数据。
步骤203:判断当前拍的缓存数据的数量与当前缓存单元中存储的缓存数据的数量之和是否小于等于第二预设值,如果是,则执行步骤204,否则,执行步骤205。
其中,第二预设值可以根据缓存单元中能够存储的数据的最大数量来确定。
步骤204:获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据的所有输入源的地址与当前缓存单元中存储的缓存数据的所有输入源的地址中,是否存在相同的地址,如果是,则执行步骤205,否则,执行步骤206。
在该步骤中,可以将当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,存储在预先设置的用于存储写数据对应的地址的写地址寄存器和用于存储读数据对应的地址的读数据寄存器中。
步骤205:将下一个空闲写数据的缓存单元作为当前写数据的缓存单元,将下一个空闲读数据的缓存单元作为当前读数据的缓存单元,执行步骤206。
步骤206:将当前拍的缓存数据中的写数据存储到当前写数据的缓存单元中,将当前拍的缓存数据中的读数据存储到当前读数据的缓存单元中,返回步骤202。
另外,在步骤202之前还可以包括:
步骤C1:预先设置用于指示写位置的写指针和用于指示读位置的读指针。
由于缓冲存储器的缓存体是先入先出的结构,为了对便于确定空闲缓存空间,可以通过写指针和读指针来实现。
步骤C2:实时判断写指针与读指针的差值的绝对值是否小于等于第三预设值,当判断结果为是时,向所述输入源发送停止发送缓存数据的信号,以使所述输入源停止发送缓存数据,当判断结果为否时,不向所述输入源发送停止发送缓存数据的信号,以使所述输入源继续发送缓存数据。
具体地,当写指针与读指针的差值的绝对值小于等于第三预设值时,缓冲存储器不停向输入源发送停止发送缓存数据的信号,输入接收到该信号后,就停止发送缓存数据,当输入源一段时间内没有接收到时,则可以继续发送缓存数据,另外,还可以通过向输入源发送继续发送缓存数据的信号来使输入源继续发送缓存数据。当读指针和写指针相等时,说明缓冲存储器已满,不能向缓冲存储器中写入数据,当读指针和写指针的差值的绝对值等于缓冲存储器的深度时,说明缓冲存储器为空,不能从缓冲存储器中读取数据。另外,缓冲存储器的深度可以根据数据写入与读出比率的关系进行设定。
需要说明的是:在一种实现方式中,可以不将缓存单元分成写数据的缓存单元和读数据的缓存单元,读数据和写数据不进行分离存储。另外,可以将C1、C2与步骤201-步骤206进行组合,作为一种实现方式。
另外,步骤203可以用步骤D1替换,组成一种实现方式,其中,D1为以下步骤:判断当前缓存单元中存储的缓存数据及当前拍的缓存数据是否都满足读数据和写数据均小于等于第一预设值,如果是,则执行步骤204,否则,判定当前拍的缓存数据不满足归并条件。第一预设值可以设置为2。
参见图3,本发明实施例提供的了缓冲存储器,包括:
接收单元301,用于接收输入源发来的缓存数据;
第一判断单元302,用于根据当前缓存单元中存储的缓存数据及当前拍的缓存数据,判断当前拍的缓存数据是否满足归并条件,当判断结果为是时,通知存储单元303,当判断结果为否时,将下一个空闲缓存单元作为当前缓存单元,通知存储单元303;
存储单元303,用于将当前拍的缓存数据存储到当前缓存单元中,通知接收单元301。
在一种可能的实现方式中,该缓冲存储器还包括:
第一设置单元,用于设置写数据的缓存单元和读数据的缓存单元,其中,缓存单元包括:写数据的缓存单元、读数据的缓存单元,所述缓存数据包括:写数据、读数据;
所述第一判断单元302,用于将下一个空闲写数据的缓存单元作为当前写数据的缓存单元,将下一个空闲读数据的缓存单元作为当前读数据的缓存单元;
所述存储单元303,用于将当前拍的缓存数据中的写数据存储到当前写数据的缓存单元中,将当前拍的缓存数据中的读数据存储到当前读数据的缓存单元中。
在一种可能的实现方式中,所述第一判断单元302,包括:第一判断子单元、第二判断子单元;
第一判断子单元,用于判断当前缓存单元中存储的缓存数据及当前拍的缓存数据是否都满足读数据和写数据均小于等于第一预设值,当判断结果为是时,通知所述第二判断子单元,当判断结果为否时,判定当前拍的缓存数据不满足归并条件;
第二判断子单元,用于获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据的所有输入源的地址与当前缓存单元中存储的缓存数据的所有输入源的地址中,是否存在相同的地址,当判断结果为是时,则判定当前拍的数据不满足归并条件,当判断结果为否时,判定当前拍的数据满足归并条件。
在一种可能的实现方式中,所述第一判断单元302,包括:第三判断子单元、第四判断子单元;
所述第三判断子单元,用于判断当前拍的缓存数据的数量与当前缓存单元中存储的缓存数据的数量之和是否小于等于第二预设值,当判断结果为是时,通知所述第四判断子单元,当判断结果为否时,判定当前拍的缓存数据不满足归并条件;
所述第四判断子单元,用于获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据存储到当前缓存单元中是否会造成地址访问顺序错误,当判断结果为是时,则判定当前拍的数据不满足归并条件,当判断结果为否时,判定当前拍的数据满足归并条件。
在一种可能的实现方式中,该缓冲存储器还包括:确定单元,用于实时确定当前剩余的空闲缓存单元的数量,当确定出当前剩余的空闲缓存单元的数量小于第三预设值时,通知输入源停止发送缓存数据,直到确定出当前剩余的空闲缓存单元的数量大于等于第三预设值时,通知输入源继续发送缓存数据。
在一种可能的实现方式中,所述缓冲存储器包括:缓存体;所述缓存体包括:所述缓存单元;所述缓存体是先入先出的结构;
还包括:第二设置单元,用于设置用于指示写位置的写指针和用于指示读位置的读指针;
第二判断单元,用于实时判断写指针与读指针的差值的绝对值是否小于等于第三预设值,当判断结果为是时,向所述输入源发送停止发送缓存数据的信号,以使所述输入源停止发送缓存数据,当判断结果为否时,不向所述输入源发送停止发送缓存数据的信号,以使所述输入源继续发送缓存数据。
在一种可能的实现方式中,所述缓冲存储器的缓存体是寄存器文件的结构,所述缓存单元包括寄存器。在该实现方式中,缓冲存储器没有无效端口。寄存器文件是一组存储数据的寄存器,包括静态存储单元组成的小型阵列。对比普通的SRAM(Static RandomAccess Memory,静态随机存取存储器)存储体,寄存器文件面积更小,读出延时更短,以实现高速缓冲。另外,该实现方式的缓冲存储器中一行为一个缓存单元。
在一种可能的实现方式中,该缓冲存储器还包括:状态监控单元,用于通过有效寄存器来记录每个缓存单元的状态,在当前的缓存单元能够存储接收到的缓存数据时,将当前的缓存单元标记为空闲,否则,标记为不空闲。另外,通过修改有效寄存器可以实现对缓冲存储器的复位操作。
另外,在缓冲存储器中可以设置两个不同的频率的时钟,实现异步先入先出,满足读写时钟不同步的需求。本发明实施例提供的缓冲存储器可以为多个设备共享,这些设备都可以向缓冲存储器写入数据,并从缓冲存储器中读取数据。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明实施例提供的一种数据缓存方法及一种缓冲存储器,具有如下有益效果:
1、本发明实施例提供了一种数据缓存方法及一种缓冲存储器,在存储接到的缓存数据之前,确定当前拍的缓存数据是否满足归并条件,如果满足归并条件则可以将当前拍的缓存数据与之前拍的缓存数据存储到同一个缓存单元中,不用将不同拍的数据存储在不同的缓存单元中,节省了存储空间。
2、本发明实施例提供了一种数据缓存方法及一种缓冲存储器,通过先入先出结构,能够很好的维护多端输入后数据顺序一致性,通过寄存器文件的结构能够提高传输快速度、减小面积开销,通过归并策略,能够提高传输的效率与节省存储所占用的空间,并且将多拍的数据归并到同一个缓存单元中,在读取时,数据从一个缓存单元中一起读出,从而节省了时间。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (6)
1.一种数据缓存方法,其特征在于,包括:
S1:接收输入源发来的缓存数据;
S2:根据当前缓存单元中存储的缓存数据及当前拍的缓存数据,判断当前拍的缓存数据是否满足归并条件,如果是,则执行步骤S3,否则,将下一个空闲缓存单元作为当前缓存单元,执行步骤S3;
S3:将当前拍的缓存数据存储到当前缓存单元中,返回步骤S1,在所述S1之前,还包括:预先设置写数据的缓存单元和读数据的缓存单元,其中,缓存单元包括:写数据的缓存单元、读数据的缓存单元,所述缓存数据包括:写数据、读数据;
所述S2中,所述将下一个空闲缓存单元作为当前缓存单元,包括:将下一个空闲写数据的缓存单元作为当前写数据的缓存单元,将下一个空闲读数据的缓存单元作为当前读数据的缓存单元;
所述S3,包括:将当前拍的缓存数据中的写数据存储到当前写数据的缓存单元中,将当前拍的缓存数据中的读数据存储到当前读数据的缓存单元中;
所述S2,包括:
B1:判断当前缓存单元中存储的缓存数据及当前拍的缓存数据是否都满足读数据和写数据均小于等于第一预设值,如果是,则执行步骤B2,否则,判定当前拍的缓存数据不满足归并条件;
B2:获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据的所有输入源的地址与当前缓存单元中存储的缓存数据的所有输入源的地址中,是否存在相同的地址,如果是,则判定当前拍的数据不满足归并条件,否则,判定当前拍的数据满足归并条件;
所述S2,包括:
A1:判断当前拍的缓存数据的数量与当前缓存单元中存储的缓存数据的数量之和是否小于等于第二预设值,如果是,则执行步骤A2,否则,判定当前拍的缓存数据不满足归并条件;
A2:获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据存储到当前缓存单元中是否会造成地址访问顺序错误,如果是,则判定当前拍的数据不满足归并条件,否则,判定当前拍的数据满足归并条件。
2.根据权利要求1所述的方法,其特征在于,还包括:预先设置用于指示写位置的写指针和用于指示读位置的读指针;
实时判断写指针与读指针的差值的绝对值是否小于等于第三预设值,当判断结果为是时,向所述输入源发送停止发送缓存数据的信号,以使所述输入源停止发送缓存数据,当判断结果为否时,不向所述输入源发送停止发送缓存数据的信号,以使所述输入源继续发送缓存数据;
其中,由缓存单元组成的缓存体是先入先出的结构。
3.一种缓冲存储器,其特征在于,包括:
接收单元,用于接收输入源发来的缓存数据;
第一判断单元,用于根据当前缓存单元中存储的缓存数据及当前拍的缓存数据,判断当前拍的缓存数据是否满足归并条件,当判断结果为是时,通知存储单元,当判断结果为否时,将下一个空闲缓存单元作为当前缓存单元,通知存储单元;
存储单元,用于将当前拍的缓存数据存储到当前缓存单元中,通知接收单元;
还包括:第一设置单元,用于设置写数据的缓存单元和读数据的缓存单元,其中,缓存单元包括:写数据的缓存单元、读数据的缓存单元,所述缓存数据包括:写数据、读数据;
所述第一判断单元,用于将下一个空闲写数据的缓存单元作为当前写数据的缓存单元,将下一个空闲读数据的缓存单元作为当前读数据的缓存单元;
所述存储单元,用于将当前拍的缓存数据中的写数据存储到当前写数据的缓存单元中,将当前拍的缓存数据中的读数据存储到当前读数据的缓存单元中。
4.根据权利要求3所述的缓冲存储器,其特征在于,
所述第一判断单元,包括:第一判断子单元、第二判断子单元;
第一判断子单元,用于判断当前缓存单元中存储的缓存数据及当前拍的缓存数据是否都满足读数据和写数据均小于等于第一预设值,当判断结果为是时,通知所述第二判断子单元,当判断结果为否时,判定当前拍的缓存数据不满足归并条件;
第二判断子单元,用于获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据的所有输入源的地址与当前缓存单元中存储的缓存数据的所有输入源的地址中,是否存在相同的地址,当判断结果为是时,则判定当前拍的数据不满足归并条件,当判断结果为否时,判定当前拍的数据满足归并条件。
5.根据权利要求3所述的缓冲存储器,其特征在于,所述第一判断单元,包括:第三判断子单元、第四判断子单元;
所述第三判断子单元,用于判断当前拍的缓存数据的数量与当前缓存单元中存储的缓存数据的数量之和是否小于等于第二预设值,当判断结果为是时,通知所述第四判断子单元,当判断结果为否时,判定当前拍的缓存数据不满足归并条件;
所述第四判断子单元,用于获取当前拍的缓存数据的输入源的地址和当前缓存单元中存储的缓存数据的输入源的地址,判断将当前拍的缓存数据存储到当前缓存单元中是否会造成地址访问顺序错误,当判断结果为是时,则判定当前拍的数据不满足归并条件,当判断结果为否时,判定当前拍的数据满足归并条件。
6.根据权利要求3所述的缓冲存储器,其特征在于,所述缓冲存储器包括:缓存体;所述缓存体包括:所述缓存单元;所述缓存体是先入先出的结构;
还包括:第二设置单元,用于设置用于指示写位置的写指针和用于指示读位置的读指针;
第二判断单元,用于实时判断写指针与读指针的差值的绝对值是否小于等于第三预设值,当判断结果为是时,向所述输入源发送停止发送缓存数据的信号,以使所述输入源停止发送缓存数据,当判断结果为否时,不向所述输入源发送停止发送缓存数据的信号,以使所述输入源继续发送缓存数据;
和/或,
所述缓冲存储器的缓存体是寄存器文件的结构,所述缓存单元包括寄存器;
和/或,
还包括:状态监控单元,用于通过有效寄存器来记录每个缓存单元的状态,在当前的缓存单元能够存储接收到的缓存数据时,将当前的缓存单元标记为空闲,否则,标记为不空闲。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510213718.3A CN104778131B (zh) | 2015-04-29 | 2015-04-29 | 一种数据缓存方法及一种缓冲存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510213718.3A CN104778131B (zh) | 2015-04-29 | 2015-04-29 | 一种数据缓存方法及一种缓冲存储器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104778131A CN104778131A (zh) | 2015-07-15 |
CN104778131B true CN104778131B (zh) | 2017-07-21 |
Family
ID=53619609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510213718.3A Active CN104778131B (zh) | 2015-04-29 | 2015-04-29 | 一种数据缓存方法及一种缓冲存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104778131B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110907763A (zh) * | 2019-12-12 | 2020-03-24 | 重庆邮电大学 | 一种基于时频域反射法的电力电缆故障检测方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957800A (zh) * | 2010-06-12 | 2011-01-26 | 福建星网锐捷网络有限公司 | 多通道缓存分配方法及装置 |
CN104238962A (zh) * | 2014-09-16 | 2014-12-24 | 华为技术有限公司 | 向缓存中写入数据的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070067567A1 (en) * | 2005-09-19 | 2007-03-22 | Via Technologies, Inc. | Merging entries in processor caches |
-
2015
- 2015-04-29 CN CN201510213718.3A patent/CN104778131B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957800A (zh) * | 2010-06-12 | 2011-01-26 | 福建星网锐捷网络有限公司 | 多通道缓存分配方法及装置 |
CN104238962A (zh) * | 2014-09-16 | 2014-12-24 | 华为技术有限公司 | 向缓存中写入数据的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104778131A (zh) | 2015-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101267361B (zh) | 一种基于零拷贝技术的高速网络数据包捕获方法 | |
CN101135994B (zh) | 一种划分缓存空间的方法和装置以及缓存控制器 | |
US10860326B2 (en) | Multi-threaded instruction buffer design | |
CN110226157A (zh) | 用于减少行缓冲冲突的动态存储器重新映射 | |
CN103034454B (zh) | 柔性闪存命令 | |
US20070274303A1 (en) | Buffer management method based on a bitmap table | |
CN109271335A (zh) | 一种多通道数据源ddr缓存的fpga实现方法 | |
CN103221995A (zh) | 显示管中的流翻译 | |
CN101918925B (zh) | 用于处理器的高关联性高速缓存的第二次机会取代机制 | |
CN109684231A (zh) | 用于识别固态盘中的热数据和流的***及方法 | |
US8281103B2 (en) | Method and apparatus for allocating storage addresses | |
CN107025130B (zh) | 处理节点、计算机***及事务冲突检测方法 | |
CN106951488A (zh) | 一种日志记录方法和装置 | |
CN103077147A (zh) | 一种基于链表的全功能1553b总线ip核 | |
US7454580B2 (en) | Data processing system, processor and method of data processing that reduce store queue entry utilization for synchronizing operations | |
CN110297787A (zh) | I/o设备访问内存的方法、装置及设备 | |
CN1804792B (zh) | 在长等待时间指令执行期间允许存储转发的方法和*** | |
CN103092781A (zh) | 闪存接口的有效利用 | |
WO2018148918A1 (zh) | 存储设备、芯片及存储设备的控制方法 | |
US7610458B2 (en) | Data processing system, processor and method of data processing that support memory access according to diverse memory models | |
CN104778131B (zh) | 一种数据缓存方法及一种缓冲存储器 | |
CN102331922B (zh) | 运算装置、高速缓存装置及其控制方法 | |
WO2024045817A1 (zh) | 用于调度simt架构处理器的返回数据的方法及相应处理器 | |
CN113109778A (zh) | 一种基于中断响应机制的多体制雷达预处理实现方法 | |
CN101594305A (zh) | 一种报文处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |