掌桥专利:专业的专利平台
掌桥专利
首页

高速周边组件互连的事务层电路及其操作方法

文献发布时间:2023-06-19 18:29:06


高速周边组件互连的事务层电路及其操作方法

技术领域

本发明涉及一种高速周边组件互连(Peripheral Component InterconnectExpress,PCIe)的事务层电路及其操作方法。

背景技术

高速周边组件互连(Peripheral Component Interconnect Express,PCIe)是能够利用一或多个通道执行点对点串行链接,并且用于主板级别、扩展卡接口等的相互连接。在PCIe中,定义了包括软件层、事务层(transaction layer)、数据链路层(data linklayer)和物理层(physical layer)的分层结构,以用于控制和管理信息传输。数据传递过程的错误主要通过循环冗余校验(cyclic redundancy check,CRC)编码来检测。其中数据链路层会产生和校检链路循环冗余校验(Link CRC,LCRC),事务层会产生和校检端到端循环冗余校验(End-to-End CRC,ECRC)。

事务层用以生成事务层报文(Transaction Layer Packet,TLP),主要包括报头(Header)、有效载荷(在写入请求的情况下)以及ECRC三个部分。报头内容包括发送者的相关信息、目标地址、事务类型(如内存读取,内存写入)、发送数据量、请求方ID或完成方ID等等。例如在接收侧处的事务层会检查从数据链路层接收到的TLP中的ECRC错误。在既不存在错误也不存在任何其他缺陷的情况下,事务层将报头中包括的信息和有效载荷发送至软件层。而在发送侧处的事务层会核对请求发送期间的请求TLP的标签和响应接收期间的完成TLP的标签,以检查是否已接收到预期响应(完成检查)。在一些情况下,如果用户的设计中并没有交换器(Switch),例如只是简单的端对端直连(例如Root与Endpoint),则可以不使用ECRC。

在同一个时钟周期中出现多笔TLP的情况时,如何同时处理多笔TLP,是本领域的重大技术课题之一。

发明内容

本发明提供一种高速周边组件互连(Peripheral Component InterconnectExpress,PCIe)的事务层(transaction layer)电路,以在同一个时钟周期中可以同时处理多笔事务层报文(Transaction Layer Packet,TLP)。

根据本发明的实施例,高速周边组件互连的事务层电路包括多个事务层处理信道、信道选择电路以及融合电路。多个事务层处理信道耦接至数据总线,数据总线用以传输高速周边组件互连的数据链路层(data link layer)电路所输出的至少一报文(packet)数据。信道选择电路被配置从数据链路层电路接收当前时钟周期的报文始位置信息与报文终位置信息,以及依据报文始位置信息与报文终位置信息将当前时钟周期的至少一报文数据分配给多个事务层处理信道中的至少一个。融合电路耦接至多个事务层处理信道。融合电路基于信道选择电路对当前时钟周期的至少一报文数据至多个事务层处理信道的分配去选择性地融合多个事务层处理信道所输出的事务层处理结果。

根据本发明的另一实施例,高速周边组件互连的事务层电路的操作方法包括:将多个事务层处理信道耦接至数据总线,其中数据总线用以传输高速周边组件互连的数据链路层电路所输出的至少一报文数据;由信道选择电路从数据链路层电路接收当前时钟周期的位报文始置信息与报文终位置信息;依据报文始位置信息与报文终位置信息,由信道选择电路将当前时钟周期的至少一报文数据分配给多个事务层处理信道中的至少一个;以及基于信道选择电路对当前时钟周期的至少一报文数据至多个事务层处理信道的分配,由融合电路选择性地融合多个事务层处理信道所输出的事务层处理结果。

在根据本发明的实施例的高速周边组件互连的事务层电路中,可以透过信道选择电路将当前时钟周期的一或多个报文数据的每一个分配给多个事务层处理信道中的一个进行事务层处理,以及透过融合电路选择性地融合多个事务层处理信道所输出的事务层处理结果。因此,事务层电路可以在同一时钟周期中同时处理多笔TLP。

附图说明

图1是依照本发明的一实施例的一种高速周边组件互连(Peripheral ComponentInterconnect Express,PCIe)的事务层(transaction layer)电路的电路方块(circuitblock)示意图。

图2是依照本发明的一实施例的一种PCIe的事务层电路的操作方法的流程示意圖。

图3A是依照本发明一实施例的数据传输的布置示意图。

图3B是依照本发明一实施例的数据传输的标记处理示意图。

图3C是依照本发明一实施例的数据传输的信道分配示意图。

图4是依照本发明的一实施例说明图1所示的信道选择电路的电路方块示意图。

图5A是依照本发明一实施例说明图1所示的报头融合电路的电路方块示意图。

图5B是依照本发明一实施例说明图1所示的数据融合电路的电路方块示意图。

附图标记列表

100:事务层电路;101:数据链路层电路;102:接收缓冲器;110:信道选择电路;120:融合电路;121:报头融合电路;122:数据融合电路;310、320:报文数据串流;410:去错电路;411:遮蔽器;420~424:报文始位置搜寻电路;430~434:报文终位置搜寻电路;440:轮循电路;441、630:缓存器;450~458:信道分配电路;610:报头融合单元;620:数据融合单元;CH0~CH3:事务层处理信道;DATA0~DATA1、Data_CH0~Data_CH3:数据;DL:数据总线;HEAD0~HEAD2、Header_CH0~Header_CH3:报头;EOP:报文终位置信息;EOP[0]~EOP[15]:单元;EOP_enable、EOP_E0~EOP_E3:报文终位置搜寻结果;EOP_L0~EOP_L3、EOP_location:有效报文终位置;EOP_mask:经去错报文终位置信息;EOP_pointer_ns:第二报文终指针;EOP_pointer_r:第一报文终指针;ERR:错数据位置信息;L1:与门;L2~L3:加法器;L4~L5:比较器;L6~L14:多工器;LCRC:校验码;Out_h:报头处理结果;Out_p:数据处理结果;S210~S250:步骤;ST:报文始;STP:报文始位置信息;STP[0]~STP[15]:单元;STP_E0~STP_E3、STP_enable:报文始位置搜寻结果;STP_L0~STP_L3、STP_location:有效报文始位置;STP_pending:待定报文始信息;STP_pointer_ns:第二报文始指针;STP_pointer_r:第一报文始指针;STP_mask:经去错报文始位置信息。

具体实施方式

现将详细地参考本发明的示范性实施例,示范性实施例的实例说明于附图中。只要有可能,相同元件符号在图式和描述中用来表示相同或相似部分。在图1和图1之后的类似附图中,分别由块表示的一个电路或功能块与另一电路或功能块之间的边界基本上指示功能边界,而不一定对应于物理位置的分离、电信号的分离、控制逻辑的分离等。每个电路或功能块可以是在某种程度上与另一块物理地分开的硬件模块,或者可以指示与另一块物理地集成的硬件模块的功能。

图1是依照本发明的一实施例的一种高速周边组件互连(Peripheral ComponentInterconnect Express,PCIe)的事务层(transaction layer)电路100的电路方块示意图。事务层电路100可以透过数据总线DL与PCIe的数据链路层(data link layer)电路101互连。数据总线DL可以传输数据链路层电路101所输出的至少一报文(packet)数据。于图1所示实施例中,事务层电路100包括信道选择电路110、事务层处理信道CH0~CH3以及融合电路120,其中事务层处理信道CH0~CH3的数量只是一种示范例,本实施例并不设限。

图2是依照本发明的一实施例的一种PCIe的事务层电路100的操作方法的流程示意图。请参照图1与图2。步骤S210将事务层处理信道CH0~CH3耦接至数据总线DL。事务层处理信道CH0~CH3可以耦接至数据总线DL,以接收报文数据。融合电路120可以耦接至事务层处理信道CH0~CH3以及接收缓冲器102,以保持数据传输的顺序。在一些实施例中,融合电路120可以包括报头融合电路121以及数据融合电路122,以接收事务层处理信道CH0~CH3输出的事务层处理结果进行选择性地融合,并将事务层处理结果存放在接收缓冲器102。其中接收缓冲器102可以内建或外接于事务层电路100,本实施例并不设限。

于步骤S220中,信道选择电路110可以从数据链路层电路101接收当前时钟周期的报文始位置信息STP与报文终位置信息EOP。在一些实施例中,信道选择电路110可以依据当前时钟周期的报文始位置信息STP与报文终位置信息EOP,计数在当前时钟周期中报文始位置信息STP所表示有效报文始位置的数量与报文终位置信息EOP所表示有效报文终位置的数量。在一些实施例中,信道选择电路110可以依据报文始位置信息STP与报文终位置信息EOP,将当前时钟周期的至少一报文数据分配给事务层处理信道CH0~CH3中的至少一个。

举例而言,图3A是依照本发明一实施例说明数据链路层电路101的报文数据传输的布置示意图。图3A所示纵轴表示时间,亦即每一个行(row)表示一个时钟周期。图3A所示横轴表示PCIe规范的数据处理基本单元,亦即每一个列(column)表示一个双字(Dword),一个双字有4个字节(byte)。于图3A所示实施例中,以数据宽度为512位(bit)、每一个数据单元位宽为一个双字(DWORD)的32位为例,在一个时钟周期中有16个双字(图3A所示单元0~单元15)被传输于不同层之间。图3A所示报文数据串流310表示物理层(physical layer)传输给数据链路层电路101的多个报文数据。在报文数据串流310中,一个报文(packet)数据的组成包含报文始ST、报头HEAD0~HEAD2、有效载荷(可能包含图3A所示数据DATA0~DATA2)以及校验码LCRC。依照实际传输,一个报文数据中不一定存在所述有效载荷。校验码LCRC可以視為一个报文数据的报文终。在经过数据链路层电路101的处理后,数据链路层电路101会去除报文始ST与校验码LCRC,如报文数据串流320所示。图3A所示报文数据串流320表示数据链路层电路101传输给事务层电路100的多个报文数据。数据链路层电路101输出至事务层100的报文数据可以視為一个事务层报文(Transaction Layer Packet,TLP)。

图3B是依照本发明一实施例说明数据链路层电路101的位置信息传输的布置示意图。图3B所示纵轴表示时间,亦即每一个行(row)表示一个时钟周期。图3B所示横轴表示位置信息的不同位,其中位置信息的一个位对应于在报文数据串流320中的一个双字(Dword)。举例来说,报文始位置信息STP的第0位STP[0]与报文终位置信息EOP的第0位EOP[0]都对应于在报文数据串流320中的单元0,而报文始位置信息STP的第15位STP[15]与报文终位置信息EOP的第15位EOP[15]都对应于在报文数据串流320中的单元15。于图3B所示实施例中,事务层处理信道CH0~CH3可以透过数据总线DL从数据链路层电路101接收图3A所示的报文数据串流320,并且信道选择电路110可以从数据链路层电路101得到当前时钟周期的报文始位置信息STP以及报文终位置信息EOP。在图3B所示实施例中,报文始位置信息STP中任何一个逻辑值1的位表示,在报文数据串流320的当前时钟周期中一个报文的始位置。同理可推,报文终位置信息EOP中任何一个逻辑值1的位表示,在报文数据串流320的当前时钟周期中一个报文的终位置。在其他实施例中,报文始位置信息STP与报文终位置信息EOP也可以使用其他数值来标记,本实施例并不设限。

请参照图1与图2。于步骤S230中,依据报文始位置信息STP与报文终位置信息EOP,信道选择电路110可以用轮循(round-robin)方式或固定优先级方式将当前时钟周期的报文数据分配给事务层处理信道CH0~CH3中的至少一个。举例来说,在一些实施例中,信道选择电路110可以计数在当前时钟周期中报文始位置信息STP的逻辑值1的位(表示有效报文始位置)的数量与报文终位置信息EOP的逻辑值1的位(表示有效报文终位置)的数量,并设定用以指示将当前报文数据分配给事务层处理信道CH0~CH3的分配开始位置与终止位置的报文始指针与报文终指针,以依据报文始指针与报文终指针将当前时钟周期的报文数据分配给事务层处理信道CH0~CH3中的至少一个,再依据有效报文始位置的数量去更新所述报文始指针,以及依据有效报文终位置的数量去更新所述报文终指针。

举例而言,图3C是依照本发明一实施例的事物务层处理信道CH0~CH3的信道分配示意图。请参照图3A至图3C。于图3C所示实施例中,信道选择电路110可以用如图3C上半部所示的轮循方式(逆时针方向,并以事务层处理信道CH0为起始信道),将当前时钟周期的报文数据串流320依序分配给事务层处理信道CH0~CH3中的至少一个。依据图3B所示始帧位置信息STP与终帧位置信息EOP,图3A所示报文数据串流320的每一个报文数据可以被分配给事务层处理信道CH0~CH3中的至少一个,如图3C下半部所示。轮循的方向与事务层处理信道CH0~CH3的数量与排列方式只是一种示范例,本实施例并不设限。其中依据报文始位置信息STP与报文终位置信息EOP来进行轮循与选择及分配事务层处理信道CH0~CH3的实施方式,在后续的实施例中会有更详细的说明。

再举例而言,信道选择电路110也可以不使用如图3C上半部所示的轮循方式。例如,信道选择电路110可以使用固定优先级方式,将当前时钟周期的报文数据串流的每一个报文数据分配给事务层处理信道CH0~CH3中的至少一个。例如在一些实施例中,可以预先设定事务层处理信道CH0~CH3的优先级顺序(例如优先级由高至低分别为事务层处理信道CH0、CH1、CH2以及CH3)。在每次接收到报文数据串流(例如报文数据串流320)中的每一个报文数据时,均依据优先级的顺序将报文数据分配给空闲(当前未处理报文数据)的事务层处理信道CH0~CH3。举例来说,在分配报文数据时,信道选择电路110均先检查最高优先级的事务层处理信道(例如为事务层处理信道CH0)是否空闲。若确定事务层处理信道CH0空闲时,信道选择电路110可以将报文数据分配给所述最高优先级的事务层处理信道CH0。当最高优先级的事务层处理信道CH0正在忙碌(正在处理其他报文数据)时,则信道选择电路110继续检查第二优先级的事务层处理信道(例如为事务层处理信道CH1)是否空闲,依此类推。又例如,当先前接收到的报文数据串流中的最后一笔报文数据为未完整数据(未完成的TLP)且被分配给其中一个事务层处理信道(例如为事务层处理信道CH2)时,则当前接收到的报文数据串流中第一笔未完整数据(接续先前的最后一笔报文数据)可以被分配给所述事务层处理信道(事务层处理信道CH2),以及下一笔报文数据继续使用所述固定优先级方式从最高优先级的事务层处理信道(事务层处理信道CH0)开始进行检查与分配的动作。

于图2所示步骤S240中,基于信道选择电路110对当前时钟周期的报文数据至事务层处理信道CH0~CH3的分配,融合电路120可以选择性地融合事务层处理信道CH0~CH3所输出的事务层处理结果。在步骤S250中,融合电路120可以将事务层处理信道CH0~CH3的事务层处理结果存放在接收缓冲器102。

图4是依照本发明的一实施例说明图1所示的信道选择电路110的电路方块示意图。信道选择电路110可以从数据链路层电路101接收当前时钟周期的报文始位置信息STP与报文终位置信息EOP。在图4所示实施例中,信道选择电路110还可以从数据链路层电路101接收当前时钟周期的错数据位置信息ERR。其中错数据位置信息ERR的实施方式可以参考报文始位置信息STP或終报文位置信息EOP的设置方式加以类推。错数据位置信息ERR可以标示出在报文数据串流320的当前时钟周期中具有无效数据的位置。

在图4所示实施例中,信道选择电路110包括去错电路410、报文始位置搜寻电路420、报文终位置搜寻电路430、轮循电路440以及信道分配电路450。去错电路410可以接收当前时钟周期的报文始位置信息STP、错数据位置信息ERR以及报文终位置信息EOP,并依据错数据位置信息ERR去遮蔽报文始位置信息STP中的无效报文始位置而产生经去错报文始位置信息STP_mask,以及依据错数据位置信息ERR去遮蔽报文终位置信息EOP中的无效报文终位置而产生经去错报文终位置信息EOP_mask。

在图4所示实施例中,去错电路410可以包括与门L1与遮蔽器411。其中与门L1的非反相输入端与反相输入端可以分别接收报文始位置信息STP与错数据位置信息ERR。与门L1的输出端可以输出经去错报文始位置信息STP_mask给遮蔽器411与报文始位置搜寻电路420。例如,假设在当前时钟周期中,报文始位置信息STP在某一位置为逻辑值1且对应的错数据位置信息ERR亦为逻辑值1(代表有无效数据)时,则经去错报文始位置信息STP_mask在该位置为逻辑值0。反之,当报文始位置信息STP在另一位置为逻辑值1而对应的错数据位置信息ERR为逻辑值0(代表数据未发生错误)时,则经去错报文始位置信息STP_mask在该位置为逻辑值1。遮蔽器411的第一输入端与第二输入端可以分别接收错数据位置信息ERR与报文终位置信息EOP。遮蔽器411的输出端可以输出经去错报文终位置信息EOP_mask。在一些实施例中,遮蔽器411的实施方式可以参考与门L1的相关说明加以类推。在一些实施例中,遮蔽器411还可以接收经去错报文始位置信息STP_mask以及待定报文始信息STP_pending,以更新经去错报文终位置信息EOP_mask。在其他实施例中,去错电路410也可以采用其他实施方式,本实施例并不设限。

报文始位置搜寻电路420与报文终位置搜寻电路430可以分别耦接至去错电路410,以接收经去错报文始位置信息STP_mask以及经去错报文终位置信息EOP_mask。其中,报文始位置搜寻电路420用以搜寻在当前时钟周期的经去错报文始位置信息STP_mask中的任何有效报文始位置,以产生有效报文始位置STP_location和报文始位置搜寻结果STP_enable。报文终位置搜寻电路430用以搜寻在当前时钟周期的经去错报文终位置信息EOP_mask中的任何有效报文终位置,以产生有效报文终位置EOP_location和报文终位置搜寻结果EOP_enable。其中报文始位置搜寻结果STP_enable与报文终位置搜寻结果EOP_enable可以传送至轮循电路440,以依据有效报文始位置STP_location的数量与有效报文终位置EOP_location的数量更新第一报文始指针STP_pointer_r与第一报文终指针EOP_pointer_r。有效报文始位置STP_location、报文始位置搜寻结果STP_enable、有效报文终位置EOP_location、报文终位置搜寻结果EOP_enable、第一报文始指针STP_pointer_r以及第一报文终指针EOP_pointer_r可以传送至信道分配电路450,以指示当前时钟周期的至少一报文数据至事务层处理信道CH0~CH3的分配方式。

在本实施例中,报文始位置搜寻电路420可以包括报文始位置搜寻电路421、422、423和424,以将经去错报文始位置信息STP_mask的数据量分为四个通道来搜寻。例如,若经去错报文始位置信息STP_mask的数据量为16位,则报文始位置搜寻电路421~424可分别搜寻经去错报文始位置信息STP_mask中第0至3位、第4至7位、第8至11位以及第12至15位中的任何有效报文始位置,以产生有效报文始位置STP_location和报文始位置搜寻结果STP_enable。其中报文始位置搜寻电路421~424的数量与数据分配的方式只是一种示范例,本实施例并不设限。

在图4所示实施例中,报文终位置搜寻电路430可以包括报文终位置搜寻电路431、432、433和434,以将经去错报文终位置信息EOP_mask的数据量分为四个通道来搜寻。例如,若经去错报文终位置信息EOP_mask的数据量为16位,则报文终位置搜寻电路431~434可分别用以搜寻经去错报文终位置信息EOP_mask中第0至3位、第4至7位、第8至11位以及第12至15位中的任何有效报文终位置,以产生有效报文终位置EOP_location和报文终位置搜寻结果EOP_enable。其中报文终位置搜寻电路431~434的数量与数据分配的方式只是一种示范例,本实施例并不设限。

