专利名称:先进先出缓冲单元及先进先出缓冲方法
技术领域:
本发明是有关于一种先进先出缓冲单元,特别是有关于一种高速的先进先出缓冲单元(First In First Out,FIFO)。
背景技术:
图1所示为一现有技术中具有四输入四输出的先进先出缓冲单元(FirstIn First Out,FIFO)。四输入四输出的先进先出缓冲单元100可应用于中央处理器(Central Processing Unit,CPU)和北桥(North Bridge)之间进行传输数据。四输入四输出先进先出缓冲单元100具有四路多工器(Mux)111、112、113、114、141、142、143和144,先进先出暂存器121、122、123和124以及十六路多工器131、132、133和134,其中先进先出暂存器121、122、123和124均为可储存16组32位数据的暂存器。
输入数据Data0、Data1、Data2和Data3通过四路多工器111、112、113和114存入先进先出暂存器121、122、123和124的对应位置。十六路多工器131、132、133和134接收来自先进先出暂存器121、122、123和124的暂存数据并输出至四路多工器141、142、143和144。
从图1可以看出,由于四路多工器111、112、113和114必须驱动具有储存16组32位的先进先出暂存器121、122、123和124的驱动能力,因此四路多工器111、112、113和114需要较大驱动器,从而增加四路多工器111、112、113和114电路复杂度和传输门的数目,并且由于传输门的数目较多,数据传输也比较慢。
发明内容
本发明的目的在于提供一种高速的先进先出缓冲单元及其相关的先进先出暂存方法。
本发明提供一种先进先出缓冲单元,包括第一子暂存单元。第一子暂存单元包括第一层暂存器,由输入端接收第一输入数据;第二层暂存器,接收来自上述第一层暂存器的数据;以及第三层暂存器,选择接收来自上述输入端的上述第一输入数据、来自上述第一层暂存器的数据或上述第二层暂存器的数据以输出第一输出数据。
本发明又提供一种先进先出暂存方法,包括判断第一子暂存单元的第一层暂存器、第二层暂存器和第三层暂存器的数据储存状态;当上述第一层暂存器、上述第二层暂存器和上述第三层暂存器是空暂存器时,储存第一输入数据至上述第三层暂存器;以及当上述第三暂存器储满数据且上述第一层暂存器是空暂存器时,储存上述第一输入数据至上述第一层暂存器。
本发明先进先出暂存单元的子暂存单元接收的数据被直接存入第一层暂存器或第三层暂存器,因此先进先出暂存单元的输入多工器并不需要强大的驱动器,从而可以减少输入多工器的复杂度和传输门的数目。由于传输门的数目较少,本发明先进先出暂存单元具有相对较小的面积和较高的数据传输速度。
通过下面结合示例性地示出一例的附图进行的描述,本发明的上述和其他目的和特点将会变得更加清楚,其中图1为现有技术的四输入四输出的先进先出缓冲单元的示意图;图2为根据本发明一实施例的先进先出缓冲单元的示意图;图3为图2所示一子暂存单元的示意图;图4为根据本发明一实施例的先进先出暂存方法的流程图;图5为根据本发明另一实施例的先进先出暂存方法的流程图;以及图6为根据本发明另一实施例的先进先出暂存方法的流程图。
具体实施例方式
为让本发明的上述和其它目的、特征、和优点能更明显易懂,下文特举出较佳实施例,并配合所附图式,作详细说明如下如图2所示,本发明一实施例的先进先出缓冲单元(First In First Out,FIFO)200包括控制单元210、输入多工器(Mux)261、262、263、264、输出多工器271、272、273、274、以及子暂存单元220、230、240和250。各子暂存单元220、230、240和250分别包括第一层暂存器221、231、241和251、第二层暂存器222、232、242和252和第三层暂存器223、233、243和253。第一、第二及第三层暂存器也可分别称作L1暂存器L2暂存器以及L3暂存器。另外,输入多工器(Mux)261、262、263和264的输出端分别耦接于第一层暂存器221231、241和251的输入端。
在本发明一实施例中,Data0、Data1、Data2和Data3各代表一个32位的数据,即双字(Double Word,DW)。在本发明一实施例中,第一层暂存器221、231、241、251的大小等于子暂存单元220、230、240、250在一个传输周期(cycle)接收的输入数据的宽度,即1DW。第三层暂存器223、233、243、253的大小等于子暂存单元220、230、240、250在一个传输周期输出数据的宽度,亦为1DW。第二层暂存器222、232、242和252的大小为14DW。
如本领域技术人员所知,控制单元210可根据暂存值Psh、Pop和PopLen产生控制信号2100以控制子暂存单元220、230、240和250、输入控制信号2102及输出控制信号2104。根据本发明一实施例,当暂存值Psh为4’b0000时,控制单元210通过输入控制信号2102使输入多工器261、262、263和264不传送任何数据,当暂存值Psh为4’b0001时,控制单元210使输入多工器261、262、263和264传送数据Data0;当暂存值Psh为4’b0011时,控制单元210使输入多工器261、262、263和264传送数据Data0和Data1;当暂存值Psh为4’b0111时,控制单元210使输入多工器261、262、263和264传送数据Data0、Data1和Data2;当暂存值Psh为4’b1111时,控制单元210使输入多工器261、262、263和264传送数据Data0、Data1、Data2和Data3。子暂存单元220、230、240和250则会根据暂存值Psh将数据储存于第一层暂存器221、231、241和251或第三层暂存器223、233、243和253。
第三层暂存器223、233、243和253会根据暂存值Pop和暂存值PopLen输出数据。根据本发明一实施例,当暂存值Pop为1以及暂存值PopLen为2’b00时,控制单元210通过输出控制信号2104使输出多工器271输出数据DataOut〔31:0〕,当暂存值Pop为1以及暂存值PopLen为2’b01时,输出多工器271和272会分别输出数据DataOut〔31:0〕和DataOut〔63:32〕,当暂存值Pop为1以及暂存值PopLen为2’b10时,输出多工器271、272和273会分别输出数据DataOut〔31:0〕、DataOut〔63:32〕和DataOut〔95:64〕,当暂存值Pop为1以及暂存值PopLen为2’b11时,输出多工器271、272、273和274会分别输出数据DataOut〔31:0〕、DataOut〔63:32〕和、DataOut〔95:64〕、DataOut〔127:96〕。因此本发明一实施例中的先进先出缓冲单元200最少输出一双字数据,最多可以一次输出4双字数据。
在本发明一实施例中,子暂存单元220~250具有相同的细部结构图,因而仅以子暂存单元220为例说明子暂存单元的细部结构图。
如图3所示,子暂存单元220包括若干耦接在第二层暂存器222与第三层暂存器223之间的第一多工器2220、2222、2224、以及控制逻辑单元224。控制逻辑单元224通过接收到的控制信号2100获得第一、第二及第三层暂存器221、222和223的数据存取状态。控制逻辑单元224对获得的数据存取信息进行适当的逻辑运算,从而产生若干用来控制第一、第二及第三层暂存器221、222、223进行数据存取的信号第一存储信号PSH1、第二存储信号PSH2、第三存储信号PSH3、选择信号SEL、写入指针WP、输出指针RP以及忽略信号Bypass。具体来说,第一层暂存器221根据第一存储信号PSH1决定是否存储子暂存单元220接收的数据DATAIN。第二层暂存器222根据第二存储信号PSH2决定是否接收第一层暂存器221送出的数据,并将接收的数据存入写入指针WP所指向的位置。本实施例中,第二层暂存器222可存储14双字的数据,因而耦接在第二层暂存器222输出端的第一多工器2220为14路多工器。第一多工器2220接收第二暂存器222输出的数据,并依据输出指针RP选择输出一个数据。第二多工器2222具有两个输入端,分别接收14路第一多工器2220输出的数据以及第一层暂存器221输出的数据,当忽略信号Bypass致能时,第二多工器2222将第一层暂存器221送出的数据输出。第三多工器2224接收数据DataIn及由第二多工器2222输出的数据,并依据选择信号SEL选择送出其中之一给第三层暂存器223。例如,当选择信号SEL致能时,第三多工器224将数据DataIn输出至第三层暂存器223,反之,将第二多工器2222送出的数据输出至第三层暂存器223。本实施例中,只有当第三层暂存器223为空暂存器且有数据需要存入第三层暂存器223时,第三存储信号PSH3才会被致能。当第三存储信号PSH3致能时,第三层暂存器223接收并储存第三多工器2224输出的数据。由以上描述可知,子暂存单元220接收到的数据DataIn可以直接存入第一层暂存器221,或者经过第三多工器2224存入第三层暂存器223。另一方面,第二层暂存器222可以接收第一层暂存器221送出的数据,且第二暂存器222存储的数据可以经过多工器2220、2222、2224存入第三层暂存器223。
以下将结合图3至图6,以子暂存单元220为例说明子暂存单元如何处理所接收到的数据DataIn,即Data0、Data1、Data2或Data3,以及第一、二、三层暂存器如何依据控制逻辑单元224产生的信号进行数据传送。
图4为根据本发明另一实施例的先进先出暂存方法的流程图。根据本发明一实施例,请同时参照图3的子暂存单元220,当暂存值Psh为1时,子暂存单元220接收数据(步骤S310),控制逻辑单元224判断第三层暂存器223是否储满数据(步骤S320)。若第三层暂存器223储满数据,则接着判断第一层暂存器221是否为空暂存器(步骤S330),若是,致能第一存储信号PSH1使子暂存单元220将数据存入第一层暂存器221(步骤S360)。若第一层暂存器221和第三层暂存器223均储满数据,结束本次操作。若第三层暂存器223还具有空间或为空暂存器,控制逻辑单元224判断第一层暂存器221、第二层暂存器222和第三层暂存器223是否均为空暂存器(步骤S340)。若第一层暂存器221、第二层暂存器222和第三层暂存器223为空暂存器,则致能选择信号SEL与第三存储信号PSH3,使数据DataIn经过第三多工器2224存入第三层暂存器223(步骤S350)。在步骤S360将数据存入第一层暂存器221后,控制逻辑单元224判断第二层暂存器222是否还有空间(步骤S370)。若第二层暂存器222还有储存空间,致能第二存储信号PSH2,使第二层暂存器222接收并存储第一层暂存器221送出的数据(步骤S380)。
图5所示为根据本发明另一实施例的先进先出暂存方法的流程图。根据本发明一实施例,请同时参照图3的子暂存单元220,当暂存值Pop为1时,子暂存单元220的控制逻辑单元224使第三层暂存器223输出数据(步骤S410)。接着,控制逻辑单元224判断第一层暂存器221是否储满数据(步骤S420),若第一层暂存器221储满数据,则判断第二层暂存器222是否为空暂存器(步骤S430)。若第一层暂存器221储满数据且第二层暂存器222为空暂存器,则控制逻辑单元224致能忽略信号Bypass以及第三存储信号PSH3,关闭选择信号SEL,使第一层暂存器221送出的数据略过第二暂存器222直接输出至第三层暂存器223(步骤S440)。若第一层暂存器221储满数据且第二层暂存器223不为空暂存器,则致能第二存储信号PSH2和第三存储信号PSH3,关闭忽略信号Bypass与选择信号SEL,使第三层暂存器223接收第二层暂存器222送出的数据,使第二层暂存器222接收第一层暂存器221输出的数据(步骤S450)。若第一层暂存器221未储满数据,即第一暂存器221为空暂存器(步骤S420),且第二层暂存器222不为空暂存器(步骤S460),则关闭忽略信号Bypass和选择信号SEL,并致能第三存储信号PSH3,以将第二层暂存器222的数据输出至第三层暂存器223(步骤S470)。
图6所示为根据本发明另一实施例的先进先出暂存方法的流程图。根据本发明一实施例,请同时参照图3的子暂存单元220,当暂存值Pop和Psh同时为1时,控制逻辑单元224通过判断第一层暂存器221与第二层暂存器222的数据存储状态决定第一、第二、第三层暂存器221、222和223之间的数据传输状况。若第一层暂存器221不为空暂存器(步骤S510),第二层暂存器222不为空暂存器(步骤S520),则控制逻辑单元224在控制第三层暂存器223将数据输出的同时关闭忽略信号Bypass和选择信号SEL,并致能第三存储信号PSH3,以将第二层暂存器222的数据存入第三层暂存器223;致能第二存储信号PSH2以将第一层暂存器221的数据存入至第二层暂存器222;以及致能第一存储信号PSH1以将新数据输入被腾空的第一层暂存器221(步骤S530)。若第一层暂存器221为空暂存器(步骤S510)且第二层暂存器222为空暂存器(步骤S540),则控制逻辑单元224将第三层暂存器223的数据输出,并致能选择信号SEL及第三存储信号PSH3,以将新数据输入第三层暂存器223(步骤S560)。若第一层暂存器221为空暂存器且第二层暂存器222不为空暂存器(步骤S540),则将第三层暂存器223的数据输出,关闭选择信号SEL与忽略信号Bypass,致能第三存储信号PSH3以使第二层暂存器222的数据输出至第三层暂存器223,以及致能第一存储信号PSH1以将新数据输入第一层暂存器221(步骤S550)。若第一层暂存器221不为空暂存器(步骤S510)且第二层暂存器222为空暂存器(步骤S520),将第三层暂存器223的数据输出,致能忽略信号Bypass和第三存储信号PSH3,关闭选择信号SEL以使第一层暂存器221的数据直接输出至第三层暂存器223,以及致能第一存储信号PSH1以将新数据输入第一层暂存器221(步骤S570)。
采用上述先进先出暂存方法的先进先出缓冲单元200,其输入多工器261、262、263和264只需要分别推动第一层暂存器221、231、241和251和第三层暂存器223、233、243和253(也就是说数据只能直接存入第一层暂存器221、231、241和251和第三层暂存器223、233、243和253),因此输入多工器261、262、263和264并不需要强大驱动器,因而减少输入多工器261、262、263和264的复杂度和传输门的数目。由于传输门的数目较少,因而输入多工器261、262、263和264所需布局面积减少并且同时增加数据传输速度。关于数据输出,由于只需要直接从第三层暂存器223、233、243和253读取数据,因此输出数据的速度也比较快。
本发明虽以优选实施例披露如上,然其并非用以限定本发明的范围,本领域技术人员在不脱离本发明的精神和范围的前提下,可做各种的更动与润饰,因此本发明的保护范围以本发明的权利要求为准。
权利要求
1.一种先进先出缓冲单元,包括第一子暂存单元,包括第一层暂存器,由输入端接收第一输入数据;第二层暂存器,接收来自上述第一层暂存器的数据;以及第三层暂存器,选择接收来自上述输入端的第一输入数据、来自上述第一层暂存器的数据或上述第二层暂存器的数据以输出第一输出数据。
2.如权利要求1所述的先进先出缓冲单元,其特征在于当上述第一层暂存器、上述第二层暂存器和上述第三层暂存器是空暂存器时,上述第一输入数据存入上述第三层暂存器。
3.如权利要求1所述的先进先出缓冲单元,其特征在于当上述第一层暂存器是空暂存器而上述第三暂存器储满数据时,上述第一输入数据存入上述第一层暂存器。
4.如权利要求1所述的先进先出缓冲单元,其特征在于当上述第二层暂存器还具有储存空间以及上述第一层暂存器和上述第三暂存器皆存满数据时,上述第一层暂存器输出的数据存入上述第二层暂存器。
5.如权利要求1所述的先进先出缓冲单元,其特征在于当上述第三层暂存器输出上述第一输出数据,上述第一层暂存器存满数据且上述第二暂存器不为空暂存器时,上述第三层暂存器接收上述第二层暂存器输出的数据,上述第二层暂存器接收上述第一层暂存器输出的数据。
6.如权利要求1所述的先进先出缓冲单元,其特征在于当上述第三层暂存器输出上述第一输出数据,上述第一层暂存器为空暂存器而上述第二暂存器不为空暂存器时,上述第三层暂存器接收上述第二层暂存器输出的数据。
7.如权利要求1所述的先进先出缓冲单元,其特征在于当上述第三层暂存器输出上述第一输出数据,上述第一层暂存器储满数据而上述第二暂存器为空暂存器时,上述第一层暂存器输出的数据直接传输至上述第三层暂存器。
8.如权利要求1所述的先进先出缓冲单元,其特征在于上述第一子暂存单元还包括控制逻辑单元,根据控制信号判断上述第一层暂存器、第二层暂存器和第三层暂存器的数据存储状态,上述控制逻辑单元依据上述控制信号产生第一存储信号,控制上述第一层暂存器是否接收上述第一输入数据;第二存储信号,控制上述第二层暂存器是否接收上述第一层暂存器输出的数据;以及第三存储信号,控制上述第三层暂存器接收上述第一输入数据、来自上述第一层暂存器的数据或上述第二暂存器的数据。
9.一种先进先出暂存方法,包括判断第一子暂存单元的第一层暂存器、第二层暂存器和第三层暂存器的数据储存状态;当上述第一层暂存器、上述第二层暂存器和上述第三层暂存器是空暂存器时,储存第一输入数据至上述第三层暂存器;以及当上述第三暂存器储满数据且上述第一层暂存器是空暂存器时,储存上述第一输入数据至上述第一层暂存器。
10.如权利要求9所述的先进先出暂存方法,其特征在于当上述第二层暂存器还具有储存空间以及上述第一层暂存器和上述第三暂存器皆存满数据时,存储上述第一层暂存器输出的数据于上述第二层暂存器。
11.如权利要求9所述的先进先出暂存方法,还包括直接输出存于上述第三层暂存器的数据。
12.如权利要求9所述的先进先出暂存方法,还包括当上述第三层暂存器输出数据,而上述第一层暂存器存满数据且上述第二暂存器不为空暂存器时,存储上述第二层暂存器输出的数据于上述第三层暂存器,存储上述第一层暂存器输出的数据于上述第二层暂存器。
13.如权利要求9所述的先进先出暂存方法,还包括当上述第三层暂存器输出数据,而上述第一层暂存器为空暂存器且上述第二暂存器不为空暂存器时,存储上述第二层暂存器输出的数据于上述第三层暂存器。
14.如权利要求9所述的先进先出暂存方法,还包括当上述第三层暂存器输出数据,而上述第一层暂存器储满数据且上述第二层暂存器为空暂存器时,存储上述第一层暂存器输出的数据于上述第三层暂存器。
15.如权利要求9所述的先进先出暂存方法,其特征在于上述第二层暂存器接收来自上述第一层暂存器的数据,上述第三层暂存器接收来自上述第二层暂存器的数据或上述第一层暂存器的数据。
全文摘要
本发明提供一种先进先出缓冲单元,包括第一子暂存单元。第一子暂存单元包括第一层暂存器,由输入端接收第一输入数据;第二层暂存器,接收来自上述第一层暂存器的数据;以及第三层暂存器,选择接收来自上述输入端的上述第一输入数据、来自上述第一层暂存器的数据或上述第二层暂存器的数据以输出第一输出数据。本发明先进先出暂存单元的子暂存单元接收的数据被直接存入第一层暂存器或第三层暂存器,因此先进先出暂存单元的输入多工器并不需要强大的驱动器,进而使得本发明先进先出暂存单元具有相对较小的面积和较高的数据传输速度。
文档编号G06F5/06GK101042637SQ20071009675
公开日2007年9月26日 申请日期2007年4月6日 优先权日2007年4月6日
发明者张广宇 申请人:威盛电子股份有限公司