CN116909628B - 直接内存访问***、数据搬运方法、设备及存储介质 - Google Patents

直接内存访问***、数据搬运方法、设备及存储介质 Download PDF

Info

Publication number
CN116909628B
CN116909628B CN202311177686.7A CN202311177686A CN116909628B CN 116909628 B CN116909628 B CN 116909628B CN 202311177686 A CN202311177686 A CN 202311177686A CN 116909628 B CN116909628 B CN 116909628B
Authority
CN
China
Prior art keywords
data
macro instruction
micro
format conversion
read
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
CN202311177686.7A
Other languages
English (en)
Other versions
CN116909628A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311177686.7A priority Critical patent/CN116909628B/zh
Publication of CN116909628A publication Critical patent/CN116909628A/zh
Application granted granted Critical
Publication of CN116909628B publication Critical patent/CN116909628B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

本申请公开了一种直接内存访问***、数据搬运方法、设备及存储介质,涉及计算机技术领域。该***包括:宏指令存储器、宏指令控制器、宏指令解析引擎以及数据读写传输通路;本申请描述了一种直接内存访问***,处理器下发的是一种宏指令,用于指示对多维结构数据进行搬运;宏指令控制器将宏指令发送给宏指令解析引擎;宏指令解析引擎将宏指令解析为用于指示对多维结构数据中的一维结构数据进行搬运的微操作码,并发送给数据读写传输通路。通过上述DMA***,能够极大地降低处理器生成一维结构数据的搬运的指令所需要的时间,以及将上述一堆指令下发至DMA***执行的配置开销,从而提高数据搬运的效率。

Description

直接内存访问***、数据搬运方法、设备及存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种直接内存访问***、数据搬运方法、设备及存储介质。
背景技术
直接内存访问(Direct Memory Access,DMA)***又称直接数据搬运硬件单元,其能够在不需要中央处理器(Central Processing Unit,CPU)参与的情况下实现数据搬运。
相关技术中,在进行数据搬运时,计算机设备中的处理器可以向DMA***发送数据搬运的指令,通过该指令将要搬迁的数据读取地址、数据长度以及写入地址指示给DMA***,由DMA***根据读取地址和数据长度从总线读取数据,并将读取的数据从写入地址开始依次写回总线。
然而,上述方案中,处理器需要先根据要搬迁的数据的结构,生成包含读取地址、数据长度以及写入地址的指令,该指令生成过程需要消耗较长的时间,从而影响数据搬运的效率。
发明内容
本申请实施例提供了一种直接内存访问***、数据搬运方法、设备及存储介质,能够提高数据搬运的效率。所述技术方案如下。
一方面,提供一种直接内存访问***,所述***包括:宏指令存储器、宏指令控制器、宏指令解析引擎以及数据读写传输通路;
所述宏指令存储器和所述宏指令控制器分别与计算机设备中的处理器相连,且所述宏指令存储器与所述宏指令控制器相连;
所述宏指令控制器与所述宏指令解析引擎相连,所述宏指令解析引擎与所述数据读写传输通路相连,所述数据读写传输通路与所述计算机设备的总线相连;
所述宏指令存储器,用于存储所述处理器下发的宏指令;所述宏指令用于指示对多维结构数据进行搬运;
所述宏指令控制器,用于接收处理器下发的触发指令,根据所述触发指令从所述宏指令存储器中读取所述宏指令,并将所述宏指令发送给所述宏指令解析引擎;
所述宏指令解析引擎,用于将所述宏指令解析为微操作码,并将所述微操作码发送给所述数据读写传输通路;所述微操作码用于指示对所述多维结构数据中的一维结构数据进行搬运;
所述数据读写传输通路,用于根据所述微操作码向所述总线读取和写入所述一维结构数据。
另一方面,提供了一种数据搬运方法,所述方法用于如上所述的直接内存访问***,且所述方法由所述直接内存访问***中的宏指令控制器执行,所述方法包括:
接收处理器下发的触发指令;
根据所述触发指令从宏指令存储器中读取所述宏指令;所述宏指令用于指示对多维结构数据进行搬运;
将所述宏指令发送给宏指令解析引擎,以便所述宏指令解析引擎将所述宏指令解析为微操作码,并将所述微操作码发送给数据读写传输通路,由所述数据读写传输通路根据所述微操作码向总线读取和写入一维结构数据;所述微操作码用于指示对所述多维结构数据中的所述一维结构数据进行搬运。
另一方面,提供了一种数据搬运装置,所述装置用于如上所述的直接内存访问***中的宏指令控制器,所述装置包括:
触发指令接收模块,用于接收处理器下发的触发指令;
宏指令读取模块,用于根据所述触发指令从宏指令存储器中读取所述宏指令;所述宏指令用于指示对多维结构数据进行搬运;
宏指令发送模块,用于将所述宏指令发送给宏指令解析引擎,以便所述宏指令解析引擎将所述宏指令解析为微操作码,并将所述微操作码发送给数据读写传输通路,由所述数据读写传输通路根据所述微操作码向总线读取和写入一维结构数据;所述微操作码用于指示对所述多维结构数据中的所述一维结构数据进行搬运。
另一方面,提供了一种计算机设备,所述计算机设备包括如上所述的直接内存访问***。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一段程序,所述至少一段程序由控制器加载并执行以实现如上所述的数据搬运方法;所述控制器是如上所述的直接内存访问***中的宏指令控制器。
另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被控制器执行时实现如上所述的数据搬运方法;所述控制器是如上所述的直接内存访问***中的宏指令控制器。
本申请实施例提供的技术方案带来的有益效果至少包括:
处理器下发给DMA***的是一种宏指令,用于指示对多维结构数据进行搬运;DMA***中的宏指令控制器将宏指令发送给宏指令解析引擎;宏指令解析引擎将宏指令解析为用于指示对多维结构数据中的一维结构数据进行搬运的微操作码,并发送给数据读写传输通路,由数据读写传输通路根据微操作码进行一维结构数据的搬迁。在上述方案中,处理器直接向DMA***指示了多维结构数据的搬运,后续由DMA***中的宏指令解析引擎将多维结构数据的搬运操作拆解为多个一维结构数据的搬运操作,由于DMA***对宏指令进行解析的速度要远快于处理器拆解多维结构数据的搬运操作的速度,因此,通过上述DMA***,能够极大地降低处理器生成一维结构数据的搬运的指令所需要的时间,以及将上述一堆指令下发至DMA***执行的配置开销,从而提高数据搬运的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一种DMA***的示意图;
图2是一种支持分散-聚集离散搬运的DMA***的示意图;
图3是一种DMA指令或描述符的格式示意图;
图4是一种DMA实现数据搬运的流程图;
图5是本申请一个示例性实施例提供的直接内存访问***的结构示意图;
图6是本申请涉及的硬件电路解析宏指令的一种举例示意图;
图7是本申请又一个示例性实施例提供的直接内存访问***的结构示意图;
图8是本申请另一个示例性实施例提供的直接内存访问***的结构示意图;
图9是本申请涉及的格式转换的一种举例示意图;
图10是本申请一个示例性实施例提供的一种宏指令的结构图;
图11是对宏指令进行解析生成微操作码的过程示意图;
图12是本申请一个示例性实施例提供的一种微操作码;
图13是本申请涉及的一种流式处理的数据搬运通路的工作时序图;
图14是本申请再一个示例性实施例提供的直接内存访问***的结构示意图;
图15是本申请提供的DMA***处理数据搬运的整体处理流程图;
图16是本申请一个示例性实施例提供的一种数据搬运方法的流程图;
图17是本申请一个示例性实施例提供的一种数据搬运装置的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
应当理解,尽管在本公开可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一参数也可以被称为第二参数,类似地,第二参数也可以被称为第一参数。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
直接内存访问(Direct Memory Access,DMA)***又称直接数据搬运硬件单元,是一种不需要中央处理器(Central Processing Unit,CPU)参与,就能实现数据搬运的技术。DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。
众所周知,CPU具有转移数据、计算、控制程序转移等诸多功能,是***运作的核心,CPU时刻处理着大量的事务,但有些事务没有那么重要,比如数据的复制和存储数据,如果能够把这部分的CPU资源节约出来,用于CPU处理其他的复杂事务,便能够更好地利用CPU的资源。
其中,转移数据(尤其是转移大量数据)是可以不需要CPU参与的。比如希望外设A的数据拷贝到外设B,只要外设A和外设B提供一条DMA数据通道,就能够直接将数据由外设A拷贝到外设B,该过程不需要经过CPU的处理。因此,DMA能够在一定程度上解放CPU,对于实现高效嵌入式***与加速网络数据处理有极其重要的作用。
在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。一个完整的DMA传输过程通常需要经过DMA请求、DMA响应、DMA传输、DMA结束4个步骤。
图1示出了一种DMA***的示意图,如图1所示:
1)该方案是一种基础的DMA***方案。其中,处理器向DMA***下发指令,指示DMA***进行数据搬运操作,DMA***与总线进行直接的数据搬运的交互,实现一段一维结构数据从一个存储地址搬运到另一个存储地址的操作;
2)该方案中DMA***由控制器、读数据接口、先进先出(First Input FirstOutput,FIFO)缓存和写数据接口组成。其中,控制器负责接收处理器下发的指令并进行解析,指示读数据接口向总线产生读数据请求,并指示写数据接口向总线产生写数据请求;FIFO缓存则用于读数据操作及写数据操作异步进行的数据缓存;
3)该***中,由处理器向DMA***一条条地下发搬运指令,指示DMA***进行搬运操作,一个DMA***一次只对应一条指令、一个主处理器的控制。
图2示出了一种支持分散-聚集(Scatter-Gather)离散搬运的DMA***的示意图,如图2所示:
1)该方案中DMA***用于批量搬运多个离散的数据块,降低处理器干预的次数,从而提高搬运效率,主要运用于碎片数据的搬运场景;
2)该方案中将一串的搬运指令定义为描述符,处理器预先将指令批量地下发进DMA***的描述符链表中,并以链表的结构表达指令间的次序关系;
3)处理器指示DMA***工作的指令由明确的搬运指令变为触发指令,触发DMA***从描述符链表中的某个位置开始执行。
图3示出了一种DMA指令或描述符的格式示意图。
如上述图1和图2所示,以上方案中处理器下发的DMA指令或描述符的格式,指令DMA直接发起数据读写操作。它们的共同特点是,均只能处理简单的一维数据结构的搬运,即只有起始点和长度的数据块。
基于上述图1和图2所示的DMA***结构,请参考图4,其示出了一种DMA实现数据搬运的流程图,如图4所示,上述图1和图2所示的DMA***结构实现数据搬运的步骤都是一致的:
步骤401,接收指令,根据DMA***的状态判断是否执行;
步骤402,根据指令中的读地址及数据大小向总线产生读操作,如高级可扩展接口(Advanced eXtensible Interface,AXI)读传输、高级***总线(Advanced PeripheralBus,APB)、高级高性能总线(Advanced High-performance Bus,AHB)、AXI缓存扩展接口(AXI Coherence Extension,ACE)等读操作;
步骤403,接收总线返回的数据并缓存入FIFO;
步骤404,根据指令中的写地址及数据大小向总线产生写操作,如AXI写传输、APB、AHB、ACE等写操作;
步骤405,将FIFO中的数据写入总线。
然而,上述图1和图2所示的DMA***结构,是针对一维结构数据进行搬运的DMA***结构,也就是说,需要预先由处理器确定要搬迁的一维结构数据的读写地址和数据长度,然后通知给DMA***。由于处理器确定要搬迁的一维结构数据的读写地址和数据长度的过程是通过程序代码来实现的,对于一条一维结构数据的搬运指令的生成过程,处理器可能需要指定多个指令,需要消耗较长的时间,因此,处理器下发数据搬运的指令的效率,已经成为影响数据搬运效率的瓶颈。
请参考图5,其示出了本申请一个示例性实施例提供的直接内存访问***的结构示意图,该***可以包括:宏指令存储器501、宏指令控制器502、宏指令解析引擎503以及数据读写传输通路504。
其中,宏指令存储器501和宏指令控制器502分别与计算机设备中的处理器相连,且宏指令存储器501与宏指令控制器502相连。
其中,上述处理器可以是标量处理器。
上述处理器可以是通过运行计算机指令或代码来实现运算功能的计算器件,比如,上述处理器可以是计算机设备的中央处理器CPU等。
上述宏指令存储器501和宏指令控制器502分别与计算机设备中的处理器相连,是指宏指令存储器501和宏指令控制器502分别与计算机设备中的处理器电性相连,宏指令存储器501和宏指令控制器502可以分别接收处理器发送的指令/信号/数据。
上述宏指令存储器501与宏指令控制器502相连,是指宏指令存储器501与宏指令控制器502电性相连,宏指令控制器502可以从宏指令存储器501读取指令/数据。
上述宏指令存储器501可以是随机存取记忆体(Random Access Memory,RAM),比如电阻式随机存取记忆体(Resistance Random Access Memory,ReRAM)或者动态随机存取存储器(Dynamic Random Access Memory,DRAM)等等。
宏指令控制器502与宏指令解析引擎503相连,宏指令解析引擎503与数据读写传输通路504相连,数据读写传输通路504与计算机设备的总线相连。
其中,上述宏指令控制器502与宏指令解析引擎503相连,可以是指宏指令控制器502与宏指令解析引擎503电性相连,宏指令控制器502可以向宏指令解析引擎503发送指令/数据。
上述宏指令解析引擎503与数据读写传输通路504相连,是指宏指令解析引擎503与数据读写传输通路504电性相连,宏指令解析引擎503可以向数据读写传输通路504发送指令/数据。
上述数据读写传输通路504与计算机设备的总线,是指数据读写传输通路504与计算机设备的总线接口电性相连,数据读写传输通路504可以从计算机设备的总线读取数据(或者说,通过总线向计算机设备的其它存储器/与计算机设备相连的存储器读取数据),以及,向计算机设备的总线写入数据(或者说,通过总线向计算机设备的其它存储器/与计算机设备相连的存储器写入数据)。
宏指令存储器501,用于存储处理器下发的宏指令;宏指令用于指示对多维结构数据进行搬运。
在本申请实施例中,当需要对复杂结构(也就是多维结构)的数据进行搬运时,计算机设备的处理器可以不需要对多维结构数据进行拆解,而是直接生成指示该多维结构数据的读写地址以及数据量等信息的宏指令,并将该宏指令下发给宏指令存储器501,由宏指令存储器501进行存储。
宏指令控制器502,用于接收处理器下发的触发指令,根据触发指令从宏指令存储器501中读取宏指令,并将宏指令发送给宏指令解析引擎503。
其中,计算机设备需要对某一多维结构数据进行搬运时,可以通过触发指令触发宏指令控制器502指定对应该多维结构数据的搬运操作的宏指令。
其中,该触发指令可以指示宏指令存储器501中已存储的宏指令,比如,该触发指令可以包含宏指令存储器501中已存储的宏指令的地址。
在一些实施例中,一条触发指令可以指示宏指令控制器502提取单条宏指令,或者,一条触发指令可以指示宏指令控制器502提取多条宏指令。
当一条触发指令指示宏指令控制器502提取多条宏指令时,该触发指令中可以包含多条宏指令各自的地址;宏指令控制器502按照多条宏指令各自的地址分别提取多条宏指令,该方案对多条宏指令在宏指令存储器501中的存储位置没有限制,可以扩展多条宏指令的指示场景。
或者,如果该多条宏指令是在宏指令存储器501中连续存储的宏指令,则该触发指令中可以包含多条宏指令的起始地址和指令条数,宏指令控制器502可以从起始地址开始,依次读取多条宏指令,该方案中,触发指令只需要携带一个地址和一个指令条数,即可以指示宏指令控制器502提取多条宏指令,能够节约触发指令的传输资源,提高宏指令的指示效率。
宏指令解析引擎503,用于将宏指令解析为微操作码,并将微操作码发送给数据读写传输通路504;微操作码用于指示对多维结构数据中的一维结构数据进行搬运。
在本申请实施例中,宏指令解析引擎503,可以通过硬件电路来解析宏指令,以将一条宏指令解析为多条微操作码,并将微操作码发送给数据读写传输通路504。
其中,多维结构数据由多条一维结构数据组成,比如,假设多维结构数据是一个n×m的二维结构数据,其可以视为n个一维结构数据组成的矩阵,每个一维结构数据的长度为m;或者,该n×m的二维矩阵数据也可以视为m个一维结构数据组成的矩阵,每个一维结构数据的长度为n。
请参考图6,其示出了本申请涉及的硬件电路解析宏指令的一种举例示意图,如图6所示,一条二维数据块的填充指令,其指令配置包括:
基础配置:
data_type = INT32,dimen_0_size = 0xA,dimen_1_size = 0x2,read_addr =0x0,write_addr = 0x0;
扩展配置:
op_type = pad_op,left_pad_size = 0x1,right_pad_size = 0x1,top_pad_size = 0x1,buttom_pad_size = 0x1,internal_pad_size = 0x1;
其中,0x表示16进制数值。
宏指令解析引擎503对一条二维数据块进行解析,解析为五条一维搬运指令,即三条一维常数填充微操作码(micro operations,uOP)和两条一维搬运微操作码,具体包括:
uOP 1:
uop_type = constant_filling,data_type = INT32,data_size = left_pad_size + dimen_0_size + right_pad_size + right_pad_size = 0xD,read_addr = NA,write_addr = 0x0;
uOP 2:
uop_type = read_write,data_type = INT32,data_size = dimen_0_size =0xA,read_addr = 0x0,write_addr = uop1_write_addr + uop1_data_size = 0xD;
uOP 3:
uop_type = constant_filling,data_type = INT32,data_size = left_pad_size + left_pad_size + dimen_0_size + right_pad_size + right_pad_size = 0xE,read_addr = NA,write_addr = uop2_write_addr + uop2_data_size = 0xD + 0xA =0x17;
uOP 4:
uop_type = read_write,data_type = INT32,data_size = dimen_0_size =10,read_addr = uop2_read_addr + uop2_data_size = 0xA,write_addr = uop3_write_addr + uop3_data_size = 0x17 + 0xE = 0x25;
uOP 5:
uop_type = constant_filling,data_type = INT32,data_size = left_pad_size + left_pad_size + dimen_0_size + right_pad_size = 0xD,read_addr = NA,write_addr = uop4_write_addr + uop4_data_size = 0x25 + 0xA = 0x2F;
其中,0x表示16进制数值。
上述宏指令解析引擎503,可以通过硬件电路来解析宏指令,根据宏指令中的多维结构数据的数据结构、读写地址以及数据大小,确定多维结构数据中各个一维结构数据的读写地址以及数据大小(数据结构固定为一维),从而生成对应的微操作码。
数据读写传输通路504,用于根据微操作码向总线读取和写入一维结构数据。
比如,对于一个微操作码,其中包含一维结构数据的读地址、写地址和数据大小,数据读写传输通路504可以先根据读地址,通过总线从读地址开始读取上述数据大小对应的长度的一维结构数据,然后将一维结构数据缓存在数据读写传输通路504中,然后,再根据写地址,通过总线从写地址开始依次写入上述一维结构数据,从而完成将一维结构数据从读地址向写地址的搬运;其中,对于一个宏指令解析得到的多个微操作码,当上述多个微操作码都处理完成后,即可以认为上述宏指令对应的多维结构数据搬运完成。
综上所述,本申请实施例所示的方案,处理器下发给DMA***的是一种宏指令,用于指示对多维结构数据进行搬运;DMA***中的宏指令控制器将宏指令发送给宏指令解析引擎;宏指令解析引擎将宏指令解析为用于指示对多维结构数据中的一维结构数据进行搬运的微操作码,并发送给数据读写传输通路,由数据读写传输通路根据微操作码进行一维结构数据的搬迁。在上述方案中,处理器直接向DMA***指示了多维结构数据的搬运,后续由DMA***中的宏指令解析引擎将多维结构数据的搬运操作拆解为多个一维结构数据的搬运操作,由于DMA***对宏指令进行解析的速度要远快于处理器拆解多维结构数据的搬运操作的速度,因此,通过上述DMA***,能够极大地降低处理器生成一维结构数据的搬运的指令所需要的时间,以及将上述一堆指令下发至DMA***执行的配置开销,从而提高数据搬运的效率。
基于上述图1或图2所示的DMA***结构,计算***中复杂数据结构的搬运一般先由处理器拆解成一条条具体的搬运数据大小和源宿地址,再下发给DMA去搬运,这种***无法满足异构的处理器(比如AI处理器、图像编码芯片)对并行数据传输的存算带宽需求,以及复杂数据结构的搬运需求。
具体来说,图1或图2所示的DMA***结构只能处理简单的一维数据结构的搬运,即只有起始点和长度的数据块。这种特性在当下流行的AI推理训练处理器中,面对复杂且多样的数据结构时,DMA无法直接处理,需要通过软件的方法,即内部的处理器使用一条条的标量指令数据结构进行拆解,拆解为一段段确切长度,读写地址的数据块后才能下发给DMA进行搬运。这往往需要占用处理器大量的硬件资源和时间,导致处理器执行的其他业务程序的有效性能被拉低。
同时,人工智能(Artificial Intelligence,AI)推理训练处理器中强大的算力需要非常高的数据搬运带宽支撑才能得到发挥,而上述问题带来的更严重影响是,常规的处理器执行数据结构拆解然后才产生搬运指令的耗时过大,导致数据搬运带宽无法达到预期,瓶颈不在于DMA的搬运性能,而落在了处理器拆解复杂数据结构再生成DMA指令这个环节中。具体的原因是,一个复杂数据结构的拆解可能为一个程序段实现,需要经历指令取指、指令解析、指令发射、指令执行流水、指令写回、指令退休等一系列环节,并且需要处理前后指令的依赖关系,导致一个复杂数据结构的拆解并生成DMA指令的程序段需要几十甚至上百个时钟周期完成。
而基于本申请上述图5所示实施例的技术方案,提供了一种可自行解析复杂指令序列并高效搬运的DMA***,并具备与处理器及其他子***进行数据同步的功能:
1)该DMA***可以应用于AI推理和训练芯片中,复杂数据结构的搬运,以及高算力对于高搬运带宽的需求场景中;
2)该DMA***也可以应用在图像编解码芯片中,其中,图像编解码芯片也存在与AI推理和训练同样的使用场景,即复杂数据结构的搬运操作的场景。
基于图5所示的实施例,请参考图7,其示出了本申请又一个示例性实施例提供的直接内存访问***的结构示意图,如图7所示,在图5所示的DMA***中,数据读写传输通路504中包含多个处理单元,多个处理单元至少包括读数据接口单元504a、缓存单元504b以及写数据接口单元504c;
其中,宏指令解析引擎503与读数据接口单元504a相连,且宏指令解析引擎503用于将微操作码发送给读数据接口单元504a;
上述微操作码,用于在多个处理单元之间依次传递。
在本申请实施例中,宏指令解析引擎503与读数据接口单元504a相连,是指宏指令解析引擎503与读数据接口单元电性504a相连,使得宏指令解析引擎503可以向读数据接口单元504a发送信号,从而能够将微操作码发送给读数据接口单元504a。
在本申请实施例中,上述数据读写传输通路504中的多个处理单元依次相连,并且,在数据搬运过程中,从读数据接口单元504a开始,读数据接口单元504a接收宏指令解析引擎503发送的微操作码,根据微操作码从总线读取一维结构数据,并将一维结构数据和微操作码一起发送给下一处理单元,一个处理单元接收到前一处理单元发送的一维结构数据和微操作码后,将一维结构数据和微操作码传递给再下一个处理单元,如果微操作码指示当前处理单元对一维结构数据进行某种处理,则当前处理单元还可以对该一维结构数据执行对应的处理后,将处理后的一维结构数据和微操作码传递给下一个处理单元,写数据接口单元504c接收上一处理单元发送的一维结构数据和微操作码后,根据微操作码,将一维结构数据写入总线。在上述过程中,宏指令解析引擎503只需要将微操作码发送给读数据接口单元504a即可,不需要发送给每一个需要该微操作码的处理单元,降低了DMA***的设计及布线难度,同时也降低了宏指令解析引擎503与数据读写传输通路504之间的带宽,提高了宏指令解析引擎503向数据读写传输通路504传递微操作码的效率。
基于图5或图7所示的实施例,在一些实施例中,宏指令解析引擎503,用于在将宏指令解析为微操作码时,解析多维结构数据的数据结构,确定多维结构数据中的一维结构数据的读写地址和数据大小;
根据一维结构数据的读写地址和数据大小,生成微操作码。
其中,上述宏指令中可以包含多维结构数据的读地址、写地址、数据结构、数据大小等信息,结合上述多维结构数据的数据结构和数据大小,宏指令解析引擎503可以确定多维结构数据中每条一维结构数据的数据大小,然后再结合多维结构数据的读地址、写地址,可以确定每条一维结构数据的读地址和写地址,然后,宏指令解析引擎503可以生成包含一维结构数据的读地址、写地址以及数据大小的微操作码,每条一维结构数据可以对应一条微操作码。
其中,上述多维结构数据的数据结构,可以包括多维结构数据的原始的数据结构(也称为源端数据结构),还可以包括多维结构数据搬运之后的数据结构(也称为宿端数据结构);其中,如果多维结构数据的数据结构只包含源端数据结构,则可以认为该多维结构数据在搬运之后的数据结构不变,如果多维结构数据的数据结构还包括宿端数据结构,则认为该多维结构数据在搬运之后的数据结构发生改变。
基于图7所示的实施例,请参考图8,其示出了本申请另一个示例性实施例提供的直接内存访问***的结构示意图,如图8所示,在图7所示的DMA***中,宏指令还用于指示对多维结构数据进行格式转换处理,微操作码还用于指示对一维结构数据进行格式转换处理;
多个处理单元中还包括格式转换前处理单元504d以及格式转换后处理单元504e中的至少一个,格式转换前处理单元504d位于缓存单元之前,且格式转换后处理单元504e位于缓存单元之后;
格式转换前处理单元504d,用于根据微操作码指示的格式转换处理的处理方式,对一维结构数据进行格式转换前处理,并将格式转换前处理的结果数据写入缓存单元504b;
格式转换后处理单元504e,用于根据微操作码指示的格式转换处理的处理方式,对缓存单元504b中的数据进行格式转换后处理后,发送给下一个处理单元。
数据的格式转换包括数据类型转换、移位、拼接、剔除、间插、镜像、填充等数据的空间转换,这些在传统的DMA***中,通常由处理器通过执行程序指令的组合来实现;而在本申请实施例中,通过在缓存单元之前或者之后的至少一处,设置格式转换前处理单元和格式转换后处理单元中的至少一个处理单元,用于通过硬件电路来实现数据的格式转换,从而提高数据格式转换的效率。
数据的格式转换一般包括数据的移位、拼接、剔除、间插、镜像、填充等数据的空间转换,并且可以组合,有些格式转换操作需要分几个步骤完成的,因此,在本申请实施例中,在数据读写传输通路504中设置“前处理—缓存—后处理”这样的结构去分步处理数据的格式转换过程。比如,数据镜像+尾部填充的格式转换操作,需要在前处理中将一片数据分段并反向,存入缓存中,后处理过程中再倒序地取出数据,最后再在尾部填充后输出给下游。数据格式的转换的操作种类有多种,每种格式转换操作可以对应不同的格式转换前处理单元504d或者格式转换后处理单元504e,一般来说,一种DMA结构可以支持有限种类的转换类型。
请参考图9,其示出了本申请涉及的格式转换的一种举例示意图,如图9所示,将一组一维数据(7,8,9),广播为一组二维数组((7,7,7),(8,8,8),(9,9,9)),涉及的硬件电路至少包括以下电路单元:多路器(Multiplexer)、计数器和复制单元实现。
其中,计数器从0累加至N-1(N为输入的一维数组元素个数),作为多路器的选通信号,依次将读入的数据每个元素选出,并通过复制单元的广播次数将每个元素进行复制后写入缓存单元,复制的个数为指令配置的广播次数。
如图9所示,将一组一维数据(7,8,9)广播为一组二维数组((7,7,7),(8,8,8),(9,9,9)),需要通过一次读操作和三次复制操作完成,具体包括以下步骤:
步骤1:进行一次读操作将一维数据(7,8,9)输入格式转换前处理单元,再进行一次复制操作得到(7,7,7);
步骤2:进行第二次复制操作得到((7,7,7),(8,8,8));
步骤3:进行第三次复制操作,最终得到二维数组((7,7,7),(8,8,8),(9,9,9))。
在一些实施例中,宏指令中包含第一格式转换配置,第一格式转换配置是对多维结构数据进行格式转换的配置;
宏指令解析引擎503,用于在根据一维结构数据的读写地址和数据大小,生成微操作码时,根据第一格式转换配置生成第二格式转换配置,第二格式转换配置是对一维结构数据进行格式转换的配置;
根据一维结构数据的读写地址、数据大小、以及第二格式转换配置,生成微操作码。
在本申请实施例中,当DMA***支持数据格式的转换时,可以在微操作码中设置格式转换配置,以支持对格式转换操作的控制,提高格式转换的应用灵活性。
而要实现在微操作码中设置格式转换配置,则需要在宏指令中就进行相应的指示,而由于宏指令是针对多维结构数据设置的指令,其中的格式转换配置也是对应多维结构数据设置的格式转换配置,因此,宏指令解析引擎503在解析宏指令生成微操作码时,需要根据宏指令中针对多维结构数据设置格式转换配置,生成微操作码中针对一维结构数据的格式转换配置,或者说,根据宏指令中针对多维结构数据设置格式转换配置,进行格式转换配置的更新,得到微操作码中一维结构数据的格式转换配置。
在一些实施例中,如图8所示,在图7所示的DMA***中,宏指令还用于指示对多维结构数据进行运算处理,微操作码还用于指示对一维结构数据进行运算处理;
多个处理单元中还包括数据运算单元504f;
数据运算单元,用于根据微操作码指示的运算处理方式,对输入的数据进行运算处理后,发送给下一个处理单元。
上述的数据运算可以包括数据类型转换,比如,32位整数类型(32bit integer,INT32)转FP32,以及数据计算,比如加减乘除的算术逻辑单元(Arithmetic and LogicUnit,ALU),这些计算操作可以通过硬件电路来实现,从而在DMA***中预先执行一些数据运算,以便后续的数据处理,比如便于后续的AI推理或训练,或者,便于后续的图像编解码。
在一些实施例中,宏指令和微操作码中分别包含运算配置,运算配置是对运算处理的配置。
在本申请实施例中,当DMA***支持数据运算时,可以在微操作码中设置运算配置,以支持对运算操作的控制,提高运算操作的应用灵活性。而要实现在微操作码中设置运算配置,则需要在宏指令中就进行相应的指示。
在一些实施例中,如图8所示,在图7所示的DMA***中,宏指令和微操作码中还包含同步配置,同步配置用于指示对目标地址进行状态检查,目标地址是数据的读地址和写地址中的至少一个;
宏指令控制器502,用于在将宏指令发送给宏指令解析引擎503时,根据宏指令中的同步配置检查目标地址的状态,并在目标地址的状态满足指定条件时,将宏指令发送给宏指令解析引擎503;指定条件包括:当目标地址包括读地址时,读地址的状态为可读;当目标地址包括写地址时,写地址的状态为可写;
读数据接口单元504a,用于在目标地址包括读地址,且读地址的状态为可读时,从读地址读取一维结构数据;
写数据接口单元504c,用于在目标地址包括写地址,且写地址的状态为可写时,向写地址写入数据。
上述的同步的状态,指的是DMA将要读取的源端,以及将要写入宿端的状态,即源端是否可读,宿端是否可写,一般用1比特的状态位表示,这些状态位存在处理器中,是全局可见的,一般包含多组,如32组,以满足多路DMA或运算单元读写需求。可选的,每一组状态可以有一个编号(Identity Document,ID)。
例如,当一条宏指令配置了“ID0,检查其读状态,不检查写状态”,即DMA***对该宏指令对应的地址进行读取前,会先检查ID0是否可读,检查到其可读,才发起读操作。读完之后则通知处理器更新读状态。对于写操作由于配置了不检查,则直接发起写操作。通过上述处理,可以优先下发能够立即进行数据搬运的宏指令,提高数据搬运的效率。
其中,上述同步检查的操作可以在宏指令控制器502、读数据接口单元504a以及写数据接口单元504c中分别执行,这就需要在宏指令和微操作码中都设置上述同步配置,相应的,宏指令控制器502、读数据接口单元504a以及写数据接口单元504c在执行宏指令下发、读数据以及写数据之前,可以先检查读地址/写地址的状态,并根据读地址/写地址的状态确定是否执行相应的操作。
其中,对于宏指令控制器502,当同步检查的结果为不满足条件时,可以将当前宏指令存到指令等待队列,并对下一条宏指令进行处理,在等待一段时间后,再对指令等待队列中的宏指令再次进行同步检查,以提高宏指令的并发处理能力。
请参考图10,其示出了本申请一个示例性实施例提供的一种宏指令的结构图。如图10所示,本申请提供了一种DMA宏指令,用于表达多维度的复杂数据结构及其搬运、格式转换、运算等数据操作。
其中除了读写地址与普通的DMA指令一样描述搬运的起始地址和目的地址,其他的域段描述的内容如下。
1)源端数据结构:
a.源端数据块结构信息,其包含数据类型,如半精度浮点(Floating Point 16,FP16)、8位整数类型(8bit integer,INT8)、单精度浮点(Floating Point 32,FP32)等;
b.数据维度信息,即维度0大小、维度1大小、维度2大小、维度3大小等,即不再以传统的字节为单位去描述一段数据块,而是以一种数据结构去描述数据块。
2)宿端数据结构:宿端数据结构信息,同样是包含数据类型和数据维度信息,但其类型和大小可以与源端不一样,即表达了从一个多维度数据块从取出一部分多维数据块并进行数据类型转换的操作,这种操作在AI推理和训练中尤为常见。
3)格式转换操作配置:包括但不限于矩阵转置、数据广播、数据镜像、数据填充、数据移位、数据拼接等操作。
4)运算操作配置:包括但不限于数据类型转换(如FP32转FP16)、数据累加、激活(RELU)运算等操作。
5)循环次数:即一条宏指令可循环执行一次或多次。
6)读步进、写步进:与循环操作配套,每一次循环的读写地址步进。
7)同步配置:主要包括源端和宿端的同步检查使能,同步更新使能,同步关系ID。
基于上述图10所示的宏指令,对该宏指令进行解析生成微操作码的过程示意图可以如图11所示,图11示出了对宏指令进行解析生成微操作码的过程示意图,具体包括以下步骤:
步骤1101:宏指令循环操作解析,根据读写步进更新读写起始地址;
步骤1102:多维数据结构解析,提取一维向量,计算向量读写地址及大小;
步骤1103:根据解析后的一维向量,更新其他格式转换配置;
步骤1104:生成DMA微操作码(uOP)。
上述步骤1103中,更新其他格式转换配置指的是参与格式转换的数据大小更新,以及维度更新,因为此时的复杂数据已经从多维降为一维。
请参考图12,其示出了本申请一个示例性实施例提供的一种微操作码。如图12所示,本申请描述了一种DMA微操作码,它与传统DMA的指令或描述符的内容类似,由“读写地址+数据大小”组成,并新增了格式转换配置和运算配置域段,对应的用于指示格式转换前/后处理模块和数据运算模块。
基于上述图12所示的微操作码,请参考图13,其示出了本申请涉及的一种流式处理的数据搬运通路的工作时序图。如图13所示,解析引擎生成的微操作码只需要传递给第一级环节的读数据接口模块,在后续的每个环节中模块只提取本模块需要使用的域段,处理完后将微操作码及数据(Date,D)同步传递给下一级模块。以此解决了传统DMA中控制单元需要分别将控制字传递数据通道中的各模块并协调各模块工作节拍的前后依赖问题。
基于图5、图7或图8所示的实施例,上述DMA***还可以支持多个虚拟通道,以支持多个处理器的同时调度。
在一些实施例中,基于图8所示的实施例,请参考图14,其示出了本申请再一个示例性实施例提供的直接内存访问***的结构示意图,如图14所示,在图8所示的DMA***中,宏指令控制器502,用于通过多个虚拟通道505接收多个处理器分别发送的宏指令,根据多个虚拟通道505的优先级,将多个处理器分别发送的宏指令依次发送给宏指令解析引擎503。
如图14所示,本申请实施例涉及的DMA***也可以增加虚拟通道,支持多用户同时使用。如图14所示,多个处理可同时对DMA***下发指令,每个处理器可以注册一个DMA虚拟通道,DMA***的控制器可以根据各虚拟通道的优先级,依次执行相应的触发指令。
如图5、图7、图8以及图14任一所示,对于本申请提供的DMA***,有如下特点。
1)本申请中处理器给DMA***下发的是一种宏指令,描述了多维度的复杂数据结构及其搬运、格式转换、运算等数据操作。
2)处理器可以批量地下发DMA***的宏指令,写入DMA***的宏指令存储器中。
3)处理器下发触发指令,指示DMA***开始执行宏指令,触发指令的内容可以为DMA***的宏指令存储器中的起始执行地址,及指令的个数。
4)DMA***可批量执行多条宏指令,由于每条宏指令可能与芯片中的其他部件存在数据依赖关系,则每条宏指令可以配置同步信息,DMA***通过同步关系检查,实现DMA***自行决策每条指令执行的时机。
5)DMA***的宏指令控制器接收处理器的触发指令,从宏指令存储器读取宏指令,进行预解析,检查同步关系,并判断是否将指令下发给解析引擎,还是存入等待队列中。
6)DMA***内置宏指令解析引擎,通过硬件电路解析复杂指令,而不是通过处理器执行一段程序解析复杂指令的方式实现指令的解析。宏指令解析引擎主要处理数据结构的解析,将抽象的多维数据结构分解为多个下游数据通路可识别的微操作码,即“读写地址+数据大小+配置”。
7)本申请的DMA***的数据读写传输通路的组成单元中,除了传统DMA的读写接口模块和缓存模块以外,可以新增格式转换模块和数据运算模块,目的是为了在数据传输路径上随路进行格式转换和一些运算操作,以达到数据处理无带宽损失。
8)本申请提供的是一种流式处理的DMA***,每个环节的模块处理完成后将负载(数据或指令)及控制字(同步关系、指令或微操作码)都传递给下一环节模块,然后就可以接收新的处理操作,前后环节中的模块没有依赖。
其中,本申请提供的DMA***处理数据搬运的整体处理流程图可以如图15所示。请参考图15,具体流程如下:
步骤1501:接收DMA触发指令;
步骤1502:根据触发指令携带的地址读取DMA宏指令;
步骤1503:宏指令预解析,根据同步配置进行同步关系检查;
若同步失败,将宏指令转入指令等待队列,进行同步检查,直至同步成功;
若同步成功,继续进行下一步;
步骤1504:将宏指令解析为微操作码;
步骤1505:根据指令读地址及数据大小向总线产生读操作,如AXI读传输、APB、AHB、ACE等读操作;
步骤1506:根据格式转换配置进行格式转换前处理;
步骤1507:将数据及微操作码写入缓存中;
步骤1508:根据格式转换配置进行格式转换后处理;
步骤1509:根据运算配置进行数据运算操作;
步骤1510:根据指令写地址及数据大小向总线产生写操作,如AXI写传输、APB、AHB、ACE等写操作;
最后,返回步骤1503,进行指令完成回告,用于指示控制器更新同步关系。
请参考图16,其示出了本申请一个示例性实施例提供的一种数据搬运方法的流程图。方法用于上述直接内存访问***,且方法由直接内存访问***中的宏指令控制器执行,方法包括:
步骤1601,接收处理器下发的触发指令;
步骤1602,根据触发指令从宏指令存储器中读取宏指令;宏指令用于指示对多维结构数据进行搬运;
步骤1603,将宏指令发送给宏指令解析引擎,以便宏指令解析引擎将宏指令解析为微操作码,并将微操作码发送给数据读写传输通路,由数据读写传输通路根据微操作码向总线读取和写入一维结构数据;微操作码用于指示对多维结构数据中的一维结构数据进行搬运。
在一些实施例中,数据读写传输通路中包含多个处理单元,多个处理单元至少包括读数据接口单元、缓存单元以及写数据接口单元;
宏指令解析引擎与读数据接口单元相连,且宏指令解析引擎用于将微操作码发送给读数据接口单元;
微操作码,用于在多个处理单元之间依次传递。
在一些实施例中,宏指令和微操作码中还包含同步配置,同步配置用于指示对目标地址进行状态检查,目标地址是数据的读地址和写地址中的至少一个;
上述将宏指令发送给宏指令解析引擎,包括:
根据同步配置检查目标地址的状态;
在目标地址的状态满足指定条件时,将宏指令发送给宏指令解析引擎;
其中,指定条件包括:
当目标地址包括读地址时,读地址的状态为可读;
当目标地址包括写地址时,写地址的状态为可写。
在一些实施例中,接收处理器下发的触发指令,包括:
通过多个虚拟通道接收多个处理器分别发送的宏指令;
将宏指令发送给宏指令解析引擎,包括:
根据多个虚拟通道的优先级,将多个处理器分别发送的宏指令依次发送给宏指令解析引擎。
综上所述,本申请实施例所示的方案中,处理器下发给DMA***的是一种宏指令,用于指示对多维结构数据进行搬运;DMA***中的宏指令控制器将宏指令发送给宏指令解析引擎;宏指令解析引擎将宏指令解析为用于指示对多维结构数据中的一维结构数据进行搬运的微操作码,并发送给数据读写传输通路,由数据读写传输通路根据微操作码进行一维结构数据的搬迁。在上述方案中,处理器直接向DMA***指示了多维结构数据的搬运,后续由DMA***中的宏指令解析引擎将多维结构数据的搬运操作拆解为多个一维结构数据的搬运操作,由于DMA***对宏指令进行解析的速度要远快于处理器拆解多维结构数据的搬运操作的速度,因此,通过上述DMA***,能够极大的降低处理器生成一维结构数据的搬运的指令所需要的时间,从而提高数据搬运的效率。
请参考图17,其示出了本申请一个示例性实施例提供的一种数据搬运装置的示意图。该装置用于上述直接内存访问***中的宏指令控制器,该装置包括:
触发指令接收模块1701,用于接收处理器下发的触发指令;
宏指令读取模块1702,用于根据触发指令从宏指令存储器中读取宏指令;宏指令用于指示对多维结构数据进行搬运;
宏指令发送模块1703,用于将宏指令发送给宏指令解析引擎,以便宏指令解析引擎将宏指令解析为微操作码,并将微操作码发送给数据读写传输通路,由数据读写传输通路根据微操作码向总线读取和写入一维结构数据;微操作码用于指示对多维结构数据中的一维结构数据进行搬运。
在一些实施例中,宏指令和微操作码中还包含同步配置,同步配置用于指示对目标地址进行状态检查,目标地址是数据的读地址和写地址中的至少一个;
所述宏指令发送模块1703,用于根据同步配置检查目标地址的状态;
在目标地址的状态满足指定条件时,将宏指令发送给宏指令解析引擎;
其中,指定条件包括:
当目标地址包括读地址时,读地址的状态为可读;
当目标地址包括写地址时,写地址的状态为可写。
在一些实施例中,触发指令接收模块1701,用于通过多个虚拟通道接收多个处理器分别发送的宏指令;
宏指令发送模块1703,用于根据多个虚拟通道的优先级,将多个处理器分别发送的宏指令依次发送给宏指令解析引擎。
综上所述,本申请实施例所示的方案中,处理器下发给DMA***的是一种宏指令,用于指示对多维结构数据进行搬运;DMA***中的宏指令控制器将宏指令发送给宏指令解析引擎;宏指令解析引擎将宏指令解析为用于指示对多维结构数据中的一维结构数据进行搬运的微操作码,并发送给数据读写传输通路,由数据读写传输通路根据微操作码进行一维结构数据的搬迁。在上述方案中,处理器直接向DMA***指示了多维结构数据的搬运,后续由DMA***中的宏指令解析引擎将多维结构数据的搬运操作拆解为多个一维结构数据的搬运操作,由于DMA***对宏指令进行解析的速度要远快于处理器拆解多维结构数据的搬运操作的速度,因此,通过上述DMA***,能够极大的降低处理器生成一维结构数据的搬运的指令所需要的时间,从而提高数据搬运的效率。
本申请的实施例还提供了一种计算机设备,计算机设备包括上述图5、图7、图8以及图14任一所示的直接内存访问***。
本申请的实施例还提供了一种计算机可读存储介质,存储介质中存储有至少一段程序,至少一段程序由控制器加载并执行以实现上述数据搬运方法;控制器是上述图5、图7、图8以及图14任一所示直接内存访问***中的宏指令控制器。
可选地,该计算机可读存储介质可以包括:只读存储器(Read Only Memory,ROM)、随机存取记忆体(Random Access Memory,RAM)、固态硬盘(Solid State Drives,SSD)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(Resistance Random AccessMemory,ReRAM)和动态随机存取存储器(Dynamic Random Access Memory,DRAM)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请的实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被控制器执行时实现上述数据搬运方法;控制器可以是上述图5、图7、图8以及图14任一所示直接内存访问***中的宏指令控制器。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (12)

1.一种直接内存访问***,其特征在于,所述***包括:宏指令存储器、宏指令控制器、宏指令解析引擎以及数据读写传输通路;
所述宏指令存储器和所述宏指令控制器分别与计算机设备中的处理器相连,且所述宏指令存储器与所述宏指令控制器相连;
所述宏指令控制器与所述宏指令解析引擎相连,所述宏指令解析引擎与所述数据读写传输通路相连,所述数据读写传输通路与所述计算机设备的总线相连;
所述宏指令存储器,用于存储所述处理器下发的宏指令;所述宏指令用于指示对多维结构数据进行搬运;
所述宏指令控制器,用于接收处理器下发的触发指令,根据所述触发指令从所述宏指令存储器中读取所述宏指令,并将所述宏指令发送给所述宏指令解析引擎;
所述宏指令解析引擎,用于将所述宏指令解析为微操作码,并将所述微操作码发送给所述数据读写传输通路;所述微操作码用于指示对所述多维结构数据中的一维结构数据进行搬运;
所述数据读写传输通路,用于根据所述微操作码向所述总线读取和写入所述一维结构数据;
所述数据读写传输通路中包含多个处理单元,所述多个处理单元至少包括读数据接口单元、缓存单元以及写数据接口单元;
所述宏指令解析引擎与所述读数据接口单元相连,且所述宏指令解析引擎用于将所述微操作码发送给所述读数据接口单元;
所述微操作码,用于在所述多个处理单元之间依次传递;
所述宏指令还用于指示对所述多维结构数据进行格式转换处理,所述微操作码还用于指示对所述一维结构数据进行格式转换处理;
所述多个处理单元中还包括格式转换前处理单元以及格式转换后处理单元中的至少一个,所述格式转换前处理单元位于所述缓存单元之前,且所述格式转换后处理单元位于所述缓存单元之后;
所述格式转换前处理单元,用于根据所述微操作码指示的格式转换处理的处理方式,对所述一维结构数据进行格式转换前处理,并将格式转换前处理的结果数据写入所述缓存单元;
所述格式转换后处理单元,用于根据所述微操作码指示的格式转换处理的处理方式,对所述缓存单元中的数据进行格式转换后处理后,发送给下一个处理单元。
2.根据权利要求1所述的***,其特征在于,所述宏指令解析引擎,用于在将所述宏指令解析为微操作码时,
解析所述多维结构数据的数据结构,确定所述多维结构数据中的所述一维结构数据的读写地址和数据大小;
根据所述一维结构数据的读写地址和数据大小,生成所述微操作码。
3.根据权利要求2所述的***,其特征在于,所述宏指令中包含第一格式转换配置,所述第一格式转换配置是对所述多维结构数据进行格式转换的配置;
所述宏指令解析引擎,用于在根据所述一维结构数据的读写地址和数据大小,生成所述微操作码时,根据所述第一格式转换配置生成第二格式转换配置,所述第二格式转换配置是对所述一维结构数据进行格式转换的配置;
根据所述一维结构数据的读写地址、数据大小、以及所述第二格式转换配置,生成所述微操作码。
4.根据权利要求2所述的***,其特征在于,所述宏指令还用于指示对所述多维结构数据进行运算处理,所述微操作码还用于指示对所述一维结构数据进行运算处理;
所述多个处理单元中还包括数据运算单元;
所述数据运算单元,用于根据所述微操作码指示的运算处理方式,对输入的数据进行运算处理后,发送给下一个处理单元。
5.根据权利要求4所述的***,其特征在于,所述宏指令和所述微操作码中分别包含运算配置,所述运算配置是对所述运算处理的配置。
6.根据权利要求2至5任一所述的***,其特征在于,所述宏指令和所述微操作码中还包含同步配置,所述同步配置用于指示对目标地址进行状态检查,所述目标地址是数据的读地址和写地址中的至少一个;
所述宏指令控制器,用于在将所述宏指令发送给所述宏指令解析引擎时,根据所述宏指令中的所述同步配置检查所述目标地址的状态,并在所述目标地址的状态满足指定条件时,将所述宏指令发送给所述宏指令解析引擎;所述指定条件包括:当所述目标地址包括读地址时,所述读地址的状态为可读;当所述目标地址包括写地址时,所述写地址的状态为可写;
所述读数据接口单元,用于在所述目标地址包括读地址,且所述读地址的状态为可读时,从所述读地址读取所述一维结构数据;
所述写数据接口单元,用于在所述目标地址包括写地址,且所述写地址的状态为可写时,向所述写地址写入数据。
7.根据权利要求1至5任一所述的***,其特征在于,
所述宏指令控制器,用于通过多个虚拟通道接收多个处理器分别发送的宏指令,根据所述多个虚拟通道的优先级,将所述多个处理器分别发送的宏指令依次发送给所述宏指令解析引擎。
8.一种数据搬运方法,其特征在于,所述方法用于如权利要求1所示的直接内存访问***,且所述方法由所述直接内存访问***中的宏指令控制器执行,所述方法包括:
接收处理器下发的触发指令;
根据所述触发指令从宏指令存储器中读取所述宏指令;所述宏指令用于指示对多维结构数据进行搬运;
将所述宏指令发送给宏指令解析引擎,以便所述宏指令解析引擎将所述宏指令解析为微操作码,并将所述微操作码发送给数据读写传输通路,由所述数据读写传输通路根据所述微操作码向总线读取和写入一维结构数据;所述微操作码用于指示对所述多维结构数据中的所述一维结构数据进行搬运;
所述数据读写传输通路中包含多个处理单元,所述多个处理单元至少包括读数据接口单元、缓存单元以及写数据接口单元;
所述宏指令解析引擎与所述读数据接口单元相连,且所述宏指令解析引擎用于将所述微操作码发送给所述读数据接口单元;
所述微操作码,用于在所述多个处理单元之间依次传递;
所述宏指令还用于指示对所述多维结构数据进行格式转换处理,所述微操作码还用于指示对所述一维结构数据进行格式转换处理;
所述多个处理单元中还包括格式转换前处理单元以及格式转换后处理单元中的至少一个,所述格式转换前处理单元位于所述缓存单元之前,且所述格式转换后处理单元位于所述缓存单元之后;
所述格式转换前处理单元,用于根据所述微操作码指示的格式转换处理的处理方式,对所述一维结构数据进行格式转换前处理,并将格式转换前处理的结果数据写入所述缓存单元;
所述格式转换后处理单元,用于根据所述微操作码指示的格式转换处理的处理方式,对所述缓存单元中的数据进行格式转换后处理后,发送给下一个处理单元。
9.根据权利要求8所述的方法,其特征在于,所述宏指令和所述微操作码中还包含同步配置,所述同步配置用于指示对目标地址进行状态检查,所述目标地址是数据的读地址和写地址中的至少一个;
所述将所述宏指令发送给所述宏指令解析引擎,包括:
根据所述同步配置检查所述目标地址的状态;
在所述目标地址的状态满足指定条件时,将所述宏指令发送给所述宏指令解析引擎;
其中,所述指定条件包括:
当所述目标地址包括读地址时,所述读地址的状态为可读;
当所述目标地址包括写地址时,所述写地址的状态为可写。
10.一种数据搬运装置,其特征在于,所述装置用于如权利要求1所示的直接内存访问***中的宏指令控制器,所述装置包括:
触发指令接收模块,用于接收处理器下发的触发指令;
宏指令读取模块,用于根据所述触发指令从宏指令存储器中读取所述宏指令;所述宏指令用于指示对多维结构数据进行搬运;
宏指令发送模块,用于将所述宏指令发送给宏指令解析引擎,以便所述宏指令解析引擎将所述宏指令解析为微操作码,并将所述微操作码发送给数据读写传输通路,由所述数据读写传输通路根据所述微操作码向总线读取和写入一维结构数据;所述微操作码用于指示对所述多维结构数据中的所述一维结构数据进行搬运;
所述数据读写传输通路中包含多个处理单元,所述多个处理单元至少包括读数据接口单元、缓存单元以及写数据接口单元;
所述宏指令解析引擎与所述读数据接口单元相连,且所述宏指令解析引擎用于将所述微操作码发送给所述读数据接口单元;
所述微操作码,用于在所述多个处理单元之间依次传递;
所述宏指令还用于指示对所述多维结构数据进行格式转换处理,所述微操作码还用于指示对所述一维结构数据进行格式转换处理;
所述多个处理单元中还包括格式转换前处理单元以及格式转换后处理单元中的至少一个,所述格式转换前处理单元位于所述缓存单元之前,且所述格式转换后处理单元位于所述缓存单元之后;
所述格式转换前处理单元,用于根据所述微操作码指示的格式转换处理的处理方式,对所述一维结构数据进行格式转换前处理,并将格式转换前处理的结果数据写入所述缓存单元;
所述格式转换后处理单元,用于根据所述微操作码指示的格式转换处理的处理方式,对所述缓存单元中的数据进行格式转换后处理后,发送给下一个处理单元。
11.一种计算机设备,其特征在于,所述计算机设备包括如权利要求1至7任一所述的直接内存访问***。
12.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一段程序,所述至少一段程序由控制器加载并执行以实现如权利要求8或9所述的数据搬运方法;所述控制器是如权利要求1至7任一所述的直接内存访问***中的宏指令控制器。
CN202311177686.7A 2023-09-13 2023-09-13 直接内存访问***、数据搬运方法、设备及存储介质 Active CN116909628B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311177686.7A CN116909628B (zh) 2023-09-13 2023-09-13 直接内存访问***、数据搬运方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311177686.7A CN116909628B (zh) 2023-09-13 2023-09-13 直接内存访问***、数据搬运方法、设备及存储介质

