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

芯粒、数据传输处理方法、片上系统及计算机设备

文献发布时间:2024-04-18 20:01:23


芯粒、数据传输处理方法、片上系统及计算机设备

技术领域

本申请实施例涉及芯片技术领域,具体涉及一种芯粒、数据传输处理方法、片上系统及计算机设备。

背景技术

芯粒是能够实现一定功能且含有互联接口的单元芯片,多个芯粒通过互联接口进行互联可以形成SOC(System On Chip,片上系统)等芯片。其中,芯粒互联是指在两个芯粒的互联接口存在物理连接的基础上,使用互联协议来协调调度两个芯粒之间的通信,从而实现两个芯粒之间的互连互通。

芯粒互联涉及到芯粒之间的数据传输,因此在芯粒互联场景下,如何降低数据传输的处理负担,成为了本领域技术人员亟需解决的技术问题。

发明内容

有鉴于此,本申请实施例提供一种芯粒、数据传输处理方法、片上系统及计算机设备,以在芯粒互联场景下,降低数据传输的处理负担。

为实现上述目的,本申请实施例提供如下技术方案。

第一方面,本申请实施例提供一种芯粒,包括:用于芯粒互联的多个电路模块;所述多个电路模块至少包括应用层和协议层;

所述应用层,用于向协议层传输数据,所述数据的接收方为与所述芯粒相互联的对端芯粒;以及在应用层传输的数据发生错误时,基于协议层发送的错误中断请求信号,中断向协议层的数据传输;

所述协议层,用于获取应用层传输的数据,对数据进行数据校验,并判断数据校验是否成功;在数据校验失败时,向应用层发送错误中断请求信号;其中,数据校验失败表示应用层传输的数据发生错误。

第二方面,本申请实施例还提供一种数据传输处理方法,应用于芯粒的协议层,所述方法包括:

获取芯粒的应用层传输的数据;

对数据进行数据校验,并判断数据校验是否成功;

在数据校验失败时,向应用层发送错误中断请求信号,所述错误中断请求信号用于请求所述应用层中断向所述协议层的数据传输;其中,数据校验失败表示所述应用层传输的数据发生错误。

第三方面,本申请实施例还提供一种数据传输处理方法,应用于芯粒的应用层,所述方法包括:

向芯粒的协议层传输数据;

以及,在传输的数据发生错误时,获取所述协议层发送的错误中断请求信号;基于所述错误中断请求信号,中断向所述协议层的数据传输。

第四方面,本申请实施例还提供一种片上系统,包括互联的多个芯粒,所述芯粒如上述第一方面所述的芯粒。

第五方面,本申请实施例还提供一种计算机设备,包括如上述第四方面所述的片上系统。

本申请实施例提供的方案中,芯粒可以包括用于芯粒互联的多个电路模块,且所述多个电路模块至少包括应用层和协议层,从而在芯粒向对端芯粒发送数据时,芯粒的应用层可以向芯粒的协议层传输数据;协议层可对应用层传输的数据进行数据校验,并判断数据校验是否成功;在数据校验失败时,协议层可以向应用层发送错误中断请求信号,以请求应用层中断向协议层的数据传输,其中,数据校验失败表示应用层传输的数据发生错误;进而,应用层可以基于协议层发送的错误中断请求信号,中断向协议层的数据传输。也就是说,当协议层发现应用层传输的数据发生错误时,协议层可以向应用层发送错误中断请求信号,以使得应用层中断向协议层的数据传输,从而避免在数据发生错误的情况下,将数据传递到协议层的下一分层(例如链路层),降低了芯粒互联场景下,后续传输数据的其他分层的数据传输处理负担,特别是芯粒的链路层以及对端芯粒的链路层的数据传输处理负担。因此,本申请实施例可以降低芯粒互联场景下的数据传输处理负担,降低互联协议的分层的实现复杂度,特别是降低链路层的实现复杂度。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为芯粒互联的示例图。

图2A为互联协议的分层示例图。

图2B为芯粒利用分组交换技术进行数据传输处理的示例图。

图3A为数据包的格式示例图。

图3B为数据包的Header域的格式示例图。

图3C为数据包的Tail域的格式示例图。

图4为芯粒互联的数据传输示例图。

图5为本申请实施例提供的数据传输处理方法的流程图。

图6为数据包的另一格式示例图。

图7为本申请实施例提供的芯粒的架构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

以两个芯粒为例,图1示例性的示出了芯粒互联的示例图。如图1所示,芯粒可以包括互联接口11、以及多个功能模块12。在芯粒内部,互联接口11通过系统总线与多个功能模块12相连接。在两个芯粒之间,两个芯粒通过互联接口进行互联。

通过互联接口进行互联的两个芯粒可以是任意类型的两个芯粒,例如,两个功能芯粒之间可以通过互联接口进行互联、功能芯粒与接口芯粒之间可以通过互联接口进行互联等。

基于芯粒的类型不同,芯粒中实现芯粒功能的功能模块的形式也可能不同。例如,功能芯粒可以包括处理器核芯粒(比如CPU核芯粒),处理器核芯粒中的功能模块可以是处理器核和高速缓存(Cache)集成的模块等。又例如,接口芯粒可以是对接网络通信、USB(Universal Serial Bus、通用串行总线)通信、PCIE(Peripheral ComponentInterconnect Express,高速串行计算机扩展总线标准)通信等通信方式的接口模块所在的芯粒。

