CN111857852B - 驱动系统、信息处理方法、电子设备及存储介质 - Google Patents

驱动系统、信息处理方法、电子设备及存储介质 Download PDF

Info

Publication number
CN111857852B
CN111857852B CN202010739377.4A CN202010739377A CN111857852B CN 111857852 B CN111857852 B CN 111857852B CN 202010739377 A CN202010739377 A CN 202010739377A CN 111857852 B CN111857852 B CN 111857852B
Authority
CN
China
Prior art keywords
memory
application
layer
hardware
information
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
Application number
CN202010739377.4A
Other languages
English (en)
Other versions
CN111857852A (zh
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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202010739377.4A priority Critical patent/CN111857852B/zh
Publication of CN111857852A publication Critical patent/CN111857852A/zh
Priority to PCT/CN2021/103063 priority patent/WO2022022199A1/zh
Priority to EP21850601.2A priority patent/EP4167081A4/en
Application granted granted Critical
Publication of CN111857852B publication Critical patent/CN111857852B/zh
Priority to US18/090,923 priority patent/US20230137415A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了驱动系统、信息处理方法、电子设备及存储介质,其中,驱动系统包括:上层应用的应用程序接口层,提供通用的第一应用程序接口供上层应用调用,在上层应用申请访问内存的情况下,接收驱动硬件抽象层反馈的第一结构体;驱动硬件抽象层,实现第一应用程序接口的通信功能,获得给上层应用分配的内存的内存信息,并封装内存信息得到第一结构体;内存分配管理层,确定共享内存池中的目标内存池,在目标内存池中划分上层应用申请的内存,并分配给上层应用;硬件的应用程序接口层,获取第一结构体,获取第一结构体包括的内存信息,将内存信息传递给硬件设备,以使硬件设备对内存信息指示的目标内存池中的数据进行处理。

Description

驱动系统、信息处理方法、电子设备及存储介质
技术领域
本申请实施例涉及计算机软件系统领域,涉及但不限于驱动系统、信息处理方法、电子设备及存储介质。
背景技术
目前,通用的人工智能(Artificial Intelligence,AI)芯片主要用于手机端和服务器端等。硬件设备也被称为AI加速器或计算卡,是针对AI算法的专用集成电路(Application Specific Integrated Circuit,ASIC),专门用于处理人工智能应用中的大量计算任务的硬件设备。
然而,对于硬件设备的使用者,比如手机厂商,需要针对不同的系统平台和不同的硬件设备,设计对应的驱动程序。显然,这样就会大大增加研发成本和后期维护成本。
发明内容
本申请实施例提供的驱动系统、信息处理方法、电子设备及存储介质,是这样实现的:
一种驱动系统,包括:
上层应用的应用程序接口层,提供通用的第一应用程序接口供所述上层应用调用,在所述上层应用申请访问内存的情况下,接收驱动硬件抽象层反馈的第一结构体,所述第一结构体用于定位给所述上层应用分配的内存在内存分配管理层的共享内存池中对应的内存区域;
所述驱动硬件抽象层,实现所述第一应用程序接口的通信功能,获得给所述上层应用分配的内存的内存信息,并封装所述内存信息得到所述第一结构体;
所述内存分配管理层,确定所述共享内存池中的目标内存池,在所述目标内存池中划分所述上层应用申请的内存,并分配给所述上层应用;
硬件的应用程序接口层,获取所述第一结构体,获取所述第一结构体包括的内存信息,将所述内存信息传递给硬件设备,以使所述硬件设备对所述内存信息指示的目标内存池中的数据进行处理。
在上述方案中,所述第一结构体中存储有虚拟地址和物理地址的映射关系,所述虚拟地址能被所述上层应用用于访问给所述上层应用分配的内存,所述物理地址能被所述硬件设备用于访问给所述上层应用分配的内存。
在上述方案中,所述应用程序接口层,还提供第二应用程序接口供所述上层应用调用,以查看所述第一结构体包括的所述内存信息。
在上述方案中,所述第一应用程序接口至少包括:
内存的申请接口,用于支持所述硬件设备对内存的申请操作;
内存的读写接口,用于支持所述硬件设备对内存的读写操作;
内存的释放接口,用于支持所述硬件设备对内存的释放操作。
在上述方案中,所述驱动硬件抽象层,封装内存信息得到所述第一结构体包括:获得与操作系统的属性信息关联的第二结构体;封装所述第二结构体,得到所述第一结构体,所述第二结构体封装有所述内存信息。
在上述方案中,所述属性信息表征所述操作系统的内存管理方式。
在上述方案中,所述硬件的应用程序接口层,提供进程间通信接口,以获取所述第一结构体。
在上述方案中,所述硬件设备为人工智能芯片。
一种信息处理方法,所述方法应用于上述的驱动系统,所述方法包括:
在所述上层应用调用所述应用程序接口层的所述第一应用程序接口以申请访问内存的情况下,通过所述驱动硬件抽象层获得给所述上层应用分配的内存的内存信息,并封装所述内存信息得到所述第一结构体;所述第一结构体用于定位给所述上层应用分配的内存在所述共享内存池中对应的内存区域;
通过所述硬件的应用程序接口层获取所述第一结构体,并获取所述第一结构体包括的所述内存信息;
通过所述硬件的应用程序接口层将所述内存信息传递给硬件设备,以使所述硬件设备对所述内存信息指示的所述目标内存池中的数据进行处理。
一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述计算机程序包括上述的驱动系统。
一种计算机可读存储介质,所述计算机可读存储介质上存储有上述的驱动系统。
本申请提供一种驱动系统,该驱动系统采用分层思想,该驱动系统包括:上层应用的应用程序接口层,提供通用的第一应用程序接口供上层应用调用,在上层应用申请访问内存的情况下,接收驱动硬件抽象层反馈的第一结构体,第一结构体用于定位给上层应用分配的内存在内存分配管理层的共享内存池中对应的内存区域;驱动硬件抽象层,实现第一应用程序接口的通信功能,获得给上层应用分配的内存的内存信息,并封装内存信息得到第一结构体;内存分配管理层,确定共享内存池中的目标内存池,在目标内存池中划分上层应用申请的内存,并分配给上层应用;硬件的应用程序接口层,获取第一结构体,获取第一结构体包括的内存信息,将内存信息传递给硬件设备,以使硬件设备对内存信息指示的目标内存池中的数据进行处理;由上述可知,本申请提供的驱动系统在进行数据处理的过程中,只传递第一结构体,不进行数据搬移,确保对于同一上层应用而言,作为底层的硬件的应用程序接口层和作为上层的上层应用的应用程序接口层访问的是同一内存,进一步的,该驱动系统可以部署到不同的操作系统中,实现跨平台部署,如此,不仅减少了数据搬移,而且减小了研发成本和后期维护成本。
附图说明
图1为本申请实施例提供的驱动系统的结构示意图;
图2为相关技术的驱动系统的结构示意图;
图3为本申请实施例提供的电子设备的一种硬件实体示意图;
图4为本申请实施例提供的信息处理方法的流程示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的具体技术方案做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是是区别类似或不同的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)人工智能(Artificial Intelligence,AI);AI芯片,人工智能芯片模仿了人脑神经网络结构,一条指令即可完成一组神经元的处理。这一计算模式在做识别图像等智能处理时,效率比传统芯片高几百倍。人工智能芯片已经广泛应用于图像识别、语音识别、智能安防、智能驾驶、消费类电子等领域。云端智能芯片的问世,也将为大数据量、多任务、高通量等复杂的云端智能处理需求提供新的技术支撑。
2)机器学习(Machine Learning,ML)是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
3)进程间通信(Interprocess communication,IPC),是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息。
4)应用程序接口(Application Programming Interface,API)又称为应用编程接口,就是软件系统不同组成部分衔接的约定。
5)硬件抽象层(Hardware Abstraction Layer,HAL),其目的在于将硬件抽象化。
6)嵌入式神经网络处理器(Neural Network Processing Unit,NPU),采用“数据驱动并行计算”的系统,擅长处理视频、图像类的海量多媒体数据。
7)Binder服务,Android系统定义的一种进程间数据通信方式(Process toprocess communication method defined by Android)。
8)直接存储器访问(Direct Memory Access,DMA),不经过CPU的快速存储器访问设备。
9)内存池(Memory pool),统一内存管理的一种方式,内存使用都是从内存池中申请和回收(Memory pool is the use of pools for memory management that allowsdynamic memory allocation and free)。
相关技术中,在Android系统中,从Android9开始,统一使用binder这种IPC通信方式。主要是Android系统需要支持多种软件、硬件设备,利用统一的binder通信方式,有利于系统资源的统一管理。但是针对AI芯片的应用场景会有限制。目前AI芯片的驱动程序,为了接入Android系统,也需要基于binder的通信方式实现。但是binder方式的通信,在数据通路中可能产生多次数据搬移,对于AI芯片这种有大量数据流的应用场景,会增加开销,降低效率。
Linux发展至今,提出了多种驱动的通信方式,各有优缺点。目前基于Linux系统的AI芯片驱动程序使用的IPC方式,则是各家不同。因为Linux定义的通信方式很多,没有统一的系统,导致接入不同的AI芯片,就需要重新开发不同的驱动程序和通信方式,增加了研发成本。
对于AI芯片的使用者,比如手机厂商,针对不同的系统平台和AI芯片,要设计不同的驱动程序,使用不同的通信方式,需要耗费大量的研发投入。而且后续的软硬件升级也是持续的高投入。
基于此,本申请提出了一种兼容多平台并保证高效的驱动通信方式,适用于AI芯片的软件部署。
本申请实施例提供一种驱动系统,所述驱动系统用于实现上层应用与至少一个硬件设备之间的通信。
图1为本申请实施例驱动系统的结构示意图,如图1所示,该系统10包括:上层应用(Application,APP)的应用程序接口层101、驱动硬件抽象层102、内存分配管理层103和硬件的应用程序接口层104;其中,
上述上层应用的应用程序接口API层101,提供通用的第一应用程序接口供上层应用调用,在上层应用申请访问内存的情况下,接收驱动硬件抽象层反馈的第一结构体,第一结构体用于定位给上层应用分配的内存在内存分配管理层的共享内存池shared memorypool中对应的内存区域。
可以理解地,通用的第一API指的是无论该驱动系统的上层应用是何种应用类型,也无论该驱动系统支持的是何种硬件设备,该API都是通用的。例如,开发人员在移植该驱动系统以支持新的硬件设备时,无需更改这一层的第一API的代码。再如,在该驱动系统所在的电子设备中增加新的硬件设备时,也可以将该驱动系统作为该新的硬件设备的驱动,而且无需修改该系统的这一层的第一API的代码。
这里,在上层应用申请访问内存的情况下,上层应用的API层101接收到驱动硬件抽象层反馈的第一结构体,则确定上层应用从内存分配管理层的共享内存池中申请到了内存。本申请实施例中,示例性的,第一结构体可以称为第一memory node。也就是说,上层APP可以通过驱动系统又称为驱动框架Framework获得memory node,进而使用memory node指示硬件设备对内存信息指示的目标内存池中的数据进行处理。
上述驱动硬件抽象层HAL102,实现第一应用程序接口的通信功能,获得给上层应用分配的内存的内存信息,并封装内存信息得到第一结构体。
可以理解地,上层应用的API层101主要用于提供通用的函数接口给上层应用调用,驱动HAL102则是对上层中第一API的具体实现,比如,实现内存申请、读写、释放等。
上述内存分配管理层103,确定共享内存池中的目标内存池,在目标内存池中划分上层应用申请的内存,并分配给上层应用。
本申请实施例中,内存分配管理层103,确定共享内存池中的目标内存池,可以通过如下方式实现:方式一、在操作系统初始上电运行阶段,从shared memory pool中预留一块memory pool得到目标内存池;方式二、基于操作系统的内存管理方式提前从sharedmemory pool中申请一块memory pool得到目标内存池。进一步的,在上层应用申请内存的情况下,在目标内存池中划分上层应用申请的内存,并分配给上层应用,从而区分各应用对应的memory区域。
需要说明的是,内存分配管理层,确定共享内存池中的目标内存池的过程中,还可以基于已划分出去的内存和回收的内存确定目标内存池。
上述硬件的应用程序接口层104,获取第一结构体,获取第一结构体包括的内存信息,将内存信息传递给硬件设备,以使硬件设备对内存信息指示的目标内存池中的数据进行处理。
其中,待处理的数据可以是多种多样的。例如,待处理的数据为上层应用接收的图片或视频等。又例如,待处理的数据为上层应用发送的指令等。
这里,内存信息至少包括内存的地址信息和内存的大小信息。
示例性的,基于本申请提供的驱动系统,在多个上层应用申请内存的情况下,例如第一上层应用申请内存,第二上层应用也申请内存。上述驱动HAL102,实现第一应用程序接口的通信功能,获得给第一上层应用分配的内存的内存信息,并封装该内存信息得到与第一上层应用对应的第一结构体。上层应用的API层101接收到驱动HAL102反馈的与第一上层应用对应的第一结构体,则确定第一上层应用从内存分配管理层的共享内存池中申请到了内存。同理,上述驱动HAL102,实现第一应用程序接口的通信功能,获得给第二上层应用分配的内存的内存信息,并封装该内存信息得到与第二上层应用对应的第一结构体。上层应用的API层101接收到驱动硬件抽象层反馈的与第二应用对应的第一结构体,则确定第二上层应用从内存分配管理层的共享内存池中申请到了内存。那么,硬件的API层104,获取与第一上层应用对应的第一结构体,获取该第一结构体包括的内存信息,将内存信息传递给第一硬件设备,以使第一硬件设备对内存信息指示的目标内存池中的数据进行处理。硬件的API层104,获取与第二上层应用对应的第一结构体,获取该第一结构体包括的内存信息,将内存信息传递给第二硬件设备,以使第二硬件设备对内存信息指示的目标内存池中的数据进行处理。也就是说,不同的硬件设备和不同的上层应用的第一结构体匹配;例如,第一硬件设备与第一上层应用的第一结构体匹配;第二硬件设备与第二上层应用的第一结构体匹配。
本申请提供的驱动系统,采用分层思想,该驱动系统包括:上层应用的应用程序接口层,提供通用的第一应用程序接口供上层应用调用,在上层应用申请访问内存的情况下,接收驱动硬件抽象层反馈的第一结构体,第一结构体用于定位给上层应用分配的内存在内存分配管理层的共享内存池中对应的内存区域;驱动硬件抽象层,实现第一应用程序接口的通信功能,获得给上层应用分配的内存的内存信息,并封装内存信息得到第一结构体;内存分配管理层,确定共享内存池中的目标内存池,在目标内存池中划分上层应用申请的内存,并分配给上层应用;硬件的应用程序接口层,获取第一结构体,获取第一结构体包括的内存信息,将内存信息传递给硬件设备,以使硬件设备对内存信息指示的目标内存池中的数据进行处理;由上述可知,本申请提供的驱动系统在进行数据处理的过程中,只传递第一结构体,不进行数据搬移,确保对于同一上层应用而言,作为底层的硬件的应用程序接口层和作为上层的上层应用的应用程序接口层访问的是同一内存,进一步的,该驱动系统可以部署到不同的操作系统中,实现跨平台部署,如此,不仅减少了数据搬移,而且减小了研发成本和后期维护成本。
图1为本申请实施例驱动系统的结构示意图,如图1所示,该系统10包括:上层应用的应用程序接口层101、驱动硬件抽象层102、内存分配管理层103和硬件的应用程序接口层104;其中,
上述上层应用的应用程序接口层101,提供通用的第一应用程序接口供上层应用调用,在上层应用申请访问内存的情况下,接收驱动硬件抽象层反馈的第一结构体,第一结构体用于定位给上层应用分配的内存在内存分配管理层的共享内存池中对应的内存区域;
本申请一些实施例中,应用程序接口层,还提供第二应用程序API接口供上层应用调用,以查看第一结构体包括的内存信息。
示例性的,第二API接口可以表示为ioctl_mem接口,用来查看第一结构体包括的内存信息,以快速获取到为上层应用分配的内存的详细信息如地址信息和/或内存大小信息。
本申请一些实施例中,第一应用程序接口至少包括:
内存的申请接口,用于支持硬件设备对内存的申请操作;
内存的读写接口,用于支持硬件设备对内存的读写操作;
内存的释放接口,用于支持硬件设备对内存的释放操作。
示例性的,内存的申请接口可以表示为Create_mem接口,内存的读写接口可以表示为Read/write_mem接口,内存的释放接口可以表示为Free_mem接口。
上述驱动硬件抽象层102,实现第一应用程序接口的通信功能,获得给上层应用分配的内存的内存信息,并封装内存信息得到第一结构体。
本申请一些实施例中,第一结构体中存储有虚拟地址和物理地址的映射关系,虚拟地址能被上层应用用于访问给上层应用分配的内存,物理地址能被硬件设备用于访问给上层应用分配的内存。
也就是说,本申请实施例中的Memory node不同于现有系统中的虚拟文件描述符,不需要配套的解析过程。Memory node结构中存储虚拟地址和物理地址的映射关系,可以更快速的定位到实际的memory区域,适用于高速通信的应用场景,提高处理效率。
本申请一些实施例中,驱动硬件抽象层102,封装内存信息得到第一结构体,包括:获得与操作系统的属性信息关联的第二结构体;封装第二结构体,得到第一结构体,第二结构体封装有内存信息。
本申请一些实施例中,属性信息表征操作系统的内存管理方式。
本申请实施例中,无论是何种操作系统,均可以基于操作系统的内存管理方式对内存信息进行封装得到第二结构体,进一步的,再对第二结构体进行封装,得到第一结构体。第一结构体比第二结构体包括更多的内存信息,而且,第二结构体包括的内存信息是包含在第一结构体中的。如此,本申请提供的驱动系统不仅能兼容多个操作系统;而且在不同操作系统下,可以基于第一结构体获取到第二结构体即操作系统下的原始信息,提升不同操作系统下的信息处理速率。
本申请其他实施例中,示例性的,操作系统包括但不限于如下之一Linux、Android、Windows和RTOS。以Linux为例,可以通过封装shmem这种share memory的方式来实现。以Android为例,可以通过封装ashmem这种share memory的方式来实现。即在不同的操作系统中,有不同的实现方式。当然,在一些自定义的不同于现存系统的实现过程中,比如memory node,可以通过vendor接口实现。
本申请一些实施例中,硬件的应用程序接口层,提供进程间通信IPC接口,以获取第一结构体。
其中,IPC接口的通信方式可以是多种多样的。例如,可以通过套接字(Socket)、消息队列(Message)、信号量(Semaphore)、信号(Signal)、管道(Pipe)、命名管道(FIFO)、信箱(MailSlot)或共享内存(Share Memory)等方式实现IPC接口的通信方式。这里,Socket可用于不同主机之间的进程间通信。Message实际是消息的链表,包括Posix和system V这2种消息队列。Semaphore用于进程间的互斥和同步。Signal用于通知进程事件的发生。Pipe可用于具有继承关系的进程间通信,半双工方式,数据单向流动。FIFO可以在无关的进程间交换数据。shared memory是多个进程间共享给定的存储区。
本申请一些实施例中,硬件设备为人工智能芯片。
在本申请实施例中,对所述硬件设备的类型不做限定,硬件设备的类型可以是多种多样的。例如,硬件设备为AI芯片或其他具有计算能力的芯片。AI芯片可以是多种多样的,例如AI芯片为神经网络处理器(Neural-network Processing Unit,NPU)、视觉处理器(Graphics Processing Unit,GPU)、现场可编程逻辑门阵列(Field Programmable GateArray,FPGA)、数字信号处理器(Digital Signal Processor,DSP)或ASIC等。
NPU是一类专用于人工智能,特别是人工神经网络、机器视觉、机器学习等硬件加速的微处理器。在NPU实现中往往通过专用指令集,大面积片上内存等方式大大提高了神经网络运算速度。同时由于NPU的指令集中包含了大量SIMD指令,能够实现单条指令处理多条数据,极大提高计算并行度。
上述内存分配管理层103,确定共享内存池中的目标内存池,在目标内存池中划分上层应用申请的内存,并分配给上层应用。
上述硬件的应用程序接口层104,获取第一结构体,获取第一结构体包括的内存信息,将内存信息传递给硬件设备,以使硬件设备对内存信息指示的目标内存池中的数据进行处理。
下面将说明本申请实施例在一个实际的应用场景中的示例性应用。
通用的AI芯片主要用于终端和服务器,用于对神经网络的加速计算。AI芯片的设计系统多种多样,不同的硬件设计意味着需要不同的驱动软件来适配。目前AI芯片的系统应用平台主要是服务器的Linux平台和手机的安卓(Android)平台。
为了兼容多平台,同时满足高效率,本申请在底层基于一种share memory的实现,同时对驱动的通信方式进行分层设计来达到兼容多平台的效果:
1、最上层为应用API层,主要是提供应用程序的调用接口。包括memory的申请,读写,释放等接口。在应用申请到内存的同时,返回对应的memory node。Memory node主要用来区分不同的memory区域,包含该memory区域的地址,内存大小等信息。进程间如果拥有相同的memory node,表示使用的是同一块memory区域,即shared memory。该层还提供了ioctl_mem这类接口来查看memory node的具体信息。Memory node不同于现有系统中的虚拟文件描述符,不需要配套的解析过程。Memory node结构中存储虚拟地址和物理地址的映射关系,可以更快速的定位到实际的memory区域,有利于AI芯片这种高速通信的应用场景。
2、第二层是对上层API层的具体实现,在不同的系统中,有不同的实现方式。比如Linux系统可以通过封装shmem这种share memory的方式来实现。Android系统可以通过封装ashmem这种share memory的方式来实现。一些自定义的不同于现存系统的实现,比如memory node,可以通过vendor接口实现。
3、第三层为整个shared memory pool的定义和管理。无论用第二层的何种系统接口来申请memory,实际都是在特定的内存池中申请并分配。可以在系统开始阶段预留好一块memory pool或者通过内存管理提前申请。在从内存池返回shared memory的同时,会返回唯一的memory node。从而区分各memory区域。
4、最底层为硬件API层,主要是获取和应用程序相同的memory node。获取方式可以通过socket或者message等方式,将应用层的memory node传给硬件API层。然后硬件API层通过获取memory node里面内存的具体信息,比如实际的物理地址等,将地址信息传递给AI芯片。AI芯片的DMA可以直接从这块shared memory区域读写数据,从而完成数据的传递。整个驱动通信流程,数据从应用程序申请内存到AI芯片使用内存,数据都是固定在sharedmemory pool的某个区域里。这与图2所示的相关技术中Android Binder IPC通信方式相比较,Android Binder IPC通信方式中至少需要将数据从client中搬移到service manager中,这种方式必然增加开销,降低效率。然而,本申请提供的驱动系统,没有经过任何的数据搬移,只需要传递memory node这个很小的数据结构,可以满足AI芯片的高速数据交换的需求。同时分层的系统设计,可以兼容多个系统平台。达到了设计的效果。
本申请提供的驱动系统,至少具有如下有益效果:
1、兼容多平台的驱动通信方式,配合完整的驱动系统,可以实现不同AI芯片的快速接入,减少研发成本。
2、本申请的驱动通信方式,整个数据传递过程中没有任何数据搬移,只传递memory node这个数据结构,满足AI芯片应用场景的高性能的要求,是一种行业领先的技术方案。
3、同一套通信方式可以部署到不同的系统平台,减少后期的维护、升级等研发成本,有更好的用户体验。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的驱动系统,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、笔记本电脑、台式计算机、机器人、无人机、滑轨屏等)执行本申请各个实施例所述驱动系统或信息处理方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
本申请实施例提供一种电子设备,如图3所示,本申请实施例提供的电子设备300,可以包括:存储器301和处理器302,所述存储器301存储有可在处理器302上运行的计算机程序,该计算机程序包括本申请实施例任一所述的驱动系统又可以称为驱动架构。
存储器301配置为存储由处理器302可执行的指令和应用,还可以缓存待处理器302以及电子设备300中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。
本申请实施例提供一种计算机可读存储介质,本申请实施例提供的计算机可读存储介质,其上存储有本申请实施例任一所述的驱动系统。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述驱动系统实施例的描述是类似的,具有同驱动系统实施例相同或相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请驱动系统实施例的描述而理解。
本申请实施例提供一种信息处理方法,如图4所示,该方法应用前述的驱动系统,该方法包括步骤401-步骤403:
步骤401、在上层应用调用应用程序接口层的第一应用程序接口以申请访问内存的情况下,通过驱动硬件抽象层获得给上层应用分配的内存的内存信息,并封装内存信息得到第一结构体。
其中,第一结构体用于定位给上层应用分配的内存在共享内存池中对应的内存区域。
本申请实施例中,在电子设备的上层应用调用电子设备的驱动系统中的应用程序接口层的第一应用程序接口,以申请访问内存的情况下,电子设备的驱动系统通过驱动硬件抽象层获得给上层应用分配的内存的内存信息,并通过驱动硬件抽象层封装内存信息得到第一结构体。
步骤402、通过硬件的应用程序接口层获取第一结构体,并获取第一结构体包括的内存信息。
本申请实施例中,电子设备的驱动系统通过驱动硬件抽象层获得第一结构体后,将第一结构体传输至硬件的应用程序接口层,进而,驱动系统可以通过硬件的应用程序接口层获取第一结构体,并获取第一结构体包括的内存信息。
步骤403、通过硬件的应用程序接口层将内存信息传递给硬件设备,以使硬件设备对内存信息指示的目标内存池中的数据进行处理。
本申请实施例中,驱动系统的硬件的应用程序接口层与硬件设备之间具有通信连接,驱动系统通过硬件的应用程序接口层将内存信息传递给硬件设备,从而,硬件设备对内存信息指示的目标内存池中的数据进行处理。可见,本申请提供的驱动系统在进行数据处理的过程中,只传递第一结构体,不进行数据搬移,确保对于同一上层应用而言,作为底层的硬件的应用程序接口层和作为上层的上层应用的应用程序接口层访问的是同一内存,进一步的,该驱动系统可以部署到不同的操作系统中,实现跨平台部署,如此,不仅减少了数据搬移,而且减小了研发成本和后期维护成本。
以上方法实施例的描述,与上述驱动系统实施例的描述是类似的,具有同驱动系统实施例相似的有益效果。对于本申请方法实施例中未披露的技术细节,请参照本申请驱动系统实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一些实施例”或“另一些实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”或“在一些实施例中”或“在另一些实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的驱动系统、方法和设备,可以通过其它的方式实现。以上所描述的驱动系统实施例仅仅是示意性的,例如,所述层的划分,仅仅为一种逻辑功能划分。
在本申请各实施例中驱动系统的各层可以全部集成在一个处理单元中,也可以是各层分别单独作为一个单元,也可以两个或两个以上层集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述驱动系统实施例的全部或部分可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述驱动系统实施例的各个层;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、笔记本电脑、台式计算机、机器人、无人机、滑轨屏等)执行本申请各个实施例所述驱动系统的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请所提供的几个驱动系统实施例中所揭露的驱动,在不冲突的情况下可以任意组合,得到新的驱动实施例。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (11)

1.一种驱动系统,其特征在于,包括:
上层应用的应用程序接口层,提供通用的第一应用程序接口供所述上层应用调用,在所述上层应用申请访问内存的情况下,接收驱动硬件抽象层反馈的第一结构体,所述第一结构体用于定位给所述上层应用分配的内存在内存分配管理层的共享内存池中对应的内存区域;
所述驱动硬件抽象层,实现所述第一应用程序接口的通信功能,获得给所述上层应用分配的内存的内存信息,并封装所述内存信息得到所述第一结构体;
所述内存分配管理层,确定所述共享内存池中的目标内存池,在所述目标内存池中划分所述上层应用申请的内存,并分配给所述上层应用;
硬件的应用程序接口层,获取所述第一结构体,获取所述第一结构体包括的内存信息,将所述内存信息传递给硬件设备,以使所述硬件设备对所述内存信息指示的目标内存池中的数据进行处理。
2.根据权利要求1所述的系统,其特征在于,所述第一结构体中存储有虚拟地址和物理地址的映射关系,所述虚拟地址能被所述上层应用用于访问给所述上层应用分配的内存,所述物理地址能被所述硬件设备用于访问给所述上层应用分配的内存。
3.根据权利要求1所述的系统,其特征在于,所述应用程序接口层,还提供第二应用程序接口供所述上层应用调用,以查看所述第一结构体包括的所述内存信息。
4.根据权利要求1所述的系统,其特征在于,所述第一应用程序接口至少包括:
内存的申请接口,用于支持所述硬件设备对内存的申请操作;
内存的读写接口,用于支持所述硬件设备对内存的读写操作;
内存的释放接口,用于支持所述硬件设备对内存的释放操作。
5.根据权利要求1所述的系统,其特征在于,所述驱动硬件抽象层,封装内存信息得到所述第一结构体包括:获得与操作系统的属性信息关联的第二结构体;封装所述第二结构体,得到所述第一结构体,所述第二结构体封装有所述内存信息。
6.根据权利要求5所述的系统,其特征在于,所述属性信息表征所述操作系统的内存管理方式。
7.根据权利要求1至6任一项所述的系统,其特征在于,所述硬件的应用程序接口层,提供进程间通信接口,以获取所述第一结构体。
8.根据权利要求1至6任一项所述的系统,其特征在于,所述硬件设备为人工智能芯片。
9.一种信息处理方法,其特征在于,所述方法应用于所述权利要求1至8任一项所述的驱动系统,所述方法包括:
在所述上层应用调用所述应用程序接口层的所述第一应用程序接口以申请访问内存的情况下,通过所述驱动硬件抽象层获得给所述上层应用分配的内存的内存信息,并封装所述内存信息得到所述第一结构体;所述第一结构体用于定位给所述上层应用分配的内存在所述共享内存池中对应的内存区域;
通过所述硬件的应用程序接口层获取所述第一结构体,并获取所述第一结构体包括的所述内存信息;
通过所述硬件的应用程序接口层将所述内存信息传递给硬件设备,以使所述硬件设备对所述内存信息指示的所述目标内存池中的数据进行处理。
10.一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现权利要求9所述的信息处理方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被所述处理器执行时,实现权利要求9所述的信息处理方法。
CN202010739377.4A 2020-07-28 2020-07-28 驱动系统、信息处理方法、电子设备及存储介质 Active CN111857852B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202010739377.4A CN111857852B (zh) 2020-07-28 2020-07-28 驱动系统、信息处理方法、电子设备及存储介质
PCT/CN2021/103063 WO2022022199A1 (zh) 2020-07-28 2021-06-29 驱动系统、信息处理方法、电子设备及存储介质
EP21850601.2A EP4167081A4 (en) 2020-07-28 2021-06-29 READER SYSTEM, INFORMATION PROCESSING METHOD, ELECTRONIC DEVICE, AND STORAGE MEDIUM
US18/090,923 US20230137415A1 (en) 2020-07-28 2022-12-29 Driver system, information processing method, electronic devicce and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010739377.4A CN111857852B (zh) 2020-07-28 2020-07-28 驱动系统、信息处理方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111857852A CN111857852A (zh) 2020-10-30
CN111857852B true CN111857852B (zh) 2022-05-27

Family

ID=72948263

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010739377.4A Active CN111857852B (zh) 2020-07-28 2020-07-28 驱动系统、信息处理方法、电子设备及存储介质

Country Status (4)

Country Link
US (1) US20230137415A1 (zh)
EP (1) EP4167081A4 (zh)
CN (1) CN111857852B (zh)
WO (1) WO2022022199A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111857852B (zh) * 2020-07-28 2022-05-27 Oppo广东移动通信有限公司 驱动系统、信息处理方法、电子设备及存储介质
CN112667213A (zh) * 2020-12-31 2021-04-16 联想未来通信科技(重庆)有限公司 一种设备抽象模型的动态生成方法及装置
CN114385370B (zh) * 2022-01-18 2022-10-25 重庆紫光华山智安科技有限公司 内存分配方法、系统、设备及介质
CN115858055A (zh) * 2023-02-06 2023-03-28 中车工业研究院(青岛)有限公司 一种软硬件间的解耦方法、系统、装置及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102629202A (zh) * 2012-03-07 2012-08-08 维图通讯有限公司 一种处理内嵌多模块物联网移动终端设备数据系统的方法
CN103425592A (zh) * 2013-08-05 2013-12-04 大唐移动通信设备有限公司 一种多进程系统中的内存管理方法及装置
CN110413327A (zh) * 2019-07-16 2019-11-05 阿里巴巴集团控股有限公司 一种基于硬件抽象层的硬件驱动方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5984499A (en) * 1997-09-12 1999-11-16 Manufacturing Data Systems, Inc. Method and apparatus for a numerical control system for processing multiple job streams
US8726294B2 (en) * 2010-10-01 2014-05-13 Z124 Cross-environment communication using application space API
WO2004111840A2 (en) * 2003-06-17 2004-12-23 Stmicroelectronics Belgium N.V. Customer framework for embedded applications
US20080196043A1 (en) * 2007-02-08 2008-08-14 David Feinleib System and method for host and virtual machine administration
US8185783B2 (en) * 2007-11-22 2012-05-22 Microsoft Corporation Split user-mode/kernel-mode device driver architecture
US8504757B1 (en) * 2012-09-16 2013-08-06 Proximal Data, Inc. Method for translating virtual storage device addresses to physical storage device addresses in a proprietary virtualization hypervisor
CN104572165B (zh) * 2014-03-21 2017-10-27 中电科技(北京)有限公司 一种基于飞腾服务器的uefi固件实现方法
CN106293966B (zh) * 2016-08-03 2019-10-18 武汉深之度科技有限公司 一种lfs系统中ap层与sp层的通信方法及lfs系统
CN106406977B (zh) * 2016-08-26 2019-06-11 山东乾云启创信息科技股份有限公司 一种gpu虚拟化实现系统及方法
CN111314799A (zh) * 2018-12-11 2020-06-19 中兴通讯股份有限公司 终端系统构架、通信系统及通信方法、存储介质
CN111857852B (zh) * 2020-07-28 2022-05-27 Oppo广东移动通信有限公司 驱动系统、信息处理方法、电子设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102629202A (zh) * 2012-03-07 2012-08-08 维图通讯有限公司 一种处理内嵌多模块物联网移动终端设备数据系统的方法
CN103425592A (zh) * 2013-08-05 2013-12-04 大唐移动通信设备有限公司 一种多进程系统中的内存管理方法及装置
CN110413327A (zh) * 2019-07-16 2019-11-05 阿里巴巴集团控股有限公司 一种基于硬件抽象层的硬件驱动方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
多核系统共享内存资源分配和管理研究;高珂 等;《计算机学报》;20150531;第38卷(第5期);第1020-1034页 *

Also Published As

Publication number Publication date
WO2022022199A1 (zh) 2022-02-03
CN111857852A (zh) 2020-10-30
EP4167081A1 (en) 2023-04-19
EP4167081A4 (en) 2023-11-01
US20230137415A1 (en) 2023-05-04

Similar Documents

Publication Publication Date Title
CN111857852B (zh) 驱动系统、信息处理方法、电子设备及存储介质
WO2021051914A1 (zh) 基于gpu资源的数据处理方法、电子设备及系统
CN107077377B (zh) 一种设备虚拟化方法、装置、系统及电子设备、计算机程序产品
Yang et al. Re-thinking CNN frameworks for time-sensitive autonomous-driving applications: Addressing an industrial challenge
CN111258744A (zh) 一种基于异构计算的任务处理方法及软硬件框架系统
CN111309649B (zh) 一种数据传输和任务处理方法、装置及设备
US11494321B1 (en) State buffer memloc reshaping
US11366690B2 (en) Scheduling commands in a virtual computing environment
CN115629884A (zh) 一种线程调度方法、电子设备及存储介质
US20220261489A1 (en) Capability management method and computer device
CN113377529B (zh) 一种智能加速卡及基于智能加速卡的数据处理方法
CN108829530B (zh) 一种图像处理方法及装置
US20230185595A1 (en) Method for realizing live migration, chip, board, and storage medium
CN113950033A (zh) 数据传输方法和设备
CN113946370B (zh) 驱动系统及信息处理方法、设备、存储介质
CN105550050A (zh) 硬件通信的方法及装置
US11550736B1 (en) Tensorized direct memory access descriptors
US8539516B1 (en) System and method for enabling interoperability between application programming interfaces
WO2022261928A1 (zh) 运算加速方法及运算加速器
WO2023159652A1 (zh) 一种ai系统、内存访问控制方法及相关设备
US11748253B1 (en) Address generation for page collision prevention in memory regions
US11789859B1 (en) Address generation for page collision prevention
US11983128B1 (en) Multidimensional and multiblock tensorized direct memory access descriptors
WO2024087513A1 (zh) 应用场景的数据处理方法、系统、电子设备及存储介质
CN117311941B (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