JP2682264B2 - プログラムカウンタ装置 - Google Patents

プログラムカウンタ装置

Info

Publication number
JP2682264B2
JP2682264B2 JP3115162A JP11516291A JP2682264B2 JP 2682264 B2 JP2682264 B2 JP 2682264B2 JP 3115162 A JP3115162 A JP 3115162A JP 11516291 A JP11516291 A JP 11516291A JP 2682264 B2 JP2682264 B2 JP 2682264B2
Authority
JP
Japan
Prior art keywords
address
instruction
bit
selector
prefetch
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 - Lifetime
Application number
JP3115162A
Other languages
English (en)
Other versions
JPH04343134A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP3115162A priority Critical patent/JP2682264B2/ja
Priority to US07/881,430 priority patent/US5459847A/en
Publication of JPH04343134A publication Critical patent/JPH04343134A/ja
Application granted granted Critical
Publication of JP2682264B2 publication Critical patent/JP2682264B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/3816Instruction alignment, e.g. cache line crossing
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing

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)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、蓄積プログラム方式の
演算処理装置における命令プリフェッチ装置及び、プロ
グラムカウンタ装置に係り、特に、次に実行する命令の
命令アドレスを発生する装置に関する。
【0002】
【従来の技術】蓄積プログラム型の演算処理装置は、命
令を記憶装置のなかに記憶させ、その命令列を順次読み
だし実行することで演算処理を行なう。
【0003】プログラムカウンタは、前記蓄積プログラ
ム型の演算処理装置において、現在実行中の命令中に次
に実行するべき命令のアドレスを記述することなしに、
前記現在実行中の命令の次の命令のアドレス、すなわ
ち、前記現在実行中の命令のアドレスに前記現在実行中
の命令の大きさ(バイト数)を加えたアドレスを、次に
実行する命令のアドレスとするために考えられた機構で
ある。
【0004】また、プリフェッチ回路は、前記演算処理
装置と外部とのインターフェースを有効に使用するため
の機構である。前記プログラムカウンタ方式の蓄積プロ
グラム型演算処理装置では、命令は、アドレス昇順に実
行されるため、前記演算処理装置の外部とのインターフ
ェースが空いている場合は、命令のプリフェッチ(先取
り)が可能である。
【0005】前記蓄積プログラム型の演算処理装置は、
前記外部インターフェースを通して、命令及びデータを
取り込むが、前記外部インターフェースが1組しかない
場合、(アドレスバス/データバスで1組とする)デー
タアクセス及び、命令アクセスの共用となり、データア
クセス時は、前記外部インターフェースが占有され、命
令フェッチ(前記外部インターフェースを利用した、命
令の読み込みサイクル)が不可能である。前記外部イン
ターフェースが占有されている場合にプリフェッチをし
ておくことで、前記命令フェッチのパイプラインステー
ジの実行が可能となる。
【0006】前記プログラムカウンタが、命令のサイズ
(命令の占めるバイト数)づつ加算されるのに対し、前
記プリフェッチカウンタは、前記、外部インターフェー
スの一度に取り扱うことのできるデータのサイズ分だけ
加算される。前者は命令の種類によって変わり、一般的
に1/2/3/4バイトなどであるが、後者は、外部イ
ンターフェースのサイズにあたり、2バイト又は4バイ
ト固定というのが一般的である。このため両者の値は同
一でない。
【0007】ここではプリフェッチ機構の動作を中心
に、プリフェッチアドレスと、命令アドレスについて言
及する。
【0008】通常、前記プリフェッチ機構は内部にレジ
スタを持つ。前記レジスタはバッファ・レジスタと呼ば
れ、FIFOになっている。
【0009】プリフェッチアドレスは昇順にカウントア
ップし、前記バッファレジスタに書き込れる命令のアド
レスを順次発生する。
【0010】前記、プリフェッチ・アドレスでメモリを
参照し、連続した領域をバッファに取り込む。
【0011】また、バッファレジスタは、命令のアライ
ン機構ももち、バッファ中の命令列を命令単位に切り分
けて、実行ユニットに渡す。
【0012】前記プリフェッチ機構は前記バッファ・レ
ジスタが一杯になるまで、外部インターフェースが利用
できる間は可能の限りはバッファ・レジスタに命令の読
み込みを行なう。もし、バッファ・レジスタが一杯にな
った場合は、外部バスインターフェースからの命令読み
込みサイクルを停止する。
【0013】以上が、機能面から見たプリフェッチ機構
の動作である。
【0014】命令アドレスはバッファレジスタから実行
ユニットに渡される命令のアドレスで、これは、命令ア
ドレス発生機構で発生される。
【0015】前記命令アドレス発生機構は、現在の命令
のアドレスに、バッファレジスタから、実行ユニットに
引き渡される命令のサイズを加算した値である。
【0016】このため、前記プリフェッチ・アドレス発
生の回路及び、前記命令アドレスの発生回路が独立に動
作し、次にプリフェッチされるアドレス及び、次に実行
される命令のアドレスの生成を行なうのが、一般的であ
る。
【0017】このため、プリフェッチ・アドレス用の加
算器と命令アドレス生成用の加算器が別個に必要であ
り、アドレスのビット幅を持った加算器が2個必要にな
る。
【0018】以下、32Bitアドレス空間を持つ場合
のプログラムカウンタ及びプリフェッチ回路の構成を例
をあげて説明する。
【0019】図2にプログラムカウンタを制御する機
構、及びプリフェッチアドレスを制御する機構を示す。
【0020】プリフェッチ機構は、プログラムの流れに
そって、外部から命令を先読みする回路である。
【0021】プリフェッチ回路は命令が可変長で、外部
とデータを受渡しをするインターフェース・バスのバス
サイズとことなる大きさである場合は、非常に有効であ
る。
【0022】プリフェッチはプリフェッチ・バッファに
空きがある場合に実行される。次のプリフェッチアドレ
スは、現在のプリフェッチアドレスに、前記バスサイズ
を加算することで生成する。
【0023】前記バスサイズは、8の倍数である場合が
多く、16/32/64ビットなどが通常使用される。
つまり、2/4/8バイトが一度に扱われる。
【0024】図2では、レジスタ201にプリフェッチ
アドレスが記録されている。プリフェッチはレジスタ2
01の値をアドレスとして、メモリ204のアクセスを
する。
【0025】アクセスが達成されれば、加算器202に
よって、命令のフェッチサイズを表す信号及び、現在の
プリフェッチアドレスを加算し、それを次のフェッチア
ドレスとするために、信号線220、セレクタ203を
とおして、レジスタ201に書き戻す。
【0026】プリフェッチされたデータは、プリフェッ
チバッファ205に格納される。
【0027】また、分岐命令などの場合で、プリフェッ
チを全く新しいアドレスから開始する場合は、セレクタ
203から、分岐アドレスを信号213を用いて更新す
ることで、分岐アドレスのセットを行なう。
【0028】アクセスが達成されない場合は、信号21
5によって、前回のサイクルと全く同様の値を書き戻
す。
【0029】次に命令アドレスの生成部について説明す
る。命令アドレスの更新手順は以下の通りである。現在
のプログラム・カウンタの値はレジスタ208に記憶さ
れている。前記レジスタ208をアドレスとする命令コ
ードを、前記プリフェッチ・バッファ(記憶装置204
から直接プリフェッチバッファ205を通過して取り込
みこともある)から、とりだし、命令実行ユニットに対
して発行する。前記命令実行ユニットに対して発行した
データを命令としてデコードし、命令の大きさを判断す
る。前記命令の大きさと現在のプログラムカウンタの値
(命令アドレス)を加算器を用いて加算し、連続する次
の命令の命令アドレスを発生する。
【0030】その他、特に分岐命令などのプログラムの
流れを制御する命令によってプログラムカウンタに新し
い値をセットすることもできるように、前記加算器の出
力と、分岐アドレスを、セレクタ209で選択し、プロ
グラムカウンタレジスタの入力とする。
【0031】前記外部インターフェース223のバスサ
イズは32ビット幅で、加算器202のソースの一方2
26は”+4”である。ダイナミックバスサイズを考慮
する場合は、前記ソースの一方226の値は+1/+2
/+4のいずれかである。
【0032】これに対して、命令アドレスは、命令サイ
ズが1/2/3/4/5というバイト可変長命令の場合
は、加算器207のソース225は+1/+2/+3/
+4/…という値をとる。
【0033】これらの値は必ずしも一致しないため、バ
スからの命令取り込みは、プリフェッチアドレスで、実
行は命令アドレスを用いて行なう。(アドレスの生成は
2重化されている)以上の手法で、命令アドレス、プリ
フェッチアドレスの更新を行なう。
【0034】よって、これらの機構は、32ビット加算
器(インクリメンタ)が2個、32ビットデータセレク
タが2個必要となる。
【0035】
【発明が解決しようとする課題】特に、命令サイズが外
部バスサイズと同じでない場合は前記バスサイズでプリ
フェッチを実行し、命令はその一部分を命令固有のサイ
ズで切り出す必要がある。
【0036】このため、プリフェッチアドレスの命令ア
ドレスは異なっており、これら二つのアドレスは、プリ
フェッチと、命令の実行には、各々不可欠である。
【0037】しかし、プリフェッチ機構を持った情報処
理装置において、プログラムカウンタの値とプリフェッ
チアドレスは、非常に近い値を持つにも関わらず、その
関係が、一意に決まらないため、一つの加算器で値を作
ることができない。
【0038】このため、プリフェッチアドレス用の加算
器と、プログラムカウンタの加算器を別に持たなければ
ならない。特に集積回路を構成する場合に加算器は大き
な面積を占めるため、アドレスのビット幅の加算器を独
立に2つ持たなければならないことは、大きな欠点とな
る。
【0039】一つの加算器を時間分割で使うことによ
り、小さな回路で構成することも可能であるが、全体の
クロック周波数が上げられず、問題が残る。
【0040】最も望ましいのは、全く同等の機能を小さ
な部品で実現することであり、この方法を開発すること
が重要である。
【0041】
【課題を解決するための手段】本発明は、プリフェッチ
回路をもった蓄積命令型の情報処理装置において現在の
プリフェッチ・アドレス且つ現在の命令アドレス用いて
次の命令の命令アドレスを発生する事を特徴とする。
【0042】また、本発明の命令アドレス発生方式で
は、外部インターフェースバスの幅が1バイト、プリフ
ェッチ・バッファの大きさがnバイト、アドレスがmビ
ットとすると、mビットの加算器及び、log2 n/l
を越える最も小さな整数のビット数の幅の加算器、m−
log2 nより小さい最も大きな整数のビットすうのセ
レクタ及びmビットの2個のレジスタで構成されること
を特徴としている。
【0043】したがって、従来のmビット幅の加算器2
個から構成されるものより少ない部品で構成することが
できる。
【0044】
【実施例】以下に実施例につき詳述する。
【0045】図1にアドレスの幅が32ビットで、命令
サイズが1/2/4バイト、プリフェッチバッファが1
6バイト、プリフェッチのフェッチサイズが32ビット
の場合の実施例を示す。
【0046】プリフェッチアドレスは従来と同様に、3
2ビット幅のレジスタ101、32ビット幅の加算器1
02、入力の32ビット幅のセレクタ103で作成され
る。
【0047】レジスタ101は現在のプリフェッチアド
レスを保持しており、前記プリフェッチアドレスを用い
て、命令のフェッチが行なわれる。レジスタ101から
32ビットの前記プリフェッチアドレスが、32ビット
の信号線110、112、113を経て、メモリ装置1
14のアドレス入力に加えられる。
【0048】前記メモリ装置114は前記プリフェッチ
アドレスによって、アクセスされ、データは115を経
てプリフェッチバッファ116に格納される。この時、
フェッチサイズにより、データ幅が、2/4バイトであ
ることを示す信号が、108を通して、加算器102の
ソースとなる。前記メモリからのフェッチサイズを示す
信号によって、幾つかのフェッチサイズの元で、次の命
令フェッチアドレスを計算することが、前記フェッチサ
イズを前記加算器102の入力とする目的である。
【0049】前記フェッチサイズが固定であれば、10
2はある特定の数だけを加算できる加算器(インクリメ
ンタ)でよい。
【0050】前記プリフェッチバッファ116はFIF
O構造になっており、外部インターフェースバス115
を通して取り込まれた命令を、バッファリングし、順次
命令単位でアラインしながら命令バス117に出力す
る。この命令バスは、実行ユニットに引き継がれる。前
記プリフェッチバッファは16バイトの空間を持ってお
り、できるだけ連続した命令を先読みしバフッファリン
グする。
【0051】命令の先読みが行なわれた場合、レジスタ
101は、加算器102によって得られた次のメモリア
ドレスに109,セレクタ103を通して更新される。
前記セレクタ103は、32ビットの幅をもつセレクタ
であり、制御信号137,138がセレクタの入力を決
定する。前記制御信号137は命令がフェッチできた場
合にアクティブになる様に制御され、前記制御信号13
8は分岐命令による分岐アドレスの設定が必要な場合に
アクティブになる。もちろん、同時に、前記制御信号1
37及び138がアクティブの場合は、分岐先アドレス
の設定を優先する。
【0052】反対に命令の読み出しサイクルが実行され
ず、分岐も発生しない場合は、制御信号137,138
がインアクティブで現在のプリフェッチアドレスが10
6を通じて、フィードバックされ、前記プリフェッチア
ドレスは同じ値を保持する。つまり、同じ命令アドレス
に対するメモリアクセスを要求する。
【0053】命令の読みだしサイクルは、前記外部イン
ターフェースバスが空いており、且つ、前記プリフェッ
チバッファに空きがある場合に実行される。以上の条件
が成立しない場合ひプリフェッチは行なわれず、前記プ
リフェッチポインタの更新も行なわれない。
【0054】次に、これからの命令アドレスを生成する
部分について、説明する。ここの部分が従来の装置との
大きな違いである。
【0055】現在の命令のアドレスは、プログラムカウ
ンタレジスタ130に記憶されている。前記プログラム
カウンタレジスタ130は、32ビット幅のエッジトリ
ガタイプのレジスタである。現在命令バス117に出力
されている命令のアドレスが記憶されている。
【0056】命令アドレスとプリフェッチアドレスの差
は、最大で16バイトである。これは、プリフェッチバ
ッファが16バイト分だけしかないためで、これ以上の
差は発生しない。
【0057】命令アドレスの発生は、プリフェッチバッ
ファより常に小さいか、等しく、大小関係が逆転するこ
とはないという事実に基づいている。前記条件の基で
は、以下の手法を用いて命令アドレスの更新をすること
ができる。
【0058】まず、注目するのは、現在の命令アドレス
レジスタ130の下位4ビット、及び現在の命令の命令
サイズである。現在の命令はプリフェッチバッファに蓄
えられており、この命令は命令バス117を通じて、出
力されている。前記命令バス上の命令をデコードし、命
令のサイズ(1/2/4バイト)を決定する。決定され
た前記命令サイズは、信号線119にエンコードされ、
4ビットの加算器126の一方のソースとなる。
【0059】命令アドレスレジスタは、32ビットのエ
ッジトリガタイプのレジスタである。これは、現在の命
令のアドレスを指し示す。この下位4ビットが信号12
7を通って、前記4ビットの加算器126のもう一方の
ソースの入力となる。前記4ビット加算器は現在の命令
アドレスの下位4ビットと、前記命令アドレスの指し示
している命令の命令サイズを加算し、4ビットの出力及
び桁上げ出力を各々124,125に出力する。
【0060】前記プログラムカウンタレジスタ130の
値の上位28ビット(MSB側から28ビット)128
は、及び、前記プリフェッチアドレスの上位28ビット
が、28ビットのセレクタ139に入力され、前記4ビ
ット加算器126の桁上げ出力によって選択される。
【0061】信号123は32ビット幅の信号で、上位
28ビットと下位4ビットは別に作られる。上位側28
ビットは、セレクタ139により、下位側4ビットは加
算器126より作られる。
【0062】上位側28ビットは以下の要領で作成され
る。前記4ビット加算器126の前記桁上げ信号125
が発生しない場合は、命令アドレスの上位から28ビッ
ト[31…4]を、次の命令アドレスとして123に出
力し、前記桁上げ信号125が発生した場合は、プリフ
ェッチアドレスレジスタの上位から28ビットを次の命
令の命令アドレスとして、123に出力する。
【0063】下位側4ビットは、前記4ビット加算器の
出力をそのまま123の下位4ビットとして、123に
出力する。
【0064】命令アドレスは、命令が実行されたことを
もって更新される。セレクタ133は32ビットのセレ
クタで、制御信号131,132で、分岐先アドレス1
34、次の命令の命令アドレス、現在の命令の命令アド
レスの選択をする。前記制御信号131は制御信号13
と同様の信号で、分岐アドレスのプログラムカウンタ
へのセットのための制御信号である。この信号がアクテ
ィブである時、プログラムカウンタに新しい分岐先アド
レスがロードされる。
【0065】制御信号132は、現在の命令が実行され
次の命令を出力する場合にアクティブになる。この信号
がアクティブになった場合、アドレス連続な命令にな
る。現在の命令のアドレスに現在の命令の命令バイト数
を加えた値を、信号135から、次の命令アドレスとし
てプログラムカウンタレジスタによみこむ。
【0066】最後にどの制御信号もアクティブでない場
合、プログラムカウンタレジスタは前回のサイクルの全
く同じ値を保持し続ける。この場合は、プリフェッチバ
ッファも全く同一の値(命令)を保持する。
【0067】この方法で次の命令のアドレスは前記28
ビットのセレクタ及び、前記4ビットの加算器で作るこ
とができる。
【0068】これは、従来方法の32ビット幅の加算器
に比べて、1/4の大きさの回路規模である。
【0069】図3に、第2の実施例として16ビットア
ドレス、16ビットデータバスの場合について示す。
【0070】命令サイズは1/2/4バイトとし、外部
インターフェースはアドレス16ビット/データ16ビ
ットとする。プリフェッチバッファは4バイトのデータ
を格納できると仮定する。
【0071】プリフェッチアドレス発生器は、15ビッ
トのインクリメンタ303、15ビットのレジスタ30
が必要である。
【0072】命令アドレス発生器は、16ビットレジス
30513ビットのセレクタ307ビットの加
算器306、16ビットのセレクタ308で構成され
る。
【0073】外部インターフェースが16ビット幅のデ
ータを取り扱うことができるため、プリフェッチは16
ビットごとに行なわれる。つまり、プリフェッチ時は、
アドレスの最下位が必ず“0”でとなるため、加算器は
常に“+1”づつできればよいため、インクリメンタで
よい。プリフェッチアドレスは15ビットを内部で持
ち、アドレスバスへの出力時にLSBに“0”をつけれ
ば良い。
【0074】レジスタ301保持されている現在のプリ
フェッチアドレスは信号302を通り、インクリメンタ
303の入力に接続される。インクリメンタ303の出
力は、セレクタ304で、分岐先アドレスの上位15ビ
ットとマルチプレックスされ、前記レジスタ301に書
き戻される。このようにして、プリフェッチアドレス
は、更新される。
【0075】次に、命令アドレスであるが、これは命令
が1/2/4バイトなので、16ビットアラインするこ
とができないため、16ビット幅で取り扱う必要があ
る。
【0076】レジスタ305は16ビット幅で、現在の
命令アドレスを保持する。前記レジスタ305の上位1
3ビットは、セレクタ307の入力の一方に接続され
る。前記セレクタ307のセレクト入力は加算器306
の桁上げ入力が接続される。前記セレクタ307の入力
のもう一方は、前記プリフェッチアドレス発生のイン
クリメンタの出力上位側13ビットに接続される。
【0077】レジスタ305の下位3ビットと現在の命
令バス上に出力されている命令の命令サイズ(1,2,
4:3ビット)を加算し、次の命令のアドレスの下位3
ビットとなる。上位13ビットは、前記セレクタ307
の出力が組み合わされ、セレクタ308の入力の一方に
入力される。前記セレクタ308は、分岐命令の分岐ア
ドレスとのマルチプレクスし、レジスタ305に書き戻
される。
【0078】
【発明の効果】従来の方法では、32ビットアドレスの
可変長命令のプリフェッチ及び、プログラムカウンタの
更新のために32ビットのインクリメンタおよび、32
ビットの加算器が必要であり、固定長命令の縮小命令セ
ット演算処理装置でも、プリフェッチを行なう限り、命
令アドレスの生成及び、プリフェッチアドレスの生成の
ために、2つのインクリメンタが必要であった。
【0079】この発明によれば、アドレス空間のビット
幅分の加算器又はインクリメンタを2個使用することな
しに1つの加算器および、セレクタ、プリフェッチバッ
ファサイズの小さな加算器で構成することができ、集積
回路化した場合に以下の用に約0.6倍の面積で実現す
ることができる。また、装置を論理集積回路を用いて作
成した場合も、部品が少なくて済む。
【0080】すなわち、集積回路上での各ユニットの面
積(4ビット加算器を1とする)比は、32ビット加算
器(桁上げ先見機構つき)が16、4ビット加算器が
1、32ビットセレクタが3、28ビットセレクタが2
である。よって従来例では、3+16+16=35とな
り、本実施例では、3+2+1+16=22となる。
【図面の簡単な説明】
【図1】本発明の一実施例を示すブロック図である。
【図2】従来例を示すブロック図である。
【図3】本発明の他の実施例を示すブロック図である。
【符号の説明】
101 プリフェッチアドレスレジスタ 102 32ビット加算器(又はインクリメンタ) 103 32ビット幅の3入力1出力のセレクタ 104 32ビットの信号。分岐先のアドレスが伝搬
する。LSBは0である。 105 32ビットの信号。次プリフェッチアドレス
の演算結果がこの信号線にのる。 106 32ビットの信号。現在のプリフェッチアド
レスがこの信号を戻る。 107 32ビットの信号。プリフェッチアドレスを
加算器(インクリメンタ)のソースとして与える。 108 命令フェッチ時のバスのデータサイズを示す
信号。 109 32ビットの信号。105と同じ。 110 32ビットの信号。外部に命令フェッチアド
レスとして出力される。 111 32ビットの信号。加算器によって求められ
た次の命令フェッチ先のアドレス。 112 アドレスバスのバッファ。 113 命令アドレスバス。32ビットの幅の信号
線。 114 メモリ。命令が蓄積されている。 115 データ。メモリの出力信号。 116 プリフェッチ・バッファ。命令をキューイン
グし、必要な長さな区切る。 117 命令バス。実行ユニットに命令を転送する。 118 デコーダ。命令のサイズをデコードする。 119 命令サイズを伝送する信号。 120 命令アドレス。現在の命令が書かれていたア
ドレス。32ビット幅。 121 命令アドレスバス。32ビット。 122 プリフェッチアドレスバスのMSB側から2
8ビット分の信号。 123 次の命令の命令アドレス。 124 次の命令の命令アドレスの下位4ビット。4
ビット加算器の出力。 125 4ビットの加算器の桁上げ出力。 126 4ビットの加算器。 127 現在の命令のアドレスのLSB側から4ビッ
ト。 128 現在の命令のMSB側から28ビット。 129 現在の命令アドレスのフィードバック。32
ビット幅の信号線。 130 命令アドレスレジスタ。現在の命令のアドレ
スが記憶される。 131 分岐先を命令アドレスレジスタに代入するこ
とを選択する制御信号。 132 次の命令アドレス(連続的な)を命令アドレ
スレジスタに代入することを選択する信号。 133 32ビット幅のレジスタ。エッジトリガタイ
プのフリップフロップ。 134 演算ユニットで計算された分岐先アドレス。 135 次の命令の命令アドレス。 136 現在の命令の命令アドレス。 137 分岐先命令アドレス。 301 15ビットのレジスタ。プリフェッチアドレ
スが記憶される。 302 15ビットの信号。プリフェッチアドレス。 303 インクリメンタ1。15ビットで、+1する
ことができる。 304 15ビットのセレクタ。分岐先アドレスとの
マルチプレックス。 305 16ビットのレジスタ。命令アドレスが記憶
される。 306 3ビットの加算器。 307 13ビットのセレクタ。 308 16ビットのセレクタ。

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】プリフェッチアドレスにもとづいて命令を
    プリフェッチするプリフェッチ回路と、現在の命令アド
    レスにもとづいて次の命令アドレスを生成するプログラ
    ムカウンタ回路とを有するプログラムカウンタ装置にお
    いて、 前記プログラムカウンタ回路は、上位側ビットを含む第
    1の部分と下位側ビットを含む第2の部分に分割された
    前記現在の命令アドレスの当該第2の部分に前記現在の
    命令の命令長を示すデータを加算し、この加算結果が桁
    上がりした場合は桁上がり信号を出力する加算器と、前
    記桁上がり信号が発生しないときには前記第1の部分を
    選択し、前記桁上がり信号が発生したときには前記プリ
    フェッチアドレスの前記第1の部分と同数の上位側ビッ
    トを選択するセレクタとを備え、当該選択されたデータ
    を前記次の命令アドレスの上位側ビットとし、前記加算
    結果を前記次の命令アドレスの下位側ビットとすること
    を特徴とする プログラムカウンタ装置。
  2. 【請求項2】 前記プログラムカウンタ装置において、
    nを、命令アドレスのビット数とし、プリフェッチ装置
    の中に存在するプリフェッチ用バッファに記憶すること
    ができる最大のバイト数をlとすると、mはlog2
    より大きく、且つ、nより小さな自然数であるとすれ
    ば、現在のプリフェッチ・アドレスが記憶されているn
    ビットのレジスタ1と次のプリフェッチアドレスを求め
    るためのnビットの加算器1、および、nビットのセレ
    クタ1等で構成されるプリフェッチ・アドレス発生回路
    と、現在の命令アドレスが記憶されているnビットのレ
    ジスタ2 、mビットの加算器2、n−mビットのセレク
    タ2、mビットのセレクタ3等で構成される、命令アド
    レス発生回路で構成される装置で、前記プリフェッチ・
    アドレスが記憶されているレジスタ1の出力と、前記n
    ビットの加算器1の入力1を、プリフェッチ動作によっ
    て1度にフェッチされるバイト数を、前記nビットの加
    算器1の入力2に接続し、前記nビットの加算器1の出
    力と、前記nビットのセレクタ1の入力1に、分岐先の
    アドレス等、命令アドレスを制御するアドレスと前記セ
    レクタ1残りの入力を接続し、前記加算器1で次の命令
    のプリフェッチのアドレスを計算し、前記セレクタ1
    で、前記加算器1の出力、分岐先アドレス等から一つを
    選択し、前記セレクタ1の出力を、前記プリフェッチ・
    アドレス・レジスタに書き戻すことで、プリフェッチア
    ドレスを更新し、前記セレクタ2の入力1と前記レジス
    タ1の出力の上位n−mビットを前記セレクタ2の入力
    2と前記レジスタ2の出力の上位n−mビットを前記加
    算器2の入力1と前記レジスタ2の出力のn−mビット
    を前記加算器2の入力2と現在の命令をデコードによ
    り、命令サイズを表す信号を前記加算器2の桁上げ出力
    と前記セレクタ2の選択制御信号を前記セレクタ2の出
    力を上位側に、前記加算器2の出力を下位側にまとめた
    信号と前記セレクタ3の入力1を前記セレクタ3の出力
    と前記レジスタ2の入力を接続し、現在の命令アドレス
    の指すメモリのアドレスに格納されている命令の命令サ
    イズをpとすると、前記命令アドレスが記憶されている
    レジスタ2の、下位mビットと、pをmビットの加算器
    2で加算し、前記mビットの加算器の桁上げ出力が真の
    場合は、前記プリフェッチアドレスの上位側n−mビッ
    トを、前記mビットの加算器の桁上げ出力が偽の場合は
    前記命令アドレスの上位側n−mビットを前記n−mビ
    ットのセレクタ2を用いて選択し、前記n−mビットの
    セレクタ2の出力を、上位側n−mビットとし、前記m
    ビットの加算器2の加算出力を下位とするnビットと、
    分岐先のアドレスを、前記nビットのセレクタ3で選択
    し、前記セレクタ3の出力を前記命令アドレスが記憶さ
    れているレジスタに書き戻すことで新しい命令アドレス
    を発生させる請求項1記載のプログラムカウンタ装置。
JP3115162A 1991-05-21 1991-05-21 プログラムカウンタ装置 Expired - Lifetime JP2682264B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP3115162A JP2682264B2 (ja) 1991-05-21 1991-05-21 プログラムカウンタ装置
US07/881,430 US5459847A (en) 1991-05-21 1992-05-11 Program counter mechanism having selector for selecting up-to-date instruction prefetch address based upon carry signal of adder which adds instruction size and LSB portion of address register

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3115162A JP2682264B2 (ja) 1991-05-21 1991-05-21 プログラムカウンタ装置

Publications (2)

Publication Number Publication Date
JPH04343134A JPH04343134A (ja) 1992-11-30
JP2682264B2 true JP2682264B2 (ja) 1997-11-26

Family

ID=14655873

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3115162A Expired - Lifetime JP2682264B2 (ja) 1991-05-21 1991-05-21 プログラムカウンタ装置

Country Status (2)

Country Link
US (1) US5459847A (ja)
JP (1) JP2682264B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835967A (en) * 1993-10-18 1998-11-10 Cyrix Corporation Adjusting prefetch size based on source of prefetch address
US5687339A (en) * 1995-09-14 1997-11-11 Elan Microelectronics Corp. Pre-reading and pre-decoding of instructions of a microprocessor within single cycle
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US5794010A (en) * 1996-06-10 1998-08-11 Lsi Logic Corporation Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
US6009516A (en) * 1996-10-21 1999-12-28 Texas Instruments Incorporated Pipelined microprocessor with efficient self-modifying code detection and handling
US5881260A (en) * 1998-02-09 1999-03-09 Hewlett-Packard Company Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction
US6038660A (en) * 1999-05-26 2000-03-14 Infineon Technologies North America Corp. Method and apparatus for updating a program counter
US6578102B1 (en) 2000-04-18 2003-06-10 International Business Machines Corporation Tracking and control of prefetch data in a PCI bus system
US6751724B1 (en) * 2000-04-19 2004-06-15 Motorola, Inc. Method and apparatus for instruction fetching
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
JP3698137B2 (ja) 2002-11-26 2005-09-21 セイコーエプソン株式会社 表示ドライバ、電気光学装置及び表示ドライバの制御方法
US20050285871A1 (en) * 2004-06-29 2005-12-29 Canon Kabushiki Kaisha Image-processing circuit, electronic apparatus, and method for processing image
US7249223B2 (en) * 2004-08-11 2007-07-24 Freescale Semiconductor, Inc. Prefetching in a data processing system
US9304773B2 (en) * 2006-03-21 2016-04-05 Freescale Semiconductor, Inc. Data processor having dynamic control of instruction prefetch buffer depth and method therefor
KR20070101998A (ko) * 2006-04-13 2007-10-18 한국과학기술원 마이크로 컨트롤러의 프로그램 카운터 및 그 제어방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5576445A (en) * 1978-12-06 1980-06-09 Toshiba Corp Pre-fetch control system
JPS57185545A (en) * 1981-05-11 1982-11-15 Hitachi Ltd Information processor
DE3382350D1 (de) * 1982-11-17 1991-08-29 Nec Corp Anordnung zum vorabholen von befehlen mit vorhersage einer verzweigungszieladresse.
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
US4709324A (en) * 1985-11-27 1987-11-24 Motorola, Inc. Data processor control unit having an interrupt service using instruction prefetch redirection
US4860197A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Branch cache system with instruction boundary determination independent of parcel boundary
US5197141A (en) * 1988-01-30 1993-03-23 Nec Corporation Software controlled method of issuing hardware control commands to memory controller from prefetch unit by combining request code and address specified in program instructions
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
JP2722523B2 (ja) * 1988-09-21 1998-03-04 日本電気株式会社 命令先取り装置

Also Published As

Publication number Publication date
US5459847A (en) 1995-10-17
JPH04343134A (ja) 1992-11-30

Similar Documents

Publication Publication Date Title
JP2682264B2 (ja) プログラムカウンタ装置
US6334176B1 (en) Method and apparatus for generating an alignment control vector
US5996057A (en) Data processing system and method of permutation with replication within a vector register file
US5922066A (en) Multifunction data aligner in wide data width processor
US6631389B2 (en) Apparatus for performing packed shift operations
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
US6209076B1 (en) Method and apparatus for two-stage address generation
US6263420B1 (en) Digital signal processor particularly suited for decoding digital audio
US20020053015A1 (en) Digital signal processor particularly suited for decoding digital audio
US6844834B2 (en) Processor, encoder, decoder, and electronic apparatus
JPH11504744A (ja) 単精度または倍精度で算術演算を行なうためのシステム
US4620274A (en) Data available indicator for an exhausted operand string
US9015216B2 (en) Fast static rotator/shifter with non two's complemented decode and fast mask generation
US6851033B2 (en) Memory access prediction in a data processing apparatus
JP4955149B2 (ja) ビットfifoを有するディジタル信号プロセッサ
US4598359A (en) Apparatus for forward or reverse reading of multiple variable length operands
JP3983482B2 (ja) 高速ディスプレースメント付きpc相対分岐方式
US5349671A (en) Microprocessor system generating instruction fetch addresses at high speed
US4611278A (en) Wraparound buffer for repetitive decimal numeric operations
US4608633A (en) Method for decreasing execution time of numeric instructions
EP0927390B1 (en) Processing of conditional select and move instructions
US4575795A (en) Apparatus for detecting a predetermined character of a data string
US7134000B2 (en) Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information
JPH034936B2 (ja)

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: 19970708

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

Free format text: PAYMENT UNTIL: 20070808

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20080808

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20080808

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20090808

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20090808

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20100808

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20100808

Year of fee payment: 13

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

Free format text: PAYMENT UNTIL: 20100808

Year of fee payment: 13

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20110808

Year of fee payment: 14

EXPY Cancellation because of completion of term