芯粒可以依据互联协议进行互联,示例的,图2A示例性的示出了互联协议的分层示例图,如图2A所示,芯粒基于互联协议的分层可以设置:应用层21、协议层22、链路层23、和物理层24。

需要说明的是,应用层、协议层、链路层、和物理层是基于互联协议的分层在芯粒中实现的用于芯粒互联的电路模块;也就是说,应用层、协议层、链路层、和物理层可以是电路模块的形式,例如,应用层电路模块(简称应用层)、协议层电路模块(简称协议层)、链路层电路模块(简称链路层)、和物理层电路模块(简称物理层)。在可能的实现中,链路层和物理层可以部署于芯粒的互联接口,作为互联接口中的电路模块;应用层和协议层可以不部署于芯粒的互联接口,并设置为链路层的上层电路模块。

应用层21作为互联协议的顶部分层,软件可以运行于应用层。例如,软件可以由芯粒的处理器硬件执行,并运行于应用层,处理器硬件比如芯粒的处理器核等。应用层可以管理软件,实现软件的数据与协议层22之间的通信;比如,应用层21可以将软件的数据传输给协议层22,同时应用层21可以将协议层22提供的数据传输给软件。在一个示例中,运行于应用层21的软件可以例如芯粒的系统软件,系统软件可用于管理和控制芯粒的硬件资源、执行操作系统功能、以及支持应用程序软件的正常运行等。在另一个示例中,运行于应用层21的软件可以例如运行于芯粒的应用程序软件。

协议层22用于支持芯粒承载的业务所对应的业务协议,与芯粒承载的业务的类型相关。进一步的,协议层22也可以支持用户自定义协议,例如用户自定义业务对应的协议。

链路层23可以为芯粒间的通信提供可靠性保障,包括但不限于:纠错、校验、重传机制等。

物理层24可以提供芯粒传输数据的物理通路。

芯粒互联的目的之一是实现芯粒之间的通信,即芯粒之间的数据传输。从芯粒的数据发送方向来看,在芯粒内部,应用层将数据传输给协议层,协议层将数据传输给链路层,链路层将数据传输物理层;进而,芯粒的物理层通过物理通路将数据传输到对端芯粒。也就是说,在芯粒的数据发送方向上,数据是在芯粒的应用层、协议层、链路层和物理层进行逐层的传递,并通过物理层将数据传输给对端芯粒。

从芯粒的数据接收方向来看,芯粒的物理层通过物理通路,接收对端芯粒发送的数据;进而,在芯粒内部,物理层将数据传输给链路层,链路层将数据传输给协议层,协议层将数据传输给应用层。也就是说,在芯粒的数据接收方向上,芯粒的物理层接收对端芯粒发送的数据后,数据是在芯粒的物理层、链路层、协议层和应用层进行逐层的传递。

为提升芯粒互联场景下,芯粒之间的数据传输效率和可靠性,芯粒可以通过分组交换技术,来实现数据的传输处理。为便于理解芯粒利用分组交换技术进行数据传输的方式,图2B示例性的示出了芯粒利用分组交换技术进行数据传输处理的示例图。结合图2A和图2B所示,从芯粒的数据发送方向来看,在芯粒内部,芯粒的应用层将数据传输给协议层,协议层将数据切分为多个数据包,并且协议层将多个数据包传输到链路层,链路层将多个数据包分发到物理层,由物理层通过物理通路将多个数据包传输到对端芯粒。

从芯粒的数据接收方向来看,芯粒的物理层通过物理通路,接收对端芯粒发送的多个数据包;进而,在芯粒内部,物理层将多个数据包传输给链路层,链路层将多个数据包传输给协议层,协议层将多个数据包重组为应用层的数据,并传输给应用层。

协议层在将数据切分为多个数据包时,数据包可以采用将数据内容、数据包元信息打包的格式,来提升数据传输效率和可靠性;其中,数据包元信息例如数据包的控制信息、校验信息等信息中的至少一项。在一个示例中,数据包可以采用互联协议报文件格式,互联协议报文件格式是一种将数据内容、数据包元信息打包在一起的格式,并将数据内容和数据包元信息分别封装在数据包的不同部分。

采用互联协议报文件格式的数据包可以称为Flit(Flitflow control unit,流控制单元),其中,Flit可以视为是Flitflow control unit的简写。需要说明的是,互联协议作为一种总线协议(例如SOC总线协议),在总线协议中,总线信号可以封装到Flit中进行传输,并且通信双方可以定义统一的Flit格式,以保证通信双方的正常通信。

为便于理解,以数据包元信息包括控制信息和校验信息为例,图3A示例性的示出了数据包的格式示例图,图3A所示的数据包格式可以适用于Flit,例如,协议层可以将应用层传输的数据切分为多个Flit(Flit为数据包的一种示例),并且Flit可以采用图3A所示的格式。

如图3A所示,数据包可以配置Header(头)域、Payload(净荷)域和Tail(尾)域。

Payload域携带数据包的具体数据内容,在芯粒互联场景下,Payload域携带的具体数据内容可以是芯粒的应用层传输给对端芯粒的数据,例如,芯粒的系统软件的数据。

通过在数据包的Payload域的头部添加Header域,以及在Payload域的尾部添加Tail域,可以实现将数据包的控制信息、校验信息与数据内容进行打包。

