先入先出存储器的数据存储方法、设备及存储介质与流程

文档序号:22323422发布日期:2020-09-23 02:01阅读:241来源:国知局
先入先出存储器的数据存储方法、设备及存储介质与流程

本发明实施例涉及存储器技术领域,尤其涉及一种先入先出存储器的数据存储方法、设备及存储介质。



背景技术:

先入先出(firstinputfirstoutput,fifo)存储器是一种先进先出的数据缓存器,由于其灵活、方便、高效的特性,逐渐在高速数据采集、高速数据处理、高速数据传输以及多机处理系统中得到越来越广泛的应用。

现有的先入先出存储器内部通常设置有随机存取存储器(randomaccessmemory,ram),为了保证先入先出存储器在一个循环(cycle)内能够同时读写,随机存取存储器通常为双口ram,也即需要一个数据输入口、一个数据输出口,或者采用两个单口ram实现同时读写。

然而,先入先出存储器的随机存取存储器采用双口ram或者两个单口ram,则导致占用更大的面积,进而导致先入先出存储器体积无法减小;此外,由于随机存取存储器处理存在延迟,可能导致先入先出存储器输出数据出现延迟或间断,数据无法持续稳定的传输。



技术实现要素:

本发明实施例提供一种先入先出存储器的数据存储方法、设备及存储介质,以实现数据的持续稳定的传输。

本发明实施例的第一方面是提供一种先入先出存储器的数据存储方法,应用于先入先出存储器,所述先入先出存储器包括两两连接的拼接单元、随机存取存储单元及输出单元,所述拼接单元为用于拼接数据的先入先出存储单元,所述输出单元为用于输出数据的先入先出存储单元;所述方法包括:

在所述先入先出存储器接收到输入数据后,获取所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态;

根据所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态,确定所述输入数据的缓存路径;

根据所述缓存路径对所述输入数据进行缓存。

本发明实施例的第二方面是提供一种先入先出存储器,包括:拼接单元、随机存取存储单元、输出单元、存储器和处理器;其中,所述拼接单元、所述随机存取存储单元及所述输出单元两两连接;

所述拼接单元为用于拼接数据的先入先出存储单元,

所述输出单元为用于输出数据的先入先出存储单元;

所述存储器用于存储程序代码;

所述处理器调用所述程序代码,当程序代码被执行时,用于执行以下操作:

在所述先入先出存储器接收到输入数据后,获取所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态;

根据所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态,确定所述输入数据的缓存路径;

根据所述缓存路径对所述输入数据进行缓存。

本发明实施例的第三方面是提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如第一方面所述的方法。

本实施例提供的先入先出存储器的数据存储方法、设备及存储介质,通过对先入先出存储器配置两两连接的拼接单元、随机存取存储单元及输出单元,并在所述先入先出存储器接收到输入数据后,获取所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态;根据所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态,确定所述输入数据的缓存路径;根据所述缓存路径对所述输入数据进行缓存。本实施例对于输入数据的存储提供不同的缓存路径,输入数据存储时可以通过选择合适的缓存路径提高存储效率和读取效率,降低数据读写延迟、减少断流,保证了数据传输的稳定性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的先入先出存储器的数据存储方法的流程图;

图2为本发明实施例提供的先入先出存储器的结构示意图;

图3为本发明另一实施例提供的先入先出存储器的结构示意图;

图4为本发明另一实施例提供的先入先出存储器的数据存储方法的流程图;

图5为本发明另一实施例提供的先入先出存储器的数据存储方法的流程图;

图6为本发明实施例提供的先入先出存储器的架构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,当组件被称为“固定于”另一个组件,它可以直接在另一个组件上或者也可以存在居中的组件。当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。术语“第一”、“第二”、“第三”仅用于描述目的。

下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

本发明实施例提供一种先入先出存储器的数据存储方法。图1为本发明实施例提供的先入先出存储器的数据存储方法的流程图,所述方法应用于如图2所示的先入先出存储器,该先入先出存储器如图2所示,所述先入先出存储器包括两两连接的拼接单元11、随机存取存储单元(ram)12及输出单元13,所述拼接单元11为用于拼接数据的先入先出存储单元,所述输出单元13为用于输出数据的先入先出存储单元,也即接收到读数据指令后,将输出单元中缓存的数据依次输出。需要说明的是,拼接单元11、输出单元13可以为单独的先入先出存储器,当然也可由其他存储介质(如寄存器)和控制电路构成。

本实施例中,上述的先入先出存储器存储输入数据时可具有至少三条缓存路径,第一路径:输入数据直接缓存至输出单元13;第二路径:输入数据先缓存至拼接单元11、再由拼接单元11发送给输出单元13进行缓存;第三路径:输入数据先缓存至拼接单元11、再由拼接单元11发送给随机存取存储单元12进行缓存,再由随机存取存储单元12发送给输出单元13进行缓存。

进一步的,如图3所示,上述的先入先出存储器还包括处理器14,其中所述处理器可以为一个或者多个处理单元构成,其中处理单元可以包括但不限于仲裁器或者控制电路等。具体的,处理器14可如图3所示包括第一仲裁器141、第二仲裁器142和读写地址控制器143,其中第一仲裁器141和第二仲裁器142配合,用于获取拼接单元11、随机存取存储单元12及输出单元13的当前状态,以及根据各存储单元当前状态确定输入数据的缓存路径,而读写地址控制器143则用于管理随机存取存储单元12的读写地址。

如图1所示,基于上述的先入先出存储器,本实施例的方法执行主体为处理器,所述方法可以包括:

步骤s101、在所述先入先出存储器接收到输入数据后,获取所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态。

在本实施例中,由于先入先出存储器对于输入数据的存储需要按照顺序进行存储和输出,也即先写入的输入数据需要被先读取,因此当先入先出存储器输入端口有输入数据写入时,可首先检测各存储单元的当前状态,例如输出单元是否具有存储空间,拼接单元和随机存取存储单元是否为空,当然也可获取上述的缓存路径中是否有数据传输,以便于根据各存储单元的当前状态确定输入数据的缓存路径,从而能够实现存储的数据能够按照写入的顺序读取。

步骤s102、根据所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态,确定所述输入数据的缓存路径。

在本实施例中,由于先入先出存储器需要先写入的输入数据被先读取,因此当选择缓存路径时,若选择某一缓存路径,则此刻其他缓存路径需要没有数据传输,若其他缓存路径已经有数据传输,说明该正在传输的数据是先写入的其他输入数据,而本次要写入的数据需要在先写入的其他输入数据之后排队,否则会导致数据顺序错乱。此外,上述的三条缓存路径中,第一路径最短,第二路径次之,第三路径最长,本实施例中在确定输入数据的缓存路径时,可优先选择较短的路径,可提高存储效率和读取效率,保证数据传输的稳定性。

步骤s103、根据所述缓存路径对所述输入数据进行缓存。

在本实施例中,在确定缓存路径后,则根据缓存路径对输入数据进行缓存,例如缓存路径确定为上述的第一路径,则将输入数据直接缓存至输出单元;再如缓存路径确定为上述的第二路径,则先将输入数据缓存至拼接单元,再由拼接单元发送给输出单元进行缓存(若当前拼接单元中无数据,则由拼接单元将该输入数据直接发送给输出单元,若当前拼接单元中已缓存有数据,则由拼接单元将其缓存的数据拼接后发送给输出单元);再如缓存路径确定为上述的第三路径,则先将输入数据缓存至拼接单元,再由拼接单元发送给随机存取存储单元进行缓存(可由拼接单元将其缓存的数据拼接后发送给随机存取存储单元),再由随机存取存储单元发送给输出单元进行缓存。本实施例提供不同的缓存路径供选择,不需要所有输入数据都要经过随机存取存储单元,通过选择合适的缓存路径可保证低延迟、无断流,数据传输稳定,可应用于通信、音频、高速图像处理中。

本实施例的先入先出存储器的数据存储方法,通过对先入先出存储器配置两两连接的拼接单元、随机存取存储单元及输出单元,并在所述先入先出存储器接收到输入数据后,获取所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态;根据所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态,确定所述输入数据的缓存路径;根据所述缓存路径对所述输入数据进行缓存。本实施例对于输入数据的存储提供不同的缓存路径,输入数据存储时可以通过选择合适的缓存路径提高存储效率和读取效率,降低数据读写延迟、减少断流,保证了数据传输的稳定性。

在上述任一实施例的基础上,步骤s102所述根据所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态,确定所述输入数据的缓存路径,包括:

根据所述输出单元的当前状态判断所述输出单元是否具有存储空间;

若所述输出单元具有存储空间,且当所述拼接单元和所述随机存取存储单元为空时,则确定所述缓存路径为:将所述输入数据直接缓存至所述输出单元。

在本实施例中,在确定输入数据的缓存路径时,首先判断输出单元是否具有存储空间,若输出单元具有存储空间,则可以输出单元可以继续缓存入数据,也即输出单元可以继续接收通过各个缓存路径发送过来的数据。更具体的,当输出单元具有存储空间,且当拼接单元和随机存取存储单元为空时,也即上述的第一路径、第二路径和第三路径均没有数据传输,为了提高存储效率和读取效率,可选择最短的路径也即第一路径,将输入数据直接缓存至输出单元。当然本实施例中也可选择第二路径或第三路径。

在上述任一实施例的基础上,步骤s102所述根据所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态,确定所述输入数据的缓存路径,还可包括:

若所述输出单元具有存储空间,且当所述随机存取存储单元为空,所述拼接单元不为空时,则确定所述缓存路径为:

将所述输入数据先缓存至所述拼接单元中,再由所述拼接单元将其缓存的数据发送给所述输出单元进行缓存。

在本实施例中,当输出单元具有存储空间,且随机存取存储单元为空,拼接单元不为空时,也即拼接单元中已存在先写入的其他输入数据(也可以说第二路径或第三路径已经有数据传输),此时则可以选择第二路径或第三路径,而不能选择上述的第一路径,否则本次要写入的数据会通过第一路径直接缓存至输出单元,导致本次要写入的数据较拼接单元中已存在先写入的其他输入数据先缓存进了输出单元,导致数据顺序错乱。而为了提高存储效率和读取效率,可选择第二路径和第三路径中最短的路径,即第二路径,将输入数据先缓存至拼接单元中,再由拼接单元将其缓存的数据发送给输出单元进行缓存。

进一步的,所述由所述拼接单元将其缓存的数据发送给所述输出单元进行缓存,包括:

由所述拼接单元将其缓存的数据直接发送给所述输出单元进行缓存;或者

由所述拼接单元将其缓存的数据进行拼接后发送给所述输出单元进行缓存。

在本实施例中,输出单元的位宽可以等于输入数据的位宽或者为输入数据的位宽倍数,而当输出单元的位宽等于输入数据的位宽时,拼接单元可以不对其缓存的数据进行拼接,而仅起到缓存的作用,也即输入数据先缓存在拼接单元,若输出单元具有存储空间,且随机存取存储单元为空时,拼接单元可将其缓存的数据依次发送给输出单元;当输出单元的位宽为输入数据的位宽倍数时,例如倍数为2倍时,拼接单元可以既起到缓存的作用,又起到拼接的作用,也即输入数据先缓存在拼接单元,若输出单元具有存储空间,且随机存取存储单元为空时,此时如果拼接单元缓存有至少两个数据时,则取最先缓存的两个数据进行拼接后发送给输出单元,但此时如果拼接单元仅缓存有一个数据时,则等待新的输入数据再次缓存到拼接单元后将这两个数据进行拼接后发送给输出单元。

在上述任一实施例的基础上,步骤s102所述根据所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态,确定所述输入数据的缓存路径,还可包括:

若所述输出单元具有存储空间,且当所述随机存取存储单元不为空时,则确定所述缓存路径为:

将所述输入数据先缓存至所述拼接单元中,由所述拼接单元将其缓存的数据发送给所述随机存取存储单元进行缓存,再由所述随机存取存储单元将其缓存的数据发送给所述输出单元进行缓存。

在本实施例中,当输出单元具有存储空间,且随机存取存储单元不为空,也即随机存取存储单元中已存在先写入的其他输入数据(也可以说上述的第三路径已经有数据传输),此时则只能选择第三路径,而不能选择上述的第一路径和第二路径,否则本次要写入的数据会绕过第三路径而通过第一路径或第二路径缓存至输出单元,导致本次要写入的数据较随机存取存储单元中已存在先写入的其他输入数据先缓存进了输出单元,导致数据顺序错乱。

进一步的,随机存取存储单元的位宽也可等于输入数据的位宽或者为输入数据的位宽倍数,而当随机存取存储单元的位宽等于输入数据的位宽时,拼接单元可以不对其缓存的数据进行拼接,而仅起到缓存的作用,也即输入数据先缓存在拼接单元,若输出单元具有存储空间,且随机存取存储单元已缓存有数据时,则拼接单元可将其缓存的数据依次发送给随机存取存储单元,而随机存取存储单元也依次将其缓存的数据依次发送给输出单元;当随机存取存储单元的位宽为输入数据的位宽的预设倍数时,例如倍数为2倍时,拼接单元可以既起到缓存的作用,又起到拼接的作用,也即输入数据先缓存在拼接单元,若输出单元具有存储空间,且随机存取存储单元已缓存有数据时,此时如果拼接单元缓存有至少两个数据时,则取最先缓存的两个数据进行拼接后发送给随机存取存储单元,但此时如果拼接单元仅缓存有一个数据时,则等待新的输入数据再次缓存到拼接单元后将这两个数据进行拼接后发送给随机存取存储单元,最后再由随机存取存储单元依次将其缓存的数据依次发送给输出单元。

需要说明的是,随机存取存储单元的位宽可以等于输出单元的位宽,同样也可以为输出单元的位宽的倍数,而当随机存取存储单元的位宽可以等于输出单元的位宽时,随机存取存储单元可直接将其缓存的数据发送给输出单元,但当随机存取存储单元的位宽为输出单元的位宽的倍数时,例如倍数2倍,则需要输出单元从随机存取存储单元读两次才能从随机存取存储单元中读取一个数据。

作为上述实施例的一种可选实施例,随机存取存储单元的位宽为输入数据的位宽的预定倍数,输出单元的位宽等于输入数据的位宽,则此时对于第三路径,当先入先出存储器端口写入预定倍数个输入数据时,才由拼接单元完成一次拼接,写入随机存取存储单元一次,而当输出单元从随机存取存储单元读数据读取的次数达到预定倍数时,才从随机存取存储单元成功读取一个数据,从而可以减少随机存取存储单元写入数据和读取数据的次数,解决读写竞争的问题。

进一步的,在上述实施例的基础上,所述随机存取存储单元可以为单口随机存取存储器。本实施例中可采用一个单口随机存取存储器作为随机存取存储单元,由于单口随机存取存储器由于只有一套地址总线和数据总线,因此随机存取存储单元读写不能同时进行,但是一个单口随机存取存储器相较于双口随机存取存储器或者两个单口随机存取存储器,所占用的面积更小,可实现先入先出存储器体积的减小。而本实施例中可通过各存储单元位宽之间的关系(例如上述的随机存取存储单元的位宽为输入数据的位宽的预定倍数,输出单元的位宽等于输入数据的位宽)实现避免单口随机存取存储器读写竞争的问题。

需要说明的是,由于单口随机存取存储器通过位宽关系解决读写竞争的问题,例如上述预设倍数为2时,当先入先出存储器端口写入两个输入数据,拼接单元进行一次拼接,向随机存取存储单元写入一次,同样的,当输出单元从随机存取存储单元读数据读取两次,才从随机存取存储单元成功读取一个数据,本实施例不需要考虑输入数据个数为奇数的情况(也即输入数据个数不满足拼接所需的预定倍数),未完成拼接的输入数据仍缓存在拼接单元中,当随机存取存储单元中的数据被输出单元取空后,则可通过上述第二路径,由拼接单元直接将其缓存的未拼接的数据发送给输出单元,保证数据的持续输出,因此用户无需关注输入数据的数量。

在上述任一实施例的基础上,步骤s102所述根据所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态,确定所述输入数据的缓存路径,还可包括:

若所述输出单元不具有存储空间,则确定所述缓存路径为:

将所述输入数据先缓存至所述拼接单元,由所述拼接单元将其缓存的数据发送给所述随机存取存储单元进行缓存,当所述输出单元具有存储空间时再由所述随机存取存储单元将其缓存的数据发送给所述输出单元进行缓存。

在本实施例中,当输出单元不具有存储空间,则说明输出单元已经不可以继续接收通过各个缓存路径发送过来的数据,因此需要将输入数据先在输出单元之外的其他存储单元中进行缓存,也即此时不能选择上述的第一路径,而由于随机存取存储单元可以存储更多的数据,因此可选择第三路径,也即输入数据先缓存至拼接单元,由拼接单元将其缓存的数据发送给随机存取存储单元进行缓存(直接发送或拼接后发送),当输出单元具有存储空间时再由随机存取存储单元将其缓存的数据发送给输出单元进行缓存,若输出单元一直无存储空间,则数据一直缓存在随机存取存储单元中。本实施例中各存储单元位宽之间的关系可参见上述实施例,此处不再赘述。

在上述任一实施例的基础上,作为一种特殊情况,若所述输出单元不具有存储空间,且此时随机存取存储器为空,且拼接单元具有存储空间时,也可先将输入数据缓存在拼接单元中,若在拼接单元无存储空间之前,输出单元具有了存储空间,也可直接由拼接单元将其缓存的数据发送给输出单元(也即上述的第二路径);但若在拼接单元已无存储空间时,输出单元仍为具有存储空间,则只能由拼接单元将其缓存的数据发送给随机存取存储单元进行缓存,当输出单元具有存储空间时再由随机存取存储单元将其缓存的数据发送给输出单元进行缓存(也即上述的第三路径)。

在上述任一实施例的基础上,所述由所述拼接单元将其缓存的数据发送给所述随机存取存储单元进行缓存,包括:

s201、获取所述随机存取存储单元的存储地址;

s202、由所述拼接单元将其缓存的数据发送给所述随机存取存储单元以缓存到所述随机存取存储单元的存储地址处。

在本实施例中,由于随机存取存储单元可以在任一位置存储数据、也可读取任一位置的数据,而先入先出存储器需要先写入的输入数据被先读取,也即需要先入先出存储器中的随机存取存储单元也能够实现先写入的输入数据被先读取,因此本实施例中在拼接单元向随机存取存储单元中写入数据时,获取随机存取存储单元的存储地址,进而将由拼接单元写入的数据缓存到该存储地址处,而在读取数据时可根据存储顺序获取存储地址并从存储地址读取数据,实现随机存取存储单元数据的先入先出。本实施例可由处理器执行,此外也可单独设置读写地址控制器,或者也可将读写地址控制器视为上述处理器的一部分。

在上述任一实施例的基础上,从所述先入先出存储器读取数据时,所述方法具体可包括:

在所述先入先出存储器接收到读数据指令后,将所述输出单元中缓存的数据依次输出。

进一步的,所述读数据指令包括数据数量;

相应的,所述将所述输出单元中缓存的数据依次输出,具体可包括:

s301、获取所述先入先出存储器的存储深度信息;

在本实施例中,可实时记录先入先出存储器的存储深度信息,具体的,可通过计数器进行记录,在先入先出存储器输入端口有输入数据写入时存储深度加1,在先入先出存储器输出端口有数据被读取时存储深度减1;或者可以统计先入先出存储器内部各存储单元中的数据数量,获取存储深度信息。其中计数器功能可由上述处理器实现,当然也可单独设置计数器。

s302、根据所述所述存储深度信息以及所述数据数量,将多个数据通过所述输出单元批量输出,所述多个数据的数量满足所述数据数量。

在本实施例中,当接收到读数据指令后,可根据存储深度信息判断当前先入先出存储器中存储的数据数量是否满足读数据指令中所需要的数据数量,若满足,则可通过输出单元批量输出所需要的数据数量的数据,若不满足,则可等待先入先出存储器中存储的数据数量达到读数据指令中所需要的数据数量后再通过输出单元批量输出。

本发明实施例提供一种先入先出存储器。图6为本发明实施例提供的先入先出存储器的架构示意图,其具体结构可参见图2和图3所示。如图6所示,所述先入先出存储器50包括拼接单元51、随机存取存储单元52、输出单元53、存储器54和处理器55。其中,所述拼接单元51、所述随机存取存储单元52及所述输出单元53两两连接;

所述拼接单元51为用于拼接数据的先入先出存储单元,

所述输出单元53为用于输出数据的先入先出存储单元;

所述存储器54用于存储程序代码;

所述处理器55调用所述程序代码,当程序代码被执行时,用于执行以下操作:

在所述先入先出存储器接收到输入数据后,获取所述拼接单元51、所述随机存取存储单元52及所述输出单元53的当前状态;

根据所述拼接单元51、所述随机存取存储单元52及所述输出单元53的当前状态,确定所述输入数据的缓存路径;

根据所述缓存路径对所述输入数据进行缓存。

进一步的,先入先出存储器50还可包括通讯接口56,例如通讯接口56包括先入先出存储器的输入端口和输出端口等等。

在上述任一实施例的基础上,在所述处理器55根据所述拼接单元51、所述随机存取存储单元52及所述输出单元53的当前状态,确定所述输入数据的缓存路径时,所述处理器55被配置为:

根据所述输出单元53的当前状态判断所述输出单元53是否具有存储空间;

若所述输出单元53具有存储空间,且当所述拼接单元51和所述随机存取存储单元52为空时,则确定所述缓存路径为:将所述输入数据直接缓存至所述输出单元53。

在上述任一实施例的基础上,所述处理器55还被配置为:

若所述输出单元53具有存储空间,且当所述随机存取存储单元52为空,所述拼接单元51不为空时,则确定所述缓存路径为:

将所述输入数据先缓存至所述拼接单元51中,再由所述拼接单元51将其缓存的数据发送给所述输出单元53进行缓存。

在上述任一实施例的基础上,所述由所述拼接单元51将其缓存的数据发送给所述输出单元53进行缓存,包括:

由所述拼接单元51将其缓存的数据直接发送给所述输出单元53进行缓存;或者

由所述拼接单元51将其缓存的数据进行拼接后发送给所述输出单元53进行缓存。

在上述任一实施例的基础上,所述处理器55还被配置为:

若所述输出单元53具有存储空间,且当所述随机存取存储单元52不为空时,则确定所述缓存路径为:

将所述输入数据先缓存至所述拼接单元51中,由所述拼接单元51将其缓存的数据发送给所述随机存取存储单元52进行缓存,再由所述随机存取存储单元52将其缓存的数据发送给所述输出单元53进行缓存。

在上述任一实施例的基础上,所述处理器55还被配置为:

若所述输出单元53不具有存储空间,则确定所述缓存路径为:

将所述输入数据先缓存至所述拼接单元51,由所述拼接单元51将其缓存的数据发送给所述随机存取存储单元52进行缓存,当所述输出单元53具有存储空间时再由所述随机存取存储单元52将其缓存的数据发送给所述输出单元53进行缓存。

在上述任一实施例的基础上,所述处理器55还被配置为:

获取所述随机存取存储单元52的存储地址;

所述由所述拼接单元51将其缓存的数据发送给所述随机存取存储单元52进行缓存,包括:

由所述拼接单元51将其缓存的数据发送给所述随机存取存储单元52以缓存到所述随机存取存储单元52的存储地址处。

在上述任一实施例的基础上,所述随机存取存储单元52的位宽为输入数据的位宽的预设倍数。

在上述任一实施例的基础上,所述由所述拼接单元51将其缓存的数据发送给所述随机存取存储单元52进行缓存,包括:

由所述拼接单元51将其缓存的数据根据所述预设倍数进行拼接后发送给所述随机存取存储单元52进行缓存。

在上述任一实施例的基础上,所述处理器55还被配置为:

在所述先入先出存储器接收到读数据指令后,将所述输出单元53中缓存的数据依次输出。

在上述任一实施例的基础上,所述读数据指令包括数据数量;

在所述处理器55将所述输出单元53中缓存的数据依次输出时,所述处理器55被配置为:

获取所述先入先出存储器54的存储深度信息;

根据所述所述存储深度信息以及所述数据数量,将多个数据通过所述输出单元53批量输出,所述多个数据的数量满足所述数据数量。

在上述任一实施例的基础上,所述随机存取存储单元52为单口随机存取存储器。

本发明实施例提供的先入先出存储器50的具体原理和实现方式均与上述实施例类似,此处不再赘述。

本实施例提供的先入先出存储器,通过对先入先出存储器配置两两连接的拼接单元、随机存取存储单元及输出单元,并在所述先入先出存储器接收到输入数据后,获取所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态;根据所述拼接单元、所述随机存取存储单元及所述输出单元的当前状态,确定所述输入数据的缓存路径;根据所述缓存路径对所述输入数据进行缓存。本实施例对于输入数据的存储提供不同的缓存路径,输入数据存储时可以通过选择合适的缓存路径提高存储效率和读取效率,降低数据读写延迟、减少断流,保证了数据传输的稳定性。

另外,本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的…方法。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1