JP2000330787A - 命令ループを実行するコンピュータシステムおよび命令ループ実行方法 - Google Patents

命令ループを実行するコンピュータシステムおよび命令ループ実行方法

Info

Publication number
JP2000330787A
JP2000330787A JP2000135045A JP2000135045A JP2000330787A JP 2000330787 A JP2000330787 A JP 2000330787A JP 2000135045 A JP2000135045 A JP 2000135045A JP 2000135045 A JP2000135045 A JP 2000135045A JP 2000330787 A JP2000330787 A JP 2000330787A
Authority
JP
Japan
Prior art keywords
loop
instruction
prefetch buffer
address
executed
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
JP2000135045A
Other languages
English (en)
Inventor
Laurent Wojcieszak
ローラン、ボイシェスザック
Andrew Cofler
アンドルー、コフレ
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.)
STMicroelectronics SA
Original Assignee
STMicroelectronics SA
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 STMicroelectronics SA filed Critical STMicroelectronics SA
Publication of JP2000330787A publication Critical patent/JP2000330787A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 同じ命令が繰り返してメモリから取り出さ
れ、その結果としてメモリアクセスバス上に電力と負荷
がかかるという問題を回避する。 【解決手段】 コンピュータシステムでループを実行す
る方法を説明する。コンピュータシステムは、プログラ
ムメモリに保持された命令列と、復号器に供給するよう
にメモリから取り出された命令を保持する事前取出しバ
ッファを備える。実行するループの大きさが事前取出し
バッファ内にループ全体が入るほどの場合、これが検出
されて、ループが必要な回数実行されている間にロック
が事前取出しバッファにかけられて、バッファ内部にル
ープを保持する。したがって、電力が節約され、メモリ
アクセスバッファのオーバーヘッドが減少する。他の態
様によると、ループカウンタレジスタの値ゼロを保持す
ることでループが「スキップ」可能である。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はコンピュータシステ
ムにおける命令ループの実行に関する。
【0002】
【従来の技術】コンピュータシステムでは、命令は通
常、プログラムメモリから取り出されて、復号され、実
行ユニットに送られ、そこで命令が実行され、プログラ
ムメモリに記憶されたプログラムを実行する。時に条件
パラメータが合致すると、特定の命令列を2度以上実行
しなければならない場合がしばしばある。こうした列の
ことを本明細書では「ループ」と呼ぶ。ループはソフト
ウェアや命令により実施可能である。こうした命令は、
1つのループを構成する特定の列の命令の終端に到達し
た後で、ループの第1命令が再び実行される。所謂ハー
ドウェアループは関連するハードウェアにより、中で
も、ループ内の最後の命令のアドレスを保持するループ
終端レジスタとループ内の第1命令のアドレスを保持す
るループ開始レジスタの形態を取って支援される。こう
したレジスタを装備することで、ループはコンピュータ
システムにより所定の回数だけ自動的に実行可能であ
る。すなわち、ループ終端アドレスが検出されると、メ
モリから取り出された次のアドレスはループ開始アドレ
スである。ループカウントレジスタは、ループが実行さ
れる回数に相当する初期数を保持し、ループが実行され
る度に増分される。
【0003】
【発明が解決しようとする課題】こうしたハードウェア
ループの1つの問題点は、同じ命令が繰り返してメモリ
から取り出され、その結果としてメモリアクセスバス上
に電力と負荷がかかる。
【0004】本発明の目的は、できる限り上記の問題を
回避することにある。
【0005】
【課題を解決するための手段】本発明の1つの観点によ
ると、ループを実行するコンピュータシステムが提供さ
れ、前記コンピュータシステムは、所定の回数実行され
るループ命令の集合をもつ少なくとも1つのループ列を
含む命令列を保持するプログラムメモリと、プログラム
メモリから命令を取り出す事前取出しバッファと、あら
ゆるループ命令が事前取出しバッファにあるかどうかを
検出し、ある場合にはプログラムメモリへのさらなるア
クセスに対して事前取出しバッファをロックする手段
と、ループが前記所定の回数実行されたときを検出し
て、事前取出しバッファ上のロックを開放して、さらに
プログラムメモリにアクセスする手段とを備える。
【0006】本発明の他の観点によると、それぞれが所
定の回数実行されるループ命令列を含む複数のループを
実行する方法が提供され、前記方法は、プログラムメモ
リから事前取出しバッファに命令を取り出す過程と、す
べてのループ命令が事前取出しバッファにあるかどうか
を検出して、ある場合にはプログラムメモリへのさらな
るアクセスに対して事前取出しバッファをロックする過
程と、前記所定の回数ループが実行されたときを検出し
て、事前取出しバッファへのロックを開放して、プログ
ラムメモリへのさらなるアクセスを可能にする過程とを
含む。
【0007】したがって、本発明の上記の態様による
と、ループが事前取出バッファに入るかどうかが判定さ
れる。入る場合、事前取出しループにロックされて、メ
モリからのさらなる取出しは、ループが所定の回数実行
されるまで、禁止される。ループが事前取出しバッファ
にその全体が入らない場合には、ロックされることな
く、システムは通常通り動作する。
【0008】好ましくは、事前取出しバッファは、連続
して命令を復号器に供給し、ループ命令を順序通り読み
取る読取りポインタを備えている。ループ終端アドレス
が検出されると、読取りポインタの次のアドレスはルー
プ開始アドレスである。
【0009】ハードウェアループが実施される従来のデ
ジタル信号プロセッサにおいて、ループカウンタレジス
タは通常は値ゼロを取れない。それが可能な場合、ルー
プが1度または限られた回数実行される。さらに柔軟性
を高めるために、本発明の他の態様は、所定の回数実行
されるループ命令の列をもつループを含み、その所定の
回数がループカウントレジスタに保持されているループ
を含む命令をコンピュータシステムで実行する方法を提
供する。この方法は、ループカウンタレジスタの値を検
出する過程と、ループカウンタレジスタの値がゼロのと
きには、ループが実行されないループカウンタレジスタ
の値により指示される回数、ループを実行する過程と、
から構成される。
【0010】したがって、ループカウンタレジスタの値
がゼロであると、ループはスキップされる。
【0011】本発明をいっそう良く理解し、実施方法を
示すために、添付図面を例として参照するのが望まし
い。
【0012】
【実施例】図1は、複数の命令を並列実行するように構
成され高度なデジタル信号処理(DSP)性能を提供する
のに特にふさわしいコンピュータシステムの主な構成要
素を示す。プログラムメモリ2は、図4を参照しながら
以下に説明されるように、3つの異なる命令形式の中の
1つの形式で命令を保持する。コンピュータシステム
は、各命令形式に1つづつ、3つの異なるモードをサポ
ートしている。現命令モードは処理状況レジスタ(PS
R)4に保持され、事前取出しユニット6と復号器8内で動
作を制御するのに使用される。PSRは事前取出しユニッ
ト6内に保持される。環境によっては、バイパス機構9に
より命令がプログラムメモリ2から復号器8に直接送られ
る。
【0013】システムの基本動作を以下に説明する。事
前取出しユニット6はプログラムメモリ2へのメモリアク
セスを起動する。事前取出しユニット6は、プログラム
メモリ2からの命令を定義する連続する128ビット列を取
り出して、これらの列を復号器に送る。事前取出しユニ
ット6の機能は、図2と図3を参照しながら以下により
詳細に説明される。復号器8は、事前取出しユニット6か
ら受け取る命令を復号して、それらをマイクロ命令生成
器10に送る。この生成器はマイクロ命令を生成する。生
成されたマイクロ命令はデータ命令データ待ち行列に送
られ、そこからデータ実行ユニットEXU1、EXU2に渡され
るか、またはアドレス命令ユニットEXU3、EXU4または汎
用実行ユニットEXU5に渡される。データ実行ユニットEX
U1、EXU2は共通データレジスタファイル12を共有し、ア
ドレス実行ユニットEXU3、EXU4は共通ポインタレジスタ
ファイル14を共有する。汎用実行ユニットEXU5はアドレ
ス実行ユニットEXU3、EXU4と共にいくつかの資源を共有
し、ユニット自体の制御レジスタファイル16を備えてい
る。ロードデータ待ち行列(LDQ)とポインタデータ待
ち行列(PDQ)は、主データメモリ(図示せず)からレ
ジスタファイル12、14、 16にデータおよびポインタ用
の待ち行列機構を備えている。記憶アドレス/データ待
ち行列(SAQ/SDQ)は、主メモリへのアクセスを待機し
ているデータおよびアドレス用の待ち行列機構を備えて
いる。データ待ち行列(DDQ)により、レジスタファイ
ル12、14、16間でデータの待ち行列が転送できる。
【0014】本発明の実施例は、所謂「ハードウェアル
ープ」の性能に関し、したがって、主に、プログラムメ
モリ2、事前取出しユニット6および復号器8に関連す
る。ハードウェアループは、ソフトウェア項よりもハー
ドウェア項で識別され、複数回実行される命令列であ
る。事前取出しユニット6のより詳細な動作を図2を参
照しながら説明する。
【0015】事前取出しユニット6は、関連する制御ビ
ット24と制御回路機構を備えた事前取出しバッファ22を
備えている。制御回路機構は、PSR4と、事前取出し部18
と、整合部20とを含んでいる。事前取出し部18は、プロ
グラムメモリアクセス制御信号26aと26bを用いてプログ
ラムメモリ2へのメモリアクセスを起動する。取出しが
始まるプログラムメモリ2のアドレスは事前取出し部18
の事前取出しプログラムカウンタ28に保持される。事前
取出し部18により起動されたメモリ取出しに応答して、
命令ワードはプログラムメモリ2から事前取出しバッフ
ァ22に命令データ入力経路30に沿って送られる。
【0016】整合部20は、事前取出しバッファ22から復
号器8への命令の送信を制御し、これらの命令はデータ
出力経路32に沿って送られる。これを実行するために、
整合部20は、事前取出し部整合(PFAL)/復号器制御信
号34aと34bに応答する。整合部20は、命令モードおよび
各命令ワードを復号するのに必要となるマシンサイクル
数に応じて、命令を復号器に送る読取りポート(図示せ
ず)を制御する整合プログラムカウンタ36を備えてい
る。整合部20はさらに、各マシンサイクルでどれだけ多
くの命令が復号器8に発送されたかを追跡し、PSR4に記
憶された命令モードに応じて、事前取出しバッファを制
御する読取りポインタ(RP)を生成する状態マシン38を
備えている。命令モードが変わると、整合部10が変更モ
ード信号chmd1、chmd2を発行する。これらの信号は、信
号の処理時に変化して、復号器に送られる。その詳細は
本明細書には記載されていない。
【0017】手短に言えば、事前取出し部18と整合部20
の目的は、正確なモードで命令を連続して復号器に確実
に供給することである。
【0018】事前取出しバッファ22の構成を図3に示
す。図面上では、事前取出しバッファは4つの連続する
線L0ないしL3を備え、各線の容量が128ビットと考えら
れている。事前取出しバッファは、幅が128ビットの単
一書込みポート(WPO)を備えている。単一書込みポー
トは、書込みポインタWP[3:0]の制御下で、命令データ
入力経路30と入力ラッチFF-inを介してプログラムメモ
リからデータを受け取り、そのデータを選択された線に
書き込む。4つの線F0ないしF3それぞれは、4つの記憶
位置を含み、したがって、総計で記憶位置が16とな
る。16個の記憶位置はF0ないしF15で示されている。
各記憶位置の容量は32ビットで、説明のために図面上で
は16ビット部分2つに分割されている。各線L0ないしL3
は本明細書では一群の記憶位置として参照され、メモリ
から(命令ワードの形態の)128ビット線の容量をも
つ。このため、最初の命令ワードが受信されなかったり
復号器8により実行されなかった場合でさえ、最高4つ
のメモリアクセスを連続して実行できる。
【0019】図2に関して上述した事前取出しバッファ
22の制御ビット24は、空のフラグEF1ないしEF4を含んで
おり、それらのフラグは事前取出しバッファ線L0ないし
L3にそれぞれ対応している。これらのフラグは、その後
のメモリ取出しが起動可能なように、対応する線が完全
に空の時を示す。取出しの後で、データは事前取出しバ
ッファにより受け取られて、空のフラグは、その線が現
在一杯であることを示すようリセットされる。
【0020】マシンの3つの異なる命令モードを図4を
参照して以下に説明する。これらのモードは、各マシン
サイクル中に事前取出しユニット6から復号器8に供給さ
れるデータの形式を判定する。どのモードでも、事前取
出しユニット6によるプログラムメモリ2へのメモリアク
セスにより長さが128ビットの命令ワードが検索され
る。
【0021】第1命令モードによると、16ビット命令の
対が送られて、ビット列w0、w1などのスロット0とスロ
ット1で示される。各検索された命令ワードは、8つの
対から形成された8つの16ビット命令を含み、各命令
は、上記のような2つの16ビット部分の取出しバッファ
22の記憶位置L0ないし15に記憶される。これは、本明細
書では、GP16スーパースカラモードと呼ばれる。
【0022】第2命令モードによると、それぞれ長さが
32ビットの2つの命令が、各マシンサイクル、たとえ
ば、CYCLE0のw0、w1で事前取出しバッファから復号器に
送られる。検索された各命令ワードは、4つの32ビット
命令を含む。このモードは本明細書ではGP32スーパース
カラモードと呼ばれる。
【0023】第3命令モードによると、それぞれ長さが
32ビットの4つの命令w0、w1、w2、w3が各マシンサイク
ルで復号器に送られる。各検索命令ワードは、4つの32
ビット命令を含む。これは本明細書では超長命令ワード
(VLIWモード)と呼ばれる。VLIWモードでは、4つの32
ビット命令は、事前定義された文法規則に応じて関連し
ている。
【0024】各検索命令ワードは復号器8により復号さ
れ、スロット0、スロット1、スロット3と記された4つ
の可能なチャンネルに沿ってマイクロ命令生成器10に送
られる。各命令ワードは、データ実行ユニットEXU1とEX
U2およびアドレス実行ユニットEXU3とEXU4用のマイクロ
命令となる多くのマイクロ命令を生成する。
【0025】通常の動作では、線L0ないしL3の1つから
の命令が復号中には、メモリ取出しが継続され、命令ワ
ード(128ビット)が他の線に記憶されて、事前取出し
バッファ22が一杯になる。たとえば、メモリ取出しが最
後の線L3になされる時まで、第1線L0は復号器に完全に
読み出されるので、メモリからその後の命令ワードを受
け取る準備がなされることが多い。空のフラグEF1はこ
れを示している。命令ワードを複合するのに必要なマシ
ンサイクルの数は、マシンの命令モードに応じて変化す
る。すなわち、1サイクルはVLIWモードで必要とされ、
2サイクルはGP32モードで必要とされ、4サイクルはGP
16モードで必要とされる。最小で1サイクルが読取りと
復号に必要なので、再取出しバッファを使用すると、メ
モリによる遅延を隠ぺいできる。
【0026】ハードウェアループの実行には、プログラ
ムメモリに保持された命令列を複数回実行することが含
まれている。通常の動作に関して前述したように、事前
取出し部18はプログラムメモリ2から各128ビットの命令
ワードの取出しを始めて、事前取出しバッファの空の線
L0ないしL3にその命令を記憶する。空のフラグEF1-4
は、線L0ないしL3はデータを受け取れるよう自由である
かどうかを示している。ある線におけるすべての命令が
実行されると、その線の空のフラグが設定されて、事前
取出し部はプログラムメモリから他の命令ワードを取り
出して、そのワードを自由線に記憶する。この通常の動
作がループに使用される場合、事前取出し部とプログラ
ムメモリ間でアクセスが繰り返されて、同じループ命令
を繰り返して検索することを意味している。
【0027】ループを例示するために図5を参照する。
図5は、プログラムメモリにおける命令列を構成図で示
している。矢印Aは命令が実行される方向を示してい
る。命令は128ビット命令ワードで構成される。ここに
示される例はGP32モードにあり、各命令の長さは32ビッ
トである。図5の斜線命令で示されているように、ルー
プの第1命令はループ開始アドレス(LSA)で示され
る。ループの最後の命令はループ終端アドレス(LEA)
により示されている。ループ開始アドレス(LSA)はル
ープ開始レジスタ(LSR)で保持され、ループ終端アド
レス(LEA)はループ終端レジスタ(LER)に保持され
る。プログラムのループが多数あると、各ループの開始
および終端アドレスを保持する複数のループ開始レジス
タとループ終端レジスタがある。ループが実行される度
に、本明細書に記載のコンピュータシステムは、ループ
命令が事前取出しバッファ内ですべて保持されるかどう
かを検出する。
【0028】今度は図6を参照する。特定のハードウェ
アループが事前取出しバッファ22内に完全に保持されて
いるかどうかを検出するために、事前取出し部18が命令
ワードを要求するたびに、事前取出し部18は比較器73で
命令ワードを検索するためにプログラムカウンタ28から
送られたアドレスとすべてのループ終端レジスタ(LE
R)を比較する。各ループ終端レジスタ(LER)は、特定
のハードウェアループの最後の命令のアドレスLEA0、LE
A1、LEA2を示す。送られたアドレスがループ終端アドレ
スに一致している場合、一致があるという事実が特殊バ
ッファ57に送られる。この特殊バッファ75は事前取出し
バッファに緊密に連結されている。同時に、整合部は、
命令を復号器に送る度に、比較器77で、ループ開始(LS
R)のアドレスを整合プログラムカウンタ36のアドレス
に関して検査する。したがって、整合部は、その命令が
ループ開始命令に相当するかどうかを検査可能である。
命令は相当しており同じハードウェアループのLERアド
レス一致が特殊バッファに記憶されている場合、ループ
が事前取出しバッファ22に完全に含まれていることを意
味している。この場合には、ロック信号が事前取出しバ
ッファ22に送られる。
【0029】ロック信号は事前取出しバッファに入力さ
れるようにロックをトリガーするので、ハードウェアル
ープはそのバッファ内で完全に実行可能である。このこ
とは、ループ命令が実行される必要のある回数だけ、す
べてのループ命令が事前取出しバッファ22内で保持され
ることを意味している。したがって、ロック信号によ
り、ループが限られた回数実行されるまで、線L0ないし
L3に対する空のフラグ設定を防げ、バイパス部9を介し
て直接復号器8に命令が送られるのを防ぐ。プログラム
メモリ2からループ命令を繰り返して取り出す必要がな
いので、電力消費が低下し、本目的に使用されるバスは
他の目的にも使用できる。言い換えれば、省電力化がコ
ア部に効果的に適用可能である。次いで、ループは他の
命令として実行され、すなわち、PSR4は現命令モードを
記憶して、読取りポインタRPは事前取出しバッファを制
御して、データ出力経路32に沿って復号器に命令を送
る。ループが最初に実行されると、ループを実行するか
どうかまたは新しい命令がロード可能かどうかの決定が
下される。これは以下のようにして達成される。
【0030】事前取出しバッファ内で実行されるハード
ウェアループの開始時に、ループカウンタレジスタ(LC
R)が、ループが実行されなければならない回数Nに設定
される。値Nは図6でLCR_RLDと記されたレジスタに保持
される。整合部20が比較器79でループ終端アドレスに到
達したことを検出する度に、すなわち、ループを実行す
る度に、カウンタ81はループカウンタレジスタLCRの値
を減少する。ループカウンタレジスタが1の値を含む
と、すなわち、ループの最終反復回では、ロック信号が
リセットされる。これにより空のフラグEF1ないしEF4が
設定されるので、より多くの命令がプログラムメモリ2
から取り出される。最後の反復回LCR=1中に、整合部が
ループ終端アドレスを検出すると、LCRレジスタには自
動的にLCR_RLDレジスタに含まれた値がロードされる。
したがって、マシンは、所与の回数または再プログラム
LCRにより異なる回数、同じループ(またはループ開始
アドレスおよび/またはループ終端アドレスを変えるこ
とで異なるループ)を実行する準備ができた。
【0031】以下に、図7を参照しながら、ループカウ
ントレジスタが値ゼロを含むときの整合部の動作が説明
される。
【0032】各サイクルで、整合部20は、(適切な比較
器を用いて)ループ開始アドレスに到達したかどうかを
検査する。
【0033】整合部がループのループ開始アドレスに到
達したと判定すると、対応するループのループカウンタ
レジスタの値がゼロの場合、整合部は復号器に送られた
命令を無効にする(すなわち、復号器8はそのループ開
始アドレスに対応する命令には応答しない)。第2過程
では、整合部20が整合部プログラムカウンタ36で現在ス
キップしているループのループ終端アドレスをロードす
る。第3過程では、整合部20が、(現モード(GP32/GP1
6/VLIW)に応じて)適切な量分、整合部プログラムカウ
ンタ36の値を増分するので、プログラムカウンタ36は、
ループの最後の命令の後の第1命令のアドレスを示す。
最後の過程では、整合部は整合部プログラムカウンタ36
の値を事前取出しプログラムカウンタ28に送る。事前取
出し部はその位置から新しいメモリアクセスを起動でき
る。
【0034】こうした動作すべてが実行されている間、
ループカウンタレジスタ(LCR)は再ロードループカウ
ンタレジスタ(LCR_RCD)の値で更新される。したがっ
て、これによりループを「スキップ」できる。
【図面の簡単な説明】
【図1】コンピュータシステムのブロック図である。
【図2】事前取出し部のブロック図である。
【図3】事前取出しバッファの構成を示す図である。
【図4】3つの異なる命令モードを示す図である。
【図5】プログラムメモリのループ命令を示す概略図で
ある。
【図6】ハードウェアループ機構を示すブロック図であ
る。
【図7】ループスキップ方法を示す流れ図である。
【符号の説明】
2...プログラムメモリ、 4....プロセス状況レジスタ、 6...事前取出しユニット、 8...復号器、 10...マイクロ命令生成器、 18...事前取出し部、 20...整合部、 22...事前取出しバッファ
フロントページの続き (71)出願人 599124688 7 Avenue Gallieni, 94250 Gentilly, Franc e (72)発明者 アンドルー、コフレ フランス国ボレップ、リュ、ジ.エフ.ア ーシュ、48

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】所定の回数実行するループ命令の集合をも
    つ少なくとも1つのループ列を含む命令列を保持するプ
    ログラムメモリと、 前記プログラムメモリから命令を取り出す事前取出しバ
    ッファと、 すべてのループ命令が前記事前取出しバッファに在るか
    どうかを検出して、在る場合には前記プログラムメモリ
    へのさらなるアクセスに対して前記事前取出しバッファ
    をロックする手段と、 前記ループが前記所定の回数実行された時点を検出し、
    前記事前取出しバッファへのロックを開放して前記プロ
    グラムメモリへのさらなるアクセスを可能にする手段と
    を備えた命令ループを実行するコンピュータシステム。
  2. 【請求項2】前記ループ命令の少なくとも1つのアドレ
    スを保持する少なくとも1つのループ終端レジスタを含
    むことを特徴とする請求項1に記載のコンピュータシス
    テム。
  3. 【請求項3】第1ループ命令のアドレスを保持する少な
    くとも1つのループ開始レジスタを含むことを特徴とす
    る請求項1または2に記載のコンピュータシステム。
  4. 【請求項4】前記ループが所定の回数実行された時点を
    検出する前記手段は、前記所定の数を保持するループカ
    ウントレジスタと、前記ループの最後の命令に到達する
    と前記ループカウンタレジスタを減少させるカウンタと
    を含むことを特徴とする請求項1ないし3のいずれかに
    記載のコンピュータシステム。
  5. 【請求項5】取出しプログラムカウンタに応じて前記プ
    ログラムメモリから命令を取り出す事前取出し部を含む
    ことを特徴とする請求項1ないし4のいずれかに記載の
    コンピュータシステム。
  6. 【請求項6】すべてのループ命令が前記事前取出しバッ
    ファに在るかどうかを検出する前記手段は、実行されよ
    うとする命令のアドレスをループ開始アドレスと比較す
    る第1比較手段と、実行されようとする命令のアドレス
    をループ終端アドレスと比較する第2比較手段とを備え
    ている整合部を含むことを特徴とする請求項1ないし5
    のいずれかに記載のコンピュータシステム。
  7. 【請求項7】前記整合部は、前記プログラムメモリへの
    さらなるアクセスに対して前記事前取出しバッファをロ
    ックするロック信号を生成するよう動作することを特徴
    とする請求項6に記載のコンピュータシステム。
  8. 【請求項8】それぞれが所定の回数実行されるループ命
    令列を含む複数のループをコンピュータシステムで実行
    する方法であって、 プログラムメモリから事前取出しバッファに命令を取り
    出す過程と、 すべてのループ命令が前記事前取出しバッファに在るか
    どうかを検出して、在る場合には前記プログラムメモリ
    へのさらなるアクセスに対して前記事前取出しバッファ
    をロックする過程と、 前記ループが前記所定の回数実行されたときを検出し、
    前記事前取出しバッファへのロックを開放して前記プロ
    グラムメモリへのさらなるアクセスを可能にする過程と
    を含むことを特徴とする方法。
  9. 【請求項9】すべてのループ命令が前記事前取出しバッ
    ファに在るかどうかを検出する過程は、前記事前取出し
    バッファに取り出された各命令のアドレスをループ開始
    アドレスおよびループ終端アドレスと比較する過程を含
    む請求項8に記載の方法。
  10. 【請求項10】ループカウントレジスタに保持される、
    所定の回数実行されるループ命令列を含むループをもつ
    命令をコンピュータシステムで実行する方法であって、 各命令のアドレスをループ開始アドレスと比較する過程
    と、 前記命令アドレスと前記ループ開始アドレス間の一致が
    ある場合、前記ループカウンタレジスタの値を検出する
    過程と、 前記ループカウンタレジスタの値により示された回数だ
    け前記ループを実行する過程とを含み、前記ループカウ
    ンタレジスタの値が、前記一致を検出する時にゼロのと
    きに、前記ループは実行されないことを特徴とする方
    法。
JP2000135045A 1999-05-03 2000-05-08 命令ループを実行するコンピュータシステムおよび命令ループ実行方法 Pending JP2000330787A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP99410054.3 1999-05-03
EP99410054A EP1050804A1 (en) 1999-05-03 1999-05-03 Execution of instruction loops

Publications (1)

Publication Number Publication Date
JP2000330787A true JP2000330787A (ja) 2000-11-30

Family

ID=8242257

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000135045A Pending JP2000330787A (ja) 1999-05-03 2000-05-08 命令ループを実行するコンピュータシステムおよび命令ループ実行方法

Country Status (3)

Country Link
US (1) US6959379B1 (ja)
EP (1) EP1050804A1 (ja)
JP (1) JP2000330787A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010066892A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ及びデータ処理システム

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643755B2 (en) * 2001-02-20 2003-11-04 Koninklijke Philips Electronics N.V. Cyclically sequential memory prefetch
JP3804941B2 (ja) * 2002-06-28 2006-08-02 富士通株式会社 命令フェッチ制御装置
US7937525B2 (en) * 2004-06-25 2011-05-03 Intel Corporation Method and apparatus for decoding a virtual machine control structure identification
JP4086885B2 (ja) * 2004-11-25 2008-05-14 松下電器産業株式会社 命令供給装置
US7685411B2 (en) * 2005-04-11 2010-03-23 Qualcomm Incorporated Multi-mode instruction memory unit
US7681188B1 (en) * 2005-04-29 2010-03-16 Sun Microsystems, Inc. Locked prefetch scheduling in general cyclic regions
JP5233078B2 (ja) * 2006-03-23 2013-07-10 富士通セミコンダクター株式会社 プロセッサ及びその処理方法
US20070294519A1 (en) * 2006-06-19 2007-12-20 Miller Laura F Localized Control Caching Resulting In Power Efficient Control Logic
US20080229074A1 (en) * 2006-06-19 2008-09-18 International Business Machines Corporation Design Structure for Localized Control Caching Resulting in Power Efficient Control Logic
US9772851B2 (en) 2007-10-25 2017-09-26 International Business Machines Corporation Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer
US8543796B2 (en) 2008-11-05 2013-09-24 Intel Corporation Optimizing performance of instructions based on sequence detection or information associated with the instructions
US20100122066A1 (en) * 2008-11-12 2010-05-13 Freescale Semiconductor, Inc. Instruction method for facilitating efficient coding and instruction fetch of loop construct
US9753733B2 (en) * 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9459871B2 (en) * 2012-12-31 2016-10-04 Intel Corporation System of improved loop detection and execution
GB2515076B (en) 2013-06-13 2020-07-15 Advanced Risc Mach Ltd A data processing apparatus and method for handling retrieval of instructions from an instruction cache
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US9524011B2 (en) 2014-04-11 2016-12-20 Apple Inc. Instruction loop buffer with tiered power savings
CN104298488B (zh) * 2014-09-29 2018-02-23 上海兆芯集成电路有限公司 循环预测器指导的循环缓冲器
US9772824B2 (en) * 2015-03-25 2017-09-26 International Business Machines Corporation Program structure-based blocking
US11740906B2 (en) * 2021-02-25 2023-08-29 Huawei Technologies Co., Ltd. Methods and systems for nested stream prefetching for general purpose central processing units
US20240338220A1 (en) * 2023-04-05 2024-10-10 Simplex Micro, Inc. Apparatus and method for implementing many different loop types in a microprocessor
US12541369B2 (en) 2022-07-13 2026-02-03 Simplex Micro, Inc. Executing phantom loops in a microprocessor
US12566609B2 (en) 2023-03-14 2026-03-03 Simplex Micro, Inc. Microprocessor with apparatus and method for handling of instructions with long throughput
US12566610B2 (en) 2023-03-14 2026-03-03 Simplex Micro, Inc. Microprocessor with apparatus and method for replaying load instructions
US12566613B2 (en) 2023-11-13 2026-03-03 Simplex Micro, Inc. Microprocessor with speculative and in-order register sets
US12613698B2 (en) 2024-03-19 2026-04-28 Simplex Micro, Inc. Apparatus and method for hiding vector load latency in a time-based vector coprocessor

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4566063A (en) * 1983-10-17 1986-01-21 Motorola, Inc. Data processor which can repeat the execution of instruction loops with minimal instruction fetches
US4727483A (en) * 1984-08-15 1988-02-23 Tektronix, Inc. Loop control system for digital processing apparatus
US4714994A (en) * 1985-04-30 1987-12-22 International Business Machines Corp. Instruction prefetch buffer control
US4876642A (en) * 1988-01-19 1989-10-24 Gibson Glenn A Rules and apparatus for a loop capturing code buffer that prefetches instructions
JP3102027B2 (ja) * 1990-11-20 2000-10-23 日本電気株式会社 ループ制御のネスティング管理機構
JPH04293124A (ja) * 1991-03-20 1992-10-16 Hitachi Ltd データ処理プロセッサ
JPH06243036A (ja) * 1993-02-12 1994-09-02 Hitachi Ltd キャッシュ制御システム
JPH07253922A (ja) * 1994-03-14 1995-10-03 Texas Instr Japan Ltd アドレス生成回路
US5623615A (en) * 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
JPH0863355A (ja) * 1994-08-18 1996-03-08 Mitsubishi Electric Corp プログラム制御装置及びプログラム制御方法
GB2323190B (en) * 1997-03-14 2001-09-19 Nokia Mobile Phones Ltd Executing nested loops

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010066892A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ及びデータ処理システム

Also Published As

Publication number Publication date
EP1050804A1 (en) 2000-11-08
US6959379B1 (en) 2005-10-25

Similar Documents

Publication Publication Date Title
JP2000330787A (ja) 命令ループを実行するコンピュータシステムおよび命令ループ実行方法
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
US6775766B2 (en) Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
US5136696A (en) High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5961637A (en) Split branch system utilizing separate set branch, condition and branch instructions and including dual instruction fetchers
US5826074A (en) Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register
WO1990014629A2 (en) Parallel multithreaded data processing system
US6223278B1 (en) Method and apparatus for floating point (FP) status word handling in an out-of-order (000) Processor Pipeline
US6832305B2 (en) Method and apparatus for executing coprocessor instructions
US12411688B2 (en) Gather buffer management for unaligned and gather load operations
JPH04309131A (ja) 命令群用マイクロコード生成装置及びコンピュータにおける組合せ装置
US6725365B1 (en) Branching in a computer system
KR100986375B1 (ko) 피연산자의 빠른 조건부 선택
US6275903B1 (en) Stack cache miss handling
KR100580851B1 (ko) 하드웨어 루프
KR100551544B1 (ko) 하드웨어 루프
US6609191B1 (en) Method and apparatus for speculative microinstruction pairing
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
US6237086B1 (en) 1 Method to prevent pipeline stalls in superscalar stack based computing systems
EP0279953B1 (en) Computer system having mixed macrocode and microcode instruction execution
US6289428B1 (en) Superscaler processor and method for efficiently recovering from misaligned data addresses
JP5238960B2 (ja) マイクロプロセッサ内の命令トランザクションを低減する方法及び装置
EP1625492A1 (en) Methods and apparatus for instruction alignment
EP1050805B1 (en) Transfer of guard values in a computer system
US11379241B2 (en) Handling oversize store to load forwarding in a processor