(57)【特許請求の範囲】
【請求項１】
ビッグ・エンディアン方式およびリトル・エンディアン方式が混在するシステム内でプログラムを実行するプログラム実行装置において、
外部からのアクセスであることを示す情報を生成し、例外割り込みを発生するアクセス情報生成手段と、
外部からダウンロードされる異なるエンディアン方式のプログラムを、そのプログラム形式の状態で格納するプログラム格納手段と、
前記アクセス情報生成手段からの例外割り込みを受信後、例外処理用プログラムを実行し、前記プログラム格納手段に格納されたエンディアン方式の異なるプログラムを同一のエンディアン方式に変換するプロセッサと、
を備え、
前記プロセッサが採用する一方のエンディアン方式にプログラム形式を統一することにより、エンディアン方式の異なるプログラムを実行することを特徴とするプログラム実行装置。
【請求項２】
前記アクセス情報生成手段は、さらに、外部のＩ／Ｏ装置からのデータに対して、前記プロセッサに代わってエンディアン変換を行い、前記プロセッサでは、前記アクセス情報生成手段にて変換されるプログラムを実行することを特徴とする請求項１に記載のプログラム実行装置。
【請求項３】
前記アクセス情報生成手段は、さらに、外部からダウンロードされるプログラムが、以前に、前記プロセッサにて使用されたプログラムかどうかを判別することを特徴とする請求項１または２に記載のプログラム実行装置。
【請求項４】
前記プロセッサは、さらに、前記アクセス情報生成手段の生成する情報を変更可能とし、意図的な例外割り込みの発生を可能とすることを特徴とする請求項１、２または３に記載のプログラム実行装置。
【請求項５】
前記プロセッサでは、さらに、対応できない命令を、未定義命令例外として予め用意することにより、その命令を実行可能とすることを特徴とする請求項１〜４のいずれか一つに記載のプログラム実行装置。
【請求項６】
タスク形式で実行される複数のプログラムに対応するタスク番号を記憶するタスク番号記憶手段を備え、異なるプログラムが重複する記憶領域を使用できないように、前記タスク番号記憶手段内のタスク番号に対応するプログラムを管理することを特徴とする請求項１〜５のいずれか一つに記載のプログラム実行装置。
【請求項７】
前記プログラム格納手段に同時に複数のプログラムが常駐しタ状態で、さらに該プログラム格納手段に新たなプログラムをダウンロード可能な未使用領域が存在し、かつ、その未使用領域が不連続な場合、そのプログラムを複数に分割し、分割された各プログラムにブランチ命令を埋め込むことにより、不連続領域を連続領域とみなして該プログラムを実行することを特徴とする請求項１〜６のいずれか一つに記載のプログラム実行装置。
【請求項８】
使用頻度の高いプログラムを前記プロセッサ内の記憶領域に格納することを特徴とする請求項１〜７のいずれか一つに記載のプログラム実行装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、組み込み用マイクロプロセッサの開発環境として利用するプログラム実行装置に関するものであり、特に、ビッグ・エンディアン方式およびリトル・エンディアン方式が混在するマイクロプロセッサの開発環境で利用可能なプログラム実行装置に関するものである。
【０００２】
【従来の技術】
以下、従来のプログラム実行装置について説明する。通常、マイクロプロセッサでは、ワードアドレスと一致するバイトアドレスが、ワードの最上位バイトを示すビッグ・エンディアン方式、またはワードの最下位バイトを示すリトル・エンディアン方式、のどちらかのエンディアンを採用している。従って、ワード内のデータをバイト単位でアクセスしてレジスタとメモリ間でデータ転送をするような場合には、同一ワード内のバイトの順序を考慮する必要がある。
【０００３】
なお、たとえば、ビッグ・エンディアン方式は、米Ｍｏｔｏｒｏｌａ社の６８０００，米ＩＢＭ社の３７０アーキテクチャ等で採用され、リトル・エンディアン方式は、米Ｉｎｔｅｌ社のｘ８６，米Ｄｉｇｉｔａｌ  Ｅｑｕｉｐｍｅｎｔ社のＶＡＸアーキテクチャ等で採用されている。そこで、近年では、異なるエンディアン方式の混在する情報処理システムにおいて、エンディアンを変換する技術が検討されている。
【０００４】
このエンディアンを変換する技術を記載する文献としては、たとえば、特開平８−３０５６２８号公報（自動判定機能付きエンディアン変換装置および方法）がある。図１３は、エンディアン変換制御部を備える従来のプログラム実行装置の構成を示す図である。このプログラム実行装置は、ビッグ・エンディアン方式による構成要素と、リトル・エンディアン方式による構成要素と、が混在する情報処理システムとして動作し、たとえば、１０１はプロセッサであり、１０２は主記憶部であり、１０３はエンディアン変換制御部であり、１０４はＩ／ＯアダプタＡであり、１０５はＩ／ＯアダプタＢであり、さらに、１１０はプロセッサバスであり、１１１はＩ／Ｏバスである。
【０００５】
このプログラム実行装置では、プロセッサ１０１、主記憶回路１０２、およびＩ／Ｏアダプタ１０４がビッグ・エンディアン方式にて動作し、Ｉ／Ｏアダプタ１０５がリトル・エンディアン方式にて動作する。また、プロセッサ１０１と主記憶回路１０２には、プロセッサバス１１０を介してエンディアン変換制御部１０３が接続され、Ｉ／Ｏアダプタ１０４、１０５には、Ｉ／Ｏバス１１１を介してエンディアン変換制御部１０３が接続されている。
【０００６】
エンディアン制御部１０３では、必要に応じてプロセッサ１０１とＩ／Ｏアダプタ１０４、および１０５とのデータのやり取りにおいて、エンディアンの変換制御を行う。このエンディアン変換制御部１０３の内部には、アドレス比較器と、プロセッサ１０１から設定される被比較アドレスを格納するためのレジスタと、があり、レジスタには各Ｉ／Ｏアダプタに対応する３２ビットのアドレス値が割り付けられている。ここでは、たとえば、Ｉ／Ｏアダプタ１０４に対応するアドレスとしては、Ｘ０Ｆ１００００００が割り付けられており、Ｉ／Ｏアダプタ１０５に対応するアドレスとしては、Ｘ０Ｆ２００００００が割り付けられているものとする。
【０００７】
つぎに、上記プログラム実行装置の動作について説明する。たとえば、プロセッサ１０１は、Ｉ／Ｏ動作の開始に先立ち、エンディアン変換が必要なアドレス、すなわち、各Ｉ／Ｏアダプタのアドレスを、エンディアン変換制御部１０３へ通知する。この従来例では、Ｉ／Ｏアダプタ１０５のエンディアンが、プロセッサ１０１のエンディアンと異なるため、エンディアン変換が必要となる。そのため、プロセッサ１０１では、Ｉ／Ｏアダプタ１０５に対応するアドレス：Ｘ０Ｆ２００を、エンディアン変換制御部１０３にセットする。
【０００８】
そして、エンディアン変換制御部１０３では、プロセッサ１０１およびＩ／Ｏアダプタ１０５間におけるデータの入出力時に、Ｉ／Ｏアダプタ１０５のアドレスの上位を、セットされたアドレス：Ｘ０Ｆ２００と比較する。この従来例では、セットされたアドレスとＩ／Ｏアダプタ１０５のアドレスとが一致しているため、たとえば、データ出力の場合に、Ｉ／Ｏバス１１１上のデータ配置をリトル・エンディアン方式となるように変更し、データ入力の場合に、プロセッサバス１１０上のデータ配置をビッグ・エンディアン方式となるように変更する。
【０００９】
このように、従来のプログラム実行装置では、エンディアン変換が必要なアドレス、すなわち、エンディアン変換が必要なＩ／Oアダプタ１０５のアドレスを、予めエンディアン変換制御部１０３に通知しておくことにより、異なるエンディアンが混在するシステムにおけるデータ入出力を円滑に行っている。
【００１０】
【発明が解決しようとする課題】
しかしながら、上記、従来のプログラム実行装置では、プロセッサにてエンディアンの変換が必要なアドレスを予め通知しておく必要があり、通知のないアドレスのＩ／Ｏには対応できない、という問題があった。
【００１１】
また、上記、従来のプログラム実行装置では、Ｉ／Ｏアダプタにおけるエンディアン変換だけに対応しているため、エンディアン変換制御部を介していない主記憶回路においては、プロセッサとのエンディアンが異なる場合でも対応できない、という問題点があった。
【００１２】
本発明は、上記に鑑みてなされたものであって、プロセッサに接続される各Ｉ／Ｏ（インタフェース部、記憶回路等）から、明確なエンディアン変換の指示がない場合においても、自動的に、そのＩ／Ｏに応じたエンディアン変換を可能とし、特に、命令コードが同一で、かつ、エンディアン形式が異なるようなマイクロプロセッサの開発環境として利用することができるプログラム実行装置を得ることを目的とする。
【００１３】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するために、本発明にかかるプログラム実行装置にあっては、ビッグ・エンディアン方式およびリトル・エンディアン方式が混在するシステム内で動作し、さらに、外部からのアクセスであることを示す情報を生成し、例外割り込みを発生するアクセス情報生成手段（後述する実施の形態のパリティ生成指示回路６、パリティ検出／生成器３、メモリパリティ用ＲＡＭ５に相当）と、外部からダウンロードされる異なるエンディアン方式のプログラムを、そのプログラム形式の状態で格納するプログラム格納手段（主記憶用ＲＡＭ４に相当）と、前記アクセス情報生成手段からの例外割り込みを受信後、例外処理用プログラムを実行し、前記プログラム格納手段に格納されたエンディアン方式の異なるプログラムを同一のエンディアン方式に変換するプロセッサ（ＭＰＵ１、プログラム格納ＲＯＭ２に相当）と、を備え、前記プロセッサが採用する一方のエンディアン方式にプログラム形式を統一することにより、エンディアン方式の異なるプログラムを実行することを特徴とする。
【００１４】
この発明によれば、プログラム格納手段に外部からのプログラムやデータがダウンロードされると、それをプロセッサに知らせる情報として、たとえば、パリティエラーが発生する。このパリティエラーの発生により、プロセッサは、パリティエラー例外処理用プログラムが起動する。そして、その例外プログラムではエラーが生じたプログラム格納手段内のデータのエンディアンを確認し、異なるエンディアンであれば、エンディアン変換後のプログラムをプログラム格納手段ヘ再格納して、その後、通常プログラムへ復帰する。これにより、自動的に、異なるエンディアン方式のプログラムを、自マイクロプロセッサで実行できるようになる。また、エンディアン変換が終了したプログラムやデータへの再アクセス時にはエンディアン変換の必要性がなく、プロセッサによる例外処理が発生しないため、結果として高速なデータ処理が可能となる。
【００１５】
つぎの発明にかかるプログラム実行装置において、前記アクセス情報生成手段は、さらに、外部のＩ／Ｏ装置からのデータに対して、前記プロセッサに代わってエンディアン変換を行い（後述する実施の形態のデータ置換器６１に相当）、前記プロセッサでは、前記アクセス情報生成手段にて変換されるプログラムを実行することを特徴とする。
【００１６】
この発明によれば、アクセス情報生成手段が自動的にエンディアン変換を実施する。このとき、アクセス情報生成手段では、例外割り込みを発生しない。これにより、プロセッサの負荷がかるくなり、プログラム実行の高速化をはかることができる。
【００１７】
つぎの発明にかかるプログラム実行装置において、前記アクセス情報生成手段は、さらに、外部からダウンロードされるプログラムが、以前に、前記プロセッサにて使用されたプログラムかどうかを判別することを特徴とする（後述する実施の形態のデータスイッチ回路３１、データ置換器６２に相当）。
【００１８】
この発明によれば、アクセス情報生成手段にて、外部からダウンロードされるプログラムが、以前に、前記プロセッサにて使用されたプログラムかどうかを判別する。これにより、外部から新たなプログラムがダウンロードされた場合においても、そのプログラムが以前にプロセッサにて使用されていないプログラム／データであるか、または、使用されたプログラムであるか、がすぐに分かるため、プログラムデバッグの支援ツールとしての効率的な利用が可能となる。すなわち、プログラムデバッグの効率化をはかることができる。
【００１９】
つぎの発明にかかるプログラム実行装置において、前記プロセッサは、さらに、前記アクセス情報生成手段の生成する情報を変更可能とし、意図的な例外割り込みの発生を可能とすることを特徴とする。
【００２０】
この発明によれば、プロセッサが、任意にアクセス情報生成手段の生成する情報を変更する。これにより、意図的に、パリティエラー例外処理を利用したプログラムブレークを行うことができる。また、意図的に例外割り込みを発生させることができるため、プロセッサ以外のアクセスにおいても例外割り込み処理を発生させることができ、たとえば、事象の発生条件を特定できないような外部要因によるエラーでも、プログラムブレークを行うことができる。
【００２１】
つぎの発明にかかるプログラム実行装置において、前記プロセッサでは、さらに、対応できない命令を、未定義命令例外として予め用意することにより（後述する実施の形態の命令拡張用ＲＡＭ２１に相当）、その命令を実行可能とすることを特徴とする。
【００２２】
この発明によれば、たとえば、プロセッサで対応可能な命令で記述した新規命令のプログラムを、予め格納しておく。これにより、プロセッサによるプログラムの実行に柔軟性を持たせることができる。
【００２３】
つぎの発明にかかるプログラム実行装置にあっては、タスク形式で実行される複数のプログラムに対応するタスク番号を記憶するタスク番号記憶手段（後述する実施の形態のタスク番号格納用ＲＡＭ５１に相当）を備え、異なるプログラムが重複する記憶領域を使用できないように、前記タスク番号記憶手段内のタスク番号に対応するプログラムを管理することを特徴とする。
【００２４】
この発明によれば、異なるタスクプログラムによる重複した記憶領域の使用を禁止する。これにより、プログラムの異常動作を回避することができる。
【００２５】
つぎの発明にかかるプログラム実行装置にあっては、前記プログラム格納手段に同時に複数のプログラムが常駐しタ状態で、さらに該プログラム格納手段に新たなプログラムをダウンロード可能な未使用領域が存在し、かつ、その未使用領域が不連続な場合、そのプログラムを複数に分割し、分割された各プログラムにブランチ命令を埋め込むことにより、不連続領域を連続領域とみなして該プログラムを実行することを特徴とする。
【００２６】
この発明によれば、未使用領域が不連続領域の場合でも、タスク番号記憶手段の情報を用い、さらに、複数に分けられたプログラムのなかに、後続プログラムへのブランチ命令を埋め込む。これにより、不連続領域を連続領域とみなして、通常どおりにタスクプログラムを実行することができる。
【００２７】
つぎの発明にかかるプログラム実行装置にあっては、使用頻度の高いプログラムを前記プロセッサ内の記憶領域に格納することを特徴とする。
【００２８】
この発明によれば、実行頻度の高いタスクプログラムをプロセッサ内に移動させる。これにより、プロセッサの性能を大幅に向上させることができる。
【００２９】
【発明の実施の形態】
以下に、本発明にかかるプログラム実行装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００３０】
実施の形態１．
図１は、本発明にかかるプログラム実行装置の実施の形態１の構成図である。図１において、１はビッグ・エンディアン形式のデータを取り扱うＲＩＳＣ型のマイクロプロセッサであるビッグ・エンディアン型ＭＰＵ（Micro Processor Unit：以降、単にＭＰＵと呼ぶ）であり、２はＲｅａｄ専用の記憶回路であるプログラム格納用ＲＯＭ（Read Only Memory：以降、単にＲＯＭと呼ぶ）であり、３は記憶回路データのパリティ検出およびパリティ生成を行うパリティ検出／生成器であり、４はプログラムおよびデータ格納のための主記憶回路である主記憶用ＲＡＭ（Random Access Memory）であり、５は主記憶用ＲＡＭ４のパリティデータを格納する記憶回路であるメモリパリティ用ＲＡＭであり、６はパリティデータの生成を制御するパリティ生成指示回路である。
【００３１】
さらに、このプログラム実行装置は、ＭＰＵ１、ＲＯＭ２、およびパリティ検出／生成器３を接続するＭＰＵアドレス／データバス１１と、パリティ検出／生成器３、パリティ生成指示回路６、および主記憶用ＲＡＭ４を接続する内部アドレス／データバス１２と、パリティ生成指示回路６とパリティ検出／生成器３を接続するパリティ生成指示線１４と、メモリパリティ用ＲＡＭ５とパリティ検出／生成器３を接続するパリティデータバス１５と、主記憶用ＲＡＭ４にパリティエラーが発生したことをＭＰＵ１に通知するパリティエラー通知線１６と、パリティ生成指示回路６とＩＣＥ等の外部回路を接続するＩＣＥ接続信号線１７と、外部回路からエンディアンの変換を通知するアドレス／データバス１８と、を備えている。
【００３２】
なお、記憶回路として使用するＲＯＭおよびＲＡＭについては、説明の便宜上特定しているものであり、これに限ったものではなく、各記憶部については、用途に応じてＲＡＭおよびＲＯＭのどちらを使用することとしてもよい。また、上記のように構成されるＭＰＵ１は、ＲＩＳＣ型であることから１ワード単位で命令が完結しており、命令の再実行については、命令カウンターから１ワード長のカウントを減算することで可能となる（命令の種類によっては複数ワードにまたがることもあるが、その場合でもワード単位の整数倍で減算することで再実行可能であるため、データのアライメントを考慮する必要はない）。
【００３３】
また、ＭＰＵ１は、パリティエラー通知線１６が活性化している場合、通常の命令実行を中断し、パリティエラーの例外処理を実行する仕様とする。このとき、パリティエラー例外処理のためのプログラムはＲＯＭ２に格納されており、ＭＰＵ１では、これをアクセスすることにより上記処理を実行している。
【００３４】
また、ＲＯＭ２には、このほかに、初期化処理用のプログラム等も格納されている。また、パリティ生成指示回路６では、外部からの主記憶アクセスであることをパリティ生成指示線１４経由でパリティ検出／生成器３に通知する。また、パリティ検出／生成器３では、ＭＰＵ１からのアクセスの場合には、自動的に「正常」パリティの生成を行うが、外部からのアクセスである場合には、「異常」パリティの生成を行う。
【００３５】
つぎに、上記プログラム実行装置の動作について詳細に説明する。まず、電源の投入あるいはリセットの実行により、ＭＰＵ１は、初期化処理を実行する。ここでは、初期化処理として、たとえば、主記憶用ＲＡＭ４の格納データを‘０'にクリアする。このとき、ＭＰＵ１からの主記憶アクセスであることから、パリティ検出／生成器３では、自動的にパリティの生成を行い、さらにメモリパリティ用ＲＡＭ５へのパリティデータのセットを行う。
【００３６】
つぎに、外部のＲＯＭ型ＩＣＥ等から、リトル・エンディアン方式のプログラムがワード長あるいはバーストでダウンロードされた場合は、そのままの形式で主記憶用ＲＡＭ４に格納する。この場合、外部からのアクセスであるため、パリティデータは「異常」値が生成されることになる。
【００３７】
つぎに、主記憶用ＲＡＭ４にダウンロードされたプログラムやデータを、ＭＰＵ１がアクセスすると、先に説明したとおりパリティが「異常」にセットされているため、パリティエラーとなる。このパリティエラーの発生により、パリティ検出／生成回路３のパリティエラー通知線１６が活性状態となり、ＭＰＵ１では、パリティエラー例外処理用プログラムが起動することになる。
【００３８】
なお、例外処理プログラムでは、エラーが生じた主記憶用ＲＡＭ４のデータを、ＭＰＵ１内部の一時バッファレジスタ（図示はしていない）に格納後、該当記憶領域の正常性を試験し、正常であれば、一時バッファに格納したデータのエンディアンを変換（データ置換動作）後、該当記憶領域ヘ再格納する。また、ＭＰＵ１における例外処理プログラムでは、例外処理が発生した時点のプログラムカウンタおよびレジスタの再セットを行い、その後、通常プログラムへ復帰する。
【００３９】
また、ＭＰＵ１では、上記パリティエラー例外処理用プログラムがパリティエラー発生毎に実行されるが、一度、パリティエラー例外処理が実行されたプログラムおよびデータについては、以降の実行からエラーが発生しない。
【００４０】
以上のように、本実施の形態においては、リトル・エンディアン方式のプログラムを、ビッグ・エンディアン型のマイクロプロセッサで実行可能となり、さらに、エンディアン変換が終了したプログラムやデータの再アクセス時には、パリティエラーが発生しない。これにより、プロセッサによる例外処理が発生せず、結果として高速なデータ処理が可能となる。
【００４１】
なお、本実施の形態においては、リトル・エンディアン方式のプログラムをビッグ・エンディアン型のマイクロプロセッサで実行する処理の一例について説明したが、たとえば、上記と同様の方法で、ビッグ・エンディアン方式のプログラムをリトル・エンディアン型のマイクロプロセッサで実行することも可能である。また、以降の実施の形態においても、これと同様のことがいえる。
【００４２】
実施の形態２．
図２は、本発明にかかるプログラム実行装置の実施の形態２の構成図である。本実施の形態では、前記パリティ生成指示回路６に置き換えて、外部Ｉ／Ｏ回路からのデータセットに対してエンディアン変換に伴うデータの置換を行うエンディアン変換用データ置換器６１（以降、単にデータ置換器と呼ぶ）を備えている。なお、先に説明した実施の形態１と同様の構成については、同一の符号を付して説明を省略する。また、図２において、データ置換器６１では、図１におけるパリティ生成指示回路６が持つ機能であるパリティ生成制御とともに、上記置換処理を行う。
【００４３】
つぎに、本実施の形態のプログラム実行装置における動作について説明する。たとえば、先に説明した実施の形態１では、エンディアンの異なる外部とのアクセスにおいて、エンディアンの変換を、すべてＭＰＵ１にて実行するようにしたものである。しかしながら、たとえば、外部のＩ／Ｏ回路からのデータセットのように、毎回エンディアン変換を実行する必要があるような場合には、実施の形態１のプログラム実行装置では、データ処理性能が低下するため、プロセッサの開発環境として限定した利用においても速度が低下することになり、その作業性に問題が残る。そこで、本実施の形態においては、このような問題に対して、外部のＩ／Ｏ回路からのデータを、自動的にエンディアン変換することにより対処している。
【００４４】
従って、本実施の形態のプログラム実行装置では、先に説明した実施の形態１における動作とともに、以下の動作が付加されることになる。外部のＩ／Ｏ装置からの単バイト長あるいはデータパス幅に満たない長さのデータは、データ置換器６１がハードウェアによる自動エンディアン変換を実施する。このとき、このデータ置換器６１は、パリティ検出／生成器３に対して、「正常」パリティの生成を指示する。
【００４５】
以上のように、本実施の形態においては、データ形式変換を、データ形式変換専用回路により、すなわち、データ置換器６１により実行するため、プロセッサの負荷がかるくなり、プログラム実行の高速化をはかることができる。
【００４６】
実施の形態３．
図３は、本発明にかかるプログラム実行装置の実施の形態３の構成図である。本実施の形態では、前記パリティ検出／生成器３に置き換えて、パリティの検査結果をデータとしてＭＰＵ１に知らせる、すなわち、主記憶用ＲＡＭ４内のデータがＭＰＵ１にて使用されたものかどうかを知らせるパリティ検出／生成／データスイッチ回路３１（以降、単にデータスイッチ回路と呼ぶ）を備えている。
【００４７】
なお、先に説明した実施の形態１および２と同様の構成については、同一の符号を付して説明を省略する。また、図３において、データスイッチ回路３１では、図１および図２におけるパリティ検出／生成器３が持つ、パリティ検出機能およびパリティ生成機能とともに、さらに、そのパリティの検査結果をＭＰＵ１に知らせるスイッチング処理を行う。
【００４８】
つぎに、本実施の形態のプログラム実行装置における動作について説明する。たとえば、先に説明した実施の形態１および２では、ＭＰＵ１またはデータ置換器６１にてエンディアンの変換を行う。しかしながら、本実施の形態においては、このような動作に加えて、さらに、パリティの検査結果をデータとしてＭＰＵ１に知らせる。
【００４９】
これにより、本実施の形態のプログラム実行装置は、パリティエラーの発生しているプログラムがダウンロードされた場合においても、そのプログラムが実際にＭＰＵ１にて使用されていないプログラム／データであるか、または、使用されたプログラムであるか、がすぐに分かるため、プログラムデバッグの支援ツールとしての効率的な利用が可能となる。すなわち、プログラムデバッグの効率化をはかることができる。
【００５０】
また、本実施の形態では、上記構成に加え、さらに、ＭＰＵ１がデータスイッチ回路３１を経由してメモリパリティ用ＲＡＭ５にデータをセット可能な構造とする（回路構成は図３と同一）。具体的にいうと、ＭＰＵ１は、任意のアドレスのパリティデータを変更できるようになる。これにより、ＭＰＵ１による変更で、意図的に、パリティエラー例外処理を利用したプログラムブレークを行うことができる。また、主記憶用ＲＡＭ４のアクセスによってＭＰＵ１に例外割り込みを発生させることができるため、ＭＰＵ１以外のアクセスにおいても例外割り込み処理を発生させることができ、たとえば、事象の発生条件を特定できないような外部要因によるエラーでも、前記プログラムブレークを行うことができる。
【００５１】
実施の形態４．
図４は、本発明にかかるプログラム実行装置の実施の形態４の構成図である。本実施の形態では、前記実施の形態３の構成に加えて、さらに、従来命令で記述した新規命令のプログラムを格納し、プログラム格納用ＲＯＭ２に格納された例外処理プログラムと連携できるように構成された命令拡張用ＲＡＭ２１を備えている。なお、先に説明した実施の形態１、２および３と同様の構成については、同一の符号を付して説明を省略する。
【００５２】
つぎに、本実施の形態のプログラム実行装置における動作について説明する。たとえば、ＭＰＵ１の例外処理は、未定義命令の実行によっても発生させることができる。本実施の形態では、これを利用して、ＭＰＵ１にて新規の命令を実行させる。具体的にいうと、新規命令であるがＭＰＵ１にて対応できないような命令は、たとえば、「未定義命令例外」として、命令拡張用ＲＡＭに格納しておくことにより実行が可能となる。なお、図４においては、新規命令の実行のために命令拡張用ＲＡＭ２１を設けたが、これはプログラム格納ＲＯＭ２の中に設ける構成としてもよい。
【００５３】
以上のように、本実施の形態においては、従来命令、すなわち対応可能な命令で記述した新規命令のプログラムを格納することにより、プロセッサによるプログラムの実行に柔軟性を持たせることができる。
【００５４】
実施の形態５．
図５は、本発明にかかるプログラム実行装置の実施の形態５の構成図である。本実施の形態では、前記実施の形態４の構成に加えて、さらに、タスク形式で実行される複数のプログラムの管理を行うためにタスク番号を記憶するタスク番号格納用ＲＡＭ５１を備えている。なお、先に説明した実施の形態１、２、３および４と同様の構成については、同一の符号を付して説明を省略する。
【００５５】
つぎに、本実施の形態のプログラム実行装置における動作について説明する。たとえば、タスク番号格納用ＲＡＭ５１は、タスク形式で実行される複数のプログラムの管理を行い、かつ、メモリパリティ用ＲＡＭ５の拡張を行う、という目的で、実行中の複数のプログラムに対応するタスク番号を記憶する。なお、このタスク番号は、ワード単位あるいは管理プログラム（ＯＳ等）が管理する記憶単位毎、に設定される。
【００５６】
また、データスイッチ回路３２では、先に図４にて説明したデータスイッチ回路３１の機能を備えるとともに、ＭＰＵ１からセットされるタスク番号を保持し、タスク番号格納用ＲＡＭ５１に格納されているデータとの比較を行う。なお、タスク番号格納用ＲＡＭ５１には、ＭＰＵ１にてタスク形式で実行される複数のプログラムに対応するタスク番号が、予めセットされている。
【００５７】
たとえば、上記比較の結果が異なる場合、データスイッチ回路３２では、パリティエラー通知線１６を活性化してＭＰＵ１の例外処理を起動する。そして、その活性化を受けて、ＭＰＵ１では、例外処理の中で実行中のタスク番号と主記憶用ＲＡＭ４のタスク番号の検査を行い、すなわち、複数のプログラムにより使用する記憶領域が重複していないかどうかの検査を行い、異なっている場合、この例外処理を中止する。
【００５８】
以上のように、本実施の形態においては、異なるタスクプログラムが、重複した記憶領域の使用を禁止することにより、プログラムの異常動作を回避することができる。
【００５９】
しかしながら、上記構成を用いてＭＰＵ１にて実行されるタスクプログラムが、連続した記憶領域を占有すると、主記憶用ＲＡＭ４としては、未使用の領域がある場合でも、新たなタスクプログラムのロードができない場合がある。図６は、この様子を示す図である。すなわち、図６では、タスクプログラムＡとタスクプログラムＢとが主記憶用ＲＡＭ４に常駐している様子を示している。
【００６０】
図６に示すような場合、主記憶用ＲＡＭ４には、過去に常駐していたタスクプログラムが処理を終え、そのプログラムが消去されているため、未使用領域が存在している。この例では、未使用領域のそれぞれが５ブロックずつあり、合計で１０ブロックの未使用領域が存在する。しかし、ここに、新たに９ブロックの領域を占有する、たとえば、図７のタスクプログラムＣをロードしようとすると、連続したブロックが占有できないため、ロードができない。
【００６１】
そこで、本実施の形態におけるＭＰＵ１では、タスク番号格納用ＲＡＭ５１を検索することにより未使用領域を探し出し、上記不連続な１０ブロックの記憶領域を確保し、タスクプログラムＣのタスク番号をタスク番号格納用ＲＡＭ５１にセットする。一方、ＭＰＵ１では、タスクプログラムを、たとえば、図９に示すような前半の４ブロックと、図１０に示すような後半の５ブロックに分割する。そして、前半の記憶ブロックには、図８に示すような分割用記憶ブロックを付加する。なお、この分割用記憶ブロックには、後半の記憶ブロックへのブランチ命令がその先頭に埋め込まれている。
【００６２】
このように、本実施の形態においては、未使用領域が不連続領域の場合でも、タスク番号格納用ＲＡＭ５１を用い、さらに、前半と後半に分けられたプログラムの前半に、後半のブロックへのブランチ命令を埋め込むことにより、不連続領域を連続領域とみなして、通常どおりにタスクプログラムを実行できる。図１１は、タスクプログラムＣが主記憶用ＲＡＭの記憶領域を上記の方法で占有した状態を示す図である。なお、本実施の形態においては、２つの未使用領域にタスクプログラムを分割したが、プログラムの記憶領域が足りない場合には、上記と同様の方法で、２つ以上の未使用領域を使用することとしてもよい。
【００６３】
また、ＭＰＵ１には、その内部に記憶回路を持つものがある。このようなマイクロプロセッサにおいては、内部の記憶回路の方が高速にアクセス可能であるため、使用頻度の高いプログラムについては、内蔵の記憶回路においておくほうが、性能の向上を実現できる。
【００６４】
そこで、本実施の形態においては、使用頻度を計測するため、たとえば、図１２に示すように、タスクプログラムの終わりに１ブロックのタスク管理用ブロックを設ける。なお、このタスク管理用ブロックは、タスクプログラムのロード時に付加され、初期値を０とする。また、該当するタスクプログラムを起動する際に、ＭＰＵ１では、タスク管理用ブロックの値を＋１だけ加算するとともに、その値を検査する。そして、値が一定値を超えている場合に、そのタスク全体をＭＰＵ１内の記憶回路に移動する。なお、タスクの大きさ、範囲については、タスク番号格納用ＲＡＭ５１の内容を検索することで知ることができる。また、記憶ブロックが十分に大きいのであれば、タスク管理用ブロックと、前記分割用記憶ブロックとを兼用することとしてもよい。
【００６５】
このように、本実施の形態においては、実行頻度の高いタスクプログラムをマイクロプロセッサ内蔵の記憶領域に移動させることができ、それに伴って性能を大幅に向上させることができる。
【００６６】
【発明の効果】
以上、説明したとおり、本発明によれば、プログラム格納手段に外部からのプログラムやデータがダウンロードされると、それをプロセッサに知らせる情報として、たとえば、パリティエラーが発生する。このパリティエラーの発生により、プロセッサは、パリティエラー例外処理用プログラムが起動する。そして、その例外プログラムではエラーが生じたプログラム格納手段内のデータのエンディアンを確認し、異なるエンディアンであれば、エンディアン変換後のプログラムをプログラム格納手段ヘ再格納して、その後、通常プログラムへ復帰する。これにより、自動的に、異なるエンディアン方式のプログラムを、自マイクロプロセッサで実行できるようになる、という効果を奏する。また、エンディアン変換が終了したプログラムやデータへの再アクセス時にはエンディアン変換の必要性がなく、プロセッサによる例外処理が発生しないため、結果として高速なデータ処理が可能となる、という効果を奏する。
【００６７】
つぎの発明によれば、アクセス情報生成手段が自動的にエンディアン変換を実施する。このとき、アクセス情報生成手段では、例外割り込みを発生しない。これにより、プロセッサの負荷がかるくなり、プログラム実行の高速化をはかることができる、という効果を奏する。
【００６８】
つぎの発明によれば、アクセス情報生成手段にて、外部からダウンロードされるプログラムが、以前に、前記プロセッサにて使用されたプログラムかどうかを判別する。これにより、外部から新たなプログラムがダウンロードされた場合においても、そのプログラムが以前にプロセッサにて使用されていないプログラム／データであるか、または、使用されたプログラムであるか、がすぐに分かるため、プログラムデバッグの支援ツールとしての効率的な利用が可能となる。すなわち、プログラムデバッグの効率化をはかることができる、という効果を奏する。
【００６９】
つぎの発明によれば、プロセッサが、任意にアクセス情報生成手段の生成する情報を変更する。これにより、意図的に、パリティエラー例外処理を利用したプログラムブレークを行うことができる、という効果を奏する。また、意図的に例外割り込みを発生させることができるため、プロセッサ以外のアクセスにおいても例外割り込み処理を発生させることができ、たとえば、事象の発生条件を特定できないような外部要因によるエラーでも、プログラムブレークを行うことができる、という効果を奏する。
【００７０】
つぎの発明によれば、たとえば、プロセッサで対応可能な命令で記述した新規命令のプログラムを、予め格納しておく。これにより、プロセッサによるプログラムの実行に柔軟性を持たせることができる、という効果を奏する。
【００７１】
つぎの発明によれば、異なるタスクプログラムによる重複した記憶領域の使用を禁止する。これにより、プログラムの異常動作を回避することができる、という効果を奏する。
【００７２】
つぎの発明によれば、未使用領域が不連続領域の場合でも、タスク番号記憶手段の情報を用い、さらに、複数に分けられたプログラムのなかに、後続プログラムへのブランチ命令を埋め込む。これにより、不連続領域を連続領域とみなして、通常どおりにタスクプログラムを実行することができる、という効果を奏する。
【００７３】
つぎの発明によれば、実行頻度の高いタスクプログラムをプロセッサ内に移動させる。これにより、プロセッサの性能を大幅に向上させることができる、という効果を奏する。
【図面の簡単な説明】
【図１】  本発明にかかるプログラム実行装置の実施の形態１の構成を示す図である。
【図２】  本発明にかかるプログラム実行装置の実施の形態２の構成を示す図である。
【図３】  本発明にかかるプログラム実行装置の実施の形態３の構成を示す図である。
【図４】  本発明にかかるプログラム実行装置の実施の形態４の構成を示す図である。
【図５】  本発明にかかるプログラム実行装置の実施の形態５の構成を示す図である。
【図６】  未使用の領域がある場合でも新たなタスクプログラムのロードができない様子を示す図である。
【図７】  タスクプログラムＣの全ブロックを示す図である。
【図８】  分割用記憶ブロックを示す図である。
【図９】  タスクプログラムＣの前半の４ブロックを示す図である。
【図１０】  タスクプログラムＣの後半の５ブロックを示す図である。
【図１１】  タスクプログラムＣが主記憶用ＲＡＭの記憶領域を占有した状態を示す図である。
【図１２】  タスク管理用ブロックを示す図である。
【図１３】  エンディアン変換制御部を備える従来におけるプログラム実行装置の構成を示す図である。
【符号の説明】
１  ビッグ・エンディアン型ＭＰＵ、２  プログラム格納ＲＯＭ、３  パリティ検出／生成器、４  主記憶用ＲＡＭ、５  メモリパリティ用ＲＡＭ、６  パリティ生成指示回路、２１  命令拡張用ＲＡＭ、３１，３２  データスイッチ回路、５１  タスク番号格納用ＲＡＭ、６１，６２  エンディアン変更用データ置換器。
【図１】
0003863314.tif 000002
【図２】
0003863314.tif 000003
【図３】
0003863314.tif 000004
【図４】
0003863314.tif 000005
【図５】
0003863314.tif 000006
【図６】
0003863314.tif 000007
【図７】
0003863314.tif 000008
【図８】
0003863314.tif 000009
【図９】
0003863314.tif 000010
【図１０】
0003863314.tif 000011
【図１１】
0003863314.tif 000012
【図１２】
0003863314.tif 000013
【図１３】
0003863314.tif 000014