轮循电路440可以耦接至报文始位置搜寻电路420与报文终位置搜寻电路430,以接收报文始位置搜寻结果STP_enable与报文终位置搜寻结果EOP_enable。在本实施例中,轮循电路440可以依据报文始位置搜寻结果STP_enable计数在当前时钟周期中有效报文始位置的数量,并依据有效报文始位置的数量去更新第一报文始指针STP_pointer_r。在本实施例中,轮循电路440可以依据报文终位置搜寻结果EOP_enable计数在当前时钟周期中有效报文终位置的数量,并依据有效报文终位置的数量去更新第一报文终指针EOP_pointer_r。

在图4所示实施例中,轮循电路440可以包括加法器L2、加法器L3、比较器L4、比较器L5、多工器L6以及缓存器441。加法器L2可以耦接至报文始位置搜寻电路421~424,以依据报文始位置搜寻结果STP_enable计数在当前时钟周期中有效报文始位置的数量來產生第二报文始指针STP_pointer_ns。加法器L3可以耦接至报文终位置搜寻电路431~434,以依据报文终位置搜寻结果EOP_enable计数在当前时钟周期中有效报文终位置的数量來產生第二报文终指针EOP_pointer_ns。在一些实施例中,加法器L2与加法器L3的输出位数可以设定为2位,使第二报文始指针STP_pointer_ns与第二报文终指针EOP_pointer_ns的数值范围限定于0~3之间。在另一些实施例中,加法器L2与加法器L3的输出位数可以设定为3位,使最高有效位(Most Significant Bit,HSB)可用以做为溢位判断。

在本实施例中,缓冲器441可以耦接至加法器L2与加法器L3。缓冲器441可用以储存第二报文始指针STP_pointer_ns与第二报文终指针EOP_pointer_ns,并输出第一报文始指针STP_pointer_r与第一报文终指针EOP_pointer_r,以指示当前数据分配所指向的事务层处理信道。在本实施例中,第一报文始指针STP_pointer_r可以回授至加法器L2,第一报文终指针EOP_pointer_r可以回授至加法器L3,以在每次轮循进行数据分配时参考前次所指向的事务层处理信道来更新第一报文始指针STP_pointer_r与第一报文终指针EOP_pointer_r。在本实施例中,比较器L4可以耦接至缓冲器441。比较器L4可以比较第一报文始指针STP_pointer_r与第一报文终指针EOP_pointer_r是否相同,并输出待定报文始信息STP_pending以判断当前时钟周期的至少一报文数据是否完整。例如,当第一报文始指针STP_pointer_r与第一报文终指针EOP_pointer_r不相同时,即当前时钟周期的有效报文始位置的数量不等于有效报文终位置的数量,代表在当前时钟周期中具有不完整报文数据(未完成的TLP)。如此一來,当前时钟周期的最后一报文数据所分配到的事务层处理信道(事务层处理信道CH0~CH3的其中一个)必须继续保持指定至下一时钟周期,直到接收到下一个有效报文终位置以表示已接收到完整报文数据后才能释放。在本实施例中,待定报文始信息STP_pending可以回授至去错电路410中的遮蔽器411,使遮蔽器411可以依据经去错报文始位置信息STP_mask以及待定报文始信息STP_pending更新经去错报文终位置信息EOP_mask。

在本实施例中,比较器L5與多工器L6可以耦接在加法器L2、加法器L3与缓存器441之间。比较器L5的第一端输入与第二输入端以及多工器L6的第一输入端与第二输入端可以分别接收第二报文始指针STP_pointer_ns与第二报文终指针EOP_pointer_ns。比较器L5可以比较第二报文始指针STP_pointer_ns与第二报文终指针EOP_pointer_ns是否相同,以判断当前时钟周期的报文数据是否完整。例如,当数量不相同时,比较器L5可以输出逻辑值1,表示在当前时钟周期中,具有不完整数据。多工器L6可以依据比较器L5的输出来选择输出第二报文始指针STP_pointer_ns或第二报文终指针EOP_pointer_ns至缓冲器441存放。例如在本实施例中,当比较器L5输出逻辑值0时,多工器L6可以输出第二报文始指针STP_pointer_ns。在本实施例中,缓冲器441可以储存比较器L5与多工器L6的输出,并可以输出至融合电路120,进而告知融合电路120在当前时钟周期中具有不完整数据,须等到接收到完整数据后再进行融合的动作。

信道分配电路450可以耦接至轮循电路440、报文始位置搜寻电路420以及报文终位置搜寻电路430。信道分配电路450可以依据第一报文始指针STP_pointer_r将报文始位置搜寻结果STP_enable与有效报文始位置STP_location传输给事务层处理信道CH0~CH3中的一个对应事务层处理信道。信道分配电路450可以依据第一报文终指针EOP_pointer_r将报文终位置搜寻结果EOP_enable与有效报文终位置EOP_location传输给事务层处理信道CH0~CH3中的一个对应事务层处理信道。

在图4所示实施例中,信道分配电路450可以包括信道分配电路451、452、453、454、455、456、457和458,以分别将有效报文始位置STP_location以及有效报文终位置EOP_location对应于事务层处理信道CH0~CH3的每一个进行数据分配。其中信道分配电路451~458的数量与事务层处理信道CH0~CH3的对应方式只是一种示范例,本实施例并不设限。

举例而言,下述表1与表2是依照本发明一实施例说明图4所示信道分配电路450的输出内容。表1与表2所示纵轴表示时间,亦即每一个行(row)表示一个时钟周期。表1所示横轴表示分配电路451~454的输出,其中分配电路451输出报文始位置搜寻结果STP_E0与有效报文始位置STP_L0给事务层处理信道CH0,分配电路452输出报文始位置搜寻结果STP_E1与有效报文始位置STP_L1给事务层处理信道CH1,分配电路453输出报文始位置搜寻结果STP_E2与有效报文始位置STP_L2给事务层处理信道CH2,而分配电路454输出报文始位置搜寻结果STP_E3与有效报文始位置STP_L3给事务层处理信道CH3。表2所示横轴表示分配电路455~458的输出,其中分配电路455输出报文终位置搜寻结果EOP_E0与有效报文终位置EOP_L0给事务层处理信道CH0,分配电路456输出报文终位置搜寻结果EOP_E1与有效报文终位置EOP_L1给事务层处理信道CH1,分配电路457输出报文终位置搜寻结果EOP_E2与有效报文终位置EOP_L2给事务层处理信道CH2,而分配电路458输出报文终位置搜寻结果EOP_E3与有效报文终位置EOP_L3给事务层处理信道CH3。表1的有效报文始位置STP_L0~STP_L3栏位和表2的有效报文终位置EOP_L0~EOP_L3栏位是以16进位值来表示位置。

表1:分配电路451~454的输出

表2:分配电路455~458的输出

请参照图3B、图3C、图4、表1与表2。假设于图3B所示实施例中,报文始位置信息STP与报文终位置信息EOP分别代表当前时钟周期的至少一报文数据的经去错报文始位置信息STP_mask以及经去错报文终位置信息EOP_mask,以及假设使用图3C所示的轮循方式。

