CN115527579A - Fifo存储器读写数据的方法、装置、芯片及介质 - Google Patents

Fifo存储器读写数据的方法、装置、芯片及介质 Download PDF

Info

Publication number
CN115527579A
CN115527579A CN202211129147.1A CN202211129147A CN115527579A CN 115527579 A CN115527579 A CN 115527579A CN 202211129147 A CN202211129147 A CN 202211129147A CN 115527579 A CN115527579 A CN 115527579A
Authority
CN
China
Prior art keywords
read
data
write
clock cycle
port memory
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.)
Pending
Application number
CN202211129147.1A
Other languages
English (en)
Inventor
荆晓龙
张磊
马恒
***
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202211129147.1A priority Critical patent/CN115527579A/zh
Publication of CN115527579A publication Critical patent/CN115527579A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Static Random-Access Memory (AREA)

Abstract

本申请公开了一种FIFO存储器读写数据的方法、装置、芯片及介质,涉及存储***领域。包括在不存在读写冲突的情况下,从两个单端口存储器中交织读写数据;在存在读写冲突的情况下,采用读优先的方式,然后在当前时钟周期的下一个时钟周期再从两个单端口存储器中交织读写数据,只不过写入的数据是延迟一个时钟周期的数据。由此可见,该方法解决了读写冲突的问题,实现了FIFO读写数据的功能;采用两个单端口存储器能够实现同时读写数据,即实现了双端口存储器同时读写数据的功能;并且由于单端口存储器的面积较小,能够实现对芯片面积的优化;此外,不需要对时钟进行倍频,因此本申请的FIFO存储器能够在更高的频率下工作。

Description

FIFO存储器读写数据的方法、装置、芯片及介质
技术领域
本申请涉及存储***领域,特别是涉及一种FIFO存储器读写数据的方法、装置、芯片及介质。
背景技术
随着现代芯片技术的发展,芯片集成度呈指数级别增长。对于芯片开发而言,优化性能(Performance)、功耗(Power)、面积(Area),简称PPA,最好的方法就是对芯片开发中使用的各种基础单元库进行精心设计。先入先出(First In First Out,FIFO)存储器作为芯片设计的基础单元,需要大量使用。因此,对FIFO进行优化,对于改善芯片的PPA有很大意义。FIFO是一种***缓存。最先存入FIFO中的数据,会被最先读出。
在以往的技术方案中,FIFO是以双端口存储器(Two-Port RAM,TPRAM)为基础进行设计的。但是TPRAM在芯片上占的面积比较大,导致芯片的成本、工艺等都有增加。由于单端口存储器(Single-Port RAM,SPRAM)的面积比TPRAM的面积小,因此,在具体工程实践中,也会使用SPRAM实现FIFO功能。但是目前在使用SPRAM实现FIFO功能时,在SPRAM前后各添加了一个小的缓存FIFO,利用FIFO读使能/写使能信号的间隙,提前将需要的数据写入或者读出,从而避免了读写冲突。但是如果读写使能信号一直保持连续,则避免不了读写冲突,不能实现FIFO读写数据的功能。
由此可见,在基于SPRAM的情况下,如何实现FIFO读写数据的功能是本领域人员亟需解决的技术问题。
发明内容
本申请的目的是提供一种FIFO存储器读写数据的方法、装置、芯片及介质,用于在基于SPRAM的情况下,实现FIFO读写数据的功能。
为解决上述技术问题,本申请提供一种FIFO存储器读写数据的方法,应用于包含两个单端口存储器的芯片,两个所述单端口存储器是由一个双端口存储器拆分得到;所述方法包括:
在执行读写操作的情况下,判断同一个时钟周期内是否从同一个所述单端口存储器中待读写数据;
若否,则从两个所述单端口存储器中交织读写数据;
若是,则从两个所述单端口存储器中获取第一目标单端口存储器,其中,所述第一目标单端口存储器为同一个所述时钟周期待读写数据的所述单端口存储器;控制所述第一目标单端口存储器在当前时钟周期读取数据;在所述当前时钟周期的下一个时钟周期从两个所述单端口存储器中交织读写数据,其中,所述写入数据为所述当前时钟周期待写入的数据。
优选地,在所述当前时钟周期的下一个时钟周期从两个所述单端口存储器中交织读写数据之后,所述方法还包括:
获取读使能信号的状态以及写使能信号的状态;
判断所述读使能信号以及所述写使能信号是否连续有效;
若否,则停止从两个所述单端口存储器中交织读数据和写入延迟的数据;
自停止从两个所述单端口存储器中交织读数据和写入延迟的数据开始,根据所述读使能信号的状态以及所述写使能信号的状态从两个所述单端口存储器中获取第二目标单端口存储器,并将未写入的数据写入至所述第二目标单端口存储器。
优选地,所述第二目标单端口存储器根据所述未写入的数据的个数以及所述当前时钟周期的上一个时钟周期各所述单端口存储器的读写操作状况进行确定。
优选地,两个所述单端口存储器为单端口存储器A和单端口存储器B,所述根据所述读使能信号的状态以及所述写使能信号的状态从两个所述单端口存储器中获取第二目标单端口存储器,并将未写入的数据写入至所述第二目标单端口存储器包括:
在所述写使能信号为0且所述读使能信号为1的情况下,或所述写使能信号、所述读使能信号同时为0的情况下,确定所述未写入数据为所述当前时钟周期的上一个时钟周期待写入的数据;
在所述当前时钟周期的上一个时钟周期所述单端口存储器A为读操作的情况下,则确定所述第二目标单端口存储器为所述单端口存储器A;将所述当前时钟周期的上一个时钟周期待写入的数据写入至所述单端口存储器A;
在所述当前时钟周期的上一个时钟周期所述单端口存储器B为读操作的情况下,则确定所述第二目标单端口存储器为所述单端口存储器B;将所述当前时钟周期的上一个时钟周期待写入的数据写入至所述单端口存储器B。
优选地,两个所述单端口存储器为单端口存储器A和单端口存储器B,所述根据所述读使能信号的状态以及所述写使能信号的状态从两个所述单端口存储器中获取第二目标单端口存储器,并将未写入的数据写入至所述第二目标单端口存储器包括:
在所述写使能信号为1且所述读使能信号为0的情况下,确定所述未写入的数据为所述当前时钟周期待写入的数据以及所述当前时钟周期的上一个时钟周期待写入的数据;
确定所述第二目标单端口存储器为所述单端口存储器A以及所述单端口存储器B;
在所述当前时钟周期的上一个时钟周期所述单端口存储器A为读操作的情况下,同时将所述当前时钟周期待写入的数据写入至所述单端口存储器A以及将所述当前时钟周期的上一个时钟周期待写入的数据写入至所述单端口存储器B。
优选地,所述判断同一个时钟周期内是否从同一个所述单端口存储器中待读写数据包括:
在同一个所述时钟周期内获取读指针的最低有效位的数值以及写指针的最低有效位的数值;
在所述读指针的最低有效位的数值与所述写指针的最低有效位的数值相等且所述读使能信号和所述写使能信号同时有效的情况下,确定同一个所述时钟周期内从同一个所述单端口存储器中待读写数据;
反之,则确定同一个所述时钟周期内不是从同一个所述单端口存储器中待读写数据。
优选地,所述方法还包括:
在判断出同一个所述时钟周期内从同一个所述单端口存储器中待读写数据之后,添加读写冲突标志;
在所述根据所述读使能信号的状态以及所述写使能信号的状态从两个所述单端口存储器中获取第二目标单端口存储器,并将未写入的数据写入至所述第二目标单端口存储器的步骤之后,去除所述读写冲突标志。
为了解决上述技术问题,本申请还提供一种FIFO存储器读写数据的装置,应用于包含两个单端口存储器的芯片,两个所述单端口存储器是由一个双端口存储器拆分得到;所述装置包括:
判断模块,用于在执行读写操作的情况下,判断同一个时钟周期内是否从同一个所述单端口存储器中待读写数据;若否,则触发第一读写模块,若是,则触发获取模块、控制模块、第二读写模块;
所述第一读写模块,用于从两个所述单端口存储器中交织读写数据;
所述获取模块,用于从两个所述单端口存储器中获取第一目标单端口存储器,其中,所述第一目标单端口存储器为同一个所述时钟周期待读写数据的所述单端口存储器;
所述控制模块,用于控制所述第一目标单端口存储器在当前时钟周期读取数据;
所述第二读写模块,用于在所述当前时钟周期的下一个时钟周期从两个所述单端口存储器中交织读写数据,其中,所述写入数据为所述当前时钟周期待写入的数据。
为了解决上述技术问题,本申请还提供一种芯片,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述的FIFO存储器读写数据的方法的步骤。
为了解决上述技术问题,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的FIFO存储器读写数据的方法的步骤。
本申请所提供的一种FIFO存储器读写数据的方法,应用于包含两个单端口存储器的芯片,两个单端口存储器是由一个双端口存储器拆分得到;该方法包括:在执行读写操作的情况下,判断同一个时钟周期内是否从同一个单端口存储器中待读写数据;若否,则从两个单端口存储器中交织读写数据;若是,则从两个单端口存储器中获取第一目标单端口存储器,其中,第一目标单端口存储器为同一个时钟周期待读写数据的单端口存储器;控制第一目标单端口存储器在当前时钟周期读取数据;在当前时钟周期的下一个时钟周期从两个单端口存储器中交织读写数据,其中,写入数据为当前时钟周期待写入的数据。由此可见,该方法中采用两个单端口存储器能够实现同时读写数据,即实现了双端口存储器同时读写数据的功能;并且由于单端口存储器的面积比双端口存储器的面积小很多,即使对一个双端口存储器拆分成两个单端口存储器,最终采用两个单端口存储器设计的FIFO存储器也比采用双端口存储器设计的FIFO存储器的面积小,故而,本申请的FIFO存储器能够实现对芯片面积的优化;其次,正常情况下同一个时钟周期内单端口存储器只能进行写数据或者写数据,若单端口存储器在同一个时钟周期待读写数据,则会发生读写冲突,因此,本申请中在获取到发生读写冲突的单端口存储器后,采用读优先的方式,然后在当前时钟周期的下一个时钟周期再从两个单端口存储器中交织读写数据,只不过写入的数据是延迟一个时钟周期的数据,由此可见,解决了读写冲突的问题,实现了FIFO读写数据的功能;最后,本申请的方法中不需要对时钟进行倍频,因此有利于时序收敛以及后端实现,使得FIFO存储器能够在更高的频率下工作。
此外,本申请还提供一种FIFO存储器读写数据的装置、芯片以及计算机可读存储介质,与上述提到的FIFO存储器读写数据的方法具有相同或相对应的技术特征,效果同上。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种基于SPRAM设计的FIFO实现方案的示意图;
图2为本申请实施例提供的一种FIFO存储器读写数据的方法的流程图;
图3为本申请实施例提供的一种不发生读写冲突时,基于SPRAM的FIFO的读写时序图;
图4为本申请的一实施例提供的FIFO存储器读写数据的装置的结构图;
图5为本申请另一实施例提供的芯片的结构图;
图6为本申请实施例提供的一种基于SPRAM实现FIFO功能方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种FIFO存储器读写数据的方法、装置、芯片及介质,用于在基于SPRAM的情况下,实现FIFO读写数据的功能。
FIFO存储器是一种***缓存,最先存入FIFO中的数据,会被最先读出。TPRAM的读、写端口相互独立,而SPRAM只有一套控制端口,无法做到同时读写。因此,本申请实施例中将TPRAM拆分为两个较小的SPRAM,每个SPRAM的端口进行时分复用,两个SPRAM通过乒乓或者数据交织等方式,实现对TPRAM的连续读写,从而实现FIFO功能。需要说明的是,交织其实是通信***中进行数据处理而采用的一种技术,交织器从其本质上来说就是一种实现最大限度的改变信息结构而不改变信息内容的器件,信息按照一定规律,分散的分布在各个通道中,进行读写操作。图1为本申请实施例提供的一种基于SPRAM设计的FIFO实现方案的示意图。如图1所示,主要由四部分构成:写缓存模块1、读写控制模块2、有效读数据判断模块3和两片SPRAM。
(1)写缓存模块将写使能和写数据延迟1拍(即延迟1个时钟周期),发送给读写控制模块,由读写控制模块决定是否使用延迟1拍的数据;
(2)读写控制模块为本设计的核心,将写使能、读使能映射wr_ptr、rd_ptr,再通过当前读写状态转换为两片SPRAM的读写控制信号;根据当前的写使能、读使能、wr_ptr、rd_ptr决定写入原始写数据还是延迟1拍的写数据;
(3)有效读数据判断模块,根据当前的两片SPRAM的片选信号和写使能信号,判断目前哪一个SPRAM的读数据是有效输出;
(4)两片SPRAM,用于交织进行读写。
本申请的方案可行的关键在于,通过对两片SPRAM进行交织读写,来替代TPRAM的功能。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。本申请实施例中提供一种FIFO存储器读写数据的方法,应用于包含两个单端口存储器的芯片,两个所述单端口存储器是由一个双端口存储器拆分得到。图2为本申请实施例提供的一种FIFO存储器读写数据的方法的流程图,如图2所示,该方法包括:
S10:在执行读写操作的情况下,判断同一个时钟周期内是否从同一个单端口存储器中待读写数据;若否,则进入步骤S11;若是,则进入步骤S12至步骤S14;
S11:从两个单端口存储器中交织读写数据;
S12:从两个单端口存储器中获取第一目标单端口存储器;
其中,第一目标单端口存储器为同一个时钟周期待读写数据的单端口存储器;
S13:控制第一目标单端口存储器在当前时钟周期读取数据;
S14:在当前时钟周期的下一个时钟周期从两个单端口存储器中交织读写数据;
其中,写入数据为当前时钟周期待写入的数据。
本申请实施例中采用的是两片SPRAM来代替TPRAM。由于SPRAM只有一套控制端口,无法做到同时读写。因此,在执行读写操作的情况下,如果同一个时钟周期内不是从同一个单端口存储器中待读写数据(此处的待读写指的是待读数据以及待写数据),则不会发生读写冲突;否则,认为发生读写冲突。假设两个SPRAM分别为SPRAM_A以及SPRAM_B,FIFO深度为8,写指针wr_ptr和读指针rd_ptr地址范围是[0,7]。FIFO深度为8,故SPRAM_A和SPRAM_B的深度均为4。图3为本申请实施例提供的一种不发生读写冲突时,基于SPRAM的FIFO的读写时序图,图3中,FIFO读使能-rden,FIFO写使能-wren,FIFO写数据-wrdata,写指针-wr_ptr,读指针-rd_ptr,SPRAM片选信号-csb,SPRAM写使能信号-wen,SPRAM写地址-addr,SPRAM写数据-data,SPRAM读数据-q。如图3所示,从T2时刻开始,向FIFO中连续写8个数据;从T3时刻开始,连续从FIFO中读取8个数据。当写使能拉高时,wr_ptr随之递增,当读使能拉高时,rd_ptr随之递增;使用wr_ptr[0]来决定写入哪个SPRAM,使用wr_ptr[N-1:1]来决定写入SPRAM的哪个地址,读取同理。这样,写入数据其实是在依次存入SPRAM_A/SPRAM_B/SPRAM_A/SPRAM_B,读取是依次读SPRAM_B/SPRAM_A/SPRAM_B/SPRAM_A,也就是读写交替在两个SPRAM进行,将这种情况称为“读写交织”,通过这种方式,使得使用SPRAM替代TPRAM实现FIFO功能。
除了读写交织,当FIFO读、写使能均有效,且wr_ptr[0]=rd_ptr[0]时,此时读、写均指向同一片SPRAM,读写交织无法继续进行,将这种情况称为“读写冲突”,此时采取读优先的策略,rd_ptr正常递增,冲突的那片SPRAM即第一目标SPRAM只响应读操作。写数据采用延迟1拍后的数据,在下1拍再执行写入,递增wr_ptr。由于在冲突下一拍时,wr_ptr[0]和rd_ptr[0]不相等,此时又相当于回到了“读写交织”的状态。唯一的区别就在于此时写数据使用的是延迟1拍后的数据,可以将这种状态称为“读写交织-冲突”(CLASH_RW)。
本实施例所提供的一种FIFO存储器读写数据的方法,应用于包含两个单端口存储器的芯片,两个单端口存储器是由一个双端口存储器拆分得到;该方法包括:在执行读写操作的情况下,判断同一个时钟周期内是否从同一个单端口存储器中待读写数据;若否,则从两个单端口存储器中交织读写数据;若是,则从两个单端口存储器中获取第一目标单端口存储器,其中,第一目标单端口存储器为同一个时钟周期待读写数据的单端口存储器;控制第一目标单端口存储器在当前时钟周期读取数据;在当前时钟周期的下一个时钟周期从两个单端口存储器中交织读写数据,其中,写入数据为当前时钟周期待写入的数据。由此可见,该方法中采用两个单端口存储器能够实现同时读写数据,即实现了双端口存储器同时读写数据的功能;并且由于单端口存储器的面积比双端口存储器的面积小很多,即使对一个双端口存储器拆分成两个单端口存储器,最终采用两个单端口存储器设计的FIFO存储器也比采用双端口存储器设计的FIFO存储器的面积小,故而,本实施例的FIFO存储器能够实现对芯片面积的优化;其次,正常情况下同一个时钟周期内单端口存储器只能进行写数据或者写数据,若单端口存储器在同一个时钟周期待读写数据,则会发生读写冲突,因此,本实施例中在获取到发生读写冲突的单端口存储器后,采用读优先的方式,然后在当前时钟周期的下一个时钟周期再从两个单端口存储器中交织读写数据,只不过写入的数据是延迟一个时钟周期的数据,由此可见,解决了读写冲突的问题,实现了FIFO读写数据的功能;最后,本实施例的方法中不需要对时钟进行倍频,因此有利于时序收敛以及后端实现,使得FIFO存储器能够在更高的频率下工作。
上述实施例的基础上,当进入“读写交织-冲突”状态后,读写依然可以正常进行,但是写数据延迟了1拍。为了消除延迟写入的1拍,恢复到正常的交织读写状态,优选的实施方式是,在当前时钟周期的下一个时钟周期从两个单端口存储器中交织读写数据之后,FIFO存储器读写数据的方法还包括:
获取读使能信号的状态以及写使能信号的状态;
判断读使能信号以及写使能信号是否连续有效;
若否,则停止从两个单端口存储器中交织读数据和写入延迟的数据;
自停止从两个单端口存储器中交织读数据和写入延迟的数据开始,根据读使能信号的状态以及写使能信号的状态从两个单端口存储器中获取第二目标单端口存储器,并将未写入的数据写入至第二目标单端口存储器;其中,第二目标单端口存储器根据未写入的数据的个数以及当前时钟周期的上一个时钟周期各单端口存储器的读写操作状况进行确定。
读使能信号的状态、写使能信号的状态为0或1。以两个单端口存储器为SPRAM_A和SPRAM_B进行说明。表1至表4为读使能信号、写使能信号处于不同的状态时对应的SPRAM状态。具体地,表1为进入“读写交织-冲突”状态后,写使能=1,读使能=1时的SPRAM状态;表2为进入“读写交织-冲突”状态后,写使能=0,读使能=1时的SPRAM状态;表3为进入“读写交织-冲突”状态后,写使能=0,读使能=0时的SPRAM状态;表4为进入“读写交织-冲突”状态后,写使能=1,读使能=0时的SPRAM状态。
表1进入“读写交织-冲突”状态后,写使能=1,读使能=1时的SPRAM状态
Figure BDA0003850205010000091
Figure BDA0003850205010000101
表2进入“读写交织-冲突”状态后,写使能=0,读使能=1时的SPRAM状态
Figure BDA0003850205010000102
表3进入“读写交织-冲突”状态后,写使能=0,读使能=0时的SPRAM状态
Figure BDA0003850205010000103
表4进入“读写交织-冲突”状态后,写使能=1,读使能=0时的SPRAM状态
Figure BDA0003850205010000104
Figure BDA0003850205010000111
本申请实施例中读使能信号的状态、写使能信号的状态为1或者0。如表1中,冲突状态1:在T4时钟周期,写使能=1,读使能=1,则依然保持在“读写交织-冲突”(CLASH_RW)状态,此时能进行交织读写,但写入的数据会延迟1拍。读使能信号以及写使能信号不连续有效指的是读使能信号、写使能信号不全为1的情况,在表2至表4中,读使能信号与写使能信号不全为1,即读使能信号、写使能信号不连续,则不能如表1中进行交织读写数据,但是,此时可以作为将延迟写入的数据消除的时机,恢复到正常的交织读写状态。
为了消除延迟的数据,根据读使能信号的状态以及写使能信号的状态可以将未写入的数据写入至SPRAM。需要说明的是,此处的未写入的数据包含延迟写入的数据或者延迟写入的数据以及当前时钟周期待写入的数据,具体根据读使能信号以及写使能信号的状态进行确定。对于将未写入的数据写入的SPRAM_A或SPRAM_B,是根据当前时钟周期的上一个时钟周期SPRAM_A和SPRAM_B的读写操作状态进行确定。如表2中,T4时刻认为是当前时钟周期,在T4的前一个时钟周期即T3时刻,SPRAM_A执行写操作,SPRAM_B执行读操作,则在T4这个时钟周期SPRAM_A执行读操作,SPRAM_B执行写操作,实现读写交织。
本实施例所提供的将延迟的数据进行消除,使得能够恢复到正常的交织读写状态。
在实施中,为了能够恢复到正常的读写交织状态,优选的实施方式是,根据读使能信号的状态以及写使能信号的状态从两个单端口存储器中获取第二目标单端口存储器,并将未写入的数据写入至第二目标单端口存储器包括:
在写使能信号为0且读使能信号为1的情况下,或写使能信号和读使能信号同时为0的情况下,确定未写入数据为当前时钟周期的上一个时钟周期待写入的数据;
在当前时钟周期的上一个时钟周期单端口存储器A为读操作的情况下,则确定第二目标单端口存储器为单端口存储器A;将当前时钟周期的上一个时钟周期待写入的数据写入至单端口存储器A;
在当前时钟周期的上一个时钟周期单端口存储器B为读操作的情况下,则确定第二目标单端口存储器为单端口存储器B;将当前时钟周期的上一个时钟周期待写入的数据写入至单端口存储器B。
写使能信号、读使能信号为0,代表信号不拉高;写使能信号、读使能信号为1,代表信号拉高。本实施例描述的情况可以结合上述的表2和表3进行说明。如表2和表3所示,冲突状态2:在T4时钟周期,如果写使能=0,读使能=1或者写使能=0,读使能=0,此时按理来说写使能=0,不应该写入数据,但是由于之前一直使用延迟的数据,因此在此时,依然会有1拍数据待写入。把这个动作称为“延迟写入”(WR_DLY)。且此时写使能=0,代表此时FIFO端口上没有新的待写入数据。这样一来,FIFO中的所有待写入数据均已写入SPRAM,从而退出了“读写交织-冲突”状态,恢复到正常读写状态。
上述实施例列出了一种恢复到正常读写交织状态的方式,本实施例还提供另一种恢复到正常读写交织状态的方式,具体如下:根据读使能信号的状态以及写使能信号的状态从两个单端口存储器中获取第二目标单端口存储器,并将未写入的数据写入至第二目标单端口存储器包括:
在写使能信号为1且读使能信号为0的情况下,确定未写入的数据为当前时钟周期待写入的数据以及当前时钟周期的上一个时钟周期待写入的数据;
确定第二目标单端口存储器为单端口存储器A以及单端口存储器B;
在当前时钟周期的上一个时钟周期单端口存储器A为读操作的情况下,同时将当前时钟周期待写入的数据写入至单端口存储器A以及将当前时钟周期的上一个时钟周期待写入的数据写入至单端口存储器B。
冲突状态3:如表4所示,在T4时钟周期,写使能=1,读使能=0,此时只有写动作,无读动作,因此按理来说只有1片SPRAM受到控制。但是,此时FIFO中其实存在两个待写入数据:第一个是上一拍写数据延迟得到到WDATA_1DLY,第二个是当前端口上的待写入数据WDATA。利用此时只有1片SPRAM受控制的机会,将延迟后的数据WDATA_1DLY写入当前wr_ptr对应的地址,将未延迟的数据WDATA写入wr_ptr+1的地址,将该动作称为“全部写入”(JUMP)。这样,利用这个间隙退出了“读写交织-冲突”状态,恢复到正常读写状态。
在实施中,为了能够提高读写数据的效率,优选的实施方式是,在读写数据之前,提前判断是否从同一片SPRAM上读写数据。在进行判断时,优选的实施方式是,判断同一个时钟周期内是否从同一个单端口存储器中待读写数据包括:
在同一个时钟周期内获取读指针的最低有效位的数值以及写指针的最低有效位的数值;
在读指针的最低有效位的数值与写指针的最低有效位的数值相等且读使能信号和写使能信号同时有效的情况下,确定同一个时钟周期内从同一个单端口存储器中待读写数据;
反之,则确定同一个时钟周期内不是从同一个单端口存储器中待读写数据。
本实施例所提供的根据读指针、写指针的最低有效位,能够确定出同一时钟周期是否存在从同一个单端口存储器中待读写数据的情况,即确定出是否会发生读写冲突。
在实施中,为了方便用户了解到是否存在读写冲突,优选的实施方式是,FIFO存储器读写数据的方法还包括:
在判断出同一个时钟周期内从同一个单端口存储器中待读写数据之后,添加读写冲突标志;
在根据读使能信号的状态以及写使能信号的状态从两个单端口存储器中获取第二目标单端口存储器,并将未写入的数据写入至第二目标单端口存储器之后,去除读写冲突标志。
对于读写冲突标志不作限定,如上述表1至表4中,在发生读写冲突后,标记为1代表存在读写冲突。需要说明的是,在表1至表4中T2时钟周期为存在读写冲突的时钟周期,但是,由于T3时钟周期、T4时钟周期,由于写入的数据是延迟的数据,可以将此状态看作是异常的读写数据,因此,在表1至表4中,在T3和T4的读写冲突标志也还是记为1。在消除延迟数据之后,便可以去除读写冲突标志。此处的去除并不是完全的取消读写冲突标志,只是代表的含义是不存在读写冲突。如在消除数据之后,可以将之前的读写冲突标志1改为0,以此来代表不存在读写冲突。
本实施例所提供的通过读写冲突标志位,使得用户能够直观了解到是否存在读写冲突。
在上述实施例中,对于FIFO存储器读写数据的方法进行了详细描述,本申请还提供FIFO存储器读写数据的装置、芯片对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
图4为本申请的一实施例提供的FIFO存储器读写数据的装置的结构图。本实施例基于功能模块的角度,包括:
判断模块10,用于在执行读写操作的情况下,判断同一个时钟周期内是否从同一个单端口存储器中待读写数据;若否,则触发第一读写模块11,若是,则触发获取模块12、控制模块13、第二读写模块14;
第一读写模块11,用于从两个单端口存储器中交织读写数据;
获取模块12,用于从两个单端口存储器中获取第一目标单端口存储器,其中,第一目标单端口存储器为同一个时钟周期待读写数据的单端口存储器;
控制模块13,用于控制第一目标单端口存储器在当前时钟周期读取数据;
第二读写模块14,用于在当前时钟周期的下一个时钟周期从两个单端口存储器中交织读写数据,其中,写入数据为当前时钟周期待写入的数据。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本实施例所提供的FIFO存储器读写数据的装置,与上文中描述的FIFO存储器读写数据的方法具有相对应的技术特征,上文中已对FIFO存储器读写数据的方法进行了详细描述,此处对于FIFO存储器读写数据的装置的实施例不再赘述,效果同上。
图5为本申请另一实施例提供的芯片的结构图。本实施例基于硬件角度,如图5所示,芯片包括:
存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例中所提到的FIFO存储器读写数据的方法的步骤。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有图形处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的FIFO存储器读写数据的方法的相关步骤。另外,存储器20所存储的资源还可以包括操作***202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作***202可以包括Windows、Unix、Linux等。数据203可以包括但不限于上述所提到的FIFO存储器读写数据的方法所涉及到的数据等。
在一些实施例中,芯片还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图5中示出的结构并不构成对芯片的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的芯片,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:FIFO存储器读写数据的方法,效果同上。
最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请提供的计算机可读存储介质包括上述提到的FIFO存储器读写数据的方法,效果同上。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图6和具体实施方式对本申请作进一步的详细说明。图6为本申请实施例提供的一种基于SPRAM实现FIFO功能方法的流程图。如图6所示,该方法包括:
S15:判断FIFO是否发生读写冲突;若否,则进入步骤S16;若是,则进入步骤S17;
S16:对两片SPRAM交织读写数据;
S17:向SPRAM中写数据的使能延迟1拍,使用延迟1拍后的写数据;
S18:判断是否读写使能出现不连续;若否,则返回步骤S17;若是,则进入步骤S19;
S19:判断此时是否写使能高,读使能低;若否,则进入步骤S20;若是,则进入步骤S21;
S20:写入延迟1拍后的数据,并返回步骤S15;
S21:同时向两个SPRAM分别写入延迟1拍后的数据和当拍数据,并返回步骤S15。
本实施例中将TPRAM替换为两个一半容量的SPRAM,使用读写交织的方法,交替对两个SPRAM进行读写操作,在遇到读写冲突时,先使用延迟1拍数据继续交织读写,而后再寻机退出冲突状态。相比起传统的基于TPRAM的FIFO,本实施例的基于SPRAM的FIFO,能有效替代传统的基于TPRAM的FIFO的功能,时序、性能与传统的基于TPRAM的FIFO基本一致,用户可无感切换。由于SPRAM比TPRAM面积小很多,即使将1个TPRAM拆分为2个SPRAM,最终也是SPRAM方案的面积更小,因此本方案在面积上也具备优势。本实施例的方案能支持读写使能连续、背靠背读写,吞吐率接近传统FIFO100%的效率,性能更高;无需对时钟进行倍频,有利于时序收敛和后端实现,因此能更高的频率下工作。
综上,本申请实施例提出的基于SPRAM的FIFO,不仅能有效代替传统的基于TPRAM的FIFO功能,而且面积更小,性能和工作频率更高,具有更强的通用性。此外,需要说明的是,本申请实现的FIFO为非预取型FIFO,即在读使能拉高后的第2拍,才能收到有效数据。如果工程实践中需要实现预取型FIFO,可以考虑给出口处添加一个预取缓存,在预取缓存非空时,就开始向预取FIFO中搬移数据。
以上对本申请所提供的FIFO存储器读写数据的方法、装置、芯片及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (10)

1.一种FIFO存储器读写数据的方法,其特征在于,应用于包含两个单端口存储器的芯片,两个所述单端口存储器是由一个双端口存储器拆分得到;所述方法包括:
在执行读写操作的情况下,判断同一个时钟周期内是否从同一个所述单端口存储器中待读写数据;
若否,则从两个所述单端口存储器中交织读写数据;
若是,则从两个所述单端口存储器中获取第一目标单端口存储器,其中,所述第一目标单端口存储器为同一个所述时钟周期待读写数据的所述单端口存储器;控制所述第一目标单端口存储器在当前时钟周期读取数据;在所述当前时钟周期的下一个时钟周期从两个所述单端口存储器中交织读写数据,其中,所述写入数据为所述当前时钟周期待写入的数据。
2.根据权利要求1所述的FIFO存储器读写数据的方法,其特征在于,在所述当前时钟周期的下一个时钟周期从两个所述单端口存储器中交织读写数据之后,所述方法还包括:
获取读使能信号的状态以及写使能信号的状态;
判断所述读使能信号以及所述写使能信号是否连续有效;
若否,则停止从两个所述单端口存储器中交织读数据和写入延迟的数据;
自停止从两个所述单端口存储器中交织读数据和写入延迟的数据开始,根据所述读使能信号的状态以及所述写使能信号的状态从两个所述单端口存储器中获取第二目标单端口存储器,并将未写入的数据写入至所述第二目标单端口存储器。
3.根据权利要求2所述的FIFO存储器读写数据的方法,其特征在于,所述第二目标单端口存储器根据所述未写入的数据的个数以及所述当前时钟周期的上一个时钟周期各所述单端口存储器的读写操作状况进行确定。
4.根据权利要求3所述的FIFO存储器读写数据的方法,其特征在于,两个所述单端口存储器为单端口存储器A和单端口存储器B,所述根据所述读使能信号的状态以及所述写使能信号的状态从两个所述单端口存储器中获取第二目标单端口存储器,并将未写入的数据写入至所述第二目标单端口存储器包括:
在所述写使能信号为0且所述读使能信号为1的情况下,或所述写使能信号、所述读使能信号同时为0的情况下,确定所述未写入数据为所述当前时钟周期的上一个时钟周期待写入的数据;
在所述当前时钟周期的上一个时钟周期所述单端口存储器A为读操作的情况下,则确定所述第二目标单端口存储器为所述单端口存储器A;将所述当前时钟周期的上一个时钟周期待写入的数据写入至所述单端口存储器A;
在所述当前时钟周期的上一个时钟周期所述单端口存储器B为读操作的情况下,则确定所述第二目标单端口存储器为所述单端口存储器B;将所述当前时钟周期的上一个时钟周期待写入的数据写入至所述单端口存储器B。
5.根据权利要求3所述的FIFO存储器读写数据的方法,其特征在于,两个所述单端口存储器为单端口存储器A和单端口存储器B,所述根据所述读使能信号的状态以及所述写使能信号的状态从两个所述单端口存储器中获取第二目标单端口存储器,并将未写入的数据写入至所述第二目标单端口存储器包括:
在所述写使能信号为1且所述读使能信号为0的情况下,确定所述未写入的数据为所述当前时钟周期待写入的数据以及所述当前时钟周期的上一个时钟周期待写入的数据;
确定所述第二目标单端口存储器为所述单端口存储器A以及所述单端口存储器B;
在所述当前时钟周期的上一个时钟周期所述单端口存储器A为读操作的情况下,同时将所述当前时钟周期待写入的数据写入至所述单端口存储器A以及将所述当前时钟周期的上一个时钟周期待写入的数据写入至所述单端口存储器B。
6.根据权利要求1所述的FIFO存储器读写数据的方法,其特征在于,所述判断同一个时钟周期内是否从同一个所述单端口存储器中待读写数据包括:
在同一个所述时钟周期内获取读指针的最低有效位的数值以及写指针的最低有效位的数值;
在所述读指针的最低有效位的数值与所述写指针的最低有效位的数值相等且所述读使能信号和所述写使能信号同时有效的情况下,确定同一个所述时钟周期内从同一个所述单端口存储器中待读写数据;
反之,则确定同一个所述时钟周期内不是从同一个所述单端口存储器中待读写数据。
7.根据权利要求2至6任意一项所述的FIFO存储器读写数据的方法,其特征在于,所述方法还包括:
在判断出同一个所述时钟周期内从同一个所述单端口存储器中待读写数据之后,添加读写冲突标志;
在所述根据所述读使能信号的状态以及所述写使能信号的状态从两个所述单端口存储器中获取第二目标单端口存储器,并将未写入的数据写入至所述第二目标单端口存储器的步骤之后,去除所述读写冲突标志。
8.一种FIFO存储器读写数据的装置,其特征在于,应用于包含两个单端口存储器的芯片,两个所述单端口存储器是由一个双端口存储器拆分得到;所述装置包括:
判断模块,用于在执行读写操作的情况下,判断同一个时钟周期内是否从同一个所述单端口存储器中待读写数据;若否,则触发第一读写模块,若是,则触发获取模块、控制模块、第二读写模块;
所述第一读写模块,用于从两个所述单端口存储器中交织读写数据;
所述获取模块,用于从两个所述单端口存储器中获取第一目标单端口存储器,其中,所述第一目标单端口存储器为同一个所述时钟周期待读写数据的所述单端口存储器;
所述控制模块,用于控制所述第一目标单端口存储器在当前时钟周期读取数据;
所述第二读写模块,用于在所述当前时钟周期的下一个时钟周期从两个所述单端口存储器中交织读写数据,其中,所述写入数据为所述当前时钟周期待写入的数据。
9.一种芯片,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的FIFO存储器读写数据的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的FIFO存储器读写数据的方法的步骤。
CN202211129147.1A 2022-09-16 2022-09-16 Fifo存储器读写数据的方法、装置、芯片及介质 Pending CN115527579A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211129147.1A CN115527579A (zh) 2022-09-16 2022-09-16 Fifo存储器读写数据的方法、装置、芯片及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211129147.1A CN115527579A (zh) 2022-09-16 2022-09-16 Fifo存储器读写数据的方法、装置、芯片及介质

Publications (1)

Publication Number Publication Date
CN115527579A true CN115527579A (zh) 2022-12-27

Family

ID=84698064

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211129147.1A Pending CN115527579A (zh) 2022-09-16 2022-09-16 Fifo存储器读写数据的方法、装置、芯片及介质

Country Status (1)

Country Link
CN (1) CN115527579A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116049032A (zh) * 2023-03-30 2023-05-02 摩尔线程智能科技(北京)有限责任公司 基于光线追踪的数据调度方法、装置及设备、存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116049032A (zh) * 2023-03-30 2023-05-02 摩尔线程智能科技(北京)有限责任公司 基于光线追踪的数据调度方法、装置及设备、存储介质

Similar Documents

Publication Publication Date Title
KR101667097B1 (ko) 시프트 가능 메모리
KR20200000449A (ko) 프리차지 및 재생 제어를 위한 방법 및 장치
CN112363763A (zh) 数据处理方法、装置及计算机可读存储介质
JP2000506301A (ja) 高速コマンド入力を有する簡単化されたクロックドdram
JPS61148692A (ja) 記憶装置
CN115527579A (zh) Fifo存储器读写数据的方法、装置、芯片及介质
JPH1064257A (ja) 半導体記憶装置
KR920005739B1 (ko) 기억부(memoryunit)에 사용되는 부분기입 제어회로.
US9208856B2 (en) Multiport memory with matching address control
CN102567243B (zh) 存储设备的刷新处理方法和存储设备
JP4757582B2 (ja) データ転送動作終了検知回路及びこれを備える半導体記憶装置
US5751999A (en) Processor and data memory for outputting and receiving data on different buses for storage in the same location
CN116136827A (zh) 一种多口存储设备、读写方法、装置
CN109935252B (zh) 存储器装置及其操作方法
US5708842A (en) Apparatus for changing coefficients utilized to perform a convolution operation having address generator which uses initial count number and up/down count inputs received from external
JP2003208788A (ja) 2ポートメモリによるバッファ
JP2003271378A (ja) 記憶装置
US8848480B1 (en) Synchronous multiple port memory with asynchronous ports
US20230176608A1 (en) Read clock start and stop for synchronous memories
CN114415947B (zh) 一种Dummy read控制方法、装置及介质
CN109614148B (zh) 数据逻辑运算方法、监测方法及装置
CN220709660U (zh) 一种任意多通道复用处理器
CN117116323A (zh) 对单端口sram进行读写的方法、fifo模块、芯片
JP2595992B2 (ja) 電子楽器
JP2006293538A (ja) 演算システム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination