(57)【特許請求の範囲】
【請求項１】
複数のサイズのデータを扱うプロセッサであって、
命令により指定されたオペランドに、前記命令により指定された操作を施すための、前記複数のサイズのうちの最大サイズに対応したビット幅を有する操作手段と、
与えられた命令を解読することにより、該命令により指定されたオペランドについて、該指定されたオペランドのデータサイズに関するサイズ情報を得て、前記操作手段のうち前記サイズ情報により指定された部分のみを動作させるための操作制御手段とを備え、
前記操作手段は、オペランドデータと、該オペランドデータのサイズに関するサイズ情報とを保持するためのレジスタ手段を有し、
前記操作制御手段は、
前記レジスタ手段への特定サイズのオペランドデータの設定を要求する第１の命令が解読されて、該第１の命令により指定されたオペランドのデータサイズに関するサイズ情報が得られたときには、前記オペランドデータとともに前記サイズ情報を前記レジスタ手段に保持させる機能と、
前記レジスタ手段に保持されたオペランドデータの参照を要求する第２の命令が解読されたときには、前記レジスタ手段から前記オペランドデータとともに該オペランドデータのサイズに関するサイズ情報を読み出して、前記操作手段のうち前記レジスタ手段から読み出したサイズ情報により指定された部分のみを動作させる機能とを更に有することを特徴とするプロセッサ。
【請求項２】
請求項１記載のプロセッサにおいて、
前記操作手段は、オペランドデータに算術論理演算操作を施すための、前記最大サイズに対応したビット幅を有する算術論理演算手段を備え、
前記算術論理演算手段のうち前記指定されたオペランドのデータサイズに応じた部分のみが動作するように構成されたことを特徴とするプロセッサ。
【請求項３】
請求項２記載のプロセッサにおいて、
前記操作手段は、前記算術論理演算手段を構成する各部分の間で演算情報を伝達するための演算情報伝達手段を更に備え、
前記演算情報伝達手段のうち前記指定されたオペランドのデータサイズに応じた部分のみが動作するように構成されたことを特徴とするプロセッサ。
【請求項４】
請求項３記載のプロセッサにおいて、
前記演算情報伝達手段により伝達される演算情報は、桁上げに関する情報であることを特徴とするプロセッサ。
【請求項５】
請求項１記載のプロセッサにおいて、
前記操作手段は、
オペランドデータを転送するための、前記最大サイズに対応したビット幅を有するバス手段と、
前記バス手段を駆動するための、前記最大サイズに対応したビット幅を有するドライバ手段とを備え、
前記ドライバ手段のうち前記指定されたオペランドのデータサイズに応じた部分のみが動作するように構成されたことを特徴とするプロセッサ。
【請求項６】
請求項１記載のプロセッサにおいて、
前記操作手段は、
オペランドデータを転送するための、前記最大サイズに対応したビット幅を有するバス手段と、
前記バス手段上のオペランドデータを取り込むための、前記最大サイズに対応したビット幅を有するラッチ手段とを備え、
前記ラッチ手段のうち前記指定されたオペランドのデータサイズに応じた部分のみが動作するように構成されたことを特徴とするプロセッサ。
【請求項７】
請求項１記載のプロセッサにおいて、
前記操作手段は、オペランドデータのサイズを拡張するための、前記最大サイズに対応したビット幅を有する拡張手段を備え、
前記拡張手段のうち前記指定されたオペランドのデータサイズに応じた部分のみが動作するように構成されたことを特徴とするプロセッサ。
【請求項８】
請求項１記載のプロセッサにおいて、
前記プロセッサは、ＲＩＳＣ型であることを特徴とするプロセッサ。
【請求項９】
請求項１記載のプロセッサにおいて、
前記第１の命令は、メモリから前記レジスタ手段へのオペランドデータのロードを要求する命令、又は、前記レジスタ手段への即値オペランドデータの転送を要求する命令であることを特徴とするプロセッサ。
【請求項１０】
請求項１記載のプロセッサにおいて、
前記第２の命令は、オペランドのデータサイズに関する指定情報を含まないオペコードフィールドを有する命令であることを特徴とするプロセッサ。
【請求項１１】
請求項１記載のプロセッサにおいて、
前記第２の命令は、前記レジスタ手段を参照する算術論理演算命令、又は、前記レジスタ手段からメモリへのオペランドデータのストアを要求する命令であることを特徴とするプロセッサ。
【請求項１２】
請求項１記載のプロセッサにおいて、
前記操作制御手段は、特定サイズへのオペランドデータのサイズの変更を要求する第３の命令が解読されて、該第３の命令により指定されたオペランドのデータサイズに関する新たなサイズ情報が得られたときには、前記レジスタ手段中の前記指定されたオペランドに対応するデータのサイズ情報を変更する機能を更に有することを特徴とするプロセッサ。
【請求項１３】
請求項１記載のプロセッサにおいて、
前記第１の命令は、オペランドデータを符号付きデータとして扱うべきか又は符号なしデータとして扱うべきかを指定する、オペランドの符号の有無に関する符号情報を含むオペコードフィールドを有する命令であり、
前記レジスタ手段は、前記オペランドデータの符号の有無に関する符号情報を保持する機能を更に有し、
前記操作制御手段は、
前記第１の命令が解読されて、該第１の命令により指定されたオペランドの符号の有無に関する符号情報が得られたときには、前記オペランドデータとともに前記符号情報を前記レジスタ手段に保持させる機能と、
前記レジスタ手段に保持されたオペランドデータの参照を要求する前記第２の命令が解読されたときには、前記レジスタ手段から前記オペランドデータとともに該オペランドデータの符号の有無に関する符号情報を読み出して、該読み出した符号情報に従って前記第２の命令が実行されるように前記操作手段を制御する機能とを更に有することを特徴とするプロセッサ。
【請求項１４】
請求項１３記載のプロセッサにおいて、
前記操作制御手段は、オペランドデータの符号の有無の変更を要求する第４の命令が解読されて、該第４の命令により指定されたオペランドの符号の有無に関する新たな符号情報が得られたときには、前記レジスタ手段中の前記指定されたオペランドに対応するデータの符号情報を変更する機能を更に有することを特徴とするプロセッサ。
【請求項１５】
請求項１４記載のプロセッサにおいて、
前記操作制御手段は、
与えられた命令を解読するための命令解読器と、
前記レジスタ手段への前記サイズ情報及び前記符号情報の書き込みと、前記レジスタ手段からの前記サイズ情報及び前記符号情報の読み出しとを司るコントローラとを備えたことを特徴とするプロセッサ。
【請求項１６】
複数のサイズのデータを扱うプロセッサであって、
命令により指定されたオペランドに、前記命令により指定された操作を施すための、前記複数のサイズのうちの最大サイズに対応したビット幅を有する操作手段と、
前記操作手段のうち前記指定されたオペランドのデータサイズに応じた部分のみを動作させるための操作制御手段とを備え、
前記操作手段は、オペランドデータと、該オペランドデータのサイズに関するサイズ情報とを保持するためのレジスタ手段を有し、
前記操作制御手段は、前記レジスタ手段への特定サイズのオペランドデータの設定を要求する第１の命令が解読されて、該第１の命令により指定されたオペランドのデータサイズに関するサイズ情報が得られたときには、前記オペランドデータとともに前記サイズ情報を前記レジスタ手段に保持させる機能を更に有することを特徴とするプロセッサ。
【請求項１７】
請求項１６記載のプロセッサにおいて、
前記操作制御手段は、前記レジスタ手段に保持されたオペランドデータの参照を要求する第２の命令が解読されたときには、前記レジスタ手段から前記オペランドデータとともに該オペランドデータのサイズに関するサイズ情報を読み出して、前記操作手段のうち前記レジスタ手段から読み出したサイズ情報により指定された部分のみを動作させる機能を更に有することを特徴とするプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のサイズのデータを扱うプロセッサに関するものである。
【０００２】
【従来の技術】
近年、機器組み込み用途のプロセッサが扱うデータは多様化している。例えば、３２ビット、１６ビット、８ビットのサイズのデータを扱うことが要求される。一方では、携帯機器へプロセッサを応用する場合、バッテリの容量に制限があるため、長時間駆動を行うには低消費電力が要求されている。
【０００３】
３２ビットのアーキテクチャを有する従来のＲＩＳＣ（Reduced Instruction Set Computer）型プロセッサは、データに算術論理演算操作を施すための３２ビットのＡＬＵ（Arithmetic and Logic Unit）と、データを保持するための３２ビットのレジスタファイルと、データを転送するための３２ビットのバスとを備えたものであった。このプロセッサで８ビットデータを扱う場合には、このデータのサイズが無条件で３２ビットに拡張される。具体的には、８ビットデータが符号付きデータであるならば上位２４ビットに符号拡張が、８ビットデータが符号なしデータであるならば上位２４ビットにゼロ拡張がそれぞれなされる。１６ビットデータを扱う場合にも、このデータのサイズが無条件で３２ビットに拡張される。このようにして得られた３２ビットデータが、３２ビットのＡＬＵに供給され、３２ビットのレジスタファイルに保持され、また３２ビットのバスを通して転送されるようになっていた。
【０００４】
【発明が解決しようとする課題】
上記従来のＲＩＳＣ型プロセッサによれば、２つの８ビットデータをメモリから順次ロードし、これらを加算し、その結果を表す８ビットデータをメモリにストアするという一連の動作を行う場合であっても、３２ビットのＡＬＵと、３２ビットのレジスタファイルと、３２ビットのバスとの全てのハードウェア資源が動作していたので、電力が無駄に消費される問題があった。このことは、１６ビットデータを扱う場合にも同様であった。
【０００５】
本発明の目的は、複数のサイズのデータを扱うプロセッサにおける電力消費の無駄を削減することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、本発明は、複数のサイズのデータを扱うプロセッサにおいて、最大サイズに対応したビット幅を有する操作手段のうち、指定されたオペランドのデータサイズに応じた部分のみを動作させることとしたものである。ここにいう操作手段は、命令により指定されたオペランドに、該命令により指定された操作を施すための手段であって、オペランドデータに算術論理演算操作を施すためのＡＬＵと、オペランドデータを保持するためのレジスタファイルと、オペランドデータを転送するためのバスと、バスを駆動するためのドライバと、バス上のオペランドデータを取り込むためのラッチと、オペランドデータのサイズを拡張するための拡張器とを含む。例えば、与えられた命令を解読することにより、該命令により指定されたオペランドについて、該指定されたオペランドのデータサイズに関するサイズ情報を得て、前記操作手段のうち当該サイズ情報により指定された部分のみを動作させる。
【０００７】
オブジェクト指向の観点によれば、オペランドデータと、該オペランドデータのサイズに関するサイズ情報とをレジスタファイルに保持させるようにするとよい。この場合において、レジスタファイルへの特定サイズのオペランドデータの設定を要求する第１の命令が解読されて、該第１の命令により指定されたオペランドのデータサイズに関するサイズ情報が得られたときには、オペランドデータとともにサイズ情報をレジスタファイルに保持させる。また、レジスタファイルに保持されたオペランドデータの参照を要求する第２の命令が解読されたときには、レジスタファイルからオペランドデータとともに該オペランドデータのサイズに関するサイズ情報を読み出して、前記操作手段のうち当該レジスタファイルから読み出したサイズ情報により指定された部分のみを動作させる。
【０００８】
本発明の他の観点によれば、前記第１の命令は、オペランドデータを符号付きデータとして扱うべきか又は符号なしデータとして扱うべきかを指定する命令でもある。レジスタファイルには、オペランドデータと、該オペランドデータのサイズに関するサイズ情報とに加えて、該オペランドデータの符号の有無に関する符号情報を保持させる。この場合において、前記第１の命令が解読されて、該第１の命令により指定されたオペランドの符号の有無に関する符号情報が得られたときには、オペランドデータとともに符号情報をレジスタファイルに保持させる。また、レジスタファイルに保持されたオペランドデータの参照を要求する前記第２の命令が解読されたときには、レジスタファイルからオペランドデータとともに該オペランドデータの符号の有無に関する符号情報を読み出して、当該読み出した符号情報に従って前記第２の命令が実行されるように前記操作手段を制御する。
【０００９】
【発明の実施の形態】
図１は、本発明に係るプロセッサの構成例を示している。本プロセッサは、３２ビットのアーキテクチャを有するＲＩＳＣ型プロセッサであって、３２ビット（ワード）、１６ビット（ハーフワード）、８ビット（バイト）のサイズのデータを扱うものである。
【００１０】
本プロセッサは、データに算術論理演算操作を施して、その結果を得るとともにフラグを生成するための３２ビットのＡＬＵを備えている。この３２ビットＡＬＵは、４個の８ビットＡＬＵ１ａ，１ｂ，１ｃ，１ｄに分割されている。ゲート１１ａ，１１ｂ，１１ｃは、これら４個の８ビットＡＬＵ１ａ〜１ｄの間で桁上げ（キャリ）に関する演算情報を選択的に伝達するためのゲートである。４個の８ビットＡＬＵ１ａ〜１ｄと３個のゲート１１ａ〜１１ｃとの全てが動作するとき、リップルキャリ方式の３２ビットＡＬＵが実現する。２個の８ビットＡＬＵ１ｃ，１ｄと１個のゲート１１ｃのみが動作するとき、１６ビットＡＬＵが実現する。また、１個の８ビットＡＬＵ１ｄのみが動作することもある。フラグは、オペランドのデータサイズに応じたビット位置で生成されるようになっている。なお、図１中の符号の末尾のａ，ｂ，ｃ，ｄはそれぞれ、３２ビットのうちの最上位８ビット、中上位８ビット、中下位８ビット、最下位８ビットの位置を表すよう付されている。
【００１１】
本プロセッサは、８本のレジスタＲ０〜Ｒ７で構成された３２ビットのレジスタファイル２を更に備えている。レジスタＲ０〜Ｒ７の各々は、それぞれ８ビットデータを保持するためのデータＡ部（ＤＡ部）２ａ、データＢ部（ＤＢ部）２ｂ、データＣ部（ＤＣ部）２ｃ及びデータＤ部（ＤＤ部）２ｄと、データの符号の有無に関する１ビット情報を保持するための符号情報部（ＳＵ部）２ｅと、データのサイズに関する２ビット情報を保持するためのサイズ情報部（ＳＺ部）２ｆとから構成される。あるレジスタのＳＵ部２ｅの１ビットの値が“１”であることは、当該レジスタに保持されたデータが符号付きデータとして扱われるべきことを意味する。同ビットの値が“０”であることは、当該レジスタに保持されたデータが符号なしデータとして扱われるべきことを意味する。あるレジスタのＳＺ部２ｆの２ビットの値が“１０”であることは、当該レジスタのＤＡ部２ａ、ＤＢ部２ｂ、ＤＣ部２ｃ及びＤＤ部２ｄが３２ビットのデータを保持していることを意味する。同２ビットの値が“０１”であることは、当該レジスタの中のＤＣ部２ｃ及びＤＤ部２ｄのみが１６ビットのデータを保持していることを意味する。また、同２ビットの値が“００”であることは、当該レジスタの中のＤＤ部２ｄのみが８ビットのデータを保持していることを意味するようになっている。
【００１２】
本プロセッサは、各々データを転送するための、各々３２ビット幅を有するＡバス３１、Ｂバス３２及びＣバス３３を更に備えている。図１において、２０は命令列を格納するためのＲＯＭ（Read-Only Memory）、２１はＲＯＭ２０から読み出された命令を保持するための命令レジスタ（ＩＲ：Instruction Register）、２４はロードストアユニット、２５はデータを格納するためのＲＡＭ（Random
Access Memory）である。
【００１３】
命令レジスタ２１から得られた即値オペランドデータは、Ｂバス３２を駆動するための各々８ビットのドライバ３ａ，３ｂ，３ｃ，３ｄへ供給される。３２ビットの即値オペランドデータをＢバス３２へ供給すべき場合には、ドライバ３ａ〜３ｄが動作する。１６ビットの即値オペランドデータをＢバス３２へ供給すべき場合には、ドライバ３ｃ，３ｄのみが動作する。また、８ビットの即値オペランドデータをＢバス３２へ供給すべき場合には、ドライバ３ｄのみが動作する。
【００１４】
ＲＡＭ２５からロードストアユニット２４により読み出されたロードデータは、Ｂバス３２を駆動するための各々８ビットのドライバ４ａ，４ｂ，４ｃ，４ｄへ供給される。３２ビットのロードデータをＢバス３２へ供給すべき場合には、ドライバ４ａ〜４ｄが動作する。１６ビットのロードデータをＢバス３２へ供給すべき場合には、ドライバ４ｃ，４ｄのみが動作する。また、８ビットのロードデータをＢバス３２へ供給すべき場合には、ドライバ４ｄのみが動作する。
【００１５】
レジスタファイル２から読み出された第１のデータは、Ａバス３１を駆動するための各々８ビットのドライバ５ａ，５ｂ，５ｃ，５ｄへ供給される。ＤＡ部２ａ、ＤＢ部２ｂ、ＤＣ部２ｃ及びＤＤ部２ｄから読み出された３２ビットのデータをＡバス３１へ供給すべき場合には、ドライバ５ａ〜５ｄが動作する。ＤＣ部２ｃ及びＤＤ部２ｄから読み出された１６ビットのデータをＡバス３１へ供給すべき場合には、ドライバ５ｃ，５ｄのみが動作する。また、ＤＤ部２ｄから読み出された８ビットのデータをＡバス３１へ供給すべき場合には、ドライバ５ｄのみが動作する。
【００１６】
レジスタファイル２から読み出された第２のデータは、Ｂバス３２を駆動するための各々８ビットのドライバ６ａ，６ｂ，６ｃ，６ｄへ供給される。ＤＡ部２ａ、ＤＢ部２ｂ、ＤＣ部２ｃ及びＤＤ部２ｄから読み出された３２ビットのデータをＢバス３２へ供給すべき場合には、ドライバ６ａ〜６ｄが動作する。ＤＣ部２ｃ及びＤＤ部２ｄから読み出された１６ビットのデータをＢバス３２へ供給すべき場合には、ドライバ６ｃ，６ｄのみが動作する。また、ＤＤ部２ｄから読み出された８ビットのデータをＢバス３２へ供給すべき場合には、ドライバ６ｄのみが動作する。
【００１７】
図１中の７ａ，７ｂ，７ｃ及び７ｄは、各々Ａバス３１上のデータを取り込むための、各々８ビットのラッチ（ＤＡ１，ＤＢ１，ＤＣ１及びＤＤ１）である。取り込むべきデータが３２ビットのサイズを有する場合には、ラッチ７ａ〜７ｄが動作する。取り込むべきデータが１６ビットのサイズを有する場合には、ラッチ７ｃ，７ｄのみが動作する。また、取り込むべきデータが８ビットのサイズを有する場合には、ラッチ７ｄのみが動作する。
【００１８】
図１中の８ａ，８ｂ，８ｃ及び８ｄは、各々Ｂバス３２上のデータを取り込むための、各々８ビットのラッチ（ＤＡ２，ＤＢ２，ＤＣ２及びＤＤ２）である。取り込むべきデータが３２ビットのサイズを有する場合には、ラッチ８ａ〜８ｄが動作する。取り込むべきデータが１６ビットのサイズを有する場合には、ラッチ８ｃ，８ｄのみが動作する。また、取り込むべきデータが８ビットのサイズを有する場合には、ラッチ８ｄのみが動作する。
【００１９】
本プロセッサは、ラッチ７ａ〜７ｄに取り込まれたデータのサイズを拡張して、その結果を表すデータをＡＬＵ１ａ〜１ｄの左入力へ供給するための３２ビットの拡張器を更に備えている。この３２ビット拡張器は、４個の８ビット拡張器（ＥＡ１，ＥＢ１，ＥＣ１及びＥＤ１）９ａ，９ｂ，９ｃ，９ｄに分割されている。４個の８ビット拡張器９ａ〜９ｄの全てが動作するとき、８ビット又は１６ビットデータのサイズを３２ビットへ拡張するための拡張器が実現する。２個の８ビット拡張器９ｃ，９ｄのみが動作するとき、８ビットデータのサイズを１６ビットへ拡張するための拡張器が実現する。サイズ拡張されるべきデータが符号付きデータであるならば符号拡張が、サイズ拡張されるべきデータが符号なしデータであるならばゼロ拡張がそれぞれなされる。
【００２０】
本プロセッサは、ラッチ８ａ〜８ｄに取り込まれたデータのサイズを拡張して、その結果を表すデータをＡＬＵ１ａ〜１ｄの右入力へ供給するための３２ビットの拡張器を更に備えている。この３２ビット拡張器は、４個の８ビット拡張器（ＥＡ２，ＥＢ２，ＥＣ２及びＥＤ２）１０ａ，１０ｂ，１０ｃ，１０ｄに分割されている。４個の８ビット拡張器１０ａ〜１０ｄの全てが動作するとき、８ビット又は１６ビットデータのサイズを３２ビットへ拡張するための拡張器が実現する。２個の８ビット拡張器１０ｃ，１０ｄのみが動作するとき、８ビットデータのサイズを１６ビットへ拡張するための拡張器が実現する。サイズ拡張されるべきデータが符号付きデータであるならば符号拡張が、サイズ拡張されるべきデータが符号なしデータであるならばゼロ拡張がそれぞれなされる。
【００２１】
ＡＬＵ１ａ〜１ｄの演算結果を表すデータは、Ｃバス３３を駆動するための各々８ビットのドライバ１２ａ，１２ｂ，１２ｃ，１２ｄへ供給される。３２ビットのデータをＣバス３３へ供給すべき場合には、ドライバ１２ａ〜１２ｄが動作する。１６ビットのデータをＣバス３３へ供給すべき場合には、ドライバ１２ｃ，１２ｄのみが動作する。また、８ビットのデータをＣバス３３へ供給すべき場合には、ドライバ１２ｄのみが動作する。レジスタファイル２の中に保持すべきデータは、Ｃバス３３から供給される。また、ＲＡＭ２５へストアすべきデータは、Ｃバス３３からロードストアユニット２４へ供給される。
【００２２】
本プロセッサは、命令レジスタ２１から与えられた命令を解読するための命令解読器（ＩＤ：Instruction Decoder）２２と、ＳＵ部２ａ及びＳＺ部２ｆの各々の情報の書き込み及び読み出しを司るコントローラ２３とを更に備えている。命令解読器２２は、ドライバ３ａ〜３ｄ，４ａ〜４ｄの駆動のオン・オフを含め、図中の操作手段を構成する種々の要素を制御する。コントローラ２３も、ＳＵ部２ａ及びＳＺ部２ｆの各々の情報に応じて、図中の操作手段を構成する種々の要素の動作ビット幅等を制御する。
【００２３】
図２は、本プロセッサの命令セットの一部を示している。本プロセッサは、ロード命令群、サイズ変更命令群、符号有無変更命令群、即値転送命令群、算術論理演算命令群、ストア命令群、ブランチ命令群等を実行できるように構成されている。ただし、図２では、ブランチ命令群等の図示が省略されている。図２中のＲｎ及びＲｍは、各々レジスタＲ０〜Ｒ７のいずれかを意味する。レジスタＲ０〜Ｒ７の各々はプログラマに対して３２ビットレジスタとして定義され、ＳＵ部２ｅとＳＺ部２ｆとはプログラマからは見えない。
【００２４】
（１）ロード命令群
ロード命令群には、以下の６種類の命令が含まれる。個々の命令のオペコードフィールド（operation code field）は、オペランドの符号の有無に関する指定情報と、オペランドのデータサイズに関する指定情報とを含んでいる。いずれの命令でも、プロセッサの動作制御は命令解読器２２によって行われる。
【００２５】
（１．１）  ｌｄｂ  ｍｅｍ，Ｒｎ
この命令は、メモリ（ｍｅｍ）から８ビットデータをロードして、これを符号付きデータとしてレジスタＲｎに設定することを要求する命令である。この命令が解読されると、ロードストアユニット２４がＲＡＭ２５から８ビットのオペランドデータを読み出す。読み出されたデータは、ドライバ４ｄ、Ｂバス３２の最下位８ビット部分を順次経てラッチ８ｄに取り込まれ、拡張器１０ｄ及びＡＬＵ１ｄを素通りしてドライバ１２ｄに供給され、Ｃバス３３の最下位８ビット部分を経てレジスタＲｎのＤＤ部２ｄに格納される。これと並行して、レジスタＲｎのＳＵ部２ｅには符号付きデータの保持を表す値“１”が、そのＳＺ部２ｆには８ビットデータの保持を表す値“００”がそれぞれ格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【００２６】
（１．２）  ｌｄｂｕ  ｍｅｍ，Ｒｎ
この命令は、メモリから８ビットデータをロードして、これを符号なしデータとしてレジスタＲｎに設定することを要求する命令である。この命令が解読された場合のプロセッサの動作は、レジスタＲｎのＳＵ部２ｅに符号なしデータの保持を表す値“０”が格納される点を除いて、上記（１．１）と同じである。
【００２７】
（１．３）  ｌｄｈ  ｍｅｍ，Ｒｎ
この命令は、メモリから１６ビットデータをロードして、これを符号付きデータとしてレジスタＲｎに設定することを要求する命令である。この命令が解読されると、ロードストアユニット２４がＲＡＭ２５から１６ビットのオペランドデータを読み出す。読み出されたデータは、ドライバ４ｃ，４ｄ、Ｂバス３２の最下位１６ビット部分を順次経てラッチ８ｃ，８ｄに取り込まれ、拡張器１０ｃ，１０ｄ及びＡＬＵ１ｃ，１ｄを素通りしてドライバ１２ｃ，１２ｄに供給され、Ｃバス３３の最下位１６ビット部分を経てレジスタＲｎのＤＣ部２ｃ及びＤＤ部２ｄに格納される。これと並行して、レジスタＲｎのＳＵ部２ｅには符号付きデータの保持を表す値“１”が、そのＳＺ部２ｆには１６ビットデータの保持を表す値“０１”がそれぞれ格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【００２８】
（１．４）  ｌｄｈｕ  ｍｅｍ，Ｒｎ
この命令は、メモリから１６ビットデータをロードして、これを符号なしデータとしてレジスタＲｎに設定することを要求する命令である。この命令が解読された場合のプロセッサの動作は、レジスタＲｎのＳＵ部２ｅに符号なしデータの保持を表す値“０”が格納される点を除いて、上記（１．３）と同じである。
【００２９】
（１．５）  ｌｄ  ｍｅｍ，Ｒｎ
この命令は、メモリから３２ビットデータをロードして、これを符号付きデータとしてレジスタＲｎに設定することを要求する命令である。この命令が解読されると、ロードストアユニット２４がＲＡＭ２５から３２ビットのオペランドデータを読み出す。読み出されたデータは、ドライバ４ａ〜４ｄ、Ｂバス３２の全部を順次経てラッチ８ａ〜８ｄに取り込まれ、拡張器１０ａ〜１０ｄ及びＡＬＵ１ａ〜１ｄを素通りしてドライバ１２ａ〜１２ｄに供給され、Ｃバス３３の全部を経てレジスタＲｎのＤＡ部２ａ、ＤＢ部２ｂ、ＤＣ部２ｃ及びＤＤ部２ｄに格納される。これと並行して、レジスタＲｎのＳＵ部２ｅには符号付きデータの保持を表す値“１”が、そのＳＺ部２ｆには３２ビットデータの保持を表す値“１０”がそれぞれ格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【００３０】
（１．６）  ｌｄｕ  ｍｅｍ，Ｒｎ
この命令は、メモリから３２ビットデータをロードして、これを符号なしデータとしてレジスタＲｎに設定することを要求する命令である。この命令が解読された場合のプロセッサの動作は、レジスタＲｎのＳＵ部２ｅに符号なしデータの保持を表す値“０”が格納される点を除いて、上記（１．５）と同じである。
【００３１】
（２）サイズ変更命令群
サイズ変更命令群には、以下の３種類の命令が含まれる。個々の命令のオペコードフィールドは、オペランドのデータサイズに関する指定情報を含むが、オペランドの符号の有無に関する指定情報を含まない。いずれの命令でも、プロセッサの動作制御は命令解読器２２とコントローラ２３とによって行われる。
【００３２】
（２．１）  ｅｘｔｂ  Ｒｎ
この命令は、レジスタＲｎに保持されたデータ（Ｒｎデータ）のサイズを８ビットに変更することを要求する命令である。この命令が解読されると、レジスタＲｎのＳＵ部２ｅ及びＳＺ部２ｆの各々の値がコントローラ２３に送られる。以降の動作は、ＳＺ部２ｆの値、すなわちＲｎデータのサイズに応じて異なる。
【００３３】
(i) Ｒｎデータが８ビットデータである場合には、何の動作も行われない。全てのドライバは動作せず、全てのラッチやレジスタはデータの保持を続ける。
【００３４】
(ii) Ｒｎデータが１６ビットデータである場合には、レジスタＲｎのＳＺ部２ｆの値が、１６ビットデータの保持を表す値“０１”から、８ビットデータの保持を表す値“００”に変更される。ただし、レジスタＲｎのＳＵ部２ｅの値は変更されない。これにより、レジスタＲｎに保持された１６ビットデータは、符号の有無をそのままに、その上位８ビットが無効化される。全てのドライバは動作せず、全てのラッチや他のレジスタはデータの保持を続ける。
【００３５】
(iii) Ｒｎデータが３２ビットデータである場合には、レジスタＲｎのＳＺ部２ｆの値が、３２ビットデータの保持を表す値“１０”から、８ビットデータの保持を表す値“００”に変更される。ただし、レジスタＲｎのＳＵ部２ｅの値は変更されない。これにより、レジスタＲｎに保持された３２ビットデータは、符号の有無をそのままに、その上位２４ビットが無効化される。全てのドライバは動作せず、全てのラッチや他のレジスタはデータの保持を続ける。
【００３６】
（２．２）  ｅｘｔｈ  Ｒｎ
この命令は、Ｒｎデータのサイズを１６ビットに変更することを要求する命令である。この命令が解読されると、レジスタＲｎのＳＵ部２ｅ及びＳＺ部２ｆの各々の値がコントローラ２３に送られる。以降の動作は、ＳＵ部２ｅ及びＳＺ部２ｆの値、すなわちＲｎデータの符号の有無とサイズとに応じて異なる。
【００３７】
(i) Ｒｎデータが８ビットデータである場合には、データのサイズ拡張が行われる。具体的には、レジスタＲｎのＤＤ部２ｄから８ビットのオペランドデータが読み出され、これがドライバ６ｄ、Ｂバス３２の最下位８ビット部分を順次経てラッチ８ｄに取り込まれる。そして、ラッチ８ｄに取り込まれた８ビットデータのサイズが拡張器１０ｃ，１０ｄにより１６ビットに拡張される。詳細には、レジスタＲｎに保持された８ビットデータが符号付きデータであるならば上位８ビットに符号拡張が、レジスタＲｎに保持された８ビットデータが符号なしデータであるならば上位８ビットにゼロ拡張がそれぞれなされる。このサイズ拡張により得られた１６ビットデータは、ＡＬＵ１ｃ，１ｄを素通りしてドライバ１２ｃ，１２ｄに供給され、Ｃバス３３の最下位１６ビット部分を経てレジスタＲｎのＤＣ部２ｃ及びＤＤ部２ｄに格納される。これと並行して、レジスタＲｎのＳＺ部２ｆの値は、８ビットデータの保持を表す値“００”から、１６ビットデータの保持を表す値“０１”に変更される。ただし、レジスタＲｎのＳＵ部２ｅの値は変更されない。これにより、レジスタＲｎに保持されたデータの符号の有無をそのままに、該データのサイズが８ビットから１６ビットへ拡張される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【００３８】
(ii) Ｒｎデータが１６ビットデータである場合には、何の動作も行われない。全てのドライバは動作せず、全てのラッチやレジスタはデータの保持を続ける。
【００３９】
(iii) Ｒｎデータが３２ビットデータである場合には、レジスタＲｎのＳＺ部２ｆの値が、３２ビットデータの保持を表す値“１０”から、１６ビットデータの保持を表す値“０１”に変更される。ただし、レジスタＲｎのＳＵ部２ｅの値は変更されない。これにより、レジスタＲｎに保持された３２ビットデータは、符号の有無をそのままに、その上位１６ビットが無効化される。全てのドライバは動作せず、全てのラッチや他のレジスタはデータの保持を続ける。
【００４０】
（２．３）  ｅｘｔ  Ｒｎ
この命令は、Ｒｎデータのサイズを３２ビットに変更することを要求する命令である。この命令が解読されると、レジスタＲｎのＳＵ部２ｅ及びＳＺ部２ｆの各々の値がコントローラ２３に送られる。以降の動作は、ＳＵ部２ｅ及びＳＺ部２ｆの値、すなわちレジスタＲｎの保持データの符号の有無とサイズとに応じて異なる。
【００４１】
(i) Ｒｎデータが８ビットデータである場合には、データのサイズ拡張が行われる。具体的には、レジスタＲｎのＤＤ部２ｄから８ビットのオペランドデータが読み出され、これがドライバ６ｄ、Ｂバス３２の最下位８ビット部分を順次経てラッチ８ｄに取り込まれる。そして、ラッチ８ｄに取り込まれた８ビットデータのサイズが拡張器１０ａ〜１０ｄにより３２ビットに拡張される。詳細には、レジスタＲｎに保持された８ビットデータが符号付きデータであるならば上位２４ビットに符号拡張が、レジスタＲｎに保持された８ビットデータが符号なしデータであるならば上位２４ビットにゼロ拡張がそれぞれなされる。このサイズ拡張により得られた３２ビットデータは、ＡＬＵ１ａ〜１ｄを素通りしてドライバ１２ａ〜１２ｄに供給され、Ｃバス３３の全部を経てレジスタＲｎのＤＡ部２ａ、ＤＢ部２ｂ、ＤＣ部２ｃ及びＤＤ部２ｄに格納される。これと並行して、レジスタＲｎのＳＺ部２ｆの値は、８ビットデータの保持を表す値“００”から、３２ビットデータの保持を表す値“１０”に変更される。ただし、レジスタＲｎのＳＵ部２ｅの値は変更されない。これにより、レジスタＲｎに保持されたデータの符号の有無をそのままに、該データのサイズが８ビットから３２ビットへ拡張される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【００４２】
(ii) Ｒｎデータが１６ビットデータである場合には、データのサイズ拡張が行われる。具体的には、レジスタＲｎのＤＣ部２ｃ及びＤＤ部２ｄから１６ビットのオペランドデータが読み出され、これがドライバ６ｃ，６ｄ、Ｂバス３２の最下位１６ビット部分を順次経てラッチ８ｃ，８ｄに取り込まれる。そして、ラッチ８ｃ，８ｄに取り込まれた１６ビットデータのサイズが拡張器１０ａ〜１０ｄにより３２ビットに拡張される。プロセッサの以降の動作は、Ｒｎデータが８ビットデータである場合に関する上記(i)と同じである。
【００４３】
(iii) Ｒｎデータが３２ビットデータである場合には、何の動作も行われない。全てのドライバは動作せず、全てのラッチやレジスタはデータの保持を続ける。
【００４４】
（３）符号有無変更命令群
符号有無変更命令群には、以下の２種類の命令が含まれる。個々の命令のオペコードフィールドは、オペランドの符号の有無に関する指定情報を含むが、オペランドのデータサイズに関する指定情報を含まない。いずれの命令でも、プロセッサの動作制御は命令解読器２２によって行われる。
【００４５】
（３．１）  ｓｇｎ  Ｒｎ
この命令は、レジスタＲｎに保持されたデータ（Ｒｎデータ）を符号付きデータに変更することを要求する命令である。この命令が解読されると、レジスタＲｎのＳＵ部２ｅに符号付きデータの保持を表す値“１”が格納される。レジスタＲｎのＳＺ部２ｆの値は変更されない。これにより、レジスタＲｎに符号なしデータが保持されていた場合には、そのデータサイズをそのままに、以降は該データが符号付きデータとして扱われることとなる。全てのドライバは動作せず、全てのラッチや他のレジスタはデータの保持を続ける。
【００４６】
（３．２）  ｕｎｓｇｎ  Ｒｎ
この命令は、Ｒｎデータを符号なしデータに変更することを要求する命令である。この命令が解読されると、レジスタＲｎのＳＵ部２ｅに符号なしデータの保持を表す値“０”が格納される。レジスタＲｎのＳＺ部２ｆの値は変更されない。これにより、レジスタＲｎに符号付きデータが保持されていた場合には、そのデータサイズをそのままに、以降は該データが符号なしデータとして扱われることとなる。全てのドライバは動作せず、全てのラッチや他のレジスタはデータの保持を続ける。
【００４７】
（４）即値転送命令群
即値転送命令群には、以下の６種類の命令が含まれる。個々の命令のオペコードフィールドは、オペランドの符号の有無に関する指定情報と、オペランドのデータサイズに関する指定情報とを含んでいる。いずれの命令でも、プロセッサの動作制御は命令解読器２２によって行われる。
【００４８】
（４．１）  ｍｏｖｂ  ｉｍｍ８，Ｒｎ
この命令は、オペランドフィールドで指定された８ビット即値データ（ｉｍｍ８）を符号付きデータとしてレジスタＲｎに転送することを要求する命令である。この命令が解読されると、命令レジスタ２１から８ビット即値データが読み出される。読み出されたデータは、ドライバ３ｄ、Ｂバス３２の最下位８ビット部分を順次経てラッチ８ｄに取り込まれ、拡張器１０ｄ及びＡＬＵ１ｄを素通りしてドライバ１２ｄに供給され、Ｃバス３３の最下位８ビット部分を経てレジスタＲｎのＤＤ部２ｄに格納される。これと並行して、レジスタＲｎのＳＵ部２ｅには符号付きデータの保持を表す値“１”が、そのＳＺ部２ｆには８ビットデータの保持を表す値“００”がそれぞれ格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【００４９】
（４．２）  ｍｏｖｂｕ  ｉｍｍ８，Ｒｎ
この命令は、オペランドフィールドで指定された８ビット即値データを符号なしデータとしてレジスタＲｎに転送することを要求する命令である。この命令が解読された場合のプロセッサの動作は、レジスタＲｎのＳＵ部２ｅに符号なしデータの保持を表す値“０”が格納される点を除いて、上記（４．１）と同じである。
【００５０】
（４．３）  ｍｏｖｈ  ｉｍｍ１６，Ｒｎ
この命令は、オペランドフィールドで指定された１６ビット即値データ（ｉｍｍ１６）を符号付きデータとしてレジスタＲｎに転送することを要求する命令である。この命令が解読されると、命令レジスタ２１から１６ビット即値データが読み出される。読み出されたデータは、ドライバ３ｃ，３ｄ、Ｂバス３２の最下位１６ビット部分を順次経てラッチ８ｃ，８ｄに取り込まれ、拡張器１０ｃ，１０ｄ及びＡＬＵ１ｃ，１ｄを素通りしてドライバ１２ｃ，１２ｄに供給され、Ｃバス３３の最下位１６ビット部分を経てレジスタＲｎのＤＣ部２ｃ及びＤＤ部２ｄに格納される。これと並行して、レジスタＲｎのＳＵ部２ｅには符号付きデータの保持を表す値“１”が、そのＳＺ部２ｆには１６ビットデータの保持を表す値“０１”がそれぞれ格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【００５１】
（４．４）  ｍｏｖｈｕ  ｉｍｍ１６，Ｒｎ
この命令は、オペランドフィールドで指定された１６ビット即値データを符号なしデータとしてレジスタＲｎに転送することを要求する命令である。この命令が解読された場合のプロセッサの動作は、レジスタＲｎのＳＵ部２ｅに符号なしデータの保持を表す値“０”が格納される点を除いて、上記（４．３）と同じである。
【００５２】
（４．５）  ｍｏｖ  ｉｍｍ３２，Ｒｎ
この命令は、オペランドフィールドで指定された３２ビット即値データ（ｉｍｍ３２）を符号付きデータとしてレジスタＲｎに転送することを要求する命令である。この命令が解読されると、命令レジスタ２１から３２ビット即値データが読み出される。読み出されたデータは、ドライバ３ａ〜３ｄ、Ｂバス３２の全部を順次経てラッチ８ａ〜８ｄに取り込まれ、拡張器１０ａ〜１０ｄ及びＡＬＵ１ａ〜１ｄを素通りしてドライバ１２ａ〜１２ｄに供給され、Ｃバス３３の全部を経てレジスタＲｎのＤＡ部２ａ、ＤＢ部２ｂ、ＤＣ部２ｃ及びＤＤ部２ｄに格納される。これと並行して、レジスタＲｎのＳＵ部２ｅには符号付きデータの保持を表す値“１”が、そのＳＺ部２ｆには３２ビットデータの保持を表す値“１０”がそれぞれ格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【００５３】
（４．６）  ｍｏｖｕ  ｉｍｍ３２，Ｒｎ
この命令は、オペランドフィールドで指定された３２ビット即値データを符号なしデータとしてレジスタＲｎに転送することを要求する命令である。この命令が解読された場合のプロセッサの動作は、レジスタＲｎのＳＵ部２ｅに符号なしデータの保持を表す値“０”が格納される点を除いて、上記（４．５）と同じである。
【００５４】
（５）算術論理演算命令群
算術論理演算命令群には、以下の５種類のレジスタ間演算命令が含まれる。個々の命令のオペコードフィールドは、オペランドのデータサイズに関する指定情報を含まず、またオペランドの符号の有無に関する指定情報を含まない。ここでは、２オペランド形式を採用し、演算及びフラグの生成はデスティネーションオペランドのデータサイズに基づくものとする。いずれの命令でも、プロセッサの動作制御は命令解読器２２とコントローラ２３とによって行われる。
【００５５】
（５．１）  ａｄｄ  Ｒｍ，Ｒｎ
この命令は、レジスタＲｍに保持されたデータ（Ｒｍデータ）と、レジスタＲｎに保持されたデータ（Ｒｎデータ）とを加算して、その結果をレジスタＲｎに格納することを要求する命令である。この命令が解読されると、レジスタＲｎのＳＵ部２ｅ及びＳＺ部２ｆの各々の値と、レジスタＲｍのＳＵ部２ｅ及びＳＺ部２ｆの各々の値とがコントローラ２３に送られる。
【００５６】
次に、Ｒｍデータの転送について説明する。Ｒｍデータが８ビットデータである場合には、レジスタＲｍのＤＤ部２ｄから８ビットのオペランドデータが読み出され、これがドライバ６ｄ、Ｂバス３２の最下位８ビット部分を順次経てラッチ８ｄに取り込まれる。Ｒｍデータが１６ビットデータである場合には、レジスタＲｍのＤＣ部２ｃ及びＤＤ部２ｄから１６ビットのオペランドデータが読み出され、これがドライバ６ｃ，６ｄ、Ｂバス３２の最下位１６ビット部分を順次経てラッチ８ｃ，８ｄに取り込まれる。Ｒｍデータが３２ビットデータである場合には、レジスタＲｍのＤＡ部２ａ、ＤＢ部２ｂ、ＤＣ部２ｃ及びＤＤ部２ｄから３２ビットのオペランドデータが読み出され、これがドライバ６ａ〜６ｄ、Ｂバス３２の全部を順次経てラッチ８ａ〜８ｄに取り込まれる。
【００５７】
次に、Ｒｎデータの転送について説明する。Ｒｎデータが８ビットデータである場合には、レジスタＲｎのＤＤ部２ｄから８ビットのオペランドデータが読み出され、これがドライバ５ｄ、Ａバス３１の最下位８ビット部分を順次経てラッチ７ｄに取り込まれる。Ｒｎデータが１６ビットデータである場合には、レジスタＲｎのＤＣ部２ｃ及びＤＤ部２ｄから１６ビットのオペランドデータが読み出され、これがドライバ５ｃ，５ｄ、Ａバス３１の最下位１６ビット部分を順次経てラッチ７ｃ，７ｄに取り込まれる。Ｒｎデータが３２ビットデータである場合には、レジスタＲｎのＤＡ部２ａ、ＤＢ部２ｂ、ＤＣ部２ｃ及びＤＤ部２ｄから３２ビットのオペランドデータが読み出され、これがドライバ５ａ〜５ｄ、Ａバス３１の全部を順次経てラッチ７ａ〜７ｄに取り込まれる。
【００５８】
ラッチ７ａ〜７ｄに保持されたＲｎデータは、拡張器９ａ〜９ｄを素通りして、ＡＬＵ１ａ〜１ｄの左入力に与えられる。ラッチ８ａ〜８ｄに保持されたＲｍデータは、ＲｎデータのサイズがＲｍデータのサイズより大きい場合には、拡張器１０ａ〜１０ｄによりＲｎデータのサイズまで拡張がなされたうえ、ＡＬＵ１ａ〜１ｄの右入力に与えられる。そうでない場合には、Ｒｍデータが拡張器１０ａ〜１０ｄを素通りしてＡＬＵ１ａ〜１ｄの右入力に与えられる。Ｒｍデータのサイズ拡張がなされる際、Ｒｍデータの符号の有無に関する情報に応じて、“１”ならば符号拡張が、“０”ならばゼロ拡張がそれぞれ選択される。
【００５９】
ＡＬＵ１ａ〜１ｄ及びゲート１１ａ〜１１ｃは、Ｒｎデータのサイズに応じて動作する。Ｒｎデータが８ビットデータである場合には、ＡＬＵ１ｄのみが動作して、８ビットの加算結果と、フラグとが得られる。Ｒｎデータが１６ビットデータである場合には、ＡＬＵ１ｃ，１ｄ及びゲート１１ｃのみが動作して、１６ビットの加算結果と、フラグとが得られる。Ｒｎデータが３２ビットデータである場合には、ＡＬＵ１ａ〜１ｄ及びゲート１１ａ〜１１ｃの全てが動作して、３２ビットの加算結果と、フラグとが得られる。フラグは、Ｒｎデータのサイズに応じたビット位置において、かつＲｎデータの符号の有無に関する情報に応じて生成される。
【００６０】
レジスタファイル２への加算結果の格納も、Ｒｎデータのサイズに応じてなされる。Ｒｎデータが８ビットデータである場合には、８ビットの加算結果がドライバ１２ｄに供給され、Ｃバス３３の最下位８ビット部分を経てレジスタＲｎのＤＤ部２ｄに格納される。Ｒｎデータが１６ビットデータである場合には、１６ビットの加算結果がドライバ１２ｃ，１２ｄに供給され、Ｃバス３３の最下位１６ビット部分を経てレジスタＲｎのＤＣ部２ｃ及びＤＤ部２ｄに格納される。Ｒｎデータが３２ビットデータである場合には、３２ビットの加算結果がドライバ１２ａ〜１２ｄに供給され、Ｃバス３３の全部を経てレジスタＲｎのＤＡ部２ａ、ＤＢ部２ｂ、ＤＣ部２ｃ及びＤＤ部２ｄに格納される。以上のプロセッサ動作の間、他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【００６１】
（５．２）  ｓｕｂ  Ｒｍ，Ｒｎ
この命令は、ＲｍデータからＲｎデータを減算して、その結果をレジスタＲｎに格納することを要求する命令である。この命令が解読された場合のプロセッサの動作は、ＡＬＵ１ａ〜１ｄにおける演算操作が減算である点を除いて、上記（５．１）と同じである。
【００６２】
（５．３）  ｃｍｐ  Ｒｍ，Ｒｎ
この命令は、ＲｍデータとＲｎデータとを比較することを要求する命令である。この命令が解読された場合のプロセッサの動作は、ＡＬＵ１ａ〜１ｄにおける演算操作が減算である点と、ドライバ１２ａ〜１２ｄの全てがＣバス３３を駆動しない点と、レジスタＲｎのＤＡ部２ａ、ＤＢ部２ｂ、ＤＣ部２ｃ及びＤＤ部２ｄが更新されない点とを除いて、上記（５．１）と同じである。
【００６３】
（５．４）  ａｎｄ  Ｒｍ，Ｒｎ
この命令は、ＲｍデータとＲｎデータとの論理積をレジスタＲｎに格納することを要求する命令である。この命令が解読された場合のプロセッサの動作は、ＡＬＵ１ａ〜１ｄにおける演算操作が論理積である点を除いて、上記（５．１）と同じである。
【００６４】
（５．５）  ｏｒ  Ｒｍ，Ｒｎ
この命令は、ＲｍデータとＲｎデータとの論理和をレジスタＲｎに格納することを要求する命令である。この命令が解読された場合のプロセッサの動作は、ＡＬＵ１ａ〜１ｄにおける演算操作が論理和である点を除いて、上記（５．１）と同じである。
【００６５】
（６）ストア命令群
ストア命令群には、次の１種類の命令が含まれる。命令のオペコードフィールドは、オペランドのデータサイズに関する指定情報を含まず、またオペランドの符号の有無に関する指定情報を含まない。プロセッサの動作制御は命令解読器２２とコントローラ２３とによって行われる。
【００６６】
（６．１）  ｓｔ  Ｒｎ，ｍｅｍ
この命令は、レジスタＲｎに保持されたデータ（Ｒｎデータ）をメモリにストアすることを要求する命令であって、メモリへのストアはＲｎデータのサイズに基づく。この命令が解読されると、レジスタＲｎのＳＵ部２ｅ及びＳＺ部２ｆの各々の値がコントローラ２３に送られる。Ｒｎデータが８ビットデータである場合には、レジスタＲｎのＤＤ部２ｄから８ビットのオペランドデータが読み出され、これがドライバ６ｄ、Ｂバス３２の最下位８ビット部分を順次経てラッチ８ｄに取り込まれ、拡張器１０ｄ及びＡＬＵ１ｄを素通りしてドライバ１２ｄに供給され、Ｃバス３３の最下位８ビット部分を経てＲＡＭ２５に格納される。Ｒｎデータが１６ビットデータである場合には、レジスタＲｎのＤＣ部２ｃ及びＤＤ部２ｄから１６ビットのオペランドデータが読み出され、これがドライバ６ｃ，６ｄ、Ｂバス３２の最下位１６ビット部分を順次経てラッチ８ｃ，８ｄに取り込まれ、拡張器１０ｃ，１０ｄ及びＡＬＵ１ｃ，１ｄを素通りしてドライバ１２ｃ，１２ｄに供給され、Ｃバス３３の最下位１６ビット部分を経てＲＡＭ２５に格納される。Ｒｎデータが３２ビットデータである場合には、レジスタＲｎのＤＡ部２ａ、ＤＢ部２ｂ、ＤＣ部２ｃ及びＤＤ部２ｄから３２ビットのオペランドデータが読み出され、これがドライバ６ａ〜６ｄ、Ｂバス３２の全部を順次経てラッチ８ａ〜８ｄに取り込まれ、拡張器１０ａ〜１０ｄ及びＡＬＵ１ａ〜１ｄを素通りしてドライバ１２ａ〜１２ｄに供給され、Ｃバス３３の全部を経てＲＡＭ２５に格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【００６７】
以上で図２中の全ての命令群を説明した。次に、２つの８ビットデータをメモリから順次ロードし、これらを加算し、その結果を表す８ビットデータをメモリにストアするという一連の動作を行うことを要求する命令列、すなわち、
命令１：  ｌｄｂ  ｍｅｍ，Ｒ０
命令２：  ｌｄｂ  ｍｅｍ，Ｒ１
命令３：  ａｄｄ  Ｒ１，Ｒ０
命令４：  ｓｔ    Ｒ０，ｍｅｍ
が実行される場合の、図１のプロセッサの動作を説明する。まず、命令１の実行により、ＲＡＭ２５から８ビットデータがロードされ、これが符号付きデータとしてレジスタＲ０のＤＤ部２ｄに設定される。レジスタＲ０のＳＺ部２ｆには、８ビットデータの保持を表す値“００”が格納される。次に、命令２の実行により、ＲＡＭ２５から更に８ビットデータがロードされ、これが符号付きデータとしてレジスタＲ１のＤＤ部２ｄに設定される。レジスタＲ１のＳＺ部２ｆには、８ビットデータの保持を表す値“００”が格納される。続いて、命令３の実行により、レジスタＲ０及びＲ１の各々のＳＺ部２ｆが参照されて、Ｒ０データとＲ１データとの８ビット加算が行われ、その結果を表す８ビットデータがレジスタＲ０に格納される。この際、Ｒ０データは拡張器９ｄを素通りしてＡＬＵ１ｄの左入力に、Ｒ１データは拡張器１０ｄを素通りしてＡＬＵ１ｄの右入力にそれぞれ与えられる。ＡＬＵ１ｄは８ビットの加算結果を生成し、この加算結果はレジスタＲ０のＤＤ部２ｄに格納される。最後に、命令４の実行により、レジスタＲ０のＳＺ部２ｆが参照されて、当該レジスタＲ０に保持された８ビットの加算結果がＲＡＭ２５にストアされる。
【００６８】
以上の一連のプロセッサ動作では、ＡＬＵ１ａ〜１ｃ、レジスタＲ０，Ｒ１の各々のＤＡ部２ａ、ＤＢ部２ｂ及びＤＣ部２ｃ、ドライバ４ａ〜４ｃ，５ａ〜５ｃ，６ａ〜６ｃ、ラッチ７ａ〜７ｃ，８ａ〜８ｃ、拡張器９ａ〜９ｃ，１０ａ〜１０ｃ、ゲート１１ａ〜１１ｃ、ドライバ１２ａ〜１２ｃ、並びに、Ａ、Ｂ及びＣバス３１，３２，３３の各々の上位２４ビット部分は決して使用されないので、電力消費の無駄が削減される。上記命令列中の例えば命令１（ロード命令）を即値転送命令に置き換えても同様である。また、図１のプロセッサで１６ビットデータを扱う場合にも消費電力削減効果が得られる。
【００６９】
しかも、図１のプロセッサによれば、レジスタファイル２を構成する８本のレジスタＲ０〜Ｒ７の各々にＳＺ部２ｆを設け、ＲＡＭ２５からレジスタファイル２への特定サイズのオペランドデータのロードを要求する命令や、レジスタファイル２への特定サイズの即値オペランドデータの転送を要求する命令が解読されたときには、オペランドデータのサイズ情報をＳＺ部２ｆに保持させ、レジスタファイル２の中のオペランドデータの参照を要求する算術論理演算命令、又は、レジスタファイル２からＲＡＭ２５へのオペランドデータのストアを要求する命令が解読されたときには、レジスタファイル２のＳＺ部２ｆからサイズ情報を読み出して、操作手段を構成する種々の要素のうち当該サイズ情報により指定された部分のみを動作させることとしたので、命令数を増やさずに、従来のプログラム資産を活用しながら上記消費電力削減効果を得ることができる。
【００７０】
なお、本発明は、複数のサイズのデータを扱うプロセッサである限り、ＲＩＳＣ型に限らず、例えばＣＩＳＣ（Complex Instruction Set Computer）型のプロセッサにも適用可能である。その他、例えば次のような変形が可能である。
【００７１】
（ａ）算術論理演算命令群において、演算及びフラグの生成はデスティネーションオペランドのデータサイズに基づくとしたが、ソースオペランドとデスティネーションオペランドとのうちデータサイズの大きい方に基づくとしてもよい。
【００７２】
（ｂ）算術論理演算命令群は２オペランド形式としたが、３オペランド形式であってもよい。その場合、デスティネーションオペランドのデータサイズは、２つのソースオペランドのデータサイズのうち大きい方に基づくとするのが好適である。
【００７３】
（ｃ）レジスタファイル、ラッチ、拡張器、ＡＬＵ、ドライバ、バスを最上位８ビット、中上位８ビット、中下位８ビット、最下位８ビットの４つの部分に分けて制御しているが、最上位８ビットと中上位８ビットとを一体化して、最上位１６ビット、中位８ビット、最下位８ビットの３つの部分に区切って制御してもよい。
【００７４】
（ｄ）データサイズを８ビット、１６ビット、３２ビットの３種類としているが、それに２４ビットのデータサイズを加えて４種類としてもよい。こうすれば、レジスタファイル、ラッチ、拡張器、ＡＬＵ、ドライバ、バスを最上位８ビット、中上位８ビット、中下位８ビット、最下位８ビットの４つの部分に分けて制御する図１の構成が活かされる。
【００７５】
（ｅ）データサイズを８ビット、１６ビット、３２ビット、６４ビットの４種類とすることも可能である。例えば、レジスタファイル、ラッチ、拡張器、ＡＬＵ、ドライバ、バスのビット幅を６４ビットに拡げ、最上位３２ビット、中上位１６ビット、中下位８ビット、最下位８ビットの４つの部分に分けて制御するようにすればよい。
【００７６】
（ｆ）データサイズは８ビットの倍数に限らない。ＡＬＵの出力からレジスタファイル２の入力に至る経路上のいずれかの位置にオペランドデータの有効サイズ検出機構を設け、検出した有効サイズをＳＺ部２ｆに保持させるようにしてもよい。例えば、名目上は３２ビットの符号なしデータであっても、実際には最上位２８ビットが全て０値ビットであることもある。このような場合には、４ビットデータの保持を意味するサイズ情報をＳＺ部２ｆに保持させ、このサイズ情報に応答して、操作手段を構成する種々の要素の最下位４ビット部分のみを動作させればよい。
【００７７】
（ｇ）レジスタファイル２の中にＳＵ部２ｅ及びＳＺ部２ｆを設けず、算術論理演算命令の実行時にレジスタファイル２から２つの３２ビットデータを読み出し、両データからその有効サイズと符号付き／符号なしの区別とを検出するためのサイズ／符号検出部を別に設けるようにしてもよい。このサイズ／符号検出部は、各データの最上位ビット側からビットサーチを行い、最初に１が立っているビットの位置を検出する。その値の大きい方を有効サイズとし、これをコントローラ２３に入力する。また、ビットサーチの結果、最上位ビットに１が立っている場合には「符号付き」の情報を、立っていない場合には「符号なし」の情報をコントローラ２３に入力する。この一連の動作によって、コントローラ２３は上記と同様の信号を入力されるので、以後の動作は同様である。ただし、ＡＬＵ等の操作手段は動作幅が１ビット単位で分割されているものとする。なお、動作幅を１ビット単位ではなく例えば４ビット単位で分割することとすれば、サイズ／符号検出部でビットサーチを行わず、代わりに４ビット毎の論理操作をすればよいので効率的である。
【００７８】
（ｈ）マルチタスク処理に対応するためには、ＳＵ部２ｅ及びＳＺ部２ｆをコンテキストブロックに追加し、タスク切り換え時にはこれらを退避又は復帰するようにすればよい。
【００７９】
【発明の効果】
以上説明してきたとおり、本発明によれば、複数のサイズのデータを扱うプロセッサにおいて、最大サイズに対応したビット幅を有する操作手段のうち、指定されたオペランドのデータサイズに応じた部分のみを動作させることとしたので、当該プロセッサにおける電力消費の無駄を削減することができる。
【００８０】
また、オペランドデータのサイズ情報をレジスタファイルに保持させ、当該オペランドデータの参照を要求する算術論理演算命令等が解読されたときには、レジスタファイルからオペランドデータとともにサイズ情報を読み出して、前記操作手段のうち当該サイズ情報により指定された部分のみを動作させることとすれば、命令数を増やさずに、従来のプログラム資産を活用しながら上記消費電力削減効果を得ることができる。
【図面の簡単な説明】
【図１】本発明に係るプロセッサの構成例を示すブロック図である。
【図２】図１のプロセッサの命令セットの一部を示す図である。
【符号の説明】
１ａ〜１ｄ  ＡＬＵ［算術論理演算手段］
２  レジスタファイル［レジスタ手段］
２ａ  データＡ部（ＤＡ部）
２ｂ  データＢ部（ＤＢ部）
２ｃ  データＣ部（ＤＣ部）
２ｄ  データＤ部（ＤＤ部）
２ｅ  符号情報部（ＳＵ部）
２ｆ  サイズ情報部（ＳＺ部）
３ａ〜３ｄ  ドライバ［ドライバ手段］
４ａ〜４ｄ  ドライバ［ドライバ手段］
５ａ〜５ｄ  ドライバ［ドライバ手段］
６ａ〜６ｄ  ドライバ［ドライバ手段］
７ａ〜７ｄ  ラッチ［ラッチ手段］
８ａ〜８ｄ  ラッチ［ラッチ手段］
９ａ〜９ｄ  拡張器［拡張手段］
１０ａ〜１０ｄ  拡張器［拡張手段］
１１ａ〜１１ｃ  ゲート［演算情報伝達手段］
１２ａ〜１２ｄ  ドライバ［ドライバ手段］
２０  ＲＯＭ
２１  命令レジスタ（ＩＲ）
２２  命令解読器（ＩＤ）［操作制御手段］
２３  コントローラ［操作制御手段］
２４  ロードストアユニット
２５  ＲＡＭ
３１  Ａバス［バス手段］
３２  Ｂバス［バス手段］
３３  Ｃバス［バス手段］
【図１】
0003805578.tif 000002
【図２】
0003805578.tif 000003