在图3B所示的第一个时钟周期中,(经去错)报文始位置信息STP[15:0]为“00010000 0100 0010”以及(经去错)报文终位置信息EOP[15:0]为“0000 0010 0000 1000”。报文始位置搜寻电路421~424搜寻(经去错)报文始位置信息STP[15:0]得知在图3B所示的第一个时钟周期中的有效报文始分别位于(经去错)报文始位置信息STP[1]、STP[6]以及STP[12]三个位置上,因此报文始位置搜寻电路421~424所输出的有效报文始位置STP_location包括“1、6、C”(以十六进制表示)。依据当前第一报文始指针STP_pointer_r(指向事务层处理信道CH0),信道分配电路450将有效报文始位置“1、6、C”分配给事务层处理信道CH0~CH2,亦即将当前时钟周期的报文始位置“1、6、C”作为有效报文始位置STP_L0~STP_L2(如表1所示)。报文终位置搜寻电路431~434搜寻(经去错)报文终位置信息EOP[15:0]得知在图3B所示的第一个时钟周期中的有效报文终分别位于(经去错)报文终位置信息EOP[3]以及EOP[9]两个位置上,因此报文终位置搜寻电路431~434所输出的有效报文终位置EOP_location包括“3、9”。依据当前第一报文终指针EOP_pointer_r(指向事务层处理信道CH0),信道分配电路450将有效报文终位置“3、9”分配给事务层处理信道CH0~CH1,亦即将当前时钟周期的报文终位置“3、9”作为有效报文终位置EOP_L0~EOP_L1(如表2所示)。基于有效报文始位置STP_L0~STP_L3与有效报文终位置EOP_L0~EOP_L3,事务层处理信道CH0~CH2可以在当前时钟周期中从数据总线DL撷取对应位置的数据。此外,轮循电路440可以计数在当前时钟周期中的报文始位置搜寻结果STP_enable与报文终位置搜寻结果EOP_enable,进而更新第一报文始指针STP_pointer_r(由指向事务层处理信道CH0更新为指向事务层处理信道CH3),以及更新第一报文终指针EOP_pointer_r(由指向事务层处理信道CH0更新为指向事务层处理信道CH2)。

以此类推,图3B所示的其他时钟周期可以参照图3B所示的第一个时钟周期的相关说明加以类推,故不再赘述。其他时钟周期的運行結果呈現於图3B、图3C、表1与表2。

图5A是依照本发明一实施例说明图1所示的报头融合电路121的电路方块示意图。图5B是依照本发明一实施例说明图1所示的数据融合电路122的电路方块示意图。请参照图1、图5A与图5B。在一些实施例中,图1所示信道选择电路110可以输出第二报文始指针STP_pointer_ns与第一报文始指针STP_pointer_r,事务层处理信道CH0~CH3可以输出事务层处理结果。其中事务层处理结果可以分为报头Header_CH0~Header_CH3以及数据Data_CH0~Data_CH3。报头融合电路121可以接收第一报文始指针STP_pointer_r与报头Header_CH0~Header_CH3,数据融合电路122可以接收第二报文始指针STP_pointer_ns与数据Data_CH0~Data_CH3,以分别进行选择性地融合处理,并分别输出报头处理结果Out_h与数据处理结果Out_d以作为事务层处理结果。在一些实施例中,第二报文始指针STP_pointer_ns与第一报文始指针STP_pointer_r在时序上可以不同。例如第一报文始指针STP_pointer_r可以为第二报文始指针STP_pointer_ns延迟一个工作周期,以满足报头融合电路121与数据融合电路122在分别进行融合处理时的时序要求。

于图5A所示实施例中,报头融合电路121包括多工器L7、L8、L9与L10以及报头融合单元610相互耦接。报头融合单元610可以透过多工器L7~L10分别接收由事务层处理信道CH0~CH3所发送来的报头Header_CH0~Header_CH3,以保持当前时钟周期的至少一报文数据的报头排列方式进行融合。于图5B所示实施例中,数据融合电路122包括多工器L11、L12、L13与L14与数据融合单元620相互耦接,以及缓存器630耦接至数据融合单元620。数据融合单元620可以透过多工器L11~L14接收由事务层处理信道CH0~CH3所发送来的数据Data_CH0~Data_CH3,以保持当前时钟周期的至少一报文数据的数据排列方式进行融合。在本实施例中,缓存器630可用以存放当前时钟周期的不完整数据,以保留至下一时钟周期,在确定收到完整数据后再透过数据融合单元620进行数据融合。

综上所述,本发明诸实施例所述的PCIe的事务层电路100,可以透过信道选择电路110以轮循方式将当前时钟周期的一或多个报文数据的每一个分配给多个事务层处理信道CH0~CH3中的一个进行事务层处理,以及透过融合电路120选择性地融合多个事务层处理信道CH0~CH3所输出的事务层处理结果。因此,事务层电路可以在同一时钟周期中同时处理多笔事务层报文(Transaction Layer Packet,TLP)。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

技术分类

06120115588734