本技术涉及链表式数据读写,具体涉及一种链表式数据结构及其数据处理方法、计算机可读存储介质、电子设备。
背景技术:
1、数字电路设计中经常需要用到一种链表式数据结构,如图1所示,在链表式数据结构中,每个数据后面带着一个指针,这个指针指向下一个数据的地址,通常数据和指针的内容都存放在 ram(random access memory,随机存取存储器)中,指针的内容即是这些数据在ram 中的地址;在从ram中读取一个数据时,会将该一个数据及其对应的指针内容一并读取,因此,可以根据该一个数据所对应的指针内容确定下一个数据及其对应的指针内容在ram 中的地址,从而可以根据该地址访问ram读取该下一个数据及其对应的指针内容。
2、由于 ram 通常都有读延时,现有链表式数据结构的数据读取方式,从发起读请求到得到读结果通常需要 3 ~ 4 个时钟周期,因此,读出一个数据后需要 3 ~ 4 个时钟周期后才知道下一个数据的地址,才能发起下一个数据的读取,导致链表式数据结构的数据读取效率较低。现有链表式数据结构的数据读取方式具体如图2所示,在图2中,当 t0 时刻发起地址 a0 的读取命令后,经过 3 个时钟周期,在 t3 时刻得到数据 d0;在下一个时钟周期 t4,根据数据 d0 得到下一跳数据的地址a1 ,发起读命令;仍然需要再经过 3个时钟周期得到下一个数据 d1。在图2中,平均4个时钟周期读出一个数据。这样的性能对很多高带宽要求的设计是不够的,在这些设计中通常需要 1 个时钟周期就能读出一个数据;以系统时钟1ghz,数据宽度512b 为例,如果4时钟周期出一个数据,系统带宽只有128gbps,如果1时钟周期出一个数据,系统带宽可以达到512gbps。
技术实现思路
1、本技术的目的在于提出一种链表式数据结构及其数据处理方法、计算机可读存储介质、电子设备,以解决现有链表式数据结构的数据读取效率较低的技术问题。
2、为实现上述目的,根据本技术的第一方面,提供一种链表式数据结构,包括ram、空闲地址管理单元以及多头链表,所述多头链表包括控制单元、写操作子链指示单元、读操作子链指示单元以及n条子链,n为≥2的正整数;所述子链包括控制单元、子链长单元、写指针单元以及读指针单元;所述ram包括多个数据单元以及与所述多个数据单元一一对应的多个指针存储单元,任一个数据单元和与其对应的一个指针存储单元共享所述ram的一个地址;
3、所述数据单元用于存储数据;
4、所述指针单元用于存储地址;其中,若一个数据单元用于存储一个子链的第i个数据,则与所述一个数据单元对应的指针单元用于存储所述一个子链的第i+1个数据所在的数据单元的地址;
5、所述空闲地址管理单元用于对所述ram的空闲地址进行管理;以及,当其接收到所述控制单元的读取空闲地址请求时,输出一个空闲地址给所述控制单元;
6、所述写操作子链指示单元用于存储写目标子链的子链号,所述写目标子链为待写入数据所要写入的子链;
7、所述读操作子链指示单元用于存储读目标子链的子链号,所述读目标子链的子链号为待读出数据所在的子链;
8、所述子链长单元用于存储子链长信息,所述子链长信息为子链当前已存储的数据个数;
9、所述写指针单元用于存储所述多头链表的当前一个被写入数据在所述ram中的地址;
10、所述读指针单元用于存储所述多头链表的下一个被读出数据在所述ram中的地址;
11、所述控制单元用于当其接收到写数据请求时,根据所述写操作子链指示单元所存储的子链号确定写目标子链,根据所述空闲地址、所述写目标子链的子链长单元所存储的子链长信息和写指针单元所存储的地址进行写数据操作;以及,当其接收到读数据请求时,根据所述读操作子链指示单元所存储的子链号确定读目标子链,根据所述读目标子链的读指针单元所存储的地址进行读数据操作。
12、基于本技术的第一方面提供的链表式数据结构,连续的n个数据在存储时,一个时钟周期将1个数据写入一条子链,该n个数据分别在连续的n个时钟周期被依次分别写入在n头链表的n个子链中完成所述n个数据的写入,因此,后续在读取所述连续的n个数据时,一个时钟周期将1个数据从一条子链读出,分别在连续的n个时钟周期依次对n条子链进行读取数据得到所述n个数据,因此,通过n头链表实现每个时钟周期发起读命令,并且每个时钟周期均能输出数据;通过对链表式数据结构进行了改进,提高了链表式数据结构的数据读取效率,解决现有链表式数据结构的数据读取效率较低的技术问题。
13、根据本技术的第二方面,提供一种上述的链表式数据结构的数据处理方法,所述方法包括当所述控制单元接收到写数据请求时,执行写数据操作;
14、其中,所述执行写数据操作,包括:
15、根据所述写数据请求获取待写入数据;
16、读取所述写操作子链指示单元所存储的子链号,根据所述写操作子链指示单元所存储的子链号确定写目标子链,并获取所述写目标子链的子链长单元所存储的子链长信息、所述写目标子链的写指针单元所存储的地址;
17、向所述空闲地址管理单元发送读取空闲地址请求,接收所述空闲地址管理单元返回的一个空闲地址;
18、将所述待写入数据写入所述ram中与所述空闲地址对应的数据单元中;
19、根据所述写目标子链的子链长单元所存储的子链长信息,确定是否将所述空闲地址写入所述ram中与所述写目标子链的写指针单元所存储的地址对应的指针存储单元中;
20、将所述写操作子链指示单元所存储的子链号更新为下一条写目标子链的子链号;
21、将所述写目标子链的写指针单元所存储的地址更新为所述空闲地址;
22、根据所述写目标子链当前已存储的数据个数更新所述写目标子链的子链长单元所存储的子链长信息。
23、本技术的第二方面提供的数据处理方法,基于本技术的第一方面提供的链表式数据结构实现,连续的n个数据在存储时,一个时钟周期将1个数据写入一条子链,该n个数据分别在连续的n个时钟周期被依次分别写入在n头链表的n个子链中完成所述n个数据的写入,对应地后续在读取所述连续的n个数据时,可以实现一个时钟周期将1个数据从一条子链读出,分别在连续的n个时钟周期依次对n条子链进行读取数据得到所述n个数据,因此,通过n头链表实现每个时钟周期发起读命令,并且每个时钟周期均能输出数据;通过对链表式数据结构进行了改进,提高了链表式数据结构的数据读取效率,解决现有链表式数据结构的数据读取效率较低的技术问题。
24、根据本技术的第三方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现根据本技术的第一方面所述的链表式数据结构的数据处理方法。
25、根据本技术的第四方面,提供一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现根据本技术的第一方面所述的链表式数据结构的数据处理方法。
26、本技术的其它特征和优点将在随后的说明书中阐述。