JPH0772863B2 - プログラムカウンタ相対アドレス計算方式 - Google Patents

プログラムカウンタ相対アドレス計算方式

Info

Publication number
JPH0772863B2
JPH0772863B2 JP61259866A JP25986686A JPH0772863B2 JP H0772863 B2 JPH0772863 B2 JP H0772863B2 JP 61259866 A JP61259866 A JP 61259866A JP 25986686 A JP25986686 A JP 25986686A JP H0772863 B2 JPH0772863 B2 JP H0772863B2
Authority
JP
Japan
Prior art keywords
instruction
program counter
decoding
length
address calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP61259866A
Other languages
English (en)
Other versions
JPS63113634A (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 JP61259866A priority Critical patent/JPH0772863B2/ja
Priority to DE19873751082 priority patent/DE3751082T2/de
Priority to EP19870116007 priority patent/EP0265972B1/en
Publication of JPS63113634A publication Critical patent/JPS63113634A/ja
Priority to US07/754,314 priority patent/US5226129A/en
Publication of JPH0772863B2 publication Critical patent/JPH0772863B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • 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
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3557Indexed addressing using program counter as base address

Description

【発明の詳細な説明】 産業上の利用分野 本発明はパイプライン先行制御を行なう中央処理装置の
プログラムカウンタ制御に関する。
従来の技術 近年の中央処理装置(以下CPUと略す)設計では、その
性能向上に加えて機能向上にも重点が置かれている。す
なわち計算機アーキテクチャの見直し、特に高級言語や
オペレーティングシステムのような基本ソフトウェアへ
の対応という立場からの見直しにより、新しい命令オペ
レーションやアドレシングが追加される方向にある。
特に、標準的なプログラムをアドレス空間の任意の場所
に配置することができるという性質(リロケータブルな
プログラム・コード)は、プログラムを複数の位置で使
用する環境において非常に便利である。リロケータブル
なプログラム・コードの実現を容易にするサポートとし
てはプログラム・カウンタ(以下PCと略す)相対による
アドレシング・モードがある。PC相対アドレシング・モ
ードを用いたプログラム・コードはその再配置に必要な
コードの変更を最小限で済ませうるという利点を持つ。
PC相対アドレシング・モードを実現したCPUは従来から
存在している。詳細については例えば、ディジタル・イ
クイプメント(DEC)「VAXアーキテクチャハンドブッ
ク」共立出版、モトローラ「MC68020ユーザマニュア
ル」プレンティスーホール(Prentice−Hall)、ザイロ
グ(Zilog)「Z80000CPUテクニカルマニアル」、ナショ
ナル・セミコンダクタ「NS32032命令セットリファレン
スマニュアル」などに記載してある。
PC相対アドレシング・モードを実現したCPUにおいて
は、多くの場合そのアーキテクチャが命令解読処理とオ
ペランド・アドレス計算処理とを分けないハードウェア
構造に依存しているために、アドレス計算時におけるPC
の値は、PC相対のアドレス計算に関連する情報を持つ命
令の部分の先頭または後尾を指し示しているのが普通で
ある。
例えばディジタル・イクイプメント(DEC)社のVAX−11
のアーキテクチャでPC相対アドレシングがどのように計
算されるかを説明する。第3図はPC相対アドレシングを
用いたVAX−11のムーブ・ロング・ワード(MOVE LONG W
ORD)命令における主記憶上の2進記述形式を示したも
のである。この図は、前述の「VAXアーキテクチャハン
ドブック」P110より引用した。
ここで第1オペランドのアドレスは命令の先頭アドレス
00001012h(hは16進データを示す)ではなく、第1オ
ペランドのアドレスに関係する情報を持つ部分の後尾の
アドレス00001016hに変位値1000hを加えた00002016hと
して計算される。
発明が解決しようとする問題点 従来のCPUにおけるハードウェアアーキテクチャを、そ
のオブジェクトコードレベルの互換性を継承しながら性
能を向上させるように変更する場合、PC相対アドレスの
計算時に必要なPCの値、すなわち命令の解読処理の経過
状況に従って変更された中間結果としてのPCの値を高速
に得る必要がある。ところが、高機能で多数の命令を持
つ従来の命令セットの実現法は可変長命令語体系であ
り、しかも命令の長さはいろいろな要因によって、命令
長の命令自身の内容に対する従属性が高くなる。その要
因としては、 ・命令の取るオペランドの数(0オペランド、1オペラ
ンド、2オペランド・・) ・オペランドのアドレシング情報(インデクス修飾、デ
ィスプレースメント、イミディエイトデータなどの付加
情報) ・命令オペレーションのエンコーディング(使用頻度の
高い命令を可能なだけ短く符号化すること)がある。
具体的に前述の例でPC相対アドレシングを計算する場合
の例が特公昭59−0031733「可変長さの命令を実行する
中央処理装置」に記載してある。この場合、アドレシン
グ・モードで指定された変位値1000hのほかに、命令の
オペレーションを決める1バイト、第1オペランドがPC
相対アドレシングであることを示す1バイト、第1オペ
ランドのアドレス計算用変位2バイトを、この命令の先
頭アドレス00001012hに加算しなければならない。
このように、オペランド・アドレス計算処理において命
令解読処理制御から生ずる結果を使用することは、二つ
の処理の依存性が高いこと、逆に言えば独立性が低いこ
とを意味するため、二つの並列性を高めるにくくなる。
これは高機能なPC相対アドレシングモード(インデクス
など)の追加の際さらに顕著になる。
さらに、このような命令長の可変単位に関して、アドレ
ス計算のための加算要素が増すことは、特に32ビット以
上の長ビットアドレス計算の際にキャリー伝播制御の点
で不利となる。すなわち、現命令の先頭を指すPCを補正
するための1回以上の加算をアドレス計算の際に必要と
するため、32ビット以上の長ビットを伝播する桁上げを
待つというタイミング上の制約がある。それを解決する
ためには桁上げ先見法或いは桁上げ保存法といった高速
化手法に対するハードウェア資源の投入が必要であり、
コストが増大することになる。
すなわち、このような補正されたPC値を用いたアドレス
計算は、本質的にパイプラインの性能向上が達成しにく
いため、達成のためのコストが大きいという欠点を有す
ると考えられる。
そこで本発明は、CPUにおいてパイプライン化による命
令解読とオペランド・アドレス計算との並列処理を行な
う場合の処理性能を向上させたPC相対アドレス計算方式
を提供することを目的とする。
問題点を解決するための手段 上記問題点を解決するための本発明のプログラムカウン
タ相対アドレス計算方式は、プログラムカウンタの値が
常に命令語の先頭を指すように制御される可変語長の命
令語を処理する中央処理装置において、前記可変語長の
命令語の解読処理の経過に従って、一つの命令の中での
解読処理済命令長を累積計算する手段と、前記プログラ
ムカウンタに前記解読処理済命令長を加算することで前
記プログラムカウンタを更新する手段と、前記可変語長
の命令語の解読処理中の前記プログラムカウンタの値を
用いてプログラムカウンタ相対オペランド実効アドレス
を生成する手段とを具備し、前記プログラムカウンタの
更新と前記実効アドレスの生成を同時に実行させること
を特徴とする。
実施例 次に本発明について図面を参照して説明する。
第1図は本発明の一実施例を示すブロック図である。
第2図は本実施例の動作の一例を示すタイミングチャー
トである。1サイクルMnはさらに細かいサイクルT1〜T4
の4段階からなる。
以下では、第1図及び第2図を用いて本実施例の動作を
説明する。
サイクルT1にタイミング201で命令バス121から命令語が
命令語解読器101に渡される。この命令語解読語101では
サイクルT2にタイミング202でその命令コード部及びア
ドレスフィールド部が解読される。その結果は、命令コ
ード長IL、命令の種類ITYP、アドレスフィールド情報A
F、オペランドデータタイプDTYPなどの情報として出力
される。命令コード長ILは命令語要求バイト数生成器10
3に、命令の種類ITYPは実効アドレス生成制御器107と命
令解読用順序制御器104に、アドレスフィールド情報AF
とオペランドデータタイプDTYPは命令語要求制御器102
と命令語要求バイト数生成器103と実効アドレス生成制
御器107に各々通知される。この解読は、例えば「1バ
イト命令コード長ILでオペランドを二つ持つ演算命令IT
YPであり、第1オペランドは16バイトの変位を持つPC相
対アドレシングモードを持ち、第2オペランドはレジス
タを指しAF演算されるデータ長は32ビットであるDTYP」
のように行なわれる。
命令語要求バイト数生成器103は、解読器101による、命
令語全体あるいは最初の一部の解読結果に従って、次の
解読サイクルで必要な命令語のバイト数を算出する。こ
の値は解読器101が一度に解読可能な命令長に依存す
る。本実施例では、命令コード長IL、命令の種類ILYP、
アドレス・フィールド情報AF、オペランドデータタイプ
DTYPの全ての内容が少数の例外を除き全て第1回めの解
読サイクルで判明するのに十分な量を一度に解読可能で
あるとする。
命令語要求バイト数生成器103の出力131は、命令語供給
の要求信号IREQになると共に、プログラムカウンタオフ
セット加算器106にも接続される。出力131を決定する制
御は、命令語要求制御器102が行なう。要求制御器102の
出力132は、出力131と共に命令語供給の要求信号IREQと
なる。出力131、132は具体的には、整列(alignment)
の能力のある命令キューとのインターフェース信号とな
る。
プログラムカウンタオフセット加算器106では、サイク
ルT1のタイミング209で予めリセットされた値に対する
第1回目のデコードで判明した命令長分の出力131の加
算がサイクルT2のタイミング203で行なわれる。この制
御は、プログラムカウンタ更新制御器105の出力133によ
り行なうが、その動作は先に述べた命令語要求制御器10
2からの情報134が元になる。特に、制御器105は、第1
回めの解読サイクルで、命令語長が一度に解読可能な命
令量より小さい場合の加算器106の補正を行なう。
もし、命令キューなどから、出力131、132による要求に
対して命令語が得られるなら、それは入力IQRDY135によ
り通知される。第2図の例では第2回めの解読サイクル
T3では解読は行なわれず、命令バス121に乗せられるデ
ータは実効アドレス計算用の変位(displacement)であ
ることを仮定している。このような変位の転送は、サイ
クルT4のタイミング205でで実行される。この変位が存
在することは、解読情報(既述のIL、ITYP、AF、DTYP)
などから、順序制御器104、実効アドレス生成制御器107
で判定されている。プログラムカウンタオフセット加算
器106では、第2回目のデコードで判明した命令長分の
出力131の加算がサイクルT4のタイミング204で行なわれ
る。
前述のようにオペランドのアドレシングモードが“PC相
対”であるとき、実効アドレス生成制御器107は、変位
の転送される命令バス121の内容を実効アドレス計算用
レジスタファイル109の一つにラッチすると同時に、解
読命令用プログラムカウンタ108の値を実効アドレス計
算用バス122にのせ、実効アドレス計算用レジスタファ
イル109の一つにラッチする制御をサイクルT4のタイミ
ング206で行なう。
引き続いて、次のサイクルMn+1のサイクルT1のタイミン
グ207で実効アドレス計算が加算器110を用いて開始され
る(第2図には示されていないが、サイクルMn+1におい
ても、サイクルMnと同様に実効アドレス計算のタイミン
グ207が存在している)。実効アドレス加算器110の値は
実効アドレスラッチ111を介してオペランドアドレスバ
ス123に出力される。それと同時のサイクルT1のタイミ
ング209で、その命令に関する命令長の累積値、すなわ
ち第1回目のデコードで判明した命令長と第2回目のデ
コードで判明した命令長の和の値がプログラムカウンタ
オフセット加算器106から加算器112に提供され解読命令
用プログラムカウンタ108の更新が、同じサイクルT1の
タイミング208で、インクリメンタ113、加算器112を用
いて、制御器105により実行される。
従って、前サイクルMnで解読された命令語をもとにし
て、サイクルMn+1ではプログラムカウンタオフセット加
算器106の値を用いての実効アドレス計算とプログラム
カウンタの更新が同時に行なわれる。
発明の効果 以上説明したように本発明は、次命令へのプログラムカ
ウンタの更新を行なう手段と実効アドレス計算を行なう
手段とを分離し、その制御を独立にすること、及び、実
効アドレス計算を行なう際に用いるプログラムカウンタ
の値を次命令への更新以前のものとすることの2点によ
り、プログラムカウンタ更新と実効アドレス計算の同時
実行を可能にして命令解読の並列性を高めている。ま
た、プログラムカウンタオフセット専用の加算器を持つ
ことにより、プログラムカウンタに直接加算するような
長ビット加算の回数を減らすことができる。その結果、
個々のオペレーションの性能を容易に高めることができ
るという効果がある。
【図面の簡単な説明】
第1図は、本発明の一実施例のブロック図、 第2図は、第1図の実施例の上での動作例を示したタイ
ミングチャート、 第3図は、従来のプログラムカウンタ相対アドレシング
の計算方法を示す図である。 (主な参照番号) 101……命令語解読語、102……命令語要求制御器 103……命令語要求バイト数生成器 104……命令解読用順序制御器 105……プログラムカウンタ更新制御器 106……プログラムカウンタオフセット加算器 107……実効アドレス生成制御器 108……解読命令用プログラムカウンタ 109……実効アドレス計算用レジスタファイル 110……実効アドレス加算器 111……実効アドレスラッチ 112……加算器、113……インクリメンタ 121……命令バス 122……実効アドレス計算用バス 123……オペランドアドレスバス

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】可変語長の命令語を処理する中央処理装置
    において、前記可変語長の命令語の解読処理の経過に従
    って、一つの命令の中での解読処理済命令長を累積計算
    する手段と、プログラムカウンタに前記解読処理済命令
    長を加算することで前記プログラムカウンタを更新する
    手段と、現在の命令から次の命令へその値を更新する前
    の前記プログラムカウンタの値を用いて前記現在の命令
    で要求されたプログラムカウンタ相対オペランド実行ア
    ドレスを生成する手段とを具備し、前記プログラムカウ
    ンタの更新と前記実行アドレスの生成を同時に実行させ
    たことを特徴とするプログラムカウンタ相対アドレス計
    算装置。
JP61259866A 1986-10-30 1986-10-30 プログラムカウンタ相対アドレス計算方式 Expired - Fee Related JPH0772863B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP61259866A JPH0772863B2 (ja) 1986-10-30 1986-10-30 プログラムカウンタ相対アドレス計算方式
DE19873751082 DE3751082T2 (de) 1986-10-30 1987-10-30 Steuerung des Befehlszählers in einem Rechner mit Fliessbandverarbeitung.
EP19870116007 EP0265972B1 (en) 1986-10-30 1987-10-30 Control of the program counter used in a pipelined computer
US07/754,314 US5226129A (en) 1986-10-30 1991-09-04 Program counter and indirect address calculation system which concurrently performs updating of a program counter and generation of an effective address

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61259866A JPH0772863B2 (ja) 1986-10-30 1986-10-30 プログラムカウンタ相対アドレス計算方式

Publications (2)

Publication Number Publication Date
JPS63113634A JPS63113634A (ja) 1988-05-18
JPH0772863B2 true JPH0772863B2 (ja) 1995-08-02

Family

ID=17340047

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61259866A Expired - Fee Related JPH0772863B2 (ja) 1986-10-30 1986-10-30 プログラムカウンタ相対アドレス計算方式

Country Status (3)

Country Link
EP (1) EP0265972B1 (ja)
JP (1) JPH0772863B2 (ja)
DE (1) DE3751082T2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2230116B (en) * 1989-04-07 1993-02-17 Intel Corp An improvement for pipelined decoding of instructions in a pipelined processor
DE69030648T2 (de) * 1990-01-02 1997-11-13 Motorola Inc Verfahren zum sequentiellen Vorabruf von 1-Wort-, 2-Wort oder 3-Wort-Befehlen
JP2842930B2 (ja) * 1990-05-16 1999-01-06 株式会社アドバンテスト 半導体集積回路試験装置のテストプロセッサに用いられる命令読み出し回路
JPH04263322A (ja) * 1991-02-18 1992-09-18 Mitsubishi Electric Corp マイクロコンピュータ
JP6609199B2 (ja) * 2016-03-01 2019-11-20 ルネサスエレクトロニクス株式会社 組込み機器

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5025146A (ja) * 1973-07-06 1975-03-17
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
JPS57161943A (en) * 1981-03-31 1982-10-05 Hitachi Ltd Data processing device
JPS58205256A (ja) * 1982-05-24 1983-11-30 Matsushita Electric Ind Co Ltd データ処理方法
GB2138182B (en) * 1983-04-14 1986-09-24 Standard Telephones Cables Ltd Digital processor
DE3479356D1 (en) * 1983-12-23 1989-09-14 Hitachi Ltd A data processor with control of the significant bit lenghts of general purpose registers
JPS60140435A (ja) * 1983-12-28 1985-07-25 Hitachi Ltd 命令処理装置

Also Published As

Publication number Publication date
EP0265972A3 (en) 1991-09-04
DE3751082T2 (de) 1995-09-28
EP0265972B1 (en) 1995-02-22
JPS63113634A (ja) 1988-05-18
DE3751082D1 (de) 1995-03-30
EP0265972A2 (en) 1988-05-04

Similar Documents

Publication Publication Date Title
US7774768B2 (en) Method and apparatus for processor code optimization using code compression
JP3120152B2 (ja) コンピューターシステム
JP3505266B2 (ja) プログラム実行装置
JPH09512652A (ja) 多重命令セットによるデータ処理
US6058471A (en) Data processing system capable of executing groups of instructions in parallel
US5313644A (en) System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word
US5226129A (en) Program counter and indirect address calculation system which concurrently performs updating of a program counter and generation of an effective address
JPS58189739A (ja) デ−タ処理システム
US20120017067A1 (en) On-demand predicate registers
JPH0772863B2 (ja) プログラムカウンタ相対アドレス計算方式
US5390306A (en) Pipeline processing system and microprocessor using the system
US5761469A (en) Method and apparatus for optimizing signed and unsigned load processing in a pipelined processor
US7337306B2 (en) Executing conditional branch instructions in a data processor having a clustered architecture
WO2002065276A2 (en) Apparatus and method for effecting changes in program control flow
JP2002014809A (ja) マイクロプロセッサ並びにアセンブラ、その方法およびそのプログラムを記録した記録媒体
JP2000122919A (ja) プロセッサ及びメモリ制御方法
US6922773B2 (en) System and method for encoding constant operands in a wide issue processor
JP3602801B2 (ja) メモリデータアクセス構造およびその方法
EP1235139B1 (en) System and method for supporting precise exceptions in a data processor having a clustered architecture
US20050216704A1 (en) Device and method for managing a microprocessor instruction set
WO2001090888A1 (en) A data processing system having an address generation unit with hardwired multidimensional memory indexing support
JPH09330219A (ja) 命令解読器切替型プロセッサ及び翻訳装置
CN114281411A (zh) 指令处理方法、指令执行方法以及处理器
JPS6027029A (ja) デ−タ処理装置
JP2000298589A (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees