(57)【要約】【課題】 ＣＰＵコアが期待する時刻までに、演算のリクエストに関する処理がおこなえないことにより、そのリクエストに関する処理が廃棄されるのを防止して、効率よく確実に演算のリクエストに関する処理が実行されるようにする。【解決手段】ＣＰＵコアから演算器に対してリクエストされた処理の一連の演算処理から処理に必要な演算処理時間を算出し、現在時刻とその必要な演算処理時間との和とＣＰＵコアが期待する演算の処理が終了することを期待する終了リクエスト時刻と比較し、終了リクエスト時刻までに、リクエストの処理ができるか否かを判定する。そして、判定した結果を演算器に通知し、演算器はそれに従って新規リクエストの処理をおこなう。【選択図】        図６
2006302168.tif 000002
【特許請求の範囲】
【請求項１】
演算器とアクセス制御回路とを有するコプロセッサの演算制御方法において、
前記演算器と前記アクセス制御回路とに、演算をおこなうことを要求する演算リクエストのパケット長とパケット数、演算をおこなうことを要求する演算リクエストの終了を要求する時刻である終了リクエスト時刻を入力する手順と、
前記演算器において、前記演算リクエストのパケット長とパケット数から該当する演算リクエストの処理時間を算出する手順と、
前記演算器において、前記アクセス制御回路から該当する演算リクエストの実行が許可されたときに、既に許可された演算リクエストの終了時刻と前記該当する演算リクエストの処理時間とから、該当する演算リクエストの終了時刻を算出する手順と、
前記演算器から前記アクセス制御回路に、現在までに許可された演算リクエストの終了時刻と現在までに許可された演算リクエストの終了リクエスト時刻とその演算器で処理中のリクエストがあるか否かを示す処理フラグとを入力する手順と、
前記アクセス制御回路が、あらたな演算リクエストを受けたときに、前記アクセス制御回路は、その演算リクエストのパケット長とパケット数からその演算リクエストの処理時間を算出する手順と、
前記アクセス制御回路が、あらたな演算リクエストを受けたときであって前記入力された処理フラグが処理中のリクエストが無いことを示しているときに、その演算リクエストの処理時間と現在時刻との和が、その演算リクエストの終了リクエスト時刻を超えているときに、前記演算器にその演算リクエストの実行を拒否することを伝え、その演算リクエストの処理時間と現在時刻との和が、その演算リクエストの終了リクエスト時刻を超えないときには、前記演算器にその演算リクエストの実行を許可することを伝える手順と、
前記アクセス制御回路が、あらたな演算リクエストを受けたときであって前記入力された処理フラグが処理中のリクエストが有ることを示しているときに、前記演算器から入力された各々の演算リクエストの終了時刻とそのあらたな演算リクエストの処理時間との和のすべてが各々の演算リクエストの終了リクエスト時刻を超えず、かつ、そのあらたな演算リクエストの終了時刻とそのあらたな演算リクエストの処理時間との和がそのあらたな演算リクエストの終了リクエスト時刻を超えないときには、前記演算器にそのあらたな演算リクエストの実行を許可することを伝え、それ以外のときには、前記演算器にそのあらたな演算リクエストの実行を拒否することを伝える手順とを有することを特徴とするコプロセッサの演算制御方法。
【請求項２】
演算器とアクセス制御回路とを有するコプロセッサの演算制御方法において、
前記アクセス制御回路に、演算をおこなうことを要求する演算リクエストのパケット長とパケット数、演算をおこなうことを要求する演算リクエストの終了を要求する時刻である終了リクエスト時刻を入力する手順と、
前記演算器から前記アクセス制御回路に、現在の演算器占有率を入力する手順と、
前記アクセス制御回路が、あらたな演算リクエストを受けたときに、前記アクセス制御回路は、その演算リクエストのパケット長とパケット数からその演算リクエストの処理時間を算出する手順と、
前記アクセス制御回路が、前記演算リクエストの処理時間を、入力された終了リクエスト時刻と現在時刻の差で除した値を、あらたな演算器占有率として求める手順と、
前記アクセス回路が、前記あらたな演算器占有率と前記入力された演算器占有率の和が１を超えないときに、前記演算器にそのあらたな演算リクエストの実行を許可することとあらたな演算器占有率を伝え、前記あらたな演算器占有率と前記入力された演算器占有率の和が１を超えるときに、前記演算器にそのあらたな演算リクエストの実行を拒否することを伝える手順と、
前記演算器が、前記演算器にそのあらたな演算リクエストの実行を許可することとあらたな演算器占有率を伝えられたときに、そのあらたな演算器占有率を現在の演算器占有率として保存する手順とを有することを特徴とするコプロセッサの演算制御方法。
【請求項３】
演算器とアクセス制御回路とＤＭＡ制御回路とを有するコプロセッサにおいて、
前記ＤＭＡ制御回路は、
ＤＭＡバスを介して外部プロセッサから演算リクエストの実行要求とその演算リクエストのパケット長、パケット数とその演算リクエストの終了を要求する時刻である終了リクエスト時刻とを受け付けて、前記演算器と前記アクセス制御回路に入力し、
前記演算器から演算リクエストの実行要求が許可されたことを伝えられたときには、前記演算器にその演算リクエストのパケットをＤＭＡ転送し、
前記演算器から演算リクエストの実行要求が拒否されたことを伝えられたときには、外部プロセッサに演算リクエストの実行要求が拒否されたことを伝え、
前記演算器は、
前記演算リクエストのパケット長とパケット数から該当する演算リクエストの処理時間を算出し、前記アクセス制御回路から該当する演算リクエストの実行が許可されたときに、既に許可された演算リクエストの終了時刻と前記該当する演算リクエストの処理時間とから、該当する演算リクエストの終了時刻を算出し、
前記演算器から前記アクセス制御回路に、現在までに許可された演算リクエストの終了時刻と現在までに許可された演算リクエストの終了リクエスト時刻とその演算器で処理中のリクエストがあるか否かを示す処理フラグとを入力し、
前記演算器は、あらたな演算リクエストの実行が許可されたこと、または、あらたな演算リクエストの実行が拒否されたことを、前記ＤＭＡ制御回路に伝え、
前記アクセス制御回路は、
あらたな演算リクエストを受けたときに、その演算リクエストのパケット長とパケット数からその演算リクエストの処理時間を算出し、前記アクセス制御回路が、あらたな演算リクエストを受けたときであって前記入力された処理フラグが処理中のリクエストが無いことを示しているときに、その演算リクエストの処理時間と現在時刻との和が、その演算リクエストの終了リクエスト時刻を超えているときに、前記演算器にその演算リクエストの実行を拒否することを伝え、その演算リクエストの処理時間と現在時刻との和が、その演算リクエストの終了リクエスト時刻を超えないときには、前記演算器にその演算リクエストの実行を許可することを伝え、
あらたな演算リクエストを受けたときであって前記入力された処理フラグが処理中のリクエストが有ることを示しているときに、前記演算器から入力された各々の演算リクエストの終了時刻とそのあらたな演算リクエストの処理時間との和のすべてが各々の演算リクエストの終了リクエストを超えず、かつ、そのあらたな演算リクエストの終了時刻とそのあらたな演算リクエストの処理時間との和がそのあらたな演算リクエストの終了リクエスト時刻を超えないときには、前記演算器にそのあらたな演算リクエストの実行を許可することを伝え、それ以外のときには、前記演算器にそのあらたな演算リクエストの実行を拒否することを伝えることを特徴とするコプロセッサ。
【請求項４】
前記演算器を複数有する請求項３記載のコプロセッサ。
【請求項５】
そのコプロセッサ内のある演算器において、演算リクエストの実行を拒否されたときに、前記ＤＭＡ制御回路は、他の演算器にその演算リクエストの実行を割り当てることを特徴とする請求項４記載のコプロセッサ。
【請求項６】
前記演算器が暗号処理回路よりなることを特徴とする請求項３記載のコプロセッサ。
【請求項７】
演算器を制御するアクセス制御回路において、
現在時刻を保存する現在時刻回路と、
演算リクエストのために転送されるパケットのパケット数と各々のパケット長を受け取り、その演算リクエストの処理時間を算出する処理時間算出回路と、
演算リクエストに対する終了を要求する時刻である終了リクエスト時刻を受け取り、保持する終了リクエスト時刻保持回路と、
現在の処理状況を示す処理フラグに応じてあらたな演算リクエストの終了リクエスト時刻と現在処理中の演算リクエストの終了リクエスト時刻とのいずれかを出力する第一の時間判定器と、
現在の処理状況を示す処理フラグに応じて現在時刻か現在処理中の演算リクエストが終了する終了時刻を選択して出力する第一のセレクタ回路と、
第一の時間判定器の結果を用いてあらたな演算リクエストの終了リクエスト時刻と現在処理中の演算リクエストの終了リクエスト時刻を選択して出力する第二のセレクタ回路と、
前記第一のセレクタ回路の出力と前記処理時間算出回路の結果を加算して出力する加算回路と、
前記加算回路の出力と第二のセレクタ回路の出力を比較して結果を出力する第二の時間判定器と、
前記第二の時間判定器の出力により演算リクエストを処理可能であるか否かを判定し外部へ出力する許可フラグ出力回路とを備え、
前記処理フラグが現在処理中の演算リクエストが無いことを示している場合には、前記第一のセレクタにより、前記現在時刻を選択して出力し、
前記加算回路により前記現在時刻と前記処理時間と加算して出力し、
前記時間判定器により、前記加算結果の出力と前記あらたな演算リクエストの終了リクエスト時刻との比較して、そのあらたな演算リクエストの処理可能判定をおこない、
前記処理フラグが現在処理中の演算リクエストが有ることを示し、現在処理中の演算リクエストの終了リクエスト時刻よりあらたな演算リクエストの終了リクエスト時刻が早い場合には、前記第一のセレクタにより、現在処理中の演算リクエストが終了する終了時刻を選択して出力し、
前記加算回路により、前記現在処理中の演算リクエストが終了する終了時刻とあらたな演算リクエストの処理時間と加算して出力し、
前記時間判定器により、前記加算回路の出力と前記現在処理中の演算リクエストの終了リクエスト時刻とを比較して、そのあらたな演算リクエストの処理可能判定をおこない、
前記処理フラグが現在処理中のリクエストが有ることを示し、現在処理中の演算リクエストの終了リクエスト時刻よりあらたな演算リクエストの終了リクエスト時刻が早くない場合には、前記第一のセレクタにより、現在処理中の演算リクエストが終了する終了時刻を選択して出力し、
前記加算回路により、前記現在処理中の演算リクエストが終了する終了時刻とあらたな演算リクエストの処理時間と加算して出力し、
前記時間判定器により、前記加算回路の出力と前記あらたな演算リクエストの終了リクエスト時刻とを比較して、そのあらたな演算リクエストの処理可能判定をおこなうことを特徴とするアクセス制御回路。
【請求項８】
演算器を制御するアクセス制御回路において、
現在時刻を保存する現在時刻回路と、
演算リクエストのために転送されるパケットのパケット数と各々のパケット長を受け取り、その演算リクエストの処理時間を算出する処理時間算出回路と、
演算リクエストに対する終了を要求する時刻である終了リクエスト時刻を受け取り、保持する終了リクエスト時刻保持回路と、
あらたな演算リクエストの終了リクエスト時刻から現在時刻を減算して出力する減算回路と、
前記減算回路の出力を前記処理時間算出回路の出力によって、除算をおこない、該当する演算リクエストの演算器占有率として出力する除算回路と、
前記除算回路の出力と現在処理中の演算器占有率を加算して出力する加算回路と、
前記加算回路の出力と、前記演算器があらたに演算リクエストの処理が可能であることを示す定数と比較して結果を出力する比較器と、
前記比較器からの出力により、そのあらたな演算リクエストを処理可能であるか否かを判定し外部へ出力する許可フラグ出力回路とを備え、
前記減算回路により、あらたな演算リクエストの終了リクエスト時刻から現在時刻を減算して出力し、
前記除算回路により、前記減算回路の出力を前記処理時間算出回路の出力によって、除算をおこなって出力し、
前記加算回路により、前記除算回路の出力と現在処理中の演算器占有率を加算して出力し、
前記比較器により、前記加算回路の出力と、前記演算器があらたに演算リクエストの処理が可能であることを示す定数と比較して結果を出力し、
前記許可フラグ出力回路により、前記比較器からの出力に基づき、そのあらたな演算リクエストを処理可能であるか否かを判定し外部へ出力することを特徴とすることを特徴とするアクセス制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コプロセッサ、および、その演算制御方法に係り、アクセス制御回路を具備し、演算器に対する演算要求を効率よく実行することが可能であるコプロセッサやマイクロプロセッサであって、特に、演算器により暗号処理をおこなうメディアプロセッサに用いて好適なコプロセッサ、および、その演算制御方法に関する。
【背景技術】
【０００２】
従来より、プロセッサの構成として、ＯＳなどを制御するＣＰＵコアのほかに、数値計算や暗号処理などの処理を専門におこなうコプロセッサを付加して処理性能を高めることがおこなわれている。
【０００３】
一般には、プロセッサにおけるコプロセッサ等の演算器は、プロセッサのＣＰＵコアからの要求により、データの演算処理をおこなっている。通常、コプロセッサの演算はＣＰＵコアによってスケジューリングされており、必要に応じて起動と停止を繰り返しおこなっている。コプロセッサがＣＰＵコアにより起動された場合には、ＤＭＡ（Direct Memory Access）等の方式によりデータアクセスをおこなって、データを主記憶装置から取得し、演算を実行後、主記憶装置に処理結果を格納する。また、コプロセッサが演算実行中に、実行中の処理とは無関係の処理をＣＰＵコアからの要求が発生した場合、処理中の状態を、いったん退避させ、ＣＰＵコアからの要求された処理を実行して、処理が終了した時点で退避させた以前の処理を再開する。
【０００４】
また、以下の特許文献１に示されるように、コプロセッサが主記憶装置に格納されたリクエストキューを参照し、コプロセッサ内部の演算器に処理を割り当てる方式がある。この特許文献１に開示された技術によれば、主記憶装置のリクエストキューに対してＣＰＵコア（図２では、ホストプロセッサ２０２）からコプロセッサで実行すべきリクエストを格納する。リクエストキュー２０６は、コプロセッサ内部の要求ユニット２１４が参照し、リクエストが存在すれば、リクエスト情報に従って処理を実行する演算器を起動し、その結果はＣＰＵコアによって指定されたホスト・メモリ２０４に格納される。
【０００５】
【特許文献１】特開２００２−２１６５９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
コプロセッサに演算要求が発行された場合には、コプロセッサ内部の演算処理を実行するために最適な演算器に対して処理が割り当てられる。このとき、既に対象の演算器で別の演算処理が実行されていた場合、演算器を時分割で使用し処理をおこなう。この時、時分割処理によって演算処理の終了時間が遅延することを引き起こし、結果的にＣＰＵコアが期待する終了時刻までに演算処理が実行されない場合がある。ＣＰＵコアが期待する時刻までに実行されなかったことによって、その処理結果は廃棄され、演算効率が大幅に低下するという問題点があった。特に、メディアプロセッサなどにより、コプロセッサによりデジタル暗号処理をおこなう場合には、表示している画面のスピードに追いつかず、コマ落ちなどの表示の不具合が発生する場合があった。
【０００７】
本発明は、上記問題点を解決するためになされたもので、その目的は、コプロセッサ内の演算器で処理を実行する場合に、効率よく演算処理をおこない、演算のリクエストが確実に実行されるようなコプロセッサを提供することにある。
【課題を解決するための手段】
【０００８】
本発明に係るコプロセッサは、コプロセッサ内部の演算器に対して要求された演算のための演算リクエスト（以下、単に「リクエスト」とも言う）が実行可能であるかを判定するアクセス制御回路を具備する。アクセス制御回路は、ＣＰＵコアからリクエストされた一連の演算処理から処理に必要な演算時間を算出し、現在時刻とＣＰＵコアが期待するリクエストの終了を要求する時刻である終了リクエスト時刻を受け取り、あらたなリクエストが処理できるか否かを判定する。判定した結果を演算器に通知し、演算器はそれに従って新規リクエストの処理をおこなう。
【０００９】
処理できなかったリクエストは、ＣＰＵコアが処理することにしてもよいし、コプロセッサ内に同一の機能を有する演算器が複数ある場合には、他の演算器に処理を割り当ててもよい。
【００１０】
本発明を適用することによって、演算処理が破棄されることを防止し、別の演算器へ処理を割り当てたり、ＣＰＵコア自身が処理を実行するように変更判定が可能となる。特に、リアルタイム処理が必要な映像や音声の再生において、表示画面が停止したり再生中の音声が途切れるようなことを防止する。
【発明の効果】
【００１１】
本発明によれば、コプロセッサ内の演算器で処理を実行する場合に、効率よく演算処理をおこない、演算のリクエストが確実に実行されるようなコプロセッサを提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明に係る各実施形態を、図１ないし図１１を用いて説明する。
【００１３】
〔実施形態１〕
以下、本発明に係る第一の実施形態を、図１ないし図７を用いて説明する。
【００１４】
先ず、図１を用いて本発明に係るコプロセッサが適用されたシステム構成について説明する。
図１は、本発明に係るコプロセッサが適用されたシステム構成の構成図である。
【００１５】
このシステムでは、ＤＭＡバス３２６上に、ＣＰＵコア２３０、ローカルメモリ２３１、ＤＭＡコントローラ２３４、暗号処理コプロセッサ２３５が接続されている。
【００１６】
暗号処理コプロセッサ２３５は、ＤＭＡ制御回路２２１、アクセス制御回路２００、セレクタ２２４、ＡＥＳ（Advanced Encryption Standard）演算器２３６、ＤＥＳ（Data Encryption Standard）演算器２３７、Ｍｕｌｔｉ２演算器２３８からなる。ＤＭＡ制御回路２２１は、ＣＰＵコアからのリクエストとそれに関する情報を、アクセス制御回路２００と各々の演算器に伝える機能と、演算器とローカルメモリ２３１間でのデータ転送を制御する機能を有する。 ＡＥＳ演算器２３６、ＤＥＳ演算器２３７、Ｍｕｌｔｉ２演算器２３８は、各々の名が冠された暗号処理をおこなう演算器である。
【００１７】
ＣＰＵコア２３０は、ローカルメモリ２３１に暗号処理コプロセッサ２３５で処理する入力データ２３３を配置する。そして、暗号処理コプロセッサ２３５に対して、例えば、ＡＥＳ演算器２３６を対象とした処理実行のリクエストを発行する。リクエストを受けた暗号処理コプロセッサ２３５は、アクセス制御回路２００とＡＥＳ演算器２３６に対してリクエスト発行通知をおこない、さらに演算器の選択結果３２７をセレクタ２２４に出力する。アクセス制御回路２００は、ＤＭＡ制御回路２２１からの情報とＡＥＳ演算器２３６からの情報を用いて、新規リクエストをＡＥＳ演算器２３６で処理が可能であるか否かを判定し、その結果である許可フラグ３１６をＡＥＳ演算器２３６、ＤＥＳ演算器２３７、Ｍｕｌｔｉ２演算器２３８へ出力する。このとき、リクエストの対象はＡＥＳ演算器２３６であるため、ＡＥＳ演算器２３６のみが許可フラグ３１６を受信し、新規リクエストに対する動作を決定する。
【００１８】
リクエストを処理する場合、ＤＭＡコントローラ２３４を用いてローカルメモリ２３１の入力データ２３３からＤＭＡバス３２６を用いてデータ転送をおこなう。ＡＥＳ演算器２３６で処理した結果は、ローカルメモリ２３１の出力データ２３２に格納される。なお、ＤＥＳ演算器２３７、Ｍｕｌｔｉ２演算器２３８も同様の処理をおこなう。
【００１９】
次に、図２および図３を用いて本発明の第一の実施形態に係るコプロセッサの内部構成と信号処理について説明する。
図２は、本発明の第一の実施形態に係るコプロセッサの内部構成図で、演算器が単数であるものの例を示す図である。
図３は、本発明の第一の実施形態に係るコプロセッサの内部構成図で、演算器が複数であるものの例を示す図である。
【００２０】
図２に示されるコプロセッサは、演算器２２０が単数であるものである。
【００２１】
このコプロセッサ２２２は、ＤＭＡバス３２６に接続されたＤＭＡ制御回路２２１によってデータ転送をおこなう。ＤＭＡバス３２６によりリクエストを受けたＤＭＡ制御回路２２１は、演算器２２０に対するリクエストであった場合には、アクセス制御回路２００と演算器２２０に対して、リクエストとそのリクエストに関する情報を出力する。
【００２２】
リクエストに関する情報としては、ＤＭＡ制御回路２２１からアクセス制御回路２００と演算器２２０の双方に対して、そのリクエストに関するパケット数３０１、パケット長３０２、終了リクエスト時刻３０３が入力される。ここで、終了リクエスト時刻３０３は、その時刻までにそのリクエストの処理が終了することを、ＣＰＵコアが期待する時刻であり、例えば、デジタル放送のための暗号処理に用いるコプロセッサにおいては、リクエストの処理が遅れることによって映像のコマ落ちを起こさせないように定められる合理的な時刻である。
【００２３】
リクエストを受けた演算器２２０は、受けとったリクエストに関するパケット数３０１、パケット長３０２より、そのリクエストに関する処理時間を算出し、保存する。また、終了リクエスト時刻３０３も保存する。
【００２４】
そして、演算器２２０は、アクセス制御回路２００から該当する演算リクエストの実行が許可されたときに、既に許可された演算リクエストの終了時刻と前記該当する演算リクエストの処理時間とから、該当する演算リクエストの終了時刻を算出する。
【００２５】
次に、演算器２２０は、アクセス制御回路２００に対して、順次、許可されたｉ番目のリクエストｉの情報として、終了時刻ｉ３０７と終了リクエスト時刻ｉ３０８と処理フラグ３０９を出力する。ここで、処理フラグ３０９は、現在、演算器２２０が処理をしているか否かを示すフラグである。
【００２６】
そして、アクセス制御回路２００は、ＤＭＡ制御回路２２１から受け取る新規リクエストに関する情報と、演算器２２０から受け取る現在処理中のリクエストｉに関する情報により、新規リクエストを演算器２２０において処理できるか否かを判定し、その結果である許可フラグ３１６を演算器２２０に対して出力する。アクセス制御回路２００が、新規リクエストに対して処理の実行を許可するか拒否するかのアルゴリズムの詳細は後に説明する。
【００２７】
許可フラグ３１６が、新規リクエストを許可するものであった場合には、演算器２２０はＤＭＡ制御回路２２１にバス３２５を用いてデータリクエストを発行する。
【００２８】
また、アクセス制御回路２００は、ＤＭＡバス３２６上からアクセス制御回路２００内部の演算に用いられる現在時刻を参照、更新する場合には、現在時刻信号３００を用いて、アクセスをおこない、参照、更新をおこなう。
【００２９】
一方、図３に示されたコプロセッサは、複数の演算器を具備するものである。
【００３０】
アクセス制御回路２００と、演算器Ａ２２０ａ、演算器Ｂ２２０ｂが、 ＤＭＡ制御回路２２１からリクエストとそのリクエストに関する情報であるパケット数３０１、パケット長３０２、終了リクエスト時刻３０３を受け取ることは、図２の場合と同様である。
【００３１】
演算器Ａ２２０ａ、演算器２２０ｂは、図２に示されたコプロセッサと同様に、各々のリクエストの終了時刻を算出し、順次、ｉ番目のリクエストｉの情報として、終了時刻ｉ３０７ａ、３０７ｂ、終了リクエスト時刻ｉ３０８ａ、３０８ｂ、処理フラグ３０９ａ、３０９ｂをセレクタ２２４に対して出力する。
【００３２】
ＤＭＡ制御回路２２１は、演算器Ａ２２０ａに対するリクエストか、演算器Ｂ２２０ｂに対するリクエストか否かを判別し、セレクタ２２４に対して選択結果３２７を出力する。その結果、アクセス制御回路２００に対して、それぞれの演算器より演算中の情報を提供することが可能となる。演算中の情報を受けたアクセス制御回路は、新規リクエストを演算器において処理できるか否かを判定し、その結果である許可フラグ３１６を演算器Ａ２２０ａと演算器Ｂ２２０ｂの双方に対して出力する。それぞれの演算器は、受信した許可フラグ３１６によって、新規リクエストに対する動作を決定する。
【００３３】
また、演算器Ａ２２０ａと演算器Ｂ２２０ｂとが同じ機能を有する場合で、一方の演算器でリクエストが拒否されたときには、他の演算器にリクエストを振り分ける処理も考えられうる。例えば、図１に示された暗号処理プロセッサで、ＡＥＳ演算器２３６を複数用意し、ＡＥＳ暗号処理を適宜各々の演算器に割り当てる場合である。
【００３４】
次に、図４を用いて本発明の第一の実施形態に係るコプロセッサの処理について説明する。
図４は、本発明の第一の実施形態のコプロセッサの演算器に対して処理のリクエストが発生した場合の処理を示すフローチャートである。
【００３５】
なお、ここでは新規リクエストｎに関する終了時刻、終了リクエスト時刻、処理時間を、それぞれ、終了時刻ｎ、終了リクエスト時刻ｎ、処理時間ｎと表している。
【００３６】
図２に示したコプロセッサの構造において、ＤＭＡ制御回路２２１からアクセス制御回路２００と演算器２２０が、演算のリクエストとそのリクエストに関する情報を受け取ると、アクセス制御回路は、先ず、処理中のリクエストが有るか無いか、すなわち、演算処理を実行対象となる演算器が現在リクエストに関する処理を実行しているか否かを判定する（分岐１０１）。分岐１０１における判定の結果、処理が実行されていなかった場合には、新規リクエストの処理時間ｎと現在時刻との和と、ＣＰＵコアがそのリクエストの処理が終了することを期待する時刻である終了リクエスト時刻ｎと比較判定する（分岐１０２）。分岐１０２において比較した結果、新規リクエストの処理時間ｎと現在時刻の和が終了リクエスト時刻ｎよりも早い時間であった場合には、リクエストは許可され（ステップ１０８）、処理は終了する（ステップ１１０）。この場合には、演算器内で現在リクエストの処理もなく、新規リクエストに関する処理も、終了リクエスト時刻内で終了することが保証されているからである。
【００３７】
一方、新規リクエストの処理時間ｎと現在時刻の和が終了リクエスト時刻よりも遅い時間であった場合には、リクエストは拒否され（ステップ１０９）、処理は終了する（ステップ１１０）。この場合には、新規リクエストに関する処理は、ＣＰＵコアが期待した終了リクエスト時刻よりも後でしか演算を終了できない状況であるからである。
【００３８】
また、一方、演算器で処理が実行されていた場合は（分岐１０１）、現在処理中のリクエストｉに対して、ループ始点１０３からループ終点１０７の処理が比較する対象がなくなるまで、繰り返される。ここで、図２のループ始点１０３では、Ｃ言語風の書き方をしており、ｉ＝１から始まり、ｉを１ずつインクリメントし、ｉが新規リクエストのｎになるまで、繰り返すことを示している。
【００３９】
ループの中では、先ず、新規リクエストの終了リクエスト時刻ｎと処理中の終了リクエスト時刻ｉを比較し（分岐１０４）、新規リクエストの終了リクエスト時刻ｎの方が処理中の終了リクエスト時刻ｉよりも早い時間であるならば、分岐１０５へと進み、遅い時間であるならば、分岐１０６へ進む。
【００４０】
分岐１０５へ進んだ場合には、新規リクエストの処理時間ｎと現在演算器で処理中のリクエストの終了時刻ｉとの和と、処理中のリクエストの終了リクエスト時刻ｉと比較判定を実施する。その結果、新規リクエストの処理時間ｎと現在演算器で処理中のリクエストの終了時刻ｉとの和が、処理中のリクエストの終了リクエスト時刻ｉよりも早い時間であった場合には、次のループ処理をおこなう。この場合には、新規リクエストを受け付けたとしても、少なくとも、現在処理中のｉ番目のリクエストｉの終了リクエスト時刻ｉが達成することができると判断できたからである。
【００４１】
一方で、分岐１０５の判定において、遅い時間であった場合には、新規リクエストは受け付けないと判定し、ループを抜け出して、リクエストは拒否され（ステップ１０９）、処理は終了する（ステップ１１０）。この場合には、新規リクエストを受け付けると、処理中のｉ番目のリクエストがＣＰＵコアの期待する時刻までに終了できないと判断されたからである。
【００４２】
分岐１０６へ進んだ場合、新規リクエストの処理時間ｎと現在演算器で処理中のリクエストの終了時刻ｉとの和と、新規リクエストの終了リクエスト時刻ｎと比較判定を実施する。その結果、新規リクエストの処理時間ｎと現在演算器で処理中のリクエストの終了時刻ｉとの和が、新規リクエストの終了リクエスト時刻ｎよりも早い時間であった場合、次のループ処理をおこなう。ｉ番目のリクエスト処理の終了時刻から計算して、新規リクエストを受け付けたとしても、新規リクエストの終了リクエスト時刻ｎを達成することができると判断できたからである。
【００４３】
一方で、分岐１０５の判定において、遅い時間であった場合には、新規リクエストは受け付けないと判定し、ループを抜け出して、リクエストは拒否され（ステップ１０９）、処理は終了する（ステップ１１０）。新規リクエストを受け付けたとすると、新規リクエストはＣＰＵコアの期待する終了リクエスト時刻ｎまでに処理を終了できないと判断されたからである。、
このように、本実施形態の演算制御においては、全ての処理中のリクエストの終了リクエスト時刻ｉと、新規リクエストの終了リクエスト時刻ｎまでに、それぞれのリクエストの処理がおこなわれときに限り、新規リクエストを許可するのである。
【００４４】
次に、図５を用いて上記のアルゴリズムを、具体例によって模式的に説明する。
図５は、リクエストの終了時刻と終了リクエスト時刻の具体的な様子を示したタイミングチャートである。
【００４５】
図中、白抜きの部分の長さが処理時間を表し、ハッチング部分の右端が終了リクエスト時刻を表している。
【００４６】
先ず、最初に、処理中のリクエストがない状態でリクエスト１が発行された場合、要求された終了リクエスト時刻６０１以内に実際の処理が実行されるため、リクエスト１の処理４００は、終了リクエスト時刻６０１を超えないので、リクエスト１は許可される。
【００４７】
次に、時刻５００において、リクエスト２が発行された場合、リクエスト２の終了リクエスト時刻６０３がリクエスト１の終了リクエスト時刻６０１よりも早くなっているため、リクエスト１の処理４００ｂはリクエスト２の処理４０２が終了後に処理される。このように、リクエスト２の処理がリクエスト１の処理に割り込んでも、リクエスト１の処理４００ｂは自身の終了リクエスト時刻６０１以内で終了するため、リクエスト２は許可される。
【００４８】
さらに、時刻５０１において、リクエスト３が発行された場合、リクエスト３の終了リクエスト時刻６０５と、リクエスト１、リクエスト２の終了リクエスト時刻６０１、６０３と比較をおこない、リクエスト３の処理が最も早く終了させる必要があるため、リクエスト１、リクエスト２はリクエスト３の処理４０４後に処理される。このように、さらにリクエスト３の処理が割り込んでも、リクエスト１の処理４００ｂ、リクエスト２の処理４０２ｂはそれぞれの終了リクエスト時刻６０１、６０３より早くおわるため、リクエスト３は許可される。
【００４９】
次に、図６および図７を用いて本発明の第一の実施形態に係るコプロセッサのアクセス制御回路の回路例について説明する。
図６および図７は、本発明の第一の実施形態に係るコプロセッサのアクセス制御回路の回路例を示す構成図である。
【００５０】
ここでの記法として、新規リクエストに関する終了リクエスト時刻ｎ、現在、演算器２２０において、処理中であるリクエストの終了時刻ｉ、終了リクエスト時刻ｉは、図４のフローチャートによるアルゴリズムの説明の場合と同様とする。
【００５１】
アクセス制御回路２００内部には、現在時刻回路２０１があり、外部から現在時刻信号３００を受け取り保持する。処理時間算出回路２０２では、リクエストを等間隔に分割した数をパケット数３０１、分割されたパケット当たりのバイト数を示すパケット長３０２を外部からリクエストに関する情報として受け取り、処理時間ｎ３０５を算出する。終了リクエスト保持回路２０３は、リクエストに対する終了リクエスト時刻３０３を受け取り、保持する回路である。
【００５２】
先ず、外部より処理フラグ３０９によって、演算器２２０内で処理が実行されていないことの通知を受けた状態において、新規リクエストが発生した場合には、現在時刻回路２０１より出力された現在時刻３０４と、処理時間算出回路２０２によって算出された処理時間ｎ３０５と、終了リクエスト時刻保持回路２０３より出力された終了リクエスト時刻ｎ３０３が時間判定器２０４に入力される。
【００５３】
時間判定器２０４は、現在時刻３０４と処理時間ｎ３０５を加算し終了リクエスト時刻ｎ３０６と比較し、比較結果３１２をセレクタ２０９に出力する（図４の分岐１０２）。セレクタ２０９は、処理フラグ３０９によって比較結果３１２を選択し、選択結果３１５をにより許可フラグ出力回路２１０に出力する（ステップ１０８、１０９）。処理フラグ３０９によって、他の処理が実行されていない状態になったときに、許可フラグ３１６を外部に対して出力する。
【００５４】
次に、外部より処理フラグ３０９によって、演算器２２０内で別の処理が実行されていることの通知を受けた状態において、新規リクエストが発生した場合には、処理時間ｎ３０５と、外部より受け取る演算処理中の終了予定時刻である終了時刻ｉ３０７と、外部より受け取る演算処理中のリクエストされた終了時刻である終了リクエスト時刻ｉ３０８を時間判定器２０５に入力する。処理時間ｎ３０５と終了時刻ｉ３０７を加算し終了リクエスト時刻ｉ３０８と比較し、比較結果３１０をセレクタ２０８へ出力する（図４の分岐１０５）。
【００５５】
同時に、処理時間ｎ３０５と、外部より受け取る演算処理中の終了予定時刻である終了時刻ｉ３０７と、終了リクエスト時刻ｎ３０６を時間判定器２０６に入力する。処理時間ｎ３０５と終了時刻ｉ３０７を加算し、終了リクエスト時刻ｎ３０８と比較し、比較結果３１１をセレクタ２０８へ出力する（図４の分岐１０６）。
【００５６】
さらに、終了リクエスト時刻ｎ３０６と、終了リクエスト時刻ｉ３０８を時間判定器２０７に入力し、比較結果３１３を出力する（図４の分岐１０４）。この比較結果３１３は、終了リクエスト時刻ｎ３０６が終了リクエスト時刻ｉ３０８よりも早い時間であれば、セレクタ２０８が比較結果３１０を選択する信号となり、終了リクエスト時刻ｎ３０６が終了リクエスト時刻ｉ３０８よりも遅い時刻であれば、セレクタ２０８が比較結果３１１を選択する信号となる。
【００５７】
セレクタ２０８によって選択された選択結果３１４は、セレクタ２０９へ出力される。セレクタ２０９は、処理フラグ３０９によって選択結果３１４を選択し（図４の分岐１０１）、許可フラグ出力回路２１０へ選択結果３１５を出力する。
【００５８】
許可フラグ出力回路２１０は、処理フラグ３０９を用いて他の処理中の演算があるか否かを判定し、全ての演算中の処理と新規リクエストの処理の判定が終了した時点で（図４のループ始点１０３からループ終点１０７のループの脱出）、許可フラグ３１６を外部に対して出力する。
【００５９】
図７も、図１のアルゴリズムを実現する回路であり、図６の場合と比べて幾分簡略化されている。
【００６０】
外部より処理フラグ３０９によって、演算器２２０内で処理が実行されていないことの通知を受けた状態において、新規リクエストが発生した場合には、セレクタ２１２は、現在時刻３０４を選択し、選択結果３１７として加算器２１４へ出力する。加算器２１４は、選択結果３１７と処理時間ｎ３０５との加算をおこない、加算結果３１８を時間判定器２１５へ出力する。時間判定器２１１は、処理フラグ３０９によって演算処理が実行されていないことを受けているため、セレクタ２１３へ選択信号として、比較結果３１９を出力し、これによりセレクタ２１３は、終了リクエスト時刻ｎ３０６を選択するようになる。セレクタ２１３は、選択した終了リクエスト時刻ｎ３０６を選択結果３２０として時間判定器２１５へ出力する。
【００６１】
時間判定器２１５は、加算結果３１８と選択結果３２０を比較し、その結果を判定結果３２１として許可フラグ出力回路２１０へ出力する。
【００６２】
許可フラグ出力回路２１０は、処理フラグ３０９によって他の処理中の演算があるか否かを判定し、全ての演算中の処理と新規リクエストの処理の判定が終了した時点で、許可フラグ３１６を外部に対して出力する。
【００６３】
次に、外部より処理フラグ３０９によって、演算器２２０内で別の処理が実行されていることの通知を受けた状態において、新規リクエストが発生した場合には、セレクタ２１２は常に終了時刻ｉ３０７を選択し、選択結果３１７として加算器２１４へ出力する。時間判定器２１１は、終了リクエスト時刻ｎ３０６と終了リクエスト時刻ｉ３０８を比較し、セレクタ２１３に選択信号を出力する。この選択信号により、終了リクエスト時刻ｎ３０６が終了リクエスト時刻ｉ３０８よりも早い時間であれば、セレクタ２１３は、終了リクエスト時刻ｉ３０８を選択する信号を出力し、終了リクエスト時刻ｎ３０６が終了リクエスト時刻ｉ３０８よりも早い時間であれば、セレクタ２１３は、終了リクエスト時刻ｎ３０６を選択する信号を出力する。
【００６４】
時間判定器２１５は、加算結果３１８と選択結果３２０を比較し、その結果を判定結果３２１として許可フラグ出力回路２１０へ出力する。
【００６５】
許可フラグ出力回路２１０は、処理フラグ３０９によって、他の処理中の演算があるか否かを判定し、全ての演算中の処理と新規リクエストの処理の判定が終了した時点で、許可フラグ３１６を外部に出力する。
【００６６】
〔実施形態２〕
以下、本発明に係る第二の実施形態を、図８ないし図１１を用いて説明する。
【００６７】
第一の実施形態では、アクセス制御回路において、あらたなリクエストを演算器が受け付けるべきか否かの判定を、各々のリクエストが終了リクエスト時刻までに処理を終わることができるかという基準に基づいておこなった。
【００６８】
本実施形態は、リクエストを処理する演算器に対して演算器占有率という概念を用い、これが一定の割合い、例えば、１００パーセントを超えない範囲のリクエストならば、そのリクエストを許可するという発想に立つものである。
【００６９】
先ず、図８を用いて本発明の第二の実施形態に係るコプロセッサの処理について説明する。
図８は、本発明の第二の実施形態のコプロセッサの演算器に対して処理のリクエストが発生した場合の処理を示すフローチャートである。
【００７０】
なお、ここでは新規リクエストｎに関する終了時刻、終了リクエスト時刻、処理時間を、それぞれ、終了時刻ｎ、終了リクエスト時刻ｎ、処理時間ｎと表している。また、新規リクエストｎに関する演算器占有率を、演算器占有率ｎで表している。
【００７１】
アクセス制御回路が、演算のリクエストとそのリクエストに関する情報を受け取ると、新規リクエストの終了リクエスト時刻ｎから現在時刻を減算し、新規リクエストの処理時間ｎを減算結果で除算して演算器占有率ｎを算出する（ステップ１２０）。すなわち、演算器占有率ｎは、以下の（式１）で表される。
【００７２】
演算器占有率ｎ＝処理時間／（終了リクエスト時刻ｎ−現在時刻）  …（式１）
算出した演算器占有率ｎと、現在の演算器占有率を加算し、１００％を超えるか否かの判定をおこなう（分岐１２１）。その結果が１００％以下であれば、リクエスト許可を発行し（ステップ１０８）、分岐１２１での判定結果が１００％以上であれば、処理をリクエストされた時間までに処理できないため、リクエストを拒否する（ステップ１０９）。
【００７３】
このアルゴリズムは、第一の実施形態と比較して、すべての期間にわたって、リクエスト処理が均等に配分される傾向にあるため、低消費電力の機能が要請されるコプロセッサに有効なものである。
【００７４】
次に、図９を用いて上記のアルゴリズムを、具体例によって模式的に説明する。
図９は、リクエスト処理と演算器占有率の具体的な様子を示したタイミングチャートである。
【００７５】
処理中のリクエストがない状態でリクエスト１が時刻５３０で発行された場合、要求された終了リクエスト時刻５３１までにリクエスト１の処理４１０の演算器占有率は、１０％になるため、リクエスト１は許可される。
【００７６】
次に、時刻５３２において、リクエスト２が要求され、終了リクエスト時刻５３３までにリクエスト２を終了するには、３０％の演算器占有率で実行すれば処理が可能であるとする。この場合に、リクエスト１の演算器占有率とリクエスト２の演算器占有率を加えた時刻５３２から時刻５３３の演算器占有率は、４０％であり、時刻５３３から時刻５３４の演算器占有率は、１０％であるため、リクエスト２は許可される。
【００７７】
さらに、時刻５３５においてリクエスト３が要求され、終了時刻５３５までにリクエスト３を終了するには５％の演算器占有率で実行すれば処理が可能であるとする。この場合に、既に演算中のリクエストと合わせたとしても、時刻５３５から時刻５３６までの演算器占有率は、順次、４５％、１５％、５％となり、全ての時間帯において演算器占有率が１００％を超えることがない。そのため、リクエスト３は許可される。
【００７８】
次に、図１０を用いて本発明の第二の実施形態に係るコプロセッサのアクセス制御回路の回路例について説明する。
図１０は、本発明の第二の実施形態に係るコプロセッサのアクセス制御回路の回路例を示す構成図である。
【００７９】
アクセス制御回路２５０の終了時刻保持回路２０３は、外部より終了リクエスト時刻ｎ３０６を受け取り、保持する。また、現在時刻回路２０１は、現在時刻３００を受け取り、保持する。
【００８０】
次に、減算器２５１により、終了時刻保持回路２０３が出力した終了リクエスト時刻ｎ３０６から現在時刻回路２０１が出力した現在時刻３０４を減算する。
【００８１】
一方、処理時間算出回路２０２は、リクエストのパケット数３０１とパケット長３０２により、そのリクエストの処理時間を算出する。そして、除算器２５２により、減算器の出力と処理時間算出回路２０２の出力するそのリクエストの処理時間を除算する。
【００８２】
次に、可算器２５３により、除算器２５２の出力と演算器から送られてくる現在の演算器占有率３４２とを加算し、新規の演算器占有率３４３を算出する。そして、算出した結果は、外部の演算器と比較器２５４に出力され、比較器２５４により、新規の演算器占有率が１００％を超えているか否かを判定する。その結果を比較結果３４４を用いて許可フラグ出力回路２５５へ転送され、許可フラグ出力回路２５５から許可フラグ３１６を外部の演算器に出力される。新規の演算器占有率３４３は、そのリクエストが許可されたときに、演算器にて保持され、次の現在の演算器占有率３４２を出力するときに利用される。
【００８３】
次に、図１１を用いて本発明の第二の実施形態に係るコプロセッサの内部構成と信号処理について説明する。
図１１は、本発明の第二の実施形態に係るコプロセッサの内部構成図である。
【００８４】
本実施形態の演算制御方法は、演算器占有率という概念により、リクエストを許可するか拒否するか判定するものであった。本実施形態のコプロセッサは、この演算器占有率に対応した適切なクロック３５１を出力するためのクロック制御回路２６１を有するものである。
【００８５】
ＤＭＡバス３２６に接続されたコプロセッサ２２２は、ＤＭＡ制御回路２２１によってデータ転送をおこなう。ＤＭＡバス３２６よりリクエストを受けたＤＭＡ制御回路２２１は、演算器２６０に対するリクエストであった場合には、アクセス制御回路２５０と演算器２６０に対して、リクエスト情報を出力する。リクエストを受けた演算器２６０は、アクセス制御回路２５０に対して、現在の演算器占有率３４２を出力する。
【００８６】
ＤＭＡ制御回路２２１と演算器２６０からの情報により、アクセス制御回路２５０は新規リクエストを演算器２６０で処理可能であるか否かを判定し、その結果として、許可フラグ３１６と新規の演算器占有率３４３を演算器２６０に対して出力する。
【００８７】
演算器２６０が新規リクエストを許可する場合には、新規の演算器占有率３４３を用いて、クロック制御回路２６１へクロック速度情報３５０を入力する。その結果、クロック制御回路２６１は演算器２６０に対して演算器占有率に対応した適切なクロック３５１を供給する。なお、リクエストの処理が終了した場合には、演算器２６０の処理性能を低めてもよくなるため、必要に応じてクロック制御回路２６１に対して演算器２６０はクロック速度情報３５０を出力して、クロックを低くする。このようにクロックを適切に調整すれば、コプロセッサ内における消費電力を低減することができる。
【図面の簡単な説明】
【００８８】
【図１】本発明に係るコプロセッサが適用されたシステム構成の構成図である。
【図２】本発明の第一の実施形態に係るコプロセッサの内部構成図で、演算器が単数であるものの例を示す図である。
【図３】本発明の第一の実施形態に係るコプロセッサの内部構成図で、演算器が複数であるものの例を示す図である。
【図４】本発明の第一の実施形態のコプロセッサの演算器に対して処理のリクエストが発生した場合の処理を示すフローチャートである。
【図５】リクエストの終了時刻と終了リクエスト時刻の具体的な様子を示したタイミングチャートである。
【図６】本発明の第一の実施形態に係るコプロセッサのアクセス制御回路の回路例を示す構成図である（その一）。
【図７】本発明の第一の実施形態に係るコプロセッサのアクセス制御回路の回路例を示す構成図である（その二）。
【図８】本発明の第二の実施形態のコプロセッサの演算器に対して処理のリクエストが発生した場合の処理を示すフローチャートである。
【図９】リクエスト処理と演算器占有率の具体的な様子を示したタイミングチャートである。
【図１０】本発明の第二の実施形態に係るコプロセッサのアクセス制御回路の回路例を示す構成図である。
【図１１】本発明の第二の実施形態に係るコプロセッサの内部構成図である。
【符号の説明】
【００８９】
２００…アクセス制御回路
２０１…現在時刻回路
２０２…処理時間算出回路
２０３…終了リクエスト時刻保持回路
２１０…許可フラグ出力回路
２２２…コプロセッサ
２３０…ＣＰＵコア
２３１…ローカルメモリ
２３５…暗号処理コプロセッサ
２３６…ＡＥＳ演算器
２３７…ＤＥＳ演算器
２３８…Ｍｕｌｔｉ２演算器
３００…現在時刻信号
３０１…パケット数
３０２…パケット長
３０３…終了リクエスト時刻
３０７…終了時刻ｉ
３０８…終了リクエスト時刻ｉ
３０９…処理フラグ
３１６…許可フラグ
３４２…現在の演算器占有率
３４３…新規の演算器占有率
【図１】
2006302168.tif 000003
【図２】
2006302168.tif 000004
【図３】
2006302168.tif 000005
【図４】
2006302168.tif 000006
【図５】
2006302168.tif 000007
【図６】
2006302168.tif 000008
【図７】
2006302168.tif 000009
【図８】
2006302168.tif 000010
【図９】
2006302168.tif 000011
【図１０】
2006302168.tif 000012
【図１１】
2006302168.tif 000013