JP2020106869A - Information processing device, method, and program - Google Patents
Information processing device, method, and program Download PDFInfo
- 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
Links
Images
Landscapes
- Bus Control (AREA)
- Information Transfer Systems (AREA)
Abstract
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
特許文献1は、周期転送用データと非周期転送用データをそれぞれ第1及び第2のポインタと共に格納するメモリと、当該メモリと通信バスに接続されたデータ転送回路とを備えたシステムを開示している。特許文献1は、非周期転送用データを通信バスに転送する際、第2のポインタで指示するデータ長の転送を完了できなかった場合、制御部でデータ長を更新して、通信バスに転送している。
特許文献2は、DPDK及びmbuf形式を用いた情報処理装置を開示している。
図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は通信バスにおける制約及び制約による通信バスの利用効率の低下について何等考慮していない。
一方、特許文献2は、DPDK及びmbuf形式を用いて通信を行う情報処理装置を開示している。しかしながら、特許文献1はバスによる通信に伴う制約及びバスの利用効率の低下について指摘されていない。
On the other hand,
本発明の目的は、かかる問題に鑑みてなされたものであり、モジュール間でメモリおよびバスを介したデータ通信を行う際のバス利用効率を改善もしくはその低下を抑制することができる情報処理装置、方法、及び、プログラムを提供することにある。 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.
以下、本発明の実施の形態について、図面を参照して詳細に説明する。 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
まず、図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
ここで、通信制御部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
このように、本発明に係る情報処理装置は、バス部11における通信単位に合致するように、データを処理する通信制御部12を有している。以下、本発明の原理に基づく情報処理装置をより具体的に説明する。
As described above, the information processing apparatus according to the present invention includes the
図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
メモリ部10は、データを記憶するメモリであり、リングキューやmbuf構造体、パケットデータ等を記憶する。
The
バス部11は、メモリ部10と、例えば第一データ処理部および第一送受信処理部40を実現するハードウェア(図示されない)や第二送受信処理部60を実現するハードウェア(図示されない)と、の間でデータ通信(リード、ライト)を仲介するバスである。バス部11による通信には以下のいずれかもしくは両方の制約が課せられる。
・通信するサイズはある最小単位サイズの倍数でなければならない。
・通信する開始アドレス(リードやライトの先頭アドレス)はある最小単位サイズの倍数でなければならない。
The
-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
第一データ処理部20は、パケットデータを処理する。第一データ処理部20は、メモリ部10にパケットデータを記憶させる際にmbuf形式を用いる。第一データ処理部20は、第二データ処理部30との間でリングキューを用いて、パケットを送受信する際、第一送受信処理部40に送受信を要求する。第一データ処理部20は、リングキュー(mbuf構造体ポインタ用)の生成や解放を第一送受信処理部40に要求する。第一送受信処理部40は、生成したリングキューに識別子としてキューIDを割り当て、後述する第二Enqueue処理部66および第二Dequeue処理部68に、リングキューのアドレスおよびキューIDの組を設定する。
The first
第二データ処理部30は、パケットデータを処理する。第二データ処理部30は、第一データ処理部20との間でリングキューを用いて、パケットを送受信する際、第二送受信処理部60に送受信を要求する。
The second
第一送受信処理部40は、リングキューを用いてデータを第二送受信処理部60との間で通信する。その詳細は後述する。
The first transmission/
第二送受信処理部60は、リングキューを用いてデータを第一送受信処理部40との間で通信する。その詳細は後述する。
The second transmission/
第一送受信処理部40および第一データ処理部20は、例えば、CPU(図示されない)によって実行されるソフトウェアプログラムとして実現されてもよい。また、第二送受信処理部60および第二データ処理部30は、例えば、アクセラレータHW(図示されない)として実現されてもよい。当該アクセラレータHWとして、例えば、FPGA(Field-Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)、コプロセッサ、CPU、のいずれかを用いてもよい。
The first transmission/
本実施の形態の説明においては、第一送受信処理部40および第一データ処理部20はCPUおよびソフトウェアプログラムとして実現され、第二送受信処理部60および第二データ処理部30はFPGAとして実現されるものとする。
In the description of the present embodiment, the first transmission/
ここで、本実施の形態が行う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
本実施の形態では、複数パケットデータからの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
図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
図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 (
例えば、図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/
第一IF部41は、第一データ処理部20に対し、リングキューを操作するためのインタフェースを提供する。第一IF部41は、リングキューの生成、リングキューの削除、リングキューへのmbuf構造体ポインタのEnqueue、リングキューからのmbuf構造体ポインタのDequeue、を行うIFを提供する。
The first IF
第一管理部42は、メモリ部10に記憶されるリングキューを管理する。第一管理部42は、リングキューの生成を要求されると、メモリ部10上にリングキュー用のメモリ領域を割り当て、初期化を行う。第一管理部42は、リングキューの削除を要求されると、当該リングキュー用に割り当てられていたメモリ領域を解放する。第一管理部42は、mbuf構造体ポインタ用のリングキューとともに、Packingデータ用のリングキューを生成および解放する。
The
第一Packing送信処理部43は、mbuf構造体ポインタのEnqueue要求を受付け、パッキングを実施したあと、第一Enqueue処理部に(mbuf構造体ポインタやPackingデータ)のEnqueueを要求する。
The first Packing
第一Enqueue処理部44は、リングキューへのデータ(mbuf構造体ポインタやPackingデータ)のEnqueue処理を行う。
The first
第一Packing受信処理部45は、mbuf構造体ポインタのDequeue要求を受付け、第一Dequeue処理部46にデータ(mbuf構造体ポインタやPackingデータ)のDequeueを要求し、パッキングを実施したあと、Dequeueされたmbuf構造体ポインタを返す。
The first Packing
第一Dequeue処理部46は、リングキューからのデータ(mbuf構造体ポインタやPackingデータ)のDequeue処理を行う。
The first
次に、本実施の形態における第二送受信処理部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/
第二IF部61は、第二データ処理部30に対し、第一データ処理部20とパケットを送受信するためのインタフェースを提供する。第二IF部61は、第二データ処理部30から例えば以下の送信データを受け取り、第一データ処理部20に送信する。
・キューID
・mbuf構造体ポインタ
・mbuf構造体
・送信パケットデータ
The second IF
・Queue ID
-Mbuf structure pointer-mbuf structure-send packet data
第二IF部61は、第一データ処理部20からの受信データとして例えば以下を第二データ処理部30に届ける。
・キューID
・mbuf構造体ポインタ
・mbuf構造体
・受信パケットデータ
The second IF
・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
第二パケットデータ送信部64は、第二Packing送信処理部63からの指示に基づき、メモリアクセス部73を介してメモリ部10にパケットデータを書き込む。
The second packet
第二mbuf送信部65は、第二Packing送信処理部63からの指示に基づき、メモリアクセス部73を介してメモリ部10にmbuf構造体を書き込む。
The second
第二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
第二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
第二Packing受信処理部71は、第二Dequeue処理部68からmbuf構造体ポインタPackingデータを受け取り、当該パケットの処理を行う。第二Packing受信処理部71は、パッキングの利用の有無を判定し、その結果に基づき第二mbuf受信部69および第二パケットデータ受信部70にデータの読み込み等の指示を送る。また、第二Packing受信処理部71は、Packingデータを用いたパケットデータの復元を行う。第二Packing受信処理部71は、キューID、mbuf構造体ポインタ、mbuf構造体、パケットデータを含む受信データを生成し、第二IF部61に通知する。
The second Packing
第二mbuf受信部69は、第二Packing受信処理部71からの指示に基づき、指定されたmbuf構造体ポインタを使用して、メモリアクセス部73を介してメモリ部10からmbuf構造体を読み込む。
The second
第二パケットデータ受信部70は、第二Packing受信処理部71からの指示に基づき、メモリアクセス部73を介してメモリ部10に記憶されたパケットデータを読み込む。
The second packet
メモリアクセス部73は、バス部11を介しメモリ部10からの読み込みおよび書き込みを行う。メモリアクセス部73は、そのためのIFを提供する。
The
以上で説明した第二データ処理部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
また、第二Dequeue処理部68は、リングキューからのDequeueを第二Packing受信処理部71からのDequeue要求前にあらかじめ行っておいてもよい。その場合、Dequeueされたデータは、第二Packing受信処理部71との間に設けられたFIFOに蓄積される。この場合、第二Packing受信処理部71が第二Dequeue処理部68にDequeue要求するということは、第二Packing受信処理部71が当該FIFOからデータを読み込むことを意味する。
Further, the second
本実施の形態が使用するリングキューの構成を図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
(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
<(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
第一データ処理部20は、図6に示された第一送受信処理部40の第一IF部41にリングキューの生成を要求する(ステップS100)。その際、パラメタとして、リングキューの名前とサイズを渡す。当該要求は、第一管理部42に転送される。
The first
第一管理部42は、生成するリングキュー用メモリ領域をメモリ部10(図4)上に割り当てるとともに、各フィールドを以下のように初期化する(ステップS101)。本リングキューはmbuf構造体ポインタ用である。
・name: パラメタで与えられた名前
・p_sizeおよびc_size: パラメタで与えられたサイズ
・その他のフィールド:0
The
・Name: Name given by parameter ・p_size and c_size: Size given by parameter ・Other fields: 0
第一管理部42は、Packingデータのためのリングキュー用メモリ領域をメモリ部10上に割り当てるとともに各フィールドを初期化する(ステップS102)。第一管理部42は、Packingデータのためのリングキューのサイズを例えば自動で決定する。
The
この場合、第一管理部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
第一管理部42は、ステップS101で生成したリングキューのアドレスを、第一IF部41を介して第一データ処理部20に通知する(ステップS103)。
The
図4に示された第一データ処理部20は、図7に示された第二送受信処理部60の第二Enqueue処理部66(第二データ処理部30が送信し第一データ処理部20が受信する場合)もしくは第二Dequeue処理部68(第一データ処理部20が送信し第二データ処理部30が受信する場合)に、ステップS103で得られたリングキューのアドレスを設定する(ステップS104)。
The first
<(B)第一データ処理部20によるパケット送信処理>
図11および図12のフローチャートを用いて、情報処理装置1の第一データ処理部20が第二データ処理部30に対しパケットを送信する処理について説明する。当該処理は、例えば、第一データ処理部20がパケットの処理の一部を第二データ処理部30にオフロードする際に実行される。
<(B) Packet Transmission Process by First
A process in which the first
第一データ処理部20は、リングキューのアドレス(mbuf構造体ポインタ用)およびmbuf構造体ポインタをパラメタとして、第一IF部41にEnqueueを要求する(ステップS110)。
The first
当該要求は第一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
第一Packing送信処理部43は、上述したパッキングに従い、Packingデータを生成する(ステップS112)。
The first Packing
第一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
第一Packing送信処理部43は、mbuf構造体ポインタ用のリングキューのアドレスおよびmbuf構造体ポインタをパラメタとして、第一Enqueue処理部44にEnqueue処理を要求する(ステップS114)。
The first Packing
次に、第一Enqueue処理部44が、リングキューにデータをEnqueueする処理について、図12を用いて説明する。第一Enqueue処理部44は、リングキューのアドレスと、Enqueueするデータ(8バイトの倍数のサイズ)と、当該データのサイズ(8バイト単位)と、をパラメタとして受け取る。
Next, the process in which the first
第一Enqueue処理部44は、Enqueue先のリングキューがFullか否かを判定する(ステップS120)。第一Enqueue処理部44は、以下の条件が満たされた場合にリングキューがFullであると判定する。第一Enqueue処理部44は、リングキューがFullであると判定した場合、処理を終了し失敗応答を返す。もしくは、第一Enqueue処理部44は、リングキューがFullでない状態になるまで、ステップS120を繰り返し実行してもよい。
The first
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処理部44は、p_indexにEnqueueするデータのサイズ(8バイト単位)を加算する(ステップS122)。
The first
<(C)第二データ処理部30によるパケット受信処理>
図13および図14のフローチャートを用いて、情報処理装置1の第二データ処理部30(図4)が第一データ処理部20からパケットを受信する処理について説明する。当該処理は、例えば、第一データ処理部20がパケットの処理の一部を第二データ処理部30にオフロードする際に実行される。
<(C) Packet reception process by the second
A process in which the second data processing unit 30 (FIG. 4) of the
第二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
第二Packing受信処理部71は、ステップS130で得られたmbuf構造体ポインタを元に、第二mbuf受信部69にmbuf構造体の読み込みを指示し、第二mbuf受信部69はメモリアクセス部73を介してメモリ部10からmbuf構造体を読み込む(ステップS131)。
The second Packing
第二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
第二パケットデータ受信部70は、メモリアクセス部73を介してメモリ部10からパケットデータの指定された部分を読み込む(ステップS133、ステップS136)。
The second packet
第二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
第二Packing受信処理部71は、ステップS133で読み込んだパケットデータ(バス部11の制約を満たす部分のみ)に、ステップS134で得られたPackingデータに含まれるパケットデータの一部(先頭側、末尾側、の一方または両方)を追加し、パケットデータを復元する(ステップS135)。
The second Packing
第二パケットデータ受信部70は、キューID、mbuf構造体ポインタ、mbuf構造体、パケットデータを含む受信データを作成し、第二IF部61を介して当該受信データを第二データ処理部30(図4)に通知する(ステップS137)。
The second packet
次に、図7に示された第二Dequeue処理部68が、リングキューからデータをDequeueする処理について、図14を用いて説明する。第二Dequeue処理部68は、例えば、リングキューテーブルに登録されているリングキュー(mbuf構造体ポインタ用)、およびそれらに関連付けられたPackingデータ用リングキュー、それぞれについて以下の動作を行う。
Next, the process by which the second
第二Dequeue処理部68は、Dequeue元のリングキューにデータがあるか否かを判定する(ステップS140)。第二Dequeue処理部68は、リングキューのp_indexとc_indexが等しくない場合にデータがあると判定し、等しい場合にデータがない(キューが空)であると判定する。第二Dequeue処理部68は、リングキューにデータがない場合、処理を終了し失敗応答を返す。もしくは、第二Dequeue処理部68は、リングキューが空でなくなるまでステップS140を繰り返し実行してもよい。
The second
第二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
(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処理部68は、FIFO用配列であるringの配列インデックスc_indexの位置に格納されているデータ(バス部11の最小単位サイズの整数倍)を、メモリアクセス部73を介してメモリ部10から読み込む(ステップS142)。
The second
第二Dequeue処理部68は、取り出したデータのサイズを8で割った値をc_indexに加算し、メモリアクセス部73を介してメモリ部10上のリングキューに書き込む(ステップS143)。
The second
<(D)第二データ処理部30によるパケット送信処理>
図15および図16のフローチャートを用いて、情報処理装置1の第二データ処理部30(図4)が第一データ処理部20に対しパケットを送信する処理について説明する。当該処理は、例えば、第二データ処理部30がオフロード処理後のパケット部を第一データ処理部20に送信する際に実行される。
<(D) Packet transmission process by second
A process in which the second data processing unit 30 (FIG. 4) of the
第二データ処理部30は、第二IF部61に対しパケットの送信を要求する(ステップS150)。その際、第二データ処理部30は、キューID、mbuf構造体ポインタ、mbuf構造体、パケットデータを送信データとして渡す。
The second
第二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
第二Packing送信処理部63は、上述したパッキングに従い、Packingデータを生成する(ステップS152)。
The second Packing
第二Packing送信処理部63は、生成したPackingデータのEnqueueを第二Enqueue処理部66に要求し、第二Enqueue処理部66はEnqueueを行う(ステップS153)。第二Enqueue処理部66によるEnqueue処理については後述する。その後、第二Packing送信処理部63はパケットデータのうちバス部11の制約を満たす部分の書き込みを第二パケットデータ送信部64に指示する。
The second Packing
第二パケットデータ送信部64は、メモリアクセス部73を介してメモリ部10にパケットデータのうち指定された部分を書き込む(ステップS154、ステップS155)。
The second packet
第二Packing送信処理部63は、第二mbuf送信部65にmbuf構造体の書き込みを指示し、第二mbuf送信部65は、メモリアクセス部73を介してメモリ部10にmbuf構造体を書き込む(ステップS156)。
The second Packing
第二Packing送信処理部63は、mbuf構造体ポインタのリングキューへのEnqueueを第二Enqueue処理部66に要求し、第二Enqueue処理部66はEnqueue処理を行う(ステップS157)。
The second Packing
次に、第二Enqueue処理部66が、リングキューにデータをEnqueueする処理について、図16を用いて説明する。第二Enqueue処理部66は、リングキューのキューIDと、Enqueueするデータ(8バイトの倍数のサイズ)と、当該データのサイズ(8バイト単位)と、をパラメタとして受け取る。
Next, the process in which the second
第二Enqueue処理部66は、入力データを内部バッファに追加する(ステップS160)。
The second
第二Enqueue処理部66は、内部バッファに記憶されたデータのサイズがバス部11の最小単位サイズか確認する(ステップS161)。最小単位サイズ未満の場合、第二Enqueue処理部66は本処理を終了する。
The second
第二Enqueue処理部66は、Enqueue先のリングキューにバス部11の最小単位サイズ以上の空きがあるか否かを判定する(ステップS162)。第二Enqueue処理部66は、以下の条件が満たされた場合にバス部11の最小単位サイズ以上の空きがある判定する。なお、MAX(A,B)はAとBの大きい方を意味する。
The second
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処理部66は、メモリアクセス部73を介し、FIFO用配列であるringの配列インデックスp_indexの位置(およびそれ以降)にEnqueueするデータ(内部バッファ内データ)を書き込む(ステップS163)。なお、第二Enqueue処理部66は、バス部11の最小単位サイズの倍数を単位としてデータを書き込む。
The second
第二Enqueue処理部66は、p_indexにステップS162でEnqueueしたデータのサイズ(8バイト単位)を加算し、メモリアクセス部73を介しメモリ部10に記憶されたリングキューのp_indexフィールドに書き込む(ステップS164)。
The second
<(E)第一データ処理部20によるパケット受信処理>
図17のフローチャートを用いて、情報処理装置1の第一データ処理部20(図4)が第二データ処理部30からパケットを受信する処理について説明する。当該処理は、例えば、第一データ処理部20がオフロード処理後のパケットを第二データ処理部30から受信する際に実行される。
<(E) Packet Reception Processing by First
A process in which the first data processing unit 20 (FIG. 4) of the
第一データ処理部20は、リングキューのアドレス(mbuf構造体ポインタ用)をパラメタとして、第一IF部41(図6)にDequeueを要求する(ステップS170)。
The first
当該要求は第一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
第一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
第一Packing受信処理部45は、PackingデータのDequeueを第一Dequeue処理部46に要求する(ステップS173)。
The first Packing
第一Dequeue処理部46は、リングキューからPackingデータをDequeueし第一Packing受信処理部45に通知する(ステップS174)。第一Dequeue処理部46によるDequeue処理については後述する。
The first
第一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
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
ステップ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
<(F)リングキュー解放処理>
図18のフローチャートを用いて、情報処理装置1がリングキューを解放する処理について説明する。当該処理は、例えば、第一データ処理部20の動作終了時に実行される。第一データ処理部20は、当該処理を、第二データ処理部30との間で使用するmbuf構造体ポインタ用のリングキュー毎に実行する。
<(F) Ring queue release processing>
A process in which the
第一データ処理部20は、第二Enqueue処理部66(図7)(第二データ処理部30が送信し第一データ処理部20が受信する場合)もしくは第二Dequeue処理部68(第一データ処理部20が送信し第二データ処理部30が受信する場合)に、リングキューのアドレス削除を要求する(ステップS180)。
The first
第一データ処理部20は、第一IF部41にリングキューの解放を要求する(ステップS180)。その際、パラメタとして、リングキューのアドレスを渡す。当該要求は、第一管理部42に転送される。
The first
第一管理部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
以上に詳細に説明したように、本実施の形態においては、次のような効果が得られる。 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
また、第二データ処理部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
ここで、第二データ処理部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
また、第一データ処理部20が第二データ処理部30からリングキューを用いてパケットを受信する場合について説明する。この場合、第一送受信処理部40は、mbuf構造体ポインタをリングキューからDequeueし、必要に応じてPackingデータ用のリングキューからPackingデータをDequeueして当該パケットのパケットデータのうちバス部11の制約に整合しない部分について当該Packingデータを用いて更新する。その後、第一送受信処理部40は、Dequeueしたmbuf構造体ポインタを第一データ処理部20に通知する。
A case where the first
これにより、バス部11の制約を満たさない部分のパケットデータはPackingデータとしてバス部11の制約を満たす状態で通信されることとなり、バス利用効率低下を抑制することができる。
As a result, the packet data of the portion that does not satisfy the constraint of the
よって、本実施の形態によれば、モジュール間でメモリおよびバスを介したデータ通信を行う際のバス利用効率低下を抑制する効果を得ることができる。 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
また、本実施の形態の説明では、情報処理装置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
第一送受信処理部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/
Further, when the Packing data is communicated using the ring queue for the mbuf structure pointer, the
また、本実施の形態の説明では、情報処理装置1が、パッキングの要否を、パケットデータの位置やサイズがバス部11の制約を満たしているか否かによってのみ判定する例を示したが本発明はこれに限定されるものではない。他の例として、情報処理装置1は、パケットサイズが所定の値より小さい場合にのみパッキングを使用する、という条件を追加で用いてもよい。そのような構成をとることで、パッキングによる負荷を下げる効果が得られる。また、他の例として、情報処理装置1は、パケット毎に当該パケットに対しパッキングを使用するか否かの情報を第一データ処理部20もしくは第二データ処理部30から受け取り、当該情報に基づきパッキングの利用有無を切り替えてもよい。
In addition, in the description of the present embodiment, an example in which the
パケットデータの位置およびサイズ以外の情報をも使用してパッキングの利用有無を切り替える場合について説明する。この場合、第一送受信処理部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/
また、本実施の形態の説明では、情報処理装置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
Further, in the present embodiment, for example, the first transmission/
[第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
以降、本発明の第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
第一送受信処理部40Bは、リングキューを用いてデータを第二送受信処理部60Bとの間で通信する。その詳細は後述する。
The first transmission/
第二送受信処理部60Bは、リングキューを用いてデータを第一送受信処理部40Bとの間で通信する。その詳細は後述する。
The second transmission/
ここで、本実施の形態が行うパッキングについて説明する。本実施の形態では、第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
次に、本実施の形態における第一送受信処理部40Bの構成例について、図21を用いて説明する。図21に例示する第一送受信処理部40Bは、第一IF部41と、第一管理部42と、第一Packing送信処理部43Bと、第一Enqueue処理部44と、第一Packing受信処理部45Bと、第一Dequeue処理部46と、を含んで構成される。
Next, a configuration example of the first transmission/
第一Packing送信処理部43Bは、mbuf構造体ポインタのEnqueue要求を受付け、上述したパッキングを実施したあと、第一Enqueue処理部にmbuf構造体ポインタおよびPackingデータのEnqueueを要求する。
The first Packing
第一Packing受信処理部45Bは、mbuf構造体ポインタのDequeue要求を受付け、第一Dequeue処理部46にmbuf構造体ポインタおよびPackingデータのDequeueを要求し、上述したパッキングに基づくmbuf構造体およびパケットデータの更新を実施したあと、Dequeueされたmbuf構造体ポインタを返す。
The first Packing
次に、本実施の形態における第二送受信処理部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/
第二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
第二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
[第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
(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
<(B)第一データ処理部20によるパケット送信処理>
図23のフローチャートを用いて、情報処理装置2の第一データ処理部20が第二データ処理部30に対しパケットを送信する処理について説明する。
<(B) Packet Transmission Process by First
A process in which the first
第一データ処理部20は、リングキューのアドレス(mbuf構造体ポインタ用)およびmbuf構造体ポインタをパラメタとして、第一IF部41にEnqueueを要求する(ステップS110)。
The first
当該要求は第一IF部41によって第一Packing送信処理部43Bに転送され、第一Packing送信処理部43Bは、当該パケットに関しパッキングが必要か否かを判定する(ステップS111B)。本実施の形態においては、常にパッキングが必要と判定する。
The request is transferred to the first Packing
第一Packing送信処理部43Bは、上述したパッキングに従い、mbuf構造体に関するPackingデータおよびパケットデータに関するPackingデータを生成する(ステップS112B)。ただし、第一Packing送信処理部43Bは、パケットデータがバス部11の制約を満たす場合、パケットデータに関するPackingデータを生成しなくてよい。
The first Packing
第一Packing送信処理部43Bは、リングキューのp_ring_ptrフィールドを参照してPackingデータ用のリングキューのアドレスを取得し、当該アドレスとステップS112Bで生成したPackingデータをパラメタとして、第一Enqueue処理部44にEnqueue処理を要求する(mbuf構造体、パケットデータ、の順)(ステップS113B)。
The first Packing
第一Packing送信処理部43Bは、mbuf構造体ポインタ用のリングキューのアドレスおよびmbuf構造体ポインタをパラメタとして、第一Enqueue処理部44にEnqueue処理を要求する(ステップS114B)。
The first Packing
<(C)第二データ処理部30によるパケット受信処理>
図24のフローチャートを用いて、情報処理装置2の第二データ処理部30が第一データ処理部20からパケットを受信する処理について説明する。
<(C) Packet reception process by the second
A process in which the second
第二Packing受信処理部71B(図22)は、mbuf構造体ポインタのDequeueを第二Dequeue処理部68に要求し、第二Dequeue処理部68はDequeueしたmbuf構造体ポインタをキューIDとともに返す(ステップS200)。
The second Packing
第二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
第二Packing受信処理部71Bは、DequeueされたPackingデータがmbuf構造体に関するものか否かを判定する(ステップ202)。第二Packing受信処理部71Bは、最初の2Bitがいずれも0である場合に、当該Packingデータがmbuf構造体に関するものであると判定する。
The second Packing
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
ステップ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
第二Packing受信処理部71Bは、当該パケットのパケットデータに関しパッキングが利用されているか否かを判定する(ステップS205)。第二Packing受信処理部71Bは、ステップS111における第一Packing送信処理部43と同様の方法で判定を行う。パッキングが利用されている場合、第二Packing受信処理部71Bは、第二パケットデータ受信部70にパケットデータ(バス部11の制約を満たす部分のみ)の読み込みを指示する(ステップS206に移行)。パッキングが利用されていない場合、第二Packing受信処理部71Bは、第二パケットデータ受信部70にパケットデータ全体の読み込みを指示する(ステップS209に移行)。
The second Packing
第二パケットデータ受信部70は、メモリアクセス部73を介してメモリ部10からパケットデータの指定された部分を読み込む(ステップS206、ステップS209)。
The second packet
第二Packing受信処理部71Bは、パケットデータに関するPackingデータをDequeueする(ステップS207)。なお、本ステップは、ステップS201においてDequeueされたPackingデータがmbuf構造体に関するものであった場合にのみ行う。
The second Packing
第二Packing受信処理部71Bは、ステップS206で読み込んだパケットデータ(バス部11の制約を満たす部分のみ)に、ステップS207で得られたPackingデータに含まれるパケットデータの一部(先頭側、末尾側、の一方または両方)を追加し、パケットデータを復元する(ステップS208)。
The second Packing
第二Packing受信処理部71Bは、キューID(mbuf構造体ポインタ用)、mbuf構造体ポインタ、mbuf構造体、パケットデータを含む受信データを生成し、第二IF部61を介して当該受信データを第二データ処理部30に通知する(ステップS210)。
The second Packing
<(D)第二データ処理部30によるパケット送信処理>
図25のフローチャートを用いて、情報処理装置2の第二データ処理部30が第一データ処理部20に対しパケットを送信する処理について説明する。
<(D) Packet transmission process by second
A process in which the second
第二データ処理部30は、第二IF部61に対しパケットの送信を要求する(ステップS220)。その際、第二データ処理部30は、キューID、mbuf構造体ポインタ、mbuf構造体、パケットデータを送信データとして渡す。
The second
第二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
第二Packing送信処理部63Bは、上述したパッキングに従い、mbuf構造体およびパケットデータに関し必要に応じてPackingデータを生成する(ステップS222)。
The second Packing
第二Packing送信処理部63Bは、生成したPackingデータのEnqueueを第二Enqueue処理部66に要求し(mbuf構造体、パケットデータの順)、第二Enqueue処理部66はEnqueueを行う(ステップS223)。その後、第二Packing送信処理部63Bはパケットデータ(バス部11の制約を満たす部分のみ)の書き込みを第二パケットデータ送信部64に指示する。
The second Packing
第二パケットデータ送信部64は、メモリアクセス部73を介してメモリ部10に指定されたパケットデータを書き込む(ステップS224)。
The second packet
ステップS221において、mbuf構造体に関しパッキングを行わないとした場合、第二Packing送信処理部63Bは、mbuf構造体の書き込みが必要と判定し、第二mbuf送信部65にmbuf構造体ポインタおよびmbuf構造体を渡して書き込みを指示する(ステップS225)。
In step S221, when the mbuf structure is not packed, the second Packing
第二mbuf送信部65は、メモリアクセス部73を介してメモリ部10にmbuf構造体を書き込む(ステップS226)。
The second
第二Packing送信処理部63Bは、mbuf構造体ポインタのリングキューへのEnqueueを第二Enqueue処理部66に要求し、第二Enqueue処理部66はEnqueue処理を行う(ステップS227)。
The second Packing
<(E)第一データ処理部20によるパケット受信処理>
図26のフローチャートを用いて、情報処理装置2の第一データ処理部20が第二データ処理部30からパケットを受信する処理について説明する。
<(E) Packet Reception Processing by First
A process in which the first
第一データ処理部20は、リングキューのアドレス(mbuf構造体ポインタ用)をパラメタとして、第一IF部41にDequeueを要求する(ステップS231)。
The first
当該要求は第一IF部41によって第一Packing受信処理部45Bに転送され、第一Packing受信処理部45Bは、第一Dequeue処理部46にmbuf構造体ポインタのDequeueを要求し、第一Dequeue処理部46は、リングキューからmbuf構造体ポインタをDequeueする(ステップS232)。
The request is transferred to the first Packing
第一Packing受信処理部45Bは、第一Dequeue処理部46にPackingデータのDequeueを要求し、第一Dequeue処理部46は、リングキューからPackingデータをDequeueする(ステップS233)。なお、第一Packing受信処理部45Bは、Packingデータ用のリングキューのアドレスを、mbuf構造体ポインタ用リングキューのp_ring_ptrフィールドから取得する。
The first Packing
第一Packing受信処理部45Bは、DequeueされたPackingデータがmbuf構造体に関するものか否かを判定する(ステップ223)。第一Packing受信処理部45Bは、最初の2Bitがいずれも0である場合に、当該Packingデータがmbuf構造体に関するものであると判定する。
The first Packing
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
第一Packing受信処理部45Bは、当該パケットデータに関しパッキングが利用されているかを判定する(ステップS236)。第一Packing受信処理部45Bは、ステップS151における第二Packing送信処理部63と同様の方法で判定を行う。パケットデータにパッキングが利用されていない場合、本処理を終了し、ステップS232でmbuf構造体ポインタを、第1IF部41を介して第一データ処理部20に通知する。
The first Packing
パケットデータにパッキングが利用されている場合、第一Packing受信処理部45Bは、第一Dequeue処理部46に依頼して、パケットデータに関するPackingデータをDequeueする(ステップS237)。なお、本ステップは、ステップS233においてDequeueされたPackingデータがmbuf構造体に関するものであった場合にのみ行う。
When packing is used for the packet data, the first Packing
第一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
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
以上に詳細に説明したように、本実施の形態においては、次のような効果が得られる。 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/
これにより、バス部11上で通信するデータ量を削減でき、かつ、バス部11の制約を満たさない部分のパケットデータおよびmbuf構造体の一部はPackingデータとしてバス部11の制約を満たす状態で通信されることとなり、バス利用効率を改善もしくはその低下を抑制することができる。
As a result, the amount of data to be communicated on the
よって、本実施の形態によれば、モジュール間でメモリおよびバスを介したデータ通信を行う際のバス利用効率を改善もしくはその低下を抑制する効果を得ることができる。 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
Further, in the description of the present embodiment, an example in which the
Further, when communicating the Packing data by using the ring queue for the mbuf structure pointer, the
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限らない。
[付記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
[付記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
[付記4]
前記通信装置は、通信すべき前記データのうち、前記端数データについて前記連続領域から読み込む受信装置を備えていることを特徴とする付記1〜3のいずれか一項に記載の情報処理装置。
[Appendix 4]
The information processing device according to any one of
[付記5]
前記通信装置は、前記データと、当該データの属性に関するメタデータをも複数のデータセット分まとめることを特徴とする付記1乃至4のいずれかに記載の情報処理装置。
[Appendix 5]
5. The information processing apparatus according to any one of
[付記6]
付記1〜5のいずれか一項において、前記メモリはポインタをエントリに用いるリングキュー、当該ポインタにより前記データを間接的に参照できるパケットデータを記憶するパケットバッファ、及び、前記パケットデータに関する前記メタデータをmbuf形式で記憶するmbuf構造体を含むことを特徴とする請求項5記載の情報処理装置。
[Appendix 6]
In any one of
[付記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
[付記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
[付記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
[付記11]
前記所定の条件は、前記通信すべきデータのサイズが所定の値より小さい場合であることを特徴とする付記10記載の通信方法。
[Appendix 11]
11. The communication method according to
[付記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
[付記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
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.
前記通信装置によって、前記データ及びその属性に関するメタデータの少なくとも一方が前記バスの通信単位に合致しない場合に、前記バスの通信単位に合致するように、合致しないデータを複数のデータセット分まとめるパッキングを行なう
ことを特徴とする通信方法。 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
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)
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 |
-
2017
- 2017-03-21 JP JP2017054492A patent/JP2020106869A/en active Pending
-
2018
- 2018-03-13 WO PCT/JP2018/009726 patent/WO2018173856A1/en active Application Filing
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 |