本技术涉及虚拟输出队列(virtual output queue,voq),特别是涉及一种虚拟输出队列管理方法、系统、装置、芯片及存储介质。
背景技术:
1、在芯片设计中,往往要求单一模块同时支持多种不同的业务,要求业务之间相互独立,不能因为某一业务流的堵塞而拥堵别的业务流,这就要求在设计中,为不同的业务指定私有的计算资源、存储资源以及带宽资源。
2、当多种业务流进入某个模块,往往需要一定的缓存资源,一般使用先入先出队列(first in first out,fifo)来完成隔离,即每个业务独自占用一个fifo通道。但是这样存储资源完全隔离,导致某一业务流很少时,别的业务无法使用该部分空闲的存储资源,会造成浪费。
3、在现有技术中,还有一种方案,通过使用共享存储资源的虚拟输出队列(virtualoutput queue,voq)来解决共享性问题。这虽然解决了存储资源共享的问题,但是当某一业务流突发时,很可能会把路径上的所有存储资源占尽,使得别的业务流也被堵塞,达不成不同业务流之间互不堵塞的要求。
技术实现思路
1、本技术所要解决的技术问题在于,提供一种虚拟输出队列管理方法、系统、装置、芯片及存储介质,可以提高虚拟输出队列对存储资源利用的效率,简化了资源管理逻辑,提高了数据的安全性。
2、为解决上述技术问题,作为本技术的一方面,提供一种虚拟输出队列管理方法,其至少包括如下步骤:
3、接收业务流的入队请求,并获取所述业务流对应的虚拟输出队列及通道信息,所述通道信息中至少包括有预先配置的私有资源占用阈值和公有资源占用阈值;
4、根据所述业务流对应通道中当前私有资源占用量和公有资源占用量,为所述业务流的各数据块分配私有存储资源或公有存储资源,并建立入队存储链,以存储所述业务流的数据块内容;
5、接收针对所述业务流的出队请求,根据所述入队存储链的逆序方式,读出已存储的业务流内容。
6、其中,根据所述业务流对应通道中当前私有资源占用量和公有资源占用量,为所述业务流的各数据块分配私有存储资源或公有存储资源,并建立入队存储链,以存储所述业务流的数据块内容,进一步包括:
7、依序接收所述业务流中的数据块;
8、对于每一数据块,检测所述业务流对应的通道当前的私有资源占用量和公有资源占用量,并分别与预先配置的所述通道的私有资源占用阈值和公有资源占用阈值进行比较;
9、如果当前的私有资源占用量未达到所述私有资源占用阈值,则为所述数据块分配一私有存储资源,并对所述通道的私有资源占用量进行加1处理;
10、如果所述当前的私有资源占用量达到所述私有资源占用阈值,为所述数据块分配一公有存储资源,并对所述通道的公有资源占用量进行加1处理;
11、如果所述当前的公有资源占用量达到所述公有资源占用阈值,则拉起所述通道的入队反压信号,控制停止所述业务流的入队操作。
12、其中,为所述数据块分配私有存储资源或公有资源,进一步包括:
13、查询为所述通道配置的私有数据存储区或公有数据存储区中各存储区域所对应的bitmap的位值,选择其中一个空闲的存储区域分配给当前数据块,并将所述存储区域的bitmap的位值更新为占用。
14、其中,为所述业务流分配存储资源,并建立入队存储链,以存储所述业务流的数据块内容,进一步包括:
15、根据接收的业务流的各数据块建立一入队存储链,所述入队存储链包含用于指示每一数据块的存储区域的指针以及链接顺序,且采用一表格记录入队存储链的链头指针和链尾指针;
16、在接收到新数据块后,更新所述入队存储链,并更新所述表格中所记录的链头指针和链尾指针;
17、将所接收的数据块存入相应指针所对应的存储区域中。
18、其中,所述接收针对所述业务流的出队请求,根据所述存储链的逆序方式,读出已存储的业务流内容,进一步包括:
19、接收到所述业务流的出队请求后,确定所述业务流的出队存储链,所述出队存储链为所述入队存储链的逆序形式;
20、根据所述出队存储链的顺序,依序读出出队存储链中各指针相应的存储区域中的数据块内容;
21、在读出每一数据块时,根据所述数据块所在存储区域的类型,对当前通道的公有资源占用量或私有资源占用量进行减1处理;并更新所述出队存储链,且将所述数据块的存储区域对应的bitmap的位值更新为空闲。
22、其中,进一步包括:
23、在检测到当前通道的公有资源占用量低于公有资源占用阈值时,解除所述通道的入队反压信号。
24、相应地,本技术的另一方面,还提供一种虚拟输出队列管理系统,其至少包括:
25、入队请求接收单元,用于接收业务流的入队请求,并获取所述业务流对应的虚拟输出队列及通道信息,所述通道信息中至少包括有预先配置的私有资源占用阈值和公有资源占用阈值;
26、入队处理单元,用于根据所述业务流对应通道中当前私有资源占用量和公有资源占用量,为所述业务流的各数据块分配私有存储资源或公有存储资源,并建立入队存储链,以存储所述业务流的数据块内容;
27、出队处理单元,用于在接收针对所述业务流的出队请求后,根据所述入队存储链的逆序方式,读出已存储的业务流内容。
28、其中,入队处理单元进一步包括:
29、数据块接收单元,用于依序接收所述业务流中的数据块;
30、入队占用量管理单元,用于对于每一数据块,检测所述业务流对应的通道当前的私有资源占用量和公有资源占用量,并与预先配置的所述通道的私有资源占用阈值和公有资源占用阈值进行比较;
31、其中,如果所述当前的私有资源占用量未达到所述私有资源占用阈值,则为所述数据块分配一私有存储资源,并对所述通道的私有资源占用量进行加1处理;
32、如果所述当前的私有资源占用量达到所述私有资源占用阈值,为所述数据块分配一私有存储资源,并对所述通道的公有资源占用量进行加1处理;
33、如果所述当前的公有资源占用量达到所述公有资源占用阈值,则拉起所述通道的入队反压信号,控制停止所述业务流的入队操作。
34、其中,入队处理单元进一步包括:
35、存储区域调用单元,用于查询为所述通道配置的私有数据存储区或公有数据存储区中各存储区域所对应的bitmap的位值,选择其中一个空闲的存储区域分配给当前数据块,并将所述存储区域的bitmap的位值更新为占用。
36、其中,入队处理单元进一步包括:
37、入队存储链处理单元,用于根据接收的业务流的各数据块建立一入队存储链,所述入队存储链包含用于指示每一数据块的存储区域的指针以及链接顺序,且采用一表格记录入队存储链的链头指针和链尾指针;在接收到新数据块后,更新入队所述存储链,并更新所述表格中所记录的链头指针和链尾指针;
38、存储处理单元,用于将所接收的数据块存入相应指针所对应的存储区域中。
39、其中,所述出队处理单元进一步包括:
40、出队存储链获取单元,用于在接收到所述业务流的出队请求后,确定所述业务流的出队存储链,所述出队存储链为所述入队存储链的逆序形式;
41、出队单元,用于根据所述出队存储链的顺序,依序读出相应的数据块内容;在读出每一数据块时,根据所述数据块所在存储区域的类型,对当前通道的公有资源占用量或私有资源占用量进行减1处理;并更新所述出队存储链,且将所述数据块的存储区域对应的bitmap的位值更新为空闲。
42、其中,进一步包括:
43、反压解除单元,用于在检测到当前通道的公有资源占用量低于公有资源占用阈值时,解除所述通道的入队反压信号。
44、相应地,本技术的再一方面,还提供一种虚拟输出队列管理装置,其包括:
45、资源管理单元,用于识别各个通道入队和出队信息,对各业务流对应的通道的私有资源以及公有资源进行管理;
46、bitmap管理单元,用于采用位图的方式对各通道的私有存储资源、公有存储资源中各数据块的存储区域的状态进行管理,所述状态为空闲或占用;
47、第一表单,用于记录各通道对应的入队存储链或出队存储链的链头指针、链尾指针和有效指示信号;
48、第二表单,用于存储各通道对应的入队存储链或出队存储链的链接关系,其包含有用于指示每一数据块的存储区域的指针以及链接顺序;
49、数据表单,用于调用存储区域,存储入队存储链对应的业务流中各数据块;
50、入队管理单元,用于在对一数据块进行入队操作时,向bitmap管理单元申请空闲的存储区域并存储,并根据该存储区域地址更新第一表单和第二表单;
51、出队管理单元,用于在对一数据块进行出队操作时,根据所述出队链的链头指针读出数据表单中相应的数据块,在bitmap管理单元中更新所述数据块存储区域的状态,并更新第一表单和第二表单。
52、其中,所述资源管理单元进一步包括:
53、第一管理单元,用于接受上层软件下发的配置信息,配置各个通道的私有资源阈值和公有资源阈值;
54、第二管理单元,用于对于每一数据块,检测所述业务流对应的通道当前的私有资源占用量和公有资源占用量,并与预先配置的所述通道的私有资源占用阈值和公有资源占用阈值进行比较;其中,如果所述当前的私有资源占用量未达到所述私有资源占用阈值,则为所述数据块分配一私有存储资源,并对所述通道的私有资源占用量进行加1处理;如果所述当前的私有资源占用量达到所述私有资源占用阈值,为所述数据块分配一私有存储资源,并对所述通道的公有资源占用量进行加1处理;如果所述当前的公有资源占用量达到所述公有资源占用阈值,则拉起所述通道的入队反压信号,控制停止所述业务流的入队操作;
55、第三管理单元,用于在出队操作中,在读出每一数据块时,根据所述数据块对应的为公有资源或私有资源,对当前通道的公有资源占用量或私有资源占用量进行减1处理;
56、第四管理单元,用于在检测到当前通道的公有资源占用量低于公有资源占用阈值时,解除所述通道的入队反压信号。
57、相应地,本技术的再一方面,还提供一种芯片,其部署有如前述的系统或装置。
58、相应地,本技术的再一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述的方法的步骤。
59、实施本技术实施例,具有如下有益效果:
60、本技术提供一种虚拟输出队列管理方法、系统、装置、芯片及存储介质。通过为每一通道采用私有资源和共有资源结合的虚拟输出队列方案,从而可以支持通过灵活的配置各个通道私有资源的个数,进行不同种业务之间的隔离,达到不相互堵塞的效果;同时,支持通过灵活的配置来设置共享资源所占资源数量,以达成一定的共享性,避免存储资源的浪费,提高了存储资源的应用效率。
61、在本技术的方案中,使用bitmap的方法来管理各存储资源的空闲和使用状态,使软件无需参与虚拟输出队列的初始化,节省了软件开销。
62、同时,通过设置每一通道的私有资源占用阈值和公有资源占用阈值,可以对存储资源进行公有或私有的灵活分配,同时可以管控链队列的维护和数据流动,并提高数据的安全性。
63、综上,实施本技术,可以提高虚拟输出队列对存储资源利用的效率,简化了资源管理逻辑,简化了软件操作流程,且提高了数据的安全性。