JP2006302168A - コプロセッサ、および、その演算制御方法 - Google Patents
コプロセッサ、および、その演算制御方法 Download PDFInfo
- Publication number
- JP2006302168A JP2006302168A JP2005126086A JP2005126086A JP2006302168A JP 2006302168 A JP2006302168 A JP 2006302168A JP 2005126086 A JP2005126086 A JP 2005126086A JP 2005126086 A JP2005126086 A JP 2005126086A JP 2006302168 A JP2006302168 A JP 2006302168A
- Authority
- JP
- Japan
- Prior art keywords
- request
- time
- calculation
- new
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
【課題】 CPUコアが期待する時刻までに、演算のリクエストに関する処理がおこなえないことにより、そのリクエストに関する処理が廃棄されるのを防止して、効率よく確実に演算のリクエストに関する処理が実行されるようにする。
【解決手段】CPUコアから演算器に対してリクエストされた処理の一連の演算処理から処理に必要な演算処理時間を算出し、現在時刻とその必要な演算処理時間との和とCPUコアが期待する演算の処理が終了することを期待する終了リクエスト時刻と比較し、終了リクエスト時刻までに、リクエストの処理ができるか否かを判定する。そして、判定した結果を演算器に通知し、演算器はそれに従って新規リクエストの処理をおこなう。
【選択図】 図6
【解決手段】CPUコアから演算器に対してリクエストされた処理の一連の演算処理から処理に必要な演算処理時間を算出し、現在時刻とその必要な演算処理時間との和とCPUコアが期待する演算の処理が終了することを期待する終了リクエスト時刻と比較し、終了リクエスト時刻までに、リクエストの処理ができるか否かを判定する。そして、判定した結果を演算器に通知し、演算器はそれに従って新規リクエストの処理をおこなう。
【選択図】 図6
Description
本発明は、コプロセッサ、および、その演算制御方法に係り、アクセス制御回路を具備し、演算器に対する演算要求を効率よく実行することが可能であるコプロセッサやマイクロプロセッサであって、特に、演算器により暗号処理をおこなうメディアプロセッサに用いて好適なコプロセッサ、および、その演算制御方法に関する。
従来より、プロセッサの構成として、OSなどを制御するCPUコアのほかに、数値計算や暗号処理などの処理を専門におこなうコプロセッサを付加して処理性能を高めることがおこなわれている。
一般には、プロセッサにおけるコプロセッサ等の演算器は、プロセッサのCPUコアからの要求により、データの演算処理をおこなっている。通常、コプロセッサの演算はCPUコアによってスケジューリングされており、必要に応じて起動と停止を繰り返しおこなっている。コプロセッサがCPUコアにより起動された場合には、DMA(Direct Memory Access)等の方式によりデータアクセスをおこなって、データを主記憶装置から取得し、演算を実行後、主記憶装置に処理結果を格納する。また、コプロセッサが演算実行中に、実行中の処理とは無関係の処理をCPUコアからの要求が発生した場合、処理中の状態を、いったん退避させ、CPUコアからの要求された処理を実行して、処理が終了した時点で退避させた以前の処理を再開する。
また、以下の特許文献1に示されるように、コプロセッサが主記憶装置に格納されたリクエストキューを参照し、コプロセッサ内部の演算器に処理を割り当てる方式がある。この特許文献1に開示された技術によれば、主記憶装置のリクエストキューに対してCPUコア(図2では、ホストプロセッサ202)からコプロセッサで実行すべきリクエストを格納する。リクエストキュー206は、コプロセッサ内部の要求ユニット214が参照し、リクエストが存在すれば、リクエスト情報に従って処理を実行する演算器を起動し、その結果はCPUコアによって指定されたホスト・メモリ204に格納される。
コプロセッサに演算要求が発行された場合には、コプロセッサ内部の演算処理を実行するために最適な演算器に対して処理が割り当てられる。このとき、既に対象の演算器で別の演算処理が実行されていた場合、演算器を時分割で使用し処理をおこなう。この時、時分割処理によって演算処理の終了時間が遅延することを引き起こし、結果的にCPUコアが期待する終了時刻までに演算処理が実行されない場合がある。CPUコアが期待する時刻までに実行されなかったことによって、その処理結果は廃棄され、演算効率が大幅に低下するという問題点があった。特に、メディアプロセッサなどにより、コプロセッサによりデジタル暗号処理をおこなう場合には、表示している画面のスピードに追いつかず、コマ落ちなどの表示の不具合が発生する場合があった。
本発明は、上記問題点を解決するためになされたもので、その目的は、コプロセッサ内の演算器で処理を実行する場合に、効率よく演算処理をおこない、演算のリクエストが確実に実行されるようなコプロセッサを提供することにある。
本発明に係るコプロセッサは、コプロセッサ内部の演算器に対して要求された演算のための演算リクエスト(以下、単に「リクエスト」とも言う)が実行可能であるかを判定するアクセス制御回路を具備する。アクセス制御回路は、CPUコアからリクエストされた一連の演算処理から処理に必要な演算時間を算出し、現在時刻とCPUコアが期待するリクエストの終了を要求する時刻である終了リクエスト時刻を受け取り、あらたなリクエストが処理できるか否かを判定する。判定した結果を演算器に通知し、演算器はそれに従って新規リクエストの処理をおこなう。
処理できなかったリクエストは、CPUコアが処理することにしてもよいし、コプロセッサ内に同一の機能を有する演算器が複数ある場合には、他の演算器に処理を割り当ててもよい。
本発明を適用することによって、演算処理が破棄されることを防止し、別の演算器へ処理を割り当てたり、CPUコア自身が処理を実行するように変更判定が可能となる。特に、リアルタイム処理が必要な映像や音声の再生において、表示画面が停止したり再生中の音声が途切れるようなことを防止する。
本発明によれば、コプロセッサ内の演算器で処理を実行する場合に、効率よく演算処理をおこない、演算のリクエストが確実に実行されるようなコプロセッサを提供することができる。
以下、本発明に係る各実施形態を、図1ないし図11を用いて説明する。
〔実施形態1〕
以下、本発明に係る第一の実施形態を、図1ないし図7を用いて説明する。
以下、本発明に係る第一の実施形態を、図1ないし図7を用いて説明する。
先ず、図1を用いて本発明に係るコプロセッサが適用されたシステム構成について説明する。
図1は、本発明に係るコプロセッサが適用されたシステム構成の構成図である。
図1は、本発明に係るコプロセッサが適用されたシステム構成の構成図である。
このシステムでは、DMAバス326上に、CPUコア230、ローカルメモリ231、DMAコントローラ234、暗号処理コプロセッサ235が接続されている。
暗号処理コプロセッサ235は、DMA制御回路221、アクセス制御回路200、セレクタ224、AES(Advanced Encryption Standard)演算器236、DES(Data Encryption Standard)演算器237、Multi2演算器238からなる。DMA制御回路221は、CPUコアからのリクエストとそれに関する情報を、アクセス制御回路200と各々の演算器に伝える機能と、演算器とローカルメモリ231間でのデータ転送を制御する機能を有する。 AES演算器236、DES演算器237、Multi2演算器238は、各々の名が冠された暗号処理をおこなう演算器である。
CPUコア230は、ローカルメモリ231に暗号処理コプロセッサ235で処理する入力データ233を配置する。そして、暗号処理コプロセッサ235に対して、例えば、AES演算器236を対象とした処理実行のリクエストを発行する。リクエストを受けた暗号処理コプロセッサ235は、アクセス制御回路200とAES演算器236に対してリクエスト発行通知をおこない、さらに演算器の選択結果327をセレクタ224に出力する。アクセス制御回路200は、DMA制御回路221からの情報とAES演算器236からの情報を用いて、新規リクエストをAES演算器236で処理が可能であるか否かを判定し、その結果である許可フラグ316をAES演算器236、DES演算器237、Multi2演算器238へ出力する。このとき、リクエストの対象はAES演算器236であるため、AES演算器236のみが許可フラグ316を受信し、新規リクエストに対する動作を決定する。
リクエストを処理する場合、DMAコントローラ234を用いてローカルメモリ231の入力データ233からDMAバス326を用いてデータ転送をおこなう。AES演算器236で処理した結果は、ローカルメモリ231の出力データ232に格納される。なお、DES演算器237、Multi2演算器238も同様の処理をおこなう。
次に、図2および図3を用いて本発明の第一の実施形態に係るコプロセッサの内部構成と信号処理について説明する。
図2は、本発明の第一の実施形態に係るコプロセッサの内部構成図で、演算器が単数であるものの例を示す図である。
図3は、本発明の第一の実施形態に係るコプロセッサの内部構成図で、演算器が複数であるものの例を示す図である。
図2は、本発明の第一の実施形態に係るコプロセッサの内部構成図で、演算器が単数であるものの例を示す図である。
図3は、本発明の第一の実施形態に係るコプロセッサの内部構成図で、演算器が複数であるものの例を示す図である。
図2に示されるコプロセッサは、演算器220が単数であるものである。
このコプロセッサ222は、DMAバス326に接続されたDMA制御回路221によってデータ転送をおこなう。DMAバス326によりリクエストを受けたDMA制御回路221は、演算器220に対するリクエストであった場合には、アクセス制御回路200と演算器220に対して、リクエストとそのリクエストに関する情報を出力する。
リクエストに関する情報としては、DMA制御回路221からアクセス制御回路200と演算器220の双方に対して、そのリクエストに関するパケット数301、パケット長302、終了リクエスト時刻303が入力される。ここで、終了リクエスト時刻303は、その時刻までにそのリクエストの処理が終了することを、CPUコアが期待する時刻であり、例えば、デジタル放送のための暗号処理に用いるコプロセッサにおいては、リクエストの処理が遅れることによって映像のコマ落ちを起こさせないように定められる合理的な時刻である。
リクエストを受けた演算器220は、受けとったリクエストに関するパケット数301、パケット長302より、そのリクエストに関する処理時間を算出し、保存する。また、終了リクエスト時刻303も保存する。
そして、演算器220は、アクセス制御回路200から該当する演算リクエストの実行が許可されたときに、既に許可された演算リクエストの終了時刻と前記該当する演算リクエストの処理時間とから、該当する演算リクエストの終了時刻を算出する。
次に、演算器220は、アクセス制御回路200に対して、順次、許可されたi番目のリクエストiの情報として、終了時刻i307と終了リクエスト時刻i308と処理フラグ309を出力する。ここで、処理フラグ309は、現在、演算器220が処理をしているか否かを示すフラグである。
そして、アクセス制御回路200は、DMA制御回路221から受け取る新規リクエストに関する情報と、演算器220から受け取る現在処理中のリクエストiに関する情報により、新規リクエストを演算器220において処理できるか否かを判定し、その結果である許可フラグ316を演算器220に対して出力する。アクセス制御回路200が、新規リクエストに対して処理の実行を許可するか拒否するかのアルゴリズムの詳細は後に説明する。
許可フラグ316が、新規リクエストを許可するものであった場合には、演算器220はDMA制御回路221にバス325を用いてデータリクエストを発行する。
また、アクセス制御回路200は、DMAバス326上からアクセス制御回路200内部の演算に用いられる現在時刻を参照、更新する場合には、現在時刻信号300を用いて、アクセスをおこない、参照、更新をおこなう。
一方、図3に示されたコプロセッサは、複数の演算器を具備するものである。
アクセス制御回路200と、演算器A220a、演算器B220bが、 DMA制御回路221からリクエストとそのリクエストに関する情報であるパケット数301、パケット長302、終了リクエスト時刻303を受け取ることは、図2の場合と同様である。
演算器A220a、演算器220bは、図2に示されたコプロセッサと同様に、各々のリクエストの終了時刻を算出し、順次、i番目のリクエストiの情報として、終了時刻i307a、307b、終了リクエスト時刻i308a、308b、処理フラグ309a、309bをセレクタ224に対して出力する。
DMA制御回路221は、演算器A220aに対するリクエストか、演算器B220bに対するリクエストか否かを判別し、セレクタ224に対して選択結果327を出力する。その結果、アクセス制御回路200に対して、それぞれの演算器より演算中の情報を提供することが可能となる。演算中の情報を受けたアクセス制御回路は、新規リクエストを演算器において処理できるか否かを判定し、その結果である許可フラグ316を演算器A220aと演算器B220bの双方に対して出力する。それぞれの演算器は、受信した許可フラグ316によって、新規リクエストに対する動作を決定する。
また、演算器A220aと演算器B220bとが同じ機能を有する場合で、一方の演算器でリクエストが拒否されたときには、他の演算器にリクエストを振り分ける処理も考えられうる。例えば、図1に示された暗号処理プロセッサで、AES演算器236を複数用意し、AES暗号処理を適宜各々の演算器に割り当てる場合である。
次に、図4を用いて本発明の第一の実施形態に係るコプロセッサの処理について説明する。
図4は、本発明の第一の実施形態のコプロセッサの演算器に対して処理のリクエストが発生した場合の処理を示すフローチャートである。
図4は、本発明の第一の実施形態のコプロセッサの演算器に対して処理のリクエストが発生した場合の処理を示すフローチャートである。
なお、ここでは新規リクエストnに関する終了時刻、終了リクエスト時刻、処理時間を、それぞれ、終了時刻n、終了リクエスト時刻n、処理時間nと表している。
図2に示したコプロセッサの構造において、DMA制御回路221からアクセス制御回路200と演算器220が、演算のリクエストとそのリクエストに関する情報を受け取ると、アクセス制御回路は、先ず、処理中のリクエストが有るか無いか、すなわち、演算処理を実行対象となる演算器が現在リクエストに関する処理を実行しているか否かを判定する(分岐101)。分岐101における判定の結果、処理が実行されていなかった場合には、新規リクエストの処理時間nと現在時刻との和と、CPUコアがそのリクエストの処理が終了することを期待する時刻である終了リクエスト時刻nと比較判定する(分岐102)。分岐102において比較した結果、新規リクエストの処理時間nと現在時刻の和が終了リクエスト時刻nよりも早い時間であった場合には、リクエストは許可され(ステップ108)、処理は終了する(ステップ110)。この場合には、演算器内で現在リクエストの処理もなく、新規リクエストに関する処理も、終了リクエスト時刻内で終了することが保証されているからである。
一方、新規リクエストの処理時間nと現在時刻の和が終了リクエスト時刻よりも遅い時間であった場合には、リクエストは拒否され(ステップ109)、処理は終了する(ステップ110)。この場合には、新規リクエストに関する処理は、CPUコアが期待した終了リクエスト時刻よりも後でしか演算を終了できない状況であるからである。
また、一方、演算器で処理が実行されていた場合は(分岐101)、現在処理中のリクエストiに対して、ループ始点103からループ終点107の処理が比較する対象がなくなるまで、繰り返される。ここで、図2のループ始点103では、C言語風の書き方をしており、i=1から始まり、iを1ずつインクリメントし、iが新規リクエストのnになるまで、繰り返すことを示している。
ループの中では、先ず、新規リクエストの終了リクエスト時刻nと処理中の終了リクエスト時刻iを比較し(分岐104)、新規リクエストの終了リクエスト時刻nの方が処理中の終了リクエスト時刻iよりも早い時間であるならば、分岐105へと進み、遅い時間であるならば、分岐106へ進む。
分岐105へ進んだ場合には、新規リクエストの処理時間nと現在演算器で処理中のリクエストの終了時刻iとの和と、処理中のリクエストの終了リクエスト時刻iと比較判定を実施する。その結果、新規リクエストの処理時間nと現在演算器で処理中のリクエストの終了時刻iとの和が、処理中のリクエストの終了リクエスト時刻iよりも早い時間であった場合には、次のループ処理をおこなう。この場合には、新規リクエストを受け付けたとしても、少なくとも、現在処理中のi番目のリクエストiの終了リクエスト時刻iが達成することができると判断できたからである。
一方で、分岐105の判定において、遅い時間であった場合には、新規リクエストは受け付けないと判定し、ループを抜け出して、リクエストは拒否され(ステップ109)、処理は終了する(ステップ110)。この場合には、新規リクエストを受け付けると、処理中のi番目のリクエストがCPUコアの期待する時刻までに終了できないと判断されたからである。
分岐106へ進んだ場合、新規リクエストの処理時間nと現在演算器で処理中のリクエストの終了時刻iとの和と、新規リクエストの終了リクエスト時刻nと比較判定を実施する。その結果、新規リクエストの処理時間nと現在演算器で処理中のリクエストの終了時刻iとの和が、新規リクエストの終了リクエスト時刻nよりも早い時間であった場合、次のループ処理をおこなう。i番目のリクエスト処理の終了時刻から計算して、新規リクエストを受け付けたとしても、新規リクエストの終了リクエスト時刻nを達成することができると判断できたからである。
一方で、分岐105の判定において、遅い時間であった場合には、新規リクエストは受け付けないと判定し、ループを抜け出して、リクエストは拒否され(ステップ109)、処理は終了する(ステップ110)。新規リクエストを受け付けたとすると、新規リクエストはCPUコアの期待する終了リクエスト時刻nまでに処理を終了できないと判断されたからである。、
このように、本実施形態の演算制御においては、全ての処理中のリクエストの終了リクエスト時刻iと、新規リクエストの終了リクエスト時刻nまでに、それぞれのリクエストの処理がおこなわれときに限り、新規リクエストを許可するのである。
このように、本実施形態の演算制御においては、全ての処理中のリクエストの終了リクエスト時刻iと、新規リクエストの終了リクエスト時刻nまでに、それぞれのリクエストの処理がおこなわれときに限り、新規リクエストを許可するのである。
次に、図5を用いて上記のアルゴリズムを、具体例によって模式的に説明する。
図5は、リクエストの終了時刻と終了リクエスト時刻の具体的な様子を示したタイミングチャートである。
図5は、リクエストの終了時刻と終了リクエスト時刻の具体的な様子を示したタイミングチャートである。
図中、白抜きの部分の長さが処理時間を表し、ハッチング部分の右端が終了リクエスト時刻を表している。
先ず、最初に、処理中のリクエストがない状態でリクエスト1が発行された場合、要求された終了リクエスト時刻601以内に実際の処理が実行されるため、リクエスト1の処理400は、終了リクエスト時刻601を超えないので、リクエスト1は許可される。
次に、時刻500において、リクエスト2が発行された場合、リクエスト2の終了リクエスト時刻603がリクエスト1の終了リクエスト時刻601よりも早くなっているため、リクエスト1の処理400bはリクエスト2の処理402が終了後に処理される。このように、リクエスト2の処理がリクエスト1の処理に割り込んでも、リクエスト1の処理400bは自身の終了リクエスト時刻601以内で終了するため、リクエスト2は許可される。
さらに、時刻501において、リクエスト3が発行された場合、リクエスト3の終了リクエスト時刻605と、リクエスト1、リクエスト2の終了リクエスト時刻601、603と比較をおこない、リクエスト3の処理が最も早く終了させる必要があるため、リクエスト1、リクエスト2はリクエスト3の処理404後に処理される。このように、さらにリクエスト3の処理が割り込んでも、リクエスト1の処理400b、リクエスト2の処理402bはそれぞれの終了リクエスト時刻601、603より早くおわるため、リクエスト3は許可される。
次に、図6および図7を用いて本発明の第一の実施形態に係るコプロセッサのアクセス制御回路の回路例について説明する。
図6および図7は、本発明の第一の実施形態に係るコプロセッサのアクセス制御回路の回路例を示す構成図である。
図6および図7は、本発明の第一の実施形態に係るコプロセッサのアクセス制御回路の回路例を示す構成図である。
ここでの記法として、新規リクエストに関する終了リクエスト時刻n、現在、演算器220において、処理中であるリクエストの終了時刻i、終了リクエスト時刻iは、図4のフローチャートによるアルゴリズムの説明の場合と同様とする。
アクセス制御回路200内部には、現在時刻回路201があり、外部から現在時刻信号300を受け取り保持する。処理時間算出回路202では、リクエストを等間隔に分割した数をパケット数301、分割されたパケット当たりのバイト数を示すパケット長302を外部からリクエストに関する情報として受け取り、処理時間n305を算出する。終了リクエスト保持回路203は、リクエストに対する終了リクエスト時刻303を受け取り、保持する回路である。
先ず、外部より処理フラグ309によって、演算器220内で処理が実行されていないことの通知を受けた状態において、新規リクエストが発生した場合には、現在時刻回路201より出力された現在時刻304と、処理時間算出回路202によって算出された処理時間n305と、終了リクエスト時刻保持回路203より出力された終了リクエスト時刻n303が時間判定器204に入力される。
時間判定器204は、現在時刻304と処理時間n305を加算し終了リクエスト時刻n306と比較し、比較結果312をセレクタ209に出力する(図4の分岐102)。セレクタ209は、処理フラグ309によって比較結果312を選択し、選択結果315をにより許可フラグ出力回路210に出力する(ステップ108、109)。処理フラグ309によって、他の処理が実行されていない状態になったときに、許可フラグ316を外部に対して出力する。
次に、外部より処理フラグ309によって、演算器220内で別の処理が実行されていることの通知を受けた状態において、新規リクエストが発生した場合には、処理時間n305と、外部より受け取る演算処理中の終了予定時刻である終了時刻i307と、外部より受け取る演算処理中のリクエストされた終了時刻である終了リクエスト時刻i308を時間判定器205に入力する。処理時間n305と終了時刻i307を加算し終了リクエスト時刻i308と比較し、比較結果310をセレクタ208へ出力する(図4の分岐105)。
同時に、処理時間n305と、外部より受け取る演算処理中の終了予定時刻である終了時刻i307と、終了リクエスト時刻n306を時間判定器206に入力する。処理時間n305と終了時刻i307を加算し、終了リクエスト時刻n308と比較し、比較結果311をセレクタ208へ出力する(図4の分岐106)。
さらに、終了リクエスト時刻n306と、終了リクエスト時刻i308を時間判定器207に入力し、比較結果313を出力する(図4の分岐104)。この比較結果313は、終了リクエスト時刻n306が終了リクエスト時刻i308よりも早い時間であれば、セレクタ208が比較結果310を選択する信号となり、終了リクエスト時刻n306が終了リクエスト時刻i308よりも遅い時刻であれば、セレクタ208が比較結果311を選択する信号となる。
セレクタ208によって選択された選択結果314は、セレクタ209へ出力される。セレクタ209は、処理フラグ309によって選択結果314を選択し(図4の分岐101)、許可フラグ出力回路210へ選択結果315を出力する。
許可フラグ出力回路210は、処理フラグ309を用いて他の処理中の演算があるか否かを判定し、全ての演算中の処理と新規リクエストの処理の判定が終了した時点で(図4のループ始点103からループ終点107のループの脱出)、許可フラグ316を外部に対して出力する。
図7も、図1のアルゴリズムを実現する回路であり、図6の場合と比べて幾分簡略化されている。
外部より処理フラグ309によって、演算器220内で処理が実行されていないことの通知を受けた状態において、新規リクエストが発生した場合には、セレクタ212は、現在時刻304を選択し、選択結果317として加算器214へ出力する。加算器214は、選択結果317と処理時間n305との加算をおこない、加算結果318を時間判定器215へ出力する。時間判定器211は、処理フラグ309によって演算処理が実行されていないことを受けているため、セレクタ213へ選択信号として、比較結果319を出力し、これによりセレクタ213は、終了リクエスト時刻n306を選択するようになる。セレクタ213は、選択した終了リクエスト時刻n306を選択結果320として時間判定器215へ出力する。
時間判定器215は、加算結果318と選択結果320を比較し、その結果を判定結果321として許可フラグ出力回路210へ出力する。
許可フラグ出力回路210は、処理フラグ309によって他の処理中の演算があるか否かを判定し、全ての演算中の処理と新規リクエストの処理の判定が終了した時点で、許可フラグ316を外部に対して出力する。
次に、外部より処理フラグ309によって、演算器220内で別の処理が実行されていることの通知を受けた状態において、新規リクエストが発生した場合には、セレクタ212は常に終了時刻i307を選択し、選択結果317として加算器214へ出力する。時間判定器211は、終了リクエスト時刻n306と終了リクエスト時刻i308を比較し、セレクタ213に選択信号を出力する。この選択信号により、終了リクエスト時刻n306が終了リクエスト時刻i308よりも早い時間であれば、セレクタ213は、終了リクエスト時刻i308を選択する信号を出力し、終了リクエスト時刻n306が終了リクエスト時刻i308よりも早い時間であれば、セレクタ213は、終了リクエスト時刻n306を選択する信号を出力する。
時間判定器215は、加算結果318と選択結果320を比較し、その結果を判定結果321として許可フラグ出力回路210へ出力する。
許可フラグ出力回路210は、処理フラグ309によって、他の処理中の演算があるか否かを判定し、全ての演算中の処理と新規リクエストの処理の判定が終了した時点で、許可フラグ316を外部に出力する。
〔実施形態2〕
以下、本発明に係る第二の実施形態を、図8ないし図11を用いて説明する。
以下、本発明に係る第二の実施形態を、図8ないし図11を用いて説明する。
第一の実施形態では、アクセス制御回路において、あらたなリクエストを演算器が受け付けるべきか否かの判定を、各々のリクエストが終了リクエスト時刻までに処理を終わることができるかという基準に基づいておこなった。
本実施形態は、リクエストを処理する演算器に対して演算器占有率という概念を用い、これが一定の割合い、例えば、100パーセントを超えない範囲のリクエストならば、そのリクエストを許可するという発想に立つものである。
先ず、図8を用いて本発明の第二の実施形態に係るコプロセッサの処理について説明する。
図8は、本発明の第二の実施形態のコプロセッサの演算器に対して処理のリクエストが発生した場合の処理を示すフローチャートである。
図8は、本発明の第二の実施形態のコプロセッサの演算器に対して処理のリクエストが発生した場合の処理を示すフローチャートである。
なお、ここでは新規リクエストnに関する終了時刻、終了リクエスト時刻、処理時間を、それぞれ、終了時刻n、終了リクエスト時刻n、処理時間nと表している。また、新規リクエストnに関する演算器占有率を、演算器占有率nで表している。
アクセス制御回路が、演算のリクエストとそのリクエストに関する情報を受け取ると、新規リクエストの終了リクエスト時刻nから現在時刻を減算し、新規リクエストの処理時間nを減算結果で除算して演算器占有率nを算出する(ステップ120)。すなわち、演算器占有率nは、以下の(式1)で表される。
演算器占有率n=処理時間/(終了リクエスト時刻n−現在時刻) …(式1)
算出した演算器占有率nと、現在の演算器占有率を加算し、100%を超えるか否かの判定をおこなう(分岐121)。その結果が100%以下であれば、リクエスト許可を発行し(ステップ108)、分岐121での判定結果が100%以上であれば、処理をリクエストされた時間までに処理できないため、リクエストを拒否する(ステップ109)。
算出した演算器占有率nと、現在の演算器占有率を加算し、100%を超えるか否かの判定をおこなう(分岐121)。その結果が100%以下であれば、リクエスト許可を発行し(ステップ108)、分岐121での判定結果が100%以上であれば、処理をリクエストされた時間までに処理できないため、リクエストを拒否する(ステップ109)。
このアルゴリズムは、第一の実施形態と比較して、すべての期間にわたって、リクエスト処理が均等に配分される傾向にあるため、低消費電力の機能が要請されるコプロセッサに有効なものである。
次に、図9を用いて上記のアルゴリズムを、具体例によって模式的に説明する。
図9は、リクエスト処理と演算器占有率の具体的な様子を示したタイミングチャートである。
図9は、リクエスト処理と演算器占有率の具体的な様子を示したタイミングチャートである。
処理中のリクエストがない状態でリクエスト1が時刻530で発行された場合、要求された終了リクエスト時刻531までにリクエスト1の処理410の演算器占有率は、10%になるため、リクエスト1は許可される。
次に、時刻532において、リクエスト2が要求され、終了リクエスト時刻533までにリクエスト2を終了するには、30%の演算器占有率で実行すれば処理が可能であるとする。この場合に、リクエスト1の演算器占有率とリクエスト2の演算器占有率を加えた時刻532から時刻533の演算器占有率は、40%であり、時刻533から時刻534の演算器占有率は、10%であるため、リクエスト2は許可される。
さらに、時刻535においてリクエスト3が要求され、終了時刻535までにリクエスト3を終了するには5%の演算器占有率で実行すれば処理が可能であるとする。この場合に、既に演算中のリクエストと合わせたとしても、時刻535から時刻536までの演算器占有率は、順次、45%、15%、5%となり、全ての時間帯において演算器占有率が100%を超えることがない。そのため、リクエスト3は許可される。
次に、図10を用いて本発明の第二の実施形態に係るコプロセッサのアクセス制御回路の回路例について説明する。
図10は、本発明の第二の実施形態に係るコプロセッサのアクセス制御回路の回路例を示す構成図である。
図10は、本発明の第二の実施形態に係るコプロセッサのアクセス制御回路の回路例を示す構成図である。
アクセス制御回路250の終了時刻保持回路203は、外部より終了リクエスト時刻n306を受け取り、保持する。また、現在時刻回路201は、現在時刻300を受け取り、保持する。
次に、減算器251により、終了時刻保持回路203が出力した終了リクエスト時刻n306から現在時刻回路201が出力した現在時刻304を減算する。
一方、処理時間算出回路202は、リクエストのパケット数301とパケット長302により、そのリクエストの処理時間を算出する。そして、除算器252により、減算器の出力と処理時間算出回路202の出力するそのリクエストの処理時間を除算する。
次に、可算器253により、除算器252の出力と演算器から送られてくる現在の演算器占有率342とを加算し、新規の演算器占有率343を算出する。そして、算出した結果は、外部の演算器と比較器254に出力され、比較器254により、新規の演算器占有率が100%を超えているか否かを判定する。その結果を比較結果344を用いて許可フラグ出力回路255へ転送され、許可フラグ出力回路255から許可フラグ316を外部の演算器に出力される。新規の演算器占有率343は、そのリクエストが許可されたときに、演算器にて保持され、次の現在の演算器占有率342を出力するときに利用される。
次に、図11を用いて本発明の第二の実施形態に係るコプロセッサの内部構成と信号処理について説明する。
図11は、本発明の第二の実施形態に係るコプロセッサの内部構成図である。
図11は、本発明の第二の実施形態に係るコプロセッサの内部構成図である。
本実施形態の演算制御方法は、演算器占有率という概念により、リクエストを許可するか拒否するか判定するものであった。本実施形態のコプロセッサは、この演算器占有率に対応した適切なクロック351を出力するためのクロック制御回路261を有するものである。
DMAバス326に接続されたコプロセッサ222は、DMA制御回路221によってデータ転送をおこなう。DMAバス326よりリクエストを受けたDMA制御回路221は、演算器260に対するリクエストであった場合には、アクセス制御回路250と演算器260に対して、リクエスト情報を出力する。リクエストを受けた演算器260は、アクセス制御回路250に対して、現在の演算器占有率342を出力する。
DMA制御回路221と演算器260からの情報により、アクセス制御回路250は新規リクエストを演算器260で処理可能であるか否かを判定し、その結果として、許可フラグ316と新規の演算器占有率343を演算器260に対して出力する。
演算器260が新規リクエストを許可する場合には、新規の演算器占有率343を用いて、クロック制御回路261へクロック速度情報350を入力する。その結果、クロック制御回路261は演算器260に対して演算器占有率に対応した適切なクロック351を供給する。なお、リクエストの処理が終了した場合には、演算器260の処理性能を低めてもよくなるため、必要に応じてクロック制御回路261に対して演算器260はクロック速度情報350を出力して、クロックを低くする。このようにクロックを適切に調整すれば、コプロセッサ内における消費電力を低減することができる。
200…アクセス制御回路
201…現在時刻回路
202…処理時間算出回路
203…終了リクエスト時刻保持回路
210…許可フラグ出力回路
222…コプロセッサ
230…CPUコア
231…ローカルメモリ
235…暗号処理コプロセッサ
236…AES演算器
237…DES演算器
238…Multi2演算器
300…現在時刻信号
301…パケット数
302…パケット長
303…終了リクエスト時刻
307…終了時刻i
308…終了リクエスト時刻i
309…処理フラグ
316…許可フラグ
342…現在の演算器占有率
343…新規の演算器占有率
201…現在時刻回路
202…処理時間算出回路
203…終了リクエスト時刻保持回路
210…許可フラグ出力回路
222…コプロセッサ
230…CPUコア
231…ローカルメモリ
235…暗号処理コプロセッサ
236…AES演算器
237…DES演算器
238…Multi2演算器
300…現在時刻信号
301…パケット数
302…パケット長
303…終了リクエスト時刻
307…終了時刻i
308…終了リクエスト時刻i
309…処理フラグ
316…許可フラグ
342…現在の演算器占有率
343…新規の演算器占有率
Claims (8)
- 演算器とアクセス制御回路とを有するコプロセッサの演算制御方法において、
前記演算器と前記アクセス制御回路とに、演算をおこなうことを要求する演算リクエストのパケット長とパケット数、演算をおこなうことを要求する演算リクエストの終了を要求する時刻である終了リクエスト時刻を入力する手順と、
前記演算器において、前記演算リクエストのパケット長とパケット数から該当する演算リクエストの処理時間を算出する手順と、
前記演算器において、前記アクセス制御回路から該当する演算リクエストの実行が許可されたときに、既に許可された演算リクエストの終了時刻と前記該当する演算リクエストの処理時間とから、該当する演算リクエストの終了時刻を算出する手順と、
前記演算器から前記アクセス制御回路に、現在までに許可された演算リクエストの終了時刻と現在までに許可された演算リクエストの終了リクエスト時刻とその演算器で処理中のリクエストがあるか否かを示す処理フラグとを入力する手順と、
前記アクセス制御回路が、あらたな演算リクエストを受けたときに、前記アクセス制御回路は、その演算リクエストのパケット長とパケット数からその演算リクエストの処理時間を算出する手順と、
前記アクセス制御回路が、あらたな演算リクエストを受けたときであって前記入力された処理フラグが処理中のリクエストが無いことを示しているときに、その演算リクエストの処理時間と現在時刻との和が、その演算リクエストの終了リクエスト時刻を超えているときに、前記演算器にその演算リクエストの実行を拒否することを伝え、その演算リクエストの処理時間と現在時刻との和が、その演算リクエストの終了リクエスト時刻を超えないときには、前記演算器にその演算リクエストの実行を許可することを伝える手順と、
前記アクセス制御回路が、あらたな演算リクエストを受けたときであって前記入力された処理フラグが処理中のリクエストが有ることを示しているときに、前記演算器から入力された各々の演算リクエストの終了時刻とそのあらたな演算リクエストの処理時間との和のすべてが各々の演算リクエストの終了リクエスト時刻を超えず、かつ、そのあらたな演算リクエストの終了時刻とそのあらたな演算リクエストの処理時間との和がそのあらたな演算リクエストの終了リクエスト時刻を超えないときには、前記演算器にそのあらたな演算リクエストの実行を許可することを伝え、それ以外のときには、前記演算器にそのあらたな演算リクエストの実行を拒否することを伝える手順とを有することを特徴とするコプロセッサの演算制御方法。 - 演算器とアクセス制御回路とを有するコプロセッサの演算制御方法において、
前記アクセス制御回路に、演算をおこなうことを要求する演算リクエストのパケット長とパケット数、演算をおこなうことを要求する演算リクエストの終了を要求する時刻である終了リクエスト時刻を入力する手順と、
前記演算器から前記アクセス制御回路に、現在の演算器占有率を入力する手順と、
前記アクセス制御回路が、あらたな演算リクエストを受けたときに、前記アクセス制御回路は、その演算リクエストのパケット長とパケット数からその演算リクエストの処理時間を算出する手順と、
前記アクセス制御回路が、前記演算リクエストの処理時間を、入力された終了リクエスト時刻と現在時刻の差で除した値を、あらたな演算器占有率として求める手順と、
前記アクセス回路が、前記あらたな演算器占有率と前記入力された演算器占有率の和が1を超えないときに、前記演算器にそのあらたな演算リクエストの実行を許可することとあらたな演算器占有率を伝え、前記あらたな演算器占有率と前記入力された演算器占有率の和が1を超えるときに、前記演算器にそのあらたな演算リクエストの実行を拒否することを伝える手順と、
前記演算器が、前記演算器にそのあらたな演算リクエストの実行を許可することとあらたな演算器占有率を伝えられたときに、そのあらたな演算器占有率を現在の演算器占有率として保存する手順とを有することを特徴とするコプロセッサの演算制御方法。 - 演算器とアクセス制御回路とDMA制御回路とを有するコプロセッサにおいて、
前記DMA制御回路は、
DMAバスを介して外部プロセッサから演算リクエストの実行要求とその演算リクエストのパケット長、パケット数とその演算リクエストの終了を要求する時刻である終了リクエスト時刻とを受け付けて、前記演算器と前記アクセス制御回路に入力し、
前記演算器から演算リクエストの実行要求が許可されたことを伝えられたときには、前記演算器にその演算リクエストのパケットをDMA転送し、
前記演算器から演算リクエストの実行要求が拒否されたことを伝えられたときには、外部プロセッサに演算リクエストの実行要求が拒否されたことを伝え、
前記演算器は、
前記演算リクエストのパケット長とパケット数から該当する演算リクエストの処理時間を算出し、前記アクセス制御回路から該当する演算リクエストの実行が許可されたときに、既に許可された演算リクエストの終了時刻と前記該当する演算リクエストの処理時間とから、該当する演算リクエストの終了時刻を算出し、
前記演算器から前記アクセス制御回路に、現在までに許可された演算リクエストの終了時刻と現在までに許可された演算リクエストの終了リクエスト時刻とその演算器で処理中のリクエストがあるか否かを示す処理フラグとを入力し、
前記演算器は、あらたな演算リクエストの実行が許可されたこと、または、あらたな演算リクエストの実行が拒否されたことを、前記DMA制御回路に伝え、
前記アクセス制御回路は、
あらたな演算リクエストを受けたときに、その演算リクエストのパケット長とパケット数からその演算リクエストの処理時間を算出し、前記アクセス制御回路が、あらたな演算リクエストを受けたときであって前記入力された処理フラグが処理中のリクエストが無いことを示しているときに、その演算リクエストの処理時間と現在時刻との和が、その演算リクエストの終了リクエスト時刻を超えているときに、前記演算器にその演算リクエストの実行を拒否することを伝え、その演算リクエストの処理時間と現在時刻との和が、その演算リクエストの終了リクエスト時刻を超えないときには、前記演算器にその演算リクエストの実行を許可することを伝え、
あらたな演算リクエストを受けたときであって前記入力された処理フラグが処理中のリクエストが有ることを示しているときに、前記演算器から入力された各々の演算リクエストの終了時刻とそのあらたな演算リクエストの処理時間との和のすべてが各々の演算リクエストの終了リクエストを超えず、かつ、そのあらたな演算リクエストの終了時刻とそのあらたな演算リクエストの処理時間との和がそのあらたな演算リクエストの終了リクエスト時刻を超えないときには、前記演算器にそのあらたな演算リクエストの実行を許可することを伝え、それ以外のときには、前記演算器にそのあらたな演算リクエストの実行を拒否することを伝えることを特徴とするコプロセッサ。 - 前記演算器を複数有する請求項3記載のコプロセッサ。
- そのコプロセッサ内のある演算器において、演算リクエストの実行を拒否されたときに、前記DMA制御回路は、他の演算器にその演算リクエストの実行を割り当てることを特徴とする請求項4記載のコプロセッサ。
- 前記演算器が暗号処理回路よりなることを特徴とする請求項3記載のコプロセッサ。
- 演算器を制御するアクセス制御回路において、
現在時刻を保存する現在時刻回路と、
演算リクエストのために転送されるパケットのパケット数と各々のパケット長を受け取り、その演算リクエストの処理時間を算出する処理時間算出回路と、
演算リクエストに対する終了を要求する時刻である終了リクエスト時刻を受け取り、保持する終了リクエスト時刻保持回路と、
現在の処理状況を示す処理フラグに応じてあらたな演算リクエストの終了リクエスト時刻と現在処理中の演算リクエストの終了リクエスト時刻とのいずれかを出力する第一の時間判定器と、
現在の処理状況を示す処理フラグに応じて現在時刻か現在処理中の演算リクエストが終了する終了時刻を選択して出力する第一のセレクタ回路と、
第一の時間判定器の結果を用いてあらたな演算リクエストの終了リクエスト時刻と現在処理中の演算リクエストの終了リクエスト時刻を選択して出力する第二のセレクタ回路と、
前記第一のセレクタ回路の出力と前記処理時間算出回路の結果を加算して出力する加算回路と、
前記加算回路の出力と第二のセレクタ回路の出力を比較して結果を出力する第二の時間判定器と、
前記第二の時間判定器の出力により演算リクエストを処理可能であるか否かを判定し外部へ出力する許可フラグ出力回路とを備え、
前記処理フラグが現在処理中の演算リクエストが無いことを示している場合には、前記第一のセレクタにより、前記現在時刻を選択して出力し、
前記加算回路により前記現在時刻と前記処理時間と加算して出力し、
前記時間判定器により、前記加算結果の出力と前記あらたな演算リクエストの終了リクエスト時刻との比較して、そのあらたな演算リクエストの処理可能判定をおこない、
前記処理フラグが現在処理中の演算リクエストが有ることを示し、現在処理中の演算リクエストの終了リクエスト時刻よりあらたな演算リクエストの終了リクエスト時刻が早い場合には、前記第一のセレクタにより、現在処理中の演算リクエストが終了する終了時刻を選択して出力し、
前記加算回路により、前記現在処理中の演算リクエストが終了する終了時刻とあらたな演算リクエストの処理時間と加算して出力し、
前記時間判定器により、前記加算回路の出力と前記現在処理中の演算リクエストの終了リクエスト時刻とを比較して、そのあらたな演算リクエストの処理可能判定をおこない、
前記処理フラグが現在処理中のリクエストが有ることを示し、現在処理中の演算リクエストの終了リクエスト時刻よりあらたな演算リクエストの終了リクエスト時刻が早くない場合には、前記第一のセレクタにより、現在処理中の演算リクエストが終了する終了時刻を選択して出力し、
前記加算回路により、前記現在処理中の演算リクエストが終了する終了時刻とあらたな演算リクエストの処理時間と加算して出力し、
前記時間判定器により、前記加算回路の出力と前記あらたな演算リクエストの終了リクエスト時刻とを比較して、そのあらたな演算リクエストの処理可能判定をおこなうことを特徴とするアクセス制御回路。 - 演算器を制御するアクセス制御回路において、
現在時刻を保存する現在時刻回路と、
演算リクエストのために転送されるパケットのパケット数と各々のパケット長を受け取り、その演算リクエストの処理時間を算出する処理時間算出回路と、
演算リクエストに対する終了を要求する時刻である終了リクエスト時刻を受け取り、保持する終了リクエスト時刻保持回路と、
あらたな演算リクエストの終了リクエスト時刻から現在時刻を減算して出力する減算回路と、
前記減算回路の出力を前記処理時間算出回路の出力によって、除算をおこない、該当する演算リクエストの演算器占有率として出力する除算回路と、
前記除算回路の出力と現在処理中の演算器占有率を加算して出力する加算回路と、
前記加算回路の出力と、前記演算器があらたに演算リクエストの処理が可能であることを示す定数と比較して結果を出力する比較器と、
前記比較器からの出力により、そのあらたな演算リクエストを処理可能であるか否かを判定し外部へ出力する許可フラグ出力回路とを備え、
前記減算回路により、あらたな演算リクエストの終了リクエスト時刻から現在時刻を減算して出力し、
前記除算回路により、前記減算回路の出力を前記処理時間算出回路の出力によって、除算をおこなって出力し、
前記加算回路により、前記除算回路の出力と現在処理中の演算器占有率を加算して出力し、
前記比較器により、前記加算回路の出力と、前記演算器があらたに演算リクエストの処理が可能であることを示す定数と比較して結果を出力し、
前記許可フラグ出力回路により、前記比較器からの出力に基づき、そのあらたな演算リクエストを処理可能であるか否かを判定し外部へ出力することを特徴とすることを特徴とするアクセス制御回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005126086A JP2006302168A (ja) | 2005-04-25 | 2005-04-25 | コプロセッサ、および、その演算制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005126086A JP2006302168A (ja) | 2005-04-25 | 2005-04-25 | コプロセッサ、および、その演算制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006302168A true JP2006302168A (ja) | 2006-11-02 |
Family
ID=37470354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005126086A Pending JP2006302168A (ja) | 2005-04-25 | 2005-04-25 | コプロセッサ、および、その演算制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006302168A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016207231A (ja) * | 2013-03-16 | 2016-12-08 | インテル・コーポレーション | 命令エミュレーションプロセッサ、方法、およびシステム |
US9672076B2 (en) | 2011-03-17 | 2017-06-06 | Fujitsu Limited | Scheduling process on a processor or an accelerator on a system driven by battery based on processing efficiency and power consumption |
JP2018124688A (ja) * | 2017-01-31 | 2018-08-09 | 株式会社メガチップス | 半導体メモリ装置および半導体メモリシステム |
-
2005
- 2005-04-25 JP JP2005126086A patent/JP2006302168A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9672076B2 (en) | 2011-03-17 | 2017-06-06 | Fujitsu Limited | Scheduling process on a processor or an accelerator on a system driven by battery based on processing efficiency and power consumption |
JP2016207231A (ja) * | 2013-03-16 | 2016-12-08 | インテル・コーポレーション | 命令エミュレーションプロセッサ、方法、およびシステム |
JP2018124688A (ja) * | 2017-01-31 | 2018-08-09 | 株式会社メガチップス | 半導体メモリ装置および半導体メモリシステム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4580845B2 (ja) | タスク実行装置 | |
US8571207B2 (en) | Hash value calculation apparatus and method thereof | |
US8312229B2 (en) | Method and apparatus for scheduling real-time and non-real-time access to a shared resource | |
JP4480427B2 (ja) | リソース管理装置 | |
JP2611746B2 (ja) | 入出力インタフェース装置及びその制御方法 | |
JP4456490B2 (ja) | Dma装置 | |
US7724984B2 (en) | Image processing apparatus | |
JP2005202767A (ja) | プロセッサシステム、dma制御回路、dma制御方法、dmaコントローラの制御方法、画像処理方法および画像処理回路 | |
JP2007207026A (ja) | Dma転送装置 | |
JP2006338538A (ja) | ストリームプロセッサ | |
JP2002366507A (ja) | 複数チャネルdmaコントローラおよびプロセッサシステム | |
US7007138B2 (en) | Apparatus, method, and computer program for resource request arbitration | |
JP2006302168A (ja) | コプロセッサ、および、その演算制御方法 | |
EP1947602B1 (en) | Information processing device, graphic processor, control processor, and information processing method | |
JP5076616B2 (ja) | プロセッサ及びプリフェッチ制御方法 | |
JP2005092780A (ja) | リアルタイムプロセッサシステム及び制御方法 | |
JPH08161254A (ja) | 情報処理システムおよびそのバス調停方式 | |
CN114116220B (zh) | 一种gpu共享控制方法、gpu共享控制装置及存储介质 | |
JP2006215621A (ja) | Dma制御装置 | |
JP2021082103A (ja) | 調停回路、データ転送システム、及び、調停回路による調停方法 | |
JP2004220309A (ja) | マルチプロセッサシステム | |
US12045671B2 (en) | Time-division multiplexing method and circuit for arbitrating concurrent access to a computer resource based on a processing slack associated with a critical program | |
JP2007304830A (ja) | 情報先行取得による調停方法および調停装置 | |
JP4999932B2 (ja) | 仮想計算機システム及び仮想計算機重み付け設定処理方法及び仮想計算機重み付け設定処理プログラム | |
JP2006331008A (ja) | メモリインタフェース |