Publications (2)

Publication Number Publication Date
CN116909628A CN116909628A (zh) 2023-10-20
CN116909628B true CN116909628B (zh) 2023-12-26

Family

ID=88356935

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311177686.7A Active CN116909628B (zh) 2023-09-13 2023-09-13 直接内存访问***、数据搬运方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116909628B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118170702A (zh) * 2024-05-13 2024-06-11 北京壁仞科技开发有限公司 Dma控制器以及用于广播的数据搬运方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4878174A (en) * 1987-11-03 1989-10-31 Lsi Logic Corporation Flexible ASIC microcomputer permitting the modular modification of dedicated functions and macroinstructions
CN101329622A (zh) * 2008-02-08 2008-12-24 威盛电子股份有限公司 微处理器以及宏指令执行方法
CN108416431A (zh) * 2018-01-19 2018-08-17 上海兆芯集成电路有限公司 神经网络微处理器与宏指令处理方法
US11455170B2 (en) * 2019-12-30 2022-09-27 Montage Technology Co., Ltd. Processing devices and distributed processing systems

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100369024C (zh) * 2005-01-17 2008-02-13 北京中星微电子有限公司 直接存储访问控制装置和图像处理***以及传输方法
US20220171622A1 (en) * 2020-11-27 2022-06-02 Electronics And Telecommunications Research Institute Multi-dimension dma controller and computer system including the same

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4878174A (en) * 1987-11-03 1989-10-31 Lsi Logic Corporation Flexible ASIC microcomputer permitting the modular modification of dedicated functions and macroinstructions
CN101329622A (zh) * 2008-02-08 2008-12-24 威盛电子股份有限公司 微处理器以及宏指令执行方法
CN108416431A (zh) * 2018-01-19 2018-08-17 上海兆芯集成电路有限公司 神经网络微处理器与宏指令处理方法
US11455170B2 (en) * 2019-12-30 2022-09-27 Montage Technology Co., Ltd. Processing devices and distributed processing systems

Also Published As

Publication number Publication date
CN116909628A (zh) 2023-10-20

Similar Documents

Publication Publication Date Title
US20230115874A1 (en) Vector computational unit
US11797304B2 (en) Instruction set architecture for a vector computational unit
US20120173849A1 (en) Methods and Apparatus for Scalable Array Processor Interrupt Detection and Response
CN116909628B (zh) 直接内存访问***、数据搬运方法、设备及存储介质
US9513908B2 (en) Streaming memory transpose operations
US9400656B2 (en) Chaining between exposed vector pipelines
JPH05205005A (ja) ロジック・シミュレーション・マシン用ホスト・インタフェース
WO2021115208A1 (zh) 神经网络处理器、芯片和电子设备
US11580397B2 (en) Tensor dropout using a mask having a different ordering than the tensor
JPH06131181A (ja) 階層並列処理型中央処理装置
WO2021115149A1 (zh) 神经网络处理器、芯片和电子设备
EP1220091B1 (en) Circuit and method for instruction compression and dispersal in VLIW processors
Kuehn et al. Design and simulation of an MC68000-based multi-microprocessor system.
JP2024518587A (ja) データ依存の不規則な演算のためのプログラム可能なアクセラレータ
US11328209B1 (en) Dual cycle tensor dropout in a neural network
JPH02306361A (ja) マイクロプロセッサ
CN112463218A (zh) 指令发射控制方法及电路、数据处理方法及电路
US11972263B2 (en) Cooperative instruction prefetch on multicore system
US20240211264A1 (en) Cooperative Instruction Prefetch on Multicore System
CN118202332A (zh) 多核***上的协同指令预取
CN118284889A (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