一种内存系统及芯片的制作方法

文档序号:32606053发布日期:2022-12-17 22:24阅读:104来源:国知局
一种内存系统及芯片的制作方法

1.本技术涉及芯片技术领域,特别是涉及一种内存系统及芯片。


背景技术:

2.计算机网络系统的连通性和资源共享性依赖于数据交换,网络处理器(network processing)芯片,俗称网络芯片,是计算机网络系统中用于发送和接收数据的微处理器。网络芯片技术是为了适应现代高速网络,提高网络服务质量控制,且发展新的网络管理模式和适应新的网络功能需求而推出的一种新的芯片技术。
3.网络芯片中包括内存(memory)系统,网络芯片处理各项业务时,均会涉及到对内存的读写操作。目前,网络芯片的内存系统可以使用高级可扩展接口(advanced extensible interface,axi)总线协议,axi有高性能、高宽度和低延迟等优点,但是axi具有独立的读通道和写通道,所以不具备解决数据一致性问题的能力。数据一致性问题是指当多个请求同时访问同一内存地址时,可能会出现数据错误。例如,针对同一内存地址的写后读(read after write,raw)操作,可能会被错误地先执行读操作后执行写操作,导致读取不到最新的数据。同理,针对同一内存地址的读后写(write after read,war)操作,可能会被错误地先执行写操作后执行读操作,导致读取到了最新数据;针对同一内存地址的写后写(write after write,waw)操作的两次写操作的执行顺序可能会发生错误,导致数据未被更新为最新数据。
4.为了解决数据一致性问题,可以建立管理队列,每接收到一个数据访问请求,将该数据访问请求加入管理队列中,并将该数据访问请求的地址与管理队列中的其他数据访问请求的地址进行对比,若不存在地址冲突,则将该数据访问请求发送到axi接口进行处理,若存在地址冲突,则排队等候。在接收到axi接口返回的数据读写响应后,才会将管理队列中相应的数据访问请求释放。
5.但是,上述过程中,若管理队列的深度过大,将会占用内存系统过多的逻辑资源,且管理队列中参与进行对比的数据访问请求的数量越多,对比所需的时间越长;若队列深度过小,将导致数据访问请求无法被及时处理,影响执行效率,导致内存系统的访问性能较差。


技术实现要素:

6.本技术实施例的目的在于提供一种内存系统及芯片,用以提升内存系统访问性能。具体技术方案如下:
7.第一方面,本技术实施例提供了一种内存系统,包括依次连接的冲突检测模块、读写控制模块、接口转换模块和内存模块,所述冲突检测模块中包括旁路bypass通路;
8.所述冲突检测模块,用于接收数据访问请求,若所述数据访问请求的业务类型属于指定类型,则通过所述bypass通路向读写控制模块发送所述数据访问请求;若所述数据访问请求的业务类型不属于所述指定类型,则基于管理队列和冲突队列中缓存的请求信息
对所述数据访问请求进行地址冲突检测;若地址冲突检测通过,则将所述数据访问请求的请求信息缓存于所述管理队列,并向所述读写控制模块发送所述数据访问请求;若地址冲突检测未通过,则将所述数据访问请求的请求信息缓存于所述冲突队列,并缓存所述数据访问请求,在地址冲突消除后,向所述读写控制模块发送所述数据访问请求;
9.所述读写控制模块,用于确定数据访问请求的处理顺序,并按照所述处理顺序向所述接口转换模块发送数据访问请求;
10.所述接口转换模块,用于基于接收到的数据访问请求对所述内存模块进行访问。
11.在一种可能的实现方式中,
12.所述读写控制模块,还用于判断接收到的数据访问请求中是否包括数据写入请求,以及判断所述数据写入请求的处理顺序是否已确定,在判断结果均为是时,向所述冲突检测模块回复数据写入响应;
13.所述冲突检测模块,还用于接收所述数据写入响应,并删除所述管理队列或所述冲突队列中缓存的所述数据写入响应对应的数据访问请求的请求信息。
14.在一种可能的实现方式中,
15.所述接口转换模块,具体用于若接收到的数据访问请求为数据读取请求,则判断是否接收到已启动处理的所有数据写入请求的数据写入响应,在判断结果为是时,基于接收到的数据读取请求对所述内存模块进行读操作。
16.在一种可能的实现方式中,
17.所述读写控制模块,具体用于若当前处于读窗口,且接收到的数据访问请求包括数据读取请求,则确定对接收到的数据读取请求的处理顺序;若当前处于写窗口,且接收到的数据访问请求包括数据写入请求,则确定对接收到的数据写入请求的处理顺序。
18.在一种可能的实现方式中,所述内存模块为外部存储模块;
19.所述读写控制模块,还用于按照预设读周期时长和预设写周期时长交替切换读窗口和写窗口;或者,根据轮询rr算法或加权循环调度wrr算法切换读窗口和写窗口;或者,当写窗口的持续时长达到预设时长阈值时,若当前未处理的数据读取请求的数量大于数据写入请求的数量,则切换至读窗口,当读窗口的持续时长达到预设时长阈值时,若当前未处理的数据写入请求的数量大于数据读取请求的数量,则切换至写窗口;或者,按照所述外部存储模块的读窗口和写窗口交替切换所述读写控制模块的读窗口和写窗口。
20.在一种可能的实现方式中,
21.所述读写控制模块,具体用于根据接收到的数据读取请求的请求地址对应的存储库bank地址,按照对各bank地址的预设调度顺序,确定对接收到的数据读取请求的处理顺序;根据接收到的数据写入请求的请求地址对应的bank地址,按照对各bank地址的预设调度顺序,确定对接收到的数据写入请求的处理顺序。
22.在一种可能的实现方式中,所述读写控制模块,具体用于对于请求地址对应的bank地址相同的多个数据读取请求,根据所述多个数据读取请求的业务类型,按照wrr算法确定所述多个数据读取请求的处理顺序;对于请求地址对应的bank地址相同的多个数据写入请求,根据所述多个数据写入请求的业务类型,按照wrr算法确定所述多个数据写入请求的处理顺序。
23.在一种可能的实现方式中,所述管理队列和所述冲突队列中缓存的请求信息包括
请求地址和业务类型;
24.所述冲突检测模块,具体用于判断所述管理队列和所述冲突队列中,是否存在与接收到的数据访问请求的业务类型相同的目标请求信息;若不存在,则确定地址冲突检测通过;若存在,则判断所述目标请求信息中的请求地址是否与数据访问请求的请求地址相同,若相同,则确定地址冲突检测未通过,若不相同,则确定地址冲突检测通过。
25.在一种可能的实现方式中,所述内存系统还包括系统均衡模块,且所述内存系统包括多个内存模块,每个内存模块对应一组冲突检测模块、读写控制模块及接口转换模块;
26.所述系统均衡模块,用于接收数据访问请求,确定与该数据访问请求的请求地址匹配的目标内存模块,向所述目标内存模块对应的冲突检测模块发送该数据访问请求。
27.第二方面,本技术实施例提供了一种芯片,包括上述第一方面所述的内存系统。
28.采用上述技术方案,冲突检测模块可以通过数据访问请求的业务类型判断该数据访问请求是否需要进行地址冲突检测,在数据访问请求的业务类型不属于指定类型的情况下,基于管理队列和冲突队列中缓存的请求信息对数据访问请求进行地址冲突检测,以保证同一请求地址的数据访问请求不被乱序处理,可以解决数据一致性问题。在数据访问请求的业务类型属于指定类型的情况下,无需进行地址冲突检测,也就无需将指定类型的数据访问请求缓存于管理队列,可以减小对管理队列的占用,进而降低了对管理队列深度的要求,避免管理队列占用内存系统过多的资源,且可降低地址冲突检测所需的时间,提高数据访问请求被处理的效率。并且,读写控制模块还可按照确定的处理顺序向接口转换模块发送数据访问请求,以使得接口转换模块能够按照读写控制模块确定的处理顺序对内存模块进行访问,由于内存模块工作在单工模式下,特定的时刻只能执行一个数据写操作或者一个数据读操作,所以读写控制模块将各数据访问请求按照一定的处理顺序发送到接口转换模块,可以提高对数据访问请求的处理效率。可见,本技术实施例可以在解决数据一致性问题的前提下,兼顾管理队列对内存系统的资源占用,以及对数据访问请求的处理效率,可以提高内存系统的性能。
29.当然,实施本技术的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
30.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
31.图1为本技术实施例提供的一种网络芯片的结构示意图;
32.图2为本技术实施例提供的一种内存系统的结构示意图;
33.图3为本技术实施例提供的一种数据访问请求处理流程图。
具体实施方式
34.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于
本技术中的实施例,本领域普通技术人员基于本技术所获得的所有其他实施例,都属于本技术保护的范围。
35.为了便于理解本技术实施例,下面先对本技术实施例中涉及的概念进行介绍。
36.如图1所示,图1为本技术实施例提供的一种网络芯片的结构示意图,该网络芯片包括:接口(interface)模块101、接收直接内存访问(receive direct memory access,rx dma)模块102、发送直接内存访问(transmit direct memory access,tx dma)模块103、地址管理单元(buffer management unit,bmu)104、可编程任务优化处理器(c-programmable task optimized processor,ctop)模块105、任务调度(traffic management,tm)模块106和内存(memory)系统107。
37.其中,内存系统107包括内部存储和外部存储,内部存储可以为嵌入网络芯片的静态随机存取存储器(static random-access memory,sram),外部存储可以为双倍速率同步动态随机存储器(double data rate,ddr)或高带宽内存(high bandwidth memory,hbm)等常用的内存颗粒,由于网络芯片自身尺寸的限制,网络芯片可以使用外部存储增大缓存容量。
38.图1中,接口模块101可以接收其他设备发送的请求报文,并将请求报文发送至rx dma模块102,rx dma模块102可以向内存系统107发送该请求报文,内存系统107处理该请求报文后,将对该请求报文的处理结果返回给tx dma模块103,进而tx dma模块103根据该处理结果向接口模块101发送针对请求报文的响应报文,以便于接口模块101向其他设备返回响应报文。ctop模块105还可以将rx dma模块102发送的请求报文发送给tm模块106,由tm模块106对请求报文进行调度,tm模块106还需要将调度结果发送给tx dma模块103,以便tx dma模块103正确处理响应报文。bmu104用于对rx dma模块102和tx dma模块103访问的地址进行管理。
39.除了对来自其他设备的请求报文的处理之外,图1中的rx dma模块102、tx dma模块103、bmu104、ctop模块105和tm模块106均可以对内存系统107进行数据读写操作。
40.图1仅为示例,在实际实现中,网络芯片中包括的各模块数量不限于此,且网络芯片还可以包括其他模块,本技术实施例对此不作限定。
41.为了提高内存系统的访问性能,本技术实施例提供的一种内存系统,如图2所示,该系统包括:依次连接的冲突检测模块201、读写控制模块202、接口转换模块203和内存模块204。其中,冲突检测模块201中包括bypass(旁路)通路2011。
42.其中,本技术实施例中内存系统可以包括多个内存模块204,每个内存模块204对应一组冲突检测模块201、读写控制模块202和接口转换模块203。
43.本技术实施例中以其中一组冲突检测模块201、读写控制模块202和接口转换模块203对内存模块204的访问为例进行说明。
44.冲突检测模块201,用于接收数据访问请求,若数据访问请求的业务类型属于指定类型,则通过bypass通路2011向读写控制模块202发送数据访问请求;若数据访问请求的业务类型不属于指定类型,则基于管理队列和冲突队列中缓存的请求信息对数据访问请求进行地址冲突检测;若地址冲突检测通过,则将数据访问请求的请求信息缓存于管理队列,并向读写控制模块202发送数据访问请求;若地址冲突检测未通过,则将数据访问请求的请求信息缓存于冲突队列,并缓存数据访问请求,在地址冲突消除后,向读写控制模块202发送
数据访问请求。
45.本技术实施例中,数据访问请求可以为图1中的rx dma模块102、tx dma模块103、bmu104、ctop模块105或tm模块106向内存系统107发送的数据访问请求。
46.图2中任意一个冲突检测模块201接收到数据访问请求后,可以判断是否需要对该数据访问请求进行地址冲突检测。
47.其中,内存系统中的业务的业务类型包括:可能存在地址冲突问题的非指定类型,以及不存在地址冲突问题的指定类型。
48.对于非指定类型的数据访问请求,需要进行地址冲突检测。例如,非指定类型的数据访问请求可以为ctop模块105发送的cpu指令类型的请求。
49.对于指定类型的数据访问请求,无需进行地址冲突检测,冲突检测模块201中可以预先配置指定类型,指定类型为不需要进行地址冲突检测的业务类型,可基于实际情况配置,例如指定类型的业务可以为查表业务、统计业务、dma业务等。
50.冲突检测模块201具体可以从数据访问请求的报头中获取用于表示业务类型的字段,从而基于该字段确定数据访问请求的业务类型,并判断该业务类型是否属于指定类型,若是,则确定无需对该数据访问请求进行地址冲突检测,则可直接通过bypass通路2011向读写控制模块202发送该数据访问请求。由于不需要进行地址冲突检测,所以无需保留该数据访问请求的请求信息。
51.反之,若数据访问请求的业务类型不属于指定类型,则说明需要对该数据访问请求进行地址冲突检测,进而冲突检测模块201可继续对该数据访问请求进行地址冲突检测。
52.对于地址检测未通过的数据访问请求,可以先进行缓存,在冲突检测模块201确定与该数据访问请求冲突的请求信息被删除后,可以确定地址冲突消除,进而向读写控制模块202发送该数据访问请求。
53.读写控制模块202,用于确定数据访问请求的处理顺序,并按照处理顺序向接口转换模块203发送数据访问请求。
54.接口转换模块203,用于基于接收到的数据访问请求对内存模块204进行访问。
55.其中,该接口转换模块203具体可以为axi接口转换模块。
56.采用本技术实施例,冲突检测模块可以通过数据访问请求的业务类型判断该数据访问请求是否需要进行地址冲突检测,在数据访问请求的业务类型不属于指定类型的情况下,基于管理队列和冲突队列中缓存的请求信息对数据访问请求进行地址冲突检测,以保证同一请求地址的数据访问请求不被乱序处理,可以解决数据一致性问题。在数据访问请求的业务类型属于指定类型的情况下,无需进行地址冲突检测,也就无需将指定类型的数据访问请求缓存于管理队列,可以减小对管理队列的占用,进而降低了对管理队列深度的要求,避免管理队列占用内存系统过多的资源,且可降低地址冲突检测所需的时间,提高数据访问请求被处理的效率。并且,读写控制模块还可按照确定的处理顺序向接口转换模块发送数据访问请求,以使得接口转换模块能够按照读写控制模块确定的处理顺序对内存模块进行访问,由于内存模块工作在单工模式下,特定的时刻只能执行一个数据写操作或者一个数据读操作,所以读写控制模块将各数据访问请求按照一定的处理顺序发送到接口转换模块,可以提高对数据访问请求的处理效率。可见,本技术实施例可以在解决数据一致性问题的前提下,兼顾管理队列对内存系统的资源占用,以及对数据访问请求的处理效率,可
以提高内存系统的性能。
57.在本技术实施例中,如图2所示,内存系统还包括系统均衡模块205。
58.系统均衡模块205,用于接收数据访问请求,确定与该数据访问请求的请求地址匹配的目标内存模块,向目标内存模块对应的冲突检测模块201发送该数据访问请求。
59.其中,系统均衡模块205,具体可以采用哈希算法对数据访问请求的请求地址进行哈希运算,并对运算结果进行除法处理,从而基于除法处理的结果与内存模块之间的预设对应关系,将该数据访问请求映射到内存系统的其中一个内存模块。如此可以使得每个内存模块被分配到的请求数量较为均衡,且使得映射到同一内存模块的请求地址是连续的。
60.在本技术另一实施中,上述管理队列和冲突队列中缓存的请求信息包括请求地址和业务类型。
61.冲突检测模块201,具体用于判断管理队列和冲突队列中,是否存在与接收到的数据访问请求的业务类型相同的目标请求信息;若不存在,则确定地址冲突检测通过;若存在,则判断目标请求信息中的请求地址是否与数据访问请求的请求地址相同,若相同,则确定地址冲突检测未通过,若不相同,则确定地址冲突检测通过。
62.本技术实施例中,若管理队列和冲突队列中不存在目标请求信息,则说明接收到的数据访问请求的业务类型与管理队列和冲突队列中请求信息的业务类型均不相同,也就可以确定接收到的数据访问请求的请求地址不会与管理队列和冲突队列中请求信息对应的请求地址发生冲突,所以可以直接确定地址冲突检测通过,无需进一步将数据访问请求的请求地址与管理队列和冲突队列中的请求地址进行对比,可以节省地址冲突检测所需的时间,提高处理效率。
63.若管理队列和冲突队列中存在目标请求信息,则需要进一步判断目标请求信息中的请求地址是否与数据访问请求的请求地址相同,从而避免数据一致性问题。
64.例如,接收到的数据访问请求为数据访问请求a,数据访问请求a的请求信息为请求信息a,管理队列和冲突队列中包括请求信息b、请求信息c和请求信息d。
65.假设请求信息a包括的业务类型和请求信息b、请求信息c和请求信息d中的业务类型均不相同,则确定数据访问请求a地址冲突检测通过。
66.或者,假设请求信息a包括的业务类型和请求信息b包括的业务类型相同,则请求信息b为目标请求信息,此时需要判断请求信息a包括的请求地址和请求信息b包括的请求地址是否相同,若请求信息a包括的请求地址与请求信息b包括的请求地址相同,则确定数据访问请求a的地址冲突检测未通过,若请求信息a包括的请求地址和请求信息b包括的请求地址不相同,则确定数据访问请求a的地址冲突检测通过。
67.可以理解的是,本技术实施例中的目标请求信息还可以是多个,即管理对列和冲突队列中可能存在多个请求信息中的业务类型与当前接收到的数据访问请求的业务类型相同,这种情况下需要分别将当前接收到的数据访问请求的请求地址与每个目标请求信息包括的请求地址进行对比,若对比结果均为不同,则地址冲突检测通过,若任一对比结果不同,则地址冲突检测未通过。
68.例如,若请求信息a包括的业务类型与请求信息b和请求信息c包的业务类型相同,则请求信息b和请求信息c均为目标请求信息,需要分别判断请求信息a包括的请求地址与请求信息b包括的请求地址和请求信息c包括的请求地址是否相同,当请求信息a包括的请
求地址与请求信息b和请求信息c包括的请求地址均不相同时,确定数据访问请求a通过地址冲突检测;当请求信息a包括的请求地址与请求信息b或请求信息c包括的请求地址相同时,确定数据访问请求a未通过地址冲突检测。
69.通过地址冲突检测的数据访问请求以及无需进行地址冲突检测的访问请求均被传输至读写控制模块202,由读写控制模块202确定各数据访问请求的处理顺序。
70.在本技术另一实施例中,内存模块204为外部存储模块,例如,外部存储模块为芯片连接的ddr或hbm中的存储模块。可选地,内存系统中还可以包括内部存储模块,例如芯片内部的sram。本技术实施例中所涉及的对内存模块的访问是指对外部存储模块的访问。
71.一种实施方式中,读写控制模块202,还用于按照预设读周期时长和预设写周期时长交替切换读窗口和写窗口。
72.本技术实施例中,预设读周期时长和预设写周期时长可以根据实际业务场景进行设置。
73.例如,可以将预设读周期时长和预设写周期时长设置为相同的值,比如均为10个clock,进而每隔10个clock进行一次读写窗口的切换。
74.再例如,可以将预设读周期时长和预设写周期时长设置为不同的值,比如预设读周期时长为15个clock,预设写周期时长为10个clock,进而在读窗口持续15个clock后切换至写窗口,在写窗口持续10个clock后切换至读窗口。
75.另一实施方式中,读写控制模块202可以通过轮询(round robin,rr)算法或加权循环调度(weighted round robin,wrr)算法控制写窗口和读窗口交替切换。
76.例如,若采用rr算法,则设置时间片的长度,在一个时间片内为读窗口,下一个时间片内为写窗口,下一个时间片再切换读窗口,如此轮询切换读窗口和写窗口。或者也可以设置在单个窗口内处理的请求数量,例如,在读窗口内处理指定数量的数据读取请求后,切换为写窗口,在写窗口内处理指定数量的数据写入请求后,切换为读窗口。
77.在上述轮询过程中,若在读窗口内没有需要处理的数据读取请求,则会直接切换到写窗口;同理,若在写窗口内没有需要处理的数据写入请求,则会直接切换到读窗口。
78.若采用wrr算法,则可以基于内存系统处理的业务特点,设置读窗口的权重和写窗口的权重。
79.例如,根据统计,如果内存系统中的读操作通常比写操作多,则可设置读窗口的权重为2,写窗口的权重为1,读写控制模块202可以在读窗口内处理2个数据读取请求之后,切换至写窗口,在写窗口内处理1个数据写入请求之后,切换至读窗口,如此轮询切换读窗口和写窗口。在上述轮询过程中,若在读窗口内没有需要处理的数据读取请求,则会直接切换到写窗口;同理,若在写窗口内没有需要处理的数据写入请求,则会直接切换到读窗口。
80.另一实施方式中,读写控制模块202,还用于当写窗口的持续时长达到预设时长阈值时,若当前未处理的数据读取请求的数量大于数据写入请求的数量,则切换至读窗口;以及当读窗口的持续时长达到预设时长阈值时,若当前未处理的数据写入请求的数量大于数据读取请求的数量,则切换至写窗口。
81.其中,预设时长阈值可基于实际业务需求预先设置。
82.例如,若当前处于写窗口,写窗口的持续时长达到预设时长阈值时,当前存在3个未处理的数据写入请求,20个未处理的数据读取请求,则可立即切换至读窗口。
83.如此,可以使得读窗口和写窗口的切换与实际接收到的数据读取请求和数据写入请求的数量匹配,避免在读窗口内没有可处理的数据读取请求,或者在写窗口内没有可处理的数据写入请求,提高对数据访问请求的处理效率。
84.又一实施方式中,读写控制模块202,还可以按照外部存储模块的读窗口和写窗口交替切换读写控制模块202的读窗口和写窗口。
85.即读写控制模块202可以根据外部存储控制器的调度算法切换读窗口和写窗口,以使得读窗口和写窗口的切换与外部存储模块的读窗口和写窗口匹配,提高处理效率。
86.采用本技术实施例,由于内存模块工作在单工模式下,同一时刻只能执行一个读操作或写操作,因此通过读写控制模块对进行读窗口和写窗口的切换,不会影响axi接口的双工模式工作效率,并且还可以使得读窗口和写窗口的切换更加符合内存模块的特点,可以提高对数据访问请求的处理效率,从而提升内存系统的性能。
87.在确定读窗口和写窗口的基础上,还可以进一步确定对读窗口内的数据读取请求的处理顺序,以及对写窗口内的数据写入请求的处理顺序。
88.读写控制模块202,具体用于若当前处于读窗口,且接收到的数据访问请求包括数据读取请求,则确定对接收到的数据读取请求的处理顺序;若当前处于写窗口,且接收到的数据访问请求包括数据写入请求,则确定对接收到的数据写入请求的处理顺序。
89.可选地,读写控制模块202,具体用于根据接收到的数据读取请求的请求地址对应的存储库(bank)地址,按照各bank地址的预设调度顺序,确定对接收到的数据读取请求的处理顺序;根据接收到的数据写入请求的请求地址对应的bank地址,按照对各bank地址的预设调度顺序,确定对接收到的数据写入请求的处理顺序。
90.本技术实施例中,外部存储模块的内存单元分为bank地址、行(row)地址和列(column)地址,bank可看作一个存储矩阵,每个bank包含多个row和多个column。对外部存储模块的读写效率与外部存储模块本身设计的时序有关,比如对于ddr颗粒,可以按照bank进行调度,例如若外部存储模块包括bank0至bank5,则可先对请求地址属于bank0的数据访问请求进行处理,然后对请求地址属于bank1的数据访问请求进行处理,以此类推,如此可以使得对ddr颗粒的访问效率最高。
91.需要说明的是,不同的外部存储器所设计的对bank地址的调度顺序不同,每种外部存储器都具有可以实现最大读写效率的理想调度顺序,本技术实施例中,可以预先获取内存系统中的外部存储器的理想调度顺序,从而使得读写控制模块按照外部存储器对bank地址的理想调度顺序分别确定对数据读取请求的处理顺序,以及对数据写入请求的处理顺序,从而提高内存系统的处理效率。
92.在本技术另一实施例中,在上述实施例的基础上,读写控制模块202还可以结合数据访问请求的业务类型确定数据访问请求的处理顺序。
93.读写控制模块202,具体用于对于请求地址对应的bank地址相同的多个数据读取请求,根据多个数据读取请求的业务类型,按照wrr算法确定多个数据读取请求的处理顺序;对于请求地址对应的bank地址相同的多个数据写入请求,根据多个数据写入请求的业务类型,按照wrr算法确定多个数据写入请求的处理顺序。
94.本技术实施例中,可以根据各业务类型的带宽设置各业务类型的权重,带宽越大,对应的权重越大。
95.例如,假设一共存在3种业务类型分别为业务类型a、b、c,对应的权重比例为2:1:1,则按照wrr算法,对于bank地址相同的多个数据写入请求,则先处理2个业务类型a的数据写入请求,再处理1个业务类型b的数据写入请求,再处理1个业务类型c的数据写入请求,然后再处理2个业务类型a的数据写入请求,如此循环轮询。若当前不存在某一类型的业务请求,则自动处理下一类型的业务请求,例如,在处理2个业务类型a的数据写入请求后,当前不存在业务类型b的数据写入请求,则直接开始处理1个业务类型c的数据写入请求。
96.如此,可以使得内存系统的应用场景更加多样和灵活,使得芯片对不同业务类型的数据访问请求实现均衡处理,满足不同网络业务的要求。
97.在本技术另一实施例中,为了进一步提高内存系统的对数据访问请求的处理效率,读写控制模块202还具有对数据写入请求的提前响应机制。
98.读写控制模块202,还用于判断接收到的数据访问请求中是否包括数据写入请求,以及判断数据写入请求的处理顺序是否已确定,在判断结果均为是时,向冲突检测模块201回复数据写入响应。
99.本技术实施例中,在读写控制模块202接收到的多个数据访问请求中包括数据写入请求的情况下,读写控制模块202在确定各数据访问请求的处理顺序之后,可以针对每一数据写入请求向冲突检测模块201回复数据写入响应。
100.冲突检测模块201,还用于接收数据写入响应,并删除管理队列或冲突队列中缓存的数据写入响应对应的数据访问请求的请求信息。
101.若冲突检测模块201删除冲突队列中缓存的数据写入响应对应的数据访问请求的请求信息,则冲突检测模块201还需要将冲突队列中与被删除的请求信息冲突的请求信息对应的数据访问请求下发到读写控制模块202。
102.可选地,冲突队列为先进先出的队列,当位于队首的请求信息被删除后,冲突队列中的下一个请求信息将位于队首,进而可以将最新位于队首的请求信息对应的数据访问请求下发到读写控制模块202。
103.采用本技术实施例,由于针对数据写入请求的数据写入响应无需携带业务数据,所以读写控制模块在确定数据写入请求的处理顺序之后,可以提前向冲突检测模块回复数据写入请求的数据写入响应,冲突检测模块在接收到数据写入响应之后,可以删除管理队列或冲突队列中的该数据写入请求的请求信息,从而释放管理队列或冲突队列中的队列空间,从而使得更多的数据访问请求及时被下发到冲突检测模块,提高内存系统的处理效率。
104.由于读写控制模块202中具有对数据写入请求的提前响应机制,接口转换模块203在处理数据读取请求之前还需要检测数据写入请求是否处理完毕,以使得在经过冲突检测模块201、数据读写控制模块202和接口转换模块203的处理后,避免在axi接口处出现写后读操作的数据一致性的问题。
105.例如,读写控制模块202向冲突检测模块201提前回复了针对内存地址a的数据写入请求的数据写入响应,冲突检测模块201收到数据写入响应之后,向读写控制模块202下发了针对内存地址a的数据读取请求,若axi接口的写通道存在反压,则针对内存地址a的数据读取请求可能会在针对内存地址a的数据写入请求之前被处理,使得处理针对内存地址a的数据读取请求时,读到了未更新的数据,导致在数据读取响应中携带错误的数据。
106.为了避免上述写后读操作的数据一致性的问题,本技术另一实施例中,接口转换
模块203,具体用于若接收到的数据访问请求为数据读取请求,则判断是否接收到已启动处理的所有数据写入请求的数据写入响应,在判断结果为是时,基于接收到的数据读取请求对内存模块204进行读操作。
107.本技术实施例中,接口转换模块203可以通过写计数值判断是否已接收到已启动处理的所有数据写入请求的数据写入响应。
108.其中,接口转换模块203,具体用于若接收到的数据访问请求为数据写入请求,则基于接收到的数据写入请求对内存模块204进行写操作,每进行一次写操作将写计数值加1,每接收到一次数据写入响应,则将写计数值减1。其中,写计数值的初始值为预设值。
109.其中,预设值可以为预先设置的常数,例如,可以为0。
110.本技术实施例中,接口转换模块203基于数据写入请求对内存模块204发起的写操作的axi id均为0或者为同一个常数,由于axi协议规定具有相同axi id的写操作需被按顺序处理,不可乱序,所以本技术实施例中对于各写操作采用相同的axi id,使得接口转换模块203按照执行写操作的顺序接收到数据写入响应,从而对写计数值进行更新。可以理解的是,当写计数值为预设值的时候,说明当前没有进行中的写操作。
111.进而,接口转换模块203,具体用于若接收到的数据访问请求为数据读取请求,则判断写计数值是否为预设值,在判断结果为是的情况下,基于接收到的数据读取请求对内存模块204进行读操作。
112.接口转换模块203在每处理一个数据读取请求之前,需要判断写计数值是否为预设值,在写计数值为预设值的情况下,则可以确定已启动处理的所有数据写入请求已经处理完毕,此时可以处理数据读取请求。
113.若写计数值不为预设值,则接口转换模块203需要等待写计数值更新为预设值之后,再处理数据读取请求。
114.如此,可以避免接口转换模块对同一请求地址的数据写入请求和数据读取请求处理过程中的乱序,配合冲突模块的冲突检测操作,可以避免出现写后读操作的数据一致性的问题。
115.需要说明的是,接口转换模块203每处理完成一个数据读取请求后,需要向冲突检测模块201回复一个数据读取响应,数据读取响应中携带读取到的数据,冲突检测模块201接收到数据读取响应后,可以删除管理队列或冲突队列中缓存的数据读取响应对应的数据访问请求的请求信息,将冲突队列中与被删除的请求信息冲突的请求信息对应的数据访问请求下发到读写控制模块202。
116.图3为本技术实施例提供的数据访问请求处理流程图,下面结合图3对本技术提供的内存系统对数据访问请求的处理方法进行说明。
117.s301、冲突检测模块接收数据访问请求,通过bypass通路向读写控制模块发送数据访问请求,或者,对数据访问请求进行地址冲突检测,向读写控制模块发送通过地址冲突检测的数据访问请求。
118.若数据访问请求的业务类型为指定类型,则通过bypass通路将数据访问请求下发到读写控制模块,若数据访问请求的业务类型不是指定类型,则冲突检测模块对数据访问请求进行地址冲突检测。
119.冲突检测模块对数据访问请求进行地址冲突检测的方法可以参考上述实施例中
的相关描述,此处不再赘述。
120.s302、读写控制模块对接收到的数据访问请求进行读写控制。
121.读写控制模块可以确定读窗口和写窗口,在读窗口内确定数据读取请求的处理顺序,按照确定的处理顺序向接口转换模块下发数据读取请求,在写窗口内确定数据写入请求的处理顺序,并按照确定的处理顺序向接口转换模块下发数据写入请求。
122.s303、读写控制模块判断已被确定处理顺序的数据访问请求是否为数据写入请求,若是,则提前向冲突检测模块回复数据写入响应,若否,则不进行额外处理。
123.其中,冲突检测模块可向系统均衡模块发送该数据写入响应,以使得系统均衡模块向发出数据写入请求的模块回复该数据写入响应。
124.s304、接口转换模块接收读写控制模块下发的数据访问请求。
125.s305、接口转换模块通过数据选择器(multiplexer,mux)选择处理数据读取请求或数据写入请求。
126.若接口转换模块接收到数据写入请求,并通过mux选择处理数据写入请求,则执行s306;若接口转换模块接收到数据读取请求,并通过mux选择处理数据读取请求,则执行s308。
127.s306、发起axi写操作,且所有的写操作均使用相同的axi id。
128.接口转换模块每发起一个axi写操作,将写计数值加1,每接收到一个写响应,将写计数值减1。
129.s307、接口转换模块对内存写接口进行访问,以执行axi写操作。
130.s308、接口转换模块发起axi读操作。
131.s309、接口转换模块判断写计数值是否为0,若否,则返回s308;若是则执行s310。
132.写计数值不为0时,接口转换模块需要等待正在进行的axi写操作全部处理完毕,写计数值更新为0之后,再执行axi读操作。
133.s310、接口转换模块对内存读接口进行访问,以执行axi读操作。
134.可以理解的是,在接口转换模块接收到读响应后,可以向读写控制模块发送数据读取响应,进而数据读写控制模块逐层向上发送数据读取响应,直至数据读取响应被发送至发出数据读取请求的模块。可以理解的是,读响应和数据读取响应中均包括读取到的数据。
135.采用上述技术方案,冲突检测模块对指定类型的数据访问请求,不进行地址冲突检测,也就无需将指定类型的数据访问请求缓存于管理队列,相比于现有技术中对所有数据访问请求进行地址冲突检测,本技术可以降低地址冲突检测所需的时间,提高了地址冲突检测效率,还可以降低对管理队列的队列深度要求,减小了内存系统的资源占用。此外,通过读写控制模块确定数据访问请求的处理顺序,提高了内存系统对数据访问请求处理效率,可以均衡处理不同业务类型的数据访问请求,使得内存系统的应用场景更加灵活,满足了不同网络业务的要求。另外,读写控制模块还具有对数据写入请求的提前响应机制,在采用提前响应机制的情况下,接口转换模块可以按照写计数值处理数据读取请求,在提高内存系统的处理效率的前提下,避免了写后读操作的乱序,保证了写后读操作的数据一致性。
136.可见,本技术在解决数据一致性问题的前提下,可以提高内存系统性能和稳定性,可以灵活适用于各种业务场景,即本技术提供的内存系统具有高性能、高稳定性和高灵活
性的特点。
137.本技术实施例还提供了针对上述内存系统的测试方法。
138.对内存系统的测试包括模块级测试和系统级测试。
139.其中,模块级测试是指对接口转换模块和内存模块进行测试,也就是将数据读写请求输入接口转换模块,以测试接口转换模块对内存模块的读写性能。
140.系统级测试是指对冲突检测模块、读写控制模块、接口转换模块和内存模块进行测试,也就是将数据读写请求输入冲突检测模块,以测试冲突检测模块、读写控制模块和接口转换模块对数据读写请求的处理性能。
141.并且,上述测试包括功能测试和性能测试,功能测试是为了测试读写数据的正确性,性能测试是为了测试内存系统的处理是否发挥了内存系统的最佳性能。
142.针对模块级的性能测试方法为:对接口转换模块连续发起n(n》10000)次单独的读操作、单独的写操作或者读写混合操作。
143.同样的,针对系统级的性能测试方法为:对冲突检测模块连续发起n(n》10000)次单独的读操作、单独的写操作或者读写混合操作。
144.若每一次操作的有效数据为b比特,从第一次操作开始到最后一次操作结束所需时间为t,则数据传输速率为n*b/t。
145.内存理论传输速率为d*g,g为数据传输时钟频率,d为有效数据位宽。
146.系统性能执行效率为数据传输速率和内存理论传输速率的比值,可以使用以下公式来表示:n*b/(t*d*g)*100%。通过将计算得到的执行效率与内存系统的期望执行效率进行对比,可以确定内存系统的执行效率是否达到预期。
147.针对系统级或模块级的功能测试方法为:对内存模块进行读写测试,通过比对读取到的数据和写入的数据,从而进行数据一致性检查。读写测试主要包括写后读测试,读后写测试,写后写测试,由于读操作不会改变内存数据,所以不进行读后读测试。
148.写后读测试,即对特定内存地址进行先写后读测试,在该特定内存地址的写操作和读操作之间插入多个对其他地址的写操作,然后多次重复执行上述操作,每对特定内存地址执行一次写操作,将写操作写入的数据加1。进而通过对比每一次从该特定内存地址读取的数据是否与上一次向该特定内存地址写入的数据一致,若一致,则确定不存在数据一致性问题,否则确定存在数据一致性问题。通过对比结果,可以确定内存系统的各模块的功能是否正常。
149.读后写测试,即针对特定内存地址进行先读后写测试,由于读操作没有提前响应机制,所以需要等到读取到数据之后,再执行对该特定内存地址的写操作,从而判断读取到的数据是否与写入的数据一致,若一致,则说明被错误地执行为先写后读;若不一致,则说明没有出现读写乱序。读后写测试用于系统级测试,可以测试出冲突检测模块是否正常工作。
150.写后写测试,即对特定内存地址进行写后写测试,在特定内存地址的写操作和写操作之间插入多个其他地址的读或写操作,多次重复上述操作,每对特定内存地址执行一次写操作,将写入的数据加1,每对特定内存地址执行一次写操作,通过后门技术获取该特定内存地址中的数据,并将获取到的后门数据与写入的数据进行对比,以判断执行写操作写入的数据是否与预期一致,从而判断内存系统各模块功能是否正常。
151.可见,通过上述简单的读写测试,即可对本技术实施例提供的内存系统进行功能测试和性能测试,即本技术实施例提供的内存系统具有简单易测试的效果。
152.本技术实施例还提供了一种芯片,该芯片包括上述实施例中的内存系统。该芯片可以为网络芯片、图形处理器(graphics processing unit,gpu)芯片、数据处理单元(data processing unit,dpu)芯片或者中央处理器(central processing unit,cpu)芯片等各类型的具有内存系统的芯片。
153.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
154.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
155.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可。
156.以上所述仅为本技术的较佳实施例,并非用于限定本技术的保护范围。凡在本技术的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本技术的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1