JP2847974B2 - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JP2847974B2
JP2847974B2 JP3005230A JP523091A JP2847974B2 JP 2847974 B2 JP2847974 B2 JP 2847974B2 JP 3005230 A JP3005230 A JP 3005230A JP 523091 A JP523091 A JP 523091A JP 2847974 B2 JP2847974 B2 JP 2847974B2
Authority
JP
Japan
Prior art keywords
register
instruction
data
unit
value
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
JP3005230A
Other languages
English (en)
Other versions
JPH04260930A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP3005230A priority Critical patent/JP2847974B2/ja
Publication of JPH04260930A publication Critical patent/JPH04260930A/ja
Priority to US08/432,334 priority patent/US5542060A/en
Application granted granted Critical
Publication of JP2847974B2 publication Critical patent/JP2847974B2/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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3016Decoding the operand specifier, e.g. specifier format
    • 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/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3555Indexed addressing using scaling, e.g. multiplication of index

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、1つの命令をデコーダ
で複数の処理単位に分解してパイプライン処理するデー
タ処理装置に関し、更に詳述すれば、レジスタファイル
とメモリとの間で複数のデータを転送する命令をデコー
ダで複数の転送命令に分解し、パイプライン処理するデ
ータ処理装置に関する。
【0002】
【従来の技術】従来のデータ処理装置では、高頻度で使
用されるデータを高速且つ単純な機構でアクセスする目
的で16本程度の汎用レジスタを備え、それらのレジスタ
に高頻度でアクセスされるデータあるいは演算の中間結
果を保持しておくような構成が採られている。
【0003】ソフトウェア処理ではレジスタ上に配置さ
れているデータをまとまった一連の処理ごとに入れ換え
る手法が用いられる。このため、レジスタ上に配置され
た複数個のデータが一度の処理で連続してメモリにスト
アされたり、逆にメモリから複数個のデータが一度の処
理で連続してレジスタへロードされたりする処理が頻繁
に行われる。CあるいはPascal等の高級言語ではプロシ
ージャ毎に高頻度に使用される変数をレジスタに再配置
する手法が用いられることが多く、これらの言語で設計
されたソフトウェアではレジスタから複数のデータをメ
モリにストアしたり、複数のデータをメモリからレジス
タにロードする頻度が高い。
【0004】このような事情から、1つの命令で複数の
データをレジスタからメモリにストアしたり、1つの命
令で複数のデータをメモリからレジスタにロードする複
数データ転送命令を備えたデータ処理装置が提案されて
いる。
【0005】従来のデータ処理装置では上述のような複
数データ転送命令を処理する際に、マイクロプログラム
により命令を実行するために必要な複数の処理を逐次的
に実行することにより命令を処理していた。マイクロプ
ログラムを用いて1つの命令を複数の処理に分解して実
行するデータ処理装置は古くから知られており、例えば
「J. L. Hennessy and D. A. Patterson,"Computer Arc
hitecture A Quantitative Approach," Morgan Kaufman
n Publishers, Inc. 1990.」の第5.5章に詳細に記述さ
れている。また、複数データ転送命令をマイクロプログ
ラムで複数の処理に分解して実行するデータ処理装置は
例えば特願平2-231966号の発明に詳細に開示されてい
る。
【0006】
【発明が解決しようとする課題】複数データ転送命令を
マイクロプログラムなどにより命令実行段階で複数の処
理に分解して実行する従来のデータ処理装置では、命令
をパイプライン処理する機構を備えている場合において
も、複数データ転送命令はすべて実行ステージのみで処
理され、オペランドのアドレス計算を行うステージ及び
オペランドのフェッチを行うステージは全く何らの処理
も行わないかまたはほとんど何らの処理も行わない。
【0007】また、複数データ転送命令を実行ステージ
で処理する場合は、大きく分けて前処理,実処理及び後
処理の3段階に分解して処理を行っている。これらの内
の前処理と後処理とは複数データ転送命令で指定されて
いる本来要求されるべき処理ではなく、ハードウエアに
依存して定まるオーバーヘッドである。
【0008】具体的にはたとえば、"1" と"0" とのビッ
ト列で示されているレジスタリストに従って複数のデー
タをメモリからレジスタにロードする複数データロード
命令をマイクロプログラムで展開して処理する場合は、
この命令の本来の処理であるメモリからレジスタへのデ
ータ転送処理の前処理として、命令デコーダから出力さ
れたレジスタリストをプライオリティエンコーダに転送
する処理が必要である。
【0009】従来のデータ処理装置ではたとえば上述の
如く、複数データ転送命令を実行する場合にはレジスタ
リストなどのようなマイクロプログラムのパラメータと
なるデータを命令実行段階で解析するための前処理が必
要なため、このような処理のために本来の処理以外に余
分な時間が必要になり、この時間が複数データ転送命令
の高速実行を妨げる要因となっている。
【0010】本発明はこのような事情に鑑みてなされた
ものであり、複数のデータを1回の処理でメモリからレ
ジスタへロードし、またレジスタからメモリへストアす
る命令を高効率で処理し得るデータ処理装置の提供を目
的とする。
【0011】
【課題を解決するための手段】本発明のデータ処理装置
の第1の発明は、メモリから複数のレジスタの各々へデ
ータを転送する処理を指定するオペレーション指定フィ
ールドと、それぞれ異なるレジスタに対応付けられた複
数のビットからなるビット列で構成され、データの転送
先のレジスタを指定するためのレジスタ指定フィールド
とを含んだ複数データロード命令を実行するデータ処理
装置に関するものである。 このデータ処理装置は、オペ
レーション指定フィールドをデコードして制御信号を生
成し出力するデコード部、レジスタ指定フィールドを入
力し、第1のレジスタに対応した第1のビットが所定値
を示した場合には第1の期間に第1のレジスタを特定す
る第1のエンコード値を生成し出力するエンコード部、
第1のビットに隣接する第2のレジスタに対応した第2
のビットが所定値を示していることを判定しその判定結
果であるアクセス信号を出力する判定回路、および、デ
コード部から出力される制御信号により制御され、エン
コード部から出力される第1のエンコード値に従って第
1の期間に続く第2の期間にメモリから第1のレジスタ
へデータを転送する処理を行い、判定回路が出力される
アクセス信号がアサートされたことに応答して、第2の
レジスタがアクセスされ第2の期間にメモリから第2の
レジスタへデータを転送する処理を行う命令実行部を備
えている。さらに、エンコード部は、第3のレジスタに
対応した第3のビットが所定値を示した場合には命令実
行部が第1のレジスタへデータを転送する処理を行うこ
とと並列して第2の期間に第3のレジスタを特定する第
2のエンコード値を生成し出力し、命令実行部は、エン
コード部から出力される第2のエンコード値に従って第
2の期間に続く第3の期間にメモリから第3のレジスタ
へデータを転送する処理を行う。本発明のデータ処理装
置の第2の発明は、複数のレジスタの各々からメモリへ
データを転送する処理を指定するオペレーション指定フ
ィールドと、それぞれ異なるレジスタに対応付けられた
複数のビットからなるビット列で構成され、データの転
送先のレジスタを指定するためのレジスタ指定フィール
ドとを含んだ複数データストア命令を実行するデータ処
理装置に関するものである。 このデータ処理装置は、オ
ペレーション指定フィールドをデコードして制御信号を
生成し出力するデコード部、レジスタ指定フィールドを
入力し、第1のレジスタに対応した第1のビットが所定
値を示した場合には第1の期間に第1のレジスタを特定
する第1のエンコード値を生成し出力するエンコード
部、第1のビットに隣接する第2のレジスタに対応した
第2のビットが所定値を示していることを判定しその判
定結果であるアクセス信号を出力する判定回路、およ
び、デコード部から出力される制御信号により制御さ
れ、エンコード部から出力される第1のエンコード値に
従って第1の期間に続く第2の期間に第1のレジスタか
らメモリへデータを転送する処理を行い、判定回路が出
力されるアクセス信号がアサートされたことに応答し
て、第2のレジスタがアクセスされ第2の期間に第2の
レジスタからメモリへデータを転送する処理を行う命令
実行部を備えている。さらに、エンコード部は、第3の
レジスタに対応した第3のビットが所定値を示した場合
には命令実行部が第1のレジスタへデータを転送する処
理を行うことと並列して第2の期間に第3のレジスタを
特定する第2のエンコード値を生成し出力し、命令実行
部は、エンコード部から出力される第2のエンコード値
に従って第2の期間に続く第3の期間に第3のレジスタ
からメモリへデータを転送する処理を行う。
【0012】
【作用】本発明のデータ処理装置の第1の発明では、
ジスタ指定フィールドにおけるそれぞれ第1および第3
のビットが同じ所定値を示す場合、エンコード部が第1
の期間に第1のエンコード値を生成し出力し、それに続
く第2の期間にエンコード値を生成し出力し、命令実行
部が第1のエンコード値に従ってエンコード部の第2の
エンコード値を生成し出力することと並列して第2の期
間に第1のレジスタへデータを転送する処理を行い、第
2のエンコード値に従って第2の期間に続く第3の期間
に第3のレジスタへデータを転送する処理を行うので、
エンコード値を生成するエンコード部とデータ転送の処
理をする命令実行部との間でいわゆるパイプライン処理
が行われる。 そして、レジスタ指定フィールドにおける
互いに隣接するビットが同じ所定値を示している場合に
は、パイプライン処理における第1のレジスタへのデー
タ転送を行う実行ステージに対応する第2の期間に第2
のレジスタへもデータを転送しているので、複数データ
ロード命令の処理時間が短縮される。 しかも、判定回路
は互いに隣接するビットが同じ所定値を示しているか否
かを判定し、その判定信号であるアクセス信号に応答し
て第2のレジスタがアクセスされるので、エンコード部
は第2のビットが所定値を示していることによりエンコ
ード値を計算する必要がなくなる。本発明のデータ処理
装置の第2の発明では、レジスタ指定フィールドにおけ
るそれぞれ第1および第3のビットが同じ所定値を示す
場合、エンコード部が第1の期間に第1のエンコード値
を生成し出力し、それに続く第2の期間にエンコード値
を生成し出力し、命令実行部が第1のエンコード値に従
ってエンコード部の第2のエンコード値を生成し出力す
ることと並列して第2の期間に第1のレジスタからデー
タを転送する処理を行い、第2のエンコード値に従って
第2の期間に続く第3の期間に第3のレジスタからデー
タを転送する処理を行うので、エンコード値を生成する
エンコード部とデータ転送の処理をする命令実行部との
間でいわゆるパイプライン処理が行われる。 そして、レ
ジスタ指定フィールドにおける互いに隣接するビットが
同じ所定値 を示している場合には、パイプライン処理に
おける第1のレジスタからのデータ転送を行う実行ステ
ージに対応する第2の期間に第2のレジスタからもデー
タを転送しているので、複数データロード命令の処理時
間が短縮される。 しかも、判定回路は互いに隣接するビ
ットが同じ所定値を示しているか否かを判定し、その判
定信号であるアクセス信号に応答して第2のレジスタが
アクセスされるので、エンコード部は第2のビットが所
定値を示していることによりエンコード値を計算する必
要がなくなる。
【0013】
【実施例】以下、本発明をその実施例を示す図面を参照
して詳述する。
【0014】(1)「本発明のデータ処理装置を用いたシ
ステムの構成」図6は本発明のデータ処理装置を用いた
システムの構成例を示すブロック図である。
【0015】本実施例では、本発明のデータ処理装置10
0, 命令キャッシュ106, データキャッシュ107 及び10
8, 主メモリ109 がアドレスバス101, データバス102,
命令バス103, メモリアドレスバス104, メモリデー
タバス105 で結合されている。
【0016】アドレスバス101 は本発明のデータ処理装
置100から出力されるアドレスを命令キャッシュ106 と
データキャッシュ107, 108とに入力する。命令バス103
は命令キャッシュ106 から出力される命令コードを本発
明のデータ処理装置100 へ転送する。データバス102 は
本発明のデータ処理装置100 から出力されたデータをデ
ータキャッシュ107, 108へ転送したりあるいはデータキ
ャッシュ107, 108から出力されたデータを本発明のデー
タ処理装置100 へ転送したりする。メモリアドレスバス
104 は命令キャッシュ106 またはデータキャッシュ107,
108から出力されるアドレスを主メモリ109 へ転送す
る。メモリデータバス105 は主メモリ109と命令キャッ
シュ106 またはデータキャッシュ107, 108との間で命令
またはデータを転送する。
【0017】命令キャッシュ106,データキャッシュ107,
108がミスした場合はそれぞれのキャッシュがメモリア
ドレスバス104 とメモリデータバス105 とのバス権を調
停して主メモリ109 をアクセスする。
【0018】データキャッシュ107, 108は本発明のデー
タ処理装置100 の側では64ビットのバスに結合している
ため、2つのチップが協調して動作する。各64ビットデ
ータの上位32ビットのデータをデータキャッシュ107
が、下位32ビットのデータをデータキャッシュ108 がそ
れぞれ分担して受持つ。
【0019】以下、本発明のデータ処理装置100 の命令
体系及び処理機構について最初に説明し、次に複数個の
レジスタ中のデータを転送する命令である LDM命
令, STM命令,ENTER命令,EXITD命令を実行した場合の動
作を例として、本発明のデータ処理装置を特徴付ける1
命令を複数の処理単位に分解して行われるパイプライン
処理動作の詳細を説明する。
【0020】(2)「本発明のデータ処理装置の命令フォ
ーマット」本発明のデータ処理装置の命令は16ビット単
位で可変長となっており、奇数バイト長の命令はない。
【0021】本発明のデータ処理装置では高頻度に使用
される命令を短いフォーマットとするために特に工夫さ
れた命令フォーマット体系を有する。例えば、2オペラ
ンド命令に対して、基本的に「4バイト」+「拡張部」
の構成を有し、全てのアドレッシングモードが利用可能
な一般形フォーマットと、頻度の高い命令とアドレッシ
ングモードとのみを使用可能な短縮形フォーマットとの
2つのフォーマットがある。
【0022】図9乃至図13に示す本発明のデータ処理装
置の命令フォーマット中に現われる記号の意味は以下の
如くである。 −:オペレーションコードが入る部分 Ea:8ビットの一般形のアドレッシングモードでオペラ
ンドを指定する部分 Sh :6ビットの短縮形のアドレッシングモードでオペラ
ンドを指定する部分 Rn:レジスタファイル上のオペランドをレジスタ番号で
指定する部分
【0023】フォーマットは、図9に示す如く、右側が
LSB側で且つ高いアドレスになっている。アドレスNと
アドレスN+1との2バイトを見ないと命令フォーマッ
トが判別できないようになっているが、これは、命令が
必ず16ビット(ハーフワード)単位でフェッチ, デコー
ドされることを前提としているためである。
【0024】本発明のデータ処理装置の命令では、いず
れのフォーマットの場合も、各オペランドのEaまたはSh
の拡張部は必ずそのEaまたはShの基本部を含む16ビット
(ハーフワード) の直後に配置される。これは、命令に
より暗黙に指定される即値データあるいは命令の拡張部
に優先する。従って、4バイト以上の命令では、Eaの拡
張部により命令のオペレーションコードが分断される場
合がある。
【0025】また、後述するように、多段間接モードに
おいてEaの拡張部に更に拡張部が付加される場合にも次
の命令オペレーションコードよりもそちらの方が優先さ
れる。例えば、第1ハーフワードにEa1を含み、第2ハ
ーフワードにEa2を含み、第3ハーフワードまである6
バイト命令の場合について考える。なおここでは、Ea1
に多段間接モードを使用したため、普通の拡張部の他に
多段間接モードの拡張部も付加されるものとする。この
場合、実際の命令ビットパターンは、命令の第1ハーフ
ワード(Ea1の基本部を含む), Ea1の拡張部, Ea1の
多段間接モード拡張部, 命令の第2ハーフワード(Ea2
の基本部を含む), Ea2の拡張部, 命令の第3ハーフワ
ードの順となる。
【0026】(2.1) 「短縮形2オペランド命令」図10は
2オペランド命令の短縮形フォーマットを示す模式図で
ある。このフォーマットにはソースオペランド側がメモ
リとなるL-formatとデスティネーションオペランド側が
メモリとなるS-formatとがある。
【0027】L-formatでは、Shはソースオペランドの指
定フィールドを、Rnはデスティネーションオペランドの
レジスタの指定フィールドを、RRはShのオペランドサイ
ズの指定フィールドをそれぞれ表す。レジスタ上に置か
れたデスティネーションオペランドのサイズは32ビット
に固定されている。レジスタ側とメモリ側とのサイズが
異なり、且つソース側のサイズが小さい場合に符号拡張
が行われる。
【0028】S-formatでは、Shはデスティネーションオ
ペランドの指定フィールドを、Rnはソースオペランドの
レジスタ指定フィールドを、RRはShのオペランドサイズ
の指定フィールドをそれぞれ表す。レジスタ上に置かれ
たソースオペランドのサイズは32ビットに固定されてい
る。レジスタ側とメモリ側とのサイズが異なり且つソー
ス側のサイズが大きい場合は、オーバフローした部分の
切捨てとオーバーフローチェックとが行われる。
【0029】(2.2) 「一般形1オペランド命令」図11は
1オペランド命令の一般形フォーマット(G1-format) を
示す模式図である。このフォーマットでは、MMはオペラ
ンドサイズの指定フィールドを表している。一部のG1-f
ormat 命令ではEaの拡張部以外にも拡張部を有する。ま
た、MMフィールドを使用しない命令もある。
【0030】(2.3) 「一般形2オペランド命令」図12は
2オペランド命令の一般形フォーマットを示す模式図で
ある。このフォーマットに含まれるのは、8ビットで指
定される一般形アドレッシングモードのオペランドが最
大2つ存在する命令である。オペランドの総数自体は3
つ以上になる場合もある。
【0031】このフォーマットにおいて、 EaMはデステ
ィネーションオペランドの指定フィールドを、MMはデス
ティネーションオペランドサイズの指定フィールドを、
EaRはソースオペランド指定フィールドを、RRはソース
オペランドサイズの指定フィールドをそれぞれ表してい
る。一部の一般型フォーマット命令では EaM及びEaRの
拡張部以外にも拡張部がある。
【0032】図13はショートブランチ命令のフォーマッ
トを示す模式図である。このフォーマットでは、ccccは
分岐条件指定フィールドを、disp:8はジャンプ先との変
位指定フィールドをそれぞれ表している。本発明のデー
タ処理装置では、8ビットで変位を指定する場合にはビ
ットパターンでの指定値を2倍して変位値とする
【0033】(2.4) 「アドレッシングモード」本発明の
データ処理装置の命令のアドレッシングモード指定方法
には、レジスタを含めて6ビットで指定する短縮形と8
ビットで指定する一般形とがある。
【0034】未定義のアドレッシングモードを指定した
場合、あるいは意味的に考えて明らかに不合理なアドレ
ッシングモードの組合わせが指定された場合には、未定
義命令を実行した場合と同様に予約命令例外が発生して
例外処理が起動される。これに該当するのは、デスティ
ネーションが即値モードである場合、アドレス計算を伴
うべきアドレッシングモード指定フィールドで即値モー
ドが使用された場合などである。
【0035】図14乃至図24に示すフォーマットの模式図
において使用されている記号の意味は以下の如くであ
る。 Rn:レジスタ指定 (Sh):6ビットの短縮形アドレッシングモードでの指定
方法 (Ea):8ビットの一般形アドレッシングモードでの指定
方法 なお、各フォーマットの模式図において破線にて表され
ている部分は拡張部を示す。
【0036】(2.4.1) 「基本アドレッシングモード」本
発明のデータ処理装置の命令は種々のアドレッシングモ
ードをサポートする。それらの内、本発明のデータ処理
装置でサポートする基本アドレッシングモードには、レ
ジスタ直接モード, レジスタ間接モード, レジスタ相対
間接モード,即値モード, 絶対モード, PC相対間接モー
ド, スタックポップモード, スタックプッシュモードが
ある。
【0037】レジスタ直接モードは、レジスタの内容を
そのままオペランドとするアドレッシングモードであ
る。フォーマットの模式図を図14に示す。図中、Rnは汎
用レジスタまたは FPUレジスタの番号を示す。
【0038】レジスタ間接モードは、汎用レジスタの内
容をアドレスとするメモリの内容をオペランドとするア
ドレッシングモードである。フォーマットの模式図を図
15に示す。図中、Rnは汎用レジスタの番号を示す。
【0039】レジスタ相対間接は、ディスプレースメン
ト値が16ビットであるか32ビットであるかにより2種類
に分かれる。いずれも、汎用レジスタの内容に16ビット
または32ビットのディスプレースメント値を加えた値を
アドレスとするメモリの内容をオペランドとするアドレ
ッシングモードである。フォーマットの模式図を図16に
示す。図中、Rnは汎用レジスタの番号を示す。disp:16
とdisp:32とは、それぞれ16ビットのディスプレースメ
ント値, 32ビットのディスプレースメント値を示す。こ
こでのディスプレースメント値は符号付きとして扱われ
る。
【0040】即値モードは、命令コード中で指定される
ビットパターンをそのまま2進数と見なしてオペランド
とするアドレッシングモードである。フォーマットの模
式図を図17に示す。図中、 imm_dataは即値を示す。 i
mm_dataのサイズは、オペランドサイズとして命令中で
指定される。
【0041】絶対モードは、アドレス値が16ビットで示
されるか32ビットで示されるかにより2種類に分かれ
る。いずれも、命令コード中で指定される16ビットまた
は32ビットのビットパターンをアドレスとしたメモリの
内容をオペランドとするアドレッシングモードである。
フォーマットの模式図を図18に示す。図中、abs:16とab
s:32とは、それぞれ16ビット, 32ビットのアドレス値を
示す。abs:16にてアドレスが示される場合は指定された
アドレス値が32ビットに符号拡張される。
【0042】PC相対間接モードは、ディスプレースメン
ト値が16ビットであるか32ビットであるかにより2種類
に分かれる。いずれも、プログラムカウンタの内容に16
ビットまたは32ビットのディスプレースメント値を加え
た値をアドレスとするメモリの内容をオペランドとする
アドレッシングモードである。フォーマットの模式図を
図19に示す。図中、disp:16とdisp:32とは、それぞ
れ、16ビットのディスプレースメント値, 32ビットのデ
ィスプレースメント値を示す。ここではディスプレース
メント値は符号付きとして扱われる。PC相対間接モード
において参照されるプログラムカウンタの値は、そのオ
ペランドを含む命令の先頭アドレスである。多段間接ア
ドレッシングモードにおいてプログラムカウンタの値が
参照される場合にも、同様に命令の先頭のアドレスがPC
相対の基準値として使用される。
【0043】スタックポップモードはスタックポインタ
(SP)の内容をアドレスとするメモリの内容をオペランド
とするアドレッシングモードである。オペランドアクセ
ス後にSPがオペランドサイズだけインクリメントされ
る。例えば、32ビットデータが扱われる場合には、オペ
ランドアクセス後にSPが+4だけ更新される。8, 16, 64
ビットのサイズのオペランドに対するスタックポップモ
ードの指定も可能であり、それぞれSPが+1,+2,+8だけ更
新される。フォーマットの模式図を図20に示す。オペラ
ンドに対してスタックポップモードが意味を持たない場
合には予約命令例外が発生する。具体的に予約命令例外
となるのは、 writeオペランド, read- modify-writeオ
ペランドに対するスタックポップモード指定である。
【0044】スタックプッシュモードは、SPの内容をオ
ペランドサイズだけデクリメントした内容をアドレスと
するメモリの内容をオペランドとするアドレッシングモ
ードである。スタックプッシュモードではオペランドア
クセス前にSPがデクリメントされる。例えば、32ビット
データが扱われる場合には、オペランドアクセス前にSP
が-4だけ更新される。8, 16, 64ビットのサイズのオペ
ランドに対するスタックプッシュモードの指定も可能で
あり、それぞれSPが-1,-2,-8だけ更新される。フォーマ
ットの模式図を図21に示す。オペランドに対してスタッ
クプッシュモードが意味を持たない場合には予約命令例
外が発生される。具体的に予約命令例外となるのは、re
adオペランド, read-modify-write オペランドに対すス
タックプッシュモード指定である。
【0045】(2.4.2) 「多段間接アドレッシングモー
ド」複雑なアドレッシングも基本的には加算と間接参照
との組合わせに分解することが可能である。従って、加
算と間接参照とのオペレーションをアドレッシングのプ
リミティブとして与えておき、それらを任意に組合わせ
ることができれば、どのような複雑なアドレッシングモ
ードも実現可能になる。
【0046】本発明のデータ処理装置の命令の多段間接
アドレッシングモードは上述のような考え方に基づいた
アドレッシングモードである。複雑なアドレッシングモ
ードは、モジュール間のデータ参照あるいは AI(人工知
能) 言語の処理系に特に有用である。
【0047】多段間接アドレッシングモードを指定する
場合、基本アドレッシングモード指定フィールドではレ
ジスタベース多段間接モード, PCベース多段間接モー
ド, 絶対ベース多段間接モードの3種類の指定方法の内
のいずれか1つを指定する。
【0048】レジスタベース多段間接モードは汎用レジ
スタの値を拡張する多段間接アドレッシングのベース値
とするアドレッシングモードである。フォーマットの模
式図を図22に示す。図中、Rnは汎用レジスタの番号を示
す。
【0049】PCベース多段間接モードはプログラムカウ
ンタの値を拡張する多段間接アドレッシングのベース値
とするアドレッシングモードである。フォーマットの模
式図を図23に示す。
【0050】絶対ベース多段間接モードはゼロを拡張さ
れる多段間接アドレッシングのベース値とするアドレッ
シングモードである。フォーマットの模式図を図24に示
す。
【0051】拡張される多段間接モード指定フィールド
は16ビットを単位としており、これが任意回反復して付
加される。1段の多段間接アドレッシングモードによ
り、ディスプレースメントの加算,インデクスレジスタ
のスケーリング (×1,×2,×4,×8) と加算, メ
モリの間接参照を行う。多段間接モードのフォーマット
の模式図を図25に示す。各フィールドは以下に示す意味
を有する。
【0052】E=0 :多段間接モード継続 E=1 :アドレス計算終了 tmp ==> address of operand I=0 :メモリ間接参照なし tmp + disp + Rx * Scale ==> tmp I=1 :メモリ間接参照あり mem[tmp + disp + Rx * Scale ] ==> tmp M=0 : <Rx> をインデクスとして使用 M=1 :特殊なインデクス <Rx>=0 インデクス値を加算しない(Rx=0) <Rx>=1 プログラムカウンタをインデクス値として使
用(Rx=PC) <Rx>=2〜 reserved D=0 :多段間接アドレッシングモード中の4ビットのフ
ィールドd4の値を4倍してディスプレースメント値と
し、これを加算する。d4は符号付きとして扱われ、オペ
ランドのサイズとは関係なく必ず4倍して使用する。 D=1 :多段間接アドレッシングモードの拡張部で指定さ
れたdispx(16/32 ビット)をディスプレースメント値と
し、これを加算する。拡張部のサイズはd4フィールドで
指定する。 d4=0001 dispxは16ビット d4=0010 dispxは32ビット XX :インデクスのスケール (scale = 1/2/4/8)
【0053】プログラムカウンタに対して×2, ×4,
×8のスケーリングを行った場合には、その段の処理終
了後の中間値(tmp) として不定値が入る。この多段間接
アドレッシングモードによって得られる実効アドレスは
予測できない値となるが、例外は発生しない。プログラ
ムカウンタに対するスケーリングの指定は禁じられてい
る。
【0054】多段間接アドレッシングモードによる命令
フォーマットのバリエーションを図26, 図27の模式図に
示す。図26は多段間接アドレッシングモードが継続する
か終了するかのバリエーションを、図27はディスプレー
スメントのサイズのバリエーションをそれぞれ示す。
【0055】任意段数の多段間接アドレッシングモード
が利用できればコンパイラの中で段数による場合分けが
不要になるので、コンパイラの負担が軽減されるという
メリットがある。多段の間接参照の頻度が非常に少ない
としても、コンパイラとしては必ず正しいコードを発生
できなければならないからである。このため、フォーマ
ット上、任意の段数が可能になっている。
【0056】(2.5.1) 「レジスタの退避命令と復帰命
令」本発明のデータ処理装置100 は複数のレジスタの内
容をスタック領域等のメモリ領域に退避させる命令であ
る STM命令と、スタック領域等のメモリ領域に退避され
ている複数のレジスタの内容を復帰させる LDM命令とを
備えている。
【0057】LDM命令のフォーマットは図28の模式図に
示されている。 LDM命令ではsrcsフィールドで示されて
いるアドレッシングモードに従って計算されたアドレス
のメモリから reglistフィールドで示されたレジスタへ
データが転送される。転送されるべきデータを格納する
レジスタは reglistフィールドによりビットパタンで示
される。各レジスタに転送されるデータはそれぞれ4バ
イトである。
【0058】STM命令のフォーマットは図29の模式図に
示されている。 STM命令では、reglist フィールドで示
されているレジスタ中のデータが destsフィールドで示
されたアドレッシングモードに従って計算されたアドレ
スのメモリへ転送される。転送すべきデータを格納して
いるレジスタは reglistフィールドによりビットパタン
で示される。
【0059】図29に示す如く、 STM命令の reglistフィ
ールドの意味はdests フィールドで示されるアドレッシ
ングモードにより異なる。これは複数個のレジスタ内容
がメモリに格納される場合に、大きな番号のレジスタが
常に大きな番地に格納されるように統一するためであ
る。各レジスタから転送されるデータはそれぞれ4バイ
トである。
【0060】(2.5.2) 「スタックフレーム形成命令と解
放命令」本発明のデータ処理装置100 は上述の STM命令
及び LDM命令の他、高級言語によるサブルーチンの入口
でのスタックフレームの形成とレジスタの退避処理を行
う ENTER命令及び高級言語によるサブルーチンの出口で
のスタックフレームの解放とレジスタの復帰処理を行う
EXITD命令を備えている。
【0061】ENTER命令のフォーマットを図30の模式図
に示す。 ENTER命令の処理は図30のオペレーションに示
す通りである。
【0062】まず、フレームポインタFPをスタックにプ
ッシュし、スタックポインタSPをFPへ転送する。更に、
SP値から lsize値を減算してローカル変数領域をスタッ
クに確保し、レジスタリストに示されたレジスタをスタ
ックに退避する。 ENTER命令のレジスタリストでは図30
中に示す如く、レジスタR14 とレジスタR15 とは指定す
ることが出来ない。
【0063】なお、 ENTER命令のフォーマットには lsi
ze値を8ビットの即値で指定するEフォーマットと、一
般形アドレッシングモードで指定するGフォーマットと
の2種類がある。
【0064】EXITD命令のフォーマットを図31に示す。
EXITD命令の処理は図31のオペレーションに示す通りで
ある。
【0065】EXITD命令では、レジスタリストに従って
スタックからレジスタを復帰し、SPをFPから復帰してロ
ーカル変数領域を解放し、スタックから旧FPを復帰して
サブルーチンリターンを行った後にSP値に adisp値を加
算してサブルーチンのパラメータを解放する。 EXITD命
令のレジスタリストでは図31中に示す如く、レジスタR1
4 とレジスタR15 とは指定することは出来ない。
【0066】なお、 EXITD命令のフォーマットには adj
sp値を8ビットの即値で指定するEフォーマットと、一
般形アドレッシングモードで指定するGフォーマットと
の2種類がある。
【0067】(3) 「本発明のデータ処理装置の機能ブロ
ックの構成」図4は本発明のデータ処理装置100 の構成
を示すブロック図である。
【0068】本発明のデータ処理装置の内部を機能的に
大きく分けると、命令入力部110,命令フェッチ部111,
命令デコード部112, 第1マイクロROM 部113, 第2マ
イクロROM 部114, オペランドアドレス計算部115, PC
計算部116, 整数演算部117, 浮動小数点演算部118,
アドレス入出力部119, オペランドアクセス部120,デー
タ入出力部121 に分かれる。
【0069】アドレス入出力部119 をアドレスバス101
に結合し、データ入出力部121 をデータバス102 に結合
し、命令入力部110 を命令バス103 に結合することによ
り図6に示すシステム構成をとることができる。
【0070】(3.1) 「命令入力部」命令入力部110 は外
部の命令バス103 から32ビット単位で命令コードを本発
明のデータ処理装置100 に入力する。命令キャッシュ10
6 のアクセス方法には、1つのアドレスに対して32ビッ
トの命令コードをアクセスする標準アクセスモードと、
1つのアドレスに対して4回連続で32ビットの命令コー
ドをアクセスするクワッドアクセスモードとがあり、い
ずれの場合も命令入力部110 は入力した命令コードを命
令フェッチ部111 へ出力する。
【0071】(3.2) 「命令フェッチ部」命令フェッチ部
111 には、命令アドレスのアドレス変換機構, 内蔵命令
キャッシュ, 命令用TLB, 命令キュー及びそれらの制御
部等が備えられている。
【0072】命令フェッチ部111 は、次にフェッチすべ
き命令のPC値を物理アドレスに変換し、内蔵命令キャッ
シュから命令コードをフェッチして命令デコード部112
へ出力する。内蔵命令キャッシュがミスした場合にはア
ドレス入出力部119 へ物理アドレスを出力し、外部へ命
令アクセスを要求し、命令入力部110 を通じて入力され
た命令コードを内蔵命令キャッシュに登録する。
【0073】次にフェッチすべき命令のPC値は命令キュ
ーに入力すべき命令のPC値として専用のカウンタで計算
される。ジャンプが発生した場合は、新たな命令のPC値
がオペランドアドレス計算部115, PC計算部116, 整数
演算部117 等から転送されて来る。
【0074】命令用TLB がミスした場合のページングに
よるアドレス変換及び命令用TLB の更新も命令フェッチ
部111 の内部にある制御回路により行われる。
【0075】また、本発明のデータ処理装置110 がバス
ウォッチモードである場合は、アドレス入出力部119 を
通じて入力された物理アドレスがヒットした内蔵命令キ
ャッシュのエントリが無効化される。
【0076】(3.3) 「命令デコード部」 命令デコード部112 では基本的に16ビット (ハーフワー
ド) 単位で命令コードをデコードする。 このブロックには図1に示す如くオペレーションコード
をデコードするデコーダ, アドレッシングモードをデコ
ードするDステージデコード部22, アドレッシングモー
ドに従ってディスプレイスメント及び即値の処理を行う
ディスプレイスメント出力部21, レジスタリストに含ま
れるセットされたビット("1"のビット)数を計算する
ット数計数回路23が含まれている
【0077】また、Dステージデコード部22の出力を更
にデコードしてマイクロROM のエントリアドレスを出力
するAステージデコード部24,レジスタリストからセッ
トされたビットに対応するレジスタ番号をエンコードす
るプライオリティエンコード部25, 転送オペランド数カ
ウンタ26も備えられている。これらのブロックは命令の
後段デコードを処理する。
【0078】命令フェッチ部111 から出力された命令コ
ードはパイプライン処理により1クロックにつき0〜6
バイトがデコードされる。デコード結果の内、整数演算
部117 での演算に関係する情報が第1マイクロROM 部11
3 ヘ、浮動小数点演算部118での演算に関係する情報が
第2マイクロROM 部114 へ、オペランドアドレス計算に
関係する情報がオペランドアドレス計算部115 へ、PC計
算に関係する情報がPC計算部116 へ、それぞれ出力され
る。
【0079】(3.4) 「第1マイクロROM 部」第1マイク
ロROM 部113 には、整数演算部117 の制御を行う種々の
マイクロプログラムルーチンが格納されているマイクロ
ROM, マイクロシーケンサ, マイクロ命令デコーダ等が
備えられている。マイクロ命令はマイクロROM から1ク
ロック当たり1度読出される。マイクロシーケンサは命
令実行に関するマイクロプログラム実行のためのシーケ
ンス処理の他に、例外, 割込及びトラップ (この3つを
併せてEIT と称す) の受付けと各EIT に対応するマイク
ロプログラムのシーケンス処理も行う。
【0080】第1マイクロROM 部113 には命令コードに
依存しない外部割込み及び整数演算実行結果によるマイ
クロプログラムの分岐条件も入力される。第1マイクロ
ROM 部113 のマイクロデコーダの出力は主に整数演算部
117 へ出力されるが、ジャンプ命令の実行時, 例外受付
時には一部の情報を他の機能ブロックへも出力する。
【0081】(3.5) 「第2マイクロROM 部」第2マイク
ロROM 部114 には、浮動小数点演算部118 の制御を行う
種々のマイクロプログラムルーチンが格納されているマ
イクロROM, マイクロシーケンサ,マイクロ命令デコー
ダ等が備えられている。マイクロ命令はマイクロROM か
ら1クロックに1度読み出される。マイクロシーケンサ
はマイクロプログラムで示されるシーケンス処理の他
に、浮動小数点演算に関係する例外の処理も行い、マス
クされていない浮動小数点例外が検出された場合には第
1マイクロROM 部113 へ例外処理を要求する。第2マイ
クロROM 部114 のマイクロシーケンサは第1マイクロRO
M 部113 のマイクロシーケンサと並列に動作し、整数演
算部117 と並列に浮動小数点演算部118 を制御する。
【0082】第2マイクロROM 部114 には浮動小数点演
算の実行結果によるフラッグ情報も入力される。
【0083】第2マイクロROM 部114 のマイクロデコー
ダの出力は主に浮動小数点演算部118 に対して出力され
るが、浮動小数点演算に関係する例外の検出等の一部の
情報は他の機能ブロックへも出力される。
【0084】(3.6) 「オペランドアドレス計算部」オペ
ランドアドレス計算部115 は、命令デコード部112 のア
ドレッシングモードデコーダ等から出力されたオペラン
ドアドレス計算に関係する情報によりハードワイヤード
に制御される。このオペランドアドレス計算部115 では
メモリ間接アドレッシングのためのメモリアクセス以外
のオペランドのアドレス計算とジャンプ命令のジャンプ
先アドレスの計算とが行われる。
【0085】オペランドアドレスの計算結果は整数演算
部117 へ出力される。オペランドアドレス計算終了段階
での先行ジャンプ処理ではジャンプ先アドレスの計算結
果が命令フェッチ部111 とPC計算部116とへ出力され
る。
【0086】即値オペランドは整数演算部117 及び浮動
小数点演算部118 へ出力される。アドレス計算に必要な
汎用レジスタ, プログラムカウンタの値は整数演算部11
7,PC計算部116 から入力される。
【0087】(3.7) 「PC計算部」PC計算部116 は命令デ
コード部112 から出力されるPC計算に関係する情報でハ
ードワイヤードに制御され、命令のPC値を計算する。本
発明のデータ処理装置100 の命令は可変長命令であり、
命令をデコードした後でなければ命令の長さが判明しな
い。PC計算部116 は命令デコード部112 から出力された
命令長をデコード中の命令のPC値に加算することにより
次に実行すべき命令のPC値を計算する。
【0088】PC計算部116 の計算結果は各命令のPC値と
して命令のデコード結果と共に出力される。命令デコー
ドステージでの先行ブランチ処理では、命令デコード部
112 から出力されるブランチ幅をPC値に加算することに
よりブランチ先命令のアドレスが計算される。
【0089】また、PC計算部116 にはサブルーチンへの
ジャンプ命令の実行時にスタックにプッシュされている
サブルーチンからの戻り先PC値のコピーを保持したPCス
タックが備えられており、サブルーチンからのリターン
命令に対してはPCスタックから戻り先PCを読出すことに
より、プリリターン先命令のアドレスを生成する処理も
行う。
【0090】(3.8) 「整数演算部」整数演算部117 は第
1マイクロROM 部113 のマイクロROM に格納されたマイ
クロプログラムにより制御され、各整数演算命令の機能
を実現するために必要な演算を整数演算部117 の内部に
あるレジスタファイルと演算器とで実行する。レジスタ
ファイルには汎用レジスタと作業用レジスタとが含まれ
る。
【0091】また、整数演算部117 は演算器としてはAL
U, プライオリティエンコーダ等を備えている。整数演
算部117 には整数演算の結果により変化するフラグ, 外
部割込みのマスクレベルを定めるビット等を含むプロセ
ッサ状態語(PSW), バッファメモリ制御レジスタ等が含
まれる。
【0092】命令の演算対象となるオペランドがアドレ
スまたは即値である場合は、オペランドアドレス計算部
115 から即値または計算されたアドレスが入力される。
また、命令の演算対象となるオペランドがメモリ上のデ
ータである場合は、アドレス計算部115 で計算されたア
ドレスがオペランドアクセス部120 へ出力され、内蔵デ
ータキャッシュまたは外部からフェッチしたオペランド
が整数演算部117 に入力される。
【0093】演算に際して、内蔵データキャッシュ, 外
部のデータキャッシュ107, 108あるいは主メモリ109 を
リードする必要がある場合は、マイクロプログラムの指
示によりオペランドアクセス部120へアドレスを出力す
ることにより、目的のデータをフェッチする。
【0094】演算結果を内蔵データキャッシュ, 外部の
データキャッシュ107, 108あるいは主メモリ109 へスト
アする必要がある場合には、マイクロプログラムの指示
によりオペランドアクセス部120 へアドレスとデータと
を出力する。この際、PC計算部116 からはそのストア動
作を行った命令のPC値がオペランドアクセス部120 へ出
力される。
【0095】外部割込み, 例外の処理等が行われて新た
な命令アドレスを整数演算部117 が得た場合は、これが
命令フェッチ部111 とPC計算部116 とへ出力される。
【0096】(3.9) 「浮動小数点演算部」浮動小数点演
算部118 は第2マイクロROM 部114 のマイクロROM に格
納されたマイクロプログラムにより制御され、各浮動小
数点演算命令の機能を実現するために必要な演算を浮動
小数点演算部118 の内部にあるレジスタファイルと演算
器とで実行する。浮動小数点演算部118 には浮動小数点
演算の丸め処理方法及び浮動小数点演算例外の検出許可
のモードを設定する浮動小数点演算モード制御レジスタ
(FMC) と、浮動小数点演算結果に対するフラグ, 浮動小
数点例外の発生状態を示すステータスビットからなる浮
動小数点演算状態語(FSW) とがある。
【0097】命令の演算対象となるオペランドが即値で
ある場合は、オペランドアドレス計算部115 から即値が
入力される。また、命令の演算対象となるオペランドが
メモリ上のデータである場合は、アドレス計算部115 で
計算されたアドレスがオペランドアクセス部120 へ出力
され、内蔵データキャッシュまたは外部からフェッチし
たオペランドが浮動小数点演算部118 に入力される。
【0098】オペランドを内蔵データキャッシュ, 外部
のデータキャッシュ107, 108あるいは主メモリ109 へス
トアする必要がある場合には、マイクロプログラムの指
示によりオペランドアクセス部120へデータを出力す
る。ストア動作では浮動小数点演算部118 と整数演算部
117 とが協調して動作し、オペランドアクセス部120 に
対して整数演算部117 からオペランドのアドレスが出力
され、浮動小数点演算部118 からオペランドが出力され
る。この際、PC計算部116 からはそのストア動作を行っ
た命令のPC値がオペランドアクセス部120 へ出力され
る。
【0099】(3.10)「オペランドアクセス部」オペラン
ドアクセス部120 には、オペランドアドレスのアドレス
変換機構, データバッファ、データ用TLB, ストアバッ
ファ, オペランドブレイクポイントレジスタ及びそれら
の制御部がある。データバッファはモード切替えにより
内蔵データキャッシュまたはコンテキスト退避用メモリ
として動作する。
【0100】データバッファを内蔵データキャッシュと
して動作させる場合、データのロード動作ではオペラン
ドアドレス計算部115 または整数演算部117 から出力さ
れたロードすべきデータの論理アドレスが物理アドレス
に変換され、内蔵データキャッシュからデータがフェッ
チされて整数演算部117 あるいは浮動小数点演算部118
に入力される。
【0101】内蔵データキャッシュがミスした場合に
は、アドレス入出力部119 へ物理アドレスが出力されて
外部へのデータアクセスが要求され、データ入出力部12
2 を通じて入力されたデータが内蔵データキャッシュに
登録される。
【0102】データのストア動作においては、整数演算
部117 から出力されたストアすべきデータの論理アドレ
スが物理アドレスに変換され、整数演算部117 あるいは
浮動小数点演算部118 から出力されたデータが内蔵デー
タキャッシュにストアされると共に、ストアバッファを
通じてアドレス入出力部119 へ物理アドレスが出力さ
れ、データ入出力部122を通じてデータが外部へ出力さ
れる。
【0103】ストア動作でミスが発生した場合には内蔵
データキャッシュの更新は行われない。ストアバッファ
ではストアすべきデータとそのアドレス、更にそのスト
ア動作を行った命令のPC値とが1組として管理される。
ストアバッファでのストア動作は先入れ先出し制御方式
で管理される。
【0104】データ用TLB がミスした場合のページング
によるアドレス変換及びデータ用TLB の更新もオペラン
ドアクセス部120 の内部の制御回路により行われる。ま
た、メモリアクセスアドレスがメモリ空間にマッピング
されている I/O領域に入るか否かのチェックも行われ
る。
【0105】また、データバッファを内蔵データキャッ
シュとして動作させる場合、本発明のデータ処理装置が
バスウォッチモードであれば、アドレス入出力部119 を
通じて入力された物理アドレスがヒットした内蔵データ
キャッシュのエントリは無効化される。
【0106】(3.11)「アドレス入出力部」アドレス入出
力部119は命令フェッチ部111 とオペランドアクセス部1
20 とから出力されたアドレスを本発明のデータ処理装
置100 の外部へ出力する。アドレスの出力は本発明のデ
ータ処理装置100 で定められたバスプロトコルに従って
行われる。バスプロトコルの制御はアドレス入出力部11
9 内にある外部バス制御回路が行う。外部バス制御回路
ではページ不在例外またはバスアクセス例外, 外部割込
みの受付も行う。
【0107】また、本発明のデータ処理装置100 以外の
外部デバイスがバスマスタになっており、且つ本発明の
データ処理装置100 がバスウォッチモードであれば外部
デバイスがデータライトサイクルを実行した場合にアド
レスバス101 上へ出力されたアドレスを取込んで命令フ
ェッチ部111 とオペランドアクセス部120 とへ転送す
る。
【0108】(3.12)「データ入出力部」データ入出力部
121 はオペランドのロード動作の際にデータバス102 か
らデータを取込んでオペランドアクセス部120 へ転送
し、またオペランドのストア動作の際にオペランドアク
セス部120 から出力されたオペランドをデータバス102
へ出力する。データキャッシュ107, 108のアクセス方法
には、1つのアドレスに対して64ビットのデータをアク
セスする標準アクセスモードと、1つのアドレスに対し
て4回連続で64ビットのデータをアクセスするクワッド
アクセスモードとがあり、いずれの場合もデータ入出力
部121 はオペランドアクセス部120 と外部のメモリとで
送受されるデータの入出力を制御する。
【0109】(4)「パイプライン処理」本発明のデータ
処理装置100は各種のバッファ記憶装置と、命令バス103
及びデータバス102を使用したメモリの効率的アクセス
とにより、命令をパイプライン処理して高性能に動作す
る。ここでは、本発明のデータ処理装置100 のパイプラ
イン処理方法について説明する。
【0110】(4.1) 「パイプライン処理機構」本発明の
データ処理装置100 のパイプライン処理機構を図5の模
式図に示す。本発明のデータ処理装置100 のパイプライ
ン処理機構は、命令のプリフェッチを行う命令フェッチ
ステージ (IFステージ)31, 命令のデコードを行うデコ
ードステージ (Dステージ)32, オペランドのアドレス
計算を行うオペランドアドレス計算ステージ (Aステー
ジ)33, マイクロROM アクセス (特にRステージ37と称
す) とオペランドのプリフェッチ (特にOFステージ38と
称す) とを行うオペランドフェッチステージ (Fステー
ジ)34, 命令の実行を行う実行ステージ (Eステージ)3
5, メモリオペランドのストアを行うストアステージ
(Sステージ)36 の6段構成でパイプライン処理を行
う。なお、Sステージ36には3段のストアバッファがあ
る。
【0111】各ステージは他のステージとは独立に動作
し、理論上は6つのステージが完全に独立動作する。S
ステージ36以外の各ステージは1回の処理を最小1クロ
ックで行うことができる。Sステージ36は1回のオペラ
ンドストア処理を最小2クロックで行うことができる。
従って、メモリオペランドのストア処理が行われない場
合、理想的には1クロックごとに次々とパイプライン処
理が進行する。
【0112】本発明のデータ処理装置100 にはメモリ−
メモリ間演算あるいはメモリ間接アドレッシング等、1
回の基本パイプライン処理だけでは処理が行えない命令
があるが、これらの処理に対してもなるべく均衡したパ
イプライン処理が行えるように設計されている。複数の
メモリオペランドを有する命令に対してはメモリオペラ
ンドの数に基づいてデコード段階で複数のパイプライン
処理単位 (ステップコード) に分解してパイプライン処
理を行う。
【0113】IFステージ31からDステージ32へ渡される
情報は命令コードそのものである。Dステージ32からA
ステージ33へ渡される情報は命令で指定された演算に関
する情報 (Dコード41と称す) と、オペランドのアドレ
ス計算に関係する情報 (Aコード42と称す) と、処理中
の命令のプログラムカウンタ値(PC)との3つである。
【0114】Aステージ33からFステージ34へ渡される
情報はマイクロプログラムルーチンのエントリ番地, マ
イクロプログラムへのパラメータなどを含むRコード43
と、オペランドのアドレス, アクセス方法指示情報等を
含むFコード44と、処理中の命令のプログラムカウンタ
値(PC)との3つである。
【0115】Fステージ34からEステージ35へ渡される
情報は演算制御情報, リテラル等を含むEコード45と、
オペランド, オペランドアドレス等を含むSコード46a,
46bと、処理中命令のプログラムカウンタ値(PC)との3
つである。Sコード46a, 46bはアドレス46a とデータ46
b とからなる。
【0116】Eステージ35からSステージ36へ渡される
情報は、ストアすべき演算結果であるWコード47a, 47b
とその演算結果を出力した命令のプログラムカウンタ値
(PC)との2つである。Wコード47a, 47bはアドレス47a
とデータ47b とからなる。
【0117】Eステージ35以前のステージで検出された
EIT はそのコードがEステージ35に到達するまでEIT 処
理を起動しない。Eステージ35で処理されている命令の
みが実行段階の命令であり、IFステージ31〜Fステージ
34で処理されている命令は未だ実行段階に至っていない
からである。従って、Eステージ35以前で検出されたEI
T はそれが検出されたことがステップコード中に記録さ
れて次のステージに伝えられるのみである。Sステージ
36で検出されたEIT はEステージ35で処理中の命令の処
理が完了した時点で受付けられるか、またはその命令の
処理がキャンセルされて受付けられ、Eステージ35に戻
って処理される。
【0118】(4.2) 「各パイプラインステージの処理」
各パイプラインステージの入出力ステップコードには図
4に示したように便宜上名前が付与されている。またス
テップコードはオペレーションコードに関する処理を行
い、マイクロROM のエントリ番地, Eステージ35に対す
るパラメータなどになる系列と、Eステージ35の処理対
象のオペランドになる系列との2系列がある。また、D
ステージ32からSステージ36までの間では処理中の命令
のプログラムカウンタ値が受渡される。
【0119】(4.2.1) 「命令フェッチステージ」命令フ
ェッチステージ (IFステージ31) では命令フェッチ部11
1 が動作する。内蔵命令キャッシュからあるいは外部メ
モリから命令をフェッチし、命令キューに入力して、D
ステージ32に対して2〜6バイト単位で命令コードを出
力する。命令キューの入力は整置された4バイト単位で
行われる。
【0120】標準アクセスモードで外部から命令をフェ
ッチする場合は整置された4バイトにつき最小2クロッ
クを要する。クワッドアクセスモードでは16バイトにつ
き最小5クロックを要する。内蔵命令キャッシュがヒッ
トした場合は整置された8バイトにつき1クロックでフ
ェッチ可能である。命令キューの出力単位は2バイトご
とに可変であり、1クロックの間に最大6バイトまで出
力可能である。またジャンプの直後には命令キューをバ
イパスして命令コード2バイトを直接命令デコーダに転
送することも可能である。
【0121】命令の論理アドレスの物理アドレスへの変
換,内蔵命令キャッシュ及び命令用TLB の制御,プリフ
ェッチ先命令アドレスの管理, 命令キューの制御もIFス
テージ31で行われる。
【0122】(4.2.2) 「命令デコードステージ」命令デ
コードステージ (Dステージ32) はIFステージ31から入
力された命令コードをデコードする。命令コードのデコ
ードは命令デコード部112のDステージデコード部22を
使用して1クロックに1度の割合で行われ、1回のデコ
ード処理で0〜6バイトの命令コードを消費する (リタ
ーンサブルーチン命令の復帰先アドレスを含むステップ
コードの出力処理等では命令コードを消費しない) 。D
ステージ32は1回のデコードでAステージ33に対してア
ドレス計算情報であるAコード42とオペレーションコー
ドの中間デコード結果であるDコード41とを出力する。
【0123】Dステージ32ではPC計算部116 の制御及び
命令キューからの命令コードの出力処理も行う。また、
Dステージ32ではブランチ命令及びサブルーチンからの
リターン命令に対して先行ジャンプ処理を行う。先行ジ
ャンプを行った無条件ブランチ命令に対してはDコード
41もAコード42も出力せず、Dステージ32で命令の処理
を終了する。
【0124】(4.2.3) 「オペランドアドレス計算ステー
ジ」 オペランドアドレス計算ステージ (Aステージ) 33での
処理は大きく2つに分かれる。第1は、命令デコード部
112 のAステージデコード部24を使用してオペレーショ
ンコードの後段デコードを行う処理で、第2はオペラン
ドアドレス計算部115 でオペランドアドレスの計算を行
う処理である。
【0125】オペレーションコードの後段デコード処理
はDコード41を入力とし、レジスタ及びメモリの書込み
予約及びマイクロプログラムルーチンのエントリ番地及
びマイクロプログラムに対するパラメータ等を含むRコ
ード43の出力を行う。なお、レジスタ及びメモリの書込
み予約は、アドレス計算で参照したレジスタ及びメモリ
の内容がパイプライン上を先行する命令で書換えられて
しまって誤ったアドレス計算が行われることを防止する
ためのものである。
【0126】オペランドアドレス計算処理はAコード42
を入力とし、Aコード42に従ってオペランドアドレス計
算部115 でオペランドのアドレス計算を行い、その計算
結果をFコード44として出力する。またジャンプ命令に
対してはジャンプ先アドレスの計算を行って先行ジャン
プ処理を行う。この際、アドレス計算に伴うレジスタの
読出し時に書込み予約のチェックが行われ、先行命令が
レジスタまたはメモリに対して書込み処理を終了してい
ないために予約があることが指示されれば、先行命令は
Eステージ35での書込み処理が終了するまで待機状態に
なる。
【0127】Aステージ33では、Dステージ32で先行ジ
ャンプを行わなかった絶対値アドレスへのジャンプある
いはレジスタ間接アドレッシングのジャンプ等に対して
先行ジャンプ処理を行う。先行ジャンプを行った無条件
ジャンプ命令に対してはRコード43あるいはFコード44
は出力されず、Aステージ33で命令の処理を終了する。
【0128】(4.2.4) 「マイクロROM アクセスステー
ジ」オペランドフェッチステージ (Fステージ)34 での
処理も大きく2つに分かれる。第1はマイクロROM のア
クセス処理であり、特にRステージ37と称す。第2はオ
ペランドプリフェッチ処理であり、特にOFステージ38と
称す。Rステージ37とOFステージ38とは必ずしも同時に
動作するわけではなく、データキャッシュのミス, ヒッ
ト、データTLB のミス, ヒット等に依存して、動作タイ
ミングが異なる。
【0129】Rステージ37の処理であるマイクロROM ア
クセス処理はRコード43に対して次のEステージ35での
実行に使用される実行制御コードであるEコード45を作
り出すためのマイクロROM アクセスとマイクロ命令デコ
ード処理とである。
【0130】1つのRコードに対する処理が2つ以上の
マイクロプログラムステップに分解される場合、第1マ
イクロROM 部113 及び第2マイクロROM 部114 がEステ
ージ35で使用され、次のRコード43がマイクロROM アク
セス待ちになる場合がある。Rコード43に対するマイク
ロROM アクセスが行われるのは、Eステージ35でのマイ
クロROM アクセスが行われない場合である。本発明のデ
ータ処理装置100 では多くの整数演算命令が1マイクロ
プログラムステップで行われ、多くの浮動小数点演算命
令が2マイクロプログラムステップで行われるため、実
際にはRコード43に対するマイクロROM アクセスが次々
と行われる可能性が高い。
【0131】(4.2.5) 「オペランドフェッチステージ」
オペランドフェッチステージ (OFステージ)38 はFステ
ージ34が行う上述の2つの処理の内のオペランドプリフ
ェッチ処理を行う。
【0132】OFステージ38では、Fコード44の論理アド
レスをデータTLB で物理アドレスに変換してその物理ア
ドレスで内蔵データキャッシュあるいは外部のメモリを
アクセスしてオペランドをフェッチし、そのオペランド
とFコード44として転送されてきたその論理アドレスと
を組合わせてSコード46a,46b として出力する。
【0133】1つのFコード44では8バイト境界をクロ
スしてもよいが、8バイト以下のオペランドフェッチを
指定する。Fコード44にはオペランドをアクセスするか
否かの指定も含まれており、Aステージ33が計算したオ
ペランドアドレス自体あるいは即値をEステージ35へ転
送する場合にはオペランドプリフェッチは行われず、F
コード44の内容をSコード46a, 46bとして転送する。
【0134】(4.2.6) 「実行ステージ」実行ステージ
(Eステージ) 35はEコード45とSコード46a, 46bとを
入力として動作する。このEステージ35が命令を実行す
るステージであり、Fステージ34以前のステージで行わ
れた処理は全てEステージ35のための前処理である。E
ステージ35でジャンプが実行されたり、 EIT処理が起動
されたりした場合は、IFステージ31〜Fステージ34まで
の処理はすべて無効化される。Eステージ35はマイクロ
プログラムにより制御され、Eコード45にて示されたマ
イクロプログラムルーチンのエントリ番地からの一連の
マイクロ命令を実行することにより命令を実行する。
【0135】Eコード45には整数演算部117 を制御する
コード (特にEIコードと称す) と浮動小数点演算部118
を制御するコード (特にEFコードと称す) とがある。EI
コードとEFコードとは独立に出力されることも可能であ
る。両コードが独立して出力された場合には、Eステー
ジ35では整数演算部117 と浮動小数点演算部118 とが並
列に動作する。例えば浮動小数点演算部118 でメモリオ
ペランドを持たない浮動小数点演算命令を実行する場
合、この動作は整数演算部117 の動作と並行して実行さ
れる。
【0136】整数演算であっても浮動小数点演算であっ
ても、マイクロROM の読出しとマイクロ命令の実行とは
パイプライン化されて行われる。従って、マイクロプロ
グラムで分岐が発生した場合は1マイクロステップの空
きが生じる。Eステージ35ではAステージ33が行ったレ
ジスタまたはメモリに対する書込み予約をオペランドの
書込みの後に解除する。
【0137】各種の割込は命令の切目のタイミングにお
いてEステージ35が直接受付け、マイクロプログラムに
より必要な処理が実行される。その他の各種EIT の処理
もEステージ35でマイクロプログラムにより行われる。
【0138】演算の結果をメモリにストアする必要があ
る場合は、Eステージ35はSステージ36へWコード47a,
47bとストア処理を行う命令のプログラムカウンタ値と
の両方を出力する。
【0139】(4.2.7) 「オペランドストアステージ」オ
ペランドストアステージ (Sステージ)36 はWコードの
論理アドレス47a をデータTLB で物理アドレスに変換
し、そのアドレスでWコードのデータ47b を内蔵データ
キャッシュにストアする。同時にWコード47a, 47bとプ
ログラムカウンタ値とをストアバッファに入力し、デー
タTLB から出力された物理アドレスを用いて外部のメモ
リへWコードのデータ47b をストアする処理が行われ
る。
【0140】Sステージ36の動作はオペランドアクセス
部120 で行われ、データTLB または内蔵データキャッシ
ュがミスした場合のアドレス変換処理及び内蔵データキ
ャッシュの入替え処理も行う。
【0141】オペランドのストア処理でEIT が検出され
た場合は、ストアバッファにWコード47a, 47bとプログ
ラムカウンタ値とが保持されたままの状態で、Eステー
ジ35にEIT の検出が通知される。
【0142】(4.3) 「各パイプラインステージの状態制
御」パイプラインの各ステージは入力ラッチと出力ラッ
チとを有し、基本的には他のステージとは独立に動作す
る。各ステージは1つ前に行った処理が終了し、その処
理結果を出力ラッチから次のステージの入力ラッチへ転
送し、自ステージの入力ラッチに次の処理に必要な入力
信号が全て揃えば次の処理を開始する。
【0143】つまり、各ステージは、1つ前段のステー
ジから出力されてくる次の処理に対する入力信号が全て
有効となり、現在の処理結果を後段のステージの入力ラ
ッチへ転送して出力ラッチが空になった場合に次の処理
を開始する。各ステージが動作を開始する直前のタイミ
ングで入力信号が全て揃っている必要がある。入力信号
が揃っていない場合には、そのステージは待ち状態 (入
力待ち) になる。出力ラッチから次のステージの入力ラ
ッチへの転送が行われる場合には次のステージの入力ラ
ッチが空き状態になっている必要があり、次のステージ
の入力ラッチが空き状態でない場合もパイプラインステ
ージは待ち状態 (出力待ち) になる。また、キャッシ
ュ,TLBがミスしたり、パイプラインで処理中の命令相互
間にデータ干渉が生じたような場合には、1つのステー
ジの処理に複数クロックが必要となり、パイプライン処
理が遅延する。
【0144】(5) 高機能命令の詳細動作 本発明のデータ処理装置100 では、多数のオペランドを
レジスタとメモリとの間で転送する LDM(Load Multi)命
令, STM(Store Multi)命令、高級言語でのサブルーチン
の出入り口で使用する ENTER命令, EXITD命令のなどの
高機能命令を高速実行する機能を有する。
【0145】これらの高機能命令は命令デコード部112
で複数の処理単位に分解してパイプライン上に展開され
る。ここではこれら4つの命令を例に本発明のデータ処
理装置100 が高機能命令を高速実行する機構を説明す
る。
【0146】(5.1) 「命令デコード部の詳細構成」 図1は本発明のデータ処理装置100 の命令デコード部11
2 の詳細な構成を示すブロック図である。
【0147】LDM命令, STM命令, ENTER命令及び EXIT
D命令では図1に示すDステージデコード部22の出力に
従ってビット数計数回路23がレジスタリスト中のセット
されたビットの数を計数する。この際、 ENTER命令と E
XITD命令とではレジスタR14とレジスタR15 とに対応す
るビットはマスクされ、ビット数計数回路23への入力時
にリセットされる。
【0148】図33はビット数計数回路23の詳細な構成図
を示すブロック図である。入力された16ビットのレジス
タリストは必要があればマスク回路27で下位2ビットま
たは上位2ビットがマスクされ、計数回路28に入力され
る。マスク回路27の出力はプライオリティエンコード部
25へも送られる。計数回路28はWALLACE TREEとリップル
キャリー加算器とで16ビットのビット列からセットされ
ているビットの数を計算して出力ラッチ29に5ビットの
計算結果を出力する。出力ラッチ29の内容は転送オペラ
ンド数カウンタ26へ送られる。
【0149】(5.2) 「プライオリティエンコード部の詳
細構成」プライオリティエンコード部25はビット列から
先頭の"1" または"0" の位置をサーチしたり、連続した
2ビットが"1" または"0" であるフィールドの先頭の位
置をサーチする。図2はこのプライオリティエンコード
部25の詳細な構成を示すブロック図である。
【0150】プライオリティエンコード部25はビット列
生成回路1,オフセット値指定回路2,2つのプライオ
リティエンコード回路3及び4,エンコード結果判定回
路7等にて構成されている。
【0151】ビット列生成回路1はビット数計数回路23
から入力された16ビットのビット列を保持する機能, ビ
ット順序を逆転する機能, 隣接ビット間の論理積をとる
機能を有し、これらの各機能による加工されたビット列
をE1, E2として第1エンコード回路3及び第2エンコー
ド回路4へ出力する。
【0152】図32はビット列生成回路1の詳細な構成を
示すブロック図である。
【0153】入力ラッチ11にはビット数計数回路23から
マスクされたレジスタリストが入力されており、その出
力は必要に応じてビット正順逆順指定回路12でビット順
序が逆転されて第1エンコード回路3に入力される。ビ
ット正順逆順指定回路12の出力はまた、論理積回路13に
より各ビットについてそれぞれの上位側に隣接するビッ
トとの論理積がとられて第2エンコード回路4に入力さ
れる。
【0154】オフセット値指定回路2はエンコード結果
判定回路7から出力されるオフセット値を入力し、その
値に"1" または"2" を加算して第1エンコード回路3及
び第2エンコード回路4へ出力する。
【0155】第1エンコード回路3と第2エンコード回
路4とは同一に回路構成されたプライオリティエンコー
ド回路であり、ビット列生成回路1から入力されたビッ
ト列を対象としてオフセット指定回路2で指定されたビ
ット位置以降でサーチして最初の"1" のビット位置を出
力する組合せ論理回路である。
【0156】エンコード結果判定回路7は第1エンコー
ド回路3と第2エンコード回路4とから出力されるエン
コード値とオペランドアドレス計算部115 から転送され
たオペランドアドレスの下位3ビットとを入力とし、オ
フセット値指定回路2へエンコード結果と加算すべき値
とを出力し、整数演算部117 へレジスタ番号と2つのレ
ジスタを同時アクセスすべきか否かを示す並列アクセス
信号8とを出力する他、第1エンコード回路3の出力
を"1" と"0" とを反転した値をレジスタ番地指定回路21
8 へ出力することもできる。
【0157】なお、エンコード結果判定回路7と転送オ
ペランド数カウンタ26との間には制御信号の送受が行わ
れる。
【0158】並列アクセス信号8はオペランドアドレス
計算部115 から転送されるオペランドアドレスの下位3
ビットがすべて"0" で且つ第1エンコード回路3と第2
エンコード回路4とのエンコード結果が同じ値である場
合にアサートされる。
【0159】(5.3) 「オペランドアドレス計算部と整数
演算部の詳細構成」図3に本発明のデータ処理装置100
の整数演算部117 とオペランドアドレス計算部115 の詳
細ブロック図を他の部分とともに示す。
【0160】オペランドアドレス計算部115 には3入力
のアドレス加算器217 、その出力ラッチ219 、SAレジス
タ210、dispバスの入力ラッチ235 がある。アドレス加
算器217 ではIXバスで転送される値と命令デコード部11
2 から転送されたdispバスの入力ラッチ235 の値を加算
して出力ラッチ219 で加算結果を保持する。SAレジスタ
210 はオペランドアドレス計算部115 から整数演算部11
7 へ出力されるオペランドアドレス, 即値を保持するレ
ジスタである。
【0161】整数演算部117 には各種の演算器及びレジ
スタファイル、各種の作業用レジスタが備えられてい
る。AAレジスタ211 は整数演算部117 からオペランドア
クセス部120 にアドレスを出力するためのレジスタであ
り、保持内容に対する"1","2","4","8" のインクリメン
ト・デクリメント機能を有する。JAレジスタ214 は整数
演算部117 で得られたジャンプ命令のジャンプ先アドレ
スをJAバスに出力するためのレジスタである。
【0162】レジスタファイル213 は整数演算部117 内
の各種のデータを保持し、主ALU215と副ALU212とにそれ
ぞれ3本の4バイトのバスで結合されており、2つのレ
ジスタ上のオペランドに関する加算, 比較などの演算が
主ALU215または副ALU212で行える。
【0163】DDレジスタ213 は整数演算部117 とオペラ
ンドアクセス部120 とがデータを入出力するためのイン
タフェイスレジスタであり、8バイトのDDバス123 でオ
ペランドアクセス部120 と結合されている。
【0164】レジスタ番地指定回路218 は第1マイクロ
ROM 部113 の指示に従い、第1マイクロROM 部113 で指
定されたレジスタ番地及び命令デコード部112 のプライ
オリティエンコード部25で指定されたレジスタ番地に従
ってレジスタファイル213 の読書きを制御する。
【0165】ASP231, FSP232, ESP233はパイプラインス
テージに対応した作業用スタックポインタである。ASP2
31にはIXバスで転送された値との加算機能、及び"1","
2","4","8" のインクリメント・デクリメント機能を有
する加算器234 が付属している。また、ESP233は"1","
2","4","8" のインクリメント・ディクリメント機能を
有する。
【0166】(5.4) 「レジスタ番地指定回路の詳細構
成」図8はレジスタ番地指定回路218 の詳細な構成を示
すブロック図である。
【0167】レジスタ番地指定回路218 は、第1マイク
ロROM部113 で指定されたレジスタ番地またはプライオ
リティエンコード部25で指定されたレジスタ番号をデコ
ード回路10a, 10b, 10c, 10dでデコードし、S1バス221,
S2バス222, D1バス225,D3バス226 に対するレジスタ
ファイル213 の入出力を制御する。
【0168】第1マイクロROM 部113 で各バス毎に指定
されたレジスタ番地とプライオリティエンコード部25で
指定されたレジスタ番号とはセレクタ17, 18, 19, 20に
よりいずれかが選択されてそれぞれのバス用のデコード
回路10a, 10b, 10c, 10dに入力される。
【0169】本発明のデータ処理装置100 では、転送命
令あるいは加算命令等の単純な命令では第1マイクロRO
M 部113 から出力されたレジスタ番地に従って各バスに
データを入出力するレジスタを制御するため、レジスタ
番地が各バス毎のデコード回路10a, 10b, 10c, 10dでデ
コードされ、その出力信号に従ってレジスタファイル21
6 をアクセスするが、一部の高機能命令ではデコード回
路10a, 10b, 10c, 10dから出力された制御信号をシフト
することにより、レジスタファイル213 をアクセスす
る。
【0170】S2バス222 とD3バス226 とは高機能命令の
実行に際して2つのレジスタを並列アクセスする場合
に、プライオリティエンコード部25により指定されたレ
ジスタ番号より1つ大きなレジスタ番号のレジスタをア
クセスするためにデコード結果を1ビット上位側へシフ
トしてレジスタファイル213 へ出力する。この機能はデ
コーダ10b と10d とがデコード結果のビット列を出力す
る制御信号線群とそのビット列を1ビット上位側にシフ
トしたビット列を出力する制御信号線群とのいずれかを
セレクタ15, 16でそれぞれ選択することにより実現され
る。
【0171】またS1バス221 は高機能命令の実行に際し
て2つのレジスタを並列アクセスする場合、プライオリ
ティエンコード部25により指定されたレジスタ番号より
1つ小さなレジスタ番号のレジスタをアクセスするため
にデコーダ10a のデコード結果を1ビット下位側へシフ
トしてレジスタファイル213 へ出力する。この機能はデ
コーダ10a がデコード結果のビット列を出力する制御信
号線群とそのビット列を1ビット下位側にシフトしたビ
ット列を出力する制御信号線群とのいずれかをセレクタ
14で選択することにより実現される。
【0172】(5.5) 「 LDM命令の動作」図34は本発明の
データ処理装置の LDM命令のオペレーションコードの一
例を示す模式図である。この命令は6個の汎用レジスタ
R1, R4, R5, R6, R7, R8にスタック領域から6個の4バ
イトデータをロードする命令である。本発明のデータ処
理装置100 でこの命令を実行する場合、Dステージ32と
Aステージ33とでは図36, 図37, 図38及び図39にて示さ
れているフローチャートに示すアルゴリズムに従ってこ
の LDM命令を4個の処理単位に分解する。分解された各
処理単位はFステージ34とEステージ35とでパイプライ
ン処理される。それぞれの処理単位に対してEステージ
は図40及び図41にて示されているフローチャートに示す
アルゴリズムに従ってそれぞれ1つのマイクロ命令を実
行する。また、図42はこの LDM命令がパイプライン処理
される場合の処理タイミングを示す概念図である。図42
において、LDM1, LDM2, LDM3, LDM4はパイプライン処理
のためにそれぞれ LDM命令を分解した処理単位である。
【0173】なお、図34に示されている LDM命令のオペ
レーションコードは具体的には、第1の処理単位LDM1は
スタックから4バイトのデータをポップしてレジスタR1
にロードし、第2の処理単位LDM2はスタックから4バイ
トのデータをポップしてレジスタR4にロードし、第3の
処理単位LDM3はスタックから8バイトのデータをポップ
してレジスタR5とR6にロードし、第4の処理単位LDM4は
スタックから8バイトのデータをポップしてレジスタR7
とR8にロードして命令を終了する。
【0174】以下、図36, 図37, 図38及び図39にて示さ
れているフローチャート、図40及び図41にて示されてい
るフローチャートに従って具体的に説明する。LDM命令
はまずDステージ32でDステージデコード部22により前
段デコードされ、デコード結果はAステージデコード部
24へ出力される。同時に、ビット数計数回路23でレジス
タリスト"01001111 10000000" 中のセットされたビット
("1"のビット) の数が計数され、その結果"6" が転送オ
ペランド数カウンタ26へ与えられる。また、レジスタリ
スト"01001111 10000000" はプライオリティエンコード
部25へも転送される。 (ステップS1)。
【0175】Aステージ33では、Dステージデコード部
22の出力をAステージデコード部24で後段デコードする
と同時に、レジスタリスト"01001111 10000000" をプラ
イオリティエンコード部25のビット列生成回路1へ転送
してエンコードする。この際、オフセット値指定回路2
はゼロクリアされる。また、フェッチすべきオペランド
のアドレスはアドレス加算器217 で計算される。具体的
には、Dステージデコード部22のデコード結果に従って
ASP231からIXバスを通じてスタックポインタ値"H'00001
000"がアドレス加算器217へ転送され、アドレス加算器2
17 の他の2入力にはゼロが入力されることによりフェ
ッチすべきデータのアドレス"H'00001000"が得られる。
(ステップS2)。
【0176】なお、転送オペランド数カウンタ26は、転
送すべきオペランドの残り数を計算することにより、最
後の処理単位を検出する。この転送オペランド数カウン
タ26による検出結果はプライオリティエンコード部25の
エンコード結果判定回路7に与えられている。
【0177】またこの例では、フェッチすべきオペラン
ドのアドレッシングモードがスタックポップモードであ
るので、ASP231に保持されていたアドレスがそのまま出
力ラッチ219 へ転送される。
【0178】次に、入力されたレジスタリストのビット
列"01001111 10000000" が第1エンコード回路3へ転送
され、第1エンコード回路3はオフセット"0" から先頭
の"1" のビットをサーチし、その結果"1" をエンコード
結果判定回路7へ出力する。また第2エンコード回路4
がエンコードするビット列は、入力されたレジスタリス
トのビット列の隣接ビット間の論理積演算をビット列生
成回路1で行ってその結果であるビット列"00001111 00
000000" が第2エンコード回路4へ転送され、第2エン
コード回路4はビット列"00001111 00000000" をオフセ
ット"0" から先頭の"1" のビットをサーチし、その結
果"4" をエンコード結果判定回路7へ出力する。エンコ
ード結果判定回路7では、第1エンコード回路3から入
力された値"1" と第2エンコード回路4から入力された
値"4" とが一致しないと判断し、レジスタ番号"1" を出
力し、並列アクセス信号8をネゲートし、オフセット値
指定回路2へエンコード結果"1" と加算値"1" とを出力
する (ステップS3)。
【0179】エンコード結果判定回路7から出力された
レジスタ番号"1", ネゲートされた並列アクセス信号
8, 転送オペランド数カウンタ26のカウント値"6" 及び
フェッチ先アドレス"H'00001000"により、レジスタR1に
4バイトのデータがフェッチされ、処理を継続する第1
の処理単位LDM1がFステージ34へ出力される (ステップ
S4)。
【0180】Fステージ34では、 LDM命令の第1の処理
単位LDM1に従って、4バイトのデータが内蔵データキャ
ッシュまたは外部のメモリからフェッチされ、DDレジス
タ216 へ転送される。Eステージ35では、 LDM命令の第
1の処理単位LDM1に従ってレジスタ番地指定回路218 で
レジスタ番号"1" がデコードされ、DDレジスタ216 の下
位4バイトがS1バス221, 主ALU215, D1バス225 を通じ
てレジスタR1へ転送される (ステップS21)。
【0181】並列アクセス信号8がネゲートされたこと
に従って、ASP231の値が"4" インクリメントされ、その
値"H'00001004"がIXバスを通じてアドレス加算器217 へ
転送される。アドレス加算器217 の他の2入力にはゼロ
が入力されることによりフェッチすべきデータのアドレ
ス"H'00001004"が得られる。同時に、転送オペランド数
カウンタ26の値が"1" デクリメントされて"5" になる
(ステップS5)。
【0182】第1エンコード回路3はレジスタリストの
ビット列"01001111 10000000" のオフセット"2" から先
頭の"1" のビットをサーチし、その結果"4" をエンコー
ド結果判定回路7へ出力する。同時に、第2エンコード
回路4はビット列"0000111100000000" をオフセット"2"
から先頭の"1" のビットをサーチし、その結果"4"を
ンコード結果判定回路7へ出力する。エンコード結果判
定回路7では、第1エンコード回路3から入力された
値"4" と第2エンコード回路4から入力された値"4" と
が一致すること及び、オペランドアドレス計算部115 か
ら出力されたアドレスの下位3ビットがゼロでないこと
を判断し、レジスタ番号"4" を出力し、並列アクセス信
号8をネゲートし、オフセット値指定回路2へエンコー
ド結果"4" と加算値"1" とを出力する (ステップS6)。
【0183】エンコード結果判定回路7から出力された
レジスタ番号"4", ネゲートされた並列アクセス信号
8, 転送オペランド数カウンタ26のカウント値"5" 及び
フェッチ先アドレス"H'00001004"により、レジスタR4に
4バイトのデータがフェッチされ、処理を継続する第2
の処理単位LDM2がFステージ34へ出力される (ステップ
S7)。
【0184】Fステージ34では、 LDM命令の第2の処理
単位LDM2に従って、4バイトのデータが内蔵データキャ
ッシュまたは外部のメモリからフェッチされ、DDレジス
タ216 へ転送される。Eステージ35では、 LDM命令の第
2の処理単位LDM2に従ってレジスタ番地指定回路218 で
レジスタ番号"4" がデコードされ、DDレジスタ216 の下
位4バイトがS1バス221, 主ALU215, D1バス225 を通じ
てレジスタR4へ転送される (ステップS22)。
【0185】並列アクセス信号8がネゲートされたこと
に従って、ASP231の値が"4" インクリメントされ、その
値"H'00001008"がIXバスを通じてアドレス加算器217 へ
転送される。アドレス加算器217 の他の2入力にはゼロ
が入力されることによりフェッチすべきデータのアドレ
ス"H'00001008"が得られる。同時に、転送オペランド数
カウンタ26の値が"1" デクリメントされて"4" になる
(ステップS8)。
【0186】第1エンコード回路3はレジスタリストの
ビット列"01001111 10000000" のオフセット"5" から先
頭の"1" のビットをサーチし、その結果"5" をエンコー
ド結果判定回路7へ出力する。同時に、第2エンコード
回路4はビット列"0000111100000000" をオフセット"5"
から先頭の"1" のビットをサーチし、その結果"5"を
ンコード結果判定回路7へ出力する。エンコード結果判
定回路7では、第1エンコード回路3から入力された
値"5" と第2エンコード回路4から入力された値"5" と
が一致すること及び、オペランドアドレス計算部115 か
ら出力されたアドレスの下位3ビットがゼロであること
を判断し、レジスタ番号"5" を出力し、並列アクセス信
号8をアサートし、オフセット値指定回路2へエンコー
ド結果"5" と加算値"2" とを出力する (ステップS9)。
【0187】エンコード結果判定回路7から出力された
レジスタ番号"5", アサートされた並列アクセス信号
8, 転送オペランド数カウンタ26のカウント値"4", フ
ェッチ先アドレス"H'00001008"により、レジスタR5, R6
に2つの4バイトのデータがフェッチされ、処理を継続
する第3の処理単位LDM3がFステージ34へ出力される
(ステップS10)。
【0188】Fステージ34では、 LDM命令の第3の処理
単位LDM3に従って、8バイトのデータが内蔵データキャ
ッシュまたは外部のメモリからフェッチされ、DDレジス
タ216 へ転送される。
【0189】Eステージ35では、 LDM命令の第3の処理
単位LDM3に従ってレジスタ番地指定回路218 でレジスタ
番号"5" がデコードされ、DDレジスタ216 の下位4バイ
トがS1バス221, 主ALU215, D1バス225 を通じてレジス
タR5へ転送される。またEステージ35では、レジスタ番
号"5" をデコードした結果を1ビットシフトした制御信
号でレジスタR6がアクセスされ、DDレジスタ216 の上位
4バイトがS2バス222, 副ALU212, D3バス226 を通じて
レジスタR6へ転送される (ステップS23)。
【0190】並列アクセス信号8がアサートされたこと
に従って、ASP231の値が"8" インクリメントされ、その
値"H'00001010"がIXバスを通じてアドレス加算器217 へ
転送される。アドレス加算器217 の他の2入力にはゼロ
が入力されることによりフェッチすべきデータのアドレ
ス"H'00001010"が得られる。同時に、転送オペランド数
カウンタ26の値が"2" デクリメントされて"2" になる
(ステップS11)。
【0191】第1エンコード回路3はレジスタリストの
ビット列"01001111 10000000" のオフセット"7" から先
頭の"1" のビットをサーチし、その結果"7" をエンコー
ド結果判定回路7へ出力する。同時に、第2エンコード
回路4はビット列"0000111100000000" をオフセット"7"
から先頭の"1" のビットをサーチし、その結果"7"を
ンコード結果判定回路7へ出力する。エンコード結果判
定回路7では、第1エンコード回路3から入力された
値"7" と第2エンコード回路4から入力された値"7" と
が一致すること及び、オペランドアドレス計算部115 か
ら出力されたアドレスの下位3ビットがゼロであること
を判断し、レジスタ番号"7" を出力し、並列アクセス信
号8をアサートし、オフセット値指定回路2へエンコー
ド結果"7" と加算値"2" とを出力する (ステップS12)。
【0192】エンコード結果判定回路7から出力された
レジスタ番号"7", アサートされた並列アクセス信号
8, 転送オペランド数カウンタ26のカウント値"2", フ
ェッチ先アドレス"H'00001010"により、レジスタR7, R8
に2つの4バイトのデータがフェッチされ、処理を継続
する第4の処理単位LDM4がFステージ34へ出力される
(ステップS13)。
【0193】Fステージ34では、 LDM命令の第4の処理
単位LDM4に従って、8バイトのデータが内蔵データキャ
ッシュまたは外部のメモリからフェッチされ、DDレジス
タ216 へ転送される。Eステージ35では、 LDM命令の第
4の処理単位LDM4に従ってレジスタ番地指定回路218 で
レジスタ番号"7" がデコードされ、DDレジスタ216 の下
位4バイトがS1バス221, 主ALU215, D1バス225 を通じ
てレジスタR7へ転送される。またEステージ35では、レ
ジスタ番号"7" をデコードした結果を1ビットシフトし
た制御信号でレジスタR8がアクセスされ、DDレジスタ21
6 の上位4バイトがS2バス222, 副ALU212, D3バス226
を通じてレジスタR8へ転送され、 LDM命令の処理を終了
する (ステップS24)。
【0194】上述のように第1エンコード回路3及び第
2エンコード回路4によりビット列をサーチすると、レ
ジスタ番号"4, 5, 7" で双方のサーチ結果が一致する
が、レジスタ番号"4" の場合はオペランドアドレスの計
算結果の下位3ビットが"0" ではないため、レジスタR1
とR4とには1回の操作で4バイトずつデータがロードさ
れ、レジスタR5とR6, R7とR8にはそれぞれ並列にデータ
がロードされることとなる。
【0195】レジスタR5とR6, R7とR8を同時にアクセス
する場合、エンコード結果判定回路7から出力される並
列アクセス信号8がアサートされる。この並列アクセス
信号8に従って、デコード結果のビット列を1ビット上
位側へシフトしたビット列が転送される制御線をセレク
タ16が選択することにより、エンコード結果判定回路7
から出力されたレジスタ番号より1つ大きな番号のレジ
スタに値がロードされる。
【0196】(5.6) 「 STM命令の動作」 デスティネーションのアドレッシングモードが@-SPモー
ド以外の STM命令を実行する場合、 LDM命令と同じフォ
ーマットのレジスタリストを処理するため、ビット数計
数回路23, プライオリティエンコード部25及び転送オペ
ランド数カウンタ26の動作は LDM命令の場合と同様であ
る。また、レジスタ番地指定回路218 ではS2バス222 へ
出力するレジスタ番地として、入力されたレジスタ番地
よりも1つ大きな番地のレジスタをアクセスするため、
デコード結果のビット列を1ビット上位側へシフトした
ビット列が転送される制御線をセレクタ15が選択する。
【0197】デスティネーションのアドレッシングモー
ドが@-SPモードである STM命令を実行する場合、 LDM命
令と異なるフォーマットレジスタリストを処理するの
で、プライオリティエンコード部25の動作が一部異な
る。この場合、エンコード結果判定回路7からオフセッ
ト値指定回路2へは第1エンコード回路3から出力され
た値がそのまま転送されるが、レジスタ番地指定回路21
8 へは第1エンコード回路3から出力された値の"0"
と"1" とを反転した値が出力される。つまり、オフセッ
ト値指定回路2にはサーチしてエンコードしたビット番
号そのものが転送されるが、レジスタ番地指定回路218
へはサーチしてエンコードしたビット番号に対応するレ
ジスタ番号が出力されることになる。
【0198】またこの場合、レジスタ番地指定回路218
では、並列アクセス信号8がアサートされると、S2バス
222 へは入力されたレジスタ番地のレジスタから値が出
力され、S1バス221 へは入力されたレジスタ番地より1
つレジスタ番地が小さいレジスタから値が出力される。
この機能はデコード結果のビット列を1ビット下位側へ
シフトしたビット列を転送する制御線をセレクタ14が選
択することにより行われる。
【0199】たとえば、図35にオペレーションコードを
示した STM命令の例では、第1エンコード回路3のサー
チ対象となるビット列は"00000001 11110010" であり、
第2エンコード回路4のサーチ対象となるビット列は"0
0000001 11100000" である。最初のエンコード動作で
は、エンコード結果判定回路7へは第1エンコード回路
3と第2エンコード回路4とからは共に値"7" が入力さ
れ、オペランドアドレス計算部115 からはASP231でプリ
デクリメントされたアドレス"H'00001FF8"の下位3ビッ
トの"0" が転送される。エンコード結果判定回路7はこ
れらの入力に基づいてオフセット指定回路へは値"7" と
加算値"2" とを出力し、レジスタ番地指定回路218 へ
は"7" を2進数表現した値"0111"の反転値である"1000"
に対応するレジスタ番号"8" を出力し、並列アクセス信
号8をアサートする。
【0200】レジスタ番地指定回路218 では、入力され
たレジスタ番号"8" をデコードし、S2バス222 へはレジ
スタR8からデータを読出し、S1バス221 へはデコード結
果を1ビット下位側へシフトしたビット列を転送する制
御線をセレクタ14で選択することによりレジスタR7から
データを読出す。S1バス221 とS2バス222 とへ読出され
た2つのデータはDDレジスタ216 で連結され、1つの8
バイトデータとしてDDバス123 を通じてオペランドアク
セス部120 へ転送され、内蔵データキャッシュあるいは
外部メモリにストアされる。
【0201】(5.7) 「 ENTER命令の動作」ENTER命令の
処理は図30に示す如く、 STM命令の処理にフレームポイ
ンタレジスタR14 のスタックへのプッシュとスタックポ
インタレジスタR15 のフレームポインタへの転送, ロー
カル変数領域確保のためのスタックポインタの減算を組
み合わせた処理である。
【0202】ENTER命令では、命令デコード部112 で命
令を複数の処理単位に分解する際に、 STM命令と同様に
レジスタリストに対応するレジスタの内容をスタックへ
転送する処理単位を出力する前にEステージ35とAステ
ージ33とで以下の動作をする2つの処理単位を出力す
る。
【0203】最初の処理単位に対してEステージ35で
は、フレームポインタを作業用レジスタに転送すると同
時にスタックにプッシュする。スタックポインタをフレ
ームポインタに転送する。最初の処理単位に対してAス
テージ33では、dispバスで転送された lsize値を入力ラ
ッチ235 に入力する。ASP234をIXバスで転送する。アド
レス加算器217 で転送されたASP234の値から"4" をデク
リメントして出力ラッチ219 に保持する。ASP234自体
を"4" デクリメントする。第2の処理単位に対してAス
テージ33では、入力ラッチ235 の値である lsize値をIX
バスを通じて加算器234 へ転送してASP231から減算す
る。出力ラッチ219 の値から入力ラッチ235 のlsize値
を減算してその値をレジスタ内容を転送するメモリのア
ドレスとする。命令で指定されたレジスタリストの最初
の2ビット(レジスタR14 とR15 とに対応するビット)
をマスク回路27でリセットする。
【0204】第2の処理単位に対するEステージ35での
処理は STM命令の最初の処理単位と同様に、レジスタリ
ストで指定された最初のレジスタのストア処理である。
なお、最初の処理単位でフレームポインタ値を作業用レ
ジスタに退避するのは ENTER命令の実行途中でエラーが
発生した際に、全レジスタのレジスタ内容を ENTER命令
実行前の状態に復帰するためのものである。
【0205】(5.8) 「 EXITD命令の動作」EXITD命令の
処理は図31に示す如く、 LDM命令の処理にフレームポイ
ンタレジスタR14 のスタックからのポップとスタックポ
インタレジスタR15 へのフレームポインタの転送とサブ
ルーチンリターンとスタックポインタのadjsp での補正
とを組み合わせた処理である。
【0206】EXITD命令では、命令デコード部112 で命
令を複数の処理単位に分解する際に、 LDM命令と同様に
レジスタリストに対応するレジスタの内容を転送する処
理単位の後に以下の処理を行う2つの処理単位を追加す
る。
【0207】1つ目の処理単位に対してAステージ33で
は、 adjsp値をdispバスを通じて入力ラッチ235 に転送
する。1つ目の処理単位に対してEステージ35では、フ
レームポインタをスタックポインタに転送する。スタッ
クからフレームポインタ値をポップする。2つ目の処理
単位に対してAステージ33では、入力ラッチ235 の内容
であるadjsp 値をIXバスで加算器234 に転送してASP231
に加算する。2つ目の処理単位に対してEステージ35で
はサブルーチンリタン動作を行う。また、 EXITD命令で
は命令で指定されたレジスタリストの最後の2ビット
(レジスタR14 とR15 とに対応するビット)をマスク回
路27でリセットする点も LDM命令と異なる。
【0208】(6)「外部アクセス動作」(6.1) 「入出力
信号線」図7は本発明のデータ処理装置100 の入出力信
号を示す模式図である。
【0209】本発明のデータ処理装置100 は電源Vccと
接地GND, 64本のデータピンと32本のアドレスピンと32
本の命令ピン, 入力クロックCLK の他に種々の制御信号
を入出力する。命令アクセスの場合もデータアクセスの
場合も、アドレスピンには物理アドレスが出力される。
【0210】CLKは外部入力クロックであり、本発明の
データ処理装置100 の動作クロックと同一周波数のクロ
ックである。データアドレスストローブDAS#はアドレス
ピンへ出力されたデータアドレスが有効であることを示
す。
【0211】リードライトR/W#はデータピンでのバスサ
イクルが入力であるか出力であるかを区別する。データ
ストローブDS# は、本発明のデータ処理装置100 がデー
タ入力準備を完了したことまたは本発明のデータ処理装
置100 からデータが出力されたことを示す。
【0212】DC#は本発明のデータ処理装置100 にデー
タアクセスサイクルを終了してもよいことを通知する信
号である。BAT(0:2)は、アドレスピンとデータピンとの
値の意味を示す。
【0213】命令アドレスストローブIAS#はアドレスピ
ンへ出力された命令アドレスが有効であることを示す。
命令ストローブIS# は本発明のデータ処理装置100 が命
令入力準備を完了したことを示す。
【0214】IC#は本発明のデータ処理装置100 に命令
アクセスサイクルを終了してもよいことを通知する信号
である。ホールドリクエストHREQ# は本発明のデータ処
理装置100 にバス権を要求する信号である。
【0215】HACK#は本発明のデータ処理装置100 がHRE
Q# を受付けてバス権を他のデバイスに渡したことを示
す信号である。IRL(0:2) は外部割込み要求信号であ
る。IACK#は本発明のデータ処理装置100 が外部割込み
を受付け、割込みベクトルアクセスサイクルを行ってい
ることを示す信号である。
【0216】(6.2) 「外部デバイスのアクセス」本発明
のデータ処理装置100 を用いた図6に示すシステム構成
例では、本発明のデータ処理装置100 とデータキャッシ
ュ107, 108とはデータピンに接続されているデータバス
102, アドレスピンに接続されているアドレスバス101
の他、 BAT(0:2), DAS#, R/W#, DS#, DC# とでも接続さ
れている。本発明のデータ処理装置100 と命令キャッシ
ュ106 とは命令ピンに接続されている命令バス103, ア
ドレスバス101 の他、BAT(0:2), IAS#, IS#, IC#とでも
接続されている。
【0217】なお、クロックCLK はシステム全体に供給
されていてシステムの基本タイミングを決定する。
【0218】本発明のデータ処理装置100 は、標準アク
セスモードでのバスアクセスではデータバス102 を用い
たデータアクセスと命令バス103 を用いた命令アクセス
とを、それぞれ十分高速な外部メモリに対して外部入力
クロックCLK の2サイクルに1度の割合で行える。
【0219】また本発明のデータ処理装置100 は、クワ
ッドアクセスモードでのバスアクセスではデータバス10
2 を用いたデータアクセスと命令バス103 を用いた命令
アクセスとを、それぞれ十分高速な外部のメモリに対し
て外部入力クロックCLK の5サイクルに4度の割合で行
える。
【0220】アドレスバス101 はデータキャッシュ107,
108のアクセスと命令キャッシュ106 のアクセスとの両
方に利用される。
【0221】(7) 「本発明の他の実施例」上記実施例で
は命令コード中にレジスタリストにより転送すべきオペ
ランドの数と各オペランドが格納されるレジスタ位置を
示す LDM命令, STM命令, ENTER命令, EXITD命令の4
つの命令についての例を説明したが、転送すべき複数の
オペランドが連続したレジスタ番号のレジスタに格納さ
れる場合のみを対象として転送すべきオペランドが格納
されるレジスタの最初のレジスタ番号と最後のレジスタ
番号とにより転送内容を命令コード中に示す複数データ
転送命令についても同様に命令デコード部で複数データ
転送命令を複数の処理単位に分解してデコードして処理
することが可能である。この場合にはプライオリティエ
ンコーダは不要である。
【0222】また、命令コード中で転送すべきオペラン
ドが格納されるレジスタの最初のレジスタ番号と転送オ
ペランド数とが示されている複数データ転送命令につい
ても同様に処理可能である。
【0223】更に、キャラクタストリングの転送を行う
命令あるいはキャラクタストリングの比較を行う命令は
メモリ領域に存在する複数のデータを処理する命令であ
って処理する各データ間に依存関係がないため、命令デ
コード部で同様に複数の処理単位に分解してデコードし
て処理することが可能である。
【0224】
【発明の効果】以上に上述した如く本発明のデータ処理
装置の第1の発明によれば、レジスタ指定フィールドに
おけるそれぞれ第1および第3のビットが同じ所定値を
示す場合、エンコード部が第1の期間に第1のエンコー
ド値を生成し出力し、それに続く第2の期間にエンコー
ド値を生成し出力し、命令実行部が第1のエンコード値
に従ってエンコード部の第2のエンコード値を生成し出
力することと並列して第2の期間に第1のレジスタへデ
ータを転送する処理を行い、第2のエンコード値に従っ
て第2の期間に続く第3の期間に第3のレジスタへデー
タを転送する処理を行うので、エンコード値を生成する
エンコード部とデータ転送の処理をする命令実行部との
間でのパイプライン処理が行われるため高効率で上述の
ような複数のデータをメモリからレジスタへロードする
命令を実行することが可能になる。しかも、レジスタ指
定フィールドにおける互いに隣接するビットが同じ所定
値を示している場合には、パイプライン処理における第
1のレジスタへのデータ転送を行う実行ステージに対応
する第2の期間に第2のレジスタへもデータを転送して
いるので、複数データロード命令の実行においてスルー
プットが良くなり、さらに、判定回路は互いに隣接する
ビットが同じ所定値を示しているか否かを判定し、その
判定信号であるアクセス信号に応答して第2のレジスタ
がアクセスされるので、エンコード部と命令実行部との
間のパイプライン処理における1つの実行ステージで2
つのレジスタへデータ転送させてもエンコード部は第2
のレジスタを特定するエンコード値を生成すれ必要がな
いため、パイプライン処理の流れを乱すこともなく、複
数のデータロード命令を効率的な処理を保証することが
できる。また本発明のデータ処理装置の第2の発明によ
れば、レジスタ指定フィールドにおけるそれぞれ第1お
よび第3のビットが同じ所定値を示す場合、エンコード
部が第1の期間に第1のエンコード値を生成し出力し、
それに続く第2の期間にエンコード値を生成し出力し、
命令実行部が第1のエンコード値に従ってエンコード部
の第2のエンコード値を生成し出力することと並列して
第2の期間に第1のレジスタからデータを転送する処理
を行い、第2のエンコード値に従って第2 の期間に続く
第3の期間に第3のレジスタからデータを転送する処理
を行うので、エンコード値を生成するエンコード部とデ
ータ転送の処理をする命令実行部とのいわゆるパイプラ
イン処理を行うため高効率で上述したような複数のデー
タをレジスタからメモリへストアする命令を実行するこ
とが可能になる。しかも、レジスタ指定フィールドにお
ける互いに隣接するビットが同じ所定値を示している場
合には、パイプライン処理における第1のレジスタから
のデータ転送を行う実行ステージに対応する第2の期間
に第2のレジスタからもデータを転送しているので、複
数データストア命令の実行においてスループットが良く
なり、さらに判定回路は互いに隣接するビットが同じ所
定値を示しているか否かを判定し、その判定信号である
アクセス信号に応答して第2のレジスタがアクセスされ
るので、エンコード部と命令実行部との間のパイプライ
ン処理における1つの実行ステージで2つのレジスタか
らデータ転送させてもエンコード部は第2のレジスタを
特定するエンコード値を生成すればよいため、パイプラ
イン処理の流れを乱すことがなく、複数のデータストア
命令を効率的な処理を保証することができる。
【図面の簡単な説明】
【図1】本発明のデータ処理装置の命令デコード部の詳
細な構成を示すブロック図である。
【図2】本発明のデータ処理装置のプライオリティエン
コード部の詳細な構成を示すブロック図である。
【図3】本発明のデータ処理装置のオペランドアドレス
計算部及び整数演算部の詳細な構成を示すブロック図で
ある。
【図4】本発明のデータ処理装置の全体構成を示すブロ
ック図である。
【図5】本発明のデータ処理装置のパイプライン処理機
構の各ステージを説明するための模式図である。
【図6】本発明のデータ処理装置を用いたデータ処理シ
ステムの構成例を示すブロック図である。
【図7】本発明のデータ処理装置の入出力信号及びその
ための各ピンを示す模式図である。
【図8】本発明のデータ処理装置のレジスタ番地指定回
路の詳細な構成を示すブロック図である。
【図9】本発明のデータ処理装置の命令のフォーマット
を示す模式図である。
【図10】本発明のデータ処理装置の2オペランド命令
の短縮形フォーマットを示す模式図である。
【図11】本発明のデータ処理装置の1オペランド命令
の一般形フォーマット(G1-format) を示す模式図であ
る。
【図12】本発明のデータ処理装置の2オペランド命令
の一般形フォーマットを示す模式図である。
【図13】本発明のデータ処理装置のショートブランチ
命令のフォーマットを示す模式図である。
【図14】本発明のデータ処理装置の命令中のアドレッ
シングモード指定部のフォーマットを示す模式図であ
る。
【図15】本発明のデータ処理装置のレジスタ間接モー
ドのフォーマットの模式図である。
【図16】本発明のデータ処理装置のレジスタ相対間接
モードのフォーマットの模式図である。
【図17】本発明のデータ処理装置の即値モードのフォ
ーマットの模式図である。
【図18】本発明のデータ処理装置の絶対モードのフォ
ーマットの模式図である。
【図19】本発明のデータ処理装置のPC相対間接モード
のフォーマットの模式図である。
【図20】本発明のデータ処理装置のスタックポップモ
ードのフォーマットの模式図である。
【図21】本発明のデータ処理装置のスタックプッシュ
モードのフォーマットの模式図である。
【図22】本発明のデータ処理装置のレジスタベース多
段間接モードのフォーマットの模式図である。
【図23】本発明のデータ処理装置のPCベース多段間接
モードのフォーマットの模式図である。
【図24】本発明のデータ処理装置の絶対ベース多段間
接モードのフォーマットの模式図である。
【図25】本発明のデータ処理装置の多段間接モードの
フォーマットの模式図である。
【図26】本発明のデータ処理装置の多段間接アドレッ
シングモードによる命令フォーマットの多段間接モード
が継続するか終了するかのバリエーションを示す模式図
である。
【図27】本発明のデータ処理装置の多段間接アドレッ
シングモードによる命令フォーマットのディスプレース
メントのサイズのバリエーションを示す模式図である。
【図28】本発明のデータ処理装置の複数データロード
命令である LDM命令のフォーマットを示す模式図であ
る。
【図29】本発明のデータ処理装置の複数データストア
命令である STM命令のフォーマットを示す模式図であ
る。
【図30】本発明のデータ処理装置の ENTER命令のフォ
ーマットを示す模式図である。
【図31】本発明のデータ処理装置の EXITD命令のフォ
ーマットを示す模式図である。
【図32】本発明のデータ処理装置のプライオリティエ
ンコード部のビット列生成回路の詳細な構成を示すブロ
ック図である。
【図33】本発明のデータ処理装置のビット数計数回路
の詳細な構成を示すブロック図である。
【図34】本発明のデータ処理装置の複数データロード
命令である LDM命令の具体的オペレーションコードの例
を示す模式図である。
【図35】本発明のデータ処理装置の複数データストア
命令である STM命令の具体的オペレーションコードの例
を示す模式図である。
【図36】本発明のデータ処理装置の LDM命令の具体例
を命令デコード部でデコードする際に、パイプライン処
理単位を出力する処理のアルゴリズムを示すフローチャ
ートの第1の部分である。
【図37】本発明のデータ処理装置の LDM命令の具体例
を命令デコード部でデコードする際に、パイプライン処
理単位を出力する処理のアルゴリズムを示すフローチャ
ートの第2の部分である。
【図38】本発明のデータ処理装置の LDM命令の具体例
を命令デコード部でデコードする際に、パイプライン処
理単位を出力する処理のアルゴリズムを示すフローチャ
ートの第3の部分である。
【図39】本発明のデータ処理装置の LDM命令の具体例
を命令デコード部でデコードする際に、パイプライン処
理単位を出力する処理のアルゴリズムを示すフローチャ
ートの第4の部分である。
【図40】本発明のデータ処理装置の LDM命令の具体例
を実行する際に、命令実行部での処理のアルゴリズムを
示すフローチャートの前半部である。
【図41】本発明のデータ処理装置の LDM命令の具体例
を実行する際に、命令実行部での処理のアルゴリズムを
示すフローチャートの後半部である。
【図42】本発明のデータ処理装置の LDM命令の具体例
を実行する際のパイプライン処理のタイミングを示すタ
イムチャートである。
【符号の説明】
32 命令デコードステージ 35 命令実行ステージ 112 命令デコード部 113 第1マイクロROM 部 114 第2マイクロROM 部 120 オペランドアクセス部 213 レジスタファイル
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.6,DB名) G06F 9/30 G06F 9/38

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 メモリから複数のレジスタの各々へデー
    タを転送する処理を指定するオペレーション指定フィー
    ルドと、それぞれ異なるレジスタに対応付けられた複数
    のビットからなるビット列で構成され、データの転送先
    のレジスタを指定するためのレジスタ指定フィールドと
    を含んだ複数データロード命令を実行するデータ処理装
    置であって、 前記複数データロード命令のオペレーション指定フィー
    ルドをデコードして制御信号を生成し出力するデコード
    部、 前記複数データロード命令のレジスタ指定フィールドを
    入力し、このレジスタ指定フィールドにおける第1のレ
    ジスタに対応した第1のビットが所定値を示した場合に
    は第1の期間に前記第1のレジスタを特定する第1のエ
    ンコード値を生成し出力するエンコード部、 前記レジスタ指定フィールドにおける前記第1のビット
    に隣接する第2のレジスタに対応した第2のビットが前
    記所定値を示していることを判定しその判定結果である
    アクセス信号を出力する判定回路、および、 前記デコード部から出力される制御信号により制御さ
    れ、前記エンコード部から出力される第1のエンコード
    値に従って、前記第1の期間に続く第2の期間に前記メ
    モリから前記第1のレジスタへデータを転送する処理を
    行い、前記判定回路が出力されるアクセス信号がアサー
    トされたことに応答して、前記第2のレジスタがアクセ
    スされ前記第2の期間に前記メモリから前記第2のレジ
    スタへデータを転送する処理を行う命令実行部 を備え、前記エンコード部は、前記レジスタ指定フィールドにお
    ける第3のレジスタに対応した第3のビットが前記所定
    値を示した場合には前記命令実行部が第1のレジスタへ
    データを転送する処理を行うことと並列して前記第2の
    期間に前記第3のレジスタを特定する第2のエンコード
    値を生成し出力し、 前記命令実行部は、前記エンコード部から出力される第
    2のエンコード値に従って前記第2の期間に続く第3の
    期間に前記メモリから前記第3のレジスタへデータを転
    送する処理を行う、 データ処理装置。
  2. 【請求項2】 複数のレジスタの各々からメモリへデー
    タを転送する処理を 指定するオペレーション指定フィー
    ルドと、それぞれ異なるレジスタに対応付けられた複数
    のビットからなるビット列で構成され、データの転送元
    のレジスタを指定するためのレジスタ指定フィールドと
    を含んだ複数データストア命令を実行するデータ処理装
    置であって、 前記複数データストア命令のオペレーション指定フィー
    ルドをデコードして制御信号を生成し出力するデコード
    部、 前記複数データストア命令のレジスタ指定フィールドを
    入力し、このレジスタ指定フィールドにおける第1のレ
    ジスタに対応した第1のビットが所定値を示した場合に
    は第1の期間に前記第1のレジスタを特定する第1のエ
    ンコード値を生成し出力するエンコード部、 前記レジスタ指定フィールドにおける前記第1のビット
    に隣接する第2のレジスタに対応した第2のビットが前
    記所定値を示していることを判定しその判定結果である
    アクセス信号を出力する判定回路、および、 前記デコード部から出力される制御信号により制御さ
    れ、前記エンコード部から出力される第1のエンコード
    値に従って、前記第1の期間に続く第2の期間に前記第
    1のレジスタから前記メモリへデータを転送する処理を
    行い、前記判定回路が出力されるアクセス信号がアサー
    トされたことに応答して、前記第2のレジスタがアクセ
    スされ前記第2の期間に前記第2のレジスタから前記メ
    モリへデータを転送する処理を行う命令実行部 を備え、前記エンコード部は、前記レジスタ指定フィールドにお
    ける第3のレジスタに対応した第3のビットが前記所定
    値を示した場合には前記命令実行部が第1のレジスタか
    らデータを転送する処理を行うことと並列して前記第2
    の期間に前記第3のレジスタを特定する第2のエンコー
    ド値を生成し出力し、 前記命令実行部は、前記エンコード部から出力される第
    2のエンコード値に従って前記第2の期間に続く第3の
    期間に前記第3のレジスタから前記メモリへデータを転
    送する処理を行う、 データ処理装置。
