CN118312459A - 用于弹性缓存频差补偿的控制方法、计算机设备及介质 - Google Patents

用于弹性缓存频差补偿的控制方法、计算机设备及介质 Download PDF

Info

Publication number
CN118312459A
CN118312459A CN202410718621.7A CN202410718621A CN118312459A CN 118312459 A CN118312459 A CN 118312459A CN 202410718621 A CN202410718621 A CN 202410718621A CN 118312459 A CN118312459 A CN 118312459A
Authority
CN
China
Prior art keywords
buffer
read
sub
cache
special symbol
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.)
Granted
Application number
CN202410718621.7A
Other languages
English (en)
Other versions
CN118312459B (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.)
Xinyaohui Technology Co ltd
Original Assignee
Xinyaohui 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 Xinyaohui Technology Co ltd filed Critical Xinyaohui Technology Co ltd
Priority to CN202410718621.7A priority Critical patent/CN118312459B/zh
Publication of CN118312459A publication Critical patent/CN118312459A/zh
Application granted granted Critical
Publication of CN118312459B publication Critical patent/CN118312459B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

本申请涉及计算机技术领域并一种用于弹性缓存频差补偿的控制方法、计算机设备及介质。方法包括:确定第一接口协议标准所限定的特殊符号指令集发送间隔,用于特殊符号指令集的删除操作或者复制操作的符号数,以及写时钟域与读时钟域之间的最大频差;基于所述特殊符号指令集发送间隔、所述符号数以及所述最大频差,计算特殊符号指令集之间的最大符号偏差;基于所述最大符号偏差计算弹性缓存的最大缓存深度,以及,划分所述弹性缓存为等大小的多个子缓存空间。如此,降低逻辑计数和数据传输时间,可以适配不同频点、不同数据传输速率的数据传输需求以及适配各种不同协议标准。

Description

用于弹性缓存频差补偿的控制方法、计算机设备及介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种用于弹性缓存频差补偿的控制方法、计算机设备及介质。
背景技术
在高速数据传输的应用中,例如大型数据中心,高性能计算中心,云计算平台等,一般采用高速串行化的数据传输协议,将时钟信号嵌入到串行数据中发送,在接收端通过时钟数据恢复(Clock and Data Recovery,CDR)来得到恢复出的时钟,再进行数据采样。但是,恢复出的时钟与接收端的本地时钟不同步,可能存在一定的频差和相位差异。为了避免因为频差而导致数据丢失和传输错误,可以使用弹性缓存来吸收两者的频差。并且,数据传输协议例如快捷外围组件互连(Peripheral Component Interconnect Express,PCIe)总线规范定义了专门用于补偿时钟频差的特殊符号序列,通过在PCIe总线上插入特殊符号序列,与有效数据序列一起进入弹性缓存,有助于解决两边时钟频差问题。现有技术中,为了能够向下兼容旧版本的数据传输协议例如PCIe1.0和PCIe2.0,采用了复杂的检测逻辑来进行指令集检测以及进行读写指针控制,因此导致过大的组合逻辑级数,不利于满足高速时钟下的时序要求,也难以灵活地适配不同频点、不同数据传输速率的数据传输需求。
为此,本申请提供了一种用于弹性缓存频差补偿的控制方法、计算机设备及介质,用于应对现有技术中的技术难题。
发明内容
第一方面,本申请提供了一种用于弹性缓存频差补偿的控制方法。所述控制方法包括:确定第一接口协议标准所限定的特殊符号指令集发送间隔,用于特殊符号指令集的删除操作或者复制操作的符号数,以及写时钟域与读时钟域之间的最大频差;基于所述特殊符号指令集发送间隔、所述符号数以及所述最大频差,计算特殊符号指令集之间的最大符号偏差;基于所述最大符号偏差计算弹性缓存的最大缓存深度,以及,划分所述弹性缓存为等大小的多个子缓存空间,其中,所述多个子缓存空间中的每一个子缓存空间的缓存深度不小于所述符号数的两倍。其中,所述弹性缓存的写入控制包括:将每拍的待写入数据按照符号粒度划分为第一数量的符号,然后,基于写使能控制信号将所述第一数量的符号依次写入所述多个子缓存空间中的所述第一数量的子缓存空间,以及,对所述写时钟域的写指针每拍增加所述第一数量,所述写指针被同步到所述读时钟域得到同步后写指针。所述弹性缓存的读取控制包括:基于所述同步后写指针和所述读时钟域的读指针,计算相对于所述最大缓存深度的已使用缓存深度,然后,通过比较所述已使用缓存深度和所述最大缓存深度,生成多个缓存状态指示信号,以及,针对所述多个子缓存空间中的每一个子缓存空间,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,再基于所述多个子缓存空间各自对应的读使能控制信号来维持或者调整所述读指针。
通过本申请的第一方面,降低了弹性缓存整体上的逻辑级数,也就降低了整体的数据传输时延,而且可以适配不同频点、不同数据传输速率的数据传输需求以及适配各种规范了数据传输有关细节的协议标准,能兼容新旧设备的组网需求,以及有助于维持弹性缓存的半满模式,有利于满足高速时钟下的时序要求。
在本申请的第一方面的一种可能的实现方式中,所述多个缓存状态指示信号包括向上溢出状态指示信号,向下溢出状态指示信号,高于上限阈值状态指示信号以及低于下限阈值状态指示信号,所述向上溢出状态指示信号和所述向下溢出状态指示信号均用于指示状态异常操作,所述高于上限阈值状态指示信和所述低于下限阈值状态指示信号均用于指示数据处理操作。
在本申请的第一方面的一种可能的实现方式中,所述弹性缓存的读取控制还包括:针对所述多个子缓存空间中的每一个子缓存空间,基于该子缓存空间的读使能控制信号和特殊符号指令集操作指示,选择性地执行所述特殊符号指令集的删除操作,所述特殊符号指令集的复制操作,所述数据处理操作,或者,所述状态异常操作,从而生成该子缓存空间的输出数据。
在本申请的第一方面的一种可能的实现方式中,所述向上溢出状态指示信号用于指示所述已使用缓存深度大于所述最大缓存深度的设计上限,所述向下溢出状态指示信号用于指示所述已使用缓存深度小于所述最大缓存深度的设计下限,所述高于上限阈值状态指示信号用于指示所述已使用缓存深度大于所述最大缓存深度相关联的上限阈值,所述低于下限阈值状态指示信号用于指示所述已使用缓存深度小于所述最大缓存深度相关联的下限阈值。
在本申请的第一方面的一种可能的实现方式中,所述最大缓存深度的设计上限是所述最大缓存深度的一半,所述最大缓存深度的设计下限是所述最大缓存深度的一半。
在本申请的第一方面的一种可能的实现方式中,针对所述多个子缓存空间中的每一个子缓存空间,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,包括:通过对该子缓存空间的当前读取数据进行码型对比来确定所述第一接口协议标准相关联的特殊符号指令集的匹配结果,从而生成所述特殊符号指令集操作指示;当所述向上溢出状态指示信号为高时,设定该子缓存空间的读使能控制信号以便多读一拍数据;当所述向下溢出状态指示信号为高时,设定该子缓存空间的读使能控制信号以便停止读一拍数据;当所述高于上限阈值状态指示信号为高并且所述特殊符号指令集操作指示特殊符号指令集的删除操作时,设定该子缓存空间的读使能控制信号以便多读所述符号数的特殊符号用于所述特殊符号指令集的删除操作;当所述低于下限阈值状态指示信号为高并且所述特殊符号指令集操作指示特殊符号指令集的复制操作时,设定该子缓存空间的读使能控制信号以便停止读一拍数据以及执行所述特殊符号指令集的复制操作;当所述向上溢出状态指示信号、所述向下溢出状态指示信号、所述高于上限阈值状态指示信号以及所述低于下限阈值状态指示信号均为低时,设定该子缓存空间的读使能控制信号以便多读所述符号数的数据。
在本申请的第一方面的一种可能的实现方式中,所述多个子缓存空间的总数是偶数,基于所述多个子缓存空间各自对应的读使能控制信号来维持或者调整所述读指针,包括:当所述多个子缓存空间各自对应的读使能控制信号均为高时,对所述读指针每拍增加第二数量,其中,所述第二数量是所述多个子缓存空间的总数;当所述多个子缓存空间中的一半的子缓存空间各自对应的读使能控制信号均为高时,对所述读指针每拍增加第三数量,所述第三数量是所述第二数量的一半;当所述读指针达到所述最大缓存深度时,复位所述读指针。
在本申请的第一方面的一种可能的实现方式中,所述控制方法还包括:基于所述多个子缓存空间各自的输出数据,生成所述弹性缓存的输出数据从而实现所述写时钟域与所述读时钟域之间的频差补偿。
在本申请的第一方面的一种可能的实现方式中,当所述第一接口协议标准是快捷外围组件互连标准1.0或者快捷外围组件互连标准2.0时,所述符号数是1个,并且,当所述第一接口协议标准是快捷外围组件互连标准3.0或者快捷外围组件互连标准5.0时,所述符号数是4个,并且,当所述第一接口协议标准是通用串行总线标准时,所述符号数是2个。
在本申请的第一方面的一种可能的实现方式中,所述最大缓存深度包括用于时钟跨步处理的硬件必要深度。
在本申请的第一方面的一种可能的实现方式中,所述第一接口协议标准是快捷外围组件互连标准1.0,快捷外围组件互连标准2.0,快捷外围组件互连标准3.0,快捷外围组件互连标准4.0,快捷外围组件互连标准5.0,或者,通用串行总线标准。
在本申请的第一方面的一种可能的实现方式中,所述弹性缓存用于快捷外围组件互连标准接收端,所述写时钟域是所述快捷外围组件互连标准接收端通过时钟数据恢复得到的恢复时钟域,所述读时钟域是所述快捷外围组件互连标准接收端的本地时钟域。
在本申请的第一方面的一种可能的实现方式中,所述符号粒度是所述第一数量的符号中每一个符号所占据的比特数,所述符号粒度是基于所述弹性缓存的编码方案确定,所述第一接口协议标准所限定的速率是基于所述每拍的待写入数据的写数据位宽和工作时钟频率确定,调整所述工作时钟频率是通过调整所述第一数量。
在本申请的第一方面的一种可能的实现方式中,所述写指针被同步到所述读时钟域得到所述同步后写指针,包括:基于所述第一数量,对所述写指针右移所述第一数量的比特数,然后,基于第一偏移量进行偏移再进行格雷码转换得到所述同步后写指针,其中,所述第一偏移量是基于所述每拍的待写入数据的写数据位宽。
在本申请的第一方面的一种可能的实现方式中,基于所述同步后写指针和所述读时钟域的读指针,计算相对于所述最大缓存深度的所述已使用缓存深度,包括:基于所述同步后写指针、所述读时钟域的读指针以及预设的第一设定值,计算所述已使用缓存深度,其中,所述第一设定值是基于每拍延时的符号个数。
在本申请的第一方面的一种可能的实现方式中,所述弹性缓存包括写指针控制器,读指针控制器,检测模块以及同步模块,其中,所述写指针控制器用于所述弹性缓存的写入控制,所述读指针控制器用于所述弹性缓存的读取控制,所述同步模块用于同步所述写指针到所述读时钟域得到所述同步后写指针,所述检测模块用于对所述多个子缓存空间中的每一个子缓存空间的当前读取数据进行码型对比来确定所述第一接口协议标准相关联的特殊符号指令集的匹配结果。
在本申请的第一方面的一种可能的实现方式中,所述特殊符号指令集是SKP序列。
在本申请的第一方面的一种可能的实现方式中,所述弹性缓存是异步先进先出缓存,所述最大缓存深度是基于所述异步先进先出缓存相关联的传输时延要求和性能功率面积要求。
第二方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
第四方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种用于频差补偿的弹性缓存的示意图;
图2为本申请实施例提供的一种用于弹性缓存频差补偿的控制方法的流程示意图;
图3为本申请实施例提供的一种弹性缓存的内部结构的示意图;
图4为本申请实施例提供的一种弹性缓存的多个子缓存空间的示意图;
图5为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合附图对本申请实施例作进一步地详细描述。
应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
图1为本申请实施例提供的一种用于频差补偿的弹性缓存的示意图。如图1所示,发送端在写时钟域102,写入有效数据120和特殊符号指令集130到弹性缓存110。接收端在读时钟域104,从弹性缓存110中读取数据,补偿时钟频差同时也要满足高速时钟下的时序要求。这里,发送端的写时钟域102与接收端的读时钟域104之间可能存在频差和相位差异,并且,取决于具体应用场景例如不同频点、不同数据传输速率的数据传输需求,以及取决于具体采用的数据传输协议的规范,对用于频差补偿的弹性缓存110提出了不同的要求。在高速数据传输的应用中,例如大型数据中心,高性能计算中心,云计算平台等,一般采用高速串行化的数据传输协议,将时钟信号嵌入到串行数据中发送,在接收端通过时钟数据恢复(Clock and Data Recovery,CDR)来得到恢复出的时钟,再进行数据采样。例如,快捷外围组件互连(Peripheral Component Interconnect Express,PCIe)总线规范定义了专门用于补偿时钟频差的特殊符号序列,通过在PCIe总线上插入特殊符号序列,与有效数据序列一起进入弹性缓存,有助于解决两边时钟频差问题。如图1所示,发送端将有效数据120和特殊符号指令集130写入到弹性缓存110,因此,特殊符号序列和有效数据序列各自在弹性缓存110中占有一定的空间。当写入数据的时钟频率也即恢复出的时钟频率,大于读取数据的时钟频率也即接收端的本地时钟频率时,这可能导致进入弹性缓存110的数据发生累积,为了避免缓存溢出导致数据丢失,可以通过执行特殊符号指令集相关的操作,这样可以空出来一些特殊符号原本占据的位置,有效地避免了缓存溢出和数据丢失。相对的,当写入数据的时钟频率也即恢复出的时钟频率,小于读取数据的时钟频率也即接收端的本地时钟频率时,这可能导致弹性缓存110中的数据过少,可以通过执行特殊符号指令集相关的操作,插入特殊符号以填充弹性缓存110中的一些空间。如此,通过检测弹性缓存110的有关状态,并作出响应,执行特殊符号指令集相关的操作,可以应对时钟频差问题,也即做出频差补偿。在一些实施例中,弹性缓存110可以用异步先进先出(first in first out,FIFO)存储器来实现,使用恢复时钟将数据写入缓存,同时判断缓存状态决定是否要删除特殊符号例如SKP字符;使用本地时钟将数据从缓存取出,同时判断缓存状态决定是否要复制SKP字符。因为涉及到两边时钟域之间的频差补偿,因此需要考虑读指针和写指针之间的跨时钟域同步需要,这意味着弹性缓存110必须具备足够的深度才能吸收跨异步延时。并且,考虑到实际应用中,新旧设备可能一起组网,需要兼容不同频点、不同数据传输速率的数据传输需求,例如需要兼容旧版本的数据传输协议例如PCIe1.0和PCIe2.0,这些给弹性缓存110的检测逻辑和控制逻辑的设计提出了挑战。另外,为了避免过大的数据传输延时,为了满足低时延要求和高速时钟下的时序要求,在弹性缓存110的控制方法的设计上,需要避免过大的组合逻辑级数,但是同时要能够在不同频点、不同数据传输速率的数据传输需求下满足读指针和写指针之间的跨时钟域同步需要以及灵活地适配新旧设备和新旧数据传输协议。下面结合本申请具体实施例,详细说明本申请实施例提供的一种用于弹性缓存频差补偿的控制方法、计算机设备及介质,如何实现了在不同频点、不同数据传输速率的数据传输需求下满足读指针和写指针之间的跨时钟域同步需要以及灵活地适配新旧设备和新旧数据传输协议,并且显著降低了组合逻辑级数的复杂度以及有效地降低了跨异步同步过程中的出错概率。
图2为本申请实施例提供的一种用于弹性缓存频差补偿的控制方法的流程示意图。如图2所示,控制方法包括以下步骤。
S210:确定第一接口协议标准所限定的特殊符号指令集发送间隔,用于特殊符号指令集的删除操作或者复制操作的符号数,以及写时钟域与读时钟域之间的最大频差。
S220:基于所述特殊符号指令集发送间隔、所述符号数以及所述最大频差,计算特殊符号指令集之间的最大符号偏差。
S230:基于所述最大符号偏差计算弹性缓存的最大缓存深度,以及,划分所述弹性缓存为等大小的多个子缓存空间,其中,所述多个子缓存空间中的每一个子缓存空间的缓存深度不小于所述符号数的两倍。
其中,所述弹性缓存的写入控制包括:将每拍的待写入数据按照符号粒度划分为第一数量的符号,然后,基于写使能控制信号将所述第一数量的符号依次写入所述多个子缓存空间中的所述第一数量的子缓存空间,以及,对所述写时钟域的写指针每拍增加所述第一数量,所述写指针被同步到所述读时钟域得到同步后写指针。所述弹性缓存的读取控制包括:基于所述同步后写指针和所述读时钟域的读指针,计算相对于所述最大缓存深度的已使用缓存深度,然后,通过比较所述已使用缓存深度和所述最大缓存深度,生成多个缓存状态指示信号,以及,针对所述多个子缓存空间中的每一个子缓存空间,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,再基于所述多个子缓存空间各自对应的读使能控制信号来维持或者调整所述读指针。
参阅图2,在步骤S210,确定第一接口协议标准所限定的特殊符号指令集发送间隔,用于特殊符号指令集的删除操作或者复制操作的符号数,以及写时钟域与读时钟域之间的最大频差。这里,第一接口协议指的是用于高速数据传输的通信协议或者数据传输协议等。上面提到,在高速数据传输的应用中,例如大型数据中心,高性能计算中心,云计算平台等,一般采用高速串行化的数据传输协议,将时钟信号嵌入到串行数据中发送,在接收端通过时钟数据恢复(Clock and Data Recovery,CDR)来得到恢复出的时钟,再进行数据采样。例如,快捷外围组件互连(Peripheral Component Interconnect Express,PCIe)总线规范定义了专门用于补偿时钟频差的特殊符号序列,通过在PCIe总线上插入特殊符号序列,与有效数据序列一起进入弹性缓存,有助于解决两边时钟频差问题。例如,第一接口协议是PCIE5.0。采用PCI-SIG组织制定的PCIe5.0的有关规范,要求向下兼容PCIe4.0、PCIe3.0、PCIe2.0和PCIe1.0,并且可以采用物理接口(Physical Interface for PCIExpress,PIPE)规范。取决于具体的协议标准,可以对数据传输方面的细节做出具体的限定,例如,PCIe5.0限定了,波特率为32Gbps,采用128b130b编码方式,写数据位宽为32bit,工作时钟为1GHz,每拍4个符号,每次删除或者复制4个SKP符号。其他的协议标准可以做出不同的限定,例如不同的波特率,写数据位宽,还有每拍多少个符号等。为了使得用于弹性缓存频差补偿的控制方法可以适配不同频点、不同数据传输速率的数据传输需求以及适配各种规范了数据传输有关细节的协议标准,在步骤S210,确定第一接口协议标准所限定的特殊符号指令集发送间隔,用于特殊符号指令集的删除操作或者复制操作的符号数,以及写时钟域与读时钟域之间的最大频差。这里,特殊符号指令集发送间隔指的是例如发送端前后两次发送特殊符号指令集例如SKP指令集的间隔。用于特殊符号指令集的删除操作或者复制操作的符号数,指的是每次要执行特殊符号指令集相关操作时,删除或者复制多少个特殊符号,例如每次删除或者复制的SKP符号的数量。写时钟域与读时钟域之间的最大频差指的是例如接收端恢复出的时钟与接收端的本地时钟之间的最大频差,这是一个性能指标用于衡量整体数据传输性能。以PCIe5.0的具体规范为例,当发送端和接收端的时钟结构为独立参考时钟并且支持扩频时钟(Spread Spectrum Clocking,SSC)时,本地时钟和恢复时钟的最大频差为5600百万分之一(part per million,ppm),因此导致平均每178个时钟会产生一个时钟周期的偏差;PCIe5.0要求发送端前后两次发送SKP指令集的间隔为38个数据块,每个数据块由16个符号构成;同时在完整的数据包中间禁止发送SKP指令集。因此,当第一接口协议标准是PCIe5.0时,可以确定第一接口协议标准所限定的特殊符号指令集发送间隔是38个数据块,用于特殊符号指令集的删除操作或者复制操作的符号数是4个,以及写时钟域与读时钟域之间的最大频差是5600百万分之一。当第一接口协议标准是其他协议标准时,例如第一接口协议标准是PCIe1.0时,可以确定用于特殊符号指令集的删除操作或者复制操作的符号数是1个。如此,利用在步骤S210确定的第一接口协议标准所限定的特殊符号指令集发送间隔,用于特殊符号指令集的删除操作或者复制操作的符号数,以及写时钟域与读时钟域之间的最大频差,如此,可以灵活适配多种协议需求,这样有利于兼容各种不同的PCIe设备,包括采用PCIe5.0的新设备,以及向下兼容PCIe2.0和PCIe1.0的旧设备,有利于在数据中心和云计算等应用。并且,在步骤S210确定的这些信息,可用于后续的读写控制和特殊符号指令集相关操作的指示生成,下面详细说明。
继续参阅图2,在步骤S220,基于所述特殊符号指令集发送间隔、所述符号数以及所述最大频差,计算特殊符号指令集之间的最大符号偏差。这里,为了实现弹性缓存频差补偿,需要使得弹性缓存具有足够的深度,才能吸收两边时钟之间的频差。为此,弹性缓存需要满足两次特殊符号指令集之间的最大符号偏差,这里,可以利用所述特殊符号指令集发送间隔、所述符号数以及所述最大频差,从而计算出特殊符号指令集之间的最大符号偏差。以上面提到的PCIe5.0为例,当第一接口协议标准是PCIe5.0时,可以确定第一接口协议标准所限定的特殊符号指令集发送间隔是38个数据块,用于特殊符号指令集的删除操作或者复制操作的符号数是4个,以及写时钟域与读时钟域之间的最大频差是5600百万分之一,并且,每个数据块由16个符号构成。如此,可以计算出平均每178个时钟会产生一个时钟周期的偏差,这里假设数据包最大长度是4096个符号,一般需要弹性缓存的工作模式为半满模式也就是说尽量将已使用的缓存深度维持在总缓存深度的一半位置。如此,可以计算得到特殊符号指令集之间的最大符号偏差大约是27。这里,如果第一接口协议标准是其他协议标准如PCIe1.0,则可以计算得到对应的特殊符号指令集之间的最大符号偏差。应当理解的是,在步骤S220计算特殊符号指令集之间的最大符号偏差,是考虑到维持弹性缓存的半满模式,这样有助于后续的读写指针控制和特殊符号指令集操作,因此,利用在步骤S210和步骤S220确定的有关细节,可以灵活适配多种协议需求以及适配各种设备。
继续参阅图2,在步骤S230,基于所述最大符号偏差计算弹性缓存的最大缓存深度,以及,划分所述弹性缓存为等大小的多个子缓存空间。其中,所述多个子缓存空间中的每一个子缓存空间的缓存深度不小于所述符号数的两倍。弹性缓存的最大缓存深度也即可以提供的总缓存空间,是基于上面得到的所述最大符号偏差计算得到。一般地,最大缓存深度是基于协议标准及应用需求计算,具体基于特殊符号指令集如SKP指令集之间的最大符号偏差,还要再加上硬件实现所需的缓存深度。这里,硬件实现所需的缓存深度指的是用于实现时钟跨步处理的必要深度,一般与协议和应用无关。上面提到,当第一接口协议标准是PCIe5.0时,SKP指令集之间的最大符号偏差(27)是基于数据包的最大长度(这个设为4096,可以根据应用场景确定),SKP指令集发送间隔(38,由协议确定),本地时钟和恢复时钟的最大频差(性能指标,由协议确定),并且基于5600百万分之一的最大频差推算得到平均每178个时钟会产生一个时钟周期的偏差。如此,基于计算得到的弹性缓存的最大缓存深度,可以划分所述弹性缓存为等大小的多个子缓存空间。例如,基于上述确定的最大缓存深度(72),可以按照各种合适方式划分最大缓存深度得到多个子缓存空间,例如划分得到8个子缓存空间每个深度为9,又例如,划分得到4个子缓存空间每个深度为18。这里,具体的划分方式要考虑到协议标准要求的每次删除或者复制的SKP的符号数。应当理解的是,协议标准要求的每次删除或者复制的SKP的符号数不同于协议标准要求发送端两次发送SKP指令集的间隔(38个数据块)。这里,所述多个子缓存空间中的每一个子缓存空间的缓存深度不小于所述符号数的两倍。如此,这意味着每一个子缓存空间的缓存深度大于或者等于用于特殊符号指令集的删除操作或者复制操作的符号数的两倍,例如当用于特殊符号指令集的删除操作或者复制操作的符号数是4个时,每一个子缓存空间的缓存深度不小于8个。如此,可以每次读取或者删除8个符号数,也即可以读取或者删除两倍于用于特殊符号指令集的删除操作或者复制操作的符号数,从而有效地改进了特殊符号指令集相关操作的性能表现,有助于降低数据传输延时。进一步地,在最大缓存深度确定的基础上,如果划分出来更多的子缓存空间,意味着更高的并行度,有利于降低逻辑级数和降低时延,但是更多的子缓存空间也就意味着需要降低每个子缓存空间的最大深度(例如最大缓存深度是72时,可以划分为8个子缓存空间每个深度9,或者可以划分为12个子缓存空间每个深度6)。因此,子缓存空间的深度是受到协议标准要求的删除或者复制的SKP符号数的个数限制的。如果子缓存空间的深度太低,则不利于后续执行协议标准要求的删除或者复制SKP的操作。因此需要均衡化的划分方式,在满足划分后的子缓存空间的深度不小于,也即大于或者等于,所述符号数的两倍的前提下,尽量增加并行度,提高整体数据传输性能。
继续参阅图2,从步骤S210到步骤S230,计算得到了弹性缓存的最大缓存深度,以及确定了具体划分方式,也即划分所述弹性缓存为等大小的多个子缓存空间。如此,可以通过多个子缓存空间之间的并行化操作,降低了弹性缓存整体上的逻辑级数,也就降低了整体的数据传输时延。并且,可以适配不同频点、不同数据传输速率的数据传输需求以及适配各种规范了数据传输有关细节的协议标准,能兼容新旧设备的组网需求,以及有助于维持弹性缓存的半满模式,这样有助于后续的读写指针控制和特殊符号指令集操作。下面详细说明,在上述确定的最大缓存深度以及划分方式的基础上,如何结合子缓存空间的硬件实现方式,提供子缓存空间的指示信号生成机制以及特殊符号指令集操作指示生成机制。其中,所述弹性缓存的写入控制包括:将每拍的待写入数据按照符号粒度划分为第一数量的符号,然后,基于写使能控制信号将所述第一数量的符号依次写入所述多个子缓存空间中的所述第一数量的子缓存空间,以及,对所述写时钟域的写指针每拍增加所述第一数量,所述写指针被同步到所述读时钟域得到同步后写指针。这里,每拍的待写入数据是可以根据具体协议标准所限定的波特率也即协议标准规定的传输速率来做出调节。一般地,通过增加写数据位宽可以降低时钟频率,而通过降低写数据位宽可以增加时钟频率。例如,写数据位宽是32比特,每个符号是8个比特,则每拍写入4个符号,实质上调节的是工作时钟频率,进而调节写数据位宽也就是调节每拍数据为多少个符号。这里,将每拍的待写入数据按照符号粒度划分为第一数量的符号,符号粒度指的是每个符号占的比特数,例如一个符号占8个比特,这取决于编码方案。基于写使能控制信号将所述第一数量的符号依次写入所述多个子缓存空间中的所述第一数量的子缓存空间,这意味着,在划分为第一数量的符号后,写入所述第一数量的子缓存空间。例如,设第一数量是4,也即将每拍的待写入数据例如32比特的待写入数据,按照符号粒度划分为4个符号,则将该4个符号依次写入4个子缓存空间。假设有8个子缓存空间编号为0到7,则将当前拍的待写入数据划分得到的4个符号依次写入编号为0、1、2、3的子缓存空间;然后,将下一拍的待写入数据划分得到的4个符号依次写入编号为4、5、6、7的子缓存空间。如此循环以完成所述弹性缓存的写入控制。再例如,设第一数量是2,也即将每拍的待写入数据例如32比特的待写入数据,按照符号粒度划分为2个符号,则将该2个符号依次写入2个子缓存空间。仍然假设有8个子缓存空间编号为0到7,则将当前拍的待写入数据划分得到的2个符号依次写入编号为0、1的子缓存空间;然后,将下一拍的待写入数据划分得到的2个符号依次写入编号为2、3的子缓存空间,如此循环直到完成所述弹性缓存的写入控制。并且,取决于第一数量,还对所述写时钟域的写指针每拍增加所述第一数量。例如,在第一数量为4时,将每拍的待写入数据例如32比特的待写入数据,按照符号粒度划分为4个符号,则将该4个符号依次写入4个子缓存空间,并且,对所述写时钟域的写指针每拍增加4,当计数达到最大深度时则归零重新计数。再例如,在第一数量为4时,将每拍的待写入数据例如32比特的待写入数据,按照符号粒度划分为2个符号,则将该2个符号依次写入2个子缓存空间,并且,对所述写时钟域的写指针每拍增加2,当计数达到最大深度时则归零重新计数。因此,数据的写入是基于第一数量,将所述第一数量的符号依次写入所述多个子缓存空间中的所述第一数量的子缓存空间。写指针信号的生成也是基于第一数量,对所述写时钟域的写指针每拍增加所述第一数量。如此,在上述的划分所述弹性缓存为等大小的多个子缓存空间从而增加并行度的基础上,通过上述的所述弹性缓存的写入控制,使得写指针信号的生成可以结合数据的写入,从而可用于读指针的控制以及用于计算已使用缓存深度。另外,所述写指针被同步到所述读时钟域得到同步后写指针。在一些实施例中,基于生成的写指针信号,先进行偏移再进行格雷码转换(例如,按照2的整数次幂),得到同步后写指针。
继续参阅图2,如上所述,可以通过多个子缓存空间之间的并行化操作,降低了弹性缓存整体上的逻辑级数,也就降低了整体的数据传输时延。并且,可以适配不同频点、不同数据传输速率的数据传输需求以及适配各种规范了数据传输有关细节的协议标准,能兼容新旧设备的组网需求,以及有助于维持弹性缓存的半满模式,这样有助于后续的读写指针控制和特殊符号指令集操作。其中,所述弹性缓存的读取控制包括:基于所述同步后写指针和所述读时钟域的读指针,计算相对于所述最大缓存深度的已使用缓存深度,然后,通过比较所述已使用缓存深度和所述最大缓存深度,生成多个缓存状态指示信号,以及,针对所述多个子缓存空间中的每一个子缓存空间,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,再基于所述多个子缓存空间各自对应的读使能控制信号来维持或者调整所述读指针。上面提到,在上述的划分所述弹性缓存为等大小的多个子缓存空间从而增加并行度的基础上,通过上述的所述弹性缓存的写入控制,使得写指针信号的生成可以结合数据的写入,从而可用于读指针的控制以及用于计算已使用缓存深度。这里,基于所述同步后写指针和所述读时钟域的读指针,计算相对于所述最大缓存深度的已使用缓存深度。可以通过比较所述同步后写指针和所述读时钟域的读指针,例如计算所述同步后写指针减去所述读时钟域的读指针的差值,另外,还可以考虑到用于补偿写指针因跨异步产生的延时的设定值如12。这里,用于补偿写指针因跨异步产生的延时的设定值可以调节,设定值是延时的拍数乘以每拍的符号数,例如3拍延时每拍4个符号,或者6拍延时每拍2个符号。如此,计算得到相对于所述最大缓存深度的已使用缓存深度,这是对弹性缓存的整体状态判断,可用于后续的对子缓存空间的个体控制。首先,通过比较所述已使用缓存深度和所述最大缓存深度,生成多个缓存状态指示信号。这里,多个子缓存状态指示信号是适用于所有子缓存空间,代表了对弹性缓存的整体状态判断。接着,针对所述多个子缓存空间中的每一个子缓存空间,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,再基于所述多个子缓存空间各自对应的读使能控制信号来维持或者调整所述读指针。这里,每个子缓存空间的当前读取数据,可能是弹性缓存中的有效数据序列,也可能是弹性缓存中的特殊符号指令集。上面提到,通过在PCIe总线上插入特殊符号序列,与有效数据序列一起进入弹性缓存,有助于解决两边时钟频差问题。因此,取决于每个子缓存空间的当前读取数据,可以采用有效数据序列的操作,也可以采用针对特殊符号序列的操作;并且,取决于弹性缓存的整体状态判断,也即基于所述多个缓存状态指示信号,可能需要优先处理弹性缓存的异常,例如,弹性缓存中数据累积过多可能导致上溢和数据丢失,再例如,弹性缓存中数据过少可能导致下溢和性能下降。如此,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,可以优先处理异常状态,在不存在异常状态下再优先处理特殊符号指令集相关操作(也即检测到特殊符号序列并执行特殊符号序列的有关c操作),最后再执行有效数据序列的有关操作。最后,基于所述多个子缓存空间各自对应的读使能控制信号来维持或者调整所述读指针,这意味着,根据所述多个子缓存空间各自对应的读使能控制信号,对所述读时钟域的读指针进行调节,这样就实现了读指针和写指针之间的跨时钟域同步,从而可以适配不同频点、不同数据传输速率的数据传输需求下的频差补偿要求。
参阅图2,应当理解的是,通过从步骤S210到步骤S230,确定了一系列参数,这些参数用于在控制层面来对弹性缓存进行划分,以及对划分后得到的多个子缓存空间进行控制。如此,可以利用多个子缓存空间提升整体控制的并行度,进而降低逻辑级数和降低时延。并且,通过参数化的设计,可以适配不同的协议标准和不同的应用需求,例如基于特定的数据包最大长度,特殊符号指令集发送间隔等,进而对所述弹性缓存的写入控制以及所述弹性缓存的读取控制施加影响,从而对弹性缓存的整体状态判断施加影响,以及对子缓存空间各自的读使能控制信号和特殊符号指令集操作指示的生成施加影响,最后再对弹性缓存的读指针的调节以及弹性缓存要执行的数据处理操作或者特殊符号指令集操作施加影响。并且,在通过多个子缓存空间来提高并行度的基础上,限定了所述多个子缓存空间中的每一个子缓存空间的缓存深度不小于所述符号数的两倍,如此,可以读取或者删除两倍于用于特殊符号指令集的删除操作或者复制操作的符号数,从而有效地改进了特殊符号指令集相关操作的性能表现,有助于降低数据传输延时。并且,围绕划分所述弹性缓存为等大小的多个子缓存空间从而增加并行度这一设计特点,对所述弹性缓存的写入控制做出优化设计,对每拍的待写入数据的具体写入方式以及对所述写时钟域的写指针的生成都做出了优化设计,这样可以根据具体协议标准所限定的波特率也即协议标准规定的传输速率来做出调节,更好的适配协议标准提出的要求,以及利用所述写指针被同步到所述读时钟域得到同步后写指针,从而可以配合所述弹性缓存的读取控制,实现了高并行度的弹性缓存频差补偿。如此,面对不同频点、不同数据传输速率的数据传输需求,面对不同设备、不同数据传输协议之间的差异,可以通过调节相关的参数,进而对所述弹性缓存的写入控制以及所述弹性缓存的读取控制施加影响,不仅利用多个子缓存空间之间的并行化操作,降低了弹性缓存整体上的逻辑级数,也就降低了整体的数据传输时延,而且可以适配不同频点、不同数据传输速率的数据传输需求以及适配各种规范了数据传输有关细节的协议标准,能兼容新旧设备的组网需求,以及有助于维持弹性缓存的半满模式,有利于满足高速时钟下的时序要求。
在一种可能的实施方式中,所述多个缓存状态指示信号包括向上溢出状态指示信号,向下溢出状态指示信号,高于上限阈值状态指示信号以及低于下限阈值状态指示信号,所述向上溢出状态指示信号和所述向下溢出状态指示信号均用于指示状态异常操作,所述高于上限阈值状态指示信和所述低于下限阈值状态指示信号均用于指示数据处理操作。计算得到相对于所述最大缓存深度的已使用缓存深度,这是对弹性缓存的整体状态判断,可用于后续的对子缓存空间的个体控制。首先,通过比较所述已使用缓存深度和所述最大缓存深度,生成多个缓存状态指示信号。这里,多个子缓存状态指示信号是适用于所有子缓存空间,代表了对弹性缓存的整体状态判断。取决于每个子缓存空间的当前读取数据,可以采用有效数据序列的操作,也可以采用针对特殊符号序列的操作;并且,取决于弹性缓存的整体状态判断,也即基于所述多个缓存状态指示信号,可能需要优先处理弹性缓存的异常,例如,弹性缓存中数据累积过多可能导致上溢和数据丢失,再例如,弹性缓存中数据过少可能导致下溢和性能下降。如此,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,可以优先处理异常状态,在不存在异常状态下再优先处理特殊符号指令集相关操作(也即检测到特殊符号序列并执行特殊符号序列的有关c操作),最后再执行有效数据序列的有关操作。这里,所述向上溢出状态指示信号和所述向下溢出状态指示信号均用于指示状态异常操作,因此可用于指示优先处理异常状态,包括上溢和下溢。所述高于上限阈值状态指示信和所述低于下限阈值状态指示信号均用于指示数据处理操作,因此,可以结合特殊符号指令集操作指示,实现了在不存在异常状态的情况下,优先处理特殊符号指令集相关操作。
在一些实施例中,所述弹性缓存的读取控制还包括:针对所述多个子缓存空间中的每一个子缓存空间,基于该子缓存空间的读使能控制信号和特殊符号指令集操作指示,选择性地执行所述特殊符号指令集的删除操作,所述特殊符号指令集的复制操作,所述数据处理操作,或者,所述状态异常操作,从而生成该子缓存空间的输出数据。如此,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,可以优先处理异常状态,在不存在异常状态下再优先处理特殊符号指令集相关操作(也即检测到特殊符号序列并执行特殊符号序列的有关c操作),最后再执行有效数据序列的有关操作。最后,基于所述多个子缓存空间各自对应的读使能控制信号来维持或者调整所述读指针,这意味着,根据所述多个子缓存空间各自对应的读使能控制信号,对所述读时钟域的读指针进行调节,这样就实现了读指针和写指针之间的跨时钟域同步,从而可以适配不同频点、不同数据传输速率的数据传输需求下的频差补偿要求。
在一些实施例中,所述向上溢出状态指示信号用于指示所述已使用缓存深度大于所述最大缓存深度的设计上限,所述向下溢出状态指示信号用于指示所述已使用缓存深度小于所述最大缓存深度的设计下限,所述高于上限阈值状态指示信号用于指示所述已使用缓存深度大于所述最大缓存深度相关联的上限阈值,所述低于下限阈值状态指示信号用于指示所述已使用缓存深度小于所述最大缓存深度相关联的下限阈值。如此,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,可以优先处理异常状态,在不存在异常状态下再优先处理特殊符号指令集相关操作(也即检测到特殊符号序列并执行特殊符号序列的有关c操作),最后再执行有效数据序列的有关操作。最后,基于所述多个子缓存空间各自对应的读使能控制信号来维持或者调整所述读指针,这意味着,根据所述多个子缓存空间各自对应的读使能控制信号,对所述读时钟域的读指针进行调节,这样就实现了读指针和写指针之间的跨时钟域同步,从而可以适配不同频点、不同数据传输速率的数据传输需求下的频差补偿要求。其中,所述向上溢出状态指示信号和所述向下溢出状态指示信号均用于指示状态异常操作,因此设计上限和设计下限也是为了指示状态异常。所述高于上限阈值状态指示信和所述低于下限阈值状态指示信号均用于指示数据处理操作,因此,上限阈值和下限阈值是可以结合实际需要进行配置,例如可以设定上限阈值是最大缓存深度的一半加上8,以及设定下限阈值是最大缓存深度的一半减去8。
在一些实施例中,所述最大缓存深度的设计上限是所述最大缓存深度的一半,所述最大缓存深度的设计下限是所述最大缓存深度的一半。如此,可以按照半满模式的规则,尽量维持弹性缓存中的已使用缓存深度为所述最大缓存深度的一半,有利于在吸收时钟频差的同时具有较好的资源利用率,以及保持较低的数据传输延时。
在一些实施例中,针对所述多个子缓存空间中的每一个子缓存空间,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,包括:通过对该子缓存空间的当前读取数据进行码型对比来确定所述第一接口协议标准相关联的特殊符号指令集的匹配结果,从而生成所述特殊符号指令集操作指示;当所述向上溢出状态指示信号为高时,设定该子缓存空间的读使能控制信号以便多读一拍数据;当所述向下溢出状态指示信号为高时,设定该子缓存空间的读使能控制信号以便停止读一拍数据;当所述高于上限阈值状态指示信号为高并且所述特殊符号指令集操作指示特殊符号指令集的删除操作时,设定该子缓存空间的读使能控制信号以便多读所述符号数的特殊符号用于所述特殊符号指令集的删除操作;当所述低于下限阈值状态指示信号为高并且所述特殊符号指令集操作指示特殊符号指令集的复制操作时,设定该子缓存空间的读使能控制信号以便停止读一拍数据以及执行所述特殊符号指令集的复制操作;当所述向上溢出状态指示信号、所述向下溢出状态指示信号、所述高于上限阈值状态指示信号以及所述低于下限阈值状态指示信号均为低时,设定该子缓存空间的读使能控制信号以便多读所述符号数的数据。如此,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,可以优先处理异常状态,在不存在异常状态下再优先处理特殊符号指令集相关操作(也即检测到特殊符号序列并执行特殊符号序列的有关c操作),最后再执行有效数据序列的有关操作。最后,基于所述多个子缓存空间各自对应的读使能控制信号来维持或者调整所述读指针,这意味着,根据所述多个子缓存空间各自对应的读使能控制信号,对所述读时钟域的读指针进行调节,这样就实现了读指针和写指针之间的跨时钟域同步,从而可以适配不同频点、不同数据传输速率的数据传输需求下的频差补偿要求。这里,当所述向上溢出状态指示信号为高时,设定该子缓存空间的读使能控制信号以便多读一拍数据,如此,有助于使得弹性缓存摆脱上溢状态。当所述向下溢出状态指示信号为高时,设定该子缓存空间的读使能控制信号以便停止读一拍数据,如此,有助于使得弹性缓存摆脱下溢状态。当所述高于上限阈值状态指示信号为高并且所述特殊符号指令集操作指示特殊符号指令集的删除操作时,设定该子缓存空间的读使能控制信号以便多读所述符号数的特殊符号用于所述特殊符号指令集的删除操作,如此,在不存在异常状态的情况下,通过如码型匹配确定了要执行特殊符号指令集的删除操作,因此,可以多读出所述符号数的特殊符号并删除,上面提到,确定第一接口协议标准所限定的用于特殊符号指令集的删除操作或者复制操作的符号数。当所述低于下限阈值状态指示信号为高并且所述特殊符号指令集操作指示特殊符号指令集的复制操作时,设定该子缓存空间的读使能控制信号以便停止读一拍数据以及执行所述特殊符号指令集的复制操作,如此,在不存在异常状态的情况下,通过如码型匹配确定了要执行特殊符号指令集的复制操作,因此,可以停止读一拍数据以及执行所述特殊符号指令集的复制操作。当所述向上溢出状态指示信号、所述向下溢出状态指示信号、所述高于上限阈值状态指示信号以及所述低于下限阈值状态指示信号均为低时,设定该子缓存空间的读使能控制信号以便多读所述符号数的数据。如此,在不存在异常状态也没有检测到要执行的特殊符号指令集的相关操作的情况下,最后再执行有效数据序列的有关操作也就是多读所述符号数的数据。
在一种可能的实施方式中,所述多个子缓存空间的总数是偶数,基于所述多个子缓存空间各自对应的读使能控制信号来维持或者调整所述读指针,包括:当所述多个子缓存空间各自对应的读使能控制信号均为高时,对所述读指针每拍增加第二数量,其中,所述第二数量是所述多个子缓存空间的总数;当所述多个子缓存空间中的一半的子缓存空间各自对应的读使能控制信号均为高时,对所述读指针每拍增加第三数量,所述第三数量是所述第二数量的一半;当所述读指针达到所述最大缓存深度时,复位所述读指针。如此,实现了根据所述多个子缓存空间各自对应的读使能控制信号来调节读指针,例如,当各个子缓存空间的读使能控制信号均为高时,使得读指针加8;当各个子缓存空间的读使能控制信号均为低时,使得读指针保持不变。当其中总共8个子缓存空间中的4个子缓存空间的读使能控制信号为高时,使得读指针加4。当读指针计数到最大缓存深度72时,回到0重新计数。如此,根据所述多个子缓存空间各自对应的读使能控制信号,对所述读时钟域的读指针进行调节,这样就实现了读指针和写指针之间的跨时钟域同步,从而可以适配不同频点、不同数据传输速率的数据传输需求下的频差补偿要求。
在一种可能的实施方式中,所述控制方法还包括:基于所述多个子缓存空间各自的输出数据,生成所述弹性缓存的输出数据从而实现所述写时钟域与所述读时钟域之间的频差补偿。如此,根据所述多个子缓存空间各自对应的读使能控制信号,对所述读时钟域的读指针进行调节,这样就实现了读指针和写指针之间的跨时钟域同步,从而可以适配不同频点、不同数据传输速率的数据传输需求下的频差补偿要求。
在一种可能的实施方式中,当所述第一接口协议标准是快捷外围组件互连标准1.0或者快捷外围组件互连标准2.0时,所述符号数是1个,并且,当所述第一接口协议标准是快捷外围组件互连标准3.0或者快捷外围组件互连标准5.0时,所述符号数是4个,并且,当所述第一接口协议标准是通用串行总线标准时,所述符号数是2个。如此,通过参数化的设计,可以适配不同频点、不同数据传输速率的数据传输需求以及适配各种规范了数据传输有关细节的协议标准,能兼容新旧设备的组网需求,以及有助于维持弹性缓存的半满模式。
在一种可能的实施方式中,所述最大缓存深度包括用于时钟跨步处理的硬件必要深度。如此,在基于所述最大符号偏差计算弹性缓存的最大缓存深度的基础上,还包括用于时钟跨步处理的硬件必要深度,有利于硬件实现。
在一种可能的实施方式中,所述第一接口协议标准是快捷外围组件互连标准1.0,快捷外围组件互连标准2.0,快捷外围组件互连标准3.0,快捷外围组件互连标准4.0,快捷外围组件互连标准5.0,或者,通用串行总线标准。如此,可以适配不同频点、不同数据传输速率的数据传输需求以及适配各种规范了数据传输有关细节的协议标准,能兼容新旧设备的组网需求,以及有助于维持弹性缓存的半满模式。
在一种可能的实施方式中,所述弹性缓存用于快捷外围组件互连标准接收端,所述写时钟域是所述快捷外围组件互连标准接收端通过时钟数据恢复得到的恢复时钟域,所述读时钟域是所述快捷外围组件互连标准接收端的本地时钟域。如此,适用于高速数据传输的应用中,例如大型数据中心,高性能计算中心,云计算平台等。
在一种可能的实施方式中,所述符号粒度是所述第一数量的符号中每一个符号所占据的比特数,所述符号粒度是基于所述弹性缓存的编码方案确定,所述第一接口协议标准所限定的速率是基于所述每拍的待写入数据的写数据位宽和工作时钟频率确定,调整所述工作时钟频率是通过调整所述第一数量。每拍的待写入数据是可以根据具体协议标准所限定的波特率也即协议标准规定的传输速率来做出调节。一般地,通过增加写数据位宽可以降低时钟频率,而通过降低写数据位宽可以增加时钟频率。如此,可以更好地适配协议标准的有关规范。
在一种可能的实施方式中,所述写指针被同步到所述读时钟域得到所述同步后写指针,包括:基于所述第一数量,对所述写指针右移所述第一数量的比特数,然后,基于第一偏移量进行偏移再进行格雷码转换得到所述同步后写指针,其中,所述第一偏移量是基于所述每拍的待写入数据的写数据位宽。写指针变化范围不是2的整数次幂,若直接转换成格雷码,会存在多比特同时翻转的情况。为了避免多比特同时翻转,基于所述第一数量,对所述写指针右移所述第一数量的比特数,然后,基于第一偏移量进行偏移再进行格雷码转换得到所述同步后写指针。如此,可以满足相邻码型只变化1比特的要求,进行跨异步传输时可以显著降低出错概率。并且,在写指针同步到读时钟域后,完成以上变换的逆操作,即可得到同步后写指针,用于所述弹性缓存的读取控制,实现了读指针和写指针之间的跨时钟域同步,从而可以适配不同频点、不同数据传输速率的数据传输需求下的频差补偿要求。
在一种可能的实施方式中,基于所述同步后写指针和所述读时钟域的读指针,计算相对于所述最大缓存深度的所述已使用缓存深度,包括:基于所述同步后写指针、所述读时钟域的读指针以及预设的第一设定值,计算所述已使用缓存深度,其中,所述第一设定值是基于每拍延时的符号个数。基于所述同步后写指针和所述读时钟域的读指针,计算相对于所述最大缓存深度的已使用缓存深度。可以通过比较所述同步后写指针和所述读时钟域的读指针,例如计算所述同步后写指针减去所述读时钟域的读指针的差值,另外,还可以考虑到用于补偿写指针因跨异步产生的延时的第一设定值,例如12。这里,用于补偿写指针因跨异步产生的延时的第一设定值可以调节,第一设定值是延时的拍数乘以每拍的符号数,例如3拍延时每拍4个符号,或者6拍延时每拍2个符号。如此,计算得到相对于所述最大缓存深度的已使用缓存深度,这是对弹性缓存的整体状态判断,可用于后续的对子缓存空间的个体控制。
在一种可能的实施方式中,所述弹性缓存包括写指针控制器,读指针控制器,检测模块以及同步模块,其中,所述写指针控制器用于所述弹性缓存的写入控制,所述读指针控制器用于所述弹性缓存的读取控制,所述同步模块用于同步所述写指针到所述读时钟域得到所述同步后写指针,所述检测模块用于对所述多个子缓存空间中的每一个子缓存空间的当前读取数据进行码型对比来确定所述第一接口协议标准相关联的特殊符号指令集的匹配结果。如此,面对不同频点、不同数据传输速率的数据传输需求,面对不同设备、不同数据传输协议之间的差异,可以通过调节相关的参数,进而对所述弹性缓存的写入控制以及所述弹性缓存的读取控制施加影响,不仅利用多个子缓存空间之间的并行化操作,降低了弹性缓存整体上的逻辑级数,也就降低了整体的数据传输时延,而且可以适配不同频点、不同数据传输速率的数据传输需求以及适配各种规范了数据传输有关细节的协议标准,能兼容新旧设备的组网需求,以及有助于维持弹性缓存的半满模式,有利于满足高速时钟下的时序要求。
在一些实施例中,所述特殊符号指令集是SKP序列。如此,可以实现快捷外围组件互连总线规范定义的专门用于补偿时钟频差的特殊符号序列。通过在PCIe总线上插入特殊符号序列,与有效数据序列一起进入弹性缓存,有助于解决两边时钟频差问题。例如,第一接口协议是PCIe5.0。采用PCI-SIG组织制定的PCIe5.0的有关规范,要求向下兼容PCIe4.0、PCIe3.0、PCIe2.0和PCIe1.0,并且可以采用物理接口规范。
在一些实施例中,所述弹性缓存是异步先进先出缓存,所述最大缓存深度是基于所述异步先进先出缓存相关联的传输时延要求和性能功率面积要求。如此,通过多个子缓存空间之间的并行化操作,降低了弹性缓存整体上的逻辑级数,也就降低了整体的数据传输时延,有助于满足传输时延要求和性能功率面积要求,
图3为本申请实施例提供的一种弹性缓存的内部结构的示意图。如图3所示,所述弹性缓存包括写指针控制器302,读指针控制器304,检测模块310以及同步模块312。其中,所述写指针控制器302用于所述弹性缓存的写入控制,所述读指针控制器304用于所述弹性缓存的读取控制,所述同步模块312用于同步所述写指针到所述读时钟域得到所述同步后写指针,所述检测模块310用于对所述多个子缓存空间中的每一个子缓存空间的当前读取数据进行码型对比来确定所述第一接口协议标准相关联的特殊符号指令集的匹配结果。图3中示意性示意出了,总缓存空间330包括三个子缓存空间,分别是子缓存空间A332,子缓存空间B334,子缓存空间C336。应当理解的是,图3中所示出的子缓存空间的数量仅为示例性。图3所示的弹性缓存,可以采用图2所示的用于弹性缓存频差补偿的控制方法。因此,关于图3所示的弹性缓存的控制方法可以参考上述图2的具体实施例的有关描述,在此不再赘述。
图3所示的弹性缓存,面对不同频点、不同数据传输速率的数据传输需求,面对不同设备、不同数据传输协议之间的差异,可以通过调节相关的参数,进而对所述弹性缓存的写入控制以及所述弹性缓存的读取控制施加影响,不仅利用多个子缓存空间之间的并行化操作,降低了弹性缓存整体上的逻辑级数,也就降低了整体的数据传输时延,而且可以适配不同频点、不同数据传输速率的数据传输需求以及适配各种规范了数据传输有关细节的协议标准,能兼容新旧设备的组网需求,以及有助于维持弹性缓存的半满模式,有利于满足高速时钟下的时序要求。
图4为本申请实施例提供的一种弹性缓存的多个子缓存空间的示意图。如图4所示,弹性缓存包括八个子缓存空间,每个子缓存空间包括一个先进先出存储器和一个对应的读取数据缓存。仅处于说明性目的,图4所示的子缓存空间的数量仅为说明性。图4所示的八个子缓存空间,具体包括:先进先出存储器A410和对应的读取数据缓存A412构成的第一子缓存空间,先进先出存储器B420和对应的读取数据缓存B422构成的第二子缓存空间,先进先出存储器C430和对应的读取数据缓存C432构成的第三子缓存空间,先进先出存储器D440和对应的读取数据缓存D442构成的第四子缓存空间,先进先出存储器E450和对应的读取数据缓存E452构成的第五子缓存空间,先进先出存储器F460和对应的读取数据缓存F462构成的第六子缓存空间,先进先出存储器G470和对应的读取数据缓存G472构成的第七子缓存空间,先进先出存储器H480和对应的读取数据缓存H482构成的第八子缓存空间。
参阅图4,可以通过多个子缓存空间之间的并行化操作,降低了弹性缓存整体上的逻辑级数,也就降低了整体的数据传输时延。并且,可以适配不同频点、不同数据传输速率的数据传输需求以及适配各种规范了数据传输有关细节的协议标准,能兼容新旧设备的组网需求,以及有助于维持弹性缓存的半满模式,这样有助于读写指针控制和特殊符号指令集操作。基于确定的最大缓存深度(例如72),可以按照各种合适方式划分最大缓存深度得到多个子缓存空间,例如划分得到8个子缓存空间每个深度为9,又例如,划分得到4个子缓存空间每个深度为18。图4中示意性示出了划分最大缓存深度得到8个子缓存空间的情况。子缓存空间的深度是受到协议标准要求的删除或者复制的SKP符号数的个数限制的。如果子缓存空间的深度太低,则不利于后续执行协议标准要求的删除或者复制SKP的操作。因此需要均衡化的划分方式,在满足划分后的子缓存空间的深度不小于,也即大于或者等于,所述符号数的两倍的前提下,尽量增加并行度,提高整体数据传输性能。
继续参阅图4,每个子缓存空间包括一个先进先出存储器和一个对应的读取数据缓存,例如,先进先出存储器A410和对应的读取数据缓存A412构成的第一子缓存空间。如上所述,所述弹性缓存的读取控制包括:基于所述同步后写指针和所述读时钟域的读指针,计算相对于所述最大缓存深度的已使用缓存深度,然后,通过比较所述已使用缓存深度和所述最大缓存深度,生成多个缓存状态指示信号,以及,针对所述多个子缓存空间中的每一个子缓存空间,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,再基于所述多个子缓存空间各自对应的读使能控制信号来维持或者调整所述读指针。如此,以第一子缓存空间为例,先进先出存储器A410和对应的读取数据缓存A412构成第一子缓存空间,第一子缓存空间的当前读取数据可以存储在读取数据缓存A412中,从而可以基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示。如此,通过图4所示的每个子缓存空间包括一个先进先出存储器和一个对应的读取数据缓存,有助于实现读取数据和读使能控制信号同拍的零延时读取,提升整体数据传输性能。
图5是本申请实施例提供的一种计算设备的结构示意图,该计算设备500包括:一个或者多个处理器510、通信接口520以及存储器530。所述处理器510、通信接口520以及存储器530通过总线540相互连接。可选地,该计算设备500还可以包括输入/输出接口550,输入/输出接口550连接有输入/输出设备,用于接收用户设置的参数等。该计算设备500能够用于实现上述的本申请实施例中设备实施例或者系统实施例的部分或者全部功能;处理器510还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备500执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器510用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备500可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口520具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器510具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
应当理解的是,图5的计算设备500可以包括一个或者多个处理器510,并且多个处理器510可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器510可以构成处理器序列或者处理器阵列,或者多个处理器510之间可以分成主处理器和辅助处理器,或者多个处理器510之间可以具有不同的架构如采用异构计算架构。另外,图5所示的计算设备500,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备500可以包括比图5所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
处理器510可以有多种具体实现形式,例如处理器510可以包括中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processingunit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器510还可以是单核处理器或多核处理器。处理器510可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器510也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口520可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器530可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器530也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器530也可用于存储程序代码和数据,以便于处理器510调用存储器530中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备500可能包含相比于图5展示的更多或者更少的组件,或者有不同的组件配置方式。
总线540可以是快捷外围部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线540可以分为地址总线、数据总线、控制总线等。总线540除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。本申请实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述所描述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例系统中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (20)

1.一种用于弹性缓存频差补偿的控制方法,其特征在于,所述控制方法包括:
确定第一接口协议标准所限定的特殊符号指令集发送间隔,用于特殊符号指令集的删除操作或者复制操作的符号数,以及写时钟域与读时钟域之间的最大频差;
基于所述特殊符号指令集发送间隔、所述符号数以及所述最大频差,计算特殊符号指令集之间的最大符号偏差;
基于所述最大符号偏差计算弹性缓存的最大缓存深度,以及,划分所述弹性缓存为等大小的多个子缓存空间,其中,所述多个子缓存空间中的每一个子缓存空间的缓存深度不小于所述符号数的两倍,
其中,所述弹性缓存的写入控制包括:将每拍的待写入数据按照符号粒度划分为第一数量的符号,然后,基于写使能控制信号将所述第一数量的符号依次写入所述多个子缓存空间中的所述第一数量的子缓存空间,以及,对所述写时钟域的写指针每拍增加所述第一数量,所述写指针被同步到所述读时钟域得到同步后写指针,
所述弹性缓存的读取控制包括:基于所述同步后写指针和所述读时钟域的读指针,计算相对于所述最大缓存深度的已使用缓存深度,然后,通过比较所述已使用缓存深度和所述最大缓存深度,生成多个缓存状态指示信号,以及,针对所述多个子缓存空间中的每一个子缓存空间,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,再基于所述多个子缓存空间各自对应的读使能控制信号来维持或者调整所述读指针。
2.根据权利要求1所述的控制方法,其特征在于,所述多个缓存状态指示信号包括向上溢出状态指示信号,向下溢出状态指示信号,高于上限阈值状态指示信号以及低于下限阈值状态指示信号,所述向上溢出状态指示信号和所述向下溢出状态指示信号均用于指示状态异常操作,所述高于上限阈值状态指示信和所述低于下限阈值状态指示信号均用于指示数据处理操作。
3.根据权利要求2所述的控制方法,其特征在于,所述弹性缓存的读取控制还包括:针对所述多个子缓存空间中的每一个子缓存空间,基于该子缓存空间的读使能控制信号和特殊符号指令集操作指示,选择性地执行所述特殊符号指令集的删除操作,所述特殊符号指令集的复制操作,所述数据处理操作,或者,所述状态异常操作,从而生成该子缓存空间的输出数据。
4.根据权利要求3所述的控制方法,其特征在于,所述向上溢出状态指示信号用于指示所述已使用缓存深度大于所述最大缓存深度的设计上限,所述向下溢出状态指示信号用于指示所述已使用缓存深度小于所述最大缓存深度的设计下限,所述高于上限阈值状态指示信号用于指示所述已使用缓存深度大于所述最大缓存深度相关联的上限阈值,所述低于下限阈值状态指示信号用于指示所述已使用缓存深度小于所述最大缓存深度相关联的下限阈值。
5.根据权利要求4所述的控制方法,其特征在于,所述最大缓存深度的设计上限是所述最大缓存深度的一半,所述最大缓存深度的设计下限是所述最大缓存深度的一半。
6.根据权利要求4所述的控制方法,其特征在于,针对所述多个子缓存空间中的每一个子缓存空间,基于该子缓存空间的当前读取数据和所述多个缓存状态指示信号,生成该子缓存空间的读使能控制信号和特殊符号指令集操作指示,包括:
通过对该子缓存空间的当前读取数据进行码型对比来确定所述第一接口协议标准相关联的特殊符号指令集的匹配结果,从而生成所述特殊符号指令集操作指示;
当所述向上溢出状态指示信号为高时,设定该子缓存空间的读使能控制信号以便多读一拍数据;
当所述向下溢出状态指示信号为高时,设定该子缓存空间的读使能控制信号以便停止读一拍数据;
当所述高于上限阈值状态指示信号为高并且所述特殊符号指令集操作指示特殊符号指令集的删除操作时,设定该子缓存空间的读使能控制信号以便多读所述符号数的特殊符号用于所述特殊符号指令集的删除操作;
当所述低于下限阈值状态指示信号为高并且所述特殊符号指令集操作指示特殊符号指令集的复制操作时,设定该子缓存空间的读使能控制信号以便停止读一拍数据以及执行所述特殊符号指令集的复制操作;
当所述向上溢出状态指示信号、所述向下溢出状态指示信号、所述高于上限阈值状态指示信号以及所述低于下限阈值状态指示信号均为低时,设定该子缓存空间的读使能控制信号以便多读所述符号数的数据。
7.根据权利要求1所述的控制方法,其特征在于,所述多个子缓存空间的总数是偶数,基于所述多个子缓存空间各自对应的读使能控制信号来维持或者调整所述读指针,包括:
当所述多个子缓存空间各自对应的读使能控制信号均为高时,对所述读指针每拍增加第二数量,其中,所述第二数量是所述多个子缓存空间的总数;
当所述多个子缓存空间中的一半的子缓存空间各自对应的读使能控制信号均为高时,对所述读指针每拍增加第三数量,所述第三数量是所述第二数量的一半;
当所述读指针达到所述最大缓存深度时,复位所述读指针。
8.根据权利要求3所述的控制方法,其特征在于,所述控制方法还包括:基于所述多个子缓存空间各自的输出数据,生成所述弹性缓存的输出数据从而实现所述写时钟域与所述读时钟域之间的频差补偿。
9.根据权利要求1所述的控制方法,其特征在于,当所述第一接口协议标准是快捷外围组件互连标准1.0或者快捷外围组件互连标准2.0时,所述符号数是1个,并且,当所述第一接口协议标准是快捷外围组件互连标准3.0或者快捷外围组件互连标准5.0时,所述符号数是4个,并且,当所述第一接口协议标准是通用串行总线标准时,所述符号数是2个。
10.根据权利要求1所述的控制方法,其特征在于,所述最大缓存深度包括用于时钟跨步处理的硬件必要深度。
11.根据权利要求1所述的控制方法,其特征在于,所述第一接口协议标准是快捷外围组件互连标准1.0,快捷外围组件互连标准2.0,快捷外围组件互连标准3.0,快捷外围组件互连标准4.0,快捷外围组件互连标准5.0,或者,通用串行总线标准。
12.根据权利要求1所述的控制方法,其特征在于,所述弹性缓存用于快捷外围组件互连标准接收端,所述写时钟域是所述快捷外围组件互连标准接收端通过时钟数据恢复得到的恢复时钟域,所述读时钟域是所述快捷外围组件互连标准接收端的本地时钟域。
13.根据权利要求1所述的控制方法,其特征在于,所述符号粒度是所述第一数量的符号中每一个符号所占据的比特数,所述符号粒度是基于所述弹性缓存的编码方案确定,所述第一接口协议标准所限定的速率是基于所述每拍的待写入数据的写数据位宽和工作时钟频率确定,调整所述工作时钟频率是通过调整所述第一数量。
14.根据权利要求1所述的控制方法,其特征在于,所述写指针被同步到所述读时钟域得到所述同步后写指针,包括:基于所述第一数量,对所述写指针右移所述第一数量的比特数,然后,基于第一偏移量进行偏移再进行格雷码转换得到所述同步后写指针,其中,所述第一偏移量是基于所述每拍的待写入数据的写数据位宽。
15.根据权利要求1所述的控制方法,其特征在于,基于所述同步后写指针和所述读时钟域的读指针,计算相对于所述最大缓存深度的所述已使用缓存深度,包括:基于所述同步后写指针、所述读时钟域的读指针以及预设的第一设定值,计算所述已使用缓存深度,其中,所述第一设定值是基于每拍延时的符号个数。
16.根据权利要求1所述的控制方法,其特征在于,所述弹性缓存包括写指针控制器,读指针控制器,检测模块以及同步模块,其中,所述写指针控制器用于所述弹性缓存的写入控制,所述读指针控制器用于所述弹性缓存的读取控制,所述同步模块用于同步所述写指针到所述读时钟域得到所述同步后写指针,所述检测模块用于对所述多个子缓存空间中的每一个子缓存空间的当前读取数据进行码型对比来确定所述第一接口协议标准相关联的特殊符号指令集的匹配结果。
17.根据权利要求16所述的控制方法,其特征在于,所述特殊符号指令集是SKP序列。
18.根据权利要求17所述的控制方法,其特征在于,所述弹性缓存是异步先进先出缓存,所述最大缓存深度是基于所述异步先进先出缓存相关联的传输时延要求和性能功率面积要求。
19.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至18中任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至18中任一项所述的方法。
CN202410718621.7A 2024-06-05 2024-06-05 用于弹性缓存频差补偿的控制方法、计算机设备及介质 Active CN118312459B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410718621.7A CN118312459B (zh) 2024-06-05 2024-06-05 用于弹性缓存频差补偿的控制方法、计算机设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410718621.7A CN118312459B (zh) 2024-06-05 2024-06-05 用于弹性缓存频差补偿的控制方法、计算机设备及介质

Publications (2)

Publication Number Publication Date
CN118312459A true CN118312459A (zh) 2024-07-09
CN118312459B CN118312459B (zh) 2024-08-20

Family

ID=91729350

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410718621.7A Active CN118312459B (zh) 2024-06-05 2024-06-05 用于弹性缓存频差补偿的控制方法、计算机设备及介质

Country Status (1)

Country Link
CN (1) CN118312459B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102708086A (zh) * 2012-05-10 2012-10-03 无锡华大国奇科技有限公司 一种应用于usb3.0的弹性缓冲结构及方法
US20210391973A1 (en) * 2020-06-16 2021-12-16 SK Hynix Inc. Device and computing system including the device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102708086A (zh) * 2012-05-10 2012-10-03 无锡华大国奇科技有限公司 一种应用于usb3.0的弹性缓冲结构及方法
US20210391973A1 (en) * 2020-06-16 2021-12-16 SK Hynix Inc. Device and computing system including the device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱小明 等: "USB3.0物理层中弹性缓冲的设计与实现", 《微电子学与计算机》, vol. 29, no. 06, 5 June 2012 (2012-06-05), pages 118 - 121 *

Also Published As

Publication number Publication date
CN118312459B (zh) 2024-08-20

Similar Documents

Publication Publication Date Title
CN111367495B (zh) 一种异步先入先出的数据缓存控制器
CN105320490B (zh) 用于异步fifo电路的方法和设备
CN102708086B (zh) 一种应用于usb3.0的弹性缓冲结构及方法
US7020757B2 (en) Providing an arrangement of memory devices to enable high-speed data access
CN101261575B (zh) 一种实现不等宽数据传输的异步先进先出存储器及方法
WO2014027328A1 (en) Method and apparatus for transferring data from a first domain to a second domain
CN116795172B (zh) 一种用于高速数字传输的跨时钟域处理方法、介质及装置
CN116795765B (zh) 一种用于高速数据传输的数据对齐方法及装置
CN115221082B (zh) 一种数据缓存方法、装置及存储介质
KR102427775B1 (ko) 포인터 오프셋이 있는 비동기식 버퍼
US10476630B2 (en) Digital bus noise suppression
CN118312459B (zh) 用于弹性缓存频差补偿的控制方法、计算机设备及介质
JP4917901B2 (ja) 受信装置
US8631265B2 (en) Synchronization circuit that facilitates multiple parallel reads and writes
CN202904568U (zh) 一种应用于usb3.0的弹性缓冲结构
JP2011250183A (ja) シリアル受信装置並びにシリアル受信装置の制御方法及びプログラム
CN110618950B (zh) 一种异步fifo读写控制电路及方法、可读存储介质及终端
CN115699668B (zh) 宽弹性缓冲器
CN113867796B (zh) 利用多状态机提高读性能的协议转换桥及实现方法
US10635394B2 (en) Binary-to-gray conversion circuit, related FIFO memory, integrated circuit and method
CN108462655B (zh) Fc链路弹性缓冲区电路
CN118445088B (zh) 一种网络报文的处理方法、系统、装置、设备以及介质
CN107544618B (zh) 指针同步电路及方法,消息交换装置及方法
JP3592169B2 (ja) 非同期データ転送制御装置および非同期データ転送制御方法
Chang et al. Design and implementation of elastic buffer for Universal Serial Bus 3.0

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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 200080 7th floor, No.137 Haining Road, Hongkou District, Shanghai

Patentee after: Xinyaohui Technology Co.,Ltd.

Country or region after: China

Address before: 1901-1907 Office and 1914-1924 Office of Hengqin International Business Center, No. 3000, Huandao East Road, Hengqin New District, Zhuhai City, Guangdong Province, 519000

Patentee before: Xinyaohui Technology Co.,Ltd.

Country or region before: China