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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address 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命令のアドレスを保持す
るループ開始レジスタの形態を取って支援される。こう
したレジスタを装備することで、ループはコンピュータ
システムにより所定の回数だけ自動的に実行可能であ
る。すなわち、ループ終端アドレスが検出されると、メ
モリから取り出された次のアドレスはループ開始アドレ
スである。ループカウントレジスタは、ループが実行さ
れる回数に相当する初期数を保持し、ループが実行され
る度に増分される。
常、プログラムメモリから取り出されて、復号され、実
行ユニットに送られ、そこで命令が実行され、プログラ
ムメモリに記憶されたプログラムを実行する。時に条件
パラメータが合致すると、特定の命令列を2度以上実行
しなければならない場合がしばしばある。こうした列の
ことを本明細書では「ループ」と呼ぶ。ループはソフト
ウェアや命令により実施可能である。こうした命令は、
1つのループを構成する特定の列の命令の終端に到達し
た後で、ループの第1命令が再び実行される。所謂ハー
ドウェアループは関連するハードウェアにより、中で
も、ループ内の最後の命令のアドレスを保持するループ
終端レジスタとループ内の第1命令のアドレスを保持す
るループ開始レジスタの形態を取って支援される。こう
したレジスタを装備することで、ループはコンピュータ
システムにより所定の回数だけ自動的に実行可能であ
る。すなわち、ループ終端アドレスが検出されると、メ
モリから取り出された次のアドレスはループ開始アドレ
スである。ループカウントレジスタは、ループが実行さ
れる回数に相当する初期数を保持し、ループが実行され
る度に増分される。
【0003】
【発明が解決しようとする課題】こうしたハードウェア
ループの1つの問題点は、同じ命令が繰り返してメモリ
から取り出され、その結果としてメモリアクセスバス上
に電力と負荷がかかる。
ループの1つの問題点は、同じ命令が繰り返してメモリ
から取り出され、その結果としてメモリアクセスバス上
に電力と負荷がかかる。
【0004】本発明の目的は、できる限り上記の問題を
回避することにある。
回避することにある。
【0005】
【課題を解決するための手段】本発明の1つの観点によ
ると、ループを実行するコンピュータシステムが提供さ
れ、前記コンピュータシステムは、所定の回数実行され
るループ命令の集合をもつ少なくとも1つのループ列を
含む命令列を保持するプログラムメモリと、プログラム
メモリから命令を取り出す事前取出しバッファと、あら
ゆるループ命令が事前取出しバッファにあるかどうかを
検出し、ある場合にはプログラムメモリへのさらなるア
クセスに対して事前取出しバッファをロックする手段
と、ループが前記所定の回数実行されたときを検出し
て、事前取出しバッファ上のロックを開放して、さらに
プログラムメモリにアクセスする手段とを備える。
ると、ループを実行するコンピュータシステムが提供さ
れ、前記コンピュータシステムは、所定の回数実行され
るループ命令の集合をもつ少なくとも1つのループ列を
含む命令列を保持するプログラムメモリと、プログラム
メモリから命令を取り出す事前取出しバッファと、あら
ゆるループ命令が事前取出しバッファにあるかどうかを
検出し、ある場合にはプログラムメモリへのさらなるア
クセスに対して事前取出しバッファをロックする手段
と、ループが前記所定の回数実行されたときを検出し
て、事前取出しバッファ上のロックを開放して、さらに
プログラムメモリにアクセスする手段とを備える。
【0006】本発明の他の観点によると、それぞれが所
定の回数実行されるループ命令列を含む複数のループを
実行する方法が提供され、前記方法は、プログラムメモ
リから事前取出しバッファに命令を取り出す過程と、す
べてのループ命令が事前取出しバッファにあるかどうか
を検出して、ある場合にはプログラムメモリへのさらな
るアクセスに対して事前取出しバッファをロックする過
程と、前記所定の回数ループが実行されたときを検出し
て、事前取出しバッファへのロックを開放して、プログ
ラムメモリへのさらなるアクセスを可能にする過程とを
含む。
定の回数実行されるループ命令列を含む複数のループを
実行する方法が提供され、前記方法は、プログラムメモ
リから事前取出しバッファに命令を取り出す過程と、す
べてのループ命令が事前取出しバッファにあるかどうか
を検出して、ある場合にはプログラムメモリへのさらな
るアクセスに対して事前取出しバッファをロックする過
程と、前記所定の回数ループが実行されたときを検出し
て、事前取出しバッファへのロックを開放して、プログ
ラムメモリへのさらなるアクセスを可能にする過程とを
含む。
【0007】したがって、本発明の上記の態様による
と、ループが事前取出バッファに入るかどうかが判定さ
れる。入る場合、事前取出しループにロックされて、メ
モリからのさらなる取出しは、ループが所定の回数実行
されるまで、禁止される。ループが事前取出しバッファ
にその全体が入らない場合には、ロックされることな
く、システムは通常通り動作する。
と、ループが事前取出バッファに入るかどうかが判定さ
れる。入る場合、事前取出しループにロックされて、メ
モリからのさらなる取出しは、ループが所定の回数実行
されるまで、禁止される。ループが事前取出しバッファ
にその全体が入らない場合には、ロックされることな
く、システムは通常通り動作する。
【0008】好ましくは、事前取出しバッファは、連続
して命令を復号器に供給し、ループ命令を順序通り読み
取る読取りポインタを備えている。ループ終端アドレス
が検出されると、読取りポインタの次のアドレスはルー
プ開始アドレスである。
して命令を復号器に供給し、ループ命令を順序通り読み
取る読取りポインタを備えている。ループ終端アドレス
が検出されると、読取りポインタの次のアドレスはルー
プ開始アドレスである。
【0009】ハードウェアループが実施される従来のデ
ジタル信号プロセッサにおいて、ループカウンタレジス
タは通常は値ゼロを取れない。それが可能な場合、ルー
プが1度または限られた回数実行される。さらに柔軟性
を高めるために、本発明の他の態様は、所定の回数実行
されるループ命令の列をもつループを含み、その所定の
回数がループカウントレジスタに保持されているループ
を含む命令をコンピュータシステムで実行する方法を提
供する。この方法は、ループカウンタレジスタの値を検
出する過程と、ループカウンタレジスタの値がゼロのと
きには、ループが実行されないループカウンタレジスタ
の値により指示される回数、ループを実行する過程と、
から構成される。
ジタル信号プロセッサにおいて、ループカウンタレジス
タは通常は値ゼロを取れない。それが可能な場合、ルー
プが1度または限られた回数実行される。さらに柔軟性
を高めるために、本発明の他の態様は、所定の回数実行
されるループ命令の列をもつループを含み、その所定の
回数がループカウントレジスタに保持されているループ
を含む命令をコンピュータシステムで実行する方法を提
供する。この方法は、ループカウンタレジスタの値を検
出する過程と、ループカウンタレジスタの値がゼロのと
きには、ループが実行されないループカウンタレジスタ
の値により指示される回数、ループを実行する過程と、
から構成される。
【0010】したがって、ループカウンタレジスタの値
がゼロであると、ループはスキップされる。
がゼロであると、ループはスキップされる。
【0011】本発明をいっそう良く理解し、実施方法を
示すために、添付図面を例として参照するのが望まし
い。
示すために、添付図面を例として参照するのが望まし
い。
【0012】
【実施例】図1は、複数の命令を並列実行するように構
成され高度なデジタル信号処理(DSP)性能を提供する
のに特にふさわしいコンピュータシステムの主な構成要
素を示す。プログラムメモリ2は、図4を参照しながら
以下に説明されるように、3つの異なる命令形式の中の
1つの形式で命令を保持する。コンピュータシステム
は、各命令形式に1つづつ、3つの異なるモードをサポ
ートしている。現命令モードは処理状況レジスタ(PS
R)4に保持され、事前取出しユニット6と復号器8内で動
作を制御するのに使用される。PSRは事前取出しユニッ
ト6内に保持される。環境によっては、バイパス機構9に
より命令がプログラムメモリ2から復号器8に直接送られ
る。
成され高度なデジタル信号処理(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間でデータの待ち行列が転送できる。
前取出しユニット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を参
照しながら説明する。
ープ」の性能に関し、したがって、主に、プログラムメ
モリ2、事前取出しユニット6および復号器8に関連す
る。ハードウェアループは、ソフトウェア項よりもハー
ドウェア項で識別され、複数回実行される命令列であ
る。事前取出しユニット6のより詳細な動作を図2を参
照しながら説明する。
【0015】事前取出しユニット6は、関連する制御ビ
ット24と制御回路機構を備えた事前取出しバッファ22を
備えている。制御回路機構は、PSR4と、事前取出し部18
と、整合部20とを含んでいる。事前取出し部18は、プロ
グラムメモリアクセス制御信号26aと26bを用いてプログ
ラムメモリ2へのメモリアクセスを起動する。取出しが
始まるプログラムメモリ2のアドレスは事前取出し部18
の事前取出しプログラムカウンタ28に保持される。事前
取出し部18により起動されたメモリ取出しに応答して、
命令ワードはプログラムメモリ2から事前取出しバッフ
ァ22に命令データ入力経路30に沿って送られる。
ット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を発行する。これらの信号は、信
号の処理時に変化して、復号器に送られる。その詳細は
本明細書には記載されていない。
号器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つ
のメモリアクセスを連続して実行できる。
す。図面上では、事前取出しバッファは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にそれぞれ対応している。これらのフラグは、その後
のメモリ取出しが起動可能なように、対応する線が完全
に空の時を示す。取出しの後で、データは事前取出しバ
ッファにより受け取られて、空のフラグは、その線が現
在一杯であることを示すようリセットされる。
22の制御ビット24は、空のフラグEF1ないしEF4を含んで
おり、それらのフラグは事前取出しバッファ線L0ないし
L3にそれぞれ対応している。これらのフラグは、その後
のメモリ取出しが起動可能なように、対応する線が完全
に空の時を示す。取出しの後で、データは事前取出しバ
ッファにより受け取られて、空のフラグは、その線が現
在一杯であることを示すようリセットされる。
【0020】マシンの3つの異なる命令モードを図4を
参照して以下に説明する。これらのモードは、各マシン
サイクル中に事前取出しユニット6から復号器8に供給さ
れるデータの形式を判定する。どのモードでも、事前取
出しユニット6によるプログラムメモリ2へのメモリアク
セスにより長さが128ビットの命令ワードが検索され
る。
参照して以下に説明する。これらのモードは、各マシン
サイクル中に事前取出しユニット6から復号器8に供給さ
れるデータの形式を判定する。どのモードでも、事前取
出しユニット6によるプログラムメモリ2へのメモリアク
セスにより長さが128ビットの命令ワードが検索され
る。
【0021】第1命令モードによると、16ビット命令の
対が送られて、ビット列w0、w1などのスロット0とスロ
ット1で示される。各検索された命令ワードは、8つの
対から形成された8つの16ビット命令を含み、各命令
は、上記のような2つの16ビット部分の取出しバッファ
22の記憶位置L0ないし15に記憶される。これは、本明細
書では、GP16スーパースカラモードと呼ばれる。
対が送られて、ビット列w0、w1などのスロット0とスロ
ット1で示される。各検索された命令ワードは、8つの
対から形成された8つの16ビット命令を含み、各命令
は、上記のような2つの16ビット部分の取出しバッファ
22の記憶位置L0ないし15に記憶される。これは、本明細
書では、GP16スーパースカラモードと呼ばれる。
【0022】第2命令モードによると、それぞれ長さが
32ビットの2つの命令が、各マシンサイクル、たとえ
ば、CYCLE0のw0、w1で事前取出しバッファから復号器に
送られる。検索された各命令ワードは、4つの32ビット
命令を含む。このモードは本明細書ではGP32スーパース
カラモードと呼ばれる。
32ビットの2つの命令が、各マシンサイクル、たとえ
ば、CYCLE0のw0、w1で事前取出しバッファから復号器に
送られる。検索された各命令ワードは、4つの32ビット
命令を含む。このモードは本明細書ではGP32スーパース
カラモードと呼ばれる。
【0023】第3命令モードによると、それぞれ長さが
32ビットの4つの命令w0、w1、w2、w3が各マシンサイク
ルで復号器に送られる。各検索命令ワードは、4つの32
ビット命令を含む。これは本明細書では超長命令ワード
(VLIWモード)と呼ばれる。VLIWモードでは、4つの32
ビット命令は、事前定義された文法規則に応じて関連し
ている。
32ビットの4つの命令w0、w1、w2、w3が各マシンサイク
ルで復号器に送られる。各検索命令ワードは、4つの32
ビット命令を含む。これは本明細書では超長命令ワード
(VLIWモード)と呼ばれる。VLIWモードでは、4つの32
ビット命令は、事前定義された文法規則に応じて関連し
ている。
【0024】各検索命令ワードは復号器8により復号さ
れ、スロット0、スロット1、スロット3と記された4つ
の可能なチャンネルに沿ってマイクロ命令生成器10に送
られる。各命令ワードは、データ実行ユニットEXU1とEX
U2およびアドレス実行ユニットEXU3とEXU4用のマイクロ
命令となる多くのマイクロ命令を生成する。
れ、スロット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サイクルが読取りと
復号に必要なので、再取出しバッファを使用すると、メ
モリによる遅延を隠ぺいできる。
の命令が復号中には、メモリ取出しが継続され、命令ワ
ード(128ビット)が他の線に記憶されて、事前取出し
バッファ22が一杯になる。たとえば、メモリ取出しが最
後の線L3になされる時まで、第1線L0は復号器に完全に
読み出されるので、メモリからその後の命令ワードを受
け取る準備がなされることが多い。空のフラグEF1はこ
れを示している。命令ワードを複合するのに必要なマシ
ンサイクルの数は、マシンの命令モードに応じて変化す
る。すなわち、1サイクルはVLIWモードで必要とされ、
2サイクルはGP32モードで必要とされ、4サイクルはGP
16モードで必要とされる。最小で1サイクルが読取りと
復号に必要なので、再取出しバッファを使用すると、メ
モリによる遅延を隠ぺいできる。
【0026】ハードウェアループの実行には、プログラ
ムメモリに保持された命令列を複数回実行することが含
まれている。通常の動作に関して前述したように、事前
取出し部18はプログラムメモリ2から各128ビットの命令
ワードの取出しを始めて、事前取出しバッファの空の線
L0ないしL3にその命令を記憶する。空のフラグEF1-4
は、線L0ないしL3はデータを受け取れるよう自由である
かどうかを示している。ある線におけるすべての命令が
実行されると、その線の空のフラグが設定されて、事前
取出し部はプログラムメモリから他の命令ワードを取り
出して、そのワードを自由線に記憶する。この通常の動
作がループに使用される場合、事前取出し部とプログラ
ムメモリ間でアクセスが繰り返されて、同じループ命令
を繰り返して検索することを意味している。
ムメモリに保持された命令列を複数回実行することが含
まれている。通常の動作に関して前述したように、事前
取出し部18はプログラムメモリ2から各128ビットの命令
ワードの取出しを始めて、事前取出しバッファの空の線
L0ないしL3にその命令を記憶する。空のフラグEF1-4
は、線L0ないしL3はデータを受け取れるよう自由である
かどうかを示している。ある線におけるすべての命令が
実行されると、その線の空のフラグが設定されて、事前
取出し部はプログラムメモリから他の命令ワードを取り
出して、そのワードを自由線に記憶する。この通常の動
作がループに使用される場合、事前取出し部とプログラ
ムメモリ間でアクセスが繰り返されて、同じループ命令
を繰り返して検索することを意味している。
【0027】ループを例示するために図5を参照する。
図5は、プログラムメモリにおける命令列を構成図で示
している。矢印Aは命令が実行される方向を示してい
る。命令は128ビット命令ワードで構成される。ここに
示される例はGP32モードにあり、各命令の長さは32ビッ
トである。図5の斜線命令で示されているように、ルー
プの第1命令はループ開始アドレス(LSA)で示され
る。ループの最後の命令はループ終端アドレス(LEA)
により示されている。ループ開始アドレス(LSA)はル
ープ開始レジスタ(LSR)で保持され、ループ終端アド
レス(LEA)はループ終端レジスタ(LER)に保持され
る。プログラムのループが多数あると、各ループの開始
および終端アドレスを保持する複数のループ開始レジス
タとループ終端レジスタがある。ループが実行される度
に、本明細書に記載のコンピュータシステムは、ループ
命令が事前取出しバッファ内ですべて保持されるかどう
かを検出する。
図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に送られる。
アループが事前取出しバッファ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に沿って復号器に命令を送
る。ループが最初に実行されると、ループを実行するか
どうかまたは新しい命令がロード可能かどうかの決定が
下される。これは以下のようにして達成される。
れるようにロックをトリガーするので、ハードウェアル
ープはそのバッファ内で完全に実行可能である。このこ
とは、ループ命令が実行される必要のある回数だけ、す
べてのループ命令が事前取出しバッファ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により異なる回数、同じループ(またはループ開始
アドレスおよび/またはループ終端アドレスを変えるこ
とで異なるループ)を実行する準備ができた。
ウェアループの開始時に、ループカウンタレジスタ(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に送る。事前取
出し部はその位置から新しいメモリアクセスを起動でき
る。
達したと判定すると、対応するループのループカウンタ
レジスタの値がゼロの場合、整合部は復号器に送られた
命令を無効にする(すなわち、復号器8はそのループ開
始アドレスに対応する命令には応答しない)。第2過程
では、整合部20が整合部プログラムカウンタ36で現在ス
キップしているループのループ終端アドレスをロードす
る。第3過程では、整合部20が、(現モード(GP32/GP1
6/VLIW)に応じて)適切な量分、整合部プログラムカウ
ンタ36の値を増分するので、プログラムカウンタ36は、
ループの最後の命令の後の第1命令のアドレスを示す。
最後の過程では、整合部は整合部プログラムカウンタ36
の値を事前取出しプログラムカウンタ28に送る。事前取
出し部はその位置から新しいメモリアクセスを起動でき
る。
【0034】こうした動作すべてが実行されている間、
ループカウンタレジスタ(LCR)は再ロードループカウ
ンタレジスタ(LCR_RCD)の値で更新される。したがっ
て、これによりループを「スキップ」できる。
ループカウンタレジスタ(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つのループ列を含む命令列を保持するプ
ログラムメモリと、 前記プログラムメモリから命令を取り出す事前取出しバ
ッファと、 すべてのループ命令が前記事前取出しバッファに在るか
どうかを検出して、在る場合には前記プログラムメモリ
へのさらなるアクセスに対して前記事前取出しバッファ
をロックする手段と、 前記ループが前記所定の回数実行された時点を検出し、
前記事前取出しバッファへのロックを開放して前記プロ
グラムメモリへのさらなるアクセスを可能にする手段と
を備えた命令ループを実行するコンピュータシステム。 - 【請求項2】前記ループ命令の少なくとも1つのアドレ
スを保持する少なくとも1つのループ終端レジスタを含
むことを特徴とする請求項1に記載のコンピュータシス
テム。 - 【請求項3】第1ループ命令のアドレスを保持する少な
くとも1つのループ開始レジスタを含むことを特徴とす
る請求項1または2に記載のコンピュータシステム。 - 【請求項4】前記ループが所定の回数実行された時点を
検出する前記手段は、前記所定の数を保持するループカ
ウントレジスタと、前記ループの最後の命令に到達する
と前記ループカウンタレジスタを減少させるカウンタと
を含むことを特徴とする請求項1ないし3のいずれかに
記載のコンピュータシステム。 - 【請求項5】取出しプログラムカウンタに応じて前記プ
ログラムメモリから命令を取り出す事前取出し部を含む
ことを特徴とする請求項1ないし4のいずれかに記載の
コンピュータシステム。 - 【請求項6】すべてのループ命令が前記事前取出しバッ
ファに在るかどうかを検出する前記手段は、実行されよ
うとする命令のアドレスをループ開始アドレスと比較す
る第1比較手段と、実行されようとする命令のアドレス
をループ終端アドレスと比較する第2比較手段とを備え
ている整合部を含むことを特徴とする請求項1ないし5
のいずれかに記載のコンピュータシステム。 - 【請求項7】前記整合部は、前記プログラムメモリへの
さらなるアクセスに対して前記事前取出しバッファをロ
ックするロック信号を生成するよう動作することを特徴
とする請求項6に記載のコンピュータシステム。 - 【請求項8】それぞれが所定の回数実行されるループ命
令列を含む複数のループをコンピュータシステムで実行
する方法であって、 プログラムメモリから事前取出しバッファに命令を取り
出す過程と、 すべてのループ命令が前記事前取出しバッファに在るか
どうかを検出して、在る場合には前記プログラムメモリ
へのさらなるアクセスに対して前記事前取出しバッファ
をロックする過程と、 前記ループが前記所定の回数実行されたときを検出し、
前記事前取出しバッファへのロックを開放して前記プロ
グラムメモリへのさらなるアクセスを可能にする過程と
を含むことを特徴とする方法。 - 【請求項9】すべてのループ命令が前記事前取出しバッ
ファに在るかどうかを検出する過程は、前記事前取出し
バッファに取り出された各命令のアドレスをループ開始
アドレスおよびループ終端アドレスと比較する過程を含
む請求項8に記載の方法。 - 【請求項10】ループカウントレジスタに保持される、
所定の回数実行されるループ命令列を含むループをもつ
命令をコンピュータシステムで実行する方法であって、 各命令のアドレスをループ開始アドレスと比較する過程
と、 前記命令アドレスと前記ループ開始アドレス間の一致が
ある場合、前記ループカウンタレジスタの値を検出する
過程と、 前記ループカウンタレジスタの値により示された回数だ
け前記ループを実行する過程とを含み、前記ループカウ
ンタレジスタの値が、前記一致を検出する時にゼロのと
きに、前記ループは実行されないことを特徴とする方
法。
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)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010066892A (ja) * | 2008-09-09 | 2010-03-25 | Renesas Technology Corp | データプロセッサ及びデータ処理システム |
Families Citing this family (27)
| 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)
| 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 |
-
1999
- 1999-05-03 EP EP99410054A patent/EP1050804A1/en not_active Withdrawn
-
2000
- 2000-05-02 US US09/562,542 patent/US6959379B1/en not_active Expired - Lifetime
- 2000-05-08 JP JP2000135045A patent/JP2000330787A/ja active Pending
Cited By (1)
| 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 |