CN115699668A - 宽弹性缓冲器 - Google Patents

宽弹性缓冲器 Download PDF

Info

Publication number
CN115699668A
CN115699668A CN202180036619.6A CN202180036619A CN115699668A CN 115699668 A CN115699668 A CN 115699668A CN 202180036619 A CN202180036619 A CN 202180036619A CN 115699668 A CN115699668 A CN 115699668A
Authority
CN
China
Prior art keywords
data
column
amount
pointer
skip
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
CN202180036619.6A
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.)
Ahronix Semiconductor
Original Assignee
Ahronix Semiconductor
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 Ahronix Semiconductor filed Critical Ahronix Semiconductor
Publication of CN115699668A publication Critical patent/CN115699668A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • H04L49/9052Buffering arrangements including multiple buffers, e.g. buffer pools with buffers of different sizes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • 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
    • G06F5/16Multiplexed systems, i.e. using two or more similar devices which are alternately accessed for enqueue and dequeue operations, e.g. ping-pong buffers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/062Synchronisation of signals having the same nominal but fluctuating bit rates, e.g. using buffers
    • H04J3/0632Synchronisation of packets and cells, e.g. transmission of voice via a packet network, circuit emulation service [CES]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/065With bypass possibility
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

接收设备使用比每个周期中传送的数据元素的数量更宽的弹性缓冲器。为了补偿发射器与接收器之间的频率差,发射设备周期性地发送对默认数量的跳过数据元素的跳过请求。如果弹性缓冲器正在填充,则接收设备忽略一个或更多个跳过数据元素,如果弹性缓冲器正在清空,则接收设备将一个或更多个跳过数据元素添加到跳过请求。为了保持数据的排序而不管跳过数据元素的操作,一次读取两行宽弹性缓冲器。这允许从两行的数据元素的任何组合构造一行结果。适当地调整列指针,以确保它们继续指向要读取的下一个数据。

Description

宽弹性缓冲器
优先权应用
本申请要求2020年5月19日提交的美国专利申请序列号16/877,695的优先权,该美国专利申请的内容通过引用整体并入本文。
背景技术
两个设备使用通信协议进行通信。这两个设备名义上以相同的频率操作,但是使用独立的时钟发生电路。结果,可能导致实际频率之间的小差异。另外,即使频率相同,时钟的相位也是独立的。由于这些时钟差异,使用缓冲来允许数据从一个时钟域跨越到另一个时钟域。
PCI express(PCIe)是高速双向串行连接。目前,有五代PCIe,尽管计划了更多代。每一后续代提供比前一代更高的数据传送并且向后兼容,使得设备在升级到后一代之前使用第一代(GEN1)协议协商公共协议。弹性缓冲器(也称为速率匹配先进先出(FIFO))用于跨越在接收器处在发射器时钟与接收器时钟之间的时钟域边界。
即使PCIe设备被设计成以相同的频率操作,但是在物理设备之间也将存在一些变化。例如,PCIe GEN1协议允许百万分之300(300ppm)的容限。其他协议具有更大的容限。例如,在PCIe中使用单独的独立于参考的时钟(SRIS)特征将容限增加了5000ppm。然而,如果发送设备提供数据快于接收设备处理数据,则任何频率差(甚至在容限内)都将最终导致上溢,或者如果发送设备没有像接收设备处理数据那样快地提供数据,则任何频率差都将最终导致下溢。特殊跳过符号由发射器周期性地插入。当接收到跳过符号时,接收器可以添加或移除跳过符号以防止弹性缓冲器的上溢或下溢。
附图说明
在附图的各图中,通过示例而非限制的方式示出了所公开的技术的一些实施方式。
图1是根据一些示例实施方式的与网络接口连接并且包括宽弹性缓冲器的系统的高级别示意图。
图2是根据一些示例实施方式的宽弹性缓冲器的实现方式的高级别示意图。
图3是示出了宽弹性缓冲器的寄存器文件内容、通道移位器输出和读取指针修改的示例。
图4是示出了宽弹性缓冲器的寄存器文件内容、通道移位器输出和读取指针修改的示例。
图5是根据一些示例实施方式的在宽弹性缓冲器中维护指针的方法的流程图。
图6是示出根据一些示例实施方式的用于执行本文描述的方法的系统的部件的框图。
具体实施方式
现在将描述用于维持宽弹性缓冲器的示例方法、系统和电路。在以下描述中,阐述了具有示例特定细节的许多示例以提供对示例实施方式的理解。然而,对于本领域的普通技术人员来说,显然,这些示例可以在没有这些示例特定细节的情况下和/或以与这里所给出的不同的细节组合的情况下被实践。因此,为了简化说明而非限制的目的给出了特定实施方式。
接收设备使用比每个周期中传送的数据元素的数量更宽的弹性缓冲器。为了均匀地填充弹性缓冲器的列,写入指针依次引用每列。因此,第一数据元素被写入第一列,第二数据元素被写入第二列,依此类推,直到每列已经接收到一个数据元素,此时写入指针指向第一列中的下一个条目。
为了补偿两个设备的频率差,发送设备周期性地发送具有默认数量的跳过数据元素的跳过请求。为了补偿该差异,接收设备忽略一个或更多个跳过数据元素,因此使用跳过请求的周期来处理数据,即使发送设备在跳过请求的周期不发送数据。
替选地,如果接收设备比发送设备快,则弹性缓冲器将以取决于速度差的速率清空。为了补偿该差异,接收设备将一个或更多个跳过数据元素添加到跳过请求,从而处理弹性缓冲器中比跳过请求所指示的更少的数据。
然而,如果简单地调整每列的读取指针以反映跳过的数据,则效果将是改变从弹性缓冲器读取数据的顺序,除非跳过的数据的量是弹性缓冲器的宽度的偶数倍。例如,如果宽弹性缓冲器是四列宽并且三个数据元素被跳过,则三个读取指针将被增加并且第四个将保持不变。结果,四个数据元素的下一次读取将包括以依赖于三个数据元素的对齐而不仅是依赖于接收元素的顺序的方式排序的数据。
为了避免这个问题,一次读取两行宽弹性缓冲器。这允许从两行的数据元素的任何组合构造一行结果。结果,即使当添加或删除跳跃时,也可以重新排序数据,以提供弹性缓冲器的宽度的正确排序的数据元素。适当地调整列指针,以确保它们继续指向要读取的下一个数据。
图1是根据一些示例实施方式的与网络接口连接并且包括宽弹性缓冲器的系统100的高级别示意图。系统100包括物理介质连接(PMA)接口105、接收(RX)极性位反转符号交换电路110、8位/10位(8b/10b)解码器电路115和128位/130位(128b/130b)解码器电路120、第5代(GEN5)块同步器电路125、逗号检测和符号对齐电路130、宽弹性缓冲器135、RX管电路140、伪随机位流(PRBS)检验器电路145、芯片连接单元接口(CAUI)齿轮箱电路150、同步齿轮箱电路155和RX多路复用器(MUX)逻辑160,它们如所示通过物理迹线、总线或其他连接电路连接。为了可读性,在图1中未示出部件105至160之间的各种MUX。
PMA接口105接收数据读取请求。数据读取请求和近端物理编码子层(PCS)环回输入被提供给MUX,并且一个或另一个被提供作为RX极性位反转符号交换电路110的输入。RX极性位反转符号交换电路110用于反转数据、交换字节排序和反转位排序,如由三个配置线所确定,三个配置线是rev_bit、rev_pol和swap_symbol。这允许系统100与使用其他物理配置选项来表示数据的其他系统通信。RX极性位反转符号交换电路110的输出以系统100的其余部分所期望的方式被格式化,并且被引导到逗号检测和符号对齐电路130、128b/130b解码器120、CAUI齿轮箱电路150、同步齿轮箱电路155、RX MUX逻辑160、远端PMA并行环回以及PRBS检查器电路145中的所有电路(或选择性地引导到其中一个电路)。PRBS检查器电路145可以通过将由发射器伪随机生成的接收数据与本地生成的相同PRBS进行比较来检测传输错误。
系统100可以实现支持第1代协议至第5代(GEN1-GEN5)协议的外围互连接口快速(PCIe)设备。8b/10b解码器电路115用于GEN1通信和GEN2通信。128b/130b解码器120用于GEN3至GEN5通信。8b/10b解码将10个编码比特转换为8个解码比特。128b/130b解码将130个编码比特转换为128个解码比特。GEN5处理还包括GEN5块同步器电路125。
PMA并行化发生在任意字边界处。因此,来自RX PMA时钟数据恢复(CDR)的并行数据必须由GEN5块同步器电路125重新对齐到有意义的字符边界。PCIe 4.0基本规范概述了使用130位块(除了跳过(或SK)块)形成数据。SK有序集可以是66位、98位、130位、162位或194位长。块同步器搜索电空闲退出序列有序集(或最后数量的快速训练序列(NFTS)有序集)或跳过(SKP)有序集,以识别传入流的正确边界并且实现块对齐。在接收到SKP有序集之后,块被重新对齐到新的块边界,因为它可以是可变长度的。
MUX基于系统100的通信协议选择RX极性位反转符号交换电路110或GEN5块同步器电路125的输出,以作为输入提供到逗号检测和符号对齐电路130。逗号检测和符号对齐电路130可以被配置成通过编程用于检测的各种字符,并且响应于检测,对齐,来支持各种标准(例如,PCIe GEN1或GEN2)。符号对齐使用对齐和序列字符来识别所接收的数据流中的正确符号边界。用于对齐和序列检测符号的属性被指定为10位宽。这个块提供了非常通用的和可编程的逗号模式,其具有序列选项以适合任何协议方案和定制方案。跳过请求也被称为逗号模式,因为PCIe跳过请求的第一个字符是逗号(COM)符号,后面是多个SKP。
宽弹性缓冲器135用于使来自PMA恢复时钟的接收数据与系统时钟或本地时钟(通常为发送时钟)同步。宽弹性缓冲器135包括多个先进先出(FIFO)列,并且通过从接收的数据流中添加或删除预配置的跳过(或填充或对齐)字符来补偿PMA恢复时钟与系统时钟或本地时钟之间的频率差。弹性FIFO提供跳过(或填充或对齐)字符被添加到下游逻辑或被删除的指示。对于PCIe,弹性FIFO还包括适当的状态编码,以指示操作是添加字符还是删除字符。
如系统100所示,当以8b/10b编码格式接收数据时,宽弹性缓冲器135存储编码的10b数据。这允许系统100作为环回从系统操作。PCIe要求环回从系统如所接收的那样重发所接收的10位信息。因此,通过存储10b数据并且在不进行解码和重新编码的情况下重发10b数据,支持作为环回从系统进行操作。由于128b/130b数据在被存储在宽弹性缓冲器135中之前被解码为8位数据,所以宽弹性缓冲器135能够存储8位数据和10位数据两者。
PCI Express 4.0基础规范定义了SKP有序集(OS)可以是66、98、130、162或194位长。SKP OS具有以下固定位:2位同步、8位SKP END和24位LFSR=34位。宽弹性缓冲器135添加或删除4个SKP字符(32位)以分别防止FIFO变空或变满。如果FIFO接近满,则它通过在发现SKP时禁止写入来删除4个SKP字符。如果FIFO接近空,则设计等待SKP有序集开始,然后停止从FIFO读取数据,并且将SKP插入到输出数据中。
CAUI齿轮箱电路150和同步齿轮箱电路155使PMA数据宽度适应PCS接口的宽度。CAUI齿轮箱电路150支持64位PMA接口宽度和66位PCS接口宽度。同步齿轮箱电路155支持64位PMA接口宽度和67位PCS接口宽度。
CAUI齿轮箱电路150和同步齿轮箱电路155两者都支持同步模式。齿轮箱将通过使'data_valid'信号失效1个时钟周期以匹配比率来停止数据通过量。该结构处理'data_valid'信号。CAUI齿轮箱电路150也可以支持异步模式,其中齿轮箱负责在接收器时钟的每个时钟周期上提供数据。
当不使用齿轮箱工作时,宽弹性缓冲器135的输出被提供给RX管电路140或提供给RX MUX逻辑160。RX管电路140用于支持其他通信模式,绕过宽弹性缓冲器135和系统100的其他部件。MUX控制到RX MUX逻辑160的输入,以从RX管电路140、宽弹性缓冲器135、CAUI齿轮箱电路150、8b/10b解码器115和同步齿轮箱电路155的输出中进行选择。提供给RX MUX逻辑160的数据被提供作为系统100的输出。因此,系统100提供PMA接口105,处理必要的数据格式转换,缓冲数据,并且以常规方式在RX MUX逻辑160上提供数据,准备由设备处理。另外,输出被发送到远端PCS环回。
图2是根据一些示例实施方式的宽弹性缓冲器200的实现的高级示意图。宽弹性缓冲器200包括写入控制器210;数据缓冲器电路230,其包括四个寄存器文件220A、220B、220C和220D;读取控制器240、跳过有序集(SOS)检测器250以及通道移位器260。寄存器文件220A至220D通常可以被称为“寄存器文件220”。
在DATA_IN信号上接收数据,并且将其写入到由写入控制器210提供的公共写入地址。如图2中所示,公共写入地址对于所有寄存器文件220A至220D是相同的。另外,写入控制器210将公共写入地址提供到读取控制器240。这允许读取控制器240总是知道数据缓冲器电路230有多满。写入控制器210在PMA恢复时钟域中操作。读取控制器240、SOS检测器250和通道移位器260在内部时钟域上操作。寄存器文件220A至220D中的每一个是四条目宽的缓冲器中的列,其允许在两个时钟域之间异步传送数据。
公共写入地址按照传入数据的大小增加,并且可以指向寄存器文件220A至220D中的任何一个。例如,如果传入数据是四条目宽,那么公共写入地址指向寄存器文件220A中的地址。当写入数据时,将条目写入到寄存器文件220A至220D中的每一个,并且将公共写入地址增加四(以指向寄存器文件220A中的下一地址)。作为另一示例,如果传入数据是一个条目宽,那么公共入地址指向寄存器文件220A至220D中的任一者中的地址。当写入数据时,仅将条目写入到由公共写入地址所指向的寄存器文件,并且将公共写入地址增加一(以指向下一寄存器文件中的下一可用条目)。因此,使用公共写入地址,可以处理高达寄存器文件的数量的任何大小的传入数据。
为了读取数据,读取控制器240使用两个读取地址从寄存器文件220A至220D中的每一个读取数据。八个读取数据条目被提供给通道移位器260。通道移位器260基于八个读取数据条目和来自读取控制器240的信号,选择和重新排列八个读取数据条目以生成四条目输出,提供为DATA_OUT信号。尽管图2的示例使用四个寄存器文件和一个四条目输出,但是预期其他大小(例如,八个寄存器文件和一个八条目输出)。另外,每个条目可以是字节、10位、字、双字或另一数据量。
SOS检测器250检查从数据缓冲器电路230读取的数据,以确定跳过数据命令是否是数据的一部分。例如,在PCIe GEN1至PCIe GEN2中,SOS包括COM符号,COM符号后面是一个或更多个SKP。如果检测到跳过数据指令,则通知读取控制器240并且使其能够将适当的信号发送到通道移位器260。在PCIe GEN3至PCIe GEN5中,SOS包括一组或更多组四个SKP,四个SKP后面是SKIP端(SKIP END)。因此,当在PCIe GEN1或PCIe GEN2系统中实现时,SOS检测器250可以基于COM符号确定接收到跳过数据命令;在PCIe GEN3、PCIe GEN4、或PCIe GEN5系统中,可以基于SKP符号检测跳过数据命令;在其他系统中,可以使用其他符号或序列来检测跳过数据命令。
通道移位器电路260从数据缓冲器电路230读取一个或更多个元素,并且将它们作为DATA_OUT提供。在从数据缓冲器电路230从数据缓冲电路读取数据之后,通道移位器电路260更新用于每个寄存器文件220的指针。通常,从每个寄存器文件220读取一个条目并且每个指针增加一。
如果SOS检测器250检测到解码的符号是跳过请求,则读取控制器240对于跳过请求确定要跳过多少符号。要跳过的符号的数量可以与跳过请求的符号的数量相同,或者可以是更多或更少的符号。要跳过的符号的数量可以基于数据缓冲器电路230的填充水平。例如,如果数据缓冲器电路230多于半满,则可以跳过更少的符号,从而有助于清空数据缓冲器。作为另一示例,如果数据缓冲器电路230不到半满,则可以跳过更多的符号,从而将数据保留在数据缓冲器中。可以通过取得公共写入地址与读取地址中的一者(例如,寄存器文件220A的读取地址)之间的差异并且将该差异与寄存器文件的大小进行比较来确定寄存器文件220A至220D的填充水平。
响应于跳过请求,通道移位器电路260将寄存器文件220A至220D中的第一个的指针修改与寄存器文件220A至220D中的第二个的指针不同的量。不同的指针修改允许从一个寄存器文件220读取多个条目,而从另一寄存器文件220仅读取一个条目,或者允许从一个寄存器文件220读取一个条目而不从另一寄存器文件220读取任何条目。
允许从每个寄存器文件220读取不同数量的条目允许以小于数据缓冲器电路230的整行的粒度处理跳过数据请求。结果,可以适应来自支持比数据缓冲器电路230的列数少的最大跳过次数的协议的跳过请求,同时仍然充分利用数据缓冲器电路230。与禁用数据缓冲器电路230的列使得数据缓冲的(启用)宽度不大于可以跳过的最大条目的其他解决方案相比,系统100被启用以在较低时钟速率下运行、具有更大的缓冲或两者。另外,宽度受限的数据缓冲处理每时钟周期传送更多数据的协议的能力有限。例如,如果正在使用每个时钟发送四个条目的协议,并且数据缓冲是一个条目宽,则将四个条目传送到数据缓冲中的逻辑必须以四倍快的时钟执行,以允许在接收到下一组四个条目之前完成四次写入。使用这里描述的解决方案,窄(例如,每个时钟一个条目)和宽(例如,每个时钟四个条目)两者协议都可以由相同的硬件有效地处理。
尽管这里描述的示例是参考PCIe的,但是宽弹性缓冲器可以用于其他系统和其他协议。例如,通用串行总线(USB)或串行高级技术附件(SATA)协议可以使用宽弹性缓冲器。
图3是示出了用于宽弹性缓冲器的寄存器文件内容310、通道移位器输出320和读取指针修改330的示例300。寄存器文件内容310示出了四个寄存器文件中的每一个中的八行数据。字母A至X用于指示数据,COM指示跳过数据请求的开始,并且SK是接收的跳过条目。括号中的数字指示该数据条目是通道移位器输出320的输出中的第一数据条目。
寄存器文件内容310包括八个四条目通信、十六个两条目通信或三十二个单条目通信,其中第一个接收的通信在右下方并且最后一个接收的通信在左上方。如果接收设备和发送设备完全同步,则通道移位器输出320将匹配寄存器文件内容310,并且寄存器文件内容310中的每个最右边的条目将包含括号。然而,在图3的示例中,接收设备比发送设备操作得稍慢。因此,将忽略一些接收的跳过条目,从而允许接收设备通过处理额外数据条目来追上。
通道移位器输出320示出用寄存器文件内容310中的八行数据形成的七个数据输出。寄存器文件内容310中的每个二条目COM/SK模式导致通道移位器输出320中的单条目COM模式,减少了要跳过的数据条目的数量。尽管寄存器文件内容310中的数据被修改,但是通道移位器输出320中的数据的次序不变。
读取指针修改330示出在填充通道移位器输出320的一行之后对寄存器文件内容310中的对应列的读取指针的改变。因此,对于通道移位器输出320的第一行,从寄存器文件内容310的每列读取数据值D、C、B和A中的一者,并且如读取指针修改330的第一行中所示,每列的读取指针增加一。
对于第二输出行,每列的读取指针指向数据值F、E、SK和COM。每列的下一个读取指针指向数据值SK、COM、H和G。因为通道移位器访问所有八个数据值,所以它能够移除第一个SK(在E之前),移动E和F,并且将G从下一行放置到适当的位置。因此,生成第二输出行。从前三列的每列消耗一个条目,因此增加用于该列的读取指针。从第四列消耗两个条目(COM和G),该列的读取指针增加二,如读取指针修改330的第二行所示。
由于读取指针没有以相同的量修改,在第三输出行的准备期间,将从用于不同列的不同输入行读取数据。因此,可用于通道移位器的数据是用于第一列的SK和COM、用于第二列的COM和K、用于第三列的H和J以及用于第四列的I和SK。此外,存储从其读取数据的最后一列,因此通道移位器知道第三输出行的第一条目不是第四列而是第三列。因此,通道移位器能够确定数据顺序地是H、COM、SK、I、J、K、COM。移除SK并且输出四个条目产生通道移位器输出320的第三行中所示的H、COM、I、J。在此情况下,从第三列取得两个条目,且如读取指针修改330的第三行中所示,第三列的指针增加二。
图4是示出了用于宽弹性缓冲器的寄存器文件内容410、通道移位器输出420和读取指针修改430的示例400。寄存器文件内容410示出了与寄存器文件内容310相同的数据值,但是括号中的数字的位置指示该数据条目是通道移位器输出420的输出中的第一数据条目,并且该位置与图3中的不同。在图4的示例中,接收设备比发送设备操作得稍快。因此,将添加一些跳过条目,从而允许接收设备通过处理较少数据条目来减慢。
通道移位器输出420示出用寄存器文件内容410中的八行数据形成的九个数据输出。寄存器文件内容410中的每个二条目COM/SK模式导致通道移位器输出420中的三条目COM/SK/SK模式。尽管寄存器文件内容410中的数据被修改,但是通道移位器输出420中的数据的次序不变。
读取指针修改430示出在填充通道移位器输出420的一行之后对寄存器文件内容410中的对应列的读取指针的改变。因此,对于通道移位器输出420的第一行,从寄存器文件内容410的每列读取数据值D、C、B和A中的一者,并且如读取指针修改430的第一行中所示,每列的读取指针增加一。
对于第二输出行,每列的读取指针指向数据值F、E、SK和COM。每列的下一个读取指针指向数据值SK、COM、H和G。因为通道移位器可以访问所有八个数据值,所以它能够在E之前插入SK。这增加了要跳过的数据条目的数量,并且将E移位到下一个位置。因此,生成第二输出行。从最后三列的每列消耗一个条目,因此增加那些列的读取指针。从第一列没有消耗条目,因此不增加(或替选地,增加零)用于该列的读取指针,如读取指针修改430的第二行所示。
由于读取指针没有以相同的量修改,在第三输出行的准备期间,将从用于不同列的不同输入行读取数据。因此,可用于通道移位器的数据是用于第一列的F和SK,用于第二列的COM和K,用于第三列的H和J以及用于第四列的G和I。此外,存储从其读取数据的最后一列,因此通道移位器知道第三输出行的第一条目不是第四列而是第一列。因此,通道移位器能够顺序地确定数据是F、G、H、COM、SK、I、J、K、COM。在第一位置没有添加或移除SK,因此输出的四个条目是在通道移位器输出420的第三行中示出的F、G、H、COM。在此情况下,从寄存器文件内容410的每列取得一个条目,并且如读取指针修改430的第三行中所示,每个指针增加一。
尽管图2至4的示例示出了在宽弹性缓冲器中使用的四列,但是可以设想其他宽度。例如,宽弹性缓冲器可以是八列、十二列、十六列或三十二列宽。更大的宽度以支持更高的传送速率也是可以的。
图5是根据一些示例实施方式的在宽弹性缓冲器中维护指针的方法500的流程图。方法500包括操作510、520和530。作为示例而非限制,参考图3至图4的示例数据,方法500被描述为由图1的系统100和图2的宽弹性缓冲器200的部件来执行。
在操作510中,SOS检测器250通知读取控制器240已经接收到跳过请求,该跳过请求指示要跳过数据缓冲器中的一定数量的数据条目,要跳过的条目的数量不是数据缓冲器中列数的偶数倍。例如,图4至图5的COM、SK序列是跳过两个数据条目的请求,这不是数据缓冲器(例如,由图2中的四个寄存器文件220A至220D形成的数据缓冲器)中列数(四)的偶数倍。
在操作520中,读取控制器240响应于跳过请求以一定量修改用于数据缓冲器的第一列的第一指针。同样响应于跳过请求,在操作530中,读取控制器240以不同的量修改用于数据缓冲器的第二列的第二指针。例如,读取指针修改430的第二行、第三行、第四行和第六行中的每行示出了一列的指针增加二,而其他三列的指针增加一。作为另一示例,读取指针修改430的第二行、第四行、第五行和第八行中的每行示出了一列的指针保持不变,而其他三列的指针增加一。
响应于从读取控制器240接收的指令,通道移位器350在从寄存器文件320A至320D读取的八个数据值中选择用于DATA_OUT四个输出通道中每一个的第九SK值。因此,在读取控制器240的控制下,通道移位器350输出正确的四个条目以支持SK值与DATA_IN的相加或相减。通过修改读取指针,读取控制器240维持确保输出的修改不会导致重新排序、丢失或复制的数据所必需的状态。
图6是示出根据一些示例实施方式的用于执行本文描述的方法的系统600的部件的框图。在各种实施方式中不需要使用所有部件。例如,客户端、服务器、自主系统和基于云的网络资源可以各自使用不同的部件集合,或者在服务器的情况下使用例如更大的存储设备。
计算机600形式的一个示例计算设备(也称为计算设备600和计算机系统600)可以包括处理器605、存储器存储装置610、可移除存储装置615和不可移除存储装置620,它们全部通过总线640连接。尽管示例计算设备被示出和描述为计算机600,但是在不同的实施方式中计算设备可以是不同的形式。例如,计算设备可以替代地是智能电话、平板电脑、智能手表或包括与关于图6所示出和描述的那些元件相同或相似的元件的另一计算设备。诸如智能电话、平板电脑和智能手表的设备被统称为“移动设备”。此外,尽管各种数据存储元件被示为计算机600的一部分,但是存储装置还可以或替选地包括可经由诸如因特网的网络访问的基于云的存储装置或基于服务器的存储装置。
存储器存储装置610可以包括易失性存储器645和非易失性存储器650,并且可以存储程序655。计算机600可以包括或访问计算环境,该计算环境包括各种计算机可读介质,例如易失性存储器645;非易失性存储器650;可移除存储装置615;以及不可移除存储装置620。计算机存储装置包括随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)和电可擦除可编程只读存储器(EEPROM)、闪存或其他存储器技术、光盘只读存储器(CD ROM)、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储装置、或能够存储计算机可读指令的任何其他介质。
计算机600可以包括或访问包括输入接口625、输出接口630和通信接口635的计算环境。输出接口630可以与显示设备对接或包括显示设备,诸如触摸屏,其也可以用作输入设备。输入接口625可以与触摸屏、触摸板、鼠标、键盘、摄像机、一个或更多个设备特定按钮、集成在计算机600内或经由有线或无线数据连接耦接至计算机的一个或更多个传感器以及其他输入设备中的一个或更多个对接或者包括触摸屏、触摸板、鼠标、键盘、摄像机、一个或更多个设备特定按钮、集成在计算机600内或经由有线或无线数据连接耦接至计算机的一个或更多个传感器以及其他输入设备中的一个或更多个。计算机600可以使用通信接口635连接至一个或更多个远程计算机(诸如数据库服务器)在联网环境中操作。远程计算机可以包括个人计算机(PC)、服务器、路由器、网络PC、对等设备或其他公共网络节点等。通信接口635可以连接至局域网(LAN)、广域网(WAN)、蜂窝网络、WiFi网络、蓝牙网络或其他网络。
存储在计算机可读介质上的计算机指令(例如,存储在存储器存储装置610中的程序655)可由计算机600的处理器605执行。硬盘驱动器、CD-ROM和RAM是包括诸如存储设备的非暂态计算机可读介质的物品的一些示例。术语“计算机可读介质”和“存储设备”不包括载波,因为载波被认为太短暂。“计算机可读非暂态介质”包括所有类型的计算机可读介质,包括磁存储介质、光存储介质、闪存介质和固态存储介质。应当理解,软件可以安装在计算机中并与计算机一起出售。替选地,软件可以被获得并且加载到计算机中,包括通过物理介质或分布系统获得软件,包括例如从软件创建者拥有的服务器或从未拥有但由软件创建者使用的服务器获得软件。例如,软件可以存储在服务器上以便通过因特网分发。
程序655被示为包括写入控制模块660和读取控制模块665。本文描述的模块中的任何一个或更多个可以使用硬件(例如,机器的处理器、ASIC、FPGA或其任何合适的组合)来实现。此外,这些模块中的任何两个或更多个可以被组合成单个模块,并且本文针对单个模块描述的功能可以被细分到多个模块中。此外,根据各种示例实施方式,本文描述为在单个机器、数据库或设备内实现的模块可以分布在多个机器、数据库或设备上。
写入控制模块660为多个寄存器文件维持公共写入指针,以将所接收的数据写入到缓冲器中以用于时钟域跨越。
读取控制模块665为多个寄存器文件中的每一个维持两个读取指针,以用于读取缓冲数据并且修改读取数据以产生补偿外部时钟域与内部时钟域之间的频率差的输出数据。
提供本公开内容的摘要以符合37C.F.R.§1.72(b),要求摘要允许读者快速确定技术公开内容的性质。提交摘要是基于这样的理解,即它将不用于解释或限制权利要求。另外,在前述具体实施方式中,可以看出,出于使本公开内容精简的目的,各种特征在单个实施方式中被组合在一起。本公开内容的方法不应被解释为限制权利要求。因此,所附权利要求由此被并入具体实施方式中,其中每个权利要求独自作为单独的实施方式。

Claims (20)

1.一种系统,包括:
数据缓冲器电路,其被配置成在数据缓冲器中缓冲数据,所述数据缓冲器包括多个列,所述多个列包括第一列和第二列;以及
通道移位器电路,其被配置成执行操作,所述操作包括:
检测所述数据缓冲器中的符号是要跳过所述数据缓冲器中的对应数量的数据条目的跳过请求,要跳过的数据条目的数量不是列数的偶数倍;以及
响应于所述跳过请求:
以第一量修改所述第一列的第一指针;以及
以第二量修改所述第二列的第二指针,所述第二量不同于所述第一量。
2.根据权利要求1所述的系统,其中:
所述数据缓冲器的列的数量是四;以及
跳过的数据条目的数量小于四。
3.根据权利要求1所述的系统,其中,所述第一量比所述第二量多一。
4.根据权利要求1所述的系统,其中:
所述第一量是二;以及
所述第二量是一。
5.根据权利要求1所述的系统,其中:
所述第一量是一;以及
所述第二量是零。
6.根据权利要求1所述的系统,其中:
所述第一列的所述第一指针是所述第一列的第一读取指针;
所述第二列的所述第二指针是所述第二列的第二读取指针;以及
单个写入指针用于所述数据缓冲器,所述单个写入指针能够指向所述数据缓冲器的任何列。
7.根据权利要求6所述的系统,其中,所述操作还包括:
基于所述单个写入指针和所述第一读取指针来确定所述第一量。
8.根据权利要求1所述的系统,其中,所述操作还包括:
基于有关所述数据缓冲器小于半满的确定,减少要跳过的数据条目的数量。
9.根据权利要求1所述的系统,其中,所述操作还包括:
基于有关所述数据缓冲器大于半满的确定,增加要跳过的数据条目的数量。
10.一种方法,包括:
经由网络接收指示跳过数据缓冲器中的一定数量的数据条目的跳过请求,所述数据缓冲器包括多个列,所述多个列包括第一列和第二列,要跳过的数据条目的数量不是列数的偶数倍;以及
响应于所述跳过请求:
以第一量修改所述第一列的第一指针;以及
以第二量修改所述第二列的第二指针,所述第二量不同于所述第一量。
11.根据权利要求10所述的方法,其中:
所述列数是四;以及
跳过的数据条目的数量小于四。
12.根据权利要求10所述的方法,其中,所述第一量比所述第二量多一。
13.根据权利要求10所述的方法,其中:
所述第一量是二;以及
所述第二量是一。
14.根据权利要求10所述的方法,其中:
所述第一量是一;以及
所述第二量是零。
15.根据权利要求10所述的方法,其中:
所述第一列的所述第一指针是所述第一列的第一读取指针;
所述第二列的所述第二指针是所述第二列的第二读取指针;以及
单个写入指针用于所述数据缓冲器,所述单个写入指针能够指向所述数据缓冲器的任何列。
16.根据权利要求15所述的方法,还包括:
基于所述单个写入指针和所述第一读取指针来确定所述第一量。
17.根据权利要求10所述的方法,还包括:
基于有关所述数据缓冲器小于半满的确定,减少要跳过的数据条目的数量。
18.一种存储指令的非暂态机器可读介质,所述指令在由一个或更多个处理器执行时使所述一个或更多个处理器执行操作,所述操作包括:
经由网络接收指示跳过数据缓冲器中一定数量的数据条目的跳过请求,所述数据缓冲器包括多个列,所述多个列包括第一列和第二列,要跳过的数据条目的数量不是列数的偶数倍;以及
响应于所述跳过请求:
以第一量修改所述第一列的第一指针;以及
以第二量修改所述第二列的第二指针,所述第二量不同于所述第一量。
19.根据权利要求18所述的非暂态机器可读介质,其中:
所述数据缓冲器的列数是四;以及
要跳过的数据条目的数量小于四。
20.根据权利要求18所述的非暂态机器可读介质,其中,所述第一量比所述第二量多一。
CN202180036619.6A 2020-05-19 2021-05-13 宽弹性缓冲器 Pending CN115699668A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/877,695 US11689478B2 (en) 2020-05-19 2020-05-19 Wide elastic buffer
US16/877,695 2020-05-19
PCT/US2021/032223 WO2021236420A1 (en) 2020-05-19 2021-05-13 Wide elastic buffer

Publications (1)

Publication Number Publication Date
CN115699668A true CN115699668A (zh) 2023-02-03

Family

ID=78608561

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180036619.6A Pending CN115699668A (zh) 2020-05-19 2021-05-13 宽弹性缓冲器

Country Status (4)

Country Link
US (2) US11689478B2 (zh)
EP (1) EP4154465A1 (zh)
CN (1) CN115699668A (zh)
WO (1) WO2021236420A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11689478B2 (en) 2020-05-19 2023-06-27 Achronix Semiconductor Corporation Wide elastic buffer

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060230215A1 (en) * 2005-04-06 2006-10-12 Woodral David E Elastic buffer module for PCI express devices
CN1890627A (zh) * 2003-12-31 2007-01-03 英特尔公司 通过用于点到点链路的非数据符号处理的缓冲器管理
US20090086874A1 (en) * 2007-09-28 2009-04-02 Junning Wang Apparatus and method of elastic buffer control
US20180004686A1 (en) * 2016-06-29 2018-01-04 Huimin Chen Method and apparatus of real-time retimer delay measurement
CN109564508A (zh) * 2016-07-31 2019-04-02 微软技术许可有限责任公司 处理器的事务寄存器文件

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7093061B2 (en) * 2004-02-19 2006-08-15 Avago Technologies Fiber Ip (Singapore) Pte. Ltd. FIFO module, deskew circuit and rate matching circuit having the same
US7461284B2 (en) * 2005-06-20 2008-12-02 Lsi Corporation Adaptive elasticity FIFO
US8867683B2 (en) * 2006-01-27 2014-10-21 Ati Technologies Ulc Receiver and method for synchronizing and aligning serial streams
US20080141063A1 (en) * 2006-12-12 2008-06-12 Ridgeway Curtis A Real time elastic FIFO latency optimization
US8041856B2 (en) * 2008-09-30 2011-10-18 Lsi Corporation Skip based control logic for first in first out buffer
US8806093B2 (en) * 2010-04-01 2014-08-12 Intel Corporation Method, apparatus, and system for enabling a deterministic interface
US8880831B2 (en) * 2011-05-12 2014-11-04 Advanced Micro Devices, Inc. Method and apparatus to reduce memory read latency
US20120317380A1 (en) * 2011-06-11 2012-12-13 Agrawal Vikas Kumar Device and method for a half-rate clock elasticity fifo
US8611173B1 (en) * 2011-12-02 2013-12-17 Altera Corporation Buffer circuitry with multiport memory cells
US11689478B2 (en) 2020-05-19 2023-06-27 Achronix Semiconductor Corporation Wide elastic buffer

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1890627A (zh) * 2003-12-31 2007-01-03 英特尔公司 通过用于点到点链路的非数据符号处理的缓冲器管理
US20060230215A1 (en) * 2005-04-06 2006-10-12 Woodral David E Elastic buffer module for PCI express devices
US20090086874A1 (en) * 2007-09-28 2009-04-02 Junning Wang Apparatus and method of elastic buffer control
US20180004686A1 (en) * 2016-06-29 2018-01-04 Huimin Chen Method and apparatus of real-time retimer delay measurement
CN109564508A (zh) * 2016-07-31 2019-04-02 微软技术许可有限责任公司 处理器的事务寄存器文件

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11689478B2 (en) 2020-05-19 2023-06-27 Achronix Semiconductor Corporation Wide elastic buffer

Also Published As

Publication number Publication date
WO2021236420A1 (en) 2021-11-25
US11689478B2 (en) 2023-06-27
US20210367908A1 (en) 2021-11-25
US20230239256A1 (en) 2023-07-27
EP4154465A1 (en) 2023-03-29

Similar Documents

Publication Publication Date Title
US7010612B1 (en) Universal serializer/deserializer
US7020757B2 (en) Providing an arrangement of memory devices to enable high-speed data access
US7631118B2 (en) Lane to lane deskewing via non-data symbol processing for a serial point to point link
US7328399B2 (en) Synchronous serial data communication bus
US4873703A (en) Synchronizing system
US6366530B1 (en) Synchronizing data operations across a synchronization boundary between different clock domains using two-hot encoding
JP6517243B2 (ja) リンクレイヤ/物理レイヤ(phy)シリアルインターフェース
EP0380856A2 (en) Method and apparatus for interfacing a system control unit for a multi-processor
US20090086874A1 (en) Apparatus and method of elastic buffer control
JPH02227765A (ja) デジタル・コンピユータのデータ転送装置
JPH11505047A (ja) ソース同期クロック型データリンク
US20090323728A1 (en) Asynchronous data fifo that provides uninterrupted data flow
KR20150090860A (ko) 유효 인코딩을 위한 방법 및 장치
US20110194651A1 (en) Serial data receiver circuit apparatus and serial data receiving method
WO2016086038A1 (en) Error detection constants of symbol transition clocking transcoding
CN102708086A (zh) 一种应用于usb3.0的弹性缓冲结构及方法
US20230239256A1 (en) Wide Elastic Buffer
JP2008234222A (ja) Usbコントローラ及びusbコントローラ試験方法
GB2235995A (en) Apparatus for read handshake in high-speed asynchronous bus interface
US20120317380A1 (en) Device and method for a half-rate clock elasticity fifo
JP4917901B2 (ja) 受信装置
JP2003530735A (ja) リングバッファフローエラーの検出のための方法および装置
CN116318601A (zh) 用于高速信令互连的帧对齐恢复
US10360169B2 (en) Asynchronous interface
CN114185822B (zh) 多指针弹性缓冲器、增删控制字符的方法及存储介质

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