(57)【要約】【課題】基本演算語長の異なる複数のディジタル信号処理アルゴリズムを同一のマイクロプロセッサで実行でき、固定長命令フォーマットのマイクロプロセッサに対しても、命令セットが不足することがないようにすること。【解決手段】命令メモリ１と、データメモリ６と、汎用レジスタ４と、命令デコーダ２と、演算ユニット３と、メモリインターフェースユニット５と、メモリインターフェースユニット５からデータメモリ６に出力されるアドレスに基づいて演算語長を切り替えるための演算語長選択信号を発生するデータメモリ用演算語長算出テーブル７とを備え、命令デコーダ２は、演算語長選択信号およびフェッチされた命令をデコードし、アクセスするデータメモリ６のアドレスに応じて演算語長を切り替える。【選択図】      図１
2004206214.tif 000002
【特許請求の範囲】
【請求項１】
命令コードが予め格納されている命令メモリと、
データを記憶するデータメモリと、
データを一時的に格納する汎用レジスタと、
フェッチされた命令をデコードする命令デコーダと、
前記命令デコーダのデコード結果に基づいて前記命令メモリおよびデータメモリにアドレスを出力するとともに、データメモリと汎用レジスタとの間のデータアクセスを仲介するメモリインターフェースユニットと、
前記命令デコーダのデコード結果に基づいて前記汎用レジスタを用いて演算を行なう演算ユニットと、
を備えるマイクロプロセッサにおいて、
前記メモリインターフェースユニットから前記データメモリに出力されるアドレスに基づいて演算語長を切り替えるための演算語長選択信号を発生する演算語長選択信号発生器を備え、
前記命令デコーダは、この演算語長選択信号および前記フェッチされた命令をデコードし、
前記アクセスするデータメモリのアドレスに応じて演算語長を切り替えることを特徴とするマイクロプロセッサ。
【請求項２】
前記演算語長選択信号発生器から出力される演算語長選択信号を記憶保持する演算語長選択信号保持用レジスタを備え、
以降の命令でデータメモリをアクセスしない場合には、前記演算語長選択信号発生器から新たな演算語長選択信号が出力されるまでは、演算語長選択信号保持用レジスタに保持されている演算語長を用いることを特徴とする請求項１に記載マイクロプロセッサ。
【請求項３】
前記演算語長選択信号発生器は、命令により書き込み可能なレジスタであり、命令によってデータメモリの領域と演算語長との関係を設定可能にすることを特徴とする請求項１または２に記載のマイクロプロセッサ。
【請求項４】
前記演算語長選択信号保持用レジスタは、プログラムによって書き込み可能なレジスタであり、プログラムによってデータメモリの領域と演算語長との関係を設定可能にすることを特徴とする請求項１または２に記載のマイクロプロセッサ。
【請求項５】
命令コードが予め格納されている命令メモリと、
被演算データや演算結果などのデータを記憶するデータメモリと、
データを一時的に格納する汎用レジスタと、
フェッチされた命令をデコードする命令デコーダと、
前記命令デコーダのデコード結果に基づいて前記命令メモリおよびデータメモリにアドレスを出力するとともに、データメモリと汎用レジスタとの間のデータアクセスを仲介するメモリインターフェースユニットと、
前記命令デコーダのデコード結果に基づいて前記汎用レジスタを用いて演算を行なう演算ユニットと、
を備えるマイクロプロセッサにおいて、
前記メモリインターフェースユニットから前記命令メモリに出力されるアドレスに基づいて演算語長を切り替えるための演算語長選択信号を発生する演算語長選択信号発生器と、
この演算語長選択信号発生器から出力される演算語長選択信号を所定の時間遅延させる遅延回路と、
を備え、
前記命令デコーダは、この演算語長選択信号および前記フェッチされた命令をデコードし、
前記アクセスする命令メモリのアドレスに応じて演算語長を切り替えることを特徴とするマイクロプロセッサ。
【請求項６】
前記演算語長選択信号発生器は、命令により書き込み可能なレジスタであり、命令によって命令メモリの領域と演算語長との関係を設定可能にすることを特徴とする請求項５に記載のマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、フェッチされた命令をデコードする際に演算語長を切り替えるようにしたマイクロプロセッサに関するものである。
【０００２】
【従来の技術】
ハーバードアーキテクチャにおいては、キャッシュメモリの構成において、命令用のキャッシュ領域とデータ用のキャッシュ領域を独立に持ち、命令とデータで別々にパイプラインを構成することができるため、これら命令とデータの区別をせずに、同一のキャッシュメモリ領域で管理するユニファイドキャッシュ方式に比べ、パイプラインの崩れを押さえパフォーマンスの向上が期待できる利点を有している。
【０００３】
ハーバードアーキテクチャを採用したマイクロプロセッサにおいては、命令メモリには予め命令コードが格納されており、データメモリには、被演算データや演算結果などのデータが記憶される。マイクロプロセッサにリセット信号が入力されてマイクロプロセッサの処理が開始されると、メモリインターフェースユニットで生成される命令アドレスは所定の初期値に初期化され、命令メモリからこの初期値の命令アドレスに対応する命令コードが読み出される。読み出された命令コードは、インストラクションデコーダでフェッチされて、命令コードのデコードが開始される。
【０００４】
デコード結果としての制御信号は、汎用レジスタ、演算ユニット、データメモリ、メモリインターフェースユニットを制御して、当該命令コードに対応する処理を実行する。メモリインターフェースユニットでは次の命令アドレスが生成され、前記と同様の処理が実行されて行く。
【０００５】
【発明が解決しようとする課題】
近年マイクロプロセッサの速度性能向上により、数々のディジタル信号処理アルゴリズムが１チップのマイクロプロセッサ、特にディジタル信号処理用プロセッサ(ＤＳＰ)等の処理速度性能が高いマイクロプロセッサで実現されるようになってきた。ディジタル信号処理アルゴリズムも信号処理技術の進展にともない、音声信号処理や画像信号処理等の多岐にわたってきている。これら各々のディジタル信号処理アルゴリズムでは、基本演算語長が例えば画像信号処理で８ビット、音声信号処理で１６ビットなど複数存在しているが、携帯電話やＤＶＤなどでは、ＬＳＩの高集積化に伴い、音声信号処理や画像信号処理など基本演算語長が異なる複数のディジタル信号処理アルゴリズムをシステムＬＳＩとして１チップに搭載するようになってきた。
【０００６】
一方、マイクロプロセッサの命令コードは、汎用レジスタや演算ユニットなどの語長を基本演算語長とする命令を中心に命令セットが構成されており、複数の基本演算語長の処理を同一のマイクロプロセッサで処理するには命令セットが不足し十分に対応できていない。例えば８ビットの演算語長のディジタル信号処理アルゴリズムを基本演算語長が１６ビットのマイクロプロセッサで処理しようとしても、８ビット用演算の命令セットが不足し、効率的なプログラムが生成できない問題点があった。
【０００７】
従って、前記のシステムＬＳＩでは基本演算語長の異なる複数のマイクロプロセッサのコアが必要となり、複数コアの搭載は、ハードウェア設計コストやテストコストの増大などを招く問題点があった。基本演算語長の大きい方を基準とした命令セットのマイクロプロセッサに、基本演算語長の小さい方のディジタル信号処理アルゴリズム用途向けの命令セットを追加して、マイクロプロセッサを共有する方法も考えられる。しかし、この方法では固定長命令フォーマットのマイクロプロセッサでは本来必要な命令セットが不足するため、ソフトウェア設計コストの増大やソフトウェアのプログラムサイズや実行処理サイクル数が増大し、命令メモリサイズや消費電力の増大を招く問題点がある。命令セットの不足を解消するために命令語長を大きくすると、ソフトウェアのプログラムサイズの増大を招いてしまう。
【０００８】
特許文献１は、即値ロード命令、ロングブランチ命令などの長い命令フィールド幅を要するロング命令や、レジスタ間接アドレッシングロード命令などのショート命令などの命令セットを有する可変命令語長のマイクロコンピュータに関するものであり、この特許文献１には、従来、命令フィールドに命令語長を指定するビットを設けていたので、命令の種類数が減少すると云う問題を、命令語長を指定する命令語長指定レジスタを設け、この命令語長指定レジスタで指定された語長指定信号の値に応じて命令語長を可変とすることで、解消し、実行可能な命令の種類数を増やすことが開示されている。
【０００９】
しかしながら、この従来技術では、ロング命令だけのプログラム領域と、ショート命令だけのプログラム領域とを切り分けなければならず、各プログラム領域において実行可能な命令が大きく制限されると云う問題がある。
【００１０】
【特許文献１】
特開平８−９５７８３号公報
【００１１】
この発明は上記に鑑みてなされたもので、基本演算語長（データ語長）の異なる複数のディジタル信号処理アルゴリズムを同一のマイクロプロセッサで実行でき、固定長命令フォーマットのマイクロプロセッサに対しても、命令セットが不足することがないマイクロプロセッサを得ることを目的とする。
【００１２】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかるマイクロプロセッサは、命令コードが予め格納されている命令メモリと、被演算データや演算結果などのデータを記憶するデータメモリと、データを一時的に格納する汎用レジスタと、フェッチされた命令をデコードする命令デコーダと、前記命令デコーダのデコード結果に基づいて前記命令メモリおよびデータメモリにアドレスを出力するとともに、データメモリと汎用レジスタとの間のデータアクセスを仲介するメモリインターフェースユニットと、前記命令デコーダのデコード結果に基づいて前記汎用レジスタを用いて演算を行なう演算ユニットとを備えるマイクロプロセッサにおいて、前記メモリインターフェースユニットから前記データメモリに出力されるアドレスに基づいて演算語長を切り替えるための演算語長選択信号を発生する演算語長選択信号発生器を備え、前記命令デコーダは、この演算語長選択信号および前記フェッチされた命令をデコードし、前記アクセスするデータメモリのアドレスに応じて演算語長を切り替えることを特徴とする。
【００１３】
この発明によれば、ロード命令などのデータメモリをアクセスする命令がフェッチされて、データメモリがアクセスされたとき、このデータメモリに対するアドレスに応じて演算語長を切り替えるようにしている。すなわち、演算語長選択信号発生器では、データメモリへのアドレス範囲と演算語長との関係が予め設定されており、入力されたアドレスに対応する演算語長を選択するための演算語長選択信号を出力する。この演算語長選択信号は、命令デコーダに入力されており、命令デコーダは、演算語長選択信号およびフェッチした命令に基づき指定された演算語長に対応する制御信号を出力する。この結果、同一の命令コードであっても、データメモリのへのアクセス命令を異なった演算語長の命令として実行することが可能となる。
【００１４】
【発明の実施の形態】
実施の形態１．
図１は、本発明のマイクロプロセッサの実施の形態１の構成を示す図である。この実施の形態１においては、命令メモリ１とデータメモリ６を独立させたハーバードアーキテクチャを採用している。
【００１５】
図１に示すように、マイクロプロセッサは、予め命令コードが格納されている命令メモリ１と、命令コードをデコードする命令（インストラクションデコーダ）２と、汎用レジスタ４に一時記憶されたデータを用いて四則演算などの各種演算を実行する演算ユニット３と、演算ユニット３やメモリインターフェースユニット５で使用するデータを一時的に保持する汎用レジスタ４と、命令メモリ１に対する命令アドレスとデータメモリ６に対するデータメモリアドレスを生成するとともに、データメモリ６と汎用レジスタ４との間のデータを仲介するメモリインターフェースユニット５と、被演算データや演算結果などのデータを保持するデータメモリ６と、データメモリアドレスに基づき演算語長選択信号を算出して出力する演算語長選択信号発生器としてのデータメモリ用演算語長算出テーブル７とを備えている。
【００１６】
このような構成のマイクロプロセッサにおいては、まず、マイクロプロセッサにはリセット信号が入力される。このリセット信号によって、命令アドレスなどが所定の値に初期化されてから処理が開始される。リセット信号が入力されると、メモリインターフェースユニット５で生成される命令アドレスは所定の初期値に初期化され、命令メモリ１からこの初期値の命令アドレスに対応する命令コードが読み出される。
【００１７】
読み出された命令コードはインストラクションデコーダ２でフェッチされ、フェッチした命令コードのテコード処理が開始されて、制御信号が生成される。デコードされたデコード結果としての制御信号は、汎用レジスタ４、演算ユニット３、データメモリ６、メモリインターフェースユニット５を制御して命令コードにプログラムされた処理が実行される。メモリインターフェースユニット５では、データメモリ６にアクセスする場合にデータメモリアドレスが生成され、この生成したデータメモリアドレスを用いてデータメモリ６をアクセスする。
【００１８】
ここで、実施の形態１では、メモリインターフェースユニット５からデータメモリ６に入力されるデータメモリアドレスをデータメモリ用演算語長算出テーブル７にも入力している。データメモリ用演算語長算出テーブル７には、予めデータメモリアドレスと出力すべき演算語長選択信号との対応関係が記憶されており、データメモリ用演算語長算出テーブル７は、入力されたデータメモリアドレスに対応する演算語長選択信号を出力する。
【００１９】
図２は、このデータメモリ用演算語長算出テーブル７の記憶内容の一例を示す図である。このデータメモリ用演算語長算出テーブル７の記憶内容によれば、例えばアクセスされるデータメモリアドレスが領域Ａ(0x0000〜Ox3fff)の範囲にある場合は、基本演算語長（データ長）は８ビットが選択され、データメモリ６へのアクセス命令は８ビット幅のデータメモリのアクセス命令として実行される。また、データメモリアドレスが領域Ｂ(Ox4000〜Ox7fff)の範囲にある場合は、基本演算語長は１６ビットが選択されて、１６ビット幅のデータメモリのアクセス命令として実行される。例えば、演算語長選択信号を１ビットとした場合、演算語長選択信号がＨの場合は、８ビット演算が選択され、演算語長選択信号がＬの場合は、１６ビット演算が選択される、演算語長選択信号のビット数を更に増やし、３２ビット演算などを行うようにさせてもよい。
【００２０】
データメモリ用演算語長算出テーブル７から出力される演算語長選択信号は、インストラクションデコーダ２に入力される。インストラクションデコーダ２は、フェッチされた命令をデコードして、このデコード情報と演算語長選択信号に基づいて、演算ユニット３への演算指定、汎用レジスタ４への読み出し／書き込みレジスタ指定、データメモリ６へのデータメモリアドレス、データメモリ６へのアクセスの際の演算語長選択信号などを含む制御信号を形成し、形成した制御信号を演算ユニット３、汎用レジスタ４、メモリインターフェースユニット５に出力する。
【００２１】
これにより、同一の命令コードであってもデータメモリ６のアクセス命令を異なった基本演算語長（データ語長）の命令として実行することが可能となる。例えば、同一のレジスタ間接アドレッシングロード命令「LD R1,R2」をデータ語長１６ビットのロード命令としたり、８ビットのロード命令として実行させることができ、これにより実行可能な命令セット数を増やすことが可能となる。因みに、従来技術では、「LD R1,R2」を１６ビットのロード命令とすると、８ビットのロード命令に関しては、新たな命令「LDB R1,R2」を用意する必要があった。
【００２２】
このようにデータメモリアドレスに基づきデータメモリ領域に応じて演算語長を切り替えることで、同一の命令コードであってもデータメモリのアクセス命令を異なった演算語長の命令として実行する。
【００２３】
メモリインターフェースユニット５では次の命令アドレスが生成される。そして、これ以降、前述と同様の処理が繰り返される。すなわち、順次生成される命令アドレスの順番に従って命令メモリ１に格納された命令コードが実行されていく。この際、データメモリにアクセスされるデータメモリアドレスに応じて演算語長が切り替えられる。
【００２４】
図３は、汎用レジスタ４の内容をチェックしたりあるいはデータを用いない演算を実行する際など、データメモリ６をアクセスしない場合の演算語長選択信号の生成について示した図である。図３に示すように、演算語長選択信号保持用レジスタ８を設け、データメモリ６をアクセスしたときにデータメモリ用演算語長算出テーブル７で算出した演算語長選択信号を演算語長選択信号保持用レジスタ８に保持しておき、データメモリ６をアクセスしない場合は、演算語長選択信号保持用レジスタ８に保持された演算語長選択信号を使用して命令を実行する。
【００２５】
図４は演算語長の切り替え処理の手順を示す図であり、この図４を用いて演算語長の切り替え手順について説明する。
【００２６】
マイクロプロセッサの処理開始時には、リセット信号が入力され、このリセット信号により演算語長選択信号保持用レジスタ８は、所定の演算語長選択信号の値に初期化される。処理開始直後から最初のデータメモリ６をアクセスする命令が発生するまでは、演算語長選択信号保持用レジスタ８に保持された初期値の演算語長選択信号を用いて命令が実行される（ステップＳ１００）。
【００２７】
最初のデータメモリ６をアクセスする命令を実行する場合は、データメモリ用演算語長算出テーブル７で算出された演算語長選択信号を用いてデータメモリアクセス命令が実行される。この時の演算語長選択信号は演算語長選択信号保持用レジスタ８に書き込まれ、これにより初期値が更新される（ステップＳ１１０）。
【００２８】
これ以降、次のデータメモリ６をアクセスする命令を実行するまで、演算語長選択信号保持用レジスタ８に保持されている演算語長選択信号を使用して命令が実行される（ステップＳ１２０）。
【００２９】
つぎのデータメモリ６をアクセスする命令を実行する場合は、データメモリ用演算語長算出テーブル７で算出された演算語長選択信号を用いてデータメモリアクセス命令が実行される。この時の演算語長選択信号は演算語長選択信号保持用レジスタ８に書き込まれ、これにより前回の演算語長選択信号が更新される（ステップＳ１３０）。
【００３０】
これ以降、次のデータメモリ６をアクセスする命令を実行するまで、演算語長選択信号保持用レジスタ８に保持されている演算語長選択信号を使用して命令が実行される（ステップＳ１４０）。
【００３１】
このようにデータメモリアクセス命令実行時に演算語長選択信号保持用レジスタ８の内容が更新され、データメモリ６をアクセスしない場合でも演算語長選択信号保持用レジスタ８に保持された演算語長選択信号を使用することで、命令の配置によって演算語長の切り替えを可能にしている。
【００３２】
なお、データメモリ用演算語長算出テーブル７を命令により書き込み可能なレジスタとすれば、データメモリ６の領域−演算語長との対応関係を命令によって任意に設定可能となる。また、演算語長選択信号保持用レジスタ８をプログラムによって書き込み可能にすれば、データメモリ６をアクセスする命令を使用しなくても、途中で演算語長の切り替えが可能となる。
【００３３】
実施の形態２．
つぎにこの発明の実施の形態２を図５を用いて説明する。図５は、本発明のマイクロプロセッサの実施の形態２の構成を示す図である。図５において、図１と同一の番号を付した構成要素は、同一機能を達成し、重複する説明は省略する。この実施の形態２においては、メモリインターフェースユニット５から命令メモリ１に入力される命令アドレスを演算語長選択信号の算出に用い、命令アドレスによって演算語長の切り替えを行うようにしている。
【００３４】
命令メモリ用演算語長算出テーブル９は、命令アドレスが入力される点以外は、実施の形態１のデータメモリ用演算語長算出テーブル７とその構成、機能は同じであり、命令アドレスから演算語長選択信号を算出する。遅延回路１０は、命令メモリ用演算語長算出テーブル９で算出された演算語長選択信号を所定時間遅延させて、遅延させた演算語長選択信号をインストラクションデコーダ２に入力する。
【００３５】
実施の形態２では、メモリインターフェースユニット５で生成された命令アドレスが命令メモリ用演算語長算出テーブル９に入力される。命令メモリ用演算語長算出テーブル９は、入力された命令アドレスに対応する演算語長選択信号を出力する。この演算語長選択信号が演算語長の切り替えに使用される。
【００３６】
遅延回路１０は、メモリインターフェースユニット５で命令アドレスが生成されてから、命令メモリ用演算語長算出テーブル９で演算語長選択信号が算出され、命令コードが命令メモリ１から読み出され、インストラクションデコーダ２でフェッチされた命令コードがデコードされて制御信号が生成されるまでの時間を調整するための回路である。
【００３７】
このように、実施の形態２においては、命令メモリアドレスの領域に応じて演算語長を切り替えるようにしているので、同一の命令コードであっても異なった演算語長の命令として実行可能となる。また、遅延回路１０によって演算語長選択信号を遅延させるようにしているので、メモリインターフェースユニット５で命令アドレスが生成されてからインストラクションデコーダ２で制御信号が生成されるまでの時間を調整することができる。
【００３８】
なお、実施の形態２において、命令メモリ用演算語長算出テーブル９を命令により書き込み可能なレジスタとすれば、命令メモリ１の領域と演算語長との対応関係を命令によって任意に設定可能となる。
【００３９】
【発明の効果】
以上説明したように、この発明によれば、同一の命令コードであっても異なった演算語長の命令として実行することが可能となるので、基本演算語長の異なる複数のディジタル信号処理アルゴリズムを同一のマイクロプロセッサで実行でき、さらに固定長命令フォーマットのマイクロプロセッサに対しても、命令セットが不足することがないマイクロプロセッサを得ることができる。
【図面の簡単な説明】
【図１】本発明のマイクロプロセッサの実施の形態１の構成を示すブロック図である。
【図２】演算語長算出テーブルを示す図である。
【図３】データメモリをアクセスしない場合の演算語長選択のための構成を示す図である。
【図４】演算語長切り替え動作を示す工程図である。
【図５】本発明のマイクロプロセッサの実施の形態２の構成を示すブロック図である。
【符号の説明】
１  命令メモリ、２  命令デコーダ（インストラクションデコーダ）、３  演算ユニット、４  汎用レジスタ、５  メモリインターフェースユニット、６  データメモリ、７  データメモリ用演算語長算出テーブル、８  演算語長選択信号保持用レジスタ、９  命令メモリ用演算語長算出テーブル、１０  遅延回路。
【図１】
2004206214.tif 000003
【図２】
2004206214.tif 000004
【図３】
2004206214.tif 000005
【図４】
2004206214.tif 000006
【図５】
2004206214.tif 000007