(57)【要約】【課題】低速なメモリアクセスがボトルネックとならない高速演算実行を可能とする。【解決手段】メインメモリ２に記憶された命令およびオペランドに基づいて演算処理を行うプロセッサ１に、レジスタ５と、内部メモリ６と、第１の動作クロックで動作して命令およびオペランドをメインメモリ２から内部メモリ６に転送して格納するフェッチユニット４と、第１の動作クロックと異なる第２の動作クロックで動作して内部メモリ６に格納された命令およびオペランドに基づいてレジスタ５を用いて演算を行う演算実行ユニット３と、を備える。【選択図】図１
2008181179.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリに記憶された命令およびオペランドに基づいて演算処理を行うプロセッサにおいて、
レジスタと、
内部メモリと、
第１の動作クロックで動作して命令およびオペランドを前記メインメモリから前記内部メモリに転送して格納するフェッチユニットと、
前記第１の動作クロックと異なる第２の動作クロックで動作して前記内部メモリに格納された命令およびオペランドに基づいて前記レジスタを用いて演算を行う演算実行ユニットと、
を有することを特徴とするプロセッサ。
【請求項２】
前記フェッチユニットは、前記内部メモリに転送して格納した命令が分岐命令のときには、分岐無しの場合のアドレスおよびその分岐命令のオペランドで示された分岐先のアドレスのそれぞれから命令およびオペランドを前記内部メモリに転送して格納することを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記フェッチユニットは、前記分岐命令のオペランドで示される分岐先の前記メインメモリのアドレスを、前記内部メモリのアドレスに変換することを特徴とする請求項２に記載のプロセッサ。
【請求項４】
前記フェッチユニットは、前記分岐命令のオペランドが前記レジスタをアドレスとする場合には、前記レジスタにアクセスして分岐先の前記メインメモリのアドレスを取得することを特徴とする請求項２または請求項３に記載のプロセッサ。
【請求項５】
前記フェッチユニットは、前記メインメモリからの命令フェッチおよび前記内部メモリへの命令転送、命令デコード、オペランドのアドレス計算、前記メインメモリからの前記オペランドフェッチおよび前記内部メモリへのオペランド転送、ならびに、前記内部メモリに格納された演算結果の前記メインメモリへの格納をパイプラインで処理することを特徴とする請求項１ないし請求項４のいずれか１項に記載のプロセッサ。
【請求項６】
前記フェッチユニットは、前記メインメモリのオペランドアドレスを前記内部メモリのオペランドアドレスへ変換することを特徴とする請求項１ないし請求項５のいずれか１項に記載のプロセッサ。
【請求項７】
前記フェッチユニットは、前記レジスタを前記メインメモリのオペランドアドレスとする場合には、前記レジスタにアクセスして前記メインメモリのオペランドアドレスを取得することを特徴とする請求項１ないし請求項６のいずれか１項に記載のプロセッサ。
【請求項８】
メインメモリと、
レジスタ、内部メモリ、第１の動作クロックで動作して命令およびオペランドを前記メインメモリから前記内部メモリに転送して格納するフェッチユニット、および、前記第１の動作クロックと異なる第２の動作クロックで動作して前記内部メモリに格納された命令およびオペランドに基づいて前記レジスタを用いて演算を行う演算実行ユニットを備えたプロセッサと、
を有することを特徴とする演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサおよびそれを用いた演算装置に関する。
【背景技術】
【０００２】
電子機器にて演算処理を行う装置は、プロセッサとメモリおよびその他周辺回路にて構成され、常に更なる高速化を求められている。ＣＩＳＣやＲＩＳＣなどのアーキテクチャによるマイクロプロセッサでは、プロセッサの高速化のために、命令サイクルをステージに分割したパイプライン処理や、メモリを階層化したキャッシュメモリによる高速アクセスが用いられる。また、他のアーキテクチャでは、動的再構成を行うことで高速演算処理を可能とするリコンフィギュアラブルプロセッサがある。
【０００３】
パイプライン処理では、プロセッサの１命令の実行過程を複数のステージに分割して並列実行する。ステージ数はプロセッサによって異なり、一般的にはステージ数が大きくなるほど高速化するが、プロセッサのハード構造が複雑化し、回路規模の増大を招く。複数のステージへの分割としては、たとえば命令フェッチ（ＩＦ）、デコード（ＩＤ）、オペランドのアドレス計算（ＯＡ）、オペランドフェッチ（ＯＦ）、命令の実行（ＥＸ）および演算結果の格納（ＲＳ）の６つのステージに分割した例がある。
【０００４】
メモリの階層化では、たとえば、プロセッサの演算実行ユニットに最も近い階層から、レジスタ、キャッシュメモリ、メインメモリ、補助記憶装置と構成する。この場合、レジスタが最も高速にアクセス可能であるが、記憶容量が最も小さい。補助記憶装置は、最も記憶容量が大きいが、アクセス速度が最も低速となる。
【０００５】
プロセッサ内部での最高動作周波数で動作するレジスタに対してプロセッサ外部のメインメモリのアクセスは低速となるため、命令サイクルのフェッチ時にメインメモリにアクセスした命令とオペランドをプロセッサ内部のキャッシュメモリに蓄積する方法がある（たとえば特許文献１参照）。この場合、キャッシュメモリにヒットした場合は高速アクセスすることができるが、キャッシュメモリをミスヒットした場合はキャッシュメモリよりも低速のメインメモリへアクセスすることになる。
【０００６】
リコンフィギュアラブルプロセッサは、演算内容をプロセッサ内部のハード回路に構成し、メインメモリに蓄積した演算内容をプロセッサに転送してハード回路を切換えることで様々な演算に対応する。
【特許文献１】特開平６−２４２９５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
パイプライン処理では、パイプラインのステージの中で、命令フェッチ（ＩＦ）とオペランドフェッチ（ＯＦ）でメモリアクセスが必要となる。キャッシュメモリをミスヒットした命令サイクルでは、メインメモリへアクセスした命令およびオペランドをキャッシュメモリへ蓄積する。この際、キャッシュメモリへの蓄積量が最大容量を超えると、所定のアルゴリズムに従ってメモリが上書きされる。このため、全てがキャッシュメモリにヒットした場合はパイプラインでの並列実行が理想的に行われるが、キャッシュメモリのヒット率に従ってミスヒットし、メインメモリへのアクセスが生じて、演算実行の高速化のボトルネックとなる。
【０００８】
リコンフィギュアラブルプロセッサでは、ハード回路の容量に制限があり、ハード回路に配置可能な演算処理は高速実行可能であるが、ハード回路の容量を超える演算内容については、メインメモリへのアクセスおよびハード回路の切換えを必要として高速化できない。ハード回路の大容量化はプロセッサのコストアップへ直結し、最大の容量は物理的にも制限される課題があった。
【０００９】
そこで、本発明は、低速なメモリアクセスがボトルネックとならない高速演算実行を可能とすることを目的とする。
【課題を解決するための手段】
【００１０】
上述の課題を解決するため、本発明は、メインメモリに記憶された命令およびオペランドに基づいて演算処理を行うプロセッサにおいて、レジスタと、内部メモリと、第１の動作クロックで動作して命令およびオペランドを前記メインメモリから前記内部メモリに転送して格納するフェッチユニットと、前記第１の動作クロックと異なる第２の動作クロックで動作して前記内部メモリに格納された命令およびオペランドに基づいて前記レジスタを用いて演算を行う演算実行ユニットと、を有することを特徴とする。
【００１１】
また、本発明は、演算装置において、メインメモリと、レジスタ、内部メモリ、第１の動作クロックで動作して命令およびオペランドを前記メインメモリから前記内部メモリに転送して格納するフェッチユニット、および、前記第１の動作クロックと異なる第２の動作クロックで動作して前記内部メモリに格納された命令およびオペランドに基づいて前記レジスタを用いて演算を行う演算実行ユニットを備えたプロセッサと、を有することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、低速なメモリアクセスがボトルネックとならない高速演算実行が可能となる。
【発明を実施するための最良の形態】
【００１３】
本発明に係る演算装置の実施の形態を、図面を参照して説明する。なお、同一または類似の構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施の形態は単なる例示であり、本発明はこれらに限定されない。
【００１４】
図１は、本発明に係る演算装置の一実施の形態におけるブロック図である。
【００１５】
本実施の形態の演算装置１０は、プロセッサ１とメインメモリ２を有している。プロセッサ１は、演算実行ユニット３、フェッチユニット４、レジスタ５および内部メモリ６を有している。演算実行ユニット３、フェッチユニット４、レジスタ５および内部メモリ６は、互いに接続されている。また、プロセッサ１とメインメモリ２は、フェッチユニット４を介して接続されている。メインメモリ２および内部メモリ６は、それぞれ命令（Ｉｎｓｔｒｕｃｔｉｏｎ）用とオペランド（Ｏｐｅｒａｎｄ）用の領域を備えており、これらの領域を命令領域２１，６１およびオペランド領域２２，６２と呼ぶ。
【００１６】
演算実行ユニット３は、内部メモリ６とレジスタ５を使用して演算する。また、フェッチユニット４は、メインメモリ２と内部メモリ６との間のデータ転送を行う。
【００１７】
演算実行ユニット３とフェッチユニット４は、それぞれパイプラインを構成している。
【００１８】
図２は、本実施の形態における演算実行ユニットおよびフェッチユニットの命令サイクルを示す図である。図２の横軸は、時間の経過を示している。
【００１９】
演算実行ユニット３は、６ステージ構成の命令サイクル７で動作する。これら６つのステージとは、命令フェッチ（ＩＦ）、命令デコード（ＩＤ）、オペランドのアドレス計算（ＯＡ）、オペランドフェッチ（ＯＦ）、命令の実行（ＥＸ）、および、演算結果の格納（ＲＳ）である。図２の縦軸で同じ位置にある各ステージは、同一の命令サイクルであることを意味している。
【００２０】
また、フェッチユニット４は、５ステージ構成の命令サイクル８で動作する。これら５つのステージとは、メインメモリ２からの命令フェッチおよび内部メモリへの命令転送（ＩＦ２）、フェッチユニット４内での命令デコード（ＩＤ２）、フェッチユニット４内でのオペランドのアドレス計算（ＯＡ２）、メインメモリ２からのオペランドフェッチおよび内部メモリへの転送（ＯＦ２）、および、内部メモリ６に格納された演算結果のメインメモリ２への格納（ＲＳ２）である。
【００２１】
演算実行ユニット３の命令サイクルの６つのステージは、第１の動作クロックで行われる。また、フェッチユニット４の命令サイクルの５つのステージは、第２の動作クロックで行われる。内部メモリ６に比べて低速なメインメモリ２にアクセスするフェッチユニット４の第２の動作クロックは、第１の動作クロックに比べて小さい。このように、演算実行ユニット３とフェッチユニット４は、非同期で動作する。
【００２２】
図３は、本実施の形態におけるメインメモリ２の命令領域２１のマップを示す図である。
【００２３】
命令をフェッチするアドレスは、所定のアドレスから分岐命令までは連続した領域となり、メインメモリ２に高速にバーストアクセスすることで命令フェッチを行うことができる。分岐命令にて分岐無しの場合は連続領域として扱えるが、分岐命令にて分岐有りの場合は分岐命令のオペランドで示されたアドレスからのフェッチが必要となる。
【００２４】
そこで、フェッチユニット４の命令サイクルのＯＦ２において、分岐命令の場合はオペランドで示された分岐先に従って、分岐無しの場合と分岐有りの場合の両者の命令をフェッチユニット４が内部メモリ６に蓄積する。これにより、分岐命令実行に対しても演算実行ユニット３のパイプライン処理を遅滞無く継続することができる。
【００２５】
分岐命令のオペランドがレジスタ５をアドレスとする場合には、フェッチユニット４がレジスタ５にアクセスすることで、メインメモリ２での分岐先のアドレスを得て、そのアドレスにアクセスすることができる。
【００２６】
図４は、本実施の形態におけるメインメモリ２のオペランド領域２２のマップを示す図である。
【００２７】
また、メインメモリ２のオペランドをフェッチするアドレスは命令に含まれており、連続した領域へのテーブル処理命令を除けば、命令毎に異なる値となるランダムアクセスを必要とする。フェッチユニット４は、メインメモリ２からの命令フェッチおよび内部メモリ６への命令転送（ＩＦ２）、命令デコード（ＩＤ２）、オペランドのアドレス計算（ＯＡ２）を行う。このため、フェッチユニット４は、ランダムな値をとるオペランドのアドレスを把握し、内部メモリ６へオペランドを転送することができる。
【００２８】
さらに、フェッチユニット４は、メインメモリ２のオペランドアドレスを内部メモリ６のオペランドアドレスへ変換しておく。これにより、演算実行ユニット３は、内部メモリ６に転送されて格納されたオペランドを用いて命令を実行できる。また、レジスタ５をメインメモリ２のオペランドアドレスとする場合には、フェッチユニット４がレジスタ５にアクセスすることで、メインメモリ２でのオペランドアドレスを得て、メインメモリ２のそのアドレスにアクセスすることができる。
【００２９】
このようにして、演算実行ユニット３は、フェッチユニット４が予め内部メモリ６に転送した命令およびオペランドを使用して演算を実行する。このため、演算実行ユニット３の命令サイクルは、外部の低速なメインメモリ２へのアクセスサイクルに縛られることなくプロセッサ１内部での最高動作周波数でパイプライン処理を継続することができる。すなわち、低速なメモリアクセスがボトルネックとならない高速演算実行が可能となる。
【図面の簡単な説明】
【００３０】
【図１】本発明に係る演算装置の一実施の形態におけるブロック図である。
【図２】本発明に係る演算装置の一実施の形態における演算実行ユニットおよびフェッチユニットの命令サイクルを示す図である。
【図３】本発明に係る演算装置の一実施の形態におけるメインメモリの命令領域のマップを示す図である。
【図４】本発明に係る演算装置の一実施の形態におけるメインメモリのオペランド領域のマップを示す図である。
【符号の説明】
【００３１】
１…プロセッサ、２…メインメモリ、３…演算実行ユニット、４…フェッチユニット、５…レジスタ、６…内部メモリ、７，８…命令サイクル、１０…演算装置、２１…命令領域、２２…オペランド領域、６１…命令領域、６２…オペランド領域
【図１】
2008181179.tif 000003
【図２】
2008181179.tif 000004
【図３】
2008181179.tif 000005
【図４】
2008181179.tif 000006