JP6913312B2 - Data processing device and data transfer method - Google Patents

Data processing device and data transfer method Download PDF

Info

Publication number
JP6913312B2
JP6913312B2 JP2018034512A JP2018034512A JP6913312B2 JP 6913312 B2 JP6913312 B2 JP 6913312B2 JP 2018034512 A JP2018034512 A JP 2018034512A JP 2018034512 A JP2018034512 A JP 2018034512A JP 6913312 B2 JP6913312 B2 JP 6913312B2
Authority
JP
Japan
Prior art keywords
data
update
unit
gpu
calculation
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
JP2018034512A
Other languages
Japanese (ja)
Other versions
JP2019149086A (en
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.)
Nippon Telegraph and Telephone Corp
University of Tokyo NUC
Original Assignee
Nippon Telegraph and Telephone Corp
University of Tokyo NUC
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 Nippon Telegraph and Telephone Corp, University of Tokyo NUC filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2018034512A priority Critical patent/JP6913312B2/en
Publication of JP2019149086A publication Critical patent/JP2019149086A/en
Application granted granted Critical
Publication of JP6913312B2 publication Critical patent/JP6913312B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、データ処理装置及びデータ転送方法に関する。 The present invention relates to a data processing apparatus and a data transfer method.

近年、ネットワークの分野では仮想化が注目されている。仮想化により、実際の物理的なハードウェア構成によらず、ネットワークを構成する装置を論理的に利用できる。仮想化のため、光アクセスシステムにおいて従来は専用のハードウェアで作られていた装置を汎用ハードウェアで構成し、機能をソフトウェアで実装する構成が検討されている。機能をソフトウェアで実現することで、装置の機能が入れ替え可能となり、装置の共通化やリソース共有化が図れるため、CAPEX(Capital Expenditure)の削減が期待できる。また、機能のアップデートや設定変更を容易とすることでOPEX(Operating Expense)削減に繋がると考えられている。そこで、光アクセスシステムのソフトウェア領域を物理層処理にまで拡大し、光アクセスシステムを構成する通信装置が備えるGPU(Graphics Processing Unit)等のアクセラレータに物理層処理を実装することが考えられる。 In recent years, virtualization has attracted attention in the field of networks. With virtualization, the devices that make up the network can be logically used regardless of the actual physical hardware configuration. For virtualization, a configuration is being studied in which a device that was conventionally made of dedicated hardware in an optical access system is configured with general-purpose hardware and the functions are implemented by software. By realizing the functions with software, the functions of the devices can be replaced, and the devices can be shared and resources can be shared, so that the reduction of CAPEX (Capital Expenditure) can be expected. In addition, it is thought that OPEX (Operating Expense) can be reduced by facilitating function updates and setting changes. Therefore, it is conceivable to expand the software area of the optical access system to include physical layer processing and implement physical layer processing on an accelerator such as a GPU (Graphics Processing Unit) included in a communication device constituting the optical access system.

しかしながら、従来は通信処理の物理演算は専用チップを用いて行われてきたため、GPUを使って処理を行う従来研究は少ない。一方で、FPGA等のハードウェアを使って、誤り訂正を実装する検討例は複数存在する(例えば、非特許文献1、2参照)。これらの検討はRTL(Register Transfer Level)の設計であり、レジスタ間のタスクレベルの並列性や全体のアーキテクチャの提案となっているため、GPUを活用する本検討の設計思想とは異なっている。 However, since the physical calculation of communication processing has conventionally been performed using a dedicated chip, there are few conventional studies in which processing is performed using a GPU. On the other hand, there are a plurality of study examples of implementing error correction using hardware such as FPGA (see, for example, Non-Patent Documents 1 and 2). These studies are RTL (Register Transfer Level) designs, and are different from the design concept of this study that utilizes GPUs because they are proposals for task-level parallelism between registers and the overall architecture.

誤り訂正をGPUで実行する例として、RAID(Redundant Arrays of Inexpensive Disks)システムへの適応がある(例えば、非特許文献3参照)。この手法においては具体的な実装方法までは記載されておらず、システムの提案を行っているのみである。加えて、システムのスループットも大きくない。 An example of performing error correction on a GPU is adaptation to a RAID (Redundant Arrays of Inexpensive Disks) system (see, for example, Non-Patent Document 3). In this method, the concrete implementation method is not described, and only the system is proposed. In addition, the throughput of the system is not high.

また、GPUは主にCPU(central processing unit)の処理をアクセラレートするために用いられている。そのため、GPUへのデータの転送技術としては、図7に示すように、一般的にはCPUからGPUに転送を行う構成が用いられる。DMA(Direct Memory Access)転送用メモリとして、高速なDDP−DRAM(Dual-Data-Port Dynamic Random Access Memory)を用いる手法が挙げられる(例えば、非特許文献4参照)。しかし、調査した限り、汎用化されていない規格の信号の外部入力を、CPUを介さずに直接GPUに転送する方法はない。 In addition, the GPU is mainly used for accelerating the processing of the CPU (central processing unit). Therefore, as a technique for transferring data to the GPU, as shown in FIG. 7, a configuration for transferring data from the CPU to the GPU is generally used. As a DMA (Direct Memory Access) transfer memory, a method using a high-speed DDP-DRAM (Dual-Data-Port Dynamic Random Access Memory) can be mentioned (see, for example, Non-Patent Document 4). However, as far as we have investigated, there is no way to directly transfer the external input of a non-generalized standard signal to the GPU without going through the CPU.

Hanho Lee, Chang-Seok Choi, Jongyoon Shin, Je-Soo Ko, "100-Gb/s Three-Parallel Reed-Solomon based Foward Error Correction Architecture for Optical Communications", International SoC Design Conference 2008 (ISOCC '08), p. I-265-I-268, 2008年11月Hanho Lee, Chang-Seok Choi, Jongyoon Shin, Je-Soo Ko, "100-Gb / s Three-Parallel Reed-Solomon based Foward Error Correction Architecture for Optical Communications", International SoC Design Conference 2008 (ISOCC '08), p . I-265-I-268, November 2008 Hanho Lee, "A High-Speed Low-Complexity Reed-Solomon Decoder for Optical Communications", IEEE Transactions on Circuits and Systems II: Express Briefs, Vol.52, No.8, p.461-465, 2005年8月Hanho Lee, "A High-Speed Low-Complexity Reed-Solomon Decoder for Optical Communications", IEEE Transactions on Circuits and Systems II: Express Briefs, Vol.52, No.8, p.461-465, August 2005 Matthew L. Curry, Anthony Skjellum, H. Lee Ward, Ron Brightwell, "Accelerating Reed-Solomon Coding in RAID systems with GPUs", IEEE International Symposium on Parallel and Distributed Processing 2008 (IPDPS 2008), 2008年4月Matthew L. Curry, Anthony Skjellum, H. Lee Ward, Ron Brightwell, "Accelerating Reed-Solomon Coding in RAID systems with GPUs", IEEE International Symposium on Parallel and Distributed Processing 2008 (IPDPS 2008), April 2008 Donghyuk Lee, Lavanya Subramanian, Rachata Ausavarungnirun, Jongmoo Choi, Onur Mutlu, "Decoupled Direct Memory Access: Isolating CPU and IO Traffic by Leveraging a Dual-Data-Port DRAM", In Proceedings of the 2015 International Conference on Parallel Architecture and Compilation (PACT), 2015年10月Donghyuk Lee, Lavanya Subramanian, Rachata Ausavarungnirun, Jongmoo Choi, Onur Mutlu, "Decoupled Direct Memory Access: Isolating CPU and IO Traffic by Leveraging a Dual-Data-Port DRAM", In Proceedings of the 2015 International Conference on Parallel Architecture and Compilation ( PACT), October 2015

これらのシステムを通信へ応用することを考えた際には、データ処理の低遅延化が重要となる。 When considering the application of these systems to communication, it is important to reduce the delay in data processing.

上記事情に鑑み、本発明は、汎用デバイスを用いてデータ処理を高速に行うことができるデータ処理装置及びデータ転送方法を提供することを目的としている。 In view of the above circumstances, an object of the present invention is to provide a data processing apparatus and a data transfer method capable of performing data processing at high speed using a general-purpose device.

本発明の一態様は、外部から受信したデータに、データ更新を示す更新情報を付与して出力するインタフェース回路と、前記データを用いて演算処理を行うアクセラレータとを備え、前記アクセラレータは、前記インタフェース回路から出力された前記データを記憶する記憶部と、前記記憶部に記憶される前記データに付与された前記更新情報を繰り返し監視し、データ更新を示す前記更新情報を検出した場合に、検出した前記更新情報を更新検出済みに書き換えるポーリング部と、前記ポーリング部により検出された前記更新情報が付与された前記データを用いた演算処理の実行を制御する制御部と、前記制御部の制御に基づいて、前記記憶部に記憶された前記データを用いて演算処理を実行する演算部と、を備える、データ処理装置である。 One aspect of the present invention includes an interface circuit that adds update information indicating data update to data received from the outside and outputs the data, and an accelerator that performs arithmetic processing using the data. The accelerator is the interface. The storage unit that stores the data output from the circuit and the update information added to the data stored in the storage unit are repeatedly monitored, and when the update information indicating the data update is detected, it is detected. Based on the control of the poll unit that rewrites the update information to update detected, the control unit that controls the execution of arithmetic processing using the data to which the update information detected by the poll unit is added, and the control of the control unit. The data processing apparatus includes an arithmetic unit that executes arithmetic processing using the data stored in the storage unit.

本発明の一態様は、上述のデータ処理装置であって、前記インタフェース回路は、前記データの長さを示す長さ情報を前記データにさらに付与して出力し、前記制御部は、前記長さ情報に基づく並列度で前記演算部に演算処理を実行させる。 One aspect of the present invention is the above-mentioned data processing device, in which the interface circuit further adds length information indicating the length of the data to the data and outputs the data, and the control unit outputs the data. The arithmetic unit is made to execute arithmetic processing with a degree of parallelism based on information.

本発明の一態様は、上述のデータ処理装置であって、前記インタフェース回路は、演算処理の種類を示す制御情報を前記データにさらに付与して出力し、前記制御部は、前記制御情報が示す前記種類の演算処理を前記演算部に実行させる。 One aspect of the present invention is the above-mentioned data processing apparatus, in which the interface circuit further adds control information indicating a type of arithmetic processing to the data and outputs the data, and the control unit is indicated by the control information. The arithmetic unit is made to execute the arithmetic processing of the kind.

本発明の一態様は、上述のデータ処理装置であって、前記データ処理装置は、通信装置である。 One aspect of the present invention is the above-mentioned data processing device, and the data processing device is a communication device.

本発明の一態様は、インタフェース回路が、外部から受信したデータに、データ更新を示す更新情報を付与して出力する出力ステップと、アクセラレータが、前記インタフェース回路から出力された前記データを記憶部に記憶する記憶ステップと、前記記憶部に記憶される前記データに付与された前記更新情報を繰り返し監視する監視ステップと、前記監視ステップにおいてデータ更新を示す前記更新情報を検出した場合に、検出した前記更新情報を更新検出済みに書き換える書き換えステップと、前記監視ステップにおいて検出された前記更新情報が付与された前記データを用いた演算処理を実行する演算ステップと、を有するデータ転送方法である。 One aspect of the present invention is an output step in which the interface circuit adds update information indicating data update to the data received from the outside and outputs the data, and the accelerator stores the data output from the interface circuit in the storage unit. The storage step to be stored, the monitoring step for repeatedly monitoring the update information added to the data stored in the storage unit, and the detected update information when the update information indicating data update is detected in the monitoring step. It is a data transfer method including a rewriting step of rewriting the update information to update detected, and a calculation step of executing a calculation process using the data to which the update information detected in the monitoring step is added.

本発明により、汎用デバイスを用いてデータ処理を高速に行うことが可能となる。 INDUSTRIAL APPLICABILITY According to the present invention, data processing can be performed at high speed using a general-purpose device.

本発明の第1の実施形態による通信装置に用いられるデバイス間のデータ転送を示す図である。It is a figure which shows the data transfer between the device used for the communication apparatus by 1st Embodiment of this invention. 同実施形態による通信装置の機能ブロック図である。It is a functional block diagram of the communication device by the same embodiment. 同実施形態によるデータ形式の例を示す図である。It is a figure which shows the example of the data format by the same embodiment. 同実施形態によるポーリング処理の処理フローを示す図である。It is a figure which shows the processing flow of the polling processing by the same embodiment. 第2の実施形態によるGPUにおける並列演算処理の処理フローを示す図である。It is a figure which shows the processing flow of the parallel arithmetic processing in GPU by 2nd Embodiment. 第3の実施形態によるGPUにおける演算処理の種類の切替を行う処理フローを示す図である。It is a figure which shows the processing flow which switches the type of arithmetic processing in GPU according to 3rd Embodiment. 従来技術によるGPUへのデータ転送を示す図である。It is a figure which shows the data transfer to the GPU by the prior art. 割込みを用いたGPUへのデータ転送を示す図である。It is a figure which shows the data transfer to a GPU using an interrupt.

以下、図面を参照しながら本発明の実施形態を詳細に説明する。
汎用ハードウェアを用いた装置を通信へ応用する際には、低遅延化が重要となる。データ転送と処理の低遅延化を行うためには、短いデータを受信し、それを演算処理することが必要となる。
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
When applying a device using general-purpose hardware to communication, it is important to reduce the delay. In order to transfer data and reduce the processing delay, it is necessary to receive short data and perform arithmetic processing on it.

汎用ハードウェアであるGPUにデータ入力を行うにはPCIe(ピーシーアイエクスプレス)等のインタフェースを介する必要があり、そのためには、FPGA(field-programmable gate array)等のハードウェアが必要となる。また、GPUがデータを受信する際には、割り込みが多く用いられる。しかしながら、FPGA等のハードウェアからの割込みに対応したGPUはない。一方で、CPUは、割り込み制御を用いて、FPGAからGPUへのデータ転送や、GPUのプログラムを実行するGPUカーネル起動を行う。 In order to input data to the GPU, which is general-purpose hardware, it is necessary to use an interface such as PCIe (PCIe), and for that purpose, hardware such as FPGA (field-programmable gate array) is required. Further, when the GPU receives data, interrupts are often used. However, there is no GPU that supports interrupts from hardware such as FPGA. On the other hand, the CPU uses interrupt control to transfer data from the FPGA to the GPU and start the GPU kernel that executes the GPU program.

上記から、例えば、通信装置を図8のような実装とすることが考えられる。この実装例では、外部入力をGPUに転送する際に、FPGAはCPUに割込みを実行し、CPUはFPGAにデータの転送先アドレス指定や、転送命令を行う。また、CPUは、GPUに対しても並列度や実行命令を指定するカーネル実行命令を行う。 From the above, for example, it is conceivable to implement the communication device as shown in FIG. In this implementation example, when transferring an external input to the GPU, the FPGA executes an interrupt to the CPU, and the CPU specifies a data transfer destination address to the FPGA and issues a transfer instruction to the CPU. The CPU also issues a kernel execution instruction to the GPU to specify the degree of parallelism and the execution instruction.

このような実装では、1度に転送するデータ量が小さい場合は、CPUと他のプロセッサ間での通信回数が増加し、遅延量が増加する。そのため、CPUを介さず直接GPUに外部信号を転送する方法が望まれる。 In such an implementation, when the amount of data transferred at one time is small, the number of communications between the CPU and another processor increases, and the amount of delay increases. Therefore, a method of directly transferring an external signal to the GPU without going through a CPU is desired.

また、1度に転送するデータ量(フレームデータ量)が小さく、連続的にデータが入力されるときは、時間当たりの割込みの回数が増加する。その結果、CPU−GPU−FPGA間での通信が増加し、制約時間内での処理が間に合わない場合がある。 Further, when the amount of data to be transferred at one time (frame data amount) is small and data is continuously input, the number of interrupts per hour increases. As a result, communication between the CPU, GPU, and FPGA increases, and processing within the restricted time may not be in time.

GPUは従来、CPUのアクセラレータとして利用されており、CPU制御によってデータ入力のタイミング制御や、機能の変更を行う。そのため、CPUを介さず、FPGAなど他のデバイスからのデータ入力に対するタイミング制御、データに対する逐次の機能変更をどのように行うかが課題である。GPU等のアクセラレータは割込みに対応していないため、ポーリングを使った、データ入力に対するタイミング制御の実装方法が必要である。 The GPU has been conventionally used as an accelerator of a CPU, and the timing of data input is controlled and the function is changed by the CPU control. Therefore, the issue is how to perform timing control for data input from other devices such as FPGA and sequential function change for data without going through the CPU. Since accelerators such as GPUs do not support interrupts, a method of implementing timing control for data input using polling is required.

また、通常、GPUの演算処理においてはCPUの制御によってGPUが行う処理の並列度の変更を行い、CPUの介入が生じる。更に、GPUが実行する処理を変更する際も、CPUの制御によって行うことが必要となる。そのため、CPU−GPU−FPGA間の通信を削減した転送方法とその演算処理方法が求められる。 Further, in the arithmetic processing of the GPU, the degree of parallelism of the processing performed by the GPU is usually changed by the control of the CPU, and the intervention of the CPU occurs. Further, when changing the process executed by the GPU, it is necessary to perform it under the control of the CPU. Therefore, a transfer method that reduces communication between the CPU, GPU, and FPGA and a calculation processing method thereof are required.

そこで、本実施形態では、CPU−GPU−FPGA間での通信を削減するため、GPU内にポーリング実装を行う。GPUがCPUを介さずにデータの入力タイミングを知るために、FPGAは転送するフレーム全てに、データの更新を示すフラグを付与する。GPUは、転送されたデータをメモリにバッファし、バッファしたデータをポーリングにより読み込んでフラグが更新されていると判断した場合に、演算処理を開始する。また、FPGAは、GPUに転送するフレームに対して、並列度や演算処理の種類の情報を付与する。これにより、GPUが演算処理を実行する際の並列度の変更や、GPUが実行する演算処理の種類を変更する。 Therefore, in the present embodiment, in order to reduce the communication between the CPU-GPU-FPGA, polling is implemented in the GPU. In order for the GPU to know the data input timing without going through the CPU, the FPGA adds a flag indicating data update to all the frames to be transferred. The GPU buffers the transferred data in the memory, reads the buffered data by polling, and starts arithmetic processing when it is determined that the flag has been updated. Further, the FPGA adds information on the degree of parallelism and the type of arithmetic processing to the frame to be transferred to the GPU. As a result, the degree of parallelism when the GPU executes the arithmetic processing is changed, and the type of the arithmetic processing executed by the GPU is changed.

[第1の実施形態]
図1は、本実施形態の通信装置1に用いられるデバイス間のデータ転送を示す図である。通信装置1は、データ転送装置の一例である。通信装置1は、例えば、PON(Passive Optical Network;受動光ネットワーク)における光加入者線端局装置(OLT:Optical Line Terminal)や光回線終端装置(ONU:Optical Network Unit)として用いることができる。
[First Embodiment]
FIG. 1 is a diagram showing data transfer between devices used in the communication device 1 of the present embodiment. The communication device 1 is an example of a data transfer device. The communication device 1 can be used, for example, as an optical subscriber line terminal (OLT) or an optical network unit (ONU) in a PON (Passive Optical Network).

通信装置1は、IF(インタフェース)回路として用いられるFPGA2と、アクセラレータの一例であるGPU3とを備える。FPGA2は、伝送路を介して他の装置から信号を受信し、受信した信号に含まれるフレームデータをGPU3に転送する。FPGA2は、GPU3に転送するフレームデータに対してデータ更新を表すフラグ等の付加データを付与することで、CPUの制御を介さないデータ転送を実現する。GPU3は、FPGA2が出力したフレームデータを受信し、演算を行う。なお、GPU3は、演算結果のデータをFPGA2に出力し、FPGA2は、GPU3から受信したデータが設定された信号を、伝送路を介して他の装置へ送信してもよい。 The communication device 1 includes an FPGA 2 used as an IF (interface) circuit and a GPU 3 which is an example of an accelerator. The FPGA 2 receives a signal from another device via a transmission line, and transfers the frame data included in the received signal to the GPU 3. The FPGA 2 realizes data transfer without CPU control by adding additional data such as a flag indicating data update to the frame data to be transferred to the GPU 3. The GPU 3 receives the frame data output by the FPGA 2 and performs an operation. The GPU 3 may output the calculation result data to the FPGA 2, and the FPGA 2 may transmit a signal in which the data received from the GPU 3 is set to another device via the transmission line.

通信装置1は、付加データを用いることによって、図8の場合と比較して、FPGA−CPU間、及び、CPU−GPU間の通信を削減することができる。FPGA2からのデータ転送の実行前には前処理が必要である。前処理として、FPGA2は、転送先GPUメモリの確保、転送先GPUアドレスの取得、付加データの値の設定を事前に行う。さらには、ポーリング処理を行うGPU3のカーネルも実行しておく必要がある。 By using the additional data, the communication device 1 can reduce the communication between the FPGA and the CPU and between the CPU and the GPU as compared with the case of FIG. Preprocessing is required before executing data transfer from FPGA 2. As a preprocessing, the FPGA 2 secures the transfer destination GPU memory, acquires the transfer destination GPU address, and sets the value of the additional data in advance. Furthermore, it is necessary to execute the kernel of GPU3 that performs polling processing.

図2は、通信装置1の機能ブロック図である。同図に、FPGA2及びGPU3の各デバイスにおける機能部を示す。
FPGA2は、IF部21、メモリ22、フラグ付与部23及び転送部24を備える。IF部21は、伝送路を伝送した外部信号を入力する。通信装置1が例えば、OLT又はONUである場合、IF部21は、光信号から電気信号への変換又は電気信号から光信号への変換を行う。メモリ22は、IF部21を介して入力された外部信号を記憶(バッファ)する。
FIG. 2 is a functional block diagram of the communication device 1. The figure shows the functional parts of each device of FPGA2 and GPU3.
The FPGA 2 includes an IF unit 21, a memory 22, a flagging unit 23, and a transfer unit 24. The IF unit 21 inputs an external signal transmitted through the transmission line. When the communication device 1 is, for example, an OLT or an ONU, the IF unit 21 converts an optical signal to an electric signal or an electric signal to an optical signal. The memory 22 stores (buffers) an external signal input via the IF unit 21.

フラグ付与部23は、メモリ22にバッファされた、ある長さを持つフレームデータにフラグを付与する。フラグ付与部23は、更新フラグ付与部231、長さフラグ付与部232、及び、制御フラグ付与部233を備える。更新フラグ付与部231は、フレームデータにデータ更新を示すUpdate(更新)フラグを付与する。長さフラグ付与部232は、フレームデータに当該データの長さを示すLength(長さ)フラグを付与する。制御フラグ付与部233は、フレームデータに演算処理の種類を示すControl(制御)フラグを付与する。転送部24は、各種フラグが付与されたフレームデータを、GPU3のメモリ31に転送する。 The flag giving unit 23 gives a flag to the frame data having a certain length buffered in the memory 22. The flag-giving unit 23 includes an update flag-giving unit 231, a length flag-giving unit 232, and a control flag-giving unit 233. The update flag giving unit 231 adds an Update flag indicating data update to the frame data. The length flag adding unit 232 adds a Length flag indicating the length of the data to the frame data. The control flag assigning unit 233 assigns a Control flag indicating the type of arithmetic processing to the frame data. The transfer unit 24 transfers the frame data to which various flags are added to the memory 31 of the GPU 3.

GPU3は、メモリ31、ポーリング部32、制御部33及び演算部34を備える。メモリ31は、データを記憶する記憶部の一例である。メモリ31は、FPGA2の転送部24から転送されたデータをバッファする。GPU3のポーリング部32は、メモリ31にバッファリングされたデータに対してポーリング処理を行って信号の入力を検知する。制御部33は、カーネルを実行することにより、各種処理の実行を制御する。また、制御部33は、演算部34における演算時の並列度の変更や演算部34が行う演算処理の種類の切替を行う。演算部34は、制御部33から制御に基づいて入力信号に対する演算処理を行う。 The GPU 3 includes a memory 31, a polling unit 32, a control unit 33, and a calculation unit 34. The memory 31 is an example of a storage unit that stores data. The memory 31 buffers the data transferred from the transfer unit 24 of the FPGA 2. The polling unit 32 of the GPU 3 performs polling processing on the data buffered in the memory 31 to detect the input of the signal. The control unit 33 controls the execution of various processes by executing the kernel. Further, the control unit 33 changes the degree of parallelism at the time of calculation in the calculation unit 34 and switches the type of calculation processing performed by the calculation unit 34. The calculation unit 34 performs calculation processing on the input signal based on the control from the control unit 33.

図3は、FPGA2におけるフラグ付与によって生成されるデータ形式の例を示す図である。同図に示すように、データには、ヘッダ名「Update」、32ビット長のUpdateフラグと、ヘッダ名「Length」、32ビット長のLengthフラグと、ヘッダ名「Control」、448ビット長のControlフラグが付与される。 FIG. 3 is a diagram showing an example of a data format generated by flagging in FPGA 2. As shown in the figure, the data includes the header name "Update", the 32-bit length Update flag, the header name "Length", the 32-bit length Length flag, the header name "Control", and the 448-bit length Control. Flagged.

更新フラグ付与部231は、Updateフラグに常にデータ更新を表す値「1」を設定し、データの更新をGPU3に通知する。GPU3のポーリング部32は、メモリ31に記憶されるデータに値「1」のUpdateフラグを検出した場合に、このUpdateフラグを、更新検出済みを表す値「0」に書き換える。Lengthフラグは、データの長さを示す。Lengthフラグにデータの長さを設定することにより、GPU3において、処理を行うデータの範囲の認識や、並列演算を行う際の並列度の決定などに用いることができる。Controlフラグは、処理制御用に用いられる。Controlフラグは、GPU3において行われる演算処理の種類を変更する際に利用される。これらのフラグの値は、FPGA2のレジスタの値の書き換えを行うことなどにより、プログラム実行中に変更される。 The update flag assigning unit 231 always sets the Update flag to a value “1” indicating data update, and notifies the GPU 3 of the data update. When the polling unit 32 of the GPU 3 detects the Update flag of the value "1" in the data stored in the memory 31, the Polling unit 32 rewrites the Update flag to the value "0" indicating that the update has been detected. The Length flag indicates the length of the data. By setting the length of the data in the Length flag, the GPU 3 can be used for recognizing the range of data to be processed, determining the degree of parallelism when performing parallel calculation, and the like. The Control flag is used for processing control. The Control flag is used when changing the type of arithmetic processing performed on the GPU 3. The values of these flags are changed during program execution by rewriting the values of the registers of FPGA2.

図4は、GPUカーネルにより実行されるポーリング処理の処理フローを示す図である。GPUカーネルは、事前設定時に起動される。FPGA2のフラグ付与部23は、IF部21が入力した信号のフレームデータがメモリ22にバッファされると、そのフレームデータにUpdateフラグ、Lengthフラグ、及び、Controlフラグを付与し、転送部24に出力する。転送部24は、各種フラグが付与されたフレームデータを、GPU3のメモリ31に転送する。GPU3のメモリ31は、FPGA2から転送されたデータをバッファリングする。 FIG. 4 is a diagram showing a processing flow of polling processing executed by the GPU kernel. The GPU kernel is booted at pre-configuration. When the frame data of the signal input by the IF unit 21 is buffered in the memory 22, the flag adding unit 23 of the FPGA 2 adds the Update flag, the Length flag, and the Control flag to the frame data, and outputs the frame data to the transfer unit 24. do. The transfer unit 24 transfers the frame data to which various flags are added to the memory 31 of the GPU 3. The memory 31 of the GPU 3 buffers the data transferred from the FPGA 2.

GPU3のポーリング部32は、ポーリング処理により、常にメモリ31に記憶されているデータのUpdateフラグをチェックする(ステップS110)。例えば、ポーリング部32は、所定時間間隔でUpdateフラグをチェックする。ポーリング部32は、Updateフラグの値が0であると判断した場合(ステップS110:==0)、まだFPGA2から新たなフレームデータは到着していないとみなす。GPU3は、フレームデータの演算処理は行わず、ステップS110に戻り、再度Updateフラグのチェックを再開する。 The polling unit 32 of the GPU 3 constantly checks the Update flag of the data stored in the memory 31 by the polling process (step S110). For example, the polling unit 32 checks the Update flag at predetermined time intervals. When the polling unit 32 determines that the value of the Update flag is 0 (step S110: == 0), it considers that new frame data has not yet arrived from FPGA 2. The GPU 3 does not perform the calculation processing of the frame data, returns to step S110, and restarts the check of the Update flag again.

一方、ポーリング部32は、Updateフラグの値が1であると判断した場合(ステップS110:!=0)、新たなフレームデータが入力されたとみなし、Updateフラグを0にリセットする(ステップS120)。Updateフラグのリセット後、制御部33は、フレームデータに対する任意の演算処理を演算部34により実行させる(ステップS130)。GPU3は、ステップS110からの処理を繰り返す。 On the other hand, when the polling unit 32 determines that the value of the Update flag is 1 (step S110 :! = 0), it considers that new frame data has been input and resets the Update flag to 0 (step S120). After resetting the Update flag, the control unit 33 causes the calculation unit 34 to execute an arbitrary calculation process for the frame data (step S130). GPU3 repeats the process from step S110.

なお、メモリ31は、例えば、リングバッファである。GPU3の制御部33は、Updateフラグのリセットの度に、次に更新をチェックするバッファ位置を表すアドレス値を逐次変更していく。 The memory 31 is, for example, a ring buffer. The control unit 33 of the GPU 3 sequentially changes the address value representing the buffer position for which the update is checked next each time the Update flag is reset.

[第2の実施形態]
GPUは複数コアを有しており、並列演算が可能である。本実施形態では、GPUはフレームデータの並列演算処理を行う。
[Second Embodiment]
The GPU has a plurality of cores and can perform parallel operations. In this embodiment, the GPU performs parallel arithmetic processing of frame data.

図5は、GPU3がフレームデータに対して並列演算処理を行う処理フローを示す図である。同図を用いて、GPU3が、カーネル実行中に演算処理を実行する並列度を変更する方法を説明する。並列度の変更には、フレームデータに付与されたLengthフラグが用いられる。GPU3がnビット単位で演算処理を行う際は、Length/nの並列度を指定し、カーネルを起動する。ここではNVIDIAのGPUで利用できるDynamic parallelismを想定し、既に実行しているカーネル内から動的にカーネルを起動する。例えば、10G−EPON(Gigabit - Ethernet(登録商標) Passive Optical Network)フレームとNG−PON2(Next generation - Passive Optical Network 2)フレームではnが異なるため、FPGA2の転送部24から逐次GPU3に転送するデータの長さ(Lengthフラグへの設定値)をnの倍数に変更する必要がある。 FIG. 5 is a diagram showing a processing flow in which the GPU 3 performs parallel arithmetic processing on the frame data. The method of changing the degree of parallelism in which the GPU 3 executes arithmetic processing during kernel execution will be described with reference to the figure. The Length flag assigned to the frame data is used to change the degree of parallelism. When the GPU 3 performs arithmetic processing in n-bit units, the parallelism of Length / n is specified and the kernel is started. Here, assuming Dynamic parallelism that can be used with NVIDIA GPUs, the kernel is dynamically booted from within the kernel that is already running. For example, since n is different between the 10G-EPON (Gigabit --Ethernet (registered trademark) Passive Optical Network) frame and the NG-PON2 (Next generation --Passive Optical Network 2) frame, the data to be sequentially transferred from the transfer unit 24 of the FPGA 2 to the GPU 3. It is necessary to change the length of (the value set for the Length flag) to a multiple of n.

図5のステップS210〜ステップS220の処理は、図4に示すステップS110〜ステップS120の処理と同様である。ステップS220の処理の後、制御部33は、メモリ31に記憶されているフレームデータのLengthフラグを読み出し、読み出したLengthフラグに設定されているデータ長を予め設定されたnで除算して並列度を計算する(ステップS230)。制御部33は、既に実行しているカーネル内から、計算された並列度のカーネルを起動することにより、計算された並列度に基づいてカーネルを起動し、各カーネルはnビット単位の演算処理を並列で演算部34に実行させる(ステップS240)。GPU3は、ステップS210からの処理を繰り返す。 The process of steps S210 to S220 of FIG. 5 is the same as the process of steps S110 to S120 shown in FIG. After the process of step S220, the control unit 33 reads the Length flag of the frame data stored in the memory 31 and divides the data length set in the read Length flag by a preset n to determine the degree of parallelism. Is calculated (step S230). The control unit 33 starts the kernel based on the calculated parallelism by starting the kernel of the calculated parallelism from the kernel that has already been executed, and each kernel performs arithmetic processing in n-bit units. The calculation unit 34 is made to execute in parallel (step S240). GPU3 repeats the process from step S210.

[第3の実施形態]
本実施形態では、GPU3が実行する演算処理の種類を切り替える。
図6は、GPU3が実行する演算処理の種類の切替えを行う処理フローを示す図である。演算処理の種類の切換えには、フレームデータに付与されたControlフラグを用いる。
[Third Embodiment]
In the present embodiment, the type of arithmetic processing executed by the GPU 3 is switched.
FIG. 6 is a diagram showing a processing flow for switching the type of arithmetic processing executed by the GPU 3. The Control flag assigned to the frame data is used to switch the type of arithmetic processing.

図6のステップS310〜ステップS320の処理は、図4に示すステップS110〜ステップS120の処理と同様である。ステップS320の処理の後、制御部33は、分岐命令においてControlフラグの値を参照する(ステップS330)。制御部33は、Controlフラグの値に応じて、起動するカーネルを切替える。複数のカーネルをカーネル0〜k(kは1以上の整数)としたとき、制御部33は、Controlフラグの値i(iは0以上k以下の整数)である場合に、カーネルiを起動する(ステップS340−0〜S340−k)。これにより、例えば、制御部33は、入力データに対して、リードソロモン(255,223)や、リードソロモン(255,239)等の機能の切替えを、CPUを介さず行うことができる。GPU3は、ステップS340−0〜S340−kのいずれかの実行後、ステップS310からの処理を繰り返す。 The process of steps S310 to S320 of FIG. 6 is the same as the process of steps S110 to S120 shown in FIG. After the process of step S320, the control unit 33 refers to the value of the Control flag in the branch instruction (step S330). The control unit 33 switches the kernel to be booted according to the value of the Control flag. When a plurality of kernels are set to kernels 0 to k (k is an integer of 1 or more), the control unit 33 starts kernel i when the value i of the Control flag (i is an integer of 0 or more and k or less). (Steps S340-0 to S340-k). As a result, for example, the control unit 33 can switch functions such as Reed-Solomon (255,223) and Reed-Solomon (255,239) with respect to the input data without going through the CPU. The GPU 3 repeats the process from step S310 after executing any one of steps S340-0 to S340-k.

