(57)【特許請求の範囲】
【請求項１】
レジスタをポインタとして用いてアドレッシングする中央演算装置において、複数の汎用レジスタからなる第１のレジスタと、データバンクレジスタとなる第２のレジスタと、定数値を発生する第１の定数値発生器と、モードを設定するモードフラグとを備え、前記モードフラグによる第１のレジスタへの選択的なデータ付与の設定が、前記複数のレジスタのうちの特定のレジスタと他のレジスタとで異なるように構成されるとともに、前記第１のレジスタのビットサイズに満たないデータを第１のレジスタに格納するときに、前記モードフラグに基づき、第１のレジスタ中の満たされないビット位置に前記第２のレジスタ又は第１の定数値発生器から選択的にデータが与えられるように構成されたことを特徴とする中央演算処理装置。
【請求項２】
第２のレジスタのデータがダイレクトアドレッシング時にバンクアドレスとして用いられるように構成されていることを特徴とする請求項１に記載の中央演算処理装置。
【請求項３】
第２のレジスタのデータがダイレクトアドレッシング時にバンクアドレスとして用いられるとともに、前記モードフラグに基づき、第２のレジスタ又は第１の定数値発生器から選択的にバンク値としてデータが与えられ、且つこの選択パターンが第１のレジスタにデータが格納されるときのパターンと同一とされたことを特徴とする請求項１に記載の中央演算処理装置。
【請求項４】
前記第１のレジスタ中の満たされるビット部分が分割されて独自のレジスタ部分を構成していることを特徴とする請求項１に記載の中央演算処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、中央演算処理装置に関する。
【０００２】
【従来の技術】
レジスタをポインタとしてデータを参照するアドレッシングを、インダイレクトアドレッシングという。１６ビットの汎用レジスタＷ0 を備えたＣＰＵ（ＣＰＵ１とする）において、上記レジスタインダイレクトアドレッシングを行う場合、メモリのアクセス可能な番地は、００００ｈ〜ＦＦＦＦｈであり、その範囲は６４Ｋバイト（＝２16）となる。例えば、“１２３４ｈ”というアドレスは１６ビットで表され、１６ビットの汎用レジスタＷ0 に上記アドレスが格納されていれば、汎用レジスタＷ0 をポインタとしてアドレッシングすることができる。
【０００３】
一方、メモリのアクセス可能範囲を拡張する方法としてバンクアドレス方式が知られている。このバンクアドレス方式は、下位ビットのアドレスデータを汎用レジスタＷ0 に格納し、上位ビットのアドレスデータをデータバンクレジスタＤＢＲに格納し、このデータバンクレジスタＤＢＲと前記汎用レジスタＷ0 の両方のデータを合わせてアドレスを表す方法である（特開昭６４−９１２５４号公報、特開昭６２−８９２９４号公報、特開昭５１−１３２０４７号公報、特開平１−９２８５１号公報、及び特開平３−２０４０２９号公報参照）。
【０００４】
前記バンクアドレス方式を用いたレジスタインダイレクトアドレッシングを以下に説明する。例えば、“１２３４５６ｈ”というアドレスのように、汎用レジスタＷ0 のサイズ（１６ビット）を越える場合には、下位１６ビットの“３４５６ｈ”は１６ビットの汎用レジスタＷ0 に格納し、上位８ビットの“１２ｈ”はデータバンクレジスタＤＢＲに格納する。そして、命令側で下位１６ビットのアドレスを持つ汎用レジスタＷ0 指定するとともに、データバンクレジスタＤＢＲから上位８ビット分のデータを出力させればよい。上記のごとく、データバンクレジスタＤＢＲが８ビットで汎用レジスタＷ0 が１６ビットであれば、８＋１６＝２４ビットで表現可能な数値、即ち２24＝１６Ｍバイトのメモリ空間をアクセスすることが可能となる。
【０００５】
ここで、３２ビットの汎用レジスタＷ1 を備えたＣＰＵ（ＣＰＵ２とする）においては、ＣＰＵ２でレジスタインダイレクトアドレッシングを行うときには、汎用レジスタＷ1 が３２ビットサイズであるので、データバンクレジスタＤＢＲを用いること無く、６４Ｋバイトのアクセス可能範囲を越える範囲のメモリをアクセスすることができる。即ち、前述した“１２３４５６ｈ”という３２ビットのアドレスは、そのまま３２ビットの汎用レジスタＷ1 に格納されるので、データバンクレジスタＤＢＲは使用しなくてよいことになる。
【０００６】
一方、上記のＣＰＵ２がＣＰＵ１の上位互換機（ＣＰＵ２はＣＰＵ１の上位機種としてＣＰＵ１のプログラムを実行できるが、ＣＰＵ２のプログラムをＣＰＵ１が必ずしも実行できるとは限らない関係）である場合、ＣＰＵ２はＣＰＵ１のプログラムが実行可能であることが要求されるので、当然ながらデータバンクレジスタＤＢＲがＣＰＵ２のプログラミングモデルに含まれることになる。従って、ＣＰＵ２においても、データバンクレジスタＤＢＲを使ったレジスタインダイレクトアドレッシングも可能である必要がある。
【０００７】
【発明が解決しようとする課題】
しかし、上位互換を可能とするために、レジスタサイズが１６ビットのインダイレクトアドレッシングと、レジスタサイズが３２ビットのインダイレクトアドレッシングの両方可能なＣＰＵ２を持つとすれば、インダイレクトアドレッシングの種類が増えることになる。しかも、このアドレッシングは、レジスタの数（レジスタインダイレクトアドレッシングで使用されるべきレジスタを何番から何番まで指定できるかということ）を乗算した数に増えてしまう。このようにアドレッシングの種類が増えると、例えば命令コード長が増大するあるいは命令の種類が減るといった問題を生じる。
【０００８】
本発明は、上記の事情に鑑み、レジスタサイズが拡張された上位互換機のＣＰＵであって、下位機のＣＰＵがバンクレジスタでアドレッシングを行うものである場合、上位機のＣＰＵが下位機のアドレッシングを持つことなく（即ち、互換のためだけに下位機のアドレッシングを持つことなく）、アドレッシングに互換性を持たせることを目的とする。
【０００９】
【課題を解決するための手段】
ここで、当該中央演算処理装置（ＣＰＵ）が、上位機として上位機のプログラムを処理する場合を考えると、前記の第１レジスタが３２ビットであるとして当該レジスタに対してその下位側に１６ビットのデータを書き込むときには、上位側の１６ビットは意味のないデータであり、この第１のレジスタから３２ビットのデータ全体を読み出すことはない。即ち、３２ビットの第１のレジスタの下位側の１６ビットデータを書き換えたときは、当該レジスタはレジスタインダイレクトアドレッシングで使用されることはない。
【００１０】
一方、当該中央演算処理装置が上位機として下位機のプログラムを処理する場合、１６ビットのデータの書換えを行うことは当然であり、この１６ビットのデータの書換えを行った第１のレジスタもレジスタインダイレクトアドレッシングで使われる可能性がある。そして、このレジスタインダイレクトアドレッシングは、上記第１のレジスタの１６ビットのデータに、データバンクレジスタＤＢＲ（第２のレジスタ）のデータ（このデータは一度セットされると固定的に保持されるので、以下固定値という場合がある）を付加する処理に相当するが、この処理は、３２ビットの第１のレジスタの上位側１６ビットに第２のレジスタのデータをコピーしておいて、当該コピーがなされた第１のレジスタの３２ビットのデータをそのまま出す処理でよいことになる。
【００１１】
本発明の中央演算装置は、レジスタをポインタとして用いてアドレッシングする中央演算装置において、複数の汎用レジスタからなる第１のレジスタと、データバンクレジスタとなる第２のレジスタと、定数値を発生する第１の定数値発生器と、モードを設定するモードフラグとを備え、前記モードフラグによる第１のレジスタへの選択的なデータ付与の設定が、前記複数のレジスタのうちの特定のレジスタと他のレジスタとで異なるように構成されるとともに、前記第１のレジスタのビットサイズに満たないデータを第１のレジスタに格納するときに、前記モードフラグに基づき、第１のレジスタ中の満たされないビット位置に前記第２のレジスタ又は第１の定数値発生器から選択的にデータが与えられるように構成されたことを特徴とする。
【００１２】
ここで、上位機のプログラムにおけるレジスタインダイレクトアドレッシングでは、第１のレジスタに３２ビットデータが書き込まれ、その３２ビットのデータがアドレスとして出力される。一方、第１のレジスタに１６ビットデータが書き込まれたときには、第１のレジスタの上位側に第２レジスタからの１６ビットデータが与えられ、１６ビットデータを拡張した３２ビットデータとして記憶される。従って、第１のレジスタに１６ビットデータを記憶させる下位機のプログラムにおいても、レジスタインダイレクトアドレッシングを３２ビットデータのときと共通の処理とすればよいことになる。
【００１４】
前記の第２のレジスタのデータが変更されたときには、第１のレジスタの上記第２のレジスタのデータに相当する上位側のデータも変更されるべきである。しかし、通常の命令ではバンクレジスタ（第２のレジスタに相当）の内容は汎用レジスタ（第１のレジスタに相当）の下位に転送されるので、この下位側にデータが転送された後に汎用レジスタのシフト動作が必要になり、命令が二つ以上必要になる。命令数削減のためには当該処理を一つの命令で行うことが望まれる。例えば、第１のレジスタの上位側の１６ビット位置の入力接点に第２のレジスタの出力接点を接続しておき、第１のレジスタのデータを読み出してこれに“０”を加算し、この加算結果を再び第１のレジスタに転送させる命令を持つことにより、当該一つの命令により、第２のレジスタの内容が前記加算結果に自動的にくっついて第１のレジスタの上位側の１６ビット位置に自動的に格納される。
【００１５】
前記第２のレジスタを８ビットサイズにするとともに、上位側の残り８ビットに特定の定数値（例えば、０）を与える定数値発生器を設けてもよい。これによれば、第２のレジスタを１６ビットサイズのレジスタとする必要がなく、第２のレジスタとしてビットサイズの小さいものを用いることができる。
【００１７】
また、上記の構成は、下位機の中央演算処理装置が処理するアプリケーションプログラムによっては、モードフラグにより、下位１６ビットの上に置かれる（付加される）上位ビットの値を任意の固定値とするか又は“０”等の定数値とするかが決まる場合があることを考慮したものである。このような場合には、下位機の中央演算処理装置であれば、アドレスを出す瞬間に最終アドレスを作ればよい。しかし、本発明の上位機の中央演算処理装置は、第１のレジスタに下位１６ビットデータを転送するときに上位ビットとして任意の固定値か又は定数値を入力する必要があるが、この場合には、第２のレジスタにおいて固定値を定数値に書き換えるのは好ましくない。そこで、第２のレジスタと第１の定数値発生器を用意し、転送のときに前記モードフラグに対応してどちらかを選択するようにした。これにより、第２のレジスタは固定値用として常に用いることができ、定数値に書き換えるといった必要がなくなる。
【００２０】
また、複数のレジスタを備える場合に各々のレジスタの使い分けをする場合があり（レジスタ使用規約）、この場合に前記特定のレジスタがその上位側のデータに固定値ではなく定数値を設定される場合（例えば、当該特定のレジスタをレジスタインダイレクトアドレッシング用として使用しない場合）があるが、本構成であれば、そのような場合に対処できる。
【００２１】
更に、データ転送処理の対象となる任意のレジスタを１回の命令で選択できるようにしてもよい。例えば、第１のレジスタが４つのレジスタからなる場合に、４ビットのデータで“０”が対象外、“１”が対象であるとしたデータを命令により与える。
【００２２】
このように、第１のレジスタを構成する複数のレジスタの任意のレジスタを１回の命令で指定し、任意のレジスタのバンクアドレスに相当するビット位置のデータをバンクレジスタの値とすることができる。
【００２３】
第２のレジスタをダイレクトアドレッシング（アブソリュート）時のバンクアドレスとして用いる構成としてもよい。
【００２４】
これによれば、アドレスを直接命令で指定するダイレクトアドレッシングにおいて、バンク方式（バンクレジスタのデータを指定アドレスの上位に追加してアドレスを生成する方式）が、上記バンクレジスタを新たに設けることなく、上記の第２のレジスタによって行うことができる。
【００２５】
第２のレジスタをダイレクトアドレッシング（アブソリュート）時のバンクアドレスとして用いる構成において、この第２のレジスタと“０”等の定数値を発生する第１の定数値発生器のいずれのデータを選択するかをモードフラグの値に応じて決定し、且つこの決定パターンが、インダイレクトアドレッシングの場合の第１のレジスタに対する転送データ選択パターンと同じパターンであるように構成してもよい。
【００２６】
このように、ダイレクトアドレッシングにおいて、モード設定で第２のレジスタと第１の定数値発生器の選択を行うから、定数値を使用する場合でも第２のレジスタのデータを定数値に一々書き換える必要はない。更に、バンクアドレスを発生させるときと第１のレジスタへデータを格納するときとで決定パターンが同じであるので、インダイレクトアドレッシングとダイレクトアドレッシングでバンク値は一致することになる。
【００２７】
また、第１のレジスタ中の満たされないビット位置に前記第２のレジスタからデータ（固定値）を与えるデータ転送処理が、特定のビットサイズの演算の場合にのみ行われるように構成されていてもよい。例えば、第１のレジスタが３２ビットの場合、その上位データが得られない演算のデータサイズは、例えば、８ビットと１６ビットとなるが、上位データに固定値が必要な演算が前記２種類のサイズのうちの１６ビットサイズの場合だけである場合、固定値を必要としない８ビットサイズの演算では上位データに前回値を残すことにより、前回値を利用できるようになる。
【００２８】
また、上記のように、８ビットサイズの演算では、下位１６ビットのうちの８ビットだけを使うことになり、レジスタの使用効率が良くない。そこで、かかる場合には、第１のレジスタの下位１６ビット部分を８ビット毎に二つに分割して独自の８ビットレジスタを二つ持つがごとく構成した。これにより、レジスタ使用効率を高めることができる。
【００２９】
【発明の実施の形態】
以下、本発明の実施の形態を図に基づいて説明する。
【００３０】
（実施の形態１）
図１は本発明の中央演算処理装置の概略構成を示した回路図である。汎用レジスタ（第１のレジスタ）１は、３２ビットサイズを有し、データバス１３からのデータＣを入力し、データバス１１，１２にデータＡ，Ｂを出力する。第２レジスタ２は、８ビット幅を有し、データバス１１からのデータＡを入力し、データバス１３にデータＣを出力する。第１定数値発生器３ａ及び第２の定数値発生器３ｂは、それぞれ８ビット幅を有し、例えば“００００００００”といった定数値を発生する回路であり、当該定数値をデータバス１３に出力する。第２レジスタ２及び第１，第２定数値発生器３ａ，３ｂは、データ補填制御装置１０により制御される。演算器４は３２ビットの算術論理演算装置であり、データバス１１からのデータＡとデータバス１２からのデータＢとを入力して演算を実行し、演算結果をデータバス１３に出力する。プロセッサステータスレジスタ５は、データバス１１からのデータＡを入力し、後述するモードフラグをセットする。以下、各要素の具体的構成を説明する。
【００３１】
図２は、汎用レジスタ１及びこれを制御する書込信号発生器６を示した回路構成図である。なお、出力構成部分は省略して示している。また、図中の１ａは汎用レジスタ１の一部（１ビット分）を示している。汎用レジスタ１は、データバス１３からのデータＣ０〜Ｃ３１を入力し、書込信号Ｄと書込信号ＥとによってデータＣの所定ビット部分を書き込むようになっている。書込信号発生器６は、書込信号とサイズ信号を入力し、これら書込信号とサイズ信号によって前記の書込信号Ｄ，Ｅの生成を制御する。書込信号Ｄは下位８ビット（Ｃ０〜Ｃ７）の書き込みを制御し、書込信号Ｅは上位２４ビット（Ｃ８〜Ｃ３１）の書き込みを制御する。この制御では、汎用レジスタ１の０〜７ビット（下位８ビット）の位置に書き込むか、第１レジスタ１の０〜３１ビット（全３２ビット）の位置に書き込むかの二通りの書き込み選択がなされる。
【００３２】
なお、実施の形態としては、上記図２のように、汎用レジスタ１が一つである形態も考えられるが、汎用レジスタ１が複数である形態が実際的であるので、この実施の形態では、後述するように（図７に汎用レジスタ１が複数である場合を示している）、汎用レジスタ１が複数設けられることとして説明する。
【００３３】
図３は、第２のレジスタ２の回路構成図である。なお、入力構成部分は省略して示している。第２のレジスタ２は、各データ線に直列にスリーステートバッファ２ａを備える。そして、各スリーステートバッファ２ａ…に前記のデータ補填制御装置１０からのコントロール信号Ｓ１を入力することにより、データの出力と非出力とが選択されるようになっている。また、第２のレジスタ２の各データは、データバス１３の第１６ビット〜第２３ビットに対応するラインに出力される（データＣ１６〜Ｃ２３）。即ち、汎用レジスタ１への入力の上位側の１６ビット（データＣ１６〜Ｃ３１）のうちのデータＣ１６〜Ｃ２３の入力ビット位置に第２のレジスタ２の出力接点が直接繋がれている。
【００３４】
図４（ａ）は、第１定数値発生器３ａの回路構成図であり、同図（ｂ）は第２定数値発生器３ｂの回路構成図である。第１定数値発生器３ａは、データバス１３の第１６ビット〜第２３ビットの部分へのデータＣ１６〜Ｃ２３として定数値（例えば、“００００００００”）を出力する。また、第２定数値発生器３ｂは、データバス１３の第２４ビット〜第３１ビットの部分へのデータＣ２４〜Ｃ３１として定数値（例えば、“００００００００”）を出力する。定数値の出力制御は、前記のデータ補填制御装置１０からのコントロール信号Ｓ２，Ｓ３により行われる。第１定数値発生器３ａを設けたことにより、データバス１３の第１６ビット〜第２３ビットの部分（演算器４の１６ビット出力の上の８ビット）に置かれる（付加される）値を任意の固定値とするか“０”等の定数値とするかを選択できる。また、第２定数値発生器３ｂを設けたことにより、第２のレジスタ２を１６ビットサイズのレジスタとする必要がなく、前記第２のレジスタ２として８ビットの小さいものを用いることができる。
【００３５】
図５は、演算器４の回路構成図である。なお、データ入力構成部分は省略している。演算器４は、データバス１３へ演算結果であるデータＣ０〜Ｃ３１を出力する。データＣ０〜Ｃ１５までの部分と、データＣ１６〜Ｃ３１までの部分は、それぞれ出力制御信号Ｆ，Ｇによって出力するか否かが制御される。具体的には、データＣ０〜Ｃ１５の部分である下位１６ビットのみを出力するか、データＣ０〜Ｃ３１の全３２ビットを出力するかが切り換えられる。
【００３６】
図６は、プロセッサステータスレジスタ５の回路構成図である。このプロセッサステータスレジスタ５は、データバス１１からのデータＡ０〜Ａ７を入力し、データＭ０，Ｍ１を出力する。このデータＭ０，Ｍ１は、データＡ４，Ａ５に対応するレジスタ５の出力信号である。以下、このデータＭ０，Ｍ１をモードフラグＭ０，Ｍ１と呼ぶ。
【００３７】
図７は、４つの汎用レジスタ１Ａ〜１Ｄ、及びレジスタ選択書込装置９を示した回路図である。レジスタ選択書込装置９は、書込信号と、レジスタ選択信号（汎用レジスタ１Ａ〜１Ｄのいずれかを示す信号）と、サイズ信号（８ビット、１６ビット、３２ビットを区別する信号）とを入力し、選択された汎用レジスタに書込信号Ｄ，Ｅ（図２で説明した信号と同じである）を出力するようになっている。
【００３８】
図８は、データ補填制御装置１０、第２のレジスタ２、及び第１，第２の定数値発生器３ａ，３ｂの関係を示した回路図である。データ補填制御装置１０は、モードフラグＭ０，Ｍ１と、レジスタ選択信号（図７の説明と同様）と、サイズ信号（図７の説明と同様）とを入力し、第２のレジスタ２、及び第１，第２の定数値発生器３ａ，３ｂの選択制御を行う。具体的内容については後述する。
【００３９】
次に、中央演算処理装置の動作を、演算器４の演算結果を汎用レジスタ１に格納する場合を例に説明する。
【００４０】
演算器４からの３２ビットの演算結果の全て（データＣ０〜Ｃ３１）を汎用レジスタ１に転送する処理は、以下のようにして実行できる。即ち、演算器４の出力幅は出力制御信号Ｆ，Ｇによって決まるので、これら出力制御信号Ｆ，Ｇにより演算器４の出力幅の全ビットを選択する。また、汎用レジスタ１では、書込信号Ｄ，Ｅにより全ビットを書き込むようにしておく。これにより、演算結果であるデータＣ０〜Ｃ３１は、データバス１３を経由し、汎用レジスタ１のビット位置０〜３１に入力される。
【００４１】
演算器４からの演算結果の下位８ビット（データＣ０〜Ｃ７）を汎用レジスタ１に転送する場合は、出力制御信号Ｆ，Ｇにより演算器４の下位１６ビット（データＣ０〜Ｃ１５）を選択する。また、汎用レジスタ１では、書込信号Ｄ，Ｅにより下位８ビット（データＣ０〜Ｃ７）を書き込むようにしておく。これにより、演算結果の８ビットは、データバス１３を経由し、汎用レジスタ１のビット位置０〜７に入力される。この場合、汎用レジスタ１のビット位置８〜３１にはデータは書き込まれない。
【００４２】
なお、演算器４からの演算結果の下位８ビット（データＣ０〜Ｃ７）を汎用レジスタ１に転送することは、汎用レジスタ１のビット長に満たないデータを汎用レジスタ１に格納する場合に相当するが、この実施の態様では、下位８ビット転送の場合には、本発明の第２のレジスタ２のデータを汎用レジスタ１に転送することはしない。
【００４３】
演算器４から演算結果の下位１６ビット（データＣ０〜Ｃ１５）を汎用レジスタ１に転送する場合は、出力制御信号Ｆ，Ｇにより演算器４の下位１６ビット（データＣ０〜Ｃ１５）を選択するとともに、上記の下位８ビット転送の場合とは異なり、汎用レジスタ１では、書込信号Ｄ，Ｅにより全３２ビット（データＣ０〜Ｃ３１）を書き込むようにしておく。そして、コントロール信号Ｓ１，Ｓ２，Ｓ３により、第２レジスタ２のデータＣ１６〜Ｃ２３又は第１の定数値発生器３ａのデータＣ１６〜Ｃ２３のいずれかを出力するとともに、第２の定数値発生器３ｂのデータＣ２４〜Ｃ３１を出力させる。これにより、汎用レジスタ１のデータＣ０〜Ｃ１５として演算器４の演算結果が格納され、汎用レジスタ１のデータＣ１６〜Ｃ３１として第２のレジスタ２などのデータが格納される。
【００４４】
前記コントロール信号Ｓは、前述したように、モードフラグＭ０，Ｍ１と、レジスタ選択信号と、サイズ信号とにより、データ補填制御装置１０から出力される。図９は、コントロール信号Ｓの内容自体ではなく、モードフラグＭ０，Ｍ１と、レジスタ選択信号と、サイズ信号とに基づく第２のレジスタ２などの出力の許否態様を示している。
【００４５】
このように、汎用レジスタ１のビット長（３２ビット）に満たない１６ビットデータを汎用レジスタ１に格納するとき（その判断は、前記サイズ信号で判断できる）、汎用レジスタ１中の満たされない上位側の１６ビット位置に前記第２のレジスタ２から８ビットのデータＣ１６〜Ｃ２３が与えられる。また、汎用レジスタ１の上位側（第１６ビット〜第２３ビット部分）に第２のレジスタ２のデータＣ１６〜Ｃ２３を格納する処理は、汎用レジスタ１の下位側１６ビットにデータを格納する処理と同時に行うことができる。また、この処理は、汎用レジスタ１の上位側の１６ビットのうちの８ビット（データＣ１６〜Ｃ２３が入力されるべき部分）に第２のレジスタ２の出力部分を接続してあるので、一つの命令で前述の書込信号等を生成して第２のレジスタ２のデータや第１の定数値発生器３ａの出力を汎用レジスタ１に転送させることができる。
【００４６】
また、図９に示したように、複数設けた汎用レジスタ１Ａ〜１Ｄのうち、汎用レジスタ１Ｂと、これ以外の汎用レジスタ１Ａ，１Ｃ，１Ｄとの間では、モードフラグＭ０，Ｍ１による第２のレジスタ２のデータ（図９ではＤＢＲとしている）と第１の定数値発生器３ａのデータの選択態様を異ならせている。
【００４７】
具体的には、（Ｍ１，Ｍ０）が（０，１）のとき、汎用レジスタ１Ｂについては、第２のレジスタ２のデータを出力しないで第１の定数値発生器３ａのデータを出力するが、汎用レジスタ１Ｂ以外の汎用レジスタ１Ａ，１Ｃ，１Ｄについては、第１の定数値発生器３ａのデータを出力しないで第２のレジスタ２のデータを出力するようにしている。これにより、複数の汎用レジスタ１Ａ〜１Ｄを備える場合に各々のレジスタの使い分けをするレジスタ使用規約にも対応することができる。
【００４８】
以上説明したように、３２ビットデータは常に３２ビットで汎用レジスタ１に記憶され、８ビットデータは常に８ビットで汎用レジスタ１に記憶される。一方、１６ビットデータは常に上位１６ビットを拡張した３２ビットデータとして汎用レジスタ１に記憶される。そして、拡張部分は、第２のレジスタ２（バンクレジスタ）の内容或いは“００ｈ”のなどの定数になっていて、その内容はモードフラグやレジスタ番号によるレジスタ間の差を反映させた状態となっている。そのため、１６ビットデータで記憶させたレジスタ内容を使うレジスタインダイレクトアドレッシング時でも３２ビットデータの時と共通の処理で可能である。
【００４９】
（実施の形態２）
第２のレジスタ２のデータを、ダイレクトアドレッシングにおいてバンクデータとして使用することができるようにしている。ダイレクトアドレッシングとは、外部メモリ上のオペランドとのアクセスに使用するアドレスをプログラム中に直接に記述したアドレッシングである。例えば、２４ビットのアドレス空間を持つ中央演算処理装置の場合、下位１６ビットのアドレスをプログラムで直接指定し、上位８ビットについてはデータバンクレジスタＤＢＲの内容を用いてアドレッシングを行う場合がある。このような処理を上位互換機である本発明の中央演算処理装置で行うために、アドレスの上位８ビットをデータバンクレジスタＤＢＲとして機能する第２のレジスタ２の内容（固定値）とするか或いは第１の定数値発生器３ａの定数値（例えば、“００ｈ”）とするかを前述のモードフラグＭ０，Ｍ１の状態により決めるとともに、このモードフラグＭ０，Ｍ１の状態による固定値か定数値かの選択を、ダイレクトアドレッシング時と、インダイレクトアドレッシングの場合の汎用レジスタ１に対する転送データ選択パターン（図９参照）と同じパターンとする。
【００５０】
このように、ダイレクトアドレッシングにおいて、モード設定で第２のレジスタ２と第１の定数値発生器３ａの選択を行うから、定数値を使用する場合でも第２のレジスタのデータを定数値に一々書き換える必要はない。更に、バンクデータを発生させるときと汎用レジスタ１へデータを格納するときとで決定パターンが同じであるので、インダイレクトアドレッシングとダイレクトアドレッシングでバンク値は一致することになる。
【００５１】
（実施の形態３）
実施の形態１では、汎用レジスタ１のビット長に満たないデータを汎用レジスタ１に格納する演算時に、汎用レジスタ１の満たされないビット位置に格納するデータを第２のレジスタ２で設定することを説明したが、このように、第２のレジスタ２で設定するのを、１６ビットサイズの演算の場合のように特定の場合にだけ行うようにしてもよい。
【００５２】
ここで、３２ビットサイズの汎用レジスタ１の上位データが得られない演算のデータサイズとしては、８ビットサイズと１６ビットサイズの二つ（二つ以上でもよい）があり、上位データに固定値が必要な演算が上記２種のサイズのうちの一方だけである場合がある。例えば、アドレス演算は１６ビットだけである。
【００５３】
このようなアドレス演算以外の演算（固定値を必要としない演算）では、汎用レジスタ１の上位データを第２のレジスタ２で設定することを行わないことにより、汎用レジスタ１の上位１６ビットデータに前回値を残すことができ、当該前回値を利用することが可能になる。
【００５４】
更に、３２ビットサイズの汎用レジスタ１の下位８ビットだけを用いるのは効率的でないので、汎用レジスタ１の下位１６ビットを二つの独自の８ビットレジスタとして用いることができるのが望ましい。
【００５５】
図１０は、汎用レジスタ１として４つのレジスタＬ０〜Ｌ３を備え、そのうちのレジスタＬ０，Ｌ１の各々の１６ビットレジスタ部分Ｗ０，Ｗ１を二つに分割し、８ビットレジスタ部分Ｒ０，Ｒ２、及び８ビットレジスタ部分Ｒ１，Ｒ３とした場合を示している。
【００５６】
図１１は、８ビットレジスタ部分Ｒ０，Ｒ１を独自の８ビットレジスタとして機能させるための構成を示した回路図である。この図から分かるように、８ビットレジスタ部分Ｒ０，Ｒ２（又はＲ１，Ｒ３）に、データバス１３のビット位置０〜７のデータＣ０〜Ｃ７のデータを書き込めるようにした。また、データバス１１，１２のビット位置０〜７のラインを用い、８ビットレジスタ部分Ｒ０，Ｒ２（又はＲ１，Ｒ３）の出力を、データＡ０〜Ａ７（又はＢ０〜Ｂ７）として出力させるようにしている。
【００５７】
このように、３２ビットサイズの汎用レジスタ１の全ビットを使用しない場合に、汎用レジスタ１の下位１６ビットを分割して用いるようにしたことにより、汎用レジスタ１の効率的利用が図れる。
【００５８】
（実施の形態４）
この実施の形態では、汎用レジスタ１のビット長に満たないデータを汎用レジスタ１に格納する演算時に、汎用レジスタ１の満たされないビット位置に格納するデータを第２のレジスタ２で設定するための更新命令を中央演算処理装置が持つことについて説明する。なお、更新の有無や内容は、プロセッサステータスレジスタ（ＰＳＲ）５のモード設定Ｍ０，Ｍ１に基づく。また、汎用レジスタ１が複数のレジスタから構成される場合には、そのレジスタ番号により異なる場合がある。例えば、実施の形態１で説明したように、レジスタ１Ｂは他のレジスタ１Ａ，１Ｃ，１Ｄと異ならせたような場合である。
【００５９】
図１２は、汎用レジスタ１がｎ個のレジスタから構成される場合の更新命令による処理内容を示したフローチャートである。まず、初期設定としてｉ＝０の処理を行う（ステップ１）。ｉは、処理されるレジスタ番号に対応する。次に、ｉ＝ｎの処理を行う（ステップ２）。即ち、全てのレジスタについて処理が終了したか否かを判断する。ｉ＝ｎであれば、処理を終了する。一方、ｉ＝ｎでなければｌｉｓｔ＝ｌｉｓｔ＞＞１の処理を行う（ステップ３）。
【００６０】
ｌｉｓｔは、命令により与えられる情報であり、各レジスタについての更新の有無を示した情報であり、ｎ＝４であればｌｉｓｔは４ビットで構成されることになる。また、この４ビットｌｉｓｔの第０番目のビットは第０レジスタに、第１番目のビットは第１レジスタに、というように対応させてあり、“０”は更新しないを、“１”は更新するをそれぞれ意味する。
【００６１】
次に、シフトアウトビットが“０”か“１”を判断する（ステップ４）。従って、上記ステップ３によるｌｉｓｔ＝ｌｉｓｔ＞＞１の処理、即ち、４ビットのｌｉｓｔを１ビット右シフトする処理を行い、このステップ４でシフトアウトビットが“０”か“１”を判断することにより、ｉ番目のレジスタについて更新を行うのか否かが判断される。
【００６２】
シフトアウトビットが“１”のときは、ｉ番目のレジスタの更新処理を行う（ステップ５）。この更新処理は、まずｉ番目のレジスタのデータをデータバス１１またはデータバス１２を経由して演算器４に入力する。そして、演算器４で“０”との加算を行い、加算結果をデータバス１３へ出力する。なお、このときには、サイズ信号は１６ビットサイズを示す信号となっており、従って、データバス１３の上位１６ビットのデータＣ１６〜Ｃ３１は、第２のレジスタ２又は第１の定数値発生器３ａの内容と、第２の定数値発生器３ｂの内容となる。これにより、レジスタの更新が行われたことになる。なお、更新の具体的態様は、例えば、実施の形態１で示した図９の内容に従ってされる。
【００６３】
一方、シフトアウトビットが“１”のときは、ｉ番目のレジスタについては更新処理を行わず、ステップ６に進む。ステップ６では、次のレジスタについての処理を行うために、ｉ＝ｉ＋１の処理を行う。そして、ステップ２に進む。レジスタの数だけ処理を繰り返すと、ステップ２でｉ＝ｎとなり、終了する。
【００６４】
【発明の効果】
以上のように、本発明によれば、レジスタサイズが拡張された上位互換機の中央演算処理装置であって、下位機の中央演算処理装置がバンクレジスタでアドレッシングを行うものである場合、上位機の中央演算処理装置が下位機のアドレッシングを持つことなく、アドレッシングに互換性を持たせることが可能になるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の中央演算処理装置の概略構成図である。
【図２】本発明の汎用レジスタ及び書込信号発生器を示すブロック図である。
【図３】本発明の第２のレジスタの回路構成図である。
【図４】同図（ａ）は本発明の第１の定数値発生器の概略構成図であり、同図（ｂ）は第２の定数値発生器の概略構成図である。
【図５】本発明の演算器の概略構成図である。
【図６】本発明のプロセッサステータスレジスタの概略構成図である。
【図７】本発明の複数のレジスタから成る第１のレジスタ及びそのコントロール装置を示す概略構成図である。
【図８】本発明のデータ補填制御装置を示す概略構成図である。
【図９】図８のデータ補填制御装置の動作説明図である。
【図１０】本発明の第１のレジスタの分割例を示す説明図である。
【図１１】図１０の分割例を実現する第１レジスタの概略構成図である。
【図１２】本発明の命令を説明するフローチャートである。
【符号の説明】
１    汎用レジスタ（第１のレジスタ）
２    第２のレジスタ
３ａ  第１の定数値発生器
３ｂ  第２の定数値発生器
４    演算器
５    プロセッサステータスレジスタ
６    書込信号発生器
９    レジスタ選択書込装置
１０  データ補填制御装置
【図１】
0003541863.tif 000002
【図２】
0003541863.tif 000003
【図３】
0003541863.tif 000004
【図４】
0003541863.tif 000005
【図５】
0003541863.tif 000006
【図６】
0003541863.tif 000007
【図７】
0003541863.tif 000008
【図８】
0003541863.tif 000009
【図９】
0003541863.tif 000010
【図１０】
0003541863.tif 000011
【図１１】
0003541863.tif 000012
【図１２】
0003541863.tif 000013