(57)【要約】【課題】計算機システムにおいて、ハードウェアとソフトウェアの処理分担を動的に変えて動作する方法を提供することを目的とする。【解決手段】所定の処理を実行するハードウェア論理デバイス１４と、上記ハードウェア論理デバイス１４が実行する所定の処理と同一の処理を行うソフトウェアモジュールを記憶するＲＯＭ１２と、上記ハードウェア論理デバイス１４による実行と上記ＲＯＭ１２により記憶されたソフトウェアモジュールによる実行とのいずれかを選択し、上記ハードウェア論理デバイス１４による実行を選択した場合に、上記ハードウェア論理デバイス１４を実行させ、上記ソフトウェアモジュールによる実行を選択した場合に、上記ソフトウェアモジュールを実行するＣＰＵ１１とを備えたことを特徴とする。【選択図】        図１
2004362446.tif 000002
【特許請求の範囲】
【請求項１】
所定の処理を実行するハードウェアモジュールと、
上記ハードウェアモジュールが実行する所定の処理と同一の処理を行うソフトウェアモジュールを記憶する記憶部と、
上記ハードウェアモジュールによる実行と上記記憶部により記憶されたソフトウェアモジュールによる実行とのいずれかを選択し、上記ハードウェアモジュールによる実行を選択した場合に、上記ハードウェアモジュールを実行させ、上記ソフトウェアモジュールによる実行を選択した場合に、上記ソフトウェアモジュールを実行する実行部と
を備えたことを特徴とする計算機。
【請求項２】
上記計算機は、複数のハードウェアモジュールを備え、
上記実行部は、上記複数のハードウェアモジュールによる実行を選択し、選択された複数のハードウェアモジュールによる実行を並列におこなわせることを特徴とする請求項１記載の計算機。
【請求項３】
所定のソフトウェアにより論理設定され、所定の処理を実行するハードウェアモジュールと、
上記ハードウェアモジュールが実行する所定の処理と同一の処理を行うソフトウェアモジュールに変換可能で、かつ、上記所定のソフトウェアにも変換可能な中間モジュールを記憶する記憶部と、
上記ハードウェアモジュールによる実行と上記ソフトウェアモジュールによる実行とのいずれかを選択し、上記ハードウェアモジュールによる実行を選択した場合に、上記記憶部により記憶された中間モジュールを上記所定のソフトウェアに変換し、変換された所定のソフトウェアに基づいて上記ハードウェアモジュールを実行させ、上記ソフトウェアモジュールによる実行を選択した場合に、上記記憶部により記憶された中間モジュールを上記ソフトウェアモジュールに変換し、変換されたソフトウェアモジュールを実行する実行部と
を備えたことを特徴とする計算機。
【請求項４】
所定のソフトウェアにより論理設定され、所定の処理を実行するハードウェアモジュールと、
上記ハードウェアモジュールが実行する所定の処理と同一の処理を行うソフトウェアモジュールに変換可能で、かつ、上記所定のソフトウェアにも変換可能な中間モジュールを記憶する記憶部と、
上記ハードウェアモジュールによる実行と上記ソフトウェアモジュールによる実行とのいずれかを選択し、上記ハードウェアモジュールによる実行を選択した場合に、上記ハードウェアモジュールを実行させ、上記ソフトウェアモジュールによる実行を選択した場合に、上記ソフトウェアモジュールを実行する実行部と、
上記実行部により上記ハードウェアモジュールによる実行が選択された場合に上記記憶部により記憶された中間モジュールを上記実行部により実行させる上記ハードウェアモジュールを論理設定する上記所定のソフトウェアに変換し、上記実行部により上記ソフトウェアモジュールによる実行が選択された場合に上記記憶部により記憶された中間モジュールを上記実行部により実行される上記ソフトウェアモジュールに変換する変換部と
を備えたことを特徴とする計算機。
【請求項５】
上記ハードウェアモジュールは、実行によりデータを出力し、
上記実行部は、上記ハードウェアモジュールが実行された結果、出力されるデータを命令コードとして実行すること特徴とした請求項１，３又は４に記載の計算機。
【請求項６】
所定の処理を実行するハードウェアモジュールが実行する所定の処理と同一の処理を行うソフトウェアモジュールを記憶装置に記憶する記憶工程と、
上記ハードウェアモジュールによる実行と上記記憶工程により記憶装置に記憶されたソフトウェアモジュールによる実行とを選択する選択工程と、
上記選択工程により上記ハードウェアモジュールによる実行が選択された場合に、上記ハードウェアモジュールを実行させ、上記ソフトウェアモジュールによる実行が選択された場合に、上記ソフトウェアモジュールをＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に実行させる実行工程と
を備えたことを特徴とする計算方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、電子計算機の回路方式および処理方式に関するものである。
【０００２】
【従来の技術】
近年デジタル機器システムの設計効率を高めるためＣ言語等のシステム設計言語を用いてハードウェア、ソフトウェアの区別無く設計を行い、専用のツールによって最終的にプロセッサが実行するソフトウェア・コードとＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）等の再構成可能なハードウェアの内部回路を構成するハードウェア・コードを生成してシステムを構築する設計手法が用いられている。
【０００３】
この方法を用いた従来技術として、ハードウェア・ソフトウェアの統合設計手法を用い、生成したソフトコードとハードコードをそれぞれプロセッサとＦＰＧＡ等が読み出してアプリケーションを実行する。デジタル機器は内部にＣＰＵ、共有メモリ、プログラミング可能なハードウェアとしてＦＰＧＡを持ち、これらは同一のバスで接続されている。（例えば、特許文献１参照）
【０００４】
【特許文献１】
特開２０００−２８４９４５号公報
【０００５】
【発明が解決しようとする課題】
ここで、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が使用するソフトウェア・コードと、プログラミング可能なハードウェア（ＦＰＧＡ）が使用するハードウェア・コードが、複合コードとして、１つの共有メモリの中に保存され、デジタル機器は電源が投入されると共有メモリに保存されるハードウェア・コードを読出してＦＰＧＡの論理回路を構成し、その後、ＣＰＵが共有メモリにあるソフトウェア・コードを読み出してアプリケーションを実行するような従来の技術では、ソフトウェアとハードウェアの区別なく機能の設計を行い、ハードウェアとソフトウェアが担当する処理の割当を柔軟に変更することは出来るが、実際にシステムが動作する時にはソフトウェアとハードウェアとのいずれか一方に予め決められたソフトウェア・コードとハードウェア・コードがメモリ上に存在するだけであり設計が完成したシステムではその構成は固定的なものになるといった問題があった。
【０００６】
この発明は、計算機システムにおいて、ハードウェアとソフトウェアの処理分担を動的に変えて動作する方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
この発明に係る計算機は、所定の処理を実行するハードウェアモジュールと、上記ハードウェアモジュールが実行する所定の処理と同一の処理を行うソフトウェアモジュールを記憶する記憶部と、
上記ハードウェアモジュールによる実行と上記記憶部により記憶されたソフトウェアモジュールによる実行とのいずれかを選択し、上記ハードウェアモジュールによる実行を選択した場合に、上記ハードウェアモジュールを実行させ、上記ソフトウェアモジュールによる実行を選択した場合に、上記ソフトウェアモジュールを実行する実行部と
を備えたことを特徴とする。
【０００８】
【発明の実施の形態】
実施の形態１．
実施の形態１に係る最適回路構成型計算機は、ソフトウェアが実行する実行モジュールとそれと同じ処理を行うハードウェアのモジュールが存在し、システムの動作状況に応じてどちらかの処理モジュールを選択して実行するものである。
【０００９】
図１は、実施の形態１における最適回路構成型計算機の構成を示す図である。
図１において、最適回路構成型計算機としての計算機システム１０（計算機の一例である）は、ソフトウェアの処理を実行するＣＰＵ１１（実行部の一例である）と、ソフトウェアの実行コード（ソフトウェアモジュールの一例である）を保存する不揮発性メモリ（ＲＯＭ：Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２（記憶部、記憶装置の一例である）と、処理中のデータやソフトウェアの実行コードを保持する揮発性メモリ（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３（記憶部、記憶装置の一例である）と、ハードウェア論理デバイス１４（ハードウェアモジュールの一例である）と、入出力装置１５と、これらの構成を互いに接続するシステムバス１６とを備えるものである。
【００１０】
図２は、計算機上で動作するＯＳやアプリケーションの構造を示す図である。図２において、計算機システム１０上で動作するＯＳ（オペレーティングシステム）やアプリケーションを２０、サブルーチン等の処理単位を２１で表している。計算機システム１０上で動作するＯＳやアプリケーション２０はサブルーチンや関数等、複数の処理単位２１を使用して一連の処理を完了する。処理単位２１はアプリケーション２０において処理を実行するための手段であり、入力に対する出力が得られれば実際に動作する主体はプロセッサが命令を実行することにより処理されるソフトウェアであっても、論理回路等により構成されるハードウェアであっても構成することが可能である。
この処理単位２１をソフトウェアで構成したものをソフトウェアモジュール、或いはソフトウェア実行モジュール、或いはソフトウェア処理モジュールと呼ぶ。また、この処理単位２１をハードウェアで構成したものをハードウェアモジュール、或いはハードウェア実行モジュール、或いはハードウェア処理モジュールと呼ぶ。ハードウェアモジュール、或いはハードウェア実行モジュール、或いはハードウェア処理モジュールは、例えば、ＦＰＧＡ等のプログラム可能なハードウェア論理デバイス１４で実現する。また、図１におけるハードウェア論理デバイス１４は、複数のハードウェア論理デバイスから構成されていても構わない。
【００１１】
ハードウェアモジュールは、所定の処理を実行する。
ＲＯＭ１２或いはＲＡＭ１３は、上記ハードウェアモジュールが実行する所定の処理と同一の処理を行うソフトウェアモジュールを記憶する。
ＣＰＵ１１は、上記ハードウェアモジュールによる実行と上記ＲＯＭ１２或いはＲＡＭ１３により記憶されたソフトウェアモジュールによる実行とのいずれかを選択し、上記ハードウェアモジュールによる実行を選択した場合に、上記ハードウェアモジュールを実行させ、上記ソフトウェアモジュールによる実行を選択した場合に、上記ソフトウェアモジュールを実行する。また、ＣＰＵ１１は、ハードウェアモジュールが出力するデータを命令コードとして実行する。
【００１２】
以上のように、計算機システム１０は、一つの処理単位を実行するハードウェアモジュールとそれと同一の処理を行うソフトウェアモジュールが同時に存在し、システムの動作状況に応じてどちらかの処理モジュールを選択して実行する。言い換えれば、計算機システム１０は、アプリケーション２０の実行手段である一つの処理単位２１として、ソフトウェアによる方法とハードウェアによる方法の両方を備え、アプリケーション２０の実行中にある処理単位２１を呼出す際、システムの負荷状況や動作状況により処理単位２１を早く処理したい場合、ハードウェアで構成されている処理単位２１を呼出し処理を行う。また、処理に緊急性が無いまた、出来るだけ消費電力を抑えて動作したい等、の要求がある場合にはソフトウェアで構成されている処理単位２１を呼出して処理を行う。複数ある処理単位２１はアプリケーションから呼出す毎にハードウェアで実行するかソフトウェアで実行するか判断して処理を行う。
【００１３】
図３は、不揮発性メモリのメモリアドレス空間を示す図である。
図３においては、アプリケーション２０のメインルーチン３２と、ソフトウェアにより実現された処理単位２１がソフトウェア実行モジュール３１とが不揮発性メモリ（ＲＯＭ１２）上のメモリアドレス空間３０に配置されている様子を表している。
【００１４】
処理単位２１をソフトウェアで実行する場合、アプリケーション２０のメインルーチン３２からソフトウェア実行モジュール３１の処理開始アドレスへ分岐することで処理を開始する。この時、実行に必要な初期データはＣＰＵ１１の汎用レジスタやＲＡＭ１３に配置して使用する。処理の実行結果を出力する場合にはＣＰＵ１１の汎用レジスタやＲＡＭ１３へ値を書込み、メインルーチン３２へ戻る。
【００１５】
図４は、ハードウェアで実現された処理単位がハードウェア論理デバイス上に配置されている状態を示す図である。
図４において、図１におけるハードウェア論理デバイス１４の内部４０には、処理単位２１をハードウェアで構成したハードウェア実行モジュール４１、ハードウェア論理デバイス１４内部に構成した内部レジスタ４２、ハードウェア論理デバイス１４内部に構成した内部メモリ４３、ハードウェア論理デバイス１４の内部４０の内部構成を互いに接続する内部バス４４を有している。
【００１６】
処理単位２１をハードウェアで実行する場合には、処理を開始する前にハードウェア実行モジュール４１の内部レジスタ（図示せず）に初期データを設定する。ハードウェアによる処理モジュールを実行させるにはそのモジュールが持つ内部レジスタをソフトウェア（所定のソフトウェアの一例である）が操作して処理を開始する。処理結果をソフトウェアに伝えるにはハードウェア実行モジュール４１の内部レジスタ或いは内部メモリへ値を出力し、記憶させる。ハードウェア実行モジュール４１の内部レジスタ或いは内部メモリからは、記憶された値がバス内部バス４４を介してハードウェア論理デバイス１４の内部レジスタ４２或いは内部メモリ４３に出力され、記憶させる。或いは、ハードウェア実行モジュール４１の内部レジスタ或いは内部メモリからは、記憶された値がバス内部バス４４を介してＣＰＵ１１に出力される。
【００１７】
実施の形態１によれば、アプリケーション２０の実行中にある処理単位２１を呼出す際、システムの負荷状況や動作状況により処理単位２１を早く処理したければハードウェアモジュールを呼出し、処理に緊急性が無いか或いは出来るだけ消費電力を抑えて動作したければソフトウェアモジュールを呼出して処理を行うといった状況に応じた選択ができる。
【００１８】
実施の形態２．
処理単位２１は実行内容によっては互いに独立で同時並行に複数個実行することができる。
図５は、ハードウェア実行モジュールが実行する処理単位を複数個並列に実行した場合について示す図である。
図１における計算機システム１０は、複数のハードウェアモジュールを備えている。その他の実施の形態２における構成は、実施の形態１と同様である。
上記ＣＰＵ１１は、上記複数のハードウェアモジュールによる実行を選択し、選択された複数のハードウェアモジュール（図５における処理単位Ａ〜Ｃ）による実行を並列におこなわせる。言い換えれば、計算機システム１０は、ハードウェアの処理モジュールを実行する場合に複数の実行モジュールを同時、並列に実行してアプリケーション２０を実行する。
【００１９】
実施の形態２によれば、複数の実行モジュールを同時、並列に実行することで、実施の形態１の効果に加え、より処理単位を早く処理することができる。
【００２０】
実施の形態３．
図６は、実施の形態３における最適回路構成型計算機の構成を示す図である。
図６において、最適回路構成型計算機としての計算機システム１０（計算機の一例である）は、図１の構成に対し、さらに、コード生成装置６１（変換部の一例である）を備えている。ＲＯＭ１２のアドレス空間３０には、中間モジュール６４が内蔵され、記憶される。図６では、ハードウェア論理デバイス１４の一例としてプログラム可能なＦＰＧＡ６２が記載されている。
【００２１】
ハードウェアモジュールは、実施の形態１、２と同様、所定のソフトウェアにより論理設定され、所定の処理を実行する。
ＲＯＭ１２或いはＲＡＭ１３は、上記ハードウェアモジュールが実行する所定の処理と同一の処理を行うソフトウェアモジュールに変換可能で、かつ、上記所定のソフトウェアにも変換可能な中間モジュール６４を記憶する。言い換えれば、処理単位０２１をソフトウェア実行モジュール３１とハードウェア実行モジュール４１の両方に変換できる中間コードで表現した中間モジュール６４を不揮発性メモリであるＲＯＭ１２へ保存する。
ＣＰＵ１１は、実施の形態１、２と同様、上記ハードウェアモジュールによる実行と上記ソフトウェアモジュールによる実行とのいずれかを選択し、上記ハードウェアモジュールによる実行を選択した場合に、上記ハードウェアモジュールを実行させ、上記ソフトウェアモジュールによる実行を選択した場合に、上記ソフトウェアモジュールを実行する。そして、ＣＰＵ１１は、ハードウェアモジュールが出力するデータを命令コードとして実行する。
コード生成装置６１は、上記ＣＰＵ１１により上記ハードウェアモジュールによる実行が選択された場合に上記ＲＯＭ１２或いはＲＡＭ１３により記憶された中間モジュールを上記ＣＰＵ１１により実行させる上記ハードウェアモジュールを論理設定する上記所定のソフトウェアに変換し、上記ＣＰＵ１１により上記ソフトウェアモジュールによる実行が選択された場合に上記ＲＯＭ１２或いはＲＡＭ１３により記憶された中間モジュールを上記実行部により実行される上記ソフトウェアモジュールに変換する。言い換えれば、コード生成装置６１は中間モジュール６４をソフトウェア実行モジュール３１或いはハードウェア実行モジュール４１へ変換する。
【００２２】
以上のように、計算機システム１０において一つの処理単位２１が、ソフトウェアやハードウェアへ変換可能な中間モジュール６４で存在し、処理単位２１を実行する際にコード生成装置６１のような専用の変換装置によりソフトウェア或いはハードウェアへ変換して実行する。
【００２３】
本実施の形態３では、コード生成装置６１が中間モジュール６４を変換しているが、ＣＰＵ１１が、上記ハードウェアモジュールによる実行を選択した場合に、上記ＲＯＭ１２或いはＲＡＭ１３により記憶された中間モジュール６４を上記所定のソフトウェアに変換し、変換された所定のソフトウェアに基づいて上記ハードウェアモジュールを実行させ、上記ソフトウェアモジュールによる実行を選択した場合に、上記ＲＯＭ１２或いはＲＡＭ１３により記憶された中間モジュール６４を上記ソフトウェアモジュールに変換し、変換されたソフトウェアモジュールを実行するように構成しても構わない。言い換えれば、計算機システム１０において一つの処理単位２１が、ソフトウェアやハードウェアへ変換可能な中間モジュール６４で存在し、処理単位２１を実行する際にＣＰＵ１１によりソフトウェア或いはハードウェアへ変換して実行する
【００２４】
以上のように、本実施の形態３では、アプリケーション実行の際、この中間モジュール６４をＣＰＵ１１或いはコード生成装置６１で変換し、処理単位２１をソフトウェアで実行する場合には揮発性メモリ（ＲＡＭ１３）へ変換したソフトウェア実行モジュール３１を展開して実行し、ハードウェアで実行する場合には中間モジュール６４をハードウェア実行モジュールとしてＦＰＧＡ６２へ展開して使用する。
【００２５】
本実施の形態３によれば、実施の形態１，２の効果に加え、ハードウェア実行モジュールの論理構成用のソフトウェアを予め用意する必要を無くすことができる。
【００２６】
実施の形態４．
実施の形態４では、メインルーチン３２からのハードウェア実行モジュール４１の起動をハードウェア論理デバイス１４のアドレス空間へ分岐することで行う。この分岐命令の実行によりＣＰＵ１１からハードウェア論理デバイス１４に対する命令フェッチ動作によるＲＥＡＤ操作が発生する。このＲＥＡＤに対してハードウェア実行モジュール４１はＣＰＵ１１が実行可能な命令を返すように動作する。言い換えれば、ＣＰＵ１１は、ハードウェアモジュールが出力するデータを命令コードとして実行する。
【００２７】
ＲＥＡＤに対する応答動作において、ハードウェア実行モジュール４１が完了するまでの間ウエイト信号でＣＰＵ１１を待たせる、或いは処理に影響しないＮＯＰ命令等を返し続け、ハードウェア実行モジュール４１の処理が終わった時点で、実行結果のデータを保存しているアドレスへのロード命令を参照させる命令コードをＣＰＵ１１に返す。このデータを保存しているアドレスはハードウェア論理デバイス１４の内部レジスタ４２や内部メモリ４３等を示す。
【００２８】
ハードウェア論理デバイス１４はロード命令をＣＰＵ１１に返した後、メインルーチン３２へ戻るためのリターン命令をＣＰＵ１１へ返し処理を完了する。
【００２９】
図７は、実施の形態４の動作を説明するタイミングチャート図である。
図７において、分岐命令７１はメインルーチンからハードウェア実行モジュール４１を起動する際に実行する。ロード命令７２はハードウェア実行モジュール４１が処理結果をＣＰＵ１１に伝えるために出力した命令である。リターンデータ７３はロード命令７２をＣＰＵ１１が実行した結果発生したＲＥＡＤトランザクションに応答して出力されたハードウェア論理デバイス１４の内部レジスタ４２或いは内部メモリ４３のデータである。リターン命令７４はハードウェア実行モジュール４１からメインルーチンへ処理を戻すための命令である。
【００３０】
本実施の形態４によれば、実施の形態１〜３の効果に加え、ハードウェアによる処理とソフトウェアによる処理とを連携させて全体の処理を実行することができる。
【００３１】
【発明の効果】
以上のように、この発明によれば、同一の処理を行うソフトウェアとハードウェアを持ち、動作状況に応じて実行する主体を変えることで、実行速度や消費電力など動作環境に最適な処理を提供することが可能な計算機を提供することができる。
【図面の簡単な説明】
【図１】実施の形態１における最適回路構成型計算機の構成を示す図である。
【図２】計算機上で動作するＯＳやアプリケーションの構造を示す図である。
【図３】不揮発性メモリのメモリアドレス空間を示す図である。
【図４】ハードウェアで実現された処理単位がハードウェア論理デバイス上に配置されている状態を示す図である。
【図５】ハードウェア実行モジュールが実行する処理単位を複数個並列に実行した場合について示す図である。
【図６】実施の形態３における最適回路構成型計算機の構成を示す図である。
【図７】実施の形態４の動作を説明するタイミングチャート図である。
【符号の説明】
１０  計算機システム、１１  ＣＰＵ、１２  ＲＯＭ、１３  ＲＡＭ、１４  ハードウェア論理デバイス、１５  入出力装置、１６  システムバス、２０  アプリケーション、２１  処理単位、３０  アドレス空間、３１  ソフトウェア実行モジュール、３２  メインルーチン、４０  内部、４１  ハードウェア実行モジュール、４２  内部レジスタ、４３  内部メモリ、４４  内部バス、６１  コード生成装置、６２  ＦＰＧＡ、６４  中間モジュール。
【図１】
2004362446.tif 000003
【図２】
2004362446.tif 000004
【図３】
2004362446.tif 000005
【図４】
2004362446.tif 000006
【図５】
2004362446.tif 000007
【図６】
2004362446.tif 000008
【図７】
2004362446.tif 000009