JP2004206214A - マイクロプロセッサ - Google Patents
マイクロプロセッサ Download PDFInfo
- Publication number
- JP2004206214A JP2004206214A JP2002371758A JP2002371758A JP2004206214A JP 2004206214 A JP2004206214 A JP 2004206214A JP 2002371758 A JP2002371758 A JP 2002371758A JP 2002371758 A JP2002371758 A JP 2002371758A JP 2004206214 A JP2004206214 A JP 2004206214A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- word length
- operation word
- selection signal
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
【課題】基本演算語長の異なる複数のディジタル信号処理アルゴリズムを同一のマイクロプロセッサで実行でき、固定長命令フォーマットのマイクロプロセッサに対しても、命令セットが不足することがないようにすること。
【解決手段】命令メモリ1と、データメモリ6と、汎用レジスタ4と、命令デコーダ2と、演算ユニット3と、メモリインターフェースユニット5と、メモリインターフェースユニット5からデータメモリ6に出力されるアドレスに基づいて演算語長を切り替えるための演算語長選択信号を発生するデータメモリ用演算語長算出テーブル7とを備え、命令デコーダ2は、演算語長選択信号およびフェッチされた命令をデコードし、アクセスするデータメモリ6のアドレスに応じて演算語長を切り替える。
【選択図】 図1
【解決手段】命令メモリ1と、データメモリ6と、汎用レジスタ4と、命令デコーダ2と、演算ユニット3と、メモリインターフェースユニット5と、メモリインターフェースユニット5からデータメモリ6に出力されるアドレスに基づいて演算語長を切り替えるための演算語長選択信号を発生するデータメモリ用演算語長算出テーブル7とを備え、命令デコーダ2は、演算語長選択信号およびフェッチされた命令をデコードし、アクセスするデータメモリ6のアドレスに応じて演算語長を切り替える。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
この発明は、フェッチされた命令をデコードする際に演算語長を切り替えるようにしたマイクロプロセッサに関するものである。
【0002】
【従来の技術】
ハーバードアーキテクチャにおいては、キャッシュメモリの構成において、命令用のキャッシュ領域とデータ用のキャッシュ領域を独立に持ち、命令とデータで別々にパイプラインを構成することができるため、これら命令とデータの区別をせずに、同一のキャッシュメモリ領域で管理するユニファイドキャッシュ方式に比べ、パイプラインの崩れを押さえパフォーマンスの向上が期待できる利点を有している。
【0003】
ハーバードアーキテクチャを採用したマイクロプロセッサにおいては、命令メモリには予め命令コードが格納されており、データメモリには、被演算データや演算結果などのデータが記憶される。マイクロプロセッサにリセット信号が入力されてマイクロプロセッサの処理が開始されると、メモリインターフェースユニットで生成される命令アドレスは所定の初期値に初期化され、命令メモリからこの初期値の命令アドレスに対応する命令コードが読み出される。読み出された命令コードは、インストラクションデコーダでフェッチされて、命令コードのデコードが開始される。
【0004】
デコード結果としての制御信号は、汎用レジスタ、演算ユニット、データメモリ、メモリインターフェースユニットを制御して、当該命令コードに対応する処理を実行する。メモリインターフェースユニットでは次の命令アドレスが生成され、前記と同様の処理が実行されて行く。
【0005】
【発明が解決しようとする課題】
近年マイクロプロセッサの速度性能向上により、数々のディジタル信号処理アルゴリズムが1チップのマイクロプロセッサ、特にディジタル信号処理用プロセッサ(DSP)等の処理速度性能が高いマイクロプロセッサで実現されるようになってきた。ディジタル信号処理アルゴリズムも信号処理技術の進展にともない、音声信号処理や画像信号処理等の多岐にわたってきている。これら各々のディジタル信号処理アルゴリズムでは、基本演算語長が例えば画像信号処理で8ビット、音声信号処理で16ビットなど複数存在しているが、携帯電話やDVDなどでは、LSIの高集積化に伴い、音声信号処理や画像信号処理など基本演算語長が異なる複数のディジタル信号処理アルゴリズムをシステムLSIとして1チップに搭載するようになってきた。
【0006】
一方、マイクロプロセッサの命令コードは、汎用レジスタや演算ユニットなどの語長を基本演算語長とする命令を中心に命令セットが構成されており、複数の基本演算語長の処理を同一のマイクロプロセッサで処理するには命令セットが不足し十分に対応できていない。例えば8ビットの演算語長のディジタル信号処理アルゴリズムを基本演算語長が16ビットのマイクロプロセッサで処理しようとしても、8ビット用演算の命令セットが不足し、効率的なプログラムが生成できない問題点があった。
【0007】
従って、前記のシステムLSIでは基本演算語長の異なる複数のマイクロプロセッサのコアが必要となり、複数コアの搭載は、ハードウェア設計コストやテストコストの増大などを招く問題点があった。基本演算語長の大きい方を基準とした命令セットのマイクロプロセッサに、基本演算語長の小さい方のディジタル信号処理アルゴリズム用途向けの命令セットを追加して、マイクロプロセッサを共有する方法も考えられる。しかし、この方法では固定長命令フォーマットのマイクロプロセッサでは本来必要な命令セットが不足するため、ソフトウェア設計コストの増大やソフトウェアのプログラムサイズや実行処理サイクル数が増大し、命令メモリサイズや消費電力の増大を招く問題点がある。命令セットの不足を解消するために命令語長を大きくすると、ソフトウェアのプログラムサイズの増大を招いてしまう。
【0008】
特許文献1は、即値ロード命令、ロングブランチ命令などの長い命令フィールド幅を要するロング命令や、レジスタ間接アドレッシングロード命令などのショート命令などの命令セットを有する可変命令語長のマイクロコンピュータに関するものであり、この特許文献1には、従来、命令フィールドに命令語長を指定するビットを設けていたので、命令の種類数が減少すると云う問題を、命令語長を指定する命令語長指定レジスタを設け、この命令語長指定レジスタで指定された語長指定信号の値に応じて命令語長を可変とすることで、解消し、実行可能な命令の種類数を増やすことが開示されている。
【0009】
しかしながら、この従来技術では、ロング命令だけのプログラム領域と、ショート命令だけのプログラム領域とを切り分けなければならず、各プログラム領域において実行可能な命令が大きく制限されると云う問題がある。
【0010】
【特許文献1】
特開平8−95783号公報
【0011】
この発明は上記に鑑みてなされたもので、基本演算語長(データ語長)の異なる複数のディジタル信号処理アルゴリズムを同一のマイクロプロセッサで実行でき、固定長命令フォーマットのマイクロプロセッサに対しても、命令セットが不足することがないマイクロプロセッサを得ることを目的とする。
【0012】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかるマイクロプロセッサは、命令コードが予め格納されている命令メモリと、被演算データや演算結果などのデータを記憶するデータメモリと、データを一時的に格納する汎用レジスタと、フェッチされた命令をデコードする命令デコーダと、前記命令デコーダのデコード結果に基づいて前記命令メモリおよびデータメモリにアドレスを出力するとともに、データメモリと汎用レジスタとの間のデータアクセスを仲介するメモリインターフェースユニットと、前記命令デコーダのデコード結果に基づいて前記汎用レジスタを用いて演算を行なう演算ユニットとを備えるマイクロプロセッサにおいて、前記メモリインターフェースユニットから前記データメモリに出力されるアドレスに基づいて演算語長を切り替えるための演算語長選択信号を発生する演算語長選択信号発生器を備え、前記命令デコーダは、この演算語長選択信号および前記フェッチされた命令をデコードし、前記アクセスするデータメモリのアドレスに応じて演算語長を切り替えることを特徴とする。
【0013】
この発明によれば、ロード命令などのデータメモリをアクセスする命令がフェッチされて、データメモリがアクセスされたとき、このデータメモリに対するアドレスに応じて演算語長を切り替えるようにしている。すなわち、演算語長選択信号発生器では、データメモリへのアドレス範囲と演算語長との関係が予め設定されており、入力されたアドレスに対応する演算語長を選択するための演算語長選択信号を出力する。この演算語長選択信号は、命令デコーダに入力されており、命令デコーダは、演算語長選択信号およびフェッチした命令に基づき指定された演算語長に対応する制御信号を出力する。この結果、同一の命令コードであっても、データメモリのへのアクセス命令を異なった演算語長の命令として実行することが可能となる。
【0014】
【発明の実施の形態】
実施の形態1.
図1は、本発明のマイクロプロセッサの実施の形態1の構成を示す図である。この実施の形態1においては、命令メモリ1とデータメモリ6を独立させたハーバードアーキテクチャを採用している。
【0015】
図1に示すように、マイクロプロセッサは、予め命令コードが格納されている命令メモリ1と、命令コードをデコードする命令(インストラクションデコーダ)2と、汎用レジスタ4に一時記憶されたデータを用いて四則演算などの各種演算を実行する演算ユニット3と、演算ユニット3やメモリインターフェースユニット5で使用するデータを一時的に保持する汎用レジスタ4と、命令メモリ1に対する命令アドレスとデータメモリ6に対するデータメモリアドレスを生成するとともに、データメモリ6と汎用レジスタ4との間のデータを仲介するメモリインターフェースユニット5と、被演算データや演算結果などのデータを保持するデータメモリ6と、データメモリアドレスに基づき演算語長選択信号を算出して出力する演算語長選択信号発生器としてのデータメモリ用演算語長算出テーブル7とを備えている。
【0016】
このような構成のマイクロプロセッサにおいては、まず、マイクロプロセッサにはリセット信号が入力される。このリセット信号によって、命令アドレスなどが所定の値に初期化されてから処理が開始される。リセット信号が入力されると、メモリインターフェースユニット5で生成される命令アドレスは所定の初期値に初期化され、命令メモリ1からこの初期値の命令アドレスに対応する命令コードが読み出される。
【0017】
読み出された命令コードはインストラクションデコーダ2でフェッチされ、フェッチした命令コードのテコード処理が開始されて、制御信号が生成される。デコードされたデコード結果としての制御信号は、汎用レジスタ4、演算ユニット3、データメモリ6、メモリインターフェースユニット5を制御して命令コードにプログラムされた処理が実行される。メモリインターフェースユニット5では、データメモリ6にアクセスする場合にデータメモリアドレスが生成され、この生成したデータメモリアドレスを用いてデータメモリ6をアクセスする。
【0018】
ここで、実施の形態1では、メモリインターフェースユニット5からデータメモリ6に入力されるデータメモリアドレスをデータメモリ用演算語長算出テーブル7にも入力している。データメモリ用演算語長算出テーブル7には、予めデータメモリアドレスと出力すべき演算語長選択信号との対応関係が記憶されており、データメモリ用演算語長算出テーブル7は、入力されたデータメモリアドレスに対応する演算語長選択信号を出力する。
【0019】
図2は、このデータメモリ用演算語長算出テーブル7の記憶内容の一例を示す図である。このデータメモリ用演算語長算出テーブル7の記憶内容によれば、例えばアクセスされるデータメモリアドレスが領域A(0x0000〜Ox3fff)の範囲にある場合は、基本演算語長(データ長)は8ビットが選択され、データメモリ6へのアクセス命令は8ビット幅のデータメモリのアクセス命令として実行される。また、データメモリアドレスが領域B(Ox4000〜Ox7fff)の範囲にある場合は、基本演算語長は16ビットが選択されて、16ビット幅のデータメモリのアクセス命令として実行される。例えば、演算語長選択信号を1ビットとした場合、演算語長選択信号がHの場合は、8ビット演算が選択され、演算語長選択信号がLの場合は、16ビット演算が選択される、演算語長選択信号のビット数を更に増やし、32ビット演算などを行うようにさせてもよい。
【0020】
データメモリ用演算語長算出テーブル7から出力される演算語長選択信号は、インストラクションデコーダ2に入力される。インストラクションデコーダ2は、フェッチされた命令をデコードして、このデコード情報と演算語長選択信号に基づいて、演算ユニット3への演算指定、汎用レジスタ4への読み出し/書き込みレジスタ指定、データメモリ6へのデータメモリアドレス、データメモリ6へのアクセスの際の演算語長選択信号などを含む制御信号を形成し、形成した制御信号を演算ユニット3、汎用レジスタ4、メモリインターフェースユニット5に出力する。
【0021】
これにより、同一の命令コードであってもデータメモリ6のアクセス命令を異なった基本演算語長(データ語長)の命令として実行することが可能となる。例えば、同一のレジスタ間接アドレッシングロード命令「LD R1,R2」をデータ語長16ビットのロード命令としたり、8ビットのロード命令として実行させることができ、これにより実行可能な命令セット数を増やすことが可能となる。因みに、従来技術では、「LD R1,R2」を16ビットのロード命令とすると、8ビットのロード命令に関しては、新たな命令「LDB R1,R2」を用意する必要があった。
【0022】
このようにデータメモリアドレスに基づきデータメモリ領域に応じて演算語長を切り替えることで、同一の命令コードであってもデータメモリのアクセス命令を異なった演算語長の命令として実行する。
【0023】
メモリインターフェースユニット5では次の命令アドレスが生成される。そして、これ以降、前述と同様の処理が繰り返される。すなわち、順次生成される命令アドレスの順番に従って命令メモリ1に格納された命令コードが実行されていく。この際、データメモリにアクセスされるデータメモリアドレスに応じて演算語長が切り替えられる。
【0024】
図3は、汎用レジスタ4の内容をチェックしたりあるいはデータを用いない演算を実行する際など、データメモリ6をアクセスしない場合の演算語長選択信号の生成について示した図である。図3に示すように、演算語長選択信号保持用レジスタ8を設け、データメモリ6をアクセスしたときにデータメモリ用演算語長算出テーブル7で算出した演算語長選択信号を演算語長選択信号保持用レジスタ8に保持しておき、データメモリ6をアクセスしない場合は、演算語長選択信号保持用レジスタ8に保持された演算語長選択信号を使用して命令を実行する。
【0025】
図4は演算語長の切り替え処理の手順を示す図であり、この図4を用いて演算語長の切り替え手順について説明する。
【0026】
マイクロプロセッサの処理開始時には、リセット信号が入力され、このリセット信号により演算語長選択信号保持用レジスタ8は、所定の演算語長選択信号の値に初期化される。処理開始直後から最初のデータメモリ6をアクセスする命令が発生するまでは、演算語長選択信号保持用レジスタ8に保持された初期値の演算語長選択信号を用いて命令が実行される(ステップS100)。
【0027】
最初のデータメモリ6をアクセスする命令を実行する場合は、データメモリ用演算語長算出テーブル7で算出された演算語長選択信号を用いてデータメモリアクセス命令が実行される。この時の演算語長選択信号は演算語長選択信号保持用レジスタ8に書き込まれ、これにより初期値が更新される(ステップS110)。
【0028】
これ以降、次のデータメモリ6をアクセスする命令を実行するまで、演算語長選択信号保持用レジスタ8に保持されている演算語長選択信号を使用して命令が実行される(ステップS120)。
【0029】
つぎのデータメモリ6をアクセスする命令を実行する場合は、データメモリ用演算語長算出テーブル7で算出された演算語長選択信号を用いてデータメモリアクセス命令が実行される。この時の演算語長選択信号は演算語長選択信号保持用レジスタ8に書き込まれ、これにより前回の演算語長選択信号が更新される(ステップS130)。
【0030】
これ以降、次のデータメモリ6をアクセスする命令を実行するまで、演算語長選択信号保持用レジスタ8に保持されている演算語長選択信号を使用して命令が実行される(ステップS140)。
【0031】
このようにデータメモリアクセス命令実行時に演算語長選択信号保持用レジスタ8の内容が更新され、データメモリ6をアクセスしない場合でも演算語長選択信号保持用レジスタ8に保持された演算語長選択信号を使用することで、命令の配置によって演算語長の切り替えを可能にしている。
【0032】
なお、データメモリ用演算語長算出テーブル7を命令により書き込み可能なレジスタとすれば、データメモリ6の領域−演算語長との対応関係を命令によって任意に設定可能となる。また、演算語長選択信号保持用レジスタ8をプログラムによって書き込み可能にすれば、データメモリ6をアクセスする命令を使用しなくても、途中で演算語長の切り替えが可能となる。
【0033】
実施の形態2.
つぎにこの発明の実施の形態2を図5を用いて説明する。図5は、本発明のマイクロプロセッサの実施の形態2の構成を示す図である。図5において、図1と同一の番号を付した構成要素は、同一機能を達成し、重複する説明は省略する。この実施の形態2においては、メモリインターフェースユニット5から命令メモリ1に入力される命令アドレスを演算語長選択信号の算出に用い、命令アドレスによって演算語長の切り替えを行うようにしている。
【0034】
命令メモリ用演算語長算出テーブル9は、命令アドレスが入力される点以外は、実施の形態1のデータメモリ用演算語長算出テーブル7とその構成、機能は同じであり、命令アドレスから演算語長選択信号を算出する。遅延回路10は、命令メモリ用演算語長算出テーブル9で算出された演算語長選択信号を所定時間遅延させて、遅延させた演算語長選択信号をインストラクションデコーダ2に入力する。
【0035】
実施の形態2では、メモリインターフェースユニット5で生成された命令アドレスが命令メモリ用演算語長算出テーブル9に入力される。命令メモリ用演算語長算出テーブル9は、入力された命令アドレスに対応する演算語長選択信号を出力する。この演算語長選択信号が演算語長の切り替えに使用される。
【0036】
遅延回路10は、メモリインターフェースユニット5で命令アドレスが生成されてから、命令メモリ用演算語長算出テーブル9で演算語長選択信号が算出され、命令コードが命令メモリ1から読み出され、インストラクションデコーダ2でフェッチされた命令コードがデコードされて制御信号が生成されるまでの時間を調整するための回路である。
【0037】
このように、実施の形態2においては、命令メモリアドレスの領域に応じて演算語長を切り替えるようにしているので、同一の命令コードであっても異なった演算語長の命令として実行可能となる。また、遅延回路10によって演算語長選択信号を遅延させるようにしているので、メモリインターフェースユニット5で命令アドレスが生成されてからインストラクションデコーダ2で制御信号が生成されるまでの時間を調整することができる。
【0038】
なお、実施の形態2において、命令メモリ用演算語長算出テーブル9を命令により書き込み可能なレジスタとすれば、命令メモリ1の領域と演算語長との対応関係を命令によって任意に設定可能となる。
【0039】
【発明の効果】
以上説明したように、この発明によれば、同一の命令コードであっても異なった演算語長の命令として実行することが可能となるので、基本演算語長の異なる複数のディジタル信号処理アルゴリズムを同一のマイクロプロセッサで実行でき、さらに固定長命令フォーマットのマイクロプロセッサに対しても、命令セットが不足することがないマイクロプロセッサを得ることができる。
【図面の簡単な説明】
【図1】本発明のマイクロプロセッサの実施の形態1の構成を示すブロック図である。
【図2】演算語長算出テーブルを示す図である。
【図3】データメモリをアクセスしない場合の演算語長選択のための構成を示す図である。
【図4】演算語長切り替え動作を示す工程図である。
【図5】本発明のマイクロプロセッサの実施の形態2の構成を示すブロック図である。
【符号の説明】
1 命令メモリ、2 命令デコーダ(インストラクションデコーダ)、3 演算ユニット、4 汎用レジスタ、5 メモリインターフェースユニット、6 データメモリ、7 データメモリ用演算語長算出テーブル、8 演算語長選択信号保持用レジスタ、9 命令メモリ用演算語長算出テーブル、10 遅延回路。
【発明の属する技術分野】
この発明は、フェッチされた命令をデコードする際に演算語長を切り替えるようにしたマイクロプロセッサに関するものである。
【0002】
【従来の技術】
ハーバードアーキテクチャにおいては、キャッシュメモリの構成において、命令用のキャッシュ領域とデータ用のキャッシュ領域を独立に持ち、命令とデータで別々にパイプラインを構成することができるため、これら命令とデータの区別をせずに、同一のキャッシュメモリ領域で管理するユニファイドキャッシュ方式に比べ、パイプラインの崩れを押さえパフォーマンスの向上が期待できる利点を有している。
【0003】
ハーバードアーキテクチャを採用したマイクロプロセッサにおいては、命令メモリには予め命令コードが格納されており、データメモリには、被演算データや演算結果などのデータが記憶される。マイクロプロセッサにリセット信号が入力されてマイクロプロセッサの処理が開始されると、メモリインターフェースユニットで生成される命令アドレスは所定の初期値に初期化され、命令メモリからこの初期値の命令アドレスに対応する命令コードが読み出される。読み出された命令コードは、インストラクションデコーダでフェッチされて、命令コードのデコードが開始される。
【0004】
デコード結果としての制御信号は、汎用レジスタ、演算ユニット、データメモリ、メモリインターフェースユニットを制御して、当該命令コードに対応する処理を実行する。メモリインターフェースユニットでは次の命令アドレスが生成され、前記と同様の処理が実行されて行く。
【0005】
【発明が解決しようとする課題】
近年マイクロプロセッサの速度性能向上により、数々のディジタル信号処理アルゴリズムが1チップのマイクロプロセッサ、特にディジタル信号処理用プロセッサ(DSP)等の処理速度性能が高いマイクロプロセッサで実現されるようになってきた。ディジタル信号処理アルゴリズムも信号処理技術の進展にともない、音声信号処理や画像信号処理等の多岐にわたってきている。これら各々のディジタル信号処理アルゴリズムでは、基本演算語長が例えば画像信号処理で8ビット、音声信号処理で16ビットなど複数存在しているが、携帯電話やDVDなどでは、LSIの高集積化に伴い、音声信号処理や画像信号処理など基本演算語長が異なる複数のディジタル信号処理アルゴリズムをシステムLSIとして1チップに搭載するようになってきた。
【0006】
一方、マイクロプロセッサの命令コードは、汎用レジスタや演算ユニットなどの語長を基本演算語長とする命令を中心に命令セットが構成されており、複数の基本演算語長の処理を同一のマイクロプロセッサで処理するには命令セットが不足し十分に対応できていない。例えば8ビットの演算語長のディジタル信号処理アルゴリズムを基本演算語長が16ビットのマイクロプロセッサで処理しようとしても、8ビット用演算の命令セットが不足し、効率的なプログラムが生成できない問題点があった。
【0007】
従って、前記のシステムLSIでは基本演算語長の異なる複数のマイクロプロセッサのコアが必要となり、複数コアの搭載は、ハードウェア設計コストやテストコストの増大などを招く問題点があった。基本演算語長の大きい方を基準とした命令セットのマイクロプロセッサに、基本演算語長の小さい方のディジタル信号処理アルゴリズム用途向けの命令セットを追加して、マイクロプロセッサを共有する方法も考えられる。しかし、この方法では固定長命令フォーマットのマイクロプロセッサでは本来必要な命令セットが不足するため、ソフトウェア設計コストの増大やソフトウェアのプログラムサイズや実行処理サイクル数が増大し、命令メモリサイズや消費電力の増大を招く問題点がある。命令セットの不足を解消するために命令語長を大きくすると、ソフトウェアのプログラムサイズの増大を招いてしまう。
【0008】
特許文献1は、即値ロード命令、ロングブランチ命令などの長い命令フィールド幅を要するロング命令や、レジスタ間接アドレッシングロード命令などのショート命令などの命令セットを有する可変命令語長のマイクロコンピュータに関するものであり、この特許文献1には、従来、命令フィールドに命令語長を指定するビットを設けていたので、命令の種類数が減少すると云う問題を、命令語長を指定する命令語長指定レジスタを設け、この命令語長指定レジスタで指定された語長指定信号の値に応じて命令語長を可変とすることで、解消し、実行可能な命令の種類数を増やすことが開示されている。
【0009】
しかしながら、この従来技術では、ロング命令だけのプログラム領域と、ショート命令だけのプログラム領域とを切り分けなければならず、各プログラム領域において実行可能な命令が大きく制限されると云う問題がある。
【0010】
【特許文献1】
特開平8−95783号公報
【0011】
この発明は上記に鑑みてなされたもので、基本演算語長(データ語長)の異なる複数のディジタル信号処理アルゴリズムを同一のマイクロプロセッサで実行でき、固定長命令フォーマットのマイクロプロセッサに対しても、命令セットが不足することがないマイクロプロセッサを得ることを目的とする。
【0012】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかるマイクロプロセッサは、命令コードが予め格納されている命令メモリと、被演算データや演算結果などのデータを記憶するデータメモリと、データを一時的に格納する汎用レジスタと、フェッチされた命令をデコードする命令デコーダと、前記命令デコーダのデコード結果に基づいて前記命令メモリおよびデータメモリにアドレスを出力するとともに、データメモリと汎用レジスタとの間のデータアクセスを仲介するメモリインターフェースユニットと、前記命令デコーダのデコード結果に基づいて前記汎用レジスタを用いて演算を行なう演算ユニットとを備えるマイクロプロセッサにおいて、前記メモリインターフェースユニットから前記データメモリに出力されるアドレスに基づいて演算語長を切り替えるための演算語長選択信号を発生する演算語長選択信号発生器を備え、前記命令デコーダは、この演算語長選択信号および前記フェッチされた命令をデコードし、前記アクセスするデータメモリのアドレスに応じて演算語長を切り替えることを特徴とする。
【0013】
この発明によれば、ロード命令などのデータメモリをアクセスする命令がフェッチされて、データメモリがアクセスされたとき、このデータメモリに対するアドレスに応じて演算語長を切り替えるようにしている。すなわち、演算語長選択信号発生器では、データメモリへのアドレス範囲と演算語長との関係が予め設定されており、入力されたアドレスに対応する演算語長を選択するための演算語長選択信号を出力する。この演算語長選択信号は、命令デコーダに入力されており、命令デコーダは、演算語長選択信号およびフェッチした命令に基づき指定された演算語長に対応する制御信号を出力する。この結果、同一の命令コードであっても、データメモリのへのアクセス命令を異なった演算語長の命令として実行することが可能となる。
【0014】
【発明の実施の形態】
実施の形態1.
図1は、本発明のマイクロプロセッサの実施の形態1の構成を示す図である。この実施の形態1においては、命令メモリ1とデータメモリ6を独立させたハーバードアーキテクチャを採用している。
【0015】
図1に示すように、マイクロプロセッサは、予め命令コードが格納されている命令メモリ1と、命令コードをデコードする命令(インストラクションデコーダ)2と、汎用レジスタ4に一時記憶されたデータを用いて四則演算などの各種演算を実行する演算ユニット3と、演算ユニット3やメモリインターフェースユニット5で使用するデータを一時的に保持する汎用レジスタ4と、命令メモリ1に対する命令アドレスとデータメモリ6に対するデータメモリアドレスを生成するとともに、データメモリ6と汎用レジスタ4との間のデータを仲介するメモリインターフェースユニット5と、被演算データや演算結果などのデータを保持するデータメモリ6と、データメモリアドレスに基づき演算語長選択信号を算出して出力する演算語長選択信号発生器としてのデータメモリ用演算語長算出テーブル7とを備えている。
【0016】
このような構成のマイクロプロセッサにおいては、まず、マイクロプロセッサにはリセット信号が入力される。このリセット信号によって、命令アドレスなどが所定の値に初期化されてから処理が開始される。リセット信号が入力されると、メモリインターフェースユニット5で生成される命令アドレスは所定の初期値に初期化され、命令メモリ1からこの初期値の命令アドレスに対応する命令コードが読み出される。
【0017】
読み出された命令コードはインストラクションデコーダ2でフェッチされ、フェッチした命令コードのテコード処理が開始されて、制御信号が生成される。デコードされたデコード結果としての制御信号は、汎用レジスタ4、演算ユニット3、データメモリ6、メモリインターフェースユニット5を制御して命令コードにプログラムされた処理が実行される。メモリインターフェースユニット5では、データメモリ6にアクセスする場合にデータメモリアドレスが生成され、この生成したデータメモリアドレスを用いてデータメモリ6をアクセスする。
【0018】
ここで、実施の形態1では、メモリインターフェースユニット5からデータメモリ6に入力されるデータメモリアドレスをデータメモリ用演算語長算出テーブル7にも入力している。データメモリ用演算語長算出テーブル7には、予めデータメモリアドレスと出力すべき演算語長選択信号との対応関係が記憶されており、データメモリ用演算語長算出テーブル7は、入力されたデータメモリアドレスに対応する演算語長選択信号を出力する。
【0019】
図2は、このデータメモリ用演算語長算出テーブル7の記憶内容の一例を示す図である。このデータメモリ用演算語長算出テーブル7の記憶内容によれば、例えばアクセスされるデータメモリアドレスが領域A(0x0000〜Ox3fff)の範囲にある場合は、基本演算語長(データ長)は8ビットが選択され、データメモリ6へのアクセス命令は8ビット幅のデータメモリのアクセス命令として実行される。また、データメモリアドレスが領域B(Ox4000〜Ox7fff)の範囲にある場合は、基本演算語長は16ビットが選択されて、16ビット幅のデータメモリのアクセス命令として実行される。例えば、演算語長選択信号を1ビットとした場合、演算語長選択信号がHの場合は、8ビット演算が選択され、演算語長選択信号がLの場合は、16ビット演算が選択される、演算語長選択信号のビット数を更に増やし、32ビット演算などを行うようにさせてもよい。
【0020】
データメモリ用演算語長算出テーブル7から出力される演算語長選択信号は、インストラクションデコーダ2に入力される。インストラクションデコーダ2は、フェッチされた命令をデコードして、このデコード情報と演算語長選択信号に基づいて、演算ユニット3への演算指定、汎用レジスタ4への読み出し/書き込みレジスタ指定、データメモリ6へのデータメモリアドレス、データメモリ6へのアクセスの際の演算語長選択信号などを含む制御信号を形成し、形成した制御信号を演算ユニット3、汎用レジスタ4、メモリインターフェースユニット5に出力する。
【0021】
これにより、同一の命令コードであってもデータメモリ6のアクセス命令を異なった基本演算語長(データ語長)の命令として実行することが可能となる。例えば、同一のレジスタ間接アドレッシングロード命令「LD R1,R2」をデータ語長16ビットのロード命令としたり、8ビットのロード命令として実行させることができ、これにより実行可能な命令セット数を増やすことが可能となる。因みに、従来技術では、「LD R1,R2」を16ビットのロード命令とすると、8ビットのロード命令に関しては、新たな命令「LDB R1,R2」を用意する必要があった。
【0022】
このようにデータメモリアドレスに基づきデータメモリ領域に応じて演算語長を切り替えることで、同一の命令コードであってもデータメモリのアクセス命令を異なった演算語長の命令として実行する。
【0023】
メモリインターフェースユニット5では次の命令アドレスが生成される。そして、これ以降、前述と同様の処理が繰り返される。すなわち、順次生成される命令アドレスの順番に従って命令メモリ1に格納された命令コードが実行されていく。この際、データメモリにアクセスされるデータメモリアドレスに応じて演算語長が切り替えられる。
【0024】
図3は、汎用レジスタ4の内容をチェックしたりあるいはデータを用いない演算を実行する際など、データメモリ6をアクセスしない場合の演算語長選択信号の生成について示した図である。図3に示すように、演算語長選択信号保持用レジスタ8を設け、データメモリ6をアクセスしたときにデータメモリ用演算語長算出テーブル7で算出した演算語長選択信号を演算語長選択信号保持用レジスタ8に保持しておき、データメモリ6をアクセスしない場合は、演算語長選択信号保持用レジスタ8に保持された演算語長選択信号を使用して命令を実行する。
【0025】
図4は演算語長の切り替え処理の手順を示す図であり、この図4を用いて演算語長の切り替え手順について説明する。
【0026】
マイクロプロセッサの処理開始時には、リセット信号が入力され、このリセット信号により演算語長選択信号保持用レジスタ8は、所定の演算語長選択信号の値に初期化される。処理開始直後から最初のデータメモリ6をアクセスする命令が発生するまでは、演算語長選択信号保持用レジスタ8に保持された初期値の演算語長選択信号を用いて命令が実行される(ステップS100)。
【0027】
最初のデータメモリ6をアクセスする命令を実行する場合は、データメモリ用演算語長算出テーブル7で算出された演算語長選択信号を用いてデータメモリアクセス命令が実行される。この時の演算語長選択信号は演算語長選択信号保持用レジスタ8に書き込まれ、これにより初期値が更新される(ステップS110)。
【0028】
これ以降、次のデータメモリ6をアクセスする命令を実行するまで、演算語長選択信号保持用レジスタ8に保持されている演算語長選択信号を使用して命令が実行される(ステップS120)。
【0029】
つぎのデータメモリ6をアクセスする命令を実行する場合は、データメモリ用演算語長算出テーブル7で算出された演算語長選択信号を用いてデータメモリアクセス命令が実行される。この時の演算語長選択信号は演算語長選択信号保持用レジスタ8に書き込まれ、これにより前回の演算語長選択信号が更新される(ステップS130)。
【0030】
これ以降、次のデータメモリ6をアクセスする命令を実行するまで、演算語長選択信号保持用レジスタ8に保持されている演算語長選択信号を使用して命令が実行される(ステップS140)。
【0031】
このようにデータメモリアクセス命令実行時に演算語長選択信号保持用レジスタ8の内容が更新され、データメモリ6をアクセスしない場合でも演算語長選択信号保持用レジスタ8に保持された演算語長選択信号を使用することで、命令の配置によって演算語長の切り替えを可能にしている。
【0032】
なお、データメモリ用演算語長算出テーブル7を命令により書き込み可能なレジスタとすれば、データメモリ6の領域−演算語長との対応関係を命令によって任意に設定可能となる。また、演算語長選択信号保持用レジスタ8をプログラムによって書き込み可能にすれば、データメモリ6をアクセスする命令を使用しなくても、途中で演算語長の切り替えが可能となる。
【0033】
実施の形態2.
つぎにこの発明の実施の形態2を図5を用いて説明する。図5は、本発明のマイクロプロセッサの実施の形態2の構成を示す図である。図5において、図1と同一の番号を付した構成要素は、同一機能を達成し、重複する説明は省略する。この実施の形態2においては、メモリインターフェースユニット5から命令メモリ1に入力される命令アドレスを演算語長選択信号の算出に用い、命令アドレスによって演算語長の切り替えを行うようにしている。
【0034】
命令メモリ用演算語長算出テーブル9は、命令アドレスが入力される点以外は、実施の形態1のデータメモリ用演算語長算出テーブル7とその構成、機能は同じであり、命令アドレスから演算語長選択信号を算出する。遅延回路10は、命令メモリ用演算語長算出テーブル9で算出された演算語長選択信号を所定時間遅延させて、遅延させた演算語長選択信号をインストラクションデコーダ2に入力する。
【0035】
実施の形態2では、メモリインターフェースユニット5で生成された命令アドレスが命令メモリ用演算語長算出テーブル9に入力される。命令メモリ用演算語長算出テーブル9は、入力された命令アドレスに対応する演算語長選択信号を出力する。この演算語長選択信号が演算語長の切り替えに使用される。
【0036】
遅延回路10は、メモリインターフェースユニット5で命令アドレスが生成されてから、命令メモリ用演算語長算出テーブル9で演算語長選択信号が算出され、命令コードが命令メモリ1から読み出され、インストラクションデコーダ2でフェッチされた命令コードがデコードされて制御信号が生成されるまでの時間を調整するための回路である。
【0037】
このように、実施の形態2においては、命令メモリアドレスの領域に応じて演算語長を切り替えるようにしているので、同一の命令コードであっても異なった演算語長の命令として実行可能となる。また、遅延回路10によって演算語長選択信号を遅延させるようにしているので、メモリインターフェースユニット5で命令アドレスが生成されてからインストラクションデコーダ2で制御信号が生成されるまでの時間を調整することができる。
【0038】
なお、実施の形態2において、命令メモリ用演算語長算出テーブル9を命令により書き込み可能なレジスタとすれば、命令メモリ1の領域と演算語長との対応関係を命令によって任意に設定可能となる。
【0039】
【発明の効果】
以上説明したように、この発明によれば、同一の命令コードであっても異なった演算語長の命令として実行することが可能となるので、基本演算語長の異なる複数のディジタル信号処理アルゴリズムを同一のマイクロプロセッサで実行でき、さらに固定長命令フォーマットのマイクロプロセッサに対しても、命令セットが不足することがないマイクロプロセッサを得ることができる。
【図面の簡単な説明】
【図1】本発明のマイクロプロセッサの実施の形態1の構成を示すブロック図である。
【図2】演算語長算出テーブルを示す図である。
【図3】データメモリをアクセスしない場合の演算語長選択のための構成を示す図である。
【図4】演算語長切り替え動作を示す工程図である。
【図5】本発明のマイクロプロセッサの実施の形態2の構成を示すブロック図である。
【符号の説明】
1 命令メモリ、2 命令デコーダ(インストラクションデコーダ)、3 演算ユニット、4 汎用レジスタ、5 メモリインターフェースユニット、6 データメモリ、7 データメモリ用演算語長算出テーブル、8 演算語長選択信号保持用レジスタ、9 命令メモリ用演算語長算出テーブル、10 遅延回路。
Claims (6)
- 命令コードが予め格納されている命令メモリと、
データを記憶するデータメモリと、
データを一時的に格納する汎用レジスタと、
フェッチされた命令をデコードする命令デコーダと、
前記命令デコーダのデコード結果に基づいて前記命令メモリおよびデータメモリにアドレスを出力するとともに、データメモリと汎用レジスタとの間のデータアクセスを仲介するメモリインターフェースユニットと、
前記命令デコーダのデコード結果に基づいて前記汎用レジスタを用いて演算を行なう演算ユニットと、
を備えるマイクロプロセッサにおいて、
前記メモリインターフェースユニットから前記データメモリに出力されるアドレスに基づいて演算語長を切り替えるための演算語長選択信号を発生する演算語長選択信号発生器を備え、
前記命令デコーダは、この演算語長選択信号および前記フェッチされた命令をデコードし、
前記アクセスするデータメモリのアドレスに応じて演算語長を切り替えることを特徴とするマイクロプロセッサ。 - 前記演算語長選択信号発生器から出力される演算語長選択信号を記憶保持する演算語長選択信号保持用レジスタを備え、
以降の命令でデータメモリをアクセスしない場合には、前記演算語長選択信号発生器から新たな演算語長選択信号が出力されるまでは、演算語長選択信号保持用レジスタに保持されている演算語長を用いることを特徴とする請求項1に記載マイクロプロセッサ。 - 前記演算語長選択信号発生器は、命令により書き込み可能なレジスタであり、命令によってデータメモリの領域と演算語長との関係を設定可能にすることを特徴とする請求項1または2に記載のマイクロプロセッサ。
- 前記演算語長選択信号保持用レジスタは、プログラムによって書き込み可能なレジスタであり、プログラムによってデータメモリの領域と演算語長との関係を設定可能にすることを特徴とする請求項1または2に記載のマイクロプロセッサ。
- 命令コードが予め格納されている命令メモリと、
被演算データや演算結果などのデータを記憶するデータメモリと、
データを一時的に格納する汎用レジスタと、
フェッチされた命令をデコードする命令デコーダと、
前記命令デコーダのデコード結果に基づいて前記命令メモリおよびデータメモリにアドレスを出力するとともに、データメモリと汎用レジスタとの間のデータアクセスを仲介するメモリインターフェースユニットと、
前記命令デコーダのデコード結果に基づいて前記汎用レジスタを用いて演算を行なう演算ユニットと、
を備えるマイクロプロセッサにおいて、
前記メモリインターフェースユニットから前記命令メモリに出力されるアドレスに基づいて演算語長を切り替えるための演算語長選択信号を発生する演算語長選択信号発生器と、
この演算語長選択信号発生器から出力される演算語長選択信号を所定の時間遅延させる遅延回路と、
を備え、
前記命令デコーダは、この演算語長選択信号および前記フェッチされた命令をデコードし、
前記アクセスする命令メモリのアドレスに応じて演算語長を切り替えることを特徴とするマイクロプロセッサ。 - 前記演算語長選択信号発生器は、命令により書き込み可能なレジスタであり、命令によって命令メモリの領域と演算語長との関係を設定可能にすることを特徴とする請求項5に記載のマイクロプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002371758A JP2004206214A (ja) | 2002-12-24 | 2002-12-24 | マイクロプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002371758A JP2004206214A (ja) | 2002-12-24 | 2002-12-24 | マイクロプロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004206214A true JP2004206214A (ja) | 2004-07-22 |
Family
ID=32810560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002371758A Pending JP2004206214A (ja) | 2002-12-24 | 2002-12-24 | マイクロプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004206214A (ja) |
-
2002
- 2002-12-24 JP JP2002371758A patent/JP2004206214A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6832305B2 (en) | Method and apparatus for executing coprocessor instructions | |
JP2001092662A (ja) | プロセッサコア及びこれを用いたプロセッサ | |
JP2006293663A (ja) | メモリアドレス生成装置及びそれを有したプロセッサ、メモリアドレス生成方法 | |
US6687808B2 (en) | Data processor using indirect register addressing | |
JPH03233630A (ja) | 情報処理装置 | |
US5142630A (en) | System for calculating branch destination address based upon address mode bit in operand before executing an instruction which changes the address mode and branching | |
JP2004206214A (ja) | マイクロプロセッサ | |
US6363469B1 (en) | Address generation apparatus | |
US20030005269A1 (en) | Multi-precision barrel shifting | |
US8255672B2 (en) | Single instruction decode circuit for decoding instruction from memory and instructions from an instruction generation circuit | |
JP3644892B2 (ja) | 複数組の命令組を実行するためのデータ処理装置 | |
JPH1020959A (ja) | 低消費電力マイクロプロセッサ | |
JP4601624B2 (ja) | 命令プリデコーダ付きダイレクトメモリアクセスユニット | |
KR960016401B1 (ko) | 레지스터 페이지 포인터를 이용한 레지스터 페이지간의 페이지 선택회로 | |
JPH05250156A (ja) | Riscプロセッサ | |
JP3563724B2 (ja) | マイクロプロセッサ、エミュレータおよび命令セット解釈方法 | |
JP3474347B2 (ja) | マイクロコンピュータの命令解読部 | |
JP2002351656A (ja) | マイクロプロセッサ | |
JPH04255995A (ja) | 命令キャッシュ | |
JP2004062427A (ja) | マイクロプロセッサ | |
JPH02161525A (ja) | 演算処理装置 | |
JP2007234065A (ja) | データ処理装置 | |
JP2004288203A (ja) | プロセッサコア及びこれを用いたプロセッサ | |
JP2002116951A (ja) | アドレス生成回路 | |
JP2001084139A (ja) | 演算処理装置および演算処理方法 |