JP5587530B2 - Engine / processor linkage system and linkage method - Google Patents

Engine / processor linkage system and linkage method Download PDF

Info

Publication number
JP5587530B2
JP5587530B2 JP2007089010A JP2007089010A JP5587530B2 JP 5587530 B2 JP5587530 B2 JP 5587530B2 JP 2007089010 A JP2007089010 A JP 2007089010A JP 2007089010 A JP2007089010 A JP 2007089010A JP 5587530 B2 JP5587530 B2 JP 5587530B2
Authority
JP
Japan
Prior art keywords
data
session
processing
unit
engine
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.)
Expired - Fee Related
Application number
JP2007089010A
Other languages
Japanese (ja)
Other versions
JP2008250496A (en
Inventor
憲晋 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2007089010A priority Critical patent/JP5587530B2/en
Publication of JP2008250496A publication Critical patent/JP2008250496A/en
Application granted granted Critical
Publication of JP5587530B2 publication Critical patent/JP5587530B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、エンジン・プロセッサ連携技術に関し、特に入力されたコマンドおよびパケットに対してハードウェア又はソフトウェアにて演算処理を行った結果を送信データとして出力する、エンジン・プロセッサ連携システムに関する。   The present invention relates to an engine / processor cooperation technique, and more particularly, to an engine / processor cooperation system that outputs, as transmission data, a result of arithmetic processing performed on input commands and packets by hardware or software.

外部からのデータの入力に対して何かしらの演算を行い、外部にその結果を出力する演算システムの構成は大きく分類すると、図12に示すように、外部からのデータを受信する受信部と、外部に対してデータを送信する送信部と、受信部から受信したデータに対して演算処理を実行し、送信回路に出力する演算部から構成される。   If the configuration of an arithmetic system that performs some operation on the input of data from the outside and outputs the result to the outside is roughly classified, as shown in FIG. 12, a receiving unit that receives data from the outside, A transmission unit that transmits data to the transmission unit, and a calculation unit that performs arithmetic processing on the data received from the reception unit and outputs the data to the transmission circuit.

演算システムの例としては、図13に示すようなProcessor(プロセッサ)を利用したソフトウェア演算システムと、図14に示すようなハードウェア演算システムが一般的である。   As an example of an arithmetic system, a software arithmetic system using a processor as shown in FIG. 13 and a hardware arithmetic system as shown in FIG. 14 are common.

図13に示したソフトウェア演算システムは、受信回路、送信回路、プロセッサ、メモリ、その他周辺機器、と各モジュールを接続するプロセッサバスとから構成される。すべてのモジュールがプロセッサバスを経由して接続することで、プロセッサバスの規格に一致するモジュールを自由に追加が可能な柔軟なアーキテクチャーである。   The software operation system shown in FIG. 13 includes a reception circuit, a transmission circuit, a processor, a memory, other peripheral devices, and a processor bus that connects each module. By connecting all modules via a processor bus, this is a flexible architecture that allows modules that match the processor bus standard to be freely added.

しかしながら、すべてのモジュール間のアクセスに関してプロセッサバスを経由してデータの送受信を行う必要があるため、一般的に演算処理性能は低い。特にプロセッサ自体がメモリデバイスに対して逐次アクセスを繰り返して処理を行う。このため、一般にソフトウェア演算システムは、柔軟に多様な処理を実現可能ではあるが、高い性能を実現することが困難という特徴がある。   However, since it is necessary to transmit and receive data via the processor bus for access between all modules, the arithmetic processing performance is generally low. In particular, the processor itself performs processing by sequentially accessing the memory device. For this reason, generally, a software operation system can flexibly realize various processes, but has a feature that it is difficult to realize high performance.

図14に示したハードウェア演算システムは、受信回路、送信回路、ハードウェア演算処理部から構成される。受信回路から受信されたデータはハードウェア演算部に直接入力され、ハードウェア演算処理部が、演算処理を実施した後で、送信回路に対して出力され、送信回路から送信データが外部へ出力される。   The hardware calculation system shown in FIG. 14 includes a reception circuit, a transmission circuit, and a hardware calculation processing unit. The data received from the receiving circuit is directly input to the hardware arithmetic unit, and after the hardware arithmetic processing unit performs the arithmetic processing, the data is output to the transmitting circuit, and the transmission data is output to the outside from the transmitting circuit. The

一般にハードウェア演算システムは、各モジュール間が固定的に接続され、演算に必要な処理を、並列・パイプライン処理が可能であるため、ソフトウェア演算システムに比べて高性能な処理を実現可能である。逆に、処理が固定的であることから、柔軟にシステムを構築することが困難であるとともに、処理に応じて専用のロジックを設計する必要があるため、回路規模の増大と開発期間の長期化という問題が存在し、複雑な論理を実現することが困難である。   In general, hardware computing systems are fixedly connected to each other, and processing necessary for computations can be performed in parallel and pipeline processing, enabling high-performance processing compared to software computing systems. . Conversely, because the processing is fixed, it is difficult to build a system flexibly, and it is necessary to design dedicated logic according to the processing, so the circuit scale increases and the development period increases. It is difficult to realize complicated logic.

このようにソフトウェア演算システムとハードウェア演算システムとは、それぞれ長所と短所とを有するがこの両方のメリットを生かした演算システムがAltera(非特許文献1)より提案されている。   As described above, the software arithmetic system and the hardware arithmetic system have advantages and disadvantages, respectively, but an arithmetic system that makes use of both advantages has been proposed by Altera (Non-patent Document 1).

従来例1(非特許文献1)としてAlteraのC2Hの例を図15に示す。   FIG. 15 shows an example of C2H of Altera as Conventional Example 1 (Non-Patent Document 1).

従来例1の演算システムは、受信回路、送信回路、プロセッサ(Processor)、メモリ(Memory)、DMAエンジン(DMA)、ハードウェアエンジン(HW Engine)から構成される。   The arithmetic system of Conventional Example 1 includes a receiving circuit, a transmitting circuit, a processor, a memory, a DMA engine (DMA), and a hardware engine (HW Engine).

受信回路に入力されたデータは、いったんプロセッサの汎用メモリ(Memory1)上に展開される。プロセッサは、受信したデータがハードウェアエンジンにて処理可能なデータであると判断した場合、DMAエンジンを利用して、処理対象のデータをメモリからハードウェアエンジンへと転送する。ハードウェアエンジンは、処理対象データが入力されると、該当データに対する演算処理を実行し、演算結果をDMAエンジン経由で、プロセッサからアクセス可能なメモリ(Memory2)に対して転送する。   The data input to the receiving circuit is once expanded on the general-purpose memory (Memory1) of the processor. When the processor determines that the received data is data that can be processed by the hardware engine, the processor uses the DMA engine to transfer the data to be processed from the memory to the hardware engine. When the data to be processed is input, the hardware engine executes arithmetic processing on the corresponding data, and transfers the arithmetic result to the memory (Memory2) accessible from the processor via the DMA engine.

従来例1の演算システムを利用することで、複雑な処理はプロセッサを利用しつつも、処理のボトルネックとなっている単純処理をハードウェアエンジンで実現することが可能であり、プロセッサによる柔軟性とハードウェアエンジンにより高速性を両立することが可能である。   By using the arithmetic system of Conventional Example 1, it is possible to realize simple processing that is a bottleneck of processing with a hardware engine while using a processor for complicated processing, and flexibility by the processor And hardware engine can achieve both high speed.

しかしながら、受信回路から入力した処理に対して、ハードウェアエンジンを利用するかどうかの判断、ハードウェアエンジンへのデータの送信指示などをプロセッサ経由で行う必要があり、ハードウェアエンジンを利用する場合も必ずプロセッサ処理が必要となる。よって、ハードウェアエンジンだけを利用した場合と比べると性能が低下してしまう。   However, it is necessary to determine whether or not to use the hardware engine and to send data to the hardware engine via the processor for processing input from the receiving circuit. Processor processing is always required. Therefore, the performance is reduced as compared with the case where only the hardware engine is used.

一方、上記従来例1とは異なるプロセッサ・エンジン連携システムとして、特許文献1が提案されており、この技術は、ハードウェア処理部とソフトウェア処理部とを有し、パケット受信時にハードウェア処理部とソフトウェア処理部とのどちらで処理するかを判定する技術である。   On the other hand, Patent Document 1 has been proposed as a processor / engine cooperation system different from the conventional example 1, and this technology includes a hardware processing unit and a software processing unit, This is a technology for determining which of the software processing unit is used for processing.

特許文献1では、TCPヘッダ等から識別可能なセッションの種別に基づき、ハードウェア処理とソフトウェア処理とのどちらで処理するかを判定する。セッション単位でハードウェア処理とソフトウェア処理とのどちらで処理するかの識別されるため、セッション情報を管理するためのテーブルをハードウェア処理部とソフトウェア処理部とで共有する必要がない。反面、セッション内で、セッションの状態に応じて、ハードウェア処理とソフトウェア処理とを変更するような柔軟な処理の実現は困難である。
Altera C2H(http://www.altera.co.jp/products/ip/processors/nios2/tools/c2h/ni2−c2h.html,http://www.altera.co.jp/products/ip/processors/nios2/benefits/performance/ni2−acceleration.html,http://www.altera.co.jp/literature//wp/wp−aghrdwr.pdf) 特開2002−354064
In Patent Literature 1, it is determined whether to perform hardware processing or software processing based on the type of session that can be identified from a TCP header or the like. Since the hardware process or the software process is identified for each session, it is not necessary to share a table for managing session information between the hardware processing unit and the software processing unit. On the other hand, it is difficult to realize a flexible process in which hardware processing and software processing are changed in the session according to the session state.
Altera C2H (http://www.altera.co.jp/products/ip/processors/nios2/tools/c2h/ni2-c2h.html, http://www.altera.co.jp/ss/product/product/ /Nios2/benefits/performance/ni2-acceleration.html, http://www.altera.co.jp/literature//wp/www-aghrdwr.pdf) JP 2002-354064 A

本発明が解決しようとする課題は、上記問題点を解決することであり、プロセッサ(ソフトウェアでの処理)と高速エンジン(ハードウェアでの処理)の両方を有し、同一セッション内で高速エンジンとプロセッサでの実行を柔軟に変更可能なエンジン・プロセッサ連携システムを提供することである。   The problem to be solved by the present invention is to solve the above-mentioned problem, which has both a processor (processing by software) and a high-speed engine (processing by hardware). It is an object of the present invention to provide an engine / processor cooperation system capable of flexibly changing execution in a processor.

また、プロセッサと高速エンジンとの間でセッションの状況を示す情報を保持するセッションメモリの内容の同期を取りながら、高速エンジン動作中には性能を落とさないエンジン・プロセッサ連携システムを提供することを目的とする。   Another object of the present invention is to provide an engine / processor linkage system that synchronizes the contents of the session memory that holds the session status information between the processor and the high-speed engine, while maintaining the performance during high-speed engine operation. And

上記課題を解決するための本発明は、エンジン・プロセッサ連携システムであって、TCPセッションについてデータの送受信状況をセッション毎に示すセッションデータを管理しているセッションデータメモリと、入力されたデータが属するTCPセッションのセッションデータを前記セッションデータメモリから読み出す読出部と、前記入力されたデータと前記読み出したセッションデータとを蓄積する蓄積部と、前記蓄積されている入力データとセッションデータとを、ハードウェア処理部がアクセスできる形式に展開する展開部と、前記展開されたデータを参照し、あらかじめ決められた演算ルールに基づいて、前記蓄積されている入力データをソフトウェアで処理するかハードウェア処理部で処理するかを決定する処理決定部と、前記処理決定部がハードウェア処理部で処理すると決定した場合に、前記展開された入力データを処理する高速エンジンとを有するハードウェア処理部と、前記処理決定部がソフトウェア処理部で処理すると決定した場合に、前記蓄積されている入力データを処理するソフトウェア処理部と、前記入力データの処理が終了すると、この入力データが属するTCPセッションのセッションデータを更新する更新部とを有し、前記展開部は、前記高速エンジンが前記展開したデータを処理している間に、次の入力データが前記蓄積部に蓄積されているかどうかを監視し、次の入力データが蓄積されている場合にはそれを読み出し、前記高速エンジンからの処理完了通知を受信すると読み出した入力データを展開することを特徴とする。 The present invention for solving the above-mentioned problems is an engine / processor cooperation system, which includes a session data memory that manages session data indicating the transmission / reception status of data for each session of a TCP session, and to which input data belongs. A reading unit that reads session data of a TCP session from the session data memory, a storage unit that stores the input data and the read session data, and the input data and session data that are stored A development unit that develops the data into a format that can be accessed by the processing unit, and refers to the developed data, and processes the stored input data with software or a hardware processing unit based on a predetermined calculation rule. A process determining unit that determines whether to process; When the processing determining unit determines to process with the hardware processing unit, it is determined that the hardware processing unit having a high-speed engine for processing the expanded input data and the processing determining unit to process with the software processing unit If the software processing unit for processing the input data being the storage, the processing of the input data is completed, it possesses an updating unit that updates the session data TCP sessions the input data belongs, the expansion portion Monitors whether the next input data is stored in the storage unit while the high-speed engine is processing the expanded data, and if the next input data is stored, When the processing completion notification is received from the high speed engine, the read input data is expanded .

上記課題を解決するための本発明は、エンジンとプロセッサとの連携方法であって、エンジンとプロセッサとの連携方法であって、TCPセッションについてデータの送受信状況をセッション毎に示すセッションデータを管理しているセッションデータメモリから、入力されたデータが属するTCPセッションのセッションデータを読み出す読出ステップと、前記入力されたデータと前記読み出したセッションデータとを蓄積部に蓄積させる蓄積ステップと、前記蓄積された入力データとセッションデータとを、ハードウェア処理部がアクセスできる形式に展開する展開ステップと、ハードウェア処理部において、前記展開されたデータを参照し、あらかじめ決められた演算ルールに基づいて、前記蓄積された入力データをソフトウェアで処理するかハードウェア処理部で処理するかを決定する処理決定ステップと、前記処理ステップで、ハードウェア処理部で処理すると決定された場合に、前記展開された入力データを高速エンジンで処理する高速エンジン処理ステップと、前記処理ステップで、ソフトウェア処理部で処理すると決定した場合に、前記蓄積されている入力データをソフトウェアで処理するソフトウェア処理ステップと、前記入力データの処理が終了すると、この入力データが属するTCPセッションのセッションデータを更新する更新ステップとを有することを特徴とする。 The present invention for solving the above-described problem is a method for linking an engine and a processor, and is a method for linking an engine and a processor, which manages session data indicating a data transmission / reception status for each session of a TCP session. A read step for reading session data of a TCP session to which the input data belongs, a storage step for storing the input data and the read session data in a storage unit, and the stored data An expansion step for expanding input data and session data into a format accessible by a hardware processing unit, and the storage in the hardware processing unit with reference to the expanded data and based on a predetermined calculation rule Processed input data by software A processing decision step for deciding whether to process or a hardware processing unit, and a high-speed engine for processing the developed input data with a high-speed engine when it is decided at the processing step to be processed by a hardware processing unit When it is determined that the software processing unit processes the engine processing step and the processing step, the software processing step for processing the stored input data by software, and the processing of the input data is completed. And updating the session data of the TCP session to which the session belongs.

本発明のエンジン・プロセッサ連携システムでは、受信回路および送信回路がソフトウェア処理部からアクセス可能なプロセッサバス経由のインタフェースと、ハードウェア処理部から展開されたデータを利用してアクセス可能な高速ハードウェアインタフェースとの両方を有し、ハードウェア処理部内の処理選択部において、ソフトウェア処理部と高速エンジンのどちらで処理すべきかを決定し、処理管理部が、ハードウェア処理部とソフトウェア処理部の片方だけが、演算処理を実施することを保証する。   In the engine / processor cooperation system of the present invention, the interface via the processor bus that the receiving circuit and the transmitting circuit can access from the software processing unit, and the high-speed hardware interface that can be accessed using the data developed from the hardware processing unit In the processing selection unit in the hardware processing unit, it is determined whether the software processing unit or the high-speed engine is to be processed, and the processing management unit has only one of the hardware processing unit and the software processing unit. , To ensure that arithmetic processing is performed.

これにより、ハードウェアエンジンにて処理を実現する場合は、全処理がソフトウェア処理部を経由せずに処理が実施されるため、ソフトウェア処理が介入することにより性能劣化を招くことなく、ハードウェアエンジンの持つ最大限の性能を用いることが実現可能である。   As a result, when the processing is realized by the hardware engine, the entire processing is performed without going through the software processing unit. Therefore, the hardware engine does not cause performance degradation due to the intervention of the software processing. It is feasible to use the maximum performance of.

さらに、本発明のエンジン・プロセッサ連携システムでは、受信回路部内のデータ展開処理部は、受信データ蓄積メモリ内の先頭データを展開し、ハードウェアインタフェースに受け渡すと共に、受信データ蓄積メモリ内に次のコマンドが到着している場合には、あらかじめ受信データ蓄積メモリからの読み出しを行い、データ展開処理部内でデータの展開を実施し、処理完了通知が入力されるとすぐに、ハードウェアインタフェースにデータの受け渡すことにより、高速エンジンの処理を高速化する。   Furthermore, in the engine / processor cooperation system according to the present invention, the data expansion processing unit in the reception circuit unit expands the leading data in the reception data storage memory, delivers it to the hardware interface, and stores the next data in the reception data storage memory. When the command has arrived, the data is read from the received data storage memory in advance, the data is expanded in the data expansion processing unit, and as soon as the processing completion notification is input, the data is transferred to the hardware interface. By passing, the processing of the high-speed engine is accelerated.

さらに、本発明のエンジン・プロセッサ連携システムでは、プロセッサが、プロセッサバス経由でセッションデータメモリにアクセス可能とし、セッションデータ読み出し処理部が読み出しを行うデータは、処理選択部、高速エンジンの必要なデータのみとし、プロセッサが必要なデータは、セッションデータメモリからアクセスをする。セッションデータ読み出し処理部が読み出しに必要なデータ量を削減することで、セッションデータ読み出し処理部でのセッションデータの読み出しにかかる時間、データ展開処理部内での読み出しデータの展開にかかる時間を削減可能である。   Furthermore, in the engine / processor cooperation system of the present invention, the processor can access the session data memory via the processor bus, and the data read by the session data read processing unit is only the data required by the processing selection unit and the high-speed engine. The data required by the processor is accessed from the session data memory. By reducing the amount of data required for reading by the session data read processing unit, it is possible to reduce the time required for reading session data in the session data read processing unit and the time required for developing read data in the data development processing unit. is there.

本発明によると、ハードウェアエンジンにて処理を実現する場合は、全処理がソフトウェア処理部を経由せずに処理が実施されるため、ソフトウェア処理が介入することにより性能劣化を招くことなく、ハードウェアエンジンの持つ最大限の性能を用いることが可能である。   According to the present invention, when the processing is realized by the hardware engine, the entire processing is performed without going through the software processing unit. It is possible to use the maximum performance of the wear engine.

更に、本発明によると、データ展開処理部が、受信データ蓄積メモリ内の先頭データを展開してハードウェアインタフェースに受け渡した後、受信データ蓄積メモリ内に次のコマンドが到着している場合には、あらかじめ受信データ蓄積メモリからの読み出しを行い、データ展開処理部内でデータの展開を実施し、処理完了通知が入力されるとすぐに、ハードウェアインタフェースにデータの受け渡す構成であるため、高速エンジンの処理を高速化することが可能である。   Further, according to the present invention, after the data expansion processing unit expands the head data in the reception data storage memory and delivers it to the hardware interface, the next command arrives in the reception data storage memory. The high-speed engine is configured to read data from the received data storage memory in advance, perform data expansion in the data expansion processing unit, and deliver the data to the hardware interface as soon as a processing completion notification is input. It is possible to speed up the process.

更に、セッションデータ読み出し処理部が読み出しに必要なデータ量を削減することで、セッションデータ読み出し処理部でのセッションデータの読み出しにかかる時間、データ展開処理部内での読み出しデータの展開にかかる時間を削減可能である。   Furthermore, the session data read processing unit reduces the amount of data required for reading, thereby reducing the time required for reading session data in the session data read processing unit and the time required for developing read data in the data development processing unit. Is possible.

図1に、本発明のエンジン・プロセッサ連携システム8の構成例を示す。   FIG. 1 shows a configuration example of an engine / processor cooperation system 8 of the present invention.

エンジン・プロセッサ連携システム8は、受信回路1、送信回路2(セッション送信回路2−1、外部送信回路2−2)、ハードウェア処理部3、ソフトウェア処理部4、セッションメモリ管理部5、プロセッサバス6、及びMUX回路7を有する。   The engine / processor cooperation system 8 includes a reception circuit 1, a transmission circuit 2 (session transmission circuit 2-1, external transmission circuit 2-2), a hardware processing unit 3, a software processing unit 4, a session memory management unit 5, and a processor bus. 6 and a MUX circuit 7.

ハードウェア処理部3は、処理選択部31、処理管理部32、及び高速エンジン30を有する。   The hardware processing unit 3 includes a process selection unit 31, a process management unit 32, and a high speed engine 30.

ソフトウェア処理部4は、プロセッサ40、メモリ41、及び周辺回路42を有し、プロセッサバス6と接続して、各種ソフトウェア処理を実施する。   The software processing unit 4 includes a processor 40, a memory 41, and a peripheral circuit 42, and is connected to the processor bus 6 to perform various software processes.

セッションメモリ管理部5は、セッションデータ書込処理部53、セッションデータ読出処理部52、セッションデータメモリ50、及びセッションロックメモリ51を有する。   The session memory management unit 5 includes a session data write processing unit 53, a session data read processing unit 52, a session data memory 50, and a session lock memory 51.

セッションメモリ管理部5は、セッションデータメモリ50に各セッションの固有データ(セッションデータ)を蓄積・管理する。   The session memory management unit 5 stores and manages unique data (session data) of each session in the session data memory 50.

セッションデータメモリ50に蓄積されているセッション毎のセッションデータは、セッションデータ読出処理部52経由で、セッションデータの読み出しが行われ、セッションデータ書込処理部53経由で、セッションデータの更新が行われる。   The session data stored in the session data memory 50 for each session is read out via the session data read processing unit 52 and updated via the session data write processing unit 53. .

また、セッションロックメモリ51において、セッションデータの読み出し後、書込処理が実行されるまでの間、セッションデータの読み出しをロックすることで、セッションデータ更新前に、同一セッションのセッションデータが読み出しされることを防止する。また、セッションデータメモリ50は、プロセッサバス6とも接続しており、プロセッサ40はセッションデータメモリ50の内容にアクセス可能なものとする。   In the session lock memory 51, the session data of the same session is read before updating the session data by locking the reading of the session data until the writing process is executed after the reading of the session data. To prevent that. The session data memory 50 is also connected to the processor bus 6 so that the processor 40 can access the contents of the session data memory 50.

プロセッサバス6は、受信回路1、各送信回路2、プロセッサ40、メモリ41、周辺回路42、処理管理部32、セッションデータメモリ50と接続されている。これにより、プロセッサ40は、各ブロックにアクセスしてソフトウェア処理を実行可能なものとする。   The processor bus 6 is connected to the reception circuit 1, each transmission circuit 2, the processor 40, the memory 41, the peripheral circuit 42, the process management unit 32, and the session data memory 50. Thus, the processor 40 can access each block and execute software processing.

MUX回路7は、外部より受信したパケット及びコマンドから一つのコマンドを選択して、セッションデータ読出処理部52に転送する。読み出し方法としては、固定的に優先順序を決める方法や、ラウンドロビンで決める方法と、読み出し比率に従って読み出す等の方法があるが、どの方法を用いても良い。   The MUX circuit 7 selects one command from the packet and command received from the outside, and transfers the selected command to the session data read processing unit 52. As a reading method, there are a method of fixedly determining the priority order, a method of determining by round robin, and a method of reading in accordance with a reading ratio, and any method may be used.

セッションデータ読出処理部52は、MUX回路7からコマンドを受信すると、セッションロックメモリ51の状態を識別して該当セッションのセッションデータがロックされていなければ、セッションデータメモリ50よりセッションデータの読み出し処理を行う。該当セッションのセッションデータがロック状態の時は、ロック状態が解除されるまでセッションデータの読み出しを停止する。該当セッションのセッションデータのロック状態の解除は、セッションデータ書込処理部53が、セッション送信回路2−1よりコマンドを受信した際に実行される。   When the session data read processing unit 52 receives a command from the MUX circuit 7, the session data read processing unit 52 identifies the state of the session lock memory 51 and reads the session data from the session data memory 50 if the session data of the corresponding session is not locked. Do. When the session data of the corresponding session is locked, reading of the session data is stopped until the locked state is released. Release of the lock state of the session data of the corresponding session is executed when the session data write processing unit 53 receives a command from the session transmission circuit 2-1.

セッションデータ読出処理部52は、セッションデータを読み出すと、コマンドの内容(パケット・コマンドデータ)と共に、受信回路1へ転送する。   When the session data read processing unit 52 reads the session data, the session data read processing unit 52 transfers the command data (packet command data) to the receiving circuit 1.

受信回路1は、セッションデータ読出処理部52から入力されるデータを一時的に保持する。受信回路1は、受信したコマンドデータとセッションデータとをハードウェア処理部3と、ソフトウェア処理部4との両方から読み出し可能なインタフェースを提供するものである。   The receiving circuit 1 temporarily holds data input from the session data read processing unit 52. The receiving circuit 1 provides an interface capable of reading the received command data and session data from both the hardware processing unit 3 and the software processing unit 4.

処理選択部31は、受信回路1に蓄積されたコマンドとセッションデータとを参照し、ハードウェアで処理する高速エンジン30とソフトウェアで処理するプロセッサ40のどちらで処理するかを決定する。   The process selection unit 31 refers to the command and the session data stored in the reception circuit 1 and determines which of the high-speed engine 30 that processes by hardware and the processor 40 that processes by software.

高速エンジン30で処理する場合は、高速エンジン30に通知され、高速エンジン30は、受信回路1からのデータ読み出しを行い、処理を実行した後で、実行結果を各送信回路2に出力する。一方、プロセッサ40で処理する場合は、プロセッサ40は、処理管理部32経由でプロセッサ40によるコマンド処理の対象であることを識別し、そのコマンドの処理を実行し、実行結果を各送信回路2に出力する。   When processing is performed by the high-speed engine 30, the high-speed engine 30 is notified, and the high-speed engine 30 reads out data from the reception circuit 1, executes the processing, and then outputs the execution result to each transmission circuit 2. On the other hand, when processing is performed by the processor 40, the processor 40 identifies the target of command processing by the processor 40 via the processing management unit 32, executes the command processing, and sends the execution result to each transmission circuit 2. Output.

セッション送信回路2−1は、セッションデータ書込処理部53と接続されており、プロセッサ40もしくは高速エンジン30からのコマンド処理を実行した結果を受信して、セッションデータの更新情報をセッション送信回路2−1に出力する。   The session transmission circuit 2-1 is connected to the session data write processing unit 53, receives the result of executing the command processing from the processor 40 or the high speed engine 30, and sends session data update information to the session transmission circuit 2. Output to -1.

セッションデータ書込処理部53は、セッション送信回路2−1からのセッションデータの更新情報に基づいてセッションデータメモリ50を更新し、セッションロックメモリ51のロックを解除する。   The session data write processing unit 53 updates the session data memory 50 based on the session data update information from the session transmission circuit 2-1 and releases the lock of the session lock memory 51.

ここで、受信回路1について詳細に説明する。   Here, the receiving circuit 1 will be described in detail.

図2は、受信回路1の構成例である。   FIG. 2 is a configuration example of the receiving circuit 1.

受信回路1は、受信データ蓄積メモリ10、受信データ管理部11、受信ソフトウェアインタフェース12、及びデータ展開処理部13を有する。   The reception circuit 1 includes a reception data storage memory 10, a reception data management unit 11, a reception software interface 12, and a data expansion processing unit 13.

受信回路1に入力されたパケット・コマンドデータとセッションデータ(入力データ)は、受信データ蓄積メモリ10に蓄積される。   Packet command data and session data (input data) input to the receiving circuit 1 are stored in the received data storage memory 10.

受信データ管理部11は、受信データ蓄積メモリ10に蓄積された入力データを管理する。   The reception data management unit 11 manages the input data stored in the reception data storage memory 10.

受信回路1は、受信データ蓄積メモリ10に蓄積された入力データを読み出す手段として、ハードウェアインタフェースとソフトウェアインタフェースの2つを有する。   The receiving circuit 1 has two hardware interfaces and a software interface as means for reading input data stored in the received data storage memory 10.

データ展開処理部13は、読み出し対象のデータとして、受信データ蓄積メモリ10に入力された入力データを読み出し、ハードウェアインタフェースから一度にアクセス可能な形式に展開する。入力データが展開されると、受信データ管理部11は、ハードウェアインタフェースに対して受信パケット通知信号を出力する。また、ハードウェアでの処理が完了し、ハードウェアインタフェース部から処理完了通知が入力されると、読み出し対象データの処理が完了したことを認識し、読み出し対象データを破棄する。ハードウェアインタフェース部から処理完了通知が入力されるまで、受信データ蓄積メモリ10を監視し、次の読み出し対象データが存在する場合は、次の読み出し対象データを受信データ蓄積メモリ10より読み出して展開する。   The data expansion processing unit 13 reads the input data input to the received data storage memory 10 as data to be read, and expands it into a format that can be accessed at one time from the hardware interface. When the input data is expanded, the reception data management unit 11 outputs a reception packet notification signal to the hardware interface. When the processing in hardware is completed and a processing completion notification is input from the hardware interface unit, it is recognized that the processing of the read target data is completed, and the read target data is discarded. The received data storage memory 10 is monitored until a processing completion notification is input from the hardware interface unit. If there is next read target data, the next read target data is read from the received data storage memory 10 and expanded. .

受信ソフトウェアインタフェース12は、ソフトウェア処理部4に対して、プロセッサバス6を介して、受信データ蓄積メモリ10に蓄積されている入力データにアクセス可能なインタフェースである。受信ソフトウェアインタフェース12では、受信データ蓄積メモリ10に読み出し対象データが存在するかどうかを通知する手段、読み出しデータが存在する場合は読み出し対象データの長さ、読み出し対象データへのリードアクセス手段、ソフトウェア処理部4から受信回路1に対して、読み出し対象データの処理が完了したことを受信データ管理部11に通知する手段を提供する。   The reception software interface 12 is an interface that allows the software processing unit 4 to access input data stored in the reception data storage memory 10 via the processor bus 6. In the reception software interface 12, means for notifying whether or not the read target data exists in the reception data storage memory 10, the length of the read target data when there is read data, a read access means for the read target data, software processing The unit 4 provides a means for notifying the reception circuit 1 to the reception data management unit 11 that the processing of the data to be read is completed.

このように受信回路1では、ハードウェアインタフェースと、ソフトウェアインタフェースとの両方に対して、読み出し対象データが存在するかどうか、存在する場合はデータ長、読み出し対象データへのアクセス手段、および、受信回路1に対して、読み出し対象データの処理が完了したことを通知するための手段を提供する。   As described above, in the receiving circuit 1, whether or not the data to be read exists for both the hardware interface and the software interface, the data length when there is, the access means to the data to be read, and the receiving circuit. 1 is provided with means for notifying that the processing of the data to be read is completed.

続いて、送信回路2−1について説明する。   Next, the transmission circuit 2-1 will be described.

図3は、送信回路2−1の構成例である。   FIG. 3 is a configuration example of the transmission circuit 2-1.

送信回路2−1は、送信データ蓄積メモリ20、送信データ管理部21、送信ソフトウェアインタフェース22、及び展開データ書き込み部23を有する。   The transmission circuit 2-1 includes a transmission data storage memory 20, a transmission data management unit 21, a transmission software interface 22, and a decompressed data writing unit 23.

送信回路2−1は、ハードウェアインタフェースもしくはソフトウェアインタフェースから送信された入力データを、一時的に送信データ蓄積メモリ20に格納し、外部から入力データを受信可能かどうかの通知信号に従って入力データの出力を行う。外部から入力データを受信可能かどうかの通知信号としては、データ読み出しを細かく外部から制御する方法と、外部側でコマンドを受信できないときだけ、バックプレッシャー信号により受信できないことを通知する方法とがあり、本発明においてはどちらの方法を用いても良い。   The transmission circuit 2-1 temporarily stores the input data transmitted from the hardware interface or software interface in the transmission data storage memory 20, and outputs the input data in accordance with a notification signal indicating whether the input data can be received from the outside. I do. There are two types of notification signals to determine whether or not input data can be received from the outside: a method for finely controlling data reading from the outside, and a method for notifying reception by a back pressure signal only when a command cannot be received externally. In the present invention, either method may be used.

送信データ管理部21は、送信データ蓄積メモリ20のデータ蓄積量および送信データ蓄積メモリ20のアクセス管理を行う。送信データ管理部21は、送信データ蓄積メモリ20の空きバッファ量をハードウェアインタフェース部および送信ソフトウェアインタフェース22に通知する。   The transmission data management unit 21 performs data management of the transmission data storage memory 20 and access management of the transmission data storage memory 20. The transmission data management unit 21 notifies the hardware interface unit and the transmission software interface 22 of the amount of free buffer in the transmission data storage memory 20.

高速エンジン30は、ハードウェアインタフェース部を介して、送信データの送出を通知する。高速エンジン30は、送出対象の入力データをあらかじめ展開し、展開データとして準備する。展開データの準備が完了すると、送出対象データのデータ長と通知された空きバッファ量とを比較し、送出対象データのデータ長よりも空きバッファ量の方が大きくなると、送出対象データのデータ長分のパケット転送を通知する。   The high-speed engine 30 notifies the transmission of transmission data via the hardware interface unit. The high-speed engine 30 develops input data to be transmitted in advance and prepares it as decompressed data. When preparation of decompressed data is completed, the data length of the send target data is compared with the notified free buffer amount, and if the free buffer amount becomes larger than the data length of the send target data, the data length of the send target data Notify packet transfer.

展開データ書込部23は、パケット転送通知が入力されると、展開データを、送信データ蓄積メモリ20に書き込む。通常、送信データ蓄積メモリ20に一度に書き込みが可能なデータ幅は、展開データのデータ幅よりも小さいため、展開データは複数クロックかけて書き込みが行われる。   When the packet transfer notification is input, the decompressed data writing unit 23 writes the decompressed data in the transmission data storage memory 20. Normally, the data width that can be written to the transmission data storage memory 20 at a time is smaller than the data width of the expanded data, so the expanded data is written over a plurality of clocks.

送信データ管理部21は、展開データ書込部23が送信データ蓄積メモリ20に展開データの書き込みを行っている間は、次の展開データの書き込みがされないことを保証する。一つの実現例は、展開データ書込部23のデータ書き込み中は、空きバッファ通知量を0として、ハードウェアインタフェース部および送信ソフトウェアインタフェース22に通知することで、新たなアクセス要求を発生させないようにすることである。   The transmission data management unit 21 ensures that the next expanded data is not written while the expanded data writing unit 23 writes the expanded data to the transmission data storage memory 20. In one implementation example, while the expanded data writing unit 23 is writing data, the free buffer notification amount is set to 0, and the hardware interface unit and the transmission software interface 22 are notified so as not to generate a new access request. It is to be.

送信ソフトウェアインタフェース22は、ソフトウェア処理部4に対して、プロセッサバス6を介して、送出データの転送を要求するためのインタフェースである。送信ソフトウェアインタフェース22は、送信データ蓄積メモリ20の空きバッファ量確認する手段、送信データの内容を設定する手段、送信データの送出を要求する手段を有する。   The transmission software interface 22 is an interface for requesting the software processing unit 4 to transfer transmission data via the processor bus 6. The transmission software interface 22 has means for confirming the amount of free buffer in the transmission data storage memory 20, means for setting the content of transmission data, and means for requesting transmission of transmission data.

このように送信回路2−1では、ハードウェアインタフェースとソフトウェアインタフェースの両方に対して、送信データ蓄積メモリ20の空きバッファ量を確認する手段、送信対象データの中身を設定する手段、実際のデータ送出を要求する手段を提供する。   As described above, in the transmission circuit 2-1, for both the hardware interface and the software interface, means for confirming the free buffer amount of the transmission data storage memory 20, means for setting the contents of the transmission target data, actual data transmission Provide a means to request

次に、本発明のエンジン・プロセッサ連携システム8の動作に関して説明する。   Next, the operation of the engine / processor cooperation system 8 of the present invention will be described.

まず、入力データが高速エンジン30にて処理される際の動作例を示す。図4は、入力データが高速エンジン30にて処理される場合の、入力データの流れを説明するための図である。   First, an operation example when input data is processed by the high-speed engine 30 is shown. FIG. 4 is a diagram for explaining the flow of input data when the input data is processed by the high-speed engine 30.

MUX回路7は、パケット・コマンドデータを受信すると、セッションデータ読出処理部52へコマンドを転送する。   When receiving the packet command data, the MUX circuit 7 transfers the command to the session data read processing unit 52.

セッションデータ読出処理部52は、セッションデータメモリ50からそのパケット・コマンドデータが送信されて来たセッションのセッションデータを読み出し、読み出したセッションデータとパケット・コマンドデータとを受信回路1へ出力する。   The session data read processing unit 52 reads the session data of the session from which the packet command data is transmitted from the session data memory 50, and outputs the read session data and packet command data to the receiving circuit 1.

受信回路1は、パケット・コマンドデータとセッションデータとを受信すると、データ展開処理部13でその受信データを展開した後、処理選択部31に対して、パケット受信を通知する。   When receiving the packet command data and the session data, the receiving circuit 1 expands the received data by the data expansion processing unit 13 and then notifies the processing selection unit 31 of packet reception.

処理選択部31では、展開された受信データを参照し、あらかじめ決められた演算ルールに基づいて、高速エンジン30が処理をすべきか、ソフトウェア処理部が処理をすべきかを判断して、処理管理部32に通知する。   The processing selection unit 31 refers to the expanded received data, determines whether the high speed engine 30 should perform processing or the software processing unit should perform processing based on a predetermined calculation rule, and a processing management unit 32.

処理管理部32は、処理状態を高速エンジン30処理状態とすることで、ソフトウェア処理部4が処理管理部32の処理状態をチェックした際に、ソフトウェア処理部4が処理すべきデータが存在しないことを通知する。   The processing management unit 32 sets the processing state to the processing state of the high-speed engine 30 so that when the software processing unit 4 checks the processing state of the processing management unit 32, there is no data to be processed by the software processing unit 4. To be notified.

処理選択部31は、展開された受信データを高速エンジン30が処理すべきであることを高速エンジン30に対して通知することで、高速エンジン30は、展開された受信データに対して演算処理を実行し、演算結果に基づいて送出するデータを決定して各送信回路2にデータ送出通知を出力する。   The processing selection unit 31 notifies the high-speed engine 30 that the high-speed engine 30 should process the expanded reception data, so that the high-speed engine 30 performs arithmetic processing on the expanded reception data. The data to be transmitted is determined based on the calculation result, and a data transmission notification is output to each transmission circuit 2.

高速エンジン30は、データ送出通知を出力すると、処理管理部32に対して高速エンジン30の処理が完了したことを通知する。ただし、高速エンジン30内の処理が固定サイクルで完了することが決まっているシステム構成では、処理管理部32が自立的に高速エンジン30の処理完了を認識してもよい。   When the high-speed engine 30 outputs the data transmission notification, the high-speed engine 30 notifies the processing management unit 32 that the processing of the high-speed engine 30 is completed. However, in a system configuration in which the processing in the high speed engine 30 is determined to be completed in a fixed cycle, the processing management unit 32 may independently recognize the completion of the processing in the high speed engine 30.

処理管理部32は、現在の処理対象データの処理が完了したことを認識し、受信回路1及び処理選択部31に対して処理が完了したことを通知する。   The process management unit 32 recognizes that the process of the current process target data is completed, and notifies the reception circuit 1 and the process selection unit 31 that the process is completed.

受信回路1の受信データ管理部11は、コマンド処理の完了が通知されるまでの間、次のコマンドが蓄積されているかどうかを関しする。次のコマンドが蓄積されている場合は、再度、データ展開処理部13で受信データを展開し、コマンド処理の完了が通知された後、処理選択部31に対してパケット受信を通知する。   The reception data management unit 11 of the reception circuit 1 relates to whether or not the next command is accumulated until the completion of command processing is notified. If the next command is stored, the data expansion processing unit 13 expands the received data again. After the completion of the command processing is notified, the process selection unit 31 is notified of packet reception.

本発明のエンジン・プロセッサ連携システム8において、低速なソフトウェア処理を実行するのは、ソフトウェア処理部4のみである。   In the engine / processor cooperation system 8 of the present invention, only the software processing unit 4 executes low-speed software processing.

受信データが高速エンジン30にて処理される場合は、低速なソフトウェア処理部を経由することなく、ハードウェア動作だけで動作するため、ソフトウェア処理の介在しない高速処理が可能であることが特徴である。   When received data is processed by the high-speed engine 30, it operates only by hardware operation without going through a low-speed software processing unit, so that high-speed processing without software processing is possible. .

続いて、入力データがソフトウェア処理部4のプロセッサ40にて処理される際の動作例を示す。図5及び図6は、入力データがプロセッサ40にて処理される場合の、入力データの流れを説明するための図である。尚、図5は受信回路1に対して処理管理部32経由で処理完了を通知する場合の図であり、図6は受信回路1に対して直接、処理完了の通知を送信する場合の図である。   Next, an operation example when input data is processed by the processor 40 of the software processing unit 4 will be described. 5 and 6 are diagrams for explaining the flow of input data when the input data is processed by the processor 40. FIG. 5 is a diagram in the case of notifying the reception circuit 1 of the completion of processing via the processing management unit 32, and FIG. 6 is a diagram in the case of notifying the reception circuit 1 of the completion of processing directly. is there.

MUX回路7は、パケット・コマンドデータを受信すると、セッションデータ読出処理部52へコマンドを転送する。セッションデータ読出処理部52は、セッションデータメモリ50からセッションデータの読み出しを行い、受信回路1へ出力する。   When receiving the packet command data, the MUX circuit 7 transfers the command to the session data read processing unit 52. The session data read processing unit 52 reads the session data from the session data memory 50 and outputs it to the receiving circuit 1.

受信回路1が、入力データを受信したことを処理選択部31に通知し、処理選択部31で高速エンジン30とソフトウェア処理部4のプロセッサ40のどちらで処理すべきかを判断して、処理管理部32に通知するところまでは同一動作である。   The receiving circuit 1 notifies the processing selection unit 31 that the input data has been received, and the processing selection unit 31 determines which of the high-speed engine 30 and the processor 40 of the software processing unit 4 should process, and the processing management unit The operation is the same up to the point of notification to 32.

処理管理部32は、処理選択部31から、入力データがソフトウェアの処理対象であることが通知されると、処理状態をソフトウェア処理可能状態に変更する。ソフトウェア処理部内のプロセッサ40は、プロセッサバス6経由で、処理管理部32の処理状態レジスタをポーリングにより読み出しを実施し、対象データがソフトウェア処理部で実行すべきコマンドであることを認識する。   When the process selection unit 31 notifies that the input data is a software process target, the process management unit 32 changes the process state to a software processable state. The processor 40 in the software processing unit reads the processing status register of the processing management unit 32 by polling via the processor bus 6 and recognizes that the target data is a command to be executed by the software processing unit.

プロセッサ40は、受信回路1の受信ソフトウェアインタフェース12を介して受信データ蓄積メモリ10から対象データの読み出しを行い、必要な演算処理を実行する。プロセッサ40は、演算実行後、受信回路1の受信ソフトウェアインタフェース12に対して、処理が完了したことをプロセッサバス6経由、若しくは処理管理部32経由で通知するとともに、各送信回路2に対して、必要なコマンドの送信処理を通知する。   The processor 40 reads the target data from the received data storage memory 10 via the reception software interface 12 of the reception circuit 1 and executes necessary arithmetic processing. After the calculation, the processor 40 notifies the reception software interface 12 of the reception circuit 1 that the processing has been completed via the processor bus 6 or the process management unit 32, and also to each transmission circuit 2 Notify the necessary command transmission process.

プロセッサ40は、処理が完了したことをプロセッサバス6経由で通知した場合、処理管理部32に対して対象データの処理完了を通知する。   When the processor 40 notifies that the processing is completed via the processor bus 6, the processor 40 notifies the processing management unit 32 of the completion of the processing of the target data.

処理管理部32は、ソフトウェア処理部4から対象データの処理完了が通知されると、処理状態レジスタをアイドル状態にし、次のコマンドの処理が可能であることを、処理選択部31に通知する。   When the software processing unit 4 notifies the processing completion of the target data, the processing management unit 32 sets the processing state register in the idle state and notifies the processing selection unit 31 that the next command can be processed.

次に、本発明のエンジン・プロセッサ連携システム8における高速エンジン30動作時の動作タイミング例について説明する。   Next, an example of operation timing when the high-speed engine 30 operates in the engine / processor cooperation system 8 of the present invention will be described.

図7は、本発明のエンジン・プロセッサ連携システム8における高速エンジン30動作時の動作タイミング例を説明するための図である。   FIG. 7 is a diagram for explaining an example of operation timing when the high-speed engine 30 operates in the engine / processor cooperation system 8 of the present invention.

高速エンジン30動作時には、パケット・コマンドデータは、MUX回路7、セッションデータ読出処理部52、受信回路1、処理選択部31、高速エンジン30、セッション送信回路2、セッションデータ書込処理部53の順番で処理される。図7の四角内の数字はセッションを一意に識別するための識別情報を意味するものとする。   When the high-speed engine 30 is operating, the packet command data is transmitted in the order of the MUX circuit 7, the session data read processing unit 52, the reception circuit 1, the processing selection unit 31, the high-speed engine 30, the session transmission circuit 2, and the session data write processing unit 53. Is processed. The numbers in the squares in FIG. 7 mean identification information for uniquely identifying a session.

各処理ブロックはパイプライン化されており、セッション1のパケット・コマンドデータ受信後にセッション2のコマンドを受信した場合、各ブロックはパケット・コマンドデータを連続して処理可能なものとする。セッション1に対する3番目のコマンドは、セッション1に対する2番目のコマンド処理が完了し、セッションデータ書込処理部53が該当セッションのロックが解除するまでセッションデータ読み出し処理の待ち合わせを行う。   Each processing block is pipelined, and when a command for session 2 is received after reception of packet command data for session 1, each block can process packet command data continuously. The third command for session 1 waits for the session data read processing until the second command processing for session 1 is completed and session data write processing unit 53 unlocks the corresponding session.

このように、各ブロックの処理がパイプライン化されていても、短い時間間隔で同一セッションのコマンドが入力される状況では、セッションデータ読出処理部52での待ち合わせ処理により処理性能の劣化が発生する。   As described above, even when the processing of each block is pipelined, in a situation where commands of the same session are input at a short time interval, the processing performance deteriorates due to the waiting process in the session data read processing unit 52. .

処理性能の劣化を防止するためには、セッションデータ読出処理部52でセッションのデータを読み出してから、セッションデータ書込処理部53でセッションデータを更新するまでの時間を短くすることが重要である。   In order to prevent deterioration in processing performance, it is important to shorten the time from session data read processing unit 52 reading session data to session data write processing unit 53 updating session data. .

ここで、セッションロックメモリ51に関してより詳しく説明する。   Here, the session lock memory 51 will be described in more detail.

セッションロックメモリ51では、セッションを一意に識別可能なセッション番号毎にセッションロック状態かどうかを管理する。   The session lock memory 51 manages whether or not the session is locked for each session number that can uniquely identify the session.

セッションがロック状態とは、セッションデータメモリ50内の該当セッションデータが読み出し中であり、新たな読み出しを禁止している状態である。セッションがロック状態でなければ該当セッションデータの読み出しが可能ということになる。   The session is in a locked state when the corresponding session data in the session data memory 50 is being read and new reading is prohibited. If the session is not locked, the corresponding session data can be read.

セッションデータ読出処理部52は、セッションデータをセッションデータメモリ50から読み出しする際にセッションロックメモリ51内の該当セッション番号をロック状態に書き込む。   The session data read processing unit 52 writes the corresponding session number in the session lock memory 51 in the locked state when reading the session data from the session data memory 50.

セッションデータ読出処理部52は、ロック状態のセッション番号に関するコマンドを受信した場合は、該当セッションの読み出しが禁止されているので、ロック状態が解除されるまで待ち合わせを行う。ロック状態が解除されるのは、セッションデータ書込処理部53が更新されたセッションデータエントリをセッションデータメモリ50に書き込むタイミングである。   When receiving a command related to the session number in the locked state, the session data read processing unit 52 waits until the locked state is released because reading of the corresponding session is prohibited. The locked state is released when the session data write processing unit 53 writes the updated session data entry to the session data memory 50.

セッションデータ読出処理部52は、ロック状態が解除されるタイミングで更新後のセッションデータをセッションデータとして受信コマンドと共に受信回路へ送信すると共に、セッションロックメモリ51の該当セッション番号を再度ロック状態に設定する。   The session data read processing unit 52 transmits the updated session data as the session data together with the reception command to the receiving circuit at the timing when the locked state is released, and sets the corresponding session number in the session lock memory 51 to the locked state again. .

図7の例では、セッション1に対する3番目のコマンド受信時のみ、セッションがロック状態(値1)になっているため、ロック解除の待ち合わせが発生している。   In the example of FIG. 7, only when the third command for the session 1 is received, the session is in the locked state (value 1), so that a lock release waiting has occurred.

このように、本発明のエンジン・プロセッサ連携システム8では、送信回路、受信回路1が、ハードウェア処理部3用に展開されたデータを受け渡す高速インタフェースを有し、また、送信回路は、高速エンジン30でのコマンド処理中に、あらかじめ次のコマンドのデータを展開しておくことで、全体遅延を削減する。   Thus, in the engine processor cooperation system 8 of the present invention, the transmission circuit and the reception circuit 1 have a high-speed interface for transferring data developed for the hardware processing unit 3, and the transmission circuit is a high-speed interface. During command processing in the engine 30, the next command data is expanded in advance, thereby reducing the overall delay.

次に本発明のエンジン・プロセッサ連携システムの実施例について説明する。   Next, an embodiment of the engine / processor cooperation system of the present invention will be described.

図8は、本発明のエンジン・プロセッサ連携システム8を利用したTCPオフロード処理部110を適用したサーバシステム110の構成例である。   FIG. 8 is a configuration example of the server system 110 to which the TCP offload processing unit 110 using the engine / processor cooperation system 8 of the present invention is applied.

サーバ装置100は、TCPオフロード処理部110、CPU101、メインメモリ102、バス103より構成される。サーバ装置100は、外部ネットワークと接続し、TCPを利用して対向ホスト(サーバ、パソコン、その他)と通信を行う。CPU101は、TCPオフロード処理部110経由で対向ホストからのパケットを送受信する。   The server device 100 includes a TCP offload processing unit 110, a CPU 101, a main memory 102, and a bus 103. The server device 100 is connected to an external network, and communicates with an opposite host (server, personal computer, etc.) using TCP. The CPU 101 transmits and receives a packet from the opposite host via the TCP offload processing unit 110.

TCPオフロード処理部110は、ネットワーク送受信部111、パケット受信部112、パケット送信部113、ホスト接続部114、エンジン・プロセッサ連携システム8より構成される。   The TCP offload processing unit 110 includes a network transmission / reception unit 111, a packet reception unit 112, a packet transmission unit 113, a host connection unit 114, and an engine / processor cooperation system 8.

対向ホストからサーバ装置100へTCPパケットが送信される場合の動作例に関して説明する。   An operation example when a TCP packet is transmitted from the opposite host to the server apparatus 100 will be described.

対向ホストからサーバ装置100へ送信されたパケットは、ネットワーク送受信部111経由でパケット受信部112に入力される。   A packet transmitted from the opposite host to the server device 100 is input to the packet receiving unit 112 via the network transmission / reception unit 111.

パケット受信部112は、受信したパケットがどのセッションに属するかの識別を行う。具体的には、TCPセッションの場合、送信IPアドレス・送信TCPポート・受信IPアドレス・受信TCPポートの組み合わせでセッションを識別する。サーバ装置は、識別したセッションを一意に区別するためのセッション番号によりセッションを管理する。新規のセッションの場合は、パケット受信部112にて新しいセッション番号の割り当てを行う。   The packet receiving unit 112 identifies to which session the received packet belongs. Specifically, in the case of a TCP session, the session is identified by a combination of a transmission IP address, a transmission TCP port, a reception IP address, and a reception TCP port. The server device manages the session by a session number for uniquely identifying the identified session. In the case of a new session, the packet receiving unit 112 assigns a new session number.

パケット受信部112は、受信パケットを一時的に蓄積すると共に、TCPヘッダを抽出して、セッション番号・新規セッションかどうかのフラグ・TCPヘッダを一つの受信パケットコマンドとしてエンジン・プロセッサ連携システム8に転送する。   The packet receiving unit 112 temporarily accumulates the received packets, extracts the TCP header, and transfers the session number, a flag indicating whether the session is new, and the TCP header to the engine / processor cooperation system 8 as one received packet command. To do.

エンジン・プロセッサ連携システム8は、受信パケットコマンドを受信すると、該当する受信パケットコマンドに対する処理を実行し、受信パケット処理結果をパケット受信部112に転送する。   When the engine / processor cooperation system 8 receives the received packet command, the engine / processor cooperation system 8 executes processing for the corresponding received packet command and transfers the received packet processing result to the packet receiving unit 112.

パケット受信部112は、エンジン・プロセッサ連携システム8より受信パケット処理結果を受信すると、受信パケット処理結果の内容に従って、受信パケットのペイロードデータをホスト接続部114、バス102経由で、メインメモリに転送すると共に、必要に応じてデータを受信したことをCPU101に通知する。CPU101への通知方法としては、割り込みを利用する方法やメインメモリの特定領域にデータを書き込んで、CPU101から該当メモリ領域をポーリングアクセスする方法などがあるが、本発明においてはどちらを用いても良い。   When receiving the received packet processing result from the engine / processor cooperation system 8, the packet receiving unit 112 transfers the payload data of the received packet to the main memory via the host connection unit 114 and the bus 102 according to the content of the received packet processing result. At the same time, it notifies the CPU 101 that data has been received as necessary. As a method of notifying the CPU 101, there are a method of using an interrupt, a method of writing data in a specific area of the main memory, and a method of polling access to the corresponding memory area from the CPU 101. .

次に、サーバ装置100から対向ホストへTCPパケットを送信する場合の動作例に関して説明する。   Next, an operation example when a TCP packet is transmitted from the server apparatus 100 to the opposite host will be described.

CPU101は、送信ペイロードデータをメインメモリ102に書き込むと共に、TCPオフロード処理部110に対して送信要求することを通知する。この送信要求は、送信要求コマンドとしてTCPオフロード処理部110のホスト接続部114に入力される。送信要求コマンドの転送法としては、CPU101が直接コマンドをホスト接続部114に転送する方法と、コマンド自体はメインメモリ102に書き込み、CPU101は送信要求コマンドが存在することをホスト接続部114に通知することで、ホスト接続部114がメインメモリ102から送信要求コマンドの読み出しを実行する方法があるが、本発明においてはどちらを用いても良い。   The CPU 101 writes the transmission payload data in the main memory 102 and notifies the TCP offload processing unit 110 that a transmission request is made. This transmission request is input to the host connection unit 114 of the TCP offload processing unit 110 as a transmission request command. As a transmission method of the transmission request command, the CPU 101 directly transfers the command to the host connection unit 114, the command itself is written in the main memory 102, and the CPU 101 notifies the host connection unit 114 that the transmission request command exists. Thus, there is a method in which the host connection unit 114 reads the transmission request command from the main memory 102, but either of them may be used in the present invention.

送信要求コマンドは、ホスト接続部114経由で、本発明のエンジン・プロセッサ連携システム8に入力される。   The transmission request command is input to the engine / processor cooperation system 8 of the present invention via the host connection unit 114.

エンジン・プロセッサ連携システム8は、送信要求コマンドの処理を実施し、送信するペイロードデータを決定しパケット送信要求をパケット送信部112に通知する。   The engine / processor cooperation system 8 processes the transmission request command, determines payload data to be transmitted, and notifies the packet transmission unit 112 of the packet transmission request.

パケット送信部112は、パケット送信要求を受信すると、メインメモリ102から要求されたペイロードデータを読み出すと共に送出パケットを生成して、ネットワーク送受信部111経由で外部に送信パケットを送出する。   When receiving the packet transmission request, the packet transmission unit 112 reads the requested payload data from the main memory 102 and generates a transmission packet, and transmits the transmission packet to the outside via the network transmission / reception unit 111.

接続先のサーバ装置(対向ホスト)は、サーバ装置100からのペイロード付きパケットを受信すると、どこまで受信したかという情報をACKパケットとしてサーバ装置100に対して送出する。対向ホストからサーバ装置100へ送出されたACKパケットは、ネットワーク送受信部111経由で、パケット受信部113に入力される。   When the connection destination server device (opposite host) receives a packet with a payload from the server device 100, the server device 100 sends information indicating how far the packet has been received to the server device 100 as an ACK packet. The ACK packet transmitted from the opposite host to the server device 100 is input to the packet receiving unit 113 via the network transmission / reception unit 111.

パケット受信部113は、通常のデータパケット受信時と同様にセッション番号を解決し、セッション番号・新規セッションフラグ(ここでは新規になることはない)・TCPヘッダを含む受信パケットコマンドをエンジン・プロセッサ連携システム8に対して出力する。   The packet receiving unit 113 resolves the session number in the same way as when receiving a normal data packet, and links the received packet command including the session number, new session flag (not new here), and TCP header to the engine and the processor. Output to system 8.

エンジン・プロセッサ連携システム8は、該当セッション番号のセッションに対して、TCPヘッダの内容からどこまでのペイロードデータを対向ホストが受信したかを判定して、送信完了コマンドをホスト接続部114経由でメインメモリ102に書き込み、CPU101に通知する。   The engine / processor cooperation system 8 determines how much payload data has been received by the opposite host from the contents of the TCP header for the session of the corresponding session number, and sends a transmission completion command to the main memory via the host connection unit 114. Write to 102 and notify the CPU 101.

CPU101は、送信完了コマンドを参照することで、送信要求したデータがどこまで送信完了したかを識別し、完了分のデータに関しては解放する。なお、エンジン・プロセッサ連携システム8は、CPU101から送信要求コマンドを受信した際に、指定された送信ペイロードデータの全てを一度に送信するとは限らない。TCPには、フロー制御機構が存在し、一度に送出可能なデータは限られる。よって、送出可能な量のデータを送出し、対向ホストからACKパケットが入力されパケット受信コマンドを受信した際に、新たに送出可能となる送信ペイロードデータが存在しないかどうかをチェックし、存在する場合は送出可能となったペイロードデータ部分を読み出してパケット化し、対向ホストに送出する。   The CPU 101 refers to the transmission completion command to identify how far the transmission requested data has been transmitted, and releases the completed data. When the engine / processor cooperation system 8 receives a transmission request command from the CPU 101, the engine / processor cooperation system 8 does not always transmit all of the designated transmission payload data at a time. TCP has a flow control mechanism, and data that can be transmitted at a time is limited. Therefore, when the amount of data that can be sent is sent, when an ACK packet is input from the opposite host and a packet reception command is received, it is checked whether there is any new send payload data that can be sent. Reads out the payload data portion that can be sent out, packetizes it, and sends it to the opposite host.

図9にセッションデータメモリ50が保持するセッションデータのエントリ例を示す。   FIG. 9 shows an example of entry of session data held in the session data memory 50.

セッションデータメモリ50は、セッション番号により識別されるセッション毎に以下のようなセッションデータを管理する。
・state: セッションの状態。セッション確率途中(SYN_RECEIVED、SYN_SENT)、セッション確立状態(SYN_ESTABLISHED)、セッション切断途中等、セッション未使用状態(CLOSED)
・rcv_nxt: 対向ホストからどこまでデータを受信したかを示す
・rcv_wnd: rcv_nxtに加えてどこまでデータを受信可能の受信可能データ量を示す
・snd_una: サーバ装置100の送信対象データを、対向ホストがどこまで受信したかを示す。
・snd_nxt: サーバ装置100の送信対象データを、どこまで送信したかを示す。
・snd_wnd: 送信可能なデータサイズ(厳密にはいくつかのパラメータの複合要因により決まる値であるが簡易化して一つのパラメータとする)
・snd_req: サーバ装置100の送信対象データのデータ末尾の位置
The session data memory 50 manages the following session data for each session identified by the session number.
• state: Session state. Session probability in progress (SYN_RECEIVED, SYN_SENT), session establishment status (SYN_ESTABLISHED), session disconnection, etc., session unused status (CLOSED)
-Rcv_nxt: Shows how much data has been received from the opposite host-rcv_wnd: Shows how much data can be received in addition to rcv_nxt-snd_una: How far the opposite host receives the transmission target data of the server device 100 Indicates whether or not
Snd_nxt: indicates how far the transmission target data of the server apparatus 100 has been transmitted.
-Snd_wnd: Data size that can be sent (Strictly speaking, it is a value determined by the complex factors of several parameters, but it is simplified to one parameter)
Snd_req: Data end position of the transmission target data of the server apparatus 100

図10にセッションデータパラメータの関係イメージ図を示す。   FIG. 10 shows a relationship image diagram of session data parameters.

まず、送信データ管理パラメータに関して説明する。   First, transmission data management parameters will be described.

図9のセッションデータメモリにおけるセッション番号3の例を当てはめると、1500byte(0-1499byte)の送信要求データの中で、399byte目までのデータは対向ホストでの受信が完了し、400byteから999byte目までのデータは送信完了したがまだACKが返ってきておらず、1000byteから1499byte目までは未送信状態であることを意味する。400-999byteまでの600byteしかデータを送っていない理由は、snd_wndにより送信可能なデータ量が600byteに制限されているからである。   Applying the example of session number 3 in the session data memory in Fig. 9, the data up to the 399th byte in the 1500byte (0-1499byte) transmission request data has been received by the opposite host, from the 400th byte to the 999th byte This means that ACK has not been returned yet, but the data from 1000 bytes to 1499 bytes is not transmitted yet. The reason why only 600 bytes up to 400-999 bytes are sent is that the amount of data that can be sent is limited to 600 bytes by snd_wnd.

続いて、受信データ管理パラメータに関して説明する。699byte目まではデータを受信しており700byte目以降の受信を待っている状態である。400byte分のデータが受信可能であることから、699+4000= 4699byte目まで受信可能な状態であることが分かる。なお、これらのセッションデータパラメータは、TCPのSEQ番号やACK番号に対応する相対的な値であり、初期値が0から始まるとは限らない。   Next, received data management parameters will be described. Data is received up to the 699th byte, and waiting for reception after the 700th byte. Since 400 bytes of data can be received, it can be seen that 699 + 4000 = 4699 bytes can be received. Note that these session data parameters are relative values corresponding to TCP SEQ numbers and ACK numbers, and their initial values do not always start from zero.

なお、上記は、TCPセッションに含まれるセッションデータの一部にすぎず、実際にはより多くの種類のセッションデータが存在する。   Note that the above is only part of the session data included in the TCP session, and there are actually more types of session data.

図11に受信処理におけるセッションデータメモリのエントリ更新例を示す。図11は、セッションデータメモリ50において、外部からセッション番号3のTCPパケットを受信した場合のセッションデータメモリエントリの更新例を示している。   FIG. 11 shows an example of updating the entry of the session data memory in the reception process. FIG. 11 shows an example of updating the session data memory entry when the session data memory 50 receives a TCP packet of session number 3 from the outside.

処理選択部31は、rcv_nxtと受信TCPヘッダの先頭バイト位置が一致する場合のみ高速エンジン30での処理を選択し、一致しない場合はプロセッサ40での処理を選択するものとする。   The process selection unit 31 selects the process in the high-speed engine 30 only when the rcv_nxt and the first byte position of the received TCP header match, and selects the process in the processor 40 when they do not match.

図9のセッションデータメモリの状態において、セッション番号3では、699byte目まではデータを受信しており、700byte目以降を受信待ちの状態である。   In the state of the session data memory in FIG. 9, with session number 3, data is received up to the 699th byte, and reception is awaited after the 700th byte.

最初に受信したTCPパケットが700-1199byte目までのデータを含んでいたとする。   Assume that the first received TCP packet contains data up to 700-1199 bytes.

TCPヘッダを含むTCPパケットコマンドとセッションデータ読出処理部52経由で読み出されたセッションデータは、受信回路1へ入力される。   The TCP packet command including the TCP header and the session data read via the session data read processing unit 52 are input to the receiving circuit 1.

処理選択部31は、TCPパケットの先頭バイト位置の値とrcv_nxtの値とが一致することから、高速エンジン30にてコマンドを処理することを選択する。   The process selection unit 31 selects that the high-speed engine 30 processes the command because the value of the leading byte position of the TCP packet matches the value of rcv_nxt.

高速エンジン30は、700-1199byte目を受信したことを識別し、rcv_nxt=1200、rcv_wnd=3500に更新することをセッション送信回路2−1に伝え、外部送信回路2−2経由で700-1199byte目のデータをメインメモリ102に転送することを通知する。   The high-speed engine 30 identifies that the 700-1199th byte has been received, notifies the session transmission circuit 2-1 to update to rcv_nxt = 1200, rcv_wnd = 3500, and receives the 700-1199th byte via the external transmission circuit 2-2. That the data is transferred to the main memory 102.

新しいセッションデータは、セッション送信回路2−1より送信され、セッションデータ書込処理部53においてセッションデータの更新が行われる。   New session data is transmitted from the session transmission circuit 2-1, and the session data write processing unit 53 updates the session data.

次に、受信したTCPパケットが900-1399bye目までのデータを含んでいたとする。   Next, it is assumed that the received TCP packet includes data up to 900-1399bye.

TCPヘッダと更新されたセッションデータが同様に受信回路1経由で処理選択部31に入力される。   Similarly, the TCP header and the updated session data are input to the processing selection unit 31 via the receiving circuit 1.

処理選択部31は、TCPパケットの先頭バイト位置の値とrcv_nxtの値とが一致しないことからプロセッサ40での処理を選択する。   The process selection unit 31 selects the process in the processor 40 because the value of the leading byte position of the TCP packet does not match the value of rcv_nxt.

プロセッサ40は、受信パケットの900-1199byte部分はすでに受信したデータであり1200-1399byte目までが新たに受信したデータであることを認識する。   The processor 40 recognizes that the 900-1199 bytes portion of the received packet is already received data, and the data from 1200 to 1399 bytes are newly received data.

rcv_nxt=1400、rcv_wnd=3300に更新することをセッション送信回路2−1に伝え、外部送信回路2−2経由で1200-1399byte目のデータのみをメインメモリ102に転送することを通知する。   The update to rcv_nxt = 1400 and rcv_wnd = 3300 is transmitted to the session transmission circuit 2-1, and notification is made that only the data of 1200-1399 bytes are transferred to the main memory 102 via the external transmission circuit 2-2.

次にCPU101より受信領域拡張コマンドとして、1000byte分受信領域の拡張が可能であるというコマンドが入力されたとする。   Next, it is assumed that a command indicating that the reception area can be extended by 1000 bytes is input from the CPU 101 as a reception area expansion command.

受信領域拡張コマンドとセッションデータが受信回路経由で処理選択部に入力され、処理選択部31は、高速エンジン30での処理を選択(受信領域拡張コマンドは常に高速エンジンで処理する設定になっているものとする)する。   The reception area extension command and the session data are input to the process selection unit via the reception circuit, and the process selection unit 31 selects processing in the high speed engine 30 (the reception area extension command is set to always be processed in the high speed engine) Suppose)

高速エンジン30は、rcv_wndの値を4300に拡張し、セッション送信回路経由でセッションデータエントリを更新する。   The high-speed engine 30 extends the value of rcv_wnd to 4300 and updates the session data entry via the session transmission circuit.

上述したように、本発明によると、ハードウェアエンジンにて処理を実現する場合は、全処理がソフトウェア処理部を経由せずに処理が実施されるため、ソフトウェア処理が介入することにより性能劣化を招くことなく、ハードウェアエンジンの持つ最大限の性能を用いることが可能である。   As described above, according to the present invention, when the processing is realized by the hardware engine, the entire processing is performed without going through the software processing unit. It is possible to use the maximum performance of the hardware engine without incurring.

更に、本発明によると、データ展開処理部が、受信データ蓄積メモリ内の先頭データを展開してハードウェアインタフェースに受け渡した後、受信データ蓄積メモリ内に次のコマンドが到着している場合には、あらかじめ受信データ蓄積メモリからの読み出しを行い、データ展開処理部内でデータの展開を実施し、処理完了通知が入力されるとすぐに、ハードウェアインタフェースにデータの受け渡す構成であるため、高速エンジンの処理を高速化することが可能である。   Further, according to the present invention, after the data expansion processing unit expands the head data in the reception data storage memory and delivers it to the hardware interface, the next command arrives in the reception data storage memory. The high-speed engine is configured to read data from the received data storage memory in advance, perform data expansion in the data expansion processing unit, and deliver the data to the hardware interface as soon as a processing completion notification is input. It is possible to speed up the process.

更に、セッションデータ読み出し処理部が読み出しに必要なデータ量を削減することで、セッションデータ読み出し処理部でのセッションデータの読み出しにかかる時間、データ展開処理部内での読み出しデータの展開にかかる時間を削減可能である。   Furthermore, the session data read processing unit reduces the amount of data required for reading, thereby reducing the time required for reading session data in the session data read processing unit and the time required for developing read data in the data development processing unit. Is possible.

図1は、本発明のエンジン・プロセッサ連携システムのブロック図である。FIG. 1 is a block diagram of an engine / processor cooperation system according to the present invention. 図2は、受信回路のブロック図である。FIG. 2 is a block diagram of the receiving circuit. 図3は、送信回路のブロック図である。FIG. 3 is a block diagram of the transmission circuit. 図4は、ハードウェアにて処理を行う場合の入力データの流れを説明するための図である。FIG. 4 is a diagram for explaining the flow of input data when processing is performed by hardware. 図5は、ソフトウェアにて処理を行う場合の入力データの流れを説明するための図である。FIG. 5 is a diagram for explaining the flow of input data when processing is performed by software. 図6は、ソフトウェアにて処理を行う場合の入力データの流れを説明するための図である。FIG. 6 is a diagram for explaining the flow of input data when processing is performed by software. 図7は、本発明における動作タイミング例である。FIG. 7 is an example of operation timing in the present invention. 図8は、本発明を適用した装置のブロック図である。FIG. 8 is a block diagram of an apparatus to which the present invention is applied. 図9は、セッションデータの一例を示す図である。FIG. 9 is a diagram illustrating an example of session data. 図10は、セッションデータパラメータの関係を説明するためのイメージ図である。FIG. 10 is an image diagram for explaining the relationship between session data parameters. 図11は、受信処理におけるセッションデータメモリのエントリ更新例を説明するための図である。FIG. 11 is a diagram for explaining an example of updating an entry in the session data memory in the reception process. 図12は、従来の演算システムのブロック図である。FIG. 12 is a block diagram of a conventional arithmetic system. 図13は、従来のソフトウェア演算システムのブロック図である。FIG. 13 is a block diagram of a conventional software computing system. 図14は、従来のハードウェア演算システムのブロック図である。FIG. 14 is a block diagram of a conventional hardware calculation system. 図15は、従来例1のブロック図である。FIG. 15 is a block diagram of the first conventional example.

符号の説明Explanation of symbols

1 受信回路
2 送信回路
2−1 セッション送信回路
2−2 外部送信回路
3 ハードウェア処理部
4 ソフトウェア処理部
5 セッションデータ読出処理部
6 プロセッサバス
7 MUX回路
8 エンジン・プロセッサ連携システム
10 受信データ蓄積メモリ
11 受信データ管理部
12 受信ソフトウェアインタフェース
13 データ展開処理部
20 送信データ蓄積メモリ
21 送信データ管理部
22 送信ソフトウェアインタフェース
23 展開データ書込部
30 高速エンジン
31 処理選択部
32 処理管理部
40 プロセッサ
41 メモリ
42 周辺回路
50 セッションデータメモリ
51 セッションロックメモリ
52 セッションデータ読出処理部
53 セッションデータ書込処理部
DESCRIPTION OF SYMBOLS 1 Reception circuit 2 Transmission circuit 2-1 Session transmission circuit 2-2 External transmission circuit 3 Hardware processing part 4 Software processing part 5 Session data read-out processing part 6 Processor bus 7 MUX circuit 8 Engine processor cooperation system 10 Received data storage memory DESCRIPTION OF SYMBOLS 11 Reception data management part 12 Reception software interface 13 Data expansion | deployment process part 20 Transmission data storage memory 21 Transmission data management part 22 Transmission software interface 23 Expansion | deployment data writing part 30 High speed engine 31 Process selection part 32 Process management part 40 Processor 41 Memory 42 Peripheral circuit 50 Session data memory 51 Session lock memory 52 Session data read processor 53 Session data write processor

Claims (5)

エンジン・プロセッサ連携システムであって、
TCPセッションについてデータの送受信状況をセッション毎に示すセッションデータを管理しているセッションデータメモリと、
入力されたデータが属するTCPセッションのセッションデータを前記セッションデータメモリから読み出す読出部と、
前記入力されたデータと前記読み出したセッションデータとを蓄積する蓄積部と、
前記蓄積されている入力データとセッションデータとを、ハードウェア処理部がアクセスできる形式に展開する展開部と、
前記展開されたデータを参照し、あらかじめ決められた演算ルールに基づいて、前記蓄積されている入力データをソフトウェアで処理するかハードウェア処理部で処理するかを決定する処理決定部と、前記処理決定部がハードウェア処理部で処理すると決定した場合に、前記展開された入力データを処理する高速エンジンとを有するハードウェア処理部と、
前記処理決定部がソフトウェア処理部で処理すると決定した場合に、前記蓄積されている入力データを処理するソフトウェア処理部と、
前記入力データの処理が終了すると、この入力データが属するTCPセッションのセッションデータを更新する更新部と
を有し、
前記展開部は、次の入力データが前記蓄積部に蓄積されているかどうかを監視し、次の入力データが蓄積されている場合にはそれを読み出し、展開し、前記高速エンジンからの処理完了通知を受信すると、前記展開した入力データを前記ハードウェア処理部に受け渡す
ことを特徴とするエンジン・プロセッサ連携システム。
An engine-processor linkage system,
A session data memory managing session data indicating the transmission / reception status of data for each TCP session;
A reading unit for reading session data of a TCP session to which the input data belongs, from the session data memory;
An accumulation unit for accumulating the input data and the read session data;
A developing unit that expands the stored input data and session data into a format accessible by a hardware processing unit;
A processing determination unit that refers to the expanded data and determines whether the stored input data is processed by software or a hardware processing unit based on a predetermined calculation rule; and the processing A hardware processing unit having a high-speed engine for processing the expanded input data when the determination unit determines to process in the hardware processing unit;
A software processing unit for processing the stored input data when the processing determination unit determines to process with a software processing unit;
An update unit that updates session data of a TCP session to which the input data belongs when the processing of the input data is completed;
The expansion unit monitors whether the next input data is stored in the storage unit, if the next input data is accumulated read it, expand, processing completion notification from the high-speed engine The engine / processor cooperation system , wherein the expanded input data is transferred to the hardware processing unit upon receipt of .
前記入力されたデータは、パケットの送受信に関するコマンドを含み、
前記ハードウェア処理部と前記ソフトウェア処理部は、前記入力されたコマンドを処理する
ことを特徴とする請求項1に記載のエンジン・プロセッサ連携システム。
The input data includes a command related to packet transmission and reception,
2. The engine / processor cooperation system according to claim 1, wherein the hardware processing unit and the software processing unit process the input command.
前記読出部は、前記高速エンジン又は前記ソフトウェア処理部で前記蓄積されている入力データを処理している間は、その入力データが属するセッションのセッションデータを読み出さないことを特徴とする請求項1又は請求項2に記載のエンジン・プロセッサ連携システム。   The reading unit does not read session data of a session to which the input data belongs while the input data stored in the high-speed engine or the software processing unit is being processed. The engine / processor cooperation system according to claim 2. 前記展開部は、前記蓄積部の先頭データを展開して、ハードウェア処理部から一度にアクセス可能なように構成されていることを特徴とする請求項1から請求項3のいずれかに記載のエンジン・プロセッサ連携システム。   The said expansion | deployment part expand | deploys the head data of the said accumulation | storage part, and it is comprised so that it can access at once from a hardware processing part, The Claim 1 characterized by the above-mentioned. Engine / processor linkage system. 前記ソフトウェア処理部は、前記入力データを処理する際に、読み出しされていないセッションデータにアクセスするために、プロセッサバス経由で直接前記セッションデータメモリにアクセスすることを特徴とする請求項1から請求項4のいずれかに記載のエンジン・プロセッサ連携システム。   The said software processing part accesses the said session data memory directly via a processor bus | bath in order to access the session data which has not been read, when processing the said input data. 5. The engine / processor cooperation system according to any one of 4).
JP2007089010A 2007-03-29 2007-03-29 Engine / processor linkage system and linkage method Expired - Fee Related JP5587530B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007089010A JP5587530B2 (en) 2007-03-29 2007-03-29 Engine / processor linkage system and linkage method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007089010A JP5587530B2 (en) 2007-03-29 2007-03-29 Engine / processor linkage system and linkage method

Publications (2)

Publication Number Publication Date
JP2008250496A JP2008250496A (en) 2008-10-16
JP5587530B2 true JP5587530B2 (en) 2014-09-10

Family

ID=39975400

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007089010A Expired - Fee Related JP5587530B2 (en) 2007-03-29 2007-03-29 Engine / processor linkage system and linkage method

Country Status (1)

Country Link
JP (1) JP5587530B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011033562A1 (en) 2009-09-16 2011-03-24 株式会社 東芝 Communication device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3491626B2 (en) * 2001-05-29 2004-01-26 ソニー株式会社 Transmission device, reception device, and transmission / reception device
JP3796251B2 (en) * 2002-09-30 2006-07-12 三洋電機株式会社 Communication device
US7792133B2 (en) * 2003-05-29 2010-09-07 Nec Corporation Packet relay device and packet method, and program
JP4475156B2 (en) * 2005-03-29 2010-06-09 日本電気株式会社 Network processing apparatus, network processing method, and network processing program

Also Published As

Publication number Publication date
JP2008250496A (en) 2008-10-16

Similar Documents

Publication Publication Date Title
JP4439491B2 (en) Multi-graphics processor system, graphics processor and data transfer method
US7526593B2 (en) Packet combiner for a packetized bus with dynamic holdoff time
US6836808B2 (en) Pipelined packet processing
US6832279B1 (en) Apparatus and technique for maintaining order among requests directed to a same address on an external bus of an intermediate network node
US11243809B2 (en) Level two first-in-first-out transmission
US7409468B2 (en) Controlling flow of data between data processing systems via a memory
US9311265B2 (en) Techniques for improving throughput and performance of a distributed interconnect peripheral bus connected to a host controller
US8473658B2 (en) Input output bridging
US6691178B1 (en) Fencepost descriptor caching mechanism and method therefor
JP2006338538A (en) Stream processor
CN114546913A (en) Method and device for high-speed data interaction among multiple hosts based on PCIE interface
JP5477112B2 (en) Network system testing method
US20090292856A1 (en) Interserver communication mechanism and computer system
US11579877B2 (en) Broadside random access memory for low cycle memory access and additional functions
US20060085587A1 (en) CPU system, bus bridge, control method therefor, and computer system
JP5587530B2 (en) Engine / processor linkage system and linkage method
JP4104939B2 (en) Multiprocessor system
JP2007272694A (en) Communication interface device and communication method
JP2006285872A (en) Multi-cpu system
JP2002176464A (en) Network interface device
JP2004147243A (en) Packet communication system
JP4411138B2 (en) Data flow control system, circuit thereof, and method thereof
KR100441884B1 (en) Network system performing high speed block data transfer between packet processing engine and main processor and direct memory access management method for the same
JP4567373B2 (en) Data transfer device and communication data processing system
US20180307299A1 (en) Arithmetic processing device, information processing apparatus, and method for controlling arithmetic processing device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100302

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110928

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111128

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120718

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121018

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121025

A912 Removal of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20130222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140606

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140724

R150 Certificate of patent or registration of utility model

Ref document number: 5587530

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees