JPH08101774A - 可変長命令並列デコード装置 - Google Patents
可変長命令並列デコード装置Info
- Publication number
- JPH08101774A JPH08101774A JP23820394A JP23820394A JPH08101774A JP H08101774 A JPH08101774 A JP H08101774A JP 23820394 A JP23820394 A JP 23820394A JP 23820394 A JP23820394 A JP 23820394A JP H08101774 A JPH08101774 A JP H08101774A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- length
- instructions
- buffer
- decoder
- 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
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】
【目的】 この発明は、従来に比べて構成を大幅に増や
すことなく、従来よりも高い確率で複数の可変長命令を
並列して同時にデコードし、デコード効率の向上を達成
し得る可変長命令並列デコード装置を提供することを目
的とする。 【構成】 この発明は、命令デコーダ2−1,2−2に
よりデコードされた命令の命令長と命令長検出回路5に
より検出された命令長とに基づいて、命令バッファ1に
保持される命令を命令アライナ9により整列して命令デ
コーダ2−1,2−2に対応して入力されるようによう
に構成される。
すことなく、従来よりも高い確率で複数の可変長命令を
並列して同時にデコードし、デコード効率の向上を達成
し得る可変長命令並列デコード装置を提供することを目
的とする。 【構成】 この発明は、命令デコーダ2−1,2−2に
よりデコードされた命令の命令長と命令長検出回路5に
より検出された命令長とに基づいて、命令バッファ1に
保持される命令を命令アライナ9により整列して命令デ
コーダ2−1,2−2に対応して入力されるようによう
に構成される。
Description
【0001】
【産業上の利用分野】この発明は、複数の可変長命令を
並列して同時にデコードする可変長命令並列デコード装
置に関する。
並列して同時にデコードする可変長命令並列デコード装
置に関する。
【0002】
【従来の技術】一般に、マイクロプロセッサ等によりな
される命令の実行手順は以下のようである。 (1)「命令フェッチステージ」では、プロセッサの外
部バスを介して命令をメモリからプロセッサ内部の命令
バッファに読み込む。 (2)次に、「命令デコードステージ」では、命令バッ
ファにある命令を命令デコーダに入力して命令をデコー
ドする。また、オペランドとなるレジスタを読み出す。 (3)次に、「実行ステージ」では、デコード結果(演
算器などの制御情報)が演算器を制御し、命令を実行す
る。 (4)最後に、「書き込みステージ」では、実行結果を
レジスタに書き戻す。このような、それぞれのステージ
が例えば1クロックピッチでパイプライン動作する。こ
の発明は(1),(2)のステージに関連するものであ
り、(3),(4)は同一なので以後は考えず、以下こ
のモデルで説明する。
される命令の実行手順は以下のようである。 (1)「命令フェッチステージ」では、プロセッサの外
部バスを介して命令をメモリからプロセッサ内部の命令
バッファに読み込む。 (2)次に、「命令デコードステージ」では、命令バッ
ファにある命令を命令デコーダに入力して命令をデコー
ドする。また、オペランドとなるレジスタを読み出す。 (3)次に、「実行ステージ」では、デコード結果(演
算器などの制御情報)が演算器を制御し、命令を実行す
る。 (4)最後に、「書き込みステージ」では、実行結果を
レジスタに書き戻す。このような、それぞれのステージ
が例えば1クロックピッチでパイプライン動作する。こ
の発明は(1),(2)のステージに関連するものであ
り、(3),(4)は同一なので以後は考えず、以下こ
のモデルで説明する。
【0003】固定長命令セットにおける複数命令を同時
にデコードする従来の方法としては、図3及び図4に示
すようなものがある。
にデコードする従来の方法としては、図3及び図4に示
すようなものがある。
【0004】図3はこの方法を実施する命令バッファ、
命令デコーダのブロック図であり、図4は図3に示す各
ブロックの動作タイミングを示す図である。
命令デコーダのブロック図であり、図4は図3に示す各
ブロックの動作タイミングを示す図である。
【0005】(1)「命令フェッチ(F)ステージ」で
は、メモリから2つの命令(ここでは、説明を簡単にす
るため1命令が1ワードの固定された長さを有するもの
とする)が読み出され、IB(命令バッファ)101に
書き込まれる。IB101は2ワードの長さを有する。
この2つの命令には本来実行すべき順序があるが、早い
命令(先に実行すべき命令、第1命令と呼ぶ)はIB1
01のフィールド1、次の命令(第2命令)はIB10
1のフィールド2に格納される。
は、メモリから2つの命令(ここでは、説明を簡単にす
るため1命令が1ワードの固定された長さを有するもの
とする)が読み出され、IB(命令バッファ)101に
書き込まれる。IB101は2ワードの長さを有する。
この2つの命令には本来実行すべき順序があるが、早い
命令(先に実行すべき命令、第1命令と呼ぶ)はIB1
01のフィールド1、次の命令(第2命令)はIB10
1のフィールド2に格納される。
【0006】(2)「命令デコード(D)ステージ」
は、1サイクルの前半/後半の2つに分けられる。前半
ではIB101にある2命令がそれぞれ1命令ずつデコ
ーダ102−1、デコーダ102−2に入力されてデコ
ードされる。デコーダ102−1とデコーダ102−2
とは同じ機能を有するものである。デコード結果はレジ
スタ103−1又は103−2に前半終了時に書き込ま
れる。
は、1サイクルの前半/後半の2つに分けられる。前半
ではIB101にある2命令がそれぞれ1命令ずつデコ
ーダ102−1、デコーダ102−2に入力されてデコ
ードされる。デコーダ102−1とデコーダ102−2
とは同じ機能を有するものである。デコード結果はレジ
スタ103−1又は103−2に前半終了時に書き込ま
れる。
【0007】Dステージの後半では、ソースオペランド
となるレジスタが読み出される。また、デコーダ102
−1,2は面積を削減するためにPLAなどのダイナミ
ック回路で構成されることが多いが、この場合には後半
の時間はPLAのプリチャージに使われる。
となるレジスタが読み出される。また、デコーダ102
−1,2は面積を削減するためにPLAなどのダイナミ
ック回路で構成されることが多いが、この場合には後半
の時間はPLAのプリチャージに使われる。
【0008】ここで重要なのは、命令長が一定なので第
2命令の位置は固定で、デコードされる以前から分かっ
ており、デコーダ102−2に入力すべきフィールドが
IB101のどこに位置しているかがデコード開始前
(Dステージの最初)に分かっていることである。した
がって、IB101のフィールド2からデコーダ102
−2に直接データ線を接続するだけで、2つの命令を同
時にデコードすることができる。
2命令の位置は固定で、デコードされる以前から分かっ
ており、デコーダ102−2に入力すべきフィールドが
IB101のどこに位置しているかがデコード開始前
(Dステージの最初)に分かっていることである。した
がって、IB101のフィールド2からデコーダ102
−2に直接データ線を接続するだけで、2つの命令を同
時にデコードすることができる。
【0009】これに対して、可変長命令セットにおける
複数の命令を同時にデコードする従来法の問題点は、第
1命令をデコードすることによってはじめてその命令長
が分かるため、第1命令をデコードする前は第2命令が
命令バッファのどの位置にあるかが分かっていないこと
である。
複数の命令を同時にデコードする従来法の問題点は、第
1命令をデコードすることによってはじめてその命令長
が分かるため、第1命令をデコードする前は第2命令が
命令バッファのどの位置にあるかが分かっていないこと
である。
【0010】ここでは説明のため、可変長命令が2バイ
トであるショートフォーマットと4バイトであるロング
フォーマットの2種類あるとして、可変長命令セットに
おける複数の命令を同時にデコードする従来の手法を、
図5の可変長命令セットにおける命令バッファ、命令デ
コーダの構成を示す図、及び図6の動作タイミングを示
す図を参照して説明する。
トであるショートフォーマットと4バイトであるロング
フォーマットの2種類あるとして、可変長命令セットに
おける複数の命令を同時にデコードする従来の手法を、
図5の可変長命令セットにおける命令バッファ、命令デ
コーダの構成を示す図、及び図6の動作タイミングを示
す図を参照して説明する。
【0011】(1)「Fステージ」では、1サイクル前
の第1命令がショートフォーマットである時、IB11
1のフィールド2〜6が左に2バイトシフトされて再び
IB111に書き込まれる。ロングフォーマットである
時は、IB111のフィールド5,6が左に8バイトシ
フトされる。またこの時、メモリから8バイト(2つの
命令以上)がフェッチされて、IB111のシフトして
空いた領域に順番に詰め込まれる。以上の動作を命令ア
ライナ112が行なうが、何バイトシフトするかは1サ
イクル前の第1命令の命令長による。
の第1命令がショートフォーマットである時、IB11
1のフィールド2〜6が左に2バイトシフトされて再び
IB111に書き込まれる。ロングフォーマットである
時は、IB111のフィールド5,6が左に8バイトシ
フトされる。またこの時、メモリから8バイト(2つの
命令以上)がフェッチされて、IB111のシフトして
空いた領域に順番に詰め込まれる。以上の動作を命令ア
ライナ112が行なうが、何バイトシフトするかは1サ
イクル前の第1命令の命令長による。
【0012】(2)「Dステージ」では、IB111の
フィールド1とフィールド2がデコーダ113−1に、
フィールド3,4がデコーダ113−2に供給され、そ
れぞれのデコーダ113−1,2により命令がデコード
される。第1命令は必ず正しくデコードされるが、第2
命令が正しくデコードできるのは第1命令の長さが4バ
イトの時だけである。なぜなら、第1命令の長さが2バ
イトの時は、第2命令はフィールド2,3にまたがって
格納されるため、デコーダ113−2に正しく第2命令
が供給できないからである。第2命令のデコード結果が
正しいかどうかは、第1命令の命令長で判定し、Dステ
ージ後半に第2命令のinvalid信号として出力さ
れる。
フィールド1とフィールド2がデコーダ113−1に、
フィールド3,4がデコーダ113−2に供給され、そ
れぞれのデコーダ113−1,2により命令がデコード
される。第1命令は必ず正しくデコードされるが、第2
命令が正しくデコードできるのは第1命令の長さが4バ
イトの時だけである。なぜなら、第1命令の長さが2バ
イトの時は、第2命令はフィールド2,3にまたがって
格納されるため、デコーダ113−2に正しく第2命令
が供給できないからである。第2命令のデコード結果が
正しいかどうかは、第1命令の命令長で判定し、Dステ
ージ後半に第2命令のinvalid信号として出力さ
れる。
【0013】このように、第2命令が正しくデコードさ
れないという不具合を解決する方法の一つは、図5に示
す構成に対してIB111のフィールド3とフィールド
4を入力とする第3の命令デコーダ(図示せず)を設け
る方法がある。第1命令の長さが2通りしかないので、
デコード後、第1命令が2バイトの場合はデコーダ11
3−1及び第3の命令デコーダのデコード結果を有効と
し、デコーダ113−2の結果を無効とする。一方、第
1命令が4バイトの場合には第3の命令デコーダの結果
を無効にし、デコーダ113−1,113−2の結果を
使うようにすればよい。
れないという不具合を解決する方法の一つは、図5に示
す構成に対してIB111のフィールド3とフィールド
4を入力とする第3の命令デコーダ(図示せず)を設け
る方法がある。第1命令の長さが2通りしかないので、
デコード後、第1命令が2バイトの場合はデコーダ11
3−1及び第3の命令デコーダのデコード結果を有効と
し、デコーダ113−2の結果を無効とする。一方、第
1命令が4バイトの場合には第3の命令デコーダの結果
を無効にし、デコーダ113−1,113−2の結果を
使うようにすればよい。
【0014】しかしながら、このような手法では、第3
の命令デコーダ及び第3の命令デコーダに対応した命令
結果レジスタが余分に必要になるので、構成が大型化し
てしまう。
の命令デコーダ及び第3の命令デコーダに対応した命令
結果レジスタが余分に必要になるので、構成が大型化し
てしまう。
【0015】
【発明が解決しようとする課題】以上説明したように、
可変長命令セットにおける複数の命令を同時にデコード
する従来の手法にあっては、第2命令が正しくデコード
されるか否かは第1命令の命令長に依存していた。すな
わち、第1命令がロングフォーマットの時だけ第2命令
をデコードすることが可能であった。このため、第1命
令と同時に第2命令が常に正しくデコードされるとは限
らず、デコード効率の低下を招いていた。
可変長命令セットにおける複数の命令を同時にデコード
する従来の手法にあっては、第2命令が正しくデコード
されるか否かは第1命令の命令長に依存していた。すな
わち、第1命令がロングフォーマットの時だけ第2命令
をデコードすることが可能であった。このため、第1命
令と同時に第2命令が常に正しくデコードされるとは限
らず、デコード効率の低下を招いていた。
【0016】一方、第1命令と第2命令を常に同時にデ
コードしようとすると、命令デコーダを増やす必要があ
り、構成の大型化を招いていた。
コードしようとすると、命令デコーダを増やす必要があ
り、構成の大型化を招いていた。
【0017】そこで、この発明は、上記に鑑みてなされ
たものであり、その目的とするところは、従来に比べて
構成を大幅に増やすことなく、従来よりも高い確率で複
数の可変長命令を並列して同時にデコードして、デコー
ド効率の向上を達成し得る可変長命令並列デコード装置
を提供することにある。
たものであり、その目的とするところは、従来に比べて
構成を大幅に増やすことなく、従来よりも高い確率で複
数の可変長命令を並列して同時にデコードして、デコー
ド効率の向上を達成し得る可変長命令並列デコード装置
を提供することにある。
【0018】
【課題を解決するための手段】請求項1記載の発明は、
複数の可変長命令を保持する命令バッファと、可変長命
令セットの内最長命令の長さ(最大命令長)の入力を有
して命令バッファに対して重複することなく配置され、
命令バッファから与えられる命令を命令長を含んで並列
にデコードする複数の命令デコーダと、最大命令長の入
力を有して、命令デコーダに対して最短命令の命令長
(最小命令長)だけずらして1つ又は最小命令長毎に複
数配置され、命令バッファに保持された最大命令長の情
報を受けて命令長を検出する命令長検出回路と、それぞ
れの命令デコーダによりデコードされた命令の命令長及
び命令長検出回路により検出された命令長を保持する命
令長保持回路と、命令長保持回路に保持された命令長と
命令バッファに保持された複数の可変長命令の内それぞ
れの命令デコーダに対応して命令がアライン(整列)さ
れているか否かを示すアライン済み情報とに基づいて、
命令バッファに保持される複数の可変長命令をアライン
させるアライン制御信号とアライン済み情報を生成する
アライナ制御回路と、アライナ制御回路により生成され
たアライン済み情報を保持する保持回路と、アライナ制
御回路により生成されたアライン制御信号に基づいて、
前回にデコ−ドされた命令に続く1又は複数の未デコー
ド命令が命令デコーダに対応して命令バッファに保持さ
れるように命令バッファに保持される可変長命令をアラ
インする命令アライナとから構成される。
複数の可変長命令を保持する命令バッファと、可変長命
令セットの内最長命令の長さ(最大命令長)の入力を有
して命令バッファに対して重複することなく配置され、
命令バッファから与えられる命令を命令長を含んで並列
にデコードする複数の命令デコーダと、最大命令長の入
力を有して、命令デコーダに対して最短命令の命令長
(最小命令長)だけずらして1つ又は最小命令長毎に複
数配置され、命令バッファに保持された最大命令長の情
報を受けて命令長を検出する命令長検出回路と、それぞ
れの命令デコーダによりデコードされた命令の命令長及
び命令長検出回路により検出された命令長を保持する命
令長保持回路と、命令長保持回路に保持された命令長と
命令バッファに保持された複数の可変長命令の内それぞ
れの命令デコーダに対応して命令がアライン(整列)さ
れているか否かを示すアライン済み情報とに基づいて、
命令バッファに保持される複数の可変長命令をアライン
させるアライン制御信号とアライン済み情報を生成する
アライナ制御回路と、アライナ制御回路により生成され
たアライン済み情報を保持する保持回路と、アライナ制
御回路により生成されたアライン制御信号に基づいて、
前回にデコ−ドされた命令に続く1又は複数の未デコー
ド命令が命令デコーダに対応して命令バッファに保持さ
れるように命令バッファに保持される可変長命令をアラ
インする命令アライナとから構成される。
【0019】請求項2記載の発明は、請求項1記載の発
明において、前記命令バッファは、n(n:正の整数)
バイト長の命令と2nバイト長の命令を保持し、前記命
令デコーダは、2nバイト長の入力を有して、命令バッ
ファに対して2nバイト長毎に隣接して配置された2つ
の第1の命令デコーダと第2の命令デコーダからなり、
前記命令長検出回路は、2nバイト長の入力を有して、
隣接する命令デコーダの間に配置されてなる。
明において、前記命令バッファは、n(n:正の整数)
バイト長の命令と2nバイト長の命令を保持し、前記命
令デコーダは、2nバイト長の入力を有して、命令バッ
ファに対して2nバイト長毎に隣接して配置された2つ
の第1の命令デコーダと第2の命令デコーダからなり、
前記命令長検出回路は、2nバイト長の入力を有して、
隣接する命令デコーダの間に配置されてなる。
【0020】請求項3記載の発明は、請求項2記載の発
明において、2nバイト長の入力を有して、前記命令長
検出回路に隣接して配置された命令長検出回路を備えて
なる。
明において、2nバイト長の入力を有して、前記命令長
検出回路に隣接して配置された命令長検出回路を備えて
なる。
【0021】
【作用】上記構成において、この発明は、命令デコーダ
によりデコードされた命令の命令長と命令長検出回路に
より検出された命令長とに基づいて、命令バッファに保
持される命令を整列して命令デコーダに対応して入力さ
れるようにしている。
によりデコードされた命令の命令長と命令長検出回路に
より検出された命令長とに基づいて、命令バッファに保
持される命令を整列して命令デコーダに対応して入力さ
れるようにしている。
【0022】
【実施例】以下、図面を用いてこの発明の実施例を説明
する。
する。
【0023】図1は請求項1又は2記載の発明の一実施
例に係わる可変長命令並列デコード装置の構成を示す図
であり、図2は図1に示す装置のタイミングチャートを
示す図である。
例に係わる可変長命令並列デコード装置の構成を示す図
であり、図2は図1に示す装置のタイミングチャートを
示す図である。
【0024】この実施例では、取り扱う命令の命令長は
2バイトと4バイトの2種類であり、前述した可変長命
令をデコードする従来例と対比して説明する。なお、命
令長の種類はこれに限ることはなく、n(n:正の整
数)バイトの組み合わせであってもよい。
2バイトと4バイトの2種類であり、前述した可変長命
令をデコードする従来例と対比して説明する。なお、命
令長の種類はこれに限ることはなく、n(n:正の整
数)バイトの組み合わせであってもよい。
【0025】図1において、可変長命令並列デコード装
置は、2バイト長と4バイ長の2種類の可変長命令を保
持する命令バッファ1と、可変長命令セットの内最長命
令の長さ(4バイト長)の入力を有して命令バッファ1
に対して重複することなく配置され、命令バッファ1か
ら与えられる命令を命令長を含んで並列にデコードする
2つの命令デコーダ2−1,2−2と、4バイト長の入
力を有して、命令デコーダ2−1に対して最短命令の命
令長(2バイト長)だけずらして配置され、命令バッフ
ァ1に保持された4バイト長の情報を受けて命令長を検
出する命令長検出回路5と、それぞれの命令デコーダ2
−1,2−2によりデコードされた命令の命令長及び命
令長検出回路5により検出された命令長を保持する命令
長ラッチ3−1,3−2、6と、命令長ラッチ3−1,
3−2、6に保持された命令長と命令バッファ1に保持
された複数の可変長命令の内それぞれの命令デコーダ2
−1,2−2に対応して命令がアライン(整列)されて
いるか否かを示すアライン済みビットに基づいて、命令
バッファ1に保持される複数の可変長命令をアラインさ
せるアライン制御信号とアライン済みビットを生成する
アライナ制御回路7と、アライナ制御回路7により生成
されたアライン済みビットを保持するラッチ8と、アラ
イナ制御回路7により生成されたアライン制御信号に基
づいて、前回にデコ−ドされた命令に続く1又は複数の
未デコード命令が命令デコーダ2−1,2−2に対応し
て命令バッファ1に保持されるように命令バッファ1に
保持される可変長命令をアラインする命令アライナ9と
を備えて構成されている。
置は、2バイト長と4バイ長の2種類の可変長命令を保
持する命令バッファ1と、可変長命令セットの内最長命
令の長さ(4バイト長)の入力を有して命令バッファ1
に対して重複することなく配置され、命令バッファ1か
ら与えられる命令を命令長を含んで並列にデコードする
2つの命令デコーダ2−1,2−2と、4バイト長の入
力を有して、命令デコーダ2−1に対して最短命令の命
令長(2バイト長)だけずらして配置され、命令バッフ
ァ1に保持された4バイト長の情報を受けて命令長を検
出する命令長検出回路5と、それぞれの命令デコーダ2
−1,2−2によりデコードされた命令の命令長及び命
令長検出回路5により検出された命令長を保持する命令
長ラッチ3−1,3−2、6と、命令長ラッチ3−1,
3−2、6に保持された命令長と命令バッファ1に保持
された複数の可変長命令の内それぞれの命令デコーダ2
−1,2−2に対応して命令がアライン(整列)されて
いるか否かを示すアライン済みビットに基づいて、命令
バッファ1に保持される複数の可変長命令をアラインさ
せるアライン制御信号とアライン済みビットを生成する
アライナ制御回路7と、アライナ制御回路7により生成
されたアライン済みビットを保持するラッチ8と、アラ
イナ制御回路7により生成されたアライン制御信号に基
づいて、前回にデコ−ドされた命令に続く1又は複数の
未デコード命令が命令デコーダ2−1,2−2に対応し
て命令バッファ1に保持されるように命令バッファ1に
保持される可変長命令をアラインする命令アライナ9と
を備えて構成されている。
【0026】命令バッファ(IB)1は、1つのフィー
ルドが2バイトであり、少なくとも最大発行命令数×最
大命令長以上の長さを有し、そこから決まったフィール
ドを取り出して、命令デコーダ2−1,2−2に命令を
供給する。命令をデコードする命令デコーダは最大発行
命令数分備えられて、この実施例では2つの命令デコー
ダ2−1,2−2を備えている。命令デコーダ2−1,
2−2の出力はそれぞれ対応してデコード結果を保持す
るデコードラッチ3−1,3−2に書き込まれる。した
がって、命令デコーダ2−1,2−2の数だけのデコー
ド結果を保持するデコードラッチ3−1,3−2があ
る。命令デコーダ2−1,2−2は命令をデコードして
演算器などの制御信号を生成するとともに、デコードし
た命令の命令長(命令長1,命令長2)をそれぞれ対応
した命令長ラッチ4−1,4−2に出力して保持する。
ルドが2バイトであり、少なくとも最大発行命令数×最
大命令長以上の長さを有し、そこから決まったフィール
ドを取り出して、命令デコーダ2−1,2−2に命令を
供給する。命令をデコードする命令デコーダは最大発行
命令数分備えられて、この実施例では2つの命令デコー
ダ2−1,2−2を備えている。命令デコーダ2−1,
2−2の出力はそれぞれ対応してデコード結果を保持す
るデコードラッチ3−1,3−2に書き込まれる。した
がって、命令デコーダ2−1,2−2の数だけのデコー
ド結果を保持するデコードラッチ3−1,3−2があ
る。命令デコーダ2−1,2−2は命令をデコードして
演算器などの制御信号を生成するとともに、デコードし
た命令の命令長(命令長1,命令長2)をそれぞれ対応
した命令長ラッチ4−1,4−2に出力して保持する。
【0027】また、IB1のフィールド2,3に保持さ
れた命令の命令長だけを検出する命令長検出回路5を備
えている。命令長検出回路5は、命令のすべて(オペコ
ードを含めて)をデコードする必要はなく、命令長に関
する部分だけをデコードすればよいので、非常に簡単な
回路で実現可能である。
れた命令の命令長だけを検出する命令長検出回路5を備
えている。命令長検出回路5は、命令のすべて(オペコ
ードを含めて)をデコードする必要はなく、命令長に関
する部分だけをデコードすればよいので、非常に簡単な
回路で実現可能である。
【0028】例えば、命令のフィールドが以下のように
なっている時、bit0,1が命令 長を表すフィールドであるとする。◎ 0 1 15 31 +------------------------+ 2バイト命令 l XX l l +------------------------+ +------------------------+------------------------+ 4バイト命令 l XX l l l +------------------------+------------------------+ このとき次表のように命令長がエンコードされていたと
する。
なっている時、bit0,1が命令 長を表すフィールドであるとする。◎ 0 1 15 31 +------------------------+ 2バイト命令 l XX l l +------------------------+ +------------------------+------------------------+ 4バイト命令 l XX l l l +------------------------+------------------------+ このとき次表のように命令長がエンコードされていたと
する。
【0029】 bit0 bit1 命令長 -------------------------------- 0 0 2バイト 0 1 2バイト 1 0 2バイト 1 1 4バイト
【0030】このときはANDゲート一段(bit0
& bit1)で命令長検出回路5を実現できる。した
がって、命令長検出回路5を設けるのにハード増の負担
はほとんどない。
& bit1)で命令長検出回路5を実現できる。した
がって、命令長検出回路5を設けるのにハード増の負担
はほとんどない。
【0031】この命令長検出回路5の個数は、IB1中
に可変長の命令がどのようにセットされていても、すべ
ての組合せで命令長が検出できるように用意される。命
令長検出回路5で検出された命令長(命令長3)は命令
長ラッチ6に保持される。
に可変長の命令がどのようにセットされていても、すべ
ての組合せで命令長が検出できるように用意される。命
令長検出回路5で検出された命令長(命令長3)は命令
長ラッチ6に保持される。
【0032】アライナ制御回路7は、命令長ラッチ4−
1,4−2、6に保持された命令長とアライン済みラッ
チ8に保持されたアライン済みビットを受けて、命令ア
ライナ9を制御し、アライン済みビットを生成してアラ
イン済みラッチ8に与える。アライン済みビットとは、
第2命令の先頭がフィールド3の位置にすでに整列され
ていることを示すビットである。
1,4−2、6に保持された命令長とアライン済みラッ
チ8に保持されたアライン済みビットを受けて、命令ア
ライナ9を制御し、アライン済みビットを生成してアラ
イン済みラッチ8に与える。アライン済みビットとは、
第2命令の先頭がフィールド3の位置にすでに整列され
ていることを示すビットである。
【0033】命令アライナ9は、メモリ及びIB1のフ
ィールド2〜6から命令を受けて、アライナ制御回路7
の制御に基づいて命令を左方向にシフトするとともに、
メモリからフェッチされた次の命令をIB1にセットす
る。
ィールド2〜6から命令を受けて、アライナ制御回路7
の制御に基づいて命令を左方向にシフトするとともに、
メモリからフェッチされた次の命令をIB1にセットす
る。
【0034】以上の説明では、命令をフェッチしてそれ
をIB1にセットするまでをFステージと呼び、IB1
の命令をデコードして命令長を検出し命令アライナ9を
制御するまでをDステージと呼ぶ。
をIB1にセットするまでをFステージと呼び、IB1
の命令をデコードして命令長を検出し命令アライナ9を
制御するまでをDステージと呼ぶ。
【0035】このような構成において、Fステージで
は、メモリから命令がフェッチされる。Dステージ後半
で生成されるアライナ制御回路7の出力にしたがって命
令が命令アライナ9により整列されてIB1に命令がセ
ットされる。整列のし方は次のDステージ後半の動作で
説明する。
は、メモリから命令がフェッチされる。Dステージ後半
で生成されるアライナ制御回路7の出力にしたがって命
令が命令アライナ9により整列されてIB1に命令がセ
ットされる。整列のし方は次のDステージ後半の動作で
説明する。
【0036】Dステージでは、従来例と同じように命令
長がそれぞれ4バイトと仮定して命令デコードする。従
来例と異なる点の1つは第1命令が2バイト長である場
合のために、IB1のフィールド2,3を命令長検出回
路5に入れて、その命令長を検出しておくことと、フィ
ールド3,4の命令デコード時に命令長も検出しておく
ことである。Dステージの前半の最後でデコード結果と
それぞれの命令長が対応したラッチ3ー1,3ー2,4
−1,4−2、6に保持される。Dステージ後半では、
命令長1,2,3の情報に基づいてデコード結果2が有
効化あるいは無効化され、次のサイクルのデコードのた
めに命令が整列される。また、整列されたか否かの情報
としてアライン済みビットを書き込む。
長がそれぞれ4バイトと仮定して命令デコードする。従
来例と異なる点の1つは第1命令が2バイト長である場
合のために、IB1のフィールド2,3を命令長検出回
路5に入れて、その命令長を検出しておくことと、フィ
ールド3,4の命令デコード時に命令長も検出しておく
ことである。Dステージの前半の最後でデコード結果と
それぞれの命令長が対応したラッチ3ー1,3ー2,4
−1,4−2、6に保持される。Dステージ後半では、
命令長1,2,3の情報に基づいてデコード結果2が有
効化あるいは無効化され、次のサイクルのデコードのた
めに命令が整列される。また、整列されたか否かの情報
としてアライン済みビットを書き込む。
【0037】この整列は命令アライナ9で行なわれる。
以下に、命令長1,2,3の値と、アライン済みビット
の値によって、どのようにデコード結果2の無効化と命
令アライナ9の動作及びアライン済みビットをどのよう
にセットするかを、以下に示す表1を参照して説明す
る。
以下に、命令長1,2,3の値と、アライン済みビット
の値によって、どのようにデコード結果2の無効化と命
令アライナ9の動作及びアライン済みビットをどのよう
にセットするかを、以下に示す表1を参照して説明す
る。
【0038】なお、デコード結果1は常に有効である。
【0039】
【表1】 上記表1には、デコード直後における命令長1,2,
3、ラッチの内容、前回のデコードでセットされたアラ
イン済みビットの内容及びそれらの情報に基づいて命令
デコーダ2−2のデコード結果2の有効/無効の判断、
さらにDステージ最後にセットすべき次のデコードのた
めのアライン済みビットの内容、Dステージ後半に動作
すべき命令アライナ9の動作を示している。
3、ラッチの内容、前回のデコードでセットされたアラ
イン済みビットの内容及びそれらの情報に基づいて命令
デコーダ2−2のデコード結果2の有効/無効の判断、
さらにDステージ最後にセットすべき次のデコードのた
めのアライン済みビットの内容、Dステージ後半に動作
すべき命令アライナ9の動作を示している。
【0040】なお、上記表1において、- はdon't car
e,<<は左シフト、<<の右の数字はシフトするバイト数
を示し、例えばfield2-6 << 2 はIB1のフィールド2
〜6を2バイトそれぞれシフトすることを示す。
e,<<は左シフト、<<の右の数字はシフトするバイト数
を示し、例えばfield2-6 << 2 はIB1のフィールド2
〜6を2バイトそれぞれシフトすることを示す。
【0041】IB1をシフトした後、IB1の右側の余
ったフィールドにはメモリからフェッチした次の命令が
セットされる。アライナ制御回路7は上記の表をランダ
ムロジックで実現するだけであるが、これも明らかに簡
単な回路で構成できる。
ったフィールドにはメモリからフェッチした次の命令が
セットされる。アライナ制御回路7は上記の表をランダ
ムロジックで実現するだけであるが、これも明らかに簡
単な回路で構成できる。
【0042】例えば2バイト長の第1命令がフィールド
1に、2バイト長の第2命令がフィールド2にあり、ア
ライン済みビットはセットされていなかった(すなわち
アラインされていない)とする。この時は表1のcas
e2に相当するが、第2命令は命令デコーダ2−2の入
力位置とあっていないので、デコード結果2は無効にな
る。さらに、サイクルの後半で、フィールド2にある第
2命令(2バイト長)をフィールド1に転送し、フィー
ルド3以降はそのままにしておけば、第1命令が命令デ
コーダ2−1の入力位置に、また第2命令が命令デコー
ダ2−2の入力位置に合うようにそれぞれ整列される。
さらに、アライン済みビットをセットする。このとき、
フィールド2は空になる。
1に、2バイト長の第2命令がフィールド2にあり、ア
ライン済みビットはセットされていなかった(すなわち
アラインされていない)とする。この時は表1のcas
e2に相当するが、第2命令は命令デコーダ2−2の入
力位置とあっていないので、デコード結果2は無効にな
る。さらに、サイクルの後半で、フィールド2にある第
2命令(2バイト長)をフィールド1に転送し、フィー
ルド3以降はそのままにしておけば、第1命令が命令デ
コーダ2−1の入力位置に、また第2命令が命令デコー
ダ2−2の入力位置に合うようにそれぞれ整列される。
さらに、アライン済みビットをセットする。このとき、
フィールド2は空になる。
【0043】次のサイクルは第2命令がアライン済みで
あるから、case0またはcase1の場合にあた
り、第1,第2命令ともにデコードすることができる。
すなわち、次のサイクルでは2つの命令を確実に同時に
デコードすることができる。したがって、この実施例で
は、少なくとも2回に1回の割合で2つの命令を同時に
デコードすることが可能となる。すなわち2回連続して
同時デコードに失敗することはない。これにより、従来
に比べて複数の可変長命令が同時にデコードされる確率
を高めることができる。
あるから、case0またはcase1の場合にあた
り、第1,第2命令ともにデコードすることができる。
すなわち、次のサイクルでは2つの命令を確実に同時に
デコードすることができる。したがって、この実施例で
は、少なくとも2回に1回の割合で2つの命令を同時に
デコードすることが可能となる。すなわち2回連続して
同時デコードに失敗することはない。これにより、従来
に比べて複数の可変長命令が同時にデコードされる確率
を高めることができる。
【0044】なお、請求項3記載の発明に対応して、上
記実施例の構成において命令長検出回路5に加えて、さ
らにIB1のフィールド4,5に保持された命令の命令
長を検出する命令長検出回路を設け、この回路により検
出された命令長も含めてIB1に保持される命令を整列
するようにすれば、分岐命令の直後を除いて毎回2つの
命令を同時にデコードすることが可能となる。このよう
な構成では、命令の構成が複雑で命令デコーダが大型に
なる場合には、従来の命令デコーダを1つ追加するのに
比べて、ANDゲートで構成される命令長検出回路の追
加とアライナ制御回路の入力が1つ増加するだけで済む
ので、従来に比べて構成を大型化することなく複数の可
変長命令を毎回確実に同時にデコードすることができる
ようになる。
記実施例の構成において命令長検出回路5に加えて、さ
らにIB1のフィールド4,5に保持された命令の命令
長を検出する命令長検出回路を設け、この回路により検
出された命令長も含めてIB1に保持される命令を整列
するようにすれば、分岐命令の直後を除いて毎回2つの
命令を同時にデコードすることが可能となる。このよう
な構成では、命令の構成が複雑で命令デコーダが大型に
なる場合には、従来の命令デコーダを1つ追加するのに
比べて、ANDゲートで構成される命令長検出回路の追
加とアライナ制御回路の入力が1つ増加するだけで済む
ので、従来に比べて構成を大型化することなく複数の可
変長命令を毎回確実に同時にデコードすることができる
ようになる。
【0045】また、2バイト長、4バイト長の命令に加
えて6バイト長の命令が含まれる場合には、IBのフィ
ールド1〜3に対応する命令デコーダとフィールド4〜
6に対応する命令デコーダとの間にフィールド2〜4に
対応する命令長検出回路とフィールド3〜5に対応する
命令長検出回路を設けるようにすればよく、取り扱う命
令の内最長命令の命令長に応じて設けるようにすればよ
い。さらに、このように構成において、上述したように
して命令長検出回路を追加することにより複数の可変長
命令を毎回確実に同時にデコードすることができるよう
になる。
えて6バイト長の命令が含まれる場合には、IBのフィ
ールド1〜3に対応する命令デコーダとフィールド4〜
6に対応する命令デコーダとの間にフィールド2〜4に
対応する命令長検出回路とフィールド3〜5に対応する
命令長検出回路を設けるようにすればよく、取り扱う命
令の内最長命令の命令長に応じて設けるようにすればよ
い。さらに、このように構成において、上述したように
して命令長検出回路を追加することにより複数の可変長
命令を毎回確実に同時にデコードすることができるよう
になる。
【0046】
【発明の効果】以上説明したように、この発明によれ
ば、命令デコーダによりデコードされた命令の命令長と
命令長検出回路により検出された命令長とに基づいて、
命令バッファに保持される命令を整列して命令デコーダ
に対応して入力されるようにしているので、構成の大型
化を招くことなく、複数の可変長命令を同時にデコード
できる確率を高めることが可能となり、デコード効率を
向上させることができるようになる。
ば、命令デコーダによりデコードされた命令の命令長と
命令長検出回路により検出された命令長とに基づいて、
命令バッファに保持される命令を整列して命令デコーダ
に対応して入力されるようにしているので、構成の大型
化を招くことなく、複数の可変長命令を同時にデコード
できる確率を高めることが可能となり、デコード効率を
向上させることができるようになる。
【0047】また、請求項2記載の発明によれば、2つ
の命令デコーダに対して1つの命令長検出回路を設けた
ので、少なくとも2回に1回の割合で2つの命令を同時
にデコードすることができる。
の命令デコーダに対して1つの命令長検出回路を設けた
ので、少なくとも2回に1回の割合で2つの命令を同時
にデコードすることができる。
【0048】さらに、請求項3記載の発明によれば、2
つの命令デコーダに対して2つの命令長検出回路を設け
たので、分岐命令の直後を除いて毎回確実に2つの命令
を同時にデコードすることができる。
つの命令デコーダに対して2つの命令長検出回路を設け
たので、分岐命令の直後を除いて毎回確実に2つの命令
を同時にデコードすることができる。
【図1】請求項1記載の発明の一実施例に係わる可変長
命令並列デコード装置の構成を示す図である。
命令並列デコード装置の構成を示す図である。
【図2】図1に示す装置のタイミングチャートを示す図
である。
である。
【図3】固定長命令をデコードする従来のデコード装置
の構成を示す図である。
の構成を示す図である。
【図4】図3に示す装置のタイミングチャートを示す図
である。
である。
【図5】可変長命令をデコードする従来のデコード装置
の構成を示す図である。
の構成を示す図である。
【図6】図5に示す装置のタイミングチャートを示す図
である。
である。
1 命令バッファ 2−1,2−2 命令デコーダ 3−1,3−2,4−1,4−2,6,8 ラッチ 5 命令長検出回路 7 アライナ制御回路 9 命令アライナ
Claims (3)
- 【請求項1】 複数の可変長命令を保持する命令バッフ
ァと、 可変長命令セットの内最長命令の長さ(最大命令長)の
入力を有して命令バッファに対して重複することなく配
置され、命令バッファから与えられる命令を命令長を含
んで並列にデコードする複数の命令デコーダと、 最大命令長の入力を有して、命令デコーダに対して最短
命令の命令長(最小命令長)だけずらして1つ又は最小
命令長毎に複数配置され、命令バッファに保持された最
大命令長の情報を受けて命令長を検出する命令長検出回
路と、 それぞれの命令デコーダによりデコードされた命令の命
令長及び命令長検出回路により検出された命令長を保持
する命令長保持回路と、 命令長保持回路に保持された命令長と命令バッファに保
持された複数の可変長命令の内それぞれの命令デコーダ
に対応して命令がアライン(整列)されているか否かを
示すアライン済み情報とに基づいて、命令バッファに保
持される複数の可変長命令をアラインさせるアライン制
御信号とアライン済み情報を生成するアライナ制御回路
と、 アライナ制御回路により生成されたアライン済み情報を
保持する保持回路と、 アライナ制御回路により生成されたアライン制御信号に
基づいて、前回にデコ−ドされた命令に続く1又は複数
の未デコード命令が命令デコーダに対応して命令バッフ
ァに保持されるように命令バッファに保持される可変長
命令をアラインする命令アライナとを有することを特徴
とする可変長命令並列デコード装置。 - 【請求項2】 前記命令バッファは、n(n:正の整
数)バイト長の命令と2nバイト長の命令を保持し、 前記命令デコーダは、2nバイト長の入力を有して、命
令バッファに対して2nバイト長毎に隣接して配置され
た2つの第1の命令デコーダと第2の命令デコーダから
なり、 前記命令長検出回路は、2nバイト長の入力を有して、
隣接する命令デコーダの間に配置されてなることを特徴
とする請求項1記載の可変長命令並列デコード装置。 - 【請求項3】 2nバイト長の入力を有して、前記命令
長検出回路に隣接して配置された命令長検出回路を備え
てなることを特徴とする請求項2記載の可変長命令並列
デコード装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP23820394A JPH08101774A (ja) | 1994-09-30 | 1994-09-30 | 可変長命令並列デコード装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP23820394A JPH08101774A (ja) | 1994-09-30 | 1994-09-30 | 可変長命令並列デコード装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH08101774A true JPH08101774A (ja) | 1996-04-16 |
Family
ID=17026691
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP23820394A Pending JPH08101774A (ja) | 1994-09-30 | 1994-09-30 | 可変長命令並列デコード装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH08101774A (ja) |
-
1994
- 1994-09-30 JP JP23820394A patent/JPH08101774A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6889318B1 (en) | Instruction fusion for digital signal processor | |
| US5784585A (en) | Computer system for executing instruction stream containing mixed compressed and uncompressed instructions by automatically detecting and expanding compressed instructions | |
| JPH04313121A (ja) | インストラクションメモリ装置 | |
| JPS6312029A (ja) | 情報処理装置 | |
| US20020029333A1 (en) | Methods and apparatus for branch prediction using hybrid history with index sharing | |
| JPH06236268A (ja) | 命令の長さを判定する装置と方法 | |
| JPH03218523A (ja) | データプロセッサ | |
| JP2620511B2 (ja) | データ・プロセッサ | |
| JP2002229777A (ja) | プロセッサ装置 | |
| JPH063584B2 (ja) | 情報処理装置 | |
| US6851033B2 (en) | Memory access prediction in a data processing apparatus | |
| EP0223150B1 (en) | Information processing apparatus | |
| JPH08101774A (ja) | 可変長命令並列デコード装置 | |
| US7020769B2 (en) | Method and system for processing a loop of instructions | |
| EP0936537A1 (en) | Cyclic redundancy check in a computer system | |
| JP3707729B2 (ja) | アドレス生成インターロック検出方法およびシステム | |
| JP3739556B2 (ja) | 情報処理装置 | |
| JPS61288230A (ja) | パイプライン制御方式 | |
| JPH07191911A (ja) | アドレス変換装置及びマイクロプロセッサ算出方法 | |
| JPH0348535B2 (ja) | ||
| JP3117096B2 (ja) | マイクロプロセッサ | |
| JP2000003279A (ja) | Vliwプロセッサ、プログラム生成装置、および記録媒体 | |
| KR100515039B1 (ko) | 조건부 명령어를 고려한 파이프라인 상태 표시 회로 | |
| JPH0248733A (ja) | 情報処理装置 | |
| JPH0816392A (ja) | コンピュータシステム、コンピュータシステム動作方法、及びコンピュータ命令シーケンス実行方法 |