CN117666925A - 执行指令的方法、装置、服务器及系统 - Google Patents

执行指令的方法、装置、服务器及系统 Download PDF

Info

Publication number
CN117666925A
CN117666925A CN202211037817.7A CN202211037817A CN117666925A CN 117666925 A CN117666925 A CN 117666925A CN 202211037817 A CN202211037817 A CN 202211037817A CN 117666925 A CN117666925 A CN 117666925A
Authority
CN
China
Prior art keywords
instruction
queue
target
address
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211037817.7A
Other languages
English (en)
Inventor
戴书舟
廖志佳
余峰
鄢林
程欣
刘强军
王俊
郭成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN202211037817.7A priority Critical patent/CN117666925A/zh
Priority to PCT/CN2023/114014 priority patent/WO2024041481A1/zh
Publication of CN117666925A publication Critical patent/CN117666925A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请公开了一种执行指令的方法、装置及系统,其中,该方法包括:获取目标队列中的指令获取请求,所述指令获取请求用于指示获取目标指令;基于所述指令获取请求,根据预先设置的映射关系,确定与所述目标队列对应的指令获取地址,所述映射关系指示目标队列所在的队列信息与指令获取地址的对应关系;根据所述指令获取地址获取所述目标指令;根据所述目标指令执行与所述目标指令相应的操作。通过本申请,可以有效管理队列及其存储资源,实现在有限存储资源下对多个虚拟设备的有效管理。

Description

执行指令的方法、装置、服务器及系统
技术领域
本申请属于存储技术领域,具体涉及一种执行指令的方法、装置、服务器及系统。
背景技术
目前,随着虚拟化技术的发展,主机与用户间可以通过PCIE(PeripheralComponent Interconnect Express,一种高速串行计算机扩展总线标准)构造和呈现多个虚拟化存储设备,这些虚拟化存储设备以卸载方式实现,释放主机CPU的资源。在存储领域的虚拟设备当前以NVME(Non Volatile Memory Host Controller Interface,非易失性内存主机控制器接口)设备为主,每个NVME设备需要占用对应的硬件资源(即,存储资源)。
每个NVME设备与对应的NVME控制器进行绑定,且每个NVME设备与其NVME控制器之间通过多个队列进行存储交互,多个NVME设备则会对应大量的NVME队列。在标准的NVME协议中,SQ(Submission Queue,提交队列)与CQ(Completion Queue,完成队列)是NVME存储命令的载体,用来承载主机与NVME设备间交互的具体命令及命令完成状态。每一个SQ以及与之相对的CQ可以称之为一对QP(Queue Pair)。
由于不同NVME设备根据自身业务对队列的具体需求可能不一样,同时随着云存储业务的发展,导致了用户对NVME设备数量的需求越来越大,每个NVME设备都需要一定的队列资源来实现其业务及功能。
如何在有限硬件资源下对多个NVME设备进行有效管理,来完成多种存储业务需求,是目前亟待需要解决的问题。
发明内容
本申请实施例的目的是提供一种执行指令的方法、装置、服务器及系统,能够解决相关技术在有限硬件资源下无法对多个NVME设备有效管理的问题。
第一方面,本申请实施例提供了一种执行指令的方法,所述方法应用于虚拟设备,所述方法包括:获取目标队列中的指令获取请求,所述指令获取请求用于指示获取目标指令;基于所述指令获取请求,根据预先设置的映射关系,确定与所述目标队列对应的指令获取地址,所述映射关系指示目标队列所在的队列信息与指令获取地址的对应关系;根据所述指令获取地址获取所述目标指令;根据所述目标指令执行与所述目标指令相应的操作。
第二方面,本申请实施例提供了一种执行指令的方法,所述方法应用于服务器,所述方法包括:将指令获取请求发送至虚拟设备的目标队列,所述指令获取请求用于指示获取目标指令,以便于虚拟设备基于预先设置的映射关系获取所述目标指令,所述映射关系指示所述目标队列所在的队列信息与指令获取地址的对应关系。
第三方面,本申请实施例提供了一种执行指令的装置,所述装置包括:请求获取单元,用于获取目标队列中的指令获取请求,所述指令获取请求用于指示获取目标指令;地址确定单元,用于基于所述指令获取请求,根据预先设置的映射关系,确定与所述目标队列对应的指令获取地址,所述映射关系指示所述目标队列所在的队列信息与指令获取地址的对应关系;指令获取单元,用于根据所述指令获取地址获取所述目标指令;指令执行单元,用于根据所述目标指令执行与所述目标指令相应的操作。
第四方面,本申请实施例提供了服务器,所述服务器包括:请求发送单元,用于将指令获取请求发送至虚拟设备的目标队列,所述指令获取请求用于指示获取目标指令,以便于虚拟设备基于预先设置的映射关系获取所述目标指令,所述映射关系指示所述目标队列所在的队列信息与指令获取地址的对应关系。
第五方面,本申请实施例提供了一种执行指令的系统,所述系统包括上述的服务器,以及至少一个虚拟设备,其中,所述至少一个虚拟设备包括上述的执行指令的装置。
第六方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器运行时执行如第一方面、或者第二方面所述的方法的步骤。
第七方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器运行时执行实现如第一方面、或者第二方面所述的方法的步骤。
在本申请实施例中,在获取目标队列的指令获取请求后,根据映射关系,确定与目标队列对应的指令获取地址,并据此根据指令获取地址获取目标指令,执行该目标指令,如此,通过预先设置的映射关系,可以有效管理队列及其所属资源,实现在有限存储资源下对虚拟设备的有效管理,可以较好地执行存储业务指令,实现多种存储业务的需求。
附图说明
图1是本申请实施例提供的执行指令方法的一种流程示意图;
图2是本申请实施例提供的执行指令方法的另一种流程示意图;
图3是本申请实施例提供的执行指令方法的另一种流程示意图;
图4是本申请实施例提供的执行指令方法的又一种流程示意图;
图5是本申请实施例提供的执行指令系统的一种结构框图;
图6是本申请实施例提供的执行指令装置的一种结构框图;
图7是本申请实施例提供的服务器的一种结构框图;
图8是本申请实施例提供的执行指令系统的工作原理图;
图9是本申请实施例提供的用户存储控制系统的工作原理图;
图10是本申请实施例提供的电子设备的一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
在相关技术中,NVME设备具有多队列特性,即在主机与NVME设备之间能够构造多个通道进行命令的传输及数据的交互,这些通道对应的载体就是队列。多个NVME设备的队列的存在使得主机可以利用多个核心或者线程并行地进行命令的提交和命令完成结果的处理。
鉴于相关技术在有限硬件资源(即,存储资源)下无法对多个NVME设备有效管理,从而无法较好地完成多种存储业务需求,基于此,本申请实施例提供一种指令执行方案,该方案通过设置虚拟设备队列与队列存储资源的映射关系,实现了对虚拟设备队列存储资源的动态管理,从而可以在有限存储资源下对多个虚拟设备进行有效管理,可以较好地实现多种存储业务需求。
需要说明的是,本申请提供的指令执行方案可应用于存储领域的虚拟设备,在本申请实施例中,虚拟设备以NVME设备为例来详细描述。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的指令执行方案进行详细地说明。
图1是本申请实施例提供的执行指令方法的一种流程示意图,如图1所示,该方法可以包括以下步骤S110-S140。
步骤S110,获取目标队列中的指令获取请求,该指令获取请求用于指示获取目标指令。
在本申请实施例中,队列实现了NVME设备与服务器(对应于上述的主机)之间的指令传输,该队列可以称为QP队列。这里的指令可以是存储业务指令,指令获取请求用于指示从服务器获取目标指令。
在执行步骤S110之前,根据业务需求构建至少一个队列。一般而言,需要构建多个队列,用于实现多种存储业务需求。随后,可以将存储空间(即,硬件资源,或称为存储资源)划分为与构建的队列相同数量的子存储空间,并将各子存储空间分别分配给相应的队列。
这里的存储空间可以为与服务器相应的存储空间。在实际操作中,存储空间可以是服务器的存储空间,也可以是与服务器相应的外挂存储空间。该存储空间可以存储目标指令,还可以存储其他信息。
这里的子存储空间至少用于存储指令获取地址、指令结果存储地址。指令获取地址即是指存放指令的地址,可以称为SQ基地址,指令结果存储地址即是指指令结果存放的地址,可以称为CQ基地址。
例如,根据业务需求构建了128个队列,则需要将存储空间划分为128份子存储空间,并将每份子存储空间分别分配给各个队列。如此,通过子存储空间,队列就可以与服务器进行数据传输。
为了描述方便,以下将用于队列的存储空间统一称为存储资源,子存储空间统一称为子资源,服务器统一称为主机。
在本申请实施例中,可以将存储资源以均分方式划分为多份子资源,也可以依据实际情况来划分子资源,本申请对此不做限制。为了描述方便,本申请实施例以资源均分方式为例来详细描述。
步骤S120,基于上述的指令获取请求,根据预先设置的映射关系,确定与目标队列对应的指令获取地址,所述映射关系指示目标队列所在的队列信息与指令获取地址的对应关系。
在一种可能的实现方式中,映射关系可以通过如下方式设置:在上述对各队列分配队列所属子资源之后,可以获取队列信息及其队列所属子资源信息的对应关系;并根据该获取的对应关系设置映射关系。
在一个实施例中,可以对队列信息、子资源分别进行编号,通过编号方式来表示对应关系。例如,队列3与资源编号32相对应,表示在多个虚拟设备的多个队列中,资源编号32为队列3的专属资源,该编号32对应的子资源可以实现队列3与主机之间的指令传递。
在一种可能实现的方式中,映射关系还可以指示队列信息(例如,队列编号)、队列所属虚拟设备、队列所属子资源信息(例如,资源编号)的对应关系。
在一个实施例中,可以对队列信息、虚拟设备、资源分别进行编号,通过编号方式来表示对应关系。例如,虚拟设备5的队列3,与资源编号32相对应,表示在多个虚拟设备中,资源编号32为虚拟设备5的队列3的专属存储资源,该编号32对应的存储资源可以用于实现虚拟设备5的队列3与主机之间的指令传递。
步骤S130,根据上述指令获取地址获取目标指令。
步骤S140,根据获取的目标指令执行与目标指令相应的操作。
在目标指令执行操作完成后,可以将目标指令的执行结果发送至与子存储空间中的指令结果存储地址相应的存储空间。
也就是说,子存储空间中的指令结果存储地址指示用于存储指令结果的具体存储位置。
本申请实施例在获取目标队列的指令获取请求后,根据映射关系,确定与目标队列对应的指令获取地址,并据此根据指令获取地址获取目标指令,执行该目标指令,如此,通过预先设置的映射关系,可以有效管理队列及其所属资源,实现在有限存储资源下对虚拟设备的有效管理,可以较好地执行存储业务指令,实现多种存储业务的需求。
在一种可能实现的方式中,当队列被删除时,释放该队列的子资源,这样,释放的存储资源仍可用于后续构建的新队列,进一步实现了对有限存储资源地有效管理,提高了资源利用率。
基于相似的发明构思,本申请实施例还提供一种执行指令的方法,该方法应用于服务器(对应于上述主机)。
图2是应用于服务器的执行指令方法的流程图,如图2所示,该方法包括:
步骤S210:将指令获取请求发送至虚拟设备的目标队列,该指令获取请求用于指示获取目标指令,以便于虚拟设备基于预先设置的映射关系获取目标指令,该映射关系指示目标队列所在的队列信息与指令获取地址的对应关系。
在一个实施例中,上述映射关系还指示目标队列所在的队列信息与指令结果存储地址的对应关系,该方法还包括:接收来自上述目标队列的目标指令的执行结果;基于映射关系,将目标指令的执行结果发送至与指令结果存储地址相应的存储空间。也就是说,子存储空间中的指令结果存储地址指示用于存储指令结果的具体存储位置。
以下以主机、多个NVME设备构建的系统为应用场景,结合图3所示的流程描述本申请实施例的执行指令方法。
参见图3所示,执行指令方法包括如下流程:
步骤S301:根据不同业务需求以及不同NVME设备呈现的能力,对各个NVME设备分别创建一定数量的IO QP(输入输出QP,即,步骤S110中的队列)。通过IO QP(可以称为QP队列或者QP),可以实现NVME设备与主机之间的数据传输。
基于构建的IO QP队列数量,将一定的总存储资源平均分成若干份。由于每对IOQP队列需要的基本存储资源是一定的,因此总存储资源的规模可以根据IO QP队列数量来计算,具体需要分成多少份子资源与当前业务所需要的能力相关。例如,有些业务需要的NVME设备比较多,则需要共1024对IO QP来完成;而有些业务需要的NVME设备比较少,只需要128对QP就可以完全满足业务需求。
再例如,共构建了1024对IO QP,则可以将一定的总存储资源分成共1024份子资源,将每份子资源分别分配给一对IO QP,作为IO QP所需要的存储资源。
IO QP存储资源用于存储:SQ的基地址信息(对应于上述的指令获取地址)、SQ的队列深度信息、SQ的门铃信息、CQ的基地址信息(对应于上述的指令结果存储地址)、CQ的队列深度信息、CQ的门铃信息、CQ的中断向量信息等。这些信息的具体功能可以参见相关技术中的描述,本申请对此不作限制。
步骤S302:建立各IO QP所属资源(也可以称为QP存储资源)的编号机制。例如,将1024份IO QP所属资源进行编号管理,编号为0-1023,每一个编号即可对应一份IO QP所属资源。
通过上述编号机制,当一个NVME设备具有多个IO QP队列时,该NVME设备就可以与各IO QP及其所属资源编号相对应。
步骤S303:根据各IO QP创建的先后顺序给每个IO QP分配资源编号,并保存每个IO QP创建时的IO QP信息数据(例如,QP所属设备信息等)。
步骤S304:对每个NVME设备进行编号,编号对应为设备ID(标识),对于NVME设备的每个IO QP,在NVME协议里都有其对应的QP ID,可以由设备ID+设备内QP ID作为其独有的标识,之后将其与一个可被分配的存储资源编号绑定,从而实现了各个NVME设备的不同IOQP共享整体存储资源。
本申请实施例提供了资源编号分配管理机制,对已有的有限存储资源进行具体分割及合理编号,每个单独的队列对应一份拥有编号的存储资源,该队列基于这份资源完成对应的NVME设备的某些业务及功能。而对于某个独立的NVME设备,其可以创建多个队列,则对应地给该NVME设备分配多份不同编号的存储资源。
步骤S305:对内部所有存储资源编号及对应资源进行业务及功能管理,利用存储资源编号与设备ID+QP ID之间的相互映射来控制实现主机与各个NVME设备之间的存储命令及数据的交互。
通过将设备ID、队列ID与存储资源编号进行绑定的策略,具体队列可与存储资源编号进行绑定及相互映射,从而使得在进行NVME设备与主机交互时,可以准确快速地找到实际设备及实际队列的各项具体参数,并完成与主机之间的指令和数据的存储交互。
步骤S306:对于所有NVME设备的任何一个IO QP,其被删除时,则将其对应的存储资源编号进行回收,可以将编号存放到硬件缓存中。
在具体实施过程中,当上述示例中的1024个存储资源编号被全部分配完后、需要删除一些IO QP时,即回收一些资源编号和存储资源,之后可以进行资源编号的再分配。当资源编号还未分配完而有的IO QP已被删除时,则可以先保存这些回收的资源编号,并清除编号对应的存储资源的所有数据信息。
步骤S307:对于后续新创建的IO QP,可以优先分配未被分配的资源编号和存储资源。当上述示例中的1024个资源编号全部被分配完时,可以将缓存中存有的已回收的资源编号按照被回收的先后顺序再重新分配给新创建的IO QP。
通过上述的资源循环回收分配机制,对NVME设备中被删除的队列的编号以及其资源进行回收,回收后可以将其编号及资源分配给后续新创建的队列,达到循环利用资源的目的。
由以上描述可知,本申请实施例提供了多NVME设备下的队列存储资源动态共享流程,通过建立资源编号分配管理、资源循环回收分配的机制,以及设备ID、设备队列ID和资源编号绑定策略,可以在有限存储资源下对虚拟设备中的IO QP进行有效管理,从而可以灵活实现存储业务及功能。
基于上述图3所示流程,以下结合图4给出具体应用场景示例流程,该应用场景为多NVME设备需求下实现128个虚拟NVME设备、1024对IO QP的存储命令数据交互场景。
参见图4,该执行指令方法包括如下流程:
步骤S401:基于每对IO QP需要的资源量,将能满足128个虚拟NVME设备、1024对IOQP场景规模的存储资源总量,平均分成1024份。
步骤S402:建立基于单位IO QP存储资源(即,IO QP所属资源)的编号机制。将1024份IO QP所属资源进行编号管理,编号为0-1023,每一个编号对应一份IO QP存储资源。
步骤S403:主机根据128个虚拟NVME设备呈现的IO能力,对每个NVME设备创建8个IO QP,共1024个QP,编号按照创建顺序编为QP0到QP1023。
在本示例中,为了描述方便,对每个NVME设备的IO QP数量进行了平均设置。在实际操作中,也可以基于每个NVME设备的业务能力和需求,为不同NVME设备创建不同数量的IO QP,以实现不同的业务需求。本申请对此不作限制。
步骤S404:对128个NVME设备进行编号,设备ID为0到127,对于NVME设备的每个IOQP,在NVME协议里都有其对应的QP ID,QP ID设置为0到7,则每个具体的IO QP都可以与资源编号对应,例如,设备5的QP3,可以映射到资源编号32。
在一个可能的实现方式中,可以构建资源编号、设备ID与QP ID之间对应关系的映射表。
步骤S405:根据资源编号0-1023与设备ID+QP ID之间的相互映射来控制实现主机与128个NVME设备之间的存储命令及数据的交互。具体实现为:根据当前指令所属的设备ID(0-127)+QP ID(0-7)查找映射表,查到其对应的资源编号,获取资源编号中对应的该QP ID对应的存储资源信息,包括:SQ的基地址信息、SQ的队列深度信息、SQ的门铃信息、CQ的基地址信息、CQ的队列深度信息、CQ的门铃信息、CQ的中断向量信息等。
例如,当128个NVME设备中的设备5的IO QP 3收到主机发过来的SQ Doorbell时,则根据设备和队列“5+3”的编号能从映射表中查找到其对应的资源编号为32,然后将资源编号32对应的SQ基地址信息读出,根据该SQ基地址信息从主机中将设备5的QP 3的SQEntry命令读回用户侧,完成后续的SQ Entry的命令解析执行及存储数据搬运等操作。
步骤S406:对于128个NVME设备对应的1024对IO QP中的任何一个IO QP,当其被删除时,则将其对应的资源编号进行回收,可以将编号存放到硬件缓存中。例如,若要删除设备3的IO QP6,且其对应的资源编号为10,则将10这个编号存到FIFO(First Input FirstOutput,指先进先出)缓存中。
步骤S407:当1024个资源编号全部被分配完成时,若要新创建IO QP,则可以将FIFO缓存中最先放进去的编号10读出进行重新分配。
本申请实施例通过建立资源编号分配管理以及循环回收分配机制,以及设备ID、队列ID和资源编号绑定策略,实现了多NVME设备下的队列存储资源动态共享流程。同时,本申请实施例可以以有限存储资源实现更多的NVME虚拟设备,对各NVME设备内队列资源的灵活分配也可以使得NVME存储系统支持更多的存储业务,较好地提高了存储系统的灵活性,可以灵活支持不同IO能力的NVME设备,灵活管理所有设备的创建、工作及消亡。
基于相似的发明构思,本申请实施例还提供一种执行指令系统,该系统包括:服务器和至少一个虚拟设备(对应于上述的NVME设备),其中,该至少一个虚拟设备包括执行指令装置。在实际操作中,执行指令装置可以设置于虚拟设备中,也可以设置于虚拟设备之外。
图5是该系统的结构框图,如图5所示,该系统1示出了:执行指令装置10、服务器20以及虚拟设备30(图5中示出为一个虚拟设备),在该图中,执行指令装置设置于虚拟设备之外。
在一种可能的实现方式中,为了实现多种存储业务,虚拟设备可以是多个,各虚拟设备分别对应于至少一个队列。
图6是根据本申请实施例的执行指令装置10的结构框图,如图6所示,该执行指令装置10包括:请求获取单元101、地址确定单元102、指令获取单元103和执行单元104,其中:
请求获取单元101,用于获取目标队列中的指令获取请求,所述指令获取请求用于指示获取目标指令。
地址确定单元102,用于基于所述指令获取请求,根据预先设置的映射关系,确定与所述目标队列对应的指令获取地址,所述映射关系指示上述目标队列所在的队列信息与指令获取地址的对应关系。
指令获取单元103,用于根据所述指令获取地址获取所述目标指令。
执行单元104,用于根据所述目标指令执行与所述目标指令相应的操作。
本申请实施例在请求获取单元101获取目标队列的指令获取请求后,地址确定单元102根据映射关系,确定与目标队列对应的指令获取地址,指令获取单元103根据指令获取地址获取目标指令,随后执行单元104执行该目标指令,如此,通过预先设置的映射关系,可以有效管理队列及其所属资源,实现在有限存储资源下对虚拟设备的有效管理,可以较好地执行存储业务指令,实现多种存储业务的需求。
在一个可能的实现方式中,上述装置还包括:队列构建单元、存储空间划分单元和分配单元,其中:
队列构建单元,用于根据业务需求构建至少一个队列;
存储空间划分单元,用于将存储空间划分为与所述至少一个队列相同数量的子存储空间;
分配单元,用于将各子存储空间分别分配给相应的队列,其中,所述子存储空间至少用于存储指令获取地址、指令结果存储地址。
在一个可能的实现方式中,上述装置还包括:映射关系设置单元,该映射关系设置单元包括:对应关系获取模块和映射关系设置模块,其中:
对应关系获取模块,用于获取队列信息及其子存储空间信息的对应关系;
映射关系设置模块,用于根据获取的对应关系设置所述映射关系。
在一个实施例中,上述装置还包括:执行结果发送单元,用于将上述目标指令的执行结果发送至与子存储空间中的指令结果存储地址相应的位置。
在一个可能的实现方式中,上述装置还包括:存储空间释放单元,用于响应于队列被删除,释放该队列的子存储空间。
本申请实施例中的执行指令装置10可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的指令执行装置10能够实现图1、图3-图4的方法实施例中实现的各个过程,并达到相同的技术效果,为避免重复,这里不再赘述。
图7是上述服务器20的结构框图,如图7所示,该服务器20包括:请求发送单元201,用于将指令获取请求发送至虚拟设备的目标队列,所述指令获取请求用于指示获取目标指令,以便于虚拟设备基于预先设置的映射关系获取所述目标指令,所述映射关系指示所述目标队列所在的队列信息与指令获取地址的对应关系。
在一个实施例中,上述映射关系还指示所述目标队列所在的队列信息与指令结果存储地址的对应关系,所述服务器还包括:执行结果接收单元和执行结果发送单元,其中:
执行结果接收单元,用于接收来自所述目标队列的所述目标指令的执行结果;
执行结果发送单元,用于基于所述映射关系,将所述目标指令的执行结果发送至与所述指令结果存储地址相应的存储空间。
在实际操作中,多NVME设备场景下每个NVME设备的控制器是独立存储的,即每个NVME设备需占用独立完整的存储资源,来实现其与主机之间的存储流程交互,具体流程包括:NVME设备初始化、NVME ADMIN流程以及NVME IO流程等。以下结合图8和图9来详细描述本申请实施例的指令执行系统的工作原理。
图8是根据本申请实施例的指令执行系统的工作原理图,如图8所示,该示例系统包括:主机和用户存储控制系统,其中,该主机具有上述服务器20的功能,用户存储控制系统具有上述执行指令装置10的功能。用户存储控制系统包括:命令响应及处理模块和队列资源动态管理模块。
参见图8,该示例系统的工作原理包括:步骤1-3的NVME ADMIN流程和步骤4-6的NVME IO流程,以下描述各步骤。
步骤1:主机发送ADMIN(管理)队列的消息,即ADMIN门铃(Doorbell),通过PCIE+DMA(Direct Memory Access,直接内存访问)模块,进入用户存储控制系统内的命令响应及处理模块。
步骤2:命令响应及处理模块接收ADMIN门铃,该ADMIN门铃可以理解为ADMIN命令获取请求。命令响应及处理模块将对应队列的ADMIN命令获取请求发送给PCIE+DMA模块,由PCIE+DMA模块从主机取回ADMIN命令数据。
步骤3:取回的ADMIN命令进入命令响应及处理模块,由命令响应及处理模块进行解析,并通知队列资源动态管理模块进行QP硬件资源的编号、分配、回收等动态管理。
步骤4:主机发送IO QP队列的消息,即IO门铃(Doorbell),通过PCIE+DMA模块,进入用户存储控制系统内的命令响应及处理模块。
步骤5:命令响应及处理模块将对应队列的IO命令获取请求发送给PCIE+DMA模块,由PCIE+DMA模块从主机取回IO命令数据。
步骤6:取回的IO命令进入命令响应及处理模块,命令响应及处理模块与队列资源动态管理模块进行交互,实现QP资源编号与设备ID+设备QP ID之间的映射,进而实现用户存储控制系统与主机之间的存储IO命令交互。
在以上步骤中,在NVME协议里,ADMIN命令主要用来进行NVME设备对主机的能力呈现以及NVME设备队列的创建等;而IO命令主要用来实现主机和NVME设备之间的存储数据读写功能等。
图9是基于图8所示的用户存储控制系统的工作原理示意图,参见图9,图8中的命令响应及处理模块对应于:队列命令处理单元和队列消息响应单元,图8中的队列资源动态管理对应于:队列编号映射管理组件、队列编号分配管理组件和队列资源回收控制单元,以下描述各部分之间的工作原理。
步骤1:主机通过PCIE+DMA组件(即,上述的PCIE+DMA模块)对用户存储控制系统中的各个NVME控制器(具有上述图8的命令响应及处理模块和队列资源动态管理模块的功能)进行初始化,并建立多个QP(即,IO QP),包括存储提交队列(SQ)以及存储完成队列(CQ)。在创建好QP后,将各个QP对应的Doorbell发给用户存储控制系统里的各个NVME控制器,进入到对应的NVME控制器的队列消息响应单元。
步骤2:当队列消息响应单元收到新的队列消息时,即可通过PCIE+DMA组件向主机(HOST,图中未示出)发起命令的获取,并通过PCIE+DMA组件将命令从HOST搬回控制器内的队列命令处理单元,同时通知队列编号分配管理组件。
步骤3:通过队列编号分配管理组件,给每一个创建好的QP赋予对应的QP编号。例如,创建1024个QP则对应编号0-1023,每个编号对应唯一的QP,即,唯一的SQ和CQ;并且,在创建QP时,同时在队列编号映射管理组件中创建QP资源编号与设备ID+设备QP ID之间的映射表及反映射表。
在具体实施时,可以为每一个QP设计一个对应的队列执行标志位寄存器,当QP处于命令执行状态时,可将对应的标志位置设置1。
步骤4:队列命令处理单元根据QP的队列执行标志位寄存器以及QP资源编号与设备ID+设备QP ID之间的映射表及反映射表,对具体命令进行QP信息资源的缓存及查找。例如,对各个SQ的基地址进行缓存,当需要对主机进行IO命令(SQ entry)的获取时,可以从对应的QP资源缓存中的SQ信息缓存里取出该SQ的基地址,从而能从主机内对应的地址取出对应的命令。同时,可以对各个CQ的基地址进行缓存,当需要将命令的完成情况(CQ entry)发给主机时,从对应的QP资源缓存中的CQ信息缓存里取出该CQ的基地址,就可以将CQ entry发送到主机对应的地址。
步骤5:当队列命令处理单元解析到删除QP的ADMIN命令时,由队列命令处理单元通知队列资源回收控制单元对该QP的所有存储资源进行清理清零处理,回收这份资源,以便于后续的重新利用。
本申请实施例采用循环回收利用QP存储资源机制,由队列资源回收控制单元实现,该单元进行编号回收缓存,将该编号存放到缓存中。例如,当所有1024个编号都被队列编号分配管理组件分配完时,若再有新的QP创建,则从编号回收缓存中取出编号,将该编号和对应的资源分配给新创建的QP,从而该新创建的QP能进行正常的存储业务及功能。
可选的,如图10所示,本申请实施例还提供一种电子设备1000,包括处理器1010和存储器1020,在存储器1020上存储有可在所述处理器1010上运行的程序或指令,例如,该电子设备1000为终端时,该程序或指令被处理器1010执行时实现上述指令执行方法实施例的各个过程,且能达到相同的技术效果。为避免重复,这里不再赘述。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述执行指令方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
本申请实施例还提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述指令执行方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
进一步地,本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现上述指令执行方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限,按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (15)

1.一种执行指令的方法,所述方法应用于虚拟设备,其特征在于,包括:
获取目标队列中的指令获取请求,所述指令获取请求用于指示获取目标指令;
基于所述指令获取请求,根据预先设置的映射关系,确定与所述目标队列对应的指令获取地址,所述映射关系指示所述目标队列所在的队列信息与指令获取地址的对应关系;
根据所述指令获取地址获取所述目标指令;
根据所述目标指令执行与所述目标指令相应的操作。
2.根据权利要求1所述的方法,其特征在于,在获取目标队列中的指令获取请求之前,所述方法还包括:
根据业务需求构建至少一个队列;
将存储空间划分为与所述至少一个队列相同数量的子存储空间;
将各子存储空间分别分配给相应的队列,其中,所述子存储空间至少用于存储指令获取地址、指令结果存储地址。
3.根据权利要求2所述的方法,其特征在于,通过如下方式设置所述映射关系:
获取队列信息及其子存储空间信息的对应关系;
根据获取的对应关系设置所述映射关系。
4.根据权利要求2所述的方法,其特征在于,将各子存储空间分别分配给相应的队列之后,所述方法还包括:
响应于队列被删除,释放该队列的子存储空间。
5.根据权利要求2所述的方法,其特征在于,根据所述目标指令执行与所述目标指令相应的操作之后,所述方法还包括:
将所述目标指令的执行结果发送至与所述指令结果存储地址相应的存储空间。
6.一种执行指令的方法,所述方法应用于服务器,其特征在于,包括:
将指令获取请求发送至虚拟设备的目标队列,所述指令获取请求用于指示获取目标指令,以便于虚拟设备基于预先设置的映射关系获取所述目标指令,所述映射关系指示所述目标队列所在的队列信息与指令获取地址的对应关系。
7.根据权利要求6所述的方法,其特征在于,所述映射关系还指示所述目标队列所在的队列信息与指令结果存储地址的对应关系,所述方法还包括:
接收来自所述目标队列的所述目标指令的执行结果;
基于所述映射关系,将所述目标指令的执行结果发送至与所述指令结果存储地址相应的存储空间。
8.一种执行指令的装置,其特征在于,所述装置包括:
请求获取单元,用于获取目标队列中的指令获取请求,所述指令获取请求用于指示获取目标指令;
地址确定单元,用于基于所述指令获取请求,根据预先设置的映射关系,确定与所述目标队列对应的指令获取地址,所述映射关系指示所述目标队列所在的队列信息与指令获取地址的对应关系;
指令获取单元,用于根据所述指令获取地址获取所述目标指令;
指令执行单元,用于根据所述目标指令执行与所述目标指令相应的操作。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
队列构建单元,用于根据业务需求构建至少一个队列;
存储空间划分单元,用于将存储空间划分为与所述至少一个队列相同数量的子存储空间;
分配单元,用于将各子存储空间分别分配给相应的队列,其中,所述子存储空间至少用于存储指令获取地址、指令结果存储地址。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:映射关系设置单元,
所述映射关系设置单元包括:
对应关系获取模块,用于获取队列信息及其子存储空间信息的对应关系;
映射关系设置模块,用于根据获取的对应关系设置所述映射关系。
11.一种服务器,其特征在于,包括:
请求发送单元,用于将指令获取请求发送至虚拟设备的目标队列,所述指令获取请求用于指示获取目标指令,以便于虚拟设备基于预先设置的映射关系获取所述目标指令,所述映射关系指示所述目标队列所在的队列信息与指令获取地址的对应关系。
12.根据权利要求11所述的服务器,其特征在于,所述映射关系还指示所述目标队列所在的队列信息与指令结果存储地址的对应关系,所述服务器还包括:
执行结果接收单元,用于接收来自所述目标队列的所述目标指令的执行结果;
执行结果发送单元,用于基于所述映射关系,将所述目标指令的执行结果发送至与所述指令结果存储地址相应的存储空间。
13.一种执行指令的系统,其特征在于,所述系统包括:如权利要求11或12所述的服务器,以及至少一个虚拟设备,其中,所述至少一个虚拟设备包括如权利要求8-10中任一项所述的执行指令的装置。
14.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器运行时执行如权利要求1-5中任一项所述的方法,或6-7中任一项所述方法。
15.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器运行时执行如权利要求1-5中任一项所述的方法,或6-7中任一项所述方法。
CN202211037817.7A 2022-08-26 2022-08-26 执行指令的方法、装置、服务器及系统 Pending CN117666925A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211037817.7A CN117666925A (zh) 2022-08-26 2022-08-26 执行指令的方法、装置、服务器及系统
PCT/CN2023/114014 WO2024041481A1 (zh) 2022-08-26 2023-08-21 执行指令的方法、装置、服务器及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211037817.7A CN117666925A (zh) 2022-08-26 2022-08-26 执行指令的方法、装置、服务器及系统

Publications (1)

Publication Number Publication Date
CN117666925A true CN117666925A (zh) 2024-03-08

Family

ID=90012484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211037817.7A Pending CN117666925A (zh) 2022-08-26 2022-08-26 执行指令的方法、装置、服务器及系统

Country Status (2)

Country Link
CN (1) CN117666925A (zh)
WO (1) WO2024041481A1 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10114675B2 (en) * 2015-03-31 2018-10-30 Toshiba Memory Corporation Apparatus and method of managing shared resources in achieving IO virtualization in a storage device
JPWO2017203645A1 (ja) * 2016-05-26 2018-11-22 株式会社日立製作所 計算機システム、及び、データ制御方法
CN108628775B (zh) * 2017-03-22 2021-02-12 华为技术有限公司 一种资源管理的方法和装置
KR20190108038A (ko) * 2018-03-13 2019-09-23 삼성전자주식회사 가상 환경에서의 물리적 스토리지 장치 자원을 동적으로 할당하는 메커니즘
CN111880750A (zh) * 2020-08-13 2020-11-03 腾讯科技(深圳)有限公司 磁盘读写资源的分配方法、装置、设备及存储介质
CN114281252A (zh) * 2021-12-10 2022-04-05 阿里巴巴(中国)有限公司 非易失性高速传输总线NVMe设备的虚拟化方法及设备

Also Published As

Publication number Publication date
WO2024041481A1 (zh) 2024-02-29

Similar Documents

Publication Publication Date Title
Zhang et al. {FlashShare}: Punching Through Server Storage Stack from Kernel to Firmware for {Ultra-Low} Latency {SSDs}
JP5510556B2 (ja) 仮想マシンのストレージスペースおよび物理ホストを管理するための方法およびシステム
US5313638A (en) Method using semaphores for synchronizing communication between programs or processes resident in a computer system
KR100733852B1 (ko) 계산기 시스템
US20150163172A1 (en) Server switch integration in a virtualized system
CN111431757B (zh) 虚拟网络的流量采集方法及装置
WO2016047814A1 (ko) 클라우드 api 키를 이용한 자원 할당 방법 및 이를 위한 장치
CN112527494A (zh) 信息处理设备和方法以及非暂态计算机可读记录介质
US9424114B2 (en) Input/output (I/O) processing via a page fault doorbell mechanism
WO2023030178A1 (zh) 一种基于用户态协议栈的通信方法及相应装置
CN116774933A (zh) 存储设备的虚拟化处理方法、桥接设备、系统及介质
CN115408108A (zh) 一种云环境下的i/o卸载方法、设备、系统及存储介质
CN106598696B (zh) 一种虚拟机之间数据交互的方法及装置
CN115933975A (zh) 数据处理方法、计算设备及计算机系统
WO2017166997A1 (zh) 智能网卡侧的异常处理方法和装置
CN113037649B (zh) 网络中断数据包的收发方法和装置、电子设备和存储介质
CN113986137A (zh) 存储装置和存储系统
CN117834561A (zh) 基于spdk的网络i/o处理方法以及装置
CN110489356B (zh) 信息处理方法、装置、电子设备及存储介质
CN117666925A (zh) 执行指令的方法、装置、服务器及系统
CN113268356B (zh) 基于LINUX系统的多GPU板卡bounding的系统、方法及介质
CN114726657A (zh) 中断管理和数据收发管理的方法、装置及智能网卡
CN110780817B (zh) 数据记录方法和装置、存储介质及电子装置
KR20150048028A (ko) 데이터 전송 관리 방법
CN117573041B (zh) 一种改进vhost-scsi提升虚拟化存储性能的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication