(57)【要約】【課題】メモリからの命令読み込み処理を高速化して、全体のパフォーマンスを向上させる。【解決手段】ＲＯＭ１は、データバス１１のビット数に一致したデータ幅の領域を複数有し、各領域に、最大語長が固定されデータ幅よりも短いワード長の１つ以上のワードによって構成される命令語が空きビットなく配列される。データセレクタ３は、命令語の先頭ワードから最大語長分の複数のワードを読み出して命令デコーダ４に与える。命令デコーダ４は、読み込まれた複数のワードを解釈して、命令語の最後のワードを判定し、判定結果に基づいてデータセレクタ３の次の読み出し開始位置を決定する。これにより、常に、命令語の先頭からの読み出しが可能となる。命令語はＲＯＭ１に空きビットなく配列されており、少ない命令読み込みステップによって、より多くの命令語を読み込んで、処理を高速化することができる。【選択図】      図１
2005108030.tif 000002
【特許請求の範囲】
【請求項１】
データバスのビット数に一致したデータ幅の領域を複数有し、前記各領域に、最大語長が固定され前記データ幅よりも短いワード長の１つ以上のワードによって構成される命令語が空きビットなく配列された記憶媒体から、前記ワードを読み出すものであって、前記命令語の先頭ワードから前記最大語長分の複数のワードを読み出す読み出し手段と、
前記読み出し手段が読み出した複数のワードを解釈して前記命令語の最後のワードを判定し、判定結果に基づいて前記読み出し手段が前記記録媒体のいずれのワードから読み出せばよいかを指示する命令語先頭位置指示手段とを具備したことを特徴とするマイクロコントローラ装置。
【請求項２】
前記最大語長は、データバスのビット数に一致し、
前記データ幅は、前記ワード長の整数倍であることを特徴とする請求項１に記載のマイクロコントローラ装置。
【請求項３】
前記読み出し手段は、１命令読み込みステップで、ビット長が前記最大語長の２倍の複数のワードを前記記憶媒体から読み出して保持するバッファ手段と、
前記バッファ手段に保持された複数のワードから前記最大語長分のワードを読み出して前記命令語先頭位置指示手段に与えるデータセレクト手段とを具備したことを特徴とする請求項２に記載のマイクロコントローラ装置。
【請求項４】
前記命令語先頭位置指示手段は、前記データセレクト手段からの複数のワードを解釈して前記命令語を演算手段に実行させる命令デコード手段と、
前記データセレクト手段からの複数のワードのうちの命令語の最後のワードを判定し、前記最後のワードの次のワードの読み出し位置を指示するプログラムカウント手段とを含むことを特徴とする請求項１に記載のマイクロコントローラ装置。
【請求項５】
前記記憶媒体を更に具備したことを特徴とする請求項１に記載のマイクロコントローラ装置。
【請求項６】
データバスのビット数に一致したデータ幅の領域を複数有し、前記各領域に、最大語長が固定され前記データ幅よりも短いワード長の１つ以上のワードによって構成される命令語が空きビットなく配列されたことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多ビット幅のデータバスを有するものに好適なマイクロコントローラ装置及び記憶媒体に関する。
【背景技術】
【０００２】
従来、各種電子機器等においては、マンマシンインターフェース制御や各種制御のために、マイクロコントローラ（以下、マイコンという）が採用されている。マイコンによって、電子機器の高機能化が実現される。
【０００３】
マイコンは、レジスタ、命令デコーダ及び算術論理演算装置（Arithmetic and Logical Unit）等によって構成されており、ＲＯＭに格納された命令語に従って動作する。命令語は、データバスを介して転送される。
【０００４】
例えば、Ｚｉｌｏｇ社が開発したＺ８０マイクロプロセッサを用いたマイコン（Ｚ８０マイコン）は、データバスが８ビット幅であり、命令語を構成する命令コード及びオペランド等の各マシン語のワード長も８ビットである。一般的には、命令語は最大語長が固定であり、Ｚ８０マイコンでは、最大で４マシン語（３２ビット長）で１命令語が構成される。Ｚ８０マイコンのデータバスは８ビット幅であるので、最大４ステップで命令語の読み込みが行われ、最大４ステップ後に読み込んだ命令語に基づく演算が実行される。
【０００５】
このようなマイコンの能力を向上させるために、クロック周波数を高速にする方法が考えられる。クロック周波数を高速にすることによって、転送等の各ステップに要する時間を短縮して、処理速度を向上させるのである。
【０００６】
しかしながら、メモリからの命令語の読み込みには、所定の時間が必要であり、メモリの読み出し速度がボトルネックとなって、クロックの高速化によるマイコン処理速度の向上には限界がある。
【０００７】
そこで、ワード長を大きくすることによって、マイコンの処理速度を高速化することが考えられる。例えば、８ビットマイコンを１６ビット或いは３２ビットマイコンに変更するのである。
【０００８】
しかしながら、ワード長が異なるマイコン同士ではアーキテクチャが異なり、相互にソフトウェア資産を活用することができない。そこで、ワード長が小さい既存のソフトウェア資産を活用して命令を実行する場合に、ワード長よりもビット幅が大きいデータバスを採用して一度に転送する転送ビット数を多くしたマイコンを採用することが考えられる。
【０００９】
例えば、１ワードが８ビットで最大４マシン語の１命令語を、３２ビットのデータバスを介して１回の命令読み込みステップで読み込むのである。このような処理を行うシステムとしては、例えば、下記特許文献に記載のものがある。
【特許文献１】特開平７−２５３８７２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、例えば８ビットマイコンにおいて、命令語を構成するワード数は必ずしも４ではなく、ワード数が１〜３の命令語も存在することから、１回の命令読み込みステップにおいて、読み込むビットに空きが生じることがあり、メモリの使用効率を低下させマイコンの処理速度を十分に向上させることができないという問題点があった。
【００１１】
本発明はかかる問題点に鑑みてなされたものであって、ワード長とデータバスのビット幅とが異なる場合において、命令語の読み込み時間を短縮可能にすることによって、ソフトウェア資産を有効に利用しながら、処理能力を向上させることができるマイクロコントローラ装置及び記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明に係るマイクロコントローラ装置は、データバスのビット数に一致したデータ幅の領域を複数有し、前記各領域に、最大語長が固定され前記データ幅よりも短いワード長の１つ以上のワードによって構成される命令語が空きビットなく配列された記憶媒体から、前記ワードを読み出すものであって、前記命令語の先頭ワードから前記最大語長分の複数のワードを読み出す読み出し手段と、前記読み出し手段が読み出した複数のワードを解釈して前記命令語の最後のワードを判定し、判定結果に基づいて前記読み出し手段が前記記録媒体のいずれのワードから読み出せばよいかを指示する命令語先頭位置指示手段とを具備したことを特徴とする。
【００１３】
本発明において、記憶媒体は、データバスのビット数に一致したデータ幅の領域を複数有し、前記各領域には、最大語長が固定されデータ幅よりも短いワード長の１つ以上のワードによって構成される命令語が空きビットなく配列される。読み出し手段は、命令語の先頭ワードから最大語長分の複数のワードを記憶媒体から読み出す。読み出し手段が読み出した複数のワードは命令語先頭位置指示手段によって解釈される。命令語先頭位置指示手段は、命令語の最後のワードを判定し、判定結果に基づいて読み出し手段が記録媒体のいずれのワードから読み出せばよいかを指示する。このように、データ幅よりも少ないワード長のワードを記憶媒体に空きビットなく配列した場合でも、命令語の処理時において各命令語の先頭から読み出しを開始して、各命令語を処理可能にする。
【００１４】
また、本発明は、データバスのビット数に一致したデータ幅の領域を複数有し、前記各領域に、最大語長が固定され前記データ幅よりも短いワード長の１つ以上のワードによって構成される命令語が空きビットなく配列されたコンピュータ読取り可能な記憶媒体としても成立する。
【発明の効果】
【００１５】
本発明によれば、ワード長とデータバスのビット幅とが異なる場合において、命令語の読み込み時間を短縮可能にすることによって、ソフトウェア資産を有効に利用しながら、処理能力を向上させることができるという効果を有する。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して本発明の実施の形態について詳細に説明する。図１は本発明の一実施の形態に係るマイクロコントローラ装置を示すブロック図である。
【００１７】
図１において、ＲＯＭ１は命令語を含む各種マシン語を記憶している。ＲＯＭ１は、データ幅（ビット構成）が例えば３２ビットである。ＲＯＭ１に記憶されているマシン語は、データバス１１を介して読み出されるようになっている。データバス１１のビット数は例えば３２ビットである。
【００１８】
本実施の形態においては、ＲＯＭ１が記憶するマシン語のワード長は例えば８ビットである。即ち、本実施の形態は、ワード長よりもデータバスのビット幅が大きいシステムに適用するものであり、ワード長及びデータバスのビット数は、適宜変更可能である。
【００１９】
図２はＲＯＭ１内のメモリ割当てを示す説明図である。図２（Ａ）はＺ８０マイコンの３つの命令に対応したマシン語について、データ幅が８ビットのメモリに記憶させる場合のメモリマップを示し、図２（Ｂ）は図２（Ａ）と同一のマシン語をＲＯＭ１に記憶させる場合のメモリマップを示している。また、下記表１は図２（Ａ）の命令語について、マシン語とプログラム言語との対応を示している。
【００２０】
表１
プログラム言語                    マシン語
ＬＤ  ＩＸ，ｎｎ              ＤＤ  ２１  ｎｎｌ ｎｎｈ
ＬＤ  Ａ，ｎ                  ３Ｅ  ｎ
ＬＤ  （ＩＸ＋ｄ），Ａ        ＤＤ  ７７  ｄ
ＬＤ  Ａ，ｎ                  ３Ｅ  ｎ
なお、表１の１行目は、１６ビットのＩＸレジスタに、各８ビットの値ｎｎｌ，ｎｎｈを格納する命令であり、第２，４行目は、８ビットのレジスタＡに８ビットの値ｎを格納する命令であり、第３行目は、１６ビットのレジスタＩＸの内容に８ビットの値ｄを加算し、加算した値をアドレスとして、このアドレスに示されるメモリの領域から読み出したデータを８ビットのレジスタＡに格納する命令である。
【００２１】
図２（Ａ）においては、各命令語を構成する８ビット長の１１個のワード（マシン語）を、データ幅が８ビットの各メモリ領域に格納する例を示している。図２（Ａ）の括弧外の数字は格納する各ビットの論理値を示し、括弧内は各ワードを１６進表記にて示したものである。図２（Ａ）のメモリマップは、従来の８ビットマイコンで採用されているものである。
【００２２】
本実施の形態においては、図２（Ｂ）のメモリマップを採用する。図２（Ｂ）の括弧外の数字は格納する各ビットの論理値を示し、括弧内は各ワードを１６進表記にて示したものである。
【００２３】
図２（Ｂ）においては、各命令語を構成する８ビット長の１１個のワード（マシン語）を、ＲＯＭ１のデータ幅を考慮することなく、連続的に格納する。即ち、４つの命令語の１１個のワードを、ＲＯＭ１に空きビットが生じないように、ワード領域とを１対１に対応させることなく連続的に配置する。図２（Ａ）の例では、４ワードからなる最初の命令語（ＤＤ）（２１）（ｎｎｌ）（ｎｎｈ）を、１領域Ｒ１内に格納し、２つ目の命令語の全て及び３つ目の命令語の一部の計４ワードのマシン語（３Ｅ）（ｎ）（ＤＤ）（７７）を、次の１領域Ｒ２に格納する。３つ目の命令語を構成する一部のワード（ｄ）については、３つ目の領域Ｒ３の先頭に格納し、４つ目の命令語を構成する２つのワード（３Ｅ）（ｄ）については、３つ目の領域Ｒ３の９ビット目以降に格納する。
【００２４】
以後同様にして、データ幅よりも短いワード長の命令語を、空きビットが生じないように連続的に配置する。図２（Ａ）の例では、表１の４つの命令語の読み込みに、１１の命令読み込みステップを要する。仮に、命令語の最大語長が３２ビットであることを考慮して、１命令語をＲＯＭ１の１領域に、１対１に対応させて格納する方法も考えられる。そうすると、表１の４つの命令語の読み込みに、４命令読み込みステップを要する。これに対し、本実施の形態においては、８ビット長の各ワードを３２ビット幅の領域に空きビットを生じさせることなく、連続的に配置していることから、図２（Ｂ）に示すように、４つの命令語を３領域に配列することができ、３命令読み込みステップで、表１の４つの命令語の読み込みが可能である。
【００２５】
なお、図１のマイクロコントローラ装置は、ＲＯＭ１が外付けのメモリであってもよく、また、ＲＯＭ１が同一チップ上に配置されたシステムオンチップで構成されていてもよい。
【００２６】
図１において、ＲＯＭ１から読み込まれた３２ビット幅のマシン語は、６４ビットバッファ２に与えられる。６４ビットバッファ２は、命令語先頭位置指示手段を構成する後述の命令デコーダ４及びプログラムカウンタ５に制御されて、ＲＯＭ１から２つの領域分のデータを読み込んで保持すると共に、データセレクタ３に出力するようになっている。
【００２７】
データセレクタ３は、プログラムカウンタ５に制御されて、６４ビットバッファ２に保持されているマシン語のうちの４ワード（３２ビット）分のデータを選択して、命令デコーダ４、データセレクタ６，７に出力するようになっている。６４ビットバッファ２及びデータセレクタ３によって読み出し手段が構成される。
【００２８】
命令デコーダ４は、データセレクタ３からの３２ビット分のマシン語を１ワードずつ解釈して、命令語長を把握する。これにより、命令デコーダ４は、データセレクタ３から読み込んだ４ワードのうち、１命令語を構成するワードを判定すると共に、そのワードの最後のビット（次の命令語の先頭位置）を求める。命令デコーダ４は、検出した命令語に基づいて、データセレクタ６，７、ＡＬＵ（算術論理演算装置）８及び内部レジスタ群９を制御する。
【００２９】
更に、本実施の形態においては、命令デコーダ４は、検出した命令語の最後のワード位置（次の命令語の先頭ワード位置）、即ち、命令語の境界を示す情報（以下、命令語境界情報という）をプログラムカウンタ５に与える。また、命令デコーダ４は、命令語の境界が６４ビットバッファ２中の後半の３２ビット中にある場合には、６４ビットバッファの内容を更新するための指示を６４ビットバッファ２に与える。
【００３０】
プログラムカウンタ５は、入力された命令語境界情報に基づいて６４ビットバッファ２及びデータセレクタ３を制御して、６４ビットバッファ２を更新させると共に、データセレクタ３に次の命令語の先頭位置を指示して、６４ビットバッファ２から命令語の先頭からの４ワードを読み込ませるようになっている。
【００３１】
即ち、命令デコーダ４は、１命令読み込みステップで１命令語を解釈することができ、ＡＬＵ８に命令読み込みステップ毎に各命令を実行させることができる。
【００３２】
データセレクタ６，７、ＡＬＵ８及び内部レジスタ群９は、従来のマイコンと同様の構成である。データセレクタ６，７は、夫々データセレクタ３及び内部レジスタ群９からデータが与えられ、命令デコーダ４に制御されて、データセレクタ３からのデータ又は内部レジスタ群９からのデータの一方をＡＬＵ８に出力する。ＡＬＵ８は、命令デコーダ４に制御されて、入力されたデータに対して所定の演算を実行する。ＡＬＵ８は演算結果を内部レジスタ群９及び図示しない外部のレジスタ等に出力する。内部レジスタ群９は、ＡＬＵ８の演算結果を保持すると共に、命令デコーダ４に制御されて保持しているデータをデータセレクタ６，７に出力することができるようになっている。
【００３３】
次に、このように構成された実施の形態の動作について説明する。
【００３４】
いま、図２（Ｂ）の一連の４つの命令語を実行するものとする。この場合には、最初の命令読み込みステップにおいて、６４ビットバッファ２は、先ずＲＯＭ１の先頭の２つの領域Ｒ１，Ｒ２の８ワードを読み出して保持する。データセレクタ３は、６４ビットバッファ２に保持されている領域Ｒ１，Ｒ２に対応する各ワードのうち、領域Ｒ１に対応する先頭の４ワードのデータを読み出して命令デコーダ４に与える。
【００３５】
命令デコーダ４は、読み込まれた４ワードのうちの最初のワードを解釈し、最初の命令語が２ワード以上で構成されているか否かを判定する。通常、命令語長は、命令語の最初の１ワード又は最初の２ワードで判定可能である。次に、命令デコーダ４は、読み込まれた４ワードのうちの最初の２ワードを解釈する。これにより、命令デコーダ４は、最初の命令語が４ワードで構成されていることを認識する。
【００３６】
命令デコーダ４は、読み込まれた４ワードの次のワードが、次の命令語の先頭であることを示す命令境界情報をプログラムカウンタ５及び６４ビットバッファ２に出力する。また、命令デコーダ４は、読み込まれた４ワードの最初の２ワードから命令の内容を解釈し、データセレクタ６，７、ＡＬＵ８及び内部レジスタ群９を制御して、命令を実行させる。命令デコーダ４による最初の命令語の解釈は、最初の命令読み込みステップで行われる。データセレクタ３を介して読み出された値ｎｎｌ，ｎｎｈは、データセレクタ６，７を介してＡＬＵ８に供給されて、内部レジスタ群９内の図示しないＩＸレジスタに格納される。
【００３７】
プログラムカウンタ５は、最初の命令読み込みステップにおいて、データセレクタ３が読み出した４ワードのデータの全てに対する処理が終了したので、データセレクタ３に次の４ワードを読み出させるための指示を与える。
【００３８】
また、命令デコーダ４及びプログラムカウンタ５は、ＲＯＭ１の領域Ｒ１の４ワードに対する処理が終了したので、６４ビットバッファ２に次の６４ビット分のワードを読み出して保持させる。即ち、次の命令読み込みステップにおいて、６４ビットバッファ２は、ＲＯＭ１の領域Ｒ２，Ｒ３の８ワードを読み出して保持する。
【００３９】
上述したように、データセレクタ３は、プログラムカウンタ５によって、領域Ｒ１の４ワードの次の領域Ｒ２の先頭ワードから読み出すことが指示されている。これにより、２番目の命令読み込みステップでは、領域Ｒ２に対応した４ワードのデータが命令デコーダ４に読み込まれる。
【００４０】
命令デコーダ４は、入力されたデータを１ワードずつ解釈する。これにより、命令デコーダ４は、２番目の命令読み込みステップにおいて読み込まれた４ワードのうちの２ワードで２つ目の命令語が構成されていることを判定する。命令デコーダ４は、命令を解釈してデータセレクタ６，７、ＡＬＵ８及び内部レジスタ群９を制御する。これにより、データセレクタ３が読み出した値ｎは、データセレクタ６，７からＡＬＵ８を介して図示しないＡレジスタに格納される。
【００４１】
一方、プログラムカウンタ５は、２番目の命令語が領域Ｒ２の先頭の２ワードであって、次の３番目の命令語が領域Ｒ２の３ワード目から開始されていることから、データセレクタ３に、６４ビットバッファ２に格納されている領域Ｒ２，Ｒ３の８ワードのうち、領域Ｒ２の３ワード目から領域Ｒ３の２ワード目までの４ワードを読み出す指示を与える。
【００４２】
即ち、２番目の命令読み込みステップにおいて、引き続き、ＲＯＭ１の領域Ｒ２の３ワード目から領域Ｒ３の２ワード目までの４ワードに対応するデータがデータセレクタ３から命令デコーダ４に供給される。命令デコーダ４は、入力されたデータを１ワードずつ解釈し、読み込まれた４ワードのうちの３ワードによって３つ目の命令語が構成されていることを判定する。
【００４３】
命令デコーダ４は、命令を解釈してデータセレクタ６，７、ＡＬＵ８及び内部レジスタ群９を制御する。これにより、データセレクタ３が読み出した値ｄは、データセレクタ６，７の一方を介してＡＬＵ８に与えられ、データセレクタ６，７の他方は、ＩＸレジスタの内容をＡＬＵ８に与える。ＡＬＵ８はデータセレクタ６，７の出力の加算値をアドレスとして図示しないメモリからデータを読み出し、読み出した値をレジスタＡに格納する。
【００４４】
一方、命令デコーダ４及びプログラムカウンタ５は、３番目の命令語が領域Ｒ２の３ワード目から領域Ｒ３の１ワード目までの３ワードで構成され、次の４番目の命令語が領域Ｒ３の２ワード目から開始されていることから、６４ビットバッファ２に、領域Ｒ３からの８ワードを読み出させ、データセレクタ３に領域Ｒ３の２ワード目からの４ワードを読み出させる。
【００４５】
こうして、３番目の命令読み込みステップにおいて、命令デコーダ４に４番目の命令語を含む４ワードのデータが読み込まれる。
【００４６】
以後、同様にして、命令読み込みステップが繰り返される。
【００４７】
このように、本実施の形態においては、記憶媒体であるＲＯＭのデータ幅よりも短いワード長の命令語を、空きビットが生じないように連続的に配置する。これにより、より少ない命令読み込みステップで、多くの命令語の読み込みが可能である。また、命令デコーダによって命令語長を検出し、検出した命令語長に応じて、ＲＯＭの領域中のいずれのワードから次に読み込むかを決定することで、常に命令語の先頭からの読み込み及び解釈を可能にしており、ＲＯＭの各領域の途中に命令語の先頭位置が配置される場合でも、命令語の確実な読み込みが可能である。また、データ幅よりも短いワード長の命令語を空きビットが生じないよう連続的に配置していることから、１命令読み込みステップ毎に各命令を実行させることが可能である。こうして、短いワード長のソフトウェア資産を活用しつつ、命令読み込みを高速化することで、処理の高速化を達成することができる。
【００４８】
なお、本実施の形態におけるマイクロコントローラ装置をシステムオンチップで構成することにより、ＲＯＭとの接続に多ビット幅のデータバスを構成することが容易となり、ソフトウェア資産を活かした高速なマイコンＩＣを簡単に構成することが可能である。
【産業上の利用可能性】
【００４９】
以上のように、本発明に係るマイクロコントローラ装置及び記憶媒体は、旧ソフトウェア資産を活用するものに有用であり、例えば８ビットマイコンに対応した命令群を３２ビットマイコンで利用する場合に適している。
【図面の簡単な説明】
【００５０】
【図１】本発明の一実施の形態に係るマイクロコントローラ装置を示すブロック図。
【図２】ＲＯＭ１内のメモリ割当てを示す説明図。
【符号の説明】
【００５１】
１…ＲＯＭ、２…６４ビットバッファ、３，６，７…データセレクタ、４…命令デコーダ、５…プログラムカウンタ、８…ＡＬＵ、９…内部レジスタ群
代理人      弁理士      伊  藤    進
【図１】
2005108030.tif 000003
【図２】
2005108030.tif 000004