(57)【要約】【課題】命令サイズ削減装置に関して、フラグ群に基づいた何らかの命令であるフラグ制御命令を短いバイトの命令長で実行することにより命令サイズを削減できるようにする。【解決手段】ＣＰＵ１と、ＣＰＵ１の命令を格納するメモリ２と、２個以上のフラグを格納するフラグ群格納手段４とを備え、さらに、フラグ群格納手段４におけるフラグ群の中から特定のフラグを限定して選択するフラグ限定手段７を備え、ＣＰＵ１は、フラグ限定手段７によって限定選択されたフラグを入力し、その特定のフラグがもつ情報に基づいて命令を実行するように構成されている。フラグ限定手段７を制御することでフラグ群格納手段４のフラグを選択した限定フラグ群９を作り、ＣＰＵ１に入るフラグ数を制限する。【選択図】図１
2011086234.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ（中央演算処理装置）と、
前記ＣＰＵの命令を格納するメモリと、
２個以上のフラグを格納するフラグ群格納手段とを備え、
さらに、前記フラグ群格納手段におけるフラグ群の中から特定のフラグを限定して選択するフラグ限定手段を備え、
前記ＣＰＵは、前記フラグ限定手段によって限定選択されたフラグを入力し、その特定のフラグがもつ情報に基づいて命令を実行するように構成されている命令サイズ削減装置。
【請求項２】
前記フラグ群格納手段は、前記フラグ群として、外部からの信号により保持データが変化する外部信号フラグ群と、前記ＣＰＵの論理演算命令の結果により保持データが変化する命令結果反映フラグ群または前記ＣＰＵのメモリアクセス命令により直接更新される命令結果反映フラグ群とを格納対象とする請求項１に記載の命令サイズ削減装置。
【請求項３】
さらに、一定期間計測ごとに制御信号を出力するタイマカウンタを備え、前記フラグ限定手段は、前記タイマカウンタから前記制御信号を入力するタイミングで前記フラグの限定選択を更新するように構成されている請求項１または請求項２に記載の命令サイズ削減装置。
【請求項４】
前記フラグ限定手段は、外部入力信号により前記フラグの限定選択を切り替えるように構成されている請求項１または請求項２に記載の命令サイズ削減装置。
【請求項５】
前記フラグ限定手段は、前記ＣＰＵから変更可能なレジスタの値により前記フラグの限定選択を切り替えるように構成されている請求項１または請求項２に記載の命令サイズ削減装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置においてプログラムコードサイズを圧縮する命令サイズ削減装置にかかわり、特には、命令サイズを削減できるようにするための技術に関する。
【背景技術】
【０００２】
近年、半導体技術の進展によりマイクロプロセッサの動作周波数が向上したことから、従来であればハードウェアが必要であった機能をソフトウェアで実現する機会が増え、それに伴ってプログラムサイズが劇的に増加している。加えて、マイクロプロセッサの応用分野は多様化していることから、プログラムを機械語にコード化する際に、あらかじめ定められた命令フォーマットは必ずしもすべての応用分野に最適ではなくなっている。応用分野によっては、命令長の長い命令の使用頻度が高く、プログラムサイズが大きくなるケースが増えている。特に、ＲＩＳＣ（Reduced Instruction Set Computer：縮小命令セットコンピュータ）である可変長命令セットに対応したマイクロプロセッサでは、その傾向が強い。可変長命令セットとは、命令長の短い基本命令と、複数の拡張コードを加えた命令長の長い拡張命令との、複数の命令マップを持った命令セットのことである。一例として、基本命令での命令コードは“ＦＦ”のように短く、拡張命令での命令コードは“ＦＤＦＦ”のように長い。
【０００３】
低使用頻度の命令の使用頻度をＦL 、その短い命令長をＬL で表し、高使用頻度の命令の使用頻度をＦH 、その長い命令長をＬH で表すと、トータルのプログラムサイズは、概念的に、Σ（ＬL ＊ＦL ）＋Σ（ＬH ＊ＦH ）で表され、より長いもの（ＬH ＞ＬL ）がより多くあるので（ＦH ＞ＦL ）、プログラムサイズが増加しがちである。このプログラムサイズの増加に伴ってメモリ容量も増大する。そこで、プログラムサイズの削減が課題となる。
【０００４】
既存技術として、ＣＩＳＣ（Complex Instruction Set Computer：複雑命令セットコンピュータ）の分野で、固定長命令セットを対象として命令を変換することでプログラムコードサイズを圧縮する技術がある（例えば非特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２５８７１１号公報
【非特許文献】
【０００６】
【非特許文献１】Mark Game,Alan Blocker、“CodePack:code compression for PowerPC Processors” ［ｏｎｌｉｎｅ］、平成１２年５月１１日、［平成１４年８月７日検索］、インターネット＜URL:http://www-3.ibm.com/chips/techlib/techlib.nsf/products/CodePack＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
命令メモリのメモリサイズ削減のため、ＣＰＵ（中央演算処理装置）の命令はバイト単位での可変長命令として実装される。また、シーケンサ用途でのＣＰＵは、各種エンジンやＤＭＡ（Direct Memory Access）の制御が主な処理となる。
【０００８】
図１３はシーケンサ用途でのＣＰＵの構成例を示す。図１３において、２１はＣＰＵ、２２はＣＰＵ２１の命令を格納しているメモリ、２３はＣＰＵ２１以外のハードウェアである外部ハードウェア（ＨＷ）、２４はＣＰＵ２１の命令により更新される命令結果反映フラグ群、２５は外部ハードウェア２３からの出力信号をフラグとして格納する外部信号フラグ群である。
【０００９】
図１４はＣＰＵ２１の命令によるシーケンサ用途プログラム例Ｐ１９を示したものである。ｉ１は外部ハードウェア２３の起動命令、ｉ２はフラグ０を“１”に設定する命令、ｉ３はフラグ５を“０”に設定する命令、ｉ４はフラグ０の値を判断する命令、ｉ５は命令ｉ４の結果によりｌａｂｅｌ Ａに分岐するかしないかを判断する命令、ｉ６はフラグ５の値を判断する命令、ｉ７は命令ｉ６の結果によりｌａｂｅｌ Ｂに分岐するかしないかを判断する命令、ｉ８はフラグ７の値を判断する命令、ｉ９は命令ｉ８の結果によりｌａｂｅｌ Ｃに分岐するかしないかを判断する命令である。フラグ７は命令ｉ１によって起動されたハードウェアの結果が反映されるフラグである。
【００１０】
このように制御ごとにフラグを割り当て、命令でフラグを直接判断することで処理の高速化を図っている。したがって、演算命令のキャリー発生や結果が０に等しい等で変化する算術論理演算フラグと合わせて、数１０個のフラグを使って条件判断をする必要がある。
【００１１】
特許文献１では使用頻度に従って命令種類に相当するオペコードを変えるが、それだけでは、オペランド選択が３ビットの１バイト命令のフォーマット（図２参照）を用いる場合に、フラグが例えば３２個であれば、２3 ＝８（３はオペランド選択の３ビット）で、３２＞８でオーバーしているから、１バイト命令にフラグ判断命令を割り当てることができず、命令サイズの圧縮効率が悪いという課題がある。
【００１２】
本発明は、このような事情に鑑みて創作したものであり、フラグ群に基づいた何らかの命令であるフラグ制御命令を短いバイトの命令長で実行することにより命令サイズを削減できるようにすることを目的としている。
【課題を解決するための手段】
【００１３】
本発明は、次のような手段を講じることにより上記の課題を解決する。
【００１４】
（１）本発明の命令サイズ削減装置は、ＣＰＵと、ＣＰＵの命令を格納するメモリと、２個以上のフラグを格納するフラグ群格納手段とを備えることを前提にして、さらに、フラグ群格納手段におけるフラグ群の中から特定のフラグを限定して選択するフラグ限定手段を備えたものとして構成されている。そして、ＣＰＵは、フラグ限定手段によって限定選択されたフラグを入力し、その特定のフラグがもつ情報に基づいて、条件判断やその他の論理演算やメモリアクセスやレジスタアクセスなどの命令を実行するように構成されている。これは、ＣＰＵで一度に取り扱うフラグの数をフラグ限定手段で制限することにより、命令サイズの削減を図るようにしたものである。
【００１５】
所望の命令フォーマットのバイト数をＭバイトとする（Ｍは任意の整数）。すなわち、ＣＰＵはＭバイト命令の命令フォーマットを用いるとする。フラグ群格納手段にＭバイト命令では一度に処理し切れないほど多くのフラグが格納されているとする。フラグ限定手段は、フラグ群格納手段におけるフラグ群の中で特定のフラグを選択するが、この選択に当たってＭバイト命令で処理し切れるだけの数に絞り込む状態で限定的に選択する。フラグ限定手段は限定選択した特定のフラグをＣＰＵに送る。ＣＰＵは、フラグ限定手段から特定のフラグを受け取ると、その特定のフラグがもつ情報に基づいて命令を実行する。
【００１６】
以上を要するに、本発明の命令サイズ削減装置は、
ＣＰＵ（中央演算処理装置）と、
前記ＣＰＵの命令を格納するメモリと、
２個以上のフラグを格納するフラグ群格納手段とを備え、
さらに、前記フラグ群格納手段におけるフラグ群の中から特定のフラグを限定して選択するフラグ限定手段を備え、
前記ＣＰＵは、前記フラグ限定手段によって限定選択されたフラグを入力し、その特定のフラグがもつ情報に基づいて命令を実行するように構成されている。
【００１７】
この構成によれば、フラグ制御命令を短いバイトの命令長で実行することが可能であり、命令サイズを削減することが可能となる。
【００１８】
（２）上記（１）の構成の命令サイズ削減装置において、前記フラグ群格納手段は、前記フラグ群として、外部からの信号により保持データが変化する外部信号フラグ群と、前記ＣＰＵの論理演算命令の結果により保持データが変化する命令結果反映フラグ群または前記ＣＰＵのメモリアクセス命令により直接更新される命令結果反映フラグ群とを格納対象とするという態様がある。このように構成すれば、単に外部信号フラグ群だけでなく、また単に命令結果反映フラグ群だけでもなく、広く外部信号フラグ群と命令結果反映フラグ群とを総合した総合フラグ群を対象として、所望のＭバイト命令でのフラグ制御命令を実行することが可能となる。
【００１９】
（３）上記（１），（２）の構成の命令サイズ削減装置において、さらに、一定期間計測ごとに制御信号を出力するタイマカウンタを備え、前記フラグ限定手段は、前記タイマカウンタから前記制御信号を入力するタイミングで前記フラグの限定選択を更新するように構成されているという態様がある。このように構成すれば、タイマカウンタの動作によりフラグ限定手段による限定選択の動作を周期的に切り替えて、保持するフラグを更新するため、フラグ群格納手段にＭバイト命令に比べて相対的に大きいフラグ群が格納された状態でも、それに適切に対応することが可能となる。
【００２０】
（４）上記（１），（２）の構成の命令サイズ削減装置において、前記フラグ限定手段は、外部入力信号により前記フラグの限定選択を切り替えるように構成されているという態様がある。このように構成すれば、外部入力信号の入力タイミングでフラグ限定手段による限定選択の動作を切り替えて、保持するフラグを更新するため、フラグ群格納手段にＭバイト命令に比べて相対的に大きいフラグ群が格納された状態でも、それに適切に対応することが可能となる。
【００２１】
（５）上記（１），（２）の構成の命令サイズ削減装置において、前記フラグ限定手段は、前記ＣＰＵから変更可能なレジスタの値により前記フラグの限定選択を切り替えるように構成されているという態様がある。このように構成すれば、ＣＰＵが変更したレジスタの値によりフラグ限定手段による限定選択の動作を切り替えて、保持するフラグを更新するため、フラグ群格納手段にＭバイト命令に比べて相対的に大きいフラグ群が格納された状態でも、それに適切に対応することが可能となる。
【００２２】
なお、本発明は、命令サイズ削減装置として実現される以外に、命令サイズ削減装置を制御する命令サイズ削減方法、命令サイズ削減装置の機能が組み込まれたＬＳＩ（Large Scale Integration）、その機能をＦＰＧＡ（Ｆield Ｐrogrammable Ｇate Ａrray）、ＣＰＬＤ（Complex Programmable Logic Device）などのプログラマブル・ロジック・デバイスに形成するＩＰ（Intellectual Property：設計資産）コア、そのＩＰコアを記録した記録媒体などとして実現されるとしてもよい。
【発明の効果】
【００２３】
本発明によれば、フラグ制御命令を短いバイトの命令長で実行することが可能で、命令サイズを削減できるという効果がある。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施例１における命令サイズ削減装置の構成を示すブロック図
【図２】本発明の実施例１，２におけるＣＰＵの命令フォーマットを示す図
【図３】本発明の実施例１，２におけるフラグ群の詳細を示す図
【図４】本発明の実施例１におけるＣＰＵの処理のタイミングと各処理で使用するフラグの関係を示すタイミングチャート
【図５】本発明の実施例１の効果（命令サイズ削減）を従来技術（図１３）と対比して示す図
【図６】本発明の実施例２における命令サイズ削減装置の構成を示すブロック図
【図７】本発明に関わる実施例２における外部ハードウェアとフラグ群格納手段とフラグ限定手段の関係を示す図
【図８】本発明の実施例２におけるＣＰＵの処理のタイミングと各処理で使用するフラグの関係を示すタイミングチャート
【図９】本発明の実施例２における処理Ａの前処理のプログラム例とメイン処理のプログラム例を示す図
【図１０】本発明の実施例２における処理Ｂの前処理のプログラム例とメイン処理のプログラム例を示す図
【図１１】本発明の実施例２の効果（命令サイズ削減）を従来技術（図１３）と対比して示す図
【図１２】本発明の実施例２の効果（命令サイズ削減）を従来技術（図１３）と対比して示す図
【図１３】従来技術における命令サイズ削減装置の構成を示すブロック図
【図１４】前提となるシーケンサ用途のプログラム例を示す図
【発明を実施するための形態】
【００２５】
以下、図面を参照して本発明の実施例について説明する。なお、以下で説明する実施例はあくまで一例であり、様々な改変を行うことが可能である。
【実施例１】
【００２６】
図１は本発明の実施例１における命令サイズ削減装置の構成を示すブロック図である。図１において、１はＣＰＵ、２はＣＰＵ１の命令を格納しているメモリ、３はＣＰＵ１以外のハードウェアである外部ハードウェア、４はＣＰＵ１の命令により更新される命令結果反映フラグ群５と外部ハードウェア３から出力される外部信号フラグ群６を一時的に格納しておくフラグ群格納手段、７はフラグ群格納手段４におけるフラグ群の中から特定のフラグを限定して選択するフラグ限定手段、８は時間をカウントし所定のタイミングでフラグ限定手段７に更新アクティブ化の信号を出力するタイマカウンタ、９はフラグ限定手段７によって限定選択された限定フラグ群である。ＣＰＵ１は、フラグ限定手段７によって選択限定された限定フラグ群９を入力し、その限定フラグ群９の情報を基に条件判断やその他の論理演算やメモリアクセス命令やレジスタアクセスなどを実行するように構成されている。また、ＣＰＵ１のフラグアクセス命令によって命令結果反映フラグ群５での値が更新されたり、ＣＰＵ１の論理算術演算結果で発生したキャリーや演算結果が０と等しいなどの演算結果により命令結果反映フラグ群５での値が更新されるように構成されている。
【００２７】
次に、上記のように構成された命令サイズ削減装置の動作を説明する。
【００２８】
ＣＰＵ１がメモリ２に対してメモリアドレスを送出すると、メモリ２がメモリデータをＣＰＵ１に向けて出力する。ＣＰＵ１は入力したメモリデータを命令として解釈し、命令実行を行う。フラグ群格納手段４は、外部ハードウェア３から送出されてくる信号を外部信号フラグ群６として入力して保持するとともに、ＣＰＵ１から送出されてくる命令結果反映フラグ群５を入力して保持する。
【００２９】
フラグ限定手段７は、タイマカウンタ８から出力されてくるタイミング信号を入力すると、フラグ群格納手段４に格納されている全フラグすなわち命令結果反映フラグ群５と外部信号フラグ群６の全体の中から特定のフラグを限定選択し、これを限定フラグ群９としてＣＰＵ１に送り込む。ＣＰＵ１は、入力した限定フラグ群９の情報に基づいて条件分岐を実行する。フラグ群格納手段４における命令結果反映フラグ群５は、ＣＰＵ１のフラグアクセス命令によって値を更新されたり、ＣＰＵ１の論理算術演算結果で発生したキャリーや演算結果が０と等しいなどの演算結果により値が更新される。
【００３０】
図２は図１のＣＰＵ１が持つ命令フォーマットを示している。１バイト命令フォーマット１０の中に、可変長制御１１用のビット、基本オペコード１２用のビット、オペランド選択１３用のビットが含まれている。
【００３１】
図３はフラグ群格納手段４の詳細を表す。フラグ群格納手段４には、ＣＰＵ１の論理演算命令やレジスタアクセス命令により値が変わる命令結果反映フラグ群５と、外部ハードウェア３から出力信号により変化する外部信号フラグ群６が格納される。
【００３２】
命令結果反映フラグ群５は、ＣＰＵ１の算術論理演算命令の結果として、オーバーフロー発生、演算結果が０、大小比較結果、ＭＳＢの値により変化するフラグＦ０〜Ｆ３の算術論理演算フラグ群５ａと、ＣＰＵ１のレジスタアクセス命令により値を更新されるフラグＦ４〜Ｆ１１のレジスタフラグ群５ｂとを含んでいる。
【００３３】
ＣＰＵ１の応用処理として処理Ａと処理Ｂが存在するものとする。ＣＰＵ１は処理Ａ，Ｂを実行時に外部ハードウェア３を制御する。外部信号フラグ群６は、処理Ａを実行時に外部ハードウェア３から信号を受け取るためのフラグＦ１２〜Ｆ１９の外部信号フラグ群６ａと、処理Ｂを実行時に外部ハードウェア３から信号を受け取るためのフラグＦ２０〜Ｆ２７の外部信号フラグ群６ｂとを含んでいる。
【００３４】
図４はＣＰＵ１が処理Ａと処理Ｂを実行するときのタイミングと、その際にフラグ群格納手段４の中のどのフラグを使用するかを示すタイミングチャートである。このタイミングチャートは、処理Ａの実行時間と処理Ｂの実行時間を含んでいる。
【００３５】
処理Ａは、時刻ｔ１からｔ２までの前処理Ｔ１１と、時刻ｔ２からｔ３までのメイン処理Ｔ１２と、時刻ｔ３からｔ４までの後処理Ｔ１３から構成される。処理Ｂは、時刻ｔ４からｔ５までの前処理Ｔ２１と、時刻ｔ５からｔ６までのメイン処理Ｔ２２と、時刻ｔ６からｔ７までの後処理Ｔ２３から構成される。
【００３６】
処理Ａにおいては、前処理Ｔ１１ではフラグＦ０〜Ｆ３とＦ４〜Ｆ７を使用し、メイン処理Ｔ１２ではフラグＦ１２〜Ｆ１９を使用し、後処理Ｔ１３ではフラグＦ０〜Ｆ３とＦ８〜Ｆ１１を使用する。それぞれの使用フラグ数はいずれも８ビットである。
【００３７】
処理Ｂにおいては、前処理Ｔ２１ではフラグＦ４〜Ｆ１１を使用し、メイン処理Ｔ２２ではフラグＦ２０〜Ｆ２７を使用し、後処理Ｔ２３ではフラグＦ０〜Ｆ３とＦ４〜Ｆ７を使用する。この場合も、それぞれの使用フラグ数はいずれも８ビットである。
【００３８】
タイマカウンタ８は図４のｔ１，ｔ２，ｔ３，ｔ４，ｔ５，ｔ６，ｔ７の時刻でフラグ限定手段７を切り替えることで、処理Ａの前処理Ｔ１１ではフラグＦ０〜Ｆ３とＦ４〜Ｆ７のみを選択し、メイン処理Ｔ１２ではフラグＦ１２〜Ｆ１９のみを選択し、後処理Ｔ１３ではフラグＦ０〜Ｆ３とＦ８〜Ｆ１１のみを選択し、処理Ｂの前処理Ｔ２１ではフラグＦ４〜Ｆ１１のみを選択し、メイン処理Ｔ２２ではフラグＦ２０〜Ｆ２７のみを選択し、後処理Ｔ２３ではフラグＦ０〜Ｆ３とＦ４〜Ｆ７のみを選択することが可能となる。これらのフラグはそのいずれもが８つであり、フラグ選択は、１バイト命令フォーマット１０のオペランド選択１３の３ビットのみで対応することができる（２3 ＝８）。
【００３９】
図５（ａ）は図１３に示す従来例のＣＰＵ２１による処理Ａのメイン処理Ｔ１２のプログラム例Ｐ１を示し、図５（ｂ）は本実施例のＣＰＵ１によるメイン処理Ｔ１２のプログラム例Ｐ２を示す。
【００４０】
従来例のプログラム例Ｐ１ではフラグ判断等のフラグを使った命令が３００バイト存在し、それ以外の算術論理演算やレジスタアクセス命令が７００バイト存在する。従来例の場合はフラグの限定選択の機能をもたないことから、１バイト命令フォーマット１０のオペランド選択１３ではフラグを指定することができず、フラグ判断命令がすべて２バイト命令になっている。よって、プログラムサイズは１０００バイトと大きなものになる。
【００４１】
これに対して、本実施例のプログラム例Ｐ２では、フラグ判断命令が１バイト命令フォーマット１０のオペランド選択１３で選択することが可能であり、フラグ判断命令をすべて１バイト命令で実現できる。プログラム例Ｐ２では、フラグ判断命令が半分の１５０バイトになる。結果として、プログラムサイズは８５０バイトになり、プログラム例Ｐ１に対して命令サイズを１５％削減することが可能である。
【実施例２】
【００４２】
図６は本発明の実施例２における命令サイズ削減装置の構成を示すブロック図である。本実施例の命令サイズ削減装置は、実施例１の場合のタイマカウンタ８を有していない。代わりに、ＣＰＵ１または外部ハードウェア３からの指示によりフラグ限定手段７を制御するように構成されている。
【００４３】
図７は図６の外部ハードウェア３とフラグ群格納手段４とフラグ限定手段７の構成の詳細を表した図である。外部ハードウェア３は、第１の外部ハードウェア（ＨＷ０）３ａと第２の外部ハードウェア（ＨＷ１）３ｂを含んでいる。第１の外部ハードウェア３ａおよび第２の外部ハードウェア３ｂは、それぞれの動作の途中や完了等の状態を表す信号を生成し、フラグ限定手段７に出力するように構成されている。
【００４４】
その他の構成については、実施例１の場合と同様であるので、同一部分に同一符号を付すにとどめ、説明を省略する。
【００４５】
図８は図６のＣＰＵ１が処理Ａと処理Ｂを実行するタイミングと、その際にフラグ群格納手段４の中のどのフラグを使用するかを示すタイミングチャートである。このタイミングチャートは、処理Ａの実行時間と処理Ｂの実行時間を含んでいる。ＣＰＵ１は、処理Ａでは外部ハードウェア３の中の第１の外部ハードウェア３ａを制御し、処理Ｂでは第２の外部ハードウェア３ｂを制御する。
【００４６】
処理Ａは、時刻ｔ１１からｔ１２までの前処理Ｔ１１と、時刻ｔ１２からｔ１３までのメイン処理Ｔ１２から構成される。処理Ｂは、時刻ｔ１３からｔ１４までの前処理Ｔ２１と、時刻ｔ１４からｔ１５までのメイン処理Ｔ２２から構成される。
【００４７】
処理Ａにおいては、前処理Ｔ１１ではフラグＦ０〜Ｆ３とＦ４〜Ｆ７を使用し、メイン処理Ｔ１２ではフラグＦ１２〜Ｆ１９を使用する。処理Ｂにおいては、前処理Ｔ２１ではフラグＦ４〜Ｆ１１を使用し、メイン処理Ｔ２２ではフラグＦ２０〜Ｆ２７を使用する。それぞれの使用フラグ数はいずれも８ビットである。
【００４８】
処理Ａのメイン処理Ｔ１２の最後において、第１の外部ハードウェア３ａの完了信号を使ってフラグ限定手段７への制御信号が変わる。これにより、処理Ｂの前処理Ｔ２１用のフラグＦ４〜Ｆ１１を選択することができる。また、処理Ｂのメイン処理Ｔ２２の最後において、第２の外部ハードウェア３ｂの完了信号を使ってフラグ限定手段７への制御信号が変わる。これにより、処理Ｂの次の処理で使用するフラグを選択できる。
【００４９】
図９（ａ）は図８の処理Ａの前処理Ｔ１１のプログラム例Ｐ１１である。この前処理Ｔ１１では最後に、メイン処理Ｔ１２に適したフラグ限定の選択を切り替える必要がある。よって、レジスタＤ０に値を設定する命令ａ１と、設定されたＤ０をフラグ限定の制御レジスタに書き込む命令ａ２により、次のメイン処理Ｔ１２のフラグ選択を行う。
【００５０】
図９（ｂ）は図８の処理Ａのメイン処理Ｔ１２のプログラム例Ｐ１２である。このメイン処理Ｔ１２では第１の外部ハードウェア３ａを制御するため、レジスタＤ０に値を設定する命令ｂ１と、レジスタＤ０に設定された値により第１の外部ハードウェア３ａを起動する命令ｂ２がプログラム例Ｐ１２の中に存在する。
【００５１】
図１０（ａ）は図８の処理Ｂの前処理Ｔ２１のプログラム例Ｐ１３である。この前処理Ｔ２１では最後に、メイン処理Ｔ２２に適したフラグ限定の選択を切り替える必要がある。よって、レジスタＤ０に値を設定する命令ｃ１と、設定されたＤ０をフラグ限定の制御レジスタに書き込む命令ｃ２により、次のメイン処理Ｔ２２用のフラグ選択を行う。
【００５２】
図１０（ｂ）は図８の処理Ｂのメイン処理Ｔ２２のプログラム例Ｐ１４である。このメイン処理Ｔ２２では第２の外部ハードウェア３ｂを制御するため、レジスタＤ０に値を設定する命令ｄ１と、レジスタＤ０に設定された値により第２の外部ハードウェア３ｂを起動する命令ｄ２がプログラム例Ｐ１４の中に存在する。
【００５３】
図１１（ａ）は処理Ａの前処理のプログラム例Ｐ１１に対して、図１３に示す従来技術で作成された場合の命令サイズの見積もりＰ１５を表した図である。プログラム全体で５００バイトの命令サイズになり、そのうち３割がフラグ判断を含む命令で１５０バイト、その他の７割が３５０バイトの命令サイズになる（ｅ１）。図１３に示す従来技術では図２の１バイト命令フォーマット１０の中のオペランド選択１３にフラグ選択を入れることができないので、フラグ関連命令がすべて２バイト命令で実装される。
【００５４】
図１１（ｂ）は図１１（ａ）の命令サイズの見積もりＰ１５に対して、図６の本実施例の構成に変更した場合の命令サイズの見積もりＰ１６を表した図である。図２の１バイト命令フォーマット１０の中のオペランド選択１３にフラグ選択を入れることができるので、フラグ関連命令を１バイト命令で実装することが可能となり、フラグ判断の命令サイズが半分の７５バイトになる。また、最後にレジスタＤ０に値を設定する命令ｆ２と、フラグ限定の制御レジスタ更新のための命令ｆ３が必要になるので、命令ｆ２と命令ｆ３の命令サイズがそれぞれ１バイトだとすると、命令ｆ１の命令サイズの見積もりは、５００−７５＋１＋１＝４２７バイトになる。
【００５５】
図１２（ａ）は処理Ａのメイン処理のプログラム例Ｐ１２に対して、図１３に示す従来技術で作成された場合の命令サイズの見積もりＰ１７を表した図である。プログラム全体で１０００バイトの命令サイズになり、そのうち３割がフラグ判断を含む命令で３００バイト、その他の７割が７００バイトの命令サイズになる（ｇ１）。図１３に示す従来技術では図２の１バイト命令フォーマット１０の中のオペランド選択１３にフラグ選択を入れることができないので、フラグ関連命令がすべて２バイト命令で実装される。
【００５６】
図１２（ｂ）は図１２（ａ）の命令サイズの見積もりＰ１７に対して、図６の本実施例の構成に変更した場合の命令サイズの見積もりＰ１８を表した図である。図２の１バイト命令フォーマット１０の中のオペランド選択１３にフラグ選択を入れることができるので、フラグ関連命令を１バイト命令で実装することが可能となり（ｈ１）、フラグ判断の命令サイズが半分の１５０バイトになる。処理Ｂへのフラグ選択の切り替わりは第１の外部ハードウェア３ａの出力信号により行われるので、プログラムサイズが増えることはなく、命令サイズの見積もりは１０００−１５０＝８５０バイトになる。このように図６の構成にすることで、図１３に示す従来技術の構成に比べて命令サイズを削減することが可能となる。
【００５７】
なお、処理Ｂに関しても同様に、フラグ判断命令の命令サイズが小さくなることでフラグ判断命令が小さくなり、前処理Ｔ２１とメイン処理Ｔ２２の命令サイズが小さくなる。
【００５８】
（その他）
なお、命令サイズ削減装置は、命令サイズ削減装置の各機能が組み込まれたＬＳＩによって実現されるとしてもよい。
【００５９】
なお、ＬＳＩは、フルカスタムＬＳＩ（Large Scale Integration）、ＡＳＩＣ（Application Specific Integrated Circuit）などのようなセミカスタムＬＳＩ、ＦＰＧＡ（Field Programmable Gate Array）やＣＰＬＤ（Complex Programmable Logic Device）などのようなプログラマブル・ロジック・デバイス、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスに形成されるとしてもよい。
【００６０】
さらに、命令サイズ削減装置の各機能をＬＳＩに形成する設計データは、ハードウェア記述言語によって記述されたプログラム（ＨＤＬプログラム）としてもよい。さらに、ＨＤＬプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件等を付加したマクロセル情報としてもよい。また、寸法、タイミング等が規定されたマスクデータとしてもよい。ここで、ハードウェア記述言語としては、ＶＨＤＬ（Very high speed integrated circuit Hardware Description Language）、Ｖｅｒｉｌｏｇ−ＨＤＬ、ＳｙｓｔｅｍＣがある。
【００６１】
さらに、設計データは、コンピュータシステム、組み込みシステムなどのようなハードウェアシステムに読み取り可能な記録媒体に記録されているとしてもよい。さらに、記録媒体を介して他のハードウェアシステムに読み出されて実行されるとしてもよい。そして、これらの記録媒体を介して他のハードウェアシステムに読み取られた設計データが、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。ここで、コンピュータシステム読み取り可能な記録媒体として、光学記録媒体（例えばＣＤ−ＲＯＭなど）、磁気記録媒体（例えばハードディスクなど）、光磁気記録媒体（例えばＭＯなど）、半導体メモリ（例えばメモリカードなど）などがある。
【００６２】
または、設計データは、インターネット、ローカルエリアネットワークなどのようなネットワークに接続されているハードウェアシステムに保持されているとしてもよい。さらに、ネットワークを介して他のハードウェアシステムにダウンロードされて実行されるとしてもよい。そして、これらのネットワークを介して他のハードウェアシステムに取得された設計データが、ダウンロードケーブルを介してプログラマブル・ロジック・デバイスにダウンロードされるとしてよい。ここで、ネットワークとして、地上放送網、衛星放送網、ＰＬＣ（Power Line Communication）、移動電話網、有線通信網（例えばＩＥＥＥ１２．３など）、無線通信網（例えばＩＥＥＥ１２．１１など）がある。
【００６３】
または、設計データは、通電時にＦＰＧＡに転送され得るように、シリアルＲＯＭに記録しておくとしてもよい。そして、シリアルＲＯＭに記録された設計データは、通電時に、直接、ＦＰＧＡにダウンロードされるとしてもよい。
【００６４】
または、設計データは、通電時に、マイクロプロセッサによって生成されて、ＦＰＧＡにダウンロードされるとしてもよい。
【産業上の利用可能性】
【００６５】
本発明の命令サイズ削減装置は、ＣＰＵの命令サイズを削減する装置などとして、また半導体チップ内や外付けメモリとのＩＦ（インターフェース）として利用することができる。
【符号の説明】
【００６６】
１  ＣＰＵ
２  メモリ
３  外部ハードウェア
４  限定フラグ群格納手段
５  命令結果反映フラグ群
６  外部信号フラグ群
７  フラグ限定手段
８  タイマカウンタ
９  限定フラグ群
【図１】
2011086234.tif 000003
【図２】
2011086234.tif 000004
【図３】
2011086234.tif 000005
【図４】
2011086234.tif 000006
【図５】
2011086234.tif 000007
【図６】
2011086234.tif 000008
【図７】
2011086234.tif 000009
【図８】
2011086234.tif 000010
【図９】
2011086234.tif 000011
【図１０】
2011086234.tif 000012
【図１１】
2011086234.tif 000013
【図１２】
2011086234.tif 000014
【図１３】
2011086234.tif 000015
【図１４】
2011086234.tif 000016