链路宽度调节方法、装置、设备和存储介质与流程

文档序号:24130480发布日期:2021-03-02 17:34阅读:100来源:国知局
链路宽度调节方法、装置、设备和存储介质与流程

[0001]
本申请涉及集成电路技术领域,具体而言,涉及一种链路宽度调节方法、装置、设备和存储介质。


背景技术:

[0002]
soc(system on chip,系统级芯片),是由多个具有特定功能的集成电路组合在一个芯片上形成的系统或产品,其中包含完整的硬件系统及其承载的嵌入式软件,soc也叫片上系统。soc可以包括一个或多个处理器、存储器、接口外围和/或用于执行复杂功能所必须的其它组件。在各个组件之间的互连通常由与一个或多个通信协议兼容的内部计算机总线负责。
[0003]
在实际应用中,为了合理利用总线资源,节约功耗,通常会对片上系统的各组件之间的总线带宽进行分配。比如一个封装好的处理器(下述简称package)中一般包括一个或多个裸芯片(下述简称die),在系统运行过程中,动态链接宽度管理主要是针对die间或者package间的互联总线,根据带宽需求对互联总线进行动态宽度调整,以达到低功耗的目的。
[0004]
然而,现有技术中对链接宽度进行调节时,需要对soc其他组件进行特殊状态的设置,导致对soc内部数据传输造成不良影响,并且需要对互联总线进行重新训练(re-training),重新训练需要几百us左右,时间太长,会对soc性能造成不良影响。


技术实现要素:

[0005]
本申请实施例的目的在于提供一种链路宽度调节方法、装置、设备和存储介质,可以快速进行链路宽度调整,不涉及soc其他组件,对soc其他数据通路没有影响,节省功耗。
[0006]
本申请实施例第一方面提供了一种链路宽度调节方法,包括:获取总线的带宽信息和所述总线上当前互联的各个组件的带宽需求;判断所述各个组件的所述带宽需求是否都与所述带宽信息相同;若所述各个组件的所述带宽需求不是都与所述带宽信息相同,生成带宽调节请求;清空物理编码子层和物理介质层内在数据发送端口方向的队列数据;指示所属物理编码子层进行链路初始化,并阻挡所述物理介质层的链路初始化;根据所述调节请求,指示所述物理编码子层切换数据通道,完成链路宽度调整。
[0007]
于一实施例中,所述清空所述物理编码子层和所述物理介质层内在数据发送端口方向的队列数据,包括:关闭所述物理编码子层内在所述数据发送端口方向的数据接收,并将所述数据发送端口方向的已有队列数据执行完毕。
[0008]
于一实施例中,所述阻挡物理介质层的链路初始化,包括:关闭所述物理介质层内的时钟。
[0009]
于一实施例中,所述根据所述调节请求,指示所述物理编码子层切换数据通道,完成链路宽度调整,包括:基于所述调节请求中要求的所述总线带宽信息变化,对所述物理编码子层数据通道的组包和拆包进行调整;基于调整后的数据通道,恢复所述物理编码子层
的数据传输。
[0010]
于一实施例中,若所述各个组件的所述带宽需求不是都与所述带宽信息相同,生成带宽调节请求,包括:若所述各个组件中存在所述带宽需求大于所述带宽信息的目标组件,生成携带增大带宽信息的所述调节请求。
[0011]
于一实施例中,若所述各个组件的所述带宽需求不是都与所述带宽信息相同,生成带宽调节请求,包括:若所述各个组件的所述带宽需求均小于所述带宽信息,生成携带减小带宽信息的所述调节请求。
[0012]
本申请实施例第二方面提供了一种链路宽度调节装置,包括:获取模块,用于获取总线的带宽信息和所述总线上当前互联的各个组件的带宽需求;判断模块,用于判断所述各个组件的所述带宽需求是否都与所述带宽信息相同;生成模块,用于若所述各个组件的所述带宽需求不是都与所述带宽信息相同,生成带宽调节请求;清空模块,用于清空物理编码子层和物理介质层内在数据发送端口方向的队列数据;指示模块,用于指示所属物理编码子层进行链路初始化,并阻挡所述物理介质层的链路初始化;调节模块,用于根据所述调节请求,指示所述物理编码子层切换数据通道,完成链路宽度调整。
[0013]
于一实施例中,所述清空模块用于:关闭所述物理编码子层内在所述数据发送端口方向的数据接收,并将所述数据发送端口方向的已有队列数据执行完毕。
[0014]
于一实施例中,所述指示模块用于:关闭所述物理介质层内的时钟。
[0015]
于一实施例中,所述调节模块用于:基于所述调节请求中要求的所述总线带宽信息变化,对所述物理编码子层数据通道的组包和拆包进行调整;基于调整后的数据通道,恢复所述物理编码子层的数据传输。
[0016]
于一实施例中,所述生成模块用于:若所述各个组件中存在所述带宽需求大于所述带宽信息的目标组件,生成携带增大带宽信息的所述调节请求。
[0017]
于一实施例中,所述生成模块用于:若所述各个组件的所述带宽需求均小于所述带宽信息,生成携带减小带宽信息的所述调节请求。
[0018]
本申请实施例第三方面提供了一种电子设备,包括:存储器,用以存储计算机程序;处理器,用以执行本申请实施例第一方面及其任一实施例的方法,以动态调整总线的链路宽度。
[0019]
本申请实施例第四方面提供了一种非暂态电子设备可读存储介质,包括:程序,当其藉由电子设备运行时,使得所述电子设备执行本申请实施例第一方面及其任一实施例的方法。
[0020]
本申请提供的链路宽度调节方法、装置、设备和存储介质,当监测到总线的带宽需要调整链路宽度时,直接与互联总线的物理编码子层硬件进行交互,媒体访问控制层硬件完全不用参与,再由物理编码子层硬件控制底层物理介质层,将不用的链接对应的物理介质层置于低功耗状态,达到节省功耗的目的。
附图说明
[0021]
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他相关的附图。
[0022]
图1为本申请一实施例的电子设备的结构示意图;
[0023]
图2为本申请一实施例的互联总线硬件示意图;
[0024]
图3为本申请一实施例的链路宽度调节方法的流程示意图;
[0025]
图4为本申请一实施例的链路宽度调节方法的流程示意图;
[0026]
图5a为本申请一实施例的改变总线宽度时pcs数据通路的变化示意图;
[0027]
图5b为本申请一实施例的减小总线宽度时pcs和phy对应的状态变化示意图;
[0028]
图5c本申请一实施例的增大总线宽度时pcs和phy对应的状态变化示意图;
[0029]
图6本申请一实施例的链路宽度调节装置的结构示意图。
具体实施方式
[0030]
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0031]
如图1所示,本实施例提供一种电子设备1,包括:至少一个处理器11和存储器12,图1中以一个处理器为例。处理器11和存储器12通过总线10连接。存储器12存储有可被处理器11执行的指令,指令被处理器11执行,以使电子设备1可执行下述的实施例中方法的全部或部分流程,以动态调整总线的链路宽度。
[0032]
于一实施例中,电子设备1可以是手机、平板电脑、笔记本电脑、台式计算机等设备。
[0033]
为了更加清楚的描述本实施例的方案,现将涉及到的名词解释如下:
[0034]
die:晶片颗粒,一颗裸芯片。
[0035]
package:封装好的处理器芯片,含有一个或多个die。
[0036]
dlwm:dynamic link width management,动态链接宽度管理,主要是针对die间或者package间的互联总线,指在系统运行过程中,根据带宽需求对互联总线进行动态宽度调整,以达到低功耗的目的。
[0037]
soc:system-on-a-chip,soc称为系统级芯片,也称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。
[0038]
avfs:adaptive voltage and frequency scaling,动态调频调压,是指在系统运行过程中,根据实际需求对该组件的电压和频率进行动态调整,以达到低功耗的目的。
[0039]
tdp:thermal design power,热设计功耗,是指在最糟糕、最坏情况下的功耗,散热解决方案的设计必须满足这种热设计功耗,此参数由soc芯片设计厂家提供给系统集成厂商。
[0040]
osi:国际标准化组织(iso)制定的通信系统间互联的标准体系,一般称为osi参考模型或者七层模型。
[0041]
mac:media access control,媒体访问控制层,对应osi模型的数据链路层。
[0042]
pcs:physical coding sublayer,物理编码子层,属于osi模型的物理层,位于物理层最上层。
[0043]
phy:物理介质层,属于osi模型的物理层,位于物理层最底层。
[0044]
tx:transmitter,数据发送。
[0045]
rx:receiver,数据接收。
[0046]
如图2所示,其为本申请一实施例的互联总线的硬件结构示意图,以soc系统为例,假设soc系统包括两个芯片单元die0和die1,每个芯片单元中均包括:通过互联总线相互连接的mac层、pcs层和phy层,其中,mac层和pcs层可以与mcu(microcontroller unit,微控制单元)进行信息交互,还包括ddr(double data rate,双倍速率)同步动态随机存储器、pcie(peripheral component interconnect express,是一种高速串行计算机扩展总线标准)总线接口和cpu(central processing unit,中央处理器)。两个芯片单元die0和die1的phy层通过总线互联。
[0047]
于一实施例中,互联总线的phy是由数个phy拼搭而成,这数个phy之间相互独立,彼此之间没有任何影响。
[0048]
于一实施例中,pcs层硬件统一管理数个拼搭phy,即数个phy公用一个pcs层。
[0049]
在上述硬件结构中,为了降低soc系统的功耗,可以基于互联总线上每个组件的具体带宽资源需求进行链路宽度动态调整。
[0050]
请参看图3,其为本申请一实施例的链路宽度调节方法,该方法可由图1所示的电子设备1来执行,并可以应用于如图2所示的针对soc系统的链路宽度调节场景中,以动态调整总线的链路宽度。该方法包括如下步骤:
[0051]
步骤301:获取总线的带宽信息和总线上当前互联的各个组件的带宽需求。
[0052]
在本步骤中,总线可以是soc系统的互联总线,也可以是其他类型的总线。以图2所示的场景为例,各个组件可以是通过互联总线链接的die,可以通过周期性读取互联总线mac层硬件的一些寄存器,来获取互联总线的带宽信息,并汇总各个互联die的带宽需求。
[0053]
步骤302:判断各个组件的带宽需求是否都与带宽信息相同,若是结束,否则进入步骤303。
[0054]
步骤303:判断各个组件的带宽需求是否均小于带宽信息。若是进入步骤304,否则进入步骤305。
[0055]
在本步骤中,判断是否需要请求改变当前互联总线的带宽,当所有互联die对互联总线的带宽需求都比当前互联总线的带宽信息要低时,进入步骤304,否则进入步骤305。
[0056]
步骤304:生成携带减小带宽信息的调节请求。进入步骤306。
[0057]
在本步骤中,当所有互联die对互联总线的需求都比当前互联总线的带宽要低时,说明当前带宽信息并未被全部利用,存在资源浪费的情况,为了节约带宽资源,降低功耗,可以降低互联总线的当前宽度信息,此时生成携带减小带宽信息的调节请求。然后进入步骤306。
[0058]
步骤305:生成携带增大带宽信息的调节请求。进入步骤306。
[0059]
在本步骤中,若各个组件中存在带宽需求大于带宽信息的目标组件,比如当有一个die的带宽需求比互联总线当前带宽信息要高,说明当前的带宽信息不够用,为了保证各个组件的正常工作,需要增加互联总线的宽度信息,则生成携带增大带宽信息的调节请求。然后进入步骤306。
[0060]
步骤306:清空物理编码子层和物理介质层内在数据发送端口方向的队列数据。
[0061]
在本步骤中,当需要改变互联总线宽度信息时,直接配置位于互联总线pcs层硬件
的寄存器,通知pcs层硬件为改变互联总线宽度做好准备,可以清空所有pcs层硬件和phy层内数据发送端口tx方向所有队列内的数据。数据接收端口rx方向可以不受影响。
[0062]
于一实施例中,可以阻挡住mac层硬件的发送请求,比如可以不对mac层硬件的发送请求做回应。避免mac层参与链路宽度调节,节省功耗。
[0063]
步骤307:指示所属物理编码子层进行链路初始化,并阻挡物理介质层的链路初始化。
[0064]
在本步骤中,pcs层硬件完成所有准备工作后,会通过寄存器返回通知信息,此时可以开始调整互联总线宽度。可以通过设置pcs层硬件的link状态进入recovery,指示所属pcs层进行链路初始化,然后由pcs层硬件通知对应phy层,阻挡phy层的链路初始化。
[0065]
步骤308:根据调节请求,指示物理编码子层切换数据通道,完成链路宽度调整。
[0066]
在本步骤中,基于调解请求,指示pcs层硬件完成数据通路的切换,进而完成本次链路宽度调整。
[0067]
上述链路宽度调节方法,当监测到需要调整互联总线宽度时,直接与互联总线pcs层硬件进行交互,mac层硬件完全不用参与,再由pcs层硬件控制底层phy,将不用的链接对应的phy置于低功耗状态,达到节省功耗的目的。实现了动态功耗管理,切换速度快,如果与cpu avfs技术结合使用,可以在满足tdp的前提下有效提高cpu性能,并且不影响soc其他部件,对数据传输以及soc性能影响小。
[0068]
请参看图4,其为本申请一实施例的链路宽度调节方法,该方法可由图1所示的电子设备1来执行,并可以应用于如图2所示的针对soc系统的链路宽度调节场景中,以动态调整总线的链路宽度。该方法包括如下步骤:
[0069]
步骤401:获取总线的带宽信息和总线上当前互联的各个组件的带宽需求。详细参见上述实施例中对步骤301的描述。
[0070]
步骤402:判断各个组件的带宽需求是否都与带宽信息相同,若是结束,否则进入步骤403。
[0071]
步骤403:判断各个组件的带宽需求是否均小于带宽信息。若是进入步骤404,否则进入步骤405。详细参见上述实施例中对步骤303的描述。
[0072]
步骤404:若各个组件的带宽需求均小于带宽信息,生成携带减小带宽信息的调节请求。进入步骤406。详细参见上述实施例中对步骤304的描述。
[0073]
步骤405:若各个组件中存在带宽需求大于带宽信息的目标组件,生成携带增大带宽信息的调节请求。进入步骤406。详细参见上述实施例中对步骤305的描述。
[0074]
步骤406:关闭物理编码子层内在数据发送端口方向的数据接收,并将数据发送端口方向的已有队列数据执行完毕。
[0075]
在本步骤中,当需要改变互联总线宽度信息时,可以直接配置位于互联总线pcs层硬件的寄存器,通知pcs层硬件为改变互联总线宽度做好准备。由于pcs层和phy层内在数据发送端口tx方向可能已经存在数据队列,为了避免带宽调节使得这些数据队列的执行出错,可以关闭pcs层内在数据发送端口tx方向的数据接收,并由phy将数据发送端口tx方向的已有队列数据执行完毕,进而实现清空所有pcs层硬件和phy层内数据发送端口tx方向所有队列内的数据,数据接收端口rx方向可以不受影响。
[0076]
步骤407:指示所属物理编码子层进行链路初始化,并关闭物理介质层内的时钟。
[0077]
在本步骤中,pcs层硬件完成所有准备工作后,会通过寄存器返回通知信息,此时可以开始调整互联总线宽度。可以通过设置pcs层硬件的link状态进入recovery,指示所属pcs层进行链路初始化,然后由pcs层硬件通知对应phy进入pq1状态,pq1状态是phy层的一个低功耗模式,内部pll(phaselockedloop,锁相环)时钟被停掉,phy层不需要重新训练,phy内部仍然保存上电时训练的结果。
[0078]
步骤408:基于调节请求中要求的总线带宽信息变化,对物理编码子层数据通道的组包和拆包进行调整。
[0079]
在本步骤中,调解请求中可以包括:减小带宽信息或者增大带宽信息。无论是增大带宽还是减小带宽,由于总线宽度的变化,上层数据的组包和拆包需要进行变化,如图5a所示,带宽信息在16lane与8lane之间变化时,pcs层数据通路的也会变化。因此,pcs层硬件对数据通道的组包和拆包进行调整,来完成数据通路的切换。
[0080]
步骤409:基于调整后的数据通道,恢复物理编码子层的数据传输。
[0081]
在本步骤中,数据通道调整后,为了使soc系统正常工作,需要恢复物理编码子层的数据传输。
[0082]
于一实施例中,调解请求中包括:减小带宽信息时,如图5b所示:
[0083]
pcs层的状态变化为:ls0——fcinit——recovery——fcinit——ls0。
[0084]
被置于不用状态phy层的状态变化为:pa——pa——pq1——pq1——pq1。
[0085]
于一实施例中,调解请求中包括:增大带宽信息时,如图5c所示:
[0086]
pcs层的状态变化为:ls0——fcinit——recovery——fcinit——ls0。
[0087]
被重新启用的phy层的状态变化为:pq1——pq1——pq1——pa——pa。
[0088]
其中,各个状态符号定义如下:
[0089]
ls0:pcs层link的一个状态,当link处于ls0状态时,表示数据channel的初始化完成,link处于正常传输数据模式。
[0090]
pa:phy的正常工作模式。
[0091]
pq1:phy的一个低功耗模式,内部pll被停掉,不需要重新训练,phy内部仍然保存训练的结果。
[0092]
recovery:pcs层link的一个状态,当link处于recovery状态时,tx和rx都只发送接收训练序列,不能进行正常数据传输。
[0093]
fcinit:pcs层link的一个状态,当link处于fcinit状态时,link进行数据channel的初始化。
[0094]
上述方法中,可以对比应用层面的时间需求和实际所需时间来确保不会造成通道切换过程中die间传输请求出现应用层面的超时,并且确保互联die之间对带宽需求的一致。
[0095]
上述方法能快速完成互联总线的动态链路宽度调整,在不影响soc性能的前提下降低soc功耗,对其他数据通路没有影响。配合cpu avfs技术,可以在满足tdp(thermal design power,热设计功耗)约束内,提高cpu性能,从而提高系统性能。
[0096]
请参看图6,其为本申请一实施例的链路宽度调节装置600,该装置可应用于图1所示的电子设备1,并可以应用于如图2所示的针对soc系统的链路宽度调节场景中,以动态调整总线的链路宽度。该装置包括:获取模块601、判断模块602、生成模块603、清空模块604、
指示模块605和调节模块606,各个模块的原理关系如下:
[0097]
获取模块601,用于获取总线的带宽信息和总线上当前互联的各个组件的带宽需求。详细参见上述实施例中对步骤301的描述。
[0098]
判断模块602,用于判断各个组件的带宽需求是否都与带宽信息相同。详细参见上述实施例中对步骤302的描述。
[0099]
生成模块603,用于若所述各个组件的带宽需求不是都与带宽信息相同,生成带宽调节请求。详细参见上述实施例中对步骤303至步骤305的描述。
[0100]
清空模块604,用于清空物理编码子层和物理介质层内在数据发送端口方向的队列数据。详细参见上述实施例中对步骤306的描述。
[0101]
指示模块605,用于指示所属物理编码子层进行链路初始化,并阻挡物理介质层的链路初始化。详细参见上述实施例中对步骤307的描述。
[0102]
调节模块606,用于根据调节请求,指示物理编码子层切换数据通道,完成链路宽度调整。详细参见上述实施例中对步骤308的描述。
[0103]
于一实施例中,清空模块604用于:关闭物理编码子层内在数据发送端口方向的数据接收,并将数据发送端口方向的已有队列数据执行完毕。详细参见上述实施例中对步骤406的描述。
[0104]
于一实施例中,生成模块603还用于:在清空物理编码子层和物理介质层内在数据发送端口方向的队列数据之前,若各个组件中存在带宽需求大于带宽信息的目标组件,生成携带增大带宽信息的调节请求。详细参见上述实施例中对步骤305的描述。
[0105]
于一实施例中,指示模块605用于:关闭物理介质层内的时钟。详细参见上述实施例中对步骤407的描述。
[0106]
于一实施例中,调节模块606用于:基于调节请求中要求的总线带宽信息变化,对物理编码子层数据通道的组包和拆包进行调整。基于调整后的数据通道,恢复物理编码子层的数据传输。详细参见上述实施例中对步骤408至步骤409的描述。
[0107]
上述链路宽度调节装置600的详细描述,请参见上述实施例中相关方法步骤的描述。
[0108]
本发明实施例还提供了一种非暂态电子设备可读存储介质,包括:程序,当其在电子设备上运行时,使得电子设备可执行上述实施例中方法的全部或部分流程。其中,存储介质可为磁盘、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等。存储介质还可以包括上述种类的存储器的组合。
[0109]
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1