CN115373628B - 先进先出存储器、系统、装置、设备及数据读取方法 - Google Patents

先进先出存储器、系统、装置、设备及数据读取方法 Download PDF

Info

Publication number
CN115373628B
CN115373628B CN202211322871.6A CN202211322871A CN115373628B CN 115373628 B CN115373628 B CN 115373628B CN 202211322871 A CN202211322871 A CN 202211322871A CN 115373628 B CN115373628 B CN 115373628B
Authority
CN
China
Prior art keywords
data
output register
read
cache
register
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
Application number
CN202211322871.6A
Other languages
English (en)
Other versions
CN115373628A (zh
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.)
Xiangdixian Computing Technology Chongqing Co ltd
Original Assignee
Beijing Xiangdixian Computing Technology 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 Beijing Xiangdixian Computing Technology Co Ltd filed Critical Beijing Xiangdixian Computing Technology Co Ltd
Priority to CN202211322871.6A priority Critical patent/CN115373628B/zh
Publication of CN115373628A publication Critical patent/CN115373628A/zh
Application granted granted Critical
Publication of CN115373628B publication Critical patent/CN115373628B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开提供一种先进先出存储器、系统、装置、设备及数据读取方法。该存储器包括先进先出的缓存模块、输出寄存器和读控制模块,所述缓存模块被配置为从当前最先存入数据的所述缓存单元中将数据输出至所述输出寄存器进行暂存;所述读控制模块,其与所述输出寄存器的输出端连接,被配置为从所述输出寄存器中读出数据;其中,所述输出寄存器的位宽不小于一个所述缓存单元的位宽。该存储器的输出时序良好,且整体功耗较小。

Description

先进先出存储器、系统、装置、设备及数据读取方法
技术领域
本公开涉及存储器技术领域,尤其涉及一种先进先出存储器、系统、装置、设备及数据读取方法。
背景技术
先进先出(First Input First Output,FIFO)存储器是专用集成电路(Application Specific Integrated Circuit,ASIC)逻辑设计中经常使用的模块,可用来存储管线中的数据,平衡芯片各部分的性能。
数据写入FIFO时,根据写指针的位置把数据存储于相应的缓存单元中,每次写入后写指针加1(当写指针为最大值时,本次写入后写指针重置为最小值)。读出时,则根据读指针的值选择当前FIFO中存储的数据中最先被写入的数据,由外部信号控制接收FIFO的读出,每次读出后读指针加1(当读指针为最大值时,本次读出后读指针重置为最小值)。
这种FIFO功能上满足数据先进先出的需求,在一个时钟沿被写入的数据,在下一个时钟沿就可以被读出。但这种FIFO在输出数据时,需要通过多路选择器(MUX) 根据读指针的当前值,选择对应的数据输出路径,以从FIFO对应的缓存单元中输出数据,是纯组合逻辑。当FIFO的深度越大时,组合逻辑运算时间越长,延时越严重,因此导致输出时序不好,会影响FIFO外部控制逻辑对数据的使用。这个问题在低速设计芯片中不明显,但随着芯片需求的增加,芯片的速度越来越快,这个问题就变得越来越明显。
发明内容
本公开的目的是提供一种先进先出存储器、系统、装置、设备及数据读取方法,解决了现有技术中组合逻辑的FIFO输出时序不好的技术问题。
根据本公开的一个方面,提供一种先进先出存储器,包括:先进先出的缓存模块、输出寄存器和读控制模块;
缓存模块,包括多个位宽相同的缓存单元,缓存模块被配置为从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存;
读控制模块,其与输出寄存器的输出端连接,被配置为从输出寄存器中读出数据;
其中,输出寄存器的位宽不小于一个缓存单元的位宽。
在一些实施例中,上述先进先出存储器中,读控制模块在一个时钟周期内从输出寄存器中读出的数据的位宽不大于一个缓存单元的位宽。
在一些实施例中,上述先进先出存储器中,缓存模块被配置为:
在缓存模块为非空状态且输出寄存器为非满状态时,从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存;或,
在缓存模块为非空状态,输出寄存器为满状态但读控制模块发出第一读信号时,从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存。
在一些实施例中,上述先进先出存储器中,读控制模块,被配置为:
在需要读数据时,发出第一读信号,并判断输出寄存器的状态;
响应于输出寄存器为非空状态,从输出寄存器中读出数据。
在一些实施例中,上述先进先出存储器中,还包括标志寄存器,其分别与缓存模块和读控制模块连接,被配置为存储标志位,以及接收读控制模块发出的第一读信号;
其中,标志位为无效或有效,分别指示当前输出寄存器为非满状态或满状态。
在一些实施例中,上述先进先出存储器中,标志寄存器,还被配置为:
在缓存模块为非空状态时,响应于标志位为无效,向缓存模块发出第二读信号;
在缓存模块为非空状态时,响应于标志位为有效且接收第一读信号,向缓存模块发出第二读信号;
缓存模块,被配置为:
响应于缓存模块为非空状态且接收到第二读信号,从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存。
在一些实施例中,上述先进先出存储器中,标志寄存器,还被配置为:
在缓存模块为空状态时,响应于接收到第一读信号,将标志位设为无效。
在一些实施例中,上述先进先出存储器中,缓存模块还包括多路选择单元,其输入端与各个缓存单元的连接,其输出端为缓存模块的输出端,其被配置为根据读指针的当前值,选择对应的数据输出路径。
根据本公开的另一方面,提供一种图形处理器,包括上述任一实施例的先进先出存储器。
根据本公开的另一方面,提供一种图形处理系统,包括上述任一实施例的图形处理器。
根据本公开的另一方面,提供一种电子装置,包括上述任一实施例的图形处理系统。
根据本公开的另一方面,提供一种电子设备,包括上述任一实施例的电子装置。
根据本公开的另一个方面,提供一种数据读取方法,包括:
从输出寄存器中读出数据;其中,输出寄存器中的数据来自于先进先出缓存设备,先进先出缓存设备包括多个位宽相同的缓存单元,输出寄存器的位宽不小于一个缓存单元的位宽。
在一些实施例中,上述数据读取方法中,在一个时钟周期内,从输出寄存器中读出的数据的位宽不大于一个缓存单元的位宽。
在一些实施例中,上述数据读取方法中,从输出寄存器中读出数据,包括以下步骤:
发出第一读信号,并判断输出寄存器的状态;
响应于输出寄存器为非空状态,从输出寄存器中读出数据。
在一些实施例中,上述数据读取方法中,输出寄存器在其为非满状态且先进先出缓存设备为非空状态时,暂存先进先出缓存设备中当前最先存入数据的缓存单元中的数据;或,
输出寄存器在其为满状态且先进先出缓存设备为非空状态以及第一读信号发出时,暂存先进先出缓存设备中当前最先存入数据的缓存单元中的数据。
在一些实施例中,上述数据读取方法中,输出寄存器为非满状态或满状态通过标志寄存器的标志位来指示,标志位为无效或有效分别指示当前输出寄存器为非满状态或满状态;且第一读信号通过标志寄存器来响应;
其中,标志寄存器在标志位为无效且先进先出缓存设备为非空状态时,向先进先出缓存设备发出第二读信号,以使得先进先出缓存设备从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存;或,
标志寄存器在标志位为有效且接收到第一读信号,以及先进先出缓存设备为非空状态时,向先进先出缓存设备发出第二读信号,以使得先进先出缓存设备从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存。
附图说明
图1为本公开一个实施例提供的先进先出存储器的结构示意图;
图2为本公开一个实施例提供的另一先进先出存储器的结构示意图;
图3为一种实现数组累加计算的硬件结构示意图;
图4为本公开一个实施例提供的一种实现数组累加计算的图形处理系统中的硬件结构示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
本公开的目的是提供一种先进先出存储器,包括:先进先出的缓存模块、输出寄存器和读控制模块,缓存模块被配置为从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存;读控制模块,其与输出寄存器的输出端连接,被配置为从输出寄存器中读出数据;其中,输出寄存器的位宽不小于一个缓存单元的位宽。
也就是说,缓存模块中的数据可以提前输出至输出寄存器中进行暂存,如果缓存模块一直为非空状态,当输出寄存器中有剩余空间(存储空位),缓存模块都可以一直输出数据至输出寄存器中,保证每个时钟周期内输出寄存器中都有数据,读控制模块就可以在每个时钟周期都读到数据,且读控制模块读到的数据总是来自于输出寄存器,所以先进先出存储器输出数据的时序非常好,可以直接被外部的逻辑使用。同时,因为只需要先进先出的缓存模块输出一笔数据(如一个缓存单元内的数据)至输出寄存器的操作,先进先出存储器的整体功耗很小。因此,既满足功能要求,又满足功耗要求。
本公开的一个实施例提供一种先进先出存储器100,如图1所示,该先进先出存储器100包括:先进先出的缓存模块110、输出寄存器120和读控制模块130。
缓存模块110,包括多个位宽相同的缓存单元(图中未标注),缓存模块110被配置为从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存;
读控制模块130,其与输出寄存器120的输出端连接,被配置为从输出寄存器120中读出数据;
其中,输出寄存器120的位宽不小于一个缓存单元的位宽。
在一些实施例中,输出寄存器120的位宽为一个缓存单元的位宽的整数倍但小于缓存模块110的总位宽。需要说明的是,输出寄存器120的位宽的具体数值可以根据需求进行设定,但是输出寄存器120的位宽不宜过大,以满足输出数据的时序要求。
优选地,输出寄存器120的位宽等于一个缓存单元的位宽,对应的,输出寄存器120中可以存储一个缓存单元输出的数据,缓存模块110中一个缓存单元的数据可以提前至少一个时钟周期输出至输出寄存器120中进行暂存,读控制模块130需要读数据且输出寄存器120为非空状态时,读控制模块130可在当前时钟周期内将输出寄存器120中暂存的数据读出,输出寄存器120中暂存的数据被读出后,缓存模块110又会马上输出数据写入输出寄存器120中。进一步保证了先进先出存储器100的输出时序。
在一些实施例中,读控制模块130在一个时钟周期内从输出寄存器120中读出的数据的位宽不大于一个缓存单元的位宽。
优选地,读控制模块130在一个时钟周期内从输出寄存器120中读出的数据的位宽等于一个缓存单元的位宽。
在一些实施例中,缓存模块110,被配置为:
在缓存模块110为非空状态,且输出寄存器120为非满状态时,从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存;或,
在缓存模块110为非空状态,输出寄存器120为满状态但读控制模块130发出第一读信号(external_pop)时,从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存。
输出寄存器120为非满状态或满状态分别表示输出寄存器120中有剩余空间或没有剩余空间数据提供给缓存模块110输出的数据使用。
其中,上述缓存模块110根据缓存模块110的状态、输出寄存器120的状态以及读控制模块130发出第一读信号,从对应的缓存单元中将数据输出至输出寄存器120进行暂存是在一个时钟周期内完成的。
缓存模块110,在缓存模块110为非空状态,输出寄存器120为满状态但读控制模块130发出第一读信号时,从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存,可以理解为,虽然输出寄存器120为满状态,但是因为读控制模块130发出第一读信号指示了输出寄存器120中暂存的数据马上会被读控制模块130读取,所以若此时缓存模块110为非空状态,缓存模块110也会在当前时钟周期内从对应的缓存单元中输出数据(缓存模块110开始响应到输出数据的过程中,输出寄存器120中暂存的数据已经被读控制模块130读取了),以写入输出寄存器120中,填补输出寄存器120中新出现的存储空位(即输出寄存器120在一个时钟周期内完成了旧数据的输出和新数据的写入),而输出寄存器120内新写入的数据,在下一时钟周期就可以被读控制模块130读取。
所以,如果缓存模块110一直为非空状态,一直正常工作,读控制模块130就可以在每个时钟周期都可以读到数据,且读控制模块130读到的数据总是来自于输出寄存器120,所以这种情况下,可以最大程度上保证了输出数据的时序,可以直接被外部的逻辑使用。
其中,缓存模块110为非空状态,指示了缓存模块110中的至少一个缓存单元内缓存有数据。
在一些实施例中,读控制模块130,被配置为:
在需要读数据时,发出第一读信号并判断输出寄存器120的状态;
响应于输出寄存器120为非空状态,从输出寄存器120中读出数据。
其中,输出寄存器120为非空状态是指输出寄存器120存有数据供读控制模块130读取。
其中,上述读控制模块130在需要读出数据时,发出第一读信号、判断输出寄存器120的状态以及从输出寄存器120中读出数据,这些操作是在一个时钟周期内完成的。
在一些实施例中,第一读信号为脉冲信号,高电平有效。对应的,读控制模块130被配置为在需要读数据时,在当前时钟周期的上升沿发出第一读信号,并在输出寄存器120为非空状态时,读控制模块130可在当前时钟周期内的上升沿就开始将输出寄存器120中暂存的数据读出。可以进一步保证在当前时钟周期,缓存模块110尽早开始输出运算,进一步保证了输出数据的时序。
在一些实施例中,由于读控制模块130与输出寄存器120连接,所以读控制模块130可以直接得知输出寄存器120的状态(满状态或非满状态,非空状态或空状态)。
在一些实施例中,读控制模块130还可以直接与缓存模块110连接,以使得缓存模块110可以接收读控制模块130发出第一读信号,从而实现在缓存模块110为非空状态,输出寄存器120为满状态但读控制模块130发出第一读信号时,缓存模块110从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存。
在另一些实施例中,如图1所示,上述先进先出存储器100还包括标志寄存器150,其分别与缓存模块110和读控制模块130连接,被配置为存储第一标志位,以及接收读控制模块130发出的第一读信号;其中,第一标志位为无效或有效,分别指示输出寄存器120为非满状态或满状态。
对应的,在一些实施例中,读控制模块130,还被配置为在需要读数据时,在当前时钟周期内向标志寄存器150发出第一读信号。
在一些实施例中,标志寄存器150,还被配置为:
在缓存模块110为非空状态时,响应于第一标志位为无效,向缓存模块110发出第二读信号(internal_pop);
在缓存模块110为非空状态时,响应于第一标志位为有效且接收第一读信号,向缓存模块110发出第二读信号;
缓存模块110,被配置为:
响应于缓存模块110为非空状态且接收到第二读信号,从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存。
也就是说,一种情况下,在缓存模块110为非空状态和标志寄存器150的第一标志位为无效(输出寄存器为非满状态)的情况下,通过标志寄存器150向缓存模块110发送第二读信号的方式,来触发缓存模块110在当前时钟周期内从对应的缓存单元中读出数据并输出。
另一种情况下,虽然标志寄存器150的第一标志位为有效(输出寄存器120为满状态)但标志寄存器150收到读控制模块130发出的第一读信号时,指示了输出寄存器120中暂存的数据马上要被读走了,这时候,如果缓存模块110非空,则需要缓存模块110可以开始准备读取下一笔数据以填补输出寄存器120中马上要被读走的数据留下的存储空位,此时,可以通过标志寄存器150向缓存模块110发送第二读信号的方式,来通知缓存模块110,以触发缓存模块110在当前时钟周期内从对应的缓存单元中读出数据并输出。
在一些实施例中,第二读信号为电平信号,标志寄存器150中,第二读信号的触发可以通过组合逻辑实现,该组合逻辑以缓存模块110的状态、第一标志位和第一读信号为判断条件,当满足第二读信号的触发条件时,该组合逻辑输出对应的电平信号(即第二读信号)。
在一些实施例中,标志寄存器150还被配置为存储第二标志位,其中,第二标志位为无效或有效,分别指示输出寄存器120为空状态或非空状态。
对应的,读控制模块130向标志寄存器150发出第一读信号时还可以判断标志寄存器150的第二标志位,并响应于标志寄存器150的第二标志位为有效状态,从输出寄存器120中读出数据。
在一些实施例中,当输出寄存器120的位宽等于一个缓存单元的位宽且读控制模块130在一个时钟周期内从输出寄存器120中读出的数据的位宽等于一个缓存单元的位宽时,输出寄存器120的非空状态也即满状态,空状态也即非满状态,这种情况下,第一标志位和第二标志位可以为一个标志位(即标志寄存器150中存储这一个标志位即可),当该标志位为有效时,指示了输出寄存器120为满状态且非空状态,该标志位为无效,指示了输出寄存器120为非满状态且空状态。所以,标志寄存器150和读控制模块130都可以通过该标志位,执行对应的操作。对应的,在标志寄存器150,被配置为:在缓存模块110为非空状态时,响应于该标志位为无效(输出寄存器120为非满状态且空状态),向缓存模块110发出第二读信号的情况中,标志寄存器150向缓存模块110发出第二读信号的同时或之后,还可以将该标志位设为有效,以指示读控制模块130在下一时钟周期可以进行数据的读取操作。
在一些实施例中,标志寄存器150,还被配置为:
响应于缓存模块110为空状态且接收到第一读信号,将标志寄存器150的第一标志位,置为无效。
也就是说,当缓存模块110为空状态且接收到第一读信号时,说明输出寄存器120中暂存的数据马上要被读走了,但是由于缓存模块110为空状态,没有新的数据来填补输出寄存器120中新出现的空位,所以,到下一时钟周期,输出寄存器120确定为非满状态,所以此时需要将标志寄存器150的第一标志位,置为无效。
进一步的,在一些实施例中,当输出寄存器120的位宽等于一个缓存单元的位宽且读控制模块130在一个时钟周期内从输出寄存器120中读出的数据的位宽等于一个缓存单元的位宽时,第一标志位和第二标志位可以为一个标志位的情况下,该标志位为无效,也指示了输出寄存器120为空状态,所以将标志寄存器150的该标志位设为无效,还可以指示读控制模块130在下一时钟周期不能进行数据的读取操作。
在一些实施例中,标志寄存器150不与输出寄存器120直接连接,标志寄存器150不需要直接从输出寄存器120上得到输出寄存器120的状态(满状态或非满状态,非空状态或空状态),而是根据接收到的第一读信号和发出的第二读信号,确定输出寄存器120的状态。
示例性的,当输出寄存器120的位宽等于一个缓存单元的位宽且读控制模块130在一个时钟周期内从输出寄存器120中读出的数据的位宽等于一个缓存单元的位宽时,第一标志位和第二标志位可以为一个标志位的情况下,当某个时钟周期内,接收到第一读信号,但是没有触发第二读信号(如缓存模块110为空状态),则说明输出寄存器120内暂存的一笔数据(一个缓存单元的数据)会在该时钟周期内被读控制模块130读走且没有新数据可以填补存储空位,则说明下一时钟周期,读控制模块130不能读数据,这时标志寄存器150的标志位可以不用等到输出寄存器120的数据被读走之后再进行标志位的置位,而是可以提前将标志位设为无效,提早告知读控制模块130;而,当某个时钟周期内,标志寄存器150触发了第二读信号,则说明无论输出寄存器120当前是否为空状态,在当前时钟周期缓存模块110都可以从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存,该数据在下一个时钟周期可以被读控制模块130读取,这时标志寄存器150的标志位可以不用等到缓存模块110输出的数据写入输出寄存器120之后再进行标志位的置位,而是可以提前将标志位设为有效,提早告知读控制模块130。在一定程度上,也进一步保证了先进先出存储器100的输出时序。
在一些实施例中,标志寄存器150中,第一标志位和第二标志位的置位,也可以通过组合逻辑实现,该组合逻辑以缓存模块110的状态、第一标志位的当前值、第二标志位的当前值、第一读信号和第二信号为判断条件,当满足置位条件时,该组合逻辑实现第一标志位和第二标志位的置位操作。
在一些实施例中,标志寄存器150可以与输出寄存器120直接连接,标志寄存器150可以直接从输出寄存器120上得到输出寄存器120的状态(满状态或非满状态,非空状态或空状态),以此来实现标志寄存器150的第一标志位和第二标志位的置位操作。
在一些实施例中,标志寄存器150中第一标志位和第二标志位的位宽为1比特,当标志寄存器150的第一标志位(或第二标志位)为有效时,标志寄存器150的第一标志位(或第二标志位)的值为1,当标志寄存器150的第一标志位(或第二标志位)为无效时,标志寄存器150的第一标志位(或第二标志位)的值为0。
在一些实施例中,当输出寄存器120的位宽等于一个缓存单元的位宽且读控制模块130在一个时钟周期内从输出寄存器120中读出的数据的位宽等于一个缓存单元的位宽时,第一标志位和第二标志位可以为一个标志位的情况下,标志寄存器150的位宽可以为1比特,即上述标志寄存器150为1-bit标志寄存器150。
在一些实施例中,标志寄存器150中第一标志位和第二标志位的位宽可以为2比特及以上,也是可行的。示例性的,当标志寄存器150的第一标志位(或第二标志位)为有效时,标志寄存器150的第一标志位(或第二标志位)的值可以为11,当标志寄存器150的第一标志位(或第二标志位)为无效时,标志寄存器150的第一标志位(或第二标志位)的值可以为00。
在一些实施例中,在缓存模块110需要从对应的缓存单元中读出数据并输出时,缓存模块110还被配置为:
响应于接收到第二读信号且缓存模块110为非空状态,根据读指针的当前值,从读指针的当前值指向的缓存单元中将数据输出;
响应于从读指针的当前值指向的缓存单元中将数据输出,且读指针的当前值小于读指针的最大值,将读指针的值加1;
响应于从读指针的当前值指向的缓存单元中将数据输出,且读指针的当前值等于读指针的最大值,将读指针的值重置为读指针的最小值。
示例性的,在图1所示的缓存模块110中,包括n个缓存单元,分别为缓存单元0、缓存单元1、缓存单元2、…、缓存单元n-2、缓存单元n-1。对应的,当读指针的值为0(最小值)时,读指针指向缓存单元0;当读指针的值为1时,读指针指向缓存单元1,以此类推,当读指针的值为n-1(最大值)时,读指针指向缓存单元n-1。每次从一个缓存单元中输出数据后,读指针的值都加1,但是当读指针的值为n-1时,本次输出数据后读指针的值重置为0。
在一些实施例中,上述先进先出存储器100还包括写控制模块140,与缓存模块110的输入端连接,被配置为响应于接收到写信号(push)且缓存模块110为非满状态,根据缓存模块110的写指针的当前值,向写指针的当前值指向的缓存单元内写入数据。
对应的,缓存模块110,还被配置为:
响应于写指针的当前值指向的缓存单元被写入数据且写指针的当前值小于写指针的最大值,将写指针的值加1;
响应于写指针的当前值指向的缓存单元被写入数据且写指针的当前值等于写指针的最大值,将写指针的值重置为写指针的最小值。
示例性的,在图1所示的缓存模块110中,包括n个缓存单元,分别为缓存单元0、缓存单元1、缓存单元2、…、缓存单元n-2、缓存单元n-1。对应的,当写指针的值为0(最小值)时,写指针指向缓存单元0;当写指针的值为1时,写指针指向缓存单元1,以此类推,当写指针的值为n-1(最大值)时,写指针指向缓存单元n-1。每次向一个缓存单元中写入数据后,写指针的值都加1,但是当写指针的值为n-1时,本次写入数据后写指针的值重置为0。
在一些实施例中,为了保证缓存模块110不溢出,如图2所示,缓存模块110还包括满寄存器(full寄存器),用于存储缓存模块110的满状态信号(full信号),满状态信号(full信号)由读指针和写指针经过一定的组合逻辑后写入满寄存器,供写控制模块140使用。
为了判断缓存模块110是否为满状态,读指针和写指针的组合逻辑可以为:
响应于写指针的值发生变化(即每次向缓存模块110写入数据之后),判断写指针的当前值是否等于读指针的当前值;
响应于写指针的当前值等于读指针的当前值,且未接收到第二读信号,将缓存模块110置为满状态。
在一些实施例中,为了保证缓存模块110不空读,缓存模块110还包括空寄存器(empty寄存器)(图中未示出),用于存储缓存模块110的空状态信号(empty信号),空状态信号(empty信号)也可以由读指针和写指针经过一定的组合逻辑后写入空寄存器。对应的,其它模块(如标志寄存器150)可以与空寄存器连接,以获取缓存模块110是非空状态还是空状态。
为了判断缓存模块110是否为空状态,读指针和写指针的组合逻辑可以为:
响应于读指针的值发生变化(每次缓存模块110输出数据之后),判断读指针的当前值是否等于写指针的当前值;
响应于读指针的当前值等于写指针的当前值,且未接收到写信号(push),将缓存模块110置为空状态。
在一些实施例中,缓存模块110还包括多路选择单元Mux,其输入端与各个缓存单元的连接,其输出端为缓存模块110的输出端,其被配置为根据读指针的当前值,选择对应的数据输出路径。
基于相同的发明构思,本公开实施例还提供一种图形处理器,包括上述任一实施例的先进先出存储器。
基于相同的发明构思,本公开实施例还提供一种图形处理系统(GraphicsProcessing Unit,GPU),包括上述任一实施例的图形处理器。
在一些使用场景下,该图形处理系统的产品形式体现为显卡或CPU主板。
示例性的,在GPU管线中,需要计算多个数的和。例如,需要计算32个数字的和,每个数字是8 bit数。
可以把32个数据定义为一个数组:input_array[32]。
需要进行的计算为:SUM = input_array[0]+input_array[1]+…+input[31]。
上述计算可以通过如图3所示的硬件来实现。32个8-bit数产生出来后,顺序写入FIFO,从FIFO输出后直接送入一个8位加法器,累加得到最终的结果。
在图3所示的实现方式中,FIFO的输出只用作一个加法器的组合逻辑输入,一个时钟周期计算2个数的和,因此满足该输出信号的时序并不困难。而且还可以得到加法的中间结果,因为数据是按顺序进入加法器的。
也即在图3所示的实现方式中,FIFO使用常规的组合逻辑FIFO,也能满足需求。
但是当需要把产品的性能提高4倍,实现完全同样的功能,则需要在一个时钟周期计算4个数的和,该计算过程可以通过如图4所示的硬件来实现。
32个数据分别输入到4个FIFO中。在FIFO后面的一个时钟周期里,有4个加法器,顺序计算4个数的和。4个加法器不能变为并行计算,因为这样会丢失加法的中间结果。在这种结构中,因为1个时钟周期(如T0~T1)内有串行的4个加法器,而且4个加法器都是组合逻辑,4个加法器从上到下进行顺序运算,所以对第1个FIFO的输出速度要求很高,高频率的读取信号下,第1个FIFO如果用常规的组合逻辑FIFO,输出时序会比较差,很有可能无法满足时序要求。如果用移位逻辑FIFO又会有很大的功耗。在这种情况下,在图4中的硬件结构的FIFO(至少第1个FIFO)使用上述任一实施例中的先进先出存储器,就可以得到好的时序,并且可以很好的控制功耗。
基于相同的发明构思,本公开实施例还提供一种电子装置,该电子装置包括上述任一实施例中的图形处理系统。
基于相同的发明构思,本公开实施例还提供一种电子设备,该电子设备包括上述的电子装置。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
基于相同的发明构思,本公开实施例还提供一种数据读取方法,包括:
从输出寄存器中读出数据;其中,输出寄存器中的数据来自于先进先出缓存设备,先进先出缓存设备包括多个位宽相同的缓存单元,输出寄存器的位宽不小于一个缓存单元的位宽。
在一些实施例中,上述数据读取方法中,在一个时钟周期内,从输出寄存器中读出的数据的位宽不大于一个缓存单元的位宽。
在一些实施例中,上述数据读取方法中,从输出寄存器中读出数据,包括以下步骤:
发出第一读信号,并判断输出寄存器的状态;
响应于输出寄存器为非空状态,从输出寄存器中读出数据。
在一些实施例中,上述数据读取方法中,输出寄存器在其为非满状态且先进先出缓存设备为非空状态时,暂存先进先出缓存设备中当前最先存入数据的缓存单元中的数据;或,
输出寄存器在其为满状态且先进先出缓存设备为非空状态以及第一读信号发出时,暂存先进先出缓存设备中当前最先存入数据的缓存单元中的数据。
在一些实施例中,上述数据读取方法中,输出寄存器为非满状态或满状态通过标志寄存器的标志位来指示,标志位为无效或有效分别指示当前输出寄存器为非满状态或满状态;且第一读信号通过标志寄存器来响应;
其中,标志寄存器在标志位为无效且先进先出缓存设备为非空状态时,向先进先出缓存设备发出第二读信号,以使得先进先出缓存设备从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存;或,
标志寄存器在标志位为有效且接收到第一读信号,以及先进先出缓存设备为非空状态时,向先进先出缓存设备发出第二读信号,以使得先进先出缓存设备从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。

Claims (15)

1.一种先进先出存储器,其中,包括:先进先出的缓存模块、输出寄存器和读控制模块;
所述缓存模块,包括多个位宽相同的缓存单元,所述缓存模块被配置为从当前最先存入数据的所述缓存单元中将数据输出至所述输出寄存器进行暂存,包括:在所述缓存模块为非空状态且所述输出寄存器为非满状态时,从当前最先存入数据的所述缓存单元中将数据输出至所述输出寄存器进行暂存;在所述缓存模块为非空状态,所述输出寄存器为满状态但所述读控制模块发出第一读信号时,从当前最先存入数据的所述缓存单元中将数据输出至所述输出寄存器进行暂存;
所述读控制模块,其与所述输出寄存器的输出端连接,被配置为在需要读数据且所述输出寄存器为非空状态时在当前时钟周期内从所述输出寄存器中读出数据;其中,所述读控制模块读到的数据总是来自于所述输出寄存器,所述缓存模块中一个所述缓存单元的数据提前至少一个时钟周期输出至所述输出寄存器中进行暂存;其中,所述输出寄存器的位宽不小于一个所述缓存单元的位宽。
2.根据权利要求1所述的先进先出存储器,其中,所述读控制模块在一个时钟周期内从所述输出寄存器中读出的数据的位宽不大于一个所述缓存单元的位宽。
3.根据权利要求1所述的先进先出存储器,其中,所述读控制模块,被配置为:
在需要读数据时,发出第一读信号,并判断所述输出寄存器的状态;
响应于所述输出寄存器为非空状态,从所述输出寄存器中读出数据。
4.根据权利要求1所述的先进先出存储器,其中,还包括标志寄存器,其分别与所述缓存模块和所述读控制模块连接,被配置为存储标志位,以及接收所述读控制模块发出的第一读信号;
其中,所述标志位为无效或有效,分别指示当前所述输出寄存器为非满状态或满状态。
5.根据权利要求4所述的先进先出存储器,其中,所述标志寄存器,还被配置为:
在所述缓存模块为非空状态时,响应于所述标志位为无效,向所述缓存模块发出第二读信号;
在所述缓存模块为非空状态时,响应于所述标志位为有效且接收所述第一读信号,向所述缓存模块发出所述第二读信号;
所述缓存模块,被配置为:
响应于所述缓存模块为非空状态且接收到所述第二读信号,从当前最先存入数据的所述缓存单元中将数据输出至所述输出寄存器进行暂存。
6.根据权利要求5所述的先进先出存储器,其中,所述标志寄存器,还被配置为:
在所述缓存模块为空状态时,响应于接收到所述第一读信号,将所述标志位设为无效。
7.根据权利要求1所述的先进先出存储器,其中,所述缓存模块还包括多路选择单元,其输入端与各个所述缓存单元的连接,其输出端为所述缓存模块的输出端,其被配置为根据读指针的当前值,选择对应的数据输出路径。
8.一种图形处理器,其中,包括权利要求1至7中任一项所述的先进先出存储器。
9.一种图形处理系统,其中,包括权利要求8所述的图形处理器。
10.一种电子装置,其中,包括权利要求9所述的图形处理系统。
11.一种电子设备,其中,包括权利要求10所述的电子装置。
12.一种数据读取方法,其中,包括:
在需要读数据且输出寄存器为非空状态时在当前时钟周期内从所述输出寄存器中读出数据;其中,所述输出寄存器中的数据来自于先进先出缓存设备,所述先进先出缓存设备包括多个位宽相同的缓存单元,所述输出寄存器的位宽不小于一个所述缓存单元的位宽;读到的数据总是来自于所述输出寄存器,所述先进先出缓存设备中一个所述缓存单元的数据提前至少一个时钟周期输出至所述输出寄存器中进行暂存;
其中,所述输出寄存器在其为非满状态且所述先进先出缓存设备为非空状态时,暂存所述先进先出缓存设备中当前最先存入数据的所述缓存单元中的数据;所述输出寄存器在其为满状态且所述先进先出缓存设备为非空状态以及第一读信号发出时,暂存所述先进先出缓存设备中当前最先存入数据的所述缓存单元中的数据。
13.根据权利要求12所述的方法,其中,在一个时钟周期内,从所述输出寄存器中读出的数据的位宽不大于一个所述缓存单元的位宽。
14.根据权利要求12所述的方法,其中,从输出寄存器中读出数据,包括以下步骤:
发出所述第一读信号,并判断所述输出寄存器的状态;
响应于所述输出寄存器为非空状态,从所述输出寄存器中读出数据。
15.根据权利要求12所述的方法,其中,所述输出寄存器为非满状态或满状态通过标志寄存器的标志位来指示,所述标志位为无效或有效分别指示当前所述输出寄存器为非满状态或满状态;且所述第一读信号通过所述标志寄存器来响应;
其中,所述标志寄存器在所述标志位为无效且所述先进先出缓存设备为非空状态时,向所述先进先出缓存设备发出第二读信号,以使得所述先进先出缓存设备从当前最先存入数据的所述缓存单元中将数据输出至所述输出寄存器进行暂存;或,
所述标志寄存器在所述标志位为有效且接收到所述第一读信号,以及所述先进先出缓存设备为非空状态时,向所述先进先出缓存设备发出第二读信号,以使得所述先进先出缓存设备从当前最先存入数据的所述缓存单元中将数据输出至所述输出寄存器进行暂存。
CN202211322871.6A 2022-10-27 2022-10-27 先进先出存储器、系统、装置、设备及数据读取方法 Active CN115373628B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211322871.6A CN115373628B (zh) 2022-10-27 2022-10-27 先进先出存储器、系统、装置、设备及数据读取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211322871.6A CN115373628B (zh) 2022-10-27 2022-10-27 先进先出存储器、系统、装置、设备及数据读取方法

Publications (2)

Publication Number Publication Date
CN115373628A CN115373628A (zh) 2022-11-22
CN115373628B true CN115373628B (zh) 2023-02-03

Family

ID=84074367

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211322871.6A Active CN115373628B (zh) 2022-10-27 2022-10-27 先进先出存储器、系统、装置、设备及数据读取方法

Country Status (1)

Country Link
CN (1) CN115373628B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6061749A (en) * 1997-04-30 2000-05-09 Canon Kabushiki Kaisha Transformation of a first dataword received from a FIFO into an input register and subsequent dataword from the FIFO into a normalized output dataword
CN1890630A (zh) * 2003-12-09 2007-01-03 Arm有限公司 在寄存器和存储器之间移动数据的数据处理设备和方法
CN104407809A (zh) * 2014-11-04 2015-03-11 盛科网络(苏州)有限公司 多通道fifo缓冲器及其控制方法
CN104468156A (zh) * 2013-09-16 2015-03-25 杭州华三通信技术有限公司 一种利用时隙仲裁节省资源开销的方法和设备
CN104978282A (zh) * 2014-04-04 2015-10-14 上海芯豪微电子有限公司 一种缓存系统和方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6061749A (en) * 1997-04-30 2000-05-09 Canon Kabushiki Kaisha Transformation of a first dataword received from a FIFO into an input register and subsequent dataword from the FIFO into a normalized output dataword
CN1890630A (zh) * 2003-12-09 2007-01-03 Arm有限公司 在寄存器和存储器之间移动数据的数据处理设备和方法
CN104468156A (zh) * 2013-09-16 2015-03-25 杭州华三通信技术有限公司 一种利用时隙仲裁节省资源开销的方法和设备
CN104978282A (zh) * 2014-04-04 2015-10-14 上海芯豪微电子有限公司 一种缓存系统和方法
CN104407809A (zh) * 2014-11-04 2015-03-11 盛科网络(苏州)有限公司 多通道fifo缓冲器及其控制方法

Also Published As

Publication number Publication date
CN115373628A (zh) 2022-11-22

Similar Documents

Publication Publication Date Title
US6192428B1 (en) Method/apparatus for dynamically changing FIFO draining priority through asynchronous or isochronous DMA engines in response to packet type and predetermined high watermark being reached
US7925804B2 (en) FIFO device and method of storing data in FIFO buffer
US9641464B2 (en) FIFO buffer system providing same clock cycle response to pop commands
US7099231B2 (en) Interleaving memory blocks to relieve timing bottleneck in a multi-queue first-in first-out memory system
US7870310B2 (en) Multiple counters to relieve flag restriction in a multi-queue first-in first-out memory system
US6802036B2 (en) High-speed first-in-first-out buffer
CN111832240A (zh) Fifo数据传输方法及fifo存储装置
CN113900974A (zh) 一种存储装置、数据存储方法及相关设备
CN116431079A (zh) 数据读取、写入方法及装置、带宽转换装置和电子设备
US7523232B2 (en) Mark/re-read and mark/re-write operations in a multi-queue first-in first-out memory system
US6941434B2 (en) Self-synchronous FIFO memory device having high access efficiency, and system provided with interface for data transfer using the same
US20240020246A1 (en) Method for Generating Information Based on FIFO Memory and Apparatus, Device and Medium
JP2004062630A (ja) Fifoメモリ及び半導体装置
CN115373628B (zh) 先进先出存储器、系统、装置、设备及数据读取方法
CN101566941B (zh) 一种基于静态存储器的fifo存储单元
US20020188811A1 (en) Arbitration and select logic for a shared memory
CN108984441B (zh) 一种保持数据传送一致性的方法及系统
CN115221082B (zh) 一种数据缓存方法、装置及存储介质
CN115237349A (zh) 数据读写控制方法、控制装置、计算机存储介质和电子设备
US7159078B2 (en) Computer system embedding sequential buffers therein for performing a digital signal processing data access operation and a method thereof
US20100217914A1 (en) Memory access determination circuit, memory access determination method and electronic device
CN110688238B (zh) 一种分离存储的队列实现方法及装置
US6715021B1 (en) Out-of-band look-ahead arbitration method and/or architecture
CN110618950B (zh) 一种异步fifo读写控制电路及方法、可读存储介质及终端
CN115658568A (zh) 一种fifo装置及其数据处理方法

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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240105

Address after: 401135 No. 618 Liangjiang Avenue, Longxing Town, Yubei District, Chongqing

Patentee after: Xiangdixian Computing Technology (Chongqing) Co.,Ltd.

Address before: Room 901, 901, floor 9 (09), building 1, yard 5, Anding Road, Chaoyang District, Beijing 100029

Patentee before: Beijing xiangdixian Computing Technology Co.,Ltd.

TR01 Transfer of patent right