JP3005230A 1991-01-21 1991-01-21 データ処理装置 Expired - Lifetime JP2847974B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP3005230A JP2847974B2 (ja) 1991-01-21 1991-01-21 データ処理装置
US08/432,334 US5542060A (en) 1991-01-21 1995-05-01 Data processor including a decoding unit for decomposing a multifunctional data transfer instruction into a plurality of control codes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3005230A JP2847974B2 (ja) 1991-01-21 1991-01-21 データ処理装置

Publications (2)

Publication Number Publication Date
JPH04260930A JPH04260930A (ja) 1992-09-16
JP2847974B2 true JP2847974B2 (ja) 1999-01-20

Family

ID=11605388

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3005230A Expired - Lifetime JP2847974B2 (ja) 1991-01-21 1991-01-21 データ処理装置

Country Status (2)

Country Link
US (1) US5542060A (ja)
JP (1) JP2847974B2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5905893A (en) * 1996-06-10 1999-05-18 Lsi Logic Corporation Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set
US5923862A (en) * 1997-01-28 1999-07-13 Samsung Electronics Co., Ltd. Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions
US5906002A (en) * 1997-02-10 1999-05-18 International Business Machines Corporation Method and apparatus for saving and restoring the context of registers using different instruction sets for different sized registers
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
US7472259B2 (en) 2000-12-06 2008-12-30 Analog Devices, Inc. Multi-cycle instructions
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
JP2004013556A (ja) * 2002-06-07 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ装置、コンパイル装置及びその方法
JP5019022B2 (ja) * 2006-03-20 2012-09-05 日本電気株式会社 データロード方法及びデータ処理装置
JP5186802B2 (ja) * 2007-05-08 2013-04-24 富士通セミコンダクター株式会社 マイクロプロセッサ
US20090182992A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Load Relative and Store Relative Facility and Instructions Therefore
US7526638B1 (en) * 2008-03-16 2009-04-28 International Business Machines Corporation Hardware alteration of instructions in a microcode routine
US8195923B2 (en) * 2009-04-07 2012-06-05 Oracle America, Inc. Methods and mechanisms to support multiple features for a number of opcodes
JP6890557B2 (ja) * 2018-01-17 2021-06-18 株式会社日立製作所 分析モデル作成システム、プログラミング装置および分析モデル作成方法
CN111966306A (zh) * 2019-05-20 2020-11-20 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1174370A (en) * 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
JPS62226231A (ja) * 1986-03-27 1987-10-05 Toshiba Corp プロセツサ
JP2583506B2 (ja) * 1987-05-27 1997-02-19 株式会社日立製作所 データ処理装置
US5201039A (en) * 1987-09-30 1993-04-06 Mitsubishi Denki Kabushiki Kaisha Multiple address-space data processor with addressable register and context switching
US4977497A (en) * 1988-03-23 1990-12-11 Mitsubishi Denki Kabushiki Kaisha Data processor
JPH01286030A (ja) * 1988-05-12 1989-11-17 Nec Corp 情報処理装置

Also Published As

Publication number Publication date
JPH04260930A (ja) 1992-09-16
US5542060A (en) 1996-07-30

Similar Documents

Publication Publication Date Title
JP2616182B2 (ja) データ処理装置
EP0465321B1 (en) Ensuring data integrity in multiprocessor or pipelined processor system
JP2847974B2 (ja) データ処理装置
US5410682A (en) In-register data manipulation for unaligned byte write using data shift in reduced instruction set processor
JP2761688B2 (ja) データ処理装置
US5142633A (en) Preprocessing implied specifiers in a pipelined processor
EP0463975A2 (en) Byte-compare operation for high-performance processor
EP0463978A2 (en) Granularity hint for translation buffer in high performance processor
EP0463973A2 (en) Branch prediction in high performance processor
EP0463976A2 (en) Data prefetch instruction in a reduced instruction set processor
EP0463977A2 (en) Branching in a pipelined processor
JP2507638B2 (ja) デ―タ処理装置
JPH03186928A (ja) データ処理装置
JP2581236B2 (ja) データ処理装置
JP3543181B2 (ja) データ処理装置
JP2669158B2 (ja) データ処理装置
EP0465328A2 (en) Branch elimination in a reduced instruction set processor
JP3345787B2 (ja) データ処理装置
JPH07120284B2 (ja) データ処理装置
US5870596A (en) Data processor allowing multifunctional instruction execution
JP2668456B2 (ja) ビット検索回路及びそれを備えたデータ処理装置
JP2556182B2 (ja) デ−タ処理装置
JP2646855B2 (ja) データ処理装置
JP2504312B2 (ja) プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
JP2504235B2 (ja) デ―タ処理装置

Legal Events

Date Code Title Description
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20081106

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20081106

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20091106

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20101106

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20111106

Year of fee payment: 13