(57)【要約】  零オーバーヘッドループを実現するプロセッサ（１００）であって、命令ストリーム制御回路系（１１０）及びループ制御回路系（１２０）を含み、ループ制御回路系（１２０）はループアドレス検出回路系（１２２）及びループ終了判断回路系（１２４）を含む、プロセッサ（１００）。命令とハードウェアとを組み合わせることにより、各ループ反復により必要とされる追加の制御命令を無くし、零オーバーヘッドによりループ加速を実現し、これによりループ実行効率を改善する。
2021519468.tif 000002
【特許請求の範囲】
【請求項１】
ループ実行のためのハードウェア制御を提供するプロセッサであって、前記プロセッサは：
ループ命令を含むループの制御を初期化し管理するように構成されたループ制御回路系であって、
内部命令フェッチアドレスが前記ループ命令の終了アドレスかどうかを判断し、前記内部命令フェッチアドレスが前記ループ命令の前記終了アドレスであると判断することに応答してループ終了要求を送信するように構成されたループアドレス検出回路系；及び
前記ループ終了要求を受信すると、ループ抜け出し条件が満足されるかどうかを判断し、前記ループ抜け出し条件が満足されるかどうかの判断に従って前記内部命令フェッチアドレスを更新するように構成されたループ終了判断回路系；
を含むループ制御回路系と、
前記内部命令フェッチアドレスを受信し、前記内部命令フェッチアドレスに従って外部メモリに対する次の命令フェッチ要求のための命令フェッチアドレスを維持し、前記次の命令フェッチ要求を前記外部メモリへ送信するように構成された命令ストリーム制御回路系と
を含むプロセッサ。
【請求項２】
前記ループ終了判断回路系はさらに：
実行されている前記ループ命令が前記ループ抜け出し条件を満足しない場合、ループ開始アドレス及び選択制御信号を前記命令ストリーム制御回路系へ送信し、前記内部命令フェッチアドレスを前記ループ開始アドレスにより更新し；
実行されている前記ループ命令が前記ループ抜け出し条件を満足する場合、ループ加速命令アドレスにより前記内部命令フェッチアドレスを更新するように構成される、請求項１に記載のプロセッサ。
【請求項３】
前記命令ストリーム制御回路系はさらに：
次の命令フェッチ要求と共に命令フェッチアドレスを前記外部メモリへ送信し；
実行されている前記ループ命令が前記ループ内の最終の命令でない場合、前記内部命令フェッチアドレスに従って前記命令フェッチアドレスを更新し；
実行されている前記ループ命令がループ内の最終命令である場合、前記選択制御信号に従って前記命令フェッチアドレスを更新するように構成される、請求項１又は２に記載のプロセッサ。
【請求項４】
前記命令ストリーム制御回路系は：
前記ループ終了判断回路系から選択制御信号を受信した後に前記ループ開始アドレスを出力することを選択すること、又は前記内部命令フェッチアドレスを出力することを選択するように構成された選択器；及び
前記選択器の前記出力に従って前記次の命令フェッチ要求のための前記命令フェッチアドレスを取得し、前記外部メモリに対する次の命令フェッチ要求を開始するように構成されたプログラムカウンタを含む、請求項２又は３に記載のプロセッサ。
【請求項５】
命令フェッチ回路系、復号化回路系及び実行回路系をさらに含み、
前記命令フェッチ回路系は、外部メモリから送信される、前記ループ加速命令を含む前記ループ命令を受信するように構成され；
前記復号化回路系は、前記ループが始まるとき前記ループ加速命令を解析し、前記ループ加速命令に従ってループ制御信号及びフラグ設定制御信号を生成し、前記ループ制御信号を前記ループ制御回路系へ送信し、前記フラグ設定制御信号を前記実行回路系へ送信し、前記ループが終了するとき前記ループ加速命令を再び解析し、前記ループ加速命令に従ってフラグクリヤ制御信号を生成し、前記フラグクリヤ制御信号を前記実行回路系へ送信するように構成され；
前記実行回路系は、ループが始まるとき前記ループ加速命令を実行し、前記フラグ設定制御信号を受信した後に、前記ループをトリガして開始させるために対応フラグを設定し、前記フラグクリヤ制御信号を受信した後に、前記ループ加速命令を再び実行し、前記ループを終了するために前記フラグをクリアするように構成される、請求項２乃至４のいずれか一項に記載のプロセッサ。
【請求項６】
前記ループ加速命令は、前記ループ開始アドレス、前記ループ終了アドレス及び前記ループ抜け出し条件を割り当てるために使用される、請求項２乃至５のいずれか一項に記載のプロセッサ。
【請求項７】
前記ループ制御信号は、前記ループ開始アドレス、前記ループ終了アドレス及び前記ループ抜け出し条件を含む、請求項５乃至６のいずれか一項に記載のプロセッサ。
【請求項８】
前記ループ抜け出し条件は、残り反復数が零であること、外部割込み及びデバッギングを含む、請求項１乃至７のいずれ一項に記載のプロセッサ。
【請求項９】
前記ループ加速命令は、前記ループ抜け出し条件が前記残り反復数が零である場合に総反復数を割り当てるためにさらに使用される、請求項８に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[1]  本開示は、参照のためその全体を本明細書に援用する２０１８年４月９日出願の中国特許出願第２０１８１０３１１６７９．４号からの優先権の利益を主張する。
【背景技術】
【０００２】
背景
[2]  従来システムでは、ループを有するコンピュータプログラムが非常に一般的である。１つの処理方法は、総反復数を記録するために汎用レジスタを使用し、各反復後に汎用レジスタに対しマイナス１の演算を行うための減算命令を使用し、そして反復の数が所望数に達したかどうかを判断する。より多くの反復が必要とされる場合、追加のジャンプ命令がループの始めに戻るために使用される。しかし、このような操作は通常、複数の追加命令をループ内に追加し、これによりループ実行効率に影響を与える。さらに、このような操作は短いループ及び高性能要件を有するアプリケーションにおいて著しく悪い影響を及ぼす。
【発明の概要】
【課題を解決するための手段】
【０００３】
開示の概要
[3]  本開示は、零オーバーヘッドループを実現するプロセッサを提供し、前記プロセッサは命令ストリーム制御回路系及びループ制御回路系を含み、ループ制御回路系はループアドレス検出回路系及びループ終了判断回路系を含む。ループ制御回路系は、ループ制御信号に従ってループ開始アドレス、ループ終了アドレス、及びループ抜け出し条件を初期化するように構成される。ループアドレス検出回路系は、内部命令フェッチアドレスがループアドレス範囲内にあるかどうかを検出し、ループ終了要求をループ終了判断回路系へ送信するように構成される。ループ終了判断回路系は、現在のループ実行がループ抜け出し条件を満足するかどうかを判断するように構成される。命令ストリーム制御回路系は、命令フェッチアドレスを維持するように構成される。
【０００４】
[4]  本開示のいくつかの実施形態はさらに、ループ命令を処理するためのプロセッサを提供する。従来システムと比較して、本開示は、命令とハードウェアとを組み合わせることにより、各反復により必要とされる追加の制御命令を無くし、零オーバーヘッドによりループ加速を実現し得、これによりループ実行効率を改善する。
【図面の簡単な説明】
【０００５】
図面の簡単な説明
【図１】[5]本開示のいくつかの実施形態による零オーバーヘッドループを実現する例示的プロセッサの概略図である。
【発明を実施するための形態】
【０００６】
詳細な説明
[6]  本開示の実施形態の目的、技術的解決策、及び利点をより明確にするために、本開示の実施形態における技術的解決策が本開示の実施形態において添付図面を参照して以下に説明される。明らかに、説明される実施形態は本開示の実施形態のすべてというよりむしろいくつかに過ぎない。本開示の実施形態に基づき創造的努力無しに当業者により得られるすべての他の実施形態は、本開示の保護範囲内に入るものとする。
【０００７】
[7]  本開示において提供されるプロセッサは、命令とハードウェアとを組み合わせることにより、各反復により必要とされる追加の制御命令を無くし、零オーバーヘッドによりループ加速を実現し得る。図１は本開示のいくつかの実施形態による零オーバーヘッドループを実現する例示的プロセッサ１００の概略図である。図１に示すように、プロセッサ１００は、命令ストリーム制御回路系１１０及びループ制御回路系１２０を含み、ループ制御回路系１２０は、ループアドレス検出回路系１２２及びループ終了判断回路系１２４を含む。
【０００８】
[8]  ループ制御回路系１２０は、ループ命令を含むループの制御を初期化し管理するように構成される。ループの制御は、ループ制御信号に基づく、ループ開始アドレス、ループ終了アドレス、及びループ抜け出し条件を含む。
【０００９】
[9]  ループアドレス検出回路系１２２は、内部命令フェッチアドレスがループアドレス範囲内にあるかどうかを検出し、内部命令フェッチアドレスがループ終了アドレスに等しいとき、ループ終了要求をループ終了判断回路系１２４へ送信するように構成される。
【００１０】
[10]  ループ終了判断回路系１２４は、ループ終了要求を受信すると、現在実行されているループ命令がループ抜け出し条件を満足するかどうかを判断するように構成される。いくつかの実施形態では、ループ終了判断回路系１２４はさらに、現在のループ実行がループ抜け出し条件を満足しない場合、ループ開始アドレス及び選択制御信号を命令ストリーム制御回路系１１０へ送信し、ループ開始アドレスにより内部命令フェッチアドレスを更新するように構成される。ループ終了判断回路系１２４は、現在のループ実行がループ抜け出し条件を満足する場合、ループ加速命令アドレスにより内部命令フェッチアドレスを更新するように構成される。
【００１１】
[11]  命令ストリーム制御回路系１１０は、命令フェッチアドレスを維持し、次の命令フェッチ要求のための命令フェッチアドレスを外部メモリへ送信するように構成される。実行されている命令がループ内の最後のループ命令でない場合、命令フェッチアドレスはループ内の次の命令により更新される。実行されている命令がループ内の最後の命令である場合、命令フェッチアドレスは選択制御信号に従って更新される。例えば、ループジャンプが必要とされない場合、命令ストリーム制御回路系１１０は、現在の命令フェッチ要求の内部命令フェッチアドレスに従って、次の命令フェッチ要求のための命令フェッチアドレスを維持する。ループジャンプが必要とされる場合、命令ストリーム制御回路系１１０は、選択制御信号による使用のために選択されたループ開始アドレスに従って、次の命令フェッチ要求のための命令フェッチアドレスを維持する。
【００１２】
[12]  本開示の実施形態は、ループ命令を処理するためのプロセッサ１００を提供する。従来システムと比較して、本開示は、命令とハードウェアとを組み合わせることにより、各反復により必要とされる追加の制御命令を無くし、零オーバーヘッドによりループ加速を実現し得、これによりループ実行効率を改善する。
【００１３】
[13]  いくつかの実施形態では、図１に示すように、命令ストリーム制御回路系１１０は、選択器１１２及びプログラムカウンタ１１４を含む。
【００１４】
[14]  選択器１１２は、選択制御信号を受信すると、ループ開始アドレスをプログラムカウンタ１１４へ出力すること、又は現在の命令フェッチアドレスをプログラムカウンタ１１４へ出力することのいずれかを選択するように構成される。
【００１５】
[15]  プログラムカウンタ１１４は、選択器１１２の出力に従って、次の命令フェッチ要求のための命令フェッチアドレスを取得し、外部メモリへの次の命令フェッチ要求を開始するように構成される。
【００１６】
[16]  いくつかの実施形態では、図１に示すように、プロセッサ１００は、命令フェッチ回路系１３０、実行回路系１４０及び復号化回路系１５０をさらに含む。
【００１７】
[17]  命令フェッチ回路系１３０は、外部メモリから送信される命令を受信するように構成される。命令はループ加速命令を含む。
【００１８】
[18]  復号化回路系１５０は、ループが始まるときにループ加速命令を解析し、ループ加速命令に従ってループ制御信号及びフラグ設定制御信号を生成し、ループ制御信号をループ制御回路系１２０へ送信し、フラグ設定制御信号を実行回路系１４０へ送信するように構成される。復号化回路系１５０はさらに、ループが終わるときにループ加速命令を再び解析し、ループ加速命令に従ってフラグクリヤ制御信号を生成し、フラグクリヤ制御信号を実行回路系１４０へ送信するように構成される。
【００１９】
[19]  実行回路系１４０は、ループが始まるときにループ加速命令を実行し、フラグ設定制御信号を受信すると、ループをトリガして開始させるために対応フラグを設定するように構成される。実行回路系１４０は、フラグクリヤ制御信号を受信した後、ループ加速命令を再び実行し、フラグをクリアしてループを終了するように構成される。
【００２０】
[20]  本開示の実施形態による零オーバーヘッドループを実現するプロセッサ１００は、ループ制御回路系１２０のハードウェア構造をプロセッサ１００内に追加することにより、命令ストリーム制御回路系１１０を修正し、ループ加速命令と組み合わせることにより、ループを有するコンピュータプログラムを処理する。操作処理全体にわたって、ループ加速命令は、最初の反復及び最後の反復においてだけ実行される必要がある。最初の実行は、ループをトリガし、ループの開始アドレスへジャンプするように命令フェッチ回路系１３０を制御し、ループ抜け出し条件が満足された後、ループ加速命令は、ループ本体だけがループ処理中に実行される間に、ループを終了するためにもう一度実行される。従来システムと比較して、本開示は、各反復により必要とされる追加の制御命令を無くし、零オーバーヘッドを有するループジャンプを実現し、外部メモリへのアクセスの数を低減し得、これによりループプログラム実行効率を改善し、そしてシステム電力消費を低減する。
【００２１】
[21]  いくつかの実施形態では、ループ加速命令は、ループ開始アドレス、ループ終了アドレス及びループ抜け出し条件を割り当てるために使用される。
【００２２】
[22]  いくつかの実施形態では、ループ制御信号は、ループ開始アドレス、ループ終了アドレス及びループ抜け出し条件を含む。
【００２３】
[23]  いくつかの実施形態では、ループ抜け出し条件は、残り反復数が零であること、外部割込み及びデバッグ要求を含む。ループ抜け出し条件が残り反復数が零であることである場合、ループ加速命令はさらに、総反復数を割り当てるために使用される。
【００２４】
[24]  本開示による零オーバーヘッドループを実現するプロセッサ１００の操作処理が以下に説明される。いくつかの実施形態では、ループ加速命令は、ループ開始アドレス、ループ終了アドレス、反復の数及びループ抜け出し条件を割り当てる。ここで、ループ抜け出し条件は残り反復数が零であることである。
【００２５】
[25]  ループ内でなければ、選択器１１２は、内部命令フェッチアドレスをプログラムカウンタ１１４へ送信するために、命令フェッチ回路系１３０から内部命令フェッチアドレスを選択する。
【００２６】
[26]  ループが始まると、復号化回路系１５０は、ループ加速命令を解析し、ループ制御信号及びフラグ設定制御信号を生成し、ループ制御信号をループ制御回路系１２０へ送信し、フラグ設定制御信号を実行回路系１４０へ送信する。
【００２７】
[27]  ループ制御回路系１２０は、ループ制御信号に従って、ループ開始アドレス、ループ終了アドレス、及びループ抜け出し条件を初期化するように構成される。
【００２８】
[28]  実行回路系１４０は、ループ加速命令を実行し、ループをトリガするため対応フラグを設定し、そしてほぼ同時に、内部命令フェッチアドレスを更新するためにループ開始アドレスを使用する。
【００２９】
[29]  選択器１１２は、命令フェッチ回路系１３０の内部命令フェッチアドレスを選択し、命令フェッチ回路系１３０は、ループ内部の命令を連続的に取得する。
【００３０】
[30]  ループアドレス検出回路系１２２は、内部命令フェッチアドレスがループアドレス範囲内にあるかどうかを検出し、内部命令フェッチアドレスがループ終了アドレスに等しい場合、判断要求をループ終了判断回路系１２４へ送信する。
【００３１】
[31]  ループ終了判断回路系１２４は、現在のループ実行とループ抜け出し条件とを比較する。ループ終了判断回路系１２４はさらに、ループ実行を維持する（例えば残り反復数から１を減じるために内部ループカウンタを維持する）ように構成される。
【００３２】
[32]  例えば、ループ終了判断回路系１２４が、残り反復数が０より大きいと判断する場合、ループ終了判断回路系１２４は、ループ実行が継続することを許容する。この時点で、ループ終了判断回路系１２４は、ループ開始アドレス及び選択制御信号を選択器１１２へ送信し、ループ開始アドレスを使用して内部命令フェッチアドレスを更新するために命令フェッチ回路系１３０をトリガする。
【００３３】
[33]  この結果、プログラムカウンタ１１４は、ループをやり直すべく、外部メモリに対する命令フェッチ要求をもう一度開始するためにループ開始アドレスを使用する。
【００３４】
[34]   ループ終了判断回路系１２４が、残り反復数が０に等しいと判断する場合、ループ終了判断回路系１２４はループを終了する。この時点で、ループ終了判断回路系１２４は、ループ加速命令アドレスを使用して内部命令フェッチアドレスを更新するために命令フェッチ回路系１３０をトリガする。
【００３５】
[35]  この結果、プログラムカウンタ１１４は、外部メモリに対する命令フェッチ要求を開始するためにループ加速命令アドレスを使用し、命令フェッチ回路系１３０は、ループ加速命令を再び取得する。
【００３６】
[36]   復号化回路系１５０は、ループが終了するとき、フラグクリヤ制御信号を生成するため及びフラグクリヤ制御信号を実行回路系１４０へ送信するために、ループ加速命令を再び解析する。
【００３７】
[37]   実行回路系１４０は、復号化回路系１５０からフラグクリヤ制御信号を受信した後、ループ加速命令を実行し、ループを終了するためにフラグをクリアする。
【００３８】
[38]  本開示はループ初期化のためにループ加速命令を使用するということがプロセッサの上記操作処理から理解される。ループが始まるとき、ジャンプが必要とされるかどうかがパイプラインの第１段（例えば命令フェッチ段階）においてハードウェア（例えばループ制御ロジック）を介し検出されて判断され得、所望の命令フェッチ要求が制御プログラムカウンタ１１４により現在の反復内で送信され得る。ループ処理内のループジャンプ及び判断は、制御するための追加命令を必要とせず、これにより零オーバーヘッドによりループ加速を完全に実現する。
【００３９】
[39]  本開示の特定実施形態だけが上に説明されたが、本開示の保護範囲はこれらの実施形態へ制限されない。本開示により開示される技術的範囲内で当業者により容易に考案され得るいかなる変形又は代替形態も本開示の保護範囲内に入るものとする。したがって、本開示の保護範囲は特許請求の範囲の保護範囲に従うものとする。
【図１】
2021519468.tif 000003
【国際調査報告】
2021519468.tif 000004
2021519468.tif 000005