CN116244005A - 一种多线程异步数据传输系统及方法 - Google Patents
一种多线程异步数据传输系统及方法 Download PDFInfo
- Publication number
- CN116244005A CN116244005A CN202310234956.7A CN202310234956A CN116244005A CN 116244005 A CN116244005 A CN 116244005A CN 202310234956 A CN202310234956 A CN 202310234956A CN 116244005 A CN116244005 A CN 116244005A
- Authority
- CN
- China
- Prior art keywords
- asynchronous
- data
- loading
- processing unit
- asynchronous data
- 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.)
- Withdrawn
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 34
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000012545 processing Methods 0.000 claims abstract description 275
- 238000006243 chemical reaction Methods 0.000 claims abstract description 57
- 230000004044 response Effects 0.000 claims abstract description 27
- 238000007726 management method Methods 0.000 claims description 30
- 238000013501 data transformation Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 7
- 238000012546 transfer Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- 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
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种多线程异步数据传输系统及方法,所述方法包括数据加载与存储单元接收并解析异步数据加载指令,向异步数据变换处理单元发送异步处理记录分配请求;异步数据变换处理单元完成异步处理记录分配;数据加载与存储单元拆分获得异步数据加载请求并发送至缓存控制存储管理单元;缓存控制存储管理单元向数据加载与存储单元返回读取数据响应;异步数据变换处理单元接收数据,更新异步处理记录;共享存储器访问处理单元接收异步数据执行指令,向异步数据变换处理单元发送数据请求,若请求的数据准备就绪,则从共享存储器读取数据进行执行操作。该系统及方法实现有效的异步数据传输处理,减少了全部线程达到等待所需的时间。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种多线程异步数据传输系统与方法。
背景技术
数据传输是影响计算机处理器内核内算术逻辑单元(ALU,arithmetic and logicunit)计算效率的重要因素,尤其是外部全局存储器与核内存储单元之间传输数据时,延迟比较长。这种延迟数据的影响,对图形处理器(GPU,graphics processing unit)这种众核处理设备也较为明显。
在通用数据计算或卷积神经网络应用场景中,通常需要传输图像或网络参数数据进入核内算术逻辑单元(ALU)进行计算,原来在数据加载与存储单元(Load and Store,LS)通过通用数据加载指令逐步进行加载,或写出指令进行写出数据的传输操作,这里使用LS来进行数据全局存储器地址计算,并通过缓存管理模块来缓存数据。然而卷积操作本身需要大量数据进行相同的乘加等运算操作,同时在卷积时所需的数据之间也具有相关性,所以数据均放置于共享存储器空间中进行存储,如图1所示。
同时,由于单指令多数据ALU指令计算的数据量较大,数据传输请求延迟高,这时不断需要线程调度指令来完成大量块数据的传输。每个线程根据各自的地址搬运一小部分,凑成一个大的数据块,如图2所示。同时ALU内部也需要不断通过多个单指令多数据(SIMD,Single Instruction Multiple Data)的线程进行切换来隐藏加载数据所产生的延迟问题。当线程工作组加载的数据块全部准备就绪时,再去执行该块区域相关的大量卷积指令操作。
在实现本发明过程中,发明人发现目前的每个线程同时进行加载数据操作,然后做工作组内线程同步等待处理的方法,主要存在以下几个方面问题:
一、每个线程都需要去加载一部分数据,使得数据加载与存储单元需要处理的指令较多,需要排队逐个处理。
二、大多数据会从外部全局存储器读取,导致线程大多会因为数据延迟长而被阻塞,无法处理其他操作,导致程序性能下降。
三、必须通过在加载指令操作完成数据加载后,插入工作组内部的同步操作,才能确定需要加载的数据块完成数据加载工作。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种多线程异步数据传输系统及方法。
为了解决上述技术问题,第一方面公开了一种多线程异步数据传输系统,包括线程调度器、指令发射单元、数据加载与存储单元、缓存控制存储管理单元、异步数据变换处理单元、共享存储器和共享存储器访问处理单元,
所述线程调度器,用于调度异步数据加载线程和异步数据执行线程;
所述指令发射单元,用于异步数据加载线程向数据加载与存储单元发射异步数据加载指令,以及异步数据执行线程向共享存储器访问处理单元发射执行指令;
所述数据加载与存储单元,用于接收并解析异步数据加载指令,向异步数据变换处理单元发送异步处理记录分配请求;拆分获得异步数据加载请求并将所述异步数据加载请求发送至缓存控制存储管理单元;
所述缓存控制存储管理单元,用于接收异步数据加载请求,当存在待加载的异步数据时,向数据加载与存储单元返回读取数据响应;数据加载与存储单元读取数据并发送至异步数据变换处理单元;
所述异步数据变换处理单元,用于接收异步处理记录分配请求,完成异步处理记录分配,以及接收数据加载与存储单元发送的数据,将数据存储至共享存储器;
所述共享存储器,用于存储数据;
所述共享存储器访问处理单元,用于接收异步数据执行指令,向异步数据变换处理单元发送数据请求,若请求的数据准备就绪,则从共享存储器读取数据进行执行操作,否则将异步数据执行线程置为待唤醒状态,直到请求的数据准备就绪唤醒异步数据执行线程。
第二方面公开了一种多线程异步数据传输方法,包括以下步骤:
步骤1,数据加载与存储单元接收并解析异步数据加载指令,向异步数据变换处理单元发送异步处理记录分配请求;
步骤2,异步数据变换处理单元接收异步处理记录分配请求,完成异步处理记录分配,并向数据加载与存储单元发送异步处理记录分配响应;
步骤3,数据加载与存储单元接收异步处理记录分配响应,拆分获得异步数据加载请求并将所述异步数据加载请求发送至缓存控制存储管理单元;
步骤4,缓存控制存储管理单元接收异步数据加载请求,当存在待加载的异步数据时,向数据加载与存储单元返回读取数据响应;数据加载与存储单元读取数据并发送至异步数据变换处理单元;
步骤5,异步数据变换处理单元接收数据加载与存储单元发送的数据,更新异步处理记录信息中内容,将数据存储至共享存储器;
步骤6,共享存储器访问处理单元接收异步数据执行指令,向异步数据变换处理单元发送数据请求,若请求的数据准备就绪,则从共享存储器读取数据进行执行操作,否则将异步数据执行线程置为待唤醒状态,直到请求的数据准备就绪唤醒异步数据执行线程。
进一步地,步骤1包括:
根据异步数据加载指令携带的地址信息、访问高度与宽度信息,计算需要拆分出的异步加载数据块请求数量N,为每个异步加载数据块添加异步处理标识并分配异步处理编号;异步处理标识便于该类型指令返回数据时,解除当前线程或其他线程发出来的读数据请求异步等待信号。
向异步数据变换处理单元发送异步处理记录分配请求,所述异步处理记录分配请求中包括线程工作组编号、异步加载数据块请求数量N、每个异步加载数据块的异步处理标识和异步处理编号。
进一步地,所述步骤2包括:
步骤2.1,在异步数据变换处理单元设计一组处理工作组内部异步处理信号的编号标识记录存储区域,所述编号标识记录存储区域用于存储异步处理记录表,所述异步处理记录表用于记录每个异步待返回数据块的操作;
步骤2.2,异步数据变换处理单元接收异步处理记录分配请求,进行异步处理记录分配,更新异步处理记录表;
步骤2.3,完成所有异步处理记录分配,并向数据加载与存储单元发送异步处理记录分配响应。
进一步地,所述步骤2.1中所述异步处理记录表包括计算工作组异步处理编号、异步待处理计数器与分配状态标记,线程工作组编号和工作组内异步处理编号组合拼装成一个完整的当前计算工作组异步处理编号;分配状态标记用于标记该异步处理编号是否被分配;异步待处理计数器表示该计数器值是否有效以及待处理请求的计数数量,0xFFFFFFFF表示计数器值无效,大于0且不为0xFFFFFFFF为仍需待处理计数数量,0则表示待处理数据全部完成,无需等待,可直接读取使用。
进一步地,所述步骤2.2包括:异步数据变换处理单元根据当前计算工作组异步处理编号去查找异步处理记录表,检查其是否被分配;如果当前计算工作组异步处理编号未被分配,则立即分配,在分配状态标记中置上已分配标记,同时在异步待处理计数器中填上待处理请求的计数数量;如果当前计算工作组异步处理编号已被分配,则说明共享存储器访问处理单元中有异步数据执行线程需要使用的数据请求已经到来,且完成部分分配工作,此时则只需更新计数器值从无效值(0xFFFFFFFF)更新为有效的异步待处理数据计数值。
进一步地,所述步骤3包括:在异步加载数据区域上按数据缓存线拆分异步数据加载请求,所述异步数据加载请求中包括异步处理标识和异步处理编号;将异步数据加载请求发送至缓存控制存储管理单元。
进一步地,所述步骤4包括:
缓存控制存储管理单元接收异步数据加载请求,若当前缓存存在待加载的异步数据,则向数据加载与存储单元返回读取数据响应;否则,将异步数据加载请求加入等待返回延迟缓存,向下一级缓存、全局存储器或显存请求待加载的异步数据;当从下一级缓存、全局存储器或显存返回的待加载的异步数据填充进缓存线,则向数据加载与存储单元返回读取数据响应;
数据加载与存储单元从缓存控制存储管理单元读取数据,并发送至异步数据变换处理单元。
进一步地,步骤6包括:
共享存储器访问处理单元根据线程工作组编号以及工作组内异步处理编号组合成当前计算工作组异步处理编号,向异步数据变换处理单元发送数据请求,查找需要请求的数据是否准备就绪;
若当前计算工作组异步处理编号对应的分配状态为未分配,数据变换处理单元将分配状态置为已分配,由于该异步数据执行线程来请求使用数据时,无法查看到所有各线程需要访问的总大小,因此无法填充计数器值,将异步待处理计数器设置为无效值0xFFFFFFFF,向共享存储器访问处理单元返回已分配但待异步数据回填状态的响应,共享存储器访问处理单元记录该异步数据执行线程状态为待唤醒状态;当分配状态为已分配,异步待处理计数器取值不为0,共享存储器访问处理单元记录该异步数据执行线程状态为待唤醒状态;当请求的数据准备就绪,异步数据变换处理单元通知共享存储器访问处理单元已完成异步数据加载进共享存储器指定地址的工作,共享存储器访问处理单元唤醒异步数据执行线程;对于待唤醒状态的异步数据执行线程,共享存储器访问处理单元发送给线程调度器控制该异步数据执行线程不再被调度发射指令出来;
当异步待处理计数器取值为0,表示请求的数据准备就绪,则从共享存储器读取数据进行执行操作。
进一步地,步骤5中将数据存储至共享存储器前,异步数据变换处理单元对数据进行变换处理。
有益效果:与现有技术相比,本发明的优点及显著效果为:(1)可以实现有效的同一个计算工作组内部不同线程之间的异步数据传输处理,无需完全依赖于使用同步操作来完成。(2)异步处理替代了数据加载完成需要同步操作中所有线程完全等待到达同步点的问题,减少了全部线程达到等待所需的时间。(3)同时可以采用不同线程分别进行数据传输与执行计算,加载数据的线程可一直用于加载数据,而执行计算部分可以完全独立执行计算。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为通用工作组内同步进行数据传输处理示意图;
图2为通用多线程同步数据传输示意图,每个线程加载图中间最小方框位置处数据块,多个线程合在一起加载中间大数据块部分区域数据;
图3为异步处理数据加载示意图,该数据块完全由一个独立的线程进行数据加载操作。
图4为本发明的多线程异步数据传输系统结构示意图,异步数据流在数据加载与存储单元侧分配、处理传输路径与在共享存储器访问处理单元侧检测示意;
图5为数据加载与存储单元部分对异步数据加载指令处理流程示意图,其中示意了对异步信息处理、数据加载与处理等过程。
图6为共享存储器访问处理单元处理对异步访问处理流程示意图,其中包含对异步访问优先于数据加载完成时的处理过程;
图7为计算工作组在核层面的异步处理编号产生与异步处理信号管理示意图。
图8为数据加载与存储单元执行异步数据加载指令时,进行的异步信号分配与填充计数器值等操作示意图;
图9为共享存储器访问处理单元在数据加载指令未开始时,优先试图访问需要加载的异步处理数据,所进行的数据处理示意图。
具体实施方式
下面将结合附图,对本发明的实施例进行描述。
本申请实施例目的是为了解决大量块数据异步加载的处理,需要同时使用线程进行数据加载与传输带来的线程同步问题,将数据加载部分与使用数据执行部分分开,提供一种多线程异步数据传输系统及方法,使用专门加载数据的线程进行数据加载操作,而其他通用计算部分由专门进行执行(计算)的线程进行,使得数据加载与执行相分离,同时达到异步数据传输的效果,可以应用于图像数据传输场景。
本申请第一实施例公开一种多线程异步数据传输系统,包括线程调度器、指令发射单元、数据加载与存储单元、缓存控制存储管理单元、异步数据变换处理单元、共享存储器和共享存储器访问处理单元,如图4所示,该图图示了从线程调度器调度出来的线程发射指令进入数据加载与存储单元、共享存储器访问处理单元的数据处理通路。
所述线程调度器,用于调度异步数据加载线程和异步数据执行线程;
所述指令发射单元,用于异步数据加载线程向数据加载与存储单元发射异步数据加载指令,以及异步数据执行线程向共享存储器访问处理单元发射执行指令;
所述数据加载与存储单元,用于接收并解析异步数据加载指令,向异步数据变换处理单元发送异步处理记录分配请求;拆分获得异步数据加载请求并将所述异步数据加载请求发送至缓存控制存储管理单元;
所述缓存控制存储管理单元,用于接收异步数据加载请求,当存在待加载的异步数据时,向数据加载与存储单元返回读取数据响应;数据加载与存储单元读取数据并发送至异步数据变换处理单元;
所述异步数据变换处理单元,用于接收异步处理记录分配请求,完成异步处理记录分配,以及接收数据加载与存储单元发送的数据,将数据存储至共享存储器;
所述共享存储器,用于存储数据;共享存储器作为共享存储器访问处理单元的直接存储区域,其与通用寄存器数据之间的读写、原子操作以及工作组同步等直接由共享存储器访问处理单元完成控制。
所述共享存储器访问处理单元,用于接收异步数据执行指令,向异步数据变换处理单元发送数据请求,若请求的数据准备就绪,则从共享存储器读取数据进行执行操作,否则将异步数据执行线程置为待唤醒状态,直到请求的数据准备就绪唤醒异步数据执行线程。
本申请第二实施例公开一种多线程异步数据传输方法,该方法是一种在并行计算工作组中使用数据传输与通用计算部分相分离的异步进行数据传输处理的方法,所述异步数据传输包括在编程模型上采用独立的执行语句经编译器编译后成异步数据加载指令,使进行数据传输的线程(异步数据加载)在数据加载与存储单元中执行该异步数据加载指令并专门负责进行数据传输,而使用数据进行计算的线程组(异步数据执行线程)从共享存储器访问处理单元中获取加载的异步数据并专门负责进行执行(运算)操作,其中数据传输部分与使用数据进行通用计算部分的协同处理通过异步数据变换处理单元进行异步处理完成。包括以下步骤:
步骤1,数据加载与存储单元接收并解析异步数据加载指令,向异步数据变换处理单元发送异步处理记录分配请求。
具体实施时,数据加载与存储单元中,异步与非异步处理的指令放在相同的指令序列中,但由于异步处理指令可能需要拆解出来更多的请求,为不阻挡非异步数据处理请求,将两者请求拆分处理部分相分离,同时为异步处理的指令设置一个异步处理标识进行区分。
本实施例在编程时,根据线程编号判断是否执行加载数据操作。
如果满足条件,则执行加载数据操作;
执行加载数据操作的部分,将在指令带上异步处理标识。编译器在编译过程中,将异步信息编译进异步数据加载指令编码信息中,便于该类型指令返回数据时,解除当前线程或其他线程发出来的读数据请求异步等待信号。
否则,跳过该加载数据操作,执行计算指令操作行为。
如图5所示,步骤1包括:由于异步处理请求的数据通常为指定图像或者特定存储块区域,非完全离散区域,如图3所示,根据异步数据加载指令携带的地址信息、访问高度与宽度信息,计算需要拆分出的异步加载数据块请求数量N,为每个异步加载数据块添加异步处理标识并分配异步处理编号;
向异步数据变换处理单元发送异步处理记录分配请求,所述异步处理记录分配请求中包括线程工作组编号、异步加载数据块请求数量N、每个异步加载数据块的异步处理标识和异步处理编号。
步骤2,异步数据变换处理单元接收异步处理记录分配请求,完成异步处理记录分配,并向数据加载与存储单元发送异步处理记录分配响应,包括:
步骤2.1,在异步数据变换处理单元设计一组处理工作组内部异步处理信号的编号标识记录存储区域,所述编号标识记录存储区域用于存储异步处理记录表,所述异步处理记录表用于记录每个异步待返回数据块的操作;所述异步处理记录表包括计算工作组异步处理编号、异步待处理计数器与分配状态标记,线程工作组编号和工作组内异步处理编号组合拼装成一个完整的当前计算工作组异步处理编号;分配状态标记用于标记该异步处理编号是否被分配,占用1bit大小;异步待处理计数器表示该计数器值是否有效以及待处理请求的计数数量,0xFFFFFFFF表示计数器值无效,大于0且不为0xFFFFFFFF为仍需待处理计数数量,0则表示待处理数据全部完成,无需等待,直接读取使用。
步骤2.2,异步数据变换处理单元接收异步处理记录分配请求,进行异步处理记录分配,更新异步处理记录表,包括:
如图7和图8所示,异步数据变换处理单元根据当前计算工作组异步处理编号(异步ID_n,0≤n≤N-1)去查找异步处理记录表,检查其是否被分配;如果当前计算工作组异步处理编号异步ID_n未被分配,则立即分配,在分配状态标记中置上已分配标记,同时在异步待处理计数器中填上待处理请求的计数数量计数器_n;如果当前计算工作组异步处理编号异步ID_n已被分配,则说明共享存储器访问处理单元中有异步数据执行线程需要使用的数据请求已经到来,且完成部分分配工作,此时则只需更新计数器值计数器_n从无效值更新为有效的异步待处理数据计数值。
步骤2.3,完成所有异步处理记录分配,并向数据加载与存储单元发送异步处理记录分配响应。
步骤3,数据加载与存储单元接收异步处理记录分配响应,拆分获得异步数据加载请求并将所述异步数据加载请求发送至缓存控制存储管理单元,包括:
数据加载与存储单元按缓存线粒度对缓存控制存储管理单元进行访问,因此在异步加载数据区域上按数据缓存线拆分异步数据加载请求,所述异步数据加载请求中包括异步处理标识和异步处理编号;将异步数据加载请求发送至缓存控制存储管理单元。
步骤4,缓存控制存储管理单元负责进行缓存命中率测试、接收缓存线读取请求、管理缓存线读写以及数据更新、Tag标记信息管理以及读写端口仲裁等。缓存控制存储管理单元接收异步数据加载请求,当存在待加载的异步数据时,向数据加载与存储单元返回读取数据响应;数据加载与存储单元读取数据并发送至异步数据变换处理单元,包括:
缓存控制存储管理单元接收异步数据加载请求,若当前缓存存在待加载的异步数据,则向数据加载与存储单元返回读取数据响应;否则,将异步数据加载请求加入等待返回延迟缓存,向下一级缓存、全局存储器或显存请求待加载的异步数据;当从下一级缓存、全局存储器或显存返回的待加载的异步数据填充进缓存线,则向数据加载与存储单元返回读取数据响应;
数据加载与存储单元从缓存控制存储管理单元读取数据,并发送至异步数据变换处理单元。
步骤5,异步数据变换处理单元接收数据加载与存储单元发送的数据,更新异步处理记录,将数据存储至共享存储器;
异步数据变换处理单元根据数据加载与存储单元的请求,根据线程工作组编号、异步处理标识、异步处理编号与异步加载数据块请求数量N进行计数,记录下每个异步待返回数据块的操作。异步数据变换处理单元将数据根据地址写入共享存储器中,然后该异步编号数据块计数器计数器_n将更新。当更新至完成异步操作状态时,通知共享存储器访问处理单元完成异步数据传输,共享存储器访问处理单元可进行待唤醒状态的线程唤醒操作。
将数据存储至共享存储器前,异步数据变换处理单元对数据进行变换处理,如对图像数据进行过滤操作,过滤掉指定范围之外的数据;取反操作处理;横向转纵向处理的操作。。
步骤6,共享存储器访问处理单元接收异步数据执行指令,向异步数据变换处理单元发送数据请求,若请求的数据准备就绪,则从共享存储器读取数据进行执行操作,否则将异步数据执行线程置为待唤醒状态,直到请求的数据准备就绪唤醒异步数据执行线程;对于非异步访问共享存储器的指令,共享存储器访问处理单元直接对共享存储器区域进行访问控制。
如图6所示,步骤6包括:共享存储器访问处理单元根据线程工作组编号以及工作组内异步处理编号组合成当前计算工作组异步处理编号异步ID_n,向异步数据变换处理单元发送数据请求,查找需要请求的数据是否准备就绪;
如图9所示,若当前计算工作组异步处理编号异步ID_n对应的分配状态为未分配,数据变换处理单元将分配状态置为已分配,并将异步待处理计数器计数器_n设置为无效值0xFFFFFFFF,向共享存储器访问处理单元返回已分配但待异步数据回填状态的响应,共享存储器访问处理单元记录该异步数据执行线程状态为待唤醒状态;当分配状态为已分配,异步待处理计数器计数器_n取值不为0,数据变换处理单元向共享存储器访问处理单元返回已分配但待异步数据回填状态的响应,共享存储器访问处理单元记录该异步数据执行线程状态为待唤醒状态;当请求的数据准备就绪,异步数据变换处理单元通知共享存储器访问处理单元已完成异步数据加载进共享存储器指定地址的工作,共享存储器访问处理单元唤醒异步数据执行线程;对于待唤醒状态的异步数据执行线程,共享存储器访问处理单元发送给线程调度器控制该异步数据执行线程不再被调度发射指令出来;
当异步待处理计数器计数器_n取值为0,表示请求的数据准备就绪,则从共享存储器读取数据进行执行操作。
完成工作组内容操作时,释放共享存储器区域时,同时释放异步处理变换单元中的异步处理ID与计数器信号,释放已分配标记并进行回收供后续使用。
上述缓存控制存储管理单元、共享存储器访问处理单元,以及通用数据加载处理部分对原始缓冲区/结构缓冲区/多维图像缓冲器地址计算均为成熟技术,不再赘述。
具体实现中,本申请提供计算机存储介质以及对应的数据处理单元,其中,该计算机存储介质能够存储计算机程序,所述计算机程序通过数据处理单元执行时可运行本发明提供的一种多线程异步数据传输方法的发明内容以及各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random access memory,RAM)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术方案可借助计算机程序以及其对应的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机程序即软件产品的形式体现出来,该计算机程序软件产品可以存储在存储介质中,包括若干指令用以使得一台包含数据处理单元的设备(可以是个人计算机,服务器,单片机,MUU或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本发明提供了一种多线程异步数据传输的系统与方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (10)
1.一种多线程异步数据传输系统,其特征在于,包括线程调度器、指令发射单元、数据加载与存储单元、缓存控制存储管理单元、异步数据变换处理单元、共享存储器和共享存储器访问处理单元,
所述线程调度器,用于调度异步数据加载线程和异步数据执行线程;
所述指令发射单元,用于异步数据加载线程向数据加载与存储单元发射异步数据加载指令,以及异步数据执行线程向共享存储器访问处理单元发射执行指令;
所述数据加载与存储单元,用于接收并解析异步数据加载指令,向异步数据变换处理单元发送异步处理记录分配请求;拆分获得异步数据加载请求并将所述异步数据加载请求发送至缓存控制存储管理单元;
所述缓存控制存储管理单元,用于接收异步数据加载请求,当存在待加载的异步数据时,向数据加载与存储单元返回读取数据响应;数据加载与存储单元读取数据并发送至异步数据变换处理单元;
所述异步数据变换处理单元,用于接收异步处理记录分配请求,完成异步处理记录分配,以及接收数据加载与存储单元发送的数据,将数据存储至共享存储器;
所述共享存储器,用于存储数据;
所述共享存储器访问处理单元,用于接收异步数据执行指令,向异步数据变换处理单元发送数据请求,若请求的数据准备就绪,则从共享存储器读取数据进行执行操作,否则将异步数据执行线程置为待唤醒状态,直到请求的数据准备就绪唤醒异步数据执行线程。
2.一种多线程异步数据传输方法,其特征在于,包括以下步骤:
步骤1,数据加载与存储单元接收并解析异步数据加载指令,向异步数据变换处理单元发送异步处理记录分配请求;
步骤2,异步数据变换处理单元接收异步处理记录分配请求,完成异步处理记录分配,并向数据加载与存储单元发送异步处理记录分配响应;
步骤3,数据加载与存储单元接收异步处理记录分配响应,拆分获得异步数据加载请求并将所述异步数据加载请求发送至缓存控制存储管理单元;
步骤4,缓存控制存储管理单元接收异步数据加载请求,当存在待加载的异步数据时,向数据加载与存储单元返回读取数据响应;数据加载与存储单元读取数据并发送至异步数据变换处理单元;
步骤5,异步数据变换处理单元接收数据加载与存储单元发送的数据,更新异步处理记录,将数据存储至共享存储器;
步骤6,共享存储器访问处理单元接收异步数据执行指令,向异步数据变换处理单元发送数据请求,若请求的数据准备就绪,则从共享存储器读取数据进行执行操作,否则将异步数据执行线程置为待唤醒状态,直到请求的数据准备就绪唤醒异步数据执行线程。
3.根据权利要求2所述的一种多线程异步数据传输方法,其特征在于,所述步骤1包括:根据异步数据加载指令携带的地址信息、访问高度与宽度信息,计算需要拆分出的异步加载数据块请求数量N,为每个异步加载数据块添加异步处理标识并分配异步处理编号;
向异步数据变换处理单元发送异步处理记录分配请求,所述异步处理记录分配请求中包括线程工作组编号、异步加载数据块请求数量N、每个异步加载数据块的异步处理标识和异步处理编号。
4.根据权利要求3所述的一种多线程异步数据传输方法,其特征在于,所述步骤2包括:步骤2.1,在异步数据变换处理单元设计一组处理工作组内部异步处理信号的编号标识记录存储区域,所述编号标识记录存储区域用于存储异步处理记录表,所述异步处理记录表用于记录每个异步待返回数据块的操作;
步骤2.2,异步数据变换处理单元接收异步处理记录分配请求,进行异步处理记录分配,更新异步处理记录表;
步骤2.3,完成所有异步处理记录分配,并向数据加载与存储单元发送异步处理记录分配响应。
5.根据权利要求4所述的一种多线程异步数据传输方法,其特征在于,所述步骤2.1中所述异步处理记录表包括计算工作组异步处理编号、异步待处理计数器与分配状态标记,线程工作组编号和工作组内异步处理编号组合拼装成一个完整的当前计算工作组异步处理编号;分配状态标记用于标记该异步处理编号是否被分配;异步待处理计数器表示该计数器值是否有效以及待处理请求的计数数量,0xFFFFFFFF表示计数器值无效,大于0且不为0xFFFFFFFF为仍需待处理计数数量,0则表示待处理数据全部完成,无需等待,直接读取使用。
6.根据权利要求5所述的一种多线程异步数据传输方法,其特征在于,所述步骤2.2包括:异步数据变换处理单元根据当前计算工作组异步处理编号去查找异步处理记录表,检查其是否被分配;如果当前计算工作组异步处理编号未被分配,则立即分配,在分配状态标记中置上已分配标记,同时在异步待处理计数器中填上待处理请求的计数数量;如果当前计算工作组异步处理编号已被分配,则说明共享存储器访问处理单元中有异步数据执行线程需要使用的数据请求已经到来,且完成部分分配工作,此时则只需更新计数器值从无效值更新为有效的异步待处理数据计数值。
7.根据权利要求6所述的一种多线程异步数据传输方法,其特征在于,所述步骤3包括:在异步加载数据区域上按数据缓存线拆分异步数据加载请求,所述异步数据加载请求中包括异步处理标识和异步处理编号;将异步数据加载请求发送至缓存控制存储管理单元。
8.根据权利要求7所述的一种多线程异步数据传输方法,其特征在于,所述步骤4包括:缓存控制存储管理单元接收异步数据加载请求,若当前缓存存在待加载的异步数据,则向数据加载与存储单元返回读取数据响应;否则,将异步数据加载请求加入等待返回延迟缓存,向下一级缓存、全局存储器或显存请求待加载的异步数据;当从下一级缓存、全局存储器或显存返回的待加载的异步数据填充进缓存线,则向数据加载与存储单元返回读取数据响应;
数据加载与存储单元从缓存控制存储管理单元读取数据,并发送至异步数据变换处理单元。
9.根据权利要求8所述的一种多线程异步数据传输方法,其特征在于,所述步骤6包括:
共享存储器访问处理单元根据线程工作组编号以及工作组内异步处理编号组合成当前计算工作组异步处理编号,向异步数据变换处理单元发送数据请求,查找需要请求的数据是否准备就绪;
若当前计算工作组异步处理编号对应的分配状态为未分配,数据变换处理单元将分配状态置为已分配,并将异步待处理计数器设置为无效值0xFFFFFFFF,向共享存储器访问处理单元返回已分配但待异步数据回填状态的响应,共享存储器访问处理单元记录该异步数据执行线程状态为待唤醒状态;当分配状态为已分配,异步待处理计数器取值不为0,数据变换处理单元向共享存储器访问处理单元返回已分配但待异步数据回填状态的响应,共享存储器访问处理单元记录该异步数据执行线程状态为待唤醒状态;当请求的数据准备就绪,异步数据变换处理单元通知共享存储器访问处理单元已完成异步数据加载进共享存储器指定地址的工作,共享存储器访问处理单元唤醒异步数据执行线程;对于待唤醒状态的异步数据执行线程,共享存储器访问处理单元发送给线程调度器控制该异步数据执行线程不再被调度发射指令出来;
当异步待处理计数器取值为0,表示请求的数据准备就绪,则从共享存储器读取数据进行执行操作。
10.根据权利要求9所述的一种多线程异步数据传输方法,其特征在于,步骤5中将数据存储至共享存储器前,异步数据变换处理单元对数据进行变换处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310234956.7A CN116244005A (zh) | 2023-03-13 | 2023-03-13 | 一种多线程异步数据传输系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310234956.7A CN116244005A (zh) | 2023-03-13 | 2023-03-13 | 一种多线程异步数据传输系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116244005A true CN116244005A (zh) | 2023-06-09 |
Family
ID=86625910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310234956.7A Withdrawn CN116244005A (zh) | 2023-03-13 | 2023-03-13 | 一种多线程异步数据传输系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116244005A (zh) |
-
2023
- 2023-03-13 CN CN202310234956.7A patent/CN116244005A/zh not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106991011B (zh) | 基于cpu多线程与gpu多粒度并行及协同优化的方法 | |
US9323672B2 (en) | Scatter-gather intelligent memory architecture for unstructured streaming data on multiprocessor systems | |
US8209690B2 (en) | System and method for thread handling in multithreaded parallel computing of nested threads | |
US6671827B2 (en) | Journaling for parallel hardware threads in multithreaded processor | |
US6816947B1 (en) | System and method for memory arbitration | |
US10007527B2 (en) | Uniform load processing for parallel thread sub-sets | |
US20110066830A1 (en) | Cache prefill on thread migration | |
US20070143582A1 (en) | System and method for grouping execution threads | |
US9529594B2 (en) | Miss buffer for a multi-threaded processor | |
US20120331237A1 (en) | Asynchronous Grace-Period Primitives For User-Space Applications | |
KR100936601B1 (ko) | 멀티 프로세서 시스템 | |
US11748174B2 (en) | Method for arbitration and access to hardware request ring structures in a concurrent environment | |
JP2003030050A (ja) | マルチスレッド実行方法及び並列プロセッサシステム | |
TW201337751A (zh) | 執行成型記憶體存取作業的系統和方法 | |
US20140215192A1 (en) | Heap data management for limited local memory(llm) multi-core processors | |
US11609786B2 (en) | Hierarchical register file device based on spin transfer torque-random access memory | |
US20050015637A1 (en) | Data processing system | |
CN117271392A (zh) | 用于缓存一致性的可重构的缓存架构及方法 | |
US6892280B2 (en) | Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system | |
JP2024500779A (ja) | アドレスマッピング認識型タスク処理機構 | |
CN114579188A (zh) | 一种risc-v向量访存处理系统及处理方法 | |
TW202109286A (zh) | 純函數語言神經網路加速器系統及結構 | |
CN116244005A (zh) | 一种多线程异步数据传输系统及方法 | |
US7406554B1 (en) | Queue circuit and method for memory arbitration employing same | |
Wang et al. | Incorporating selective victim cache into GPGPU for high‐performance computing |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20230609 |