(57)【要約】      （修正有）【課題】プログラムメモリ容量の増加、プログラム変更時のＮＯＰ命令再追加を生じさせることなくプロセッサのサイクル数を調整するプロセッサを提供する。【解決手段】ＮＯＰ挿入数記憶素子３は、ＮＯＰ命令の挿入数を記憶する。ＮＯＰ挿入器２は、ＮＯＰ挿入数記憶素子３に記憶されている挿入数分のＮＯＰ命令を、プロセッサコア４に出力する。ＮＯＰ挿入数記憶素子は、オペコードごとにＮＯＰ命令の挿入数を記憶しており、プロセッサコアが実行しようとする命令のオペコード又はプロセッサコアが実行した命令のオペコードを受信し、受信したオペコードに対応する挿入数をＮＯＰ挿入器に通知し、ＮＯＰ挿入器は、通知された挿入数分のＮＯＰ命令を、プロセッサコアに通知する。【選択図】図１
2015135538.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサコアと、
ＮＯＰ（Ｎｏ  ＯＰｅｒａｔｉｏｎ）命令の挿入数を記憶するＮＯＰ挿入数記憶素子と、
前記ＮＯＰ挿入数記憶素子に記憶されている挿入数分のＮＯＰ命令を、前記プロセッサコアに出力するＮＯＰ挿入器とを有することを特徴とするプロセッサ。
【請求項２】
前記ＮＯＰ挿入数記憶素子は、
オペコードごとに、ＮＯＰ命令の挿入数を記憶しており、
前記プロセッサコアが実行しようとする命令のオペコード又は前記プロセッサコアが実行した命令のオペコードを受信し、受信したオペコードに対応する挿入数を前記ＮＯＰ挿入器に通知し、
前記ＮＯＰ挿入器は、
前記ＮＯＰ挿入数記憶素子から通知された挿入数分のＮＯＰ命令を、前記プロセッサコアに出力することを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記プロセッサコアは、
プログラムカウンタを有し、
前記ＮＯＰ挿入器は、
ＮＯＰ命令を前記プロセッサコアに出力している間は、前記プログラムカウンタの値を更新させないことを特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記プロセッサコアは、
特定のプロセッサを代替して特定の命令を実行するプロセッサコアであり、
前記ＮＯＰ挿入数記憶素子は、
前記特定のプロセッサによる前記特定の命令の実行サイクルと前記プロセッサコアによる前記特定の命令の実行サイクルとの比較によって算出されたＮＯＰ命令の挿入数を記憶していることを特徴とする請求項１に記載のプロセッサ。
【請求項５】
前記ＮＯＰ挿入数記憶素子は、
前記特定の命令と、前記特定のプロセッサによる前記特定の命令の実行時の開始信号及び終了信号と、前記特定のプロセッサの動作クロックとに基づき算出された前記特定のプロセッサによる前記特定の命令の実行サイクルと、前記プロセッサコアによる前記特定の命令の実行サイクルとの比較によって算出されたＮＯＰ命令の挿入数を記憶していることを特徴とする請求項４に記載のプロセッサ。
【請求項６】
前記プロセッサコアの動作クロックは、
前記特定のプロセッサの動作クロックと異なっており、
前記特定のプロセッサによる前記特定の命令の実行サイクルと前記プロセッサコアによる前記特定の命令の実行サイクルとの比較によって算出されたＮＯＰ命令の挿入数と、前記特定のプロセッサの動作クロックと前記プロセッサコアの動作クロックとの差異とに基づいて算出されたＮＯＰ命令の挿入数を記憶していることを特徴とする請求項４に記載のプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサのサイクル数を調整する技術に関する。
より具体的には、現行プロセッサ（所望のプロセッサ）と命令互換を持つプロセッサをＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）上で実現する際にサイクル数を調整する技術に関する。
【背景技術】
【０００２】
現行プロセッサから性能が向上した命令互換のプロセッサに置き換える場合、アーキテクチャの違いなどにより命令の実行サイクルが異なるため、サイクル互換性は維持できない。
サイクル互換性を維持するためには、アーキテクチャ変更などサイクル数調整を行う必要がある。
また、特許文献１及び特許文献２で開示されている様々な技術でサイクル数調整を行う必要がある。
【０００３】
特許文献１では、性能が向上したプロセッサに対して、外部から所定サイクル数ウエイト信号を入力し、サイクル数調整を行う方法が開示されている。
しかし、この方法では、プロセッサにウエイト信号が入力できることが前提となる。
【０００４】
特許文献２では従来技術として、プログラムにＮＯＰ（Ｎｏ  ＯＰｅｒａｔｉｏｎ）命令を所定数追加することで、サイクル数調整を行う方法が開示されている。
しかし、この方法では、ＮＯＰ命令の追加をソフトウェアで実現しているため、ＮＯＰ命令追加によるプログラムメモリ容量の増加、プログラムを変更する度に実行時間を再計算し、ＮＯＰ命令を再追加しなければならないという課題がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭６２−１７４８３２号公報
【特許文献２】特開平０５−２２４９１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、このような課題を解決することを主な目的としており、プログラムメモリ容量の増加、プログラム変更時のＮＯＰ命令再追加が不要なプロセッサのサイクル数調整方式を実現することを主な目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るプロセッサは、
プロセッサコアと、
ＮＯＰ（Ｎｏ  ＯＰｅｒａｔｉｏｎ）命令の挿入数を記憶するＮＯＰ挿入数記憶素子と、
前記ＮＯＰ挿入数記憶素子に記憶されている挿入数分のＮＯＰ命令を、前記プロセッサコアに出力するＮＯＰ挿入器とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ハードウェアであるＮＯＰ挿入数記憶素子及びＮＯＰ挿入器によりＮＯＰ命令を追加するため、プログラムメモリ容量の増加、プログラム変更時のＮＯＰ命令再追加を生じさせることなくプロセッサのサイクル数を調整することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るプロセッサの構成例を示す図。
【図２】実施の形態２に係るＮＯＰ挿入数の算出手順を示す図。
【図３】実施の形態２に係るＮＯＰ挿入数の算出手順を示すフローチャート図。
【図４】実施の形態３に係る現行プロセッサの命令実行サイクルの計測手順を示す図。
【図５】実施の形態３に係る現行プロセッサの命令実行サイクルの計測手順を示すフローチャート図。
【図６】実施の形態４に係るＮＯＰ挿入数の算出手順を示す図。
【発明を実施するための形態】
【００１０】
実施の形態１．
本実施の形態では、プロセッサが命令を実行する際、必要サイクル数だけＮＯＰ命令をハードウェアで自動挿入し、サイクル数を調整する構成を説明する。
本実施の形態に係る構成により、プログラムメモリ容量の増加、プログラム変更時のＮＯＰ命令再追加が不要なプロセッサのサイクル数の調整が可能である。
【００１１】
図１は、実施の形態１に係るプロセッサのサイクル数調整方式及び、装置を示す概略図である。
本実施の形態に係るプロセッサ１２は、サイクル数調整可能なプロセッサであり、ＮＯＰ挿入器２と、ＮＯＰ挿入数記憶素子３と、プロセッサコア４で構成される。
プロセッサコア４は、プログラムカウンタ５、命令メモリ６、デコーダ７、演算やメモリライト／リード等の命令実行を行う命令実行部８の４つで構成されている。
本実施の形態に係るプロセッサ１２では、プロセッサコア４に対して、ＮＯＰ挿入器２と、ＮＯＰ挿入数記憶素子３を付加することで、命令実行サイクル数を調整する。
【００１２】
ＮＯＰ挿入数記憶素子３に、各命令に挿入するＮＯＰ挿入数１を設定もしくは、予め記憶させておく。
その上で、プロセッサ１２を実行させる。
プロセッサ生成後の命令実行サイクル数の調整は、下記のフローで行われる。
【００１３】
（ア）ＮＯＰ挿入数記憶素子３が、デコーダのオペコード出力１０を受信して、ＮＯＰ挿入器２に対して、ＮＯＰ挿入数１１を出力する。
デコーダのオペコード出力１０は、プロセッサコア４が実行しようとする命令のオペコード又はプロセッサコア４が実行した命令のオペコードである。
ＮＯＰ挿入数記憶素子３は、プロセッサコア４が実行する複数のオペコードに対して、オペコードごとに、ＮＯＰ命令の挿入数を記憶している。
そして、デコーダのオペコード出力１０に対応するＮＯＰ命令の挿入数を、ＮＯＰ挿入数１１として出力する。
（イ）ＮＯＰ挿入器２が、ＮＯＰ挿入数１１のサイクル数分、プロセッサコア４に対して実行する命令の直前（あるいは直後）に、ＮＯＰを挿入する。
つまり、ＮＯＰ挿入器２は、ＮＯＰ挿入数１１分のＮＯＰ命令を、プロセッサコア４に出力する。
（ウ）ＮＯＰ挿入時は、プログラムカウンタ５の値を保持して更新させない。
（エ）ＮＯＰ挿入器２が所定のサイクル数分だけＮＯＰ命令を挿入した後、プログラムカウンタ５を次の値に更新する。
（オ）デコーダ７が発行した次の命令９を、ＮＯＰ挿入器２を介して命令実行部８に対して発行した後、（ア）に戻る。
これにより、現行プロセッサで使用していたソフトウェアに修正を加えること無く、現行プロセッサと同じ実行サイクルで命令を実行できるプロセッサを実現する。
つまり、ハードウェアであるＮＯＰ挿入数記憶素子及びＮＯＰ挿入器によりＮＯＰ命令を追加するため、プログラムメモリ容量の増加、プログラム変更時のＮＯＰ命令再追加を伴うことなくプロセッサのサイクル数を調整することができる。
【００１４】
実施の形態２．
以下、実施の形態２を図２に基づいて説明する。
図２は、実施の形態２に係るプロセッサのＮＯＰ挿入数を算出する手順を示す。
【００１５】
プロセッサの生成前に、プロセッサコアの各命令実行サイクル１６と、現行プロセッサの各命令実行サイクル１７を入力として、ＮＯＰ挿入数演算装置１５に与え、ＮＯＰ挿入数演算装置１５が、サイクル数の調整に必要なＮＯＰ挿入数１４を算出する。
その後、ＮＯＰ挿入数記憶素子３に、算出結果を書き込む。
【００１６】
ＮＯＰ挿入数演算装置１５がＮＯＰ挿入数１４を求めるフローを、図３に示す。
まず、ＮＯＰ挿入数演算装置１５は、ステップＳ２で、配列Ａに現行プロセッサの各命令実行サイクル数を格納する。
次に、ＮＯＰ挿入数演算装置１５は、ステップＳ３で、配列Ｂにプロセッサコアの各命令の実行サイクルを格納する。
その後、ステップＳ４で配列番号を０に初期化し、ステップＳ５で配列Ａ、配列Ｂに格納した実行サイクル数の差分を求め、結果を配列Ｃに格納後、ステップＳ６で配列番号を＋１する。
前記ステップＳ５からステップＳ７までのフローを繰り返し、各命令の実行サイクル数を求める。
その後、ＮＯＰ挿入数演算装置１５は、ステップＳ８で演算結果を出力し、ＮＯＰ挿入数１４のＮＯＰ挿入数記憶素子３への書き込みを行う。
これにより、ＮＯＰ挿入数演算装置１５を利用し、ＮＯＰ挿入数１４を算出することで、自動でＮＯＰ挿入数１４を計算し、プロセッサのサイクル数を調整することが可能となる。
【００１７】
実施の形態３．
以下、実施の形態３を図４に基づいて説明する。
図４は、実施の形態３に係る現行プロセッサの命令実行サイクルの計測手順を示す図である。
【００１８】
現行プロセッサに書き込んだ命令４２、現行プロセッサ４３の動作時の命令の開始信号４５、命令の終了信号４６、現行プロセッサの動作クロック４４の４つを、命令実行サイクル数収集装置４１に入力する。
命令実行サイクル数収集装置４１は、前記４つの入力から、現行プロセッサの各命令実行サイクル４０を出力する。
【００１９】
図５に、命令実行サイクル数収集装置４１による、現行プロセッサの命令実行サイクルを計測するフローを示す。
まず、命令実行サイクル数収集装置４１は、ステップＳ１１で、命令の開始信号の有意を判断し、有意となった後、ステップＳ１２で命令の実行サイクル数の計測を開始するためにカウント値を初期化して、ステップＳ１３でカウントを開始する。
カウントは１クロックおきに行い、ステップＳ１５で命令の終了信号が有意となるまで、ステップＳ１３からＳ１５を繰り返す。
命令の終了信号が有意となった後、ステップＳ１６でカウント値を計測中命令の実行サイクルとする。
ステップＳ１１からＳ１７を繰り返し全命令のサイクル数の計測を行う。
これにより、現行プロセッサの実行命令サイクル数を自動計測することで、プロセッサのサイクル数が調整可能となる。
【００２０】
実施の形態４．
以下、実施の形態４を図６に基づいて説明する。
図６は、実施の形態４に係るＮＯＰ挿入数の算出手順を示す図である。
本実施の形態では、プロセッサ１２の動作周波数は、現行プロセッサの動作周波数とは異なるものとする。
【００２１】
サイクル数の調整が可能なプロセッサ１２に対して、サイクル数調整可能なプロセッサの動作クロック５４、現行プロセッサの動作クロック５５、追加ＮＯＰ数計算機５６、演算器を付加し、現行プロセッサとは異なる動作周波数のプロセッサ１２を動作させる際にも、同一時間で命令を実行できるように、ＮＯＰを挿入し命令実行サイクル数を調整する。
【００２２】
命令実行サイクル数の調整に必要なＮＯＰ数の算出は、下記の手順で行われる。
（ア）現行プロセッサの動作クロック５５と、サイクル数調整可能なプロセッサの動作クロック５４を、追加ＮＯＰ数計算機５６に与え、動作周波数が異なっていた場合に、追加ＮＯＰ数計算機５６は、追加／削減する必要のある調整用ＮＯＰ数５７を出力する。
（イ）調整用ＮＯＰ数５７と、現行プロセッサの動作クロック５５でサイクル数調整可能なプロセッサ１２を動作させた際のＮＯＰ挿入数５８を、演算器５９に与える。
（ウ）演算器５９から出力された調整されたＮＯＰ挿入数６０を、ＮＯＰ挿入数記憶素子５１に設定もしくは予め記憶させておき、その上でプロセッサ１２を実行させる。
これにより、現行プロセッサの動作クロックと、異なる動作周波数のクロックでサイクル数調整可能なプロセッサ１２を動作させる際に、現行プロセッサと同一の時間で命令を実行させることができる。
【符号の説明】
【００２３】
１  ＮＯＰ挿入数、２  ＮＯＰ挿入器、３  ＮＯＰ挿入数記憶素子、４  プロセッサコア、５  プログラムカウンタ、６  命令メモリ、７  デコーダ、８  命令実行部、９  次の命令、１０  デコーダのオペコード出力、１１  ＮＯＰ挿入数、１２  プロセッサ、１４  ＮＯＰ挿入数、１５  ＮＯＰ挿入数演算装置、１６  プロセッサコアの各命令実行サイクル、１７  現行プロセッサの各命令実行サイクル、４０  現行プロセッサの各命令実行サイクル、４１  命令実行サイクル数収集装置、４２  現行プロセッサに書き込んだ命令、４３  現行プロセッサ、４４  現行プロセッサの動作クロック、４５  命令の開始信号、４６  命令の終了信号、５４  サイクル数調整可能なプロセッサの動作クロック、５５  現行プロセッサの動作クロック、５６  追加ＮＯＰ数計算機、５７  調整用ＮＯＰ数、５８  ＮＯＰ挿入数、５９  演算器、６０  調整されたＮＯＰ挿入数。
【図１】
2015135538.tif 000003
【図２】
2015135538.tif 000004
【図３】
2015135538.tif 000005
【図４】
2015135538.tif 000006
【図５】
2015135538.tif 000007
【図６】
2015135538.tif 000008