其中,数据包的Header域为数据包的开头部分,可以携带数据包的控制信息。在双方通信的场景下,数据包的控制信息用于帮助正确地路由数据包,数据包的控制信息可以例如源地址、目的地址、协议类型、序列号、时间戳等信息。在芯粒互联场景下,作为一个示例,数据包的控制信息可以至少包括数据包类型信息,用于指示数据包的类型;进一步的,数据包的控制信息还可以包括数据包应答信息,表示数据包的正常接收应答,以便在数据包未被正常接收应答时用于数据包重传。在上述示例中,数据包类型信息可以是数据包的控制信息中的必选信息,数据包应答信息可以是数据包的控制信息中的可选信息。

为便于理解,以数据包的控制信息可以包括数据包类型信息,以及数据包应答信息为例,图3B示例性的示出了数据包的Header域的格式示例图。如图3B所示,Header域可以包括Type(类型)域和ACK(应答)域。其中,Type域与数据包类型信息相对应,可通过不同的bit(比特)值,表示数据包的不同类型;Type域的bit位宽可以为1bit。ACK域与数据包应答信息相对应,ACK域的bit位宽可以为1bit。相应的,Header域的bit位宽可以定义为2比特。

数据包的Tail域为数据包的末尾部分,可以携带数据包的校验信息,用于检测数据包在传输过程中是否发生错误。例如,在芯粒互联场景下,数据包的传输需要经过多个分层(涉及互联协议在本端芯粒的分层、以及互联协议在对端芯粒的分层),并且每个分层需要对数据包进行处理和转发,这个过程中,数据包可能出现错误(例如数据损坏、丢失等),因此为了保证数据包传输的可靠性,可以在数据包中添加校验信息,以检测数据包在传输过程中是否发生错误,校验信息可以设置在数据包的Tail域。

数据包的校验信息可以包括数据包出错指示信息,以及数据包校验码。其中,数据包出错指示信息用于指示数据包是否在传输过程中发生错误。数据包校验码与芯粒采用的数据校验方式相关;数据校验方式包括但不限于CRC(Cyclic Redundancy Check,循环冗余校核)、ECC(Error Checking and Correcting,错误检查和纠正)等。

为便于理解,图3C示例性的示出了数据包的Tail域的格式示例图。如图3C所示,Tail域可以包括Poison(污染)域和CHK(校验码)域。Poison域携带数据包出错指示信息,可通过不同的bit(比特)值,表示数据包在传输过程中是否发生错误;Poison域的bit位宽可以为1bit。CHK域携带有用于对数据包进行校验的数据包校验码,数据包校验码可以根据Tail域定义的bit位宽以及采用的数据校验方式,设置CHK域的bit位宽。Tail域的bit位宽可以设为T_Len,T_Len与数据包(例如Flit)的bit位宽相关,数据包(例如Flit)的bit位宽可以设为F_Len。

基于数据包的校验机制,图4示例性的示出了芯粒互联的数据传输示例图。结合图4所示,在芯粒向对端芯粒发送数据时,芯粒的应用层可以向协议层发送数据;协议层将数据切分为多个数据包(例如多个Flit),如果协议层发现数据在从应用层传输到协议层的过程中发生错误,则将数据包的Tail域中的Poison域的数值设置为1,以指示(标注)数据包出错;为便于说明,出错的数据包可以称为Poisoned(被污染)数据包。

在数据包出错的情况下,芯粒的协议层将Poisoned数据包发送给链路层,链路层再将Poisoned数据包传输给物理层,从而由芯粒的物理层将Poisoned数据包传输给对端芯粒的物理层;Poisoned数据包在对端芯粒的物理层、链路层、协议层进行逐层的传递,进而,对端芯粒的协议层将Poisoned数据包组装为Poisoned数据,传递给对端芯粒的应用层。

可以看出,当数据发生错误时,Poisoned数据包在传输过程中需要经过多个分层的传输处理(涉及本端芯粒的协议层、链路层和物理层,以及对端芯粒的物理层、链路层、协议层和应用层),例如,每个分层均需要处理Poisoned数据包的Header域和Tail域,或者直接向下一需传输的分层传输Poisoned数据。

当数据发生错误时,经过多个分层来传输处理Poisoned数据包是因为:数据错误所造成的影响(例如数据错误对于业务造成的影响),需要在Poisoned数据包到达接收数据的对端芯粒时才能够被确认,当数据错误造成的影响较小时,对端芯粒可能并不在意存在数据错误的Poisoned数据包,而是可基于Poisoned数据包进行业务处理。也就是说,在发生数据错误时,将Poisoned数据包经过多个分层的传输处理,从而到达对端芯粒的应用层,可以在数据错误造成的影响较小时,降低数据错误对于业务处理的影响。

然而,数据发生错误时,Poisoned数据包经过多个分层进行传输处理,无疑增加了芯粒互联场景下的数据传输处理负担。例如芯粒的协议层在数据发生错误时,Poisoned数据包需要经过多个链路层的传输处理(此处的多个链路层涉及本端芯粒的链路层、以及对端芯粒的链路层),这增加了链路层的数据处理负担,进而增加了链路层的实现复杂度。

同时,数据包的Tail域中设置了Poison域,以表示数据包出错指示信息,并且在数据发生错误时,需要将数据包错误信息(例如值为1的Poison域)传输给下一分层(例如芯粒的链路层)进行处理,Poison域的设置导致数据包的格式较为复杂,同时这也增加了链路层的数据传输处理负担,进而增加了链路层的实现复杂度。

为降低芯粒互联场景下的数据传输处理负担(特别是降低链路层的数据传输处理负担,进而降低链路层的实现复杂度),本申请实施例提供芯粒互联场景下改进的数据传输处理方案,可以至少将数据包的Poison域设置为可选配置项。例如,在设计数据包的格式时,至少可以选择配置Poison域或者不配置Poison域。

从而,在至少选择不配置Poison域时,本申请实施例提供数据错误时的中断传输机制,以避免错误数据在多个分层的传输处理,降低芯粒互联场景下的数据传输处理负担。例如,芯粒的协议层在发现数据错误时,可以通过本申请实施例提供的中断传输机制,避免将错误数据传输给下一分层(例如链路层),进而避免错误数据需要经过多个链路层的传输处理(此处的多个链路层涉及本端芯粒的链路层、以及对端芯粒的链路层),降低链路层的数据传输处理负担,进而降低链路层的实现复杂度。

作为可选实现,在至少选择不配置Poison域时,本申请实施例提供的数据错误时的中断传输机制可以基于图5所示数据传输处理方法实现,图5示例性的示出了本申请实施例提供的数据传输处理方法的流程图,参照图5,该方法流程可以包括如下步骤。

在步骤S510中,应用层向协议层传输数据。

芯粒可以包括用于芯粒互联的多个电路模块,所述多个电路模块可以至少包括应用层(即应用层电路模块)和协议层(即协议层电路模块)。芯粒在需要向对端芯粒发送数据时,数据的接收方为与芯粒相互联的对端芯粒;此时,芯粒的应用层可以向芯粒的协议层传输数据,从而通过互联协议的多个分层之间的数据传输,数据可以到达对端芯粒的应用层。作为可选实现,应用层传输给协议层的数据可以是运行于应用层的系统软件的数据,例如,应用层可以将系统软件的数据传输给协议层。在一个实现示例中,应用层可以设置与协议层相对接的应用层数据缓存,从而应用层运行的系统软件的数据可以写入应用层数据缓存,进而应用层数据缓存可通过与协议层的接口,将数据传输给协议层。

作为可选实现,应用层可以向协议层传输数据流,例如,应用层可以向协议层传输系统软件的数据流。比如,应用层将系统软件的数据流写入应用层数据缓存,应用层数据缓存将数据流传输给协议层。在一个示例中,数据流可以包括时间连续的多个数据,例如,系统软件产生的时间连续的多个数据;从而应用层可以按照时间,向协议层传输时间连续的多个数据(即数据流)。

在步骤S511中,协议层对数据进行数据校验,并判断数据校验是否成功,若否,执行步骤S512,若是,执行步骤S514。

芯粒的协议层在获取到芯粒的应用层传输的数据后,可以对数据进行数据校验,并判断数据校验是否成功;判断数据校验是否成功的目的是判断应用层传输的数据是否发生错误,例如判断数据从芯粒的应用层传输到协议层的过程中是否发生错误。如果数据校验成功,则说明应用层传输的数据未发生错误(比如数据从芯粒的应用层传输到协议层的过程中未发生错误),如果数据校验失败,则说明应用层传输的数据发生错误(比如数据从芯粒的应用层传输到协议层的过程中发生错误)。

作为可选实现,协议层可以采用数据校验机制实现对数据进行数据校验,数据校验机制包括但不限于Parity(奇偶)校验、CRC校验等。

在可选实现中,应用层传输的数据可以携带数据位和校验位,数据位可以包括应用层发送的数据的具体数据内容,为便于说明,应用层传输的数据中校验位的值可以称为校验位的预期值,校验位的预期值可以基于数据位确定,例如基于数据位的具体数据内容进行确定。

从而,协议层在获取到应用层传输的数据后,可以基于数据位(例如数据位的具体数据内容),重新确定校验位的值;进而协议层可以将重新确定的校验位的值,与校验位的预期值进行比对(校验位的预期值携带在应用层传输给协议层的数据中),以实现对数据进行数据校验,达到判断数据位的具体数据内容是否在传输过程中发生错误的目的。例如,如果比对结果不一致(即重新确定的校验位的值,与校验位的预期值不一致),则可确定数据校验失败,相应的,数据位的具体数据内容在传输过程中发生错误;如果比对结果一致(即重新确定的校验位的值,与校验位的预期值相一致),则可确定数据校验成功,相应的,应用层传输的数据未发生错误,即数据位的具体数据内容在传输过程中未发生错误。

在一个实现示例中,以Parity校验为例,芯粒的应用层可以将数据的具体数据内容携带在数据位,并且利用奇偶校验规则,确定数据位所对应的校验位的预期值,从而将数据位和校验位形成的数据传输给芯粒的协议层。在二进制的情况下,奇偶校验规则可以根据数据位中1的数量是奇数还是偶数,来确定校验位的值。例如,奇偶校验规则可以分为奇校验规则和偶校验规则;使用奇校验规则时,校验位被设置为使数据位中1的数量为奇数,相应的校验位的值为1;使用偶校验规则时,校验位被设置为使数据位中1的数量为偶数,相应的校验位的值为0。比如,应用层在向协议层传输数据之前可以确定校验位的预期值,确定方式可以是:统计数据位中1的数量,如果使用奇校验规则,则确保校验位的预期值是1,如果使用偶校验规则,则确保校验位的预期值是0。

协议层在获取到应用层传输的数据后,可以根据应用层使用的奇偶校验规则,重新确定校验位的值。比如,对应用层发送的数据中的数据位进行位异或操作处理,将位异或操作处理的结果作为重新确定的校验位的值。在一个示例中,如果获取到的数据中数据位的1的数量为奇数,则对数据位进行位异或操作处理后,位异或操作处理的结果的值为1,相应的,重新确定的校验位的值为1;如果获取到的数据中数据位的1的数量为偶数,则对数据位进行位异或操作处理后,位异或操作处理的结果的值为0,相应的,重新确定的校验位的值为0。

进而,协议层可以将重新确定的校验位的值,与校验位的预期值进行比对,如果两者一致,则确定数据校验成功,相应的,数据位的具体数据内容在传输过程中未发生错误;如果两者不一致,则可确定数据校验失败,相应的,数据位的具体数据内容在传输过程中发生错误。比如,重新确定的校验位的值为1(表示协议层获取到的数据位中1的数量为奇数),而校验位的预期值为0(表示数据位中1的数量原先为偶数),则数据校验失败,说明数据位中的1在传输过程中发生数量变化,即数据位的具体数据内容在传输过程中发生错误;反之,则数据校验成功,可确认数据位的具体数据内容在传输过程中未发生错误。

作为可选实现,如果应用层向协议层传输数据流,基于数据流可以包括时间连续的多个数据,则协议层可以对从应用层获取的各个时间的数据分别进行数据校验。例如,协议层可以按照时间,对从应用层获取的时间连续的多个数据分别进行数据校验。

在可选实现中,协议层可以设置数据校验逻辑(例如奇偶校验逻辑),实现对数据进行数据校验,并判断数据是否发生错误。数据校验逻辑可以视为是设置于协议层的用于实现数据校验的逻辑功能单元,比如,奇偶校验逻辑可以视为是设置于协议层的用于实现Parity校验的逻辑功能单元。

在步骤S512中,协议层向应用层发送错误中断请求信号。

在数据校验失败(步骤S511的判断结果为否的情况)时,协议层可以向应用层发送错误中断请求信号,错误中断请求信号作为一种中断请求信号,可以用于请求应用层中断向协议层的数据传输。

在进一步的可选实现中,协议层可以在数据校验失败时(相应的,应用层发送的数据发生错误),将发生错误的数据进行丢弃(dump);例如,协议层在步骤S511中确认数据校验失败,则说明步骤S510中应用层传输给协议层的数据发生错误,则可将该发生错误的数据进行丢弃。

作为可选实现,如果应用层向协议层传输数据流,基于数据流可以包括时间连续的多个数据,则协议层可以在任意时间的数据存在数据校验失败时,向应用层发送错误中断请求信号。在一个示例中,协议层在获取应用层传输的数据流的过程中,可以对从应用层获取的各个时间的数据分别进行数据校验,并且在确认数据存在数据校验失败时,向应用层发送错误中断请求信号。

在可选实现中,协议层可以设置发送错误中断逻辑,以用于向应用层发送错误中断请求信号。发送错误中断逻辑可以视为是设置于协议层的用于向应用层发送错误中断请求信号的逻辑功能单元。发送错误中断逻辑可以在数据校验失败时(即应用层传输的数据发生错误时),向应用层发送错误中断请求信号。在一个示例中,协议层的数据校验逻辑(例如奇偶校验逻辑)在判断数据校验失败时,可以将数据校验失败的结果传递给协议层的发送错误中断逻辑,以触发该发送错误中断逻辑向所述中断控制逻辑发送错误中断请求信号;相应的,发送错误中断逻辑可以响应于数据校验失败的结果,向应用层发送错误中断请求信号。

在步骤S513中,应用层中断向协议层的数据传输。

应用层在获取到协议层发送的错误中断请求信号后,可以中断向协议层的数据传输,即停止将数据传输给协议层,例如停止将系统软件的数据传输给协议层。作为可选实现,应用层获取到协议层发送的错误中断请求信号后,可以中断向协议层传输数据流,例如,停止将系统软件产生的数据流传输给协议层。

可选的,如果应用层是通过将系统软件的数据(例如数据流)写入应用层数据缓存,并通过应用层数据缓存将系统软件的数据(例如数据流)传输给协议层的方式,来实现向协议层传输数据(例如数据流),则应用层在获取到协议层发送的错误中断请求信号后,可以控制系统软件将数据(例如数据流)停止写入应用层数据缓存,以实现应用层中断向协议层的数据传输。

在一个实现示例中,应用层可以设置中断控制逻辑,通过中断控制逻辑的中断响应,来响应协议层发送的错误中断请求信号,进而实现中断应用层向协议层的数据传输。可选的,中断控制逻辑可以响应于协议层发送的错误中断请求信号,生成中断响应信号(中断响应信号用于中断应用层向协议层的数据传输),进而通过中断响应信号,实现中断应用层向协议层的数据传输。

例如,应用层的中断控制逻辑可以获取协议层的发送错误中断逻辑发送的错误中断请求信号;从而,中断控制逻辑可以响应于错误中断请求信号,生成中断响应信号,并将中断响应信号传递给运行于应用层的系统软件;进而,系统软件可以基于中断响应信号的控制,将数据(例如系统软件的数据流)停止写入应用层数据缓存,以实现应用层中断向协议层的数据传输。

在可选实现中,中断控制逻辑可以视为是设置于应用层的用于进行中断控制的逻辑功能单元,中断控制逻辑例如中断控制器。

可以看出,本申请实施例提供的方案中,在芯粒向对端芯粒发送数据时,芯粒的应用层可以向芯粒的协议层传输数据;协议层可对应用层传输的数据进行数据校验,并判断数据校验是否成功;在数据校验失败时,协议层可以向应用层发送错误中断请求信号,以请求应用层中断向协议层的数据传输,其中,数据校验失败表示应用层传输的数据发生错误;进而,应用层可以基于协议层发送的错误中断请求信号,中断向协议层的数据传输。也就是说,当协议层发现应用层传输的数据发生错误时,协议层可以向应用层发送错误中断请求信号,以使得应用层中断向协议层的数据传输,从而避免在数据发生错误的情况下,将数据传递到协议层的下一分层(例如链路层),降低了芯粒互联场景下,后续传输数据的其他分层的数据传输处理负担,特别是芯粒的链路层以及对端芯粒的链路层的数据传输处理负担。因此,本申请实施例可以降低芯粒互联场景下的数据传输处理负担,降低互联协议的分层的实现复杂度,特别是降低链路层的实现复杂度。

在可选实现中,应用层中断向协议层的数据传输可以视为是芯粒进行数据错误处理的一种方式,数据错误处理方式还可以包括:保存数据错误的现场信息、尝试重新启动或者恢复数据传输(例如,尝试重新启动计算机设备或者恢复应用层向协议层传输数据)等。

在一个示例中,运行于应用层的系统软件获取到中断控制器发送的中断响应信号之后,芯粒的处理器硬件(例如芯粒中执行系统软件的处理器核)可以调用预设的中断处理程序,控制系统软件将数据(例如系统软件的数据流)停止写入应用层数据缓存。可选的,中断处理程序可以视为是数据错误处理程序中的一段程序(数据错误处理程序可以视为是芯粒进行数据错误处理的程序),从而芯粒还可基于数据错误处理程序的其他功能,实现保存数据错误的现场信息、尝试重新启动或者恢复数据传输等操作。

作为可选实现,在应用层传输给协议层的数据发生错误时,应用层可以通过数据传输恢复机制,来恢复向协议层传输数据,即恢复数据传输。数据传输恢复机制可以例如数据重传机制。在进一步的可选实现中,在应用层传输给协议层的数据发生错误时,应用层可以中断向协议层的数据传输,并且通过数据重传机制等数据传输恢复机制,恢复向协议层传输数据。

在一个示例中,协议层发送给应用层的错误中断请求信号可以进一步指示发生数据错误的数据,从而应用层可以中断向协议层的数据传输,并等待重传指示。重传指示所指示的需要重传的数据可以基于错误中断请求信号确定;比如,错误中断请求信号所指示的发生数据错误的数据,为需要重传的数据。进而,应用层可以基于重传指示,将发生数据错误的数据重传给协议层(例如,系统软件可以基于重传指示,将发生数据错误的数据重新写入应用层数据缓存,由应用层数据缓存将发生数据错误的数据重传给协议层)。同理,应用层重传给协议层的数据可以被协议层进行数据校验,协议层在数据校验失败后,可以再请求应用层中断数据传输,以此类推。

需要说明的是,数据重传机制仅是数据传输恢复机制的一种可选实现方式,本申请实施例也可在应用层中断向协议层的数据传输后,支持其他可能的数据传输恢复机制,以实现应用层恢复向协议层传输数据。

在进一步的可选实现中,如果应用层未设置数据重传机制等数据传输恢复机制,则计算机设备(芯粒设置于计算机设备)可以进行宕机处理,并进行重新启动;进而在计算机设备重新启动后,恢复应用层向协议层传输数据,以恢复芯粒之间的数据传输。

需要说明的是,区别于通过Poison域标注发生错误的数据,并将发生错误的数据发送到对端芯粒进行处理的方式,本申请实施例提供的方案可以在芯粒的应用层传输给芯粒的协议层的数据发生错误时,中断应用层向协议层的数据传输,避免将发生错误的数据传输给下一分层(例如链路层),降低芯粒互联场景下的数据处理负担。进一步的,本申请实施例可以在芯粒的应用层进行数据错误处理,即在错误的发生端进行数据错误处理,从而不额外增加链路层和对端芯粒的针对错误数据的处理,进一步降低了芯粒互联场景下的数据传输处理负担。进一步的,通过数据传输恢复机制,可以在应用层中断向协议层的数据传输后,恢复应用层向协议层传输数据,以使得数据传输能够在后续继续进行。

回到图5所示流程,在步骤S514中,协议层将数据切分为多个数据包。

在协议层对应用层传输的数据进行数据校验,并且数据校验成功后,数据可以继续传输。从而,协议层可以基于分组交换技术,将应用层传输的数据切分为多个数据包。

基于本申请实施例提供的在数据错误时的中断传输机制,本申请实施例可以在设计数据包的格式时,至少选择不配置Poison域;从而,协议层切分得到的数据包可以至少无Poison域。也就是说,应用层在传输给协议层的数据发生数据错误时,协议层可以请求应用层中断后续的数据传输(进一步的,协议层可以将应用层传输的发生数据错误的数据进行丢弃),从而发生数据错误的数据不会到达协议层的后续分层(例如链路层);同时,协议层是在应用层传输的数据不发生数据错误时(即数据校验成功时),将数据切分为数据包并传输到后续分层,因此传输到后续分层的数据包并未发生数据错误。基于此,协议层可以在数据包中至少不配置Poison域,即可以在数据包中不携带Poison域对应的数据包出错指示信息。

作为可选实现,在设计数据包的格式时,至少选择不配置Poison域可以是:在数据包中不配置Tail域;基于Poison域位于Tail域,在数据包中不配置Tail域,则相应的可以在数据包中实现不配置Poison域。作为一个示例,图6示例性的示出了数据包的另一格式示例图。如图6所示,在不配置Tail域的情况下,协议层在步骤S514中切分的数据包可以包括:Header域和Payload域。Header域和Payload域的介绍可以参照前文相应部分,此处不再赘述。

作为可选实现,在设计数据包的格式时,至少选择不配置Poison域可以是:在数据包的Tail域中不配置Poison域;例如,在数据包的Tail域中配置CHK域,但不配置Poison域。作为一个示例,协议层在步骤S514中切分的数据包可以包括:Header域、Payload域和Tail域。其中,Header域和Payload域的介绍可以参照前文相应部分,此处不再赘述。Tail域中配置有CHK域,用于携带数据包校验码。通过在Tail域中配置CHK域,可以用于数据包后续传输过程中的校验,例如协议层在切分得到数据包后,可以将数据包传输给后续分层,从而后续分层可以利用数据包的CHK域的数据包校验码,进行数据包的校验。比如,数据包到达对端芯粒的协议层后,协议层可以利用数据包的CHK域的数据包校验码,进行数据包的校验,以校验数据包在传输到对端芯粒的协议层的过程中是否发生错误。

需要说明的是,针对芯粒的应用层传输给芯粒的协议层的数据,数据中的校验位的预期值是用于:校验数据从应用层传输到协议层的过程中是否发生错误。而芯粒的协议层在将数据切分为数据包后,如果在数据包的Tail域中配置CHK域,CHK域中携带的数据包校验码是用于后续传输过程中数据包的校验。因此,应用层传输的数据中的校验位,与协议层切分的数据包中的CHK域用于数据不同传输阶段的校验。

可见,本申请实施例可以在数据包中至少不配置Poison域,从而简化协议层所切分的数据包的格式,以为降低数据包在后续传输过程中的处理负担和传输压力提供基础。

可选的,上述数据包可以采用至少不配置Poison域(比如不配置Poison域,或者不配置Tail域)的互联协议报文件格式,例如FLIT的Poison域可以作为可选配置,支持在FLIT中至少不配置Poison域(比如在FLIT中不配置Poison域,或者在FLIT中不配置Tail域)。需要说明的是,互联协议报文件格式(例如FLIT格式)可以根据不同的应用场景进行灵活配置,支持多种数据传输模式和协议,从而满足不同应用场景的需求;通过对互联协议报文件格式(例如FLIT格式)至少不配置Poison域,可以简化不同应用场景下互联协议报文件格式(例如FLIT格式)的结构,从而在不同应用场景下,降低使用互联协议报文件格式(例如FLIT格式)进行数据传输的处理负担。

作为可选实现,协议层可以设置数据切分逻辑,数据切分逻辑可以视为是设置于协议层的用于将数据切分为数据包的逻辑功能单元。从而,协议层的数据校验逻辑(例如奇偶校验逻辑)在判断数据校验成功时,可以将数据校验成功的结果传递给协议层的数据切分逻辑;进而,数据切分逻辑可以将应用层传输到协议层的数据切分为多个数据包。

在步骤S515中,协议层将数据包传输给链路层。

在可选实现中,芯粒中用于芯粒互联的多个电路模块还可以包括链路层(即链路层电路模块)。在应用层传输到协议层的数据被校验成功,且协议层将数据切分为多个数据包后,协议层可以将切分的数据包传输到链路层,以使得数据包能够通过后续多个分层(涉及本端芯粒的链路层和物理层,以及对端芯粒的物理层、链路层、协议层和应用层)的传输处理,到达对端芯粒的应用层。由于数据包中至少不配置Poison域,数据包的格式被简化,因此数据包在后续多个分层的传输处理的负担和压力能够降低,从而进一步降低了芯粒互联场景下的数据传输的处理负担。也就是说,在Poison域占用一定bit位宽(例如Poison域至少占用1bit)的情况下,通过在数据包中至少不配置Poison域,可以降低数据包在后续传输过程中的处理负担和传输压力,降低芯粒互联场景下的数据传输的处理负担。

作为可选实现,协议层可以设置协议层数据缓存,协议层的数据切分逻辑将应用层传输到协议层的数据切分为多个数据包后,数据切分逻辑可以将数据包写入协议层数据缓存,从而协议层数据缓存可通过与链路层的接口,将数据包传输给链路层。

进一步的,链路层在获得协议层传输的数据包后,可以将数据包传输给芯粒的物理层;芯粒的物理层可以通过物理通路将数据包传输到对端芯粒的物理层;对端芯粒的物理层可以将数据包传输给对端芯粒的链路层,对端芯粒的链路层可以将数据包传输给对端芯粒的协议层,对端芯粒的协议层可以将数据包重组为应用层的数据,并传输给对端芯粒的应用层,以实现数据在互联的芯粒之间的传输。

本申请实施例提供的数据传输处理方案,可以在协议层发现应用层传输的数据发生数据错误时,中断应用层的数据传输,并进一步丢弃发生数据错误的数据,而不必将发生数据错误的数据传输给下一分层(例如链路层)进行处理,因此可以减轻链路层的数据传输处理负担,降低链路层的实现复杂度。

同时,通过设置数据包(例如FLIT)的Poison域为可选配置,例如,可以直接设置数据包的Tail域为可选配置,则在数据包中至少不配置Poison域的情况下,协议层将应用层传输的数据进行切分后的数据包的格式可以被简化;进而,通过优化的数据包的格式结构,链路层等传输数据包的分层可以不用传输Poison域(甚至不用传输Tail域),避免了传输数据包的分层需要反复处理Poison域(甚至是Tail域)的情况,节省传输数据包的分层的硬件与软件开销,可以进一步降低链路层等传输数据包的分层的数据传输处理负担,减少链路层等传输数据包的分层进行数据传输处理时间,提高了芯粒互联场景下的数据传输效率。

作为实现本申请实施例提供的数据传输处理方法的一种可选芯粒结构,图7示例性的示出了本申请实施例提供的芯粒的架构示意图,需要说明的是,下文描述的内容可以与上文相关内容相互对应参照。

如图7所示,芯粒可以包括:应用层21、协议层22和链路层23。其中,应用层21运行有系统软件710,并且设置有应用层数据缓存711和中断控制逻辑(例如中断控制器)712;协议层22设置有数据校验逻辑(例如奇偶校验逻辑)720和发送错误中断逻辑721。

在可选实现中,系统软件710产生的数据可以作为芯粒需要传输到对端芯粒的数据,从而系统软件710可以将数据写入应用层数据缓存711。例如,系统软件710产生的数据流需要传输到对端芯粒进行业务处理,从而系统软件710产生的数据流可以写入应用层数据缓存711。

应用层数据缓存711可以将数据通过与协议层22的接口,传输到协议层22,以实现应用层21将数据传输到协议层22。

数据校验逻辑720可以对应用层21传输到协议层22的数据进行数据校验,并判断数据校验是否成功。可选的,数据校验逻辑720对数据进行数据校验的实现方式可以参照前文相应部分的描述,此处不再赘述。

基于数据校验失败和数据校验成功的不同情况,应用层21和协议层22之间可以存在不同的交互,下面分别进行介绍。

一、数据校验失败的情况。

数据校验逻辑720可以将数据校验失败的结果传递给发送错误中断逻辑721。发送错误中断逻辑721可以响应于数据校验逻辑720传递的数据校验失败的结果,向应用层21发送错误中断请求信号,例如,向应用层21的中断控制逻辑712发送错误中断请求信号。

中断控制逻辑712在获取到协议层22的发送错误中断逻辑721发送的错误中断请求信号后,可以响应于错误中断请求信号,生成中断响应信号,并将中断响应信号传递给系统软件710。

系统软件710在获取到中断控制逻辑712发送的错误中断请求信号之后,可以将数据(例如系统软件的数据流)停止写入应用层数据缓存711,以实现应用层中断向协议层的数据传输。

进一步的,应用层21还可以在中断向协议层的数据传输后,通过数据传输恢复机制,恢复向协议层22传输数据。例如,在系统软件710将数据停止写入应用层数据缓存711之后,应用层21可以基于错误中断请求信号所指示的发生数据错误的数据,产生重传指示,重传指示可用于指示对发生数据错误的数据进行重新传输;从而,系统软件710可以基于重传指示,将发生数据错误的数据重新写入应用层数据缓存,以实现恢复向协议层22传输数据。

进一步的,设置芯粒的计算机设备也可以进行宕机处理,并进行重新启动;从而在计算机设备重新启动后,恢复应用层21向协议层22传输数据。

二、数据校验成功的情况。

进一步结合图7所示,协议层22还可以设置数据切分逻辑722,以及协议层数据缓存723。

在应用层21传输给协议层22的数据被校验成功后,数据校验逻辑720可以将数据校验成功的结果传递给数据切分逻辑722。

数据切分逻辑722可以将应用层传输到协议层的数据切分为多个数据包。数据包可以至少不配置Poison域。数据包至少不配置Poison域的相关内容可以参照前文相应部分的描述,此处不再赘述。

数据切分逻辑722可以将数据包写入协议层数据缓存723;从而,协议层数据缓存723可通过与链路层23的接口,将数据包传输给链路层23。

本申请实施例还提供一种片上系统,片上系统可以包括互联的多个芯粒,芯粒可以如本申请实施例提供的芯粒。

本申请实施例还提供一种计算机设备,计算机设备例如终端设备或者服务器设备,计算机设备可以包括本申请实施例提供的上述的片上系统。

上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。

虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

相关技术
  • 一种无人叉车车位角误差校正方法
  • 误差校正方法、双缸叉车、误差校正装置和电子装置
技术分类

06120116549334