[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP2020106869A - Information processing device, method, and program - Google Patents

Information processing device, method, and program Download PDF

Info

Publication number
JP2020106869A
JP2020106869A JP2017054492A JP2017054492A JP2020106869A JP 2020106869 A JP2020106869 A JP 2020106869A JP 2017054492 A JP2017054492 A JP 2017054492A JP 2017054492 A JP2017054492 A JP 2017054492A JP 2020106869 A JP2020106869 A JP 2020106869A
Authority
JP
Japan
Prior art keywords
data
processing unit
packing
unit
bus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017054492A
Other languages
Japanese (ja)
Inventor
義和 渡邊
Yoshikazu Watanabe
義和 渡邊
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2017054492A priority Critical patent/JP2020106869A/en
Priority to PCT/JP2018/009726 priority patent/WO2018173856A1/en
Publication of JP2020106869A publication Critical patent/JP2020106869A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

To provide an information processing device capable of improving or suppressing a decrease in bus utilization efficiency when performing data communication between modules via memory and bus.SOLUTION: If a start address and/or size of data to be communicated and/or both are less than a communication unit of a bus used for communication with memory, an information processing device has a communication control unit that performs packing so as to be the communication unit. Fractional data, which is the data to be communicated, which is a fractional part of the communication unit, is collectively stored in a continuous area of the memory for a plurality of data.SELECTED DRAWING: Figure 4A

Description

本発明は、情報処理装置、方法、及び、プログラムに関し、特に、モジュール間でメモリおよびバスを介したデータ通信を行って情報を処理する情情報処理装置、方法、及び、プログラムに関する。 The present invention relates to an information processing device, method, and program, and more particularly, to an information processing device, method, and program for processing information by performing data communication between modules via a memory and a bus.

CPU(Central Processing Unit)を備える情報処理装置が、例えば、処理性能向上等を目的として、アクセラレータHW(Hardware)をも備える場合がある。CPUおよびアクセラレータHWを備えた情報処理装置のHW構成例を図1に示す。 An information processing apparatus including a CPU (Central Processing Unit) may also include an accelerator HW (Hardware) for the purpose of, for example, improving processing performance. FIG. 1 shows an example of HW configuration of an information processing device including a CPU and an accelerator HW.

メモリには、CPUが実行するソフトウェアプログラムと、当該ソフトウェアプログラムおよびアクセラレータHWが処理対象とするデータとが、記憶される。ある処理をソフトウェアプログラムが実行する代わりにアクセラレータHWが実行する場合、すなわち当該処理をCPUからアクセラレータHWにオフロードする場合、ソフトウェアプログラムは処理対象データをアクセラレータHWに通知し、アクセラレータHWは当該処理対象データを参照して処理を行う。処理結果データがある場合、アクセラレータHWは当該処理結果データをメモリに書き込み、ソフトウェアプログラムに通知する。また、アクセラレータHW自身がデータを生成する場合も同様に、アクセラレータHWは当該データをメモリに書き込み、ソフトウェアプログラムに通知する。 The memory stores a software program executed by the CPU and data to be processed by the software program and the accelerator HW. When the accelerator HW executes a process instead of the software program, that is, when the process is offloaded from the CPU to the accelerator HW, the software program notifies the accelerator HW of the data to be processed, and the accelerator HW targets the process. Perform processing by referring to the data. If there is processing result data, the accelerator HW writes the processing result data in the memory and notifies the software program. Similarly, when the accelerator HW itself generates data, the accelerator HW also writes the data in the memory and notifies the software program.

上述したようなソフトウェアプログラムおよびアクセラレータHW間のデータ通信方式の一つとして、主にポインタをエントリに用いるリングキュー(Ring Queue)がある。このリングキューは、メモリ上に実現されるFIFO(First In First Out)であり、そのエントリとして主に処理対象データへのポインタが格納される。 As one of the data communication methods between the software program and the accelerator HW as described above, there is a ring queue that mainly uses a pointer for an entry. This ring queue is a FIFO (First In First Out) realized on a memory, and as its entry, a pointer mainly to data to be processed is stored.

通信パケットデータを対象としたリングキューの一例としてDPDK(Data Plane Development Kit)リングキューがある。DPDKは通信ソフトウェア向けの高速パケット処理ライブラリであり、パケットを高速に処理するためのデータ構造や関数群を提供している。DPDKでは、パケットをmbuf形式でメモリ上に記憶する。DPDKリングキューおよびmbuf形式を用いてモジュール間(例えばソフトウェアプログラムとアクセラレータHW間)でパケットデータを通信する際のデータ構成例を、図2を用いて説明する。 An example of a ring queue for communication packet data is a DPDK (Data Plane Development Kit) ring queue. DPDK is a high-speed packet processing library for communication software, which provides a data structure and a group of functions for high-speed packet processing. DPDK stores packets in memory in mbuf format. A data configuration example when packet data is communicated between modules (for example, between a software program and an accelerator HW) using the DPDK ring queue and the mbuf format will be described with reference to FIG.

mbuf形式では、パケットデータそのものを記憶するパケットバッファと、当該パケットデータに関するメタデータを記憶するmbuf構造体と、を用いてパケットをメモリ上に記憶する。mbuf構造体には、パケットバッファの先頭アドレスやバッファ長、パケットバッファ内で実際にパケットデータが記憶されている位置に関する情報(オフセット、パケットデータ長)などが記憶される。パケットデータはパケットバッファ先頭からに記憶されるとは限らず、その途中に記憶される場合がある。 In the mbuf format, a packet is stored in a memory by using a packet buffer that stores the packet data itself and an mbuf structure that stores metadata about the packet data. The mbuf structure stores the start address and buffer length of the packet buffer, information about the position where the packet data is actually stored in the packet buffer (offset, packet data length), and the like. The packet data is not always stored from the beginning of the packet buffer, but may be stored midway.

DPDKリングキューは、状態管理用データと例えば8バイトデータの配列とから構成され、FIFOとして機能する。DPDKリングキューを使ってmbuf形式のパケットデータが通信される場合、mbuf構造体のポインタがEnqueueおよびDequeueされる。DPDKリングキューの状態管理用データであるproducer indexは、次にEnqueueされる要素を格納すべき配列インデックスを示し、同じく状態管理用データであるconsumer indexは次にDequeueされるべき要素が格納されている配列インデックスを示す。 The DPDK ring queue is composed of state management data and an array of 8-byte data, for example, and functions as a FIFO. When packet data in the mbuf format is communicated using the DPDK ring queue, the pointer of the mbuf structure is enqueued and dequeued. The producer index that is the state management data of the DPDK ring queue indicates the array index that should store the next Enqueue element, and the consumer index that is also the state management data that stores the next Dequeue element. Indicates the array index.

図2の例においては、3つのmbuf構造体ポインタが配列インデックス1〜3の場所に格納されている状態を示している。ここで、パケットデータを送信するモジュールが、当該パケットデータのmbuf構造体ポインタをDPDKリングキューにEnqueueした場合、当該ポインタは配列インデックス4の位置に格納され、producer indexは5に更新される。また、パケットデータを受信するモジュールがDPDKリングキューからDequeueする場合、配列インデックス1の位置からmbuf構造体ポインタが読み込まれ当該モジュールに渡される。同時に、consumer indexは2に更新される。各モジュールは、mbuf構造体ポインタを元にメモリ上のmbuf構造体およびパケットバッファを参照更新することでパケットデータに対する処理を行う。 In the example of FIG. 2, three mbuf structure pointers are stored in the locations of array indexes 1 to 3. Here, when the module that transmits the packet data enqueues the mbuf structure pointer of the packet data in the DPDK ring queue, the pointer is stored at the position of the array index 4 and the producer index is updated to 5. When the module that receives the packet data dequeues from the DPDK ring queue, the mbuf structure pointer is read from the position of array index 1 and passed to the module. At the same time, the consumer index is updated to 2. Each module performs processing on packet data by referring to and updating the mbuf structure on the memory and the packet buffer based on the mbuf structure pointer.

特許文献1は、周期転送用データと非周期転送用データをそれぞれ第1及び第2のポインタと共に格納するメモリと、当該メモリと通信バスに接続されたデータ転送回路とを備えたシステムを開示している。特許文献1は、非周期転送用データを通信バスに転送する際、第2のポインタで指示するデータ長の転送を完了できなかった場合、制御部でデータ長を更新して、通信バスに転送している。 Patent Document 1 discloses a system including a memory for storing cyclic transfer data and aperiodic transfer data together with first and second pointers, and a data transfer circuit connected to the memory and a communication bus. ing. In Patent Document 1, when the data for aperiodic transfer is transferred to the communication bus, if the transfer of the data length designated by the second pointer cannot be completed, the data length is updated by the control unit and transferred to the communication bus. doing.

特許文献2は、DPDK及びmbuf形式を用いた情報処理装置を開示している。 Patent Document 2 discloses an information processing device using the DPDK and mbuf formats.

特開2011−186918号公報JP, 2011-186918, A 特開2017−046286号公報JP, 2017-046286, A

図1に示したバスによる通信には、サイズや開始アドレスについて制約が課される場合がある。例えば、サイズはある最小単位サイズ(例えば64バイト、キャッシュラインサイズ)の倍数でなければならない場合がある。また、例えば、通信時の開始アドレス(リードやライトの先頭アドレス)はある最小単位サイズ(例えば64バイト、キャッシュラインサイズ、前記サイズに関する最小単位サイズとは異なる場合も考えられる)の倍数でなければならない場合がある。 In the communication by the bus shown in FIG. 1, restrictions may be imposed on the size and the start address. For example, the size may have to be a multiple of some minimum unit size (eg 64 bytes, cache line size). Also, for example, the start address (the start address of read or write) at the time of communication is not a multiple of a certain minimum unit size (for example, 64 bytes, cache line size, it may be different from the minimum unit size related to the size). It may not happen.

一方、ソフトウェアプログラムおよびアクセラレータHWとの間でやり取りされるデータは、常に上記制約を満たしているとは限らない。制約を満たしていない場合、制約を満たすようにバス上での通信するデータのサイズおよび開始アドレスをバスが調整する必要がある。その結果、バス上で実際に通信されるデータのサイズは、常に当初通信する予定であったデータのサイズより大きくなる。 On the other hand, the data exchanged between the software program and the accelerator HW does not always satisfy the above restrictions. If the constraint is not met, the bus needs to adjust the size of the data to communicate on the bus and the starting address to meet the constraint. As a result, the size of the data actually communicated on the bus is always larger than the size of the data originally intended to be communicated.

このことを、サイズおよび開始アドレスの最小単位サイズがいずれも64バイトである場合、および、パケットデータを通信する場合、を例として図3を用いて説明する。 This will be described with reference to FIG. 3 by taking the case where the minimum unit size of the size and the start address are both 64 bytes and the case where packet data is communicated as an example.

図3(A)は、パケットデータのサイズおよび開始アドレスがいずれも最小単位サイズの倍数である場合(128バイト、64*n)を示している。この場合、バスの制約を満たしているため、そのままのサイズおよび開始アドレスにて通信可能である。 FIG. 3A shows a case where the packet data size and the start address are both multiples of the minimum unit size (128 bytes, 64*n). In this case, since the bus constraint is satisfied, it is possible to communicate with the same size and start address.

図3(B)は、パケットデータのサイズが最小単位サイズの倍数でない場合(136バイト)を示している。この場合、バスのサイズに関する制約を満たしておらず、実際にバス上で通信されるデータは破線の矩形で示した192バイトとなる。 FIG. 3B shows the case where the size of the packet data is not a multiple of the minimum unit size (136 bytes). In this case, the constraint concerning the size of the bus is not satisfied, and the data actually communicated on the bus is 192 bytes shown by the broken line rectangle.

図3(C)は、パケットデータの開始アドレスが最小単位サイズの倍数でない場合(64*n+8)を示している。この場合、バスの開始アドレスに関する制約を満たしておらず、実際にバス上で通信されるデータは破線の矩形で示した192バイトとなる。 FIG. 3C shows the case where the start address of the packet data is not a multiple of the minimum unit size (64*n+8). In this case, the constraint on the start address of the bus is not satisfied, and the data actually communicated on the bus is 192 bytes shown by the broken line rectangle.

広く使われている通信方式であるEthernetでは、パケットデータであるフレームのサイズとして64バイトから1518バイト(もしくは1522バイト)の間で1バイト単位で設定可能である。そのため、上記制約を満たさないパケットデータは頻繁に発生しうる。 In Ethernet, which is a widely used communication method, the size of a frame that is packet data can be set in units of 1 byte from 64 bytes to 1518 bytes (or 1522 bytes). Therefore, packet data that does not satisfy the above constraint may frequently occur.

また、パケット処理の過程において、既存パケットデータの前後にデータを追加したり削除したりすることが頻繁に行われる。その際、パケットデータのサイズや開始位置は更新されるため、それらが上記制約を満たさない場合は容易に発生する。 In addition, in the process of packet processing, data is often added or deleted before and after existing packet data. At that time, since the size and the start position of the packet data are updated, they easily occur when they do not satisfy the above constraint.

また、前述したDPDKの例のように、パケットデータがメタデータ(mbuf構造体)およびパケットバッファで管理される場合、メタデータもバスによって通信される必要がある。メタデータのサイズや開始位置が上記制約を満たさない場合、パケットデータについて上述した問題がメタデータについても発生することになる。 Further, when the packet data is managed by the metadata (mbuf structure) and the packet buffer as in the case of the DPDK described above, the metadata also needs to be communicated by the bus. If the size or start position of the metadata does not satisfy the above constraint, the problem described above for the packet data will occur for the metadata as well.

さらに、メタデータはパケットバッファやその中に位置するパケットデータを参照するために必要な情報を含んでいるが、メタデータ内の全ての情報が受信者(ソフトウェアプログラム、アクセラレータHW)で必要となるとは限らない。その一部のみを通信することで通信量を減らすことが考えられるが、その際に上記制約を満たさなくなる可能性があり、結果として通信量削減効果が得られない、もしくは逆に増えてしまう虞がある。 Furthermore, the metadata contains the information needed to refer to the packet buffer and the packet data located in it, but if all the information in the metadata is needed by the receiver (software program, accelerator HW). Not necessarily. Although it is possible to reduce the communication volume by communicating only a part of it, there is a possibility that the above constraint may not be satisfied in that case, and as a result, the communication volume reduction effect may not be obtained or conversely increases. There is.

特許文献1は第2のポインタによって示されるデータ長分の非周期転送用データが転送できなかった場合、データ長を更新することを開示している。しかしながら、特許文献1は通信バスにおける制約及び制約による通信バスの利用効率の低下について何等考慮していない。 Patent Literature 1 discloses updating the data length when the aperiodic transfer data corresponding to the data length indicated by the second pointer cannot be transferred. However, Patent Document 1 does not take into consideration the restriction on the communication bus and the decrease in the utilization efficiency of the communication bus due to the restriction.

一方、特許文献2は、DPDK及びmbuf形式を用いて通信を行う情報処理装置を開示している。しかしながら、特許文献1はバスによる通信に伴う制約及びバスの利用効率の低下について指摘されていない。 On the other hand, Patent Document 2 discloses an information processing device that communicates using the DPDK and mbuf formats. However, Patent Document 1 does not point out the restrictions associated with bus communication and the reduction in bus utilization efficiency.

本発明の目的は、かかる問題に鑑みてなされたものであり、モジュール間でメモリおよびバスを介したデータ通信を行う際のバス利用効率を改善もしくはその低下を抑制することができる情報処理装置、方法、及び、プログラムを提供することにある。 An object of the present invention is made in view of such a problem, and an information processing apparatus capable of improving or suppressing a decrease in bus utilization efficiency when performing data communication between modules via a memory and a bus, To provide a method and a program.

本発明の第1の態様によれば、予め定められた通信単位で通信を行うバスと、
当該バスに接続されたメモリと、前記メモリに対して前記バスを介してデータを送受する通信装置を備え、前記通信装置は、前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位に合致しない場合に、前記バスの通信単位に合致するように、合致しないデータを複数のデータセット分まとめるパッキングを行なうことを特徴とする情報処理装置が得られる。
According to the first aspect of the present invention, a bus that performs communication in a predetermined communication unit,
The communication device includes a memory connected to the bus, and a communication device that transmits and receives data to and from the memory via the bus, and the communication device has at least one of the data and metadata regarding an attribute of the communication unit of the bus. When the above does not match, the information processing apparatus is characterized in that the non-matching data is packed so as to match the communication unit of the bus for a plurality of data sets.

本発明の第2の態様によれば、前記パッキングは、記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位未満の場合、及び前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位よりも大きい場合に実行されることを特徴とする第1の態様に記載の情報処理装置が得られる。 According to a second aspect of the present invention, the packing, the previous SL when at least one of data and metadata about the attributes is less than the communication units of the bus, and at least one of metadata about the data and its attributes The information processing apparatus according to the first aspect is obtained, which is executed when the communication unit is larger than the communication unit of the bus.

本発明の第3の態様によれば、前記通信装置は、前記データ及び前記メタデータの少なくとも一方が前記バスの通信単位未満である場合、前記通信単位に対して端数分となる端数データを前記通信単位となるように複数のデータセット分まとめて、前記バスを介して、前記メモリの連続領域に格納する送信装置を備えていることを特徴とする第1又は第2の態様に記載の情報処理装置が得られる。 According to a third aspect of the present invention, the communication device, when at least one of the data and the metadata is less than a communication unit of the bus, outputs the fraction data that is a fraction of the communication unit. Information according to the first or second aspect, further comprising a transmission device that collects a plurality of data sets so as to be a communication unit and stores the data sets in a continuous area of the memory via the bus. A processing device is obtained.

本発明の第4の態様によれば、前記通信装置は、通信すべき前記データのうち、前記端数データについて前記連続領域から読み込む受信装置を備えていることを特徴とする第1〜第3の態様のいずれか一項に記載の情報処理装置が得られる。 According to a fourth aspect of the present invention, the communication device includes a receiving device for reading the fractional data of the data to be communicated from the continuous area. The information processing apparatus according to any one of the aspects is obtained.

本発明の第5の態様によれば、前記通信装置は、前記データと、当該データの属性に関するメタデータをも複数のデータセット分まとめることを特徴とする第1乃至第4の態様のいずれかに記載の情報処理装置が得られる。 According to a fifth aspect of the present invention, the communication device collects the data and metadata regarding an attribute of the data for a plurality of data sets, according to any one of the first to fourth aspects. The information processing device described in 1. can be obtained.

本発明の第6の態様によれば、第1〜第5の態様のいずれか一項において、前記メモリはポインタをエントリに用いるリングキュー、当該ポインタにより前記データを間接的に参照できるパケットデータを記憶するパケットバッファ、及び、前記パケットデータに関する前記メタデータをmbuf形式で記憶するmbuf構造体を含むことを特徴とする第5の態様に記載の情報処理装置が得られる。 According to a sixth aspect of the present invention, in any one of the first to fifth aspects, the memory is a ring queue that uses a pointer as an entry, and packet data that can indirectly refer to the data by the pointer. An information processing apparatus according to a fifth aspect is obtained, which includes a packet buffer for storing, and an mbuf structure for storing the metadata regarding the packet data in an mbuf format.

本発明の第7の態様によれば、予め定められた通信単位で通信を行うバスと、当該バスに接続されたメモリと、前記メモリに対して前記バスを介してデータを送受する通信装置を備える情報処理装置において、前記通信装置によって、前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位に合致しない場合に、前記バスの通信単位に合致するように、合致しないデータを複数のデータセット分まとめるパッキングを行なうことを特徴とする通信方法が得られる。 According to the seventh aspect of the present invention, there is provided a bus that performs communication in a predetermined communication unit, a memory connected to the bus, and a communication device that transmits and receives data to and from the memory via the bus. In the information processing device, the communication device, when at least one of the data and the metadata regarding the attribute thereof does not match the communication unit of the bus, sets a plurality of non-matching data so as to match the communication unit of the bus. A communication method is obtained which is characterized in that packing is performed for collecting the data sets.

本発明の第8の態様によれば、前記通信装置が複数の前記データに係るポインタを前記メモリの連続領域(ポインタデータ領域)に格納する送信装置を備える場合に、前記送信装置によって、前記データもしくは前記データの一部である通信すべきデータの開始アドレスおよびサイズおよびいずれかもしくは両方が前記メモリとの通信に使用されるバスの通信単位未満である場合に、前記通信単位に関し端数分となる前記通信すべきデータである端数データを、前記複数のデータセット分まとめて前記メモリの連続領域に格納し、
前記通信装置の受信装置によって、前記通信すべきデータのうち、前記端数データについて前記連続領域から読み込むことを特徴とする第7の態様に記載の通信方法が得られる。
According to an eighth aspect of the present invention, when the communication device includes a transmitter that stores pointers relating to a plurality of the data in a continuous area (pointer data area) of the memory, the transmitter causes the data to be stored. Alternatively, when the start address and/or the size of data to be communicated, which is a part of the data, and/or both are less than the communication unit of the bus used for communication with the memory, the communication unit becomes a fractional part. Fractional data, which is the data to be communicated, is stored in a continuous area of the memory collectively for the plurality of data sets,
The communication method according to the seventh aspect is obtained in which the fractional data of the data to be communicated is read from the continuous area by the receiving device of the communication device.

本発明の第9の態様によれば、前記ポインタは前記データへのポインタを少なくとも含むメタデータへのポインタであり、前記送信装置は前記メタデータの一部を前記複数のデータセット分まとめて前記連続領域に格納し、前記受信装置によって、前記メタデータの一部を前記連続領域から読み込む、
ことを特徴とする第8の態様に記載の通信方法が得られる。
According to a ninth aspect of the present invention, the pointer is a pointer to metadata including at least a pointer to the data, and the transmitting device collects a part of the metadata for the plurality of data sets. Storing in a continuous area and reading a part of the metadata from the continuous area by the receiving device,
The communication method according to the eighth aspect is obtained.

本発明の第10の態様によれば、予め定められた通信単位で通信を行うバスと、当該バスに接続されたメモリと、前記メモリに対して前記バスを介してデータを送受する通信装置を備えるコンピュータに、前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位に合致しない場合に、前記バスの通信単位に合致するように、合致しないデータを複数のデータセット分まとめるパッキングを実行させることを特徴とするコンピュータプログラムが得られる。 According to a tenth aspect of the present invention, there is provided a bus that performs communication in a predetermined communication unit, a memory connected to the bus, and a communication device that transmits and receives data to and from the memory via the bus. If at least one of the data and the metadata relating to the attribute does not match the communication unit of the bus, the computer that is provided with the computer may be provided with packing for collecting the mismatched data for a plurality of data sets so as to match the communication unit of the bus. A computer program characterized by being executed is obtained.

本発明の第11の態様によれば、前記送信装置および前記受信装置は、前記ポインタデータ領域および前記連続領域として同じメモリ領域を使用する、
ことを特徴とする第7から10のいずれかの態様に記載の通信方法が得られる。
According to an eleventh aspect of the present invention, the transmitting device and the receiving device use the same memory area as the pointer data area and the continuous area,
The communication method according to any one of the seventh to tenth aspects is obtained.

本発明の情報処理装置、方法およびプログラムにより、モジュール間でメモリおよびバスを介したデータ通信を行う際のバス利用効率を改善もしくはその低下を抑制することができる。 With the information processing device, method, and program of the present invention, it is possible to improve the bus utilization efficiency when data communication is performed between modules via a memory and a bus, or to suppress the decrease.

CPU、メモリ、およびアクセラレータHWを備える一般的な情報処理装置の構成例を示す図である。It is a figure which shows the structural example of the general information processing apparatus provided with CPU, memory, and accelerator HW. リングキューおよびmbuf形式の一例を示す図である。It is a figure which shows an example of a ring queue and a mbuf format. メモリに接続するバスにおける制約の一例を示す図である。It is a figure which shows an example of the restrictions in the bus connected to a memory. 本発明の原理を説明するブロック図である。It is a block diagram explaining the principle of the present invention. 本発明の第1の実施形態の情報処理装置の構成例を示す図である。It is a figure which shows the structural example of the information processing apparatus of the 1st Embodiment of this invention. 本発明の第1の実施形態の情報処理装置が用いるPackingデータの一例を示す図である。It is a figure which shows an example of Packing data which the information processing apparatus of the 1st Embodiment of this invention uses. 本発明の第1の実施形態の第一送受信処理部の構成例を示す図である。It is a figure which shows the structural example of the 1st transmission/reception processing part of the 1st Embodiment of this invention. 本発明の第1の実施形態の第二送受信処理部の構成例を示す図である。It is a figure which shows the structural example of the 2nd transmission/reception processing part of the 1st Embodiment of this invention. 本発明の第1の実施形態の情報処理装置が用いるリングキューの構成例を示す図である。It is a figure which shows the structural example of the ring queue which the information processing apparatus of the 1st Embodiment of this invention uses. 本発明の第1の実施形態の情報処理装置が用いるmbuf構造体の構成例を示す図である。It is a figure which shows the structural example of the mbuf structure which the information processing apparatus of the 1st Embodiment of this invention uses. 本発明の第1の実施形態の情報処理装置の動作例を示す図である。It is a figure which shows the operation example of the information processing apparatus of the 1st Embodiment of this invention. 本発明の第1の実施形態の情報処理装置の動作例を示す図である。It is a figure which shows the operation example of the information processing apparatus of the 1st Embodiment of this invention. 本発明の第1の実施形態の情報処理装置の動作例を示す図である。It is a figure which shows the operation example of the information processing apparatus of the 1st Embodiment of this invention. 本発明の第1の実施形態の情報処理装置の動作例を示す図である。It is a figure which shows the operation example of the information processing apparatus of the 1st Embodiment of this invention. 本発明の第1の実施形態の情報処理装置の動作例を示す図である。It is a figure which shows the operation example of the information processing apparatus of the 1st Embodiment of this invention. 本発明の第1の実施形態の情報処理装置の動作例を示す図である。It is a figure which shows the operation example of the information processing apparatus of the 1st Embodiment of this invention. 本発明の第1の実施形態の情報処理装置の動作例を示す図である。It is a figure which shows the operation example of the information processing apparatus of the 1st Embodiment of this invention. 本発明の第1の実施形態の情報処理装置の動作例を示す図である。It is a figure which shows the operation example of the information processing apparatus of the 1st Embodiment of this invention. 本発明の第1の実施形態の情報処理装置の動作例を示す図である。It is a figure which shows the operation example of the information processing apparatus of the 1st Embodiment of this invention. 本発明の第2の実施形態の情報処理装置の構成例を示す図である。It is a figure which shows the structural example of the information processing apparatus of the 2nd Embodiment of this invention. 本発明の第2の実施形態の情報処理装置が用いるPackingデータの一例を示す図である。It is a figure which shows an example of Packing data which the information processing apparatus of the 2nd Embodiment of this invention uses. 本発明の第2の実施形態の第一送受信処理部Bの構成例を示す図である。It is a figure which shows the structural example of the 1st transmission/reception processing part B of the 2nd Embodiment of this invention. 本発明の第2の実施形態の第二送受信処理部Bの構成例を示す図である。It is a figure which shows the structural example of the 2nd transmission/reception processing part B of the 2nd Embodiment of this invention. 本発明の第2の実施形態の情報処理装置の動作例を示す図である。It is a figure which shows the operation example of the information processing apparatus of the 2nd Embodiment of this invention. 本発明の第2の実施形態の情報処理装置の動作例を示す図である。It is a figure which shows the operation example of the information processing apparatus of the 2nd Embodiment of this invention. 本発明の第2の実施形態の情報処理装置の動作例を示す図である。It is a figure which shows the operation example of the information processing apparatus of the 2nd Embodiment of this invention. 本発明の第2の実施形態の情報処理装置の動作例を示す図である。It is a figure which shows the operation example of the information processing apparatus of the 2nd Embodiment of this invention.

以下、本発明の実施の形態について、図面を参照して詳細に説明する。 Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.

[第1の実施の形態の構成例]
まず、本実施の形態の構成例について、図4〜図9を用いて説明する。本実施の形態では、パケットを処理するソフトウェアプログラム(後述する第一データ処理部20)と、パケットを処理するアクセラレータHW(後述する第二データ処理部30)と、が相互にメモリを介してパケットを通信する例を示す。これらは、パケットの通信にリングキューおよびmbuf形式を用いる。ただし、本発明はこれに限定されるものではない。
[Configuration example of the first embodiment]
First, a configuration example of this embodiment will be described with reference to FIGS. In the present embodiment, a software program that processes a packet (first data processing unit 20 described below) and an accelerator HW (a second data processing unit 30 described below) that processes a packet mutually exchange packets via a memory. The following shows an example of communicating. They use ring queues and mbuf formats to communicate packets. However, the present invention is not limited to this.

まず、図4(A)は本発明に係る情報処理装置の原理を説明する図である。図示された情報処理装置1はメモリ部10、バス部11、及び通信制御部12を備えている。ここで、通信制御部12はメモリ部10にバス部11を介して接続されている。バス部11は予め定められた通信単位(例えば、64バイト単位)で通信を行うことができる。図示された通信制御部12は、データ及び当該データの属性に関するメタデータのうちの少なくとも一方をメモリ部10に対して、バス部11を介して送受することができる。 First, FIG. 4A is a diagram for explaining the principle of the information processing apparatus according to the present invention. The illustrated information processing device 1 includes a memory unit 10, a bus unit 11, and a communication control unit 12. Here, the communication control unit 12 is connected to the memory unit 10 via the bus unit 11. The bus unit 11 can perform communication in a predetermined communication unit (for example, a unit of 64 bytes). The illustrated communication control unit 12 can send and receive at least one of data and metadata regarding the attribute of the data to and from the memory unit 10 via the bus unit 11.

ここで、通信制御部12は上記したデータ及びメタデータの少なくとも一方がバス部11の通信単位に合致しない場合、バス部11の通信単位に合致するような処理を行う。具体的には、通信単位に対して、データ及びメタデータの少なくとも一方が端数分となる端数データを複数のデータセット分にまとめるような処理が通信制御部12で行われる。通信単位に関し端数分となる前記通信すべきデータである端数データは、複数のデータ分まとめてメモリ部10の連続領域にバス11を介して格納される。この処理はデータ及びメタデータの少なくとも一方が通信単位未満の場合だけでなく、通信単位よりも大きい場合にも実行される。 Here, if at least one of the above-mentioned data and metadata does not match the communication unit of the bus unit 11, the communication control unit 12 performs processing that matches the communication unit of the bus unit 11. Specifically, for the communication unit, the communication control unit 12 performs a process of collecting fractional data in which at least one of data and metadata is a fractional data into a plurality of data sets. Fractional data, which is the data to be communicated, which is a fractional part of the communication unit, is collectively stored for a plurality of data in a continuous area of the memory unit 10 via the bus 11. This processing is executed not only when at least one of the data and the metadata is less than the communication unit, but also when it is greater than the communication unit.

このように、本発明に係る情報処理装置は、バス部11における通信単位に合致するように、データを処理する通信制御部12を有している。以下、本発明の原理に基づく情報処理装置をより具体的に説明する。 As described above, the information processing apparatus according to the present invention includes the communication control unit 12 that processes data so as to match the communication unit in the bus unit 11. Hereinafter, the information processing device based on the principle of the present invention will be described more specifically.

図4(B)は、本発明の第1の実施の形態に係る情報処理装置1の構成の一例を示す構成図である。図4(B)に例示する情報処理装置1は、メモリ部10と、バス部11と、第一データ処理部20と、第二データ処理部30と、第一送受信処理部40と、第二送受信処理部60と、を含んで構成される。図4(B)に示す構成要素の数や接続関係は一例である。 FIG. 4B is a configuration diagram showing an example of the configuration of the information processing device 1 according to the first embodiment of the present invention. The information processing device 1 illustrated in FIG. 4B includes a memory unit 10, a bus unit 11, a first data processing unit 20, a second data processing unit 30, a first transmission/reception processing unit 40, and a second data processing unit 40. The transmission/reception processing unit 60 is included. The number of components and the connection relationship shown in FIG. 4B are examples.

メモリ部10は、データを記憶するメモリであり、リングキューやmbuf構造体、パケットデータ等を記憶する。 The memory unit 10 is a memory that stores data, and stores a ring queue, an mbuf structure, packet data, and the like.

バス部11は、メモリ部10と、例えば第一データ処理部および第一送受信処理部40を実現するハードウェア(図示されない)や第二送受信処理部60を実現するハードウェア(図示されない)と、の間でデータ通信(リード、ライト)を仲介するバスである。バス部11による通信には以下のいずれかもしくは両方の制約が課せられる。
・通信するサイズはある最小単位サイズの倍数でなければならない。
・通信する開始アドレス(リードやライトの先頭アドレス)はある最小単位サイズの倍数でなければならない。
The bus unit 11 includes a memory unit 10, hardware (not shown) that realizes the first data processing unit and the first transmission/reception processing unit 40, and hardware (not shown) that realizes the second transmission/reception processing unit 60, for example. It is a bus that mediates data communication (read, write) between them. One or both of the following restrictions are imposed on the communication by the bus unit 11.
-The size of communication must be a multiple of a certain minimum unit size.
-The starting address for communication (start address of read or write) must be a multiple of a certain minimum unit size.

リードやライトの要求元からの要求が制約を満たさない場合、バス部11は制約を満たすようサイズや開始アドレスを調整して実際の通信を行う。本実施の形態の説明においては、バス部11による通信には上記2つの制約が課され、かつ最小単位サイズはいずれも64バイトであるとする。 When the request from the read or write request source does not satisfy the constraint, the bus unit 11 adjusts the size and the start address so as to satisfy the constraint and performs actual communication. In the description of the present embodiment, it is assumed that the above-mentioned two restrictions are imposed on the communication by the bus unit 11 and that the minimum unit size is 64 bytes.

第一データ処理部20は、パケットデータを処理する。第一データ処理部20は、メモリ部10にパケットデータを記憶させる際にmbuf形式を用いる。第一データ処理部20は、第二データ処理部30との間でリングキューを用いて、パケットを送受信する際、第一送受信処理部40に送受信を要求する。第一データ処理部20は、リングキュー(mbuf構造体ポインタ用)の生成や解放を第一送受信処理部40に要求する。第一送受信処理部40は、生成したリングキューに識別子としてキューIDを割り当て、後述する第二Enqueue処理部66および第二Dequeue処理部68に、リングキューのアドレスおよびキューIDの組を設定する。 The first data processing unit 20 processes packet data. The first data processing unit 20 uses the mbuf format when storing packet data in the memory unit 10. The first data processing unit 20 uses the ring queue with the second data processing unit 30 to request the first transmission/reception processing unit 40 for transmission/reception when transmitting/receiving a packet. The first data processing unit 20 requests the first transmission/reception processing unit 40 to generate and release the ring queue (for the mbuf structure pointer). The first transmission/reception processing unit 40 assigns a queue ID as an identifier to the generated ring queue, and sets a set of a ring queue address and a queue ID in a second Enqueue processing unit 66 and a second Dequeue processing unit 68 described later.

第二データ処理部30は、パケットデータを処理する。第二データ処理部30は、第一データ処理部20との間でリングキューを用いて、パケットを送受信する際、第二送受信処理部60に送受信を要求する。 The second data processing unit 30 processes packet data. The second data processing unit 30 uses the ring queue with the first data processing unit 20 to request the second transmission/reception processing unit 60 for transmission/reception when transmitting/receiving a packet.

第一送受信処理部40は、リングキューを用いてデータを第二送受信処理部60との間で通信する。その詳細は後述する。 The first transmission/reception processing unit 40 communicates data with the second transmission/reception processing unit 60 using the ring queue. The details will be described later.

第二送受信処理部60は、リングキューを用いてデータを第一送受信処理部40との間で通信する。その詳細は後述する。 The second transmission/reception processing unit 60 communicates data with the first transmission/reception processing unit 40 using the ring queue. The details will be described later.

第一送受信処理部40および第一データ処理部20は、例えば、CPU(図示されない)によって実行されるソフトウェアプログラムとして実現されてもよい。また、第二送受信処理部60および第二データ処理部30は、例えば、アクセラレータHW(図示されない)として実現されてもよい。当該アクセラレータHWとして、例えば、FPGA(Field-Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)、コプロセッサ、CPU、のいずれかを用いてもよい。 The first transmission/reception processing unit 40 and the first data processing unit 20 may be realized, for example, as a software program executed by a CPU (not shown). Further, the second transmission/reception processing unit 60 and the second data processing unit 30 may be realized as, for example, an accelerator HW (not shown). As the accelerator HW, for example, any one of FPGA (Field-Programmable Gate Array), ASIC (Application Specific Integrated Circuit), coprocessor, and CPU may be used.

本実施の形態の説明においては、第一送受信処理部40および第一データ処理部20はCPUおよびソフトウェアプログラムとして実現され、第二送受信処理部60および第二データ処理部30はFPGAとして実現されるものとする。 In the description of the present embodiment, the first transmission/reception processing unit 40 and the first data processing unit 20 are realized as a CPU and a software program, and the second transmission/reception processing unit 60 and the second data processing unit 30 are realized as an FPGA. I shall.

ここで、本実施の形態が行うPacking(パッキング)処理について説明する。本実施の形態では、第一データ処理部20および第二データ処理部30の間でリングキューおよびmbuf形式を用いて通信するデータのうちパケットデータに関し、バス部11の制約上その通信が非効率となる部分について、別の連続領域にコピーして通信を行う。これをPacking(パッキング)処理又は単にパッキングと呼ぶ。また、コピーされたデータをPackingデータと呼ぶ。第一データ処理部20および第二データ処理部30はパッキングのためのプログラムを含み、当該プログラムを実行することによってパッキングを行い、Packingデータを生成する。当該Packingデータはパケットデータの断片(データピース)である。即ち、Packingデータは通信単位に対して端数分となる端数データである。また、パケットデータが通信単位未満の場合だけでなく、通信パケットデータよりも大きい場合にも端数データは生成される。 Here, the packing processing performed by the present embodiment will be described. In the present embodiment, regarding the packet data among the data communicated between the first data processing unit 20 and the second data processing unit 30 using the ring queue and the mbuf format, the communication is inefficient due to the restriction of the bus unit 11. The part to be copied is copied to another continuous area for communication. This is called packing processing or simply packing. The copied data is called Packing data. The first data processing unit 20 and the second data processing unit 30 include a program for packing, and by executing the program, packing is performed and Packing data is generated. The Packing data is a packet data fragment. That is, the Packing data is fractional data that is a fraction of the communication unit. Fractional data is generated not only when the packet data is less than the communication unit but also when it is larger than the communication packet data.

本実施の形態では、複数パケットデータからのPackingデータがデータセットとして第一および第二データ処理部20および30の連続領域に格納され、バス部11の制約を満たす状態となった段階で通信を行う。これにより、特にメモリ部10および第二送受信処理部60の間において、バス部11で通信されるデータのうち有用なデータが通信される割合を向上させることができ、バス利用効率を改善することができる。 In the present embodiment, Packing data from a plurality of packet data is stored as a data set in a continuous area of the first and second data processing units 20 and 30, and communication is performed when the constraint of the bus unit 11 is satisfied. To do. This makes it possible to improve the ratio of useful data to be communicated among the data communicated by the bus unit 11, especially between the memory unit 10 and the second transmission/reception processing unit 60, and improve the bus utilization efficiency. You can

図3の例を用いてパッキングを説明する。図3(A)の場合、バス部11の制約を満たしているため、パッキングは不要である。図3(B)の場合、パケットデータサイズが最小単位サイズの倍数でないため、129バイト目〜136バイト目がパッキングの対象となり、Packingデータとしてコピーされる。図3(C)の場合、1バイト目〜56バイト目および121バイト目〜128バイト目がパッキングの対象となり、Packingデータとしてコピーされる。 Packing will be described using the example of FIG. In the case of FIG. 3A, the restriction of the bus unit 11 is satisfied, and thus packing is unnecessary. In the case of FIG. 3B, since the packet data size is not a multiple of the minimum unit size, the 129th byte to the 136th byte are targets for packing and are copied as Packing data. In the case of FIG. 3C, the 1st byte to the 56th byte and the 121st byte to the 128th byte are objects to be packed and are copied as Packing data.

図5を用いて、Packingデータの生成例を示す。あるパケットのPackingデータの最初の1バイトは、Packingデータの有無を示すフラグ(パケットデータ先頭側および末尾側で計2Bit)、およびPackingデータのサイズを示すdata_lenフィールド(フィールド長6Bit、値はバイト単位)から構成される。Packing対象が当該パケットデータの先頭側もしくは末尾側のいずれかについてのみ存在する場合、Packingデータの2バイト目以降は当該対象データとなる。Packing対象が当該パケットデータの先頭側および末尾側の両方について存在する場合、Packingデータの2バイト目は末尾側のデータサイズを示すdata_len2フィールドであり、3バイト目以降が当該対象データ(先頭側、末尾側、の順)となる。 An example of generating Packing data will be described with reference to FIG. The first 1 byte of the Packing data of a packet is a flag indicating the presence/absence of Packing data (total 2 bits at the beginning and end of the packet data), and a data_len field (field length 6 Bit, value is in bytes) indicating the size of the Packing data. ). When the packing target exists only on either the head side or the tail side of the packet data, the target data is the second and subsequent bytes of the packing data. When the packing target exists on both the head side and the tail side of the packet data, the second byte of the Packing data is the data_len2 field indicating the data size of the tail side, and the third and subsequent bytes are the target data (head side, The order of the end side).

例えば、図3(B)に対応するPackingデータの構成は図5(B)であり、data_lenは8となる。この場合、パケットデータの129バイト目〜136バイト目がdata[0]~data[7]に格納される。また、図3(C)に対応するPackingデータの構成は図5(C)であり、data_lenは56となり、data_len2は8となる。この場合、パケットデータの1バイト目〜56バイト目がdata[0]~data[55]に格納され、パケットデータの121バイト目〜128バイト目がdata[56]~data[63]に格納される。 For example, the configuration of Packing data corresponding to FIG. 3B is as shown in FIG. 5B, and data_len is 8. In this case, the 129th byte to the 136th byte of the packet data are stored in data[0] to data[7]. The configuration of Packing data corresponding to FIG. 3C is that of FIG. 5C, and data_len is 56 and data_len2 is 8. In this case, the 1st to 56th bytes of the packet data are stored in data[0] to data[55], and the 121st to 128th bytes of the packet data are stored in data[56] to data[63]. It

次に、本実施の形態における第一送受信処理部40の構成例について、図6を用いて説明する。図6に例示する第一送受信処理部40は、第一IF(インタフェース)部41と、第一管理部42と、第一Packing送信処理部43と、第一Enqueue処理部44と、第一Packing受信処理部45と、第一Dequeue処理部46と、を含んで構成される。 Next, a configuration example of the first transmission/reception processing unit 40 in the present embodiment will be described using FIG. The first transmission/reception processing unit 40 illustrated in FIG. 6 includes a first IF (interface) unit 41, a first management unit 42, a first Packing transmission processing unit 43, a first Enqueue processing unit 44, and a first Packing. The reception processing unit 45 and the first Dequeue processing unit 46 are included.

第一IF部41は、第一データ処理部20に対し、リングキューを操作するためのインタフェースを提供する。第一IF部41は、リングキューの生成、リングキューの削除、リングキューへのmbuf構造体ポインタのEnqueue、リングキューからのmbuf構造体ポインタのDequeue、を行うIFを提供する。 The first IF unit 41 provides the first data processing unit 20 with an interface for operating the ring queue. The first IF unit 41 provides an IF for generating a ring queue, deleting the ring queue, enqueueing an mbuf structure pointer to the ring queue, and dequeueing an mbuf structure pointer from the ring queue.

第一管理部42は、メモリ部10に記憶されるリングキューを管理する。第一管理部42は、リングキューの生成を要求されると、メモリ部10上にリングキュー用のメモリ領域を割り当て、初期化を行う。第一管理部42は、リングキューの削除を要求されると、当該リングキュー用に割り当てられていたメモリ領域を解放する。第一管理部42は、mbuf構造体ポインタ用のリングキューとともに、Packingデータ用のリングキューを生成および解放する。 The first management unit 42 manages the ring queue stored in the memory unit 10. When requested to generate a ring queue, the first management unit 42 allocates a ring queue memory area on the memory unit 10 and performs initialization. When the first management unit 42 is requested to delete the ring queue, the first management unit 42 releases the memory area allocated for the ring queue. The first management unit 42 creates and releases the ring queue for Packing data together with the ring queue for the mbuf structure pointer.

第一Packing送信処理部43は、mbuf構造体ポインタのEnqueue要求を受付け、パッキングを実施したあと、第一Enqueue処理部に(mbuf構造体ポインタやPackingデータ)のEnqueueを要求する。 The first Packing transmission processing unit 43 receives the Enqueue request of the mbuf structure pointer, performs packing, and then requests the Enqueue of (mbuf structure pointer or Packing data) to the first Enqueue processing unit.

第一Enqueue処理部44は、リングキューへのデータ(mbuf構造体ポインタやPackingデータ)のEnqueue処理を行う。 The first Enqueue processing unit 44 performs Enqueue processing of data (mbuf structure pointer and Packing data) to the ring queue.

第一Packing受信処理部45は、mbuf構造体ポインタのDequeue要求を受付け、第一Dequeue処理部46にデータ(mbuf構造体ポインタやPackingデータ)のDequeueを要求し、パッキングを実施したあと、Dequeueされたmbuf構造体ポインタを返す。 The first Packing reception processing unit 45 receives the Dequeue request of the mbuf structure pointer, requests the first Dequeue processing unit 46 to Dequeue the data (mbuf structure pointer or Packing data), performs packing, and then dequeues. Mbuf structure pointer.

第一Dequeue処理部46は、リングキューからのデータ(mbuf構造体ポインタやPackingデータ)のDequeue処理を行う。 The first Dequeue processing unit 46 performs Dequeue processing of data (mbuf structure pointer and Packing data) from the ring queue.

次に、本実施の形態における第二送受信処理部60の構成例について、図7を用いて説明する。図7に例示する第二送受信処理部60は、第二IF部61と、第二Packing送信処理部63と、第二パケットデータ送信部64と、第二mbuf送信部65と、第二Enqueue処理部66を備えている。更に、第二送受信処理部60は、第二Dequeue処理部68と、第二mbuf受信部69と、第二パケットデータ受信部70と、第二Packing受信処理部71と、メモリアクセス部73と、を含んで構成される。第二パケットデータ送信部64、第二mbuf送信部65、第二mbuf受信部69、および第二パケットデータ受信部70もメモリアクセス部73とのやり取りを行うが、図の煩雑化を避けるためその図示は省略している。 Next, a configuration example of the second transmission/reception processing unit 60 in the present embodiment will be described using FIG. 7. The second transmission/reception processing unit 60 illustrated in FIG. 7 includes a second IF unit 61, a second Packing transmission processing unit 63, a second packet data transmission unit 64, a second mbuf transmission unit 65, and a second Enqueue process. The unit 66 is provided. The second transmission/reception processing unit 60 further includes a second Dequeue processing unit 68, a second mbuf reception unit 69, a second packet data reception unit 70, a second Packing reception processing unit 71, a memory access unit 73, It is configured to include. The second packet data transmission unit 64, the second mbuf transmission unit 65, the second mbuf reception unit 69, and the second packet data reception unit 70 also exchange with the memory access unit 73, but in order to avoid complication of the figure, Illustration is omitted.

第二IF部61は、第二データ処理部30に対し、第一データ処理部20とパケットを送受信するためのインタフェースを提供する。第二IF部61は、第二データ処理部30から例えば以下の送信データを受け取り、第一データ処理部20に送信する。
・キューID
・mbuf構造体ポインタ
・mbuf構造体
・送信パケットデータ
The second IF unit 61 provides the second data processing unit 30 with an interface for transmitting and receiving packets to and from the first data processing unit 20. The second IF unit 61 receives, for example, the following transmission data from the second data processing unit 30 and transmits it to the first data processing unit 20.
・Queue ID
-Mbuf structure pointer-mbuf structure-send packet data

第二IF部61は、第一データ処理部20からの受信データとして例えば以下を第二データ処理部30に届ける。
・キューID
・mbuf構造体ポインタ
・mbuf構造体
・受信パケットデータ
The second IF unit 61 delivers the following as the received data from the first data processing unit 20 to the second data processing unit 30.
・Queue ID
-Mbuf structure pointer-mbuf structure-received packet data

第二Packing送信処理部63は、送信データを第二IF部61から受け取り、パッキングの要否を判定し、その結果に基づき第二パケットデータ送信部64および第二mbuf送信部65にデータの書き込み等の指示を送る。当該指示には、第二IF部61から受け取った送信データの全部または一部が含まれる。また、第二Packing送信処理部63は、Packingデータを生成し、第二Enqueue処理部66に生成したPackingデータのリングキューへのEnqueueを第二Enqueue処理部66に要求する。第二Packing送信処理部63は、送信するmbuf構造体ポインタのリングキューへのEnqueueを第二Enqueue処理部66に要求する。 The second Packing transmission processing unit 63 receives the transmission data from the second IF unit 61, determines the necessity of packing, and writes the data to the second packet data transmission unit 64 and the second mbuf transmission unit 65 based on the result. Etc. send instructions. The instruction includes all or part of the transmission data received from the second IF unit 61. Further, the second Packing transmission processing unit 63 generates Packing data, and requests the second Enqueue processing unit 66 to Enqueue the Packing data generated in the second Enqueue processing unit 66 to the ring queue. The second Packing transmission processing unit 63 requests the second Enqueue processing unit 66 to perform Enqueue to the ring queue of the mbuf structure pointer to be transmitted.

第二パケットデータ送信部64は、第二Packing送信処理部63からの指示に基づき、メモリアクセス部73を介してメモリ部10にパケットデータを書き込む。 The second packet data transmission unit 64 writes the packet data to the memory unit 10 via the memory access unit 73 based on the instruction from the second Packing transmission processing unit 63.

第二mbuf送信部65は、第二Packing送信処理部63からの指示に基づき、メモリアクセス部73を介してメモリ部10にmbuf構造体を書き込む。 The second mbuf transmission unit 65 writes the mbuf structure in the memory unit 10 via the memory access unit 73 based on the instruction from the second Packing transmission processing unit 63.

第二Enqueue処理部66は、リングキューへのデータ(mbuf構造体ポインタやPackingデータ)のEnqueue処理を行う。第二Enqueue処理部66は、メモリアクセス部73を介してメモリ部10に記憶されているリングキューの参照および更新をする。第二Enqueue処理部66は、バス部11の最小単位サイズの倍数を単位としてEnqueueを行う。第二Enqueue処理部66は、当該単位未満のデータを一時的に記憶するための内部バッファを持つ。第二Enqueue処理部66は、リングキュー毎にそのアドレスとキューIDの組を保持する(リングキューテーブル)。第二Enqueue処理部66は、第一データ処理部20に対しリングキューテーブルを操作するインタフェース(IF)を提供する。第二Enqueue処理部66は、mbuf構造体ポインタ用のリングキューのp_ring_ptrフィールドを参照し、当該リングキューおよびキューIDとPackingデータ用リングキューのアドレスの対応を記憶する。 The second Enqueue processing unit 66 performs Enqueue processing of data (mbuf structure pointer and Packing data) to the ring queue. The second Enqueue processing unit 66 refers to and updates the ring queue stored in the memory unit 10 via the memory access unit 73. The second Enqueue processing unit 66 performs Enqueue in units of multiples of the minimum unit size of the bus unit 11. The second Enqueue processing unit 66 has an internal buffer for temporarily storing data of less than the unit. The second Enqueue processing unit 66 holds a set of the address and the queue ID for each ring queue (ring queue table). The second Enqueue processing unit 66 provides the first data processing unit 20 with an interface (IF) for operating the ring queue table. The second Enqueue processing unit 66 refers to the p_ring_ptr field of the ring queue for the mbuf structure pointer, and stores the correspondence between the ring queue and the queue ID and the address of the Packing data ring queue.

第二Dequeue処理部68は、リングキューからのデータ(mbuf構造体ポインタやPackingデータ)のDequeue処理を行い、第二Packing受信処理部71にDequeueしたデータを渡す。その際、第二Dequeue処理部68は、使用されたリングキューのキューIDも渡す。第二Dequeue処理部68は、メモリアクセス部73を介してメモリ部10に記憶されているリングキューの参照および更新をする。第二Dequeue処理部68は、リングキュー毎にそのアドレスとキューIDの組を保持する(リングキューテーブル)。第二Dequeue処理部68は、第一データ処理部20に対しリングキューテーブルを操作するIFを提供する。第二Dequeue処理部68は、mbuf構造体ポインタ用のリングキューのp_ring_ptrフィールドを参照し、当該リングキューおよびキューIDとPackingデータ用リングキューのアドレスの対応を記憶する。 The second Dequeue processing unit 68 performs Dequeue processing of data (mbuf structure pointer and Packing data) from the ring queue, and passes the Dequeued data to the second Packing reception processing unit 71. At that time, the second Dequeue processing unit 68 also passes the queue ID of the used ring queue. The second Dequeue processing unit 68 refers to and updates the ring queue stored in the memory unit 10 via the memory access unit 73. The second Dequeue processing unit 68 holds a set of its address and queue ID for each ring queue (ring queue table). The second Dequeue processing unit 68 provides the first data processing unit 20 with an IF for operating the ring queue table. The second Dequeue processing unit 68 refers to the p_ring_ptr field of the ring queue for the mbuf structure pointer and stores the correspondence between the ring queue and the queue ID and the address of the Packing data ring queue.

第二Packing受信処理部71は、第二Dequeue処理部68からmbuf構造体ポインタPackingデータを受け取り、当該パケットの処理を行う。第二Packing受信処理部71は、パッキングの利用の有無を判定し、その結果に基づき第二mbuf受信部69および第二パケットデータ受信部70にデータの読み込み等の指示を送る。また、第二Packing受信処理部71は、Packingデータを用いたパケットデータの復元を行う。第二Packing受信処理部71は、キューID、mbuf構造体ポインタ、mbuf構造体、パケットデータを含む受信データを生成し、第二IF部61に通知する。 The second Packing reception processing unit 71 receives the mbuf structure pointer Packing data from the second Dequeue processing unit 68, and processes the packet. The second Packing reception processing unit 71 determines whether or not the packing is used, and based on the result, sends an instruction such as data reading to the second mbuf receiving unit 69 and the second packet data receiving unit 70. Further, the second Packing reception processing unit 71 restores the packet data using the Packing data. The second Packing reception processing unit 71 generates reception data including the queue ID, the mbuf structure pointer, the mbuf structure, and the packet data, and notifies the second IF unit 61 of the reception data.

第二mbuf受信部69は、第二Packing受信処理部71からの指示に基づき、指定されたmbuf構造体ポインタを使用して、メモリアクセス部73を介してメモリ部10からmbuf構造体を読み込む。 The second mbuf reception unit 69 reads the mbuf structure from the memory unit 10 via the memory access unit 73 using the designated mbuf structure pointer based on the instruction from the second Packing reception processing unit 71.

第二パケットデータ受信部70は、第二Packing受信処理部71からの指示に基づき、メモリアクセス部73を介してメモリ部10に記憶されたパケットデータを読み込む。 The second packet data receiving unit 70 reads the packet data stored in the memory unit 10 via the memory access unit 73 based on the instruction from the second Packing reception processing unit 71.

メモリアクセス部73は、バス部11を介しメモリ部10からの読み込みおよび書き込みを行う。メモリアクセス部73は、そのためのIFを提供する。 The memory access unit 73 performs reading and writing from the memory unit 10 via the bus unit 11. The memory access unit 73 provides an IF for that purpose.

以上で説明した第二データ処理部30と第二送受信処理部60との間、および第二送受信処理部60内の各部間の接続は、例えば第二送受信処理部60を実現するHW(例えばFPGA)内のメモリを用いたFIFOにより行われてもよい。その場合、例えば、第二Packing受信処理部71と第二パケットデータ受信部70との間にFIFOが設けられ、第二Packing受信処理部71は指示データをFIFOに書き込むことで第二パケットデータ受信部70に指示を行い、第二パケットデータ受信部70は当該FIFOから読み込むことで指示を受け取る。また、第二パケットデータ受信部70は読み込んだパケットデータをFIFOに書き込み、第二Packing受信処理部71は当該FIFOから読み込むことでパケットデータを受け取る。 The connection between the second data processing unit 30 and the second transmission/reception processing unit 60, and between the respective units in the second transmission/reception processing unit 60 described above is, for example, an HW (eg, FPGA) that realizes the second transmission/reception processing unit 60. ) May be performed by the FIFO using the memory. In that case, for example, a FIFO is provided between the second Packing reception processing unit 71 and the second packet data receiving unit 70, and the second Packing reception processing unit 71 writes the instruction data to the FIFO to receive the second packet data reception. The unit 70 is instructed, and the second packet data receiving unit 70 receives the instruction by reading from the FIFO. Further, the second packet data receiving unit 70 writes the read packet data in the FIFO, and the second Packing reception processing unit 71 receives the packet data by reading from the FIFO.

また、第二Dequeue処理部68は、リングキューからのDequeueを第二Packing受信処理部71からのDequeue要求前にあらかじめ行っておいてもよい。その場合、Dequeueされたデータは、第二Packing受信処理部71との間に設けられたFIFOに蓄積される。この場合、第二Packing受信処理部71が第二Dequeue処理部68にDequeue要求するということは、第二Packing受信処理部71が当該FIFOからデータを読み込むことを意味する。 Further, the second Dequeue processing unit 68 may perform the Dequeue from the ring queue in advance before the Dequeue request from the second Packing reception processing unit 71. In that case, the dequeued data is stored in the FIFO provided between the Dequeued data and the second Packing reception processing unit 71. In this case, the fact that the second Packing reception processing unit 71 makes a Dequeue request to the second Dequeue processing unit 68 means that the second Packing reception processing unit 71 reads data from the FIFO.

本実施の形態が使用するリングキューの構成を図8に、mbuf構造体の構成を図9に示す。これらは、説明を簡単にするためにDPDKで使用されるリングキューおよびmbuf構造体を簡易化した上で、一部拡張したものである。 FIG. 8 shows the structure of the ring queue used in this embodiment, and FIG. 9 shows the structure of the mbuf structure. These are a partial extension of the ring queue and mbuf structure used by DPDK for the sake of simplicity.

図8に図示される、本実施の形態が使用するリングキューは主に3つの部分から構成される。一つ目は、最初の64バイトの部分であり、主にリングキューにEnqueueを行うProducerによって更新される。二つ目は、次の64バイトにあたる部分であり、主にリングキューからDequeueを行うConsumerによって更新される。3つ目は、先頭から128バイト目以降にあたる部分であり、リングキューにEnqueueおよびDequeueされるデータ(8バイト)を記憶するFIFO用配列である(図8のring[0]、ring[1]等)。FIFO用配列は、Producerによって更新され、Consumerによって参照される。以下では、Producerに関連するフィールド等にはpが付され、Consumerに関連するフィールド等にはcが付される。 The ring queue used in the present embodiment shown in FIG. 8 is mainly composed of three parts. The first is the first 64 bytes, which is updated by the Producer that mainly enqueues the ring queue. The second is the portion corresponding to the next 64 bytes, which is mainly updated by the Consumer that performs Dequeue from the ring queue. The third part is the part from the beginning to the 128th byte onward, which is a FIFO array that stores data (8 bytes) to be enqueued and dequeued in the ring queue (ring[0], ring[1] in FIG. 8). etc). The array for FIFO is updated by the Producer and referenced by the Consumer. In the following, p is attached to fields related to Producer and c is attached to fields related to Consumer.

リングキューの最初の16バイトは、当該リングキューの名前を記憶するnameフィールドである。p_sizeフィールドおよびc_sizeフィールドは、FIFO用配列のサイズ(8バイト単位、すなわちエントリ数)である。p_ring_ptrおよびc_ring_ptrは、当該リングキューがmbuf構造体ポインタ用であった場合に、関連するPackingデータ用リングキューのアドレスが設定される(DPDKには存在しない)。p_flagおよびc_flagはリングキューの利用に関するフラグを格納するフィールドである。これらは、リングキュー生成時に値が設定され、以降更新されることはない。 The first 16 bytes of the ring queue is a name field that stores the name of the ring queue. The p_size field and the c_size field are the size of the FIFO array (8-byte unit, that is, the number of entries). In p_ring_ptr and c_ring_ptr, when the ring queue is for the mbuf structure pointer, the address of the related ring queue for Packing data is set (does not exist in DPDK). p_flag and c_flag are fields that store flags related to the use of the ring queue. The values of these are set when the ring queue is created and are not updated thereafter.

p_indexフィールドは、producer indexであり、FIFO用配列において、次にEnqueueされるデータ(8バイト)を格納すべき配列インデックスを示す。初期値は0であり、producerによってデータがEnqueueされる度に更新される。 The p_index field is a producer index and indicates the array index in which the data (8 bytes) to be enqueued next in the FIFO array should be stored. The initial value is 0, and it is updated every time data is enqueued by the producer.

c_indexフィールドは、consumer indexであり、FIFO用配列において、次にDequeueされるデータ(8バイト)を取り出すべき配列インデックスを示す。初期値は0であり、consumerによってデータがDequeueされる度に更新される。 The c_index field is a consumer index and indicates an array index from which data (8 bytes) to be dequeued next in the array for FIFO is to be taken out. The initial value is 0, and it is updated every time data is dequeued by the consumer.

図8においてグレーで示した部分は、パディングである。 The part shown in gray in FIG. 8 is padding.

図9に示す、本実施の形態が使用するmbuf構造体の先頭16バイトは、当該mbuf構造体と対を成すパケットバッファの論理アドレスおよび物理アドレスを保持するbuf_addrフィールドおよびbuf_physaddrフィールドで構成される。 The first 16 bytes of the mbuf structure used in the present embodiment shown in FIG. 9 are composed of a buf_addr field and a buf_physaddr field which hold a logical address and a physical address of a packet buffer which makes a pair with the mbuf structure.

buf_lenフィールドは、当該パケットバッファのサイズ(バイト単位)を示す。data_offフィールドは、当該パケットバッファ内でのパケットデータ開始位置(バイト単位)を示す。data_lenフィールドは、当該パケットバッファ内のパケットデータのサイズ(バイト単位)を示す。 The buf_len field indicates the size (byte unit) of the packet buffer. The data_off field indicates a packet data start position (byte unit) in the packet buffer. The data_len field indicates the size (byte unit) of the packet data in the packet buffer.

mbuf構造体は、Linked Listを構成することが出来る。例えば、一つのパケットバッファで記憶しきれない大きなパケットを記憶する場合、複数のmbuf構造体およびパケットバッファを用い、それらをLinked Listで繋げて当該パケットを記憶する。pkt_lenフィールドは、そのようなパケットの全体のサイズ(バイト単位)を示す。また、nextフィールドはLinked Listにおける次のmbuf構造体へのポインタを示す。 The mbuf structure can compose a Linked List. For example, when storing a large packet that cannot be stored in one packet buffer, a plurality of mbuf structures and packet buffers are used, and they are linked by a Linked List to store the packet. The pkt_len field indicates the total size (in bytes) of such a packet. The next field indicates a pointer to the next mbuf structure in the Linked List.

[第1の実施の形態の動作例]
次に、本実施の形態の構成例として図4〜図9に例示した情報処理装置1における以下の各動作(A)、(B)、(C)、(D)、(E)、および(F)について、その一例を、図面を参照しながら順に詳細に説明する。
(A)リングキュー生成処理
(B)第一データ処理部20によるパケット送信処理
(C)第二データ処理部30によるパケット受信処理
(D)第二データ処理部30によるパケット送信処理
(E)第一データ処理部20によるパケット受信処理
(F)リングキュー解放処理
[Operation example of the first embodiment]
Next, the following operations (A), (B), (C), (D), (E), and (in the information processing apparatus 1 illustrated in FIGS. 4 to 9 as a configuration example of the present embodiment: Regarding F), one example thereof will be described in detail in order with reference to the drawings.
(A) Ring queue generation process (B) Packet transmission process by the first data processing unit 20 (C) Packet reception process by the second data processing unit 30 (D) Packet transmission process by the second data processing unit 30 (E) Packet reception process (F) Ring queue release process by one data processing unit 20

<(A)リングキュー生成処理>
図10のフローチャートを用いて、情報処理装置1(図4)のリングキュー生成処理が説明される。このリングキュー生成処理はリングキューを生成する処理である。当該処理は、例えば、第一データ処理部20の動作開始時に実行される。第一データ処理部20は、当該処理を、第二データ処理部30との間で使用するmbuf構造体ポインタ用のリングキュー毎に実行し、リングキューを生成する。
<(A) Ring queue generation process>
The ring queue generation process of the information processing device 1 (FIG. 4) is described with reference to the flowchart of FIG. This ring queue generation process is a process of generating a ring queue. The processing is executed, for example, when the operation of the first data processing unit 20 is started. The first data processing unit 20 executes the processing for each ring queue for the mbuf structure pointer used with the second data processing unit 30 to generate a ring queue.

第一データ処理部20は、図6に示された第一送受信処理部40の第一IF部41にリングキューの生成を要求する(ステップS100)。その際、パラメタとして、リングキューの名前とサイズを渡す。当該要求は、第一管理部42に転送される。 The first data processing unit 20 requests the first IF unit 41 of the first transmission/reception processing unit 40 shown in FIG. 6 to generate a ring queue (step S100). At that time, the name and size of the ring queue are passed as parameters. The request is transferred to the first management unit 42.

第一管理部42は、生成するリングキュー用メモリ領域をメモリ部10(図4)上に割り当てるとともに、各フィールドを以下のように初期化する(ステップS101)。本リングキューはmbuf構造体ポインタ用である。
・name: パラメタで与えられた名前
・p_sizeおよびc_size: パラメタで与えられたサイズ
・その他のフィールド:0
The first management unit 42 allocates the ring queue memory area to be generated on the memory unit 10 (FIG. 4) and initializes each field as follows (step S101). This ring queue is for the mbuf structure pointer.
・Name: Name given by parameter ・p_size and c_size: Size given by parameter ・Other fields: 0

第一管理部42は、Packingデータのためのリングキュー用メモリ領域をメモリ部10上に割り当てるとともに各フィールドを初期化する(ステップS102)。第一管理部42は、Packingデータのためのリングキューのサイズを例えば自動で決定する。 The first management unit 42 allocates a ring queue memory area for Packing data on the memory unit 10 and initializes each field (step S102). The first management unit 42 automatically determines the size of the ring queue for Packing data, for example.

この場合、第一管理部42は、当該サイズをステップS100で与えられたサイズに所定の数値(例えばバス部11の最小単位サイズ)を乗じた値を用いてもよい。もしくは、第一管理部42は、第一IF部41を通じデータ処理部20からPackingデータ用リングキューのサイズを受け取ってもよい。第一管理部42は、Packingデータのためのリングキューの名前を例えば自動で決定する。第一管理部42は、Packingデータ用リングキューの名前を、ステップS100で与えられた名前に所定の文字列(たとえば“_P”)を追加した文字列を名前として使用してよい。第一管理部42は、ステップS101で初期化したmbuf構造体ポインタ用リングキューのp_ring_ptrおよびc_ring_ptrフィールドに本ステップで割り当てたリングキューのアドレスを設定する。 In this case, the first management unit 42 may use a value obtained by multiplying the size given in step S100 by a predetermined numerical value (for example, the minimum unit size of the bus unit 11). Alternatively, the first management unit 42 may receive the size of the Packing data ring queue from the data processing unit 20 via the first IF unit 41. The first management unit 42 automatically determines the name of the ring queue for Packing data, for example. The first management unit 42 may use the name of the Packing data ring queue as a name by adding a predetermined character string (for example, “_P”) to the name given in step S100. The first management unit 42 sets the address of the ring queue assigned in this step in the p_ring_ptr and c_ring_ptr fields of the ring queue for the mbuf structure pointer initialized in step S101.

第一管理部42は、ステップS101で生成したリングキューのアドレスを、第一IF部41を介して第一データ処理部20に通知する(ステップS103)。 The first management unit 42 notifies the address of the ring queue generated in step S101 to the first data processing unit 20 via the first IF unit 41 (step S103).

図4に示された第一データ処理部20は、図7に示された第二送受信処理部60の第二Enqueue処理部66(第二データ処理部30が送信し第一データ処理部20が受信する場合)もしくは第二Dequeue処理部68(第一データ処理部20が送信し第二データ処理部30が受信する場合)に、ステップS103で得られたリングキューのアドレスを設定する(ステップS104)。 The first data processing unit 20 shown in FIG. 4 is the second Enqueue processing unit 66 of the second transmission/reception processing unit 60 shown in FIG. (When receiving) or the second Dequeue processing unit 68 (when the first data processing unit 20 transmits and the second data processing unit 30 receives), the address of the ring queue obtained in step S103 is set (step S104). ).

<(B)第一データ処理部20によるパケット送信処理>
図11および図12のフローチャートを用いて、情報処理装置1の第一データ処理部20が第二データ処理部30に対しパケットを送信する処理について説明する。当該処理は、例えば、第一データ処理部20がパケットの処理の一部を第二データ処理部30にオフロードする際に実行される。
<(B) Packet Transmission Process by First Data Processing Unit 20>
A process in which the first data processing unit 20 of the information processing device 1 transmits a packet to the second data processing unit 30 will be described with reference to the flowcharts of FIGS. 11 and 12. The process is executed, for example, when the first data processing unit 20 offloads a part of the packet processing to the second data processing unit 30.

第一データ処理部20は、リングキューのアドレス(mbuf構造体ポインタ用)およびmbuf構造体ポインタをパラメタとして、第一IF部41にEnqueueを要求する(ステップS110)。 The first data processing unit 20 requests Enqueue from the first IF unit 41 using the address of the ring queue (for mbuf structure pointer) and the mbuf structure pointer as parameters (step S110).

当該要求は第一IF部41(図6)によって第一Packing送信処理部43に転送され、第一Packing送信処理部43は、当該パケットに関しパッキングが必要か否かを判定する(ステップS111)。第一Packing送信処理部43はmbuf構造体ポインタを元にmbuf構造体のbuf_addr、data_off、data_lenを参照し、パケットバッファ内でのパケットデータの位置とサイズを確認する。第一Packing送信処理部43は、その位置およびサイズがバス部11の制約を満たさない場合にパッキングが必要と判定し、満たす場合に不要と判定する。パッキングが不要と判定された場合は、ステップS114に移行する。 The request is transferred by the first IF unit 41 (FIG. 6) to the first Packing transmission processing unit 43, and the first Packing transmission processing unit 43 determines whether or not packing is required for the packet (step S111). The first Packing transmission processing unit 43 refers to buf_addr, data_off, and data_len of the mbuf structure based on the mbuf structure pointer, and confirms the position and size of the packet data in the packet buffer. The first Packing transmission processing unit 43 determines that packing is necessary when the position and size do not satisfy the constraints of the bus unit 11, and determines that packing is unnecessary when the position and size satisfy the constraint. If it is determined that packing is unnecessary, the process proceeds to step S114.

第一Packing送信処理部43は、上述したパッキングに従い、Packingデータを生成する(ステップS112)。 The first Packing transmission processing unit 43 generates Packing data according to the packing described above (step S112).

第一Packing送信処理部43は、リングキューのp_ring_ptrフィールドを参照してPackingデータ用のリングキューのアドレスを取得し、当該アドレスとステップS112で生成したPackingデータをパラメタとして、第一Enqueue処理部44にEnqueue処理を要求する(ステップS113)。第一Enqueue処理部44によるEnqueue処理の詳細は後述する。リングキューへのEnqueueは8バイト単位で行う。そのため、第一Packing送信処理部43は、リングキューへのEnqueueに際し8B未満のPackingデータが生じた場合、当該データのEnqueueを保留し、次もしくはそれ以降に処理するパケットに関するPackingデータとあわせて8バイト以上となったタイミングでEnqueueを行う。 The first Packing transmission processing unit 43 acquires the address of the ring queue for Packing data by referring to the p_ring_ptr field of the ring queue, and uses the address and the Packing data generated in step S112 as parameters to set the first Enqueue processing unit 44. To request the Enqueue process (step S113). Details of the Enqueue process by the first Enqueue processing unit 44 will be described later. Enqueue to the ring queue is performed in 8-byte units. Therefore, the first Packing transmission processing unit 43, when Packing data of less than 8B occurs during Enqueue to the ring queue, suspends the Enqueue of the data and puts it together with the Packing data regarding the packet to be processed next or thereafter. Enqueue is performed when the number of bytes is exceeded.

第一Packing送信処理部43は、mbuf構造体ポインタ用のリングキューのアドレスおよびmbuf構造体ポインタをパラメタとして、第一Enqueue処理部44にEnqueue処理を要求する(ステップS114)。 The first Packing transmission processing unit 43 requests Enqueue processing from the first Enqueue processing unit 44 using the address of the ring queue for the mbuf structure pointer and the mbuf structure pointer as parameters (step S114).

次に、第一Enqueue処理部44が、リングキューにデータをEnqueueする処理について、図12を用いて説明する。第一Enqueue処理部44は、リングキューのアドレスと、Enqueueするデータ(8バイトの倍数のサイズ)と、当該データのサイズ(8バイト単位)と、をパラメタとして受け取る。 Next, the process in which the first Enqueue processing unit 44 enqueues data in the ring queue will be described with reference to FIG. The first Enqueue processing unit 44 receives the address of the ring queue, the data to be enqueued (size of multiple of 8 bytes), and the size of the data (8 byte unit) as parameters.

第一Enqueue処理部44は、Enqueue先のリングキューがFullか否かを判定する(ステップS120)。第一Enqueue処理部44は、以下の条件が満たされた場合にリングキューがFullであると判定する。第一Enqueue処理部44は、リングキューがFullであると判定した場合、処理を終了し失敗応答を返す。もしくは、第一Enqueue処理部44は、リングキューがFullでない状態になるまで、ステップS120を繰り返し実行してもよい。 The first Enqueue processing unit 44 determines whether the Enqueue destination ring queue is Full (step S120). The first Enqueue processing unit 44 determines that the ring queue is Full when the following conditions are satisfied. When determining that the ring queue is Full, the first Enqueue processing unit 44 ends the processing and returns a failure response. Alternatively, the first Enqueue processing unit 44 may repeatedly execute step S120 until the ring queue becomes a state other than Full.

p_index - c_index + Enqueueするデータのサイズ(8バイト単位) ≦ p_size (p_indexがc_index以上の場合)。 p_index-c_index + size of data to be enqueued (in units of 8 bytes) ≤ p_size (when p_index is greater than or equal to c_index).

p_index + 2^32 - c_index + Enqueueするデータのサイズ(8バイト単位) ≦ p_size (p_indexがc_index未満場合)。 p_index + 2^32-c_index + Enqueue data size (8 bytes unit) ≤ p_size (when p_index is less than c_index).

第一Enqueue処理部44は、FIFO用配列であるringの配列インデックスp_indexの位置(およびそれ以降)にEnqueueするデータを格納する(ステップS121)。 The first Enqueue processing unit 44 stores the data to be enqueued at the position (and after) of the array index p_index of ring which is the array for FIFO (step S121).

第一Enqueue処理部44は、p_indexにEnqueueするデータのサイズ(8バイト単位)を加算する(ステップS122)。 The first Enqueue processing unit 44 adds the size of the data to be enqueued (in units of 8 bytes) to p_index (step S122).

<(C)第二データ処理部30によるパケット受信処理>
図13および図14のフローチャートを用いて、情報処理装置1の第二データ処理部30(図4)が第一データ処理部20からパケットを受信する処理について説明する。当該処理は、例えば、第一データ処理部20がパケットの処理の一部を第二データ処理部30にオフロードする際に実行される。
<(C) Packet reception process by the second data processing unit 30>
A process in which the second data processing unit 30 (FIG. 4) of the information processing device 1 receives a packet from the first data processing unit 20 will be described with reference to the flowcharts of FIGS. 13 and 14. The process is executed, for example, when the first data processing unit 20 offloads a part of the packet processing to the second data processing unit 30.

第二Packing受信処理部71(図7)は、mbuf構造体ポインタのDequeueを第二Dequeue処理部68に要求し、第二Dequeue処理部68はDequeueしたmbuf構造体ポインタをキューIDとともに返す(ステップS130)。このときの第二Dequeue処理部68の動作については後述する。上述したように第二Packing受信処理部71によるDequeueの要求は、第二Packing受信処理部71および第二Dequeue処理部68間に設けられたFIFOへの読み込み要求によって実現されてもよい。第二Dequeue処理部68は継続的にDequeue処理を行っておき、Dequeueされたデータを当該FIFOに書き込んでおいてもよい。 The second Packing reception processing unit 71 (FIG. 7) requests Dequeue of the mbuf structure pointer to the second Dequeue processing unit 68, and the second Dequeue processing unit 68 returns the dequeued mbuf structure pointer together with the queue ID (step S130). The operation of the second Dequeue processing unit 68 at this time will be described later. As described above, the Dequeue request by the second Packing reception processing unit 71 may be realized by a read request to the FIFO provided between the second Packing reception processing unit 71 and the second Dequeue processing unit 68. The second Dequeue processing unit 68 may continuously perform the Dequeue processing and write the dequeued data in the FIFO.

第二Packing受信処理部71は、ステップS130で得られたmbuf構造体ポインタを元に、第二mbuf受信部69にmbuf構造体の読み込みを指示し、第二mbuf受信部69はメモリアクセス部73を介してメモリ部10からmbuf構造体を読み込む(ステップS131)。 The second Packing reception processing unit 71 instructs the second mbuf receiving unit 69 to read the mbuf structure based on the mbuf structure pointer obtained in step S130, and the second mbuf receiving unit 69 causes the memory access unit 73 to read. The mbuf structure is read from the memory unit 10 via (step S131).

第二Packing受信処理部71は、当該パケットに関しパッキングが利用されているか否かを判定する(ステップS132)。第二Packing受信処理部71は、ステップS111における第一Packing送信処理部43と同様の方法で判定を行う。すなわち、第二Packing受信処理部71はmbuf構造体のbuf_addr、data_off、data_lenを参照し、パケットバッファ内でのパケットデータの位置とサイズを確認する。第二Packing受信処理部71は、その位置およびサイズがバス部11の制約を満たす場合にパッキングが利用されていないと判定し、満たさない場合に利用されていると判定する。パッキングが利用されている場合、第二Packing受信処理部71は、第二パケットデータ受信部70にパケットデータ(バス部11の制約を満たす部分のみ)の読み込みを指示する(ステップS133に移行)。パッキングが利用されていない場合、第二Packing受信処理部71は、第二パケットデータ受信部70にパケットデータ全体の読み込みを指示する(ステップS136に移行)。 The second Packing reception processing unit 71 determines whether packing is used for the packet (step S132). The second Packing reception processing unit 71 makes a determination by the same method as the first Packing transmission processing unit 43 in step S111. That is, the second Packing reception processing unit 71 refers to buf_addr, data_off, and data_len of the mbuf structure to confirm the position and size of the packet data in the packet buffer. The second Packing reception processing unit 71 determines that the packing is not used when the position and the size satisfy the constraint of the bus unit 11, and determines that the packing is used when the position and the size do not satisfy the constraint. When the packing is used, the second Packing reception processing unit 71 instructs the second packet data receiving unit 70 to read the packet data (only the portion satisfying the constraint of the bus unit 11) (shift to step S133). When the packing is not used, the second Packing reception processing unit 71 instructs the second packet data receiving unit 70 to read the entire packet data (shift to step S136).

第二パケットデータ受信部70は、メモリアクセス部73を介してメモリ部10からパケットデータの指定された部分を読み込む(ステップS133、ステップS136)。 The second packet data receiving unit 70 reads the designated portion of the packet data from the memory unit 10 via the memory access unit 73 (steps S133 and S136).

第二Packing受信処理部71は、第二Dequeue処理部68にPackingデータのDequeueを要求し、Packingデータを取得する(ステップS134)。なお、PackingデータのDequeueはバス部11の最小単位サイズの倍数を単位として行われる。第二Packing受信処理部71はDequeueされたPackingデータを内部的に記憶し、必要になった際に都度参照し、必要な分だけ消費する。本ステップにおいて、第二Packing受信処理部71は、内部的に記憶されたPackingデータが不足となった場合に、PackingデータのDequeueを第二Dequeue処理部68に要求する。 The second Packing reception processing unit 71 requests the second Dequeue processing unit 68 to Dequeue the Packing data, and acquires the Packing data (step S134). Dequeue of Packing data is performed in units of multiples of the minimum unit size of the bus unit 11. The second Packing reception processing unit 71 internally stores the dequeued Packing data, refers to it whenever necessary, and consumes only the necessary amount. In this step, the second Packing reception processing unit 71 requests the second Dequeue processing unit 68 to Dequeue the Packing data when the internally stored Packing data becomes insufficient.

第二Packing受信処理部71は、ステップS133で読み込んだパケットデータ(バス部11の制約を満たす部分のみ)に、ステップS134で得られたPackingデータに含まれるパケットデータの一部(先頭側、末尾側、の一方または両方)を追加し、パケットデータを復元する(ステップS135)。 The second Packing reception processing unit 71 uses the packet data read in Step S133 (only the portion that satisfies the constraint of the bus unit 11) to include part of the packet data included in the Packing data obtained in Step S134 (start side, end side). Side, one or both) and packet data is restored (step S135).

第二パケットデータ受信部70は、キューID、mbuf構造体ポインタ、mbuf構造体、パケットデータを含む受信データを作成し、第二IF部61を介して当該受信データを第二データ処理部30(図4)に通知する(ステップS137)。 The second packet data receiving unit 70 creates reception data including a queue ID, an mbuf structure pointer, an mbuf structure, and packet data, and processes the reception data via the second IF unit 61 to the second data processing unit 30 ( (Fig. 4) is notified (step S137).

次に、図7に示された第二Dequeue処理部68が、リングキューからデータをDequeueする処理について、図14を用いて説明する。第二Dequeue処理部68は、例えば、リングキューテーブルに登録されているリングキュー(mbuf構造体ポインタ用)、およびそれらに関連付けられたPackingデータ用リングキュー、それぞれについて以下の動作を行う。 Next, the process by which the second Dequeue processing unit 68 shown in FIG. 7 dequeues data from the ring queue will be described with reference to FIG. The second Dequeue processing unit 68 performs the following operation for each of the ring queues (for mbuf structure pointers) registered in the ring queue table and the Packing data ring queues associated with them.

第二Dequeue処理部68は、Dequeue元のリングキューにデータがあるか否かを判定する(ステップS140)。第二Dequeue処理部68は、リングキューのp_indexとc_indexが等しくない場合にデータがあると判定し、等しい場合にデータがない(キューが空)であると判定する。第二Dequeue処理部68は、リングキューにデータがない場合、処理を終了し失敗応答を返す。もしくは、第二Dequeue処理部68は、リングキューが空でなくなるまでステップS140を繰り返し実行してもよい。 The second Dequeue processing unit 68 determines whether or not there is data in the ring queue of the Dequeue source (step S140). The second Dequeue processing unit 68 determines that there is data when p_index and c_index of the ring queue are not equal, and determines that there is no data (the queue is empty) when they are equal. If there is no data in the ring queue, the second Dequeue processing unit 68 ends the processing and returns a failure response. Alternatively, the second Dequeue processing unit 68 may repeatedly execute step S140 until the ring queue is not empty.

第二Dequeue処理部68は、FIFO用配列に格納されているデータのサイズを確認し、バス部11の最小単位サイズ以上か否かを判定する(ステップS141)。FIFO用配列に格納されているデータのサイズ(バイト単位)は以下により計算する。
(p_index-c_index)*8 (p_indexがc_index以上の場合)
(c_index-p_index)*8 (p_indexがc_index未満の場合)
The second Dequeue processing unit 68 confirms the size of the data stored in the FIFO array and determines whether the size is equal to or larger than the minimum unit size of the bus unit 11 (step S141). The size (in bytes) of the data stored in the FIFO array is calculated as follows.
(P_index-c_index) *8 (when p_index is greater than or equal to c_index)
(C_index-p_index) *8 (when p_index is less than c_index)

第二Dequeue処理部68は、格納されているデータのサイズがバス部11の最小単位サイズ未満である場合、処理を終了し失敗応答を返す。もしくは、第二Dequeue処理部68は、条件が満たされるまでステップS141を繰り返し実行してもよい。 The second Dequeue processing unit 68 ends the process and returns a failure response when the size of the stored data is less than the minimum unit size of the bus unit 11. Alternatively, the second Dequeue processing unit 68 may repeatedly execute step S141 until the condition is satisfied.

第二Dequeue処理部68は、FIFO用配列であるringの配列インデックスc_indexの位置に格納されているデータ(バス部11の最小単位サイズの整数倍)を、メモリアクセス部73を介してメモリ部10から読み込む(ステップS142)。 The second Dequeue processing unit 68 transfers the data (an integer multiple of the minimum unit size of the bus unit 11) stored at the position of the array index c_index of ring, which is the FIFO array, via the memory access unit 73. Is read from (step S142).

第二Dequeue処理部68は、取り出したデータのサイズを8で割った値をc_indexに加算し、メモリアクセス部73を介してメモリ部10上のリングキューに書き込む(ステップS143)。 The second Dequeue processing unit 68 adds a value obtained by dividing the size of the extracted data by 8 to c_index and writes the value in the ring queue on the memory unit 10 via the memory access unit 73 (step S143).

<(D)第二データ処理部30によるパケット送信処理>
図15および図16のフローチャートを用いて、情報処理装置1の第二データ処理部30(図4)が第一データ処理部20に対しパケットを送信する処理について説明する。当該処理は、例えば、第二データ処理部30がオフロード処理後のパケット部を第一データ処理部20に送信する際に実行される。
<(D) Packet transmission process by second data processing unit 30>
A process in which the second data processing unit 30 (FIG. 4) of the information processing device 1 transmits a packet to the first data processing unit 20 will be described with reference to the flowcharts of FIGS. 15 and 16. The process is executed, for example, when the second data processing unit 30 transmits the packet part after the offload process to the first data processing unit 20.

第二データ処理部30は、第二IF部61に対しパケットの送信を要求する(ステップS150)。その際、第二データ処理部30は、キューID、mbuf構造体ポインタ、mbuf構造体、パケットデータを送信データとして渡す。 The second data processing unit 30 requests the second IF unit 61 to transmit a packet (step S150). At that time, the second data processing unit 30 passes the queue ID, the mbuf structure pointer, the mbuf structure, and the packet data as transmission data.

第二IF部61は送信データを第二Packing送信処理部63に渡し、第二Packing送信処理部63は、当該パケットについてパッキングが必要か否かを判定する(ステップS151)。第二Packing送信処理部63は、mbuf構造体のbuf_addr、data_off、data_lenを参照し、パケットバッファ内でのパケットデータの位置とサイズを確認する。第二Packing送信処理部63は、その位置およびサイズがバス部11の制約を満たさない場合にパッキングが必要と判定し、満たす場合に不要と判定する。パッキングが不要と判定された場合は、第二Packing送信処理部63はパケットデータの書き込みを第二パケットデータ送信部64に指示する(ステップS155に移行)。その際、第二Packing送信処理部63は、書き込み対象領域としてパケットデータ全体を指定する。 The second IF unit 61 passes the transmission data to the second Packing transmission processing unit 63, and the second Packing transmission processing unit 63 determines whether packing is required for the packet (step S151). The second Packing transmission processing unit 63 refers to buf_addr, data_off and data_len of the mbuf structure to confirm the position and size of the packet data in the packet buffer. The second Packing transmission processing unit 63 determines that packing is necessary when the position and size do not satisfy the constraint of the bus unit 11, and determines that packing is unnecessary when the position and size satisfy the constraint. When it is determined that the packing is unnecessary, the second Packing transmission processing unit 63 instructs the second packet data transmission unit 64 to write the packet data (shift to step S155). At that time, the second Packing transmission processing unit 63 specifies the entire packet data as the write target area.

第二Packing送信処理部63は、上述したパッキングに従い、Packingデータを生成する(ステップS152)。 The second Packing transmission processing unit 63 generates Packing data according to the packing described above (step S152).

第二Packing送信処理部63は、生成したPackingデータのEnqueueを第二Enqueue処理部66に要求し、第二Enqueue処理部66はEnqueueを行う(ステップS153)。第二Enqueue処理部66によるEnqueue処理については後述する。その後、第二Packing送信処理部63はパケットデータのうちバス部11の制約を満たす部分の書き込みを第二パケットデータ送信部64に指示する。 The second Packing transmission processing unit 63 requests the second Enqueue processing unit 66 for Enqueue of the generated Packing data, and the second Enqueue processing unit 66 performs Enqueue (step S153). Enqueue processing by the second Enqueue processing unit 66 will be described later. After that, the second Packing transmission processing unit 63 instructs the second packet data transmission unit 64 to write the portion of the packet data that satisfies the constraint of the bus unit 11.

第二パケットデータ送信部64は、メモリアクセス部73を介してメモリ部10にパケットデータのうち指定された部分を書き込む(ステップS154、ステップS155)。 The second packet data transmission unit 64 writes the designated portion of the packet data in the memory unit 10 via the memory access unit 73 (steps S154 and S155).

第二Packing送信処理部63は、第二mbuf送信部65にmbuf構造体の書き込みを指示し、第二mbuf送信部65は、メモリアクセス部73を介してメモリ部10にmbuf構造体を書き込む(ステップS156)。 The second Packing transmission processing unit 63 instructs the second mbuf transmission unit 65 to write the mbuf structure, and the second mbuf transmission unit 65 writes the mbuf structure to the memory unit 10 via the memory access unit 73 ( Step S156).

第二Packing送信処理部63は、mbuf構造体ポインタのリングキューへのEnqueueを第二Enqueue処理部66に要求し、第二Enqueue処理部66はEnqueue処理を行う(ステップS157)。 The second Packing transmission processing unit 63 requests the second Enqueue processing unit 66 to perform Enqueue to the ring queue of the mbuf structure pointer, and the second Enqueue processing unit 66 performs Enqueue processing (step S157).

次に、第二Enqueue処理部66が、リングキューにデータをEnqueueする処理について、図16を用いて説明する。第二Enqueue処理部66は、リングキューのキューIDと、Enqueueするデータ(8バイトの倍数のサイズ)と、当該データのサイズ(8バイト単位)と、をパラメタとして受け取る。 Next, the process in which the second Enqueue processing unit 66 enqueues data in the ring queue will be described with reference to FIG. The second Enqueue processing unit 66 receives the queue ID of the ring queue, the data to be enqueued (size of multiple of 8 bytes), and the size of the data (8 byte unit) as parameters.

第二Enqueue処理部66は、入力データを内部バッファに追加する(ステップS160)。 The second Enqueue processing unit 66 adds the input data to the internal buffer (step S160).

第二Enqueue処理部66は、内部バッファに記憶されたデータのサイズがバス部11の最小単位サイズか確認する(ステップS161)。最小単位サイズ未満の場合、第二Enqueue処理部66は本処理を終了する。 The second Enqueue processing unit 66 confirms whether the size of the data stored in the internal buffer is the minimum unit size of the bus unit 11 (step S161). If the size is less than the minimum unit size, the second Enqueue processing unit 66 ends this processing.

第二Enqueue処理部66は、Enqueue先のリングキューにバス部11の最小単位サイズ以上の空きがあるか否かを判定する(ステップS162)。第二Enqueue処理部66は、以下の条件が満たされた場合にバス部11の最小単位サイズ以上の空きがある判定する。なお、MAX(A,B)はAとBの大きい方を意味する。 The second Enqueue processing unit 66 determines whether or not the Enqueue destination ring queue has a free space equal to or larger than the minimum unit size of the bus unit 11 (step S162). The second Enqueue processing unit 66 determines that there is a free space equal to or larger than the minimum unit size of the bus unit 11 when the following conditions are satisfied. MAX (A, B) means the larger of A and B.

p_index - c_index + MAX(Enqueueするデータ(内部バッファ内データ)のサイズ(8バイト単位)、最小単位サイズ(バイト単位) / 8) ≦ p_size (p_indexがc_index以上の場合)。 p_index-c_index + MAX (size of enqueued data (data in internal buffer) (8-byte unit), minimum unit size (byte unit)/8) ≤ p_size (when p_index is greater than or equal to c_index).

p_index + 2^32 - c_index +MAX(Enqueueするデータ(内部バッファ内データ)のサイズ(8バイト単位)、最小単位サイズ(バイト単位) / 8) ≦ p_size (p_indexがc_index未満場合)。 p_index + 2^32-c_index + MAX (size of enqueued data (data in internal buffer) (8 bytes unit), minimum unit size (byte unit)/8) ≤ p_size (when p_index is less than c_index).

第二Enqueue処理部66は、リングキューに空きがないと判定した場合、処理を終了する。 When the second Enqueue processing unit 66 determines that the ring queue has no space, it ends the process.

第二Enqueue処理部66は、メモリアクセス部73を介し、FIFO用配列であるringの配列インデックスp_indexの位置(およびそれ以降)にEnqueueするデータ(内部バッファ内データ)を書き込む(ステップS163)。なお、第二Enqueue処理部66は、バス部11の最小単位サイズの倍数を単位としてデータを書き込む。 The second Enqueue processing unit 66 writes the data to be enqueued (data in the internal buffer) at the position (and after) of the array index p_index of the ring that is the FIFO array via the memory access unit 73 (step S163). The second Enqueue processing unit 66 writes data in units of multiples of the minimum unit size of the bus unit 11.

第二Enqueue処理部66は、p_indexにステップS162でEnqueueしたデータのサイズ(8バイト単位)を加算し、メモリアクセス部73を介しメモリ部10に記憶されたリングキューのp_indexフィールドに書き込む(ステップS164)。 The second Enqueue processing unit 66 adds the size (8-byte unit) of the data enqueued in step S162 to p_index and writes it in the p_index field of the ring queue stored in the memory unit 10 via the memory access unit 73 (step S164). ).

<(E)第一データ処理部20によるパケット受信処理>
図17のフローチャートを用いて、情報処理装置1の第一データ処理部20(図4)が第二データ処理部30からパケットを受信する処理について説明する。当該処理は、例えば、第一データ処理部20がオフロード処理後のパケットを第二データ処理部30から受信する際に実行される。
<(E) Packet Reception Processing by First Data Processing Unit 20>
A process in which the first data processing unit 20 (FIG. 4) of the information processing device 1 receives a packet from the second data processing unit 30 will be described with reference to the flowchart of FIG. The process is executed, for example, when the first data processing unit 20 receives the packet after the offload process from the second data processing unit 30.

第一データ処理部20は、リングキューのアドレス(mbuf構造体ポインタ用)をパラメタとして、第一IF部41(図6)にDequeueを要求する(ステップS170)。 The first data processing unit 20 requests Dequeue from the first IF unit 41 (FIG. 6) using the address of the ring queue (for the mbuf structure pointer) as a parameter (step S170).

当該要求は第一IF部41によって第一Packing受信処理部45に転送され、第一Packing受信処理部45は、第一Dequeue処理部46にmbuf構造体ポインタのDequeueを要求し、第一Dequeue処理部46は、リングキューからmbuf構造体ポインタをDequeueする(ステップS171)。第一Dequeue処理部46によるDequeue処理については後述する。 The request is transferred to the first Packing reception processing unit 45 by the first IF unit 41, and the first Packing reception processing unit 45 requests the first Dequeue processing unit 46 to Dequeue the mbuf structure pointer, and performs the first Dequeue processing. The unit 46 dequeues the mbuf structure pointer from the ring queue (step S171). Dequeue processing by the first Dequeue processing unit 46 will be described later.

第一Packing受信処理部45は、当該パケットに関しパッキングが利用されているかを判定する(ステップS172)。第一Packing受信処理部45は、ステップS151における第二Packing送信処理部63と同様の方法で判定を行う。すなわち、第一Packing受信処理部45は、mbuf構造体ポインタを元にmbuf構造体のbuf_addr、data_off、data_lenを参照し、パケットバッファ内でのパケットデータの位置とサイズを確認する。第一Packing受信処理部45は、その位置およびサイズがバス部11の制約を満たさない場合にパッキングが利用されている判定し、満たさない場合に利用されていないと判定する。パッキングが利用されていない場合、ステップS177に移行する。 The first Packing reception processing unit 45 determines whether packing is used for the packet (step S172). The first Packing reception processing unit 45 makes a determination by the same method as the second Packing transmission processing unit 63 in step S151. That is, the first Packing reception processing unit 45 refers to buf_addr, data_off, and data_len of the mbuf structure based on the mbuf structure pointer, and confirms the position and size of the packet data in the packet buffer. The first Packing reception processing unit 45 determines that the packing is used when the position and size do not satisfy the constraint of the bus unit 11, and determines that the packing is not used when the position and size do not satisfy the constraint. If packing is not used, the process proceeds to step S177.

第一Packing受信処理部45は、PackingデータのDequeueを第一Dequeue処理部46に要求する(ステップS173)。 The first Packing reception processing unit 45 requests the first Dequeue processing unit 46 to Dequeue the Packing data (step S173).

第一Dequeue処理部46は、リングキューからPackingデータをDequeueし第一Packing受信処理部45に通知する(ステップS174)。第一Dequeue処理部46によるDequeue処理については後述する。 The first Dequeue processing unit 46 dequeues the Packing data from the ring queue and notifies the first Packing reception processing unit 45 (step S174). Dequeue processing by the first Dequeue processing unit 46 will be described later.

第一Packing受信処理部45は、DequeueされたPackingデータを処理する(ステップS175)。具体的には、第一Packing受信処理部45は、Packingデータにパケットデータ先頭側のデータが含まれる場合、当該データを、mbuf構造体のbuf_addrフィールドおよびdata_offフィールドの値を足して得られるアドレスに書き込む。また、第一Packing受信処理部45は、Packingデータにパケットデータ末尾側のデータが含まれる場合、当該データを、以下により得られるアドレスに書き込む。
mbuf構造体のbuf_addrフィールド値+data_offフィールド値+data_lenフィールド値−当該データのサイズ
The first Packing reception processing unit 45 processes the dequeued Packing data (step S175). Specifically, when the Packing data includes data on the packet data head side, the first Packing reception processing unit 45 adds the data to the address obtained by adding the values of the buf_addr field and the data_off field of the mbuf structure. Write. In addition, when the Packing data includes the data on the end side of the packet data, the first Packing reception processing unit 45 writes the data in the address obtained as follows.
buf_addr field value of mbuf structure + data_off field value + data_len field value-size of the data

第一Packing受信処理部45は、ステップS171で得られたmbuf構造体ポインタを、第一IF部41を介して第一データ処理部20に通知する(ステップS176)。 The first Packing reception processing unit 45 notifies the mbuf structure pointer obtained in step S171 to the first data processing unit 20 via the first IF unit 41 (step S176).

ステップS171およびステップS174における第一Dequeue処理部46によるリングキューからのDequeue処理は、基本的に、図14を用いて説明した第二Dequeue処理部68によるDequeue処理と同様である。ただし、第一Dequeue処理部46は、リングキューアドレスを、Dequeue要求者からのパラメタとして取得する。また、第一Dequeue処理部46は、メモリ部10上のリングキューの参照および更新にメモリアクセス部73(図7)を使用しない。また、第一Dequeue処理部46は、図14に示されたステップS141を省略してもよく、ステップS142およびステップS143において、バス部11の最小単位サイズ未満のサイズのデータを取り出してもよい。 The Dequeue process from the ring queue by the first Dequeue processing unit 46 in steps S171 and S174 is basically the same as the Dequeue process by the second Dequeue processing unit 68 described with reference to FIG. However, the first Dequeue processing unit 46 acquires the ring queue address as a parameter from the Dequeue requester. Further, the first Dequeue processing unit 46 does not use the memory access unit 73 (FIG. 7) for referring to and updating the ring queue on the memory unit 10. Further, the first Dequeue processing unit 46 may omit step S141 shown in FIG. 14, and may extract data of a size smaller than the minimum unit size of the bus unit 11 in steps S142 and S143.

<(F)リングキュー解放処理>
図18のフローチャートを用いて、情報処理装置1がリングキューを解放する処理について説明する。当該処理は、例えば、第一データ処理部20の動作終了時に実行される。第一データ処理部20は、当該処理を、第二データ処理部30との間で使用するmbuf構造体ポインタ用のリングキュー毎に実行する。
<(F) Ring queue release processing>
A process in which the information processing device 1 releases the ring queue will be described with reference to the flowchart of FIG. The process is executed, for example, when the operation of the first data processing unit 20 ends. The first data processing unit 20 executes the processing for each ring queue for the mbuf structure pointer used with the second data processing unit 30.

第一データ処理部20は、第二Enqueue処理部66(図7)(第二データ処理部30が送信し第一データ処理部20が受信する場合)もしくは第二Dequeue処理部68(第一データ処理部20が送信し第二データ処理部30が受信する場合)に、リングキューのアドレス削除を要求する(ステップS180)。 The first data processing unit 20 includes a second Enqueue processing unit 66 (FIG. 7) (when the second data processing unit 30 transmits and the first data processing unit 20 receives) or a second Dequeue processing unit 68 (first data). When the processing unit 20 transmits and the second data processing unit 30 receives), it requests the deletion of the address of the ring queue (step S180).

第一データ処理部20は、第一IF部41にリングキューの解放を要求する(ステップS180)。その際、パラメタとして、リングキューのアドレスを渡す。当該要求は、第一管理部42に転送される。 The first data processing unit 20 requests the first IF unit 41 to release the ring queue (step S180). At that time, the address of the ring queue is passed as a parameter. The request is transferred to the first management unit 42.

第一管理部42(図6)は、パラメタで与えられたリングキューのp_ring_ptrフィールドを参照してPackingデータ用のリングキューのアドレスを取得し、当該リングキュー用のメモリ領域を解放する(ステップS182)。 The first management unit 42 (FIG. 6) acquires the address of the ring queue for Packing data by referring to the p_ring_ptr field of the ring queue given by the parameter, and releases the memory area for the ring queue (step S182). ).

第一管理部42は、パラメタ与えられたリングキュー用のメモリ領域を解放する(ステップS183)。 The first management unit 42 releases the memory area for the ring queue given the parameter (step S183).

以上に詳細に説明したように、本実施の形態においては、次のような効果が得られる。 As described in detail above, the following effects can be obtained in the present embodiment.

まず、図4に示された第一データ処理部20がリングキューを用いて、mbuf形式でメモリ部10に記憶されたパケットを第二データ処理部30に送信する場合について説明する。本実施の形態によれば、第一データ処理部20が使用するmbuf構造体ポインタ用リングキューを生成する際、第一送受信処理部40はPackingデータ用のリングキューも生成する。第一データ処理部20がmbuf構造体ポインタ用リングキューにmbuf構造体ポインタをEnqueueするものとする。この場合、第一送受信処理部40は、当該パケットのパケットデータのうち、バス部11の制約を満たさない部分をまとめたPackingデータを生成し、当該PackingデータをPackingデータ用のリングキューにEnqueueする。 First, a case will be described in which the first data processing unit 20 illustrated in FIG. 4 uses the ring queue to transmit the packet stored in the memory unit 10 in the mbuf format to the second data processing unit 30. According to the present embodiment, when generating the ring queue for the mbuf structure pointer used by the first data processing unit 20, the first transmission/reception processing unit 40 also generates the ring queue for Packing data. It is assumed that the first data processing unit 20 enqueues the mbuf structure pointer in the mbuf structure pointer ring queue. In this case, the first transmission/reception processing unit 40 generates Packing data in which the portions of the packet data of the packet that do not satisfy the constraint of the bus unit 11 are collected and enqueues the Packing data in the Ring queue for Packing data. ..

また、第二データ処理部30が第一データ処理部20からリングキューを用いてパケットを受信するものとする。この場合、第二送受信処理部60はmbuf構造体ポインタをリングキューからDequeueするとともに、mbuf構造体を読み込む。第二送受信処理部6は、当該パケットのパケットデータのうちバス部11の制約に整合する部分(バス部11の通信単位に合致する部分)についてはパケットバッファから読み込む。一方、第二送受信処理部60は、パケットデータのうちバス部11の制約に整合しない部分(バス部11の通信単位に合致しない部分)についてはPackingデータ用のリングキューからPackingデータ(端数データ)として読み込む。その際、第二送受信処理部60は、バス部11の最小単位サイズの倍数を単位としてPackingデータのDequeueを行う。第二送受信処理部60は、パケットバッファから読み込んだパケットデータを必要に応じPackingデータによって更新した上で、mbuf構造体等とともに第二データ処理部30に通知する。 Further, it is assumed that the second data processing unit 30 receives the packet from the first data processing unit 20 using the ring queue. In this case, the second transmission/reception processing unit 60 dequeues the mbuf structure pointer from the ring queue and reads the mbuf structure. The second transmission/reception processing unit 6 reads, from the packet buffer, a portion of the packet data of the packet that matches the constraint of the bus unit 11 (a portion that matches the communication unit of the bus unit 11). On the other hand, the second transmission/reception processing unit 60, from the packet data ring queue, packs data (fractional data) for a part of the packet data that does not match the constraint of the bus unit 11 (a part that does not match the communication unit of the bus unit 11). Read as. At that time, the second transmission/reception processing unit 60 dequeues the Packing data in units of multiples of the minimum unit size of the bus unit 11. The second transmission/reception processing unit 60 updates the packet data read from the packet buffer with Packing data as necessary, and then notifies the second data processing unit 30 together with the mbuf structure and the like.

ここで、第二データ処理部30がリングキューを用いて、mbuf形式でメモリ部10に記憶されたパケットを第一データ処理部20に送信する場合について説明する。この場合、本実施の形態によれば、第一データ処理部20が使用するmbuf構造体ポインタ用リングキューを生成する際、第一送受信処理部40はPackingデータ用のリングキューも生成する。ここで、第二データ処理部30がmbuf構造体ポインタ用リングキューにmbuf構造体ポインタをEnqueueするものとする。この場合、第二送受信処理部60は、当該パケットのパケットデータのうち、バス部11の制約を満たさない部分をまとめたPackingデータを生成し、当該PackingデータをPackingデータ用のリングキューにEnqueueする。その際、第二送受信処理部60は、バス部11の最小単位サイズの倍数を単位としてPackingデータをEnqueueする。また、第二送受信処理部60は、mbuf構造体をmbuf構造体ポインタで示されるメモリ領域に書き込むとともに、パケットデータのうちバス部11の制約に整合する部分について、パケットバッファに書き込む。 Here, the case where the second data processing unit 30 uses the ring queue to transmit the packet stored in the memory unit 10 in the mbuf format to the first data processing unit 20 will be described. In this case, according to the present embodiment, when the mbuf structure pointer ring queue used by the first data processing unit 20 is generated, the first transmission/reception processing unit 40 also generates the Packing data ring queue. Here, it is assumed that the second data processing unit 30 enqueues the mbuf structure pointer in the ring queue for the mbuf structure pointer. In this case, the second transmission/reception processing unit 60 generates Packing data in which the packet data of the packet that does not satisfy the constraint of the bus unit 11 are collected and enqueues the Packing data in the ring queue for Packing data. .. At that time, the second transmission/reception processing unit 60 enqueues the Packing data in units of multiples of the minimum unit size of the bus unit 11. Further, the second transmission/reception processing unit 60 writes the mbuf structure in the memory area indicated by the mbuf structure pointer, and also writes the portion of the packet data that matches the constraints of the bus unit 11 in the packet buffer.

また、第一データ処理部20が第二データ処理部30からリングキューを用いてパケットを受信する場合について説明する。この場合、第一送受信処理部40は、mbuf構造体ポインタをリングキューからDequeueし、必要に応じてPackingデータ用のリングキューからPackingデータをDequeueして当該パケットのパケットデータのうちバス部11の制約に整合しない部分について当該Packingデータを用いて更新する。その後、第一送受信処理部40は、Dequeueしたmbuf構造体ポインタを第一データ処理部20に通知する。 A case where the first data processing unit 20 receives a packet from the second data processing unit 30 using the ring queue will be described. In this case, the first transmission/reception processing unit 40 dequeues the mbuf structure pointer from the ring queue, dequeues the Packing data from the ring queue for Packing data as necessary, and dequeues the Packing data of the bus unit 11 of the packet data of the packet. The part that does not match the constraint is updated using the packing data. After that, the first transmission/reception processing unit 40 notifies the first data processing unit 20 of the dequeued mbuf structure pointer.

これにより、バス部11の制約を満たさない部分のパケットデータはPackingデータとしてバス部11の制約を満たす状態で通信されることとなり、バス利用効率低下を抑制することができる。 As a result, the packet data of the portion that does not satisfy the constraint of the bus unit 11 is communicated as Packing data in a state that the constraint of the bus unit 11 is satisfied, and it is possible to suppress a decrease in bus utilization efficiency.

よって、本実施の形態によれば、モジュール間でメモリおよびバスを介したデータ通信を行う際のバス利用効率低下を抑制する効果を得ることができる。 Therefore, according to the present embodiment, it is possible to obtain the effect of suppressing a decrease in bus utilization efficiency when performing data communication between modules via a memory and a bus.

なお、本実施の形態の説明では、情報処理装置1が、パケットデータの先頭側および末尾側の部分パケットデータの存在を、Packingデータの先頭2Bitを使って表す例を示したが、本発明はこれに限定されるものではない。他の例として、情報処理装置1は、当該部分パケットデータの存在を、Packingデータの先頭2Bitに代えて、もしくは加えて、mbuf構造体ポインタ用リングキューにEnqueueおよびDequeueするデータ(8バイト)の一部として表してもよい。例えば、当該データ(8バイト)の先頭2Bitを部分パケットデータの存在を示す2Bitとして用い、残りの62Bitをmbuf構造体ポインタとして用いてもよい。その場合、第一送受信処理部40および第二送受信処理部60は、第一データ処理部20および第二データ処理部30にリングキューからDequeueしたmbuf構造体ポインタを渡す際、Dequeueされたデータの先頭2Bitを0に設定した上で渡す。そのような構成をとることで、Packingデータ用リングキューへのアクセス頻度を下げる効果が得られる。 In the description of the present embodiment, an example in which the information processing apparatus 1 indicates the existence of the partial packet data on the head side and the tail side of the packet data by using the head 2 bits of the Packing data has been described. It is not limited to this. As another example, the information processing device 1 replaces the presence of the partial packet data with the first 2 bits of the Packing data, or in addition to the presence of the data (8 bytes) to be enqueued and dequeued in the ring queue for the mbuf structure pointer. May be represented as part. For example, the first 2 bits of the data (8 bytes) may be used as the 2 bits indicating the existence of the partial packet data, and the remaining 62 bits may be used as the mbuf structure pointer. In that case, when the first transmission/reception processing unit 40 and the second transmission/reception processing unit 60 pass the mbuf structure pointer dequeued from the ring queue to the first data processing unit 20 and the second data processing unit 30, the dequeued data The first 2 bits are set to 0 and passed. With such a configuration, it is possible to obtain the effect of reducing the frequency of access to the Packing data ring queue.

また、本実施の形態の説明では、情報処理装置1が、mbuf構造体ポインタ用リングキューとは別にPackingデータ用リングキューを生成しPackingデータの通信に使用する例を示したが、本発明はこれに限定されるものではない。他の例として、情報処理装置1は、mbuf構造体ポインタ用リングキューを用いてPackingデータを通信してもよい。その場合、第一送受信処理部40および第二送受信処理部60は、PackingデータのEnqueueを、Packingデータ用のリングキューに対してではなくmbuf構造体用のリングキューに対して行う。また、第一送受信処理部40および第二送受信処理部60は、PackingデータのDequeueを、Packingデータ用のリングキューからではなくmbuf構造体用のリングキューから行う。 In addition, in the description of the present embodiment, an example in which the information processing device 1 generates a Packing data ring queue separately from the mbuf structure pointer ring queue and uses it for Packing data communication has been described. It is not limited to this. As another example, the information processing device 1 may communicate the Packing data using the ring queue for the mbuf structure pointer. In that case, the first transmission/reception processing unit 40 and the second transmission/reception processing unit 60 perform Enqueue of Packing data not on the ring queue for Packing data but on the ring queue for mbuf structure. In addition, the first transmission/reception processing unit 40 and the second transmission/reception processing unit 60 perform Dequeue of Packing data from the ring queue for the mbuf structure, not from the ring queue for Packing data.

第一送受信処理部40および第二送受信処理部60は、mbuf構造体ポインタ用のリングキューにEnqueueおよびDequeueするデータがmbuf構造体ポインタであるかPackingデータであるかの区別を、例えば、先頭の1Bitを用いて行う。その場合、第一送受信処理部40および第二送受信処理部60は、第一データ処理部20および第二データ処理部30にリングキューからDequeueしたmbuf構造体ポインタを渡す際、Dequeueされたデータの先頭1Bitを0に設定した上で渡す。第一送受信処理部40および第二送受信処理部60は、Packingデータのサイズが8バイトの倍数でない場合、パディングを追加して8バイトの倍数のサイズにしたうえで、mbuf構造体ポインタ用のリングキューにEnqueueおよびDequeueしてもよい。第一送受信処理部40は、第一データ処理部20の要求によりリングキューを生成する際、Packingデータ用のリングキューを生成しなくてよい。また、第一送受信処理部40は、リングキューを生成する際、第一データ処理部20によって与えられたサイズとは異なるサイズのリングキューを生成してもよい。例えば、第一送受信処理部40は、与えられたサイズにバス部10の最小単位サイズを乗じた値のサイズのリングキューを生成してもよい。そのような構成をとることで、使用するメモリ領域のサイズを減らしたり、メモリ部10へのアクセス頻度を下げたりする効果が得られる。
また、情報処理装置1は、mbuf構造体ポインタ用リングキューを用いてPackingデータを通信する場合に、mbuf構造体ポインタとPackingデータとを交互にリングキューを用いて通信する代わりに、所定の数のパケット毎に、mbuf構造体ポインタを連続して通信し、その後それらに関するPackingデータを連続して通信することとしてもよい。そのような構成をとり、さらに、第一Packing受信処理部45がmbuf構造体ポインタをDequeueした際に(ステップS171)、当該mbuf構造体ポインタに対してプリフェッチ命令(先読み命令)を実行することで、CPUキャッシュミスを抑制することが出来る。
The first transmission/reception processing unit 40 and the second transmission/reception processing unit 60 determine whether the data to be enqueued and dequeued in the ring queue for the mbuf structure pointer is the mbuf structure pointer or the packing data, for example, at the beginning. Perform using 1 Bit. In that case, when the first transmission/reception processing unit 40 and the second transmission/reception processing unit 60 pass the mbuf structure pointer dequeued from the ring queue to the first data processing unit 20 and the second data processing unit 30, the dequeued data The first 1 Bit is set to 0 and passed. If the size of the Packing data is not a multiple of 8 bytes, the first transmission/reception processing unit 40 and the second transmission/reception processing unit 60 add padding to make it a multiple of 8 bytes, and then use the ring for the mbuf structure pointer. You may Enqueue and Dequeue to the queue. The first transmission/reception processing unit 40 does not need to generate the ring queue for Packing data when generating the ring queue in response to the request from the first data processing unit 20. Further, when generating the ring queue, the first transmission/reception processing unit 40 may generate a ring queue of a size different from the size given by the first data processing unit 20. For example, the first transmission/reception processing unit 40 may generate a ring queue having a size obtained by multiplying the given size by the minimum unit size of the bus unit 10. With such a configuration, it is possible to obtain the effects of reducing the size of the memory area used and reducing the frequency of access to the memory unit 10.
Further, when the Packing data is communicated using the ring queue for the mbuf structure pointer, the information processing device 1 does not communicate the mbuf structure pointer and the Packing data alternately using the ring queue, but instead uses a predetermined number. The mbuf structure pointer may be continuously communicated for each packet of, and then the Packing data relating to them may be continuously communicated. With such a configuration, when the first Packing reception processing unit 45 dequeues the mbuf structure pointer (step S171), the prefetch instruction (prefetch instruction) is executed for the mbuf structure pointer. , CPU cache miss can be suppressed.

また、本実施の形態の説明では、情報処理装置1が、パッキングの要否を、パケットデータの位置やサイズがバス部11の制約を満たしているか否かによってのみ判定する例を示したが本発明はこれに限定されるものではない。他の例として、情報処理装置1は、パケットサイズが所定の値より小さい場合にのみパッキングを使用する、という条件を追加で用いてもよい。そのような構成をとることで、パッキングによる負荷を下げる効果が得られる。また、他の例として、情報処理装置1は、パケット毎に当該パケットに対しパッキングを使用するか否かの情報を第一データ処理部20もしくは第二データ処理部30から受け取り、当該情報に基づきパッキングの利用有無を切り替えてもよい。 In addition, in the description of the present embodiment, an example in which the information processing device 1 determines whether or not the packing is necessary only based on whether or not the position or size of the packet data satisfies the constraint of the bus unit 11 has been described. The invention is not limited to this. As another example, the information processing device 1 may additionally use a condition that the packing is used only when the packet size is smaller than a predetermined value. With such a configuration, the effect of reducing the load due to packing can be obtained. Further, as another example, the information processing device 1 receives, for each packet, information on whether or not to use packing for the packet from the first data processing unit 20 or the second data processing unit 30, and based on the information. The use/non-use of packing may be switched.

パケットデータの位置およびサイズ以外の情報をも使用してパッキングの利用有無を切り替える場合について説明する。この場合、第一送受信処理部40および第二送受信処理部60は、処理するパケット毎に当該パケットに関しパッキングを利用するかしないかを示すフラグを設け、当該フラグを参照して当該パケットに関しパッキングを行うか行わないかを切り替える。第一送受信処理部40および第二送受信処理部60は、例えば、当該フラグをmbuf構造体ポインタもしくはmbuf構造体のいずれかの場所に記録する。 A case will be described in which the use/nonuse of packing is switched using information other than the position and size of packet data. In this case, the first transmission/reception processing unit 40 and the second transmission/reception processing unit 60 provide, for each packet to be processed, a flag indicating whether or not to use packing for the packet, and refer to the flag to perform packing on the packet. Switch between doing and not doing. The first transmission/reception processing unit 40 and the second transmission/reception processing unit 60, for example, record the flag in any place of the mbuf structure pointer or the mbuf structure.

また、本実施の形態の説明では、情報処理装置1が、パケットの通信にリングキューおよびmbuf形式を用いる例を示したが本発明はこれに限定されるものではない。他の例として、情報処理装置1は、例えば、仮想化技術で用いられるVirtioをパケットの通信に用いてもよい。その場合、情報処理装置1は、mbuf構造体ポインタ用リングキューの代わりにVirtioキューを用いる。更に、情報処理装置1は、パケットバッファの位置およびサイズを管理するデータ構造として、mbuf構造体の代わりに、virtio ring descriptor(vring_deSc構造体)を使用する。情報処理装置1は、図8に示したリングキューのデータ構造の代わりに、vring_avail構造体およびvring_used構造体を使用する。情報処理装置1は、mbuf構造体ポインタの代わりに、vring構造体のdescフィールドで示されるvring_desc構造体配列へのインデックスを使用する。情報処理装置1は、Packingデータの通信にリングキューを使用する。
また、本実施の形態では、例えばCPUによって実行されるソフトウェアプログラムとして実現される第一送受信処理部40および第一データ処理部20と、例えば、FPGAによって実現される第二送受信処理部60および第二データ処理部30とが、通信する例を示したが、本発明はこれに限定されるものではない。例えば、他の例として、例えばCPUによって実行されるソフトウェアプログラムとして実現される第一送受信処理部40および第一データ処理部20と、別の第一送受信処理部40および第一データ処理部20と、が通信してもよい。同様に、例えば、FPGAによって実現される第二送受信処理部60および第二データ処理部30と、別の第二送受信処理部60および第二データ処理部30と、が通信してもよい。
In the description of the present embodiment, the information processing apparatus 1 uses the ring queue and the mbuf format for packet communication, but the present invention is not limited to this. As another example, the information processing device 1 may use, for example, Virtio used in virtualization technology for packet communication. In that case, the information processing device 1 uses the Virtio queue instead of the ring queue for the mbuf structure pointer. Further, the information processing device 1 uses a virtio ring descriptor (vring_deSc structure) instead of the mbuf structure as a data structure for managing the position and size of the packet buffer. The information processing device 1 uses a vring_avail structure and a vring_used structure instead of the data structure of the ring queue shown in FIG. The information processing device 1 uses an index to the vring_desc structure array indicated by the desc field of the vring structure instead of the mbuf structure pointer. The information processing device 1 uses a ring queue for communication of Packing data.
Further, in the present embodiment, for example, the first transmission/reception processing unit 40 and the first data processing unit 20 realized as a software program executed by the CPU, and the second transmission/reception processing unit 60 and the first data transmission processing unit 60 realized by, for example, an FPGA. Although the two data processing units 30 communicate with each other, the present invention is not limited to this. For example, as another example, a first transmission/reception processing unit 40 and a first data processing unit 20, which are realized as a software program executed by a CPU, and another first transmission/reception processing unit 40 and a first data processing unit 20. , May communicate. Similarly, for example, the second transmission/reception processing unit 60 and the second data processing unit 30 which are realized by the FPGA and another second transmission/reception processing unit 60 and the second data processing unit 30 may communicate with each other.

[第2の実施の形態の説明]
第1の実施の形態では、パケットデータのうちバス部11の制約に整合しない部分をPackingデータとする例を示したが、本発明はこれに限定されるものではない。他の例として、mbuf構造体の一部をPackingデータに含め、第二送受信処理部60はメモリ部10に記憶されたmbuf構造体を直接参照もしくは更新しない構成としてもよい。
[Description of Second Embodiment]
In the first embodiment, an example in which the portion of the packet data that does not match the constraint of the bus unit 11 is used as the Packing data has been described, but the present invention is not limited to this. As another example, a part of the mbuf structure may be included in the Packing data, and the second transmission/reception processing unit 60 may not directly refer to or update the mbuf structure stored in the memory unit 10.

以降、本発明の第2の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。 Hereinafter, the second embodiment of the present invention will be described in detail with reference to the drawings. In each of the drawings referred to in the description of the present embodiment, the same configurations as those in the first embodiment of the present invention and steps operating in the same manner are designated by the same reference numerals, and detailed description of the present embodiment will be given. The description is omitted.

[第2の実施の形態の構成例]
本実施の形態の構成例について、図19〜図22を用いて説明する。
[Example of Configuration of Second Embodiment]
A configuration example of this embodiment will be described with reference to FIGS.

図19は、本発明の第2の実施の形態に係る情報処理装置2の構成の一例を示す構成図である。図19に例示する情報処理装置2は、メモリ部10と、バス部11と、第一データ処理部20と、第二データ処理部30と、第一送受信処理部40Bと、第二送受信処理部60Bと、を含んで構成される。即ち、第一送受信処理部40Bと、第二送受信処理部60Bの構成が図4に示された第一送受信処理部40と、第二送受信処理部60と異なっている。尚、図19示す構成要素の数や接続関係は一例である。 FIG. 19 is a configuration diagram showing an example of the configuration of the information processing device 2 according to the second embodiment of the present invention. The information processing device 2 illustrated in FIG. 19 includes a memory unit 10, a bus unit 11, a first data processing unit 20, a second data processing unit 30, a first transmission/reception processing unit 40B, and a second transmission/reception processing unit. And 60B. That is, the configurations of the first transmission/reception processing unit 40B and the second transmission/reception processing unit 60B are different from those of the first transmission/reception processing unit 40 and the second transmission/reception processing unit 60 shown in FIG. Note that the numbers of components and connection relationships shown in FIG. 19 are examples.

第一送受信処理部40Bは、リングキューを用いてデータを第二送受信処理部60Bとの間で通信する。その詳細は後述する。 The first transmission/reception processing unit 40B uses the ring queue to communicate data with the second transmission/reception processing unit 60B. The details will be described later.

第二送受信処理部60Bは、リングキューを用いてデータを第一送受信処理部40Bとの間で通信する。その詳細は後述する。 The second transmission/reception processing unit 60B uses the ring queue to communicate data with the first transmission/reception processing unit 40B. The details will be described later.

ここで、本実施の形態が行うパッキングについて説明する。本実施の形態では、第1の実施の形態で説明したパッキングに加え、mbuf構造体もパッキングで扱う。本実施の形態におけるパッキングでは、mbuf構造体のフィールドの内、第二データ処理部30および第二送受信処理部60が必要とする情報のみを含むPackingデータを生成する。第二データ処理部30および第二送受信処理部60Bが必要とする情報が図20に示されている。即ち、図20は、mbuf構造体のbuf_physaddrフィールド、data_offフィールド、data_lenフィールドである場合の、mbuf構造体に関するPackingデータの構成例である。一般的なパケットサイズを考えた場合、data_offフィールド、data_lenフィールドのフィールド長は15Bit以下で十分である。本実施の形態では、Packingデータのdata_offフィールドの最初の2Bitは常に0であるとする。これにより、図5に示したパケットデータに関するPackingデータと、mbuf構造体に関するPackingデータを区別することが出来る。図20の例では、当該2Bitの後に、15Bit長のdata_offフィールド、および15Bit長のdata_lenフィールドが続く。 Here, the packing performed by the present embodiment will be described. In this embodiment, in addition to the packing described in the first embodiment, the mbuf structure is also handled by packing. In the packing in the present embodiment, Packing data including only the information required by the second data processing unit 30 and the second transmission/reception processing unit 60 among the fields of the mbuf structure is generated. Information required by the second data processing unit 30 and the second transmission/reception processing unit 60B is shown in FIG. That is, FIG. 20 is a configuration example of Packing data relating to the mbuf structure in the case of the buf_physaddr field, data_off field, and data_len field of the mbuf structure. Considering a general packet size, a field length of the data_off field and the data_len field of 15 bits or less is sufficient. In the present embodiment, it is assumed that the first 2 bits of the data_off field of Packing data are always 0. As a result, it is possible to distinguish the Packing data regarding the packet data shown in FIG. 5 from the Packing data regarding the mbuf structure. In the example of FIG. 20, a data_off field having a 15-bit length and a data_len field having a 15-bit length follow the 2 bits.

次に、本実施の形態における第一送受信処理部40Bの構成例について、図21を用いて説明する。図21に例示する第一送受信処理部40Bは、第一IF部41と、第一管理部42と、第一Packing送信処理部43Bと、第一Enqueue処理部44と、第一Packing受信処理部45Bと、第一Dequeue処理部46と、を含んで構成される。 Next, a configuration example of the first transmission/reception processing unit 40B in the present embodiment will be described using FIG. The first transmission/reception processing unit 40B illustrated in FIG. 21 includes a first IF unit 41, a first management unit 42, a first Packing transmission processing unit 43B, a first Enqueue processing unit 44, and a first Packing reception processing unit. 45B and the first Dequeue processing unit 46.

第一Packing送信処理部43Bは、mbuf構造体ポインタのEnqueue要求を受付け、上述したパッキングを実施したあと、第一Enqueue処理部にmbuf構造体ポインタおよびPackingデータのEnqueueを要求する。 The first Packing transmission processing unit 43B receives the Enqueue request for the mbuf structure pointer, performs the above-described packing, and then requests the first Enqueue processing unit for the Enqueue of the mbuf structure pointer and Packing data.

第一Packing受信処理部45Bは、mbuf構造体ポインタのDequeue要求を受付け、第一Dequeue処理部46にmbuf構造体ポインタおよびPackingデータのDequeueを要求し、上述したパッキングに基づくmbuf構造体およびパケットデータの更新を実施したあと、Dequeueされたmbuf構造体ポインタを返す。 The first Packing reception processing unit 45B receives the Dequeue request for the mbuf structure pointer, requests the Dequeue processing unit 46 for the mbuf structure pointer and the Dequeue of the Packing data, and the mbuf structure and the packet data based on the packing described above. After executing the update, returns the dequeued mbuf structure pointer.

次に、本実施の形態における第二送受信処理部60Bの構成例について、図22を用いて説明する。図22に例示する第二送受信処理部60Bは、第二IF部61と、第二Packing送信処理部63Bと、第二パケットデータ送信部64と、第二mbuf送信部65と、第二Enqueue処理部66と、第二Dequeue処理部68と、第二mbuf受信部69と、第二パケットデータ受信部70と、第二Packing受信処理部71Bと、メモリアクセス部73と、を含んで構成される。 Next, a configuration example of the second transmission/reception processing unit 60B in the present embodiment will be described using FIG. The second transmission/reception processing unit 60B illustrated in FIG. 22 includes a second IF unit 61, a second Packing transmission processing unit 63B, a second packet data transmission unit 64, a second mbuf transmission unit 65, and a second Enqueue process. It is configured to include a unit 66, a second Dequeue processing unit 68, a second mbuf reception unit 69, a second packet data reception unit 70, a second Packing reception processing unit 71B, and a memory access unit 73. ..

第二Packing送信処理部63Bは、送信データを第二IF部61から受け取り、パッキングの要否を判定し、その結果に基づき第二パケットデータ送信部64および第二mbuf送信部65に指示を送る。当該指示には、第二IF部61から受け取った送信データの全部または一部が含まれる。また、第二Packing送信処理部63Bは、Packingデータを生成し、第二Enqueue処理部66に生成したPackingデータのリングキューへのEnqueueを要求する。また、第二Packing送信処理部63Bは、第二Enqueue処理部66にmbuf構造体ポインタのリングキューへのEnqueueを要求する。 The second Packing transmission processing unit 63B receives the transmission data from the second IF unit 61, determines the necessity of packing, and sends an instruction to the second packet data transmission unit 64 and the second mbuf transmission unit 65 based on the result. .. The instruction includes all or part of the transmission data received from the second IF unit 61. Further, the second Packing transmission processing unit 63B generates Packing data and requests the second Enqueue processing unit 66 to Enqueue the generated Packing data to the ring queue. In addition, the second Packing transmission processing unit 63B requests the second Enqueue processing unit 66 to enqueue the mbuf structure pointer to the ring queue.

第二Packing受信処理部71Bは、第二Dequeue処理部68からDequeueされたmbuf構造体ポインタおよびPackingデータをキューIDとともに受け取り、それらの処理方法を決定する。第二Packing受信処理部71Bは、必要に応じ、第二mbuf受信部69にmbuf構造体の読み込みを指示する。第二Packing受信処理部71Bは、Packingデータにmbuf構造体の一部が含まれている場合、当該データを用いてmbuf構造体を生成する。第二Packing受信処理部71Bは、第二パケットデータ受信部70にパケットデータの読み込みを指示する。第二Packing受信処理部71Bは、mbuf構造体ポインタ、キューID(mbuf構造体ポインタ用リングキュー)、mbuf構造体ポインタ、mbuf構造体、Packingデータ、を含む受信データを生成し、第二IF部61へ通知する。 The second Packing reception processing unit 71B receives the dequeued mbuf structure pointer and the Packing data from the second Dequeue processing unit 68 together with the queue ID, and determines their processing methods. The second Packing reception processing unit 71B instructs the second mbuf receiving unit 69 to read the mbuf structure, if necessary. When the Packing data includes a part of the mbuf structure, the second Packing reception processing unit 71B generates the mbuf structure using the data. The second Packing reception processing unit 71B instructs the second packet data receiving unit 70 to read the packet data. The second Packing reception processing unit 71B generates reception data including the mbuf structure pointer, queue ID (ring queue for mbuf structure pointer), mbuf structure pointer, mbuf structure, and Packing data, and the second IF unit Notify 61.

[第2の実施の形態の動作例]
次に、本実施の形態の構成例として図19〜図22に例示した情報処理装置2における以下の各動作(B)、(C)、(D)、および(E)について、その一例を、図面を参照しながら詳細に説明する。
(B)第一データ処理部20によるパケット送信処理
(C)第二データ処理部30によるパケット受信処理
(D)第二データ処理部30によるパケット送信処理
(E)第一データ処理部20によるパケット受信処理
[Operation example of the second embodiment]
Next, an example of each of the following operations (B), (C), (D), and (E) in the information processing device 2 illustrated in FIGS. 19 to 22 as a configuration example of the present embodiment will be described. A detailed description will be given with reference to the drawings.
(B) Packet transmission process by the first data processing unit 20 (C) Packet reception process by the second data processing unit 30 (D) Packet transmission process by the second data processing unit 30 (E) Packet by the first data processing unit 20 Reception processing

<(B)第一データ処理部20によるパケット送信処理>
図23のフローチャートを用いて、情報処理装置2の第一データ処理部20が第二データ処理部30に対しパケットを送信する処理について説明する。
<(B) Packet Transmission Process by First Data Processing Unit 20>
A process in which the first data processing unit 20 of the information processing device 2 transmits a packet to the second data processing unit 30 will be described with reference to the flowchart of FIG.

第一データ処理部20は、リングキューのアドレス(mbuf構造体ポインタ用)およびmbuf構造体ポインタをパラメタとして、第一IF部41にEnqueueを要求する(ステップS110)。 The first data processing unit 20 requests Enqueue from the first IF unit 41 using the address of the ring queue (for the mbuf structure pointer) and the mbuf structure pointer as parameters (step S110).

当該要求は第一IF部41によって第一Packing送信処理部43Bに転送され、第一Packing送信処理部43Bは、当該パケットに関しパッキングが必要か否かを判定する(ステップS111B)。本実施の形態においては、常にパッキングが必要と判定する。 The request is transferred to the first Packing transmission processing unit 43B by the first IF unit 41, and the first Packing transmission processing unit 43B determines whether packing is required for the packet (step S111B). In the present embodiment, it is always determined that packing is necessary.

第一Packing送信処理部43Bは、上述したパッキングに従い、mbuf構造体に関するPackingデータおよびパケットデータに関するPackingデータを生成する(ステップS112B)。ただし、第一Packing送信処理部43Bは、パケットデータがバス部11の制約を満たす場合、パケットデータに関するPackingデータを生成しなくてよい。 The first Packing transmission processing unit 43B generates Packing data for the mbuf structure and Packing data for the packet data according to the packing described above (step S112B). However, when the packet data satisfies the constraint of the bus unit 11, the first Packing transmission processing unit 43B does not have to generate the Packing data regarding the packet data.

第一Packing送信処理部43Bは、リングキューのp_ring_ptrフィールドを参照してPackingデータ用のリングキューのアドレスを取得し、当該アドレスとステップS112Bで生成したPackingデータをパラメタとして、第一Enqueue処理部44にEnqueue処理を要求する(mbuf構造体、パケットデータ、の順)(ステップS113B)。 The first Packing transmission processing unit 43B acquires the address of the ring queue for Packing data by referring to the p_ring_ptr field of the ring queue, and uses the address and the Packing data generated in step S112B as parameters to set the first Enqueue processing unit 44B. Request the Enqueue process (in order of mbuf structure and packet data) (step S113B).

第一Packing送信処理部43Bは、mbuf構造体ポインタ用のリングキューのアドレスおよびmbuf構造体ポインタをパラメタとして、第一Enqueue処理部44にEnqueue処理を要求する(ステップS114B)。 The first Packing transmission processing unit 43B requests Enqueue processing from the first Enqueue processing unit 44 using the address of the ring queue for the mbuf structure pointer and the mbuf structure pointer as parameters (step S114B).

<(C)第二データ処理部30によるパケット受信処理>
図24のフローチャートを用いて、情報処理装置2の第二データ処理部30が第一データ処理部20からパケットを受信する処理について説明する。
<(C) Packet reception process by the second data processing unit 30>
A process in which the second data processing unit 30 of the information processing device 2 receives a packet from the first data processing unit 20 will be described with reference to the flowchart of FIG.

第二Packing受信処理部71B(図22)は、mbuf構造体ポインタのDequeueを第二Dequeue処理部68に要求し、第二Dequeue処理部68はDequeueしたmbuf構造体ポインタをキューIDとともに返す(ステップS200)。 The second Packing reception processing unit 71B (FIG. 22) requests the Dequeue of the mbuf structure pointer to the second Dequeue processing unit 68, and the second Dequeue processing unit 68 returns the dequeued mbuf structure pointer together with the queue ID (step S200).

第二Packing受信処理部71Bは、PackingデータのDequeueを第二Dequeue処理部68に要求し、第二Dequeue処理部68はDequeueしたPackingデータをキューIDとともに返す(ステップS201)。なお、PackingデータのDequeueはバス部11の最小単位サイズの倍数を単位して行われる。第二Packing受信処理部71BはDequeueされたPackingデータを内部的に記憶し、必要になった際に都度参照し、必要な分だけ消費する。本ステップにおいて、第二Packing受信処理部71Bは、内部的に記憶されたPackingデータが不足となった場合に、PackingデータのDequeueを第二Dequeue処理部68に要求する。 The second Packing reception processing unit 71B requests the second Dequeue processing unit 68 to Dequeue the Packing data, and the second Dequeue processing unit 68 returns the Dequeued Packing data together with the queue ID (step S201). Dequeue of Packing data is performed in units of multiples of the minimum unit size of the bus unit 11. The second Packing reception processing unit 71B internally stores the dequeued Packing data, refers to it whenever necessary, and consumes only the necessary amount. In this step, the second Packing reception processing unit 71B requests the second Dequeue processing unit 68 to Dequeue the Packing data when the internally stored Packing data becomes insufficient.

第二Packing受信処理部71Bは、DequeueされたPackingデータがmbuf構造体に関するものか否かを判定する(ステップ202)。第二Packing受信処理部71Bは、最初の2Bitがいずれも0である場合に、当該Packingデータがmbuf構造体に関するものであると判定する。 The second Packing reception processing unit 71B determines whether the Dequeued Packing data relates to the mbuf structure (step 202). The second Packing reception processing unit 71B determines that the Packing data is related to the mbuf structure when the first 2 Bits are all 0.

Packingデータがmbuf構造体に関するものであった場合、第二Packing受信処理部71Bは、当該Packingデータからmbuf構造体を生成する(ステップS203)。具体的には、第二Packing受信処理部71Bは、mbuf構造体の各フィールドのうち、Packingデータに含まれるフィールドの値はPackingデータから取得して設定し、それ以外のフィールドを、例えば、0に設定する。 When the Packing data is related to the mbuf structure, the second Packing reception processing unit 71B generates the mbuf structure from the Packing data (step S203). Specifically, the second Packing reception processing unit 71B obtains and sets the value of the field included in the Packing data from the Packing data among the fields of the mbuf structure, and sets the other fields to 0, for example. Set to.

ステップS202において、Packingデータがmbuf構造体に関するものでなかった場合、第二Packing受信処理部71Bは第二mbuf受信部69にmbuf構造体ポインタを渡して読み込みを指示し、第二mbuf受信部69は、当該ポインタを元にメモリアクセス部73を介してメモリ部10からmbuf構造体を読み込む(ステップS204)。 In step S202, when the Packing data is not related to the mbuf structure, the second Packing reception processing unit 71B passes the mbuf structure pointer to the second mbuf receiving unit 69 to instruct the reading, and the second mbuf receiving unit 69. Reads the mbuf structure from the memory unit 10 via the memory access unit 73 based on the pointer (step S204).

第二Packing受信処理部71Bは、当該パケットのパケットデータに関しパッキングが利用されているか否かを判定する(ステップS205)。第二Packing受信処理部71Bは、ステップS111における第一Packing送信処理部43と同様の方法で判定を行う。パッキングが利用されている場合、第二Packing受信処理部71Bは、第二パケットデータ受信部70にパケットデータ(バス部11の制約を満たす部分のみ)の読み込みを指示する(ステップS206に移行)。パッキングが利用されていない場合、第二Packing受信処理部71Bは、第二パケットデータ受信部70にパケットデータ全体の読み込みを指示する(ステップS209に移行)。 The second Packing reception processing unit 71B determines whether packing is used for the packet data of the packet (step S205). The second Packing reception processing unit 71B makes a determination by the same method as the first Packing transmission processing unit 43 in step S111. When the packing is used, the second Packing reception processing unit 71B instructs the second packet data receiving unit 70 to read the packet data (only the portion satisfying the constraint of the bus unit 11) (shift to step S206). When the packing is not used, the second Packing reception processing unit 71B instructs the second packet data receiving unit 70 to read the entire packet data (shift to step S209).

第二パケットデータ受信部70は、メモリアクセス部73を介してメモリ部10からパケットデータの指定された部分を読み込む(ステップS206、ステップS209)。 The second packet data receiving unit 70 reads the designated portion of the packet data from the memory unit 10 via the memory access unit 73 (steps S206 and S209).

第二Packing受信処理部71Bは、パケットデータに関するPackingデータをDequeueする(ステップS207)。なお、本ステップは、ステップS201においてDequeueされたPackingデータがmbuf構造体に関するものであった場合にのみ行う。 The second Packing reception processing unit 71B dequeues the Packing data relating to the packet data (step S207). It should be noted that this step is performed only when the packing data dequeued in step S201 relates to the mbuf structure.

第二Packing受信処理部71Bは、ステップS206で読み込んだパケットデータ(バス部11の制約を満たす部分のみ)に、ステップS207で得られたPackingデータに含まれるパケットデータの一部(先頭側、末尾側、の一方または両方)を追加し、パケットデータを復元する(ステップS208)。 The second Packing reception processing unit 71B uses the packet data read in Step S206 (only the portion satisfying the constraint of the bus unit 11) to include a part of the packet data included in the Packing data obtained in Step S207 (start side, end side). Side, one or both), and packet data is restored (step S208).

第二Packing受信処理部71Bは、キューID(mbuf構造体ポインタ用)、mbuf構造体ポインタ、mbuf構造体、パケットデータを含む受信データを生成し、第二IF部61を介して当該受信データを第二データ処理部30に通知する(ステップS210)。 The second Packing reception processing unit 71B generates reception data including a queue ID (for mbuf structure pointer), mbuf structure pointer, mbuf structure, and packet data, and receives the reception data via the second IF unit 61. The second data processing unit 30 is notified (step S210).

<(D)第二データ処理部30によるパケット送信処理>
図25のフローチャートを用いて、情報処理装置2の第二データ処理部30が第一データ処理部20に対しパケットを送信する処理について説明する。
<(D) Packet transmission process by second data processing unit 30>
A process in which the second data processing unit 30 of the information processing device 2 transmits a packet to the first data processing unit 20 will be described with reference to the flowchart of FIG.

第二データ処理部30は、第二IF部61に対しパケットの送信を要求する(ステップS220)。その際、第二データ処理部30は、キューID、mbuf構造体ポインタ、mbuf構造体、パケットデータを送信データとして渡す。 The second data processing unit 30 requests the second IF unit 61 to transmit a packet (step S220). At that time, the second data processing unit 30 passes the queue ID, the mbuf structure pointer, the mbuf structure, and the packet data as transmission data.

第二IF部61は送信データを第二Packing送信処理部63Bに渡し、第二Packing送信処理部63Bは、当該パケットのmbuf構造体およびパケットデータのそれぞれについてパッキングが必要か否かを判定する(ステップS221)。本実施の形態では、第二Packing送信処理部63Bは、mbuf構造体について常に必要と判定する。パケットデータのPackingに関し、第二Packing送信処理部63Bは、mbuf構造体のbuf_physaddr、data_off、data_lenを参照し、パケットバッファ内でのパケットデータの位置とサイズを確認する。第二Packing送信処理部63Bは、その位置およびサイズがバス部11の制約を満たさない場合にパッキングが必要と判定し、満たす場合に不要と判定する。パッキングが不要と判定された場合は、第二Packing送信処理部63Bはパケットデータの書き込みを第二パケットデータ送信部64に指示する(ステップS224に移行)。その際、第二Packing送信処理部63は、書き込み対象領域としてパケットデータ全体を指定する。 The second IF unit 61 passes the transmission data to the second Packing transmission processing unit 63B, and the second Packing transmission processing unit 63B determines whether or not each of the mbuf structure of the packet and the packet data needs to be packed ( Step S221). In the present embodiment, the second Packing transmission processing unit 63B determines that the mbuf structure is always necessary. Regarding packing of packet data, the second Packing transmission processing unit 63B refers to buf_physaddr, data_off, data_len of the mbuf structure to confirm the position and size of the packet data in the packet buffer. The second Packing transmission processing unit 63B determines that packing is necessary when the position and size do not satisfy the constraint of the bus unit 11, and determines that packing is unnecessary when the position and size satisfy the constraint. When it is determined that the packing is unnecessary, the second Packing transmission processing unit 63B instructs the second packet data transmission unit 64 to write the packet data (shift to step S224). At that time, the second Packing transmission processing unit 63 specifies the entire packet data as the write target area.

第二Packing送信処理部63Bは、上述したパッキングに従い、mbuf構造体およびパケットデータに関し必要に応じてPackingデータを生成する(ステップS222)。 The second Packing transmission processing unit 63B generates Packing data for the mbuf structure and the packet data as needed according to the packing described above (step S222).

第二Packing送信処理部63Bは、生成したPackingデータのEnqueueを第二Enqueue処理部66に要求し(mbuf構造体、パケットデータの順)、第二Enqueue処理部66はEnqueueを行う(ステップS223)。その後、第二Packing送信処理部63Bはパケットデータ(バス部11の制約を満たす部分のみ)の書き込みを第二パケットデータ送信部64に指示する。 The second Packing transmission processing unit 63B requests the Enqueue of the generated Packing data from the second Enqueue processing unit 66 (mbuf structure, packet data order), and the second Enqueue processing unit 66 performs Enqueue (step S223). .. After that, the second Packing transmission processing unit 63B instructs the second packet data transmission unit 64 to write the packet data (only the portion that satisfies the constraint of the bus unit 11).

第二パケットデータ送信部64は、メモリアクセス部73を介してメモリ部10に指定されたパケットデータを書き込む(ステップS224)。 The second packet data transmission unit 64 writes the designated packet data in the memory unit 10 via the memory access unit 73 (step S224).

ステップS221において、mbuf構造体に関しパッキングを行わないとした場合、第二Packing送信処理部63Bは、mbuf構造体の書き込みが必要と判定し、第二mbuf送信部65にmbuf構造体ポインタおよびmbuf構造体を渡して書き込みを指示する(ステップS225)。 In step S221, when the mbuf structure is not packed, the second Packing transmission processing unit 63B determines that the mbuf structure needs to be written, and the second mbuf transmission unit 65 informs the second mbuf structure unit 65 of the mbuf structure pointer and the mbuf structure. The body is passed over to instruct writing (step S225).

第二mbuf送信部65は、メモリアクセス部73を介してメモリ部10にmbuf構造体を書き込む(ステップS226)。 The second mbuf transmission unit 65 writes the mbuf structure in the memory unit 10 via the memory access unit 73 (step S226).

第二Packing送信処理部63Bは、mbuf構造体ポインタのリングキューへのEnqueueを第二Enqueue処理部66に要求し、第二Enqueue処理部66はEnqueue処理を行う(ステップS227)。 The second Packing transmission processing unit 63B requests the second Enqueue processing unit 66 to Enqueue the mbuf structure pointer to the ring queue, and the second Enqueue processing unit 66 performs Enqueue processing (step S227).

<(E)第一データ処理部20によるパケット受信処理>
図26のフローチャートを用いて、情報処理装置2の第一データ処理部20が第二データ処理部30からパケットを受信する処理について説明する。
<(E) Packet Reception Processing by First Data Processing Unit 20>
A process in which the first data processing unit 20 of the information processing device 2 receives a packet from the second data processing unit 30 will be described with reference to the flowchart of FIG.

第一データ処理部20は、リングキューのアドレス(mbuf構造体ポインタ用)をパラメタとして、第一IF部41にDequeueを要求する(ステップS231)。 The first data processing unit 20 requests the first IF unit 41 for Dequeue using the ring queue address (for the mbuf structure pointer) as a parameter (step S231).

当該要求は第一IF部41によって第一Packing受信処理部45Bに転送され、第一Packing受信処理部45Bは、第一Dequeue処理部46にmbuf構造体ポインタのDequeueを要求し、第一Dequeue処理部46は、リングキューからmbuf構造体ポインタをDequeueする(ステップS232)。 The request is transferred to the first Packing reception processing unit 45B by the first IF unit 41, and the first Packing reception processing unit 45B requests the first Dequeue processing unit 46 to Dequeue the mbuf structure pointer, and performs the first Dequeue processing. The unit 46 dequeues the mbuf structure pointer from the ring queue (step S232).

第一Packing受信処理部45Bは、第一Dequeue処理部46にPackingデータのDequeueを要求し、第一Dequeue処理部46は、リングキューからPackingデータをDequeueする(ステップS233)。なお、第一Packing受信処理部45Bは、Packingデータ用のリングキューのアドレスを、mbuf構造体ポインタ用リングキューのp_ring_ptrフィールドから取得する。 The first Packing reception processing unit 45B requests the first Dequeue processing unit 46 to dequeue the Packing data, and the first Dequeue processing unit 46 dequeues the Packing data from the ring queue (step S233). The first Packing reception processing unit 45B acquires the address of the Packing data ring queue from the p_ring_ptr field of the mbuf structure pointer ring queue.

第一Packing受信処理部45Bは、DequeueされたPackingデータがmbuf構造体に関するものか否かを判定する(ステップ223)。第一Packing受信処理部45Bは、最初の2Bitがいずれも0である場合に、当該Packingデータがmbuf構造体に関するものであると判定する。 The first Packing reception processing unit 45B determines whether or not the Dequeued Packing data relates to the mbuf structure (step 223). The first Packing reception processing unit 45B determines that the Packing data is related to the mbuf structure when the first 2 Bits are all 0.

Packingデータがmbuf構造体に関するものであった場合、第一Packing受信処理部45Bは、当該Packingデータからmbuf構造体を更新する(ステップS235)。具体的には、第一Packing受信処理部45Bは、mbuf構造体の各フィールドのうち、Packingデータに含まれるフィールドについて、Packingデータに含まれる値で更新する。 When the Packing data is related to the mbuf structure, the first Packing reception processing unit 45B updates the mbuf structure from the Packing data (step S235). Specifically, the first Packing reception processing unit 45B updates the fields included in the Packing data among the fields of the mbuf structure with the values included in the Packing data.

第一Packing受信処理部45Bは、当該パケットデータに関しパッキングが利用されているかを判定する(ステップS236)。第一Packing受信処理部45Bは、ステップS151における第二Packing送信処理部63と同様の方法で判定を行う。パケットデータにパッキングが利用されていない場合、本処理を終了し、ステップS232でmbuf構造体ポインタを、第1IF部41を介して第一データ処理部20に通知する。 The first Packing reception processing unit 45B determines whether packing is used for the packet data (step S236). The first Packing reception processing unit 45B makes a determination by the same method as the second Packing transmission processing unit 63 in step S151. When packing is not used for the packet data, this process is terminated, and the mbuf structure pointer is notified to the first data processing unit 20 via the first IF unit 41 in step S232.

パケットデータにパッキングが利用されている場合、第一Packing受信処理部45Bは、第一Dequeue処理部46に依頼して、パケットデータに関するPackingデータをDequeueする(ステップS237)。なお、本ステップは、ステップS233においてDequeueされたPackingデータがmbuf構造体に関するものであった場合にのみ行う。 When packing is used for the packet data, the first Packing reception processing unit 45B requests the first Dequeue processing unit 46 to dequeue the Packing data related to the packet data (step S237). Note that this step is performed only when the Packing data dequeued in step S233 is related to the mbuf structure.

第一Packing受信処理部45Bは、DequeueされたPackingデータを用いてパケットデータを更新する(ステップS238)。具体的には、第一Packing受信処理部45は、Packingデータにパケットデータ先頭側のデータが含まれる場合、当該データを、mbuf構造体のbuf_addrフィールドおよびdata_offフィールドの値を足して得られるアドレスに書き込む。また、第一Packing受信処理部45は、Packingデータにパケットデータ末尾側のデータが含まれる場合、当該データを、以下により得られるアドレスに書き込む。
mbuf構造体のbuf_addrフィールド値+data_offフィールド値+data_lenフィールド値−当該データのサイズ
The first Packing reception processing unit 45B updates the packet data using the dequeued Packing data (step S238). Specifically, when the Packing data includes data on the packet data head side, the first Packing reception processing unit 45 adds the data to the address obtained by adding the values of the buf_addr field and the data_off field of the mbuf structure. Write. In addition, when the Packing data includes the data on the end side of the packet data, the first Packing reception processing unit 45 writes the data in the address obtained as follows.
buf_addr field value of mbuf structure + data_off field value + data_len field value-size of the data

第一Packing受信処理部45は、本処理を終了し、ステップS232で得られたmbuf構造体ポインタを、第一IF部41を介して第一データ処理部20に通知する。 The first Packing reception processing unit 45 ends this processing and notifies the first data processing unit 20 of the mbuf structure pointer obtained in step S232 via the first IF unit 41.

以上に詳細に説明したように、本実施の形態においては、次のような効果が得られる。 As described in detail above, the following effects can be obtained in the present embodiment.

本実施の形態によれば、第1の実施の形態に加え、mbuf構造体をもPackingデータに含める。第一送受信処理部40Bは、mbuf構造体の一部を含むPackingデータを生成し第二送受信処理部60Bにリングキューを介して送る。また、第一送受信処理部40Bは、第二送受信処理部60Bからリングキューを介して受け取ったPackingデータに含まれる情報を元にメモリ部10に記憶されているmbuf構造体を更新する。第二送受信処理部60Bは、リングキューを介して第一送受信処理部40Bから受け取ったPackingデータに含まれる情報からmbuf構造体を生成し、メモリ部10に記憶されているmbuf構造体を直接参照しない。また、第二送受信処理部60Bは、mbuf構造体の一部を含むPackingデータを生成し第一送受信処理部40Bにリングキューを介して送る。 According to the present embodiment, in addition to the first embodiment, the mbuf structure is also included in the Packing data. The first transmission/reception processing unit 40B generates Packing data including a part of the mbuf structure and sends it to the second transmission/reception processing unit 60B via the ring queue. Further, the first transmission/reception processing unit 40B updates the mbuf structure stored in the memory unit 10 based on the information included in the Packing data received from the second transmission/reception processing unit 60B via the ring queue. The second transmission/reception processing unit 60B generates an mbuf structure from the information included in the Packing data received from the first transmission/reception processing unit 40B via the ring queue, and directly refers to the mbuf structure stored in the memory unit 10. do not do. The second transmission/reception processing unit 60B also generates Packing data including a part of the mbuf structure and sends it to the first transmission/reception processing unit 40B via the ring queue.

これにより、バス部11上で通信するデータ量を削減でき、かつ、バス部11の制約を満たさない部分のパケットデータおよびmbuf構造体の一部はPackingデータとしてバス部11の制約を満たす状態で通信されることとなり、バス利用効率を改善もしくはその低下を抑制することができる。 As a result, the amount of data to be communicated on the bus unit 11 can be reduced, and the packet data and the part of the mbuf structure that does not satisfy the constraints of the bus unit 11 can be used as Packing data while satisfying the constraints of the bus unit 11. As a result of communication, the bus utilization efficiency can be improved or its degradation can be suppressed.

よって、本実施の形態によれば、モジュール間でメモリおよびバスを介したデータ通信を行う際のバス利用効率を改善もしくはその低下を抑制する効果を得ることができる。 Therefore, according to the present embodiment, it is possible to obtain the effect of improving the bus utilization efficiency when suppressing data communication between the modules via the memory and the bus or suppressing the decrease.

また、本実施の形態の説明では、情報処理装置2が、mbuf構造体に関するパッキングを常に行う例を示したが本発明はこれに限定されるものではない。他の例として、情報処理装置2は、パケットサイズが所定の値より小さい場合にのみmbuf構造体に関するパッキングが使用されてもよい。また、更なるほかの例として、情報処理装置2は、パケットデータに関しパッキングを行う場合にのみmbuf構造体に関するパッキングを使用してもよい。そのような構成をとることで、パッキングによる負荷を下げる効果が得られる。その場合、第一送受信処理部40Bおよび第二送受信処理部60Bは、処理するパケット毎に当該パケットに関しmbuf構造体に関するパッキングを利用するかしないかを示すフラグを設ける。当該フラグを参照して当該パケットに関しパッキングを行うか行わないかを切り替えればよい。第一送受信処理部40Bおよび第二送受信処理部60Bは、例えば、当該フラグをmbuf構造体ポインタもしくはmbuf構造体のいずれかの場所に記録する。
また、本実施の形態の説明では、情報処理装置2が、mbuf構造体ポインタ用リングキューとは別にPackingデータ用リングキューを生成しPackingデータの通信に使用する例を示したが、本発明はこれに限定されるものではない。他の例として、情報処理装置2は、mbuf構造体ポインタ用リングキューを用いてPackingデータを通信してもよい。その場合、第一送受信処理部40Bおよび第二送受信処理部60Bは、PackingデータのEnqueueを、Packingデータ用のリングキューに対してではなくmbuf構造体用のリングキューに対して行う。また、第一送受信処理部40Bおよび第二送受信処理部60Bは、PackingデータのDequeueを、Packingデータ用のリングキューからではなくmbuf構造体用のリングキューから行う。
また、情報処理装置2は、mbuf構造体ポインタ用リングキューを用いてPackingデータを通信する場合に、mbuf構造体ポインタとPackingデータとを交互にリングキューを用いて通信する代わりに、所定の数のパケット毎に、mbuf構造体ポインタを連続して通信しても良い。この場合、その後、それらに関するPackingデータ(mbuf構造体の一部)を連続して通信し、その後それらに関するPackingデータ(パケットデータ)を連続して通信することとしてもよい。そのような構成をとり、さらに、第一Packing受信処理部45Bがmbuf構造体ポインタをDequeueした際に(ステップS232)、当該mbuf構造体ポインタに対してプリフェッチ命令(先読み命令)を実行し、第一Packing受信処理部45BがPackingデータ(mbuf構造体の一部)をDequeueした際に(ステップS233)、当該パケットデータに対してプリフェッチ命令(先読み命令)を実行する。これによって、CPUキャッシュミスを抑制することが出来る。
Further, in the description of the present embodiment, an example has been shown in which the information processing device 2 always performs packing regarding the mbuf structure, but the present invention is not limited to this. As another example, the information processing device 2 may use the packing related to the mbuf structure only when the packet size is smaller than a predetermined value. Further, as still another example, the information processing device 2 may use the packing related to the mbuf structure only when packing related to the packet data. With such a configuration, the effect of reducing the load due to packing can be obtained. In that case, the first transmission/reception processing unit 40B and the second transmission/reception processing unit 60B provide, for each packet to be processed, a flag indicating whether or not to use packing regarding the mbuf structure for the packet. It suffices to switch whether packing is performed or not for the packet with reference to the flag. The first transmission/reception processing unit 40B and the second transmission/reception processing unit 60B, for example, record the flag in any place of the mbuf structure pointer or the mbuf structure.
Further, in the description of the present embodiment, an example in which the information processing device 2 generates a Packing data ring queue separately from the mbuf structure pointer ring queue and uses it for Packing data communication has been described. It is not limited to this. As another example, the information processing device 2 may communicate the Packing data using the ring queue for the mbuf structure pointer. In that case, the first transmission/reception processing unit 40B and the second transmission/reception processing unit 60B perform Enqueue of Packing data not on the Ring queue for Packing data but on the ring queue for mbuf structure. Further, the first transmission/reception processing unit 40B and the second transmission/reception processing unit 60B perform Dequeue of Packing data from the ring queue for the mbuf structure instead of the ring queue for Packing data.
Further, when communicating the Packing data by using the ring queue for the mbuf structure pointer, the information processing device 2 does not communicate by alternately using the ring queue for the mbuf structure pointer and the Packing data, but a predetermined number. The mbuf structure pointer may be continuously communicated for each packet. In this case, thereafter, Packing data (a part of the mbuf structure) regarding them may be continuously communicated, and then Packing data (packet data) regarding them may be continuously communicated. With such a configuration, when the first Packing reception processing unit 45B dequeues the mbuf structure pointer (step S232), a prefetch instruction (prefetch instruction) is executed for the mbuf structure pointer, and When the one Packing reception processing unit 45B dequeues the Packing data (a part of the mbuf structure) (step S233), the prefetch instruction (prefetch instruction) is executed for the packet data. This can suppress CPU cache misses.

上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限らない。
[付記1]
予め定められた通信単位で通信を行うバスと、
当該バスに接続されたメモリと、
前記メモリに対して前記バスを介してデータを送受する通信装置を備え、
前記通信装置は、前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位に合致しない場合に、前記バスの通信単位に合致するように、合致しないデータを複数のデータセット分まとめるパッキングを行なうことを特徴とする情報処理装置。
この場合、前記パッキングは、前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位未満の場合、及び前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位よりも大きい場合に実行される。
The whole or part of the exemplary embodiments disclosed above can be described as, but not limited to, the following supplementary notes.
[Appendix 1]
A bus that performs communication in a predetermined communication unit,
A memory connected to the bus,
A communication device that sends and receives data to and from the memory via the bus;
The communication device packs unmatched data into a plurality of data sets so as to match the communication unit of the bus when at least one of the data and the metadata regarding the attribute does not match the communication unit of the bus. An information processing apparatus characterized by performing.
In this case, the packing is performed when at least one of the metadata regarding the data and its attribute is less than the communication unit of the bus, and when at least one of the metadata regarding the data and its attribute is larger than the communication unit of the bus. To be executed.

[付記2]
前記パッキングは、前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位未満の場合、及び前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位よりも大きい場合に実行されることを特徴とする付記1に記載の情報処理装置。
[Appendix 2]
The packing is performed when at least one of the metadata regarding the data and its attribute is less than the communication unit of the bus, and when at least one of the metadata regarding the data and its attribute is larger than the communication unit of the bus. The information processing apparatus according to appendix 1, characterized in that:

[付記3]
前記通信装置は、前記データ及び前記メタデータの少なくとも一方が前記バスの通信単位未満である場合、前記通信単位に対して端数分となる端数データを前記通信単位となるように複数のデータセット分まとめて、前記バスを介して、前記メモリの連続領域に格納する送信装置を備えていることを特徴とする付記1又は2記載の情報処理装置。
[Appendix 3]
When at least one of the data and the metadata is less than the communication unit of the bus, the communication device divides the fractional data, which is fractional with respect to the communication unit, into a plurality of data sets so as to be the communication unit. The information processing device according to appendix 1 or 2, further comprising a transmission device that stores the data in a continuous area of the memory via the bus.

[付記4]
前記通信装置は、通信すべき前記データのうち、前記端数データについて前記連続領域から読み込む受信装置を備えていることを特徴とする付記1〜3のいずれか一項に記載の情報処理装置。
[Appendix 4]
The information processing device according to any one of appendices 1 to 3, wherein the communication device includes a receiving device that reads the fractional data of the data to be communicated from the continuous area.

[付記5]
前記通信装置は、前記データと、当該データの属性に関するメタデータをも複数のデータセット分まとめることを特徴とする付記1乃至4のいずれかに記載の情報処理装置。
[Appendix 5]
5. The information processing apparatus according to any one of appendices 1 to 4, wherein the communication device collects the data and metadata regarding an attribute of the data for a plurality of data sets.

[付記6]
付記1〜5のいずれか一項において、前記メモリはポインタをエントリに用いるリングキュー、当該ポインタにより前記データを間接的に参照できるパケットデータを記憶するパケットバッファ、及び、前記パケットデータに関する前記メタデータをmbuf形式で記憶するmbuf構造体を含むことを特徴とする請求項5記載の情報処理装置。
[Appendix 6]
In any one of appendices 1 to 5, the memory is a ring queue that uses a pointer as an entry, a packet buffer that stores packet data that can indirectly refer to the data by the pointer, and the metadata related to the packet data. The information processing apparatus according to claim 5, further comprising an mbuf structure that stores the mbuf format.

[付記7]
予め定められた通信単位で通信を行うバスと、当該バスに接続されたメモリと、前記メモリに対して前記バスを介してデータを送受する通信装置を備える情報処理装置において、
前記通信装置によって、前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位に合致しない場合に、前記バスの通信単位に合致するように、合致しないデータを複数のデータセット分まとめるパッキングを行なう
ことを特徴とする通信方法。
[Appendix 7]
In an information processing device including a bus that performs communication in a predetermined communication unit, a memory connected to the bus, and a communication device that transmits and receives data to and from the memory via the bus,
When the communication device does not match at least one of the data and the metadata regarding the attribute to the communication unit of the bus, packing that does not match the plurality of data sets so as to match the communication unit of the bus. A communication method characterized by performing.

[付記8]
前記通信装置が複数の前記データに係るポインタを前記メモリの連続領域(ポインタデータ領域)に格納する送信装置を備える場合に、
前記送信装置によって、前記データもしくは前記データの一部である通信すべきデータの開始アドレスおよびサイズおよびいずれかもしくは両方が前記メモリとの通信に使用されるバスの通信単位未満である場合に、前記通信単位に関し端数分となる前記通信すべきデータである端数データを、前記複数のデータセット分まとめて前記メモリの連続領域に格納し、
前記通信装置の受信装置によって、前記通信すべきデータのうち、前記端数データについて前記連続領域から読み込むことを特徴とする請求項7記載の通信方法。
[Appendix 8]
When the communication device includes a transmission device that stores pointers relating to a plurality of the data in a continuous area (pointer data area) of the memory,
When the starting address and/or the size and/or both of the data to be communicated, which is the data or a part of the data, are less than the communication unit of the bus used for communication with the memory by the transmitting device, Fractional data, which is the data to be communicated that is fractional with respect to the communication unit, is collectively stored in the continuous area of the memory for the plurality of data sets,
The communication method according to claim 7, wherein the reception device of the communication device reads the fractional data of the data to be communicated from the continuous area.

[付記9]
前記ポインタは前記データへのポインタを少なくとも含むメタデータへのポインタであり、前記送信装置は前記メタデータの一部を前記複数のデータセット分まとめて前記連続領域に格納し、
前記受信装置によって、
前記メタデータの一部を前記連続領域から読み込む、
ことを特徴とする付記8記載の通信方法。
[Appendix 9]
The pointer is a pointer to metadata including at least a pointer to the data, the transmission device collectively stores a portion of the metadata in the continuous area for the plurality of data sets,
By the receiving device,
Reading a part of the metadata from the continuous area,
The communication method according to appendix 8, characterized in that

[付記10]
前記送信装置は、所定の条件が満たされるデータについてのみ前記端数データおよび前記メタデータの一部のいずれかもしくは両方を前記連続領域に格納する、
ことを特徴とする付記7記載の通信方法。
[Appendix 10]
The transmitting device stores either or both of the fractional data and a part of the metadata in the continuous area only for data satisfying a predetermined condition,
The communication method according to appendix 7, characterized in that

[付記11]
前記所定の条件は、前記通信すべきデータのサイズが所定の値より小さい場合であることを特徴とする付記10記載の通信方法。
[Appendix 11]
11. The communication method according to appendix 10, wherein the predetermined condition is that the size of the data to be communicated is smaller than a predetermined value.

[付記12]
前記送信装置および前記受信装置は、前記ポインタデータ領域および前記連続領域として同じメモリ領域を使用する、
ことを特徴とする付記7から11のいずれか一項記載の通信方法。
[Appendix 12]
The transmitting device and the receiving device use the same memory area as the pointer data area and the continuous area,
12. The communication method according to any one of appendices 7 to 11, characterized in that.

[付記13]
予め定められた通信単位で通信を行うバスと、当該バスに接続されたメモリと、前記メモリに対して前記バスを介してデータを送受する通信装置を備えるコンピュータに、前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位に合致しない場合に、前記バスの通信単位に合致するように、合致しないデータを複数のデータセット分まとめるパッキングを実行させることを特徴とするコンピュータプログラム。
[Appendix 13]
A computer equipped with a bus that performs communication in a predetermined communication unit, a memory connected to the bus, and a communication device that transmits and receives data to and from the memory via a bus, and A computer program, wherein when at least one of the data does not match the communication unit of the bus, packing is performed to collect the unmatched data for a plurality of data sets so as to match the communication unit of the bus.

本発明は、複数のCPUと、通信単位において制約のあるバス或いは媒体を備えた通信システムにおいて、バス或いは媒体の利用効率を向上させることができる。 INDUSTRIAL APPLICABILITY The present invention can improve utilization efficiency of a bus or a medium in a communication system including a plurality of CPUs and a bus or medium in which communication units are restricted.

1 情報処理装置
2 情報処理装置
10 メモリ部
11 バス部
20 第一データ処理部
30 第二データ処理部
40 第一送受信処理部
40B 第一送受信処理部
41 第一IF部
42 第一管理部
43 第一Packing送信処理部
43B 第一Packing送信処理部
44 第一Enqueue処理部
45 第一Packing受信処理部
45B 第一Packing受信処理部
46 第一Dequeue処理部
60 第二送受信処理部
60B 第二送受信処理部
61 第二IF部
63 第二Packing送信処理部
63B 第二Packing送信処理部
64 第二パケットデータ送信部
65 第二mbuf送信部
66 第二Enqueue処理部
68 第二Dequeue処理部
69 第二mbuf受信部
70 第二パケットデータ受信部
71 第二Packing受信処理部
71B 第二Packing受信処理部
73 メモリアクセス部
1 Information processing apparatus 2 Information processing apparatus 10 Memory section 11 Bus section 20 First data processing section 30 Second data processing section 40 First transmission/reception processing section 40B First transmission/reception processing section 41 First IF section 42 First management section 43th One Packing transmission processing unit 43B First Packing transmission processing unit 44 First Enqueue processing unit 45 First Packing reception processing unit 45B First Packing reception processing unit 46 First Dequeue processing unit 60 Second transmission/reception processing unit 60B Second transmission/reception processing unit 61 Second IF Unit 63 Second Packing Transmission Processor 63B Second Packing Transmission Processor 64 Second Packet Data Transmitter 65 Second mbuf Transmitter 66 Second Enqueue Processor 68 Second Dequeue Processor 69 Second mbuf Receiver 70 Second Packet Data Receiving Section 71 Second Packing Reception Processing Section 71B Second Packing Reception Processing Section 73 Memory Access Section

Claims (10)

予め定められた通信単位で通信を行うバスと、
当該バスに接続されたメモリと、
前記メモリに対して前記バスを介してデータを送受する通信装置を備え、
前記通信装置は、前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位に合致しない場合に、前記バスの通信単位に合致するように、合致しないデータを複数のデータセット分まとめるパッキングを行なうことを特徴とする情報処理装置。
A bus that performs communication in a predetermined communication unit,
A memory connected to the bus,
A communication device that sends and receives data to and from the memory via the bus;
The communication device packs unmatched data into a plurality of data sets so as to match the communication unit of the bus when at least one of the data and the metadata regarding the attribute does not match the communication unit of the bus. An information processing apparatus characterized by performing.
前記パッキングは、前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位未満の場合、及び前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位よりも大きい場合に実行されることを特徴とする請求項1に記載の情報処理装置。 The packing is performed when at least one of the metadata regarding the data and its attribute is less than the communication unit of the bus, and when at least one of the metadata regarding the data and its attribute is larger than the communication unit of the bus. The information processing apparatus according to claim 1, wherein: 前記通信装置は、前記データ及び前記メタデータの少なくとも一方が前記バスの通信単位未満である場合、前記通信単位に対して端数分となる端数データを前記通信単位となるように複数のデータセット分まとめて、前記バスを介して、前記メモリの連続領域に格納する送信装置を備えていることを特徴とする請求項1又は2記載の情報処理装置。 When at least one of the data and the metadata is less than the communication unit of the bus, the communication device divides the fractional data, which is fractional with respect to the communication unit, into a plurality of data sets so as to be the communication unit. The information processing apparatus according to claim 1 or 2, further comprising: a transmission device that stores the data in a continuous area of the memory via the bus. 前記通信装置は、通信すべき前記データのうち、前記端数データについて前記連続領域から読み込む受信装置を備えていることを特徴とする請求項1〜3のいずれか一項に記載の情報処理装置。 The information processing apparatus according to any one of claims 1 to 3, wherein the communication apparatus includes a receiving apparatus that reads the fractional data of the data to be communicated from the continuous area. 前記通信装置は、前記データと、当該データの属性に関するメタデータをも複数のデータセット分まとめることを特徴とする請求項1乃至請求項4のいずれかに記載の情報処理装置。 The information processing apparatus according to claim 1, wherein the communication apparatus collects the data and metadata regarding attributes of the data for a plurality of data sets. 請求項1〜5のいずれか一項において、前記メモリはポインタをエントリに用いるリングキュー、当該ポインタにより前記データを間接的に参照できるパケットデータを記憶するパケットバッファ、及び、前記パケットデータに関する前記メタデータをmbuf形式で記憶するmbuf構造体を含むことを特徴とする請求項5記載の情報処理装置。 6. The ring queue according to claim 1, wherein the memory uses a pointer for an entry, a packet buffer that stores packet data that can indirectly refer to the data by the pointer, and the meta data related to the packet data. The information processing apparatus according to claim 5, further comprising an mbuf structure that stores data in the mbuf format. 予め定められた通信単位で通信を行うバスと、当該バスに接続されたメモリと、前記メモリに対して前記バスを介してデータを送受する通信装置を備える情報処理装置において、
前記通信装置によって、前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位に合致しない場合に、前記バスの通信単位に合致するように、合致しないデータを複数のデータセット分まとめるパッキングを行なう
ことを特徴とする通信方法。
In an information processing device including a bus that performs communication in a predetermined communication unit, a memory connected to the bus, and a communication device that transmits and receives data to and from the memory via the bus,
When the communication device does not match at least one of the data and the metadata regarding the attribute to the communication unit of the bus, packing that does not match the plurality of data sets so as to match the communication unit of the bus. A communication method characterized by performing.
前記通信装置が複数の前記データに係るポインタを前記メモリの連続領域(ポインタデータ領域)に格納する送信装置を備える場合に、
前記送信装置によって、前記データもしくは前記データの一部である通信すべきデータの開始アドレスおよびサイズおよびいずれかもしくは両方が前記メモリとの通信に使用されるバスの通信単位未満である場合に、前記通信単位に関し端数分となる前記通信すべきデータである端数データを、前記複数のデータセット分まとめて前記メモリの連続領域に格納し、
前記通信装置の受信装置によって、前記通信すべきデータのうち、前記端数データについて前記連続領域から読み込むことを特徴とする請求項7記載の通信方法。
When the communication device includes a transmission device that stores pointers relating to a plurality of the data in a continuous area (pointer data area) of the memory,
When the starting address and/or the size and/or both of the data to be communicated, which is the data or a part of the data, are less than the communication unit of the bus used for communication with the memory by the transmitting device, Fractional data, which is the data to be communicated that is fractional with respect to the communication unit, is collectively stored in the continuous area of the memory for the plurality of data sets,
The communication method according to claim 7, wherein the reception device of the communication device reads the fractional data of the data to be communicated from the continuous area.
前記ポインタは前記データへのポインタを少なくとも含むメタデータへのポインタであり、前記送信装置は前記メタデータの一部を前記複数のデータセット分まとめて前記連続領域に格納し、
前記受信装置によって、
前記メタデータの一部を前記連続領域から読み込む、
ことを特徴とする請求項8記載の通信方法。
The pointer is a pointer to metadata including at least a pointer to the data, the transmission device collectively stores a portion of the metadata in the continuous area for the plurality of data sets,
By the receiving device,
Reading a part of the metadata from the continuous area,
9. The communication method according to claim 8, wherein
予め定められた通信単位で通信を行うバスと、当該バスに接続されたメモリと、前記メモリに対して前記バスを介してデータを送受する通信装置を備えるコンピュータに、前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位に合致しない場合に、前記バスの通信単位に合致するように、合致しないデータを複数のデータセット分まとめるパッキングを実行させることを特徴とするコンピュータプログラム。 A computer equipped with a bus that performs communication in a predetermined communication unit, a memory connected to the bus, and a communication device that transmits and receives data to and from the memory via a bus, and A computer program, wherein when at least one of the data does not match the communication unit of the bus, packing is performed to collect the unmatched data for a plurality of data sets so as to match the communication unit of the bus.
JP2017054492A 2017-03-21 2017-03-21 Information processing device, method, and program Pending JP2020106869A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017054492A JP2020106869A (en) 2017-03-21 2017-03-21 Information processing device, method, and program
PCT/JP2018/009726 WO2018173856A1 (en) 2017-03-21 2018-03-13 Information processing device, method, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017054492A JP2020106869A (en) 2017-03-21 2017-03-21 Information processing device, method, and program

Publications (1)

Publication Number Publication Date
JP2020106869A true JP2020106869A (en) 2020-07-09

Family

ID=63585368

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017054492A Pending JP2020106869A (en) 2017-03-21 2017-03-21 Information processing device, method, and program

Country Status (2)

Country Link
JP (1) JP2020106869A (en)
WO (1) WO2018173856A1 (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7730244B1 (en) * 2008-03-27 2010-06-01 Xilinx, Inc. Translation of commands in an interconnection of an embedded processor block core in an integrated circuit
US10135914B2 (en) * 2013-04-16 2018-11-20 Amazon Technologies, Inc. Connection publishing in a distributed load balancer
JP6210743B2 (en) * 2013-06-10 2017-10-11 オリンパス株式会社 Data processing device and data transfer control device

Also Published As

Publication number Publication date
WO2018173856A1 (en) 2018-09-27

Similar Documents

Publication Publication Date Title
USRE47756E1 (en) High performance memory based communications interface
US10956346B1 (en) Storage system having an in-line hardware accelerator
US7957392B2 (en) Method and apparatus for high-performance bonding resequencing
US6279041B1 (en) Methods, systems and computer program products for differencing data communications using a message queue
US10924591B2 (en) Low-latency link compression schemes
CN112612734B (en) File transmission method, device, computer equipment and storage medium
US10142398B2 (en) Method and system for file transfer over a messaging infrastructure
US8819389B2 (en) Administering registered virtual addresses in a hybrid computing environment including maintaining a watch list of currently registered virtual addresses by an operating system
US8423689B2 (en) Communication control device, information processing device and computer program product
EP2538334B1 (en) Cache streaming system
US11860861B2 (en) Growing dynamic shared memory hash table
CN108897630B (en) OpenCL-based global memory caching method, system and device
US11822811B2 (en) Method, electronic device and computer program product for processing data
US20140047188A1 (en) Method and Multi-Core Communication Processor for Replacing Data in System Cache
JP2019091483A (en) SYSTEM AND METHOD FOR MANAGING AND SUPPORTING VIRTUAL HOST BUS ADAPTOR (vHBA) OVER INFINIBAND (IB), AND SYSTEM AND METHOD FOR SUPPORTING EFFICIENT BUFFER USAGE WITH SINGLE EXTERNAL MEMORY INTERFACE
US8990422B1 (en) TCP segmentation offload (TSO) using a hybrid approach of manipulating memory pointers and actual packet data
WO2005036313A2 (en) Queue register configuration structure
JP2020106869A (en) Information processing device, method, and program
CN114817090B (en) MCU communication management method and system with low RAM consumption
CN113422792B (en) Data transmission method, device, electronic equipment and computer storage medium
CN110958216A (en) Secure online network packet transmission
CN113227984A (en) Processing chip, method and related equipment
US12026113B2 (en) Packet processing device and packet processing method
WO2023184513A1 (en) Reconfigurable packet direct memory access to support multiple descriptor ring specifications
CN117834570A (en) Data packet processing method and device of transmission system, electronic equipment and storage medium