CN109597786B - 主机与硬件加速模块的交互方法、硬件加速设备及介质 - Google Patents
主机与硬件加速模块的交互方法、硬件加速设备及介质 Download PDFInfo
- Publication number
- CN109597786B CN109597786B CN201811479224.XA CN201811479224A CN109597786B CN 109597786 B CN109597786 B CN 109597786B CN 201811479224 A CN201811479224 A CN 201811479224A CN 109597786 B CN109597786 B CN 109597786B
- Authority
- CN
- China
- Prior art keywords
- command
- hardware acceleration
- host
- module
- video
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种主机与硬件加速模块的交互方法、硬件加速设备及介质,所述交互方法包括:响应主机的硬件加速命令;根据PCIe总线的非挥发性设备的接口标准NVMe协议,与所述主机交互硬件加速数据。本发明有效降低主机与硬件加速模块之间通信方式的复杂度,有效降低在主机中升级或增加硬件加速模块过程的复杂度和代价。
Description
技术领域
本发明涉及计算机领域,特别是涉及一种主机与硬件加速模块的交互方法、硬件加速设备及介质。
背景技术
硬件加速模块是指为主机提供计算加速的模块。硬件加速模块可以是附加在其他设备如存储设备中,也可以是单独的专门提供加速功能的设备。例如,在视频编解码技术中,如果使用主机的CPU(Central Processing Unit,中央处理器)用纯软件的方式来做编解码,编解码的容量有限;为了增加容量或减少视频编解码对CPU的资源消耗,可以将视频编解码的部分或全部功能用硬件来实现,即具有硬件加速功能的视频编解码器;其具体的产品可以是独立的视频编解码卡;也可以是内置于其他设备(如GPU)中的视频编码模块和/或视频解码模块。其中GPU为图形处理器,英语全称为Graphics Processing Unit。
现有硬件加速模块中,主机与硬件加速模块之间的通信,需要通过厂家自定义的专用通信协议,或者公开标准的OpenCL(Open Computing Language,开放运算语言)架构。但是为了支持这些硬件加速模块需要专用的设备驱动程序;如果采用公开标准的架构,也需要能够支持OpenCL的设备驱动程序;因此,在升级主机中硬件加速模块的过程中,往往需要增加或修改设备驱动程序,就意味着要重新编译操作系统内核,重新安装操作系统,并安装库函数和应用软件,因此这种升级方式比较复杂,代价比较高。
针对现有技术中,主机与硬件加速模块之间通信方式复杂、增加或升级硬件加速模块的方式比较复杂、升级成本较高的问题,本领域未给出有效的解决方案。
发明内容
为了克服上述缺陷,本发明要解决的技术问题是提供一种主机与硬件加速模块的交互方法、硬件加速设备及介质,用以至少解决主机与硬件加速模块之间通信方式复杂的问题。
为解决上述技术问题,本发明实施例中的一种主机与硬件加速模块的交互方法,包括:
响应主机的硬件加速命令;
根据PCIe总线的非挥发性设备的接口标准NVMe协议,与所述主机交互硬件加速数据。
为解决上述技术问题,本发明实施例中的一种硬件加速设备包括存储器和处理器,所述存储器存储有交互计算机程序,所述处理器执行所述计算机程序,以实现如上所述方法的步骤。
为解决上述技术问题,本发明实施例中的一种计算机可读存储介质存储有交互计算机程序,所述计算机程序可被至少一个处理器执行,以实现如上所述方法的步骤。
本发明实施例有益效果如下:
上述的各个实施例根据NVMe协议与所述主机交互硬件加速数据,从而有效降低主机与硬件加速模块之间通信方式的复杂度,并且在升级主机中硬件加速模块的过程中,不需要增加或修改设备驱动程序,更不需要重新编译操作系统内核,以及不需重新安装操作系统、库函数和应用软件,从而在增加或升级硬件加速模块的的过程中,有效降低其复杂度和代价。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明实施例中一种主机与硬件加速模块的交互方法的流程图;
图2是本发明实施例中主机与解码器的交互流程;
图3是本发明实施例中主机与编码器的交互流程。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
使用用于区分元件的诸如“第一”、“第二”等前缀仅为了有利于本发明的说明,其本身没有特定的意义。
实施例一
本发明实施例提供一种主机与硬件加速模块的交互方法,如图1所示,所述方法包括:
S101,响应主机的硬件加速命令;
S102,根据PCIe总线的非挥发性设备的接口标准NVMe协议,与所述主机交互硬件加速数据。
其中,硬件加速模块可以可以附加在其他设备中,也可以是单独的专门提供硬件加速功能的设备,例如视频编码模块和/或视频解码模块;当然在本发明实施例中硬件加速模块可以简称为模块。
在本发明实施例中根据NVMe协议与所述主机交互硬件加速数据,从而有效降低主机与硬件加速模块之间通信方式的复杂度,并且在升级主机中的硬件加速模块的过程中,不需要增加或修改设备驱动程序,更不需要重新编译操作系统内核,以及不需重新安装操作系统、库函数和应用软件,从而在增加或升级硬件加速模块的的过程中,有效降低其复杂度和代价。
在上述实施例的基础上,下面给出几个具体及可选实施方式,用以细化和优化本发明实施例,以使本发明实施例的方案的实施更方便,准确。需要说明的是,在不冲突的情况下,以下实施方式可以互相任意组合。
在一些实施方式中,所述响应主机的硬件加速命令之前,可选地包括:通过所述NVMe协议的第一厂家自定义字段或命令,接收所述主机的硬件加速命令。
在一些实施方式中,所述根据PCIe总线的非挥发性设备的接口标准NVMe协议,与所述主机交互硬件加速数据,包括:
在所述硬件加速命令为硬件加速模块的识别命令时,根据所述NVMe协议,向所述主机返回硬件加速模块中硬件加速模块的指示信息;
在所述硬件加速命令为硬件加速模块的控制命令时,根据所述NVMe协议,执行与所述控制命令对应的管理操作;
在所述硬件加速命令为硬件加速模块的交互命令时,根据所述NVMe协议,按照所述交互命令,与所述主机进行读写交互操作。
在一些实施方式中,通过识别命令对硬件加速模块进行识别的过程中,所述根据所述NVMe协议,向所述主机返回硬件加速模块中硬件加速模块的指示信息,可以包括:将所述指示信息携带在所述NVMe接口协议的第二厂家自定义字段中返回给所述主机。
其中,将所述指示信息携带在所述NVMe接口协议的厂家自定义字段中,可以包括:将所述指示信息携带在所述NVMe接口协议的数据结构的厂家自定义字段中;所述数据结构为所述硬件加速模块隶属的控制器或命名空间的能力和状态的数据结构;所述指示信息用于指示所述主机根据指示信息进行资源分配。所述指示信息包括视频编码模块和/或视频解码模块的能力及状态信息。
详细地,对硬件加速模块的识别:在NVMe协议中,设备上可以有多个NVMe控制器(Controller),及多个命名空间(Namespace,用来区分不同的存储盘)。在本发明实施例中,硬件加速模块可以直接隶属于控制器,也可以隶属于Namespace。
主机通过Identify命令来询问设备有关控制器及Namespace的能力和状态等信息。设备在回复Identify命令的时候,会根据主机命令中CNS(Controller or NamespaceStructure)的要求,返回一个描述控制器或Namespace的能力和状态的数据结构。
在NVMe一些版本中,描述控制器的数据结构包含以下几个部分:
在NVMe一些版本中,描述Namespace的数据结构包含以下几个部分:
可以看到在对主机Identify命令的回复中,NVMe标准留出了一些厂家自定义的字段(Vendor-Specific)。在本发明实施例中,设备通过这些自定义字段来表明设备中含有某种或某些硬件加速模块,以及这种或这些硬件加速模块的能力和状态。
在系统中的NVMe设备,可能是存储设备如固态硬盘,也可以是支持某种或某些硬件加速模块的设备(也可以是支持某种硬件加速模块的固态硬盘)。主机可以通过这些厂家自定义字段,来判断设备是否支持某种或某些硬件加速模块,以及这些硬件加速的能力。
例如,以下以NVMe 1.3接口形式的视频编码模块和/或视频解码模块为例子,描述识别视频编码模块和/或视频解码模块的过程。
在本例中,设备中最多有一个NVMe控制器,所有的视频编码模块和/或视频解码模块都直接隶属于控制器(而不是隶属于Namespace),且每个控制器有最多16个视频编码模块和/或视频解码模块。每个编解码模块要么做编码,要么做解码。每个模块可以激活多个编码或解码实例。每个模块可以支持一种或多种视频编码格式。
在Identify Controller Data Structure中,对厂家自定义字段定义如下:
每个模块的属性一共32个字节,定义如下:
主机可以通过NVMe协议的驱动程序向设备发出Identify Controller命令,然后从设备返回的数据中得到有关视频编码模块和/或视频解码模块的数量、能力等信息,主机可以根据这些信息做资源分配等工作。
在一些实施方式中,可以控制硬件加速模块用以进行相应的管理操作。在NVMe协议中,主机通过管理命令(Admin Command)来控制设备。在NVMe一些版本的管理命令集中,操作码(Opcode)在C0h–FFh范围内的命令是厂家自定义的命令(例如厂家自定义的管理命令)。在本发明实施例中,主机可以通过厂家自定义的管理命令来控制硬件加速模块。比如可以对硬件加速功能进行初始化、改变配置或关闭等操作。
例如,以NVMe 1.3接口形式的视频编码模块和/或视频解码模块为例,描述控制及查询视频编码模块和/或视频解码模块的流程。
其中,利用厂家自定义操作码(opcode),定义如下的管理命令来控制及查询视频编码模块和/或视频解码模块。
一、厂家自定义命令Xcoder-Open:
Xcoder-Open命令在指定的模块上分配并初始化一个编码或解码实例,命令成功完成后返回一个编码或解码实例标识符(Instance ID),如果有错则返回错误状态码。此命令沿用NVMe命令的基本格式。主机发送命令到“管理命令提交队列(Admin SubmissionQueue)”里,而设备在完成命令后将完成信息发送到“管理命令完成队列(AdminCompletion Queue)”里。
其中,管理命令提交队列中的记录格式(Submission Queue Entry):
管理命令提交队列中的Xcoder-Open命令记录的Data Pointer(DPTR)字段(字节范围39:24)在此命令中指向编码或解码参数。
管理命令提交队列中的Xcoder-Open命令记录的CDW10字段(字节范围43:40)定义如下:
比特位置 | 含义 |
31:24 | 模块标识符(Module ID) |
23:16 | 保留 |
15:00 | 编解码参数的长度 |
其中,管理命令完成队列中的记录格式(Completion Queue Entry):
管理命令完成队列中的Xcoder-Open命令记录的DW0字段(字节范围3:0)定义如下:
比特位置 | 含义 |
31:24 | 编码参数有关的错误状态码 |
23:16 | 编解码通用的错误状态码 |
15:00 | 编码或解码实例标识符(Instance ID) |
二、厂家自定义命令Xcoder-Close:
Xcoder-Close命令在指定的模块上关闭一个指定的编码或解码实例,命令完成后返回状态码。此命令沿用NVMe命令的基本格式。主机发送命令到“管理命令提交队列(AdminSubmission Queue)”里,而设备在完成命令后将完成信息发送到“管理命令完成队列(Admin Completion Queue)”里。
其中,管理命令提交队列中的记录格式(Submission Queue Entry):
管理命令提交队列中的Xcoder-Close命令记录的CDW10字段(字节范围43:40)定义如下:
其中,管理命令完成队列中的记录格式(Completion Queue Entry):
管理命令完成队列中的Xcoder-Close命令记录的DW0字段(字节范围3:0)定义如下:
比特位置 | 含义 |
31:24 | 错误状态码 |
23:00 | 保留 |
三、厂家自定义命令Xcoder-Query:
Xcoder-Query命令查询一个指定的编解码模块的状态,命令完成后返回状态及一些统计信息。此命令沿用NVMe命令的基本格式。主机发送命令到“管理命令提交队列(AdminSubmission Queue)”里,而设备在完成命令后将完成信息发送到“管理命令完成队列(Admin Completion Queue)”里。
其中,管理命令提交队列中的记录格式(Submission Queue Entry):
管理命令提交队列中的Xcoder-Query命令记录的CDW10字段(字节范围43:40)定义如下:
比特位置 | 含义 |
31:24 | 模块标识符(Module ID) |
23:00 | 保留 |
管理命令完成队列中的记录格式(Completion Queue Entry):
管理命令完成队列中的Xcoder-Query命令记录的DW0字段(字节范围3:0)定义如下:
比特位置 | 含义 |
31:24 | 模块状态码 |
23:16 | 该模块的负载百分比 |
15:00 | 该模块上被激活的编码或解码实例的数量 |
四、厂家自定义命令Xcoder-Reconfig:
Xcoder-Reconfig命令重新配置一个编码或解码实例,命令完成后返回状态码。此命令沿用NVMe命令的基本格式。主机发送命令到“管理命令提交队列(Admin SubmissionQueue)”里,而设备在完成命令后将完成信息发送到“管理命令完成队列(AdminCompletion Queue)”里。
其中,管理命令提交队列中的记录格式(Submission Queue Entry):
管理命令提交队列中的Xcoder-Reconfig命令记录的Data Pointer(DPTR)字段(字节范围39:24)在此命令中指向编码或解码参数。
管理命令提交队列中的Xcoder-Reconfig命令记录的CDW10字段(字节范围43:40)定义如下:
比特位置 | 含义 |
31:24 | 模块标识符(Module ID) |
23:16 | 保留 |
15:00 | 编码或解码实例标识符(Instance ID) |
管理命令提交队列中的Xcoder-Reconfig命令记录的CDW11字段(字节范围47:44)定义如下:
比特位置 | 含义 |
31:16 | 保留 |
15:00 | 编解码参数的长度 |
其中,管理命令完成队列中的记录格式(Completion Queue Entry):
管理命令完成队列中的Xcoder-Reconfig命令记录的DW0字段(字节范围3:0)定义如下:
比特位置 | 含义 |
31:24 | 错误状态码 |
23:00 | 保留 |
当然,在一些实施方式中,所述硬件加速模块可以包括视频编码模块;所述根据所述NVMe协议,按照所述交互命令,与所述主机进行读写交互操作,可选地包括:
通过所述NVMe协议的第三厂家自定义字段或命令,接收所述主机逐帧传递过来的原始视频;
将所述原始视频进行编码得到编码后的视频;
通过所述NVMe协议的第四厂家自定义字段或命令,将编码后的视频逐帧传输给所述主机。
在一些实施方式中,所述硬件加速模块包括视频解码模块;所述根据所述NVMe协议,按照所述交互命令,与所述主机进行读写交互操作,可选地包括:
通过所述NVMe协议的第五厂家自定义字段或命令,接收所述主机逐帧传递过来的编码视频;
将所述编码视频进行解码得到解码后的视频;
通过所述NVMe协议的第六厂家自定义字段或命令,将解码后的视频逐帧传输给所述主机。
详细地,在主机和硬件加速模块之间的数据交换过程,在NVMe协议中,主机通过NVM命令(也即IO命令)来向设备写入数据或从设备读出数据。在NVMe一些版本的NVM命令集中,操作码(Opcode)在80h–FFh范围内的命令是厂家自定义的IO命令。在本发明实施例中,主机可以通过自定义的IO命令或NVMe的标准读写命令与设备交换数据。
数据交换需要考虑NVMe协议对命令的执行次序的规定。NVMe协议不保证同时进行的命令的次序,也就是说如果主机同时给设备下达多个命令,这些命令并不一定按照下达顺序来执行。所以如果主机上的应用与设备之间数据交换需要顺序进行,则可以在每次命令得到设备的回复之后再发下一条命令;否则,主机上的应用可以一次向设备下发多个命令。
例如,以NVMe 1.3接口形式的视频编码模块和/或视频解码模块为例,描述主机与视频编码模块和/或视频解码模块的数据交换。
利用厂家自定义操作码(opcode),定义如下的NVM命令来进行主机与视频编码模块和/或视频解码模块的数据交换。
一、厂家自定义命令Xcoder-Write:
Xcoder-Write命令传送一个压缩视频数据包到一个解码实例,或传送一个YUV视频数据包到一个编码实例;命令完成后返回一些状态信息。此命令沿用NVMe命令的基本格式。主机发送命令到“IO命令提交队列(IO Submission Queue)”里,而设备在完成命令后将完成信息发送到“IO命令完成队列(IO Completion Queue)”里。
其中,IO命令提交队列中的记录格式(Submission Queue Entry):
IO命令提交队列中的Xcoder-Write命令记录的Data Pointer(DPTR)字段(字节范围39:24)在此命令中指向主机内存中的数据地址。
IO命令提交队列中的Xcoder-Write命令记录的CDW10字段(字节范围43:40)定义如下:
IO命令提交队列中的Xcoder-Write命令记录的CDW11字段(字节范围47:44)定义如下:
比特位置 | 含义 |
31:00 | 视频数据的长度 |
IO命令提交队列中的Xcoder-Write命令记录的CDW12字段(字节范围51:48)定义如下:
比特位置 | 含义 |
31:16 | 图像的宽度 |
15:0 | 图像的高度 |
其中,管理命令完成队列中的记录格式(Completion Queue Entry):
管理命令完成队列中的Xcoder-Write命令记录的DW0字段(字节范围3:0)定义如下:
比特位置 | 含义 |
31:28 | 保留 |
27:24 | 帧序号(Frame Index),仅对编码实例有效 |
23:00 | 缓存中剩余空间长度,仅对解码实例有效 |
二、厂家自定义命令Xcoder-Read:
Xcoder-Read命令从一个解码实例读出一帧YUV图像,或从一个编码实例读出一帧压缩图像;命令完成后返回一些状态信息。此命令沿用NVMe命令的基本格式。主机发送命令到“IO命令提交队列(IO Submission Queue)”里,而设备在完成命令后将完成信息发送到“IO命令完成队列(IO Completion Queue)”里。
其中,IO命令提交队列中的记录格式(Submission Queue Entry):
IO命令提交队列中的Xcoder-Read命令记录的Data Pointer(DPTR)字段(字节范围39:24)在此命令中指向主机内存中缓存的地址。
IO命令提交队列中的Xcoder-Read命令记录的CDW10字段(字节范围43:40)定义如下:
IO命令提交队列中的Xcoder-Read命令记录的CDW11字段(字节范围47:44)定义如下:
比特位置 | 含义 |
31:00 | 向主机传送的数据的最大长度 |
其中,IO命令完成队列中的记录格式(Completion Queue Entry):
IO命令完成队列中的Xcoder-Read命令记录的DW0字段(字节范围3:0)定义如下:
例如,基于本发明实施例的一个实施方式,主机与硬件加速模块(例如解码器)之间的解码流程如图2所示,可以包括:
步骤1,视频解码开始的时候,用Xcoder-Open命令分配并初始化一个解码实例;将压缩视频一帧一帧地用Xcoder-Write命令送给解码实例。
步骤2,判断是否还有视频帧需要发送给解码器;若否执行步骤6,若是执行步骤3。
步骤3,判断是否是最后一帧;若否执行步骤5,若是执行步骤4。
步骤4,设置end-of-stream标志。
步骤5,利用Xcoder-Write命令传送一个压缩视频帧给解码器。
步骤6,利用.Xcoder-Read命令,如果有解码出来的YUV帧,则从解码器读回每次送一帧压缩视频的时候都用Xcoder-Read命令从解码实例读出一帧解码出来的YUV视频帧。
步骤7,判断是否读回了最后一个解码视频帧,也即判断是否收到了end-of-stream标志,若是执行步骤8,若否执行步骤2;其中,最后传给解码实例的视频帧设置end-of-stream标志;
步骤8,如果读出来的YUV视频帧有end-of-stream标志,则用Xcoder-Close命令关闭视频解码实例。
又如,基于本发明实施例的一个实施方式,主机与硬件加速模块(例如编码器)之间的编码流程如图3所示,可以包括:
步骤1,视频编码开始的时候,用Xcoder-Open命令分配并初始化一个编码实例;
步骤2,判断是否还有视频帧需要发送给编码器;若否执行步骤6,若是执行步骤3。
步骤3,判断是否是最后一帧;若否执行步骤5,若是执行步骤4。
步骤4,设置end-of-stream标志。
步骤5,将YUV视频一帧一帧地用Xcoder-Write命令送给编码实例;
步骤6,每次送一帧YUV视频的时候都用Xcoder-Read命令从解码实例读出一帧编码码出来的压缩视频帧。
步骤7,判断是否收到最后一帧视频帧,也就是判断是否收到了最后传给编码实例的视频帧设置end-of-stream标志。若是执行步骤8,若否执行步骤2。
步骤8,如果读出来的压缩视频帧有end-of-stream标志,则用Xcoder-Close命令关闭视频编码码实例。
实施例二
本发明实施例基于实施例一提供一种硬件加速设备,所述设备包括存储器和处理器,所述存储器存储有交互计算机程序,所述处理器执行所述计算机程序,以实现如实施例一中任意一中实施方式所述方法的步骤。
实施例三
本发明实施例基于实施例一提供一种计算机可读存储介质,所述存储介质存储有交互计算机程序,所述计算机程序可被至少一个处理器执行,以实现如实施例一中任意一中实施方式所述方法的步骤。
其中,实施例二和实施例三在具体实现的过程中,其中的实施细节可以参阅实施例一,具有相应的技术效果。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (7)
1.一种主机与硬件加速模块的交互方法,其特征在于,所述方法包括:
响应主机的硬件加速命令;
根据PCIe总线的非挥发性设备的接口标准NVMe协议,与所述主机交互硬件加速数据;
所述根据PCIe总线的非挥发性设备的接口标准NVMe协议,与所述主机交互硬件加速数据,包括:
在所述硬件加速命令为硬件加速模块的识别命令时,根据所述NVMe协议,向所述主机返回硬件加速设备中硬件加速模块的指示信息;
在所述硬件加速命令为硬件加速模块的控制命令时,根据所述NVMe协议,执行与所述控制命令对应的管理操作;
在所述硬件加速命令为硬件加速模块的交互命令时,根据所述NVMe协议,按照所述交互命令,与所述主机进行读写交互操作;
所述硬件加速模块包括视频编码模块;所述根据所述NVMe协议,按照所述交互命令,与所述主机进行读写交互操作,包括:
通过所述NVMe协议的第三厂家自定义字段或命令,接收所述主机逐帧传递过来的原始视频;
将所述原始视频进行编码得到编码后的视频;
通过所述NVMe协议的第四厂家自定义字段或命令,将编码后的视频逐帧传输给所述主机;
所述硬件加速模块包括视频解码模块;所述根据所述NVMe协议,按照所述交互命令,与所述主机进行读写交互操作,包括:
通过所述NVMe协议的第五厂家自定义字段或命令,接收所述主机逐帧传递过来的编码视频;
将所述编码视频进行解码得到解码后的视频;
通过所述NVMe协议的第六厂家自定义字段或命令,将解码后的视频逐帧传输给所述主机。
2.如权利要求1所述的方法,其特征在于,所述响应主机的硬件加速命令之前,包括:
通过所述NVMe协议的第一厂家自定义字段或命令,接收所述主机的硬件加速命令。
3.如权利要求1所述的方法,其特征在于,所述根据所述NVMe协议,向所述主机返回硬件加速设备中硬件加速模块的指示信息,包括:
将所述指示信息携带在所述NVMe接口协议的第二厂家自定义字段中返回给所述主机。
4.如权利要求3所述的方法,其特征在于,将所述指示信息携带在所述NVMe接口协议的厂家自定义字段中,包括:
将所述指示信息携带在所述NVMe接口协议的数据结构的厂家自定义字段中;所述数据结构为所述硬件加速模块隶属的控制器或命名空间的能力和状态的数据结构;所述指示信息用于指示所述主机根据指示信息进行资源分配。
5.如权利要求4所述的方法,其特征在于,所述指示信息包括视频编码模块和/或视频解码模块的能力及状态信息。
6.一种硬件加速设备,其特征在于,所述设备包括存储器和处理器,所述存储器存储有交互计算机程序,所述处理器执行所述计算机程序,以实现如权利要求1-5中任意一项所述方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述存储介质存储有交互计算机程序,所述计算机程序可被至少一个处理器执行,以实现如权利要求1-5中任意一项所述方法的步骤。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811479224.XA CN109597786B (zh) | 2018-12-05 | 2018-12-05 | 主机与硬件加速模块的交互方法、硬件加速设备及介质 |
US16/415,759 US10860504B2 (en) | 2018-12-05 | 2019-05-17 | Peripheral device with embedded video codec functionality |
EP19215936.6A EP3663930A1 (en) | 2018-12-05 | 2019-12-13 | Peripheral device with embedded video codec functionality |
US17/100,435 US11422956B2 (en) | 2018-12-05 | 2020-11-20 | Peripheral device with embedded video codec functionality |
US17/852,350 US11868284B2 (en) | 2018-12-05 | 2022-06-28 | Peripheral device with embedded video codec functionality |
US18/408,000 US12222877B2 (en) | 2018-12-05 | 2024-01-09 | Peripheral device with embedded video codec functionality |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811479224.XA CN109597786B (zh) | 2018-12-05 | 2018-12-05 | 主机与硬件加速模块的交互方法、硬件加速设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109597786A CN109597786A (zh) | 2019-04-09 |
CN109597786B true CN109597786B (zh) | 2022-03-11 |
Family
ID=65961146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811479224.XA Active CN109597786B (zh) | 2018-12-05 | 2018-12-05 | 主机与硬件加速模块的交互方法、硬件加速设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109597786B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104683860A (zh) * | 2015-02-02 | 2015-06-03 | 北京神州天脉网络计算机有限公司 | 一种音视频多路并发解码加速卡及其解码加速方法 |
CN107690622A (zh) * | 2016-08-26 | 2018-02-13 | 华为技术有限公司 | 实现硬件加速处理的方法、设备和系统 |
CN107992436A (zh) * | 2016-10-26 | 2018-05-04 | 杭州华为数字技术有限公司 | 一种NVMe数据读写方法及NVMe设备 |
CN108829353A (zh) * | 2018-06-15 | 2018-11-16 | 郑州云海信息技术有限公司 | 一种基于NVMe的网络化存储系统及方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150317176A1 (en) * | 2014-05-02 | 2015-11-05 | Cavium, Inc. | Systems and methods for enabling value added services for extensible storage devices over a network via nvme controller |
US10055255B2 (en) * | 2016-04-14 | 2018-08-21 | International Business Machines Corporation | Performance optimization of hardware accelerators |
CN110770710B (zh) * | 2017-05-03 | 2023-09-05 | 艾德蒂克通信公司 | 用于控制数据加速的装置和方法 |
-
2018
- 2018-12-05 CN CN201811479224.XA patent/CN109597786B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104683860A (zh) * | 2015-02-02 | 2015-06-03 | 北京神州天脉网络计算机有限公司 | 一种音视频多路并发解码加速卡及其解码加速方法 |
CN107690622A (zh) * | 2016-08-26 | 2018-02-13 | 华为技术有限公司 | 实现硬件加速处理的方法、设备和系统 |
CN107992436A (zh) * | 2016-10-26 | 2018-05-04 | 杭州华为数字技术有限公司 | 一种NVMe数据读写方法及NVMe设备 |
CN108829353A (zh) * | 2018-06-15 | 2018-11-16 | 郑州云海信息技术有限公司 | 一种基于NVMe的网络化存储系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109597786A (zh) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10902411B2 (en) | Host-formatted select proximity payment system environment response | |
US8082374B2 (en) | Information processing apparatus, information processing system, method of processing information, and computer program | |
US8443120B2 (en) | Method for accessing multiple card slots and apparatus for the same | |
EP2846472B1 (en) | Method and system of communicating data in a near field communication environment | |
CN106951374B (zh) | 用于检查块页地址的方法及其装置 | |
CN113419845A (zh) | 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质 | |
EP2704017A2 (en) | Interface arbitration for a wired tag | |
US20180069603A1 (en) | Communicating via near field communications | |
CN109857553B (zh) | 内存管理方法及装置 | |
CN104216834A (zh) | 一种内存访问的方法、缓冲调度器和内存模块 | |
US8078771B2 (en) | Sending large command descriptor block (CDB) structures in serial attached SCSI (SAS) controller | |
CN109597786B (zh) | 主机与硬件加速模块的交互方法、硬件加速设备及介质 | |
CN115576612B (zh) | 外部设备适配方法、装置、智能终端及可读存储介质 | |
US20070005813A1 (en) | Peripheral device and method for interpreting redefined frame information structure | |
EP2073125A1 (en) | Apparatus and method for managing user memory of RFID tag | |
US20080256289A1 (en) | Memory apparatus to write and read data, and method thereof | |
CN114879988B (zh) | 一种在线升级方法、装置、计算机设备及存储介质 | |
CN110569933A (zh) | 一种智能卡管理装置及方法 | |
US6607138B2 (en) | Communication method of IC card reader/writer | |
US10642494B2 (en) | Method, electronic device and computer program product for data processing | |
KR20220036169A (ko) | 메모리 시스템 및 데이터 처리 시스템 | |
US11886706B2 (en) | Method for increasing the number of applications in a device having a limited memory | |
CN113067581B (zh) | 解码系统、解码方法、电子设备及存储介质 | |
CN116540935A (zh) | 固态硬盘外设管理系统、方法、固态硬盘控制器及固态硬盘 | |
US10061733B2 (en) | Peripheral interface chip and data transmission method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211210 Address after: 250100 room 2-302-131, building 7, North District, Shandong design creative industrial park, No. 868, Tangye West Road, Jinan area, free trade pilot zone, Jinan, Shandong Province Applicant after: Rongming Microelectronics (Jinan) Co.,Ltd. Address before: 266100 blue Silicon Valley entrepreneurship center, No. 1, Keji Road, Jimo District, Qingdao, Shandong Applicant before: QINGDAO RONGMING SEMICONDUCTOR Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |