获取队列精确状态的装置及其方法制造方法及图纸

技术编号:16188023 阅读:43 留言:0更新日期:2017-09-12 11:21
提供了获取队列精确状态的装置及其方法。命令队列处理方法包括:清除标志寄存器;更新存储器中的队首指针;读取标志寄存器,确定所述标志寄存器被置位后,才访问所述状态寄存器,并依据所述状态寄存器对所述命令队列进行处理。

Device and method for obtaining exact state of queue

An apparatus and method for obtaining a precise state of a queue are provided. Including command queue processing method: remove the flag register; update the memory of the first team pointer; read sign register determines the flag register is set, only access to the status register, and on the basis of the status register on the command queue for processing.

【技术实现步骤摘要】
获取队列精确状态的装置及其方法
本专利技术涉及用于处理NVMe命令的NVMe控制器,特别地,涉及在NVMe控制器中准确识别NVMe队列状态。
技术介绍
设备之间通过队列交换命令或消息是常用的。命令发送方将命令插入提交队列尾部,命令接收方从队列尾部取出命令并处理,将处理结果插入到完成队列尾部,命令发送方从完成队列头部取出命令处理结果。通过队列交换命令,能够在发送方与接收方直接维护多个并发的命令,并且命令之间的处理速度不必一致。NVMe协议(参见“NVMExpressRevision1.2”,2014年11月3日,通过引用将其全文合并于本说明书)定义了主机(Host)与设备(Device)之间交换数据的命令与数据结构(如图1所示)。主机中维护多个队列,每个队列中可填充多个命令。主机与设备基于队列交换数据。主机将命令C填入提交队列,设备从提交队列中取得命令C,并按命令C的内容进行处理,将处理结果填入完成队列。主机从完成队列获取命令C的处理结果以知晓命令C的处理完成。依据NVMe协议,在设备端维护多个队列的队首与队尾指针。主机与设备都会更新队首与队尾指针。主机向设备发送命令时,主机将命令插入提交队列的队尾,并更新队尾指针。设备端比较提交队列的队首指针与队尾指针,在二者不同时,确定队列中有待处理的命令。设备端从队列中取出命令后,更新队首指针。主机端基于队首指针与队尾指针,可确定队列中是否有空间容纳新的命令。在软件组件之间、集成电路组件之间以及软件与硬件之间也使用队列交换消息或命令。专利技术人提出了在设备端维护队列指针的方式(申请号为201510997494.X、专利技术名称为NVMe门铃处理方法及其装置的中国专利申请)。(参看图2),将队列指针存储在设备端的NVMe控制器的存储器中,从而设备端的NVMe控制器可维护不同数量的NVMe队列指针。当在主机与设备之间有N个队列时,在存储器中存储2N个指针。为每个队列在存储器中存储队首指针与队尾指针。在NVMe控制器中还提供状态寄存器,用以指示各个队列的状态(队首指针与队尾指针是否相同,队首指针与队尾指针不同,意味着队列中有待处理的NVMe命令),状态寄存器中为每个队列提供一个寄存器位。在图2中,主机能够访问设备端的存储器中存储的队列指针;NVMe控制器的CPU能够访问存储器中存储的队列指针;监控器组件1,在监视到主机更新存储器中的队尾指针时,设置状态寄存器中与该队尾指针所属的队列所对应的位;监控器组件2,在监视到NVMe控制器的CPU更新存储器中的队首指针时,读取与该队首指针相对应的队尾指针,在队首指针与队尾指针不同时,设置状态寄存器中与该队尾指针所属的队列所对应的位;在队首指针与队尾指针相同时,清除状态寄存器中与该队尾指针所属的队列所对应的位。
技术实现思路
然而,(1)存储器的访问速度较慢,而NVMe控制器中的CPU指令执行速度较快。从而当CPU执行指令更新存储器中的队列指针后,会继续依据状态寄存器的指示,确定是否对队列进行处理。而在NVMeCPU更新存储器中的队列指针与状态寄存器反映出真实的队列状态之间存在时间窗口。在该时间窗口内,状态寄存器可能指示队列中有命令需要处理,但相应的命令已被NVMeCPU处理完成。从而状态寄存器指示的状态信息是错误的。在多CPU的情况下,这种问题将更加严重。参看下表,在t0时刻,NVMe控制器CPU发出指令更新队列指针(队首指针)。存储器的访问速度较慢,在t2时候才完成对存储器中的队首指针的更新。监控器在t3时刻从存储器中查询到队尾指针。在t4时刻,状态寄存器才能反映出队列真实的状态。这导致在t1-t3的时间窗口内,NVMeCPU无法通过状态寄存器获得队列的真实状态。时间轴t0t1t2t3t4NVMeCPU发出指令更新队首指针存储器队首指针被更新监控器查询查询队尾指针状态寄存器错误队列状态错误队列状态错误队列状态反映真实队列状态(2)主机与NVMe控制器的CPU都会更新存储器中的队首指针和/或队尾指针;在NVMe控制器CPU更新存储器中的队列指针后,依然需要查询存储器才能确定队列状态,这也导致在一定时间窗口内状态寄存器指示的状态信息是错误的。参看下表,在t0时刻,NVMe控制器CPU发出指令更新队列指针(队首指针)。在t1时刻,主机更新队尾指针,由于存储器访问端口被占用,直到t5时刻,状态寄存器才能反映出队列真实的状态。这导致在t1-t4的时间窗口内,NVMeCPU无法通过状态寄存器获得队列的真实状态。时间轴t0t1t2t3t4t5NVMeCPU发出指令更新队首指针主机发出指令更新队尾指针存储器队首指针被更新队尾指针被更新监控器查询查询队尾指针状态寄存器错误队列状态错误队列状态错误队列状态反映真实队列状态因而,需要提供技术方案,使得NVMe控制器CPU能够获知队列的真实状态。根据本专利技术的第一方面,提供了根据本专利技术第一方面的第一命令队列处理器,包括存储器、处理器、监视器、状态寄存器以及标志寄存器;所述状态寄存器用于指示命令队列的状态,其中在命令队列非空时,所述状态寄存器中相对应的比特被所述监视器置位;所述标志寄存器可被所述CPU与所述监视器访问;其中当所述标志寄存器被置位时,所述标志寄存器指示所述状态寄存器的值反应了队列的真实状态,而当所述标志寄存器被清除时,所述标志寄存器指示所述状态寄存器的值并不反映队列的真实状态。根据本专利技术第一方面的第一命令队列处理器,还提供了根据本专利技术第一方面的第二命令队列处理器,其中当所述CPU更新所述存储器中的队列指针后,所述CPU清除所述标志寄存器;以及当所述监视器设置所述状态寄存器后,还将所述标志寄存器置位。根据本专利技术第一方面的第一与第二命令队列处理器之一,还提供了根据本专利技术第一方面的第三命令队列处理器,其中所述CPU读取所述标志寄存器,确定所述标志寄存器被置位后,才访问所述状态寄存器,并依据所述状态寄存器对所述命令队列进行处理。根据本专利技术第一方面的第一至第三命令队列处理器之一,还提供了根据本专利技术第一方面的第四命令队列处理器,其中所述CPU读取所述标志寄存器,确定所述标志寄存器被清除时,忽略所述状态寄存器的指示。根据本专利技术第一方面的第一至第四命令队列处理器之一,还提供了根据本专利技术第一方面的第五命令队列处理器,其中所述监视器响应于所述CPU更新了所述存储器中的第一队列指针,所述监视器读取与所述第一队列指针相对应的第二队列指针,并依据所述第一队列指针与所述第二队列指针确定所述命令队列的状态,并进而更新所述状态寄存器以及将所述标志寄存器置位。根据本专利技术第一方面的第一至第五命令队列处理器之一,还提供了根据本专利技术第一方面的第六命令队列处理器,其中所述监控器基于所述CPU访问所述存储器的地址识别所述CPU更新了所述存储器中的第一队列指针。根据本专利技术第一方面的第一至第六命令队列处理器之一,还提供了根据本专利技术第一方面的第七命令队列处理器,所述命令队列处理器还包括第二处理器,其中所述标志寄存器与所述存储器可被所述第二处理器访问;所述CPU或第二CPU访问所述状态寄存器前,对所述标志寄存器加锁,并依据所述标记寄存器的内容决定是否访问所述状态寄存器。根据本专利技术第一方面的第一至第七命令队列处理器之一,还提供了根据本专利技术第一方面的本文档来自技高网
...
获取队列精确状态的装置及其方法

【技术保护点】
一种命令队列处理器,包括存储器、处理器、监视器、状态寄存器以及标志寄存器;所述状态寄存器用于指示命令队列的状态,其中在命令队列非空时,所述状态寄存器中相对应的比特被所述监视器置位;所述标志寄存器可被所述CPU与所述监视器访问;其中当所述标志寄存器被置位时,所述标志寄存器指示所述状态寄存器的值反应了队列的真实状态,而当所述标志寄存器被清除时,所述标志寄存器指示所述状态寄存器的值并不反映队列的真实状态。

【技术特征摘要】
1.一种命令队列处理器,包括存储器、处理器、监视器、状态寄存器以及标志寄存器;所述状态寄存器用于指示命令队列的状态,其中在命令队列非空时,所述状态寄存器中相对应的比特被所述监视器置位;所述标志寄存器可被所述CPU与所述监视器访问;其中当所述标志寄存器被置位时,所述标志寄存器指示所述状态寄存器的值反应了队列的真实状态,而当所述标志寄存器被清除时,所述标志寄存器指示所述状态寄存器的值并不反映队列的真实状态。2.根据权利要求1所述的命令队列处理器,其中当所述CPU更新所述存储器中的队列指针后,所述CPU清除所述标志寄存器;以及当所述监视器设置所述状态寄存器后,还将所述标志寄存器置位。3.根据权利要求1-2之一所述的命令队列处理器,其中所述CPU读取所述标志寄存器,确定所述标志寄存器被置位后,才访问所述状态寄存器,并依据所述状态寄存器对所述命令队列进行处理。4.根据权利要求1-3之一所述的命令队列处理器,其中所述监视器响应于所述CPU更新了所述存储器中的第一队列指针,所述监视器读取与所述第一队列指针相对应的第二队列指针,并依据所述第一队列指针与所述第二队列指针确定所述命令队列的状态,并进而更新所述状态寄存器以及将所述标志寄存器置位。5.根据权利要求1-4之一所述的命令队列处理器,所述命令队列处理器还包括第二处...

【专利技术属性】
技术研发人员:伍德斌汤峰
申请(专利权)人:北京忆恒创源科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1