本技术涉及计算机,尤其涉及一种硬盘控制器缓存系统、方法、硬盘设备及电子设备。
背景技术:
1、目前,硬盘控制器是硬盘设备的重要部件,用于接收和缓存主机下发的命令,并按序执行已缓存的命令。
2、在现有技术中,主机通常是使用多个命令队列向硬盘控制器下发命令,硬盘控制器一般设有多个与命令队列一一对应的命令缓存队列,用于独立缓存各命令队列下发的命令。
3、但是,由于与硬盘控制器进行实际交互的命令队列的数量由主机决定,因此常常出现硬盘控制器的部分命令缓存队列被闲置,浪费了硬盘控制器的缓存资源。
技术实现思路
1、本技术提供一种硬盘控制器缓存系统、方法、硬盘设备及电子设备,以解决现有技术浪费了硬盘控制器的缓存资源等缺陷。
2、本技术第一个方面提供一种硬盘控制器缓存系统,包括:命令采集模块和链式缓存器;
3、所述命令采集模块用于采集主机中任一命令队列下发的待缓存命令,并将所述待缓存命令缓存至所述链式缓存器;
4、所述链式缓存器用于将得到的待缓存命令缓存至命令缓存链的空闲头指针指向的节点;其中,所述链式缓存器包括链信息缓存器及命令缓存链;
5、所述链信息缓存器用于缓存空闲头指数、空闲尾指数及各所述命令队列对应的头指数和尾指数;
6、所述命令缓存链用于缓存各所述命令队列下发的命令及各命令所在的节点对应的链连接指数。
7、在一些可选的实施方式中,所述链式缓存器,具体用于:
8、确定所述待缓存命令对应的目标命令队列;
9、在将待缓存命令缓存至命令缓存链的空闲头指针指向的节点后,若所述目标命令队列的头指数有效,则将所述空闲头指针指向的节点的标记值,作为所述目标命令队列的当前尾指针指向的节点的链连接指数;
10、将所述目标命令队列的尾指数更新为所述空闲头指针指向的节点的标记值;
11、将所述空闲头指针指向的节点的链连接指数,作为新的空闲头指数。
12、在一些可选的实施方式中,所述链式缓存器,还用于:
13、若所述目标命令队列的头指数无效,则将所述空闲头指针指向的节点的标记值,作为所述目标命令队列的头指数。
14、在一些可选的实施方式中,该系统还包括:命令执行模块;
15、所述命令执行模块用于在所述链式缓存器中读取待执行命令,并根据所述待执行命令对应的目标执行命令队列,确定目标逻辑通道;
16、其中,所述命令执行模块包括若干个与所述命令队列一一对应的逻辑通道。
17、在一些可选的实施方式中,所述命令执行模块,具体用于:
18、向所述链式缓存器发送命令读取需求,以使所述链式缓存器按照所述命令读取需求向所述命令执行模块传输所述待执行命令。
19、在一些可选的实施方式中,所述链式缓存器,具体用于:
20、根据所述命令读取需求,确定目标执行命令队列及命令待读取数;
21、将所述链信息缓存器中缓存的所述目标执行命令队列的头指数,作为当前指数;
22、从所述命令缓存链中读取所述当前指数所指向的节点缓存的待执行命令;
23、将所述待执行命令传输至所述命令执行模块,更新所述命令待读取数减1;
24、判断更新后的命令待读取数是否为0;
25、若更新后的命令待读取数不为0,则将所述头指数所对应的节点的链连接指数,作为当前指数;
26、返回至所述从所述命令缓存链中读取所述当前指数所指向的节点缓存的待执行命令的步骤。
27、在一些可选的实施方式中,所述链式缓存器,还用于:
28、若更新后的命令待读取数为0,则将所述空闲尾指数所对应的节点的链连接指数更新为所述目标执行命令队列的头指数。
29、在一些可选的实施方式中,所述链式缓存器,还用于:
30、若所述当前指数等于所述目标执行命令队列的尾指数,则将所述目标执行命令队列的头指数标记为无效。
31、在一些可选的实施方式中,所述链式缓存器,还用于:
32、若所述当前指数不等于所述目标执行命令队列的尾指数,则将所述目标执行命令队列的头指数更新为所述当前指数所对应的节点的链连接指数。
33、在一些可选的实施方式中,所述链式缓存器,还用于:
34、将空闲尾指数更新为所述当前指数。
35、在一些可选的实施方式中,所述命令采集模块包括:命令队尾门铃寄存器和dma引擎;
36、所述主机在任一所述命令队列的队列尾指针发生变化时,将最新队列尾指针数写入所述命令队尾门铃寄存器;
37、所述dma引擎用于在所述命令队尾门铃寄存器的被写入次数达到预设阈值时,向主机发起dma操作,以采集所述主机中任一命令队列下发的命令。
38、在一些可选的实施方式中,所述dma引擎,具体用于:
39、当采集任一所述命令队列下发的命令时,根据所述命令队列的标识信息,确定dma任务信息;其中,所述dma任务信息包括源地址、目标地址和命令长度;
40、按照所述dma任务信息,向主机发起dma操作。
41、在一些可选的实施方式中,所述dma引擎,还用于:
42、为各所述命令队列分配虚拟地址,以将所述虚拟地址作为所述命令队列的目标地址。
43、在一些可选的实施方式中,该系统还包括:缓存空间管理器;
44、所述缓存空间管理器用于监测所述链式缓存器的剩余缓存空间;
45、所述dma引擎,具体用于:
46、当所述剩余缓存空间满足预设标准时,按照所述dma任务信息,向主机发起dma操作。
47、在一些可选的实施方式中,所述dma引擎,具体用于:
48、判断所述剩余缓存空间是否大于当前dma任务大小;
49、若所述剩余缓存空间大于当前dma任务大小,则确定所述剩余缓存空间满足预设标准;
50、若所述剩余缓存空间不大于当前dma任务大小,则拆分执行当前dma任务。
51、在一些可选的实施方式中,所述缓存空间管理器,具体用于:
52、根据所述链式缓存器的总缓存空间和当前缓存空间占用量,确定所述链式缓存器的剩余缓存空间。
53、在一些可选的实施方式中,所述链式缓存器的总缓存空间根据所述命令队列的命令处理目标速率、命令大小及dma任务延时确定。
54、本技术第二个方面提供一种硬盘控制器缓存方法,包括:
55、采集主机中任一命令队列下发的待缓存命令;
56、将所述待缓存命令,缓存至命令缓存链的空闲头指针指向的节点;其中,链式缓存器包括链信息缓存器及命令缓存链;
57、所述链信息缓存器用于缓存空闲头指数、空闲尾指数及各所述命令队列对应的头指数和尾指数;
58、所述命令缓存链用于缓存各所述命令队列下发的命令及各命令所在的节点对应的链连接指数。
59、在一些可选的实施方式中,所述基于所述命令缓存链缓存各所述命令队列下发的命令及各命令所在的节点对应的链连接指数,包括:
60、确定所述待缓存命令对应的目标命令队列;
61、在将待缓存命令缓存至命令缓存链的空闲头指针指向的节点后,若所述目标命令队列的头指数有效,则将所述空闲头指针指向的节点的标记值,作为所述目标命令队列的当前尾指针指向的节点的链连接指数;
62、将所述目标命令队列的尾指数更新为所述空闲头指针指向的节点的标记值;
63、将所述空闲头指针指向的节点的链连接指数,作为新的空闲头指数。
64、在一些可选的实施方式中,所述方法,还包括:
65、若所述目标命令队列的头指数无效,则将所述空闲头指针指向的节点的标记值,作为所述目标命令队列的头指数。
66、在一些可选的实施方式中,所述方法,还包括:
67、在所述链式缓存器中读取待执行命令,并根据所述待执行命令对应的目标执行命令队列,确定目标逻辑通道;所述链式缓存器包括命令缓存链;
68、其中,所述命令执行模块包括若干个与所述命令队列一一对应的逻辑通道。
69、在一些可选的实施方式中,所述在所述链式缓存器中读取待执行命令,包括:
70、向链式缓存器发送命令读取需求,以使所述链式缓存器按照所述命令读取需求向所述命令执行模块传输所述待执行命令。
71、在一些可选的实施方式中,所述向链式缓存器发送命令读取需求,以使所述链式缓存器按照所述命令读取需求向所述命令执行模块传输所述待执行命令,包括:
72、根据所述命令读取需求,确定目标执行命令队列及命令待读取数;
73、将所述链信息缓存器中缓存的所述目标执行命令队列的头指数,作为当前指数;
74、从所述命令缓存链中读取所述当前指数所指向的节点缓存的待执行命令;
75、将所述待执行命令传输至所述命令执行模块,更新所述命令待读取数减1;
76、判断更新后的命令待读取数是否为0;
77、若更新后的命令待读取数不为0,则将所述头指数所对应的节点的链连接指数,作为当前指数;
78、返回至所述从所述命令缓存链中读取所述当前指数所指向的节点缓存的待执行命令的步骤。
79、在一些可选的实施方式中,所述方法,还包括:
80、若更新后的命令待读取数为0,则将所述空闲尾指数所对应的节点的链连接指数更新为所述目标执行命令队列的头指数。
81、在一些可选的实施方式中,所述方法,还包括:
82、若所述当前指数等于所述目标执行命令队列的尾指数,则将所述目标执行命令队列的头指数标记为无效。
83、在一些可选的实施方式中,所述方法,还包括:
84、若所述当前指数不等于所述目标执行命令队列的尾指数,则将所述目标执行命令队列的头指数更新为所述当前指数所对应的节点的链连接指数。
85、在一些可选的实施方式中,所述方法,还包括:
86、将空闲尾指数更新为所述当前指数。
87、在一些可选的实施方式中,所述采集主机中任一命令队列下发的待缓存命令,包括:
88、在所述命令队尾门铃寄存器的被写入次数达到预设阈值时,基于dma引擎,向主机发起dma操作,以采集所述主机中任一命令队列下发的命令;
89、其中,所述主机在任一所述命令队列的队列尾指针发生变化时,将最新队列尾指针数写入所述命令队尾门铃寄存器。
90、在一些可选的实施方式中,所述基于dma引擎,向主机发起dma操作,以采集所述主机中任一命令队列下发的命令,包括:
91、当采集任一所述命令队列下发的命令时,根据所述命令队列的标识信息,确定dma任务信息;其中,所述dma任务信息包括源地址、目标地址和命令长度;
92、按照所述dma任务信息,向主机发起dma操作。
93、在一些可选的实施方式中,所述方法,还包括:
94、为各所述命令队列分配虚拟地址,以将所述虚拟地址作为所述命令队列的目标地址。
95、在一些可选的实施方式中,所述方法,还包括:
96、监测所述链式缓存器的剩余缓存空间;
97、所述按照所述dma任务信息,向主机发起dma操作,包括:
98、当所述剩余缓存空间满足预设标准时,按照所述dma任务信息,向主机发起dma操作。
99、在一些可选的实施方式中,所述方法,还包括:
100、判断所述剩余缓存空间是否大于当前dma任务大小;
101、若所述剩余缓存空间大于当前dma任务大小,则确定所述剩余缓存空间满足预设标准;
102、若所述剩余缓存空间不大于当前dma任务大小,则拆分执行当前dma任务。
103、在一些可选的实施方式中,所述方法,还包括:
104、根据所述链式缓存器的总缓存空间和当前缓存空间占用量,确定所述链式缓存器的剩余缓存空间。
105、在一些可选的实施方式中,所述链式缓存器的总缓存空间根据所述命令队列的命令处理目标速率、命令大小及dma任务延时确定。
106、本技术第三方面提供一种硬盘设备,包括:硬盘控制器主体及如上第一个方面以及第一个方面各种可能的设计所述的硬盘控制器缓存系统。
107、本技术第四个方面提供一种电子设备,包括:至少一个处理器和存储器;
108、所述存储器存储计算机执行指令;
109、所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第二个方面以及第二个方面各种可能的设计所述的方法。
110、本技术第五个方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第二个方面以及第二个方面各种可能的设计所述的方法。
111、本技术技术方案,具有如下优点:
112、本技术提供一种硬盘控制器缓存系统、方法、硬盘设备及电子设备,该系统包括:命令采集模块和链式缓存器;命令采集模块用于采集主机中任一命令队列下发的待缓存命令,并将待缓存命令缓存至链式缓存器;链式缓存器用于将得到的待缓存命令缓存至命令缓存链的空闲头指针指向的节点;其中,链式缓存器包括链信息缓存器及命令缓存链;链信息缓存器用于缓存空闲头指数、空闲尾指数及各命令队列对应的头指数和尾指数;命令缓存链用于缓存各命令队列下发的命令及各命令所在的节点对应的链连接指数。上述方案提供的系统,通过将待缓存命令缓存至命令缓存链,以在硬盘控制器实现命令链式缓存,节省了硬盘控制器的缓存资源。