(57)【要約】      （修正有）【課題】ソフトウェアを用いることなく、割り込み処理によるオーバーヘッドのない、メモリコピーが可能なプロセッサを提供する。【解決手段】データを記憶する第１のデータ記憶手段１９と、第１のデータ記憶手段からデータがコピーされる第２のデータ記憶手段２０と、前記第１のデータ記憶手段から前記第２のデータ記憶手段への前記データ全体のコピーを、不可分処理として実行させるコピー命令が記憶された第１の命令記憶手段１８と、データに対し施す処理の処理命令が記憶された第２の命令記憶手段１３と、データ全体のコピーを実行しながら、前記第２の命令記憶手段から読み出した前記処理命令を前記データに施し、第２のデータ記憶手段に記憶することで、データコピーとデータに対する処理を並行に実行する制御手段１４とを有し、制御手段は、前記データ全体のコピーが完了すると、前記第１のデータ記憶手段の前記コピー命令の次の命令から実行を再開する。【選択図】図２
2013003790.tif 000002
【特許請求の範囲】
【請求項１】
所定の通信プロトコルに従ってデータを送受信する機器に搭載されるプロセッサであって、
前記データを記憶する第１のデータ記憶手段と、
前記第１のデータ記憶手段から前記データがコピーされる第２のデータ記憶手段と、
前記第１のデータ記憶手段から前記第２のデータ記憶手段への前記データ全体のコピーを、不可分処理として実行させるコピー命令が記憶された第１の命令記憶手段と、
前記データに対し施す一連の処理命令が記憶された第２の命令記憶手段と、
前記コピー命令を実行した場合、前記データ全体のコピーを実行しながら、前記第２の命令記憶手段から読み出した前記処理命令を前記データに施し、処理後に前記第２のデータ記憶手段に記憶することで、データコピーとデータに対する処理を並行に実行する制御手段と、を有し、
前記制御手段は、前記データ全体のコピーが完了すると、前記第１のデータ記憶手段の前記コピー命令の次の命令から実行を再開する、
ことを特徴とするプロセッサ。
【請求項２】
前記第２の命令記憶手段は複数の領域に分割された各領域に、互いに異なる前記一連の処理命令を記憶しており、
前記制御手段は、前記コピー命令を実行する際に取得した前記領域の指示情報に基づき、前記第２の命令記憶手段から読み出して実行する前記一連の処理命令を切り換える、
ことを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記第２の命令記憶手段には、前記一連の処理命令の末尾に処理の終了を示す終了命令が記憶されており、
前記制御手段は、前記終了命令を実行すると所定の回路へのクロック供給を停止し、前記データ全体のコピーが完了した場合に、前記回路へのクロック供給を再開する、
ことを特徴とする請求項１又は２記載のプロセッサ。
【請求項４】
前記制御手段が前記データ全体をコピー中であることを示すフラグを記憶するレジスタ、を有する請求項１〜３いずれか１項記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定の通信プロトコルに従ってデータを送受信する機器に搭載されるプロセッサであって、メモリ間でデータをコピーするプロセッサに関する。
【背景技術】
【０００２】
ネットワークを利用したデータ通信が広く普及し、有線・無線を問わず、ネットワーク機器の消費電力の低減、転送効率の向上が重要になってきている。ネットワーク機器には、例えば、ネットワークカード、ＬＡＮスイッチ、ルータ、及びこれらから派生した様々な機器がある。これらネットワーク機器には、プロセッサが搭載される場合が多く、プロセッサは、機器の機能に応じた処理をソフトウェアにより提供する。プロセッサは、例えば、送受信する対象のパケットやフレームに付加されるヘッダの解析、ヘッダ内容の更新、パケットを次ブロックに転送する処理などを行う。
【０００３】
このような処理において、プロセッサは、任意のメモリ上に蓄積されたパケットを他のブロックへ転送するメモリコピーに多くの時間を割いている。一般に、メモリコピーの機能は、プロセッサが実行するＯＳ（オペレーティングシステム）が提供するコピー関数、又は、ＤＭＡ（ダイレクトメモリアクセス）コントローラの様な専用ハードウェアにより実現される（例えば、特許文献１、２参照。）。特許文献１には、スレッドが負荷の高い演算ユニットに到達したときは、負荷の低いラインに移動するため、演算ユニット間でスレッドを転送するプロセッサが開示されている。
【０００４】
特許文献２には、プロトコルに従ってインターフェースで通信するインターフェース回路において、ＤＭＡコントローラが、第１のインターフェース回路とアドレス空間との間でＤＭＡ転送を行う装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ソフトウェアによるメモリコピーは、ハードウェアによるメモリコピーよりも単位時間当たりの転送効率が低下する傾向にあるという問題がある。また、ＤＭＡコントローラの様な専用ハードウェアを利用すると、ＤＭＡコントローラ自体の回路規模が増加するおそれがある。また、ＤＭＡは少なくとも転送の終了時にＣＰＵに割り込みするが、ＣＰＵではソフトウェアによる割り込み制御が必要となるため、割り込み処理のオーバーヘッドが無視できない。また、メインのソフトウェアだけでなく割り込み制御のソフトウェアが必要になるため、プログラムが複雑化するという問題もある。
【０００６】
本発明は、上記課題に鑑み、メモリコピーにソフトウェアを用いることなく、また、割り込み処理によるオーバーヘッドを低減してメモリコピーが可能なプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、所定の通信プロトコルに従ってデータを送受信する機器に搭載されるプロセッサであって、前記データを記憶する第１のデータ記憶手段と、前記第１のデータ記憶手段から前記データがコピーされる第２のデータ記憶手段と、前記第１のデータ記憶手段から前記第２のデータ記憶手段への前記データ全体のコピーを、不可分処理として実行させるコピー命令が記憶された第１の命令記憶手段と、前記データに対し施す処理の処理命令が記憶された第２の命令記憶手段と、前記コピー命令を実行した場合、前記データ全体のコピーを実行しながら、前記第２の命令記憶手段から読み出した前記処理命令を前記データに施し、前記第２のデータ記憶手段に記憶することで、データコピーとデータに対する処理を並行に実行する制御手段と、を有し、前記制御手段は、前記データ全体のコピーが完了すると、前記第１のデータ記憶手段の前記コピー命令の次の命令から実行を再開する、ことを特徴とする。
【発明の効果】
【０００８】
メモリコピーにソフトウェアを用いることなく、また、割り込み処理によるオーバーヘッドを低減してメモリコピーが可能なプロセッサを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態のプロセッサによるメモリコピーを模式的に説明する図の一例である。
【図２】プロセッサの構成図の一例である。
【図３】プロセッサが動作するまでのセットアップ（ブート）手順を示す図の一例である。
【図４】メモリコピー時の処理を説明する図の一例である。
【図５】メモリコピー時の処理を説明する図の一例である。
【図６】連続メモリコピー命令の一例を示す図である。
【図７】プロセッサがメインプログラムと専用プログラムを実行する手順を示す図の一例である。
【図８】プロセッサの構成図の一例である（実施例２）。
【図９】連続メモリコピー命令の一例を示す図である（実施例２）。
【図１０】プロセッサがメインプログラムと専用プログラムを実行する手順を示す図の一例である。
【図１１】プロセッサの構成図の一例である（実施例４）。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を参照しながら実施例を挙げて説明する。
【００１１】
図１は、本実施形態のプロセッサによるメモリコピーを模式的に説明する図の一例である。
【００１２】
制御部がデータＲＡＭ１からデータＲＡＭ２にデータをコピーする命令を実行する場合、制御部はコピー対象のデータを全てコピーするまで連続してデータのコピーを繰り返す。データのコピーはハード的に実行されるので、ソフトウェアを用いる場合よりも高速にコピーできる。
【００１３】
また、データＲＡＭ１からデータＲＡＭ２にデータを転送している間、制御部はプログラムＲＡＭから読み出した命令を実行することで、制御部が一時的に記憶するデータに対し処理を施す。この処理は、例えばパケットのヘッダに関する処理である。
【００１４】
また、データのコピーが完了すると、制御部は、自動的にコピー前に実行していた処理に復帰する。すなわち、ＤＭＡがコピーする場合のように割り込みによるオーバーヘッドが生じない。
【００１５】
このようなプロセッサによれば、制御部が処理に多くの時間を割くメモリコピーの間に、並行して必要な処理を行うことができるので、データ転送効率を向上させることができる。また、ＤＭＡを利用する場合と比較してソフトウェアの構成を簡易化できる。
【実施例１】
【００１６】
図２は、プロセッサの構成図の一例を示す。プロセッサ１００は、制御部１４により全体が制御される。制御部１４には、プログラムＲＡＭ１（符号は１３であるが、以下符号は省略する）、レジスタ１１、演算部１２、ＪＴＡＧ（Joint Test Action Group）回路１５及びバスＩ／Ｆ１６が接続されている。また、バスＩ／Ｆ１６にはシステムバス１７を介してプログラムＲＡＭ２（符号は１８であるが、以下符号は省略する）、データＲＡＭ１（符号は１９であるが、以下符号は省略する）、データＲＡＭ２（符号は２０であるが、以下符号は省略する）、及び、メモリＩ／Ｆ２１が接続されている。また、メモリＩ／Ｆ２１にはフラッシュＲＯＭ２２が接続されている。
【００１７】
プログラムＲＡＭ１には、制御部１４が連続してメモリコピーを実行している間、制御部１４が並行して実行する専用プログラムがコピーされる。このように、プログラムＲＡＭ１は制御部１３に直接、接続され、プログラムＲＡＭ２、データＲＡＭ１及びデータＲＡＭ２とは制御部１３へのデータの送信経路が異なっている。これにより制御部１４は、メモリコピーとプログラムＲＡＭ１の命令の実行を並行して行うことが可能になる。
【００１８】
レジスタ１１には、演算部１２が演算を行う対象のデータが記憶される。レジスタ１１は実際には複数の汎用レジスタを有し、演算部１２に複数のデータを同期して出力することができる。また、レジスタ１１は、プログラムカウンタ、スタックポインタ、ステータスレジスタ、コントロールレジスタなどの特殊レジスタを有している。
【００１９】
演算部１２は、四則演算、論理演算、シフト操作等の演算をレジスタ１１から取得したデータに施す。演算部１２が行う演算は、制御部１４が命令をデコードすることで制御される。
【００２０】
ＪＴＡＧ回路１５は、ソフトウェアをデバッグするために設けられている、テスト用のロジックとコントローラが格納された回路である。
【００２１】
制御部１４は、プログラムＲＡＭ１又はプログラムＲＡＭ２から命令を読み出してデコードし、デコード結果によって演算部１２を含むプロセッサ１００の全体を制御する。
【００２２】
バスＩ／Ｆ１６は、システムバス１７に接続されたプログラムＲＡＭ２，データＲＡＭ１，データＲＡＭ２及びメモリＩ／Ｆ２１と制御部１４を選択的に接続する。バスＩ／Ｆ１６は例えば書き込み／読み出しの指定とアドレスを設定する不図示のレジスタを有する。そして、レジスタに設定された内容に応じてプログラムＲＡＭ２，データＲＡＭ１，データＲＡＭ２及びメモリＩ／Ｆ２１からデータを読み出し制御部１４に出力し、又、制御部１４から取得したデータをデータＲＡＭ１，データＲＡＭ２及びメモリＩ／Ｆ２１に書き込む。
【００２３】
プログラムＲＡＭ２には、制御部１４が実行するメインプログラム３１が格納される。データＲＡＭ１，２には、制御部１４が処理の対象とするデータが記憶される。メモリＩ／Ｆ２１はプロセッサ１００がフラッシュＲＯＭ２２と接続するためのインタフェースである。フラッシュＲＯＭ２２には、メインプログラム３１及び専用プログラム３２が記憶されている。メインプログラム３１は、プロセッサの起動直後から制御部１４が実行するプログラムであり、専用プログラム３２はメインプログラム３１から呼び出され、専用の処理を行うプログラムである。
【００２４】
〔起動手順〕
図３は、本実施形態のプロセッサ１００が動作するまでのセットアップ（ブート）手順を示す図の一例である。図３の手順は例えばリセット端子がネゲートされるとスタートする。
【００２５】
s1：プロセッサ１００の制御部１４は、リセットが解除されると、フラッシュＲＯＭ２２の予め定められたアドレスの初期処理用のプログラムを実行する。そして、フラッシュＲＯＭ２２の内部に格納されているバイナリコードを全て加算し、所定の値であるか否かを判定することで、フラッシュＲＯＭ２２が正常であることを確認する（チェックサム）。
【００２６】
s2：フラッシュＲＯＭ２２の内容が正常な場合、制御部１４は、フラッシュＲＯＭ２２に格納されているメインプログラム３１をプログラムＲＡＭ２に全てコピーする。ＲＡＭに移動してから実行するのは、フラッシュＲＯＭ２２ではデータの読み出しにおいてはＲＡＭのようなアドレス指定によるアクセスができないためである。
【００２７】
s3：プログラムＲＡＭ２へのコピーが完了した後、制御部１４は専用プログラム３２をフラッシュＲＯＭ２２の予め設定されている所定のアドレスから読み出し、プログラムＲＡＭ１にコピーする。このコピーが完了するとセットアップが完了する。
【００２８】
s4：セットアップ完了後、制御部１４はプログラムＲＡＭ２の決まったアドレスからメインプログラム３１の命令をフェッチし、命令を実行を開始する。
【００２９】
〔メインプログラム、専用プログラム〕
メインプログラム３１又は専用プログラム３２の処理の一例を説明する。このプロセッサ１００がネットワークにおいてフレームやパケットを転送する機器に搭載される場合、メインプログラム３１及び専用プログラム３２は通信プロトコルに基づく処理を行うことが想定される。
【００３０】
図４（ａ）はＬＡＮスイッチによる転送と処理を説明する図の一例である。図４（ａ）では２つのＬＡＮスイッチ１，２がタグＶＬＡＮを形成している。ＰＣ１はＬＡＮスイッチ１のポート１に、ＰＣ２はＬＡＮスイッチ１のポート２に、ＰＣ３はＬＡＮスイッチ２のポート２に、ＰＣ４はＬＡＮスイッチ２のポート３に、それぞれ接続されている。ＬＡＮスイッチ１のポート３はＬＡＮスイッチ２のポート１と接続されている（これらはタグポートになる）。
【００３１】
ＬＡＮスイッチ１，２のポートにはＶＬＡＮＩＤが設定されているため、各ＰＣ１〜４は次のＶＬＡＮに属する。
ＰＣ１，４：ＶＬＡＮ１
ＰＣ２，３：ＶＬＡＮ２
したがって、ＰＣ１、４はレイヤ２における１つのＶＬＡＮを、ＰＣ２，３はレイヤ２における１つのＶＬＡＮを、それぞれ構成する。ＬＡＮスイッチ１は、ＰＣ１からフレームを受け取っても、ＬＡＮスイッチ１のポート２には送信せず、ポート３を介してＬＡＮスイッチ２に送信する。ＬＡＮスイッチ２はＰＣ１と同じＶＬＡＮ１に属するポート３にのみフレームを送信する。タグＶＬＡＮでは、このように、異なるＬＡＮスイッチ１，２間で仮想的なＬＡＮ（ＶＬＡＮ）を構築できる。また、ＶＬＡＮ内でフレームの転送を実現するため、ＬＡＮスイッチ１はフレームの転送時にフレームにＶＬＡＮタグを付け、また、ＬＡＮスイッチ２はポートから送信する前にＶＬＡＮタグを取り外す。
【００３２】
図４（ｂ）は、ＭＡＣフレームの一例を示す。ＭＡＣフレーム(以下、単にフレームという)は、プリアンプル、宛先アドレス、送信元アドレス、タイプ、データ（ＩＰアドレスなどのＩＰパケットを含む）、及び、ＦＣＳ（Frame Check Sequence）の各フィールドを有する。ＰＣ１〜ＰＣ４はこのようなフォーマットのフレームを出力する。
【００３３】
フレームを受信したＬＡＮスイッチ１，２は、フレームにＶＬＡＮタグを追加し、また、取り外す。この処理手順を、ＰＣ１からＰＣ４にフレームを送信する場合を例に説明する、
（１）ＬＡＮスイッチ１は、ポート１のＶＬＡＮＩＤが１であることを検出する。
（２）次に、ＬＡＮスイッチ１は、ＶＬＡＮタグにＶＬＡＮＩＤ（この場合はＰＣ１が属するＶＬＡＮ１）を付ける。
（３）これにより、ＦＣＳが変わるので、ＬＡＮスイッチ１はＦＣＳを再計算してＦＣＳを更新する。
（４）ＬＡＮスイッチ１はＬＡＮスイッチ２にフレームを送信する。この過程で、ポート１からポート３にデータをコピーする必要が生じる。
（５）ＬＡＮスイッチ２はＶＬＡＮタグに基づき、フレームをポート３に送信することを検出する。
（６）ＬＡＮスイッチ２は、フレームからＶＬＡＮタグを取り外す。
（７）これにより、ＦＣＳが変わるので、ＬＡＮスイッチ２はＦＣＳを再計算してＦＣＳを更新する。
（８）ＬＡＮスイッチ２はポート３にフレームを送信する。この過程で、ポート１からポート３にデータをコピーする必要が生じる。ＰＣ４は送信先のＭＡＣアドレスを見て、自分宛であることからフレームを受信する。
【００３４】
このように、ＬＡＮスイッチは転送においていくつかの処理を行っている。ここで、メインプログラム３１は、例えば（１）（４）の処理を行い、ＶＬＡＮタグを取り付ける必要があること、転送元のポート、及び、転送先のポートを検出すると、専用プログラム３２を呼び出す。専用プログラム３２は、（２）（３）の処理を行い、処理をメインプログラム３１に返す。
【００３５】
同様に、ＬＡＮスイッチ２のメインプログラム３１は、（５）（８）の処理を行い、ＶＬＡＮタグを取り外す必要があること、転送元のポート、及び、転送先のポートを検出すると、専用プログラム３２を呼び出す。専用プログラム３２は、（６）（７）の処理を行い、処理をメインプログラム３１に返す。
【００３６】
本実施形態のプロセッサ１００は、このようなデータ転送をメインプログラム３１と専用プログラム３２により効率的に実行する。
【００３７】
また、ルータにおいても同様の処理が発生する。
図５はルータによる転送と処理を説明する図の一例である。図５ではＬＡＮ１のＰＣ１と、ＬＡＮ２のＰＣ２がルータを介して接続されている。ＰＣ１，ＰＣ２，及び、ルータのアドレスは次のようになっている。
ＰＣ１  ＩＰ  ：１．２．３．４
ＭＡＣ：Ａ
ＰＣ２  ＩＰ  ：１．２．３．５
ＭＡＣ：Ｂ
ルータ（ＬＡＮ１側）  ＩＰ  ：２．２．２．２
ＭＡＣ：Ｃ
ルータ（ＬＡＮ２側）  ＩＰ  ：２．２．２．０
ＭＡＣ：Ｄ
このような構成において、ＰＣ１がＰＣ２にフレームを送信する場合、ＰＣ１はネットワークの異なるＰＣ２のＭＡＣアドレスが分からないので、ルータのＬＡＮ１側のＭＡＣアドレスを宛先のＭＡＣアドレスとする。ＰＣ１にとって、ＰＣ２のＩＰアドレスは既知である。このような場合、ルータはＰＣ１から送信されたフレームのＭＡＣアドレスを取り替える。
（１）ルータは宛先のＩＰアドレスに基づきルーティングテーブルを参照して、フレームをＬＡＮ２側に送信することを検出する。
（２）ルータは、送信元のＭＡＣアドレスＡをルータのＬＡＮ２側のＭＡＣアドレスＤに、宛先のＭＡＣアドレスＣをＰＣ２のＭＡＣアドレスＢにそれぞれ置き換える。また、ＴＴＬ（Ｔｉｍｅ  Ｔｏ  Ｌｉｖｅ）を１つ減算する。
（３）ＴＴＬが変わったので、ＩＰパケットのヘッダチェックサムを再計算する。また、ＴＴＬ、ヘッダチェックサム、及び、フレームアドレスの変更によりＦＣＳが変わるので、ルータはＦＣＳを再計算してＦＣＳを更新する。
（４）ルータはＬＡＮ２にフレームを送信する。この過程で、ＬＡＮ１側のポートからＬＡＮ２側のポートにデータをコピーする必要が生じる。
【００３８】
このように、ルータはルーティングにおいていくつかの処理を行っている。ここで、メインプログラム３１は、例えば（１）（４）の処理を行い、ＭＡＣアドレスを置き換える必要があること、転送元のポート（ＬＡＮ１側）と転送先のポート（ＬＡＮ２側）を検出すると、専用プログラム３２を呼び出す。専用プログラム３２は、（２）（３）の処理を行い、処理をメインプログラム３１に返す。本実施形態のプロセッサ１００は、このようなデータ転送をメインプログラム３１と専用プログラム３２により効率的に実行する。
【００３９】
この他、ネットワーク機器によっては単にヘッダを取り付けたり、ヘッダを取り付けたりする処理を行う場合もある。
【００４０】
〔動作手順〕
プロセッサ１００は、ネットワークからネットワークに転送すべきフレームを不定期に受信しており、フレームを受信するとメインプログラム３１の実行により必要な処理を行う。例えば、ＬＡＮスイッチやルータ内のメモリコピーを行う場合、コピー元のアドレス、コピー先のアドレス、及び、コピーするデータ量を専用プログラム３２に通知する。また、必要であれば、処理内容（ＶＬＡＮタグを取り付けるのか、ＭＡＣアドレスを付け替えるのか）を通知する。
【００４１】
本実施形態では、メインプログラム３１から専用プログラム３２へ処理を切り換える命令を「連続メモリコピー命令」と称することとする。
【００４２】
図６（ａ）は、連続メモリコピー命令の一例を示す図である。連続メモリコピー命令は、コピー対象のデータの全体に対しデータの読み出しと書き込みが不可分に行われる不可分処理命令である。
【００４３】
連続メモリコピー命令のニーモニックは、例えば、以下のようになる。
「CMEMCP  srcAdd，distAdd，byteNum」
CMEMCPは連続コピー命令（オペコード）を意味する。
srcAddはコピー元アドレスを意味する。
distAddはコピー先アドレスを意味する。
byteNumはコピーするバイト数を意味する。
【００４４】
図７は、プロセッサ１００がメインプログラム３１と専用プログラム３２を実行する手順を示す図の一例である。
【００４５】
s1：制御部１４は、プログラムＲＡＭ２からフェッチした命令をデコードし、それが連続メモリコピー命令であった場合、以下の処理を行う。
s2：
(i)  制御部１４はレジスタ１１の内容を、ハード的にレジスタ内部にあるバックアップ領域に退避する（コンテキストの保存）。
(ii)  制御部１４はプロセッサ１００への割り込みを禁止する。例えば、割り込み端子へのＡＮＤ回路の一方の入力をゼロにする。
(iii)  制御部１４は、プログラムＲＡＭ１の専用プログラム３２の先頭アドレスをプログラムカウンタにセットする。これにより、制御部１４が命令をフェッチするＲＡＭが、プログラムＲＡＭ２からプログラムＲＡＭ１に変更される。
(iv)  制御部１４は、バスＩ／Ｆ１６にコピー元アドレスを設定し、データＲＡＭ１から決まったバイト数のデータを読み出す。読み出されたデータはレジスタ１１に設定される。コピー元アドレスを決まったバイト数だけ大きくしておく。
(v)  制御部１４は、プログラムカウンタに設定したプログラムＲＡＭ１のアドレスから命令をフェッチする。
(vi) 制御部１４は、フェッチした命令をデコードして演算部１２を制御するので、データＲＡＭ１に対し決まった処理を実行することができる。制御部１４が実行する命令は、上記のように、ＶＬＡＮタグの取り付け・取り外し、ＭＡＣアドレスの付け替え、及び、ＦＣＳの再計算などである。プログラムＲＡＭ１の命令は、データＲＡＭ１のデータの読み出しサイクルに合わせてコーディングされているため、例えばＶＬＡＮタグやＭＡＣアドレスが読み出されるタイミングで、取り付け等を行う命令が読み出される。処理の必要のないサイクルでは例えばＮＯＰが読み出される。
【００４６】
また、ＦＣＳを求める処理はフレームの全体に対し必要なので、制御部１４は命令を実行する毎にＦＣＳを計算する処理を行う。
(vii）制御部１４は、データに対する処理の次のサイクルで、バスＩ／Ｆ１６にコピー先アドレスを設定し、処理されたデータをデータＲＡＭ２に記憶する。コピー先アドレスを決まったバイト数だけ大きくしておく。
【００４７】
制御部１４はコピーするバイト数（byteNum）だけデータをコピーするまで、(iv)データの読み出し、(v)命令のフェッチ、(vi)データに対する処理、(vii)書き込み、を繰り返す。
【００４８】
図２に示したように、制御部１４に対しプログラムＲＡＭ１は直接接続されており、データＲＡＭ１とデータＲＡＭ２はバスＩ／Ｆ１６を介して接続されているので、専用プログラム３２の命令のフェッチとメモリコピーとは干渉しない。このため、プログラムＲＡＭ１から命令を読み出すサイクルと同じサイクルで（同時に）、データＲＡＭ１からデータを読み出すこと又はデータＲＡＭ２からデータを記憶すること、が可能である。このように、プロセッサ１００は、メモリコピーを実行している間、専用プログラムを並行して実行することができる。
【００４９】
s3：専用プログラム３２の最後のアドレスには、特別なプログラムストール命令が記憶されている。これにより、制御部１４は専用プログラムからメインプログラムに処理を切り換える。
【００５０】
図６（ｂ）はプログラムストール命令の一例を、図６（ｃ）はプログラムＲＡＭ１に格納されている専用プログラム３２を模式的に示す図の一例である。プログラムストール命令「pstall」は専用プログラム３２の終了を意味する命令である。このため、add、subなど専用プログラム３２の命令の一番最後に記憶されている。
【００５１】
制御部１４は、プログラムストール命令をデコードすると、メモリコピーが終了することを条件に以下の処理を行う。
(i)  制御部１４はレジスタ１１の内容を、ハード的に、バックアップ領域に退避してあるレジスタ１１の内容をレジスタ１１に復帰させる。
(ii) 制御部１４はプロセッサ１００への割り込み禁止を解除する。
(iii)プログラムカウンタに設定されたアドレスにより、最後に実行されたメインプログラム３１の次の命令から実行を再開する。
【００５２】
s4：この後、制御部１４は、メインプログラム３１の実行により、データＲＡＭ２からデータを次の機器に送信する。送信後は次のデータの転送要求を待ち受けるシーケンスに戻る。
【００５３】
このように、本実施形態のプロセッサ１００は、連続メモリコピーをハード的に実行している間、並行して、データ転送に必要な処理を実行できる。また、割り込み処理によるオーバーヘッドも生じない。このため、データの転送効率を格段に向上させることができる。
【実施例２】
【００５４】
本実施例では、プログラムＲＡＭ１が複数のバンクに分割されているプロセッサ１００について説明する。
【００５５】
図８は、本実施例のプロセッサ１００の構成図の一例を示す。図８において図２と同一部の説明は省略する。図示するように、プログラムＲＡＭ１は複数（図では３つ）のバンクに分かれている。バンクは、制御部１４がメモリにアクセスする際に占有する（他のアクセスが受け付けられない）単位である。また、増設・交換の単位にもなる。プログラムＲＡＭ１を複数のバンクに分割しておくことで、複数の専用プログラム３２をプログラムＲＡＭ１に格納できる。
【００５６】
図３を使用して、本実施例のプロセッサ１００が動作するまでのセットアップ（ブート）手順について説明する。実施例１と異なるのは、専用プログラム３２のプログラムＲＡＭ１へのロードである。
【００５７】
s3：プログラムＲＡＭ２へのメインプログラム３１のコピーが完了した後、制御部１４は専用プログラム３２をフラッシュＲＯＭ２２の予め設定されている所定のアドレスから読み出し、プログラムＲＡＭ１にコピーする。プログラムＲＡＭ１は３つのバンクから構成されているので、各バンク毎に違った専用プログラム３２をコピーすることが本実施例の特徴の１つになる。
このコピーが完了するとセットアップが完了する。
【００５８】
s4：セットアップ完了後、制御部１４はプログラムＲＡＭ２の決まったアドレスからメインプログラム３１の
命令をフェッチし、命令を実行を開始する。
【００５９】
本実施例では、プログラムＲＡＭ１が複数のバンクに区分されているので、連続メモリコピー命令により、どのバンクの専用プログラム３２を制御部１４に実行させるかを指示することができる。
【００６０】
図９は、本実施例の連続メモリコピー命令の一例を示す図である。連続メモリコピー命令のニーモニックは、例えば、以下のようになる。
「CMEMCP  srcAdd，distAdd，byteNum，bankNum」
実施例１と比較すると、bankNumという引数（オペランド）が追加されていることが分かる。なお、プロセッサ１００のアーキテクチャ上、このような４つのオペランドの記述が仕様にない場合は、メインプログラム３１のCMEMCPの直前などにbankNumを通知する命令が記述されている。
【００６１】
bankNumは、プログラムＲＡＭ１の３つのバンク１〜３のうち、どのバンクの専用プログラム３２を実行するかを制御部１４に指示するCMEMCPの引数である。メインプログラム３１は、例えばＬＡＮスイッチ又はルータのどちらの機能を提供する状況かを判定して、バンクを指示する。また、フレームにはいくつかの派生したフォーマットがあるので、フォーマットを判定してバンクを指示することもできる。ＩＰパケットについても同様である。
【００６２】
制御部１４は、bankNumにて指示されるバンクから専用プログラムを読み出し、処理を開始する。以降の手順は実施例1と同様である。
【００６３】
本実施例のプロセッサ１００は、プログラムＲＡＭ１を複数のバンクに区分することで、プロトコル又はデータフォーマットの違いに応じて実行する専用プログラム３２を切り換えることができる。
【実施例３】
【００６４】
本実施例では、専用プログラム３２の動作が終了次第スリープし、メモリコピーが終了したら、スリープモードから自動的に復帰するプロセッサ１００について説明する。こうすることで、プロセッサ１００の消費電力を低減できる。
【００６５】
プロセッサ１００の構成図は図２又は図８のどちらを採用することもでき、プロセッサ１００が動作するまでのセットアップ（ブート）手順も図３（実施例１又は２）の説明と同様である。
【００６６】
図１０は、プロセッサ１００がメインプログラム３１と専用プログラム３２を実行する手順を示す図の一例である。図１０では、制御部１４が連続メモリコピー命令を実行してからプログラムストール命令を実行するまでは実施例１又は２と同様である(s1,s2)。
【００６７】
制御部１４は、転送対象のデータのプロトコル又はデータフォーマットに応じて、専用プログラム３２の実行による処理を行うが、メモリコピーよりも処理の方が先に終了することがある。したがって、専用プログラム３２の実行の終了後は、メモリコピーに必要なリソース以外は停止させることができる。
【００６８】
メモリコピーに必要なリソースは以下のようになる。
・バスＩ／Ｆ１６：制御部１４がデータＲＡＭ１からデータを読み出し、また、データＲＡＭ２に記憶するため。
・ロード／ストアユニット：制御部１４がデータＲＡＭ１からデータを読み出し、また、データＲＡＭ２に記憶するため。ロード／ストアユニットは、例えば、バスＩ／Ｆ１６が有していてもよい。なお、ロード／ストアユニットは、演算部１２に含まれる場合もあるが、制御部１４が演算部１２とは別に保有しているものとする。仮に、演算部１２だけがロード／ストアユニットを有していても、演算部１２のＡＬＵは使用しないのでＡＬＵは停止することができる。ロードストアユニットはデータＲＡＭ１とデータＲＡＭ２のアドレスを計算する機能を有する。
【００６９】
したがって、制御部１４はレジスタ１１、演算部１２、及び、プログラムＲＡＭ１は使用しないので、これらを停止させることができる。制御部１４は、プログラムストール命令をデコードすると以下の処理を行う。
【００７０】
s3：制御部１４は、専用プログラム３２の最後のアドレスの特別なプログラムストール命令をフェッチして、実行する。
1−(i) レジスタ１１、演算部１２、及び、プログラムＲＡＭ１に対するクロック供給を停止させる。この状態を図ではスリープモードとしている。
【００７１】
そして、制御部１４は、メモリコピーが終了すると以下の処理を行う。
2−(i) 制御部１４は、レジスタ１１、演算部１２、及び、プログラムＲＡＭ１に対するクロック供給を再開させる。
2−(ii) 制御部１４はレジスタ１１の内容を、ハード的に、バックアップ領域に退避してあるレジスタ１１の内容をレジスタ１１に復帰させる。
2−(iii) 制御部１４はプロセッサ１００への割り込み禁止を解除する。
2−(iv) プログラムカウンタに設定されたアドレスにより、最後に実行されたメインプログラム３１の次の命令から実行を再開する。
【００７２】
s4：この後、制御部１４は、メインプログラム３１の実行により、データＲＡＭ２からデータを送信する。送信後は次のデータの転送要求を待ち受けるシーケンスに戻る。
【００７３】
したがって、本実施例のプロセッサ１００は、専用プログラム３２の動作が終了次第、使用しないリソースへのクロック供給を停止することで、プロセッサ１００の消費電力を低減できる。
【実施例４】
【００７４】
本実施例では、連続メモリコピー中であることを示すフラグを立てることができるプロセッサ１００について説明する。これにより、制御部１４は連続メモリコピー中であることを観測できるため、より柔軟な命令の実行等が可能となる。
【００７５】
図１１は、本実施例のプロセッサ１００の構成図の一例を示す。図１１において図２又は図８と同一部の説明は省略する。図示するように、本実施例のプロセッサ１００はレジスタ１１とは別にフラグレジスタ２３を有する。フラグレジスタ２３は、制御部１４が読み出したり書き込むことが可能なレジスタである。フラグレジスタ２３をレジスタ１１内又は制御部１４内に配置してもよい。
【００７６】
制御部１４が連続メモリコピー命令を実行すると、レジスタ１１の内容をバックアップ領域に退避し、さらに、フラグレジスタ２３に連続メモリコピー中であることを示すフラグを立てる。その後、メモリコピーが完了すると、制御部１４は、フラグレジスタ２３に連続メモリコピーが完了したことを示すフラグを立てる。
【００７７】
したがって、制御部１４はフラグレジスタ２３を参照し、専用プログラム３２に限られずプログラムを実行して、連続メモリコピー中であれば可能な処理を実行し、また、禁止された処理を実行することを回避できる。このように、連続メモリコピー中であることを観測できるため、より柔軟な命令の実行等が可能となる。
【符号の説明】
【００７８】
１１      レジスタ
１２      演算部
１３      プログラムＲＡＭ１
１４      制御部
１５      ＪＴＡＧ回路
１６      バスＩ／Ｆ
１７      システムバス
１８      プログラムＲＡＭ２
１９      データＲＡＭ
２０      データＲＡＭ２
２１      メモリＩ／Ｆ
２２      フラッシュＲＯＭ
１００    プロセッサ
【先行技術文献】
【特許文献】
【００７９】
【特許文献１】特開２００１−２３６２２１号公報
【特許文献２】特表２００９−５１０６３０号公報
【図１】
2013003790.tif 000003
【図２】
2013003790.tif 000004
【図３】
2013003790.tif 000005
【図４】
2013003790.tif 000006
【図５】
2013003790.tif 000007
【図６】
2013003790.tif 000008
【図７】
2013003790.tif 000009
【図８】
2013003790.tif 000010
【図９】
2013003790.tif 000011
【図１０】
2013003790.tif 000012
【図１１】
2013003790.tif 000013