JP3983482B2 - 高速ディスプレースメント付きpc相対分岐方式 - Google Patents
高速ディスプレースメント付きpc相対分岐方式 Download PDFInfo
- Publication number
- JP3983482B2 JP3983482B2 JP2001026253A JP2001026253A JP3983482B2 JP 3983482 B2 JP3983482 B2 JP 3983482B2 JP 2001026253 A JP2001026253 A JP 2001026253A JP 2001026253 A JP2001026253 A JP 2001026253A JP 3983482 B2 JP3983482 B2 JP 3983482B2
- Authority
- JP
- Japan
- Prior art keywords
- bit
- address
- instruction
- instruction word
- displacement
- 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
Links
Images
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/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- 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
-
- 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/324—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
-
- 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
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)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は,計算機における中央処理装置に用いられるプロセッサに属する。特にプロセッサに用いられているディスプレースメント付きPC相対分岐命令に関する。
【0002】
【従来の技術】
従来から,プロセッサ内のレジスタの値と命令語に埋め込まれた定数(即値と呼ぶ)を実行時に加算し,その値を分岐先のアドレスとする分岐命令を備えたプロセッサが存在する。特にレジスタとして現在実行中の命令アドレスを示すプログラムカウンタ(PC)を用いた場合,分岐命令の位置からの相対位置を指定することができる。プログラムの配置アドレスに関わらず常に同じ位置へ分岐を行うことができるため,様々なプロセッサにおいて採用されている。ここで,分岐命令の命令語中の即値をディスプレースメント(以下dispと略す)と呼び,前述の命令をディスプレースメント付きPC相対分岐命令(以下PC+disp分岐命令と略す)と呼ぶ。例えばこれは「SH7750プログラミングマニュアル」,日立製作所,1998のpp.10−22に記載されているBRA命令などが該当する。
PC+disp分岐命令の実行には,(1)dispを多くの場合符号拡張しPCとビット幅をそろえPCの値と符号拡張したdispを加算して分岐先アドレスを計算,(2)求まった値をアドレスとして命令をフェッチするという2段階の動作がある。符号拡張とはある幅mビットを持った符号付き2進整数を幅n(>m)ビットの符号付き2進整数に変換することを指し,変換元の整数を変換先の下位mビットにコピーし,さらに変換元の最上位ビット,すなわち符号ビットを変換先の上位n−mビットそれぞれにコピーすることにより実現できる。ここで(1)のアドレス計算の一例を図1に示す。
111は実行する命令のアドレス,すなわちPCの値であり32ビットである。112はPC+disp分岐命令の命令語であり,下位12ビットがdispである。命令語112のフォーマットを図2に示す。201は命令オペコードであり,PC+disp分岐命令の場合命令オペコード201は4ビットである。202および203はdispの一部であり,上位1ビットを202,下位11ビットを203とした204は12ビット符号付きのdispの値となる。すなわち202はdispの符号ビットである。
分岐先アドレス114は,命令語112中の204を32ビット符号拡張した113と111を32ビット加算器121で加算することにより得られる。
PC+disp分岐命令では分岐先アドレスを計算するために,本質的にnビットの加算処理が必要である。nビットの加算処理にはオーダlognの時間が必要となり,従来プロセッサでは本加算処理時間は不可避なものと考えられていた。
“Micro Processor Report,” September 13, 1999, pp.12-15, 22によると,上記加算処理時間を削減するためサンマイクロシステムズのMAJCアーキテクチャではPC+disp分岐命令の代わりにセミアブソリュート分岐(以下SemiABS分岐と略す)命令を採用している。セミアブソリュート分岐命令ではアドレスのビットの一部分を絶対アドレスで指定する。図3にSemiABS分岐命令でのアドレス計算方法を示す。
311はPC+disp分岐命令と同様にPCの値である。312はSemiABS分岐命令の命令語であり,図4にSemiABS分岐命令の命令フォーマットを示す。401は命令オペコード及び分岐先アドレス計算に用いるオペランド以外のオペランド部分である。402及び403が分岐先アドレス計算に用いるオペランド部分であり,命令語311の下位12ビット部分が403,その上位2ビットが402となっている。
分岐先アドレス314の計算については,下位2ビットは”00”(定数)とし,その上位の12ビット部分は命令語312中の403がそのまま入る。上位18ビット部分については,命令語312中の402を18ビット符号拡張した313と311を18ビット加算器321で加算し,出力とする。
SemiABS分岐ではPC+disp分岐と比較して分岐先アドレス計算に必要となる加算器の桁数が少なくて済むため,遅延時間を短く押さえることができ,動作周波数の向上が期待できる。
特に命令キャッシュを具備するプロセッサの場合,SemiABS分岐では高速化が可能となる。分岐命令の実行においては分岐先アドレス計算の次に命令キャッシュへのアクセスが必要となるが,通常キャッシュの動作は(1)アドレスのうちインデックス部となる部分をキャッシュアレイに入力し対応するタグ部とデータを読み出し,(2)アドレスのタグ部と対応する部分と(1)で出力されたタグ部を比較し,一致する場合キャッシュヒットとしてデータを出力するという2段階に分かれている。すなわちキャッシュへのインデックス部入力は,タグ部の入力よりもタイミング上先に行う必要がある。また,アドレスのうちインデックス部となる部分は,通常はアドレスの下位部分に配置されている。
SemiABS分岐では分岐先アドレスの下位部分は加算を行うことなくそのまま出力されるため,インデックス部のビット範囲が加算されないビット範囲に含まれる時,分岐先アドレスの上位部分の計算の完了を待たずに並列にキャッシュアレイのアクセスを開始することができ,分岐命令の実行が全体として高速化される。
【0003】
【発明が解決しようとする課題】
上記の従来技術では高速な分岐を実現するために,PC+disp分岐の代わりに新しいSemiABS分岐を導入している。しかし,SemiABS分岐論理方式を採用する新たなプロセッサではSemiABS分岐を採用していない命令によって書かれたプログラムを実行できない,すなわち,既存のPC+disp分岐命令を有するプロセッサ上で動作するオブジェクトコードにはSemiABS分岐命令が含まれていないため,高速化の恩恵を受けることができない。
また,SemiABS分岐では分岐先アドレスの一部分を絶対アドレスで指定する必要があるため,コンパイル時に分岐先アドレスの範囲に収まっているかどうかが判定できない,コンパイル後のオブジェクトコードがリロケータブルにならない,という弊害がある。リロケータブルとは,オブジェクトコードの配置アドレスに関わらず,そのオブジェクトコードが実行可能であることを指す。
本発明が解決しようとする課題の1つは,以上の問題に鑑みプロセッサの命令セットを新規に用意,または既存の命令セットに命令を追加することなく,PC+disp分岐命令の動作を高速化することである。また,PC+disp分岐命令を削除する必要がないため,上記に示した弊害についても発生しない。
【0004】
【課題を解決するための手段】
本発明は命令語をキャッシュもしくはバッファに一時的に格納し,命令の実行時はキャッシュもしくはバッファに一時的に格納されている命令語を読み出して実行するプロセッサに適用するものである。
【0005】
本発明では,命令語をキャッシュもしくはバッファに格納する時にPC+dispアドレッシング命令であるかどうかを判定し,PC+dispアドレッシング命令である場合にはキャッシュもしくはバッファへの格納前にあらかじめPC+dispの計算の下位部分を行い,命令語のdisp部分とキャッシュもしくはバッファに追加されたビットに計算結果を書き込む。該PC+dispアドレッシング命令をキャッシュもしくはバッファから読み出して実行する時にはPC+disp計算の下位部分はあらかじめ計算された結果をそのまま出力し,下位アドレス部分の計算を省略することにより,PC+disp分岐命令のアドレス計算に要する時間を削減する。以上が本発明の手段である。
【0006】
【発明の実施の形態】
以下に,本発明の実施例を2例示す。
(実施例1)
図5及び図6は本発明を最も単純な形で実現した例である。図5は命令フェッチ部,すなわち主記憶から読み出した命令語を命令キャッシュに格納する部分である。511は主記憶から読み出した命令語であり,命令フォーマットは図2の112と同等である。本実施例のプロセッサではアドレスは32ビットである。512は命令が格納されている主記憶上のアドレスであり,幅は32ビットである。また,アドレス512は命令語511の実行時のPCの値に等しい。
【0007】
501は命令キャッシュである。514は命令語511と同じ幅をもっており,命令キャッシュ501内に複数のエントリが存在する。515は514と1対1で対応しており,幅は1ビットである。回路ブロック502は命令語511とアドレス512を入力とし,出力が命令キャッシュ501内の514及び515に格納される。
【0008】
回路ブロック502の動作について説明する。命令語511内の201および202は命令キャッシュ501内の514の対応する部分にそのまま格納される。522はデコーダであり,命令語511内の201がPC+disp分岐命令かどうかを判定し,セレクタ523の出力を切り替える。命令語511内の201がPC+disp分岐命令以外の場合,セレクタ523は命令語511内の203をそのまま出力し,命令キャッシュ501内の514の203に対応する部分にそのまま格納される。
命令語511内の201がPC+disp分岐命令を示している場合,命令語511内の203とアドレス512の下位11ビット部分を加算器512で加算し,得られた11ビットの結果をセレクタ523が出力する。命令キャッシュ501内の514の203に対応する部分にはこの結果が格納される。また,加算器521の上位へのキャリービット出力は515に格納される。
図6はPC+disp分岐命令実行時の分岐先アドレス計算部である。611はPCの値であり,命令キャッシュ501内に格納された514と515及び611の値を用いて,分岐先アドレス613を求める。514内の203に対応する部分はそのまま分岐先アドレス613の下位11ビット部分に出力される。612は514内の202に対応する部分を21ビットに符号拡張したものである。加算器621は612と611の上位21ビット部分とを加算し,結果を分岐先アドレス613の上位21ビット部分に出力する。
【0009】
図5に示した回路ブロック502では,dispの下位11ビット部分とPCの下位11ビット部分の加算を行い,515に下位からのキャリービット出力を保存している。また,図6に示したPC+disp分岐命令の実行時にはdispの上位1ビットを21ビット符号拡張したものとPCの上位21ビット部分を,515に保存された下位からのキャリービットを考慮して加算している。すなわち結果として算出される分岐先アドレス613は,12ビットのdispを32ビットに符号拡張してPCと加算した値と等しい。
(実施例2)
図7,図8は本発明の別の実施例である。図7は実施例1の図5と同じく命令フェッチ部である。701,711,712および714は実施例1での501,511,512および514に相当し,回路ブロック702は実施例1での回路ブロック502に対応する。実施例1での515に相当する部分はこの実施例には存在しない。
デコーダ722とセレクタ723の動作も実施例1でのデコーダ522とセレクタ523の動作とほぼ同一であり,命令語711内のオペコード501がPC+disp分岐命令である場合に加算器721の出力である713を命令キャッシュ701内の714の204に対応する部分に出力し,それ以外の場合は命令語711内の204をそのまま714内の204に対応する部分に出力する。加算器721は命令語711内の204とアドレス712の下位12ビットを加算し,12ビットの加算結果を713に出力する。
【0010】
図8は実施例1の図6と同じくPC+disp分岐命令実行時の分岐先アドレス計算部である。811はPCであり,命令キャッシュ701内に格納された714及び811の値を用いて,分岐先アドレス812を求める。714内の204に対応する部分は,そのまま分岐先アドレス812の下位12ビット部分に出力される。
824及び825は加算器であり,それぞれ811の上位20ビットの値に+1,−1を加算した値を出力する。すなわちセレクタ823は,811の上位20ビットの値について,+1,±0,−1した値のどれかを,デコーダ822の出力に従って分岐先アドレス812の上位20ビット部分に出力する。
【0011】
デコーダ822には,(a)714内の203に対応する部分と811の下位11ビットを比較器821で比較した結果(203に対応する部分の方が大きい,もしくは等しい場合を0,逆の場合を1とする),(b)714内の502に対応する部分,(c)811の下位から12ビット目が入力される。デコーダ822の入力に対するセレクタ823の出力の対応を図10に示す。
比較器821の出力は,命令フェッチ部で行った11ビット加算の,下位10ビット目から11ビット目へのキャリービットである。このキャリービットと714内の202に対応する部分と811の下位から12ビット目の排他的論理和を取ると,命令語711内の202,すなわち204の符号ビットを算出することができる。
【0012】
また,前述のキャリービットと202,811の下位から12ビット目の値について,1ビット値3個の加算を行いキャリービットを求めると,命令フェッチ部で行った加算の,最上位ビットからのキャリービットが求められる。
202を20ビット符号拡張し,811の上位20ビット部分と,命令フェッチ部で行った加算の最上位ビットからのキャリービットを加算すれば,分岐先アドレス812は12ビットのdispを32ビットに符号拡張してPCと加算した値と等しくなる。しかし,(1)202が1の場合に811の上位20ビットに−1を加算し,加えて(2)命令フェッチ部で行った加算の最上位ビットからのキャリービットが1の場合に+1を加算すれば,先ほど述べた加算と同じ動作ができる。したがって,811の上位20ビットに対して,202の値と命令フェッチ部で行った加算の最上位ビットからのキャリービットが,00もしくは11の場合はそのまま,01の場合は+1を加算,10の場合は−1を加算すれば,先ほど述べた加算と同じ結果が得られる。
【0013】
以上実施例を説明したが,本発明はその技術的思想のもとに種々の変形が可能である。例を示すと,(1)分岐命令のみでなく,PC+dispアドレッシングによるロードストア命令に実施可能である,(2)dispの幅が一種類のみでなく8,12のように複数種類あっても実施例1,2とも実施できる,といった変形が可能である。
【0014】
【発明の効果】
本発明の実施例1に示したプロセッサの第一の利点は,SemiABS分岐命令と同様,PC+disp分岐命令の実行時の分岐先アドレス計算を高速に処理,すなわち分岐先アドレス計算にかかる遅延時間を短縮できることである。これにより特にパイプラインによって命令を実行するプロセッサにおいては,分岐先アドレスの計算を行うステージに必要となる時間を減少させることができ,プロセッサの動作周波数向上,あるいは処理サイクル数の削減,あるいはその両方が可能となる。
例えば,実施例1では全アドレスが32ビット,dispが12ビットであり従来のPC+disp分岐論理方式の場合,PC+disp分岐命令の実行時には32ビット加算が必要となるが,実施例1でのPC+disp分岐論理方式の場合では21ビット加算で済む。全アドレスが64ビット,dispが20ビットであるとした場合では,従来のPC+disp論理方式では64ビット加算,実施例1では45ビット加算で済む。
また,実施例1に示したプロセッサにおいては,SemiABS分岐命令と同様に命令キャッシュへのアクセスを早い時刻に開始することによってPC+disp分岐命令の動作を全体的に高速化できるという第二の利点がある。
実施例1に示したプロセッサでの第三の利点は,あるPC+disp分岐命令が命令キャッシュにヒットして繰り返し実行される場合には,分岐先アドレスの下位部分の計算は初回実行時,すなわち命令キャッシュに格納される時にのみ行われ,以降の実行時に重複して計算されることを回避できる点である。図9に従来のPC+disp分岐論理方式の場合と実施例1でのPC+disp分岐論理方式の場合での,タイミングチャートでの比較を示す。
901は従来のPC+disp分岐論理方式の場合であり,911は命令キャッシュ読み出し,および命令キャッシュミスヒットによる主記憶からの命令語読み出し動作,913は911で読み出した命令語をキャッシュに格納する動作,914は分岐先アドレスの下位部分の加算動作,915は分岐先アドレスの上位部分の加算と分岐先アドレス命令の命令キャッシュからの読み出し動作である。また,912は命令キャッシュヒットの場合の読み出し動作である。902は実施例1でのPC+disp分岐論理方式の場合であり,あるPC+disp分岐命令が命令キャッシュにヒットする状態で繰り返し実行される場合,繰り返し回数が多いほど実施例1でのPC+disp分岐論理方式の方が,実行に要する時間が短縮される。
【0015】
実施例1に示したプロセッサの第四の利点は,第一,第二及び第三の利点として挙げた効果を,既存のPC+disp型アドレッシングを備えるプロセッサの命令セットに変更を加えることなく,享受できる点である。
本発明の実施例2に示したプロセッサでは,実行時にdispの符号ビットおよび命令フェッチ時の加算の最上位ビットからのキャリービットの再計算を行うため実施例1に示したプロセッサの第一の利点に相当する効果は実質的にはほとんど得られないが,第二,第三および第四の利点に関しては同等に効果が得られる。
また,実施例2に示したプロセッサでは,主記憶から読み出した命令語を格納するキャッシュもしくはバッファに追加の記憶領域が不要であるという利点がある。
【図面の簡単な説明】
【図1】従来のPC+disp分岐での分岐先アドレス計算法。
【図2】命令語112のフォーマット。
【図3】従来のSemiABS分岐での分岐先アドレス計算法。
【図4】命令語312のフォーマット。
【図5】本発明の第一の実施例における命令語の命令キャッシュ格納時の処理回路。
【図6】本発明の第一の実施例におけるPC+disp分岐命令実行時のアドレス計算回路。
【図7】本発明の第二の実施例における命令語の命令キャッシュ格納時の処理回路。
【図8】本発明の第二の実施例におけるPC+disp分岐命令実行時のアドレス計算回路。
【図9】従来のPC+disp分岐論理方式の場合と実施例1でのPC+disp分岐論理方式の場合のタイミングチャートでの比較。
【図10】デコーダ822への入力に対するセレクタ823の出力対応図。
【符号の説明】
111−PCの値,112−PC+disp分岐命令の命令語,114−PC+disp命令での分岐先アドレス,121−32ビット加算器。
311−PCの値,312−SemiABS分岐命令の命令語,314−SemiABS分岐命令での分岐先アドレス,321−18ビット加算器。
501−命令キャッシュ,511−PC+disp分岐命令の命令語,512−読み出した命令の主記憶上のアドレス値,514−命令キャッシュ内のエントリ,515−514に一対一に対応する記憶領域,521−11ビット加算器,522−デコーダ,523−セレクタ。
611−PCの値,613−分岐先アドレス,621−21ビット加算器。
701−命令キャッシュ,711−PC+disp分岐命令の命令語,712−読み出した命令の主記憶上のアドレス値,714−命令キャッシュ内のエントリ,721−12ビット加算器,722−デコーダ,723−セレクタ。
811−PCの値,812−分岐先アドレス,821−11ビット比較器,822−デコーダ,823−セレクタ,824,825−20ビット加算器。
901−従来のPC+disp分岐論理方式の場合のPC+disp分岐命令動作,902−本発明の第一の実施例でのPC+disp分岐論理方式の場合のPC+disp分岐命令動作,911−命令キャッシュ読み出し及び命令キャッシュミスヒットによる主記憶からの命令語読み出し動作,912−命令キャッシュヒット時の命令語読み出し動作,913−911で読み出した命令語をキャッシュに格納する動作,914−分岐先アドレスの下位部分の加算動作,915−分岐先アドレスの上位部分の加算と分岐先アドレス命令の命令キャッシュからの読み出し動作。
Claims (7)
- 命令語を一時的に格納し、命令実行時に前記格納された命令語が読み出される記憶回路と、
前記命令語を入力とし、前記命令語の実効アドレスがPC相対ディスプレースメントとして指定されているかどうかを判定するデコーダと、
前記命令語がPC相対ディスプレースメントを有する場合には、PC相対ディスプレースメントと予め判定されたPCアドレスの下位ビット部分とを加算し、その計算結果を実効アドレス部分として出力する加算回路と、
前記命令語がPC相対ディスプレースメントを有する場合には、命令語のディスプレースメントを、前記加算回路から出力された計算結果に置き換えて、前記置き換え結果を、命令語のsemiABSディスプレースメントとして前記記憶回路に出力するセレクタと、
命令実行時にsemiABSディスプレースメント付き実効アドレスを計算する実効アドレス計算回路と、
前記加算回路の無効キャリービットを復帰させるキャリービット復帰手段と、を備え、
前記キャリービット復帰手段は、
semiABSディスプレースメントとPCアドレスの下位ビット部分とを比較する比較回路と、
前記比較結果と、semiABSディスプレースメントの符号ビットと、PCアドレスにおいてPCアドレスの下位ビット部分の最上位ビットよりも上位であるビットと、を入力とすることにより、予め判定された変換テーブルに基づいて、+1、0、−1のいずれかを選択する選択信号を出力するデコーダと、
前記選択信号に基づいて、PCアドレスの残りのビットに、+1、0又は−1を加算し、それをPCアドレスの残りのビットと等しいビット数を有する実効アドレスの上位部分とすることにより、復帰させるキャリービットを決定する手段と、を有し、
前記実効アドレス計算回路は、前記加算回路で発生するキャリービットを利用せずに、前記実効アドレスを計算するプロセッサ。 - 請求項1に記載のプロセッサであって、
前記加算回路によりPC相対ディスプレースメントが加算される前記PCアドレスの下位ビット部分は、当該PC相対ディスプレースメントの符号ビットを含むビット数に等しい部分であるプロセッサ。 - 命令語を一時的に格納し、命令実行時に前記格納された命令語が読み出される記憶回路と、
前記記憶回路に格納する命令語がPC相対ディスプレースメントを有するとき当該命令語のPC相対ディスプレースメント部分を操作する演算部と、
命令実行時に前記記憶回路から読み出される命令語を入力して実効アドレスを計算する実効アドレス計算回路と、を有し、
前記演算部は、
命令語を入力とし、前記命令語の実効アドレスがPC相対ディスプレースメントとして指定されているかどうかを判定するデコーダと、
前記命令語がPC相対ディスプレースメントを有する場合には、符号を除くPC相対ディスプレースメント部分とそれに対応するビット数のPCアドレス下位ビット部分とを加算し、その計算結果を実効アドレス部分として出力する加算回路と、
前記命令語がPC相対ディスプレースメントを有する場合には、命令語の前記符号を除くPC相対ディスプレースメント部分を、前記加算回路から出力された計算結果に置き換えて、前記置き換え結果を、命令語のsemiABSディスプレースメントとして前記記憶回路に出力するセレクタとを有し、
前記記憶回路は、前記命令語がPC相対ディスプレースメントを有する場合に前記加算回路からのキャリービットを格納する領域を有し、
前記実効アドレス計算回路は、命令実行時に、前記記憶回路に格納された対応する命令語の符号ビット、semiABSディスプレースメント、及びキャリービットを利用してPCアドレスから実効アドレスを計算する、プロセッサ。 - 請求項3に記載のプロセッサであって、
前記実効アドレス計算回路は、命令実行時に、前記記憶回路に格納された対応する命令語の符号ビット、semiABSディスプレースメント、及びキャリービットを入力し、前記入力したsemiABSディスプレースメントを下位側とし、PCアドレス上位ビットと符号ビット拡張結果とを前記キャリービットを利用して加算した結果を上位側とする、実効アドレスを計算する、プロセッサ。 - 請求項1に記載のプロセッサであって、
前記記憶回路は、命令キャッシュであるプロセッサ。 - PC相対ディスプレースメントを含む第1の命令語を、semiABSディスプレースメントを含む第2の命令語に変換する間に発生する無効キャリービットを復帰する方法であって、
予め判定されたPCアドレスの下位ビット部分とPC相対ディスプレースメントを加算することにより、semiABSディスプレースメントを計算すること、
第1の命令語のPC相対ディスプレースメントを、その計算結果に置き換えること、
semiABSディスプレースメントを含む第2の命令語を、記憶回路に格納すること、
前記記憶回路に格納された命令語の一部を入力とすること、
加算結果から伝播されたキャリービットを利用せずに、符号ビット拡張を実行すること、
命令実行時にsemiABSディスプレースメント付き実効アドレスを計算すること、
semiABSディスプレースメントとPCアドレスの下位ビット部分を比較すること、
比較結果と、semiABSディスプレースメントの符号ビットと、PCアドレスにおいてPCアドレスの下位ビット部分の最上位ビットよりも上位であるビットと、を入力することにより、予め判定された変換テーブルに基づいて、+1、0、−1のいずれかを選択する選択信号を出力すること、
前記選択信号に基づいて、PCアドレスの残りのビットに、+1、0又は−1を加算し、それをPCアドレスの残りのビットと等しいビット数を有する実効アドレスの上位部分とすることにより、加算ステップの最上位ビットから伝播されたキャリービットを復帰すること、を含み、
前記記憶回路に格納されたsemiABSディスプレースメントは、命令実行時に実効アドレス部分として直ちに利用される方法。 - PC相対ディスプレースメントを含む第1の命令語を、semiABSディスプレースメントを含む第2の命令語に変換する間に発生する無効キャリービットを復帰する方法であって、
予め判定されたPCアドレスの下位ビット部分とPC相対ディスプレースメントを加算することにより、semiABSディスプレースメントを計算すること、
第1の命令語のPC相対ディスプレースメントを、その計算結果に置き換えること、
semiABSディスプレースメントを含む第2の命令語を、記憶回路に格納すること、
前記記憶回路に格納された命令語の一部を入力とすること、
加算結果から伝播されたキャリービットを利用せずに、符号ビット拡張を実行すること、
命令実行時にsemiABSディスプレースメント付き実効アドレスを計算すること、
加算ステップから伝播されたキャリービットを取得するために、semiABSディスプレースメントとPCアドレスの下位ビット部分を比較すること、
キャリービットと、semiABSディスプレースメントの符号ビットと、PCアドレスにおいてPCアドレスの下位ビット部分の最上位ビットよりも上位であるビットと、の排他的論理和を取ることにより、第1の命令語のPC相対ディスプレースメントの符号ビットを出力すること、
加算ステップから伝播されたキャリービットを復帰するために、キャリービットと、符号ビットと、PCアドレスにおいてPCアドレスの下位ビット部分の最上位ビットよりも上位であるビットと、を加算すること、を含み、
前記記憶回路に格納されたsemiABSディスプレースメントは、命令実行時に実効アドレス部分として直ちに利用される方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2001026253A JP3983482B2 (ja) | 2001-02-02 | 2001-02-02 | 高速ディスプレースメント付きpc相対分岐方式 |
| US10/017,198 US7003651B2 (en) | 2001-02-02 | 2001-12-18 | Program counter (PC) relative addressing mode with fast displacement |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2001026253A JP3983482B2 (ja) | 2001-02-02 | 2001-02-02 | 高速ディスプレースメント付きpc相対分岐方式 |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JP2002229778A JP2002229778A (ja) | 2002-08-16 |
| JP2002229778A5 JP2002229778A5 (ja) | 2006-06-08 |
| JP3983482B2 true JP3983482B2 (ja) | 2007-09-26 |
Family
ID=18891096
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2001026253A Expired - Fee Related JP3983482B2 (ja) | 2001-02-02 | 2001-02-02 | 高速ディスプレースメント付きpc相対分岐方式 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US7003651B2 (ja) |
| JP (1) | JP3983482B2 (ja) |
Families Citing this family (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7010665B1 (en) * | 2002-06-27 | 2006-03-07 | Intel Corporation | Method and apparatus for decompressing relative addresses |
| US7111148B1 (en) | 2002-06-27 | 2006-09-19 | Intel Corporation | Method and apparatus for compressing relative addresses |
| JP3862642B2 (ja) * | 2002-09-17 | 2006-12-27 | 株式会社日立製作所 | データ処理装置 |
| US8006071B2 (en) | 2004-03-31 | 2011-08-23 | Altera Corporation | Processors operable to allow flexible instruction alignment |
| CN1329839C (zh) * | 2005-04-13 | 2007-08-01 | 柴钰 | 一种计算机cpu抗干扰的设计方法 |
| US7792150B2 (en) | 2005-08-19 | 2010-09-07 | Genband Us Llc | Methods, systems, and computer program products for supporting transcoder-free operation in media gateway |
| JP2008204249A (ja) | 2007-02-21 | 2008-09-04 | Renesas Technology Corp | データプロセッサ |
| US20100161950A1 (en) * | 2008-12-24 | 2010-06-24 | Sun Microsystems, Inc. | Semi-absolute branch instructions for efficient computers |
| CN103984637A (zh) * | 2013-02-07 | 2014-08-13 | 上海芯豪微电子有限公司 | 一种指令处理系统及方法 |
| CN104731718A (zh) * | 2013-12-24 | 2015-06-24 | 上海芯豪微电子有限公司 | 一种缓存系统和方法 |
| US10261911B2 (en) * | 2016-09-08 | 2019-04-16 | The Johns Hopkins University | Apparatus and method for computational workflow management |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5608886A (en) * | 1994-08-31 | 1997-03-04 | Exponential Technology, Inc. | Block-based branch prediction using a target finder array storing target sub-addresses |
| JP3599499B2 (ja) * | 1996-10-25 | 2004-12-08 | 株式会社リコー | 中央処理装置 |
| US6243805B1 (en) * | 1998-08-11 | 2001-06-05 | Advanced Micro Devices, Inc. | Programming paradigm and microprocessor architecture for exact branch targeting |
| US6237087B1 (en) * | 1998-09-30 | 2001-05-22 | Intel Corporation | Method and apparatus for speeding sequential access of a set-associative cache |
| US6502185B1 (en) * | 2000-01-03 | 2002-12-31 | Advanced Micro Devices, Inc. | Pipeline elements which verify predecode information |
-
2001
- 2001-02-02 JP JP2001026253A patent/JP3983482B2/ja not_active Expired - Fee Related
- 2001-12-18 US US10/017,198 patent/US7003651B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| US7003651B2 (en) | 2006-02-21 |
| JP2002229778A (ja) | 2002-08-16 |
| US20020108029A1 (en) | 2002-08-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3958662B2 (ja) | プロセッサ | |
| JP3842474B2 (ja) | データ処理装置 | |
| JP3547139B2 (ja) | プロセッサ | |
| JP2816248B2 (ja) | データプロセッサ | |
| JP5357181B2 (ja) | コンピュータ・システム、その動作方法、及び、コンピュータ・プログラム | |
| JPH1091443A (ja) | 情報処理回路、マイクロコンピュータ及び電子機器 | |
| JP2004288016A (ja) | プロセッサおよびコンパイラ | |
| JP2009230339A (ja) | 単精度浮動小数点データの格納方法およびプロセサ | |
| JP3983482B2 (ja) | 高速ディスプレースメント付きpc相対分岐方式 | |
| US6687808B2 (en) | Data processor using indirect register addressing | |
| JPH09269895A (ja) | データ処理装置 | |
| JP3837289B2 (ja) | 同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ | |
| US5815420A (en) | Microprocessor arithmetic logic unit using multiple number representations | |
| JP2669158B2 (ja) | データ処理装置 | |
| JPH04260930A (ja) | データ処理装置 | |
| JPH1049369A (ja) | データ処理装置 | |
| US5966514A (en) | Microprocessor for supporting reduction of program codes in size | |
| JPH07239780A (ja) | 1クロック可変長命令実行処理型命令読み込み電子計 算機 | |
| JP3345787B2 (ja) | データ処理装置 | |
| JPH04260929A (ja) | データ処理装置 | |
| JP2556182B2 (ja) | デ−タ処理装置 | |
| JP2008204249A (ja) | データプロセッサ | |
| JP4228241B2 (ja) | 演算処理装置 | |
| JP3532835B2 (ja) | データ処理装置およびプログラム変換装置 | |
| JP2504312B2 (ja) | プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060411 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060411 |
|
| RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20060411 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061116 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061121 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070122 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070703 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070704 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100713 Year of fee payment: 3 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110713 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110713 Year of fee payment: 4 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110713 Year of fee payment: 4 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| LAPS | Cancellation because of no payment of annual fees |