一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

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

2022-11-23 15:15:26 来源:中国专利 TAG:


1.本公开涉及存储器技术领域,尤其涉及一种先进先出存储器、系统、装置、设备及数据读取方法。


背景技术:

2.先进先出(first input first output,fifo)存储器是专用集成电路(application specific integrated circuit,asic)逻辑设计中经常使用的模块,可用来存储管线中的数据,平衡芯片各部分的性能。
3.数据写入fifo时,根据写指针的位置把数据存储于相应的缓存单元中,每次写入后写指针加1(当写指针为最大值时,本次写入后写指针重置为最小值)。读出时,则根据读指针的值选择当前fifo中存储的数据中最先被写入的数据,由外部信号控制接收fifo的读出,每次读出后读指针加1(当读指针为最大值时,本次读出后读指针重置为最小值)。
4.这种fifo功能上满足数据先进先出的需求,在一个时钟沿被写入的数据,在下一个时钟沿就可以被读出。但这种fifo在输出数据时,需要通过多路选择器(mux) 根据读指针的当前值,选择对应的数据输出路径,以从fifo对应的缓存单元中输出数据,是纯组合逻辑。当fifo的深度越大时,组合逻辑运算时间越长,延时越严重,因此导致输出时序不好,会影响fifo外部控制逻辑对数据的使用。这个问题在低速设计芯片中不明显,但随着芯片需求的增加,芯片的速度越来越快,这个问题就变得越来越明显。


技术实现要素:

5.本公开的目的是提供一种先进先出存储器、系统、装置、设备及数据读取方法,解决了现有技术中组合逻辑的fifo输出时序不好的技术问题。
6.根据本公开的一个方面,提供一种先进先出存储器,包括:先进先出的缓存模块、输出寄存器和读控制模块;缓存模块,包括多个位宽相同的缓存单元,缓存模块被配置为从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存;读控制模块,其与输出寄存器的输出端连接,被配置为从输出寄存器中读出数据;其中,输出寄存器的位宽不小于一个缓存单元的位宽。
7.在一些实施例中,上述先进先出存储器中,读控制模块在一个时钟周期内从输出寄存器中读出的数据的位宽不大于一个缓存单元的位宽。
8.在一些实施例中,上述先进先出存储器中,缓存模块被配置为:在缓存模块为非空状态且输出寄存器为非满状态时,从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存;或,在缓存模块为非空状态,输出寄存器为满状态但读控制模块发出第一读信号时,从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存。
9.在一些实施例中,上述先进先出存储器中,读控制模块,被配置为:
在需要读数据时,发出第一读信号,并判断输出寄存器的状态;响应于输出寄存器为非空状态,从输出寄存器中读出数据。
10.在一些实施例中,上述先进先出存储器中,还包括标志寄存器,其分别与缓存模块和读控制模块连接,被配置为存储标志位,以及接收读控制模块发出的第一读信号;其中,标志位为无效或有效,分别指示当前输出寄存器为非满状态或满状态。
11.在一些实施例中,上述先进先出存储器中,标志寄存器,还被配置为:在缓存模块为非空状态时,响应于标志位为无效,向缓存模块发出第二读信号;在缓存模块为非空状态时,响应于标志位为有效且接收第一读信号,向缓存模块发出第二读信号;缓存模块,被配置为:响应于缓存模块为非空状态且接收到第二读信号,从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存。
12.在一些实施例中,上述先进先出存储器中,标志寄存器,还被配置为:在缓存模块为空状态时,响应于接收到第一读信号,将标志位设为无效。
13.在一些实施例中,上述先进先出存储器中,缓存模块还包括多路选择单元,其输入端与各个缓存单元的连接,其输出端为缓存模块的输出端,其被配置为根据读指针的当前值,选择对应的数据输出路径。
14.根据本公开的另一方面,提供一种图形处理器,包括上述任一实施例的先进先出存储器。
15.根据本公开的另一方面,提供一种图形处理系统,包括上述任一实施例的图形处理器。
16.根据本公开的另一方面,提供一种电子装置,包括上述任一实施例的图形处理系统。
17.根据本公开的另一方面,提供一种电子设备,包括上述任一实施例的电子装置。
18.根据本公开的另一个方面,提供一种数据读取方法,包括:从输出寄存器中读出数据;其中,输出寄存器中的数据来自于先进先出缓存设备,先进先出缓存设备包括多个位宽相同的缓存单元,输出寄存器的位宽不小于一个缓存单元的位宽。
19.在一些实施例中,上述数据读取方法中,在一个时钟周期内,从输出寄存器中读出的数据的位宽不大于一个缓存单元的位宽。
20.在一些实施例中,上述数据读取方法中,从输出寄存器中读出数据,包括以下步骤:发出第一读信号,并判断输出寄存器的状态;响应于输出寄存器为非空状态,从输出寄存器中读出数据。
21.在一些实施例中,上述数据读取方法中,输出寄存器在其为非满状态且先进先出缓存设备为非空状态时,暂存先进先出缓存设备中当前最先存入数据的缓存单元中的数据;或,输出寄存器在其为满状态且先进先出缓存设备为非空状态以及第一读信号发出时,暂存先进先出缓存设备中当前最先存入数据的缓存单元中的数据。
22.在一些实施例中,上述数据读取方法中,输出寄存器为非满状态或满状态通过标志寄存器的标志位来指示,标志位为无效或有效分别指示当前输出寄存器为非满状态或满状态;且第一读信号通过标志寄存器来响应;其中,标志寄存器在标志位为无效且先进先出缓存设备为非空状态时,向先进先出缓存设备发出第二读信号,以使得先进先出缓存设备从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存;或,标志寄存器在标志位为有效且接收到第一读信号,以及先进先出缓存设备为非空状态时,向先进先出缓存设备发出第二读信号,以使得先进先出缓存设备从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存。
附图说明
23.图1为本公开一个实施例提供的先进先出存储器的结构示意图;图2为本公开一个实施例提供的另一先进先出存储器的结构示意图;图3为一种实现数组累加计算的硬件结构示意图;图4为本公开一个实施例提供的一种实现数组累加计算的图形处理系统中的硬件结构示意图。
具体实施方式
24.在介绍本公开实施例之前,应当说明的是:本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
25.本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
26.本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
27.应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
28.为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
29.本公开的目的是提供一种先进先出存储器,包括:先进先出的缓存模块、输出寄存器和读控制模块,缓存模块被配置为从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存;读控制模块,其与输出寄存器的输出端连接,被配置为从输出寄存器中读出数据;其中,输出寄存器的位宽不小于一个缓存单元的位宽。
30.也就是说,缓存模块中的数据可以提前输出至输出寄存器中进行暂存,如果缓存模块一直为非空状态,当输出寄存器中有剩余空间(存储空位),缓存模块都可以一直输出
数据至输出寄存器中,保证每个时钟周期内输出寄存器中都有数据,读控制模块就可以在每个时钟周期都读到数据,且读控制模块读到的数据总是来自于输出寄存器,所以先进先出存储器输出数据的时序非常好,可以直接被外部的逻辑使用。同时,因为只需要先进先出的缓存模块输出一笔数据(如一个缓存单元内的数据)至输出寄存器的操作,先进先出存储器的整体功耗很小。因此,既满足功能要求,又满足功耗要求。
31.本公开的一个实施例提供一种先进先出存储器100,如图1所示,该先进先出存储器100包括:先进先出的缓存模块110、输出寄存器120和读控制模块130。
32.缓存模块110,包括多个位宽相同的缓存单元(图中未标注),缓存模块110被配置为从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存;读控制模块130,其与输出寄存器120的输出端连接,被配置为从输出寄存器120中读出数据;其中,输出寄存器120的位宽不小于一个缓存单元的位宽。
33.在一些实施例中,输出寄存器120的位宽为一个缓存单元的位宽的整数倍但小于缓存模块110的总位宽。需要说明的是,输出寄存器120的位宽的具体数值可以根据需求进行设定,但是输出寄存器120的位宽不宜过大,以满足输出数据的时序要求。
34.优选地,输出寄存器120的位宽等于一个缓存单元的位宽,对应的,输出寄存器120中可以存储一个缓存单元输出的数据,缓存模块110中一个缓存单元的数据可以提前至少一个时钟周期输出至输出寄存器120中进行暂存,读控制模块130需要读数据且输出寄存器120为非空状态时,读控制模块130可在当前时钟周期内将输出寄存器120中暂存的数据读出,输出寄存器120中暂存的数据被读出后,缓存模块110又会马上输出数据写入输出寄存器120中。进一步保证了先进先出存储器100的输出时序。
35.在一些实施例中,读控制模块130在一个时钟周期内从输出寄存器120中读出的数据的位宽不大于一个缓存单元的位宽。
36.优选地,读控制模块130在一个时钟周期内从输出寄存器120中读出的数据的位宽等于一个缓存单元的位宽。
37.在一些实施例中,缓存模块110,被配置为:在缓存模块110为非空状态,且输出寄存器120为非满状态时,从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存;或,在缓存模块110为非空状态,输出寄存器120为满状态但读控制模块130发出第一读信号(external_pop)时,从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存。
38.输出寄存器120为非满状态或满状态分别表示输出寄存器120中有剩余空间或没有剩余空间数据提供给缓存模块110输出的数据使用。
39.其中,上述缓存模块110根据缓存模块110的状态、输出寄存器120的状态以及读控制模块130发出第一读信号,从对应的缓存单元中将数据输出至输出寄存器120进行暂存是在一个时钟周期内完成的。
40.缓存模块110,在缓存模块110为非空状态,输出寄存器120为满状态但读控制模块130发出第一读信号时,从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存,可以理解为,虽然输出寄存器120为满状态,但是因为读控制模块130发出第一读信
号指示了输出寄存器120中暂存的数据马上会被读控制模块130读取,所以若此时缓存模块110为非空状态,缓存模块110也会在当前时钟周期内从对应的缓存单元中输出数据(缓存模块110开始响应到输出数据的过程中,输出寄存器120中暂存的数据已经被读控制模块130读取了),以写入输出寄存器120中,填补输出寄存器120中新出现的存储空位(即输出寄存器120在一个时钟周期内完成了旧数据的输出和新数据的写入),而输出寄存器120内新写入的数据,在下一时钟周期就可以被读控制模块130读取。
41.所以,如果缓存模块110一直为非空状态,一直正常工作,读控制模块130就可以在每个时钟周期都可以读到数据,且读控制模块130读到的数据总是来自于输出寄存器120,所以这种情况下,可以最大程度上保证了输出数据的时序,可以直接被外部的逻辑使用。
42.其中,缓存模块110为非空状态,指示了缓存模块110中的至少一个缓存单元内缓存有数据。
43.在一些实施例中,读控制模块130,被配置为:在需要读数据时,发出第一读信号并判断输出寄存器120的状态;响应于输出寄存器120为非空状态,从输出寄存器120中读出数据。
44.其中,输出寄存器120为非空状态是指输出寄存器120存有数据供读控制模块130读取。
45.其中,上述读控制模块130在需要读出数据时,发出第一读信号、判断输出寄存器120的状态以及从输出寄存器120中读出数据,这些操作是在一个时钟周期内完成的。
46.在一些实施例中,第一读信号为脉冲信号,高电平有效。对应的,读控制模块130被配置为在需要读数据时,在当前时钟周期的上升沿发出第一读信号,并在输出寄存器120为非空状态时,读控制模块130可在当前时钟周期内的上升沿就开始将输出寄存器120中暂存的数据读出。可以进一步保证在当前时钟周期,缓存模块110尽早开始输出运算,进一步保证了输出数据的时序。
47.在一些实施例中,由于读控制模块130与输出寄存器120连接,所以读控制模块130可以直接得知输出寄存器120的状态(满状态或非满状态,非空状态或空状态)。
48.在一些实施例中,读控制模块130还可以直接与缓存模块110连接,以使得缓存模块110可以接收读控制模块130发出第一读信号,从而实现在缓存模块110为非空状态,输出寄存器120为满状态但读控制模块130发出第一读信号时,缓存模块110从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存。
49.在另一些实施例中,如图1所示,上述先进先出存储器100还包括标志寄存器150,其分别与缓存模块110和读控制模块130连接,被配置为存储第一标志位,以及接收读控制模块130发出的第一读信号;其中,第一标志位为无效或有效,分别指示输出寄存器120为非满状态或满状态。
50.对应的,在一些实施例中,读控制模块130,还被配置为在需要读数据时,在当前时钟周期内向标志寄存器150发出第一读信号。
51.在一些实施例中,标志寄存器150,还被配置为:在缓存模块110为非空状态时,响应于第一标志位为无效,向缓存模块110发出第二读信号(internal_pop);在缓存模块110为非空状态时,响应于第一标志位为有效且接收第一读信号,向缓
存模块110发出第二读信号;缓存模块110,被配置为:响应于缓存模块110为非空状态且接收到第二读信号,从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存。
52.也就是说,一种情况下,在缓存模块110为非空状态和标志寄存器150的第一标志位为无效(输出寄存器为非满状态)的情况下,通过标志寄存器150向缓存模块110发送第二读信号的方式,来触发缓存模块110在当前时钟周期内从对应的缓存单元中读出数据并输出。
53.另一种情况下,虽然标志寄存器150的第一标志位为有效(输出寄存器120为满状态)但标志寄存器150收到读控制模块130发出的第一读信号时,指示了输出寄存器120中暂存的数据马上要被读走了,这时候,如果缓存模块110非空,则需要缓存模块110可以开始准备读取下一笔数据以填补输出寄存器120中马上要被读走的数据留下的存储空位,此时,可以通过标志寄存器150向缓存模块110发送第二读信号的方式,来通知缓存模块110,以触发缓存模块110在当前时钟周期内从对应的缓存单元中读出数据并输出。
54.在一些实施例中,第二读信号为电平信号,标志寄存器150中,第二读信号的触发可以通过组合逻辑实现,该组合逻辑以缓存模块110的状态、第一标志位和第一读信号为判断条件,当满足第二读信号的触发条件时,该组合逻辑输出对应的电平信号(即第二读信号)。
55.在一些实施例中,标志寄存器150还被配置为存储第二标志位,其中,第二标志位为无效或有效,分别指示输出寄存器120为空状态或非空状态。
56.对应的,读控制模块130向标志寄存器150发出第一读信号时还可以判断标志寄存器150的第二标志位,并响应于标志寄存器150的第二标志位为有效状态,从输出寄存器120中读出数据。
57.在一些实施例中,当输出寄存器120的位宽等于一个缓存单元的位宽且读控制模块130在一个时钟周期内从输出寄存器120中读出的数据的位宽等于一个缓存单元的位宽时,输出寄存器120的非空状态也即满状态,空状态也即非满状态,这种情况下,第一标志位和第二标志位可以为一个标志位(即标志寄存器150中存储这一个标志位即可),当该标志位为有效时,指示了输出寄存器120为满状态且非空状态,该标志位为无效,指示了输出寄存器120为非满状态且空状态。所以,标志寄存器150和读控制模块130都可以通过该标志位,执行对应的操作。对应的,在标志寄存器150,被配置为:在缓存模块110为非空状态时,响应于该标志位为无效(输出寄存器120为非满状态且空状态),向缓存模块110发出第二读信号的情况中,标志寄存器150向缓存模块110发出第二读信号的同时或之后,还可以将该标志位设为有效,以指示读控制模块130在下一时钟周期可以进行数据的读取操作。
58.在一些实施例中,标志寄存器150,还被配置为:响应于缓存模块110为空状态且接收到第一读信号,将标志寄存器150的第一标志位,置为无效。
59.也就是说,当缓存模块110为空状态且接收到第一读信号时,说明输出寄存器120中暂存的数据马上要被读走了,但是由于缓存模块110为空状态,没有新的数据来填补输出寄存器120中新出现的空位,所以,到下一时钟周期,输出寄存器120确定为非满状态,所以
此时需要将标志寄存器150的第一标志位,置为无效。
60.进一步的,在一些实施例中,当输出寄存器120的位宽等于一个缓存单元的位宽且读控制模块130在一个时钟周期内从输出寄存器120中读出的数据的位宽等于一个缓存单元的位宽时,第一标志位和第二标志位可以为一个标志位的情况下,该标志位为无效,也指示了输出寄存器120为空状态,所以将标志寄存器150的该标志位设为无效,还可以指示读控制模块130在下一时钟周期不能进行数据的读取操作。
61.在一些实施例中,标志寄存器150不与输出寄存器120直接连接,标志寄存器150不需要直接从输出寄存器120上得到输出寄存器120的状态(满状态或非满状态,非空状态或空状态),而是根据接收到的第一读信号和发出的第二读信号,确定输出寄存器120的状态。
62.示例性的,当输出寄存器120的位宽等于一个缓存单元的位宽且读控制模块130在一个时钟周期内从输出寄存器120中读出的数据的位宽等于一个缓存单元的位宽时,第一标志位和第二标志位可以为一个标志位的情况下,当某个时钟周期内,接收到第一读信号,但是没有触发第二读信号(如缓存模块110为空状态),则说明输出寄存器120内暂存的一笔数据(一个缓存单元的数据)会在该时钟周期内被读控制模块130读走且没有新数据可以填补存储空位,则说明下一时钟周期,读控制模块130不能读数据,这时标志寄存器150的标志位可以不用等到输出寄存器120的数据被读走之后再进行标志位的置位,而是可以提前将标志位设为无效,提早告知读控制模块130;而,当某个时钟周期内,标志寄存器150触发了第二读信号,则说明无论输出寄存器120当前是否为空状态,在当前时钟周期缓存模块110都可以从当前最先存入数据的缓存单元中将数据输出至输出寄存器120进行暂存,该数据在下一个时钟周期可以被读控制模块130读取,这时标志寄存器150的标志位可以不用等到缓存模块110输出的数据写入输出寄存器120之后再进行标志位的置位,而是可以提前将标志位设为有效,提早告知读控制模块130。在一定程度上,也进一步保证了先进先出存储器100的输出时序。
63.在一些实施例中,标志寄存器150中,第一标志位和第二标志位的置位,也可以通过组合逻辑实现,该组合逻辑以缓存模块110的状态、第一标志位的当前值、第二标志位的当前值、第一读信号和第二信号为判断条件,当满足置位条件时,该组合逻辑实现第一标志位和第二标志位的置位操作。
64.在一些实施例中,标志寄存器150可以与输出寄存器120直接连接,标志寄存器150可以直接从输出寄存器120上得到输出寄存器120的状态(满状态或非满状态,非空状态或空状态),以此来实现标志寄存器150的第一标志位和第二标志位的置位操作。
65.在一些实施例中,标志寄存器150中第一标志位和第二标志位的位宽为1比特,当标志寄存器150的第一标志位(或第二标志位)为有效时,标志寄存器150的第一标志位(或第二标志位)的值为1,当标志寄存器150的第一标志位(或第二标志位)为无效时,标志寄存器150的第一标志位(或第二标志位)的值为0。
66.在一些实施例中,当输出寄存器120的位宽等于一个缓存单元的位宽且读控制模块130在一个时钟周期内从输出寄存器120中读出的数据的位宽等于一个缓存单元的位宽时,第一标志位和第二标志位可以为一个标志位的情况下,标志寄存器150的位宽可以为1比特,即上述标志寄存器150为1-bit标志寄存器150。
67.在一些实施例中,标志寄存器150中第一标志位和第二标志位的位宽可以为2比特
及以上,也是可行的。示例性的,当标志寄存器150的第一标志位(或第二标志位)为有效时,标志寄存器150的第一标志位(或第二标志位)的值可以为11,当标志寄存器150的第一标志位(或第二标志位)为无效时,标志寄存器150的第一标志位(或第二标志位)的值可以为00。
68.在一些实施例中,在缓存模块110需要从对应的缓存单元中读出数据并输出时,缓存模块110还被配置为:响应于接收到第二读信号且缓存模块110为非空状态,根据读指针的当前值,从读指针的当前值指向的缓存单元中将数据输出;响应于从读指针的当前值指向的缓存单元中将数据输出,且读指针的当前值小于读指针的最大值,将读指针的值加1;响应于从读指针的当前值指向的缓存单元中将数据输出,且读指针的当前值等于读指针的最大值,将读指针的值重置为读指针的最小值。
69.示例性的,在图1所示的缓存模块110中,包括n个缓存单元,分别为缓存单元0、缓存单元1、缓存单元2、

、缓存单元n-2、缓存单元n-1。对应的,当读指针的值为0(最小值)时,读指针指向缓存单元0;当读指针的值为1时,读指针指向缓存单元1,以此类推,当读指针的值为n-1(最大值)时,读指针指向缓存单元n-1。每次从一个缓存单元中输出数据后,读指针的值都加1,但是当读指针的值为n-1时,本次输出数据后读指针的值重置为0。
70.在一些实施例中,上述先进先出存储器100还包括写控制模块140,与缓存模块110的输入端连接,被配置为响应于接收到写信号(push)且缓存模块110为非满状态,根据缓存模块110的写指针的当前值,向写指针的当前值指向的缓存单元内写入数据。
71.对应的,缓存模块110,还被配置为:响应于写指针的当前值指向的缓存单元被写入数据且写指针的当前值小于写指针的最大值,将写指针的值加1;响应于写指针的当前值指向的缓存单元被写入数据且写指针的当前值等于写指针的最大值,将写指针的值重置为写指针的最小值。
72.示例性的,在图1所示的缓存模块110中,包括n个缓存单元,分别为缓存单元0、缓存单元1、缓存单元2、

、缓存单元n-2、缓存单元n-1。对应的,当写指针的值为0(最小值)时,写指针指向缓存单元0;当写指针的值为1时,写指针指向缓存单元1,以此类推,当写指针的值为n-1(最大值)时,写指针指向缓存单元n-1。每次向一个缓存单元中写入数据后,写指针的值都加1,但是当写指针的值为n-1时,本次写入数据后写指针的值重置为0。
73.在一些实施例中,为了保证缓存模块110不溢出,如图2所示,缓存模块110还包括满寄存器(full寄存器),用于存储缓存模块110的满状态信号(full信号),满状态信号(full信号)由读指针和写指针经过一定的组合逻辑后写入满寄存器,供写控制模块140使用。
74.为了判断缓存模块110是否为满状态,读指针和写指针的组合逻辑可以为:响应于写指针的值发生变化(即每次向缓存模块110写入数据之后),判断写指针的当前值是否等于读指针的当前值;响应于写指针的当前值等于读指针的当前值,且未接收到第二读信号,将缓存模块110置为满状态。
75.在一些实施例中,为了保证缓存模块110不空读,缓存模块110还包括空寄存器
(empty寄存器)(图中未示出),用于存储缓存模块110的空状态信号(empty信号),空状态信号(empty信号)也可以由读指针和写指针经过一定的组合逻辑后写入空寄存器。对应的,其它模块(如标志寄存器150)可以与空寄存器连接,以获取缓存模块110是非空状态还是空状态。
76.为了判断缓存模块110是否为空状态,读指针和写指针的组合逻辑可以为:响应于读指针的值发生变化(每次缓存模块110输出数据之后),判断读指针的当前值是否等于写指针的当前值;响应于读指针的当前值等于写指针的当前值,且未接收到写信号(push),将缓存模块110置为空状态。
77.在一些实施例中,缓存模块110还包括多路选择单元mux,其输入端与各个缓存单元的连接,其输出端为缓存模块110的输出端,其被配置为根据读指针的当前值,选择对应的数据输出路径。
78.基于相同的发明构思,本公开实施例还提供一种图形处理器,包括上述任一实施例的先进先出存储器。
79.基于相同的发明构思,本公开实施例还提供一种图形处理系统(graphics processing unit,gpu),包括上述任一实施例的图形处理器。
80.在一些使用场景下,该图形处理系统的产品形式体现为显卡或cpu主板。
81.示例性的,在gpu管线中,需要计算多个数的和。例如,需要计算32个数字的和,每个数字是8 bit数。
82.可以把32个数据定义为一个数组:input_array[32]。
[0083]
需要进行的计算为:sum = input_array[0] input_array[1]

input[31]。
[0084]
上述计算可以通过如图3所示的硬件来实现。32个8-bit数产生出来后,顺序写入fifo,从fifo输出后直接送入一个8位加法器,累加得到最终的结果。
[0085]
在图3所示的实现方式中,fifo的输出只用作一个加法器的组合逻辑输入,一个时钟周期计算2个数的和,因此满足该输出信号的时序并不困难。而且还可以得到加法的中间结果,因为数据是按顺序进入加法器的。
[0086]
也即在图3所示的实现方式中,fifo使用常规的组合逻辑fifo,也能满足需求。
[0087]
但是当需要把产品的性能提高4倍,实现完全同样的功能,则需要在一个时钟周期计算4个数的和,该计算过程可以通过如图4所示的硬件来实现。
[0088]
32个数据分别输入到4个fifo中。在fifo后面的一个时钟周期里,有4个加法器,顺序计算4个数的和。4个加法器不能变为并行计算,因为这样会丢失加法的中间结果。在这种结构中,因为1个时钟周期(如t0~t1)内有串行的4个加法器,而且4个加法器都是组合逻辑,4个加法器从上到下进行顺序运算,所以对第1个fifo的输出速度要求很高,高频率的读取信号下,第1个fifo如果用常规的组合逻辑fifo,输出时序会比较差,很有可能无法满足时序要求。如果用移位逻辑fifo又会有很大的功耗。在这种情况下,在图4中的硬件结构的fifo(至少第1个fifo)使用上述任一实施例中的先进先出存储器,就可以得到好的时序,并且可以很好的控制功耗。
[0089]
基于相同的发明构思,本公开实施例还提供一种电子装置,该电子装置包括上述任一实施例中的图形处理系统。
[0090]
基于相同的发明构思,本公开实施例还提供一种电子设备,该电子设备包括上述的电子装置。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、vr设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
[0091]
基于相同的发明构思,本公开实施例还提供一种数据读取方法,包括:从输出寄存器中读出数据;其中,输出寄存器中的数据来自于先进先出缓存设备,先进先出缓存设备包括多个位宽相同的缓存单元,输出寄存器的位宽不小于一个缓存单元的位宽。
[0092]
在一些实施例中,上述数据读取方法中,在一个时钟周期内,从输出寄存器中读出的数据的位宽不大于一个缓存单元的位宽。
[0093]
在一些实施例中,上述数据读取方法中,从输出寄存器中读出数据,包括以下步骤:发出第一读信号,并判断输出寄存器的状态;响应于输出寄存器为非空状态,从输出寄存器中读出数据。
[0094]
在一些实施例中,上述数据读取方法中,输出寄存器在其为非满状态且先进先出缓存设备为非空状态时,暂存先进先出缓存设备中当前最先存入数据的缓存单元中的数据;或,输出寄存器在其为满状态且先进先出缓存设备为非空状态以及第一读信号发出时,暂存先进先出缓存设备中当前最先存入数据的缓存单元中的数据。
[0095]
在一些实施例中,上述数据读取方法中,输出寄存器为非满状态或满状态通过标志寄存器的标志位来指示,标志位为无效或有效分别指示当前输出寄存器为非满状态或满状态;且第一读信号通过标志寄存器来响应;其中,标志寄存器在标志位为无效且先进先出缓存设备为非空状态时,向先进先出缓存设备发出第二读信号,以使得先进先出缓存设备从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存;或,标志寄存器在标志位为有效且接收到第一读信号,以及先进先出缓存设备为非空状态时,向先进先出缓存设备发出第二读信号,以使得先进先出缓存设备从当前最先存入数据的缓存单元中将数据输出至输出寄存器进行暂存。
[0096]
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
[0097]
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献