(57)【要約】【課題】可変長命令セットに対して新しいアプローチの圧縮技術を提供する。【解決手段】アプリケーションプログラムの使用頻度の高い命令を短い命令長の命令とすることでプログラムコードを縮小してメモリに記憶し、変換を行ってＣＰＵで実行する。高使用頻度の命令を基本命令マップに割り当て、低使用頻度の命令を拡張命令マップに割り当てることで新方式の命令セットを作成する。新方式の命令セットに対応するアセンブラ装置を用意し、アセンブラ装置によって作成された圧縮したプログラムコードをメモリ４に格納する。本来の命令セットと新方式の命令セットとその即値幅を対応付ける実効命令テーブル３と、この実効命令テーブル３に従ってメモリ４から読み出されたデータを形態変換してＣＰＵ１に伝えるデータ転送中継制御器２とを備える。【選択図】  図１
2004258711.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを格納するメモリと、
前記プログラムを実行するＣＰＵと、
高使用頻度の命令を基本命令マップに、低使用頻度の命令を拡張命令マップにそれぞれ割り付けた命令セットと、本来の命令セットと、その命令が持つ即値幅とを対応付けた情報を格納する実効命令テーブルと、
前記メモリから読み出したデータを、そのデータが命令の場合は前記実効命令テーブルとの間でのやり取りに基づいて形態変換を行い、即値の場合はそのまま前記ＣＰＵに伝達するデータ転送中継制御器とを備え、
前記メモリに圧縮されたプログラムを格納し、前記メモリから読み出したデータを前記データ転送中継制御器および前記実効命令テーブルを介して前記ＣＰＵに伝達することを特徴とする情報処理装置。
【請求項２】
前記メモリから読み出したデータを前記実効命令テーブルに書き込むためのアドレスとして、
前記メモリからのデータ読み出しのためのアドレスを作成するメモリアドレス発生器と、
前記実効命令テーブルにデータを書き込むためのアドレスを作成する実効命令アドレス発生器とを備える請求項１に記載の情報処理装置。
【請求項３】
前記実効命令テーブルは、格納された命令の命令長を示す情報を備え、
前記データ転送中継制御器は、前記命令長と前記即値幅の情報に基づいて前記メモリのアクセスのためのアドレスを作成するメモリ用プログラムカウンタを備える請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記実効命令テーブルは、格納された命令の命令長を示す情報を備え、
前記データ転送中継制御器は、前記命令長と前記即値幅の情報に基づいて前記ＣＰＵのプログラムカウンタを制御する命令サイズの情報を生成して前記ＣＰＵに送出する命令サイズ出力器を備える請求項１または請求項２に記載の情報処理装置。
【請求項５】
複数の圧縮形式で圧縮された分岐命令を含むプログラムを格納するメモリと、
前記プログラムを実行するＣＰＵと、
高使用頻度の命令を基本命令マップに、低使用頻度の命令を拡張命令マップにそれぞれ割り付けた命令セットと、本来の命令セットと、その命令が持つ即値幅と、その命令の命令長とを対応付けた情報を格納するもので、前記複数の圧縮形式の種類数に相当する複数の実効命令テーブルと、
前記メモリから読み出したデータを、そのデータが命令の場合は前記選択された実効命令テーブルとの間でのやり取りに基づいて形態変換を行い、即値の場合はそのまま前記ＣＰＵに伝達し、前記ＣＰＵのプログラムカウンタを制御するデータ転送中継制御器とを備え、
前記データ転送中継制御器は、
前記メモリから読み出したデータに基づいて前記複数の実効命令テーブルのうちから対応する実効命令テーブルを選択するテーブル選択器と、
前記命令長と前記即値幅の情報に基づいて前記ＣＰＵのプログラムカウンタを制御する命令サイズの情報を生成して前記ＣＰＵに送出する命令サイズ出力器とを備える情報処理装置。
【請求項６】
プログラムを格納するメモリと、
前記プログラムを実行するＣＰＵと、
高使用頻度の単一命令および連続する複数命令を基本命令マップに、低使用頻度の命令を拡張命令マップにそれぞれ割り付けた命令セットと、本来の命令セットと、前記連続する複数命令の個数と、その命令が持つ即値幅とを対応付けた情報を格納する実効命令テーブルと、
前記メモリから読み出したデータを、そのデータが単一命令の場合は前記実効命令テーブルとの間でのやり取りに基づいて形態変換を行い、そのデータが連続する複数命令の場合は各命令ごとに同様の形態変換を行い、即値の場合はそのまま前記ＣＰＵに伝達し、前記ＣＰＵのプログラムカウンタを制御するデータ転送中継制御器とを備える情報処理装置。
【請求項７】
プログラムを格納するメモリと、
前記プログラムを実行するＣＰＵと、
高使用頻度の単一命令および連続する複数命令を基本命令マップに、低使用頻度の命令を拡張命令マップにそれぞれ割り付けた命令セットと、本来の命令セットと、前記連続する複数命令の個数と、その命令が持つ即値幅とを対応付けた情報を格納する実効命令テーブルと、
前記メモリから読み出したデータを、そのデータが単一命令の場合は前記実効命令テーブルとの間でのやり取りに基づいて形態変換を行い、そのデータが連続する複数命令の場合は各命令ごとに同様の形態変換を行い、即値の場合はそのまま前記ＣＰＵに伝達し、前記ＣＰＵのプログラムカウンタを制御し、連続する複数命令の場合はどの命令まで変換したかのポイントを記憶するデータ転送中継制御器とを備える情報処理装置。
【請求項８】
アプリケーションプログラムの命令の発生頻度を算出し、発生頻度の高い順に命令をリスト化する命令頻度算出手段と、
前記命令頻度算出手段で算出した前記発生頻度に従って命令マップを作成する命令マップ作成手段とを備え、
前記命令マップ作成手段で作成した前記命令マップを用いて前記アプリケーションプログラムにアセンブルおよびリンカの処理を行い、縮小された命令コードを発行するアセンブラ装置。
【請求項９】
アプリケーションプログラムの命令の発生頻度を算出し、発生頻度の高い順に命令をリスト化する命令頻度算出手段と、
前記命令頻度算出手段で算出した前記発生頻度に従って命令マップを作成する命令マップ作成手段とを備え、
前記命令マップ作成手段で作成した前記命令マップを用いて前記アプリケーションプログラムにアセンブルおよびリンカの処理を行い、
さらに、ＣＰＵで使用可能な命令マップを用いてアセンブル、リンカの処理を行った場合の分岐命令のアドレスと比較し、計算して分岐命令を再配置する分岐アドレス変換手段を備え、縮小された命令コードを発行するアセンブラ装置。
【請求項１０】
アプリケーションプログラムの命令の発生頻度を算出する命令頻度算出手段と、
前記アプリケーションプログラムの連続する複数命令の発生頻度を算出する複数命令頻度算出手段と、
前記命令頻度算出手段の結果と前記複数命令頻度算出手段の結果とを比較し、複数命令の発生頻度が高い場合にその複数命令を１命令とおき、複数命令の発生頻度が低い場合は無視して命令をリスト化する頻度比較手段と、
前記頻度比較手段で作成された命令リストに従って命令マップを作成する命令マップ作成手段とを備え、
前記命令マップ作成手段で作成した前記命令マップを用いて前記アプリケーションプログラムにアセンブルおよびリンカの処理を行い、縮小された命令コードを発行するアセンブラ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムコードサイズを圧縮する情報処理装置およびそれに関連するアセンブラ装置に関する。
【０００２】
【従来の技術】
近年、半導体技術の進展によりマイクロプロセッサの動作周波数が向上したために、従来であればハードウェアが必要であった機能をソフトウェアで実現する機会が増えており、プログラムサイズは劇的に増加している。加えて、マイクロプロセッサの応用分野は多様化しており、プログラムを機械語にコード化する際に、あらかじめ定められた命令フォーマットが必ずしもすべての応用分野に最適ではなく、応用分野によっては、命令長の長い命令の使用頻度が高く、プログラムサイズが大きくなるケースが増えている。特に、ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）である可変長命令セットに対応したマイクロプロセッサでは、その傾向が強い。ここで述べた可変長命令セットとは、命令長の短い基本命令と、複数の拡張コードを加えた命令長の長い拡張命令との、複数の命令マップを持った命令セットのことである。一例として図１８に示すように、基本命令での命令コードは“ＦＦ”のように短く、拡張命令での命令コードは“ＦＤＦＦ”のように長い。
【０００３】
低使用頻度の命令の使用頻度をＦＬ、その短い命令長をＬＬで表し、高使用頻度の命令の使用頻度をＦＨ、その長い命令長をＬＨで表すと、トータルのプログラムサイズは、概念的に、Σ（ＦＬ＊ＬＬ）＋Σ（ＦＨ＊ＬＨ）で表され、より長いもの（ＬＨ＞ＬＬ）がより多くあるので（ＦＨ＞ＦＬ）、プログラムサイズが増加しがちである。このプログラムサイズの増加に伴って、メモリ容量も増大する。そこで、プログラムサイズの削減が課題となる。
【０００４】
既存技術として、ＣＩＳＣ（Ｃｏｍｐｌｅｘ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）の分野で、固定長命令セットを対象として命令を変換することでプログラムコードサイズを圧縮する技術（例えば非特許文献１）がある。
【０００５】
【非特許文献１】
ＭａｒｋＧａｍｅ，Ａｌａｎ  Ｂｌｏｃｋｅｒ、“ＣｏｄｅＰａｃｋ：ｃｏｄｅ  ｃｏｍｐｒｅｓｓｉｏｎ  ｆｏｒ  ＰｏｗｅｒＰＣ  Ｐｒｏｃｅｓｓｏｒｓ”  ［ｏｎｌｉｎｅ］、平成１２年５月１１日、［平成１４年８月７日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ−３．ｉｂｍ．ｃｏｍ／ｃｈｉｐｓ／ｔｅｃｈｌｉｂ／ｔｅｃｈｌｉｂ．ｎｓｆ／ｐｒｏｄｕｃｔｓ／ＣｏｄｅＰａｃｋ＞
【０００６】
【発明が解決しようとする課題】
上記のように、プログラムサイズの増加に伴い必要メモリ容量が増大しており、そのため、チップ面積が大きくなるという課題が存在する。したがって、メモリ容量の増大を抑えるシステムの実現が望まれている。固定長命令セットには既存の圧縮の技術が知られているが、これをそのまま可変長命令セットに適用することには困難が伴う。可変長命令セットにおいては従来技術の固定長命令セットを対象とするプログラムコードを圧縮する技術とは異なるアプローチをとる必要がある。
【０００７】
本発明は上記事情に鑑みてなされたものであり、可変長命令セットに対して新しいアプローチの圧縮技術を開発することにより、メモリ容量の削減を実現することを目的とする。
【０００８】
【課題を解決するための手段】
上記の課題を解決するために、本発明は次のような手段を講じる。その基本は、プログラムコードサイズを縮小してメモリに記憶し、形態変換を行ってＣＰＵで実行できるようにシステムである。
【０００９】
ＣＰＵが直接に実行可能な形態の本来の命令セットの場合には、一般的に、アプリケーションプログラムの命令についての使用頻度と、命令長の長短に関係する基本命令・拡張命令との対応関係が必ずしも合理的なものとはなっていない。命令長が短い基本命令の使用頻度に比べて、命令長が長い拡張命令の使用頻度が高いアプリケーションプログラムが頻出し、その結果として、プログラムサイズが増加し、メモリ容量が増大している。
【００１０】
そこで、本発明では、高使用頻度の命令を圧縮して基本命令マップに割り付け、低使用頻度の命令を変換して拡張命令マップに割り付ける状態で新たな命令セットを作成する。高使用頻度の命令の使用頻度をＦＨ、その短い命令長をＬＬで表し、低使用頻度の命令の使用頻度をＦＬ、その長い命令長をＬＨで表すと、トータルのプログラムサイズは、概念的に、Σ（ＦＨ＊ＬＬ）＋Σ（ＦＬ＊ＬＨ）で表され、より短いもの（ＬＬ＜ＬＨ）がより多くあるので（ＦＨ＞ＦＬ）、プログラムサイズを縮小することができる。このプログラムサイズの縮小に伴って、メモリ容量の削減を図ることができる。
【００１１】
しかし、この新たに作成した新方式の命令セットは、ＣＰＵが直接に実行できる形態とはなっていない。そこで、ＣＰＵが直接に実行可能な本来の命令セットの形態に戻す変換を行うようにする。この本来の命令セットの形態に戻す変換のために、実効命令テーブルとデータ転送中継制御器とを設けている。実効命令テーブルは、新方式の命令セットと本来の命令セットとその命令が持つ即値幅とを対応付けた情報（命令マップ）を格納している。データ転送中継制御器は、メモリから読み出したデータが命令の場合は実効命令テーブルの前記対応情報（命令マップ）に従って、読み出した命令をＣＰＵが直接実行可能な形態の命令に変換する。ただし、命令ではなく、命令に付随する即値（アドレスやデータ値）の場合は、もともと上記のような割り付けの切り替えは行わないで、ＣＰＵが直接認識可能である。したがって、読み出したデータが即値の場合は、実効命令テーブルによる変換は行わずに、そのままＣＰＵに伝達する。
【００１２】
以上を要するに、第１の解決手段として、本発明による情報処理装置は、プログラムを格納するメモリと、前記プログラムを実行するＣＰＵとを備えた情報処理装置であって、さらに、次のような機能を有する構成要素、実効命令テーブルとデータ転送中継制御器とを備えている。すなわち、前記の実効命令テーブルは、高使用頻度の命令を基本命令マップに、低使用頻度の命令を拡張命令マップにそれぞれ割り付けた命令セットと、本来の命令セットと、その命令が持つ即値幅とを対応付けた情報を格納するように構成されている。前記のデータ転送中継制御器は、前記メモリから読み出したデータを、そのデータが命令の場合は前記実効命令テーブルとの間でのやり取りに基づいて形態変換を行い、即値の場合はそのまま前記ＣＰＵに伝達するように構成されている。基本命令コードと拡張命令コードとの本来の対応関係を維持するために即値幅の情報が利用される。
【００１３】
この構成によれば、実効命令テーブルとデータ転送中継制御器とを用いた命令形態変換により、圧縮したアプリケーションプログラムをＣＰＵが実行できるようになるのはもちろん、命令形態変換前の命令については高使用頻度の命令を命令長が短い基本命令に集約することで、命令セットひいてはプログラムサイズの縮小を図り、メモリ容量の削減を実現することができる。
【００１４】
第２の解決手段として、本発明による情報処理装置は、上記第１の解決手段において、前記メモリから読み出したデータを前記実効命令テーブルに書き込むためのアドレスとして、前記メモリからのデータ読み出しのためのアドレスを作成するメモリアドレス発生器と、前記実効命令テーブルにデータを書き込むためのアドレスを作成する実効命令アドレス発生器とを備えた構成とされている。
【００１５】
この構成による作用は次のとおりである。データ転送中継制御器と実効命令テーブルとを用いてメモリからデータを読み出し、そのデータを実効命令テーブルに書き込んだり、命令変換のために実効命令テーブルからデータを読み出す処理を行うときは、ＣＰＵの動作を一旦停止させる必要がある。ＣＰＵが直接に認識可能かどうかが事前には分からないからである。ＣＰＵを停止させると、メモリや実効命令テーブルにアクセスするためのアドレスを別途に発生させる必要がある。この機能を担うのがメモリアドレス発生器と実効命令アドレス発生器である。これにより、ＣＰＵの一旦停止中でもメモリや実効命令テーブルへのアクセスが可能となる。
【００１６】
第３の解決手段として、本発明による情報処理装置は、上記第１，２の解決手段において、前記実効命令テーブルは、格納された命令の命令長を示す情報を備え、前記データ転送中継制御器は、前記命令長と前記即値幅の情報に基づいて前記メモリのアクセスのためのアドレスを作成するメモリ用プログラムカウンタを備えた構成とされている。
【００１７】
この構成による作用は次のとおりである。新方式の命令セットと本来の命令セットとの間の命令長の転換があるために、アドレス管理を正しく行う必要がある。この機能を担うのがメモリ用プログラムカウンタである。これにより、ＣＰＵの一旦停止状態でも、メモリアクセスの正しいアドレス管理が行える。
【００１８】
第４の解決手段として、本発明による情報処理装置は、上記第１，２の解決手段において、前記実効命令テーブルは、格納された命令の命令長を示す情報を備え、前記データ転送中継制御器は、前記命令長と前記即値幅の情報に基づいて前記ＣＰＵのプログラムカウンタを制御する命令サイズの情報を生成して前記ＣＰＵに送出する命令サイズ出力器を備えた構成とされている。
【００１９】
この構成による作用は次のとおりである。実効命令テーブルから命令を読み出すときに、命令サイズ出力器によって命令長を管理し、その管理結果をＣＰＵに伝えることによりＣＰＵ自体のプログラムカウンタを制御するので、ＣＰＵは本来のプログラムカウンタを確認することができ、その結果として、分岐命令を実行する場合であっても、分岐の飛び先を間違えることはない。
【００２０】
第５の解決手段として、本発明による情報処理装置は、メモリに複数の圧縮形式で圧縮された分岐命令を含むプログラムを格納するとともに、実効命令テーブルも複数設ける構成とする。前記構成のメモリと、前記プログラムを実行するＣＰＵとを備えた情報処理装置であって、さらに、次のような機能を有する構成要素、複数の実効命令テーブルとデータ転送中継制御器とを備えている。すなわち、前記の実効命令テーブルは、高使用頻度の命令を基本命令マップに、低使用頻度の命令を拡張命令マップにそれぞれ割り付けた命令セットと、本来の命令セットと、その命令が持つ即値幅と、その命令の命令長とを対応付けた情報を格納するように構成されている。このような構成の実効命令テーブルを、前記複数の圧縮形式の種類数に相当する数だけ備えている。前記のデータ転送中継制御器は、前記メモリから読み出したデータを、そのデータが命令の場合は前記選択された実効命令テーブルとの間でのやり取りに基づいて形態変換を行い、即値の場合はそのまま前記ＣＰＵに伝達し、前記ＣＰＵのプログラムカウンタを制御するように構成されている。さらに、前記データ転送中継制御器は、前記メモリから読み出したデータに基づいて前記複数の実効命令テーブルのうちから対応する実効命令テーブルを選択するテーブル選択器と、前記命令長と前記即値幅の情報に基づいて前記ＣＰＵのプログラムカウンタを制する命令サイズの情報を生成して前記ＣＰＵに送出する命令サイズ出力器とを備えた構成とされている。
【００２１】
この構成による作用は次のとおりである。上記のように実効命令テーブルで使用するデータをメモリに格納する場合には、その格納分のメモリ容量が増大する。また、メモリから実効命令テーブルへデータの書き込みを行う作業が必要である。そこで、新方式の命令セットと本来の命令セットと命令即値幅と命令長とを対応付けた情報（命令マップ）をあらかじめ格納した実効命令テーブルを具備させる。ただし、実効命令テーブルが単一であれば、新方式の命令セットのデータ圧縮形式が１種類に限定されてしまう。このような限定を避け、特定の数種のアプリケーションに対応できるように、圧縮形式を異にする複数種類の実効命令テーブルを設ける。そして、テーブル選択器は、メモリから読み出した命令に応じていずれか所望の実効命令テーブルを選択する。このように構成することで、メモリ容量をさらに削減できるとともに、データの書き込みを不要化できる。
【００２２】
第６の解決手段として、本発明による情報処理装置は、プログラムを格納するメモリと、前記プログラムを実行するＣＰＵと、高使用頻度の単一命令および連続する複数命令を基本命令マップに、低使用頻度の命令を拡張命令マップにそれぞれ割り付けた命令セットと、本来の命令セットと、前記連続する複数命令の個数と、その命令が持つ即値幅とを対応付けた情報を格納する実効命令テーブルと、前記メモリから読み出したデータを、そのデータが単一命令の場合は前記実効命令テーブルとの間でのやり取りに基づいて形態変換を行い、そのデータが連続する複数命令の場合は各命令ごとに同様の形態変換を行い、即値の場合はそのまま前記ＣＰＵに伝達し、前記ＣＰＵのプログラムカウンタを制御するデータ転送中継制御器とを備えた構成とされている。ここでのキーワードは、「連続する複数命令」である。
【００２３】
この構成による作用は次のとおりである。連続する複数命令（複数の命令を１命令とする）の状態で新方式の命令セットの形態において圧縮したプログラムコードをメモリに格納することにより、メモリ容量のさらなる削減を実現できるとともに、メモリから実効命令テーブルへデータ書き込みを行う方式であるので、適用可能なアプリケーションに柔軟性・多様性をもたせることができる。
【００２４】
第７の解決手段として、本発明による情報処理装置は、プログラムを格納するメモリと、前記プログラムを実行するＣＰＵと、高使用頻度の単一命令および連続する複数命令を基本命令マップに、低使用頻度の命令を拡張命令マップにそれぞれ割り付けた命令セットと、本来の命令セットと、前記連続する複数命令の個数と、その命令が持つ即値幅とを対応付けた情報を格納する実効命令テーブルと、前記メモリから読み出したデータを、そのデータが単一命令の場合は前記実効命令テーブルとの間でのやり取りに基づいて形態変換を行い、そのデータが連続する複数命令の場合は各命令ごとに同様の形態変換を行い、即値の場合はそのまま前記ＣＰＵに伝達し、前記ＣＰＵのプログラムカウンタを制御し、連続する複数命令の場合はどの命令まで変換したかのポイントを記憶するデータ転送中継制御器とを備えた構成とされている。ここでのキーワードは「変換ポイントの記憶」である。
【００２５】
この構成による作用は次のとおりである。連続する複数命令についての形態変換中において、その複数命令の途中で割込み処理が発生すると、割込み処理の終了後に、割込みが発生した時点の状態に復帰できなくなる可能性がある。そこで、形態変換の対象となっている命令が連続する複数命令の場合には、複数命令中どの命令まで変換したかを記憶しておき、ＣＰＵのプログラムカウンタを制御することにより、複数命令の途中で割込みが発生した場合でも、割込み処理の終了後には、割込みが発生した時点の状態に正しく復帰することができ、複数命令連続方式でも、割込み処理に対応することができる。
【００２６】
以上は情報処理装置についての発明であるが、以下では、上記の情報処理装置に関連するアセンブラ装置の発明を説明する。
【００２７】
第８の解決手段として、本発明によるアセンブラ装置は、アプリケーションプログラムの命令の発生頻度を算出し、発生頻度の高い順に命令をリスト化する命令頻度算出手段と、前記命令頻度算出手段で算出した前記発生頻度に従って命令マップを作成する命令マップ作成手段とを備え、前記命令マップ作成手段で作成した前記命令マップを用いて前記アプリケーションプログラムにアセンブルおよびリンカの処理を行い、縮小された命令コードを発行するものである。このアセンブラ装置は、上記第１の解決手段の情報処理装置に適用される。
【００２８】
この構成によれば、高使用頻度の命令を基本命令マップに割り付けるとともに低使用頻度の命令を拡張命令マップに割り付けた新方式の命令セットは、実施の形態１の場合の情報処理装置に適した状態で、アプリケーションプログラムにかかわる命令コードと本来の命令セットとに対応付ける情報（命令マップ）を作成することができる。
【００２９】
第９の解決手段として、本発明によるアセンブラ装置は、アプリケーションプログラムの命令の発生頻度を算出し、発生頻度の高い順に命令をリスト化する命令頻度算出手段と、前記命令頻度算出手段で算出した前記発生頻度に従って命令マップを作成する命令マップ作成手段とを備え、前記命令マップ作成手段で作成した前記命令マップを用いて前記アプリケーションプログラムにアセンブルおよびリンカの処理を行い、さらに、ＣＰＵで使用可能な命令マップを用いてアセンブル、リンカの処理を行った場合の分岐命令のアドレスと比較し、計算して分岐命令を再配置する分岐アドレス変換手段を備え、縮小された命令コードを発行するものである。このアセンブラ装置は、上記第４の解決手段の情報処理装置に適用される。
【００３０】
この構成による作用は次のとおりである。分岐アドレス変換手段は、ＣＰＵのリンカで配置された分岐命令のアドレスと新方式のリンカで配置された同一の分岐命令のアドレスを比較した上で、分岐命令発生アドレスをＣＰＵのリンカで配置されたアドレスとし、分岐命令飛び先アドレスを新方式のリンカで配置するアドレスとして計算した場合の分岐命令を再配置する。その結果、分岐命令がある場合に、分岐先を間違えることなく動作する縮小された命令コードを作成することができる。
【００３１】
第１０の解決手段として、本発明によるアセンブラ装置は、アプリケーションプログラムの命令の発生頻度を算出する命令頻度算出手段と、前記アプリケーションプログラムの連続する複数命令の発生頻度を算出する複数命令頻度算出手段と、前記命令頻度算出手段の結果と前記複数命令頻度算出手段の結果とを比較し、複数命令の発生頻度が高い場合にその複数命令を１命令とおき、複数命令の発生頻度が低い場合は無視して命令をリスト化する頻度比較手段と、前記頻度比較手段で作成された命令リストに従って命令マップを作成する命令マップ作成手段とを備え、前記命令マップ作成手段で作成した前記命令マップを用いて前記アプリケーションプログラムにアセンブルおよびリンカの処理を行い、縮小された命令コードを発行するものである。このアセンブラ装置は、上記第６の解決手段の情報処理装置に適用される。ここでのキーワードは、「連続する複数命令」である。
【００３２】
この構成による作用は次のとおりである。命令マップ作成手段は頻度比較手段で作成された命令リストを参照して、テーブル書き換え特殊命令と拡張命令コードを加えて、基本命令マップと拡張命令マップに分けた命令マップを作成する。すなわち、発生頻度の高い複数の連続する命令を１つにまとめて命令長の短い命令とし、また、発生頻度の高い命令を命令長の短い命令とするので、メモリに格納する命令コードを縮小することができる。
【００３３】
【発明の実施の形態】
以下、本発明にかかわる情報処理装置の実施の形態を図面に基づいて詳細に説明する。
【００３４】
（実施の形態１）
図１は本発明の実施の形態１における情報処理装置の構成を示すブロック図である。
【００３５】
情報処理装置は、ＣＰＵ１、データ転送中継制御器２、実効命令テーブル３、メモリ４、ＣＰＵ命令アドレスバス５、ＣＰＵ命令データバス６、ＣＰＵウェイト信号ライン７、テーブル制御信号ライン８、テーブルアドレスバス９、テーブルデータバス１０、メモリアドレスバス１１、メモリデータバス１２、変換制御信号ライン１３およびテーブル選択信号ライン群１４から構成されている。図１８の可変長命令セットに対応するものとして、実効命令テーブル３は、基本命令マップ用の実効命令テーブル３ａと、拡張命令１マップ用の実効命令テーブル３ｂと、拡張命令２マップ用の実効命令テーブル３ｃを備えている。
【００３６】
図２はデータ転送中継制御器２の詳しい構成を示すブロック図である。データ転送中継制御器２は、テーブル設定部２０、格納メモリプログラムカウンタ（以下ではメモリ用ＰＣと称する）２１、読出データ判定器２２、ＣＰＵウェイト信号出力器２３、第１のセレクタ２４、第２のセレクタ２５、第３のセレクタ２６および変換制御カウンタ２７から構成されている。テーブル設定部２０は、メモリアドレス発生器３０および実効命令アドレス発生器３１から構成されている。
【００３７】
ＣＰＵ１は、ＣＰＵウェイト信号ライン７が“０”のときは通常の動作を行うよう制御し、ＣＰＵウェイト信号ライン７が“１”のときは動作を止めるよう制御し、ＣＰＵ命令アドレスバス５にプログラムカウンタ（以下ではＰＣと称する）の値をＣＰＵ命令アドレスとして出力し、ＣＰＵ命令データバス６から８ビットの命令を入力して命令を実行し、ＰＣの値を更新する。
【００３８】
データ転送中継制御器２は、ＣＰＵ命令アドレスバス５からＣＰＵ命令アドレスを入力し、メモリアドレスバス１１へアドレスを出力し、メモリデータバス１２からメモリデータを入力し、ＣＰＵ命令データバス６へ命令データを出力し、テーブル制御信号ライン８へテーブル書込み信号、テーブル読出し信号を出力し、テーブル選択信号をテーブル選択信号ライン群１４へ出力し、ＣＰＵウェイト信号ライン７へＣＰＵウェイト信号を出力し、テーブルアドレスバス９へアドレスを出力し、テーブルデータバス１０からテーブルデータを入力し、変換制御信号ライン１３から変換制御信号を入力する。
【００３９】
実効命令テーブル３は、図３に示す８ビットアドレスの各々にＣＰＵ１の命令となる１６ビットデータと格納されている命令の命令長を示す命令識別情報および格納されている命令の持つ即値幅情報からなる変換制御情報３ビットを格納することが可能なテーブル格納手段を有し、テーブル選択信号ライン群１４の接続された１ビットが“１”の場合に動作する。テーブル制御信号ライン８が“１”である場合に、テーブルアドレスバス９が示すテーブル格納手段のアドレスにテーブルデータバス１０から入力する８ビットデータを書き込み、テーブル制御信号ライン８が“０”である場合に、テーブルアドレスバス９が示すアドレスから格納データを読み出し、テーブルデータバス１０に出力し、変換制御情報を変換制御信号ライン１３に出力する構成であり、命令マップの数に対応して複数を用意する。
【００４０】
例えば、図１８で示す命令セットでは、基本命令マップ、拡張命令１マップ、拡張命令２マップと、３個の実効命令テーブル３を用意することになる。
【００４１】
メモリ４は、テーブルデータおよび命令が格納され、メモリアドレスバス１１からアドレスを入力し、メモリデータバス１２へメモリデータを出力する。ＣＰＵ命令アドレスバス５は、メモリアドレスバス１１と同じビット幅であり、ここでは１６ビットとし、ＣＰＵ１からデータ転送中継制御器２への１６ビットの単方向バスである。ＣＰＵ命令データバス６は、データ転送中継制御器２からＣＰＵ１への８ビットの単方向バスである。テーブル制御信号ライン８は、データ転送中継制御器２から実効命令テーブル３へテーブル書込み信号を送信する。テーブルアドレスバス９は、データ転送中継制御器２から実効命令テーブル３への８ビットの単方向バスである。テーブルデータバス１０は、実効命令テーブル３からデータ転送中継制御器２への８ビットの双方向バスである。メモリアドレスバス１１は、データ転送中継制御器２からメモリ４への１６ビットの単方向バスである。メモリデータバス１２は、メモリ４からデータ転送中継制御器２への８ビットの単方向バスである。
【００４２】
メモリ４には、後述する実施の形態６のアセンブラ装置を用いて圧縮した命令コードが格納される。その圧縮された命令コードは、高使用頻度の命令を基本命令マップに、低使用頻度の命令を拡張命令マップにそれぞれ割り付けたものとなっている。
【００４３】
読出データ判定器２２は、メモリ４からメモリデータバス１２に読み出されたデータがどのようなデータであるのかの判別を行い、読み出されたデータがテーブル書き込みの特殊命令である場合は、テーブル設定部２０に“１”を出力し、同じく読み出されたデータが命令の拡張コードである場合は、テーブル選択信号ライン群１４に選択される拡張命令の選択信号が“１”となるよう出力し、さらに、ＣＰＵウェイト信号出力器２３に対してＣＰＵウェイト信号ライン７に“１”を出力するよう制御する。
【００４４】
テーブル設定部２０は、読出データ判定器２２から“１”を入力するとテーブル書き込み状態として認知し、ＣＰＵウェイト信号出力器２３に対して“１”を出力するように制御し、メモリアドレス発生器３０がメモリ４に格納されているテーブルデータのアドレスを発生し、第１のセレクタ２４がメモリアドレス発生器３０の出力を選択し、実効命令アドレス発生器３１が実効命令テーブル３に書き込むアドレスを発生し、第２のセレクタ２５が実効命令アドレス発生器３１の出力を選択するように制御するとともに、テーブル制御信号ライン８にテーブル書込み信号を出力する。さらに、実効命令テーブル３への書き込みが終了すると、テーブル書き込み状態を終了させ、メモリ用ＰＣ２１にＣＰＵ命令アドレスバス５が入力されるように制御し、ＣＰＵウェイト信号出力器２３が“０”を出力するように制御し、第１のセレクタ２４がメモリ用ＰＣ２１を選択し、第３のセレクタ２６がメモリデータバス１２を選択するように制御するとともに、テーブル制御信号ライン８へのテーブル書込み信号の出力を終了する。
【００４５】
メモリ用ＰＣ２１は、テーブル設定部２０がテーブル書き込み状態が終了すると、ＣＰＵ命令アドレスバス５からアドレスを入力し、変換制御カウンタ２７から入力する信号によって値を保持するか“１”を加えた値に更新する。
【００４６】
ＣＰＵウェイト信号出力器２３は、テーブル設定部２０がテーブル書き込み状態の場合はＣＰＵウェイト信号ライン７に“１”を出力し、読出データ判定器２２が命令の拡張コードを認識した場合は“１”を出力し、それ以外の場合は“０”を出力する。
【００４７】
第１のセレクタ２４は、テーブル設定部２０からテーブル書き込み状態であると認知した場合にメモリアドレス発生器３０の出力を選択し、テーブル書き込み状態終了後はメモリ用ＰＣ２１を選択し、それ以外はＣＰＵ命令アドレスバス５を選択する。
【００４８】
第２のセレクタ２５は、テーブル設定部２０からテーブル書き込み状態であると認知した場合、実効命令アドレス発生器３１の出力を選択し、それ以外の場合はメモリ４から読み出されメモリデータバス１２上にあるアドレスを選択する。
【００４９】
第３のセレクタ２６は、変換制御カウンタ２７から入力する信号によって、メモリデータバス１２かテーブルデータバス１０を選択してＣＰＵ命令データバス６に出力する。
【００５０】
変換制御カウンタ２７は、変換制御信号ライン１３から入力される即値幅情報によってカウンタを動作させ、カウンタが動作している間は、第３のセレクタ２６がテーブルデータバス１０を選択してＣＰＵ命令データバス６に出力し、それ以外の場合はメモリデータバス１２を選択してＣＰＵ命令データバス６に出力するよう制御し、命令識別情報によって８ビット命令か１６ビット命令かを判断し、メモリ用ＰＣ２１の更新を制御する。
【００５１】
メモリアドレス発生器３０は、メモリ４上のテーブルデータのアドレスを順次出力する。実効命令アドレス発生器３１は実効命令テーブル３に格納するアドレスを順次出力する。
【００５２】
以上のように構成された本実施の形態の情報処理装置について、以下にその動作を説明する。
【００５３】
ここでは、（１）初期状態の場合、（２）テーブルに命令を格納する場合、（３）テーブルに格納された命令を実行する場合の３つの場合について動作を説明する。
【００５４】
（１）初期状態の場合
メモリ４には、後述する実施の形態６のアセンブラ装置を用いて圧縮した命令コードがあらかじめ格納されている。
【００５５】
ＣＰＵ１は、ＣＰＵ命令アドレスバス５にアドレスを出力する。初期状態では、データ転送中継制御器２は、ＣＰＵ命令アドレスバス５をメモリアドレスバス１１に出力するよう第１のセレクタ２４を制御し、メモリデータバス１２をＣＰＵ命令データバス６に出力するよう第３のセレクタ２６を制御する。
【００５６】
（２）テーブルに命令を格納する場合
ＣＰＵ１は、ＣＰＵ命令アドレスバス５にアドレスを出力する。メモリ４からメモリデータバス１２に読み出されたデータの内容が読出データ判定器２２によって判定され、その結果がテーブル書き込みの特殊命令である場合には、テーブル設定部２０に“１”を出力し、この結果、テーブル設定部２０はテーブル書き込み状態であることを認知する。テーブル設定部２０の制御により、ＣＰＵウェイト信号出力器２３は、ＣＰＵウェイト信号ライン７に“１”を出力して、ＣＰＵ１の動作を停止させておくとともに、基本命令のテーブル選択信号を“１”と出力する。
【００５７】
テーブル設定部２０におけるメモリアドレス発生器３０がメモリ４上のテーブルデータのアドレスを発生し、第１のセレクタ２４およびメモリアドレスバス１１を介してアドレスをメモリ４に伝達する。そのアドレスに対応して、メモリ４からの８ビットのテーブルデータがメモリデータバス１２に読み出され、テーブルデータバス１０を介して実効命令テーブル３に伝達される。一方、テーブル設定部２０における実効命令アドレス発生器３１が実効命令テーブル３に対する書き込みのアドレスを発生し、第２のセレクタ２５およびテーブルアドレスバス９を介して実効命令テーブル３に伝達される。また、テーブル設定部２０がテーブル制御信号ライン８にテーブル書込み信号を出力する。
【００５８】
実効命令テーブル３において、テーブルアドレスバス９が示すアドレスにテーブルデータバス１０の８ビットデータを上位８ビット、下位８ビット、変換制御情報３ビットの順に書き込み、この動作を基本命令の実効命令テーブル３ａの格納データ２５６個全てに書き込むまで繰り返す。
【００５９】
基本命令の実効命令テーブル３ａの格納データ全てに書き込みが完了すると、次に拡張命令１の実効命令テーブル３ｂに対して同様の書き込みを行い、その書き込みが完了すると、次に拡張命令２の実効命令テーブル３ｃに対して同様の書き込みを行う。
【００６０】
書き込み動作が完了すると、第１のセレクタ２４がメモリ用ＰＣ２１を選択するよう制御し、第２のセレクタ２５がメモリデータバス１２を選択するよう制御し、ＣＰＵウェイト信号出力器２３がＣＰＵウェイト信号ライン７に“０”を出力してＣＰＵ１を動作させるよう制御し、テーブル設定部２０はテーブル制御信号ライン８に対するテーブル書込み信号の出力を終了する。
【００６１】
（３）テーブルに格納された命令を実行する場合
まず、動作の概要を説明すると、メモリ４から読み出した圧縮した命令コードに対して、データ転送中継制御器２において、そのデータを実効命令テーブル３に従ってＣＰＵ１が直接実行可能な形態の命令セットの命令コードに変換した上でＣＰＵ１に命令として伝達する。このとき、メモリ４から読み出されたデータが即値である場合には、そのままＣＰＵ１に伝達するよう変換制御カウンタ２７で制御する。
【００６２】
詳細について述べると、ＣＰＵ１がＣＰＵ命令アドレスバス５に出力したアドレスがメモリ用ＰＣ２１へ取り込まれ、メモリ用ＰＣ２１から第１のセレクタ２４を介してメモリ４に伝達され、そのアドレスに格納されているデータがメモリデータバス１２に読み出される。読み出されたデータは読出データ判定器２２で判定され、拡張命令コードである場合は、その拡張命令のテーブル選択信号に“１”を出力し、ＣＰＵウェイト信号ライン７に“１”を出力してＣＰＵ１の動作を止める。それ以外の場合は、基本命令のテーブル選択信号に“１”を出力し、ＣＰＵウェイト信号ライン７に“０”を出力してＣＰＵ１を動作させる。
【００６３】
メモリ４から読み出されてメモリデータバス１２上にあるアドレスは第２のセレクタ２５によってテーブルアドレスバス９に伝達され、テーブルアドレスバス９のアドレスに対応して実効命令テーブル３から格納データを読み出してテーブルデータバス１０に出力するとともに、変換制御情報を変換制御信号ライン１３を介して変換制御カウンタ２７に出力する。変換制御カウンタ２７は変換制御情報にある即値幅情報によってカウント動作を開始し、カウントアップするまでは第３のセレクタ２６を介してテーブルデータバス１０をＣＰＵ命令データバス６に接続し、カウントアップするとメモリデータバス１２をＣＰＵ命令データバス６に接続する。このようにして、実効命令テーブル３に格納されている命令がＣＰＵ１に入力され、次いでＣＰＵウェイト信号出力器２３がＣＰＵウェイト信号ライン７に“０”を出力してＣＰＵ１を動作させるよう制御し、ＣＰＵ１に入力された命令がＣＰＵ１によって実行される。
【００６４】
このように、情報処理装置は実施の形態６で説明するアセンブラ装置を用いて圧縮した命令コードのテーブルをメモリ４に格納し、あらかじめ、データ転送中継制御器２を介して実効命令テーブル３にテーブルを移しておき、ＣＰＵ１によってメモリ４から読み出した命令を、データ転送中継制御器２および実効命令テーブル３を用いて本来の命令セットの形態のプログラムコードに変換した上で、その変換後の本来の命令セットの形態のプログラムコードをＣＰＵに伝達する。これにより、新方式の命令セットの形態でプログラムコードをメモリ４に格納した場合でも、ＣＰＵ１が直接実行可能な形態の命令に変換した上でＣＰＵ１に与えるので、そのプログラムの実行が可能になり、ひいては、メモリ４に格納するプログラムのコードサイズの縮小を実現することができる。
【００６５】
（実施の形態２）
ところで、上記の実施の形態１は、分岐命令のないプログラムに限定される。分岐命令を実行する場合は、ＣＰＵ１のＰＣ（プログラムカウンタ）とデータ転送中継制御器２のメモリ用ＰＣ２１が違う値を示すために、間違ったメモリ番地に分岐する可能性が高いからである。本発明の実施の形態２は、この点の対策を加味したものであり、分岐命令にも対応できる情報処理装置を実現する。
【００６６】
図４は本発明の実施の形態２における情報処理装置の構成を示すブロック図である。図４において、実施の形態１の図１におけるのと同じ符号は同一構成要素を指しているので、詳しい説明は省略する。図１に示す構成要素に加えて、命令サイズ信号ライン１５が追加されている。ここでは、データ転送中継制御器が符号４２で指示されている。
【００６７】
図５はデータ転送中継制御器４２の詳しい構成を示すブロック図である。図５において、実施の形態１の図２におけるのと同じ符号は同一構成要素を指しているので、詳しい説明は省略する。図２に示す構成要素のメモリ用ＰＣ２１が省略され、代わりに、命令サイズ出力器２８が追加されている。この命令サイズ出力器２８は、変換制御カウンタ２７から変換制御情報（命令の命令長と即値幅）を入力し、命令サイズを計算し、命令サイズを命令サイズ信号ライン１５を介してＣＰＵ１に出力するように構成されている。
【００６８】
ＣＰＵ１は、ＣＰＵ命令アドレスバス５にプログラムカウンタ（以下ではＰＣと称する）の値をＣＰＵ命令アドレスとして出力し、ＣＰＵ命令データバス６から命令を入力して命令を実行し、命令サイズ信号ライン１５から命令サイズとして“０”を入力した場合はＰＣ値を保持し、命令サイズとして“１”を入力した場合はＰＣに“１”を加算してＰＣ値を更新し、ＣＰＵウェイト信号ライン７から“１”を入力した場合は、動作を止めるよう制御する。
【００６９】
第１のセレクタ２４は、テーブル設定部２０からテーブル書き込み状態であると認知した場合にメモリアドレス発生器３０の出力を選択し、テーブル書き込み状態終了後はＣＰＵ命令アドレスバス５を選択する。
【００７０】
その他の構成については、実施の形態１と同様であるので説明を省略する。
【００７１】
以上のように構成された本実施の形態の情報処理装置について、以下にその動作を説明する。
【００７２】
（１）初期状態の場合
実施の形態１と同じ動作を行う。
【００７３】
（２）テーブルに命令を格納する場合
テーブル設定部２０が書き込み状態の間は実施の形態１と同じ動作を行い、書き込み動作が完了すると、第１のセレクタ２４は、実施の形態１の場合にメモリ用ＰＣ２１を選択していたのに対して、本実施の形態ではＣＰＵ命令アドレスバス５を選択するよう制御する。その他の動作については、実施の形態１と同様であるので説明を省略する。
【００７４】
（３）テーブルに格納された命令を実行する場合
この場合の動作の特徴は、ＣＰＵ１のＰＣをデータ転送中継制御器４２で制御することにより、分岐命令を実行する場合であっても、分岐の飛び先を間違えないようにすることである。この処理を、変換制御カウンタ２７および命令サイズ出力器２８が担当する。
【００７５】
実施の形態１の場合と同様にして、実効命令テーブル３から命令を読み出し、ＣＰＵ命令データバス６を介して読み出した命令をＣＰＵ１に送出する場合に、変換制御信号ライン１３を介して実効命令テーブル３から変換制御情報（命令の命令長と即値幅）を受け取った変換制御カウンタ２７は、その変換制御情報を命令サイズ出力器２８に送出する。命令サイズ出力器２８は、受け取った変換制御情報（命令の命令長と即値幅）に基づいて命令サイズを計算し、命令サイズを命令サイズ信号ライン１５を介してＣＰＵ１に出力する。例えば、命令長が８ビットの場合は命令サイズとして“０”を命令サイズ信号ライン１５に出力し、命令長が１６ビットの場合は命令サイズとして“１”を出力する。
【００７６】
ＣＰＵ１は、実効命令テーブル３から読み出し、ＣＰＵ命令データバス６を介して入力した命令を実行したときに、命令サイズ出力器２８から命令サイズ信号ライン１５を介して命令サイズを入力するが、その命令サイズとして“０”を入力した場合はＰＣ値を保持し、命令サイズとして“１”を入力した場合はＰＣに“１”を加算してＰＣ値を更新する（インクリメント）。
【００７７】
このように、実効命令テーブル３から命令を読み出すときは、データ転送中継制御器４２の内部の命令サイズ出力器２８において命令長を管理し、その管理結果の命令サイズをＣＰＵ１に伝えることにより、ＣＰＵ１は本来のＰＣ（プログラムカウンタ）を確認することができる。その結果、分岐命令を実行する場合であっても、分岐の飛び先を間違えることなく、実施の形態１と同様の動作が可能となる。
【００７８】
（実施の形態３）
ところで、上記の実施の形態２では実効命令テーブルで使用するデータをメモリに格納するため、その分はメモリ容量を増大させる。そこで、特定の数種のアプリケーションに限定することで、メモリ容量をさらに縮小する情報処理装置を実現する。
【００７９】
図６は本発明の実施の形態３における情報処理装置の構成を示すブロック図である。図６において、実施の形態２の図４におけるのと同じ符号は同一構成要素を指しているので、詳しい説明は省略する。図４に示す構成要素の実効命令テーブル３に代えて、複数種類のアプリケーションに対応した実効命令テーブル群１６が設けられている。また、図４に示す構成要素のテーブル制御信号ライン８が省略されている。メモリ４から実効命令テーブル群１６に対する書き込みは行わないからである。また、図４に示す構成要素の双方向のテーブルデータバス１０に代えて、読み出し専用のテーブルデータバス１７が設けられている。テーブルデータバス１７は、実効命令テーブル群１６からデータ転送中継制御器６２への８ビットの単方向バスである。ここでは、データ転送中継制御器が符号６２で指示されている。実効命令テーブル群１６は、実施の形態２における実効命令テーブル３と同じ構成のものが複数集まったものである。その場合の複数とは選択できるアプリケーション（命令セット）の数に対応する。図１８で示す例の場合、１つの命令セットに３個の命令マップが存在するので、例えば選択できる命令セットの数が３種類あれば、９個の実効命令テーブル３に相当する。これを符号３ａ，３ｂ，３ｃ，３ａ′，３ｂ′，３ｃ′，３ａ″，３ｂ″，３ｃ″で表している。
【００８０】
ここで重要なことは、実効命令テーブル群１６の各実効命令テーブルには、すでにデータテーブルが格納ずみであるということである。実施の形態１、２の場合のように、メモリ４からのデータテーブルの書き込みを行うものではないということである。
【００８１】
図７はデータ転送中継制御器６２の詳しい構成を示すブロック図である。図７において、実施の形態２の図５におけるのと同じ符号は同一構成要素を指しているので、詳しい説明は省略する。図５における構成要素の第１のセレクタ２４、第２のセレクタ２５およびメモリアドレス発生器３０と実効命令アドレス発生器３１を含むテーブル設定部２０が省略されている。また、図４における読出データ判定器２２に代えて、テーブル選択器２９が設けられている。セレクタ２６は、唯一のセレクタであるが、説明の都合で第３のセレクタ２６と称することにする。ＣＰＵ命令アドレスバス５とメモリアドレスバス１１とが直結とされている。メモリデータバス１２とテーブルアドレスバス９とが直結とされている。メモリデータバス１２とテーブルデータバス１７との接続はない。
【００８２】
テーブル選択器２９は、メモリデータバス１２からテーブル変換特殊命令を入力すると、その命令に従って実効命令テーブル群１６のうちのどの命令セットを使用するかを判別する。その後、メモリデータバス１２から入力したデータが拡張命令コードの場合は、テーブル選択信号ライン群１４の選択された拡張命令の実効命令テーブル３ｂに接続される１ビットから“１”を伝達し、それ以外の場合は基本命令の実効命令テーブル３ｂに接続される１ビットから“１”を伝達する。
【００８３】
その他の構成については、実施の形態２と同様であるので説明を省略する。
【００８４】
以上のように構成された本実施の形態の情報処理装置について、以下にその動作を説明する。
【００８５】
（１）初期状態の場合
実施の形態２と同じ動作を行う。
【００８６】
（２）テーブルを変更する場合
ＣＰＵ１は、ＣＰＵ命令アドレスバス５にアドレスを出力する。テーブル選択器２９は実効命令テーブル群１６のうちのどの命令セットを使用するかを判別する。
【００８７】
（３）テーブルに格納された命令を実行する場合
ＣＰＵ１は、ＣＰＵ命令アドレスバス５にアドレスを出力する。メモリ４はメモリアドレスバス１１のアドレスに格納されているデータをメモリデータバス１２に出力する。テーブル選択器２９はメモリデータバス１２から入力したデータが拡張命令コードの場合は、実効命令テーブル群１６における拡張命令の実効命令テーブルにテーブル選択信号を“１”として伝達し、それ以外の場合は選択された命令マップの基本命令の実効命令テーブルにテーブル選択信号を“１”として出力する。
【００８８】
次の実行サイクルで、メモリデータバス１２に読み出しのためのアドレスが出力され、メモリデータバス１２からテーブルアドレスバス９を経て実効命令テーブル群１６のうちの現在アクティブな実効命令テーブルに与えられる。
【００８９】
現在アクティブな実効命令テーブルは、テーブルアドレスバス９のアドレスに格納されている格納データをテーブルデータバス１７に出力するとともに、変換制御情報（命令の命令長と即値幅）を変換制御信号ライン１３に出力する。第３のセレクタ２６は変換制御カウンタ２７のカウンタが動作している間は、テーブルデータバス１７をＣＰＵ命令データバス６に接続し、それ以外の場合はメモリデータバス１２を接続する。
【００９０】
現在アクティブな実効命令テーブルから命令を読み出し、ＣＰＵ命令データバス６を介して読み出した命令をＣＰＵ１に送出する場合に、変換制御信号ライン１３を介して実効命令テーブルから変換制御情報を受け取った変換制御カウンタ２７は、その変換制御情報を命令サイズ出力器２８に送出する。命令サイズ出力器２８は、受け取った変換制御情報（命令の命令長と即値幅）に基づいて命令サイズを計算し、命令サイズを命令サイズ信号ライン１５を介してＣＰＵ１に出力する。次いでＣＰＵウェイト信号出力器２３がＣＰＵウェイト信号ライン７に０を出力してＣＰＵ１を動作させるよう制御する。
【００９１】
ＣＰＵ１は、現在アクティブな実効命令テーブルから読み出し、ＣＰＵ命令データバス６を介して入力した命令を実行したときに、命令サイズ出力器２８から命令サイズ信号ライン１５を介して命令サイズを入力するが、その命令サイズとして“０”を入力した場合はＰＣ値を保持し、命令サイズとして“１”を入力した場合はＰＣに“１”を加算してＰＣ値を更新する（インクリメント）。
【００９２】
実施の形態１，２の場合のようにメモリ４からデータテーブルを実効命令テーブルに書き込む場合には、適用可能なアプリケーションに柔軟性・多様性をもたせることができる反面、メモリ４のメモリ容量の増大は免れない。適用可能なアプリケーションを制限してよいのであれば、本実施の形態のように構成し、メモリ４への命令マップの書き込みは行わないようにすることにより、メモリ容量の大幅な削減が可能となる。メモリ４から実効命令テーブルへの転送も不要である。
【００９３】
（実施の形態４）
ところで、上記実施の形態３の手法ではアプリケーションプログラムが限定されるという制約がある。そこで、アプリケーションプログラムの制約なしに実施の形態３と同様のメモリ容量削減の効果を実現するのが本実施の形態４である。本実施の形態は実施の形態２に相当するものである。ただし、割込み処理が起こらないプログラムに限定して、複数の命令を１命令として圧縮されたプログラムコードでメモリに格納するものとする。
【００９４】
図８は本発明の実施の形態４における情報処理装置の構成を示すブロック図である。図８において、実施の形態２の図４におけるのと同じ符号は同一構成要素を指しているので、詳しい説明は省略する。図４に示す構成要素の実効命令テーブル３に代えて、複数命令テーブル１８が設けられている。図１８の可変長命令セットに対応するものとして、複数命令テーブル１８は、基本命令マップ用の実効命令テーブル３Ａと、拡張命令１マップ用の実効命令テーブル３Ｂと、拡張命令２マップ用の実効命令テーブル３Ｃを備えている。また、図４に示す構成要素の変換制御信号ライン１３に代えて変換制御信号ライン１９が設けられている。ここでは、データ転送中継制御器が符号８２で指示されている。
【００９５】
図９はデータ転送中継制御器８２の詳しい構成を示すブロック図である。図９において、実施の形態２の図５におけるのと同じ符号は同一構成要素を指しているので、詳しい説明は省略する。実効命令テーブル３から複数命令テーブル１８に変更したことに伴って、図５における構成要素の変換制御カウンタ２７に代えて、変換制御信号ライン１９からの変換制御情報を処理する変換制御カウンタ３２が設けられている。
【００９６】
複数命令テーブル１８は、図１０に示すように構成されている。図３の場合、８ビットアドレス各々に、ＣＰＵ１の命令となる１６ビットデータと命令長を示す命令識別情報および命令の即値幅情報からなる変換制御情報３ビットを格納することが可能なテーブル格納手段を有するものであった。これに対して、本実施の形態の場合、８ビットアドレス各々に、ＣＰＵ１の命令となる３２ビットデータと命令個数を認識する命令個数情報および命令の即値幅情報からなる変換制御情報６ビットを格納することが可能なテーブル格納手段を有している。０２番地の命令３と命令６、０４番地の命令５と命令１、０５番地の命令６と命令８がそれぞれ該当する。１６ビットに対して３２ビットと２倍になっており、１つの番地に２つの命令が格納されるようになっている。この意味で“複数命令テーブル”と称している。複数命令テーブル１８のテーブル格納手段は、テーブル選択信号ライン群１４の接続された１ビットが“１”の場合に動作する。変換制御情報を変換制御信号ライン１９に出力する構成となっており、拡張命令マップの数に対応して複数が用意されている。
【００９７】
変換制御カウンタ３２は、変換制御信号ライン１９から入力される即値幅情報でカウンタを動作させ、カウンタが動作している間は第３のセレクタ２６がテーブルデータバス１０を選択し、一方、命令個数を認識し、命令サイズを計算して命令サイズ出力器２８に出力する。命令サイズ出力器２８は、変換制御カウンタ３２が作成する命令のサイズを命令サイズ信号ライン１５に出力する。
【００９８】
その他の構成については、実施の形態２と同様であるので説明を省略する。
【００９９】
以上のように構成された本実施の形態の情報処理装置について、以下にその動作を説明する。
【０１００】
（１）初期状態の場合
実施の形態３と同じ動作を行う。
【０１０１】
（２）テーブルに命令を格納する場合
テーブル設定部２０が書き込み状態の間、実効命令アドレス発生器３１が発生するアドレスは、第２のセレクタ２５、テーブルアドレスバス９を介して複数命令テーブル１８に与えられる。複数命令テーブル１８は、テーブルアドレスバス９が示すアドレスにテーブルデータバス１０のデータを上位から順に８ビットずつ計３８ビットを書き込み、この動作を複数命令テーブル１８の格納データ２５６個全てに書き込むまで繰り返す。その他の動作については、実施の形態２と同様であるので説明を省略する。
【０１０２】
（３）テーブルに格納された命令を実行する場合
複数命令テーブル１８から格納データを読み出してテーブルデータバス１０に出力するとともに、変換制御情報を変換制御信号ライン１９を介して変換制御カウンタ３２に出力すると、変換制御カウンタ３２は変換制御情報にある即値幅情報によってカウント動作を開始し、第３のセレクタ２６は変換制御カウンタ３２が“１”を出力すると、テーブルデータバス１０をＣＰＵ命令データバス６に接続し、それ以外の場合はメモリデータバス１２をＣＰＵ命令データバス６に接続する。このようにして、複数命令テーブル１８に格納されている命令がＣＰＵ１に入力され、実行される。その他の動作については、実施の形態２と同様であるので説明を省略する。
【０１０３】
このように、本実施の形態によれば、割込み処理が起こらないプログラムに限定されるが、複数の命令を１命令として、新たに作成した新方式の命令セットの形態において圧縮されたプログラムコードをメモリに格納するものであり、実施の形態２と同様に、分岐命令を実行する場合であっても、分岐の飛び先を間違えることなく、ＣＰＵ１はそのプログラムの実行が可能で、コードサイズの縮小を実現することができ、併せて、適用可能なアプリケーションに柔軟性・多様性をもたせることができる。
【０１０４】
（実施の形態５）
ところで、上記の実施の形態４では、割込み処理が発生した場合、１命令としてメモリに格納された複数の命令の途中でＣＰＵは割込み処理を行うため、割込み処理の終了後に、割込みが発生した時点の状態に復帰できなくなる可能性がある。本発明の実施の形態５は、この点の対策を加味したものであり、割込み処理にも対応できる情報処理装置を実現する。
【０１０５】
図１１は本発明の実施の形態５における情報処理装置の構成を示すブロック図である。図１１において、実施の形態４の図８におけるのと同じ符号は同一構成要素を指しているので、詳しい説明は省略する。図８に示す構成要素に加えて、割込み処理発生信号ライン３３および途中情報信号ライン３４が追加されている。また、複数命令テーブル１８に代えて複数命令テーブル３５が設けられている。ここでは、データ転送中継制御器が符号１１２で指示されている。
【０１０６】
図１２はデータ転送中継制御器１１２の詳しい構成を示すブロック図である。図１２において、実施の形態４の図９におけるのと同じ符号は同一構成要素を指しているので、詳しい説明は省略する。図９に示す変換制御カウンタ３２に代えて変換制御カウンタ３６が設けられている。変換制御カウンタ３６は複数命令テーブル３５に対して変換制御信号ライン１９で接続されているとともに、途中情報信号ライン３４を介しても接続されている。
【０１０７】
複数命令テーブル３５は、変換制御カウンタ３６からの途中情報信号ライン３４が“０”である場合は、テーブルデータバス１０に上位から順に出力し、途中情報信号ライン３４が“０”以外の値“ｎ”である場合は、途中情報信号ライン３４の示す場所“ｎ”から順に出力する構成であり、拡張命令マップの数に対応して複数が用意されている。
【０１０８】
その他の構成については、実施の形態４と同様であるので説明を省略する。
【０１０９】
変換制御カウンタ３６に接続された割込み処理発生信号ライン３３は、ＣＰＵ１が割込み処理を発生させると“１”となる。
【０１１０】
変換制御カウンタ３６は、割込み処理発生信号ライン３３が“０”の場合は、変換制御信号ライン１９から入力される命令個数からどの命令が実行されているかを計算する。また、割込み処理発生信号ライン３３が“１”になった場合は、その時点で実行されているのがどの命令かの情報を保持する。そして、割込み処理が終了して割込み処理発生信号３３が“０”になると、割込み処理発生信号３３が“１”になった割込み処理発生時に保持していた途中情報を途中情報信号ライン３４を介して複数命令テーブル３５に伝達する。これにより、割り込み発生時の複数命令テーブル３５の同じアドレスが参照される。
【０１１１】
このように、情報処理装置は複数の命令を１命令として圧縮されたプログラムコードでメモリに格納した場合でも、実施の形態２と同様の動作が可能となる。
【０１１２】
以上のように本実施の形態によれば、１命令としてメモリに格納された複数の命令の途中で割込みが発生した場合でも、割込み処理の終了後には、割込みが発生した時点の状態に正しく復帰することができ、複数命令連続方式でも、割込み処理に対応できる情報処理装置を実現する。
【０１１３】
以上で情報処理装置についての実施の形態の説明を終える。続いては、情報処理装置に対応するアセンブラ装置の実施の形態の説明に移る。
【０１１４】
（実施の形態６）
図１３に本発明の実施の形態６におけるアセンブラ装置の構成およびフローを示す。本実施の形態のアセンブラ装置は実施の形態１の情報処理装置に対応している。
【０１１５】
図１３において、１００はアセンブラで記述されたアプリケーションプログラムであり、このアプリケーションプログラム１００は、ＣＰＵ１で使用可能な命令セットを使用する状態でアセンブラで記述されている。２００はアセンブラ装置であり、このアセンブラ装置２００は、アプリケーションプログラム１００の命令の発生頻度を算出し、発生頻度の高い順に命令をリスト化する命令頻度算出手段１０１と、命令頻度算出手段１０１で作成された命令リストを参照し、テーブル書き換え特殊命令と拡張命令コードを加えて、基本命令マップと拡張命令マップに分けた命令マップ１０３を作成し、保持する命令マップ作成手段１０２と、命令マップ作成手段１０２で作成された命令マップ１０３を用いて、入力されたアプリケーションプログラム１００を仮想アドレスに対応した中間命令コードに変換するアセンブル１０４と、アセンブル１０４からの命令コードを実際に配置するアドレスに対応させた命令コード１０６に変換するリンカ１０５とを備えている。アセンブラ装置２００で作成された命令マップ１０３および命令コード１０６は、上記実施の形態１の情報処理装置におけるメモリ４に格納される。
【０１１６】
図１６はプログラムに対する本来の命令セットと新方式の命令セットでの命令コードの関係を示している。図１６において、１５０はＣＰＵ１が用意する命令セットに対応したアセンブラで書かれたアプリケーションプログラム、１５１は従来のＣＰＵ１が用意する命令セットに対応した命令コード、１５２は本発明の実施の形態における新方式による縮小された命令コードである。
【０１１７】
上記構成のアセンブラ装置２００によって、アプリケーションプログラム１５０から新たな命令セットの形態の命令コード１５２を生成し、この命令コード１５２をメモリ４に格納することができる。図１６の命令コード１５２は図１３の命令コード１０６に対応している。この命令コード１０６が命令マップ１０３とともに、メモリ４に格納されることになる。
【０１１８】
図１６の命令コード１５１，１５２の詳細を図１７に示す。ＣＰＵ１で直接実行可能な形態の命令コード１５１における長い命令長の“Ｆ０”および“２８”が新方式の命令コード１５２における短い命令長の“７７”に変形されている。同様に、長い命令長の“Ｅ０”および“３５”が短い命令長の“５２”に変形され、“Ｆ０”および“３８”が“３Ａ”に、“Ｅ０”および“７９”が“０９”に、“Ｆ０”および“Ｂ３”が“Ａ０”にそれぞれ変形されている。即値の“ａｂｓ１６”，“＃８”は変形されない。以上の変形でプログラムサイズが圧縮されている。
【０１１９】
本実施の形態のアセンブラ装置２００によれば、高使用頻度の命令を基本命令マップに、低使用頻度の命令を拡張命令マップにそれぞれ割り付けた命令セットとすることにより、実施の形態１の場合の情報処理装置に適した状態で、アプリケーションプログラムにかかわる命令コード、および、新方式の命令セットと本来の命令セットとの対応付けの情報（命令マップ）を作成することができる。
【０１２０】
（実施の形態７）
ところで、上記の実施の形態６では、そのアセンブル装置で作成した命令コードに対応するデータ転送中継制御器の構成に関して、既存のＣＰＵで実現するにはデータ転送中継制御器の規模が大きくなる可能性が高い。そこで、本発明の実施の形態７は、この点の対策を加味して、既存のＣＰＵに対応できるアセンブラ装置を実現する。
【０１２１】
図１４に本発明の実施の形態７におけるアセンブラ装置の構成およびフローを示す。本実施の形態のアセンブラ装置は実施の形態２の情報処理装置に対応している。
【０１２２】
図１４において、２０１はアセンブラ装置である。１１１はアセンブラ装置２０１で作成されたメモリに格納する命令コードである。アセンブラ装置２０１は、図１３の構成要素に加えて、ＣＰＵ命令アセンブル１０８、ＣＰＵ命令リンカ１０９および分岐アドレス変換手段１１０を備え、ＣＰＵ１で使用可能な命令マップ１０７を用意し、作成した命令マップ１０３を保持する構成とする。
【０１２３】
ＣＰＵ命令アセンブル１０８は、ＣＰＵ１で使用可能な命令マップ１０７を用いて、入力されたアプリケーションプログラム１００を仮想アドレスに対応した中間命令コードに変換する。ＣＰＵ命令リンカ１０９は、ＣＰＵ命令アセンブル１０８からの命令コードを実際に配置するアドレスに対応させたＣＰＵ１で実行可能な命令コードに変換する。分岐アドレス変換手段１１０は、ＣＰＵ命令リンカ１０９で配置された分岐命令のアドレスとリンカ１０５で配置された同一の分岐命令のアドレスを比較した上で、分岐命令発生アドレスをＣＰＵ命令リンカ１０９で配置されたアドレスとし、分岐命令飛び先アドレスをリンカ１０５で配置するアドレスとして計算した場合の分岐命令を再配置する手段とする。
【０１２４】
以上のように構成されたアセンブラ装置２０１を使用することで、実施の形態１の情報処理装置においても、分岐命令を分岐先を間違えることなく動作する縮小された命令コード１１１を作成することができる。
【０１２５】
（実施の形態８）
図１５に本発明の実施の形態８におけるアセンブラ装置の構成およびフローを示す。本実施の形態のアセンブラ装置は実施の形態４の情報処理装置に対応している。
【０１２６】
アセンブラ装置２０２は、複数命令頻度算出手段１１３、命令頻度算出手段１１４、頻度比較手段１１５、命令マップ作成手段１１６、アセンブル１１８、リンカ１１９およびを備え、作成した命令マップ１１７を保持する。複数命令頻度算出手段１１３は、アセンブラで記述されたアプリケーションプログラム１００から連続する複数命令の発生頻度を算出し、発生頻度の高い順に命令をリスト化する。命令頻度算出手段１１４は、アプリケーションプログラム１００から単一命令の発生頻度を算出する。頻度比較手段１１５は、複数命令頻度算出手段１１３の結果の複数命令の発生頻度と命令頻度算出手段１１４の結果の単一命令の発生頻度とを比較し、複数命令の発生頻度が高い場合は、その複数命令を１命令とおき、複数命令の発生頻度が低い場合は無視して命令をリスト化する。命令マップ作成手段１１６は、頻度比較手段１１５で作成された命令リストを参照し、テーブル書き換え特殊命令と拡張命令コードを加えて、基本命令マップと拡張命令マップに分けた命令マップ１１７を作成する。アセンブル１１８は、命令マップ作成手段１１６で作成された命令マップ１１７を用いて、入力されたアプリケーションプログラムを仮想アドレスに対応した中間命令コードに変換する。リンカ１１９は、アセンブル１１８からの命令コードを実際に配置するアドレスに対応させた命令コード１２０に変換する。
【０１２７】
以上のように構成されたアセンブラ装置２０２により、発生頻度の高い複数の連続する命令を１つにまとめて命令長の短い命令とし、また、発生頻度の高い命令を命令長の短い命令とするので、メモリ４に格納する命令コードを縮小することができる。
【０１２８】
なお、上記のいずれの実施の形態においても、ＣＰＵの命令ビット長、テーブルの格納データのビット幅、全てのアドレスバス、データバスのビット幅は任意の値に設定することができる。
【０１２９】
【発明の効果】
以上のように本発明によれば、高使用頻度の命令を基本命令マップに割り付けるとともに低使用頻度の命令を拡張命令マップに割り付けた新方式の命令セットを作成し、実効命令テーブルに、新方式の命令セット−本来の命令セット−命令が持つ即値幅を対応付けた情報（命令マップ）を格納し、データ転送中継制御器によりメモリから読み出したデータが命令の場合は実効命令テーブルとの間でのやり取りに基づいて形態変換を行い、即値の場合はそのままＣＰＵに伝達するように構成したので、メモリに格納するプログラムのサイズを圧縮し、メモリ容量の削減を実現することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１における情報処理装置の構成を示すブロック図
【図２】本発明の実施の形態１におけるデータ転送中継制御器の構成を示すブロック図
【図３】本発明の実施の形態１における実効命令テーブルの構成図
【図４】本発明の実施の形態２における情報処理装置の構成を示すブロック図
【図５】本発明の実施の形態２におけるデータ転送中継制御器の構成を示すブロック図
【図６】本発明の実施の形態３における情報処理装置の構成を示すブロック図
【図７】本発明の実施の形態３におけるデータ転送中継制御器の構成を示すブロック図
【図８】本発明の実施の形態４における情報処理装置の構成を示すブロック図
【図９】本発明の実施の形態４におけるデータ転送中継制御器の構成を示すブロック図
【図１０】本発明の実施の形態４における複数命令テーブルの構成図
【図１１】本発明の実施の形態５における情報処理装置の構成を示すブロック図
【図１２】実施の形態５におけるデータ転送中継制御器の構成を示すブロック図
【図１３】本発明の実施の形態６におけるアセンブラ装置の構成およびフローを示す構成概念図
【図１４】本発明の実施の形態７におけるアセンブラ装置の構成およびフローを示す構成概念図
【図１５】本発明の実施の形態８におけるアセンブラ装置の構成およびフローを示す構成概念図
【図１６】アプリケーションプログラムと本来の命令セットと新方式の命令セットとの対応関係の説明図
【図１７】本来の命令セットの命令コードと新方式の命令セットの命令コードとの対応関係の説明図
【図１８】可変長命令セットの説明図
【符号の説明】
１  ＣＰＵ
２，４２，６２，８２，１１２  データ転送中継制御器
３  実効命令テーブル
４  メモリ
５  ＣＰＵ命令アドレスバス
６  ＣＰＵ命令データバス
７  ＣＰＵウェイト信号ライン
８  テーブル書き込み信号ライン
９  テーブルアドレスバス
１０，１７  テーブルデータバス
１１  メモリアドレスバス
１２  メモリデータバス
１３，１９  変換制御信号ライン
１４  テーブル選択信号群
１５  命令サイズ信号ライン
１６  実効命令テーブル群
１８  複数命令テーブル
２０  テーブル設定部
２１  メモリ用プログラムカウンタ
２２  読出データ判定器
２３  ＣＰＵウェイト信号出力器
２４  第１のセレクタ
２５  第２のセレクタ
２６  第３のセレクタ
２７，３２，３６  変換制御カウンタ
２８  命令サイズ出力器
２９  テーブル選択器
３０  メモリアドレス発生器
３１  実効命令アドレス発生器
３３  割込み処理発生信号ライン
３４  途中情報信号ライン
３５  複数命令テーブル
１００  アプリケーションプログラム
１０１，１１４  命令頻度算出手段
１０２，１１６  命令マップ作成手段
１０３，１１７  命令マップ
１０４，１１８  アセンブル
１０５，１１９  リンカ
１０６，１１１，１２０  命令コード
１０７  ＣＰＵ命令マップ
１０８  ＣＰＵ命令アセンブル
１０９  ＣＰＵ命令リンカ
１１０  分岐アドレス変換手段
１１３  複数命令頻度算出手段
１１５  頻度比較手段
２００，２０１，２０２  アセンブラ装置
【図１】
2004258711.tif 000003
【図２】
2004258711.tif 000004
【図３】
2004258711.tif 000005
【図４】
2004258711.tif 000006
【図５】
2004258711.tif 000007
【図６】
2004258711.tif 000008
【図７】
2004258711.tif 000009
【図８】
2004258711.tif 000010
【図９】
2004258711.tif 000011
【図１０】
2004258711.tif 000012
【図１１】
2004258711.tif 000013
【図１２】
2004258711.tif 000014
【図１３】
2004258711.tif 000015
【図１４】
2004258711.tif 000016
【図１５】
2004258711.tif 000017
【図１６】
2004258711.tif 000018
【図１７】
2004258711.tif 000019
【図１８】
2004258711.tif 000020