一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种重传方法、内存控制器、处理器系统及电子设备与流程

2021-12-17 21:02:00 来源:中国专利 TAG:


1.本技术实施例涉及处理器技术领域,具体涉及一种重传方法、内存控制器、处理器系统及电子设备。


背景技术:

2.内存作为处理器系统中重要的存储器件,cpu(central processing unit,中央处理器)会与内存之间进行大量的命令和数据传输。然而,cpu与内存之间的命令和数据传输可能存在传输出错的情况,为确保处理器系统的可靠性,处理器系统对此需要具备足够强大的容错机制。
3.cpu从内存读数据是cpu与内存之间常见的数据传输场景,针对读数据传输出错的情况,如何提供容错机制,成为了本领域技术人员需要解决的技术问题。


技术实现要素:

4.有鉴于此,本技术实施例提供一种重传方法、内存控制器、处理器系统及电子设备,以通过本技术实施例提供的重传方案,在读数据传输出错的情况下提供容错机制。
5.为实现上述目的,本技术实施例提供如下技术方案。
6.第一方面,本技术实施例提供一种重传方法,包括:
7.获取目标读命令;
8.将所述目标读命令发送给内存,并且将所述目标读命令存放在重传队列中,所述重传队列存放有已发送给内存的读命令;
9.从内存获取所述目标读命令相应的目标读数据;
10.校验所述目标读数据;
11.若基于校验结果确定目标读数据校验失败,从所述重传队列中确定包含目标读命令的至少一个读命令;
12.将所述至少一个读命令重新传输给内存。
13.第二方面,本技术实施例提供一种内存控制器,包括:
14.目标读命令获取模块,用于获取目标读命令;
15.重传队列,用于存放已发送给内存的读命令;其中,所述目标读命令在发送给内存的同时,存放在所述重传队列中;
16.校验模块,用于校验从内存获取的所述目标读命令相应的目标读数据;
17.重传决定模块,用于若基于校验结果确定目标读数据校验失败,从所述重传队列中确定包含目标读命令的至少一个读命令;
18.其中,所述重传队列中存放的所述至少一个读命令重新传输给内存。
19.第三方面,本技术实施例提供一种处理器系统,包括内存控制器,所述内存控制器被配置为执行如上述第一方面所述的重传方法。
20.第四方面,本技术实施例提供一种电子设备,包括如上述第三方面所述的处理器
系统。
21.本技术实施例提供的重传方法可设置重传队列来存放已发送给内存的读命令,当目标读命令发送给内存时,本技术实施例可将目标读命令存放在重传队列中。进而在从内存获取到目标读命令相应的目标读数据之后,本技术实施例可对目标读数据进行校验。在基于校验结果确定目标读数据校验失败时,本技术实施例可从重传队列中确定包含目标读命令的至少一个读命令,并将所述至少一个读命令重新传输给内存,以使得内存能够至少重新传输目标读命令对应的目标读数据。可见,本技术实施例提供的重传方法能够在读数据传输出错的情况下,至少将读数据相应的读命令重新传输给内存,以使得内存能够至少对传输出错的读数据进行重新传输,从而使得处理器系统在读数据传输出错时,能够通过重传机制进行修复,增强了处理器系统对于读数据传输出错的容错能力,提高了处理器系统的可靠性,保障了处理器系统的稳定运行。
附图说明
22.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
23.图1a为处理器系统的结构示意图。
24.图1b为cpu向内存写数据的示意图。
25.图1c为cpu从内存读数据的示意图。
26.图2a为本技术实施例提供的重传方法的流程图。
27.图2b为本技术实施例提供的处理器系统的结构示意图。
28.图3为本技术实施例提供的基于校验结果确定目标读数据是否校验失败的方法流程图。
29.图4为本技术实施例提供的重传队列乱序存放读命令的示意图。
30.图5为本技术实施例提供的处理器系统的再一结构示意图。
具体实施方式
31.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
32.图1a示例性的示出了处理器系统100的结构示意图。如图1a所示,该处理器系统100可以包括:cpu 110、内存控制器120和内存130。其中,cpu 110是处理器系统100的运算和控制核心,作为信息处理、程序运行的最终执行单元。内存控制器120是控制内存130,并且使cpu 110与内存130进行数据传输的硬件。内存130为处理器系统100中的存储器件,用于暂时存放cpu 110中的运算数据,并与硬盘等外部存储器交换数据。在一个示例中,内存130例如dram(dynamic random access memory,动态随机存取存储器)。
33.需要说明的是,尽管上述处理器系统100的结构仅示出了cpu 110、内存控制器120
和内存130,但是在具体实施过程中,处理器系统100还可以包括实现正常运行所必需的其他组件。例如,cpu 110与内存控制器120之间还可布置多级缓存(cache)等。本技术实施例所指的处理器系统可以是芯片系统,例如soc(system on chip,系统级芯片)等集成电路芯片系统。
34.在处理器系统100中,cpu 110会通过内存控制器120与内存130进行大量的命令和数据传输,具体包括:cpu 110通过内存控制器120向内存130写数据时的写命令和写数据发送,以及cpu 110通过内存控制器120从内存130读数据时的读命令发送和读数据接收。
35.随着处理器系统100的设计越来越复杂、命令和数据的传输速度越来越快、传输数据的吞吐量越来越大,cpu 110与内存130之间传输命令和数据的出错概率也随之增加。另外,处理器系统100的印刷电路板的开路和短路问题、命令和数据高速并行传输中的信号干扰问题也会增加命令和数据传输的出错概率。为应对命令和数据传输出错的情况,处理器系统100需要提供重传机制,以在命令和数据传输出错时,保障命令和数据能够重新传输,从而提高处理器系统100的可靠性。
36.处理器系统100的重传机制需要覆盖写命令和写数据的传输,以及读命令和读数据的传输。
37.图1b示例性的示出了cpu 110向内存130写数据的示意图。如图1b所示,在cpu 110向内存130写数据时,cpu 110可通过内存控制器120向内存130发送写命令和写数据,写命令中可以携带写数据写入内存130的写入地址。内存130接收写命令和写数据后,可对写命令进行parity(奇偶)校验(例如对写命令以及写命令携带的写地址进行parity校验),对写数据进行写crc(cyclic redundancy check,循环冗余检验)检验。如果写命令校验失败,则内存130可向内存控制器120反馈报警信号,使得内存控制器120对传输出错的写命令进行重传。如果写数据校验失败,则内存130可向内存控制器120反馈报警信号,使得内存控制器120对传输出错的写数据进行重传。如果写命令和写数据均校验成功,则内存130可基于写命令中携带的写地址,在内存130的存储空间中写入写数据。
38.其中,parity校验是一种校验代码传输正确性的方法,其根据被传输的一组二进制代码中“1”的个数是奇数或者偶数来进行校验。crc检验是指通过数学运算实现有效信息和校验位之间的循环校验。
39.图1c示例性的示出了cpu 110从内存130读数据的示意图。如图1c所示,在cpu 110从内存130读数据时,cpu 110可通过内存控制器120向内存130发送读命令,读命令中可以携带从内存130读取数据的读地址。内存130接收读命令后,可对读命令进行parity校验(例如对读命令以及读命令携带的读地址进行parity校验)。如果读命令校验失败,则内存130可向内存控制器120反馈报警信号,使得内存控制器120对传输出错的读命令进行重传。如果读命令校验成功,则内存130可基于读命令中携带的读地址,在内存130的存储空间中读取读数据,并将读数据通过内存控制器120反馈给cpu 110。然而,读数据在传输过程中可能存在传输出错(例如读数据在从内存130传输到内存控制器120的过程中可能出错),本技术实施例主要探究读数据传输出错情况下的重传机制。
40.内存130可在写数据场景下,通过校验写命令和写数据,以在写命令或写数据校验失败时,通过向内存控制器120反馈报警信号,实现写命令或写数据传输出错时的重传。而在读数据场景下,内存130可通过校验读命令,以在读命令校验失败时,通过向内存控制器
120反馈报警信号,实现读命令传输出错时的重传。也就是说,内存130作为写命令、写数据和读命令的rx(接收)方,是通过对tx(发送)方向传输来的写命令、写数据和读命令进行校验,以在校验失败时,通过通知作为tx方的内存控制器120,实现写命令、写数据和读命令传输出错时的重传。
41.在具体的读数据场景下,内存130是作为读命令的rx方和读数据的tx方,内存控制器120是作为读命令的tx方和读数据的rx方,由于读数据的tx方和rx方不同于写命令、写数据、读命令的tx方和rx方,因此在读数据传输出错时,写命令、写数据、读命令传输出错时的重传机制并无法适用于读数据传输出错的情况。并且,目前的协议标准(例如ddr4协议标准)对于命令和数据仅提供了parity校验和写crc校验,其中,parity校验读命令和写命令,写crc校验写数据,这些校验均是由内存实现并由内存向内存控制器反馈校验结果,并无法适用于读数据传输出错的情况。
42.可见,目前并没有读数据传输出错情况下的重传方案,在读数据传输出错时,处理器系统无法通过重传机制来修复读数据的传输错误,而只能停止工作,这极大降低了处理器系统的可靠性和稳定性。基于此,本技术实施例提供读数据传输出错情况下的重传方案,以在读数据传输出错的情况下提供容错机制,使得处理器系统能够通过重传机制来修复读数据的传输错误,提升处理器系统的可靠性和稳定性。
43.作为可选实现,图2a示例性的示出了本技术实施例提供的重传方法的可选流程图。该方法流程可由内存控制器120和内存130执行实现。参照图2a所示,该方法流程可以包括如下步骤。
44.在步骤s210中,内存控制器获取目标读命令。
45.目标读命令可以是内存控制器120当前需要发送给内存130的读命令。目标读命令可以来自于cpu 110。
46.在一些实施例中,内存控制器120在接收cpu 110传输的读命令之后,可以先保存读命令,当内存控制器120保存的读命令数量达到设定的预设数量时,内存控制器120可从保存的读命令中确定一个当前需要发送给内存130的读命令,以实现获取目标读命令。
47.作为可选实现,cpu 110传输给内存控制器120的读命令可以携带访问优先级和/或地址访问效率,当内存控制器120保存的读命令达到预设数量时,内存控制器可基于每个读命令的访问优先级和/或地址访问效率,从保存的预设数量的读命令中筛选出一个目标读命令,从而使得访问优先级和/或地址访问效率最高的读命令能够优先被筛选执行。例如,当内存控制器120保存的读命令达到预设数量时,内存控制器120可以根据筛选优先级与读命令的访问优先级和/或地址访问效率呈正相关的关系,从保存的预设数量的读命令中筛选出一个目标读命令。也就是说,读命令的访问优先级越高、地址访问效率越高,则读命令被筛选被目标读命令的优先级越高。
48.需要说明的是,预设数量的具体数值可以根据实际情况设置,本技术实施例并不设限。
49.在另一些实施例中,内存控制器120在接收cpu 110传输的一个读命令之后,也可将接收的读命令直接作为目标读命令,并发送给内存130。也就是说,在此种实现中,内存控制器120可将从cpu 110接收到的读命令,按序作为目标读命令,而不考虑读命令的访问优先级和/或地址访问效率。
50.在步骤s211中,内存控制器将目标读命令发送给内存。
51.在步骤s212中,内存控制器将目标读命令存放在重传队列中,重传队列存放有已发送给内存的读命令。
52.内存控制器120在获取目标读命令之后,可以将目标读命令发送给内存130。为在目标读命令对应的目标读数据传输出错时,本技术实施例能够实现内存控制器120向内存130重新传输目标读命令,内存控制器120中可以设置重传队列;重传队列可以是内存控制器120中增加设置的队列数据结构,用于记录内存控制器120已发送给内存130的读命令。作为可选实现,内存控制器120在将目标读命令发送给内存130的同时,可以将目标读命令存放到重传队列中。
53.在一些实施例中,内存控制器120发送给内存130的每个读命令是具有发送顺序的,本技术实施例可在重传队列中表达读命令发送给内存130的发送顺序。即,重传队列表达有读命令发送给内存的发送顺序。
54.作为可选实现,内存控制器120可以根据读命令发送给内存130的发送顺序,将读命令按序存放在重传队列中。即,重传队列可以按照读命令发送给内存130的发送顺序,按序存放读命令。在此实现中,读命令在重传队列中的顺序可以表达读命令的发送顺序,例如,读命令在重传队列中的存放位置的顺序,与读命令的发送顺序相一致。
55.在其他可能的实现中,重传队列也可按照随机顺序,乱序存放读命令,并通过记录重传队列中各个读命令的发送顺序,来表达读命令的发送顺序。因此,重传队列按照读命令的发送顺序,按序存放读命令仅是重传队列存放读命令的一种可选手段。
56.在一些实施例中,重传队列可以设置存放读命令的数量限值,即重传队列中存放的读命令的数量不应超过数量限值,该数量限值的具体数值可以根据实际情况设置,本技术实施例并不设限。
57.作为可选实现,内存控制器120在将目标读命令存放到重传队列时,重传队列可能已经存放有先前已发送给内存130的读命令。例如,在重传队列按照发送顺序,按序存放读命令的情况下,目标读命令的存放位置之前可能已存放有一个或多个读命令。当然,目标读命令也可能是重传队列中的首个读命令,例如,目标读命令为内存控制器120首个发送给内存130的读命令等。
58.在进一步的一些实施例中,如果重传队列存放的读命令的数量已达到数量限值,则内存控制器120需停止向内存130发送读命令以及将读命令存放在重传队列中,直至重传队列存放的读命令的数量低于数量限值。也就是说,需要等待重传队列具有空闲的存放位置能够存放读命令时,内存控制器120才能继续向内存130发送读命令,并将发送给内存130的读命令存放到重传队列中。通过这样的处理方式,可以使得发送给内存130的读命令均能够在重传队列中存放。
59.在进一步的可选实现上,内存控制器120在执行步骤s211和步骤s212之前,可以先检测重传队列存放的读命令的数量是否达到数量限值;若否,则可进入执行步骤s211和步骤s212;若是,则内存控制器120需取消执行步骤s211和步骤s212,直至重传队列存放的读命令的数量低于数量限值时,才执行步骤s211和步骤s212。
60.在进一步的一些实施例中,重传队列存放的读命令的数量达到数量限值时,可以标记读命令存满标志。本技术实施例可通过检测重传队列是否标记有读命令存满标志,以
实现检测重传队列存放的读命令的数量是否达到数量限值。例如,若重传队列标记有读命令存满标志,则重传队列存放的读命令的数量达到数量限值,若重传队列未标记有读命令存满标志,则重传队列存放的读命令的数量未达到数量限值。
61.在步骤s213中,内存根据目标读命令,读取与目标读命令相应的目标读数据。
62.在步骤s214中,内存将目标读数据发送给内存控制器。
63.内存130在获取到内存控制器120发送的目标读命令之后,可解析目标读命令,从内存130的存储空间中读取到与目标读命令相应的目标读数据。在一些实施例中,目标读命令可以携带读地址,内存130解析目标读命令获取到读地址之后,可按照读地址从存储空间中读取到相应的目标读数据。
64.在进一步的一些实施例中,内存130也可对目标读命令进行校验(例如parity校验),内存130在目标读命令校验成功时,才读取与目标读命令相应的目标读数据,而在目标读命令校验失败时(即目标读命令传输出错),内存130可向内存控制器120反馈报警信号,以使得内存控制器120重传传输目标读命令。
65.在内存130读取到目标读数据之后,内存130可将目标读数据发送给内存控制器120,以使得内存控制器120获取到目标读数据。
66.在步骤s215中,内存控制器校验目标读数据。
67.在一些实施例中,为便于内存控制器120校验目标读数据,内存130在读取到目标读数据之后,可以计算目标读数据的目标校验码,并将目标校验码连同目标读数据发送给内存控制器120,从而内存控制器120可同时获取到目标读数据以及目标读数据对应的目标校验码。
68.在内存控制器120校验目标读数据的一种可选实现中,内存控制器120可重新计算目标读数据的校验码,将重新计算的校验码与目标校验码进行比对;若比对结果一致,则校验目标读数据成功,即目标读数据在传输过程中未传输出错;若比对结果不一致,则校验目标读数据失败,即目标读数据在传输过程中传输出错。
69.作为一种可选实现,内存控制器120可基于ecc(error checking and correcting,错误检查和纠正)校验机制,对目标读数据进行校验。例如,内存130可以计算目标读数据的目标ecc校验码,并将目标ecc校验码连同目标读数据发送给内存控制器120。从而,内存控制器120可重新计算目标读数据的ecc校验码,将重新计算的ecc校验码与目标ecc校验码进行比对,以实现对目标读数据进行校验。
70.在另一些实施例中,内存控制器也可基于其他校验机制实现对目标读数据进行校验,而不限于通过比对校验码(例如ecc校验码)的方式来实现校验目标读数据。
71.在步骤s216中,内存控制器若基于校验结果确定目标读数据校验成功,将目标读数据发送给cpu,并删除重传队列中存放的目标读命令。
72.内存控制器基于步骤s215可生成校验结果。例如,在校验目标读数据失败时,内存控制器可生成校验失败结果。基于校验结果,本技术实施例可确定目标读数据校验成功还是校验失败。
73.在目标读数据校验成功的情况下,内存控制器120可将目标读数据发送给cpu 110,从而实现cpu 110成功从内存130中读取目标读命令相应的目标读数据。同时,内存控制器120可将重传队列中存放的目标读命令进行删除,以使得重传队列能够具有空闲的存
放位置,来存放后续需要发送给内存的读命令。
74.在步骤s217中,内存控制器若基于校验结果确定目标读数据校验失败,从重传队列中确定包含目标读命令的至少一个读命令。
75.在步骤s218中,内存控制器将至少一个读命令重新传输给内存。
76.目标读数据校验失败说明目标读数据的传输出错,内存控制器120需要控制内存130重新传输目标读数据。为使得内存130能够重新传输目标读数据,内存控制器120需要至少向内存130重新传输目标读命令,以使得内存130基于重新传输的目标读命令,重新传输目标读数据。基于目标读命令存放在内存控制器120的重传队列中,内存控制器120可从重传队列中确定需要重新传输的包含目标读命令的至少一个读命令,并将该至少一个读命令重新传输给内存130。
77.在一些实施例中,在目标读数据校验失败的情况下,内存控制器120与内存130之间的传输路径存在问题,而由于内存控制器120是顺序向内存130发送读命令,因此在目标读数据校验失败的情况下,目标读命令之后发送给内存130的读命令由于传输路径的问题,也极大可能存在读数据传输出错的情况;也就是说,在先读命令的数据传输路径出错将影响在后读命令的数据传输效果。因此,在目标读命令对应的目标读数据校验失败时,除目标读命令需要重新传输之外,在目标读命令之后发送给内存130的读命令也需要重新传输。
78.作为一种可选实现,内存控制器120可从重传队列中确定目标读命令以及在目标读命令之后发送给内存的读命令,从而形成所述至少一个读命令,将所述至少一个读命令作为需要重新传输的读命令。也就是说,所述至少一个读命令可以包括:目标读命令以及在目标读命令之后发送给内存的读命令。进而,内存控制器120可将所述至少一个读命令重新传输给内存130,以实现内存130重新传输所述至少一个读命令对应的读数据。由于所述至少一个读命令包含目标读命令,因此所述至少一个读命令对应的读数据可以包含目标读数据,实现了目标读数据传输出错情况下的重新传输,为提升处理器系统的稳定性提供了可能。
79.本技术实施例提供的重传方法可设置重传队列来存放已发送给内存的读命令,当目标读命令发送给内存时,本技术实施例可将目标读命令存放在重传队列中。进而在从内存获取到目标读命令相应的目标读数据之后,本技术实施例可对目标读数据进行校验。在基于校验结果确定目标读数据校验失败时,本技术实施例可从重传队列中确定包含目标读命令的至少一个读命令,并将所述至少一个读命令重新传输给内存,以使得内存能够至少重新传输目标读命令对应的目标读数据。可见,本技术实施例提供的重传方法能够在读数据传输出错的情况下,至少将读数据相应的读命令重新传输给内存,以使得内存能够至少对传输出错的读数据进行重新传输,从而使得处理器系统在读数据传输出错时,能够通过重传机制进行修复,增强了处理器系统对于读数据传输出错的容错能力,提高了处理器系统的可靠性,保障了处理器系统的稳定运行。
80.在图2a所示方法流程的原理下,作为处理器系统100实现读数据重传的一种可选架构实现,图2b示例性的示出了本技术实施例提供的处理器系统100的结构示意图。结合图1a和图2b所示,图2b所示处理器系统100中的内存控制器120可以包括:仲裁模块121、重传队列122、校验模块123和重传决定模块124。
81.其中,仲裁模块121可用于保存cpu 110发送给内存控制器120的读命令,并在保存
的读命令达到预设数量时,通过仲裁策略,从保存的读命令中筛选出当前需要发送给内存130的一个目标读命令。在一些实施例中,仲裁策略可以包括:读命令被筛选为目标读命令的优先级,与读命令的访问优先级和/或地址访问效率呈正相关的关系。例如,仲裁模块121在保存的读命令达到预设数量时,可从保存的读命令中,筛选出访问优先级和/或地址访问效率最高的读命令,作为目标读命令。
82.仲裁模块121筛选出的目标读命令可以发送给内存130并同时存放在重传队列122中。为便于说明,图2b中以mi表示目标读命令。
83.在一些实施例中,内存控制器120中可以设置读命令接收接口和读命令发送接口,读命令接收接口可用于从cpu 110接收读命令,读命令发送接口可用于向内存130发送读命令。从而,仲裁模块121可通过读命令接收接口,接收cpu 110发送的读命令并保存,仲裁模块121可通过读命令发送接口,将目标读命令mi发送给内存130。
84.重传队列122可存放内存控制器120已发送给内存130的读命令。在一些实施例中,重传队列122可按照读命令发送给内存130的发送顺序,按序存放读命令。重传队列122可以设置允许存放读命令的数量限值,当重传队列122存满读命令时(即重传队列122存放的读命令数量达到数量限值),内存控制器120需停止将读命令发送给内存130以及停止将读命令存放到重传队列122中,直至重传队列122具有空闲的存放位置存放读命令时(此时重传队列122未标记读命令存满标志),才将读命令发送给内存130并存放到重传队列122中。
85.在一些实施例中,仲裁模块121筛选出目标读命令mi之后,内存控制器120可以检测重传队列122存放的读命令数量是否达到数量限值(例如,检测重传队列122是否标记有读命令存满标志);若是,则停止将目标读命令mi发送给内存130以及停止将目标读命令mi存放到重传队列122,直至重传队列122具有空闲的存放位置存放目标读命令mi;若否,则内存控制器120可以将目标读命令mi发送给内存130,以及将目标读命令mi存放到重传队列122。
86.在将目标读命令mi存放到重传队列122的一种可选实现上,重传队列122可按照读命令的发送顺序,按序存放读命令。假设重传队列122已存放有读命令m1至mi

1(m1至mi

1按照发送顺序按序存放),并且重传队列122未存满读命令,则目标读命令mi可存放在重传队列122中,且目标读命令mi存放在读命令mi

1之后(例如,目标读命令mi的存放位置位于读命令mi

1的存放位置之后)。
87.可以理解的是,随着cpu 110不断的向内存控制器120发送读命令,仲裁模块121将会不断的筛选出需要发送给内存130的读命令,并存放在重传队列122中;因此,目标读命令mi存放到重传队列122之后,重传队列122还可在目标读命令mi之后存放一个或多个读命令,本技术实施例可将目标读命令mi之后存放的读命令定义为mi 1至mn(mi 1至mn可以按照发送顺序,在目标读命令mi之后按序存放),n的数值可以不大于所述数量限值。当然,目标读命令mi也可能是重传队列122中的首个读命令或者末尾读命令,本技术实施例仅以目标读命令mi为重传队列122中的非首个读命令和非末尾读命令进行示例说明。
88.目标读命令mi发送到内存130之后,内存130可解析目标读命令mi,并在校验目标读命令mi成功的情况下,读取目标读命令mi相应的目标读数据di(为便于说明,图2b中以di定义目标读数据)。内存130可计算目标读数据di相应的目标校验码(例如目标ecc校验码),将目标读数据di以及目标校验码发送给内存控制器120。
89.内存控制器120中的校验模块123可对目标读数据di进行校验。在一些实施例中,校验模块123可重新计算目标读数据di的校验码(例如ecc校验码),将重新计算的校验码与目标校验码进行比对,以实现校验目标读数据di。
90.在校验模块123校验目标读数据di成功的情况下,内存控制器120可将目标读数据di发送给cpu 110,以实现cpu 110从内存130成功读取数据。同时,内存控制器120可删除重传队列122中存放的相应目标读命令mi,以使得重传队列122空余出空闲的存放位置。
91.在一些实施例中,内存控制器120需要按照目标读命令mi的发送顺序,在重传队列122中按序删除目标读命令mi。例如,在重传队列122中,如果目标读命令mi之前还存在读命令未删除,则目标读命令mi需等待之前的读命令删除之后才能删除。这样操作的原因是:重传队列122是按照读命令的发送顺序,按序存放读命令,如果目标读命令mi之前还存在读命令未删除,则目标读命令mi之前的读命令可能存在读数据传输出错的情况,由于在先读命令的数据传输路径出错将影响在后读命令的数据传输效果,因此目标读命令mi之前的读命令如果存在读数据传输出错,则目标读命令mi也需要连同重新传输。基于此,如果在重传队列122中,目标读命令mi之前还存在读命令未删除,则目标读命令mi需要等待之前的读命令删除之后再进行删除,以保障读命令整体传输的可靠性。
92.在校验模块123校验目标读数据di失败的情况下,内存控制器120可生成校验失败结果,并将校验失败结果传输给重传决定模块124。
93.重传决定模块124在获取到校验失败结果之后,可基于校验失败结果确定目标读数据di校验失败,即目标读数据di存在传输出错(例如目标读数据在传输过程中存在随机错误等),从而重传决定模块124需从重传队列122中决定用于重新传输的读命令。在一些实施例中,由于在先读命令的数据传输路径出错将影响在后读命令的数据传输效果,重传决定模块124可从重传队列122中确定目标读命令mi,以及目标读命令之后的读命令mi 1至mn,从而将读命令mi至mn作为用于重新传输的读命令。
94.内存控制器120可将读命令mi至mn重新传输给内存130,以使得内存130重新传输读命令mi至mn各自对应的读数据。例如,重传队列122中存放的读命令mi至mn,可通过读命令发送接口,重新传输给内存130。
95.内存130获取到重新传输的读命令mi至mn之后,可在解析并校验读命令mi至mn成功之后,将读命令mi至mn各自相应的读数据以及校验码,重新传输给内存控制器120。从而,内存控制器120中的校验模块123可对重新传输的读数据进行重新校验。
96.针对重新传输的任一项读数据(例如针对读命令mi至mn中的任一读命令所重新传输的读数据),校验模块123校验读数据成功情况下的处理流程,以及校验读数据失败情况下的处理流程可同理参照前文相应部分,此处不再展开说明。原则上来说,如果重新传输的读数据校验成功,则重新传输的读数据可反馈给cpu 110,并且对应的读命令按照发送顺序在重传队列122中进行按序删除;如果重新传输的读数据仍然校验失败,则重新传输的读数据在重传队列122中对应的读命令以及该读命令之后发送的读命令,需要重新传输给内存130。
97.在一些实施例中,内存控制器120中可以设置读数据接收接口和读数据发送接口,读数据接收接口可用于从内存接收读数据,读数据发送接口可用于向cpu发送读数据。从而,校验模块123可通过读数据接收接口,接收内存发送的读数据并进行校验,当读数据校
验成功时,校验模块123可通过读数据发送接口,将读数据发送给cpu。
98.在一些实施例中,仲裁模块121、重传队列122、校验模块123、重传决定模块124、读命令接收接口、读命令发送接口、读数据接收接口、读数据发送接口可以是内存控制器120中设置的逻辑组件。例如,可以在设计处理器系统时,为内存控制器120设计仲裁模块121、重传队列122、校验模块123和重传决定模块124等逻辑组件。
99.在可能的替代实现中,仲裁模块121并不一定是处理器系统100必须设置的逻辑组件。例如,内存控制器120也可直接将从cpu 110接收的读命令作为目标读命令,而不需要通过仲裁模块121的筛选。
100.本技术实施例提供的处理器系统可通过设置重传队列、校验模块和重传决定模块等逻辑组件,在读数据传输出错的情况下,重新传输该读数据相应的读命令以及之后发送给内存的读命令,使得内存能够对传输出错的读数据进行重新传输。本技术实施例提供的处理器系统具有在读数据传输出错时的修复能力,特别是对于读数据在高速并行传输中的动态随机出错,能够实现自我修复,本技术实施例增强了处理器系统对于读数据传输出错的容错能力,提高了处理器系统的可靠性,保障了处理器系统的稳定运行。
101.在一些实施例中,校验模块123在校验目标读数据失败的情况下,虽然可以将校验失败结果传输给重传决定模块124。但是,重传决定模块124可能无法基于校验失败结果的具体内容,直接明确校验失败的读数据所具体对应的读命令,这是因为校验失败结果的具体内容并不一定会直接指示校验失败的读数据具体对应哪个读命令。
102.基于此,内存控制器120可基于向内存130发送读命令至得到相应读数据的校验结果的用时时间,来预先设置等待时间;即等待时间与用时时间相一致。用时时间的长度可以是:从内存控制器120向内存130发送读命令开始,至内存控制器120得到相应读数据的校验结果的用时。从而,在内存控制器120向内存130发送目标读命令之后,重传决定模块124可通过判断在等待时间内是否检测到校验失败结果,来确定目标读命令相应的目标读数据是否校验失败,以实现基于校验结果确定目标读数据是校验失败还是校验成功。
103.作为可选实现,图3示出了本技术实施例提供的基于校验结果确定目标读数据是否校验失败的方法流程图。该方法流程图可由内存控制器120执行实现,例如具体可以由内存控制器120中的重传决定模块124执行实现。参照图3,该方法流程可以包括如下步骤。
104.在步骤s310中,在向内存发送目标读命令之后,判断预设的等待时间内是否检测到校验失败结果。
105.在步骤s311中,若在预设的等待时间内检测到校验失败结果,确定目标读命令对应的目标读数据校验失败。
106.在步骤s312中,若在预设的等待时间内未检测到校验失败结果,确定目标读命令对应的目标读数据校验成功。
107.在一些实施例中,内存控制器120在向内存130发送目标读命令之后,内存控制器120(例如内存控制器120中的重传决定模块124)可判断在预设的等待时间内是否检测到校验失败结果;若是,则可确定目标读命令相应的目标读数据校验失败,从而内存控制器120可以从重传队列中确定目标读命令以及目标读命令之后发送给内存130的读命令,将目标读命令以及目标读命令之后发送的读命令进行重新传输;若否,则可确定目标读命令相应的目标读数据校验成功,从而内存控制器120可将目标读数据发送给cpu,并删除重传队列
中存放的目标读命令。
108.在一个示例中,处理器系统中可以通过信号的时钟周期来表示用时时间,因此预设的等待时间可以具体是预设的多个时钟周期,该预设的多个时钟周期可以是发送读命令至得到相应读数据的校验结果的时钟周期数量。结合图2b所示,当目标读命令mi发送给内存130并存放到重传队列122之后,重传决定模块124可以判断在预设的多个时钟周期内是否检测到校验模块123传输的校验失败结果。如果重传决定模块124在预设的多个时钟周期内未检测到校验模块123传输的校验失败结果,则可确定目标读命令mi对应的目标读数据di校验成功,从而重传决定模块124可将重传队列中存放的目标读命令mi按照发送顺序进行删除,并且目标读数据di可被传输给cpu 110。如果重传决定模块124在预设的多个时钟周期内检测到校验模块123传输的校验失败结果,则可确定目标读命令mi对应的目标读数据di校验失败,重传决定模块124可确定重传队列122中的目标读命令mi以及目标读命令mi之后发送的读命令mi 1至mn,进而读命令mi至mn需要重新传输给内存130。
109.在其他可能的实现中,本技术实施例也可设置内存130按照读命令的发送顺序,按序返回读数据。在此基础下,本技术实施例可基于校验结果的顺序,来确定具体是哪个读命令对应的读数据校验失败还是校验成功。作为可选实现,目标读命令mi可以是第i顺序发送给内存130的读命令,相应的,内存130可以按照第i顺序将目标读数据di,发送给内存控制器120;从而内存控制器120可在第i顺序对目标读数据di进行校验,并产生第i顺序的校验结果。第i顺序的校验结果传输给内存控制器120中的重传决定模块124之后,重传决定模块124可基于校验结果的第i顺序,确定该校验结果对应第i顺序的目标读命令mi。例如,如果第i顺序的校验结果为校验失败结果,则重传决定模块124可确定目标读命令mi相应的目标读数据di校验失败,从而重传队列122中的目标读命令mi以及之后发送的读命令mi 1至mn需要重新传输;如果第i顺序的校验结果为校验成功结果,则重传决定模块124可确定目标读命令mi相应的目标读数据di校验成功,从而重传队列122中的目标读命令mi可以按照发送顺序,按序删除。
110.可以看出,图3所示方法流程以及相应的描述仅是本技术实施例基于校验结果确定目标读数据是校验失败还是校验成功的一种可选方式。本技术实施例也可支持基于校验结果确定目标读数据是校验失败还是校验成功的其他可能方式,例如,上文描述的基于校验结果的顺序,确定相应顺序的目标读数据是否校验失败等。
111.在重传队列122存放读命令的其他可能实现中,重传队列122也可不按照读命令的发送顺序来存放读命令,而是将读命令在重传队列122中按照随机顺序进行乱序存放。在此实现中,重传队列122可在存放读命令的情况下,进一步记录各个读命令的发送顺序,以便重传队列在乱序存放读命令的情况下,通过记录的各个读命令的发送顺序,表达各个读命令的发送顺序。
112.在一些实施例中,重传队列122可以维护重传队列的存放位置与发送顺序的对应关系,当读命令在重传队列中进行存放时,重传队列可以建立读命令的存放位置与发送顺序的对应关系,以便后续通过该对应关系,确定重传队列中的各个存放位置所存放的读命令对应的发送顺序。
113.在一个示例中,图4示例性的示出了本技术实施例提供的重传队列乱序存放读命令情况下的示意图。如图4所示,假设读命令m1至mn需存放到重传队列122中,并且读命令m1
至mn的发送顺序依序递增,则重传队列122可以不一定按照图2b所示方式按序存放读命令m1至mn,而是可将读命令m1至mn按照随机顺序进行乱序存放。例如,存放位置1存放读命令m2、存放位置2存放读命令mi等。在重传队列122乱序存放读命令的情况下,重传队列可以维护数据表1221,该数据表1221可以记录重传队列122的各个存放位置所存放的读命令对应的发送顺序,即数据表1221可以记录重传队列122中读命令的存放位置与发送顺序的对应关系。例如,数据表1221可以记录存放位置1的读命令m2的发送顺序为第二顺序,存放位置2存放的读命令mi的发送顺序为第i顺序等。进而,当重传队列122中的读命令mi对应的读数据传输出错时(例如,校验模块123校验读命令mi对应的读数据失败),重传决定模块124可基于重传队列122中记录的读命令的存放位置与发送顺序的对应关系,确定发送顺序在读命令mi之后的读命令mi 1至mn,从而重传队列122中的读命令mi至mn可重新传输给内存130,实现读命令的重传。
114.在进一步的一些实施例中,内存控制器120可以设置读命令允许重新传输的最大重传次数,从而内存控制器可检测重传队列122中的读命令整体的重传次数,如果检测的重传次数达到最大重传次数之后,读数据传输仍然出错(例如仍然存在读数据校验失败),则说明内存控制器120与内存130之间的传输路径问题无法通过重传读命令和读数据进行克服,此时,内存控制器120可生成系统报警信号,以便通过系统报警信号通知处理器系统100需要其他手段来克服传输路径问题。在进一步的一些实施例中,在内存控制器120生成系统报警信号之后,内存控制器120可停止工作,例如停止内存控制器120与内存130之间的数据和命令传输。
115.作为可选实现,图5示出了本技术实施例提供的处理器系统100的再一结构示意图。结合图2b和图5所示,图5所示处理器系统100中的内存控制器120还可以包括:重传计数模块125。重传计数模块125可用于记录重传队列122中的读命令整体的重传次数,例如,每当重传队列122中的读命令重新传输一次,则重传计数模块125记录的重传次数可以累加1。在一些实施例中,重传计数模块125记录的重传次数达到设定的最大重传次数之前,重传队列122中的读命令可以依据本技术实施例提供的重传方案进行重新传输;而如果重传计数模块125记录的重传次数达到设定的最大重传次数之后,内存控制器120仍然校验读数据失败(即仍然存在读数据校验失败),则重传计数模块125可生成系统报警信号。
116.在一些实施例中,重传计数模块125可以是内存控制器120中设置的逻辑组件。例如,可以在设计处理器系统时,为内存控制器120设计重传计数模块125的逻辑组件。
117.在一些实施例中,重传队列122、重传决定模块124、重传计数模块125可以集成在内存控制器120的同一模块中。例如,结合图5所示,内存控制器120中可设置重传模块200,重传模块200中可以设置重传队列122、重传决定模块124、重传计数模块125,以将重传队列122、重传决定模块124、重传计数模块125集成在重传模块200内。当然,本技术实施例也可支持重传队列122、重传决定模块124、重传计数模块125并不集成在同一模块中,例如,重传队列122、重传决定模块124、重传计数模块125可以是各个单独的模块,并且各模块之间可存在信号通信关系。
118.本技术实施例提供的重传方案可以应用于具有高速传输内存的处理器系统,在高速传输内存场景下,cpu从内存读数据和写数据的频率是接近的,这导致读数据传输出错的概率和写数据传输出错的概率也是接近的,因此在高速传输内存场景下,提供读数据传输
出错的重传机制非常必要。通过本技术实施例提供的重传方案,可以实现处理器系统在读数据传输出错情况下的自我修复,提高处理器系统的可靠性,保障处理器系统的稳定运行。本技术实施例提供的重传方案可以适用于数据中心和网络中心(如证券交易所数据中心,银行数据库数据中心,电信机房等),基于本技术实施例提供的方案具备足够强大的容错机制,能够使得处理器系统具有更高的可靠性和稳定性,因此可使得数据中心和网络中心等能够尽可能的长期可靠的运行业务。
119.本技术实施例还提供一种内存控制器,该内存控制器可以包括:
120.目标读命令获取模块,用于获取目标读命令;
121.重传队列,用于存放已发送给内存的读命令;其中,所述目标读命令在发送给内存的同时,存放在所述重传队列中;
122.校验模块,用于校验从内存获取的所述目标读命令相应的目标读数据;
123.重传决定模块,用于若基于校验结果确定目标读数据校验失败,从重传队列中确定包含目标读命令的至少一个读命令;
124.其中,所述重传队列中存放的所述至少一个读命令重新传输给内存。
125.在一些实施例中,目标读命令获取模块的一种可选实现可以例如仲裁模块121。在另一些实施例中,目标读命令获取模块也可以直接将cpu发送的读命令作为目标读命令,而不一定以仲裁模块121实现。
126.在进一步的一些实施例中,该内存控制器还可以包括重传计数模块,用于记录所述重传队列中的读命令整体的重传次数;若所记录的重传次数达到最大重传次数之后,仍然存在读数据校验失败,则生成系统报警信号。
127.在一些实施例中,重传队列和重传决定模块可以集成在内存控制器的重传模块中。在进一步的一些实施例中,重传模块还可集成上述所述的重传计数模块。
128.本技术实施例提供的内存控制器中各逻辑组件(例如目标读命令获取模块、重传队列、校验模块、重传决定模块、重传计数模块等)的具体功能、扩展功能可参照前文相应部分的描述,此处不再赘述。
129.本技术实施例还提供一种处理器系统,该处理器系统可以包括内存控制器,该内存控制器可以被配置为执行如本技术实施例提供的重传方法。
130.本技术实施例还提供一种电子设备,该电子设备可以包括如上述提供的处理器系统。该电子设备可以例如终端设备、服务器设备等。
131.上文描述了本技术实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本技术实施例披露、公开的实施例方案。
132.虽然本技术实施例披露如上,但本技术并非限定于此。任何本领域技术人员,在不脱离本技术的精神和范围内,均可作各种更动与修改,因此本技术的保护范围应当以权利要求所限定的范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献