一种cpu与协处理器间的数据传输方法和装置的制作方法

文档序号:6383804阅读:124来源:国知局
专利名称:一种cpu与协处理器间的数据传输方法和装置的制作方法
一种CPU与协处理器间的数据传输方法和装置技术领域
本发明涉及处理器数据传输技术,尤其涉及一种CPU与协处理器间的数据传输方法和装置。背景技术
如今,以GPU (图形处理器)为代表的协处理器已经具有越来越强大的计算能力, 在众多需要高性能计算的领域,都会采用多协处理器与CPU合作的方式来执行计算任务, 在这个过程中,经常需要CPU与协处理器以及多个协处理器之间的数据传输,数据传输的效率直接影响着计算任务的执行效率。
现有的数据传输方法中,数据从CPU传输至多个协处理器,或者一个协处理器将数据广播至多个协处理器时,数据的传输效率都非常低,主要体现在
将一份数据从CPU传输至多个协处理器时,现有的方法通常是CPU依次和这多个协处理器进行数据传输,即每次CPU和一个协处理器传输完这份数据后,再和另一个协处理器进行数据传输,这样使得CPU和一个协处理器在传输数据时,其余协处理器的总线都处于空闲状态,总线利用率非常低。
协处理器将一份数据传输至其余多个协处理器时,现有的方法通常是协处理器先把数据发送至CPU内存,再从CPU的内存依次传输至另一个协处理器,或者,直接通过协处理器生产商提供的传输函数,依次将数据传输至其余多个协处理器,与上述CPU将一份数据传输至多个协处理器类似,这两种方法同样会导致未在传输数据的协处理器的总线处于空闲状态,总线利用率非常低。
如上所述的问题使得CPU与协处理器以及多个协处理器之间的数据传输效率很低,并且会直接降低整个系统的运算能力,例如在语音识别的训练过程中,需要通过多GPU 配合CPU来进行计算,每个GPU都要有同一份训练数据,然而由于数据传输开销较大,会导致多GPU的训练速度甚至没有单GPU快。
发明内容
有鉴于此,本发明提供了一种CPU与协处理器间的数据传输方法和装置,能够提高CPU将数据传送至多个协处理器时以及协处理器将数据传输至其余多个协处理器时的数据传输效率。
具体技术方案如下
—种CPU与协处理器间的数据传输方法,该方法包括
根据CPU生成的N个线程 并行对N个协处理器的数据传输进行控制,所述N为大于或等于2的整数;
所述控制包括协处理器接收CPU以数据切片形式发送的数据;或者,协处理器接收并存储CPU或上一协处理器发送来的当前时刻的数据切片的同时,发送已存储的上一时刻的数据切片至下一协处理器。
根据本发明一优选实施例,当所述方法用于由CPU传输数据至N个目标协处理器 时,所述CPU将数据以数据切片形式发送至其中一个目标协处理器,并通过对应的线程控 制该目标协处理器接收并存储CPU发送来的当前时刻的数据切片的同时,发送已存储的上 一时刻的数据切片至下一目标协处理器。
根据本发明一优选实施例,当所述方法用于由CPU传输数据至N个目标协处理器 时,所述CPU将数据以数据切片形式发送至所述N个目标协处理器,并通过对应线程控制所 述N个目标协处理器同时接收并存储CPU发送来的数据切片。
根据本发明一优选实施例,当所述方法用于由一个源协处理器传输数据至其他 N-1个目标协处理器时,所述CPU通过对应线程控制源协处理器将数据以数据切片的形式 发送至CPU,所述CPU接收并存储源协处理器发送来的当前时刻的数据切片的同时,发送已 存储的上一时刻的数据切片至其中一个目标协处理器,并通过对应线程控制该目标协处理 器接收并存储CPU发送来的当前时刻的数据切片的同时,发送已存储的上一时刻的数据切 片至下一目标协处理器。
根据本发明一优选实施例,如果所述下一目标协处理器为最后一个目标协处理 器,则通过对应线程控制最后一个目标协处理器接收并存储接收到的数据分片,否则,通过 对应线程控制所述下一目标协处理器在接收到上一目标协处理器发送来的当前时刻的数 据切片的同时,发送已存储的上一时刻的数据切片至下一目标协处理器,直至最后一个目 标协处理器。
根据本发明一优选实施例,当所述方法用于由一个源协处理器传输数据至其他 N-1个目标协处理器时,所述CPU通过对应线程通知源协处理器将数据以数据切片的形式 从源协处理器发送至CPU,所述CPU接收并存储源协处理器发送来的当前时刻的数据切片 的同时,发送已存储的上一时刻的数据切片至所述N-1个目标协处理器,并通过对应线程 控制所述N-1个协处理器同时接收并存储CPU发送来的数据切片。
一种CPU与协处理器间的数据传输装置,该装置设置于CPU,其特征在于,该装置 包括
线程控制单元,用于生成N个线程;
传输控制单元,用于根据所述N个线程并行对N个协处理器的数据传输进行控制, 所述N为大于或等于2的整数;
所述控制包括协处理器接收CPU以数据切片形式发送的数据;或者,协处理器接 收并存储CPU或上一协处理器发送来的当前时刻的数据切片的同时,发送已存储的上一时 刻的数据切片至下一协处理器。
根据本发明一优选实施例,当所述装置用于由CPU传输数据至N个目标协处理器 时,所述CPU将数据以数据切片形式发送至其中一个目标协处理器,所述传输控制单元根 据对应的线程控制该协处理器接收并存储CPU发送来的当前时刻的数据切片的同时,发送 已存储的上一时刻的数据切片至下一目标协处理器。
根据本发明一优选实施例,当所述装置用于由CPU传输数据至N个目标协处理器 时,所述CPU将数据以数据切片形式发送至该N个目标协处理器,所述传输控制单元根据对 应线程控制所述N个目标协处理器同时接收并存储CPU发送来的数据切片。
根据本发明一优选实施例,当所述装置用于由一个源协处理器传输数据至其他N-1个目标协处理器时,所述传输控制单元根据对应线程控制源协处理器将数据以数据切片形式发送至CPU,所述CPU接收并存储源协处理器发送来的当前时刻的数据切片的同时, 发送已存储的上一时刻的数据切片至其中一个目标协处理器,所述传输控制单元根据对应线程控制该目标协处理器接收并存储CPU发送来的当前时刻的数据切片的同时,发送已存储的上一时刻的数据切片至下一目标协处理器。
根据本发明一优选实施例,如果所述下一目标协处理器为最后一个目标协处理器,则所述传输控制单元通过对应线程控制最后一个目标协处理器接收并存储接收到的数据分片,否则,所述传输控制单元通过对应线程控制所述下一目标协处理器在接收到上一目标协处理器发送来的当前时刻的数据切片的同时,发送已存储的上一时刻的数据切片至下一目标协处理器,直至最后一个目标协处理器。
根据本发明一优选实施例,当所述装置用于由一个源协处理器传输数据至其他 N-1个目标协处理器时,所述传输控制单元根据对应线程控制源协处理器将数据以数据切片形式发送至CPU,所述CPU接收并存储源协处理器发送来的当前时刻的数据切片的同时, 发送已存储的上一时刻的数据切片至所述N-1个目标协处理器,所述传输控制单元根据对应线程控制所述N-1个目标协处理器同时接收并存储CPU发送来的数据切片。
由以上技术方案可以看出,本发明通过生成多线程来控制各个协处理器将数据以切片的形式传输,各个线程能够并行控制其对应的协处理器进行相应的数据切片的接收或传输操作。本发明能够充分利用各个协处理器与CPU之间的总线,以及各个协处理器之间的总线,显著提高了 CPU将数据传送至多个协处理器时和一个协处理器将数据传输至其余多个协处理器时的数据传输效率。

