JP2001216154A - むき出しのパイプラインを具備するコードのサイズを、nop演算を命令オペランドとしてコード化することで削減するための方法並びに装置 - Google Patents
むき出しのパイプラインを具備するコードのサイズを、nop演算を命令オペランドとしてコード化することで削減するための方法並びに装置Info
- Publication number
- JP2001216154A JP2001216154A JP2000401009A JP2000401009A JP2001216154A JP 2001216154 A JP2001216154 A JP 2001216154A JP 2000401009 A JP2000401009 A JP 2000401009A JP 2000401009 A JP2000401009 A JP 2000401009A JP 2001216154 A JP2001216154 A JP 2001216154A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- nop
- unit
- branch
- code
- 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.)
- Abandoned
Links
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【課題】 むき出しのパイプラインを有するプロセッサ
内の総コードサイズを削減する方法並びに装置を提供す
る。 【解決手段】 ロード命令や分岐命令の様にその命令の
結果が利用出来るようになるまでに待ち時間が必要な命
令に対して、従来挿入されているNOP命令の代わり
に、このNOP命令の数に等しい値を含むNOPフィー
ルドをそれぞれの命令の中に挿入することで、同一効果
をもたらす総コードサイズを削減する。
内の総コードサイズを削減する方法並びに装置を提供す
る。 【解決手段】 ロード命令や分岐命令の様にその命令の
結果が利用出来るようになるまでに待ち時間が必要な命
令に対して、従来挿入されているNOP命令の代わり
に、このNOP命令の数に等しい値を含むNOPフィー
ルドをそれぞれの命令の中に挿入することで、同一効果
をもたらす総コードサイズを削減する。
Description
【0001】
【発明の属する技術分野】本発明は、NOPを必要とす
る命令を具備したマイクロプロセッサまたはマイクロ制
御装置、例えばディジタル信号処理装置上(以降「プロ
セッサ」という)で命令のコードサイズを削減するため
の方法並びに装置に関する。特に、本発明はむき出しの
(exposed)パイプライン、例えば大規模命令ワード
(VLIW:very large instruction word)を具備した
アーキテクチャ上で、NOP演算を1つの命令オペラン
ドとしてコード化することでコードサイズを低減するた
めの方法並びに装置に関する。
る命令を具備したマイクロプロセッサまたはマイクロ制
御装置、例えばディジタル信号処理装置上(以降「プロ
セッサ」という)で命令のコードサイズを削減するため
の方法並びに装置に関する。特に、本発明はむき出しの
(exposed)パイプライン、例えば大規模命令ワード
(VLIW:very large instruction word)を具備した
アーキテクチャ上で、NOP演算を1つの命令オペラン
ドとしてコード化することでコードサイズを低減するた
めの方法並びに装置に関する。
【0002】
【従来の技術】VILWは命令セット概念を記述してお
り、この中でコンパイラは多数の比較的単純な、相互に
無関係な演算を単一命令ワードに集約している。キャッ
シュまたはメモリからプロセッサの中にフェッチされる
と、これらのワードは容易に分解されてそれらの命令は
個別の実行ユニットに送られる。VLIWはおそらくソ
フトウェアまたはコンパイラベースのスーパースカラー
技術として最適に記述される。VLIWアーキテクチャ
はしばしばむき出しのパイプラインを有する。
り、この中でコンパイラは多数の比較的単純な、相互に
無関係な演算を単一命令ワードに集約している。キャッ
シュまたはメモリからプロセッサの中にフェッチされる
と、これらのワードは容易に分解されてそれらの命令は
個別の実行ユニットに送られる。VLIWはおそらくソ
フトウェアまたはコンパイラベースのスーパースカラー
技術として最適に記述される。VLIWアーキテクチャ
はしばしばむき出しのパイプラインを有する。
【0003】遅延効果命令は、1つまたは複数の連続し
た命令が最初の命令結果が完了する前に実行される命令
である。NOP命令が命令の待ち時間を補償するために
挿入される。NOP命令はダミー命令であって、何の結
果ももたらさない。これは明示的な「何もしない」命令
として使用され、これは命令パイプラインの中で待ち時
間を補うために必要である。しかしながら、この様なN
OP命令はコードサイズを増加させる。例えば、複数の
NOPはNOPの複数の繰り返しまたは一連の個別NO
Pとして下記のように定義される: NOPはVLIW用のコードの中でしばしば発生する。
た命令が最初の命令結果が完了する前に実行される命令
である。NOP命令が命令の待ち時間を補償するために
挿入される。NOP命令はダミー命令であって、何の結
果ももたらさない。これは明示的な「何もしない」命令
として使用され、これは命令パイプラインの中で待ち時
間を補うために必要である。しかしながら、この様なN
OP命令はコードサイズを増加させる。例えば、複数の
NOPはNOPの複数の繰り返しまたは一連の個別NO
Pとして下記のように定義される: NOPはVLIW用のコードの中でしばしば発生する。
【0004】しばしばNOP命令は複数のシーケンシャ
ル・サイクルに対して実行される。c6xシリーズ・アー
キテクチャは、NOP命令のシーケンスをコード化する
ための多重サイクルNOPを有する。テキサス州ダラス
のテキサス・インスツルメンツ社から購入できるc6000
プラットフォームは、固定および浮動小数点ディジタル
信号処理装置(DSP)を提供しており、これは高性能
システムの開発者が彼らの特定アプリケーションに適し
た素子を選択出来るようにしている。このプラットフォ
ームはいくつかの好適な特徴をDSPと組み合わせて、
性能の強化、コスト効率の改善、および電力消費の削減
を実現する。工業的に最も強力なプロセッサのいくつか
として、テキサス州ダラスのテキサス・インスツルメン
ツ社から購入できるc6000プラットフォームは、1200ミ
リオン命令毎秒(MIPS:million instructions per
second)から2400MIPSの性能範囲を具備したc62x固
定小数点DSPを提供する。c67x浮動小数点素子は600
ミリオン浮動小数点演算毎秒(MFLOPS:million f
loating-point operations per second)から1GFL
OPS(1ビリオン浮動小数点演算毎秒)を超えるレベ
ルの範囲にある。新たに出現する技術の性能要求に適合
するために、このc6000プラットフォームは、c62x生成
固定小数点素子の5000MIPSから浮動小数点素子用の
3GFLOPS以上の範囲に相当する固定小数点および
浮動小数点コードを提供する。
ル・サイクルに対して実行される。c6xシリーズ・アー
キテクチャは、NOP命令のシーケンスをコード化する
ための多重サイクルNOPを有する。テキサス州ダラス
のテキサス・インスツルメンツ社から購入できるc6000
プラットフォームは、固定および浮動小数点ディジタル
信号処理装置(DSP)を提供しており、これは高性能
システムの開発者が彼らの特定アプリケーションに適し
た素子を選択出来るようにしている。このプラットフォ
ームはいくつかの好適な特徴をDSPと組み合わせて、
性能の強化、コスト効率の改善、および電力消費の削減
を実現する。工業的に最も強力なプロセッサのいくつか
として、テキサス州ダラスのテキサス・インスツルメン
ツ社から購入できるc6000プラットフォームは、1200ミ
リオン命令毎秒(MIPS:million instructions per
second)から2400MIPSの性能範囲を具備したc62x固
定小数点DSPを提供する。c67x浮動小数点素子は600
ミリオン浮動小数点演算毎秒(MFLOPS:million f
loating-point operations per second)から1GFL
OPS(1ビリオン浮動小数点演算毎秒)を超えるレベ
ルの範囲にある。新たに出現する技術の性能要求に適合
するために、このc6000プラットフォームは、c62x生成
固定小数点素子の5000MIPSから浮動小数点素子用の
3GFLOPS以上の範囲に相当する固定小数点および
浮動小数点コードを提供する。
【0005】ロード(LD)および分岐(B)命令は、
それぞれ五(5)および六(6)サイクル待ち時間を有
する。待ち時間とはその中で1つの命令の全ての結果が
完了する期間(サイクルまたは遅延スロットで測定され
る)として定義される。これらの待ち時間をその他の有
用な演算で「満たす」ために命令スケジューリングが使
用される。その様なその他の命令を命令待ち時間中に実
行することが出来ない場合を仮定すると、その命令が発
せられた後にNOPが挿入されてプログラムが正しく実
行されるように維持する。下記は現在のパイプライン演
算でのNOPの使用例である: 例1a: LD*a0,a5 % a5をa0にロード(1サイクル) NOP 4 % 4サイクルの間演算しない(遅延スロット) ADD a5,6,a7; % a5の値が利用可能 例2a: B Label % ラベル命令へ分岐(1サイクル) NOP 5 % 5サイクルの間演算しない(遅延スロット) ; % 分岐発生 NOPはその他の命令の遅延効果を補償するために使用
されているが、NOPは1より大きな遅延を有するその
他の型式の命令にも関連しているはずである。一般的に
複雑な命令、メモリを読みとるロード命令、および制御
フロー命令(例えば、分岐)は1より大きな待ち時間を
有し、それらの実行フェーズは複数サイクルを必要とす
る。
それぞれ五(5)および六(6)サイクル待ち時間を有
する。待ち時間とはその中で1つの命令の全ての結果が
完了する期間(サイクルまたは遅延スロットで測定され
る)として定義される。これらの待ち時間をその他の有
用な演算で「満たす」ために命令スケジューリングが使
用される。その様なその他の命令を命令待ち時間中に実
行することが出来ない場合を仮定すると、その命令が発
せられた後にNOPが挿入されてプログラムが正しく実
行されるように維持する。下記は現在のパイプライン演
算でのNOPの使用例である: 例1a: LD*a0,a5 % a5をa0にロード(1サイクル) NOP 4 % 4サイクルの間演算しない(遅延スロット) ADD a5,6,a7; % a5の値が利用可能 例2a: B Label % ラベル命令へ分岐(1サイクル) NOP 5 % 5サイクルの間演算しない(遅延スロット) ; % 分岐発生 NOPはその他の命令の遅延効果を補償するために使用
されているが、NOPは1より大きな遅延を有するその
他の型式の命令にも関連しているはずである。一般的に
複雑な命令、メモリを読みとるロード命令、および制御
フロー命令(例えば、分岐)は1より大きな待ち時間を
有し、それらの実行フェーズは複数サイクルを必要とす
る。
【0006】パイプライン化は命令をアセンブリ・ライ
ン形式で実行するための方法である。パイプライン化は
演算毎の実効プログラム遅延を削減するための設計技術
であって、演算を一連の段に分割し、その各々が演算の
一部を実行する。一連のデータは典型的にパイプライン
を通してシーケンシャルな形式でクロックが掛けられ、
クロック周期毎に1段づつ前進する。
ン形式で実行するための方法である。パイプライン化は
演算毎の実効プログラム遅延を削減するための設計技術
であって、演算を一連の段に分割し、その各々が演算の
一部を実行する。一連のデータは典型的にパイプライン
を通してシーケンシャルな形式でクロックが掛けられ、
クロック周期毎に1段づつ前進する。
【0007】命令は1つの演算を実行させるプログラミ
ングの基本ユニットである。これは1つの演算コードと
複数のオペランドとで構成され、オプションとしてラベ
ルおよびコメントを具備する。1つの命令は複数ビッ
ト、Nで符号化される。Nは可変であったり固定であっ
たりするが、それは個々の装置のアーキテクチャに依存
する。例えば、テキサス州ダラスのテキサスインスツル
メンツ社製のc6xファミリーのプロセッサは、固定32
ビット命令ワードを有する。レジスタとは高速メモリの
小さな領域で、プロセッサまたは電子装置の内部に配置
され、それはデータまたは命令を一時的に格納するため
に使用される。各々のレジスタ名前が付けられていて、
数バイトの命令を含み、これはプログラムにより参照さ
れる。
ングの基本ユニットである。これは1つの演算コードと
複数のオペランドとで構成され、オプションとしてラベ
ルおよびコメントを具備する。1つの命令は複数ビッ
ト、Nで符号化される。Nは可変であったり固定であっ
たりするが、それは個々の装置のアーキテクチャに依存
する。例えば、テキサス州ダラスのテキサスインスツル
メンツ社製のc6xファミリーのプロセッサは、固定32
ビット命令ワードを有する。レジスタとは高速メモリの
小さな領域で、プロセッサまたは電子装置の内部に配置
され、それはデータまたは命令を一時的に格納するため
に使用される。各々のレジスタ名前が付けられていて、
数バイトの命令を含み、これはプログラムにより参照さ
れる。
【0008】命令パイプラインの1例では、このパイプ
ラインはフェッチ、復号および実行段で構成されてい
る。例えば、命令フェッチ・フェーズがパイプラインの
第1フェーズである。このフェーズでは命令がプログラ
ム・メモリからフェッチされる。命令復号フェーズがパ
イプラインの次のフェーズである;このフェーズでは命
令が復号される。オペランド・フェッチ・フェーズはパ
イプラインの第3フェーズであり、ここでは1つまたは
複数のオペランドがレジスタ・ファイルから読み込まれ
る。オペランドは1つの命令の一部であり、中央処理ユ
ニット(CPU)が何処から情報をフェッチまたは格納
するかを指し示す部分である。オペランドはアセンブリ
語命令の引数(またはパラメータ)で構成されている。
最後に命令実行フェーズで、その命令が実行される。命
令レジスタ(IREG)または(IR)は実行される実
際の命令を含むレジスタであり、命令キャッシュはオン
チップ静的RAM(SCRAM)であって、プロセッサ
の1つで実行されるカレント命令を含む。
ラインはフェッチ、復号および実行段で構成されてい
る。例えば、命令フェッチ・フェーズがパイプラインの
第1フェーズである。このフェーズでは命令がプログラ
ム・メモリからフェッチされる。命令復号フェーズがパ
イプラインの次のフェーズである;このフェーズでは命
令が復号される。オペランド・フェッチ・フェーズはパ
イプラインの第3フェーズであり、ここでは1つまたは
複数のオペランドがレジスタ・ファイルから読み込まれ
る。オペランドは1つの命令の一部であり、中央処理ユ
ニット(CPU)が何処から情報をフェッチまたは格納
するかを指し示す部分である。オペランドはアセンブリ
語命令の引数(またはパラメータ)で構成されている。
最後に命令実行フェーズで、その命令が実行される。命
令レジスタ(IREG)または(IR)は実行される実
際の命令を含むレジスタであり、命令キャッシュはオン
チップ静的RAM(SCRAM)であって、プロセッサ
の1つで実行されるカレント命令を含む。
【0009】
【発明が解決しようとする課題】従って、NOP命令の
数を減らしてコード・サイズを減らしたりまたは最小化
するための方法並びに装置および、プロセッサ上のむき
出しのパイプラインで使用するために開発されるコード
の総および平均コード・サイズを削減するための方法に
対する必要性が高まってきている。NOPを別の命令と
して挿入するとコード・サイズを増加させるため、NO
Pを実行命令のフィールドとして含むことにより、コー
ド・サイズは削減されるはずである。
数を減らしてコード・サイズを減らしたりまたは最小化
するための方法並びに装置および、プロセッサ上のむき
出しのパイプラインで使用するために開発されるコード
の総および平均コード・サイズを削減するための方法に
対する必要性が高まってきている。NOPを別の命令と
して挿入するとコード・サイズを増加させるため、NO
Pを実行命令のフィールドとして含むことにより、コー
ド・サイズは削減されるはずである。
【0010】更に、その様な素子で要求されるメモリを
削減することでプロセッサのコストを低減する必要性も
高まっている。コード・サイズを削減することは、シス
テム内で必要とされる物理的メモリの量を少なくしたり
または最小とすることにより全体のシステム・コストを
低減させる。コード・サイズを削減することはまた、更
に多くのコードをオンチップ・メモリ、すなわちチップ
または素子の内部メモリでその資源は限られている、の
中に実装させることが出来るので、システム性能を改善
するはずである。
削減することでプロセッサのコストを低減する必要性も
高まっている。コード・サイズを削減することは、シス
テム内で必要とされる物理的メモリの量を少なくしたり
または最小とすることにより全体のシステム・コストを
低減させる。コード・サイズを削減することはまた、更
に多くのコードをオンチップ・メモリ、すなわちチップ
または素子の内部メモリでその資源は限られている、の
中に実装させることが出来るので、システム性能を改善
するはずである。
【0011】更に、既存のプロセッサの性能及び容量
を、カレント演算を実行するために必要なメモリを削減
することで増大させる必要性も高まっている。これもま
たプログラム・キャッシュを有するシステム内の性能を
改善するはずである。
を、カレント演算を実行するために必要なメモリを削減
することで増大させる必要性も高まっている。これもま
たプログラム・キャッシュを有するシステム内の性能を
改善するはずである。
【0012】加えて、既存および新たな素子において信
号処理演算を実行するために要求される総電力を削減す
るための方法に対する必要性も高まっている。コード・
サイズを削減することはまた、チップで使用される電力
量を削減するが、それはフェッチされる命令の個数も削
減されるはずだからである。
号処理演算を実行するために要求される総電力を削減す
るための方法に対する必要性も高まっている。コード・
サイズを削減することはまた、チップで使用される電力
量を削減するが、それはフェッチされる命令の個数も削
減されるはずだからである。
【0013】
【課題を解決するための手段】1つの実施例において、
本発明はまたむき出しの(exposed)パイプラインを例
えばプロセッサ内に有する装置の総コード・サイズを削
減するための方法でもある。この方法は下記のステップ
で構成されている、すなわち命令定義、例えばロード命
令の間の待ち時間を決定し、命令を使用し、疑似NOP
フィールドを命令定義または命令使用の中または中間命
令の中に挿入する。例えば、待ち時間はコードを検索し
てその中でその命令の全ての結果が完了する期間(サイ
クルまたは遅延スロットで計測される)、例えばプログ
ラム命令を非シーケンシャル・プログラム・メモリ・ア
ドレスへ切り換えることを含む分岐ステップ、を識別し
て決定される。定義命令の中に挿入されると、この疑似
NOPフィールドは定義命令に続く以下の待ち時間を定
める。使用命令の中に挿入されると、NOPフィールド
はその使用命令に先行する待ち時間を定める。定義また
は使用命令はそのNOPフィールドを受け入れるための
十分なスペースを持たないであろうから、NOPフィー
ルドを中間命令の中に置くことが便利であるかまたは望
ましい。一般的に、定義命令はいくつかの変数の値を
「定義」し、一方使用命令は定義された変数を、例えば
いくつかの数学的または論理的演算の中で採用する。更
に、中間命令の中に挿入されると、NOPフィールドは
遅延がその中間命令の前または後で生じることを示す。
本発明はまたむき出しの(exposed)パイプラインを例
えばプロセッサ内に有する装置の総コード・サイズを削
減するための方法でもある。この方法は下記のステップ
で構成されている、すなわち命令定義、例えばロード命
令の間の待ち時間を決定し、命令を使用し、疑似NOP
フィールドを命令定義または命令使用の中または中間命
令の中に挿入する。例えば、待ち時間はコードを検索し
てその中でその命令の全ての結果が完了する期間(サイ
クルまたは遅延スロットで計測される)、例えばプログ
ラム命令を非シーケンシャル・プログラム・メモリ・ア
ドレスへ切り換えることを含む分岐ステップ、を識別し
て決定される。定義命令の中に挿入されると、この疑似
NOPフィールドは定義命令に続く以下の待ち時間を定
める。使用命令の中に挿入されると、NOPフィールド
はその使用命令に先行する待ち時間を定める。定義また
は使用命令はそのNOPフィールドを受け入れるための
十分なスペースを持たないであろうから、NOPフィー
ルドを中間命令の中に置くことが便利であるかまたは望
ましい。一般的に、定義命令はいくつかの変数の値を
「定義」し、一方使用命令は定義された変数を、例えば
いくつかの数学的または論理的演算の中で採用する。更
に、中間命令の中に挿入されると、NOPフィールドは
遅延がその中間命令の前または後で生じることを示す。
【0014】別の実施例では、本発明は例えばプロセッ
サ内での分岐中の総コード・サイズを削減するための方
法である。この方法は下記のステップを含む、すなわち
命令ストリーム内の新たな(非連続)点への分岐、例え
ば命令ストリーム内の第1点から第2点への分岐を開始
するための分岐命令後の待ち時間を決定し、疑似NOP
フィールドをその分岐命令の中に挿入する。
サ内での分岐中の総コード・サイズを削減するための方
法である。この方法は下記のステップを含む、すなわち
命令ストリーム内の新たな(非連続)点への分岐、例え
ば命令ストリーム内の第1点から第2点への分岐を開始
するための分岐命令後の待ち時間を決定し、疑似NOP
フィールドをその分岐命令の中に挿入する。
【0015】更に別の実施例では、本発明は削減された
総コード・サイズを有する装置である。この装置は少な
くとも1つの定義命令とそれに続く少なくとも1つの使
用命令を含む1つのプロセッサを有し、ここで少なくと
も1つの定義命令、例えばロード命令と少なくとも1つ
の使用命令との間に待ち時間が存在する。少なくとも1
つの定義または少なくとも1つの使用命令または中間命
令は疑似NOPフィールドを含む。先に説明したよう
に、定義命令の中に挿入されると、NOPフィールドは
定義命令に続く後続の待ち時間を定める。使用命令の中
に挿入されると、NOPフィールドは使用命令に先行す
る待ち時間を定める。更に、中間命令の中に挿入される
と、NOPフィールドはその遅延が中間命令の前または
後に生じることを示す。
総コード・サイズを有する装置である。この装置は少な
くとも1つの定義命令とそれに続く少なくとも1つの使
用命令を含む1つのプロセッサを有し、ここで少なくと
も1つの定義命令、例えばロード命令と少なくとも1つ
の使用命令との間に待ち時間が存在する。少なくとも1
つの定義または少なくとも1つの使用命令または中間命
令は疑似NOPフィールドを含む。先に説明したよう
に、定義命令の中に挿入されると、NOPフィールドは
定義命令に続く後続の待ち時間を定める。使用命令の中
に挿入されると、NOPフィールドは使用命令に先行す
る待ち時間を定める。更に、中間命令の中に挿入される
と、NOPフィールドはその遅延が中間命令の前または
後に生じることを示す。
【0016】更に別の実施例において、本発明は分岐中
に総コード・サイズを削減するための装置である。この
装置は命令ストリーム内の新たな(非連続)点への分
岐、例えば命令ストリーム内の第1点から第2点への分
岐を行うための、少なくとも1つの分岐命令を含むプロ
セッサを含む。第1点から第2点への移動の中に待ち時
間が存在する、すなわち分岐命令に続く待ち時間であ
る。少なくとも1つの分岐命令はその待ち時間に相当す
る疑似NOPフィールドを含む。
に総コード・サイズを削減するための装置である。この
装置は命令ストリーム内の新たな(非連続)点への分
岐、例えば命令ストリーム内の第1点から第2点への分
岐を行うための、少なくとも1つの分岐命令を含むプロ
セッサを含む。第1点から第2点への移動の中に待ち時
間が存在する、すなわち分岐命令に続く待ち時間であ
る。少なくとも1つの分岐命令はその待ち時間に相当す
る疑似NOPフィールドを含む。
【0017】更に別の実施例において、本発明は以下の
ステップを含む方法であり、NOP(シリアルまたは多
重サイクルNOPのいずれか)が続く少なくとも1つの
遅延効果命令、例えばロードまたは分岐命令を1つのコ
ードの中に配置し;そのコードからNOPを削除し;そ
してNOPフィールドを遅延命令の中に、少なくとも1
つの遅延効果命令として挿入する。これに代わって、N
OPをNOPフィールドを中間命令、またはそのコード
内の別の適当な位置の命令の中に挿入する事で置き換え
ることも可能である。加えて、遅延効果命令が一度配置
されると、そのコードはNOPをNOPフィールドで置
き換えることを容易にするために、並べ替えられる。
ステップを含む方法であり、NOP(シリアルまたは多
重サイクルNOPのいずれか)が続く少なくとも1つの
遅延効果命令、例えばロードまたは分岐命令を1つのコ
ードの中に配置し;そのコードからNOPを削除し;そ
してNOPフィールドを遅延命令の中に、少なくとも1
つの遅延効果命令として挿入する。これに代わって、N
OPをNOPフィールドを中間命令、またはそのコード
内の別の適当な位置の命令の中に挿入する事で置き換え
ることも可能である。加えて、遅延効果命令が一度配置
されると、そのコードはNOPをNOPフィールドで置
き換えることを容易にするために、並べ替えられる。
【0018】更に別の実施例において、本発明は少なく
とも1つの遅延効果命令を含むプロセッサを含む装置で
ある。少なくとも1つの遅延効果命令の少なくとも1つ
は疑似NOPフィールドを含み、これによりNOPを置
き換えている。
とも1つの遅延効果命令を含むプロセッサを含む装置で
ある。少なくとも1つの遅延効果命令の少なくとも1つ
は疑似NOPフィールドを含み、これによりNOPを置
き換えている。
【0019】その他の目的、特徴並びに効果は当業者に
は以下の詳細な説明から明らかであろう。
は以下の詳細な説明から明らかであろう。
【0020】本発明は添付図を参照して更に容易に理解
されるであろう。
されるであろう。
【0021】
【好適な実施例の詳細な説明】本発明を組み込み使用す
るのに適したデータ処理装置が、米国特許明細書シリア
ル番号第 (代理人整理番号第TI−30
302)、2000年2月18日登録、名称「改善され
た命令アーキテクチャを具備したマイクロプロセッサ」
に記載されており、これは此処に挙げることで引用され
ている。本発明の1つの実施例には、64個の汎用レジ
スタが存在する。汎用レジスタA0,A1,A2,B
0,B1およびB2は各々制限付きレジスタとして使用
される。更に各々の各.Dユニットは倍ワード(64ビ
ット)のロードおよびストアを行う。この.Dユニット
は任意のバイト境界でワードおよび倍ワードにアクセス
する。この.Dユニットはデータ並びにアドレス交叉パ
スをサポートする。同じレジスタが実行パケット内の複
数の機能ユニットに対するデータ・パス交叉オペランド
として使用される。1つの命令が交叉パスを介して先の
サイクルで更新されたレジスタの読み込みを試みる際に
遅延クロック・サイクルが導入される。各サイクル毎に
2つのロング・ソースと2つのロング結果までが各デー
タ・パス上でアクセスされるであろう。
るのに適したデータ処理装置が、米国特許明細書シリア
ル番号第 (代理人整理番号第TI−30
302)、2000年2月18日登録、名称「改善され
た命令アーキテクチャを具備したマイクロプロセッサ」
に記載されており、これは此処に挙げることで引用され
ている。本発明の1つの実施例には、64個の汎用レジ
スタが存在する。汎用レジスタA0,A1,A2,B
0,B1およびB2は各々制限付きレジスタとして使用
される。更に各々の各.Dユニットは倍ワード(64ビ
ット)のロードおよびストアを行う。この.Dユニット
は任意のバイト境界でワードおよび倍ワードにアクセス
する。この.Dユニットはデータ並びにアドレス交叉パ
スをサポートする。同じレジスタが実行パケット内の複
数の機能ユニットに対するデータ・パス交叉オペランド
として使用される。1つの命令が交叉パスを介して先の
サイクルで更新されたレジスタの読み込みを試みる際に
遅延クロック・サイクルが導入される。各サイクル毎に
2つのロング・ソースと2つのロング結果までが各デー
タ・パス上でアクセスされるであろう。
【0022】各.Mユニットは各サイクル毎に2つの1
6x16ビット掛け算および4つの8x8ビット掛け算
を実行する。特別通信特定命令、例えばSHFL,DE
AL,およびGMPY4が.Mユニットに関連づけられ
ていて、誤り訂正符号の中の共通演算のアドレス指定を
する。ビット計数、ビット反転、および.Mユニット上
の回転ハードウェアはビット・レベルでのアルゴリズ
ム、例えばバイナリ形態学、画像距離計算および暗号ア
ルゴリズムまでサポートを拡張する。
6x16ビット掛け算および4つの8x8ビット掛け算
を実行する。特別通信特定命令、例えばSHFL,DE
AL,およびGMPY4が.Mユニットに関連づけられ
ていて、誤り訂正符号の中の共通演算のアドレス指定を
する。ビット計数、ビット反転、および.Mユニット上
の回転ハードウェアはビット・レベルでのアルゴリズ
ム、例えばバイナリ形態学、画像距離計算および暗号ア
ルゴリズムまでサポートを拡張する。
【0023】命令セット・アーキテクチャの増強直交性
が具備されると、.Mユニットは.Sユニットのシフト
能力に加えて、双方向変数シフトを実行する。この様な
双方向シフトは音声圧縮コーデック(vocoder)を直接
支援する。
が具備されると、.Mユニットは.Sユニットのシフト
能力に加えて、双方向変数シフトを実行する。この様な
双方向シフトは音声圧縮コーデック(vocoder)を直接
支援する。
【0024】(マイクロプロセッサ)図1はマイクロプ
ロセッサ1のブロック図であり、これは本発明の実施例
を有する。マイクロプロセッサ1はVLIWディジタル
信号処理装置(「DSP」)である。明瞭にしたいがた
めに、図1は本発明の実施例の理解に関係するマイクロ
プロセッサ1の部分のみを示す。DSPの一般的構成の
詳細は良く知られており、別のところで容易に探すこと
が出来るであろう。例えば、米国特許第5,072,4
18号、フレデリック・ボタウ(Frederick Boutaud)
その他に付与、はDSPを詳細に記述しており、これは
此処に挙げることで引用されている。米国特許第5,3
29,471号、グレイ・スボボダ(Grey Swoboda)そ
の他に付与、はDSPのテストおよびエミュレート方法
を詳細に記述しており、これは此処に挙げることで引用
されている。本発明の1つの実施例に関連するマイクロ
プロセッサ1の部分の詳細は以下に十分詳細に説明され
ていて、マイクロプロセッサ技術に関して通常の技術を
有する者が本発明を使用できるように意図している。
ロセッサ1のブロック図であり、これは本発明の実施例
を有する。マイクロプロセッサ1はVLIWディジタル
信号処理装置(「DSP」)である。明瞭にしたいがた
めに、図1は本発明の実施例の理解に関係するマイクロ
プロセッサ1の部分のみを示す。DSPの一般的構成の
詳細は良く知られており、別のところで容易に探すこと
が出来るであろう。例えば、米国特許第5,072,4
18号、フレデリック・ボタウ(Frederick Boutaud)
その他に付与、はDSPを詳細に記述しており、これは
此処に挙げることで引用されている。米国特許第5,3
29,471号、グレイ・スボボダ(Grey Swoboda)そ
の他に付与、はDSPのテストおよびエミュレート方法
を詳細に記述しており、これは此処に挙げることで引用
されている。本発明の1つの実施例に関連するマイクロ
プロセッサ1の部分の詳細は以下に十分詳細に説明され
ていて、マイクロプロセッサ技術に関して通常の技術を
有する者が本発明を使用できるように意図している。
【0025】マイクロプロセッサ1の中には中央処理ユ
ニット(CPU)10、データ・メモリ22、プログラ
ム・メモリ23、周辺装置60および直接メモリ接続
(DMA)を具備した外部メモリ・インタフェース(E
MIF)61が示されている。CPU10は更に命令フ
ェッチ/復号ユニット10a−c、算術およびロード/
ストアユニットD1,掛け算器M1,ALU/シフト・
ユニットS1、算術論理ユニット(「ALU」)L1,
および此処からデータが読みとられそこに対してデータ
が書き込まれる共有多重ポート・レジスタ・ファイル2
0aを含む、複数の実行ユニットを有する。復号された
命令は命令フェッチ/復号ユニット10a−cから機能
ユニットD1,M1,S1およびL1に、図示されてい
ないが種々の制御ラインの組を介して提供される。デー
タはレジスタ・ファイル20aとロード/ストアユニッ
トD1とは第1組のバス32aを介して、掛け算器M1
とは第2組のバス34aを介して、ALU/シフト・ユ
ニットS1とは第3組のバス36aを介して、そしてA
LU L1とは第4組のバス38aを介して相互に提供
される。データはメモリ22とロード/ストアユニット
D1の間で第5組のバス40aを介して相互に提供され
る。先に説明した全データ・パスはレジスタ・ファイル
20bおよび実行ユニットD2,M2,S2およびL2
で二重化されていることに注意されたい。命令はフェッ
チ・ユニット10aにより命令メモリ23から1組のバ
ス41を介してフェッチされる。エミュレーション回路
50は集積回路1の内部演算へのアクセスを提供し、こ
れは外部のテスト/開発システム(XDS)51で制御
される。
ニット(CPU)10、データ・メモリ22、プログラ
ム・メモリ23、周辺装置60および直接メモリ接続
(DMA)を具備した外部メモリ・インタフェース(E
MIF)61が示されている。CPU10は更に命令フ
ェッチ/復号ユニット10a−c、算術およびロード/
ストアユニットD1,掛け算器M1,ALU/シフト・
ユニットS1、算術論理ユニット(「ALU」)L1,
および此処からデータが読みとられそこに対してデータ
が書き込まれる共有多重ポート・レジスタ・ファイル2
0aを含む、複数の実行ユニットを有する。復号された
命令は命令フェッチ/復号ユニット10a−cから機能
ユニットD1,M1,S1およびL1に、図示されてい
ないが種々の制御ラインの組を介して提供される。デー
タはレジスタ・ファイル20aとロード/ストアユニッ
トD1とは第1組のバス32aを介して、掛け算器M1
とは第2組のバス34aを介して、ALU/シフト・ユ
ニットS1とは第3組のバス36aを介して、そしてA
LU L1とは第4組のバス38aを介して相互に提供
される。データはメモリ22とロード/ストアユニット
D1の間で第5組のバス40aを介して相互に提供され
る。先に説明した全データ・パスはレジスタ・ファイル
20bおよび実行ユニットD2,M2,S2およびL2
で二重化されていることに注意されたい。命令はフェッ
チ・ユニット10aにより命令メモリ23から1組のバ
ス41を介してフェッチされる。エミュレーション回路
50は集積回路1の内部演算へのアクセスを提供し、こ
れは外部のテスト/開発システム(XDS)51で制御
される。
【0026】外部テスト・システム51は集積回路のデ
バッグおよびエミュレーションを行うための種々の既知
テスト・システムを表している。その様なシステムの1
つは米国特許第5,535,331号に記載されてお
り、これは此処に挙げることで引用されている。テスト
回路52は、集積回路1をテストするための制御レジス
タおよび並列特徴抽出分析回路(parallel signature a
nalysis)を含む。
バッグおよびエミュレーションを行うための種々の既知
テスト・システムを表している。その様なシステムの1
つは米国特許第5,535,331号に記載されてお
り、これは此処に挙げることで引用されている。テスト
回路52は、集積回路1をテストするための制御レジス
タおよび並列特徴抽出分析回路(parallel signature a
nalysis)を含む。
【0027】メモリ22およびメモリ23は図1に、全
体としてボックス42で表されているマイクロプロセッ
サ1集積回路の一部として示されていることに注意され
たい。これらのメモリ22−23は同様にマイクロプロ
セッサ1集積回路42の外部に置いたり、または一部を
集積回路42上に配置し、またその一部を集積回路42
の外部に置くことも可能である。
体としてボックス42で表されているマイクロプロセッ
サ1集積回路の一部として示されていることに注意され
たい。これらのメモリ22−23は同様にマイクロプロ
セッサ1集積回路42の外部に置いたり、または一部を
集積回路42上に配置し、またその一部を集積回路42
の外部に置くことも可能である。
【0028】マイクロプロセッサ1がデータ処理システ
ムに組み込まれる際に、追加メモリまたは周辺装置が図
1に示すようにマイクロプロセッサ1に接続される。例
えば、ランダムアクセス・メモリ(RAM)70、読み
取り専用メモリ(ROM)71およびディスク72が外
部バス73を介して接続されるように示されている。バ
ス73は外部メモリ・インタフェース(EMIF)に接
続されており、これはマイクロプロセッサ(集積回路)
42内部の機能ブロック61の一部である。直接メモリ
・アクセス(DMA)制御装置もまたブロック61の中
に含まれている。DMA制御装置は一般的にデータをメ
モリとマイクロプロセッサ1内部の周辺装置との間、お
よびメモリとマイクロプロセッサ1の外部の周辺装置と
の間で移動させるために使用される。
ムに組み込まれる際に、追加メモリまたは周辺装置が図
1に示すようにマイクロプロセッサ1に接続される。例
えば、ランダムアクセス・メモリ(RAM)70、読み
取り専用メモリ(ROM)71およびディスク72が外
部バス73を介して接続されるように示されている。バ
ス73は外部メモリ・インタフェース(EMIF)に接
続されており、これはマイクロプロセッサ(集積回路)
42内部の機能ブロック61の一部である。直接メモリ
・アクセス(DMA)制御装置もまたブロック61の中
に含まれている。DMA制御装置は一般的にデータをメ
モリとマイクロプロセッサ1内部の周辺装置との間、お
よびメモリとマイクロプロセッサ1の外部の周辺装置と
の間で移動させるために使用される。
【0029】(レジスタ・ファイル交叉パス)各々の機
能ユニットはそれ自身のデータ・パス内のレジスタ・フ
ァイルから直接読みとりおよび直接書き込みを行う。す
なわち、.L1,.S1,.D1および.M1ユニット
はレジスタ・ファイルAに書き込み、.L2,.S
2,.D2および.M2ユニットはレジスタ・ファイル
Bに書き込む。これらのレジスタ・ファイルは反対側レ
ジスタ・ファイルの機能ユニットに1Xおよび2X交叉
パス経由で接続されている。これらの交叉パスは機能ユ
ニットが1つのデータ・パスから32ビット・オペラン
ドへ反対側のレジスタ・ファイルからアクセス出来るよ
うにしている。1X交叉パスはデータ・パスAの機能ユ
ニットがそれらのソースをレジスタ・ファイルBから読
みとれるようにしている。同様に2X交叉パスはデータ
・パスBの機能ユニットがそれらのソースをレジスタ・
ファイルAから読みとれるようにしている。
能ユニットはそれ自身のデータ・パス内のレジスタ・フ
ァイルから直接読みとりおよび直接書き込みを行う。す
なわち、.L1,.S1,.D1および.M1ユニット
はレジスタ・ファイルAに書き込み、.L2,.S
2,.D2および.M2ユニットはレジスタ・ファイル
Bに書き込む。これらのレジスタ・ファイルは反対側レ
ジスタ・ファイルの機能ユニットに1Xおよび2X交叉
パス経由で接続されている。これらの交叉パスは機能ユ
ニットが1つのデータ・パスから32ビット・オペラン
ドへ反対側のレジスタ・ファイルからアクセス出来るよ
うにしている。1X交叉パスはデータ・パスAの機能ユ
ニットがそれらのソースをレジスタ・ファイルBから読
みとれるようにしている。同様に2X交叉パスはデータ
・パスBの機能ユニットがそれらのソースをレジスタ・
ファイルAから読みとれるようにしている。
【0030】8つの機能ユニットは全て、交叉パスを介
して反対側レジスタ・ファイルへのアクセスを有す
る。.M1,.M2,.S1,.S2,.D1および.
D2ユニットのsrc2入力は交叉パスと同一側レジス
タ・ファイルの間で選択可能である。.L1および.L
2の場合、src1とsrc2入力は共に交叉パスと同
一側レジスタ・ファイルとの間で選択可能である。
して反対側レジスタ・ファイルへのアクセスを有す
る。.M1,.M2,.S1,.S2,.D1および.
D2ユニットのsrc2入力は交叉パスと同一側レジス
タ・ファイルの間で選択可能である。.L1および.L
2の場合、src1とsrc2入力は共に交叉パスと同
一側レジスタ・ファイルとの間で選択可能である。
【0031】このアーキテクチャの実施例の中には2つ
の交叉パス、1Xおよび2Xのみが存在する。従って、
各データ・パスの反対側レジスタ・ファイルからサイク
ル毎に1つのソース読み取りか、またはサイクル毎に全
部で2つの交叉パスソース読み取りに制限される。好適
に、1つの側の複数のユニットは同一交叉パス・ソース
を同時に読みとることができる。従って、1つの側の交
叉パス・オペランドは任意の1つ、実行パケット内の複
数またはその側の全ての機能ユニットで使用される。テ
キサス州ダラスのテキサスインスツルメンツ社製のC62x
/C67xは、データ・パス毎、実行パケット毎に1つの機
能ユニットのみが、反対側レジスタ・ファイルからオペ
ランドを獲得する。
の交叉パス、1Xおよび2Xのみが存在する。従って、
各データ・パスの反対側レジスタ・ファイルからサイク
ル毎に1つのソース読み取りか、またはサイクル毎に全
部で2つの交叉パスソース読み取りに制限される。好適
に、1つの側の複数のユニットは同一交叉パス・ソース
を同時に読みとることができる。従って、1つの側の交
叉パス・オペランドは任意の1つ、実行パケット内の複
数またはその側の全ての機能ユニットで使用される。テ
キサス州ダラスのテキサスインスツルメンツ社製のC62x
/C67xは、データ・パス毎、実行パケット毎に1つの機
能ユニットのみが、反対側レジスタ・ファイルからオペ
ランドを獲得する。
【0032】遅延クロック・サイクルが、先行サイクル
で更新されたレジスタの読み取りを交叉パス経由で試み
る際には常に導入される。これは交叉パス・ストール
(stall)として知られている。このストールはハード
ウェアにより自動的に挿入される;NOP命令は不要で
ある。しかしながら、読みとられるレジスタがLDx命
令でロードされたデータの宛先である場合は、ストール
は導入されない。
で更新されたレジスタの読み取りを交叉パス経由で試み
る際には常に導入される。これは交叉パス・ストール
(stall)として知られている。このストールはハード
ウェアにより自動的に挿入される;NOP命令は不要で
ある。しかしながら、読みとられるレジスタがLDx命
令でロードされたデータの宛先である場合は、ストール
は導入されない。
【0033】(メモリ、ロードおよびストア・パス)プ
ロセッサ10は倍ワード・ロードおよびストアをサポー
トする。メモリ用のデータをレジスタ・ファイルにロー
ドするために4本の32ビット・パスが存在する。A側
では、LD1aが32LSBへのロード・パスである;
LD1bが32MSBへのロード・パスである。B側で
は、LD2aが32LSBへのロード・パスである;L
D2bが32MSBへのロード・パスである。各々のレ
ジスタ・ファイルからメモリへレジスタ値をストアする
ために4本の32ビット・パスが存在する。ST1aは
A側の32LSBへの書き込みパスであり;ST1bが
A側の32MSBへの書き込みパスである。B側では、
ST2aが32LSBへの書き込みパスであり;ST2
bが32MSBへの書き込みパスである。
ロセッサ10は倍ワード・ロードおよびストアをサポー
トする。メモリ用のデータをレジスタ・ファイルにロー
ドするために4本の32ビット・パスが存在する。A側
では、LD1aが32LSBへのロード・パスである;
LD1bが32MSBへのロード・パスである。B側で
は、LD2aが32LSBへのロード・パスである;L
D2bが32MSBへのロード・パスである。各々のレ
ジスタ・ファイルからメモリへレジスタ値をストアする
ために4本の32ビット・パスが存在する。ST1aは
A側の32LSBへの書き込みパスであり;ST1bが
A側の32MSBへの書き込みパスである。B側では、
ST2aが32LSBへの書き込みパスであり;ST2
bが32MSBへの書き込みパスである。
【0034】ロングおよび倍ワード・オペランド用ポー
トのいくつかは機能ユニットの間で共有される。これは
ロングまたは倍ワード演算が同一実行パケット内のデー
タ・パス上にスケジュールされなければならないという
制約をもたらす。
トのいくつかは機能ユニットの間で共有される。これは
ロングまたは倍ワード演算が同一実行パケット内のデー
タ・パス上にスケジュールされなければならないという
制約をもたらす。
【0035】図2はAユニット・グループ78の最上位
ブロック図であり、これはDSPコア部44の算術およ
び論理演算の一部をサポートする。Aユニット・グルー
プ78はA加算ユニット128、Aゼロ検出ユニット1
30、Aビット検出ユニット132、A R/Z論理ユ
ニット134、Aパック/反復ユニット136、Aシャ
ッフル・ユニット138、A汎用論理ブロック・ユニッ
ト140、およびA割り算/シード・ユニット142を
含む多数の機能ユニットで要求される種々の演算型式を
取り扱う。機能副ユニットの分割はAユニット・グルー
プ78の機能要求に基づき、低電力を実現しつつ最大性
能を目指して行われる。入力オペランドに対して2つの
入力マルチプレクサ144および146が存在し、共に
オペランドが5つのソースの1つから転送されるように
している。両方のマルチプレクサはA,CとS結果バス
からの3本のホット・パス・ソース、並びに一次データ
・パス内のレジスタ・ファイル76からの直接入力を有
する。加えて、src1マルチプレクサ144は復号ユ
ニット62から定数データを通過させ、一方src2マ
ルチプレクサ146は反対側データ・パスからのオペラ
ンド用のパスを提供する。結果マルチプレクサ148は
4つのレベルに分割される。クロック・サイクル内で早
く完了する単純演算は、クリティカル最終出力マルチプ
レクサへのローディングを削減するために事前マルチプ
レクスされる。Aユニット・グループ78はまた制御レ
ジスタ演算143を処理する責任を有する。ハードウェ
アは不要であるが、これらの演算はデータを回送するた
めにAユニット・グループ78の読み取りおよび書き込
みポートを借用する。src2読み取りポートがデータ
をレジスタ・ファイル76から有効構成レジスタに回送
するために使用される。同様に、書き込みポートは構成
レジスタ・データをレジスタ・ファイル76に回送する
ために借用される。
ブロック図であり、これはDSPコア部44の算術およ
び論理演算の一部をサポートする。Aユニット・グルー
プ78はA加算ユニット128、Aゼロ検出ユニット1
30、Aビット検出ユニット132、A R/Z論理ユ
ニット134、Aパック/反復ユニット136、Aシャ
ッフル・ユニット138、A汎用論理ブロック・ユニッ
ト140、およびA割り算/シード・ユニット142を
含む多数の機能ユニットで要求される種々の演算型式を
取り扱う。機能副ユニットの分割はAユニット・グルー
プ78の機能要求に基づき、低電力を実現しつつ最大性
能を目指して行われる。入力オペランドに対して2つの
入力マルチプレクサ144および146が存在し、共に
オペランドが5つのソースの1つから転送されるように
している。両方のマルチプレクサはA,CとS結果バス
からの3本のホット・パス・ソース、並びに一次データ
・パス内のレジスタ・ファイル76からの直接入力を有
する。加えて、src1マルチプレクサ144は復号ユ
ニット62から定数データを通過させ、一方src2マ
ルチプレクサ146は反対側データ・パスからのオペラ
ンド用のパスを提供する。結果マルチプレクサ148は
4つのレベルに分割される。クロック・サイクル内で早
く完了する単純演算は、クリティカル最終出力マルチプ
レクサへのローディングを削減するために事前マルチプ
レクスされる。Aユニット・グループ78はまた制御レ
ジスタ演算143を処理する責任を有する。ハードウェ
アは不要であるが、これらの演算はデータを回送するた
めにAユニット・グループ78の読み取りおよび書き込
みポートを借用する。src2読み取りポートがデータ
をレジスタ・ファイル76から有効構成レジスタに回送
するために使用される。同様に、書き込みポートは構成
レジスタ・データをレジスタ・ファイル76に回送する
ために借用される。
【0036】図3はSユニット・グループ82の最上位
ブロック図であり、これはシフト、回送、およびブール
演算を最適化するものであって、もちろん加算および減
算演算の制限された組に対してはハードウェアが利用可
能である。Sユニット・グループ82はほとんどのハー
ドウェアにおいて独自のものであり、直接プログラマに
より制御される。Sユニット・グループ82はAおよび
Cユニット・グループよりも更に2つの読み取りポート
を有し、従って、入力マルチプレクサ144,146,
161および163を通して選択された最大4つのソー
ス・レジスタ上での演算命令を可能とする。AおよびC
ユニット・グループと同様、一次実行機能は設計の実行
サイクル内で実施される。Sユニット・グループ82は
2つの主要機能ユニットを有する;32ビット加算ユニ
ット156、および回転/ブール代数ユニット165で
ある。回転/ブール代数ユニット165はS回転器ユニ
ット158、Sマスク生成ユニット160、Sビット複
写ユニット167、Sアンパック(unpack)/符号拡張
ユニット169、およびS論理ユニット162を含む。
S回転器ユニット158、Sマスク生成ユニット16
0、Sビット複写ユニット167、およびSアンパック
/符号拡張ユニット169からの出力はS論理ユニット
162に送られる。回転/ブール代数ユニット165を
構成する種々の機能ユニットを組み合わせて使用し、非
常に複雑なブール演算を処理することの可能なSユニッ
ト・グループ82を形成する。最後に、結果マルチプレ
クサ148は2つ主要機能ユニット、S加算ユニット1
56と回転/ブール代数ユニット165からの1つの出
力を選択して、レジスタ・ファイル76へ送る。
ブロック図であり、これはシフト、回送、およびブール
演算を最適化するものであって、もちろん加算および減
算演算の制限された組に対してはハードウェアが利用可
能である。Sユニット・グループ82はほとんどのハー
ドウェアにおいて独自のものであり、直接プログラマに
より制御される。Sユニット・グループ82はAおよび
Cユニット・グループよりも更に2つの読み取りポート
を有し、従って、入力マルチプレクサ144,146,
161および163を通して選択された最大4つのソー
ス・レジスタ上での演算命令を可能とする。AおよびC
ユニット・グループと同様、一次実行機能は設計の実行
サイクル内で実施される。Sユニット・グループ82は
2つの主要機能ユニットを有する;32ビット加算ユニ
ット156、および回転/ブール代数ユニット165で
ある。回転/ブール代数ユニット165はS回転器ユニ
ット158、Sマスク生成ユニット160、Sビット複
写ユニット167、Sアンパック(unpack)/符号拡張
ユニット169、およびS論理ユニット162を含む。
S回転器ユニット158、Sマスク生成ユニット16
0、Sビット複写ユニット167、およびSアンパック
/符号拡張ユニット169からの出力はS論理ユニット
162に送られる。回転/ブール代数ユニット165を
構成する種々の機能ユニットを組み合わせて使用し、非
常に複雑なブール演算を処理することの可能なSユニッ
ト・グループ82を形成する。最後に、結果マルチプレ
クサ148は2つ主要機能ユニット、S加算ユニット1
56と回転/ブール代数ユニット165からの1つの出
力を選択して、レジスタ・ファイル76へ送る。
【0037】データ・フロー強化には、種々のシフト演
算を含む命令セット効率増加が含まれる。BNOP命令
は、分岐の遅延スロットを満たすためにNOPが必要と
される際に、分岐命令を実行する際に必要な命令数を削
減する助けとなる。パイプラインの不連続性は種々の原
因で起こり得て、例えばメモリ・ストール、STP命
令、および多重サイクルNOP等がある。NOP計数命
令はNOP用の計数サイクルを提供する。計数値が2以
上の場合、NOPは多重サイクルNOPである。NOP
2は、例えばその中にそれが含まれている実行パケット
内の命令に対する追加遅延スロット、および全ての先行
の実行パケットに対する追加遅延スロットを充たす。従
って、NOP2がMPY命令と並列の場合、MPYの結
果は次の実行パケット内の命令で使用することが可能と
なる。多重サイクルNOPがNOPをパイプラインの中
に送り出している間に、分岐の遅延スロットが完了する
場合、分岐は多重サイクルNOPをオーバーライドし、
分岐目標は5遅延スロットの後に実行を開始する。本発
明の更に別の実施例では、実行パケット境界に制約は無
く、従って不必要なNOP命令を追加してフェッチ・パ
ケットを膨らませる必要が取り除かれる。
算を含む命令セット効率増加が含まれる。BNOP命令
は、分岐の遅延スロットを満たすためにNOPが必要と
される際に、分岐命令を実行する際に必要な命令数を削
減する助けとなる。パイプラインの不連続性は種々の原
因で起こり得て、例えばメモリ・ストール、STP命
令、および多重サイクルNOP等がある。NOP計数命
令はNOP用の計数サイクルを提供する。計数値が2以
上の場合、NOPは多重サイクルNOPである。NOP
2は、例えばその中にそれが含まれている実行パケット
内の命令に対する追加遅延スロット、および全ての先行
の実行パケットに対する追加遅延スロットを充たす。従
って、NOP2がMPY命令と並列の場合、MPYの結
果は次の実行パケット内の命令で使用することが可能と
なる。多重サイクルNOPがNOPをパイプラインの中
に送り出している間に、分岐の遅延スロットが完了する
場合、分岐は多重サイクルNOPをオーバーライドし、
分岐目標は5遅延スロットの後に実行を開始する。本発
明の更に別の実施例では、実行パケット境界に制約は無
く、従って不必要なNOP命令を追加してフェッチ・パ
ケットを膨らませる必要が取り除かれる。
【0038】本発明に基づく総コード・サイズを削減す
るための方法は、例えばロード命令(LD)の様な定義
命令と、算術命令(例えばADD)の様な使用命令との
間の待ち時間を決定するステップを含み、パイプライン
化された演算を実行する。少なくとも1つの中間命令が
定義命令と使用命令との間で識別される。以下の例1c
参照。NOPフィールドが少なくとも1つの定義および
使用命令の中に挿入される。例えば、命令の順序はNO
Pの配置によって異なるはずである: 第1順序 第2順序 inst.1 inst.1 nop.4 inst.2 inst.2 nop.4 inst.3 inst.3 NOPフィールドは命令の任意の点に挿入出来るが、例
えばLD*a0,a5,4の様な命令の終わりに挿入するのが簡便
である。この例で「4」がNOPフィールドである。
るための方法は、例えばロード命令(LD)の様な定義
命令と、算術命令(例えばADD)の様な使用命令との
間の待ち時間を決定するステップを含み、パイプライン
化された演算を実行する。少なくとも1つの中間命令が
定義命令と使用命令との間で識別される。以下の例1c
参照。NOPフィールドが少なくとも1つの定義および
使用命令の中に挿入される。例えば、命令の順序はNO
Pの配置によって異なるはずである: 第1順序 第2順序 inst.1 inst.1 nop.4 inst.2 inst.2 nop.4 inst.3 inst.3 NOPフィールドは命令の任意の点に挿入出来るが、例
えばLD*a0,a5,4の様な命令の終わりに挿入するのが簡便
である。この例で「4」がNOPフィールドである。
【0039】本発明の方法並びに装置はロードまたは分
岐命令と共に使用されているが、分岐命令は追加NOP
フィールドを受け取る更なる余地を有する傾向にある。
従って、分岐中に総コード・サイズを削減するための方
法において、この方法は第1パイプライン演算と第2パ
イプライン演算との間のシフト中の待ち時間を決定する
ためのステップを含むはずである。この待ち時間は分岐
命令と第1および第2パイプライン演算を識別すること
によって決定される。更に、この方法は分岐命令の終わ
りにNOPフィールド、例えばBラベル、5を加えるこ
とで完結する。1つのコード中の待ち時間を決定する際
に、そのコードは手動でまたは自動的にコードのセクシ
ョンを、例えば待ち時間または遅延を必要とする分岐演
算として決めるために検索されるであろう。これに代わ
って、特定プログラムが走ってそのプログラムの中に待
ち時間が有るか否かが決定される場合もある。
岐命令と共に使用されているが、分岐命令は追加NOP
フィールドを受け取る更なる余地を有する傾向にある。
従って、分岐中に総コード・サイズを削減するための方
法において、この方法は第1パイプライン演算と第2パ
イプライン演算との間のシフト中の待ち時間を決定する
ためのステップを含むはずである。この待ち時間は分岐
命令と第1および第2パイプライン演算を識別すること
によって決定される。更に、この方法は分岐命令の終わ
りにNOPフィールド、例えばBラベル、5を加えるこ
とで完結する。1つのコード中の待ち時間を決定する際
に、そのコードは手動でまたは自動的にコードのセクシ
ョンを、例えば待ち時間または遅延を必要とする分岐演
算として決めるために検索されるであろう。これに代わ
って、特定プログラムが走ってそのプログラムの中に待
ち時間が有るか否かが決定される場合もある。
【0040】本発明の結果として総コード・サイズの削
減を実現するための装置は、ディジタル信号処理装置
(DSP)、例えばテキサス州、ダラスのテキサスイン
スツルメンツ社製のc6xシリーズDSPを含む。このD
SPは、与えられたパイプライン演算を実行するため
に、少なくとも1つの定義命令および待ち時間で分離さ
れている少なくとも1つの使用命令で符号化されてい
る。先に示されているように、NOPフィールドは少な
くとも1つの中間命令の終わりに添付されている。
減を実現するための装置は、ディジタル信号処理装置
(DSP)、例えばテキサス州、ダラスのテキサスイン
スツルメンツ社製のc6xシリーズDSPを含む。このD
SPは、与えられたパイプライン演算を実行するため
に、少なくとも1つの定義命令および待ち時間で分離さ
れている少なくとも1つの使用命令で符号化されてい
る。先に示されているように、NOPフィールドは少な
くとも1つの中間命令の終わりに添付されている。
【0041】最後に、分岐中に総コード・サイズを削減
するための装置はまた、第1パイプライン演算と第2パ
イプライン演算の間でシフトするための少なくとも1つ
の分岐命令を含むプロセッサを含む。分岐命令と第1お
よび第2パイプライン演算は、分岐命令と分岐発生との
間の第1パイプライン演算を終了させるために必要な待
ち時間を決定する。この装置において、NOPフィール
ドは分岐命令の終わりに添付される。此処で説明されて
いる装置において、演算および命令はソフトウェア、ハ
ードウェア構造またはそれらの組み合わせで実行され
る。
するための装置はまた、第1パイプライン演算と第2パ
イプライン演算の間でシフトするための少なくとも1つ
の分岐命令を含むプロセッサを含む。分岐命令と第1お
よび第2パイプライン演算は、分岐命令と分岐発生との
間の第1パイプライン演算を終了させるために必要な待
ち時間を決定する。この装置において、NOPフィール
ドは分岐命令の終わりに添付される。此処で説明されて
いる装置において、演算および命令はソフトウェア、ハ
ードウェア構造またはそれらの組み合わせで実行され
る。
【0042】本発明は更に下記の例を参照することによ
り更に明らかとなろう、これは本発明の使用を単に例示
することだけを意図している。下記の例で示されるよう
に、NOP演算は命令の内部またはその上に、NOPが
待ち時間を必要とする命令と並行して発せられる演算と
なるように符号化される。先に提示した例を参照して、
下記の例は本発明に基づいて書き直されたコードを示
す: 例1b: LD*a0,a5,4 % 「4」(すなわち4サイクルまたは遅延スロット )はNOPフィールドである。 ADDa5,6,a7 % a5 値が利用可能 例2b: B label,5 % 「5」(すなわち5サイクルまたは遅延スロット )はNOPフィールドである。 ; % 分岐発生。 これらの例から分かるように、NOPフィールドは0か
ら命令の最大待ち時間の範囲の命令オペランドである。
それにも係わらず、その他の範囲も適用可能であり、結
果として更に演算コード符号化空間を節約することにな
る。別の例が以下に例1bのLD命令に対して提供され
ており、ここで最大待ち時間より小さな値が使用されて
いるが、それはその他の命令がその命令の遅延スロット
の中にスケジュールされるからである。 例1c: LD*a0,a5,3 % 「3」(すなわち3サイクルまたは遅延スロット )はNOPフィールドである。 ADD a3,5,a3 % 新たな命令が第4遅延スロットの中に挿入される 。 ADD a3,6,a7 % a5 値が利用可能。
り更に明らかとなろう、これは本発明の使用を単に例示
することだけを意図している。下記の例で示されるよう
に、NOP演算は命令の内部またはその上に、NOPが
待ち時間を必要とする命令と並行して発せられる演算と
なるように符号化される。先に提示した例を参照して、
下記の例は本発明に基づいて書き直されたコードを示
す: 例1b: LD*a0,a5,4 % 「4」(すなわち4サイクルまたは遅延スロット )はNOPフィールドである。 ADDa5,6,a7 % a5 値が利用可能 例2b: B label,5 % 「5」(すなわち5サイクルまたは遅延スロット )はNOPフィールドである。 ; % 分岐発生。 これらの例から分かるように、NOPフィールドは0か
ら命令の最大待ち時間の範囲の命令オペランドである。
それにも係わらず、その他の範囲も適用可能であり、結
果として更に演算コード符号化空間を節約することにな
る。別の例が以下に例1bのLD命令に対して提供され
ており、ここで最大待ち時間より小さな値が使用されて
いるが、それはその他の命令がその命令の遅延スロット
の中にスケジュールされるからである。 例1c: LD*a0,a5,3 % 「3」(すなわち3サイクルまたは遅延スロット )はNOPフィールドである。 ADD a3,5,a3 % 新たな命令が第4遅延スロットの中に挿入される 。 ADD a3,6,a7 % a5 値が利用可能。
【0043】本発明の更に別の実施例において、待ち時
間がNOPを具備した相対分岐、すなわちBNOPを実
行するための分岐命令の中に識別される。演算コードま
たは演算コードは、演算の個々の型式と中央処理ユニッ
ト(CPU)へのオペランドの組み合わせを記述する機
械コードの第1バイトである。例えば、BNOPの演算
コードは、開始ソース(src2)終了ソース(src
1)の識別子を具備したBNOP(.unit)コード
の組み合わせで、例えば、.unit,.S1,.S2 として形成さ
れるはずである。このフォーマットの中で、src2演
算コードマップ・フィールドはscst12オペランド
型ユニットとして使用され、src2で指定される12
ビット符号付き定数を用いたNOPを具備した相対分岐
を実行する。この定数は2ビット左にシフトされ、続い
てBNOP命令を含むフェッチ・パケットの第1命令の
アドレスに加えられる。図4aを参照すると、32ビッ
ト演算コードの例が図示されており、12ビット符号付
き定数フィールドscst12であるsrc2と3ビット符号
無し定数フィールドusct3であるsrc1とに関連する
BNOP命令の組み込みを示している。
間がNOPを具備した相対分岐、すなわちBNOPを実
行するための分岐命令の中に識別される。演算コードま
たは演算コードは、演算の個々の型式と中央処理ユニッ
ト(CPU)へのオペランドの組み合わせを記述する機
械コードの第1バイトである。例えば、BNOPの演算
コードは、開始ソース(src2)終了ソース(src
1)の識別子を具備したBNOP(.unit)コード
の組み合わせで、例えば、.unit,.S1,.S2 として形成さ
れるはずである。このフォーマットの中で、src2演
算コードマップ・フィールドはscst12オペランド
型ユニットとして使用され、src2で指定される12
ビット符号付き定数を用いたNOPを具備した相対分岐
を実行する。この定数は2ビット左にシフトされ、続い
てBNOP命令を含むフェッチ・パケットの第1命令の
アドレスに加えられる。図4aを参照すると、32ビッ
ト演算コードの例が図示されており、12ビット符号付
き定数フィールドscst12であるsrc2と3ビット符号
無し定数フィールドusct3であるsrc1とに関連する
BNOP命令の組み込みを示している。
【0044】結果はプログラム・フェッチ計数器(PF
C)の中に置かれる。フェッチとはその間に次の命令が
メモリからリトリーブされるコンピュータ・サイクルの
部分である。フェッチ・パケットは最大8命令までを含
むプログラム・データのブロックである。
C)の中に置かれる。フェッチとはその間に次の命令が
メモリからリトリーブされるコンピュータ・サイクルの
部分である。フェッチ・パケットは最大8命令までを含
むプログラム・データのブロックである。
【0045】src1と示されている3ビット符号無し
定数は、挿入されるべき遅延スロット疑似NOPの数、
例えばゼロ(0)から(5)を提供する。従って、例え
ばsrc1=0では遅延スロットNOPは挿入されな
い。結果として、この命令は分岐の遅延スロットを充た
すためにNOPが必要とされる場合に、分岐演算を実行
するために必要な命令数を削減する。
定数は、挿入されるべき遅延スロット疑似NOPの数、
例えばゼロ(0)から(5)を提供する。従って、例え
ばsrc1=0では遅延スロットNOPは挿入されな
い。結果として、この命令は分岐の遅延スロットを充た
すためにNOPが必要とされる場合に、分岐演算を実行
するために必要な命令数を削減する。
【0046】下記はBNOPを実行するために必要な命
令数のその様な削減例である。予め、この機能を実行す
るためのコードは下記の通りである:
令数のその様な削減例である。予め、この機能を実行す
るためのコードは下記の通りである:
【0047】本発明によれば、この命令は次のように置
き換えられる: 此処でNは挿入されるべき遅延スロットNOPSの数で
ある。更に、BNOP命令は記述されるとしても、記述
条件は分岐が行われるか否かを制御するが、NOPの挿
入は制御しない。その結果、BNOP命令を実現する際
には、Nで指定されたNOP数が記述条件に関係なく挿
入される。
き換えられる: 此処でNは挿入されるべき遅延スロットNOPSの数で
ある。更に、BNOP命令は記述されるとしても、記述
条件は分岐が行われるか否かを制御するが、NOPの挿
入は制御しない。その結果、BNOP命令を実現する際
には、Nで指定されたNOP数が記述条件に関係なく挿
入される。
【0048】サイクル毎には唯1つの分岐命令のみが実
行される。2つの分岐条件制御が同一実行パケットの中
に有る場合は、すなわち1つの命令ブロックかせ並列に
実行される場合で、両方とも受容される場合、プログラ
ムの振る舞いは未定義である。更に、記述されたBNO
P命令が5よりも大きなNOP計数値と共に使用される
場合、テキサス州、ダラスのテキサスインスツルメンツ
社製C64Xプロセッサは、記述条件が偽の時のみ、必要と
される遅延スロットの総数を挿入するはずである。例え
ば、下記の命令セットは7サイクルのNOPをBNOP
命令の中に挿入する: 従って、分岐は行われず、7サイクルの疑似NOPが挿
入される。逆に、記述されたBNOP命令が5より大き
なNOP計数値と共に使用され、記述された条件が真の
場合、分岐が実行され多重サイクルNOPは同時に終了
するはずである。例えば、下記の命令セットは唯5サイ
クルの疑似NOPのみをBNOP命令の中に挿入する: 従って分岐が行われ、5サイクルのNOPが効果的に挿
入される。
行される。2つの分岐条件制御が同一実行パケットの中
に有る場合は、すなわち1つの命令ブロックかせ並列に
実行される場合で、両方とも受容される場合、プログラ
ムの振る舞いは未定義である。更に、記述されたBNO
P命令が5よりも大きなNOP計数値と共に使用される
場合、テキサス州、ダラスのテキサスインスツルメンツ
社製C64Xプロセッサは、記述条件が偽の時のみ、必要と
される遅延スロットの総数を挿入するはずである。例え
ば、下記の命令セットは7サイクルのNOPをBNOP
命令の中に挿入する: 従って、分岐は行われず、7サイクルの疑似NOPが挿
入される。逆に、記述されたBNOP命令が5より大き
なNOP計数値と共に使用され、記述された条件が真の
場合、分岐が実行され多重サイクルNOPは同時に終了
するはずである。例えば、下記の命令セットは唯5サイ
クルの疑似NOPのみをBNOP命令の中に挿入する: 従って分岐が行われ、5サイクルのNOPが効果的に挿
入される。
【0049】これは次のように実行される: 次に図4bを参照すると、この分岐命令を実行するため
のパイプライン形式が図示されている。特に、この図は
読み取り(src2)と書き込み(PC)ステップおよ
び対象命令の間の関係を図示しており、ここで分岐はP
CE1で行われる。
のパイプライン形式が図示されている。特に、この図は
読み取り(src2)と書き込み(PC)ステップおよ
び対象命令の間の関係を図示しており、ここで分岐はP
CE1で行われる。
【0050】1例として、命令:BNOP .S1 30h,
2; は対象命令PCE内の或る情報を呼び出して、分岐
が行われた後にPCに移動させる。従って、下記は遅延
移動の前後でのレジスタ状態を示す。 命令前 分岐実施後 PCE1 0100 0500h PCE1 [ ] PC[ ] PC 0100 0500h
2; は対象命令PCE内の或る情報を呼び出して、分岐
が行われた後にPCに移動させる。従って、下記は遅延
移動の前後でのレジスタ状態を示す。 命令前 分岐実施後 PCE1 0100 0500h PCE1 [ ] PC[ ] PC 0100 0500h
【0051】本発明の更に別の実施例において、演算コ
ードまたは演算コードは演算の特定の型および中央処理
ユニット(CPU)へのオペランドの組み合わせを記述
する機械コードの第1バイトである。例えば、BNOP
命令用の演算コードは再び、開始ソース(src2)終
了ソース(src1)の識別子を具備したBNOP(.
unit)コードの組み合わせで、例えば、.unit,.S
1,.S2 として形成されるはずである。このフォーマット
の中で、src2 演算コードマップ・フィールドはN
OPを具備した絶対分岐を実行するためのxunitオ
ペランド型ユニットとして使用される。src2の中で
特定されるレジスタが先に説明したようにプログラム・
フェッチ計数器(PEC)の中に配置される。src1
の中で特定されている3ビット符号無し定数は、挿入さ
れるべき遅延スロットNOPの数、例えばゼロ(0)か
ら(5)を提供する。従って、例えばsrc1=0では
遅延スロットNOPは挿入されない。結果として、この
命令もまた分岐の遅延スロットを充たすためにNOPが
必要とされる場合に、分岐演算を実行するために必要な
命令の数を削減する。図5aを参照すると、32ビット
演算コードの例が図示されており、絶対分岐アドレスを
提供するためのレジスタを選択するsrc2と3ビット
符号無し定数フィールドusct3であるsrc1に関連す
るBNOPの結合を示している。
ードまたは演算コードは演算の特定の型および中央処理
ユニット(CPU)へのオペランドの組み合わせを記述
する機械コードの第1バイトである。例えば、BNOP
命令用の演算コードは再び、開始ソース(src2)終
了ソース(src1)の識別子を具備したBNOP(.
unit)コードの組み合わせで、例えば、.unit,.S
1,.S2 として形成されるはずである。このフォーマット
の中で、src2 演算コードマップ・フィールドはN
OPを具備した絶対分岐を実行するためのxunitオ
ペランド型ユニットとして使用される。src2の中で
特定されるレジスタが先に説明したようにプログラム・
フェッチ計数器(PEC)の中に配置される。src1
の中で特定されている3ビット符号無し定数は、挿入さ
れるべき遅延スロットNOPの数、例えばゼロ(0)か
ら(5)を提供する。従って、例えばsrc1=0では
遅延スロットNOPは挿入されない。結果として、この
命令もまた分岐の遅延スロットを充たすためにNOPが
必要とされる場合に、分岐演算を実行するために必要な
命令の数を削減する。図5aを参照すると、32ビット
演算コードの例が図示されており、絶対分岐アドレスを
提供するためのレジスタを選択するsrc2と3ビット
符号無し定数フィールドusct3であるsrc1に関連す
るBNOPの結合を示している。
【0052】下記はBNOPを実行するために必要な命
令数のその様な削減の例である。予め、この機能を実行
するためのコードは下記の通りである: B .S2 B3 NOP N
令数のその様な削減の例である。予め、この機能を実行
するためのコードは下記の通りである: B .S2 B3 NOP N
【0053】本発明に基づけば、この命令は次のように
置き換えられる: B .S2 B3,N ここでNは挿入されるべき遅延スロット疑似NOPSの
数である。更に、このBNOP命令は.S2機能ユニット
の上にのみ実行されるが、src2は必要に応じて交叉
パスを使用してレジスタ・ファイルから読みとることも
出来る。
置き換えられる: B .S2 B3,N ここでNは挿入されるべき遅延スロット疑似NOPSの
数である。更に、このBNOP命令は.S2機能ユニット
の上にのみ実行されるが、src2は必要に応じて交叉
パスを使用してレジスタ・ファイルから読みとることも
出来る。
【0054】BNOP命令は再び記述される。記述条件
は分岐が行われるか否かの制御は行うが、この条件はN
OPの挿入には影響を与えない。BNOPは常に、記述
条件に無関係にNで指定された疑似NOPの個数を挿入
する。
は分岐が行われるか否かの制御は行うが、この条件はN
OPの挿入には影響を与えない。BNOPは常に、記述
条件に無関係にNで指定された疑似NOPの個数を挿入
する。
【0055】先に説明したように、1つのサイクルでは
唯1つの分岐命令のみが実行出来る。2つの分岐条件制
御が同一実行パケット内に存在し、共に受容された場
合、プログラムの挙動は未定義である。更に、記述され
たBNOP命令が5より大きなNOP計数値と共に使用
された場合は、テキサス州、ダラスのテキサスインスツ
ルメンツ社製C64Xプロセッサは、記述条件が偽の時のみ
必要な遅延スロットの総数を挿入するはずである。例え
ば、下記の命令セットは7サイクルのNOPをBNOP
命令の中に挿入する: 従って、分岐は行われず7サイクルのNOPが挿入され
る。逆に、記述されたBNOP命令が5より大きなNO
P計数値と共に使用され、記述条件が真の場合、分岐は
行われ多重サイクルNOPは同時に終了される。例え
ば、下記の命令セットは5サイクルのみのNOPをBN
OP命令の中に挿入する: 従って、分岐は行われ5サイクルのNOPが効果的に挿
入される。
唯1つの分岐命令のみが実行出来る。2つの分岐条件制
御が同一実行パケット内に存在し、共に受容された場
合、プログラムの挙動は未定義である。更に、記述され
たBNOP命令が5より大きなNOP計数値と共に使用
された場合は、テキサス州、ダラスのテキサスインスツ
ルメンツ社製C64Xプロセッサは、記述条件が偽の時のみ
必要な遅延スロットの総数を挿入するはずである。例え
ば、下記の命令セットは7サイクルのNOPをBNOP
命令の中に挿入する: 従って、分岐は行われず7サイクルのNOPが挿入され
る。逆に、記述されたBNOP命令が5より大きなNO
P計数値と共に使用され、記述条件が真の場合、分岐は
行われ多重サイクルNOPは同時に終了される。例え
ば、下記の命令セットは5サイクルのみのNOPをBN
OP命令の中に挿入する: 従って、分岐は行われ5サイクルのNOPが効果的に挿
入される。
【0056】これは下記のように実行される: 図5bを参照すると、この分岐命令を実施するためのパ
イプライン・フォーマットが図示されている。特に、こ
の図は読み取り(src2)と書き込み(PC)ステッ
プおよび対象命令との間の関係を図示しており、分岐は
PCE1で行われる。
イプライン・フォーマットが図示されている。特に、こ
の図は読み取り(src2)と書き込み(PC)ステッ
プおよび対象命令との間の関係を図示しており、分岐は
PCE1で行われる。
【0057】1例として、命令:BNOP .S2 A5,
2;は分岐が行われた後にPCに移動される、対象
命令PCE内の或る情報を呼び出す。従って、下記は遅
延移動前後のレジスタ状態を示す。 命令前 分岐実施後 PCE1 0010 0c00h PCE1 [ ] PC [ ] PC 0100 f000h A5 0100 f000h A5 0100 f000h
2;は分岐が行われた後にPCに移動される、対象
命令PCE内の或る情報を呼び出す。従って、下記は遅
延移動前後のレジスタ状態を示す。 命令前 分岐実施後 PCE1 0010 0c00h PCE1 [ ] PC [ ] PC 0100 f000h A5 0100 f000h A5 0100 f000h
【0058】従って、むき出しのパイプラインを有する
プロセッサ内の総コード・サイズを削減するための方法
は、ロード命令と使用命令との間の待ち時間を決定し、
NOPフィールドを定義または使用命令の中に挿入する
ステップを含む。ロード命令の中に挿入されると、NO
Pフィールドはロード命令に続く待ち時間を定める。使
用命令の中に挿入されると、NOPフィールドは使用命
令に先行する待ち時間を定める。加えて、分岐中の総コ
ード・サイズを削減するための方法は、命令ストリーム
内の第1点から第2点へ分岐を開始するための分岐命令
に続く待ち時間を決定するステップと、NOPフィール
ドを分岐命令の中に挿入するステップとを含む。更に、
本発明に基づく方法はNOPが後に続く遅延効果命令
を、ロードまたは分岐命令が1つのコードの中に入るよ
うに配置するステップと;そのコードからNOPを除去
するステップと;NOPフィールドを遅延された効果命
令の中に挿入するステップとを含む。本発明に基づく装
置は遅延効果命令を有するプロセッサを含み、此処で遅
延効果命令は疑似NOP命令で充たされるべき遅延スロ
ットの数(N)を特定するNOPフィールドを含む。
プロセッサ内の総コード・サイズを削減するための方法
は、ロード命令と使用命令との間の待ち時間を決定し、
NOPフィールドを定義または使用命令の中に挿入する
ステップを含む。ロード命令の中に挿入されると、NO
Pフィールドはロード命令に続く待ち時間を定める。使
用命令の中に挿入されると、NOPフィールドは使用命
令に先行する待ち時間を定める。加えて、分岐中の総コ
ード・サイズを削減するための方法は、命令ストリーム
内の第1点から第2点へ分岐を開始するための分岐命令
に続く待ち時間を決定するステップと、NOPフィール
ドを分岐命令の中に挿入するステップとを含む。更に、
本発明に基づく方法はNOPが後に続く遅延効果命令
を、ロードまたは分岐命令が1つのコードの中に入るよ
うに配置するステップと;そのコードからNOPを除去
するステップと;NOPフィールドを遅延された効果命
令の中に挿入するステップとを含む。本発明に基づく装
置は遅延効果命令を有するプロセッサを含み、此処で遅
延効果命令は疑似NOP命令で充たされるべき遅延スロ
ットの数(N)を特定するNOPフィールドを含む。
【0059】本発明を好適な実施例を参照して説明して
きたが、先の説明並びに例は本発明の単なる例を意図し
たものである。本発明の真の範囲並びに精神は先の説明
並びに例で制限されることを意図したものでは無く、添
付の特許請求の範囲で規定されることを意図している。
請求された発明の構成要素に対する変更および修正は、
この明細書の検討または此処に開示されている発明を実
施することにより、当業者にとって明らかであろう。
きたが、先の説明並びに例は本発明の単なる例を意図し
たものである。本発明の真の範囲並びに精神は先の説明
並びに例で制限されることを意図したものでは無く、添
付の特許請求の範囲で規定されることを意図している。
請求された発明の構成要素に対する変更および修正は、
この明細書の検討または此処に開示されている発明を実
施することにより、当業者にとって明らかであろう。
【0060】以上の説明に関して更に以下の項を開示す
る。 (1)演算コードフィールドと疑似NOPフィールドと
を含む遅延効果命令を有するマイクロプロセッサ動作方
法であって:第1演算コードフィールドと第1疑似NO
Pフィールドとを有する第1遅延効果命令をフェッチ
し;第1遅延効果命令を実行し;第2命令をフェッチ
し;第2命令を実行し、該第1遅延効果命令を実行する
ステップが:第1演算コードフィールドに応答して1つ
の演算を実行し;第2命令を実行する前に、第1疑似N
OPフィールド内の値に相当する選択された遅延スロッ
トの数だけスキップするステップを含む、前記方法。
る。 (1)演算コードフィールドと疑似NOPフィールドと
を含む遅延効果命令を有するマイクロプロセッサ動作方
法であって:第1演算コードフィールドと第1疑似NO
Pフィールドとを有する第1遅延効果命令をフェッチ
し;第1遅延効果命令を実行し;第2命令をフェッチ
し;第2命令を実行し、該第1遅延効果命令を実行する
ステップが:第1演算コードフィールドに応答して1つ
の演算を実行し;第2命令を実行する前に、第1疑似N
OPフィールド内の値に相当する選択された遅延スロッ
トの数だけスキップするステップを含む、前記方法。
【0061】(2)第1項記載の方法において、スキッ
プするステップが第1疑似NOP内の値に等しいNOP
命令の数がフェッチされ実行されたかのように、マイク
ロプロセッサを運転管理することを含む、前記方法。
プするステップが第1疑似NOP内の値に等しいNOP
命令の数がフェッチされ実行されたかのように、マイク
ロプロセッサを運転管理することを含む、前記方法。
【0062】(3)先行するいずれかの項に記載の方法
において、第1演算コードフィールドが分岐演算を指定
する、前記方法。
において、第1演算コードフィールドが分岐演算を指定
する、前記方法。
【0063】(4)第3項記載の方法において、実行す
るステップが第3命令を目標アドレスに従って、第2の
遅延スロット数が第3命令の実行が開始される前に生じ
るようにフェッチし、ここで第2の数は第1の数よりも
小さく、スキップするステップが第2の数の遅延スロッ
トだけスキップする、前記方法。
るステップが第3命令を目標アドレスに従って、第2の
遅延スロット数が第3命令の実行が開始される前に生じ
るようにフェッチし、ここで第2の数は第1の数よりも
小さく、スキップするステップが第2の数の遅延スロッ
トだけスキップする、前記方法。
【0064】(5)先行するいずれかの項に記載の方法
において、更に演算を実行するステップの前に、第1記
述値を第1演算コードフィールドに応答して決定するス
テップを含み;第1演算コードフィールドに応答して演
算を実行するステップは第1記述値によって記述される
が、スキップするステップは無条件である前記方法。
において、更に演算を実行するステップの前に、第1記
述値を第1演算コードフィールドに応答して決定するス
テップを含み;第1演算コードフィールドに応答して演
算を実行するステップは第1記述値によって記述される
が、スキップするステップは無条件である前記方法。
【0065】(6)総コードサイズを削減するための方
法であって、コード内でNOPが後に続く少なくとも1
つの遅延効果命令の配置を決め;前記NOPを前記コー
ドから削除し;NOPフィールドを遅延効果命令の中に
挿入する、以上のステップを含む前記方法。
法であって、コード内でNOPが後に続く少なくとも1
つの遅延効果命令の配置を決め;前記NOPを前記コー
ドから削除し;NOPフィールドを遅延効果命令の中に
挿入する、以上のステップを含む前記方法。
【0066】(7)第6項記載の方法において、前記遅
延効果命令がロード命令である前記方法。
延効果命令がロード命令である前記方法。
【0067】(8)第6項記載の方法において、前記遅
延効果命令が分岐命令である前記方法。
延効果命令が分岐命令である前記方法。
【0068】(9)むき出しのパイプラインを有するプ
ロセッサ内の総コードサイズを削減するための方法であ
って、ロード命令と使用命令との間の待ち時間を決定す
るステップと、NOPフィールドを定義または使用命令
の中に挿入するステップを含む。ロード命令の中に挿入
する際には、NOPフィールドはそのロード命令に続く
待ち時間を定義する。使用命令の中に挿入する際には、
NOPフィールドはその使用命令に先行する待ち時間を
定義する。加えて、分岐中に総コードサイズを削減する
ための方法は、命令ストリーム内の第1点から第2点へ
分岐を開始するための分岐命令の後に続く待ち時間を決
定するステップと、NOPフィールドを分岐命令の中に
挿入するステップとを含む。更に、本発明に基づく方法
は後ろにNOPが続く遅延効果命令、例えばロードまた
は分岐命令が1つのコードの中に配置するステップと;
そのコードからNOPを削除するステップと;NOPフ
ィールドを遅延効果命令の中に挿入するステップとを含
む。本発明に基づく装置は、遅延効果命令を有するプロ
セッサを含み、ここで遅延効果命令が疑似NOP命令で
充たされるべき遅延スロットの数(N)を特定するNO
Pフィールドを含む。
ロセッサ内の総コードサイズを削減するための方法であ
って、ロード命令と使用命令との間の待ち時間を決定す
るステップと、NOPフィールドを定義または使用命令
の中に挿入するステップを含む。ロード命令の中に挿入
する際には、NOPフィールドはそのロード命令に続く
待ち時間を定義する。使用命令の中に挿入する際には、
NOPフィールドはその使用命令に先行する待ち時間を
定義する。加えて、分岐中に総コードサイズを削減する
ための方法は、命令ストリーム内の第1点から第2点へ
分岐を開始するための分岐命令の後に続く待ち時間を決
定するステップと、NOPフィールドを分岐命令の中に
挿入するステップとを含む。更に、本発明に基づく方法
は後ろにNOPが続く遅延効果命令、例えばロードまた
は分岐命令が1つのコードの中に配置するステップと;
そのコードからNOPを削除するステップと;NOPフ
ィールドを遅延効果命令の中に挿入するステップとを含
む。本発明に基づく装置は、遅延効果命令を有するプロ
セッサを含み、ここで遅延効果命令が疑似NOP命令で
充たされるべき遅延スロットの数(N)を特定するNO
Pフィールドを含む。
【図1】図1はディジタル信号処理装置(DSP)のブ
ロック図である。
ロック図である。
【図2】図2はDSPコア部の算術および論理演算をサ
ポートするAユニット・グループの最上位レベルのブロ
ック図を示す。
ポートするAユニット・グループの最上位レベルのブロ
ック図を示す。
【図3】図3はDSPコア部の移動、回転、およびブー
ル演算をサポートするSユニット・グループの最上位レ
ベルのブロック図を示す。
ル演算をサポートするSユニット・グループの最上位レ
ベルのブロック図を示す。
【図4】図4aはNOP(BNOP)演算を具備した相
対分岐実行命令用の32ビット演算コードの例を示す;
図4bは相対BNOP演算を実行するためのパイプライ
ン・フォーマットを示す。
対分岐実行命令用の32ビット演算コードの例を示す;
図4bは相対BNOP演算を実行するためのパイプライ
ン・フォーマットを示す。
【図5】図5aは絶対BNOP演算実行命令用の32ビ
ット演算コードの例を示す、図5bは絶対BNOP演算
を実行するためのパイプライン・フォーマットを示す。
ット演算コードの例を示す、図5bは絶対BNOP演算
を実行するためのパイプライン・フォーマットを示す。
1 マイクロプロセッサ 10 中央処理ユニット(CPU) 20a,20b 多重ポート・レジスタ・ファイル 22 データ・メモリ 23 プログラム・メモリ 32、36,38,40 バス 42 集積回路 51 外部テスト・システム 52 テスト回路 61 外部メモリ・インタフェース 128 A加算ユニット 130 Aゼロ検出ユニット 132 Aビット検出ユニット 134 A R/Z論理ユニット 136 Aパック/反復ユニット 138 Aシャッフル・ユニット 140 A汎用論理ブロック・ユニット 142 A割り算/シード・ユニット 144,146 入力マルチプレクサ 148 結果マルチプレクサ 156 32ビット加算ユニット 158 S回転器ユニット 160 Sマスク生成ユニット 161、163 入力マルチプレクサ 162 S論理ユニット 165 回転/ブール代数ユニット 167 Sビット複写ユニット 169 Sアンパック/符号拡張ユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アラン エス、ワード アメリカ合衆国 テキサス、シュガー ラ ンド、サイプレス ラン ドライブ 2211
Claims (1)
- 【請求項1】 演算コードフィールドと疑似NOPフィ
ールドとを含む遅延効果命令を有するマイクロプロセッ
サ動作方法であって:第1演算コードフィールドと第1
疑似NOPフィールドとを有する第1遅延効果命令をフ
ェッチし;第1遅延効果命令を実行し;第2命令をフェ
ッチし;第2命令を実行し、該第1遅延命令を実行する
ステップが:第1演算コードフィールドに応答して1つ
の演算を実行し;第2命令を実行する前に、第1疑似N
OPフィールド内の値に相当する選択された遅延スロッ
トの数だけスキップするステップを含む、前記方法。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17379599P | 1999-12-30 | 1999-12-30 | |
US18335700P | 2000-02-18 | 2000-02-18 | |
US702484 | 2000-10-31 | ||
US183357 | 2000-10-31 | ||
US09/702,484 US6799266B1 (en) | 1999-12-30 | 2000-10-31 | Methods and apparatus for reducing the size of code with an exposed pipeline by encoding NOP operations as instruction operands |
US173795 | 2000-10-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001216154A true JP2001216154A (ja) | 2001-08-10 |
Family
ID=27390331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000401009A Abandoned JP2001216154A (ja) | 1999-12-30 | 2000-12-28 | むき出しのパイプラインを具備するコードのサイズを、nop演算を命令オペランドとしてコード化することで削減するための方法並びに装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2001216154A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005149297A (ja) * | 2003-11-18 | 2005-06-09 | Renesas Technology Corp | プロセッサおよびそのアセンブラ |
JP2014090385A (ja) * | 2012-10-31 | 2014-05-15 | Universal Entertainment Corp | 通信システム、通信用lsi及び遊技機 |
-
2000
- 2000-12-28 JP JP2000401009A patent/JP2001216154A/ja not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005149297A (ja) * | 2003-11-18 | 2005-06-09 | Renesas Technology Corp | プロセッサおよびそのアセンブラ |
JP2014090385A (ja) * | 2012-10-31 | 2014-05-15 | Universal Entertainment Corp | 通信システム、通信用lsi及び遊技機 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3547139B2 (ja) | プロセッサ | |
US6279100B1 (en) | Local stall control method and structure in a microprocessor | |
US20050010743A1 (en) | Multiple-thread processor for threaded software applications | |
JPH09311786A (ja) | データ処理装置 | |
WO2000033183A9 (en) | Method and structure for local stall control in a microprocessor | |
JP2001202245A (ja) | 改良式命令セットアーキテクチャを有するマイクロプロセッサ | |
KR20010109354A (ko) | 프로세서내의 기록 트래픽을 감소시키는 시스템 및 방법 | |
EP1866804A2 (en) | Speculative load of look up table entries based upon coarse index calculation in parallel with index calculation | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
JPH10232779A (ja) | 命令並列処理方法及び装置 | |
US6799266B1 (en) | Methods and apparatus for reducing the size of code with an exposed pipeline by encoding NOP operations as instruction operands | |
US6055628A (en) | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks | |
JPH07120284B2 (ja) | データ処理装置 | |
WO2012061416A1 (en) | Methods and apparatus for a read, merge, and write register file | |
JP2004038327A (ja) | データ処理装置 | |
US11714641B2 (en) | Vector generating instruction for generating a vector comprising a sequence of elements that wraps as required | |
JP2002229779A (ja) | 情報処理装置 | |
EP1122688A1 (en) | Data processing apparatus and method | |
CN113703845B (zh) | 一种基于risc-v的可重构嵌入式处理器微架构及其工作方法 | |
JP2001202241A (ja) | 実行パケットが2以上の取出しパケットをスパンするマイクロプロセッサを備えるディジタル処理システム及び同システムの操作方法 | |
EP1190305A2 (en) | Method and apparatus for jump delay slot control in a pipelined processor | |
JP2000207210A (ja) | マイクロプロセッサ | |
JP2001216154A (ja) | むき出しのパイプラインを具備するコードのサイズを、nop演算を命令オペランドとしてコード化することで削減するための方法並びに装置 | |
EP1089166A2 (en) | An integer instruction set architecture and implementation | |
EP1113356B1 (en) | Method and apparatus for reducing the size of code in a processor with an exposed pipeline |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071221 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20090914 |