JP2000215061A - 複合メモリアクセス命令 - Google Patents

複合メモリアクセス命令

Info

Publication number
JP2000215061A
JP2000215061A JP11321534A JP32153499A JP2000215061A JP 2000215061 A JP2000215061 A JP 2000215061A JP 11321534 A JP11321534 A JP 11321534A JP 32153499 A JP32153499 A JP 32153499A JP 2000215061 A JP2000215061 A JP 2000215061A
Authority
JP
Japan
Prior art keywords
instruction
memory
programmed
compound
instructions
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
Application number
JP11321534A
Other languages
English (en)
Inventor
Gilbert Laurenti
ローランティ ジルベール
Karim Djafarian
ドジャファリアン カリム
Herve Catan
カタン エルブ
Vincent Gillet
ジレ バンサン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JP2000215061A publication Critical patent/JP2000215061A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Abstract

(57)【要約】 【課題】 処理エンジンの性能を改善する。 【解決手段】 処理エンジンは、実行未決単一複合命令
をバッファするように動作する命令バッファを含み、そ
こからの命令を復号する復号機構が、別々のプログラム
されたメモリ命令から形成される複合命令を表す命令の
タグフィールド内の所定のタグ726に応答して少なく
とも第1のプログラムされた命令721に対する第1の
データフロー制御および第2のプログラムされた命令7
22に対する第2のデータフロー制御729を復号す
る。複合命令を使用して処理エンジンで利用できる帯域
幅を有効利用できる。別々の第1および第2のプログラ
ムされたメモリ命令からソフトデュアルメモリ命令をコ
ンパイルできる。所定の複合命令の複合アドレスフィー
ルド738をハード複合メモリ命令すなわちプログラム
される複合命令に対するアドレスフィールドと同じビッ
ト位置に配列できる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、処理エンジンと、
このような処理エンジンでの命令の並列実行に関する。
【0002】
【従来の技術】多数の命令実行ユニットを使用してマイ
クロプロセッサで命令を並列実行することが知られてい
る。このような並列実行を行うための多くの異なるアー
キテクチュアが知られている。並列実行により全体処理
速度が向上する。典型的には、多数の命令が並列に命令
バッファに与えられたのち並列に復号されて、実行ユニ
ットにディスパッチされる。マイクロプロセッサは、そ
こでソフトウェアを実行するために高い命令スループッ
トを必要とする汎用処理エンジンであり、それは、関係
する特定のソフトウェアアプリケーションに応じて広範
な処理要求を有することがある。さらに、並列性をサポ
ートするために、並列実行の命令のスケジューリングを
制御するための複雑なオペレーティングシステムが必要
とされている。
【0003】多くの異なるタイプの処理エンジンが知ら
れており、マイクロプロセッサは単なる一例にすぎな
い。たとえば、特に特定の応用に対してデジタル信号プ
ロセッサ(DSP)が広く知られている。DSPは、典
型的には、関連するアプリケーションの性能を最適化す
るように構成され、それを達成するために、より特殊化
された実行ユニットおよび命令セットを利用している。
【0004】
【発明が解決しようとする課題】本発明は、限定はしな
いが、デジタル信号プロセッサのような処理エンジンの
性能改善に向けられている。
【0005】
【課題を解決するための手段】本発明の第1の態様によ
れば、単一の実行未決複合命令をバッファするように動
作する命令バッファと、命令バッファからの命令を復号
するように構成された復号機構とを含む処理エンジンが
提供される。復号機構は、命令のタグフィールドの所定
のタグに応答するように構成されており、所定のタグ
は、命令が別々のプログラムされたメモリ命令から形成
される複合命令であることを表す。復号機構は、所定の
タグに応答して、少なくとも第1のプログラムされた命
令に対する第1のデータフロー制御および第2のプログ
ラムされた命令に対する第2のデータフロー制御を復号
するように動作する。
【0006】したがって、本発明の実施例は、別々のプ
ログラムされた命令を結合することによって形成される
(たとえば、アセンブルまたはコンパイル)複合命令に
応答する復号機構を提供する。このようにして、処理エ
ンジン内で利用できる帯域幅の使用を最適化することが
できる。したがって、適切なメモリ命令のような適切な
プログラムされた命令をアセンブルまたはコンパイルし
て複合命令を形成することができる。複合命令からプロ
グラムされた命令の各成分に対する別々の制御フローを
発生することによって、これらの命令を完全にまたは部
分的に並列に実施して処理エンジンの全体スループット
に好ましい影響を及ぼすことができる。プログラムされ
た各命令に対して復号機構によって発生される制御フロ
ーは、単一命令として命令バッファ内に保持されている
場合には、プログラムされた命令に対して発生されるも
のと同じとすることができる。
【0007】コンパクトで効率的な符号化が本発明の実
施例で可能とされる。たとえば、メモリ命令は必ず所定
の複合命令の形の命令バッファ内の第1の一対の命令で
あることを保証することによって、メモリアクセス命令
の並列性に効率的な符号化、リアルエステートの効率的
使用および消費電力低減を与えることができる。
【0008】本発明の実施例では、複合命令は、別々の
プログラムされたメモリ命令から(たとえば、コンパイ
ラやアセンブラのような命令前処理機構を使用して)結
合することによって形成されるソフト複合メモリ命令と
して定義される。特定の実施例では、複合命令はフソト
デュアルメモリ命令、すなわち、別々の第1および第2
のプログラムされたメモリ命令からアセンブルされたデ
ュアルメモリ命令であるが、別の例では3つ以上の命令
をアセンブルして複合命令とすることができる。
【0009】好ましくは、復号機構は、複合命令内の複
合メモリアドレスからの第1のプログラムされたメモリ
アドレス命令に対する第1のメモリアドレスおよび第2
のプログラムされたメモリ命令に対する第2のメモリア
ドレスを復号するように動作する。特に、複合命令の複
合アドレスフィールドがハードプログラムされたデュア
ルメモリ命令に対するアドレスフィールドと同じビット
位置であれば、これは命令スループットに好ましい影響
を及ぼすことができる。この場合、アドレスの復号は、
命令の操作符号がデュアル命令の第1および第2の命令
のフォーマットに無関係に復号される前に開始すること
ができる。
【0010】複合命令に対して必要なビット数を減少す
るために、複合命令の複合アドレスフィールド内のメモ
リアドレスは間接アドレスとして配列され、それによっ
て、復号機構はそのような命令に対する間接アドレスを
復号するように動作するだけでよい。デュアル命令は単
一命令よりも少ないオプションをサポートするので、ア
ドレスに対するポスト変更フィールドのサイズを縮小
し、それによって、アドレス自体に必要なビット数を減
少し、かつ、間接/直接インジケータビットを不要とす
ることができる。
【0011】メモリアクセス命令は、命令バッファ内の
一対の命令の第1の命令として強制することができる。
この場合、ソフトデュアル命令は、2つのメモリ命令に
対応する符号化を有効に提供する。その結果、並列イネ
ーブルフィールドの必要性は回避され、任意のメモリ命
令を暗黙のうちに並列性とすることができる。さらに、
それにより、外部インターフェイス帯域幅を最適化しか
つキャッシュミスを低減しながらアプリケーション符号
サイズを縮小する利点が得られる。
【0012】命令対の第2の命令に対するデコーダはま
た、第1の命令に対するデコーダのサブセットとするこ
とができ、必要な集積回路リアルエステートおよび処理
エンジンの消費電力が低減される。
【0013】コンパクトな命令フォーマットを提供する
とともに、アドレスフィールドをハード複合命令に対す
るものと同じ位置に配置できるようにするために、複合
命令は、所定の複合命令の第1の命令に対する分割操作
符号フィールドを含むことができる。たとえば、操作符
号はアドレスフィールドのいずれか側で分割することが
できる。デコーダは、適切なタグフィールドの検出に応
答して、複合命令の第1の命令に対する分割操作符号を
復号することができる。
【0014】ビット数をさらに減少するために、複合命
令は、所定の複合命令の少なくとも第1の命令に対する
縮小操作符号フィールドを含み、操作符号フィールドが
第1のプログラムされた命令の操作符号フィールドより
も少ないビットを含むようにすることができる。メモリ
命令に対する操作符号の範囲をある範囲内に制約するこ
とによって、第1の操作符号に与える必要のあるビット
数を減少することができる。復号機構は、所定のタグに
応答して複合命令の第1の命令に対する縮小サイズ操作
符号を復号するように構成することができる。
【0015】上述したさまざまな方策により、所定の複
合命令は、別々のプログラムされた命令の総ビット数と
同じ総ビット数を有するように構成することができる。
プログラムされた命令からのフィールドの再構成によっ
て、他の命令と共通の全体フォーマットを有する所定の
複合命令が得られる。
【0016】プログラムされた各命令がデータアドレス
発生(DAGEN)コードフィールドを有する場合に
は、個別のプログラムされた命令の個別のDAGENコ
ードを複合命令内の結合DAGENコードフィールドに
結合することができる。これにより、複合命令のより迅
速な復号および実行を行うことができる。結合DAGE
Nコードフィールドは結合アドレスフィールドの一部を
形成することができる。結合DAGENコードフィール
ドが与えられる場合には、復号機構は所定のDAGEN
タグに応答して結合DAGENフィールドを復号するこ
とができる。
【0017】処理エンジンには、第1および第2のメモ
リアドレスによってそれぞれ識別されるアドレスからの
第1および第2のオペランドを並列にフェッチするよう
に動作するデータフェッチコントローラを設けることが
できる。データライトコントローラも、第1および第2
の命令に対する第1および第2のデータフロー操作の結
果を並列に書き込むように動作することができる。ま
た、デュアル・リード/ライト操作を行うこともでき
る。
【0018】本発明の実施例では、アセンブラシンタク
スは、ハード複合およびソフト複合シンタクス間を区別
して、並列性に利用できるスロットに対する可視性を与
えることができる。ハード複合命令は、バス/オペレー
タ資源競合がない限り並列イネーブルビットによって表
示される制御フローやレジスタ命令のような非メモリ命
令と並列に実行することができる。
【0019】本発明の他の態様によれば、上述した処理
エンジンを含むプロセッサ、たとえば必ずしもそうであ
る必要はないがデジタル信号プロセッサが提供される。
プロセッサは、たとえば特定用途集積回路(ASIC)
のような集積回路として実現することができる。
【0020】上述した処理エンジンを含むデジタル信号
処理システムには、別々のプログラムされたメモリ命令
を結合して複合メモリ命令を形成するように動作する命
令前処理機構を設けることもできる。命令プリプロセッ
サはコンパイラやアセンブラなどとすることができ、そ
れはプログラムされた命令からの複合命令をコンパイル
またはアセンブルするように動作する。この機構は、複
合命令のアセンブリの前に別々のプログラムされたメモ
リ命令を結合できるかを確認するように構成することが
できる。
【0021】本発明のさらに他の態様によれば、デジタ
ル信号処理システム用の命令プリプロセッサが提供さ
れ、それは、結合することができるプログラムされたメ
モリ命令を確認し、前記確認されたプログラムされたメ
モリ命令からの複合メモリ命令をアセンブルするように
構成される。
【0022】ここで、「命令プリプロセッサ」という用
語は、コンパイラやアセンブラなどを含む、命令を処理
するすなわち命令をコンパイルおよび/またはアセンブ
ルする任意の機構を含むものと広く解釈すべきことを理
解願いたい。
【0023】命令プリプロセッサは、たとえばデータ記
憶媒体(ディスク,固体メモリ,電気や光学や他の電磁
気のようなデータ伝送媒体(たとえば、ワイヤレス伝送
媒体))のような搬送媒体上に別々に設けることができ
る。
【0024】本発明のその他の態様によれば、処理エン
ジンの性能改善方法が提供される。この方法は、別々の
プログラムされたメモリ命令からアセンブルされた複合
命令をバッファするステップであって、複合命令が所定
の複合命令タグを含むタグフィールドを含む、ステップ
と、命令バッファ内の命令のタグフィールド内の所定の
複合命令タグに応答して、複合命令から、少なくとも第
1のプログラムされた命令に対する第1のデータフロー
制御および第2のプログラムされた命令に対する第2の
データフロー制御を復号するステップと、を含んでい
る。
【0025】
【発明の実施の形態】本発明は、たとえば特定用途集積
回路(ASIC)内に実現されるデジタル信号プロセッ
サ(DSP)に特に応用されるが、他の形式の処理エン
ジンにも応用される。
【0026】図1は、本発明の一実施例を有するマイク
ロプロセッサ10のブロック図である。マイクロプロセ
ッサ10は、デジタル信号プロセッサ(DSP)であ
る。分かり易くするために、図1は、マイクロプロセッ
サ10の本発明の一実施例を理解するのに関係のある部
分のみを示す。DSPの一般的構造の詳細は、よく知ら
れており、他で容易に確かめることができる。たとえ
ば、フレデリック・ブートウドらの米国特許第5,07
2,418号には、DSPが詳細に記載されており、本
開示の一部としてここに援用する。ギャリー・スオボダ
らの米国特許第5,329,471号には、DSPのテ
ストおよびエミュレート方法が詳細に記載されており、
本開示の一部としてここに援用する。マイクロプロセッ
サの分野の当業者であれば本発明を製造し使用できるよ
うに、マイクロプロセッサ10の本発明の一実施例に関
連する部分の詳細が、以下に十分詳しく説明される。
【0027】本発明の態様から利益を得ることができる
いくつかのシステムの例が、本開示の一部としてここに
援用される米国特許第5,072,418号に、特に米
国特許第5,072,418号の図2〜図18に記載さ
れている。性能を改善するかコストを低減する本発明の
一態様を組み入れたマイクロプロセッサを使用して、米
国特許第5,072,418号に記載されたシステムを
さらに改善することができる。そのようなシステムは、
限定はしないが、産業プロセスコントロール,自動車シ
ステム,モータコントロール,ロボットコントロールシ
ステム,衛星電気通信システム,エコーキャンセリング
システム,モデム,ビデオイメージングシステム,音声
認識システムおよび暗号付ボコーダ−モデムシステムな
どを含む。
【0028】図1のマイクロプロセッサのさまざまなア
ーキテクチュア上の特徴および完全な命令セットの説明
が、同じ譲受人による特許出願第98402455.4
号(TI−28433)に記載されており、本開示の一
部としてここに援用する。
【0029】次に、本発明によるプロセッサの一例の基
本的アーキテクチュアについて説明する。図1は、本発
明の一つの典型的な実施例を形成するプロセッサ10の
全体略図である。プロセッサ10は、処理エンジン10
0とプロセッサバックプレーン20とを含んでいる。本
実施例では、プロセッサは、特定用途集積回路(ASI
C)に実現されたデジタル信号プロセッサ10である。
【0030】図1に示すように、処理エンジン100
は、処理コア102と処理コア102を処理コア102
の外部のメモリユニットとインターフェイスさせるメモ
リインターフェイスすなわち管理ユニット104とを有
する中央処理装置(CPU)を形成する。
【0031】プロセッサバックプレーン20は、バック
プレーンバス22を含み、それには処理エンジンのメモ
リ管理ユニット104が接続されている。バックプレー
ンバス22には、命令キャッシュメモリ24,周辺装置
26および外部インターフェイス28も接続されてい
る。
【0032】他の実施例では、異なる構成および/また
は異なる技術を使用して本発明を実現できることが分か
るであろう。たとえば、処理エンジン100はプロセッ
サ10を形成することができ、プロセッサバックプレー
ン20はそこから分離されている。処理エンジン100
は、たとえば、バックプレーンバス22,周辺装置およ
び外部インターフェイスを支持するバックプレーン20
から独立してその上に搭載されたDSPであり得る。処
理エンジン100は、たとえば、DSPではなくマイク
ロプロセッサとすることができ、ASIC技術以外の技
術で実現することができる。処理エンジンまたは処理エ
ンジンを含むプロセッサは1つ以上の集積回路に実現す
ることができる。
【0033】図2は、処理コア102の一実施例の基本
構造を示す。図から分かるように、処理コア102は、
4つの要素、すなわち、命令バッファユニット(Iユニ
ット)106と3つの実行ユニットとを含んでいる。実
行ユニットは、プログラムフローユニット(Pユニッ
ト)108と、アドレスデータフローユニット(Aユニ
ット)110と、命令バッファユニット(Iユニット)
106から復号された命令を実行しプログラムフローを
制御かつ監視するデータ計算ユニット(Dユニット)1
12とである。
【0034】図3は、処理コア102のPユニット10
8,Aユニット110およびDユニット112を詳細に
示すとともに、処理コア102のさまざまな要素を接続
するバス構造を示す。Pユニット108は、たとえば、
ループ制御回路と、GoTo/分岐制御回路と、リピー
トカウンタレジスタおよび割込みマスク,フラグまたは
ベクトルレジスタのようなプログラムフローを制御し監
視するさまざまなレジスタとを含んでいる。Pユニット
108は、汎用データライトバス(EB,FB)13
0,132とデータリードバス(CB,DB)134,
136とアドレス定数バス(KAB)142とに結合さ
れている。さらに、Pユニット108は、CSR,AC
BおよびRGDとラベルされたさまざまなバスを介して
Aユニット110およびDユニット112内のサブユニ
ットに結合されている。
【0035】図3に示すように、本実施例では、Aユニ
ット110はレジスタファイル30とデータアドレス発
生サブユニット(DAGEN)32と算術および論理演
算装置(ALU)34とを含んでいる。Aユニットレジ
スタファイル30はさまざまなレジスタを含み、それら
中には、アドレス発生だけでなくデータフローにも使用
できる16ビットポインタレジスタ(AR0,...,
AR7)およびデータレジスタ(DR0,...,DR
3)がある。さらに、レジスタファイルは、16ビット
巡回バッファレジスタと7ビットデータページレジスタ
とを含んでいる。汎用バス(EB,FB,CB,DB)
130,132,134,136だけでなく、データ定
数バス140およびアドレス定数バス142がAユニッ
トレジスタファイル30に結合されている。Aユニット
レジスタファイル30は、それぞれ反対方向に作動する
1方向性バス144,146によってAユニットDAG
ENユニット32に結合されている。DAGENユニッ
ト32は、16ビットX/Yレジスタと、たとえば処理
エンジン100内のアドレス発生を制御し監視する係数
およびスタックポインタレジスタとを含んでいる。
【0036】Aユニット110は、加算,減算およびA
ND,ORおよびXOR論理演算子などのALUに典型
的に関連する機能だけでなくシフタ機能も含むALU3
4も含んでいる。ALU34は、汎用バス(EB,D
B)130,136および命令定数データバス(KD
B)140にも結合されている。AユニットALUは、
Pユニット108レジスタファイルからレジスタ内容を
受信するPDAバスによってPユニット108に結合さ
れている。ALU34は、アドレスおよびデータレジス
タ内容を受信するバスRGA,RGBとレジスタファイ
ル30のアドレスおよびデータレジスタに転送するバス
RGDとによってAユニットレジスタファイル30にも
結合されている。
【0037】図から分かるように、Dユニット112
は、Dユニットレジスタファイル36と、DユニットA
LU38と、Dユニットシフタ40と、2つの乗算およ
び累算ユニット(MAC1,MAC2)42,44とを
含んでいる。Dユニットレジスタファイル36とDユニ
ットALU38とDユニットシフタ40とは、バス(E
B,FB,CB,DB,KDB)130,132,13
4,136,140に結合され、また、MACユニット
42,44は、バス(CB,DB,KDB)134,1
36,140とデータリードバス(BB)144とに結
合されている。Dユニットレジスタファイル36は、4
0ビット累算器(AC0,...,AC3)と16ビッ
ト遷移レジスタとを含んでいる。また、Dユニット11
2は、Aユニット110の16ビットポインタおよびデ
ータレジスタをソースとして利用したり、40ビット累
算器の他にデスティネーションレジスタを利用すること
ができる。Dユニットレジスタファイル36は、累算器
ライトバス(ACW0,ACW1)146,148を介
してDユニットALU38およびMAC1&2 42,
44から、また、累算器ライトバス(ACW1)148
を介してDユニットシフタ40から、データを受信す
る。データは、累算器リードバス(ACR0,ACR
1)150,152を介してDユニットレジスタファイ
ル累算器からDユニットALU38,Dユニットシフタ
40およびMAC1&2 42,44に読み出される。
DユニットALU38とDユニットシフタ40とは、E
FC,DRB,DR2およびACBとラベルされたさま
ざまなバスを介してAユニット108のサブユニットに
も結合されている。
【0038】図4を参照すると、32ワード命令バッフ
ァキュー(IBQ)502を含む命令バッファユニット
106が示されている。IBQ502は、8ビットバイ
ト506に論理的に分割された32×16ビットレジス
タ504を含んでいる。命令は、32ビットプログラム
バス(PB)122を介してIBQ502に到来する。
命令は、ローカルライトプログラムカウンタ(LWP
C)532によって指示される位置に32ビットサイク
ルでフェッチされる。LWPC532は、Pユニット1
08に位置されたレジスタに含まれている。Pユニット
108は、ローカルリードプログラムカウンタ(LRP
C)536レジスタとライトプログラムカウンタ(WP
C)530レジスタおよびリードプログラムカウンタ
(RPC)534レジスタとをも含んでいる。LRPC
536は、命令デコーダ512,514にロードされる
次の一つまたは複数の命令のIBQ502内の位置を指
示する。すなわち、LRPC534は、デコーダ51
2,514に現在ディスパッチされている命令のIBQ
502内の位置を指示する。WPCは、パイプラインに
対する命令コードの次の4バイトの始まりのプログラム
メモリ内のアドレスを指示する。IBQ内への各フェッ
チに対して、プログラムメモリからの次の4バイトが命
令境界とは無関係にフェッチされる。RPC534は、
デコーダ512,514に現在ディスパッチされている
命令のプログラムメモリ内のアドレスを指示する。
【0039】命令は、48ビットワードに形成され、マ
ルチプレクサ520,521を介して48ビットバス5
16によって命令デコーダ512,514にロードされ
る。当業者ならば、命令は48ビット以外のワードに形
成することができること、また、本発明は前記した特定
の実施例に限定されるものではないことが、分かるであ
ろう。
【0040】バス516は、任意の1命令サイクル中
に、デコーダ当たり1つずつ、最大2つの命令をロード
することができる。命令の組合せは、48ビットバスの
両端間にわたって適合する8,16,24,32,40
および48ビットのフォーマットの任意の組合せとする
ことができる。1サイクル中に1命令しかロードできな
い場合には、デコーダ1,512がデコーダ2,514
に優先してロードされる。次に、各命令は、それらを実
行するために、また、命令または演算が実行されるべき
データにアクセスするために、各機能ユニットに転送さ
れる。命令デコーダに通される前に、命令はバイト境界
上でアラインされる。アライメントは、その復号中に前
の命令に対して引き出されたフォーマットに基づいて行
われる。バイト境界を有する命令のアライメントに関連
する多重化は、マルチプレクサ520,521で実行さ
れる。
【0041】プロセッサコア102は7ステージパイプ
ラインを介して命令を実行し、その各ステージは図5を
参照して説明される。
【0042】パイプラインの第1ステージは、PRE−
FETCH(P0)ステージ202であり、このステー
ジ中に、メモリインターフェイスまたはメモリ管理ユニ
ット104のアドレスバス(PAB)118上にアドレ
スを表明することによって次のプログラムメモリ位置が
アドレス指定される。
【0043】次のステージ、FETCH(P1)ステー
ジ204では、プログラムメモリが読み出され、Iユニ
ット106がメモリ管理ユニット104からPBバス1
22を介して充填される。
【0044】パイプラインはPRE−FETCHおよび
FETCHステージ中に割り込まれて逐次プログラムフ
ローを中断してプログラムメモリ内の他の命令、たとえ
ば分岐命令を指示することができる点で、PRE−FE
TCHおよびFETCHステージは残りのパイプライン
ステージから独立している。
【0045】次に、命令バッファ内の次の命令が、第3
ステージDECODE(P2)206でデコーダ512
または複数のデコーダ514にディスパッチされ、そこ
で、命令は、復号されて、その命令を実行する実行ユニ
ット、たとえばPユニット108,Aユニット110ま
たはDユニット112にディスパッチされる。復号ステ
ージ206は、命令のクラスを示す第1の部分と命令の
フォーマットを示す第2の部分と命令に対するアドレス
指定モードを示す第3の部分とを含む命令の少なくとも
一部を復号することを含んでいる。
【0046】次のステージはADDRESS(P3)ス
テージ208であり、そこでは、命令内で使用されるデ
ータのアドレスが計算されるか、命令がプログラム分岐
すなわちジャンプを必要とする場合には新しいプログラ
ムアドレスが計算される。各計算は、Aユニット110
またはPユニット108でそれぞれ行われる。
【0047】ACCESS(P4)ステージ210で
は、リードオペランドのアドレスが出力されたのち、X
mem間接アドレス指定モードを有するDAGEN X
演算子でアドレスが発生されているメモリオペランド
が、間接アドレス指定されたXメモリ(Xmem)から
読み出される。
【0048】パイプラインの次のステージはREAD
(P5)ステージ212であり、そこでは、Ymem間
接アドレス指定モードを有するDAGEN Y演算子内
または係数アドレスモードを有するDAGEN C演算
子内でアドレスが発生されているメモリオペランドが、
読み出される。命令の結果が書き込まれるメモリ位置の
アドレスが出力される。
【0049】デュアルアクセスの場合には、リードオペ
ランドをYパスで発生し、ライトオペランドをXパスで
発生することもできる。
【0050】最後に、命令がAユニット110内または
Dユニット112内で実行される実行EXEC(P6)
ステージ214がある。次に、結果がデータレジスタま
たは累算器に格納されるか、リード/モディファイ/ラ
イト用またはストア命令用のメモリに書き込まれる。さ
らに、シフト演算がEXECステージ中に累算器内のデ
ータになされる。
【0051】次に、パイプラインプロセッサの動作の基
本的原理について図6を参照して説明する。図6から分
かるように、第1の命令302に対して、連続パイプラ
インステージが期間T1〜T7にわたって行われる。各期
間はプロセッサマシンクロックに対するクロックサイク
ルである。前の命令が次のパイプラインステージに移行
しているため、第2の命令304が期間T2でパイプラ
インに入ることができる。第3の命令306に対して、
PRE−FETCHステージ202が期間T3で行われ
る。図6から分かるように、7ステージパイプラインに
対して、合計7つの命令を同時に処理することができ
る。7つの命令302〜314の全てに対して、図6は
期間T7でそれら全てが処理中であることを示してい
る。このような構造は命令の処理に一形式の並列性を付
加する。
【0052】図7に示すように、本発明のこの実施例
は、24ビットアドレスバス114および双方向16ビ
ットデータバス116を介して外部メモリユニット(不
図示)に結合されるメモリ管理ユニット104を含んで
いる。さらに、メモリ管理ユニット104は24ビット
アドレスバス118および32ビット双方向データバス
120を介してプログラム格納メモリ(不図示)に結合
されている。メモリ管理ユニット104は32ビットプ
ログラムリードバス(PB)122を介してマシンプロ
セッサコア102のIユニット106にも結合されてい
る。Pユニット108,Aユニット110およびDユニ
ット112はデータリードおよびデータライトバスおよ
び対応するアドレスバスを介してメモリ管理ユニット1
04に結合されている。Pユニット108はさらにプロ
グラムアドレスバス128に結合されている。
【0053】より詳細には、Pユニット108は24ビ
ットプログラムアドレスバス128と2つの16ビット
データライトバス(EB,FB)130,132と2つ
の16ビットデータリードバス(CB,DB)134,
136とによってメモリ管理ユニット104に結合され
ている。Aユニット110は、2つの24ビットデータ
ライトアドレスバス(EAB,FAB)160,162
と2つの16ビットデータライトバス(EB,FB)1
30,132と3つのデータリードアドレスバス(BA
B,CAB,DAB)164,166,168と2つの
16ビットデータリードバス(CB,DB)134,1
36とを介してメモリ管理ユニット104に結合されて
いる。Dユニット112は、2つのデータライトバス
(EB,FB)130,132と3つのデータリードバ
ス(BB,CB,DB)144,134,136とを介
してメモリ管理ユニット104に結合されている。
【0054】図7は、たとえば分岐命令を転送する、I
ユニット106からPユニット108への命令の通過を
参照符号124で表示している。さらに、図7は、Iユ
ニット106からAユニット110およびDユニット1
12へのデータの通過を参照符号126,128でそれ
ぞれ表示している。
【0055】本発明のこの実施例では、処理エンジン1
00はいくつかのフォーマットでマシン命令に応答す
る。さまざまなフォーマットのこのような命令の例を以
下に示す。
【0056】8ビット命令:○○○○ ○○○○ これは、8ビット命令、たとえばメモリマップ修飾子
(MMAP())またはリードポート修飾子(readpor
t())を表す。このような修飾子は単に8ビット操作符
号(○○○○ ○○○○)を含むのみである。このよう
な場合、並列性はインプリシットである。
【0057】16ビット命令:○○○○ ○○○E FS
SS FDDD これは、16ビット命令、たとえばデスティネーション
レジスタの内容(たとえば、dst)がそのレジスタの
前の内容(dst)とソースレジスタの内容(src)
との和となる命令、すなわち、
【0058】
【数1】dst=dst+src
【0059】の一例を表わす。
【0060】このような命令は、1ビットパラレルイネ
ーブルフィールド(E)と4ビットソースレジスタ識別
子(FSSS)と4ビットデスティネーションレジスタ
識別子(FDDD)とを有する7ビット操作符号(○○
○○ ○○○)である。
【0061】16ビット命令:○○○○ FDDD PP
PM MMMI これは、たとえばデスティネーションレジスタの内容
(たとえば、dst)がメモリ位置の内容(Smem)
となる、すなわち、
【0062】
【数2】dst=Smem
【0063】16ビット命令のもう1つの例である。
【0064】このような命令は、4ビット操作符号(○
○○○)と4ビットデスティネーションレジスタ識別子
(FDDD)と3ビットポインタアドレス(PPP)と
4ビットアドレス変更子(M MMM)と直接/間接ア
ドレスインジケータ(I)とを含んでいる。
【0065】24ビット命令:○○○○ ○○○E LL
LL LLLL oCCC CCCC これは、24ビット命令、たとえば条件分岐命令および
条件が満たされる場合のオフセット(L8)を表す、す
なわち、
【0066】
【数3】if(cond) goto L8
【0067】の一例を表わす。
【0068】このような命令は、1ビットパラレルイネ
ーブルフィールド(E)と8ビット分岐オフセット(L
LLL LLLL)と1ビット操作符号拡張(o)と7
ビット条件フィールド(CCC CCCC)とを有する
7ビット操作符号(○○○○○○○)を含んでいる。
【0069】24ビット命令:○○○○ ○○○○ PP
PM MMMI SSDD ooU% これは、24ビット命令のもう1つの例、たとえば累算
器の内容(ACy)がもう1つの累算器の内容(ACx
およびメモリ位置の内容(随意丸めがある)の二乗の和
を丸めた結果となり、データレジスタの内容(DR3)
が随意メモリ位置の内容となる単一メモリオペランド命
令、すなわち、
【0070】
【数4】ACy=rnd(ACx *Smem*Smem),
DR3=Smem
【0071】のもう1つの例である。
【0072】このような命令は、8ビット操作符号(○
○○○ ○○○○)と3ビットポインタアドレス(PP
P)と4ビットアドレス変更子(M MMM)と1ビッ
ト直接/間接アドレスインジケータフィールド(I)と
2ビットソース累算器識別子(SS)と2ビットデステ
ィネーション累算器識別子(DD)と2ビット操作符号
拡張(oo)と更新条件フィールド(u)と1ビット丸
めオプションフィールド(%)とを含んでいる。
【0073】32ビット命令:○○○○ ○○○○ PP
PM MMMI KKKK KKKKKKKK KKKK これは、32ビット命令、たとえばメモリ位置(Sme
m)の一定値(K16)との符号比較に応じてテストレ
ジスタの内容(TC1)が1または0に設定される命
令、すなわち、
【0074】
【数5】TC1=(Smem==K16)
【0075】の一例である。
【0076】このような命令は、8ビット操作符号(○
○○○ ○○○○)と3ビットポインタアドレス(PP
P)と4ビットアドレス変更子(M MMM)と1ビッ
ト直接/間接アドレスインジケータフィールド(I)と
16ビット定数フィールド(KKKK KKKK KKK
K KKKK)とを含んでいる。
【0077】ハードデュアル命令:○○○○ ○○○○
XXXM MMYY YMMM SSDD ooox ss
U% これは、「ハードデュアルアクセス命令」と呼ぶことが
できる32ビットデュアルアクセス命令、または、たと
えばプログラマによってのようにプログラムされたデュ
アル命令であるハードプログラムされたデュアルメモリ
命令である。このような命令は2つのDAGEN演算子
を必要とする。第2の命令は並列に実行することができ
る。それは、典型的には、レジスタまたは制御命令であ
る。バス競合がないかぎり、メモリスタック命令も並列
に実行することができる。このような命令の一例は次の
ようである。
【0078】
【数6】Cy=rnd(DRx *Xmem), Ymem=HI(ACx<<DR2) DR3=Xmem
【0079】この命令は、8ビット操作符号(○○○○
○○○○),4ビットアドレス変更子(M MMM)付
き3ビットXmemポインタアドレス(XXX),4ビ
ットアドレス変更子(M MMM)付き3ビットYme
mポインタアドレス(YYY),2ビットソースアキュ
ムレータ(ACx)識別子(SS),2ビットデスティ
ネーションアキュムレータ(ACy)識別子(DD),
3ビット操作符号拡張(ooo),ドントケアビット
(x),2ビットソースアキュムレータ識別子(s
s),1ビットオプショナルDR3更新フィールド
(U)および1ビットオプショナル丸めフィールド
(%)を含んでいる。
【0080】図8は、命令対およびソフトデュアル命令
を形成する命令の組合せを示す表である。このような命
令対では、対の第1の命令は常にメモリ操作である。第
2の命令もメモリ命令である場合、それはソフトデュア
ル命令すなわち複合命令として構成されることが分かる
であろう。
【0081】命令対の第2の位置に(すなわち、対のよ
り高いプログラムアドレスに対して)配置される命令
は、一対の命令の第1の命令と並列に命令を実施できる
かどうかを示す並列イネーブルフィールド(Eビット)
を含んでいる。並列イネーブルビットは、命令間の命令
フォーマット境界から所定のオフセットで配置される。
デコーダは、命令実行を制御するために「E」ビットに
応答するように構成される。
【0082】命令対で最初にメモリ操作をさせる理由
は、プロセッサパイプラインのアドレス復号ステージに
入るときに、デコーダは、命令のフォーマットを知ら
ず、フォーマット境界がどこであるかさえも知らないた
めである。メモリアドレス復号化は、良好な命令スルー
プットを保証するパイプラインのクリティカルステージ
の1つである。したがって、命令の正確な性質が確認さ
れる前であっても復号を開始できるようにするために
は、復号されるメモリ命令に対するアドレスビットの位
置およびサイズを確実に知る必要がある。
【0083】メモリ命令が第1の命令として命令対内に
配置されるように強制することにより生じるもう1つの
利点は、並列演算が許可されるかどうかを示すフィール
ドをメモリ命令に含める必要がないことである。そのた
め、命令セットはより効率的となり符号サイズを改善す
ることができる。
【0084】他のもう1つの利点は、命令対の第2の命
令を復号するのに必要なハードウェアは、命令対の第1
の命令を復号するためのハードウェアのサブセットであ
るしか必要としないことである。第1の命令は、命令対
の第2の命令よりも低いプログラムアドレスを有する命
令対の命令である。したがって、命令対の高いプログラ
ムアドレスを有する命令用の復号ハードウェアは、命令
対の低いプログラムアドレスを有する命令用の復号ハー
ドウェアのサブセットとすることができる。それによ
り、復号ハードウェアの実現および動作に必要なシリコ
ン面積および消費電力を低減することができる。
【0085】命令対の2つの命令を並列処理できる場合
には、それは各復号および実行ステージで行われる。し
かしながら、物理的なバスタイミング制約により、バス
転送はふらつくことがある。
【0086】図9は、デュアル命令を含むさまざまなタ
イプの命令に対するメモリアクセスが行われるパイプラ
インステージを示す。図4と同様に、図示するパイプラ
インステージは単なる説明用にすぎないことに留意すべ
きである。実際上、プリフェッチおよびフェッチステー
ジは残りのステージから独立したフローを形成する。
【0087】図9を図5と比べると、P1はフェッチス
テージ、P2は復号ステージ、P3はアドレス計算ステ
ージ、P4はアクセスステージ、P5はリードステー
ジ、P6は実行ステージを表す。Bは、Bバスを介した
レジスタからの係数リードアクセスを表す。CおよびD
は、CおよびDバスを介したメモリリードアクセスをそ
れぞれ表す。EおよびFは、EおよびFバスを介したラ
イトアクセスをそれぞれ表す。パイプライン上にバブル
(すなわち、ストール)を生じることなくリードおよび
ライトアクセスを所要サイクルで実行できるようにする
ために、復号はできるだけ早期に行われる。
【0088】図10は、デュアルメモリアクセス命令の
特定の形式を示す。それは、並列性を含んでいる2つの
併合されプログラムされた命令から有効に形成される。
図10のデュアルメモリ命令は、ソフトデュアル命令と
呼ばれ、ここでは複合命令とも呼ばれる。それは、2つ
のプログラムされたシングルメモリアクセス命令をたと
えばコンパイラやアセンブラで命令プロセッサ内で結合
して形成される。すなわち、この複合命令は、デュアル
命令のようにプログラマによってプログラムされたりプ
リプログラムされることはない。この形式の複合命令が
提供されると、両方の命令が同じサイクルで実行される
並列演算によりメモリアクセス性能を改善することがで
きる。下記の特定の例では、ソフトデュアル命令は、デ
ュアル変更子オプションを有する間接アドレッシングに
制限される。その結果、結合した命令サイズに関するサ
イズペナルティなしに並列演算により性能向上を達成す
るようにソフトデュアル命令を符号化することができ
る。
【0089】ソフトデュアル命令は5ビットタグフィー
ルド701によって限定され、図10に示すように個別
の下記の命令フィールドが構成されている。タグフィー
ルドのサイズは、特定のインプリメンテーションに関す
る制約の結果として生じる。すなわち、 − 全体符号化フォーマットは、2つのプログラムされ
た構成命令の符号化フォ ーマットの和よりも大きくならないように制約される。 − 全体命令フォーマットサイズは8の倍数である。 − 他のシングル命令に対する操作符号のアベイラビリ
ティ。
【0090】下記のものがタグフィールド701に続
く。 − 第1の命令に対する操作符号フィールドの部分70
2。 − 第1の命令に対する間接メモリアドレス(XXXM
MM)703および第2の命令に対する間接メモリアド
レス(YYYMMM)704を含む複合アドレスフィー
ルド703/704。 − 第1の命令に対する操作符号フィールド705の残
部。 − 第1の命令に対するデータフローフィールド70
6。 − 第2の命令の操作符号に対する操作符号フィールド
707。 − 第2の命令に対するデータフローフィールド70
8。
【0091】したがって、ソフトデュアル命令に対する
結合アドレス部は、他の任意のデュアル命令に対するも
のとソフトデュアル命令内の同じ位置に保持される。そ
れにより、関連する命令タイプを知ることなくアドレス
復号を開始できる結果、高速アドレス復号の利点が得ら
れる。それを達成するために、上述したように、ソフト
デュアル命令内のビットを幾分再構成する必要があるこ
とが分かるであろう。
【0092】2つのプログラムされた命令の各々がデー
タアドレス発生(DAGEN)フィールドを含む上述し
た修正に加えて、それらを結合してソフトデュアル命令
内に結合DAGENフィールドを形成することができ
る。結合DAGENフィールドを設けることにより、ソ
フトデュアル命令の後の実行を容易にし速度を速めるこ
とができる。
【0093】図11は、2つの独立命令をソフトデュア
ル命令に変換するためのさまざまなステップを示す。2
つの独立命令721,722はステージ720に表示さ
れている。
【0094】ステージ723で示すように、最初の24
ビット命令721は、第1バイト内の8ビット操作符号
724と、次のバイト内のシングルメモリ(Smem)
アドレス725と、次のバイト内のデータフロービット
726とを含んでいる。第2の24ビット命令722
は、第1バイト内の8ビット操作符号727と、次のバ
イト内のシングルメモリアドレス728と、次のバイト
内のデータフロービット729とを含んでいる。ステー
ジ730において、8操作符号ビットはそれぞれ、各命
令の操作符号バイト724,727内で「O」とラベル
されている。シングルメモリアドレス725,728は
それぞれ、7アドレスビット「A」+間接/直接インジ
ケータビット「I」を含むように示されている。それ
は、標準メモリアクセスに対するアドレスが直接または
間接となることがあるためである。図示する例では、粒
度はバイトに基づいている。しかしながら、他の例で
は、8ビット以外に基づいた粒度を利用することができ
る。さらに、2つの命令は対称的とする必要はなく、第
1の命令は第2の命令とは異なるバイト数とすることが
できる。
【0095】ステージ735において、第1の命令の操
作符号724は2つの部分に分割される。操作符号72
4の8ビットのうち7ビットだけを考えればよい。それ
は、(たとえば、ソフトデュアル命令に対して16進法
でたとえば80〜FFの所定範囲内に全てのメモリ命令
が操作符号を有することを保証することにより)ソフト
デュアル命令の場合にそれが冗長であることを保証する
ことができるメモリコードマッピングの結果である。後
でステージ726,740および図10で分かるよう
に、最初の命令に対する操作符号は分割される。最初の
命令に対する操作符号の3ビットがソフトデュアル命令
タグ737と第1および第2の命令に対する結合アドレ
ス738との間に配置され、4ビットが結合アドレス7
38の後に配置される。
【0096】ステージ736では、ソフトデュアル命令
タグ737の挿入が示されている。これは、ソフトデュ
アル命令を表すものとしてデコーダによって解釈される
ことがあるタグである。シングルメモリフィールド72
5,728の併合も図示されている。これは全ての命令
が間接アドレスに制限されるために達成することがで
き、それにより、間接/直接フラグが不要である。間接
アドレスは、第1および第2の命令に対する3ビットベ
ースアドレスXXXまたはYYYと3ビット変更子(M
MM)とによってそれぞれ表示される。ステージ736
は第2の命令の第1のバイト位置への第1の命令に対す
るデータフローの移動を示し、第2の命令に対する操作
符号はその命令の第2のバイト位置に移動される。
【0097】その結果、図10に示すソフトデュアル命
令のフォーマットが達成される。ソフトデュアル命令対
2つのシングルメモリアクセス命令に対する符号サイズ
ペナルティがないことが分かる。2つのシングルメモリ
(Smem)命令をXmem,Ymemで置換すること
によって、「ソフトデュアル」タグ701/737を挿
入するのに十分なビットが解放される。ソフトデュアル
タグ自体により、デコーダは命令対をメモリ命令として
復号すべきことを検出することができる。命令セットマ
ッピングを使用してメモリ命令がウィンドウ80〜FF
内で符号化されることを保証することができ、それによ
って、第1の操作符号724の最上位ビット(ビット
7)をデュアルフィールド符号化を遂行するときに廃棄
することができる。
【0098】図示する例では、図11に示したさまざま
なステージは、実行する命令を準備するときに、命令プ
ロセッサ,たとえばコンパイラまたはアセンブラによっ
て実施される。命令プロセッサによって行われるステッ
プは図12にフロー図で示されている。
【0099】ステップS1において、命令プロセッサ
は、ソフトデュアル命令に結合される可能性のある2つ
の命令の存在を検出する。それを可能とするために、命
令は並列に行うことができかつデータまたはコントロー
ルフロー不整合を生じないものとする必要がある。命令
セット内の各命令は、アドレスジェネレータリソースと
命令をサポートするのに関連したメモリアクセスのタイ
プとを定義するDAGENタグ内のDAGEN変数によ
って限定される。
【0100】したがって、ステップS2において、命令
プロセッサは、DAGEN変数を解析することによって
2つのスタンドアロンメモリ命令を併合してソフトデュ
アル命令とすることの実行可能性を決定する第1のステ
ップを行う。これがチェックアウトされるものとする
と、命令プリプロセッサは、潜在的バスおよびオペレー
タ競合を解析し、第1および第2の命令の結合に潜在的
なバーがあるかどうかを立証するように作動することが
できる。
【0101】ステップS3において、命令プリプロセッ
サは、ソフトデュアル命令タグ737を適用し、図11
に示すフィールド位置だけでなく操作符号およびアドレ
ス表示も修正する。ステップS4において、命令プリプ
ロセッサによってソフトデュアル命令が出力される。
【0102】図13は、ソフトデュアル命令に対する復
号プロセスを示す略ブロック図である。図13は、命令
バッファユニット106からの48ビット命令ワード8
00の復号を示す。
【0103】図13に示すように命令ワードの左に配置
される操作符号(opcode)から、操作符号復号回
路の論理802,804は、組込みデュアルまたはソフ
トデュアル命令が復号されるべきかどうかを迅速に検出
することができる。タグ復号論理804によるソフトデ
ュアルタグの検出は、「E」ビットまたはソフトデュア
ル操作符号を選択してフォーマット論理806から命令
#2アライメントおよびリマッピング論理818に通す
ようにマルチプレクサ808を制御する。シングルアド
レッシング論理810およびデュアルアドレッシング論
理812は並列に作動して、命令の左端から常に所定の
オフセットで配置されるアドレスフィールドの復号を開
始することができる。デュアル復号論理802およびソ
フトデュアルタグフィールド復号論理804の出力は、
論理814によって結合され、マルチプレクサ816へ
の制御入力を形成する。したがって、デュアル命令が検
出されると、デュアルアドレッシング論理812の出力
はDAGENコントロールに通され、そうでなければ、
シングルアドレッシング論理810の出力がDAGEN
コントロールに通される。
【0104】上述したように、別の形式では、複合命令
は、この複合命令を形成する一対の命令の別々のDAG
EN符号を置換する結合DAGEN符号を含むことがで
きる。複合命令内のDAGENタグは結合DAGEN符
号フィールドの存在を識別することができ、デコーダは
DAGENタグに応答して結合DAGEN符号フィール
ドを復号するように構成されている。結合DAGEN符
号フィールドは結合アドレスフィールドの一部を形成す
ることができる。結合DAGENフィールドにより、実
行速度が有利になる。
【0105】命令がソフトデュアル命令であるならば、
復号を実施する前にリマッピングが必要である。したが
って、命令フィールドリマッピング論理824は、ソフ
トデュアルタグ復号論理804の出力に応答して、その
対の第1の命令に関連する情報のリマッピングを行った
後に、そのリマップされた操作情報を第1の命令用の復
号論理826に通す。同様に、命令対の第2の命令のた
めの命令アライメントおよびリマッピング論理818
が、ソフトデュアルタグ復号論理804の出力に応答し
て、第2のメモリ命令に関連する情報のリマッピングを
行った後に、その情報を第2の命令用の復号論理822
に通す。命令アライメントおよびフィールドリマッピン
グ論理818は、適切なビット16,ビット24,ビッ
ト32またはビット40の命令境界に従って第1の命令
のフォーマットに応じて第2の命令をリアラインするよ
うに作動することもできる。
【0106】図10および図13を参照すると、図13
に示す復号機構は命令バッファからの命令を復号するよ
うに構成されている。図10に示すように、復号機構
は、ソフトデュアル命令のタグフィールド内の所定のタ
グに応答して、所定のソフトデュアル命令内の複合アド
レスフィールドからの第1のメモリ命令に対する第1の
メモリアドレスおよび第2のメモリ命令に対する第2の
メモリアドレスを復号する。
【0107】並列イネーブルビット復号論理820は、
第2の命令を第1の命令と並列に復号して実行できるか
どうかを検証するように作動する。ソフトデュアル命令
は並列イネーブル(「E」)ビットを含まないため、ソ
フトデュアル命令が検出されると、この論理820はデ
ィセーブルされる。
【0108】図14は、ソフトデュアル命令にインター
フェイスするメモリバスの態様を示す略ブロック図であ
り、図15はソフトデュアル命令用のオペランドフェッ
チ制御を要約する表である。
【0109】図14は、Cバス750,Dバス752,
Eバス760およびFバス762を示し、これらのバス
は、前に参照されているが、個別に識別されてはいな
い。
【0110】ソフトデュアルフェッチコントローラ75
4は、プロセッサコア102の命令制御機能の一部を形
成する。それは、オペランドフェッチ機構756,78
2を制御して、第1のデータフローパス790に対する
XおよびYオペランド758,780と第2のデータフ
ローパス792に対するXおよびYオペランド784,
786とをCおよびDバス750,752を介してそれ
ぞれフェッチするように作動する。やはりプロセッサコ
ア102の命令制御機能の一部を形成するソフトデュア
ルライトコントローラ755は、メモリライトインター
フェイス794,796を制御して、第1のデータフロ
ーパス790および第2のデータフローパス792から
Eバス760およびFバス762へのオペランドの各書
込みを制御する。
【0111】図15の表は、ソフトデュアルフェッチコ
ントローラ754によって行われるオペランドフェッチ
制御操作を示す。これは、スタンドアロンで行われる単
一メモリ命令と比べた場合のソフトデュアルメモリ命令
に対するオペランドフェッチフローへの変化を示す。し
たがって、単一メモリ命令がスタンドアロンで実行され
る場合には、オペランドレジスタはDバスからロードさ
れ、それにより、メモリ要求はDバスとなるので、2サ
イクルを要する。しかしながら、ソフトデュアル命令が
実行されると、フェッチコントローラは、Ymemパス
に対するオペランドフェッチフローを変えて、要求がC
要求へ再度向けられ、1500に示すようにオペランド
がDバスではなくCバスからフェッチされるようにす
る。オペランド#1およびオペランド#2は同じサイク
ル内で並列にフェッチされる。同じ機構がライトインタ
ーフェイスに適用される。たとえば、Eバス要求をFバ
ス要求に再指向することができる。
【0112】図16は、図1のプロセッサ10を内蔵す
る集積回路40の略図である。集積回路は、特定用途集
積回路(ASIC)技術を使用して実現することができ
る。図から分かるように、集積回路は表面実装用の複数
のコンタクト42を含んでいる。しかしながら、集積回
路は他の構成を含むことができ、たとえばゼロ挿入力ソ
ケット内に搭載するための回路下面上の複数のピン、ま
たは他の任意適切な構成とすることができる。
【0113】たとえば図16の集積回路に内蔵されてい
るプロセッサ10のような処理エンジンの1つの応用
は、たとえば移動体ワイヤレス電気通信装置のような電
気通信装置である。図17にこのような電気通信装置の
一例を示す。図17に示す特定の例では、電気通信装置
は、キーパッドまたはキーボード12およびディスプレ
イ14のような一体型ユーザ入力装置を有する移動体電
話機11である。ディスプレイは、たとえば液晶ディス
プレイやTFTディスプレイのような適切な技術を使用
して実現することができる。プロセッサ10はキーパッ
ド12に接続され、そこで、適切なキーボードアダプタ
(不図示)を介してディスプレイ14に接続され、そこ
で、適切なディスプレイアダプタ(不図示)を介して電
気通信インターフェイスまたはトランシーバ16、たと
えば無線周波数(RF)回路を含むワイヤレス電気通信
インターフェイスに接続されている。無線周波数回路
は、プロセッサ10を含む集積回路40に内蔵しても、
そこから分離してもよい。RF回路16はアンテナ18
に接続されている。
【0114】ソフト符号化デュアルメモリアクセス命令
を実行する処理エンジンについて説明してきた。ソフト
デュアル命令機構により2つのメモリアクセス命令を高
い符号化効率で並列に実行することができる。並列性が
増すため、消費電力を低減することができる。また、第
2の命令に対するデコーダは第1の命令に対するデコー
ダのサブセットとすることができ、シリコンリアルエス
テートが効率的に使用され、消費電力をさらに低減する
ことができる。
【0115】ここで使用した「印加される」、「接続さ
れる」および「接続」という用語は、電気的接続パス内
に付加要素がある場合も含めて、電気的に接続されるこ
とを意味する。
【0116】実施例について本発明を説明してきたが、
本明細書に制約的な意味合いはない。当業者ならば、本
明細書を読めば本発明の他のさまざまな実施例が自明で
あろう。したがって、本発明の真の範囲および精神に含
まれる実施例のこのようないかなる修正も添付した特許
請求の範囲に含まれるものとする。
【0117】本出願は欧州で1998年10月6日に出
願されたS.N.98402456.2(TI−276
85EU)および欧州で1998年10月6日に出願さ
れたS.N.98402455.4(TI−28433
EU)に優先権を請求するものである。
【図面の簡単な説明】
【図1】本発明の実施例に従ったプロセッサの略ブロッ
ク図である。
【図2】図1のプロセッサのコアの略図である。
【図3】図1のプロセッサのコアのさまざまな実行ユニ
ットのより詳細な略ブロック図である。
【図4】図1のプロセッサの命令バッファキューおよび
命令デコーダコントローラの略図である。
【図5】図1のプロセッサのパイプラインフェーズの表
現である。
【図6】図1のプロセッサにおけるパイプラインの動作
例の線図である。
【図7】図1のプロセッサのパイプラインの動作を説明
するためのプロセッサのコアの略表現である。
【図8】命令対の例を示す図である。
【図9】さまざまな命令に対するバスサイクルの相対タ
イミングを示す図である。
【図10】ソフトデュアル命令の実行例を示す図であ
る。
【図11】ソフトデュアル命令の発生を示す略図であ
る。
【図12】ソフトデュアル命令発生のフロー図である。
【図13】ソフトデュアル命令を実行する構造のブロッ
ク図である。
【図14】ソフトデュアル命令操作をインターフェイス
するメモリバスを示す図である。
【図15】ソフトデュアル命令のオペランドフェッチ制
御を示す表である。
【図16】図1のプロセッサを内蔵する集積回路の略図
である。
【図17】図1のプロセッサを内蔵する電気通信装置の
略図である。
【符号の説明】
10 マイクロプロセッサ 20 プロセッサバックプレーン 22 バックプレーンバス 24 命令キャッシュメモリ 26 周辺装置 28 外部インターフェイス 30 レジスタファイル 32 データアドレス発生サブユニット 34 ALU 36 Dユニットレジスタファイル 38 DユニットALU 40 Dユニットシフタ 42,44 累算ユニット 100 処理エンジン 102 処理コア 104 インターフェイスユニット 106 命令バッファユニット 108 プログラムフローユニット 110 アドレスデータフローユニット 112 データ通信ユニット 118 アドレスバス 120 データバス 122 プログラムリードバス 128 プログラムアドレスバス 130,132 データライトバス 140 命令定数データバス 146,148 累算器ライトギス 150,152 累算器リードバス 160,162 データライトアドレスバス 502 命令バッファキュー 504 レジスタ 512,514 命令デコーダ 520,521 マルチプレクサ 530 ライトプログラムカウンタ 532 ローカルライトプログラムカウンタ 534 リードプログラムカウンタ 536 ローカルリードプログラムカウンタ 750 Cバス 752 Dバス 754 ソフトデュアルフェッチコントローラ 755 ソフトデュアルライトコントローラ 756,782 オペランドフェッチ機構 760 Eバス 762 Fバス 790,792 データフローパス 794,796 メモリライトインターフェイス 802 デュアル復号論理 804 ソフトデュアルタグフィールド復号論理 806 フォーマット論理 808,816 マルチプレクサ 810 シングルアドレッシング論理 812 デュアルアドレッシング論理 814 論理 818 命令アライメントおよびフィールドリマッピン
グ論理 822,826 復号論理 824 命令フィールドリマッピング論理
───────────────────────────────────────────────────── フロントページの続き (72)発明者 カリム ドジャファリアン フランス国,バチマン ビー1,レ トス カヌ,ブールバール ド ラ レイヌ ジ ャンヌ,453 (72)発明者 エルブ カタン フランス国,サン ローラン デュ バ ル,コルニシュ ファネストク,1050 (72)発明者 バンサン ジレ フランス国,ル ルレ,シュマン デ ム タン,6

Claims (32)

    【特許請求の範囲】
  1. 【請求項1】 処理エンジンを含むデジタルシステムで
    あって、 前記処理エンジンが、 その実行が未決である単一の複合命令をバッファするよ
    うに動作する命令バッファと、 該命令バッファからの命令を復号するように構成されて
    いる復号機構と、を含み、 該復号機構が、別々のプログラムされたメモリ命令から
    形成された複合命令である命令を表す、命令内の所定の
    タグに応答して、少なくとも第1のプログラムされた命
    令に対する第1のデータフロー制御および少なくとも第
    2のプログラムされた命令に対する第2のデータフロー
    制御を復号する、 デジタルシステム。
  2. 【請求項2】 前記複合命令が、別々の第1および第2
    のプログラムされたメモリ命令を結合することによって
    形成される複合メモリ命令である、請求項1記載の処理
    エンジン。
  3. 【請求項3】 前記復号機構が、前記複合命令内の複合
    メモリアドレスフィールドからの第1のプログラムされ
    たメモリアドレス命令に対する第1のメモリアドレスお
    よび第2のプログラムされたメモリ命令に対する第2の
    メモリアドレスを復号するように動作する、請求項2記
    載の処理エンジン。
  4. 【請求項4】 前記複合命令の前記複合アドレスフィー
    ルドが、ハードプログラムされたデュアルメモリ命令に
    対する前記アドレスフィールドと同じビット位置であ
    る、請求項3記載の処理エンジン。
  5. 【請求項5】 前記複合命令の前記複合アドレスフィー
    ルド内の前記メモリアドレスが、間接アドレスであり、 前記復号機構が、前記間接アドレスを復号するように動
    作する、 請求項4記載の処理エンジン。
  6. 【請求項6】 前記複合命令が、該複合命令の第1のプ
    ログラムされた命令に対する分割操作符号フィールドを
    含む、請求項1記載の処理エンジン。
  7. 【請求項7】 前記復号機構が、前記所定のタグに応答
    して、前記複合命令の前記第1のプログラムされた命令
    に対する分割操作符号を復号する、請求項6記載の処理
    エンジン。
  8. 【請求項8】 前記複合命令が、その操作符号フィール
    ドが前記第1のプログラムされた命令の前記操作符号フ
    ィールドよりも少ないビットを含む前記複合命令の第1
    のプログラムされた命令に対する操作符号フィールドを
    含む、請求項7記載の処理エンジン。
  9. 【請求項9】 前記復号機構が、前記所定のタグに応答
    して、前記複合命令の前記第1のプログラムされた命令
    に対する縮小サイズ操作符号を復号する、請求項8記載
    の処理エンジン。
  10. 【請求項10】 前記複合命令が、前記別々のプログラ
    ムされた命令の前記ビットの合計と同じ総ビット数を有
    する、請求項9記載の処理エンジン。
  11. 【請求項11】 前記複合命令が、前記第1および第2
    のプログラムされたメモリ命令のデータアドレス発生
    (DAGEN)フィールドから形成された結合DAGE
    Nフィールドを有する、請求項1記載の処理エンジン。
  12. 【請求項12】 前記結合DAGENフィールドが、結
    合アドレスフィールドの一部を形成する、請求項11記
    載の処理エンジン。
  13. 【請求項13】 前記復号機構が、所定のDAGENタ
    グに応答して、前記結合DAGENフィールドを復号す
    る、請求項12記載の処理エンジン。
  14. 【請求項14】 前記第1および第2のメモリアドレス
    によって識別されるアドレスから第1および第2のオペ
    ランドを並列にフェッチするように動作するフェッチコ
    ントローラを含む、請求項1記載の処理エンジン。
  15. 【請求項15】 前記第1および第2のプログラムされ
    た命令に対する第1および第2のデータフロー操作の結
    果を並列に書き込むように動作するライトコントローラ
    を含む、請求項14記載の処理エンジン。
  16. 【請求項16】 メモリアクセス命令を明確に並列実行
    できるものと解釈することによってメモリアクセス命令
    が並列イネーブルフィールドを含まないように動作す
    る、請求項1記載の処理エンジン。
  17. 【請求項17】 メモリアクセス命令が、前記命令バッ
    ファ内の一対の命令の第1のプログラムされた命令とし
    て強制される、請求項1記載の処理エンジン。
  18. 【請求項18】 キーボードアダプタを介して前記プロ
    セッサに接続された一体型キーボードと、 ディスプレイアダプタを介して前記プロセッサに接続さ
    れたディスプレイと、 前記プロセッサに接続された無線周波数(RF)回路
    と、 該RF回路に接続されたアンテナと、 をさらに含む、請求項1記載のデジタルシステム。
  19. 【請求項19】 実行用の命令を準備する命令前処理手
    段をさらに含み、 該命令前処理手段が、別々のプログラムされたメモリ命
    令を結合して複合メモリ命令を形成するように動作す
    る、請求項1記載のデジタルシステム。
  20. 【請求項20】 処理エンジンの性能改善方法であっ
    て、 別々のプログラムされたメモリ命令から形成される複合
    命令をバッファするステップであって、該複合命令が、
    所定の複合命令タグを含むタグフィールドを含む、ステ
    ップと、 前記命令バッファ内の命令の前記タグフィールド内の前
    記所定の複合命令タグに応答して、前記複合命令から、
    少なくとも第1のプログラムされた命令に対する第1の
    データフロー制御および第2のプログラムされた命令に
    対する第2のデータフロー制御を復号するステップと、 を含む、方法。
  21. 【請求項21】 別々の第1および第2のプログラムさ
    れたメモリ命令を結合して前記複合命令を形成するステ
    ップをさらに含む、請求項20記載の方法。
  22. 【請求項22】 少なくとも前記複合命令の複合アドレ
    スフィールドからの前記第1のプログラムされたメモリ
    命令に対する第1のメモリアドレスおよび前記第2のプ
    ログラムされたメモリ命令に対する第2のメモリアドレ
    スを復号するステップをさらに含む、請求項20記載の
    方法。
  23. 【請求項23】 ハードプログラムされたデュアルメモ
    リ命令に対する前記アドレスフィールドと同じビット位
    置からの前記複合命令の前記複合アドレスフィールドを
    復号するステップをさらに含む、請求項22記載の方
    法。
  24. 【請求項24】 前記複合命令の第1の命令に対する分
    割操作符号を復号するステップをさらに含む、請求項2
    0記載の方法。
  25. 【請求項25】 前記複合命令の前記第1の命令に対す
    る縮小サイズ操作符号を復号するステップをさらに含
    む、請求項24記載の方法。
  26. 【請求項26】 前記応答ステップが、前記第1および
    第2のプログラムされたメモリ命令のデータアドレス発
    生(DAGEN)フィールドから形成される結合DAG
    ENフィールドを復号するステップを含む、請求項21
    記載の方法。
  27. 【請求項27】 前記結合DAGENフィールドが、結
    合アドレスフィールドの一部を形成する、請求項26記
    載の方法。
  28. 【請求項28】 前記復号機構が、所定のDAGENタ
    グに応答して、前記結合DAGENフィールドを復号す
    る、請求項26記載の方法。
  29. 【請求項29】 第1および第2のメモリアドレスから
    それぞれ識別されるアドレスから第1および第2のオペ
    ランドを並列にフェッチするステップをさらに含む、請
    求項22記載の方法。
  30. 【請求項30】 前記複合命令の第1および第2のプロ
    グラムされた命令に対する第1および第2のデータフロ
    ー操作の結果を並列に書き込むステップを含む、請求項
    29記載の方法。
  31. 【請求項31】 前記結合ステップが、前記別々のプロ
    グラムされたメモリ命令を前記複合命令のアセンブリの
    前に結合できるかどうかを決定するステップを含む、請
    求項21記載の方法。
  32. 【請求項32】 前記結合ステップが、 プログラムされたメモリ命令が結合できることを決定す
    るステップと、 該決定されたプログラムされたメモリ命令を結合して複
    合メモリ命令を形成するステップと、をさらに含む、 請求項31記載の方法。
JP11321534A 1998-10-06 1999-10-06 複合メモリアクセス命令 Pending JP2000215061A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP98402456.2A EP0992892B1 (en) 1998-10-06 1998-10-06 Compound memory access instructions
EP98402456.2 1998-10-06

Publications (1)

Publication Number Publication Date
JP2000215061A true JP2000215061A (ja) 2000-08-04

Family

ID=8235513

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11321534A Pending JP2000215061A (ja) 1998-10-06 1999-10-06 複合メモリアクセス命令

Country Status (2)

Country Link
EP (1) EP0992892B1 (ja)
JP (1) JP2000215061A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7234042B1 (en) * 1999-07-14 2007-06-19 Broadcom Corporation Identification bit at a predetermined instruction location that indicates whether the instruction is one or two independent operations and indicates the nature the operations executing in two processing channels

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5168143B2 (ja) * 2006-06-15 2013-03-21 日本電気株式会社 プロセッサ、および、命令制御方法
CN102436781B (zh) * 2011-11-04 2014-02-12 杭州中天微系统有限公司 基于隐式相关性和隐式旁路的微处理器指令拆分装置
US11204768B2 (en) 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4439828A (en) * 1981-07-27 1984-03-27 International Business Machines Corp. Instruction substitution mechanism in an instruction handling unit of a data processing system
DE68926701T2 (de) * 1988-08-09 1997-02-20 Matsushita Electric Ind Co Ltd Datenverarbeitungsgerät zur parallelen Dekodierung und parallelen Ausführung von Befehlen mit variabler Wortlänge
JP2835103B2 (ja) * 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
EP0454985B1 (en) * 1990-05-04 1996-12-18 International Business Machines Corporation Scalable compound instruction set machine architecture
EP0498067A2 (en) * 1991-02-08 1992-08-12 International Business Machines Corporation Microcode generation for a scalable compound instruction set machine

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7234042B1 (en) * 1999-07-14 2007-06-19 Broadcom Corporation Identification bit at a predetermined instruction location that indicates whether the instruction is one or two independent operations and indicates the nature the operations executing in two processing channels

Also Published As

Publication number Publication date
EP0992892B1 (en) 2015-12-02
EP0992892A1 (en) 2000-04-12

Similar Documents

Publication Publication Date Title
EP0992907B1 (en) Trace fifo management
KR100236527B1 (ko) 벡터 레지스터의 복수 뱅크를 사용한 단일 명령복수 데이터 처 리
JP3741551B2 (ja) データ処理装置
US6810475B1 (en) Processor with pipeline conflict resolution using distributed arbitration and shadow registers
JP2834837B2 (ja) プログラマブルコントローラ
EP0782071A2 (en) Data processor
US20070283356A1 (en) Multi-threaded processor with deferred thread output control
EP0901071A2 (en) Method and apparatus for interfacing a processor to a coprocessor
KR20100017744A (ko) 콤팩트 명령 세트 인코딩
US6260134B1 (en) Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte
JP2000276351A (ja) ローカル命令ルーピングを有するプロセッサ
EP1089167A2 (en) Processor architecture for executing two different fixed-length instruction sets
US6502152B1 (en) Dual interrupt vector mapping
US20030074543A1 (en) A processor with apparatus for verifying instruction parallelism
JP2000305779A (ja) パイプライン保護
US6681319B1 (en) Dual access instruction and compound memory access instruction with compatible address fields
JP4502532B2 (ja) データ処理装置
JP2000215061A (ja) 複合メモリアクセス命令
EP1499956B1 (en) Method and apparatus for swapping the contents of address registers
KR19980018065A (ko) 스칼라/벡터 연산이 조합된 단일 명령 복수 데이터 처리
EP1625492A1 (en) Methods and apparatus for instruction alignment
CN111813447B (zh) 一种数据拼接指令的处理方法和处理装置
JP2000215059A (ja) 命令並列性検証装置付きプロセッサ
EP0992889A1 (en) Interrupt processing during iterative instruction execution
JP2000322408A (ja) 線形ベクトル計算