CN113051199A - 数据传输方法及装置 - Google Patents
数据传输方法及装置 Download PDFInfo
- Publication number
- CN113051199A CN113051199A CN201911368047.2A CN201911368047A CN113051199A CN 113051199 A CN113051199 A CN 113051199A CN 201911368047 A CN201911368047 A CN 201911368047A CN 113051199 A CN113051199 A CN 113051199A
- Authority
- CN
- China
- Prior art keywords
- task
- data transmission
- data
- access device
- direct access
- 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
Links
Images
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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- 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
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本发明公开了一种数据传输方法,适于在片上系统的内部存储器和与该片上系统耦接的外部存储器之间进行数据传输,该方法由片上系统的处理器执行,包括步骤:将至少一个待执行的数据传输任务的执行信息添加至任务队列;将任务队列中的一数据传输任务的执行信息发送至直接存取装置,以便直接存取装置来执行该数据传输任务;以及接收直接存取装置发来的中断请求,中断请求适于指示数据传输任务执行完毕,以便处理器将任务队列中的下一个数据传输任务的执行信息发送至直接存取装置。本发明一并公开了相应的数据传输装置、片上系统及智能设备。
Description
技术领域
本发明涉及嵌入式技术领域,尤其涉及一种片上系统的内部存储器与外部存储器之间的数据传输方法及装置。
背景技术
随着网络通信技术的发展,当今社会已进入物联网时代。嵌入式片上系统(Systemon Chip,SoC)是一种集成有处理器、存储器、外部设备、I/O接口等模块的系统,其嵌入物联网设备中,用于实现特定功能。为了满足低功耗、低成本的设计要求,片上系统的内部存储容量通常较小,大量数据存储在与片上系统耦接的外部存储器上。
内部存储器读写速度快,但容量小;外部存储器容量大,但读写速度慢。在一些应用场景中,需要实现内部存储器与外部存储器之间的数据传输,以平衡读写速度和存储容量。为了避免处理器执行数据传输任务而造成的计算资源浪费(处理器在进行数据传输时无法执行其他计算任务),片上系统中通常设置有直接存储器访问(Direct MemoryAccess,DMA)装置,由该装置来实现存储器之间的数据传输。在DMA装置进行数据传输的过程中,处理器可以执行其他计算任务,不必浪费时间专门等待数据传输任务完成。然而,DMA的数据传输过程受处理器控制,在某些情况中,即使采用DMA装置来传输数据,由于处理器启动数据传输过程的时机不当,也会造成处理器资源的浪费。
例如,某一程序包括a~d四个步骤,其中,步骤c、d需要将数据从外部存储器传输至内部存储器。如图1所示,在t1时刻,处理器将步骤c所需要的数据信息发送至DMA装置,DMA装置开始传输步骤c的数据,与此同时,处理器顺序执行步骤a、b。在t2时刻,DMA装置完成数据传输,向处理器发送中断请求。在t3时刻,处理器将步骤d所需要的数据信息发送至DMA装置,DMA装置开始传输步骤d的数据,与此同时,处理器执行步骤c。在t4时刻,步骤c已执行完毕,但DMA装置尚未完成步骤d的数据传输,处理器只能等待,直至t5时刻数据传输完成,才开始执行步骤d。
在该示例中,由于处理器在t3时刻才将步骤d所需要的数据信息发送至DMA装置,使得DMA装置在t2~t3时间段处于空闲状态,传输步骤d数据的时间延后,导致处理器在t4~t5时间段只能等待数据传输完成,而无法执行计算任务,浪费了计算资源。
发明内容
为此,本发明提供一种数据传输方法及装置,以力图解决或至少缓解上面存在的问题。
根据本发明的第一个方面,提供一种数据传输方法,适于在片上系统的内部存储器和与该片上系统耦接的外部存储器之间进行数据传输,该方法由片上系统的处理器执行,包括步骤:将至少一个待执行的数据传输任务的执行信息添加至任务队列;将任务队列中的一数据传输任务的执行信息发送至直接存取装置,以便直接存取装置来执行该数据传输任务;以及接收直接存取装置发来的中断请求,中断请求适于指示数据传输任务执行完毕,以便处理器将任务队列中的下一个数据传输任务的执行信息发送至直接存取装置。
可选地,在根据本发明的数据传输方法中,片上系统还包括硬件加速单元,硬件加速单元与内部存储器耦接;数据传输任务包括:将外部存储器中的数据传输至内部存储器,以便硬件加速单元获取并处理该数据;以及在硬件加速单元处理完该数据后,将处理后的数据从内部存储器传输至外部存储器。
可选地,在根据本发明的数据传输方法中,执行信息包括数据传输的源起始地址、目标起始地址和数据量。
可选地,在根据本发明的数据传输方法中,任务队列为链表结构,将待执行的数据传输任务的执行信息添加至任务队列的步骤包括:将待执行的数据传输任务的执行信息添加至链表的尾部。
可选地,在根据本发明的数据传输方法中,将任务队列中的一数据传输任务的执行信息发送至直接存取装置步骤包括:将任务队列中的一数据传输任务的执行信息写入直接存取装置的配置寄存器。
可选地,在根据本发明的数据传输方法中,任务队列还包括各数据传输任务的状态标识,状态标识包括未执行、执行中和已执行,在将待执行的数据传输任务的执行信息添加至任务队列之后,将该数据传输任务的状态标识设置为未执行;在将数据传输任务的执行信息发送至直接存取装置之后,将该数据传输任务的状态标识设置为执行中;在接收到直接存取装置发来的用于指示数据传输任务执行完毕的中断请求之后,将该数据传输任务的状态标识设置为已执行。
可选地,在根据本发明的数据传输方法中,还包括步骤:根据数据传输任务的状态标识,来判断数据传输任务的目标地址中的数据是否可用。
可选地,在根据本发明的数据传输方法中,任务队列还包括各数据传输任务的后操作信息,后操作为数据传输任务执行完毕后所需要执行的操作;在接收直接存取装置发来的中断请求的步骤之后,还包括步骤:执行相应数据传输任务的后操作。
可选地,在根据本发明的数据传输方法中,后操作包括以下至少一种:释放源地址存储空间、检验写入目标地址的数据是否正确、检验直接存取装置执行数据传输任务的正确性。
根据本发明的第二个方面,提供一种数据传输装置,驻留于片上系统的内部存储器中,适于在内部存储器和与该片上系统耦接的外部存储器之间进行数据传输,该装置包括:任务添加模块,适于将至少一个待执行的数据传输任务的执行信息添加至任务队列;任务注册模块,适于将任务队列中的一数据传输任务的执行信息发送至直接存取装置,以便直接存取装置来执行该数据传输任务;请求响应模块,适于接收直接存取装置发来的中断请求,中断请求适于指示数据传输任务执行完毕;以及响应于该中断请求,调用任务注册模块,以便任务注册模块将任务队列中的下一个数据传输任务的执行信息发送至直接存取装置。
根据本发明的第三个方面,提供一种片上系统,包括处理器、内部存储器以及直接存取装置,该片上系统与外部存储器耦接,处理器适于将至少一个待执行的数据传输任务的执行信息添加至任务队列,以及将任务队列中的一数据传输任务的执行信息发送至直接存取装置,其中,数据传输任务适于实现内部存储器与外部存储器之间的数据传输;直接存取装置适于根据接收到的执行信息来执行数据传输任务,以及在数据传输任务执行完毕后,向处理器发送中断请求;处理器响应于中断请求,将任务队列中的下一个数据传输任务的执行信息发送至直接存取装置。
可选地,在根据本发明的片上系统中,还包括与内部存储器耦接的硬件加速单元,数据传输任务包括:将外部存储器中的数据传输至内部存储器,以便硬件加速单元获取并处理该数据;以及在硬件加速单元处理完该数据后,将处理后的数据从内部存储器传输至外部存储器。
可选地,在根据本发明的片上系统中,执行信息包括数据传输的源起始地址、目标起始地址和数据量。
根据本发明的第四个方面,提供一种智能设备,包括上述片上系统。
根据本发明的数据传输方案,处理器维护一个任务队列,该任务队列包括待执行的各项数据传输任务的执行信息。处理器依次将任务队列中的各项数据传输任务的执行信息发送至直接存取装置,以便直接存取装置执行各项数据传输任务。每当直接存取装置执行完一个数据传输任务,处理器旋即将任务队列中的下一个数据传输任务的执行信息发送至直接存取装置,以便直接存取装置继续执行下一个数据传输任务。本发明的任务队列大大缩短了直接存取装置执行两次数据传输任务之间的间隔时间,提高了直接存取装置的利用率,直接存取装置能够满负荷运转,使得数据能够尽早完成传输,从而减少甚至消除处理器的等待时间,避免浪费处理器的计算资源。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了现有技术的数据传输过程示意图;
图2示出了根据本发明一个实施例的数据传输效果的示意图;
图3示出了根据本发明一个实施例的片上系统100的示意图;
图4示出了根据本发明一个实施例的数据传输方法400的流程图;
图5示出了根据本发明一个实施例的任务队列的示意图;
图6示出了根据本发明另一个实施例的任务队列的示意图;
图7示出了根据本发明一个实施例的将数据传输任务的执行信息发送至直接存取装置(DMA)的过程的示意图;
图8A、8B示出了将数据传输任务的执行信息添加至任务队列的不同时机的数据传输效果的示意图;
图9示出了根据本发明另一个实施例的数据传输效果的示意图;
图10示出了根据本发明一个实施例的数据传输装置1000的示意图;
图11示出了将本发明的片上系统100应用于智能音箱场景的示意图;
图12示出了智能音箱场景中的数据传输效果的示意图;
图13示出了将本发明的片上系统100应用于智能耳机场景的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
针对现有技术中存在的问题,本发明提供一种数据传输方法及装置,以提高片上系统的内部存储器与外部存储器之间的数据传输效率,尽可能减少处理器计算资源浪费。
图3示出了根据本发明一个实施例的片上系统100的示意图。片上系统100可以包含在智能设备中,以便在智能设备中实现相应的功能,可实现的功能包括但不限于执行相关控制程序、进行数据分析、运算和处理、网络通信、控制智能设备中的外设等。这样的智能设备例如可以是手机、平板电脑等个人移动终端,也可以是智能音箱、智能门禁、智能车载设备、智能工控设备等物联网设备,但不限于此。
如图3所示,片上系统100包括处理器110和内部存储器120。处理器110例如可以实现为单核或多核处理器。内部存储器120中存储有程序指令以及相关数据。处理器110与内部存储器120例如通过片内总线耦接,处理器110基于内部存储器120中存储的指令和数据来执行相应的运算和控制任务。
当片上系统100应用于物联网设备中时,通常需要满足低功耗、低成本的设计要求,处理器110的计算能力以及内部存储器120的存储容量均较低。为了实现大容量的数据存储,如图3所示,通常在片上系统100上耦接外部存储器200。
片上系统的内部存储器120读写速度快,但容量小;外部存储器200的容量大,但读写速度慢。
根据一种实施例,内部存储器120为紧耦合存储器(Tightly Coupled Memories,TCM),其与处理器110紧密耦合,能够向处理器110提供与高速缓存(即cache,未在图3中示出)性能相当的数据访问服务。与高速缓存不同的是,处理器110可以精准控制TCM中存储哪些数据;而高速缓存是一种通用目的的快速存储区,其中存储有哪些数据依赖于高速缓存自身的统计特性,不受处理器110控制。紧耦合存储器进一步包括用于存储指令的指令紧耦合存储器(Instruction TCM,ITCM)和用于存储数据的数据紧耦合存储器(Data TCM,DTCM)。
外部存储器200例如可以实现为动态随机存取存储器(Dynamic Random AccessMemory,DRAM)、同步动态随机存取存储器(synchronous dynamic random-access memory,SDRAM)等,但不限于此。
在一些应用场景中,需要实现内部存储器120与外部存储器200之间的数据传输,以实现数据的加速访问,平衡读写速度和存储容量。
在一个应用场景中,处理器110有目的地针对特定指令或数据进行加速访问,例如,有目的地对常用的中断处理函数、加解密函数等程序指令进行加速访问,以提高中断处理以及数据加解密的速度。由于高速缓存无法实现特定数据的加速,因此,需要将特定数据由外部存储器200传输至片内的存储器120,处理器110从存储器120中获取特定数据,以实现加速访问。
在另一个应用场景中,片上系统100包含于智能音箱、智能门禁、智能车载设备中,用于处理音频、图像等计算任务。如图3所示,片上系统100中还包括硬件加速单元140,硬件加速单元140为专门用于执行特定计算任务(例如执行神经网络中的特定处理层的浮点数运算)的专用集成电路(Application Specific Integrated Circuit,ASIC),以加速计算过程,节省计算时间。硬件加速单元140通过片内总线耦接至内部存储器120,其仅能访问内部存储器120中的数据,而无法访问外部存储器200。因此,需要将外部存储器200中的数据传输至内部存储器120以供硬件加速单元140进行读取和处理,在硬件加速单元140处理完毕后,再将处理后的数据从内部存储器120传输至外部存储器200(即将内部存储器120中的数据写回外部存储器200)。在硬件加速单元140执行计算任务的过程中,数据会在内部存储器120与外部存储器200之间进行多次来回传输。
内部存储器120与外部存储器200之间的数据传输任务可以由处理器110执行。这种情况下,处理器110将耗费大量时间等待存储器120、存储器200执行I/O操作,并且在等待时无法执行其他计算任务,造成了处理器110的计算资源的浪费。为了避免处理器110执行数据传输任务而造成的计算资源浪费,如图3所示,片上系统100中包括直接存取装置130。直接存取装置130例如可以实现为直接存储器访问(DMA)装置。
直接存取装置130基于处理器110的控制指令来执行数据传输任务,实现内部存储器120与外部存储器200之间的数据异步传输。在直接存取装置130执行数据传输任务的同时,处理器110可以执行其他计算任务,而不必浪费时间专门等待数据传输任务完成。
为了进一步提高数据传输效率,尽可能避免如图1所示的浪费处理器110计算资源的情况,本发明提供一种数据传输方法400。
在本发明的数据传输方法400中,处理器110维护一个任务队列,该任务队列位于片上系统的内部存储器120中,用于存储待执行的数据传输任务的执行信息。当处理器110发现待执行的数据传输任务时,即将该任务的执行信息存储至任务队列中。处理器110依次将任务队列中的各项数据传输任务的执行信息发送至直接存取装置130,以便直接存取装置130执行各项数据传输任务,实现内部存储器120与外部存储器200之间的数据传输。每当直接存取装置130执行完一个数据传输任务后,会向处理器110发送中断请求,处理器110旋即将任务队列中的下一个数据传输任务发送至直接存取装置130执行。本发明的任务队列大大缩短了直接存取装置130执行两次数据传输任务之间的间隔时间,提高了直接存取装置130的利用率,直接存取装置130能够满负荷运转,使得数据能够尽早完成传输,从而减少甚至消除处理器110的等待时间,避免浪费处理器110的计算资源。
图2示出了采用本发明的数据传输方法400后的数据传输效果的示意图。在图2所示的实施例中,某一程序包括a~d四个步骤,其中,步骤c、d需要将数据从外部存储器传输至内部存储器,步骤c、d分别对应于一个数据传输任务。处理器(CPU)在执行程序的步骤a之前,将步骤c、d对应的数据传输任务的执行信息存储至任务队列(任务队列未在图2中示出)中。
在t1时刻,处理器将数据传输任务c的执行信息发送至直接存取装置(DMA),DMA开始传输步骤c的数据,与此同时,处理器执行步骤a。
在t2时刻,DMA完成步骤c的数据传输,向CPU发出中断请求。CPU暂停执行步骤b而响应该中断请求,将数据传输任务d的执行信息发送至DMA,DMA随即开始传输步骤d的数据,CPU则继续执行步骤b。
在t3时刻,步骤b执行完毕。由于DMA于t2时刻已完成步骤c的数据传输,因此CPU在执行完步骤b后可以立即执行步骤c。
在t3’时刻,DMA完成步骤d的数据传输,向CPU发送中断请求。CPU暂停执行步骤c而响应该中断请求,由于当前任务队列中的数据传输任务均已完成,因此CPU不再向DMA发送数据传输任务的执行信息,DMA空闲。
在t4时刻,步骤c执行完毕。由于DMA于t3’时刻已完成步骤d的数据传输,因此CPU在执行完步骤c后可以立即执行步骤d。
如图2所示,在采用了本发明的数据传输方案后,DMA可以连续执行步骤c、步骤d的数据传输任务,且CPU可以连续执行步骤a~d,CPU无需等待DMA进行数据传输,没有浪费计算资源。与图1所示的现有技术的实施例相比,图2实施例中缩短了DMA两次执行数据传输任务的间隔时间,提高了DMA的利用率,从而提高了数据传输效率,使得数据能够尽早完成传输,从而减少甚至消除CPU的等待时间,避免浪费CPU计算资源。
以下对本发明的数据传输方案做进一步说明。
图4示出了根据本发明一个实施例的数据传输方法400的流程图。方法400由片上系统的处理器110执行,适于在片上系统的内部存储器120和与片上系统耦接的外部存储器200之间进行数据传输。如图4所示,方法400始于步骤S410。
在步骤S410中,将至少一个待执行的数据传输任务的执行信息添加至任务队列。
根据一种实施例,任务队列为链表结构,以便于在任务队列中动态添加或删除数据传输任务。每当处理器110检测到待执行的数据传输任务,将该数据传输任务的执行信息添加至该链表的尾部。为了节省存储空间,任务队列可以进一步实现为循环链表。
图5示出了采用链表结构的任务队列的示意图。如图5所示,数据传输任务0为该链表中的第一个待执行的数据传输任务,也是该链表的表头。当前链表中包括k个待执行的数据任务,当处理器110检测到新的数据传输任务k+1时,将该数据传输任务的执行信息添加至链表的尾部。
根据一种实施例,如图5所示,数据传输任务的执行信息包括数据传输的源起始地址(src)、目标起始地址(dst)和数据量(size)。数据传输任务用于将源起始地址src开始的、大小为数据量size的存储区域中的数据传输至由目标起始地址dst开始的、大小为数据量size的存储区域中。例如,源起始地址为0x00000000,目标起始地址为0x20000000,数据量为0x03a4,则将存储区域0x00000000~0x000003a3中的数据对应传输至0x20000000~0x200003a3中。
根据一种实施例,如图6所示,除了各数据传输任务的执行信息之外,任务队列中还包括各数据传输任务的状态标识(status),状态标识例如包括未执行、执行中和已执行。在将待执行的数据传输任务的执行信息添加至任务队列后,将该数据传输任务的状态标识设置为未执行。在后续步骤S420将数据传输任务的执行信息发送至直接存取装置之后,将该数据传输任务的状态标识设置为执行中;在后续步骤S430接收到直接存取装置发来的用于指示数据传输任务执行完毕的中断请求之后,将该数据传输任务的状态标识设置为已执行。
数据传输任务的状态标识可以用于判断该数据传输任务的目标地址中的数据是否可用,其中,目标地址为由目标起始地址dst开始的、大小为数据量size的地址范围。状态标识为未执行或执行中,则数据传输任务尚未完成,目标地址的数据不可用。若状态标识为已执行,则数据传输任务完成,目标地址的数据可用,若目标地址为片上系统的内部存储器120,则处理器110或硬件加速单元140可以获取目标地址中的数据,并对其进行计算处理。
根据一种实施例,如图6所示,除了各数据传输任务的执行信息之外,任务队列中还包括各数据传输任务的后操作信息(post-work)。后操作为数据传输任务执行完毕后所需要执行的操作,其例如可以是释放源地址存储空间(即将源地址中的数据删除)、检验写入目标地址的数据是否正确、检验直接存取装置执行数据传输任务的正确性等,但不限于此。
步骤S420、S430用于根据任务队列来执行数据传输任务。需要说明的是,步骤S420、S430描述了单个数据传输任务的执行过程。当任务队列包括多个待执行的数据传输任务时,步骤S420、S430相应地被循环执行多次。
在步骤S420中,将任务队列中的一数据传输任务的执行信息发送至直接存取装置,以便直接存取装置来执行该数据传输任务。
步骤S420中的“一数据传输任务”通常指的是任务队列中的第一个未执行的数据传输任务。
根据一种实施例,在步骤S420中,处理器110将数据传输任务的执行信息写入直接存取装置130的配置寄存器。图7示出了该过程的示意图。
如图7所示,当前任务队列中第一个未执行的数据传输任务为数据传输任务0,直接存取装置130包括源起始地址寄存器、目标起始地址寄存器和数据量寄存器。处理器110将数据传输任务0的源起始地址、目标起始地址、数据量分别写入直接存取装置130的源起始地址寄存器、目标起始地址寄存器和数据量寄存器。
根据一种实施例,处理器在将数据传输任务的执行信息发送至直接存取装置之后,将该数据传输任务的状态标识设置为执行中。
直接存取装置接收到处理器发来的执行信息后,根据执行信息来执行数据传输任务。若源起始地址位于内部存储器120,目标起始地址位于外部存储器200,则将内部存储器120中的数据传输至外部存储器200;若源起始地址位于外部存储器200,目标起始地址位于内部存储器120,则将外部存储器200中的数据传输至内部存储器120。
直接存取装置执行完当前的数据传输任务后,向处理器发送中断请求。相应地,处理器执行步骤S430,接收直接存取装置发来的中断请求,该中断请求适于指示数据传输任务执行完毕。
处理器接收到直接存取装置发来的中断请求后,对该中断请求进行响应。根据一种实施例,在接收到直接存取装置发来的中断请求后,处理器将相应数据传输任务的状态标识设置为已执行,并且,执行该数据传输任务的后操作。在后操作执行完毕后,将任务队列中的下一个数据传输任务的执行信息发送至直接存取装置,以便直接存取装置继续执行数据传输任务。
例如,在步骤S430中,处理器接收到直接存取装置发来的中断请求,该请求指示数据传输任务0执行完成。随后,处理器响应于该中断请求,将任务队列(任务队列如图5、图6所示)中的下一个数据传输任务,即数据传输任务1的执行信息发送至直接存取装置,以便直接存取装置根据接收到的执行信息来执行数据传输任务1。
本领域技术人员可以理解,若步骤S430发来的中断请求指示任务队列中的最后一个数据传输任务执行完毕,则任务队列中不存在下一个数据传输任务,因此,数据传输过程终止,处理器不再向直接存取装置发送执行信息。
需要说明的是,尽管在图4所示的实施例中,步骤S410~S430先后顺序执行,但步骤S410与步骤S420~S430之间没有严格的执行顺序。步骤S410可以在数据传输方法400的任意阶段执行,即,每当处理器110检测到待执行的数据传输任务,则随即将该任务的执行信息添加至任务队列。
并且,为了提高数据传输效率,减少甚至消除处理器的等待时间,避免处理器计算资源的浪费,处理器110总是尽可能早地将待执行的数据传输任务的执行信息添加至任务队列。
例如,某一程序包括a~f六个步骤,其中步骤c、e需要进行数据传输,并且二者所传输的数据之间不存在依赖关系。处理器110尽可能早地将数据传输任务c、e的执行信息添加至任务队列,意味着处理器110在执行该程序之前将数据传输任务c、e的执行信息添加至任务队列,随后再开始执行该程序的第一个步骤a。这样,处理器执行步骤a与直接存取装置130执行数据传输任务c可以同时进行,最大化利用直接存取装置130,将处理器110等待数据传输的可能性降至最低。
图8A、8B示出了将数据传输任务的执行信息添加至任务队列的不同时机的数据传输效果的示意图。
图8A示出了在执行步骤a之前将数据传输任务c、e的执行信息添加至任务队列的数据传输效果的示意图(任务队列未在图8A中示出)。如图8A所示,处理器(CPU)在将数据传输任务c data、e data写入任务队列后,在t0时刻开始执行步骤a;与此同时,直接存取装置DMA开始传输步骤c的数据。在该实施例中,DMA完成步骤c的数据传输任务的时刻t1早于CPU执行完步骤b的时刻t2,因此CPU在执行完步骤b后可以立即执行步骤c。并且,DMA完成步骤e的数据传输任务的时刻t3早于CPU执行完步骤d的时刻t4,因此CPU在执行完步骤d后可以立即执行步骤e。在该实施例中,CPU可以连续执行步骤a~f,无需等待DMA进行数据传输,没有浪费计算资源。
图8B示出了在执行完步骤a之后将数据传输任务c、e的执行信息添加至任务队列的数据传输效果的示意图(任务队列未在图8B中示出)。如图8B所示,CPU在执行完步骤a后,将数据传输任务c、e写入任务队列。随后,在t0时刻开始执行步骤b;与此同时,DMA开始传输步骤c的数据。在该实施例中,DMA完成步骤c的数据传输任务的时刻t2晚于CPU执行完步骤b的时刻t1,因此CPU执行完步骤b后无法立即执行步骤c,而要等待DMA完成数据传输。CPU在t1~t2时间段处于等待状态,其计算资源被浪费。此外,DMA完成步骤e的数据传输任务的时刻t4晚于CPU执行完步骤d的时刻t3,因此CPU执行完步骤d后无法立即执行步骤e,而要等待DMA完成数据传输。CPU在t3~t4时间段处于等待状态,其计算资源被浪费。
图9示出了根据本发明一个实施例的数据传输效果的示意图。在该实施例中,某一程序包括a~f六个步骤,其中步骤c、e需要进行数据传输,并且二者所传输的数据之间不存在依赖关系。在CPU执行步骤a之前,将数据传输任务c data read、e data read写入任务队列,这两个数据传输任务分别将步骤c、步骤e所需要的数据从外部存储器传输至更靠近CPU的内部存储器中,即,将数据从外部存储器读入内部存储器。
在t0时刻,CPU开始执行步骤a,并且DMA开始读入步骤c的数据。
DMA完成步骤c的数据传输任务的时刻t1早于CPU执行完步骤b的时刻t2,因此CPU在执行完步骤b后可以立即执行步骤c。
CPU在t3时刻执行完步骤c后,将数据传输任务c data write添加至任务队列,该数据传输任务将步骤c处理后的数据从内部存储器传输至外部存储器中,即,将数据从内部存储器写回外部存储器。这样,DMA在t4时刻执行完数据传输任务e data read后,继续执行数据传输任务c data write。
DMA完成步骤e的数据传输任务的时刻t4早于CPU执行完步骤d的时刻t5,因此CPU在执行完步骤d后可以立即执行步骤e。
CPU在t6时刻执行完步骤e后,将数据传输任务e data write添加至任务队列,该数据传输任务将步骤e处理后的数据从内部存储器传输至外部存储器中,即,将数据从内部存储器写回外部存储器。这样,DMA在t6时刻执行完数据传输任务c data write后,可以继续执行数据传输任务e data write。
本发明的数据传输方案可以实现片上系统的内部存储器与外部存储器之间的高效数据传输,从而可以更好地利用处理器的计算资源,并且可以将更多的数据存储至容量更大的外部存储器中。
本发明的数据传输方法400由处理器执行。具体地,本领域技术人员可以编写用于执行本发明的数据传输方法400的程序指令,并将该程序指令写入内部存储器120。处理器110从内部存储器120中读取该程序指令并执行,从而实现本发明的数据传输方法400。
图10示出了根据本发明一个实施例的数据传输装置1000的示意图。数据传输装置1000为用于指示处理器110执行数据传输方法400的程序指令集合,其驻留于片上系统的内部存储器120中,适于在内部存储器120和与片上系统100耦接的外部存储器200之间进行数据传输。如图10所示,数据传输装置1000包括任务添加模块1010、任务注册模块1020以及请求响应模块1030三个功能模块。
任务添加模块1010适于将至少一个待执行的数据传输任务的执行信息添加至任务队列。任务添加模块1010具体用于执行如前述步骤S410的方法,任务添加模块1010的具体处理逻辑和功能可以参见前述步骤S410的相关描述,此处不再赘述。
任务注册模块1020适于将任务队列中的一数据传输任务的执行信息发送至直接存取装置,以便直接存取装置来执行该数据传输任务,以及在直接存取装置执行完该数据传输任务后,将任务队列中的下一个数据传输任务的执行信息发送至直接存取装置。任务注册模块1020具体用于执行如前述步骤S420的方法,任务注册模块1020的具体处理逻辑和功能可以参见前述步骤S420的相关描述,此处不再赘述。
请求响应模块1030适于接收直接存取装置发来的中断请求,中断请求适于指示数据传输任务执行完毕。根据一种实施例,请求响应模块还适于对该中断请求进行响应,例如将该数据传输任务的状态标识设置为已执行,执行该数据传输任务的后操作,以及调用请求注册模块1020来将任务队列中的下一个数据传输任务的执行信息发送至直接存取装置等。请求响应模块1030具体用于执行如前述步骤S430的方法,请求响应模块1030的具体处理逻辑和功能可以参见前述步骤S430的相关描述,此处不再赘述。
本发明的片上系统100可以包含在智能设备中,以便在智能设备中实现相应的功能,包括但不限于执行相关控制程序、进行数据分析、运算和处理、网络通信、控制智能设备中的外设等。
这样的智能设备包括专门的智能设备,如移动终端和个人数字终端等,这些设备中包括根据本发明的一个或者多个片上系统来进行数据处理,或者对设备中的外设进行控制。
这样的智能设备还包括为了实现特定功能而构造的专门设备,例如智能音箱和智能显示设备等。这些设备中包括根据本发明的片上系统来对音箱和显示设备进行控制,从而赋予音箱和显示设备额外的通信、感知和数据处理等功能。
这样的智能设备还包括各种IoT和AIoT设备。这些设备中包括根据本发明的片上系统进行数据处理,例如进行AI运算、数据通信和传输等,从而实现了更加密集且更加智能的设备分布。
这样的智能设备还可以在车辆中使用,例如可以实现为车载设备、或者可以嵌入到车辆中,从而为车辆的智能驾驶提供数据处理能力。
这样的智能设备还可以用于家庭和娱乐领域,例如可以实现为智能音箱、智能耳机、智能空调、智能冰箱、智能显示设备等。这些设备包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了家庭和娱乐设备的智能化。
另外,这样的智能设备还可以用于工业领域,例如可以实现为工控设备、感测设备、IoT设备,AIoT设备和制动设备等。这些设备中包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了工业设备的智能化。
以上对智能设备的描述仅仅是示意性的,根据本发明的智能设备不受限于此,所有可以利用根据本发明的片上系统进行数据处理的智能设备都在本发明的保护范围之内。
以下以将本发明的片上系统100应用于智能音箱、智能耳机为例,来说明本发明的数据传输方案的技术效果。
图11示出了将本发明的片上系统100应用于智能音箱场景的示意图。如图11所示,智能音箱1100包括片上系统100以及与片上系统100耦接的外部存储器200、音频采集单元1110、音频输出单元1120。外部存储器200、音频采集单元1110以及音频输出单元1120例如可以通过片上系统100提供的I/O接口耦接至片上系统100,以及与片上系统100内部的相关处理单元进行数据交换。
音频采集单元1110例如可以是麦克风,其用于采集用户发出的语音信号。音频输出单元1120例如可以实现为扬声器,其用于向用户输出音频信号。
用户在使用智能音箱1100的过程中会发出多种语音指令。例如,当用户欲使用智能音箱时,需要先说出相应的唤醒词来将智能音箱1100唤醒。唤醒词可以在智能音箱出厂时预先设置,也可以由用户在使用智能音箱的过程中自行设置,本发明对唤醒词的长短、内容不做限制。在一些实施例中,唤醒词可以被设置为“智能音箱”“你好,音箱”等。当用户唤醒智能音箱1100后,可以进一步向智能音箱发出语音指令,例如,“请为我推荐一首歌”“请播放天气预报”“请打开窗帘”等,以实现点播歌曲、查询天气预报、对智能家居设备进行控制等功能。
用户发出语音指令后,音频采集单元1110采集用户发出的语音信号,并传输至片上系统100的处理器110进行处理。处理器110对音频采集单元110传来的语音信号进行预加重、分帧等处理,对每一帧进行加窗,计算各帧的频谱,并根据频谱确定各帧的语音特征。语音信号是一种时序信号,相应地,处理器110生成的各帧的语音特征按照时间顺序进行排列。生成的各帧的语音特征存储于外部存储器200中。随后,处理器110将各帧的语音特征输入预设的语音识别模型,模型对各帧的语音特征进行前向计算,输出语音信号所对应的文本内容,从而识别出用户意图,并向用户提供相应的语音反馈。
语音识别模型通常为神经网络模型,例如前馈序列记忆神经网络(FeedforwardSequential Memory Networks,FSMN)、深度前馈序列记忆神经网络(Deep FSMN)等,但不限于此。语音识别模型包括多个卷积层、多个时序信息处理模块和softmax层。将按照时间顺序排列的各帧的语音特征输入语音识别模型后,经过卷积层的处理,提取出各帧的时序特征信息。时序特征信息依次经过多个时序信息处理模块的处理,最后进入softmax层,得到每个文本的出现概率,将概率最大的文本作为语音识别结果。
语音识别模型的多个时序信息处理模块用于对卷积层输出的时序特征信息进行处理,其中,每个时序信息处理模块用于处理时序特征信息中的一部分。根据本发明的数据传输方案,可以将时序特征信息存储在外部存储器200中,在需要的时候将时序特征信息的传输任务添加至任务队列中,以便直接存取装置130异步将时序特征信息由外部存储器200读入内部存储器120,以及将时序特征信息的处理结果由内部存储器120写回外部存储器200。在直接存取装置130进行数据传输的同时,处理器110可以根据内部存储器120中已有的数据进行计算处理。根据本发明的数据传输方案,可以在不影响处理器的计算效率的前提下,将大量的时序特征信息存储在外部存储器200中,节省了内部存储器120的存储空间。
例如,语音识别模型包括6个时序信息处理模块,记为处理模块1~处理模块6。每个处理模块用于处理一部分时序特征信息,且各处理模块所处理的时序特征信息各不相同,将处理模块1~处理模块6所处理的时序特征信息分别记为data1~data6。处理器110在内部存储器120中分配一块存储空间Block,存储空间Block包括4个子空间block1~block4,每个子空间能够存储一个处理模块所需要的时序特征信息,因此,存储空间Block中最多同时存储4个处理模块的时序特征信息。
如图12所示,在执行模块1的处理任务之前,处理器110(CPU)将处理模块1~4的数据读入任务read1~read4的执行信息添加至任务队列中(任务队列未在图12中示出),数据读入任务read1~read4适于将处理模块1~4所处理的时序特征信息data1~data4由外部存储器200传输至内部存储器120的block1~block4处。直接存取装置130(DMA)将按照任务队列中的顺序,依次执行任务read1~read4,将模块1~4所需要的时序特征信息data1~data4由外部存储器200分别传输至内部存储器120的block1~block4处。
在t0时刻,DMA执行完read1任务,向CPU发送中断请求,CPU开始执行处理模块1的计算任务,对数据data1进行处理。
在t1时刻,CPU完成处理模块1的数据处理步骤,处理后的数据为data1’。随后,将数据写回任务write1和处理模块5的数据读入任务read5的执行信息添加至任务队列。数据写回任务write1用于将处理后的数据data1’由内部存储器的block1处传输至外部存储器200,数据读入任务read5用于将模块5要处理的时序特征信息data5由外部存储器传输至内部存储器的block1处。这样,当DMA执行完处理模块4的数据读入任务read4后,将继续执行数据写回任务write1和数据读入任务read5。
并且,在t1时刻,DMA已经执行完任务read2,处理模块2的数据data2被传输至内部存储器120的block2处。
在t2时刻,DMA完成任务read3、read4,处理模块3、4的数据data3、data4分别被传输至内部存储器120的block3、block4处。
在t3时刻,CPU完成处理模块2的数据处理步骤,处理后的数据为data2’。随后,将数据写回任务write2和处理模块6的数据读入任务read6的执行信息添加至任务队列。数据写回任务write2用于将处理后的数据data2’由内部存储器的block2处传输至外部存储器200,数据读入任务read6用于将模块6要处理的时序特征信息data6由外部存储器传输至内部存储器的block2处。这样,当DMA执行完处理模块5的数据读入任务read5后,将继续执行数据写回任务write2和数据读入任务read6。
在t4时刻,DMA完成任务write1,将data1’写回外部存储器200。写回后,可以在block1中保留原有的数据data1’,如图12所示。在后续data5传入block1后,原有的数据data1’将被data5所覆盖。
在t5时刻,DMA完成任务read5,将data5读入内部存储器120的block1。
在t6时刻,CPU完成处理模块3的数据处理步骤,处理后的数据为data3’。随后,将数据写回任务write3的执行信息添加至任务队列。数据写回任务write3用于将处理后的数据data3’由内部存储器的block3处传输至外部存储器200。这样,当DMA执行完处理模块6的数据读入任务read6后,将继续执行数据写回任务write3。
在t7时刻,CPU完成处理模块4的数据处理步骤,处理后的数据为data4’。随后,将数据写回任务write4的执行信息添加至任务队列。数据写回任务write4用于将处理后的数据data4’由内部存储器的block4处传输至外部存储器200。这样,当DMA执行完处理模块3的数据写回任务write3后,将继续执行数据写回任务write4。
在t8时刻,DMA完成任务read6,data6被读入内部存储器的block2处。
在t9时刻,DMA完成任务write3,内部存储器的block3中的数据data3’被写回外部存储器200,释放block3的存储空间,此时block3中未存储数据(null)。
在t10时刻,CPU完成处理模块5的数据处理步骤,处理后的数据为data5’。随后,将数据写回任务write5的执行信息添加至任务队列。数据写回任务write5用于将处理后的数据data5’由内部存储器的block1处传输至外部存储器200。这样,当DMA执行完处理模块4的数据写回任务write4后,将继续执行数据写回任务write5。
在t11时刻,DMA完成任务write4,内部存储器的block4中的数据data4’被写回外部存储器200,释放block4的存储空间,此时block4中未存储数据(null)。
在t12时刻,CPU完成处理模块6的数据处理步骤,处理后的数据为data6’。随后,将数据写回任务write6的执行信息添加至任务队列。数据写回任务write6用于将处理后的数据data6’由内部存储器的block2处传输至外部存储器200。这样,当DMA执行完处理模块5的数据写回任务write5后,将继续执行数据写回任务write6。
在t13时刻,DMA完成任务write5、write6,内部存储器的block1、block2中的数据data5’、data6’被写回外部存储器200,释放block1、block2的存储空间,此时block1~block4中均未存储数据(null)。
在图12的实施例中,采用内部存储器和外部存储器来联合存储各处理模块相应的数据。在内部存储器中采用4个存储子空间block来存储所有处理模块相应的数据,相较于采用6个存储子空间来存储所有处理模块的数据来说,存储空间节省了(6-4)/6=1/3。
并且,基于本发明的数据传输方案,CPU提前将各项数据传输任务的执行信息添加至任务队列,使得DMA能够连续执行各项数据读入/写回任务,提高了DMA的利用率,使得数据能够尽早完成传输,从而提前准备好CPU所需要的数据,使得CPU能够连续执行各处理模块的数据处理步骤,不必等待DMA完成数据传输,避免浪费CPU的计算资源。
因此,基于本发明的数据传输方案,可以实现内部存储器与外部存储器之间的高效数据传输,在不影响处理器以及硬件加速单元的计算效率的前提下(处理器及硬件加速单元仍可以连续工作,不必浪费时间等待数据传输任务完成),节省了内部存储器的存储空间。
在上述实施例中,语音识别模型的前向计算过程由CPU执行。在另一种实施方式中,语音识别模型的前向计算过程由CPU控制硬件加速单元140来执行,硬件加速单元140为专门用于进行神经网络计算的集成电路,从而进一步加快语音识别的速度。在这种实施方式中,CPU维护任务队列,在合适的时机将read1、read2等各项数据传输任务添加至任务队列中,以便DMA按照任务队列中的顺序依次执行各项数据传输任务。当语音识别模型的某一处理模块所需要的数据被读入内部存储器后,CPU向硬件加速单元140发送控制指令,硬件加速单元140基于该控制指令,从内部存储器中读取相应数据并执行该处理模块的数据处理步骤,处理完成后,将处理后的数据写回内部存储器的相应位置,并通过中断的方式来通知CPU处理完成。CPU响应于该中断,将下一个(或下几个)数据传输任务添加至任务队列,并重复上述过程,直至语音识别过程结束,得到语音识别结果。
图13示出了将本发明的片上系统100应用于智能耳机场景的示意图。如图13所示,智能耳机1300包括本发明的片上系统100以及与片上系统100耦接的外部存储器200、音频采集单元1310、音频输出单元1320。外部存储器200、音频采集单元1310以及音频输出单元1320例如可以通过片上系统100提供的I/O接口耦接至片上系统100,以及与片上系统100内部的相关处理单元进行数据交换。
与图11、图12所示的智能音箱场景类似地,图13所示的智能耳机也可以与用户进行语音交互。图13中的音频采集单元1310用于采集用户发出的语音信号,处理器110对语音信号进行预加重、分帧等处理,对每一帧进行加窗,计算各帧的频谱,并根据频谱确定各帧的语音特征。随后,由处理器110或硬件加速单元140来进行语音识别模型的前向计算过程,确定语音信号所对应的文本内容,从而识别出用户意图,并通过音频输出单元1320来向用户输出相应的语音反馈。
在处理器110或硬件加速单元140进行语音识别模型的前向计算过程中,可以采用本发明的数据传输方案,将时序特征信息存储在外部存储器200中,在需要的时候将时序特征信息的传输任务添加至任务队列中,以便直接存取装置130异步将时序特征信息由外部存储器200读入内部存储器120,以及将时序特征信息的处理结果由内部存储器120写回外部存储器200。在直接存取装置130进行数据传输的同时,处理器110可以根据内部存储器120中已有的数据进行计算处理。本发明的数据传输方案通过设置任务队列,提高了直接存取装置130的利用率,尽可能减少甚至消除处理器110的等待时间,在不影响处理器110的计算效率的前提下,将大量的时序特征信息存储在外部存储器200中,节省了内部存储器120的存储空间。数据传输的具体过程可以参考前述图12,此处不再赘述。
在一种实施例中,智能耳机1300还包括传感器1330。传感器1330例如可以是加速度传感器、陀螺仪等,用于采集智能耳机1300当前的运动状态信息。传感器1330采集到的运动状态信息存储于外部存储器200中。随后,处理器110将运动状态信息批量输入预设的行为识别模型,模型对运动状态信息进行前向计算,输出运动状态信息所对应的用户行为,例如静止、行走、跑步、骑自行车、乘车等行为,进而根据用户行为来向用户发出语音健康提示或进行信息推荐等。
在采用行为识别模型进行前向计算的过程中,可以采用本发明的数据传输方案,将运动状态信息存储至外部存储器200中,在需要的时候,处理器110将运动状态信息的数据读入任务添加至任务队列中,以便直接存取装置130异步将运动状态信息由外部存储器200读入内部存储器120。处理器110或硬件加速单元140读取并处理内部存储器120中的数据,并将处理后的数据写回内部存储器。当处理器110或硬件加速单元向内部存储器写回数据处理结果后,处理器110将数据处理结果的写回任务添加至任务队列中,以便直接存取装置130异步将处理结果由内部存储器120写回外部存储器200。
因此,基于本发明的数据传输方案,可以实现内部存储器与外部存储器之间的高效数据传输,尽可能减少甚至消除处理器以及硬件加速单元的等待时间,在不影响处理器以及硬件加速单元的计算效率的前提下,节省内部存储器的存储空间。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的数据传输方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。
Claims (14)
1.一种数据传输方法,适于在片上系统的内部存储器和与所述片上系统耦接的外部存储器之间进行数据传输,所述方法由片上系统的处理器执行,包括步骤:
将至少一个待执行的数据传输任务的执行信息添加至任务队列;
将所述任务队列中的一数据传输任务的执行信息发送至直接存取装置,以便所述直接存取装置来执行该数据传输任务;以及
接收所述直接存取装置发来的中断请求,所述中断请求适于指示数据传输任务执行完毕,以便所述处理器将所述任务队列中的下一个数据传输任务的执行信息发送至所述直接存取装置。
2.如权利要求1所述的方法,其中,所述片上系统还包括硬件加速单元,所述硬件加速单元与所述内部存储器耦接;
所述数据传输任务包括:
将所述外部存储器中的数据传输至所述内部存储器,以便所述硬件加速单元获取并处理所述数据;以及
在所述硬件加速单元处理完所述数据后,将处理后的数据从所述内部存储器传输至所述外部存储器。
3.如权利要求1或2所述的方法,其中,所述执行信息包括数据传输的源起始地址、目标起始地址和数据量。
4.如权利要求1所述的方法,其中,所述任务队列为链表结构,所述将待执行的数据传输任务的执行信息添加至任务队列的步骤包括:
将待执行的数据传输任务的执行信息添加至所述链表的尾部。
5.如权利要求1-4中任一项所述的方法,其中,所述将所述任务队列中的一数据传输任务的执行信息发送至直接存取装置步骤包括:
将所述任务队列中的一数据传输任务的执行信息写入所述直接存取装置的配置寄存器。
6.如权利要求1-5中任一项所述的方法,其中,所述任务队列还包括各数据传输任务的状态标识,所述状态标识包括未执行、执行中和已执行,
在将待执行的数据传输任务的执行信息添加至任务队列之后,将该数据传输任务的状态标识设置为未执行;
在将数据传输任务的执行信息发送至直接存取装置之后,将该数据传输任务的状态标识设置为执行中;
在接收到直接存取装置发来的用于指示数据传输任务执行完毕的中断请求之后,将该数据传输任务的状态标识设置为已执行。
7.如权利要求6所述的方法,还包括步骤:根据数据传输任务的状态标识,来判断数据传输任务的目标地址中的数据是否可用。
8.如权利要求1-7中任一项所述的方法,其中,所述任务队列还包括各数据传输任务的后操作信息,所述后操作为数据传输任务执行完毕后所需要执行的操作;
在所述接收所述直接存取装置发来的中断请求的步骤之后,还包括步骤:执行相应数据传输任务的后操作。
9.如权利要求8所述的方法,其中,所述后操作包括以下至少一种:
释放源地址存储空间、检验写入目标地址的数据是否正确、检验直接存取装置执行数据传输任务的正确性。
10.一种数据传输装置,驻留于片上系统的内部存储器中,适于在所述内部存储器和与所述片上系统耦接的外部存储器之间进行数据传输,所述装置包括:
任务添加模块,适于将至少一个待执行的数据传输任务的执行信息添加至任务队列;
任务注册模块,适于将所述任务队列中的一数据传输任务的执行信息发送至直接存取装置,以便所述直接存取装置来执行该数据传输任务;
请求响应模块,适于接收所述直接存取装置发来的中断请求,所述中断请求适于指示数据传输任务执行完毕;以及响应于所述中断请求,调用所述任务注册模块,以便所述任务注册模块将所述任务队列中的下一个数据传输任务的执行信息发送至所述直接存取装置。
11.一种片上系统,包括处理器、内部存储器以及直接存取装置,所述片上系统与外部存储器耦接,
所述处理器适于将至少一个待执行的数据传输任务的执行信息添加至任务队列,以及将任务队列中的一数据传输任务的执行信息发送至直接存取装置,其中,所述数据传输任务适于实现所述内部存储器与所述外部存储器之间的数据传输;
所述直接存取装置适于根据接收到的执行信息来执行数据传输任务,以及在数据传输任务执行完毕后,向所述处理器发送中断请求;
所述处理器响应于所述中断请求,将所述任务队列中的下一个数据传输任务的执行信息发送至所述直接存取装置。
12.如权利要求11所述的片上系统,还包括与所述内部存储器耦接的硬件加速单元,
所述数据传输任务包括:
将所述外部存储器中的数据传输至所述内部存储器,以便所述硬件加速单元获取并处理所述数据;以及
在所述硬件加速单元处理完所述数据后,将处理后的数据从所述内部存储器传输至所述外部存储器。
13.如权利要求11或12所述的片上系统,其中,所述执行信息包括数据传输的源起始地址、目标起始地址和数据量。
14.一种智能设备,包括如权利要求11-13中任一项所述的片上系统。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911368047.2A CN113051199A (zh) | 2019-12-26 | 2019-12-26 | 数据传输方法及装置 |
US17/083,857 US11822958B2 (en) | 2019-12-26 | 2020-10-29 | Method and a device for data transmission between an internal memory of a system-on-chip and an external memory |
PCT/US2020/057889 WO2021133462A1 (en) | 2019-12-26 | 2020-10-29 | Data transmission method and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911368047.2A CN113051199A (zh) | 2019-12-26 | 2019-12-26 | 数据传输方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113051199A true CN113051199A (zh) | 2021-06-29 |
Family
ID=76506527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911368047.2A Pending CN113051199A (zh) | 2019-12-26 | 2019-12-26 | 数据传输方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11822958B2 (zh) |
CN (1) | CN113051199A (zh) |
WO (1) | WO2021133462A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254392A (zh) * | 2021-07-12 | 2021-08-13 | 深圳比特微电子科技有限公司 | 用于片上系统的数据存储方法和基于片上系统的设备 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11295741B2 (en) * | 2019-12-05 | 2022-04-05 | Soundhound, Inc. | Dynamic wakewords for speech-enabled devices |
KR20230049858A (ko) * | 2021-10-07 | 2023-04-14 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 |
CN114501057A (zh) * | 2021-12-17 | 2022-05-13 | 阿里巴巴(中国)有限公司 | 数据处理方法、存储介质、处理器和系统 |
CN115658219A (zh) * | 2022-07-19 | 2023-01-31 | 深圳星云智联科技有限公司 | 数据通信方法及相关装置、系统、介质和程序产品 |
US11853815B1 (en) * | 2022-07-28 | 2023-12-26 | Jpmorgan Chase Bank, N.A. | Event-based task processing system and method based on a stateful distributed streaming queue |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5107208A (en) | 1989-12-19 | 1992-04-21 | North American Philips Corporation | System for partitioning and testing submodule circuits of an integrated circuit |
CA2131627A1 (en) * | 1992-03-09 | 1993-09-16 | Yu-Ping Cheng | High-performance non-volatile ram protected write cache accelerator system |
US6118462A (en) | 1997-07-01 | 2000-09-12 | Memtrax Llc | Computer system controller having internal memory and external memory control |
JP4722305B2 (ja) | 2001-02-27 | 2011-07-13 | 富士通セミコンダクター株式会社 | メモリシステム |
US20030195991A1 (en) | 2001-07-02 | 2003-10-16 | Globespanvirata Incorporated | Communications system using rings architecture |
US7149862B2 (en) | 2002-11-18 | 2006-12-12 | Arm Limited | Access control in a data processing apparatus |
JP4419049B2 (ja) | 2003-04-21 | 2010-02-24 | エルピーダメモリ株式会社 | メモリモジュール及びメモリシステム |
KR100598097B1 (ko) | 2003-12-29 | 2006-07-07 | 삼성전자주식회사 | 듀얼 칩 패키지 |
US7774512B2 (en) * | 2005-02-08 | 2010-08-10 | Sony Computer Entertainment Inc. | Methods and apparatus for hybrid DMA queue and DMA table |
KR101006410B1 (ko) | 2006-03-31 | 2011-01-10 | 후지쯔 가부시끼가이샤 | 메모리 장치, 메모리 카드, 회로 기판 및 전자 기기 |
WO2008051940A2 (en) | 2006-10-23 | 2008-05-02 | Virident Systems, Inc. | Methods and apparatus of dual inline memory modules for flash memory |
US8271700B1 (en) | 2007-11-23 | 2012-09-18 | Pmc-Sierra Us, Inc. | Logical address direct memory access with multiple concurrent physical ports and internal switching |
US8399973B2 (en) | 2007-12-20 | 2013-03-19 | Mosaid Technologies Incorporated | Data storage and stackable configurations |
US20100191814A1 (en) * | 2008-12-23 | 2010-07-29 | Marco Heddes | System-On-A-Chip Employing A Network Of Nodes That Utilize Receive Side Flow Control Over Channels For Messages Communicated Therebetween |
US20100191913A1 (en) * | 2009-01-26 | 2010-07-29 | Agere Systems Inc. | Reconfiguration of embedded memory having a multi-level cache |
US7894230B2 (en) | 2009-02-24 | 2011-02-22 | Mosaid Technologies Incorporated | Stacked semiconductor devices including a master device |
US9081742B2 (en) * | 2009-04-27 | 2015-07-14 | Intel Corporation | Network communications processor architecture |
JP2011029535A (ja) | 2009-07-29 | 2011-02-10 | Elpida Memory Inc | 半導体装置 |
WO2011064883A1 (ja) | 2009-11-27 | 2011-06-03 | 株式会社東芝 | メモリチップ |
US8796863B2 (en) | 2010-02-09 | 2014-08-05 | Samsung Electronics Co., Ltd. | Semiconductor memory devices and semiconductor packages |
JP5654855B2 (ja) | 2010-11-30 | 2015-01-14 | ピーエスフォー ルクスコ エスエイアールエルPS4 Luxco S.a.r.l. | 半導体装置 |
US8954017B2 (en) | 2011-08-17 | 2015-02-10 | Broadcom Corporation | Clock signal multiplication to reduce noise coupled onto a transmission communication signal of a communications device |
US8634221B2 (en) | 2011-11-01 | 2014-01-21 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Memory system that utilizes a wide input/output (I/O) interface to interface memory storage with an interposer and that utilizes a SerDes interface to interface a memory controller with an integrated circuit, and a method |
US9679664B2 (en) | 2012-02-11 | 2017-06-13 | Samsung Electronics Co., Ltd. | Method and system for providing a smart memory architecture |
US9128822B2 (en) | 2012-06-22 | 2015-09-08 | Winbond Electronics Corporation | On-chip bad block management for NAND flash memory |
KR101954733B1 (ko) | 2012-10-26 | 2019-03-06 | 삼성전자주식회사 | 보안 콘텐츠를 처리하는 시스템 온 칩 및 그것을 포함하는 모바일 장치 |
US9134779B2 (en) | 2012-11-21 | 2015-09-15 | International Business Machines Corporation | Power distribution management in a system on a chip |
-
2019
- 2019-12-26 CN CN201911368047.2A patent/CN113051199A/zh active Pending
-
2020
- 2020-10-29 US US17/083,857 patent/US11822958B2/en active Active
- 2020-10-29 WO PCT/US2020/057889 patent/WO2021133462A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254392A (zh) * | 2021-07-12 | 2021-08-13 | 深圳比特微电子科技有限公司 | 用于片上系统的数据存储方法和基于片上系统的设备 |
Also Published As
Publication number | Publication date |
---|---|
US11822958B2 (en) | 2023-11-21 |
WO2021133462A1 (en) | 2021-07-01 |
US20210200582A1 (en) | 2021-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113051199A (zh) | 数据传输方法及装置 | |
JP6234573B2 (ja) | インテリジェント補助電子デバイス | |
KR101354346B1 (ko) | 내부 프로세서들을 구비한 메모리 및 메모리 액세스 제어 방법들 | |
JP2019036298A (ja) | 知能型高帯域幅メモリシステム及びそのための論理ダイ | |
CN106951388A (zh) | 一种基于PCIe的DMA数据传输方法及系统 | |
US9703493B2 (en) | Single-stage arbiter/scheduler for a memory system comprising a volatile memory and a shared cache | |
CN110910921A (zh) | 一种命令读写方法、装置及计算机存储介质 | |
JP2012008919A (ja) | 情報処理装置 | |
CN101031898B (zh) | 使用分离事务处理来实现无缓冲器dma控制器 | |
CN113065643A (zh) | 一种用于执行多任务卷积神经网络预测的装置和方法 | |
CN115033188A (zh) | 一种基于zns固态硬盘的存储硬件加速模块系统 | |
CN112035398B (zh) | 一种系统级芯片SoC及适用于SoC的数据处理方法 | |
CN115904259B (zh) | 非易失性存储器标准NVMe指令的处理方法及相关装置 | |
CN112949847B (zh) | 神经网络算法加速系统、调度系统及调度方法 | |
CN112035056B (zh) | 一种基于多计算单元的并行ram访问设备及访问方法 | |
US20100138578A1 (en) | Memory access controller, system, and method | |
US20120047285A1 (en) | Interrupt-based command processing | |
CN111401541A (zh) | 一种数据传输控制方法及装置 | |
WO2023045478A1 (zh) | 图任务调度方法、执行端设备、存储介质及程序产品 | |
CN112559403B (zh) | 一种处理器及其中的中断控制器 | |
CN117093530B (zh) | 一种用于数据传输的fpga、模型训练系统及数据访问方法 | |
CN113033791B (zh) | 用于保序的计算装置、集成电路装置、板卡及保序方法 | |
CN113032299B (zh) | 用于处理请求的总线系统、集成电路装置、板卡及保序方法 | |
CN111506518B (zh) | 一种数据存储控制方法及装置 | |
WO2023115529A1 (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 |