CN113946370B - 驱动系统及信息处理方法、设备、存储介质 - Google Patents
驱动系统及信息处理方法、设备、存储介质 Download PDFInfo
- Publication number
- CN113946370B CN113946370B CN202010685246.2A CN202010685246A CN113946370B CN 113946370 B CN113946370 B CN 113946370B CN 202010685246 A CN202010685246 A CN 202010685246A CN 113946370 B CN113946370 B CN 113946370B
- Authority
- CN
- China
- Prior art keywords
- layer
- api
- control logic
- drive
- application
- 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
- 230000010365 information processing Effects 0.000 title claims abstract description 16
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 238000004891 communication Methods 0.000 claims abstract description 48
- 230000005540 biological transmission Effects 0.000 claims abstract description 11
- 238000000034 method Methods 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 25
- 230000006870 function Effects 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 14
- 238000012546 transfer Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 6
- 238000013473 artificial intelligence Methods 0.000 claims description 4
- 230000002452 interceptive effect Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 11
- 238000012827 research and development Methods 0.000 description 11
- 238000013528 artificial neural network Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 239000011230 binding agent Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了驱动系统及信息处理方法、设备、存储介质,其中,所述驱动系统包括:上层应用的API层,提供至少一个通用的上层API给所述上层应用调用,以实现所述上层应用与所述系统的驱动HAL层之间的通信;所述驱动HAL层,实现每一所述上层API的通信功能和包括至少一个硬件设备的第一专用控制逻辑,所述第一专用控制逻辑用于控制对应硬件设备的工作模式;数据传输层,提供IPC接口,以实现所述驱动HAL层与所述至少一个硬件设备之间的通信;所述硬件的API层,包括所述至少一个硬件设备的通用控制逻辑,所述通用控制逻辑,用于控制所述IPC接口实现所述驱动HAL层与所述至少一个硬件设备之间的通信。
Description
技术领域
本申请实施例涉及硬件驱动,涉及但不限于驱动系统及信息处理方法、设备、存储介质。
背景技术
目前,通用的人工智能(Artificial Intelligence,AI)芯片主要用于手机端和服务器端等。AI芯片也被称为AI加速器或计算卡,是针对AI算法的专用集成电路(Application Specific Integrated Circuit,ASIC),专门用于处理人工智能应用中的大量计算任务的硬件设备。
然而,AI芯片的设计架构多种多样,而不同的硬件设计意味着需要不同的驱动系统来适配。对于AI芯片的使用者,比如手机厂商,需要针对不同的系统平台和不同的AI芯片,设计对应的驱动系统。显然,这样就会大大增加研发成本和后期维护成本。
发明内容
本申请实施例提供的驱动系统及信息处理方法、设备、存储介质,是这样实现的:
本申请实施例提供的驱动系统,包括:上层应用的应用程序接口(ApplicationProgramming Interface,API)层,提供至少一个通用的上层API给所述上层应用调用,以实现所述上层应用与所述系统的驱动硬件抽象(Hardware Abstraction Layer,HAL)层之间的通信;所述驱动HAL层,实现每一所述上层API的通信功能和包括至少一个硬件设备的第一专用控制逻辑,所述第一专用控制逻辑用于控制对应硬件设备的工作模式;数据传输层,提供进程间通信(Interprosses communication,IPC)接口,以实现所述驱动HAL层与所述至少一个硬件设备之间的通信;所述硬件的API层,包括所述至少一个硬件设备的通用控制逻辑,所述通用控制逻辑,用于控制所述IPC接口实现所述驱动HAL层与所述至少一个硬件设备之间的通信。
本申请实施例提供的另一驱动系统,包括:上层应用的API层,提供至少一个通用的上层API给所述上层应用调用,以实现所述上层应用与所述系统的驱动HAL层之间的通信;所述驱动HAL层,实现每一所述API的通信功能;数据传输层,提供IPC接口,以实现所述驱动HAL层与所述硬件设备之间的通信;所述硬件的API层,包括至少一个硬件设备的通用控制逻辑和至少一个所述硬件设备的第一专用控制逻辑;其中,所述通用控制逻辑,用于控制所述IPC接口实现所述驱动HAL层与所述至少一个硬件设备之间的通信;所述第一专用控制逻辑,用于控制对应硬件设备的工作模式。
本申请实施例提供的信息处理方法,包括:响应于上层应用接收的交互操作,获取所述交互操作对应的待处理数据;通过本申请实施例任一所述的驱动系统,将所述待处理数据传递给对应的硬件设备,以使硬件设备对所述待处理数据进行处理后,将处理结果通过所述驱动系统返回给所述上层应用。
本申请实施例提供的电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述计算机程序包括本申请实施例任一所述的驱动系统。
本申请实施例提供的计算机可读存储介质,其上存储有本申请实施例任一所述的驱动系统。
在本申请实施例中,提供一种驱动系统,该系统采用分层思想,即包括上层应用的API层、驱动HAL层、数据传输层和硬件的API层;其中,驱动HAL层包括至少一个硬件设备的第一专用控制逻辑,其它层包括通用的程序代码;如此,一方面,使得该驱动系统能够兼容多个不同的硬件设备,在实现时,只需在驱动HAL层增加每一硬件设备的第一专用控制逻辑即可;另一方面,在使用该驱动系统以支持新的硬件设备时,也只需更改驱动HAL层的第一专用控制逻辑,从而适配该新的硬件设备,或者在该层增加该新的硬件设备的第一专用控制逻辑即可。
附图说明
图1为本申请实施例驱动系统的结构示意图;
图2为本申请实施例另一驱动系统的结构示意图;
图3为本申请实施例又一驱动系统的结构示意图;
图4为相关技术的驱动系统的结构示意图;
图5为本申请实施例再一驱动系统的结构示意图;
图6为本申请实施例另一驱动系统的结构示意图;
图7为本申请实施例信息处理方法的实现流程示意图;
图8为本申请实施例电子设备的一种硬件实体示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的具体技术方案做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是是区别类似或不同的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
本申请实施例提供一种驱动系统,所述驱动系统用于实现上层应用与至少一个硬件设备之间的通信。
图1为本申请实施例驱动系统的结构示意图,如图1所示,该系统10包括:上层应用100的API层101、驱动HAL层102、数据传输层103和硬件的API层104;其中,
上层应用100的API层101,提供至少一个通用的上层API给上层应用100调用,以实现上层应用100与该系统10的驱动HAL层102之间的通信。
可以理解地,通用的上层API指的是无论该驱动系统的上层应用是何种应用类型,也无论该驱动系统支持的是何种硬件设备,该API都是通用的。例如,开发人员在移植该驱动系统以支持新的硬件设备时,无需更改这一层的上层API的代码。再如,在该驱动系统所在的电子设备中增加新的硬件设备时,也可以将该驱动系统作为该新的硬件设备的驱动,而且无需修改该系统的这一层的上层API的代码。
所谓通信,包括两层之间的数据交换、指令和信息的交互等。
驱动HAL层102,实现每一上层API的通信功能和包括至少一个硬件设备的第一专用控制逻辑,所述第一专用控制逻辑用于控制对应硬件设备的工作模式。
可以理解地,上层应用的API层主要用于提供通用的函数接口(即上层API)给上层应用调用。驱动HAL层则是对上层中各个上层API的具体实现,比如,实现内存划分法、数据的调度策略、状态的返回和/或敏感数据的具体加密方式等。
在本申请实施例中,对所述硬件设备的类型不做限定,硬件设备的类型可以是多种多样的。例如,硬件设备为AI芯片或其他具有计算能力的芯片。AI芯片可以是多种多样的,例如AI芯片为神经网络处理器(Neural-network Processing Unit,NPU)、视觉处理器(Graphics Processing Unit,GPU)、现场可编程逻辑门阵列(Field Programmable GateArray,FPGA)、数字信号处理器(Digital Signal Processor,DSP)或ASIC等。
以硬件设备为AI芯片为例,AI芯片的工作模式可以包括单帧模式和多帧模式。所谓单帧模式,指的是AI芯片每处理一帧图片,就将处理结果通过驱动系统返回给上层应用;所谓多帧模式,指的是AI芯片处理完上层应用传递下来的所有图片之后,再将每一图片对应的处理结果返回给上层应用。
数据传输层103,提供IPC接口,以实现驱动HAL层102与所述至少一个硬件设备之间的通信。
在本申请实施例中,IPC接口的通信方式可以是多种多样的。例如,可以通过套接字(Socket)、信号量、管道(Pipe)、信箱(MailSlot)或共享内存(Share Memory)等方式实现IPC接口的通信方式。
硬件的API层104,包括所述至少一个硬件设备的通用控制逻辑,所述通用控制逻辑,用于控制所述IPC接口实现驱动HAL层102与所述至少一个硬件设备之间的通信。
可以理解地,所谓通用控制逻辑,指的是无论驱动系统支持的是哪种硬件设备,或者同时支持几个硬件设备,该控制逻辑均是适用的,利用该控制逻辑均可实现驱动HAL层与每一硬件设备之间的通信。即使使用该驱动系统支持新的硬件设备,或者新的硬件设备接入至该系统上,开发人员或该系统所在的电子设备均无需更改这一层的代码。
在本申请实施例中,提供一种驱动系统,该系统采用分层思想,即包括上层应用的API层、驱动HAL层、数据传输层和硬件的API层;其中,驱动HAL层包括至少一个硬件设备的第一专用控制逻辑,其它层包括通用的程序代码;如此,一方面,使得该驱动系统能够兼容多个不同的硬件设备,在实现时,只需在驱动HAL层增加每一硬件设备的第一专用控制逻辑即可;另一方面,在使用该驱动系统以支持新的硬件设备时,也只需更改驱动HAL层的第一专用控制逻辑,从而适配该新的硬件设备,或者在该层增加该新的硬件设备的第一专用控制逻辑即可。
可以理解地,一方面,开发人员在使用该驱动系统以兼容多个不同的硬件设备时,可以仅在这一层定义每一硬件设备的个性化的专用控制逻辑,其它层设计通用的控制逻辑和通用的API;如此,能够节约开发人员的研发周期,节约代码量和研发成本;另一方面,开发人员在对新的硬件设备进行驱动程序设计时,只需更改驱动系统的HAL层的第一专用控制逻辑即可得到该新的硬件设备的驱动,而无需编写一套新的驱动程序,从而大大节约了研发成本和研发周期。
在一些实施例中,对于包括多个硬件设备的电子设备,可以通过一个所述驱动系统支持所述多个硬件设备工作。这样就要求一个所述驱动系统中包括所述多个硬件设备各自对应的第一专用控制逻辑。在上层应用传递待处理数据或其他信息给该驱动系统时,该系统可以先确定将这些数据或信息传递给哪个硬件设备,获取该硬件设备的标识信息;根据该标识信息找到对应的第一专用控制逻辑,利用该第一专用控制逻辑控制对应的硬件设备工作。
本申请实施例再提供一种驱动系统,图2为本申请实施例驱动系统的结构示意图,如图2所示,该系统20包括:上层应用200的API层201、驱动HAL层202、数据传输层203和硬件的API层204,上层应用200的API层201包括内存管理接口2011、流程控制接口2012、状态信息接口2013和用户自定义接口2014等通用的上层API;其中,
内存管理接口2011,用于管理所述至少一个硬件设备的内存的获取和释放。
可以理解地,硬件设备的应用场景,尤其是AI芯片的应用场景有大量的数据流,因此需要相应的内存管理接口。
流程控制接口2012,用于将上层应用200接收的待处理数据传递给驱动HAL层202。在一些实施例中,该接口2012可以包括创建(Create)、执行(Execute)、收发(Receive)等控制流程接口。
状态信息接口2013,用于获取驱动系统20的状态信息。上层应用可以通过这类接口获取驱动系统的状态信息。其中,所述状态信息,例如可以包括驱动系统的运行状态、返回的结果状态等。
用户自定义接口2014,用于传递指示信息给驱动HAL层202,所述指示信息用于指示对应的硬件设备实现特定功能。例如,敏感数据需要加密处理等,上层应用可以通过该接口2014通知驱动系统实现。
驱动HAL层202,实现每一上层API的通信功能和包括至少一个硬件设备的第一专用控制逻辑,所述第一专用控制逻辑用于控制对应硬件设备的工作模式。
一般来说,驱动HAL层属于用户空间(User Space)。开发人员可以将涉密的专用控制逻辑定义在这一层,将非涉密的专用控制逻辑定义在硬件的API层。当然,开发人员也可以将非涉密的专用控制逻辑定义在驱动HAL层。对于驱动HAL层是否包括非涉密的专用控制逻辑,本申请对此不做限定。
举例来说,假设驱动系统同时接入硬件设备1和硬件设备2,其中,硬件设备1的第一专用控制逻辑是保密的,硬件设备2的第一专用控制逻辑是非保密的;那么,开发人员在设计该驱动系统时,可以将硬件设备1的第一专用控制逻辑定义在驱动HAL层,将硬件设备2的第一专用控制逻辑定义在硬件的API层;当然,也可以将硬件设备2的第一专用控制逻辑定义在驱动HAL层,本申请对此不做限定。
数据传输层203,提供IPC接口,以实现驱动HAL层202与所述至少一个硬件设备之间的通信;
硬件的API层204,包括所述至少一个硬件设备的通用控制逻辑,所述通用控制逻辑,用于控制所述IPC接口实现驱动HAL层202与所述至少一个硬件设备之间的通信。
在一些实施例中,如图2所示,上层应用的API层201和驱动HAL层202属于用户空间,硬件的API层204属于内核空间(Kenel Space)。
可以理解地,用户空间是用户程序代码运行的地方,内核空间是内核代码运行的地方。通常情况下,用户空间的代码是闭源的,内核空间的代码是开源的。这样,一方面,开发人员可以将硬件设备的涉密内容在驱动HAL层202定义,从而增强驱动的安全性能;另一方面,开发人员可以通过修改或新增该层的第一专用控制逻辑,从而能够适配其他硬件设备,缩短研发周期和研发成本。
本申请实施例再提供一种驱动系统,图3为本申请实施例驱动系统的结构示意图,如图3所示,该系统30包括:上层应用300的API层301、驱动HAL层302、数据传输层303和硬件的API层304;其中,
上层应用300的API层301,提供至少一个通用的上层API给上层应用300调用,以实现上层应用300与该系统30的驱动HAL层302之间的通信。例如,所述上层API,用于响应于上层应用300接收的数据处理请求,将所述数据处理请求携带的待处理数据传递给驱动HAL层302;其中,所述至少一个通用的上层API包括:内存管理接口3011、流程控制接口3012、状态信息接口3013和用户自定义接口3014;对于每一接口的功能在此不再赘述。
在一些实施例中,在上层应用属于终端侧的情况下,数据处理请求可以是上层应用从网络端接收的请求,也可以是上层应用接收的用户输入操作;在上层应用属于服务器侧的情况下,数据处理请求可以是终端发送过来的请求。所述待处理数据可以是多种多样的,例如,所述待处理数据为待进行AI处理的图片、视频、语音或文字等。再如,待处理数据还可以是指令、命令等。
驱动HAL层302,实现每一上层API的通信功能、包括至少一个硬件设备的第一专用控制逻辑和每一所述硬件设备的第二专用控制逻辑;其中,所述第一专用控制逻辑用于控制对应硬件设备的工作模式,所述第二专用控制逻辑用于对所述待处理数据进行预处理。
预处理的方式可以是多种多样的。在一些实施例中,所述预处理可以包括数据优化、数据拆分和/或数据量化等方式。一般来说,驱动HAL层属于用户空间。开发人员可以将涉密的专用控制逻辑(包括第一专用控制逻辑和第二专用控制逻辑)定义在这一层,将非涉密的专用控制逻辑定义在硬件的API层。当然,开发人员也可以将非涉密的专用控制逻辑定义在驱动HAL层。对于驱动HAL层是否包括非涉密的专用控制逻辑,本申请对此不做限定。
数据传输层303,用于提供IPC接口,以实现驱动HAL层302与所述至少一个硬件设备之间的通信;
硬件的API层304,用于提供实现所述通用控制逻辑的底层API给所述驱动HAL层调用,以将所述第一专用控制逻辑和预处理后的待处理数据通过所述IPC接口传递给对应的硬件设备。
一般来说,如图3所示,底层API包括:读接口(Read)、写接口(Write)、控制接口(Control)和状态接口(Status)。
在一些实施例中,驱动系统30在实现数据交换时,工作过程为:上层应用300响应于接收的数据处理请求,通过上层应用的API层301将数据请求携带的待处理数据传递给驱动HAL层302,驱动HAL层302通过系统调用通知所述底层API开始进行数据交换,以使所述底层API为所述IPC接口配置数据交换信息;IPC接口,用于根据所述数据交换信息,将驱动HAL层302的预处理后的待处理数据和对应的第一专用控制逻辑搬移至对应的硬件设备中,以使该硬件设备在根据所述第一专用控制逻辑开启对应的工作模式之后,在该工作模式下,对所述预处理后的待处理数据进行处理,并将处理结果通过所述驱动系统逐层返回至所述上层应用。
本申请实施例再提供一种驱动系统,该系统与上述实施例所述的驱动系统不同的是,每一硬件设备的第一专用控制逻辑被定义在硬件的API层。即所述系统包括:
上层应用的API层,提供至少一个通用的上层API给所述上层应用调用,以实现所述上层应用与所述系统的驱动HAL层之间的通信;
所述驱动HAL层,实现每一所述API的通信功能;
数据传输层,提供IPC接口,以实现所述驱动HAL层与所述硬件设备之间的通信;
所述硬件的API层,包括至少一个硬件设备的通用控制逻辑和至少一个所述硬件设备的第一专用控制逻辑;其中,所述通用控制逻辑,用于控制所述IPC接口实现所述驱动HAL层与所述至少一个硬件设备之间的通信;所述第一专用控制逻辑,用于控制对应硬件设备的工作模式。
在一些实施例中,硬件的API层可以包括非涉密的第一专用控制逻辑,而驱动HAL层包括涉密的第一专用控制逻辑。
在另一些实施例中,硬件的API层或者驱动HAL层还可以包括至少一个硬件设备的第二专用控制逻辑。在实现时,可以将非涉密的第二专用控制逻辑定义在硬件的API层,将涉密的第二专用控制逻辑定义在驱动HAL层;其中,第二专用控制逻辑用于对上层应用接收的待处理数据进行预处理。
通用的AI芯片主要用于手机端和服务器端,用于对神经网络的加速计算。AI芯片的设计系统多种多样,不同的硬件设计意味着需要不同的驱动系统来适配。目前AI芯片的系统应用平台主要是服务器的Linux平台和手机的安卓(Android)平台。相关技术的缺点如下:
1、目前基于Android系统的AI芯片驱动系统,需要接入操作系统框架。利用Android系统的binder服务作为数据通信方式,结构如图4所示,包括机器学习框架或库(MLframework/library)、安卓系统下的神经网络运行时(Android Neural NetworksRuntime)、binder服务、用户定义的神经网络DSP的驱动(Vendor NN DSP Driver)、用户定义的神经网络驱动(Vendor NN Driver)和用户定义的神经网络GPU驱动(Vendor NN GPUDriver);其中,Vendor NN DSP Driver用于支持硬件设备DSP,Vendor NN Driver用于支持硬件设备NPU,Vendor NN GPU Driver用于支持硬件设备GPU;Android Neural NetworksRuntime用于实现硬件加速(Hardware Acceleration)。然而,AI芯片驱动为了接入Android系统,牺牲了部分性能。数据通路会进行数据搬移,增加了开销。
2、目前基于Linux系统的AI芯片驱动系统,则是各家不同。因为Linux开源且支持多种硬件设备,所以没有统一的驱动系统。如果接入不同的AI芯片,需要重新开发相应的驱动系统,增加了研发成本。
3、对于AI芯片的使用者,比如手机厂商,针对不同的操作系统平台和不同的AI芯片,要设计不同的驱动系统,需要耗费大量的研发投入。而且后续的软硬件升级也是持续的高投入。
基于此,下面将说明本申请实施例在一个实际的应用场景中的示例性应用。
为了解决以上问题,本申请实施例设计了一种兼容多平台和兼容不同AI芯片的驱动系统。
首先,对跨平台的驱动系统设计进行说明:
为了兼容多平台和兼容多种AI芯片,驱动系统需要分层设计,如图5所示,在本申请实施例的技术方案中分为以下4层实现:
1)上层应用的API层(Application API Layer):该层主要提供通用API,用于给上层应用调用,该层能够兼顾Linux和Android系统的应用需求;
2)驱动HAL层(Driver HAL Layer):该层包括实现应用API层接口的具体实现,以及针对不同的AI芯片的硬件逻辑实现;
3)数据传输层(Data Transfer Layer):该层主要实现跨平台的IPC方式,该层需要兼容Linux和Android系统。
4)硬件的API层(Hardware API Layer):该层主要实现通用的硬件控制逻辑,能够兼容不同的AI芯片。
然后,对驱动系统中各层的详细实现进行详细阐述,如图6所示:
1、对于最上层Application API layer,主要是提供统一的函数接口给上层应用调用。根据功能分为了4个部分的调用接口,分别为内存管理接口、流程控制接口、状态信息接口和用户自定义接口;其中,
内存管理接口(Memory API):用于内存的获取和释放。AI芯片的应用场景有大量的数据流,需要相应的内存管理接口。
流程控制接口(Schedule API):包括创建(Create)、执行(Execute)和收发(Receive)等控制流程接口。上层准备好数据后,通过流程控制接口触发驱动可以开始进行相应的处理。
状态信息接口(Status API):上层应用可以通过这类接口,获取驱动目前的运行状态以及返回的结果状态等。
用户自定义接口(Vendor define API):预留给AI芯片一些特殊功能的接口。比如敏感数据需要加密处理等,则可通过此处接口通知驱动实现。
2、对于中间层Driver HAL layer,此层为闭源代码层(Closed code Layer),主要的驱动控制和AI芯片逻辑定义都在这层实现。此层的功能分为2部分:一是对上面的Application API layer中各接口的具体实现,比如内存划分方法、数据的调度策略、状态的返回和敏感数据的具体加密方式等;二是对AI芯片控制逻辑的定义,比如AI芯片开始工作需要操作的寄存器和操作顺序,都在此处完成封装。对于新的AI芯片要利用本申请实施例所提供的驱动系统进行软件部署,只需要在此层定义好相应的硬件逻辑,即可完成接入。此层位于系统的用户空间,不受内核的开放源代码许可协议(GPL)约束,可以保护AI芯片厂商的设计机密。
3、对于第三层Data transfer layer,主要是实现数据通信的方式,即实现用户空间和内核空间之间的数据交换。可以利用系统常见的方式,比如套接字(Socket)、信号量或共享内存(Share Memory)等方式实现。由于AI芯片的应用场景有大量数据流,而且需要兼容多平台,所以,数据通信的方式在实现平台兼容性的同时,还要注意效率的提升。
4、对于最底层Hardware API layer。因为AI芯片的主要逻辑都在Driver HALlayer实现,所以此层只是最简单的寄存器的读写等控制接口函数。Driver HAL layer通过IOTCL(input/output control)一类的系统调用,将封装好的AI芯片控制逻辑和数据,通过该层的读写接口,传递给AI芯片,以使AI芯片开始计算,并返回处理结果。
在本申请实施例中,不同的AI芯片,利用本申请实施例提供的驱动系统进行软件部署,减少了70%以上的软件代码量。缩短了研发周期,节省了研发成本。而且对于部署在不同平台的软件维护、升级等要求,也提供了便利,降低研发成本,有更好的用户体验。
在本申请实施例中,驱动系统的分层设计,使底层硬件的修改,不影响上层应用。针对本申请实施例中驱动系统,不会因为硬件的改动,造成重复的研发投入,节约研发成本。
本申请实施例提供了兼容多平台的驱动系统,能够支持多种AI芯片部署的驱动系统。
在一些实施例中,本申请实施例中的驱动系统,除了在Linux/Android系统外,在其他操作系统平台,比如Windows、RTOS等依然适用。
本申请实施例提供一种信息处理方法,图7为本申请实施例信息处理方法的实现流程示意图,如图7所示,可以包括以下步骤701和步骤702:
步骤701,响应于上层应用接收的数据处理请求,获取所述数据处理请求携带的待处理数据;
步骤702,通过本申请实施例的驱动系统,将所述待处理数据传递给对应的硬件设备,以使硬件设备对所述待处理数据进行处理后,将处理结果通过所述驱动系统返回给所述上层应用。
在一些实施例中,在上层应用属于终端侧的情况下,数据处理请求可以是上层应用从网络端接收的请求,也可以是上层应用接收的用户输入操作;在上层应用属于服务器侧的情况下,数据处理请求可以是终端发送过来的请求。所述待处理数据可以是多种多样的,例如,所述待处理数据为待进行AI处理的图片、视频、语音或文字等。再如,待处理数据还可以为指令、命令等。
以上方法实施例的描述,与上述驱动系统实施例的描述是类似的,具有同驱动系统实施例相似的有益效果。对于本申请方法实施例中未披露的技术细节,请参照本申请驱动系统实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的信息处理方法或实现上述驱动系统,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、笔记本电脑、台式计算机、机器人、无人机、滑轨屏等)执行本申请各个实施例所述驱动系统或信息处理方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,如图8所示,本申请实施例提供的电子设备800,可以包括:存储器801和处理器802,所述存储器801存储有可在处理器802上运行的计算机程序,该计算机程序包括本申请实施例任一所述的驱动系统。
存储器801配置为存储由处理器802可执行的指令和应用,还可以缓存待处理器802以及电子设备800中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。
对应地,本申请实施例提供的计算机可读存储介质,其上存储有本申请实施例任一所述的驱动系统。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述驱动系统实施例的描述是类似的,具有同驱动系统实施例相同或相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请驱动系统实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一些实施例”或“另一些实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”或“在一些实施例中”或“在另一些实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的驱动系统、方法和设备,可以通过其它的方式实现。以上所描述的驱动系统实施例仅仅是示意性的,例如,所述层的划分,仅仅为一种逻辑功能划分。
在本申请各实施例中驱动系统的各层可以全部集成在一个处理单元中,也可以是各层分别单独作为一个单元,也可以两个或两个以上层集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述驱动系统实施例的全部或部分可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述驱动系统实施例的各个层;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、笔记本电脑、台式计算机、机器人、无人机、滑轨屏等)执行本申请各个实施例所述驱动系统的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请所提供的几个驱动系统实施例中所揭露的驱动,在不冲突的情况下可以任意组合,得到新的驱动实施例。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.驱动系统,其特征在于,包括:
上层应用的应用程序API层,提供至少一个通用的上层API给所述上层应用调用,以实现所述上层应用与所述系统的驱动硬件抽象HAL层之间的通信;
所述驱动HAL层,实现每一所述上层API的通信功能和包括至少一个硬件设备的第一专用控制逻辑,所述第一专用控制逻辑用于控制对应硬件设备的工作模式;
数据传输层,提供进程间通信IPC接口,以实现所述驱动HAL层与所述至少一个硬件设备之间的通信;
所述硬件的API层,包括所述至少一个硬件设备的通用控制逻辑,所述通用控制逻辑,用于控制所述IPC接口实现所述驱动HAL层与所述至少一个硬件设备之间的通信。
2.根据权利要求1所述的系统,其特征在于,所述上层应用的API层和所述驱动HAL层属于用户空间,所述硬件的API层属于内核空间。
3.根据权利要求1所述的系统,其特征在于,所述硬件设备为人工智能AI芯片。
4.根据权利要求1至3任一项所述的系统,其特征在于,所述上层API,用于响应于所述上层应用接收的数据处理请求,将所述数据处理请求携带的待处理数据传递给所述驱动HAL层;
所述驱动HAL层,还包括所述至少一个硬件设备的第二专用控制逻辑,所述第二专用控制逻辑用于对所述待处理数据进行预处理。
5.根据权利要求4所述的系统,其特征在于,所述硬件的API层,提供实现所述通用控制逻辑的底层API给所述驱动HAL层调用,以将所述第一专用控制逻辑和预处理后的待处理数据通过所述IPC接口传递给对应的硬件设备。
6.根据权利要求5所述的系统,其特征在于,所述驱动HAL层,用于通过系统调用通知所述底层API开始进行数据交换,以使所述底层API为所述IPC接口配置数据交换信息;
所述IPC接口,用于根据所述数据交换信息,将所述驱动HAL层的所述预处理后的待处理数据和对应的第一专用控制逻辑搬移至对应的硬件设备中,以使该硬件设备在根据所述第一专用控制逻辑开启对应的工作模式之后,在该工作模式下,对所述预处理后的待处理数据进行处理,并将处理结果通过所述驱动系统逐层返回至所述上层应用。
7.根据权利要求1至3任一项所述的系统,其特征在于,所述至少一个通用的上层API包括:
内存管理接口,用于管理所述至少一个硬件设备的内存的获取和释放;
流程控制接口,用于将所述上层应用接收的待处理数据传递给所述驱动HAL层;
状态信息接口,用于获取所述驱动系统的状态信息;
用户自定义接口,用于传递指示信息给所述驱动HAL层,所述指示信息用于指示对应的硬件设备实现特定功能。
8.驱动系统,其特征在于,所述系统包括:
上层应用的应用程序接口API层,提供至少一个通用的上层API给所述上层应用调用,以实现所述上层应用与所述系统的驱动硬件抽象HAL层之间的通信;
所述驱动HAL层,实现每一所述API的通信功能;
数据传输层,提供进程间通信IPC接口,以实现所述驱动HAL层与所述硬件设备之间的通信;
所述硬件的API层,包括至少一个硬件设备的通用控制逻辑和至少一个所述硬件设备的第一专用控制逻辑;其中,所述通用控制逻辑,用于控制所述IPC接口实现所述驱动HAL层与所述至少一个硬件设备之间的通信;所述第一专用控制逻辑,用于控制对应硬件设备的工作模式。
9.信息处理方法,其特征在于,所述方法包括:
响应于上层应用接收的交互操作,获取所述交互操作对应的待处理数据;
通过权利要求1至8任一项所述的驱动系统,将所述待处理数据传递给对应的硬件设备,以使硬件设备对所述待处理数据进行处理后,将处理结果通过所述驱动系统返回给所述上层应用。
10.电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述计算机程序包括权利要求1至8任一项所述的驱动系统。
11.计算机可读存储介质,其上存储有权利要求1至8任一项所述的驱动系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010685246.2A CN113946370B (zh) | 2020-07-16 | 2020-07-16 | 驱动系统及信息处理方法、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010685246.2A CN113946370B (zh) | 2020-07-16 | 2020-07-16 | 驱动系统及信息处理方法、设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113946370A CN113946370A (zh) | 2022-01-18 |
CN113946370B true CN113946370B (zh) | 2024-02-06 |
Family
ID=79326679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010685246.2A Active CN113946370B (zh) | 2020-07-16 | 2020-07-16 | 驱动系统及信息处理方法、设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113946370B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453621A (zh) * | 2023-12-22 | 2024-01-26 | 深圳市乐迪电子有限公司 | 无人机飞控处理方法、装置、无人机和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009252194A (ja) * | 2008-04-11 | 2009-10-29 | Nec Electronics Corp | データ処理装置、ハードウェアアクセス方法、及びハードウェアアクセスプログラム |
CN110990303A (zh) * | 2019-11-05 | 2020-04-10 | 北京华商三优新能源科技有限公司 | 充电桩的数据处理方法、装置、存储介质和处理器 |
CN111314799A (zh) * | 2018-12-11 | 2020-06-19 | 中兴通讯股份有限公司 | 终端系统构架、通信系统及通信方法、存储介质 |
-
2020
- 2020-07-16 CN CN202010685246.2A patent/CN113946370B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009252194A (ja) * | 2008-04-11 | 2009-10-29 | Nec Electronics Corp | データ処理装置、ハードウェアアクセス方法、及びハードウェアアクセスプログラム |
CN111314799A (zh) * | 2018-12-11 | 2020-06-19 | 中兴通讯股份有限公司 | 终端系统构架、通信系统及通信方法、存储介质 |
CN110990303A (zh) * | 2019-11-05 | 2020-04-10 | 北京华商三优新能源科技有限公司 | 充电桩的数据处理方法、装置、存储介质和处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN113946370A (zh) | 2022-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101177971B1 (ko) | 보호 영역 경계들에서의 오브젝트 호출 방법, 시스템 및 장치 | |
CN101421711B (zh) | 用于资源受限设备的虚拟执行系统 | |
US11281388B2 (en) | Method for managing a multi-system shared memory, electronic device and non-volatile computer-readable storage medium | |
CN103970563B (zh) | 动态加载安卓类的方法 | |
CN1862494A (zh) | 分区总线 | |
US20230137415A1 (en) | Driver system, information processing method, electronic devicce and storage medium | |
CN110990075A (zh) | 快应用的启动方法、装置、设备及存储介质 | |
CN115629884B (zh) | 一种线程调度方法、电子设备及存储介质 | |
CN112241932A (zh) | 一种图片处理方法及装置 | |
CN113448740B (zh) | 操作系统的电源管理方法及装置 | |
CN111459610A (zh) | 一种模型部署方法和装置 | |
CN113946370B (zh) | 驱动系统及信息处理方法、设备、存储介质 | |
CN116643778A (zh) | 一种应用程序优化方法及电子设备 | |
EP4044058A1 (en) | Capability management method and computer device | |
WO2023131314A1 (zh) | 窗口交互方法和电子设备 | |
CN117670645A (zh) | 限制容器显存的方法、装置、电子设备以及存储介质 | |
CN108804236B (zh) | 一种aidl文件的共享方法及系统 | |
US6539441B1 (en) | Multi-instance input device control | |
CN115454509A (zh) | 异构操作系统部署方法、系统、电子设备及存储介质 | |
WO2024037346A1 (zh) | 页面管理方法及电子设备 | |
CN116196621B (zh) | 应用处理方法及相关装置 | |
CN117742849A (zh) | 基于应用分身的界面显示方法及相关装置 | |
CN117130680B (zh) | 一种芯片资源的调用方法及电子设备 | |
CN118276838A (zh) | SoC平台的应用开发方法、装置、SoC及电子设备 | |
CN117369987A (zh) | 一种计算装置及相关任务执行调度方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |