[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP3431397B2 - 命令キュー - Google Patents

命令キュー

Info

Publication number
JP3431397B2
JP3431397B2 JP12856096A JP12856096A JP3431397B2 JP 3431397 B2 JP3431397 B2 JP 3431397B2 JP 12856096 A JP12856096 A JP 12856096A JP 12856096 A JP12856096 A JP 12856096A JP 3431397 B2 JP3431397 B2 JP 3431397B2
Authority
JP
Japan
Prior art keywords
instruction
information
storage device
data
order
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.)
Expired - Fee Related
Application number
JP12856096A
Other languages
English (en)
Other versions
JPH09311785A (ja
Inventor
義和 小川
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP12856096A priority Critical patent/JP3431397B2/ja
Priority to US08/861,534 priority patent/US5911058A/en
Publication of JPH09311785A publication Critical patent/JPH09311785A/ja
Application granted granted Critical
Publication of JP3431397B2 publication Critical patent/JP3431397B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サに備えられて、プリフェッチされた一定量の命令を記
憶する命令キューに関する。
【0002】
【従来の技術】命令キューを備えたマイクロプロセッサ
の構成の一例を図5に示す。
【0003】図5において、従来のマイクロプロセッサ
の基本構成は、命令およびデータを保持するメインメモ
リ100と、メインメモリ100内の命令記憶領域の一
部を保持しアクセスが高速な命令キャッシュ200と、
メインメモリ100あるいは命令キャッシュ200から
命令を取り出す命令フェッチユニット300と、命令フ
ェッチユニット300から供給される命令を実行可能な
形式にデコードする命令デコーダ400と、命令デコー
ダ400から供給される実行形式の命令コードに従って
実行を行う実行ユニット500と、実行に必要なデータ
を保持するレジスタファイル600と、メインメモリ1
00のデータ記憶領域あるいはメインメモリ100のデ
ータ記憶領域の一部を保持しアクセスが高速なデータキ
ャッシュ700とを備えている。
【0004】また、実行ユニット500は、分岐命令を
実行するブランチ510、演算命令を実行するALU5
20、シフト命令を実行するシフタ530、ロード命令
を実行するロード540、ストア命令を実行するストア
550の各ユニットにより構成されている。レジスタフ
ァイル600のデータは、実行ユニット500の制御に
よってデータキャッシュ700とロードあるいはストア
が行われる。
【0005】上記の基本構成に加えて、命令デコーダ4
00と実行ユニット500との間には命令キュー800
が配置されている。命令キュー800はバッファ機能を
有している。例えば、可変長命令のフェッチ、つまり命
令によってフェッチに要する時間が異なり命令デコーダ
400からの実行形式に変換された命令が連続して供給
さない状況下で、時間のギャップを埋め実行ユニット5
00へ連続して命令供給を行い性能向上を図る機能を有
する。
【0006】従来の命令キューの一例として図6に構成
を示す。
【0007】図6に示す命令キューは、6段の命令キュ
ーを一例としているが、6段に限らず何段の命令キュー
も同様に構成できる。
【0008】図6の構成例は、命令デコーダ400から
供給される命令コードを記憶する命令記憶装置810
と、命令記憶装置810内の書き込み先を選択する書き
込みデコーダ820と、命令記憶装置810内の読み出
し先を選択する読み出しデコーダ840と、書き込み動
作を制御する書き込み制御装置860と、読み出し動作
を制御する読み出し制御装置865と、書き込みデコー
ダ820へ書き込み先の選択情報を供給するカウンタ8
70と、読み出しデコーダ840へ読み出し先の選択情
報を供給するカウンタ875と、命令デコーダ400か
ら供給される命令コードを書き込み制御装置860から
の制御に従って命令記憶装置810に供給する入力バッ
ファ880と、命令記憶装置810から出力される命令
を読み出し制御装置865に従って実行ユニット500
へ出力する出力バッファ885と、命令記憶装置810
に格納されている命令の有効/無効を示す命令有効記憶
装置890と、命令有効記憶装置890が全て有効で命
令記憶装置810内が満杯であることを検出する全有効
検出回路1000と、命令有効記憶装置890が全て無
効で命令記憶装置810内が全て空であることを検出す
る全無効検出回路1005を備えて構成される。
【0009】図6に示す構成において、初期状態とし
て、リセット信号によりカウンタ870および875は
同値に、命令有効記憶装置890は全て“0”となり、
命令記憶装置810内は空の状態であるとして動作の説
明を行う。
【0010】始めに、書き込み動作の説明を行う。命令
デコーダ400から書き込み要求信号と書き込み命令が
供給されると、書き込みデコーダ820は、カウンタ8
70から選択情報線871を介して供給されるアドレス
情報に基づいて命令記憶装置810の書き込み先を書き
込み選択線821〜826を介して指定する。また、書
き込み制御装置860は入力バッファ880にライトイ
ネーブル信号を信号線862を介して供給し、命令記憶
装置810の指定されたアドレスに書き込み命令を入力
する。同時に、書き込みデコーダ820は、命令書き込
み有効線831〜836により命令書き込みの行われた
命令記憶装置810内のアドレスに対応する命令有効記
憶装置890のフリップフロップ891〜896に対し
て、書き込まれた命令が有効であることを示す有効デー
タ“1”をORゲート901〜906を介してセットす
る。また、書き込み制御装置860は信号線861を介
してカウンタ870を一つカウントアップする。
【0011】命令の書き込みは、書き込み要求と書き込
み命令が供給されれば命令記憶装置810に空きがある
限り続けられる。命令記憶装置810が満杯になった場
合には、命令有効記憶装置890は全て有効で命令記憶
装置810内が満杯であることを全有効検出回路100
0が検出し、書き込み制御装置860へ書き込み禁止を
要求する。書き込み禁止を要求された書き込み制御装置
860は、書き込み命令および書き込み要求が命令デコ
ーダ400から要求されても入力バッファ880に対し
てライトイネーブル信号を供給せず、書き込み要求を却
下する。
【0012】命令記憶装置810から命令の読み出し等
が行われ、空きが生じると全有効検出回路1000から
の書き込み禁止要求は取り消され、書き込み制御装置8
60は入力バッファ880に対してライトイネーブル信
号を供給し、命令デコーダ400からの要求に応答し、
命令の書き込みを行う。
【0013】次に、読み込み動作であるが、実行ユニッ
ト500から読み出し要求があると、読み出しデコーダ
840は、カウンタ875から選択情報線876を介し
て供給されるアドレス情報に基づいて命令記憶装置81
0の読み出し先を読み出し選択線841〜846を介し
て指定する。また、読み出し制御装置865は出力バッ
ファ885にリードイネーブル信号を信号線867を介
して供給し、命令記憶装置810の指定されたアドレス
から命令を読み出す。同時に、読み出しデコーダ840
は、命令読み出しの行われた命令記憶装置810のアド
レスに対応する命令有効記憶装置890のフリップフロ
ップ891〜896に対して、読み出しにより無効であ
ること示す無効データ“0”を命令読み出し無効線85
1〜856を介してセットする。また、読み出し制御装
置865は信号線866を介してカウンタ875を一つ
カウントアップする。
【0014】命令の読み出しは、読み出し要求があれば
命令記憶装置810に有効な命令がある限り続けられ
る。命令記憶装置810内が全て空になった場合には、
命令有効記憶装置890は全て無効で命令記憶装置81
0内が全て空であることを全無効検出回路1005が検
出し、読み出し制御装置865へ読み出し禁止を要求す
る。
【0015】読み出し禁止を要求された読み出し制御装
置865は、実行ユニット500から読み出しを要求さ
れても、出力バッファ885に対してリードイネーブル
信号を供給せず、読み出し要求を却下する。命令記憶装
置810内に命令の書き込みが行われて有効命令が1つ
でも存在すると、全無効検出回路1005からの読み出
し禁止要求は取り消され、読み出し制御装置865は出
力バッファ885に対してリードイネーブル信号を供給
し、実行ユニット500からの要求に応答して命令の読
み出しを行う。
【0016】一方、例外発生または分岐命令の実行で分
岐が成立し、命令記憶装置810の有効な命令が不要に
なった場合には、リセット信号により命令有効記憶装置
890は全て“0”にクリアされる。
【0017】以上の説明から明らかなように、命令記憶
装置810への命令の書き込みおよび読み込みは独立し
て行うことが可能であり、書き込み用のカウンタ870
に追従して読み出し用のカウンタ875が動作すること
から書き込まれた順番に読み出しが行われる。また、命
令記憶装置810が満杯ならば書き込み要求は却下さ
れ、命令記憶装置810が全て空ならば読み出し要求は
却下される。
【0018】次に、このような構成における不具合を説
明するにあたって、図5に示すマイクロプロセッサ及び
図6に示す命令キューでは、以下に示す条件で動作する
ものとする。
【0019】図5に示すマイクロプロセッサにおいて、
命令フェッチユニット300は命令キャッシュ200に
ヒットし命令を取り出す場合は2命令/2サイクル、命
令キャッシュ200に対してキャッシュミスした場合に
は、メインメモリ100から命令の取り出しに2命令/
4サイクルが必要であるとする。また、実行ユニット5
00内の各実行ブロックにおいて、ブランチ510、ロ
ード540、ストア550の実行完了に要する時間は2
サイクル/1命令、ALU520,シフタ530は実行
完了に1サイクル/1命令とする。さらに、実行ユニッ
ト500内で命令が完了しない限り命令キュー800へ
の読み出し要求は行わないものとする。
【0020】また、図6に示す命令キューでは、書き込
み要求と読み出し要求は同時に発生せず、例えばクロッ
ク信号に同期して前半読み出し要求、後半書き込み要求
といった方式で、双方の要求が連続しても交互に発生し
同時発生しないものとする。
【0021】以上のことから、命令フェッチユニット3
00の命令取り出しにおいて、命令キャッシュ200に
ヒットしている時は、命令デコーダ400に対して毎サ
イクル命令を供給することが可能である。従って、命令
デコーダ400は、命令キュー800に対して毎サイク
ル命令の書き込み要求を行う。実行ユニット500はA
LU520、シフタ530が実行する命令が連続する場
合は、実行が1サイクルで完了するため、命令キュー8
00に対して読み出し要求を毎サイクル行うことにな
る。
【0022】一方、ロード、ストアのように実行に2サ
イクルかかる命令が実行される場合には、命令キュー8
00に対して読み出し要求を行わないサイクルが存在す
ることになる。その間は、命令デコーダ300から毎サ
イクル供給される命令は命令キュー800に格納される
ことになる。
【0023】命令フェッチユニット300の命令取り出
しにおいて、命令キャッシュ200に対してキャッシュ
ミスした場合は、命令キャッシュ200のリフィルが開
始され、命令フェッチユニット300が命令キャッシュ
200からの命令取り出しが可能になるまで、命令デコ
ーダ400に対して4サイクル中2サイクル命令供給で
きない期間が生じる。
【0024】一方、分岐命令の実行において、分岐成立
した場合には命令フェッチユニット300は分岐命令実
行における飛び先アドレス計算の結果に基づいて、命令
取り出しアドレスを変更し命令取り出しを再開する。そ
の際、命令キャッシュ200に対してキャッシュミスす
る確率は極めて高く、分岐成立後に実行される命令は、
メインメモリ100からの命令取り出し又は実行ユニッ
ト500からの読み出し要求に対して命令供給ができな
い場合が生ずる。
【0025】また、分岐命令が命令デコーダ400へ供
給されてから、命令キュー800へ供給され、命令キュ
ー800に格納された先行命令の実行ユニット500へ
の読み出し順を待ち、実行ユニット500中のブランチ
510へ供給されて分岐成立が確定するまでの間、実行
されない無駄な命令が命令フェッチユニット300から
取り込まれ、命令キュー800に蓄えられることにな
る。
【0026】以上の説明で示された分岐ペナルティによ
り、CPI(Clock cycle per Instruction )の低下を
招き、性能が低下するといった問題が生じていた。
【0027】
【発明が解決しようとする課題】以上説明したように、
命令キャッシュならびに命令キューを備えた従来のマイ
クロプロセッサにおいて、分岐命令が実行されて分岐が
成立した場合には、分岐成立後に実行される命令を命令
キューに格納するために、命令キャッシュにアクセスし
なければならないが、このアクセスにおいてキャッシュ
ミスし所望の命令をフェッチすることができない確率は
極めて高い。このため、命令キューに所望の命令が格納
される間での間は、メインメモリから直接アクセスして
命令キューに格納し実行ユニットに供給しなければなら
ず、このアクセスにかなり時間がかかり、分岐後に実行
される命令を実行ユニットに迅速に供給することができ
なかった。
【0028】一方、分岐命令が命令デコーダに供給され
た後命令キューに保持され実行ユニニットに供給されて
分岐が確定するまでの間に、分岐命令の後続の命令が順
次フェッチされて命令キューに蓄えられることになる。
しかし、分岐が成立した場合には、これらの蓄えられた
命令は実行されず無駄な命令となる。
【0029】これらのことから、分岐命令の実行時には
マイクロプロセッサの実行効率が低下するといった不具
合を招いていた。
【0030】そこで、この発明は、上記に鑑みてなされ
たものであり。その目的とするところは、分岐命令がフ
ェッチされた際に、それまでフェッチされていた、分岐
命令に依存しない命令を分岐命令の後続として実行する
判別を迅速に行い、分岐先命令がフェッチされるまでの
間に後続とした命令を実行し、マイクロプロセッサの分
岐命令実行時における実行効率を向上させた命令キュー
を提供することにある。
【0031】
【課題を解決するための手段】上記目的を達成するため
に、請求項1記載の発明は、プリフェッチされた所定量
の命令を記憶する命令記憶装置に書き込まれる命令と、
前記命令記憶装置に記憶されている命令とのデータ依存
関係を検出するデータ依存検出装置と、前記命令記憶装
置に書き込まれる命令が分岐命令であることを検出する
分岐命令検出装置と、前記分岐命令検出装置によって前
記命令記憶装置に書き込まれる命令が分岐命令であるこ
とが検出されると、前記データ依存検出装置によって検
出されたデータ依存関係に基いて前記命令記憶装置に記
憶されている命令の内分岐命令に依存しない命令を検出
し、検出した命令を分岐命令の後続に前記命令記憶装置
から読み出すオーダ制御装置と、分岐が成立するまでに
前記命令記憶装置に記憶され命令を無効化する際に、
前記オーダ制御装置によって検出された分岐命令に依存
しない命令を無効化の対象から除外する命令無効マスク
装置とを有することを特徴とする。
【0032】請求項2記載の発明は、請求項1記載の発
明において、前記オーダ制御装置は、前記分岐命令検出
装置における分岐命令の検出結果と、前記データ依存検
出装置によって検出されたデータ依存関係を示すデータ
依存情報とに基いて、前記命令記憶装置に記憶されてい
る命令と分岐命令とのデータ依存関係を示す分岐命令デ
ータ依存情報を生成する分岐命令データ依存情報生成装
置と、前記命令記憶装置における命令の読み出し又は書
き込みにしたがって前記命令記憶装置に記憶されている
命令の読み出し順位を決定するオーダ情報を生成記憶
し、前記分岐命令データ依存情報生成装置から与えられ
る分岐命令データ依存情報に基いて分岐命令に依存しな
い命令が分岐命令の後続に前記命令記憶装置から読み出
されるようにオーダ情報を変更するオーダ情報保持装置
とを有して構成される。
【0033】請求項3記載の発明は、請求項2記載の発
明において、前記分岐命令データ依存情報生成装置は、
データ依存情報を保持するデータ依存情報保持装置と、
前記データ依存情報保持装置に保持されたデータ依存情
報と前記データ依存検出装置から与えられるデータ依存
情報に基いて、データ依存情報を生成し、前記データ依
存情報保持装置に保持するデータ依存情報生成装置と、
前記データ依存情報保持装置に保持されたデータ依存情
報と前記分岐命令検出装置における分岐命令の検出結果
に基いて、前記命令記憶装置に記憶された命令の分岐命
令データ依存情報を発生する分岐命令データ依存情報発
生装置と、前記データ依存検出装置から与えられるデー
タ依存情報に基づいて、前記データ依存情報生成装置に
よって生成されたデータ依存情報の前記データ依存情報
保持装置における保持を指定制御するデータ依存保持情
報指定装置とを有して構成される。
【0034】請求項4記載の発明は、請求項2記載の発
明において、前記オーダ情報保持装置は、前記命令記憶
装置に記憶された命令の読み出し順位を決定するオーダ
情報を記憶し、記憶されたオーダ情報に基いて前記命令
記憶装置の書き込みアドレスを指定するオーダ情報配列
記憶装置と、前記命令記憶装置に記憶された命令間の読
み出し順位として先行関係を示すオーダ情報を前記オー
ダ情報配列記憶装置に供給する先行命令情報入力装置
と、前記命令記憶装置に記憶された命令間の読み出し順
位として後続関係を示すオーダ情報を前記オーダ情報配
列記憶装置に供給する後続命令情報入力装置と、前記先
行命令情報入力装置及び前記後続命令情報入力装置から
前記オーダ情報配列記憶装置へのオーダ情報の入力を制
御し、前記オーダ情報配列記憶装置に記憶されたオーダ
情報を変更して前記命令記憶装置から読み出される命令
の読み出し順位を変更するオーダー情報書き込み許可装
置と、前記オーダ情報配列記憶装置に記憶されたオーダ
情報に基いて前記命令記憶装置から読み出される命令を
選択する選択信号を生成する読み出し選択信号生成装置
とを有して構成される。
【0035】
【発明の実施の形態】以下、図面を用いて本発明の実施
形態を説明する。
【0036】図1は請求項1記載の発明の一実施形態に
係る命令キューの構成を示す図である。なお、図1にお
いて、図6と同符号のものは同一物であり、その説明は
省略する。
【0037】図1に示す実施形態の構成では、図6に示
す命令キュー800が備えている構成の内、書き込みア
ドレスを指定するカウンタ870と読み出しアドレスを
指定するカウンタ875を省き、命令記憶装置810内
の命令が使用するディスティネーションレジスタ番号を
示す命令コード部分と後続命令が使用するソースおよび
ディスティネーションレジスタ番号を示す命令コード部
分を比較し、データ依存関係を検出するデータ依存検出
装置1100と、命令記憶装置810に次に書き込みが
行われる命令が分岐命令であることを検出する分岐命令
検出装置1200と、図6に示すカウンタ870,87
5の機能に相当する機能を有し、かつ分岐命令にデータ
依存関係にない命令を分岐命令の後続で実行するよう命
令の読み出し順序を制御するオーダ制御装置1300
と、分岐成立時等で命令記憶装置810中命令を無効に
する際、指定されたアドレスの命令を無効にする処理を
マスクする命令無効信号マスク装置1400を加えて構
成される。
【0038】データ依存検出装置1100は、書き込み
命令および書き込み要求が命令デコーダ400より供給
されると、書き込み命令の命令記憶装置810内の有効
命令に対するデータ依存関係を検出し、信号線1110
を介して結果をオーダ制御装置1300へ入力する。デ
ータ依存関係の検出は、書き込みの指定する全てのレジ
スタ情報、つまりソースおよびディスティネーションレ
ジスタ情報と命令記憶装置810内の有効命令のディス
ティネーションレジスタ情報を比較して依存関係を検出
する。
【0039】書き込み命令のソースレジスタ情報と命令
記憶装置810内の有効命令のディスティネーションレ
ジスタ情報の比較を行うのは、RAW(Read After Wri
te)ハザードの検出を意味する。また、書き込み命令の
ディスティネーションレジスタ情報と命令記憶装置81
0内の有効命令のディスティネーションレジスタ情報の
比較を行うのは、WAR(Write After Read)ハザー
ド、WAR(Write After Write )ハザードの検出を意
味する。
【0040】分岐命令検出装置1200は、命令デコー
ダ400より供給される書き込み命令のオペレーション
コードをチェックし、供給された命令が分岐命令であれ
ば、書き込みされる命令が分岐命令であることを示す分
岐命令検出信号BIを信号線1210を介してオーダ制
御装置1300へ入力し、書き込み命令が分岐命令であ
ることを伝える。
【0041】オーダ制御装置1300は、データ依存検
出装置1100からの書き込み命令のデータ依存情報
を、命令記憶装置810の書き込み時、命令が書き込ま
れたアドレスに対応するデータ依存情報記憶領域に情報
を保持する。このデータ依存情報は、その書き込まれた
命令が読み出されるか、分岐成立等による実行ユニット
500から供給されるディセーブル信号により命令が無
効になるまで、有効な情報として存在する。
【0042】記憶されているデータ依存情報が有効か無
効かは、命令有効記憶装置890より命令記憶装置81
0のどのアドレスの命令が有効であるかを示す有効命令
情報を信号線897を介してオーダ装置1300へ供給
し、その情報を元に判断する。
【0043】また、オーダ制御装置1300は、命令記
憶装置810内の命令記憶されるアドレス毎に、オーダ
情報(命令発行優先度情報)を保持しており、命令記憶
装置810内の各命令同士がどの命令の読み出し後に読
み出し可能かを示す情報を保持する。この命令発行優先
度情報は、書き込み制御装置860からのライトイネー
ブル信号が供給された時点で、オーダ制御装置1300
自身が命令記憶装置810のどのアドレスを指定したか
によって命令発行優先度情報を生成する。
【0044】これは、命令が書き込みされたアドレスの
命令発行優先度情報として、最も優先度が低いという情
報を対応する命令発行優先度情報保持領域に入力し、他
のアドレスの命令発行優先度情報保持領域に、書き込み
が行われたアドレスよりも優先度が高いという情報を入
力することで可能になる。
【0045】命令の読み出しは、読み出し制御装置86
5から信号線868を介してリードイネーブル信号の入
力がある度に、命令発行優先度情報に従ってオーダ制御
装置1300は命令読み出しアドレスを指定する。ま
た、命令発行優先度情報は、命令記憶装置810内の命
令が無効なアドレスに関する情報は無効であり、命令有
効記憶装置890を介して信号線897を介して与えら
れる命令記憶装置810のどのアドレスの命令が有効で
あるかを示す有効命令情報を元に判断する。
【0046】分岐命令検出装置1200から分岐命令検
出信号BIが供給されると、オーダ制御装置1300
は、データ依存情報記憶領域の情報を元に命令記憶装置
810内の有効命令全てと書き込みされる分岐命令との
データ依存関係情報を生成する。分岐命令書き込みの際
に、書き込みアドレスに対応する命令発行優先度情報保
持領域に対し最も優先度が低いという情報を通常命令と
同様に入力し、他のアドレスに対応する命令発行優先度
情報保持領域へ書き込みが行われたアドレスよりも優先
度が高いという情報を入力する際、生成した分岐命令デ
ータ依存情報を元に、依存関係の無い命令に関して分岐
命令読み出し後、命令発行可能となるよう命令発行優先
度情報を操作する。
【0047】以上の機能を有することにより、分岐命令
にデータ依存関係の無い命令キュー800内の命令を分
岐命令読み出し後の読み出しとなるよう命令発行順を制
御することが可能となる。
【0048】図6に示す従来例では、例外発生または分
岐命令の実行で分岐成立し、命令記憶装置810内の有
効な命令が不要になった場合には、リセット信号により
命令有効記憶装置890は全て“0”にクリアされてい
たが、この実施形態では、分岐成立時の場合には、分岐
命令にデータ依存関係に無い命令は後続で実行されるた
め、後回しになった命令に関しては命令有効記憶装置8
90はクリアしないように制御する必要がある。
【0049】命令無効信号マスク装置1400はその機
能を有し、オーダ制御装置1300から分岐命令データ
依存情報(ディセーブルマスク)が供給され、その情報
を元に分岐命令に依存しない命令のアドレスに対応する
命令無効信号マスク装置1400内の無効情報記憶領域
1401〜1406をセットし、分岐成立時における命
令有効記憶装置890に対するクリア動作から除外す
る。
【0050】上述した機能の追加により、分岐命令にデ
ータ依存しない命令キュー800内の命令を分岐命令の
後続で実行することが可能となる。
【0051】データ依存検出装置1100の実現方法と
しては、命令コード中のレジスタコード領域を全て統一
し、命令記憶装置810内のディスティネーションレジ
スタコード領域の記憶部をCAM(Content Addressabl
e Memory)により構成し、各ビットを列検索可能にすれ
ば容易に実現可能である。
【0052】分岐命令検出装置1200については、分
岐命令のオペレーションコードは決まっており、分岐命
令検出装置1200内でそのコード情報と書き込み命令
のオペレーションコードの比較をコンパレータにより実
現するだけである。無効信号マスク装置1400につい
ては、分岐命令データ依存情報とディセーブル信号を入
力とするANDゲートとこのANDゲートの出力で制御
されるフリップフロップを配置するだけで実現可能であ
る。
【0053】以降、オーダ制御装置1300の実現方法
の一構成例について説明する。
【0054】図2はオーダ制御装置1300の全体構成
を示しており、命令発行優先度情報を保持すると共に、
保持している命令発行優先度情報を元に読み出しデコー
ダ840および書き込みデコーダ820へ命令記憶装置
810のアドレス指定情報を供給する機能を有するオー
ダ情報保持装置2000と、データ依存検出装置110
0からのデータ依存情報により命令記憶装置810内の
有効命令毎のデータ依存情報を保持すると共に、分岐命
令の命令記憶装置810内の全ての有効命令に対するデ
ータ依存情報を生成し、その情報を命令無効信号マスク
装置1400およびオーダ制御装置1300内のオーダ
情報保持装置2000へ供給する機能を有する分岐命令
データ依存情報生成装置2100の大きく分けて2つの
装置により構成される。
【0055】始めに、オーダ情報保持装置2000につ
いて説明する。
【0056】オーダ情報保持装置2000は、命令記憶
装置810の各アドレスに対応するオーダ情報を保持す
るオーダ情報配列記憶装置2010と、オーダ情報配記
憶装置2010の各列に対して先行命令情報を供給する
先行命令情報入力装置2020と、オーダ情報配列記憶
装置2010の各行に対して後続命令情報を供給する後
続命令情報入力装置2030と、先行命令情報入力装置
2020および後続命令情報入力装置2030の供給情
報をオーダ情報配列記憶装置2010の各行毎に書き込
みを許可するオーダ情報書き込み許可装置2040と、
オーダ制御装置1300に格納されたオーダ情報に基づ
いて読み出しデコーダ840に与えられる読み出し選択
信号を生成する読み出し選択信号生成装置2050を備
えて構成される。
【0057】オーダ情報配列記憶装置2010の配列
(行×列)における行及び列のサイズは、命令記憶装置
810が保持できる命令数と同じサイズが必要である。
本実施形態では、一例として命令記憶装置810に最大
6命令保持することを可能とし、オーダ配列記憶部20
30のサイズは6行6列で構成されているものとして説
明を進める。
【0058】図3には最大6命令保持可能な命令記憶装
置810の構成を示す。
【0059】オーダ情報配列記憶装置2010の配列
は、(行、列)という形式で各ビット示すことにする。
1行が命令記憶装置810の1命令分のデータ依存情報
を保持する。説明を容易にするため、命令記憶装置81
0の各命令保持部のアドレスを1から6としてアドレス
1に対応する行は(1,*)という対応になっているも
のとする。また、例えば配列(2,3)=1が記憶され
ている場合は、アドレス2の命令はアドレス3の命令よ
りも後続命令であることを示すものとし、配列(2,
3)=0が記憶されている場合には、アドレス2の命令
はアドレス3の命令よりも先行命令であることを示すと
いうように、配列全てが同様であるものとする。
【0060】なお、図3において、論理ゲート202
7,2028,2051,2061,2062,206
3,2064はオーダ情報配列記憶装置2010の配列
に対応してそれぞれ6個設けられており、オーダ情報配
列記憶装置2010の1行目は先行命令情報入力装置2
020の記憶領域2021に信号線2011を介して接
続され、以下同様に2行目は記憶領域2022に接続さ
れ、オーダ情報配列記憶装置2010の6行目は先行命
令情報入力装置2020の記憶領域2026に信号線2
011を介して接続されている。
【0061】始めに、オーダ情報配列記憶装置201
0、先行命令情報入力装置2020、後続命令情報入力
装置2030のみでオーダ情報配列記憶装置2010の
基本的な動作を説明する。
【0062】オーダ情報書き込み許可装置2040は、
“1”が入力されると対応する行への書き込みを許可す
るものとし、“0”が入力されると行への書き込みは不
可であるとする。基本動作説明では、オーダ情報書き込
み許可装置2040はオール“1”とし、以降の説明で
オーダ情報配列記憶装置2010の保持する情報を以下
に示す形式で説明する。
【0063】 000000 (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) 000000 (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) 000000 (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) 000000 (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) 000000 (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) 000000 (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) 例えば、配列(1,3)=1でその他配列=0であれ
ば、 001000 (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) 000000 (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) 000000 (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) 000000 (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) 000000 (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) 000000 (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) という対応になっているものとする。
【0064】初期状態として、リセット動作により、 011111 (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) 001111 (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) 000111 (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) 000011 (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) 000001 (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) 000000 (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) となるものとする。また、命令記憶装置810内は空の
状態である。上記のリセット状態は、6行目に対応する
命令が優先度が高く、順に5行目、4行目、・・・、1
行目の順で優先度が低いことを意味する。
【0065】始めに、書き込み動作を説明する。
【0066】信号線1310からの書き込み選択信号
は、各行がオール“0”になった場合に出力され、上記
の状態では6行目がオール“0”であり、アドレス6が
書き込み選択信号として出力される。命令記憶装置81
0へ書き込み選択信号に従って指定されるアドレス6へ
命令が書き込まれると、6行目に後続命令情報として6
行全て、つまり配列(6,*)へ“1”を書き込む。行
にオール“1”を書き込む動作は、その行の命令が新た
に書き込まれた命令で、命令記憶装置810内の有効命
令で書き込まれた順序が最後であることを示すことにな
る。行への“1”書き込みは、後続命令情報入力装置2
030に“1”が入力されたビットに対応する行に書き
込まれ、この場合、後続命令情報入力装置2030の情
報入力領域2036へ“1”が入力される。
【0067】後続命令情報入力装置2030に対する
“1”入力は書き込まれたアドレスに対応する行に書き
込むことになるので、書き込み選択信号をそのまま入力
信号とすればよく、図3に示す構成では、書き込み選択
信号は信号線2011、ANDゲート2061、および
信号線2013を介して信号線863bより供給される
ライトイネーブル信号に同期して入力される。
【0068】一連の動作として、行に後続命令情報を書
き込んだ後、他の行に対し6行目に書き込まれた命令よ
りも先行命令である情報を書き込む。それは、6列目全
て、つまり配列(*,6)へ“0”を書き込む。列へオ
ール“0”の書き込みは、先行命令情報入力装置202
0内の“0”書き込みを行う列に対応するビットに
“1”が入力された場合に書き込みが行われる。この場
合、先行命令情報入力装置2020内の情報入力領域2
026へ書き込み選択信号により“1”がセットされ、
信号線863Cよりバッファ2028に供給されるライ
トイネーブル信号の反転信号に同期して6列目に“0”
書き込みが行われる。
【0069】以上の動作が完了した時のオーダ情報配列
記憶装置2010の状態は以下のようになる。
【0070】 011110 (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) 001110 (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) 000110 (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) 000010 (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) 000000 (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) 111110 (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) これにより、5行目がオール“0”となり、書き込み選
択信号は命令記憶装置810のアドレス5を示すことに
なる。アドレス6へ命令書き込みされた動作と同様にア
ドレス5へ命令書き込みがあると、 011100 (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) 001100 (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) 000100 (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) 000000 (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) 111101 (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) 111100 (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) となり、4行目がオール“0”となる。以降同様な動作
を繰り返すと、アドレス4への命令書き込みでは、 011000 (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) 001000 (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) 000000 (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) 111011 (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) 111001 (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) 111000 (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) で3行目がオール“0”となり、書き込み要求があると
アドレス3へ命令が書き込まれ、 010000 (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) 000000 (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) 110111 (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) 110011 (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) 110001 (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) 110000 (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) で2行目がオール“0”となり、書き込み要求があると
アドレス2へ命令が書き込まれ、 000000 (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) 101111 (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) 100111 (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) 100011 (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) 100001 (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) 100000 (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) で1行目がオール“0”となり、書き込み要求があると
アドレス1へ命令が書き込まれ、 011111 (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) 001111 (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) 000111 (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) 000011 (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) 000001 (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) 000000 (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) となり同様な動作を繰り返せば命令記憶装置810内命
令の書き込み順の情報がオーダ情報配列記憶装置201
0へ記憶されることになる。このままオール“0”の行
を読み出しのアドレスとすれば、FIFOを構成するこ
とが可能である。この方法は、LRU(Least Recently
Used )法を実現するマトリクス回路として既に知られ
ている手法である(参考文献:bit Vol.15,
No.4P327〜328)。
【0071】本実施形態では、この手法を基本に新たな
機能を追加している。これまで説明した機能のみでは、
命令記憶装置810に記憶可能命令数全て保持された状
態になってから、書き込み動作と読み出し動作が交互に
行われる場合は機能するものの、命令記憶装置810に
空きがある場合に読み出し要求があった場合や、読み出
し要求が連続して発生する場合などは機能しない。ま
た、命令発行優先度情報を操作し命令発行順を変えるこ
とができない。
【0072】読み出し動作に関する機能の追加として
は、図3に示すオーダ情報保持装置2010中の読み出
し選択信号生成装置2050がその役割を果たす。読み
出し選択信号生成装置2050は、ANDゲート205
1、2053及びNORゲート2052を備え、オーダ
情報配列記憶装置2010の6行目に取り付けられてい
るように示されているが、各行に同じ物が取り付けられ
ているものとする。読み出し選択信号生成装置2050
のNORゲート2052は0検出回路である。
【0073】その入力にはANDゲート2051を介し
て、オーダ情報配列記憶装置2010の各行の命令発行
優先度情報と命令有効記憶装置890より供給される有
効命令情報が供給される。つまり、命令有効記憶装置8
90より供給される有効命令情報により命令発行優先度
情報中で命令憶装置810内の命令が無効であるアドレ
スに対応するオーダ情報配列記憶装置2010の行情報
がマスク(ANDゲート2051の出力が0固定)され
るので、有効な命令が保持されているもののみの情報で
命令発行優先度が決定されることになる。
【0074】例えば、命令記憶装置810が空の状態で
1命令が書き込まれ、すぐに読み出し要求があった場
合、自分自信との依存関係を示す列のみ“0”で他は
“1”となっているが、有効命令情報によりANDゲー
ト2051の出力は全て“0”となるので、NORゲー
ト2052からの出力が“1”となる。最終段のAND
ゲート2053でNORゲート2052の出力と、読み
出し選択信号生成装置2050自信の対応する有効命令
情報と、リードイネーブル信号の論理積が取られると、
読み出し選択信号が発生され命令読み出しが行われる。
【0075】リードイネーブル信号だけでなく有効命令
情報と論理積を取るのは、次の書き込みを指定する行が
オール“0”で命令記憶装置810が空の場合、NOR
ゲート2051からの出力が“1”となる場合があるた
めである。
【0076】ちなみに、次の書き込みを指定する行がオ
ール“0”で命令記憶装置810に有効命令が入ってい
る場合は、読み出されるべきアドレスと次に書き込みさ
れるアドレスが一致するので、NORゲート2052か
ら“1”が発生する行は1行のみで、2行以上発生する
ケースは以上説明した状況以外存在しない。
【0077】以上説明した方法で、バッファー機能を有
することができる。要するに、読み出し動作に関して
は、有効命令数に可変可能な配列を構成していることに
なる。
【0078】命令発行優先度情報を操作して命令発行順
序を変更するためには、分岐命令データ依存情報を先行
命令情報入力装置2020からオーダ情報配列記憶装置
2010の列へ書き込む際に、分岐命令データ依存情報
を反映させるため、先行命令情報入力装置2020にそ
れぞれ対応する分岐命令データ依存情報の反転を反転ゲ
ート2062、信号線2104、ORゲート2027を
介して入力可能とし、オーダ情報書き込み許可装置20
40にもそれぞれ対応する分岐命令データ依存情報を反
映する機能を加えている。
【0079】命令発行優先度情報(オーダ情報)の操作
について、分岐命令にデータ依存のない命令を後続にま
わす手法を以下に示す。例えば、オーダ情報配列記憶装
置2010の状態が 011110 (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) 001110 (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) 000110 (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) 000010 (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) 000000 (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) 111110 (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) で分岐命令書き込みが5行目に対応する命令記憶装置8
10のアドレス5へ書き込まれるものとし、他の行に対
応するアドレス全てに有効な命令が入ってるものと仮定
する。また、分岐命令とデータ依存関係の無い命令は、
2行目と4行目に対応するアドレス2、アドレス4の命
令で、後続へまわす命令として説明する。
【0080】分岐命令の書き込み要求がクロック後半に
発生すると、オーダ情報配列記憶装置2010の配列
(5,*)がオール“0”であるため、ライトイネーブ
ル信号がアドレス5を指定し分岐命令が書き込まれる。
この時は、通常の命令と同様に配列(5,*)へ後続命
令情報を書き込む。オーダ情報配列記憶装置2010の
状態は、 011110 (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) 001110 (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) 000110 (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) 000010 (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) 111111 (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) 111110 (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) となる。
【0081】次に、先行命令情報をオーダ情報配列記憶
装置2010の列へ書き込む動作がクロック前半に行わ
れ、通常動作であれば、5列目に“0”が書き込まれ4
行目がオール“0”となり、読み出しされる命令は4行
目に対応するアドレス4の命令が発生することになる。
但し、アドレス4の命令は今書き込まれたアドレス5の
分岐命令よりも後続で読み出したい命令である。
【0082】5列目に“0”を書き込む際、アドレス2
およびアドレス4の命令を後続にまわすため、先行命令
情報を5列目の2行目および5列目の4行目へ書き込ま
ないようにすれば、配列(2,5)および配列(4,
5)の“1”が無効になるのは、アドレス5の分岐命令
読み出し後(アドレス5の命令が発生し空になると5列
目の情報は読み出し選択信号生成装置2050よりマス
クされる)となり後回しになる。
【0083】また、後続へまわす命令以外に2行目およ
び4行目に対応する命令よりも先行して実行されるよう
に、先行命令情報をオーダ情報配列記憶装置2010に
供給する必要がある。これは、5列目へ“0”を書き込
む際、同時に2行目,4行目に“0”を書き込めばよ
い。この時、このまま2行目、4行目へ“0”を書き込
むと後続命令間の依存情報も失われることになるので、
2行目,4行目への2列目,4列目の先行命令情報書き
込みはマスクする必要がある。
【0084】このような操作は、一見複雑に見えるが、
図3に示す構成では容易に実現可能となり、2列,4
列,5列目への“0”書き込みの際、2行,4行目への
書き込みを全てマスクし、2行,4行目の命令発行優先
度情報をそのまま固定すればよい。オーダ情報配列記憶
装置2010の状態は以下のようになる。
【0085】 0書き込み ↓ ↓↓ 001000 (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) 001110 (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) 000000 (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) 000010 (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) 101001 (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) 101000 (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) 従って、3行目がオール“0”となり、4行目に対応す
る命令を飛び越し3行目に対応する命令が読み出され
る。以降、通常通りの動作で3行目に書き込みがあれば
3列目の情報は“0”にクリアされ、書き込みが無い場
合は2行目の情報がマスクされているので、次の読み出
しは1行目となり、同様の動作で次が6行目となる。
【0086】この動作中に書き込まれる命令のデータ依
存情報は、書き込まれたアドレスに対応する行以外の全
てに対して後続であることが、データ依存情報として保
持されているので、分岐命令の後回しにされた命令より
も後続で読み出されることになる。6行目に対応するア
ドレス6の命令が読み出されると、次は5行目に対応す
るアドレス5に保持されている分岐命令が読み出され
る。その後、5行目の情報がマスクあるいはクリアされ
るので、4行目に対応するアドレス4の命令が発行さ
れ、次に3行目に対応するアドレス3の命令が発行され
る。このような手法により、分岐命令にデータ依存しな
い命令を後回しで実行することが可能となる。
【0087】仮に、分岐命令データ依存情報は、“1”
であれば依存関係ありを示し、“0”であれば依存関係
なしを示すものとし、また、分岐命令データ依存情報
は、分岐命令データ依存情報生成装置2100から分岐
命令書き込み時の列への“0”書き込みのタイミングで
供給されるものとする。
【0088】行の書き込みをマスクする手段としては、
列への“0”書き込みの際に、オーダ情報書き込み許可
装置2040にそれぞれ対応する分岐命令データ依存情
報をそれぞれ対応するANDゲート2063、ORゲー
ト2064を介して供給する。通常命令の場合は、列へ
の“0”(先行命令情報)書き込みの際に、オーダ情報
書き込み許可装置2040は全て“1”で全行書き込み
可能となっているが、分岐命令に関しては、データ依存
関係の無い命令に対応する行に関するオーダ情報書き込
み許可装置2040のデータは“0”となり、その行に
関する書き込みは不可となる。
【0089】また、分岐命令データ依存情報の反転情報
をオーダ情報書き込み許可装置2040に供給したと同
時に先行命令情報入力装置2020に供給することによ
り、分岐命令にデータ依存の無い命令に対応する列への
“0”(先行命令情報)を、通常の書き込み動作におけ
る列への“0”書き込みと同時に発生することが可能と
なる。
【0090】上記の例では、2命令を後続へ回す場合を
示したが、何命令であっても同様の方法で命令発行順序
をコントロールすることが可能である。
【0091】図3に示す構成では、行への後続命令情報
(行へのオール“1”書き込み)の際に、後続命令情報
入力装置2030と同じ情報を供給し後続命令情報を書
き込む行を指定しているが、分岐命令データ依存情報が
供給されない場合には、分岐命令データ依存情報はオー
ル“1”が供給され、後続命令情報を書き込む行は後続
命令情報入力装置2030により指定されるため、それ
ぞれ対応するANDゲート2061、信号線2014、
ORゲート2064を介して与えられる情報が無くても
同様の動作が実現できる。
【0092】ここで、オーダ情報の書き込みの動作タイ
ミングを整理しておくと、後続命令情報入力装置203
0からのオーダ情報配列記憶装置2010への情報入力
は、クロック後半のタイミングで発生する書き込み要求
信号に同期して行われ、先行命令情報入力装置2020
からのオーダ情報配列記憶装置2010への情報入力は
書き込み要求信号の次の周期のクロック前半に同期して
行われる。
【0093】先行命令情報入力装置2020への入力情
報の一つは、後続命令情報入力装置2030へ供給され
るライトセレクト信号と同じもので、クロック前半で先
行命令情報入力装置2020の記憶領域2021〜20
26で一時的に保持され、クロック後半のタイミングに
合わせて供給される。分岐命令データ依存情報は、先行
命令情報入力装置2020からの先行命令情報入力と同
じタイミングで分岐命令書き込み時のみ供給され、先行
命令情報入力装置2020により上記で説明した動作が
生じることになる。
【0094】次に、分岐命令データ依存情報生成装置2
100について説明する。
【0095】図4には分岐命令データ依存情報生成装置
2100の一実施形態の構成を示している。
【0096】図4において、分岐命令データ依存情報生
成装置2100は、命令記憶装置810の各アドレスに
対応する命令のデータ依存情報を保持するデータ依存情
報保持装置2110と、データ依存情報保持装置211
0の列情報をORゲート2141により論理和(OR)
を取り、分岐命令書き込み時には、ORゲート2141
の出力と分岐命令検出信号BIの反転信号とをORゲー
ト2142により論理和を取り、分岐命令データ依存情
報を発生し、オーダ情報保持装置2000へ分岐命令デ
ータ依存情報を供給する分岐命令データ依存情報発生装
置2140と、データ依存検出装置1100から信号線
1111を介して供給されるデータ依存情報により分岐
命令データ依存情報発生装置2140が論理和を取る列
を指定すると共に、各命令のデータ依存情報を書き込む
行を指定するデータ依存保持情報指定装置2130と、
分岐命令データ依存情報発生装置2140から出力され
るデータ依存情報保持装置2110が生成する列情報の
OR情報とデータ依存検出装置1100から信号線11
11を介して供給されるデータ依存情報をそれぞれ対応
するORゲート2121により論理和を取り、その結果
をそれぞれ対応する記憶領域2122に保持し、それぞ
れ対応するバッファ2123を介してデータ依存情報保
持装置2110のそれぞれ対応する列にデータを供給す
るデータ依存情報生成装置2120を備えて構成され
る。
【0097】なお、図4において、ORゲート2142
はORゲート2141にそれぞれ対応して6個設けられ
てそれぞれ対応した分岐命令データ依存情報を生成し、
ORゲート2121は、データ依存情報生成装置212
0のそれぞれの記憶領域2121〜2126に対応して
6個設けられ、それぞれ対応したデータ依存情報とそれ
ぞれ対応したORゲート2141の出力が入力に与えら
れている。
【0098】オーダ情報保持装置2000と同様にデー
タ依存情報保持装置2110のサイズは6行6列で構成
されているものとし説明を進める。
【0099】データ依存情報保持装置2110の各行は
命令記憶装置810の各アドレスに対応しており、1行
目がアドレス1,2行目がアドレス2に対応するといっ
たように、各行がオーダ情報保持装置2000のオーダ
情報配列記憶装置2010と同様の対応関係にあるもの
とする。
【0100】データ依存情報保持装置2110の状態
を、 000000 D(1,1),D(1,2),D(1,3),D(1,4),D(1,5),D(1,6) 000000 D(2,1),D(2,2),D(2,3),D(2,4),D(2,5),D(2,6) 000000 D(3,1),D(3,2),D(3,3),D(3,4),D(3,5),D(3,6) 000000 D(4,1),D(4,2),D(4,3),D(4,4),D(4,5),D(4,6) 000000 D(5,1),D(5,2),D(5,3),D(5,4),D(5,5),D(5,6) 000000 D(6,1),D(6,2),D(6,3),D(6,4),D(6,5),D(6,6) という形式で表わすと、初期状態とてはデータ依存情報
保持装置2110が全て“0”にクリアされ、上記の状
態にある。
【0101】 010000 D(1,1),D(1,2),D(1,3),D(1,4),D(1,5),D(1,6) 000000 D(2,1),D(2,2),D(2,3),D(2,4),D(2,5),D(2,6) 000000 D(3,1),D(3,2),D(3,3),D(3,4),D(3,5),D(3,6) 000000 D(4,1),D(4,2),D(4,3),D(4,4),D(4,5),D(4,6) 000000 D(5,1),D(5,2),D(5,3),D(5,4),D(5,5),D(5,6) 000000 D(6,1),D(6,2),D(6,3),D(6,4),D(6,5),D(6,6) いう状態にデータ依存情報保持装置2110がなってい
る場合は、1行目に対応する命令記憶装置810内の命
令は2行目に対応する命令にデータ依存関係があるとい
うことを示すものとする。
【0102】命令記憶装置810内に保持されている全
ての有効命令に対するデータ依存関係は、データ依存検
出装置1100で検出されるデータ依存情報では不十分
であり、データ依存検出装置1100で検出された命令
のデータ依存命令も依存関係のある命令として含まなけ
ればならず、さらに依存関係命令として含まれた命令の
依存関係も反映するといった具合で依存関係を追って保
持する必要がある。
【0103】すなわち、データ依存検出装置1100で
検出されるデータ依存情報は命令記憶装置810に格納
される命令(例えば命令Aとする)がそれまで命令記憶
装置810に格納されていた有効命令(例えば命令B〜
Fとする)のそれぞれに対して直接的に依存しているか
否かを示す情報であるのに対して、データ依存情報保持
装置2110が示す情報は、命令記憶装置810に格納
される命令Aが直接的に依存する命令(例えば命令Cと
する)及びこの直接的に依存する命令Cが依存する命令
(例えば命令Eとする)といった具合に、命令Aが命令
C(直接的)と命令E(間接的)に依存するといった情
報を示している。
【0104】図4に示す構成はその手法を実現するもの
であり、データ依存情報は書き込み動作が行われる半サ
イクル前に情報が供給されるので、データ依存保持情報
指定装置2130ほデータ依存検出装置1100からの
データ依存情報をセットし、データ依存関係のある命令
のデータ依存情報保持装置2110に保持されたデータ
依存情報をORゲート2142により論理和を取る。そ
の情報は、信号線2111を介してデータ依存情報生成
装置2120に供給される。信号線1112を介して命
令記憶装置810に書き込まれる命令のデータ依存検出
装置1100で検出されるデータ依存情報も供給されて
おり、データ依存情報生成装置2120では、信号線1
112と信号線2111より供給されるデータの論理和
をそれぞれ対応するORゲート2121で取り、データ
依存情報を生成する。その情報は、一時的にデータ依存
情報生成装置2120のそれぞれ対応する記憶領域21
21〜2126で保持される。
【0105】次に、オーダ情報保持装置2000では、
書き込み選択信号が生成されて信号線2015を介して
データ依存保持情報指定装置2130に供給され、指定
された行にデータ依存情報生成装置2120で生成され
たデータ依存情報の書き込みが行われる。
【0106】この動作を命令記憶装置810に書き込ま
れる全ての命令に対して実行すると、データ依存情報保
持装置2110に書き込まれるデータ依存情報は命令記
憶装置810内の有効命令全てに対するデータ依存情報
となる。
【0107】分岐命令のデータ依存情報の場合にも同様
な動作で生成され、データ依存情報保持装置2110に
保持される。そのデータは、データ依存情報が保持され
ると同時に、データ依存情報保持装置2110の列情報
が分岐命令データ依存情報発生装置2140のORゲー
ト2141に供給(分岐命令以外の命令も同様)されて
おり、信号線1210より供給される分岐命令検出信号
BIにより、タイミング調整された分岐命令検出信号B
Iの反転信号(分岐命令検出信号BIがイネーブルにな
ったタイミングを半サイクルずらしライトイネーブル信
号と同タイミングで供給)により分岐命令データ依存情
報発生装置2140のラッチ回路2143に情報が一時
的に保持され、オーダ情報保持装置2000に分岐命令
データ依存情報が信号線2102を介して供給される。
また、この分岐命令データ依存情報は信号線1330、
信号線1340を介して命令無効信号マスク装置140
0へ供給される。
【0108】データ依存情報保持装置2110のデータ
依存情報は、読み出された命令に関してはデータ依存関
係が消えるため、情報をクリアする必要がある。情報の
クリアは、読み出された命令のアドレスに対応するデー
タ依存情報保持装置2110の列情報をクリアすればよ
く、オーダ情報保持装置2000からリードセレクト信
号を信号線2016を介して供給し対応する列情報をク
リアすればよい。
【0109】以上説明した構成が、分岐命令データ依存
情報生成装置2100を構成する一例である。
【0110】これまでに説明した構成を採用することに
より、分岐命令にデータ依存しない命令を、分岐命令の
後続で実行されるように命令読み出し順序を変更するこ
とが可能な命令キューを実現することが可能となる。
【0111】
【発明の効果】以上説明したように、この発明によれ
ば、分岐命令に先行して命令キュー内に記憶されて分岐
命令とデータ依存関係に無い命令を分岐命令の後続に実
行することによって、分岐命令の確定を速め、キャッシ
ュリフィル開始が速まり、キャッシュリフィル中に後回
しにした命令を実行するため、CPIの向上を図ること
が可能となる。
【図面の簡単な説明】
【図1】請求項1記載の発明の一実施形態に係る命令キ
ューの構成を示す図である。
【図2】図1に示すオーダ制御装置の構成を示す図であ
る。
【図3】図2に示すオーダ情報保持装置の構成を示す図
である。
【図4】図3に示す分岐命令データ依存情報生成装置の
構成を示す図である。
【図5】命令キューを備えた従来のマイクロプロセッサ
の構成を示す図である。
【図6】図5に示す命令キューの構成を示す図である。
【符号の説明】
100 メインメモリ 200 命令キャッシュ 300 命令フェッチユニット 400 命令デコーダ 500 実行ユニット 510 ブランチ 520 ALU 530 シフタ 540 ロード 550 ストア 600 レジスタファイル 700 データキャッシュ 800 命令キュー 810 命令記憶装置 820 書き込みデコーダ 821〜826 書き込み選択線 831〜836 命令書き込み有効線 840 読み出しデコーダ 841〜846 読み出し選択線 851〜856 命令読み出し無効線 860 書き込み制御装置 861 カウントアップ信号線 862〜863 ライトイネーブル信号線 866〜868 リードイネーブル信号線 870 カウンタ 871,876 選択情報線 875 カウンタ 880 入力バッファ 885 出力バッファ 890 命令有効記憶装置 863a,863b,853c,897,1110,1
111,1112,1210,1310〜1340,2
011〜2016,2101〜2104 信号線 1000 全有効検出回路 1005 全無効検出回路 1100 データ依存検出装置 1200 分岐命令検出装置 1300 オーダ制御装置 1400 命令無効信号マスク装置 2000 オーダ情報保持装置 2010 オーダ情報配列記憶装置 2020 先行命令情報入力装置 2027,2028,2051,2051,2053,
2061,2062,2063,2064,2121,
2141,2142 論理ゲート 2030 後続命令情報入力装置 2040 オーダ情報書き込み許可装置 2050 読み出し選択信号生成装置 2100 分岐命令データ依存情報生成装置 2110 データ依存情報保持装置 2120 データ依存情報生成装置 2130 データ依存保持情報指定装置 2140 分岐命令データ依存情報発生装置 2141 ラッチ
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平8−171492(JP,A) 特開 昭58−52750(JP,A) 特開 平8−110901(JP,A) 特開 平5−204639(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 プリフェッチされた所定量の命令を記憶
    する命令記憶装置に書き込まれる命令と、前記命令記憶
    装置に記憶されている命令とのデータ依存関係を検出す
    るデータ依存検出装置と、 前記命令記憶装置に書き込まれる命令が分岐命令である
    ことを検出する分岐命令検出装置と、 前記分岐命令検出装置によって前記命令記憶装置に書き
    込まれる命令が分岐命令であることが検出されると、前
    記データ依存検出装置によって検出されたデータ依存関
    係に基いて前記命令記憶装置に記憶されている命令の内
    分岐命令に依存しない命令を検出し、検出した命令を分
    岐命令の後続に前記命令記憶装置から読み出すオーダ制
    御装置と、分岐が成立するまでに 前記命令記憶装置に記憶され
    令を無効化する際に、前記オーダ制御装置によって検出
    された分岐命令に依存しない命令を無効化の対象から除
    外する命令無効マスク装置とを有することを特徴とする
    命令キュー。
  2. 【請求項2】 前記オーダ制御装置は、 前記分岐命令検出装置における分岐命令の検出結果と、
    前記データ依存検出装置によって検出されたデータ依存
    関係を示すデータ依存情報とに基いて、前記命令記憶装
    置に記憶されている命令と分岐命令とのデータ依存関係
    を示す分岐命令データ依存情報を生成する分岐命令デー
    タ依存情報生成装置と、 前記命令記憶装置における命令の読み出し又は書き込み
    にしたがって前記命令記憶装置に記憶されている命令の
    読み出し順位を決定するオーダ情報を生成記憶し、前記
    分岐命令データ依存情報生成装置から与えられる分岐命
    令データ依存情報に基いて分岐命令に依存しない命令が
    分岐命令の後続に前記命令記憶装置から読み出されるよ
    うにオーダ情報を変更するオーダ情報保持装置とを有す
    ることを特徴とする請求項1記載の命令キュー。
  3. 【請求項3】 前記分岐命令データ依存情報生成装置
    は、 データ依存情報を保持するデータ依存情報保持装置と、 前記データ依存情報保持装置に保持されたデータ依存情
    報と前記データ依存検出装置から与えられるデータ依存
    情報に基いて、データ依存情報を生成し、前記データ依
    存情報保持装置に保持するデータ依存情報生成装置と、 前記データ依存情報保持装置に保持されたデータ依存情
    報と前記分岐命令検出装置における分岐命令の検出結果
    に基いて、前記命令記憶装置に記憶された命令の分岐命
    令データ依存情報を発生する分岐命令データ依存情報発
    生装置と、 前記データ依存検出装置から与えられるデータ依存情報
    に基づいて、前記データ依存情報生成装置によって生成
    されたデータ依存情報の前記データ依存情報保持装置に
    おける保持を指定制御するデータ依存保持情報指定装置
    とを有することを特徴とする請求項2記載の命令キュ
    ー。
  4. 【請求項4】 前記オーダ情報保持装置は、 前記命令記憶装置に記憶された命令の読み出し順位を決
    定するオーダ情報を記憶し、記憶されたオーダ情報に基
    いて前記命令記憶装置の書き込みアドレスを指定するオ
    ーダ情報配列記憶装置と、 前記命令記憶装置に記憶された命令間の読み出し順位と
    して先行関係を示すオーダ情報を前記オーダ情報配列記
    憶装置に供給する先行命令情報入力装置と、 前記命令記憶装置に記憶された命令間の読み出し順位と
    して後続関係を示すオーダ情報を前記オーダ情報配列記
    憶装置に供給する後続命令情報入力装置と、 前記先行命令情報入力装置及び前記後続命令情報入力装
    置から前記オーダ情報配列記憶装置へのオーダ情報の入
    力を制御し、前記オーダ情報配列記憶装置に記憶された
    オーダ情報を変更して前記命令記憶装置から読み出され
    る命令の読み出し順位を変更するオーダー情報書き込み
    許可装置と、 前記オーダ情報配列記憶装置に記憶されたオーダ情報に
    基いて前記命令記憶装置から読み出される命令を選択す
    る選択信号を生成する読み出し選択信号生成装置とを有
    することを特徴とする請求項2記載の命令キュー。
JP12856096A 1996-05-23 1996-05-23 命令キュー Expired - Fee Related JP3431397B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP12856096A JP3431397B2 (ja) 1996-05-23 1996-05-23 命令キュー
US08/861,534 US5911058A (en) 1996-05-23 1997-05-22 Instruction queue capable of changing the order of reading instructions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP12856096A JP3431397B2 (ja) 1996-05-23 1996-05-23 命令キュー

Publications (2)

Publication Number Publication Date
JPH09311785A JPH09311785A (ja) 1997-12-02
JP3431397B2 true JP3431397B2 (ja) 2003-07-28

Family

ID=14987790

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12856096A Expired - Fee Related JP3431397B2 (ja) 1996-05-23 1996-05-23 命令キュー

Country Status (2)

Country Link
US (1) US5911058A (ja)
JP (1) JP3431397B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3663881B2 (ja) * 1998-02-09 2005-06-22 富士ゼロックス株式会社 機器情報管理装置
KR100284904B1 (ko) * 1998-05-29 2001-05-02 윤종용 불 휘발성 반도체 메모리 장치 및 그 장치의 무효 메모리 블록데이블 세팅 방법
JP3798563B2 (ja) * 1999-01-06 2006-07-19 株式会社東芝 命令キャッシュメモリ
US6557095B1 (en) * 1999-12-27 2003-04-29 Intel Corporation Scheduling operations using a dependency matrix
JP2004094807A (ja) * 2002-09-03 2004-03-25 Toshiba Corp 命令キャッシュおよびマイクロプロセッサとその設計方法
ITMI20042072A1 (it) * 2004-10-29 2005-01-29 St Microelectronics Srl Dispositivo di memoria flsh dotato di interfaccia di comunicazione low pin count
US20060129764A1 (en) * 2004-12-09 2006-06-15 International Business Machines Corporation Methods and apparatus for storing a command

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5251306A (en) * 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
US5684971A (en) * 1993-12-27 1997-11-04 Intel Corporation Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions

Also Published As

Publication number Publication date
US5911058A (en) 1999-06-08
JPH09311785A (ja) 1997-12-02

Similar Documents

Publication Publication Date Title
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
US5809326A (en) Signal processor and method of operating a signal processor
KR920006275B1 (ko) 데이타 처리 장치
JP4205506B2 (ja) データ処理装置およびデータ処理方法
JPH06348595A (ja) キャッシュ装置
KR100955433B1 (ko) 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법
US20040098540A1 (en) Cache system and cache memory control device controlling cache memory having two access modes
JPH08194615A (ja) 情報処理装置
JP3917839B2 (ja) データ処理装置及びデータ処理装置におけるロックダウン・コントローラ及びデータ値をロックする方法
US5257360A (en) Re-configurable block length cache
US20080022051A1 (en) Systems and Methods for Providing Fixed-Latency Data Access in a Memory System Having Multi-Level Caches
JPH10228377A (ja) 分岐予測する情報処理装置
US6560676B1 (en) Cache memory system having a replace way limitation circuit and a processor
US7290119B2 (en) Memory accelerator with two instruction set fetch path to prefetch second set while executing first set of number of instructions in access delay to instruction cycle ratio
JP3431397B2 (ja) 命令キュー
US6078993A (en) Data supplying apparatus for independently performing hit determination and data access
JP3789937B2 (ja) ベクトルプロセッサのためのチャンク連鎖
US5724548A (en) System including processor and cache memory and method of controlling the cache memory
JP2020095345A (ja) 演算処理装置、メモリ装置、及び演算処理装置の制御方法
JPH02214937A (ja) データ処理装置
US6772297B2 (en) Cache controlling device and processor
JP2000148584A (ja) プリフェッチ方法および装置
JP2943772B2 (ja) 分岐予測方式
JPH06266623A (ja) キャッシュメモリ及びキャッシュメモリ制御方法
KR920001102B1 (ko) 정보 처리 장치

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20030422

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090523

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090523

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100523

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees