CN105528310B - 用于高速串行总线的弹性缓冲器和弹性缓冲的方法 - Google Patents
用于高速串行总线的弹性缓冲器和弹性缓冲的方法 Download PDFInfo
- Publication number
- CN105528310B CN105528310B CN201510885487.0A CN201510885487A CN105528310B CN 105528310 B CN105528310 B CN 105528310B CN 201510885487 A CN201510885487 A CN 201510885487A CN 105528310 B CN105528310 B CN 105528310B
- Authority
- CN
- China
- Prior art keywords
- data
- idle
- elastic buffer
- reference value
- repetition
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
提供一种用于高速串行总线的弹性缓冲器和弹性缓冲的方法。该弹性缓冲器,包括:输入接口,用于接收来自第一时钟域的数据;控制器,用于对接收数据中的空闲数据单元进行识别,并对识别到的空闲数据单元的重复次数进行计数,当该重复次数达到参考值时,从接收数据中丢弃至少一个重复的空闲数据单元;存储器,用于存储经过处理的接收数据;以及输出接口,用于向第二时钟域输出存储在该存储器中的经过处理的接收数据。
Description
技术领域
本发明涉及高速串行总线传输技术,更具体地,涉及用于高速串行总线的弹性缓冲器和弹性缓冲的方法。
背景技术
随着数字设备在各种领域的广泛应用,需要更大的数据存储量和更高的带宽,已经开发了诸如串行高级技术附件(SATA)、***组件快速互连(PCIe)、以及超高速I(UHS-I)和超高速II(UHS-II)的高速串行总线技术。以UHS-II为例,通过两个通路(lane)可以在主机与存储卡之间实现高达156MB/s(全双工)或312MB/s(半双工)的传输速率。
在物理层传输中,主机与存储卡之间的接口两侧处于不同的时钟域。处于不同的时钟域的发送和接收双方的时钟源之间通常有相位差,甚至频率上也有细微的差别。当为了减少电磁干扰而使用扩频时钟(SSC)技术时,时钟源之间的上述差异可能更严重。
为此,通常采用弹性缓冲器来解决上述问题。即,将来自第一时钟域的接收数据推送(push)到弹性缓冲器中,并弹出(pop)到第二时钟域。然而,如果第二时钟域的时钟频率长时间低于第一时钟域的时钟频率,则弹性缓冲器可能满溢,使得无法进一步接收数据。目前,UHS-II并未规定如何解决缓冲器满溢问题。通常,需要设计额外的硬件配置来应对缓冲器满溢。此外,当在半双工模式下同时使用两个通路传输数据时,还会产生另外的问题,即,不同通路的时钟源之间也存在差异,导致各个通路的弹性缓冲器中的水位线(water mark)不同,这称为数据歪斜(data skew)。数据歪斜会对各通路的数据的合并造成困难。因而,进一步需要诸如缓冲器的额外的硬件配置用于消除通路之间的数据歪斜。上述额外的硬件配置提高了设计复杂度,同时使得制造成本更为高昂。
发明内容
因此,为了解决上述问题,本发明提供能够防止缓冲器满溢和数据歪斜的用于高速串行总线的接收器和接收数据的方法。
根据本发明的一个实施例,提供一种用于高速串行总线的弹性缓冲器,包括:输入接口,用于接收来自第一时钟域的数据;控制器,用于对接收数据中的空闲数据单元进行识别,并对识别到的空闲数据单元的重复次数进行计数,当该重复次数达到参考值时,从接收数据中丢弃至少一个重复的空闲数据单元;存储器,用于存储经过处理的接收数据;以及输出接口,用于向第二时钟域输出存储在该存储器中的经过处理的接收数据。
根据实施例,所述高速串行总线可以为超高速II(UHS-II)总线,所述空闲数据单元包括以下链路符号集(LSS)中的至少一种:同步(SYN)、逻辑空闲(LIDL)、数据传输逻辑空闲(DIDL)、和方向切换(DIR)。
根据实施例,该弹性缓冲器可以进一步包括寄存器,用于设置所述参考值。
根据实施例,所述参考值可以是根据空闲数据单元的持续时间确定的。
根据实施例,所述参考值可以为16至256。
根据实施例,该存储器可以为先进先出存储器。
根据实施例,该输入接口可以根据从该接收数据中恢复的第一时钟接收该接收数据,该输出接口可以根据第二时钟输出存储在该存储器中的经过处理的该接收数据,其中所述参考值可以是根据所述第一时钟和所述第二时钟的差异决定的。
根据本发明的另一实施例,提供一种用于高速串行总线的弹性缓冲的方法,包括:接收来自第一时钟域的数据;对接收数据中的空闲数据单元进行识别,并对识别到的所述空闲数据单元的重复次数进行计数,当该重复次数达到参考值时,从接收数据中丢弃至少一个重复的空闲数据单元;存储经过处理的接收数据;以及向第二时钟域输出已存储的经过处理的接收数据。
根据实施例,所述高速串行总线可以为超高速II(UHS-II)总线,所述空闲数据单元包括以下链路符号集(LSS)中的至少一种:同步(SYN)、逻辑空闲(LIDL)、数据传输逻辑空闲(DIDL)、和方向切换(DIR)。
根据实施例,该方法可以进一步包括:设置所述参考值。
根据实施例,所述参考值可以是根据空闲数据单元的持续时间确定的。
根据实施例,所述参考值可以为16至256。
根据实施例,可以在先进先出存储器中存储经过处理的接收数据。
根据实施例,可以根据从该接收数据中恢复的第一时钟接收该接收数据,且可以根据第二时钟输出已存储的经过处理的该接收数据,其中所述参考值可以是根据所述第一时钟和所述第二时钟的差异决定的。
根据本发明的实施例,在跨时钟域接收数据时,通过对特定类型的控制数据单元(例如,空闲数据单元)的重复次数进行计数并丢弃至少一个重复的控制数据单元,可以有效地控制缓冲器中的水位线以防止缓冲器满溢而无需增加硬件设计复杂度。此外,在通过多个通路接收数据的情况下,可以进一步解决不同通路之间由于时钟频率差异而发生数据歪斜的问题。
附图说明
图1是示出根据本发明的实施例的用于高速串行总线的接收器100的框图;
图2是示出根据本发明的实施例的用于高速串行总线的接收数据的方法的流程图;
图3是示出根据本发明的实施例的用于高速串行总线的弹性缓冲器300的框图;以及
图4是示出根据本发明的实施例的用于高速串行总线的弹性缓冲的方法的流程图。
具体实施方式
下面参照附图详细描述根据本发明的示范性实施例。附图中,将相同或类似的附图标记赋予结构以及功能基本相同的组成部分,并且为了使说明书更加简明,省略了关于基本上相同的组成部分的冗余描述。
下文中,将以超高速II(UHS-II)作为高速串行总线的示例来描述本发明的实施例。然而,本发明不限于此。本发明的方案也可以应用于在不同时钟域之间使用弹性缓冲器的其他高速串行总线(例如SATA或PCIe总线)技术。
图1是示出根据本发明的实施例的用于高速串行总线的接收器100的框图。
参照图1,接收器100可以包括解码器101、计数器102、控制器103、和缓冲器104。在一实施例中,接收器100可以设置于主机或存储卡的物理层中。接收器100从第一时钟域接收数据,并输出经过处理的的接收数据到第二时钟域。例如,接收器100的一侧经由时钟数据恢复(CDR)从自发送器(图未绘示)接收的数据中产生恢复时钟源,并根据所产生的恢复时钟源将接收数据推送(push)到接收器100中,接收器的100另一侧弹出(pop)经过处理的接收数据到第二时钟域,第二时钟域例如为主机或存储卡本地的时钟源。
解码器101可以确定接收的数据中的控制数据单元的类型。例如,在UHS-II中,控制数据单元可以是链路符号集(LLS),包括:同步(SYN)、自举同步(BSYN)、方向切换(DIR)、逻辑空闲(LIDL)、数据传输逻辑空闲(DIDL)、数据突发开始(SDB)、数据突发结束(EDB)、分组开始(SOP)、分组结束(EOP)等。每个LLS具有各自的信号样式,解码器101通过LLS的信号样式来确定其类型。例如,LIDL可以包括两个符号,第一个符号是逗号(COM)(K28.5),第二个符号可以是从LIDL0(K28.3)和LIDL1(D16.7)中随机选择的符号。UHS-II物理层规范4.0中详细规定了各种LLS的信号样式和作用,这里不再赘述。
计数器102可以对特定类型的控制数据单元的重复次数进行计数。根据本发明的实施例,当控制数据单元的类型被解码器101确定为属于空闲数据单元时,控制器103可以控制计数器102对类型被确定为属于空闲数据单元的控制数据单元的重复次数进行计数。在UHS-II中,空闲数据单元可以是以下LLS中的至少一个或全部:SYN、DIR、LIDL、和DIDL。然而,这仅仅是示例,本发明不限于此。此外,根据实施例,也可以对除了空闲数据单元之外的其他控制数据单元的重复次数进行计数。
当该重复次数达到参考值时,控制器103可以从接收数据中丢弃至少一个重复的前述特定类型的控制数据单元,并将经过处理的接收数据存储在缓冲器104中,以便向第二时钟域提供。根据实施例,缓冲器104可以是弹性缓冲器。由于仅输入数据中特定类型控制数据单元的很小一部分被丢弃,可以有效地控制缓冲器104的水位线,以便预防缓冲器104的满溢。为了避免影响传输信令,可以只丢弃空闲数据单元。
在UHS-II中,作为空闲数据单元的诸如SYN、DIR、LIDL、和DIDL的LLS通常被大量重复发送,因此适当地丢弃重复的LLS不会造成后续对接收数据的译码错误。本发明根据参考值控制丢弃重复LLS的频率,使得弹性缓冲器的水位线既不会太高以至于接近满溢,也不会太低以至于接近变空。为此,根据实施例,接收器100可以进一步包括寄存器(未示出),用于设置所述参考值,用于特定类型的空闲数据单元。在一实施例中,参考值是由空闲数据单元的持续时间决定的,特别地,是由空闲数据单元中持续时间最短的空闲数据单元的持续时间决定的。例如,DIR的持续时间最短,为N_LSS_DIR*8(例如,N_LSS_DIR可以等于8),可以将参考值设定为16,即每当接收到16个重复的空闲数据单元(包括SYN、DIR、LIDL、和DIDL的全部或部分类型)时,丢弃一个持续时间最短的DIR便足以将缓冲器104的水位线维持在较低水平而不会满溢,并且不会影响后续对接收数据的译码,那么则丢弃一个任意类型的空闲数据单元便一定都足以将缓冲器104的水位线降低到较低水平且不会造成译码错误。另一方面,参考值还由第一时钟域与第二时钟域的时钟源差异(包括相位差异和/或频率差异)决定,时钟源的差异越大,所述参考值越小,但通常时钟源差异的影响较小。在其他实施例中,甚至可以将所述参考值设定为高达256,即,每256个重复的空闲数据单元才丢弃一个,仍足以迅速将水位线降低到较低的水平,且不会造成译码错误。
根据实施例,接收器100可以包括多个数据通路,此时,每个数据通路可以包括单独的计数器102和缓冲器104。在半双工模式下,可以在每个缓冲器104中分别丢弃空闲数据单元来消除数据歪斜,使得各个通路的缓冲器104的水位线平齐,以便于数据的合并。
图2是示出根据本发明的实施例的用于高速串行总线的接收数据的方法的流程图。
参照图2,在步骤S201,可以确定接收数据中的控制数据单元的类型。如上所述,在UHS-II中,控制数据单元可以是LLS,包括:SYN、BSYN、DIR、LIDL、DIDL、SDB、EDB、SOP、EOP等。可以通过LLS的信号样式来确定其类型。
在步骤S202,如果控制数据单元的类型属于特定类型的控制数据单元,则可以在步骤S203对特定类型的控制数据单元的重复次数进行计数,否则,进入步骤S206。如上所述,以UHS-II为例,特定类型的控制数据单元可以包括以下LSS中的至少一种或全部:SYN、LIDL、DIDL、和DIR。然而这只是示例,本发明不限于此。另外,根据实施例,也可以对除了空闲数据单元之外的其他特定类型的控制数据单元的重复次数进行计数。
在步骤S204,如果重复次数达到参考值,则可以在步骤S205从接收数据中丢弃至少一个重复的特定类型的控制数据单元(或其他控制数据单元),否则,可以回到步骤S203继续计数。
在步骤S206,存储经过处理的接收数据,以便向第二时钟域提供。
如上所述,为了精确地控制缓冲器中的水位线,可以根据特定类型的控制数据单元(例如,包括SYN、DIR、LIDL、和DIDL)的持续时间以及第一时钟域与第二时钟域的时钟源差异来确定所述参考值。所述参考值可以为16至256。
此外,根据实施例,在通过多个数据通路传输时,可以对每个数据通路单独执行计数和缓存。在半双工模式下,可以在每个数据通路中分别丢弃空闲数据单元来消除数据歪斜,使得水位线平齐,以便于数据的合并。
图3是示出根据本发明的实施例的用于高速串行总线的弹性缓冲器300的框图。图3的弹性缓冲器300不同于图1的缓冲器104,其自身具有对空闲数据单元进行计数和丢弃的功能。
参照图3,弹性缓冲器300可以包括输入接口301、控制器302、存储器303、和输出接口304。
控制器302可以对通过输入接口301接收的来自第一时钟域的数据中的空闲数据单元进行识别,并对识别到的空闲数据单元的重复次数进行计数,当该重复次数达到参考值时,从接收数据中丢弃至少一个重复的空闲数据单元,并将经过处理的接收数据存储在存储器303中。在一实施例中,存储器303为一先进先出缓冲器(FIFO buffer)。
输出接口304可以向第二时钟域输出存储在存储器303中的经过上述控制器302处理的接收数据。
如上所述,所述高速串行总线可以为UHS-II总线,所述空闲数据单元可以包括以下LSS中的至少一种或全部:SYN、LIDL、DIDL、和DIR。
此外,根据实施例,为了精确地控制水位线,弹性缓冲器300可以进一步包括寄存器(未示出),用于设置所述参考值。具体地,可以根据空闲数据单元(包括SYN、DIR、LIDL、和DIDL)的持续时间和/或第一时钟域与第二时钟域的时钟源差异来确定所述参考值。所述参考值可以为16至256。
图4是示出根据本发明的实施例的用于高速串行总线的弹性缓冲的方法的流程图。
参照图4,在步骤S401,接收来自第一时钟域的数据。
在步骤S402,对接收数据中的空闲数据单元进行识别,并对识别到的空闲数据单元的重复次数进行计数。对于UHS-II总线,所述空闲数据单元可以包括以下LSS中的至少一种或全部:SYN、LIDL、DIDL、和DIR。
在步骤S403,如果重复次数达到参考值,则在步骤S404从接收数据中丢弃至少一个重复的空闲数据单元,否则,可以回到步骤S402继续计数。
在步骤S405,存储经过处理的接收数据。
在步骤S406,向第二时钟域输出已存储的经过处理的接收数据。
根据实施例,可以根据空闲数据单元的持续时间和/或第一时钟域与第二时钟域的时钟源差异来确定所述参考值。所述参考值可以为16至256。
如上所述,已经在上面具体地描述了本发明的各个实施例,但是本发明不限于此。本领域的技术人员应该理解,可以根据设计要求或其它因素进行各种修改、组合、子组合或者替换,而它们在所附权利要求书及其等效物的范围内。
Claims (10)
1.一种用于高速串行总线的弹性缓冲器,包括:
输入接口,用于接收来自第一时钟域的数据;
控制器,用于对接收数据中的空闲数据单元进行识别,并对识别到的所述空闲数据单元的重复次数进行计数,当该重复次数达到参考值时,从该接收数据中丢弃至少一个重复的所述空闲数据单元;
存储器,用于存储经过处理的该接收数据;以及
输出接口,用于向第二时钟域输出存储在该存储器中的所述经过处理的接收数据。
2.如权利要求1所述的弹性缓冲器,其中,所述高速串行总线为超高速II(UHS-II)总线,所述空闲数据单元包括以下链路符号集(LSS)中的至少一种:同步(SYN)、逻辑空闲(LIDL)、数据传输逻辑空闲(DIDL)以及方向切换(DIR)。
3.如权利要求1所述的弹性缓冲器,进一步包括:
寄存器,用于设置所述参考值。
4.如权利要求1所述的弹性缓冲器,其中,所述参考值是根据所述空闲数据单元的持续时间确定的。
5.如权利要求1所述的弹性缓冲器,其中,所述参考值为16至256。
6.如权利要求1所述的弹性缓冲器,其中,该存储器为先进先出存储器。
7.如权利要求1所述的弹性缓冲器,其中,该输入接口根据从该接收数据中恢复的第一时钟接收该接收数据,该输出接口根据第二时钟输出存储在该存储器中的所述经过处理的该接收数据,其中所述参考值是根据所述第一时钟和所述第二时钟的差异决定的。
8.一种用于高速串行总线的弹性缓冲的方法,包括:
接收来自第一时钟域的数据;
对接收数据中的空闲数据单元进行识别,并对识别到的所述空闲数据单元的重复次数进行计数,当该重复次数达到参考值时,从接收数据中丢弃至少一个重复的所述空闲数据单元;
存储经过处理的接收数据;以及
向第二时钟域输出已存储的所述经过处理的接收数据。
9.如权利要求8所述的方法,其中,所述高速串行总线为超高速II(UHS-II)总线,所述空闲数据单元包括以下链路符号集(LSS)中的至少一种:同步(SYN)、逻辑空闲(LIDL)、数据传输逻辑空闲(DIDL)以及方向切换(DIR)。
10.如权利要求8所述的方法,其中,所述参考值是根据所述空闲数据单元的持续时间确定的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510885487.0A CN105528310B (zh) | 2015-12-04 | 2015-12-04 | 用于高速串行总线的弹性缓冲器和弹性缓冲的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510885487.0A CN105528310B (zh) | 2015-12-04 | 2015-12-04 | 用于高速串行总线的弹性缓冲器和弹性缓冲的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105528310A CN105528310A (zh) | 2016-04-27 |
CN105528310B true CN105528310B (zh) | 2018-08-14 |
Family
ID=55770548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510885487.0A Active CN105528310B (zh) | 2015-12-04 | 2015-12-04 | 用于高速串行总线的弹性缓冲器和弹性缓冲的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105528310B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1812313A (zh) * | 2005-01-26 | 2006-08-02 | 华为技术有限公司 | 无线链路控制层缓冲区溢出的控制方法 |
CN101178700A (zh) * | 2006-12-19 | 2008-05-14 | 威盛电子股份有限公司 | 数据同步方法与数据缓冲装置 |
CN101192912A (zh) * | 2006-11-30 | 2008-06-04 | 中芯国际集成电路制造(上海)有限公司 | 具有缓冲器控制的数据传输的***和方法 |
CN101499891A (zh) * | 2008-01-31 | 2009-08-05 | 日本电气株式会社 | 用于处理重发过程中的数据的方法和设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8806093B2 (en) * | 2010-04-01 | 2014-08-12 | Intel Corporation | Method, apparatus, and system for enabling a deterministic interface |
-
2015
- 2015-12-04 CN CN201510885487.0A patent/CN105528310B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1812313A (zh) * | 2005-01-26 | 2006-08-02 | 华为技术有限公司 | 无线链路控制层缓冲区溢出的控制方法 |
CN101192912A (zh) * | 2006-11-30 | 2008-06-04 | 中芯国际集成电路制造(上海)有限公司 | 具有缓冲器控制的数据传输的***和方法 |
CN101178700A (zh) * | 2006-12-19 | 2008-05-14 | 威盛电子股份有限公司 | 数据同步方法与数据缓冲装置 |
CN101499891A (zh) * | 2008-01-31 | 2009-08-05 | 日本电气株式会社 | 用于处理重发过程中的数据的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105528310A (zh) | 2016-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10819643B2 (en) | Load balancing systems, devices, and methods | |
US7948894B2 (en) | Data flow control for simultaneous packet reception | |
US6792484B1 (en) | Method and apparatus for storing data using a plurality of queues | |
US6452927B1 (en) | Method and apparatus for providing a serial interface between an asynchronous transfer mode (ATM) layer and a physical (PHY) layer | |
US8184760B2 (en) | Adaptive elastic buffer for communications | |
US10476656B2 (en) | System and method for asynchronous, multiple clock domain data streams coalescing and resynchronization | |
WO2010077747A1 (en) | Credit management when resource granularity is larger than credit granularity | |
CN101557348A (zh) | 一种基于令牌桶的报文转发方法及装置 | |
US9880949B1 (en) | Cross clock compensation between layers in peripheral component interconnect express | |
US8576879B2 (en) | Communication system and method | |
WO2012038829A2 (en) | Low latency first-in-first-out (fifo) buffer | |
EP3326347B1 (en) | Method and system for usb 2.0 bandwidth reservation | |
US20130251006A1 (en) | Data packet flow control across an asynchronous clock domain boundary | |
US20120317380A1 (en) | Device and method for a half-rate clock elasticity fifo | |
US7224691B1 (en) | Flow control systems and methods for multi-level buffering schemes | |
CN108259390A (zh) | 互连总线中虚拟通道的优先级推送方法和装置 | |
US9608935B2 (en) | Tunneling within a network-on-chip topology | |
CN105528310B (zh) | 用于高速串行总线的弹性缓冲器和弹性缓冲的方法 | |
CN105335324B (zh) | 用于高速串行总线的接收器和接收数据的方法 | |
GB2362777A (en) | System for detection of asynchronous packet rates and maintenance of maximum theoretical packet rate | |
US7889658B1 (en) | Method of and system for transferring overhead data over a serial interface | |
US20180013689A1 (en) | Circuit and method for credit-based flow control | |
CN108023660B (zh) | 一种光传送网络业务接入方法及装置 | |
US7035267B1 (en) | Transferring and queueing length and data as one stream | |
US10168989B1 (en) | Adjustable empty threshold limit for a first-in-first-out (FIFO) circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |
|
CP03 | Change of name, title or address |