(57)【特許請求の範囲】
【請求項１】
動作を行うのに必要最低限且つ十分な命令コードを組み合わせて構成されたプログラムに従い動作する情報処理装置において、単一又は複数個の前記命令コードは、予め所定の方式に基づいて符号化されていると共に、この符号化されている命令コードで用いるデータは１バイトの整数倍で形成されており、
ハフマン符号方式で符号化された前記命令コードが分岐命令である場合、分岐先のアドレス位置をビット単位で示す、情報処理装置。
【請求項２】
ハフマン符号方式で符号化された前記命令コードのコード長は、前記プログラムにおける命令コードの出現回数に依存することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
動作を行うのに必要最低限且つ十分な命令コードを組み合わせて構成されたプログラムに従い動作する情報処理装置において、単一又は複数個の前記命令コードは、予め所定の方式に基づいて符号化されていると共に、この符号化されている命令コードで用いるデータは１バイトの整数倍で形成されており、
算術符号方式により符号化された前記命令コードが分岐命令である場合、該分岐命令の分岐アドレスで指定する分岐先のアドレスは、１ビットの整数倍の位置から開始する、情報処理装置。
【請求項４】
動作を行うのに必要最低限且つ十分な命令コードを組み合わせて構成されたプログラムに従い動作する情報処理装置において、単一又は複数個の前記命令コードは、予め所定の方式に基づいて符号化されていると共に、この符号化されている命令コードで用いるデータは１バイトの整数倍で形成されており、
算術符号方式により符号化された前記命令コードが分岐命令である場合、分岐先のアドレス位置をビット単位で示す、情報処理装置。
【請求項５】
算術符号方式で符号化された前記命令コードのコード長は、前記プログラムにおける命令コードの出現回数に依存することを特徴とする請求項４に記載の情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、命令実行処理方法及び情報処理装置及び記録媒体に関する。詳しくは、予め符号化された命令コードを所定の記憶／記録手段に格納し、記憶／記録手段から予め符号化されている命令コードを読み出して復号化し、復号化した命令コードを解読して所定の命令を実行する命令実行処理方法及び情報処理装置及び記録媒体に関する。
【０００２】
【従来の技術】
従来技術では、情報処理装置のＣＰＵを動作させるプログラムを構成する命令コードは、命令コード自体を区別する部分と、その命令コードに必要なレジスタやメモリアドレスのそれぞれの表現に必要なビット数を割り当てるという方法で決定されている。
【０００３】
例えば、図６の示すように、情報処理装置のＣＰＵを動作させるためのプログラムを構成する命令コードは、メモリ内に格納された命令コードの番地を表すバイトアドレス（Ｈ’０〜Ｈ’１６）と、命令コードの境界を示すビットアドレスと、複数の命令コードによる一連処理を示すラベルと、各処理内容を表した命令と、命令に対応する命令コードとからなっている。尚、各命令コードが格納されたメモリの開始アドレスは、バイト毎の境界になっており、命令コードのデータ長は、全てバイト単位になっている。
【０００４】
ラベル「＿ａａａ：」は、（ＭＯＶ．Ｗ  Ｌ００３，Ｒ４）、（ＭＯＶ．Ｗ  Ｌ００３＋２，Ｒ５）、（ＢＲＡ  Ｌ００２）、（ＮＯＰ）の４つの命令からなる一連の処理であり、各命令の命令コードは、バイトアドレス「Ｈ’０」から２バイト毎に格納され、命令（ＭＯＶ．Ｗ  Ｌ００３，Ｒ４）は、バイトアドレス「Ｈ’０」から命令コード（Ｂ’１００１０１００００００１０００）、命令（ＭＯＶ．Ｗ  Ｌ００３＋２，Ｒ５）は、バイトアドレス「Ｈ’２」から命令コード（Ｂ’１００１０１０１００００１０００）、命令（ＢＲＡ  Ｌ００２）は、バイトアドレス「Ｈ’４」から命令コード（Ｂ’１０１０００００００００００１０）、命令（ＮＯＰ）は、バイトアドレス「Ｈ’６」から命令コード（Ｂ’００００００００００００１００１）が２バイト毎に順次格納される。各命令コードの開始アドレスは、それぞれバイト毎の境界となっているので最初のｂｉｔ０から始まり、「Ｈ’０」となる。
【０００５】
ラベル「Ｌ００１：」は、（ＣＭＰ／ＧＥ  Ｒ５，Ｒ４）、（ＡＤＤ  ＃−１，Ｒ４）の２つの命令からなる一連の処理であり、各命令の命令コードは、バイトアドレス「Ｈ’８」から２バイト毎に格納され、命令（ＣＭＰ／ＧＥ  Ｒ５，Ｒ４）は、バイトアドレス「Ｈ’８」から命令コード（Ｂ’００１１０１０００１０１００１１）、命令（ＡＤＤ  ＃−１，Ｒ４）は、バイトアドレス「Ｈ’ａ」から命令コード（Ｂ’０１１１０１００１１１１１１１１）が２バイト毎に順次格納される。各命令コードの開始アドレスは、前述のラベル「＿ａａａ：」と同じく全ての命令コードがバイト毎に格納されているので最初のｂｉｔ０から始まり、「Ｈ’０」となる。
【０００６】
ラベル「Ｌ００２：」は、（ＴＳＴ  Ｒ４，Ｒ４）、（ＢＦ  Ｌ００１）、（ＲＴＳ）、（ＮＯＰ）の４つの命令からなる一連の処理であり、各命令の命令コードは、バイトアドレス「Ｈ’ｃ」から２バイト毎に格納され、命令（ＴＳＴ  Ｒ４，Ｒ４）は、バイトアドレス「Ｈ’ｃ」から命令コード（Ｂ’００１００１０００１００１０００）、命令（ＢＦ  Ｌ００１）は、バイトアドレス「Ｈ’ｅ」から命令コード（Ｂ’１０００１０１１１１１１１０１１）、命令（ＲＴＳ）は、バイトアドレス「Ｈ’１０」から命令コード（Ｂ’００００００００００００１０１１）、命令（ＮＯＰ）は、バイトアドレス「Ｈ’１２」から命令コード（Ｂ’００００００００００００１００１）が２バイト毎に順次格納される。各命令コードの開始アドレスは、前述の２つのラベル同様に、全ての命令コードがバイト毎に格納されているので最初のｂｉｔ０から始まり、「Ｈ’０」となる。
【０００７】
ラベル「Ｌ００３：」は、（．ＤＡＴＡ．Ｗ  Ｈ’０４００）、（．ＤＡＴＡ．Ｗ  Ｈ’０２００）のからなる２つのデータであり、各データを示す命令コードは、バイトアドレス「Ｈ’１４」から２バイト毎に格納され、（．ＤＡＴＡ．Ｗ  Ｈ’０４００）は、バイトアドレス「Ｈ’１４」から命令コード（Ｂ’０００００１００００００００００）、（．ＤＡＴＡ．Ｗ  Ｈ’０２００）は、バイトアドレス「Ｈ’１６」から命令コード（Ｂ’００００００１０００００００００）が２バイト毎に順次格納される。各データの開始アドレスも前述の３つのラベルと同じく、全ての命令コードがバイト毎に格納されているので最初のｂｉｔ０から始まり、「Ｈ’０」となる。
【０００８】
このような命令コードによって構成されるプログラムをＣＰＵが実行する実行過程を図７に示す。まず、ＣＰＵが所定のアドレス情報の生成を行ってメモリに送り、メモリが指定されたアドレス情報に従い、所定量の命令コード又はデータを取り出してＣＰＵに送る［フェッチ］（ＳＴ２００、２０１）。ＣＰＵは、メモリから（指定したアドレス）の命令コードのデコードを行い、内部の制御信号を生成し、［デコード］（ＳＴ２０２）、ＣＰＵ内の各部はこの制御信号に従いデコードされた命令コードを実行して［実行］（ＳＴ２０３）、レジスタに実行結果を書き戻す［ライトバック］（ＳＴ２０４）。この［フェッチ］→［デコード］→［実行］→[ライトバック］（ＳＴ２００〜ＳＴ２０４）を繰り返すことによりプログラムが実行される。
【０００９】
【発明が解決しようとする課題】
しかしながら、図６に示すように、従来の方法では、全ての命令コードがバイト単位になっており、所定のバイト毎に命令コードを読み込んで解読を行い、命令を実行すればよいが、データ長（ビット数）が同じであるため、命令コードの読み込みや、命令を解読して実行する時に、ＣＰＵのキャッシュのヒット率が悪化する、読み込み及び解読／実行時の時間が遅くなってしまうという問題がある。
【００１０】
従って、プログラムを構成する命令コードのコード長（ビット数）を低減し、命令コードの読み込みや解読／実行時間を短縮することに解決しなければならない課題を有する。
【００１１】
【課題を解決するための手段】
前記課題を解決するため、本発明に係る命令実行処理方法及び情報処理装置及び記録媒体は次のような構成にすることである。
【００１２】
（１）予め符号化された命令コードを所定の記憶／記録手段に格納し、該記憶／記録手段から前記予め符号化されている命令コードを読み出して復号化し、該復号化した命令コードを解読して所定の命令を実行することを特徴とする命令実行処理方法。
（２）前記命令コードの符号化は、ハフマン符号方式によることを特徴とする請求項１に記載の命令実行処理方法。
（３）前記命令コードの符号化は、算術符号方式によることを特徴とする請求項１に記載の命令実行処理方法。
【００１３】
（４）動作を行うのに必要最低限且つ十分な命令コードを組み合わせて構成されたプログラムに従い動作する情報処理装置において、単一又は複数個の前記命令コードは、予め所定の方式に基づいて符号化されていると共に、この符号化されている命令コードで用いるデータは１バイトの整数倍で形成されていることを特徴とする情報処理装置。
（５）前記命令コードの符号化は、ハフマン符号方式によることを特徴とする請求項４に記載の情報処理装置。
（６）ハフマン符号方式で符号化された前記命令コードが分岐命令である場合、該分岐命令の分岐アドレスで指定する分岐先のアドレスは、１バイトの整数倍の位置から開始することを特徴とする請求項４に記載の情報処理装置。
（７）ハフマン符号方式で符号化された前記命令コードが分岐命令である場合、分岐先のアドレス位置をビット単位で示すことを特徴とする請求項４に記載の情報処理装置。
（８）ハフマン符号方式で符号化された前記命令コードのコード長は、前記プログラムにおける命令コードの出現回数に依存することを特徴とする請求項４に記載の情報処理装置。
（９）ハフマン符号方式で符号化された前記命令コードのコード長は、前記プログラムにおける命令コードの実行回数に依存することを特徴とする請求項４に記載の情報処理装置。
（１０）前記命令コードの符号化は、算術符号方式によることを特徴とする請求項４に記載の情報処理装置。
（１１）算術符号方式により符号化された前記命令コードが分岐命令である場合、該分岐命令の分岐アドレスで指定する分岐先のアドレスは、１ビットの整数倍の位置から開始することを特徴とする請求項４に記載の情報処理装置。
（１２）算術符号方式により符号化された前記命令コードが分岐命令である場合、分岐先のアドレス位置をビット単位で示すことを特徴とする請求項４に記載の情報処理装置。
（１３）算術符号方式で符号化された前記命令コードのコード長は、前記プログラムにおける命令コードの出現回数に依存することを特徴とする請求項４に記載の情報処理装置。
（１４）算術符号方式で符号化された前記命令コードのコード長は、前記プログラムにおける命令コードの実行回数に依存することを特徴とする請求項４に記載の情報処理装置。
【００１４】
（１５）動作を行うのに必要最低限且つ十分な命令コードを組み合わせて構成されたプログラムが記録された記録媒体であって、単一又は複数個の前記命令コードは、予め所定の方式に基づいて符号化されていると共に、この符号化されている命令コードで用いるデータは１バイトの整数倍で形成されているプログラムが記録されていることを特徴とする記録媒体。
（１６）前記命令コードの符号化は、ハフマン符号方式によることを特徴とする請求項１５に記載の記録媒体。
（１７）ハフマン符号方式で符号化された前記命令コードが分岐命令である場合、該分岐命令の分岐アドレスで指定する分岐先のアドレスは、１バイトの整数倍の位置から開始することを特徴とする請求項１５に記載の記録媒体。
（１８）ハフマン符号方式で符号化された前記命令コードが分岐命令である場合、分岐先のアドレス位置をビット単位で示すことを特徴とする請求項１５に記載の記録媒体。
（１９）ハフマン符号方式で符号化された前記命令コードのコード長は、前記プログラムにおける命令コードの出現回数に依存することを特徴とする請求項１５に記載の記録媒体。
（２０）ハフマン符号方式で符号化された前記命令コードのコード長は、前記プログラムにおける命令コードの実行回数に依存することを特徴とする請求項１５に記載の記録媒体。
（２１）前記命令コードの符号化は、算術符号方式によることを特徴とする請求項１５に記載の記録媒体。
（２２）算術符号方式により符号化された前記命令コードが分岐命令である場合、該分岐命令の分岐アドレスで指定する分岐先のアドレスは、１ビットの整数倍の位置から開始することを特徴とする請求項１５に記載の記録媒体。
（２３）算術符号方式により符号化された前記命令コードが分岐命令である場合、分岐先のアドレス位置をビット単位で示すことを特徴とする請求項２２に記載の記録媒体。
（２４）算術符号方式で符号化された前記命令コードのコード長は、前記プログラムにおける命令コードの出現回数に依存することを特徴とする請求項１５に記載の記録媒体。
（２５）算術符号方式で符号化された前記命令コードのコード長は、前記プログラムにおける命令コードの実行回数に依存することを特徴とする請求項１５に記載の記録媒体。
【００１５】
このような命令実行処理方法及び情報処理装置及び記録媒体を用いることにより、予めハフマン符号方式や算術符号方式により符号化され、コード長が短縮された命令コードによって構成されたプログラム従って命令実行処理が行われるので、命令コードの読み込み及び解読／実行時間が短縮される。
【００１６】
【発明の実施の形態】
次に、本発明に係る命令実行処理方法及び情報処理装置及び記録媒体の実施の形態を図面を参照して説明する。
【００１７】
図１に示す命令コード群（プログラム）は、従来技術の説明で図６に示した命令コードに対して、予めハフマン符号化（又は算術符号化）を行った場合の命令コードであり、メモリ２００内の命令コードを格納した番地を示すバイトアドレス（Ｈ’０〜Ｈ’ａ）と、命令コードの境界を示すビットアドレスと、複数の命令コードによる一連処理単位を示すラベルと、各処理を表す命令と、この命令に対応するハフマン符号化（又は算術符号化）された命令コードとからなっている。
【００１８】
又、図２は、図１に示した命令コードが予め符号化され、メモリに格納された状態におけるビット配列を示したものであり、図１に示されている命令に順次１〜１３の命令番号を付与した対象表（図２（ｂ））と、この対照表の命令番号と、バイトアドレス（Ｈ’０〜Ｈ’ａ）における命令コードの各ビットの格納状態と命令コードの境界を示した配置表（図２（ａ））である。
【００１９】
このような図１と図２を参照しながら、予めハフマン符号化（又は算術符号化）された命令コードのメモリ内の配置についての説明を行う。
【００２０】
ラベル「＿ａａａ：」は、（ＭＯＶ．Ｗ  Ｌ００３，Ｒ４）、（ＭＯＶ．Ｗ  Ｌ００３＋２，Ｒ５）、（ＢＲＡ  Ｌ００２）、（ＮＯＰ）の４つの命令からなり、命令（ＭＯＶ．Ｗ  Ｌ００３，Ｒ４）で、ラベル「ＬＯＯ３：」に格納されているデータ（．ＤＡＴＡ．Ｗ  Ｈ’０４００）をレジスタＲ４に格納し、命令（ＭＯＶ．Ｗ  Ｌ００３＋２，Ｒ５）でラベル「Ｌ００３：」のバイトアドレスを２バイトすすめ、格納されているデータ（．ＤＡＴＡ．Ｗ  Ｈ’０２００）をレジスタＲ５を格納し、命令（ＢＲＡ）は、ラベル「Ｌ００２：」に分岐する分岐命令で、命令（ＮＯＰ）でラベル「＿ａａａ：］終了となる一連の処理であり、各命令コードは、バイトアドレスＨ’０、Ｈ’１の順に格納される。
【００２１】
命令（ＭＯＶ．Ｗ  Ｌ００３，Ｒ４）は、バイトアドレス「Ｈ’０」のｂｉｔ０〜ｂｉｔ３に命令コード（Ｂ’１００１）として格納され、命令コードの開始アドレスの境界を示すビットアドレスは、バイトアドレス「Ｈ’０」の最初のｂｉｔ０から始まるので、「Ｈ’０」となる。命令（ＭＯＶ．Ｗ  Ｌ００３＋２，Ｒ５）は、引き続いてバイトアドレス「Ｈ’０」のｂｉｔ４〜ｂｉｔ７に命令コード（Ｂ’１０１０）として格納され、命令コードの開始アドレスの境界を示すビットアドレスはバイトアドレス「Ｈ’０」の４ビット目から始まるので「Ｈ’４」となる。命令（ＢＲＡ  Ｌ００２）は、バイトアドレス「Ｈ’１」のｂｉｔ０〜ｂｉｔ４に命令コード（Ｂ’１１１０１）として格納され、命令コードの開始アドレスの境界を示すビットアドレスは、バイトアドレス「Ｈ’１」の最初のｂｉｔ０から始まるので、「Ｈ’０」となる。命令（ＮＯＰ）は、同じバイトアドレス「Ｈ’１」のｂｉｔ５〜ｂｉｔ７及びバイトアドレス「Ｈ’２」のｂｉｔ０に命令コード（Ｂ’０００１）として格納され、命令コードの開始アドレスの境界を示すビットアドレスは、バイトアドレス「Ｈ’１」の５ビット目から始まるので、「Ｈ’５」となる。
【００２２】
ラベル「Ｌ００１：」は、（ＣＭＰ／ＧＥ  Ｒ５，Ｒ４）、（ＡＤＤ  ＃−１，Ｒ４）の２つの命令からなり、命令（ＣＭＰ／ＧＥ  Ｒ５，Ｒ４）で、レジスタＲ５とレジスタＲ４に格納されたデータを比較し、比較結果に基づいて命令（ＡＤＤ  ＃−１，Ｒ４）で、レジスタＲ４の値から演算（−１）を行い、この演算結果をレジスタＲ４に格納する一連の処理であり、命令コードは、バイトアドレスＨ’２へ順に格納される。
【００２３】
命令（ＣＭＰ／ＧＥ  Ｒ５，Ｒ４）は、前述の命令（ＮＯＰ）に引き続いて、バイトアドレス「Ｈ’２」のｂｉｔ１〜ｂｉｔ４へ命令コード（Ｂ’００１１）として格納され、命令コードの開始アドレスの境界を示すビットアドレスは、バイトアドレス「Ｈ’２」の１ビット目から始まるので、「Ｈ’１」となる。命令（ＡＤＤ  ＃−１，Ｒ４）は、同じくバイトアドレス「Ｈ’２」へ命令コード（Ｂ’０１１１０１００）として格納される。命令コードの開始アドレスの境界を示すビットアドレスは、バイトアドレス「Ｈ’２」の５ビット目から始まるので、「Ｈ’５」となる。
【００２４】
ラベル「Ｌ００２：」は、（ＴＳＴ  Ｒ４，Ｒ４）、（ＢＦ  Ｌ００１）、（ＲＴＳ）、（ＮＯＰ）の４つの命令からなり、  命令（ＴＳＴ  Ｒ４，Ｒ４）は、アドレスＲ４に格納された値の真偽を行い、命令（ＢＦ  Ｌ００１）は、命令（ＴＳＴ  Ｒ４，Ｒ４）が”偽”の場合にラベル「Ｌ００１：」に分岐し、命令（ＲＴＳ）は、命令（ＴＳＴ  Ｒ４，Ｒ４）が”真”の場合に「Ｌ００２：」を抜ける処理を行い、命令（ＮＯＰ）で処理が終了する一連の処理であり、命令コードは、バイトアドレス「Ｈ’３」から順に格納される。
【００２５】
命令（ＴＳＴ  Ｒ４，Ｒ４）は、前述の命令（ＡＤＤ  ＃−１，Ｒ４）に引き続いて、バイトアドレス「Ｈ’３」のｂｉｔ５〜ｂｉｔ７及びバイトアドレス「Ｈ’４」のｂｉｔ０〜ｂｉｔ５に命令コード（Ｂ’００１００１０００）として格納され、命令コードの開始アドレスの境界を示すビットアドレスは、バイトアドレス「Ｈ’３」の５ビット目から始まるので、「Ｈ’５」となる。命令（ＢＦＬ００１）は、バイトアドレス「Ｈ’４」のｂｉｔ６〜ｂｉｔ７及びバイトアドレス「Ｈ’５」のｂｉｔ０〜ｂｉｔ６に命令コード（Ｂ’１０００１０１１１）として格納され、命令コードの開始アドレスの境界を示すビットアドレスは、バイトアドレス「Ｈ’４」の６ビット目から始まるので「Ｈ’６」となる。命令（ＲＴＳ）は、バイトアドレス「Ｈ’５」のｂｉｔ７及び「Ｈ’６」のｂｉｔ０〜ｂｉｔ７、「Ｈ’７」のｂｉｔ０〜ｂｉｔ３に命令コード（Ｂ’１０００００００００００）として格納され、命令コードの開始アドレスの境界を示すビットアドレスは、バイトアドレス「Ｈ’５」の７ビット目から始まるので「Ｈ’７」となる。命令（ＮＯＰ）は、バイトアドレス「Ｈ’７」のｂｉｔ３〜ｂｉｔ６に命令コード（Ｂ’０００１）として格納され、命令コードの開始アドレスの境界を示すビットアドレスは、バイトアドレス「Ｈ’７」の３ビット目から始まるので「Ｈ’３」となる。ここで、バイトアドレス「Ｈ’７」のｂｉｔ７に、命令番号１１の境界調整データ（図２（ｂ）参照）として、１ビットの調整ビットを挿入し、以後続くプログラムで用いるデータとの境界とする。
【００２６】
ラベル「Ｌ００３：」は、プログラム内で用いられるデータ（．ＤＡＴＡ．ＷＨ’０４００）、（．ＤＡＴＡ．Ｗ  Ｈ’０２００）の２つからなり、プログハフマン符号化（又は算術符号化）等の符号化処理は行われずにメモリ２００に格納する。（．ＤＡＴＡ．Ｗ  Ｈ’０４００）は、バイトアドレス「Ｈ’８」のｂｉｔ０〜ｂｉｔ７及びバイトアドレス「Ｈ’９」のｂｉｔ０〜ｂｉｔ７に命令コード（Ｂ’０００００１００００００００００）として格納し、命令コードの開始アドレスの境界を示すビットアドレスは、バイトアドレス「Ｈ’８」の最初のｂｉｔ０から始まるので、「Ｈ’０」となる。（．ＤＡＴＡ．Ｗ  Ｈ’０２００）は、バイトアドレス「Ｈ’ａ」のｂｉｔ０〜ｂｉｔ７及び「Ｈ’ｂ」のｂｉｔ０〜ｂｉｔ７に命令コード（Ｂ’００００００１０００００００００）として格納し、命令コードの開始アドレスの境界を示すビットアドレスは、バイトアドレス「Ｈ’ａ」の最初のｂｉｔ０から始まるので、「Ｈ’０」となる。
【００２７】
各命令コードの開始アドレスは必ずしもバイト境界ではなく、命令コード長もバイト単位であるとは限らない。又、命令コードのハフマン符号化（又は算術符号化）は、プログラム内における出現頻度や実行回数に基づいて（依存して）符号化を行う場合もある。尚、命令コードが用いるデータは符号化を行わず、従来と同様にバイトの整数倍のコード長であり、また、開始アドレスもバイトの整数倍のアドレスで開始する。又、分岐処理を指示する命令コードによって指定される分岐先のアドレスは、１ビットの整数倍のアドレスから開始される。又、分岐先のアドレス位置はビット単位で示されているので、分岐先命令コードに直接分岐する。
【００２８】
次に、このように予め符号化された命令コードによって動作する情報処理装置について説明する。
【００２９】
図３は、情報処理装置のＣＰＵとメモリの構成を簡略化したブロック図であり、制御部１１０と、データパス１２０と、外部インターフェイス１３０とからなるＣＰＵ１００と、予めハフマン符号化（又は算術符号化）された命令（コード）２１０及びデータ２２０を記憶しているメモリ２００とから構成されており、ＣＰＵ１００とメモリ２００は、アドレスバス３００とデータバス４００で接続されている。
【００３０】
ＣＰＵ１００の制御部１１０は、メモリ２００に格納されている命令コード２１０及びデータ２２０を読み出すためのアドレス情報を生成するアドレス生成器１１１と、アドレス生成器１１２からのアドレス情報や外部バスインターフェイス１３０を介してメモリ２００から送られてくるハフマン符号化（又は算術符号化）された命令コード２１０を復号化して命令デコーダ１１３や外部バスインターフェイス１３０へ送る復号器１１２と、復号器１１２で復号された命令コード２１０を解読してアドレス生成器１１１やデータパス１２０へ送る命令デコーダ１１３とから構成されている。
【００３１】
ＣＰＵ１００のデータパス１２０は、制御部１１０の命令デコーダ１１３からの指示に従い、汎用レジスタ１２２に一時格納してあるデータ２２０等の演算を行う演算器１２１と、演算器１２１を介して送られてくる命令デコーダ１１３からの指示に従い、外部バスインターフェイス１３０（データバス４００）を介してメモリ２００と演算器１２１との間のデータ２２０等のやり取りや、演算器１２１で演算されたデータ２２０等の一時格納を行う複数の汎用レジスタ１２２とから構成されている。
【００３２】
外部パスインターフェイス部１３０は、ＣＰＵ１００の制御部１１０やデータパス１２０とメモリ２００との間でアドレスバス３００及びデータバス４００を介してやり取りされる命令コード２１０やデータ２２０等の入出力制御を行う。
【００３３】
メモリ２００は、所定のアドレスに予めハフマン符号化（又は算術符号化）された命令コード２１０とデータ２２０とが格納されており、ＣＰＵ１００の外部インターフェイス１３０とアドレスバス３００及びデータバス４００と接続され、ＣＰＵ１００の指示に従ってハフマン符号化（又は算術符号化）された命令コード２１０やデータ２２０を送り、ＣＰＵ１００からの演算データを記憶する。
尚、ハフマン符号化（又は算術符号化）された命令コード２１０やデータ２２０は、情報処理装置が読みとり可能な記録媒体に記録しておき、この記録媒体から情報処理装置のＲＡＭ等に命令コード２１０やデータ２２０を読み出して処理を行うようにしても良い。
【００３４】
このようなＣＰＵ１００とメモリ２００を備えた情報処理装置により予めハフマン符号化（又は算術符号化）した命令コードに従い命令を実行した場合の実行過程を図４を用いて説明する。
【００３５】
まず、アドレス生成器１１１は、メモリ２００に格納されている予めハフマン符号化（又は算術符号化）された命令コード２１０やデータ２２０を読み出す為のアドレス情報の生成を行い、生成したアドレス情報を復号器１１２に送る。復号器１１２は、アドレス生成器１１１からのアドレス情報を外部バスインターフェイス１３０→アドレスバス３００を介し、メモリ２００に送る（ＳＴ１００）。
【００３６】
メモリ２００は、アドレスバス３００を介してＣＰＵ１００から送られてくるアドレス情報で指定されているメモリ２００内のアドレスにある予めハフマン符号化（又は算術符号化）された命令コード２１０を取り出し、データバス４００を介してＣＰＵ１００へ送る（ＳＴ１０１）。
【００３７】
ＣＰＵ１００の復号器１１２は、データバス４００→外部バスインターフェイス１３０を介して送られてくるハフマン符号化（又は算術符号化）された命令コード２１０を復号化し、命令デコーダ１１３に送る（ＳＴ１０３）。命令デコーダ１１３は、復号化された命令コード２１０を解読し、ＣＰＵ１００の各部が解読された命令コード２１０に従ってそれぞれの処理を実行し（ＳＴ１０４）、実行結果を所定の汎用レジスタに書き戻す（ＳＴ１０５）。これを順次繰り返すことにより所定の処理を実行する（ＳＴ１００〜ＳＴ１０５）。
【００３８】
例えば、メモリ２００に格納されているデータ２２０に対して、ある演算処理を行う場合は、まず、制御部１１０において、アドレス生成器１１１が、演算処理するデータ２２０をＣＰＵ１００に取り出すための予め符号化された命令コード２１０が格納されているメモリ２００のアドレス情報を生成する。生成されたアドレス情報は、復号器１１２→外部バスインターフェイス１３０→アドレスバス３００を介してメモリ２００に送られる。
【００３９】
メモリ２００は、ＣＰＵ１００からのアドレス情報に従い、メモリ２００内のアドレスにあるデータ２２０を取り出し、ＣＰＵ１００に送る。尚、データ２２０は従来と同様に符号化されていない（１バイトの整数倍のデータ長）。ＣＰＵ１００は、メモリ２００からのデータ２２０をデータバス４００→外部バスインターフェイス１３０を介してデータパス１２０の汎用レジスタ１２２に格納する。
【００４０】
続いて、ＣＰＵ１００は、制御部１１０のアドレス生成器１１１により、演算処理の実行命令となる予めハフマン符号化（又は算術符号化）された命令コード２１０を取り出すため、この命令コード２１０が格納されているメモリ２００のアドレス情報を生成する。生成されたアドレス情報は、復号器１１２→外部バスインターフェイス１３０→アドレスバス３００を介してメモリ２００に送られる。メモリ２００は、ＣＰＵ１００からのアドレス情報に従い、メモリ２００内のアドレスにある予めハフマン符号化（又は算術符号化）された命令コード２１０（演算実行命令）を取り出し、ＣＰＵ１００に送る。
【００４１】
ＣＰＵ１００は、メモリ２００からの命令コード２１０（演算実行命令）をデータバス４００→外部バスインターフェイス１３０を介して制御部１０の復号器１１２に取り込み、復号化を行い、命令デコーダ１１３に送る。命令デコーダ１１３は、復号化された命令コード２１０’を解読する。解読された命令コード２１０’＝演算処理の実行命令に従い、命令デコーダ１１３がデータパス１２０の演算器１２１に演算実行要求を送る。演算器１２１は、命令デコーダ１１３からの演算実行要求に従い汎用レジスタ１２２に格納されているデータ２２０に対して所定の演算を行い、その演算結果を再び汎用レジスタ１２２に格納する。
【００４２】
このように、ＣＰＵ１００の制御部１１０が予め符号化された命令コード２１０やデータ２２０のアドレス情報を生成して、メモリ２００に送り、メモリ２００が指定されたアドレス情報に従って予めハフマン符号化（又は算術符号化）された命令コード２１０、データ２２０を取り出してＣＰＵ１００に送り、ＣＰＵ１００が受け取った命令コード２１０を解読して、ＣＰＵ１００内の各部が解読された命令に従い所定の処理を実行するということを繰り返す。
【００４３】
次に、このような符号化された命令コードで動作する情報処理装置５００Ａと情報処理装置５００Ｂとがネットワーク６００で接続されている場合について図５を用いて説明する。
【００４４】
図５の情報処理装置５００Ａは、ＣＰＵ５１０ａと、このＣＰＵ５２０ａとバス上に接続されているキーボード５２１ａからの入力制御を行うキーボードＩＦ５２０ａと、データ処理の一時格納を行うＲＡＭ５３０ａ、各種制御情報が予め記録されているＲＯＭ５４０ａと、各種データを記録する記録媒体であるディスク５５０ａの入出力を制御するディスクＩ／Ｆ５５１ａと、ネットワーク６００と接続し、入出力を制御するネットワークＩ／Ｆ５６０ａと、キーボードＩ／Ｆ５６０ａを介してＣＰＵ５１０ａに指示／入力を行うキーボード５２１ａと、ディスクＩ／Ｆ５５０ａを介して各種データを記録するディスク５５１ａとから構成される。
【００４５】
一方、情報制御装置５００Ｂは、情報制御装置５００Ａと同様に、ＣＰＵ５１０ｂと、このＣＰＵ５２０ｂとバス上に接続されているキーボード５２１ｂからの入力制御を行うキーボードＩＦ５２０ｂと、データ処理の一時格納を行うＲＡＭ５３０ｂ、各種制御情報が予め記録されているＲＯＭ５４０ｂと、各種データを記録する記録媒体であるディスク５５０ｂの入出力を制御するディスクＩ／Ｆ５５１ｂと、ネットワーク６００と接続し、入出力を制御するネットワークＩ／Ｆ５６０ｂと、キーボードＩ／Ｆ５６０ｂを介してＣＰＵ５１０ｂに指示／入力を行うキーボード５２１ｂと、ディスクＩ／Ｆ５５０ｂを介して各種データを記録するディスク５５１ｂとから構成される。
【００４６】
このような情報処理装置５００Ａと情報処理装置５００Ｂとがネットワーク（通信回線）６００を介して接続されている場合において、例えば、情報処理装置５００のＣＰＵ５１０ａが動作するための予めハフマン符号化（又は算術符号化）された命令コードで構成されたプログラムやデータは、、記録媒体であるディスク５５１ａやＲＯＭ５４０ａ等に格納されおり、このプログラムやデータをＲＡＭ５３０ａ等にコピーして実行すると同時に、ネットワーク６００を介して、情報処理装置５００Ｂの記録媒体ディスク５５１ｂやＲＯＭ５４０ｂに送り、情報処理装置６００が、このプログラムやデータをＲＡＭ５３０ｂに一時格納して、ＣＰＵ５１０ｂにより情報処理装置５００Ａからのプログラムやデータを実行し、その実行結果を情報処理装置５００Ａに送るということも可能である。ネットワーク６００を介して相互の情報処理装置がやり取りを行う場合でも予めハフマン符号化（又は算術符号化）された命令コードであればデータ量（ビット数）が少ないので伝送速度が速く、各装置内における命令コードの実行処理も速くなる。
【００４７】
【発明の効果】
以上説明したように、ＣＰＵを動作させる為のプログラムの命令コードを予め符号化することによりデータ量を削減し、ＣＰＵの命令コードの読み込みにかかる時間や命令コードの解読にかかる時間を低減し、ＣＰＵ実行速度の向上、即ち、情報処理装置内の命令伝達速度の向上を図ることができる。
【図面の簡単な説明】
【図１】本発明に係る情報処理装置を動作させるプログラムの命令コードの一例を示した説明図である。
【図２】本発明に係る情報処理装置を動作させるプログラムの命令コード（図１参照）のメモリ内におけるビット配置の一例を示した説明図である。
【図３】本発明に係る情報処理装置におけるＣＰＵ構成を略示的に示した構成図である。
【図４】本発明に係る情報処理装置の命令コードの実行処理過程示したフローチャートである。
【図５】本発明に係る情報処理装置間でネットワークを介して命令コードを実行する場合のネットワーク構成を略示的に示した構成図である。
【図６】従来の情報処理装置を動作させるプログラムの命令コードの一例を示した説明図である。
【図７】従来の情報処理装置の命令コードの実行処理の過程示したフローチャートである。
【符号の説明】
１００；ＣＵＰ、１１０；制御部、１１１；アドレス生成器、１１２；復号器、１１３；命令デコーダ、１２０；データパス、１２１；演算器、１２２；汎用レジスタ、１３０；外部バスインターフェイス、２００；メモリ、２１０；命令コード、２２０；データ、３００；アドレスバス、４００；データバス、５００Ａ；情報処理装置、５１０ａ；ＣＰＵ、５２０ａ；キーボードＩ／Ｆ、５２１ａ；キーボード、５３０ａ；ＲＡＭ、５４０ａ；ＲＯＭ、５５０ａ；ディスクＩ／Ｆ、５５１ａ；ディスク、５６０ａ；ネットワークＩ／Ｆ、５００Ｂ；情報処理装置、５１０ｂ；ＣＰＵ、５２０ｂ；キーボードＩ／Ｆ、５２１ｂ；キーボード、５３０ｂ；ＲＡＭ、５４０ｂ；ＲＯＭ、５５０ｂ；ディスクＩ／Ｆ、５５１ｂ；ディスク、５６０ｂ；ネットワークＩ／Ｆ、６００；ネットワーク
【図１】
0004572480.tif 000002
【図２】
0004572480.tif 000003
【図３】
0004572480.tif 000004
【図４】
0004572480.tif 000005
【図５】
0004572480.tif 000006
【図６】
0004572480.tif 000007
【図７】
0004572480.tif 000008