图1为本发明实施例一提供的数据由CPU传输至多个协处理器时的方法A示例
图2为本发明实施例一提供的数据由CPU传输至多个协处理器时的方法B示例 3为本发明实施例一提供的数据由一个协处理器传输至多个协处理器时的方 4为本发明实施例一提供的数据由一个协处理器传输至多个协处理器时的方 5为本发明实施例二提供的CPU与协处理器间的数据传输装置示意图。
图法C示例图
图法D示例图
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
现有的方法中,数据由CPU传输至多个协处理器,或者由协处理器传输至其余多个协处理器时,每次只能由CPU与一个协处理器或者两个协处 理器之间进行数据传输,而其余协处理器的总线均处于空闲状态。若能提供一种方法使得传输能同时在CPU与多个协处理器或者多个协处理器之间进行,那么传输的效率将有显著提升。本发明正是通过CPU生成多线程来控制多个协处理器将数据以切片的形式进行传输,来充分利用各处理器的总 线带宽,从而提高数据传输效率的。
实施例一
本发明实施例一提供了一种CPU与协处理器间的数据传输方法,该方法包括数 据由CPU传输至多个协处理器的传输方法;数据由一个协处理器传输至多个协处理器的传 输方法。
本发明所提供的方法能够提高CPU将数据传送至多个协处理器时以及协处理器 将数据传输至其余多个协处理器时的数据传输效率,下面分别对这两种情况进行描述。
1、数据由CPU传输至多个协处理器的传输方法,该方法可以通过以下方法A和方 法B两种方式来实现
方法A :通过CPU生成N个线程分别控制N个协处理器,依次将数据切片从CPU发 送至协处理器1,线程I控制协处理器I接收并保存CPU发送的数据切片同时将所保存的数 据切片依次发送至协处理器2,线程2控制协处理器2接收并保存协处理器I发送的数据切 片同时将所保存的数据切片依次发送至协处理器3,以此类推将数据发送至所有的协处理 器,其中,N为协处理器的数量。
为了能够更好地理解方法A所提供的数据由CPU传输至多个协处理器的传输方 式,下面结合图1所示示例对方法A进行描述。如图1所示,CPU需要将一份数据传输至4 个协处理器。分别生成4个线程来由CPU控制这4个协处理器进行数据传输,为便于描述, 将该4个线程分别编号为线程1、线程2、线程3、线程4,分别控制协处理器1、协处理器2、 协处理器3、协处理器4。传输开始时,CPU从CPU内存中依次将该数据的每一份切片发送 至协处理器1,线程I控制协处理器I接收CPU所发送的数据切片并保存在协处理器I的内 存中,同时,线程I控制协处理器I将已保存的数据切片依次发送至协处理器2,线程2控 制协处理器2接收协处理器I发送的数据切片并保存在协处理器2的内存中,同时,线程2 控制协处理器2将已保存的数据切片依次发送至协处理器3,以此类推,线程3控制协处理 器3接收协处理器2发送的数据切片并保存在协处理器3的内存中,同时,线程3控制协处 理器3将已保存的数据切片依次发送至协处理器4,线程4控制协处理器4接收协处理器3 发送的数据切片并保存在协处理器4的内存中。
该方法能够充分利用每个协处理器之间的总线,在每次传输中,CPU将数据切片发 送至一个协处理器的同时,其余协处理器之间也能进行数据切片的传输。例如,如图1所 不,在某一时刻的传输过程中,同时进行的传输有CPU将第Slice_x份数据切片发送至协 处理器1,协处理器I将已保存的第Slice_X-l份数据切片发送至协处理器2,协处理器2 接收并保存协处理器I发送的第Slice_x-1份数据切片同时将已保存的第Slice_x-2份数 据切片发送至协处理器3,协处理器3接收并保存协处理器2发送的第Slice_X-2份数据切 片同时将已保存的第SI ice_x-3份数据切片发送至协处理器4,协处理器4接收并保存协处 理器3发送的第Slice_X-3份数据切片,其中,线程1-线程4分别控制对应的协处理器进 行相应的数据切片的接收或发送工作,在传输过程中,这4个线程之间是并行的,能够同时 控制其所对应的协处理器进行数据传输,与现有技术相比,该方法在传输过程中充分利用 了各个协处理器之间的总线,有较高的数据传输效率。
上述为结合图1描述的方法A所提供的数据由CPU传输至多个协处理器的传输方法。
方法B :通过CPU生成N个线程分别控制N个协处理器,依次将数据切片从CPU发 送至该N个协处理器,每个线程分别控制其对应的协处理器依次接收并保存CPU发送的数 据切片,其中,N为协处理器的数量。
为了能够更好地理解方法B所提供的数据由CPU传输至多个协处理器传输方式, 下面结合图2所示示例对方法B进行描述。如图2所示,CPU需要将一份数据传输至4个 协处理器。分别生成4个线程来由CPU控制这4个协处理器进行数据传输,为便于描述,将 该4个线程分别编号为线程1、线程2、线程3、线程4,分别控制协处理器1、协处理器2、协 处理器3、协处理器4。传输开始时,CPU从CPU内存依次将该数据的每一份切片同时发送 至4个协处理器,线程1-线程4分别控制其对应的协处理器接收CPU所发送的数据切片。
该方法能够充分利用每个协处理器与CPU之间的总线,在每次传输中,CPU能同时 将一份数据切片发送至所有协处理器。例如,如图2所示,在某一时刻的传输过程中,CPU同 时将第Slice_x份数据切片从CPU内存发送至4个协处理器,线程1-线程4同时控制其对 应的协处理器接收该第Slice_x份数据切片,这4个线程之间是并行的,能够同时控制其所 对应的协处理器接收CPU发送的数据切片,与现有技术相比,该方法在传输过程中充分利 用了各个协处理器与CPU之间的总线,有较高的数据传输效率。
上述为结合图2描述的方法A所提供的数据由CPU传输至多个协处理器的传输方法。
上述方法A和方法B为数据由CPU传输至多个协处理器的传输方法,两种方法都 将数据以切片的方式进行传输,两种方法中的数据切片均为预先设定大小的数据块,即传 输过程中,通过线程控制每次CPU与协处理器或协处理器之间传输的数据量为一定大小的 数据块,切片的大小可以根据实际需求进行设定,但若切片过大,则传输延时过大,若切片 过小,则效率较低,本发明提供一种优选实施方式对数据进行切片将数据切片大小设定为 一个 page,即 4KB。
在上述方法A和方法B中,CPU可以通过线程获知各个协处理器的状态,并通过线 程控制协处理器完成相应的操作。可以通过自定的数据结构在CPU内存中记录各个协处理 器的状态(如空闲,或接收数据,或发送数据),以及数据切片的发送情况(已经发送了哪些 数据切片,待发送哪一个数据切片),以便(PU对各个线程进行控制和调度,例如当两个协处 理器均处于空闲状态时,CPU可通过线程控制该两个协处理器进行数据切片的传输。这一 部分为现有技术,在此不过多赘述。
对于上述方法A和方法B,由于协处理器与CPU的总线带宽通常高于协处理器之间 的总线带宽,因此,在实际应用中方法B的传输效率要高于方法A,但方法B受限于CPU内存 的带宽,适用于CPU内存带宽较高的情况,如可用在多CPU系统中,若CPU内存的带宽不够 高的情况,则适合选用方法A。
2、数据由一个协处理器传输至多个协处理器的传输方法,该方法可以通过以下方 法C和方法D两种方式来实现
方法C :通过CPU生成N个线程分别控制N个协处理器,线程I控制协处理器I依 次将数据切片发送至CPU,将CPU接收到的数据切片依次发送至协处理器2,线程2控制协 处理器2接收并保存CPU发送的数据切片同时将所保存的数据切片依次发送至协处理器3,线程3控制协处理器3接收并保存协处理器2发送的数据切片同时将所保存的数据切片依 次发送至协处理器4,以此类推将数据发送至所有的目标协处理器,其中,N为协处理器的数量。
为了能够更好地理解方法C所提供的数据由一个协处理器传输至多个协处理器 的传输方式,下面结合图3所示示例对方法C进行描述。如图3所示,协处理器I需要将一 份数据传输至其余3个协处理器。分别生成4个线程来由CPU控制这4个协处理器进行数 据传输,为便于描述,将该4个线程分别编号为线程1、线程2、线程3、线程4,分别控制协处 理器1、协处理器2、协处理器3、协处理器4,传输开始时,线程I控制协处理器I将该份数 据依次以切片的形式发送至CPU,CPU接收协处理器I发送的数据切片并保存,同时,CPU将 已保存的数据切片依次发送至协处理器2,线程2控制协处理器2接收CPU发送的数据切片 并保存在协处理器2的内存中,同时,线程2控制协处理器2将已保存的数据切片依次发送 至协处理器3,线程3控制协处理器3接收协处理器2发送的数据切片并保存在协处理器3 的内存中,同时,线程3控制协处理器3将已保存的数据切片依次发送至协处理器4,线程4 控制协处理器4接收协处理器3发送来的数据切片并保存在协处理器4的内存中。
该方法能够充分利用每个协处理器之间的总线,在每次传输中,一个协处理器将 数据切片发送至CPU,另外一个协处理器从CPU接收数据切片的同时,其余协处理器之间 也能进行数据切片的传输。例如,如图3所示,在某一时刻的传输过程中,同时进行的传输 有协处理器I将第Slice_x份数据切片发送至CPU,CPU接收并保存协处理器I发送的第 Slice_x份数据切片,同时CPU将已保存的第Slice_x-1份数据切片发送至协处理器2,协 处理器2接收并保存CPU发送的第Slice_x-1份数据切片同时将已保存的第Slice_x-2份 数据切片发送至协处理器3,协处理器3接收并保存协处理器2发送的第Slice_X-2份数据 切片同时将已保存的第SI ice_x-3份数据切片发送至协处理器4,协处理器4接收并保存协 处理器3发送的第Slice_X-3份数据切片,其中,线程1-线程4分别控制各自对应的协处 理器进行接收以及发送数据切片的操作。在传输过程中,线程1-线程4之间是并行的,能 够同时控制其所对应的协处理器进行数据传输,与现有技术相比,该方法在传输过程中充 分利用了各个协处理器之间的总线,有较高的数据传输效率。
上述为结合图3描述的方法C所提供的数据由一个协处理器传输至多个协处理器 的传输方法。
方法D :通过CPU生成N个线程分别控制N个协处理器,线程I控制协处理器I依 次将数据切片发送至CPU,将CPU接收到的数据切片依次发送至其余协处理器,线程2-线程 N分别控制其对应的协处理器接收CPU发送的数据切片,其中,N为协处理器的数量。
为了能够更好地理解方法D所提供的数据由一个协处理器传输至多个协处理器 的传输方式,下面结合图4所示示例对方法D进行描述。如图4所示,协处理器I需要将一 份数据传输至其余3个协处理器。分别生成4个线程来由CPU控制这4个协处理器进行数 据传输,为便于描述,将该4个线程分别编号为线程1、线程2、线程3、线程4,分别控制协处 理器1、协处理器2、协处理器3、协处理器4,传输开始时,线程I控制协处理器I依次将数 据以切片的形式发送至CPU,CPU接收协处理器I发送的数据切片并保存,同时,CPU将已保 存的数据切片依次发送至其余3个协处理器,线程2-线程4分别控制其对应的协处理器接 收并保存CPU发送的数据切片。
该方法能够充分利用每个协处理器与CPU之间的总线,在每次传输中,一个协处 理器将一份数据切片发送至CPU,同时,CPU能将一份已接收到的数据切片发送至多个其余 协处理器。例如,在某一时刻的传输过程中,协处理器I将第Slice_x份数据切片发送至 CPU,同时,CPU将之前收到的第Slice_X-l份数据切片发送至其余协处理器,线程2-线程4 分别控制其对应的协处理器接收CPU发送的第Slice_X-l份数据切片。在传输过程中,线 程1-线程4之间是并行的,能够同时控制其所对应的协处理器进行数据传输,与现有技术 相比,该方法在传输过程中充分利用了各个协处理器与CPU之间的总线,有较高的数据传 输效率。
上述为结合图4描述的方法D所提供的数据由一个协处理器传输至多个协处理器 的传输方法。
上述方法C和方法D为数据由一个协处理器传输至多个协处理器的传输方法,两 种方法都将数据以切片的方式进行传输,两种方法中的数据切片均为预先设定大小的数据 块,即传输过程中,线程控制每次协处理器与CPU或协处理器之间传输的数据量为一定大 小的数据块,切片的大小可以根据实际需求进行设定,但若切片过大,则传输延时过大,若 切片过小,则效率较低,本发明提供一种优选实施方式对数据进行切片将数据切片大小设 定为一个page,即4KB。
在上述方法C和方法D中,CPU可以通过线程获知各个协处理器的状态,并通过线 程控制协处理器完成相应的操作。可以通过自定的数据结构在CPU内存中记录各个协处理 器的状态(如空闲,或接收数据,或发送数据),以及数据切片的发送情况(已经发送了哪些 数据切片,待发送哪一个数据切片),以便(PU对各个线程进行控制和调度,例如当两个协处 理器均处于空闲状态时,CPU可通过线程控制该两个协处理器进行数据切片的传输。这一 部分为现有技术,在此不过多赘述。
对于上述方法C和方法D,由于协处理器与CPU的总线带宽通常高于协处理器之间 的总线带宽,因此,在实际应用中方法D的传输效率要高于方法C,但方法D受限于CPU内存 的带宽,适用于CPU内存带宽较高的情况,如可用在多CPU系统中,若CPU内存的带宽不够 高的情况,则适合选用方法C。
上述为对本发明实施例一提供的CPU与协处理器间的数据传输方法进行的描述。 可以看出,本发明通过生成多线程来控制各个协处理器将数据以切片的形式传输,且各个 线程能够并行控制其对应的协处理器进行相应的数据切片的接收或传输操作,充分利用个 协处理器与CPU之间的总线,以及各个协处理器之间的总线,能够显著提高CPU将数据传送 至多个协处理器时和一个协处理器将数据传输至其余多个协处理器时的数据传输效率。本 发明可用于GPU,以及类似于GPU的多种协处理器如FPGA,ARM以及Intel的MIC (众核处 理器)等协处理器与CPU之间的数据传输。
实施例二
图5为本发明实施例二提供的CPU与协处理器间的数据传输装置示意图,如图5 所示,该装置包括线程控制单元10,传输控制单元20。
本发明所提供CPU与协处理器间的数据传输装置设置于CPU,具体包括线程控制 单元10和传输控制单元20。
其中,线程控制单元10,用于生成N个线程;
传输控制单元20,用于根据所述N个线程并行对N个协处理器的数据传输进行控 制,所述N为大于或等于2的整数。
传输控制单元20具体可以用于控制协处理器接收CPU以切片形式发送的数据;或 者,用于控制协处理器接收并存储CPU或上一协处理器发送来的当前时刻的数据切片的同 时,发送已存储的上一时刻的数据切片至下一协处理器。
传输控制单元20还可以用于控制协处理器将数据以数据切片形式发送至CPU。
本发明所提供的装置能够提高CPU将数据传送至多个协处理器时以及协处理器 将数据传输至其余多个协处理器时的数据传输效率,下面分别对这两种情况进行描述。
1、数据由CPU传输至多个协处理器时,传输单元10具体可以执行下述操作A或操 作B来将数据由CPU传输至多个协处理器
操作A :根据线程控制单元10生成的N个线程分别控制N个协处理器,依次将数 据切片从CPU发送至协处理器I (CPU自身的数据传输可由CPU中已有的数据传输单元完 成,后续描述中也是如此,该数据传输单元未在图中示出),传输控制单元20根据线程I控 制协处理器I接收并保存CPU发送的数据切片同时将所保存的数据切片依次发送至协处理 器2,传输控制单元20根据线程2控制协处理器2接收并保存协处理器I发送的数据切片 同时将所保存的数据切片依次发送至协处理器3,以此类推将数据发送至所有的协处理器, 其中,N为协处理器的数量。
例如,CPU需要将一份数据传输至4个协处理器。线程控制单元10分别生成4个 线程来由CPU控制这4个协处理器进行数据传输,为便于描述,将该4个线程分别编号为线 程1、线程2、线程3、线程4,分别控制协处理器1、协处理器2、协处理器3、协处理器4。传 输开始时,CPU从CPU内存中依次将该数据的每一份切片发送至协处理器1,传输控制单元 20根据线程I控制协处理器I接收CPU所发送的数据切片并保存在协处理器I的内存中, 同时,将协处理器I已保存的数据切片依次发送至协处理器2,传输控制单元20根据线程2 控制协处理器2接收协处理器I发送的数据切片并保存在协处理器2的内存中,同时,将协 处理器2已保存的数据切片依次发送至协处理器3,以此类推,传输控制单元20根据线程3 控制协处理器3接收协处理器2发送的数据切片并保存在协处理器3的内存中,同时,将协 处理器3已保存的数据切片依次发送至协处理器4,传输控制单元20根据线程4控制协处 理器4接收协处理器3发送的数据切片并保存在协处理器4的内存中。
该操作能够充分利用每个协处理器之间的总线,在每次传输中,CPU将数据切片发 送至一个协处理器的同时,其余协处理器之间也能进行数据切片的传输。
操作B :根据线程控制单元10生成的N个线程分别控制N个协处理器,依次将数 据切片从CPU发送至该N个协处理器,传输控制单元20根据对应线程分别控制该N个协处 理器依次接收并保存CPU发送的数据切片,其中,N为协处理器的数量。
例如,CPU需要将一份数据传输至4个协处理器。线程控制单元10分别生成4个 线程来由CPU控制这4个协处理器进行数据传输,为便于描述,将该4个线程分别编号为线 程1、线程2、线程3、线程4,分别控制协处理器1、协处理器2、协处理器3、协处理器4。传 输开始时,CPU从CPU内存依次将该数据的每一份切片同时发送至4个协处理器,传输控制 单元20根据线程1-线程4分别控制其对应的协处理器接收CPU所发送的数据切片。
该操作能够充分利用每个协处理器与CPU之间的总线,在每次传输中,CPU能同时将一份数据切片发送至所有协处理器。
上述操作A和操作B中的数据切片均为预先设定大小的数据块,即传输过程中,通 过线程控制每次CPU与协处理器或协处理器之间传输的数据量为一定大小的数据块,切片 的大小可以根据实际需求进行设定,但若切片过大,则传输延时过大,若切片过小,则效率 较低,本发明提供一种优选实施方式对数据进行切片将数据切片大小设定为一个page, 即 4KB。
在上述操作A和操作B中,CPU可以通过线程获知各个协处理器的状态,并通过线 程控制协处理器完成相应的操作。可以通过自定的数据结构在CPU内存中记录各个协处理 器的状态(如空闲,或接收数据,或发送数据),以及数据切片的发送情况(已经发送了哪些 数据切片,待发送哪一个数据切片),以便(PU对各个线程进行控制和调度,例如当两个协处 理器均处于空闲状态时,CPU可通过线程控制该两个协处理器进行数据切片的传输。这一 部分为现有技术,在此不过多赘述。
由于协处理器与CPU的总线带宽通常高于协处理器之间的总线带宽,因此,在实 际应用中操作B的传输效率要高于操作A,但操作B受限于CPU内存的带宽,适用于CPU内 存带宽较高的情况,如可用在多CPU系统中,若CPU内存的带宽不够高的情况,则适合选用 操作A。
2、数据由一个协处理器传输至多个协处理器时,传输单元10具体可以执行下述 操作C或操作D来将数据由一个协处理器传输至多个协处理器
操作C :根据线程控制单元10生成的N个线程分别控制N个协处理器,传输控制 单元20根据线程I控制协处理器I依次将数据切片发送至CPU,将CPU接收到的数据切片 依次发送至协处理器2,传输控制单元20根据线程2控制协处理器2接收并保存CPU发送 的数据切片同时将所保存的数据切片依次发送至协处理器3,传输控制单元20根据线程3 控制协处理器3接收并保存协处理器2发送的数据切片同时将所保存的数据切片依次发送 至协处理器4,以此类推将数据发送至所有的目标协处理器,其中,N为协处理器的数量。
例如,协处理器I需要将一份数据传输至其余3个协处理器。线程控制单元10分 别生成4个线程来由CPU控制这4个协处理器进行数据传输,为便于描述,将该4个线程分 别编号为线程1、线程2、线程3、线程4,分别控制协处理器1、协处理器2、协处理器3、协处 理器4,传输开始时,传输控制单元20根据线程I控制协处理器I将该份数据依次以切片 的形式发送至CPU,CPU接收协处理器I发送的数据切片并保存,同时,CPU将已保存的数据 切片依次发送至协处理器2,传输控制单元20根据线程2控制协处理器2接收CPU发送的 数据切片并保存在协处理器2的内存中,同时,将协处理器2已保存的数据切片依次发送至 协处理器3,传输控制单元20根据线程3控制协处理器3接收协处理器2发送的数据切片 并保存在协处理器3的内存中,同时,将协处理器3已保存的数据切片依次发送至协处理器 4,传输控制单元20根据线程4控制协处理器4接收协处理器3发送来的数据切片并保存 在协处理器4的内存中。
该操作能够充分利用每个协处理器之间的总线,在每次传输中,一个协处理器将 数据切片发送至CPU,另外一个协处理器从CPU接收数据切片的同时,其余协处理器之间也 能进行数据切片的传输。
操作D :根据线程控制单元10生成的N个线程分别控制N个协处理器,传输控制单元20根据线程I控制协处理器I依次将数据切片发送至CPU,将CPU接收到的数据切片 依次发送至其余协处理器,传输控制单元20根据线程2-线程N分别控制其对应的协处理 器接收CPU发送的数据切片,其中,N为协处理器的数量。
例如,协处理器I需要将一份数据传输至其余3个协处理器。线程控制单元10分 别生成4个线程来由CPU控制这4个协处理器进行数据传输,为便于描述,将该4个线程分 别编号为线程1、线程2、线程3、线程4,分别控制协处理器1、协处理器2、协处理器3、协处 理器4,传输开始时,传输控制单元20根据线程I控制协处理器I依次将数据以切片的形式 发送至CPU,CPU接收协处理器I发送的数据切片并保存,同时,CPU将已保存的数据切片依 次发送至其余3个协处理器,传输控制单元20根据线程2-线程4分别控制其对应的协处 理器接收并保存CPU发送的数据切片。
该操作能够充分利用每个协处理器与CPU之间的总线,在每次传输中,一个协处 理器将一份数据切片发送至CPU,同时,CPU能将一份已接收到的数据切片发送至其余多个 协处理器。
上述操作C和操作D中的数据切片均为预先设定大小的数据块,即传输过程中,线 程控制每次协处理器与CPU或协处理器之间传输的数据量为一定大小的数据块,切片的大 小可以根据实际需求进行设定,但若切片过大,则传输延时过大,若切片过小,则效率较低, 本发明提供一种优选实施方式对数据进行切片将数据切片大小设定为一个page,即4KB。
在上述操作C和操作D中,CPU可以通过线程获知各个协处理器的状态,并通过线 程控制协处理器完成相应的操作。可以通过自定的数据结构在CPU内存中记录各个协处理 器的状态(如空闲,或接收数据,或发送数据),以及数据切片的发送情况(已经发送了哪些 数据切片,待发送哪一个数据切片),以便(PU对各个线程进行控制和调度,例如当两个协处 理器均处于空闲状态时,CPU可通过线程控制该两个协处理器进行数据切片的传输。这一 部分为现有技术,在此不过多赘述。
在实际应用中操作D的传输效率要高于操作C,但操作D受限于CPU内存的带宽, 适用于CPU内存带宽较高的情况,如可用在多CPU系统中,若CPU内存的带宽不够高的情 况,则适合选用操作C。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.ー种CPU与协处理器间的数据传输方法,其特征在于,该方法包括 根据CPU生成的N个线程并行对N个协处理器的数据传输进行控制,所述N为大于或等于2的整数; 所述控制包括协处理器接收CPU以数据切片形式发送的数据;或者,协处理器接收并存储CPU或上一协处理器发送来的当前时刻的数据切片的同时,发送已存储的上一时刻的数据切片至下一协处理器。
2.根据权利要求1所述的方法,其特征在于,当所述方法用于由CPU传输数据至N个目标协处理器时,所述CPU将数据以数据切片形式发送至其中一个目标协处理器,并通过对应的线程控制该目标协处理器接收并存储CPU发送来的当前时刻的数据切片的同时,发送已存储的上ー时刻的数据切片至下一目标协处理器。
3.根据权利要求1所述的方法,其特征在于,当所述方法用于由CPU传输数据至N个目标协处理器吋,所述CPU将数据以数据切片形式发送至所述N个目标协处理器,并通过对应线程控制所述N个目标协处理器同时接收并存储CPU发送来的数据切片。
4.根据权利要求1所述的方法,其特征在干,当所述方法用于由ー个源协处理器传输数据至其他N-1个目标协处理器吋,所述CPU通过对应线程控制源协处理器将数据以数据切片的形式发送至CPU,所述CPU接收并存储源协处理器发送来的当前时刻的数据切片的同吋,发送已存储的上ー时刻的数据切片至其中一个目标协处理器,并通过对应线程控制该目标协处理器接收并存储CPU发送来的当前时刻的数据切片的同时,发送已存储的上一时刻的数据切片至下一目标协处理器。
5.根据权利要求2或4所述的方法,其特征在于,如果所述下一目标协处理器为最后ー个目标协处理器,则通过对应线程控制最后一个目标协处理器接收并存储接收到的数据分片,否则,通过对应线程控制所述下一目标协处理器在接收到上一目标协处理器发送来的当前时刻的数据切片的同时,发送已存储的上ー时刻的数据切片至下一目标协处理器,直至最后ー个目标协处理器。
6.根据权利要求1所述的方法,其特征在干,当所述方法用于由ー个源协处理器传输数据至其他N-1个目标协处理器吋,所述CPU通过对应线程通知源协处理器将数据以数据切片的形式从源协处理器发送至CPU,所述CPU接收并存储源协处理器发送来的当前时刻的数据切片的同时,发送已存储的上ー时刻的数据切片至所述N-1个目标协处理器,并通过对应线程控制所述N-1个协处理器同时接收并存储CPU发送来的数据切片。
7.—种CPU与协处理器间的数据传输装置,该装置设置于CPU,其特征在于,该装置包括 线程控制単元,用于生成N个线程; 传输控制単元,用于根据所述N个线程并行对N个协处理器的数据传输进行控制,所述N为大于或等于2的整数; 所述控制包括协处理器接收CPU以数据切片形式发送的数据;或者,协处理器接收并存储CPU或上一协处理器发送来的当前时刻的数据切片的同时,发送已存储的上一时刻的数据切片至下一协处理器。
8.根据权利要求7所述的装置,其特征在于,当所述装置用于由CPU传输数据至N个目标协处理器吋,所述CPU将数据以数据切片形式发送至其中ー个目标协处理器,所述传输控制单元根据对应的线程控制该协处理器接收并存储CPU发送来的当前时刻的数据切片的同时,发送已存储的上一时刻的数据切片至下一目标协处理器。
9.根据权利要求7所述的装置,其特征在于,当所述装置用于由CPU传输数据至N个目标协处理器时,所述CPU将数据以数据切片形式发送至该N个目标协处理器,所述传输控制单元根据对应线程控制所述N个目标协处理器同时接收并存储CPU发送来的数据切片。
10.根据权利要求7所述的装置,其特征在于,当所述装置用于由一个源协处理器传输数据至其他N-1个目标协处理器时,所述传输控制单元根据对应线程控制源协处理器将数据以数据切片形式发送至CPU,所述CPU接收并存储源协处理器发送来的当前时刻的数据切片的同时,发送已存储的上一时刻的数据切片至其中一个目标协处理器,所述传输控制单元根据对应线程控制该目标协处理器接收并存储CPU发送来的当前时刻的数据切片的同时,发送已存储的上一时刻的数据切片至下一目标协处理器。
11.根据权利要求8或10所述的装置,其特征在于,如果所述下一目标协处理器为最后一个目标协处理器,则所述传输控制单元通过对应线程控制最后一个目标协处理器接收并存储接收到的数据分片,否则,所述传输控制单元通过对应线程控制所述下一目标协处理器在接收到上一目标协处理器发送来的当前时刻的数据切片的同时,发送已存储的上一时刻的数据切片至下一目标协处理器,直至最后一个目标协处理器。
12.根据权利要求7所述的装置,其特征在于,当所述装置用于由一个源协处理器传输数据至其他N-1个目标协处理器时,所述传输控制单元根据对应线程控制源协处理器将数据以数据切片形式发送至CPU,所述CPU接收并存储源协处理器发送来的当前时刻的数据切片的同时,发送已存储的上一时刻的数据切片至所述N-1个目标协处理器,所述传输控制单元根据对应线程控制所述N-1个目标协处理器同时接收并存储CPU发送来的数据切片。
全文摘要
本发明提供了一种CPU与协处理器间的数据传输方法和装置,其中方法包括根据CPU生成的N个线程并行对N个协处理器的数据传输进行控制,所述N为大于或等于2的整数;所述控制包括协处理器接收CPU以切片形式发送的数据;或者,协处理器接收并存储CPU或上一协处理器发送来的当前时刻的数据切片的同时,发送已存储的上一时刻的数据切片至下一协处理器。本发明能够充分利用各个协处理器与CPU之间的总线,以及各个协处理器之间的总线,能够提高CPU将数据传送至多个协处理器时以及协处理器将数据传输至其余多个协处理器时的数据传输效率。
文档编号G06F15/167GK103049421SQ20121053229
公开日2013年4月17日 申请日期2012年12月11日 优先权日2012年12月11日
发明者欧阳剑, 王勇 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1