以上説明した実施形態によれば、データ処理装置は、FPGAなどのインタフェース回路と、GPUなどのアクセラレータとを備える。データ処理装置は、例えば、通信装置である。インタフェース回路は、入力されたフレームデータに対して、データの更新を示す更新情報を付与してアクセラレータに転送する。更新情報は、例えば、Updateフラグである。アクセラレータは、受信したフレームデータを記憶部に記憶し、記憶されているデータの更新情報を繰り返し監視する。アクセラレータは、データ更新を示す更新情報を検出した場合に、フレームデータが入力されたと判断して、検出した更新情報を更新検出済みへ書き換えるとともに、当該更新情報が付与されたフレームデータを用いた演算処理を開始する。これにより、CPUを介することなく、アクセラレータがフレームデータの入力タイミングを検出することができため、通信装置におけるデータ転送および演算処理の低遅延化が可能となる。 According to the embodiment described above, the data processing device includes an interface circuit such as an FPGA and an accelerator such as a GPU. The data processing device is, for example, a communication device. The interface circuit adds update information indicating data update to the input frame data and transfers it to the accelerator. The update information is, for example, the Update flag. The accelerator stores the received frame data in the storage unit, and repeatedly monitors the update information of the stored data. When the accelerator detects the update information indicating the data update, it determines that the frame data has been input, rewrites the detected update information to the update detected, and performs an operation using the frame data to which the update information is added. Start processing. As a result, the accelerator can detect the input timing of the frame data without going through the CPU, so that it is possible to reduce the delay of data transfer and arithmetic processing in the communication device.

また、インタフェース回路は、データの長さを示す長さ情報及び演算処理の種類を示す制御情報をさらにデータに付与してアクセラレータに転送してもよい。長さ情報、制御情報は、例えば、Lengthフラグ、Controlフラグである。アクセラレータは、長さ情報に基づく並列度で演算処理を実行する。これにより、演算処理の低遅延化をさらに図ることができる。また、アクセラレータは、制御情報が示す種類の演算処理を実行する。これにより、インタフェース回路から、アクセラレータが実行する演算処理を切り替えることができる。 Further, the interface circuit may further add length information indicating the length of the data and control information indicating the type of arithmetic processing to the data and transfer the data to the accelerator. The length information and control information are, for example, the Length flag and the Control flag. The accelerator executes arithmetic processing with a degree of parallelism based on length information. As a result, it is possible to further reduce the delay in arithmetic processing. In addition, the accelerator executes the kind of arithmetic processing indicated by the control information. As a result, the arithmetic processing executed by the accelerator can be switched from the interface circuit.

以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。 Although the embodiments of the present invention have been described in detail with reference to the drawings, the specific configuration is not limited to this embodiment, and includes designs and the like within a range that does not deviate from the gist of the present invention.

1…通信装置, 2…FPGA, 3…GPU, 21…IF部, 22…メモリ, 23…フラグ付与部, 24…転送部, 31…メモリ, 32…ポーリング部, 33…制御部, 34…演算部, 231…更新フラグ付与部, 232…長さフラグ付与部, 233…制御フラグ付与部 1 ... Communication device, 2 ... FPGA, 3 ... GPU, 21 ... IF section, 22 ... Memory, 23 ... Flagging section, 24 ... Transfer section, 31 ... Memory, 32 ... Polling section, 33 ... Control section, 34 ... Calculation Unit, 231 ... Update flag assignment unit, 232 ... Length flag assignment unit, 233 ... Control flag assignment unit

Claims (4)

外部から受信したデータに、データ更新を示す更新情報と演算処理の種類を示す制御情報とを付与して出力するインタフェース回路と、
前記データを用いて演算処理を行うアクセラレータとを備え、
前記アクセラレータは、
前記インタフェース回路から出力された前記データを記憶する記憶部と、
前記記憶部に記憶される前記データに付与された前記更新情報を繰り返し監視し、データ更新を示す前記更新情報を検出した場合に、検出した前記更新情報を更新検出済みに書き換えるポーリング部と、
前記ポーリング部により検出された前記更新情報が付与された前記データを用いた演算処理の実行を制御する制御部と、
前記制御部の制御に基づいて、前記記憶部に記憶された前記データを用いて演算処理を実行する演算部と、
を備え、
前記制御部は、前記制御情報が示す前記種類の演算処理を前記演算部に実行させる、
データ処理装置。
An interface circuit that adds update information indicating data update and control information indicating the type of arithmetic processing to data received from the outside and outputs it.
It is equipped with an accelerator that performs arithmetic processing using the data.
The accelerator
A storage unit that stores the data output from the interface circuit,
A polling unit that repeatedly monitors the update information added to the data stored in the storage unit and rewrites the detected update information to update detected when the update information indicating data update is detected.
A control unit that controls execution of arithmetic processing using the data to which the update information detected by the polling unit is added, and a control unit.
A calculation unit that executes arithmetic processing using the data stored in the storage unit based on the control of the control unit, and a calculation unit.
With
The control unit causes the calculation unit to execute the type of calculation processing indicated by the control information.
Data processing device.
前記インタフェース回路は、前記データの長さを示す長さ情報を前記データにさらに付与して出力し、
前記制御部は、前記長さ情報に基づく並列度で前記演算部に演算処理を実行させる、
請求項に記載のデータ処理装置。
The interface circuit further adds length information indicating the length of the data to the data and outputs the data.
The control unit causes the calculation unit to execute arithmetic processing at a degree of parallelism based on the length information.
The data processing device according to claim 1.
前記データ処理装置は、通信装置である、
請求項1又は請求項2に記載のデータ処理装置。
The data processing device is a communication device.
The data processing device according to claim 1 or 2.
インタフェース回路が、
外部から受信したデータに、データ更新を示す更新情報と演算処理の種類を示す制御情報とを付与して出力する出力ステップと、
アクセラレータが、
前記インタフェース回路から出力された前記データを記憶部に記憶する記憶ステップと、
前記記憶部に記憶される前記データに付与された前記更新情報を繰り返し監視する監視ステップと、
前記監視ステップにおいてデータ更新を示す前記更新情報を検出した場合に、検出した前記更新情報を更新検出済みに書き換える書き換えステップと、
前記監視ステップにおいて検出された前記更新情報が付与された前記データを用いた演算処理を実行する演算ステップと、
を有し、
前記演算ステップでは、前記制御情報が示す前記種類の演算処理を実行する、
データ転送方法。
The interface circuit is
An output step that adds update information indicating data update and control information indicating the type of arithmetic processing to data received from the outside and outputs it.
Accelerator,
A storage step for storing the data output from the interface circuit in the storage unit, and
A monitoring step of repeatedly monitoring the update information added to the data stored in the storage unit, and
When the update information indicating data update is detected in the monitoring step, a rewrite step of rewriting the detected update information to update detected, and a rewrite step.
A calculation step for executing a calculation process using the data to which the update information detected in the monitoring step is added, and a calculation step.
Have,
In the calculation step, the kind of calculation processing indicated by the control information is executed.
Data transfer method.
JP2018034512A 2018-02-28 2018-02-28 Data processing device and data transfer method Active JP6913312B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018034512A JP6913312B2 (en) 2018-02-28 2018-02-28 Data processing device and data transfer method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018034512A JP6913312B2 (en) 2018-02-28 2018-02-28 Data processing device and data transfer method

Publications (2)

Publication Number Publication Date
JP2019149086A JP2019149086A (en) 2019-09-05
JP6913312B2 true JP6913312B2 (en) 2021-08-04

Family

ID=67850556

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018034512A Active JP6913312B2 (en) 2018-02-28 2018-02-28 Data processing device and data transfer method

Country Status (1)

Country Link
JP (1) JP6913312B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306662A (en) * 2020-11-11 2021-02-02 山东云海国创云计算装备产业创新中心有限公司 Multi-processing unit cooperative operation device
EP4310679A1 (en) * 2021-04-22 2024-01-24 Nippon Telegraph And Telephone Corporation Accelerator control system, accelerator control method, and accelerator control program
JPWO2022224409A1 (en) * 2021-04-22 2022-10-27

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3768967B2 (en) * 2003-03-24 2006-04-19 株式会社東芝 Disk control device and disk device control program update method
JP5078674B2 (en) * 2008-02-29 2012-11-21 インターナショナル・ビジネス・マシーンズ・コーポレーション Analysis system, information processing apparatus, activity analysis method, and program
JP2015065488A (en) * 2012-01-30 2015-04-09 シャープ株式会社 Generation apparatus, reproduction apparatus, data structure, generation method, reproduction method, control program, and recording medium
JP2015060273A (en) * 2013-09-17 2015-03-30 株式会社リコー Network control device
JP6412708B2 (en) * 2014-04-01 2018-10-24 株式会社ソニー・インタラクティブエンタテインメント Processing system and multi-processing system
US10218645B2 (en) * 2014-04-08 2019-02-26 Mellanox Technologies, Ltd. Low-latency processing in a network node

Also Published As

Publication number Publication date
JP2019149086A (en) 2019-09-05

Similar Documents

Publication Publication Date Title
JP6913312B2 (en) Data processing device and data transfer method
JP6022650B2 (en) Technology for routing service chain flow packets between virtual machines
US10678583B2 (en) Guest controlled virtual device packet filtering
US20220261367A1 (en) Persistent kernel for graphics processing unit direct memory access network packet processing
JP2020102218A (en) System and method for offloading application functions to device
US10909655B2 (en) Direct memory access for graphics processing unit packet processing
EP3518100A1 (en) Quick loading method for kernel image file, and apparatus
US11868297B2 (en) Far-end data migration device and method based on FPGA cloud platform
US11157068B2 (en) Power state management for lanes of a communication port
CN111190854A (en) Communication data processing method, device, equipment, system and storage medium
EP4124950A1 (en) Exposing a cloud api based on supported hardware
JP6954535B2 (en) Communication device
US20230153153A1 (en) Task processing method and apparatus
CN113849277B (en) Network card testing method and device, computer equipment and computer readable storage medium
CN112817701B (en) Timer processing method, device, electronic equipment and computer readable medium
WO2019053915A1 (en) Image processing device, image processing method, and image processing program
JP2020009144A (en) Information processor, mobile object, information processing method, and program
CN105893112B (en) Data packet processing method and device in virtualization environment
CN114095907A (en) Bluetooth connection control method, device and equipment
US20090077553A1 (en) Parallel processing of platform level changes during system quiesce
US8639860B2 (en) Data transfer system and data transfer method
CN109905443B (en) Data processing method, system, electronic device and computer readable medium
JPH10149293A (en) Method and device for processing interruption
JP7037097B2 (en) Data processing system, central processing unit and data processing method
US10877552B1 (en) Dynamic power reduction through data transfer request limiting

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180228

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200616

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200812

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210317

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20210317

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210318

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20210511

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20210512

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210630

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210630

R150 Certificate of patent or registration of utility model

Ref document number: 6913312

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150